aboutsummaryrefslogtreecommitdiff
path: root/website/static/security/patches/EN-22:20/tzdata-2022c.patch
diff options
context:
space:
mode:
Diffstat (limited to 'website/static/security/patches/EN-22:20/tzdata-2022c.patch')
-rw-r--r--website/static/security/patches/EN-22:20/tzdata-2022c.patch4100
1 files changed, 4100 insertions, 0 deletions
diff --git a/website/static/security/patches/EN-22:20/tzdata-2022c.patch b/website/static/security/patches/EN-22:20/tzdata-2022c.patch
new file mode 100644
index 0000000000..c140bddcd5
--- /dev/null
+++ b/website/static/security/patches/EN-22:20/tzdata-2022c.patch
@@ -0,0 +1,4100 @@
+--- ObsoleteFiles.inc.orig
++++ ObsoleteFiles.inc
+@@ -8579,8 +8579,6 @@
+ OLD_FILES+=usr/share/examples/etc/rc.firewall6
+ # 20091117: removal of rc.early(8) link
+ OLD_FILES+=usr/share/man/man8/rc.early.8.gz
+-# 20091117: usr/share/zoneinfo/GMT link removed
+-OLD_FILES+=usr/share/zoneinfo/GMT
+ # 20091027: pselect.3 implemented as syscall
+ OLD_FILES+=usr/share/man/man3/pselect.3.gz
+ # 20091005: fusword.9 and susword.9 removed
+--- contrib/tzdata/Makefile.orig
++++ contrib/tzdata/Makefile
+@@ -33,7 +33,7 @@
+ # make zonenames
+ # to get a list of the values you can use for LOCALTIME.
+
+-LOCALTIME= GMT
++LOCALTIME= Factory
+
+ # The POSIXRULES macro controls interpretation of nonstandard and obsolete
+ # POSIX-like TZ settings like TZ='EET-2EEST' that lack DST transition rules.
+@@ -176,12 +176,19 @@
+
+ BACKWARD= backward
+
+-# If you want out-of-scope and often-wrong data from the file 'backzone', use
++# If you want out-of-scope and often-wrong data from the file 'backzone',
++# but only for entries listed in the backward-compatibility file zone.tab, use
+ # PACKRATDATA= backzone
++# PACKRATLIST= zone.tab
++# If you want all the 'backzone' data, use
++# PACKRATDATA= backzone
++# PACKRATLIST=
+ # To omit this data, use
+ # PACKRATDATA=
++# PACKRATLIST=
+
+ PACKRATDATA=
++PACKRATLIST=
+
+ # The name of a locale using the UTF-8 encoding, used during self-tests.
+ # The tests are skipped if the name does not appear to work on this system.
+@@ -264,7 +271,7 @@
+ $(GCC_INSTRUMENT) \
+ -Wall -Wextra \
+ -Walloc-size-larger-than=100000 -Warray-bounds=2 \
+- -Wbad-function-cast -Wcast-align=strict -Wdate-time \
++ -Wbad-function-cast -Wbidi-chars=any,ucn -Wcast-align=strict -Wdate-time \
+ -Wdeclaration-after-statement -Wdouble-promotion \
+ -Wduplicated-branches -Wduplicated-cond \
+ -Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \
+@@ -278,7 +285,7 @@
+ -Wsuggest-attribute=const -Wsuggest-attribute=format \
+ -Wsuggest-attribute=malloc \
+ -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \
+- -Wtrampolines -Wundef -Wuninitialized -Wunused-macros \
++ -Wtrampolines -Wundef -Wuninitialized -Wunused-macros -Wuse-after-free=3 \
+ -Wvariadic-macros -Wvla -Wwrite-strings \
+ -Wno-address -Wno-format-nonliteral -Wno-sign-compare \
+ -Wno-type-limits -Wno-unused-parameter
+@@ -291,8 +298,9 @@
+ # guess TM_GMTOFF from other macros; define NO_TM_GMTOFF to suppress this.
+ # Similarly, if your system has a "zone abbreviation" field, define
+ # -DTM_ZONE=tm_zone
+-# and define NO_TM_ZONE to suppress any guessing. These two fields are not
+-# required by POSIX, but are widely available on GNU/Linux and BSD systems.
++# and define NO_TM_ZONE to suppress any guessing. Although these two fields
++# not required by POSIX, a future version of POSIX is planned to require them
++# and they are widely available on GNU/Linux and BSD systems.
+ #
+ # The next batch of options control support for external variables
+ # exported by tzcode. In practice these variables are less useful
+@@ -448,6 +456,9 @@
+ # useful in commentary.
+ UNUSUAL_OK_CHARSET= $(UNUSUAL_OK_LATIN_1)$(UNUSUAL_OK_IPA)
+
++# Put this in a bracket expression to match spaces.
++s = [:space:]
++
+ # OK_CHAR matches any character allowed in the distributed files.
+ # This is the same as SAFE_CHAR, except that UNUSUAL_OK_CHARSET and
+ # multibyte letters are also allowed so that commentary can contain a
+@@ -521,21 +532,23 @@
+ ZONETABLES= zone1970.tab zone.tab
+ TABDATA= iso3166.tab $(TZDATA_TEXT) $(ZONETABLES)
+ LEAP_DEPS= leapseconds.awk leap-seconds.list
+-TZDATA_ZI_DEPS= ziguard.awk zishrink.awk version $(TDATA) $(PACKRATDATA)
+-DSTDATA_ZI_DEPS= ziguard.awk $(TDATA) $(PACKRATDATA)
++TZDATA_ZI_DEPS= ziguard.awk zishrink.awk version $(TDATA) \
++ $(PACKRATDATA) $(PACKRATLIST)
++DSTDATA_ZI_DEPS= ziguard.awk $(TDATA) $(PACKRATDATA) $(PACKRATLIST)
+ DATA= $(TDATA_TO_CHECK) backzone iso3166.tab leap-seconds.list \
+ leapseconds $(ZONETABLES)
+ AWK_SCRIPTS= checklinks.awk checktab.awk leapseconds.awk \
+ ziguard.awk zishrink.awk
+-MISC= $(AWK_SCRIPTS) zoneinfo2tdf.pl
++MISC= $(AWK_SCRIPTS)
+ TZS_YEAR= 2050
+ TZS_CUTOFF_FLAG= -c $(TZS_YEAR)
+ TZS= to$(TZS_YEAR).tzs
+ TZS_NEW= to$(TZS_YEAR)new.tzs
+ TZS_DEPS= $(YDATA) asctime.c localtime.c \
+ private.h tzfile.h zdump.c zic.c
++TZDATA_DIST = $(COMMON) $(DATA) $(MISC)
+ # EIGHT_YARDS is just a yard short of the whole ENCHILADA.
+-EIGHT_YARDS = $(COMMON) $(DOCS) $(SOURCES) $(DATA) $(MISC) tzdata.zi
++EIGHT_YARDS = $(TZDATA_DIST) $(DOCS) $(SOURCES) tzdata.zi
+ ENCHILADA = $(EIGHT_YARDS) $(TZS)
+
+ # Consult these files when deciding whether to rebuild the 'version' file.
+@@ -555,7 +568,7 @@
+ tzfile.5 tzfile.h tzselect.8 tzselect.ksh \
+ workman.sh zdump.8 zdump.c zic.8 zic.c \
+ ziguard.awk zishrink.awk \
+- zone.tab zone1970.tab zoneinfo2tdf.pl
++ zone.tab zone1970.tab
+
+ # And for the benefit of csh users on systems that assume the user
+ # shell should be used to handle commands in Makefiles. . .
+@@ -608,13 +621,17 @@
+ printf '%s\n' "$$V" >$@.out
+ mv $@.out $@
+
+-# These files can be tailored by setting BACKWARD and PACKRATDATA.
++# These files can be tailored by setting BACKWARD, PACKRATDATA, PACKRATLIST.
+ vanguard.zi main.zi rearguard.zi: $(DSTDATA_ZI_DEPS)
+- $(AWK) -v DATAFORM=`expr $@ : '\(.*\).zi'` -f ziguard.awk \
++ $(AWK) \
++ -v DATAFORM=`expr $@ : '\(.*\).zi'` \
++ -v PACKRATDATA='$(PACKRATDATA)' \
++ -v PACKRATLIST='$(PACKRATLIST)' \
++ -f ziguard.awk \
+ $(TDATA) $(PACKRATDATA) >$@.out
+ mv $@.out $@
+ # This file has a version comment that attempts to capture any tailoring
+-# via BACKWARD, DATAFORM, PACKRATDATA, and REDO.
++# via BACKWARD, DATAFORM, PACKRATDATA, PACKRATLIST, and REDO.
+ tzdata.zi: $(DATAFORM).zi version zishrink.awk
+ version=`sed 1q version` && \
+ LC_ALL=C $(AWK) \
+@@ -652,6 +669,7 @@
+ DESTDIR='$(DESTDIR)' \
+ LEAPSECONDS='$(LEAPSECONDS)' \
+ PACKRATDATA='$(PACKRATDATA)' \
++ PACKRATLIST='$(PACKRATLIST)' \
+ TZDEFAULT='$(TZDEFAULT)' \
+ TZDIR='$(TZDIR)' \
+ ZIC='$(ZIC)'
+@@ -690,11 +708,6 @@
+ $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-posix' posix_only
+ $(MAKE) $(INSTALLARGS) TZDIR='$(TZDIR)-leaps' right_only
+
+-# This obsolescent rule is present for backwards compatibility with
+-# tz releases 2014g through 2015g. It should go away eventually.
+-posix_packrat: $(INSTALL_DATA_DEPS)
+- $(MAKE) $(INSTALLARGS) PACKRATDATA=backzone posix_only
+-
+ zones: $(REDO)
+
+ # dummy.zd is not a real file; it is mentioned here only so that the
+@@ -755,8 +768,8 @@
+ mv $@.out $@
+
+ check: check_character_set check_white_space check_links \
+- check_name_lengths check_sorted \
+- check_tables check_web check_zishrink check_tzs
++ check_name_lengths check_slashed_abbrs check_sorted \
++ check_tables check_web check_ziguard check_zishrink check_tzs
+
+ check_character_set: $(ENCHILADA)
+ test ! '$(UTF8_LOCALE)' || \
+@@ -780,19 +793,28 @@
+ patfmt=' \t|[\f\r\v]' && pat=`printf "$$patfmt\\n"` && \
+ ! grep -En "$$pat" \
+ $$(ls $(ENCHILADA) | grep -Fvx leap-seconds.list)
+- ! grep -n '[[:space:]]$$' \
++ ! grep -n '[$s]$$' \
+ $$(ls $(ENCHILADA) | grep -Fvx leap-seconds.list)
+ touch $@
+
+-PRECEDES_FILE_NAME = ^(Zone|Link[[:space:]]+[^[:space:]]+)[[:space:]]+
+-FILE_NAME_COMPONENT_TOO_LONG = \
+- $(PRECEDES_FILE_NAME)[^[:space:]]*[^/[:space:]]{15}
++PRECEDES_FILE_NAME = ^(Zone|Link[$s]+[^$s]+)[$s]+
++FILE_NAME_COMPONENT_TOO_LONG = $(PRECEDES_FILE_NAME)[^$s]*[^/$s]{15}
+
+ check_name_lengths: $(TDATA_TO_CHECK) backzone
+ ! grep -En '$(FILE_NAME_COMPONENT_TOO_LONG)' \
+ $(TDATA_TO_CHECK) backzone
+ touch $@
+
++PRECEDES_STDOFF = ^(Zone[$s]+[^$s]+)?[$s]+
++STDOFF = [-+]?[0-9:.]+
++RULELESS_SAVE = (-|$(STDOFF)[sd]?)
++RULELESS_SLASHED_ABBRS = \
++ $(PRECEDES_STDOFF)$(STDOFF)[$s]+$(RULELESS_SAVE)[$s]+[^$s]*/
++
++check_slashed_abbrs: $(TDATA_TO_CHECK)
++ ! grep -En '$(RULELESS_SLASHED_ABBRS)' $(TDATA_TO_CHECK)
++ touch $@
++
+ CHECK_CC_LIST = { n = split($$1,a,/,/); for (i=2; i<=n; i++) print a[1], a[i]; }
+
+ check_sorted: backward backzone iso3166.tab zone.tab zone1970.tab
+@@ -832,11 +854,19 @@
+ test ! -s $@.out || { cat $@.out; exit 1; }
+ mv $@.out $@
+
++check_ziguard: rearguard.zi vanguard.zi ziguard.awk
++ $(AWK) -v DATAFORM=rearguard -f ziguard.awk vanguard.zi | \
++ diff -u rearguard.zi -
++ $(AWK) -v DATAFORM=vanguard -f ziguard.awk rearguard.zi | \
++ diff -u vanguard.zi -
++ touch $@
++
+ # Check that zishrink.awk does not alter the data, and that ziguard.awk
+ # preserves main-format data.
+ check_zishrink: check_zishrink_posix check_zishrink_right
+ check_zishrink_posix check_zishrink_right: \
+- zic leapseconds $(PACKRATDATA) $(TDATA) $(DATAFORM).zi tzdata.zi
++ zic leapseconds $(PACKRATDATA) $(PACKRATLIST) \
++ $(TDATA) $(DATAFORM).zi tzdata.zi
+ rm -fr $@.dir $@-t.dir $@-shrunk.dir
+ mkdir $@.dir $@-t.dir $@-shrunk.dir
+ case $@ in \
+@@ -845,8 +875,8 @@
+ esac && \
+ $(ZIC) $$leap -d $@.dir $(DATAFORM).zi && \
+ $(ZIC) $$leap -d $@-shrunk.dir tzdata.zi && \
+- case $(DATAFORM) in \
+- main) \
++ case $(DATAFORM),$(PACKRATLIST) in \
++ main,) \
+ $(ZIC) $$leap -d $@-t.dir $(TDATA) && \
+ $(AWK) '/^Rule/' $(TDATA) | \
+ $(ZIC) $$leap -d $@-t.dir - $(PACKRATDATA) && \
+@@ -967,6 +997,10 @@
+ rm public.dir/main.zi
+ cd public.dir && $(MAKE) PACKRATDATA=backzone main.zi
+ public.dir/zic -d public.dir/zoneinfo main.zi
++ rm public.dir/main.zi
++ cd public.dir && \
++ $(MAKE) PACKRATDATA=backzone PACKRATLIST=zone.tab main.zi
++ public.dir/zic -d public.dir/zoneinfo main.zi
+ :
+ rm -fr public.dir
+ touch $@
+@@ -1027,9 +1061,9 @@
+ ALL_ASC = $(TRADITIONAL_ASC) $(REARGUARD_ASC) \
+ tzdb-$(VERSION).tar.lz.asc
+
+-tarballs rearguard_tarballs traditional_tarballs \
++tarballs rearguard_tarballs tailored_tarballs traditional_tarballs \
+ signatures rearguard_signatures traditional_signatures: \
+- version set-timestamps.out rearguard.zi
++ version set-timestamps.out rearguard.zi vanguard.zi
+ VERSION=`cat version` && \
+ $(MAKE) AWK='$(AWK)' VERSION="$$VERSION" $@_version
+
+@@ -1042,6 +1076,8 @@
+ tzdata$(VERSION)-rearguard.tar.gz
+ traditional_tarballs_version: \
+ tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz
++tailored_tarballs_version: \
++ tzdata$(VERSION)-tailored.tar.gz
+ signatures_version: $(ALL_ASC)
+ rearguard_signatures_version: $(REARGUARD_ASC)
+ traditional_signatures_version: $(TRADITIONAL_ASC)
+@@ -1055,34 +1091,76 @@
+
+ tzdata$(VERSION).tar.gz: set-timestamps.out
+ LC_ALL=C && export LC_ALL && \
+- tar $(TARFLAGS) -cf - $(COMMON) $(DATA) $(MISC) | \
++ tar $(TARFLAGS) -cf - $(TZDATA_DIST) | \
+ gzip $(GZIPFLAGS) >$@.out
+ mv $@.out $@
+
++# Create empty files with a reproducible timestamp.
++CREATE_EMPTY = TZ=UTC0 touch -mt 202010122253.00
++
++# The obsolescent *rearguard* targets and related macros are present
++# for backwards compatibility with tz releases 2018e through 2022a.
++# They should go away eventually. To build rearguard tarballs you
++# can instead use 'make DATAFORM=rearguard tailored_tarballs'.
+ tzdata$(VERSION)-rearguard.tar.gz: rearguard.zi set-timestamps.out
+- rm -fr tzdata$(VERSION)-rearguard.dir
+- mkdir tzdata$(VERSION)-rearguard.dir
+- ln $(COMMON) $(DATA) $(MISC) tzdata$(VERSION)-rearguard.dir
+- cd tzdata$(VERSION)-rearguard.dir && \
+- rm -f $(TDATA) $(PACKRATDATA) version
++ rm -fr $@.dir
++ mkdir $@.dir
++ ln $(TZDATA_DIST) $@.dir
++ cd $@.dir && rm -f $(TDATA) $(PACKRATDATA) version
+ for f in $(TDATA) $(PACKRATDATA); do \
+- rearf=tzdata$(VERSION)-rearguard.dir/$$f; \
++ rearf=$@.dir/$$f; \
+ $(AWK) -v DATAFORM=rearguard -f ziguard.awk $$f >$$rearf && \
+ $(SET_TIMESTAMP_DEP) $$rearf ziguard.awk $$f || exit; \
+ done
+- sed '1s/$$/-rearguard/' \
+- <version >tzdata$(VERSION)-rearguard.dir/version
++ sed '1s/$$/-rearguard/' <version >$@.dir/version
+ : The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier.
+- TZ=UTC0 touch -mt 202010122253.00 \
+- tzdata$(VERSION)-rearguard.dir/pacificnew
+- touch -cmr version tzdata$(VERSION)-rearguard.dir/version
++ $(CREATE_EMPTY) $@.dir/pacificnew
++ touch -cmr version $@.dir/version
+ LC_ALL=C && export LC_ALL && \
+- (cd tzdata$(VERSION)-rearguard.dir && \
++ (cd $@.dir && \
+ tar $(TARFLAGS) -cf - \
+- $(COMMON) $(DATA) $(MISC) pacificnew | \
++ $(TZDATA_DIST) pacificnew | \
+ gzip $(GZIPFLAGS)) >$@.out
+ mv $@.out $@
+
++# Create a tailored tarball suitable for TZUpdater and compatible tools.
++# For example, 'make DATAFORM=vanguard tailored_tarballs' makes a tarball
++# useful for testing whether TZUpdater supports vanguard form.
++# The generated tarball is not byte-for-byte equivalent to a hand-tailored
++# traditional tarball, as data entries are put into 'etcetera' even if they
++# came from some other source file. However, the effect should be the same
++# for ordinary use, which reads all the source files.
++tzdata$(VERSION)-tailored.tar.gz: set-timestamps.out
++ rm -fr $@.dir
++ mkdir $@.dir
++ : The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier.
++ cd $@.dir && \
++ $(CREATE_EMPTY) $(PRIMARY_YDATA) $(NDATA) backward \
++ `test $(DATAFORM) = vanguard || echo pacificnew`
++ (grep '^#' tzdata.zi && echo && cat $(DATAFORM).zi) \
++ >$@.dir/etcetera
++ touch -cmr tzdata.zi $@.dir/etcetera
++ sed -n \
++ -e '/^# *version *\(.*\)/h' \
++ -e '/^# *ddeps */H' \
++ -e '$$!d' \
++ -e 'g' \
++ -e 's/^# *version *//' \
++ -e 's/\n# *ddeps */-/' \
++ -e 's/ /-/g' \
++ -e 'p' \
++ <tzdata.zi >$@.dir/version
++ touch -cmr version $@.dir/version
++ links= && \
++ for file in $(TZDATA_DIST); do \
++ test -f $@.dir/$$file || links="$$links $$file"; \
++ done && \
++ ln $$links $@.dir
++ LC_ALL=C && export LC_ALL && \
++ (cd $@.dir && \
++ tar $(TARFLAGS) -cf - * | gzip $(GZIPFLAGS)) >$@.out
++ mv $@.out $@
++
+ tzdb-$(VERSION).tar.lz: set-timestamps.out set-tzs-timestamp.out
+ rm -fr tzdb-$(VERSION)
+ mkdir tzdb-$(VERSION)
+@@ -1134,13 +1212,14 @@
+ .PHONY: check_web check_zishrink
+ .PHONY: clean clean_misc dummy.zd force_tzs
+ .PHONY: install install_data maintainer-clean names
+-.PHONY: posix_only posix_packrat posix_right public
++.PHONY: posix_only posix_right public
+ .PHONY: rearguard_signatures rearguard_signatures_version
+ .PHONY: rearguard_tarballs rearguard_tarballs_version
+ .PHONY: right_only right_posix signatures signatures_version
+ .PHONY: tarballs tarballs_version
+ .PHONY: traditional_signatures traditional_signatures_version
+ .PHONY: traditional_tarballs traditional_tarballs_version
++.PHONY: tailored_tarballs tailored_tarballs_version
+ .PHONY: typecheck
+ .PHONY: zonenames zones
+ .PHONY: $(ZDS)
+--- contrib/tzdata/NEWS.orig
++++ contrib/tzdata/NEWS
+@@ -1,5 +1,140 @@
+ News for the tz database
+
++Release 2022c - 2022-08-15 17:47:18 -0700
++
++ Briefly:
++ Work around awk bug in FreeBSD, macOS, etc.
++ Improve tzselect on intercontinental Zones.
++
++ Changes to code
++
++ Work around a bug in onetrueawk that broke commands like
++ 'make traditional_tarballs' on FreeBSD, macOS, etc.
++ (Problem reported by Deborah Goldsmith.)
++
++ Add code to tzselect that uses experimental structured comments in
++ zone1970.tab to clarify whether Zones like Africa/Abidjan and
++ Europe/Istanbul cross continent or ocean boundaries.
++ (Inspired by a problem reported by Peter Krefting.)
++
++ Fix bug with 'zic -d /a/b/c' when /a is unwritable but the
++ directory /a/b already exists.
++
++ Remove zoneinfo2tdf.pl, as it was unused and triggered false
++ malware alarms on some email servers.
++
++
++Release 2022b - 2022-08-10 15:38:32 -0700
++
++ Briefly:
++ Chile's DST is delayed by a week in September 2022.
++ Iran no longer observes DST after 2022.
++ Rename Europe/Kiev to Europe/Kyiv.
++ New zic -R option
++ Vanguard form now uses %z.
++ Finish moving duplicate-since-1970 zones to 'backzone'.
++ New build option PACKRATLIST
++ New tailored_tarballs target, replacing rearguard_tarballs
++
++ Changes to future timestamps
++
++ Chile's 2022 DST start is delayed from September 4 to September 11.
++ (Thanks to Juan Correa.)
++
++ Iran plans to stop observing DST permanently, after it falls back
++ on 2022-09-21. (Thanks to Ali Mirjamali.)
++
++ Changes to past timestamps
++
++ Finish moving to 'backzone' the location-based zones whose
++ timestamps since 1970 are duplicates; adjust links accordingly.
++ This change ordinarily affects only pre-1970 timestamps, and with
++ the new PACKRATLIST option it does not affect any timestamps.
++ In this round the affected zones are Antarctica/Vostok,
++ Asia/Brunei, Asia/Kuala_Lumpur, Atlantic/Reykjavik,
++ Europe/Amsterdam, Europe/Copenhagen, Europe/Luxembourg,
++ Europe/Monaco, Europe/Oslo, Europe/Stockholm, Indian/Christmas,
++ Indian/Cocos, Indian/Kerguelen, Indian/Mahe, Indian/Reunion,
++ Pacific/Chuuk, Pacific/Funafuti, Pacific/Majuro, Pacific/Pohnpei,
++ Pacific/Wake and Pacific/Wallis, and the affected links are
++ Arctic/Longyearbyen, Atlantic/Jan_Mayen, Iceland, Pacific/Ponape,
++ Pacific/Truk, and Pacific/Yap.
++
++ From fall 1994 through fall 1995, Shanks wrote that Crimea's
++ DST transitions were at 02:00 standard time, not at 00:00.
++ (Thanks to Michael Deckers.)
++
++ Iran adopted standard time in 1935, not 1946. In 1977 it observed
++ DST from 03-21 23:00 to 10-20 24:00; its 1978 transitions were on
++ 03-24 and 08-05, not 03-20 and 10-20; and its spring 1979
++ transition was on 05-27, not 03-21.
++ (Thanks to Roozbeh Pournader and Francis Santoni.)
++
++ Chile's observance of -04 from 1946-08-29 through 1947-03-31 was
++ considered DST, not standard time. Santiago and environs had moved
++ their clocks back to rejoin the rest of mainland Chile; put this
++ change at the end of 1946-08-28. (Thanks to Michael Deckers.)
++
++ Some old, small clock transitions have been removed, as people at
++ the time did not change their clocks. This affects Asia/Hong_Kong
++ in 1904, Asia/Ho_Chi_Minh in 1906, and Europe/Dublin in 1880.
++
++ Changes to zone name
++
++ Rename Europe/Kiev to Europe/Kyiv, as "Kyiv" is more common in
++ English now. Spelling of other names in Ukraine has not yet
++ demonstrably changed in common English practice so for now these
++ names retain old spellings, as in other countries (e.g.,
++ Europe/Prague not "Praha", and Europe/Sofia not "Sofiya").
++
++ Changes to code
++
++ zic has a new option '-R @N' to output explicit transitions < N.
++ (Need suggested by Almaz Mingaleev.)
++
++ 'zic -r @N' no longer outputs bad data when N < first transition.
++ (Problem introduced in 2021d and reported by Peter Krefting.)
++
++ zic now checks its input for NUL bytes and unterminated lines, and
++ now supports input line lengths up to 2048 (not 512) bytes.
++
++ gmtime and related code now use the abbreviation "UTC" not "GMT".
++ POSIX is being revised to require this.
++
++ When tzset and related functions set vestigial static variables
++ like tzname, they now prefer specified timestamps to unspecified ones.
++ (Problem reported by Almaz Mingaleev.)
++
++ zic no longer complains "can't determine time zone abbreviation to
++ use just after until time" when a transition to a new standard
++ time occurs simultaneously with the first DST fallback transition.
++
++ Changes to build procedure
++
++ Source data in vanguard form now uses the %z notation, introduced
++ in release 2015f. For example, for America/Sao_Paulo vanguard
++ form contains the zone continuation line "-3:00 Brazil %z", which
++ is simpler and more reliable than the line "-3:00 Brazil -03/-02"
++ used in main and rearguard forms. The plan is for the main form
++ to use %z eventually; in the meantime maintainers of zi parsers
++ are encouraged to test the parsers on vanguard.zi.
++
++ The Makefile has a new PACKRATLIST option to select a subset of
++ 'backzone'. For example, 'make PACKRATDATA=backzone
++ PACKRATLIST=zone.tab' now generates TZif files identical to those
++ of the global-tz project.
++
++ The Makefile has a new tailored_tarballs target for generating
++ special-purpose tarballs. It generalizes and replaces the
++ rearguard_tarballs target and related targets and macros, which
++ are now obsolescent.
++
++ 'make install' now defaults LOCALTIME to Factory not GMT,
++ which means the default abbreviation is now "-00" not "GMT".
++
++ Remove the posix_packrat target, marked obsolescent in 2016a.
++
++
+ Release 2022a - 2022-03-15 23:02:01 -0700
+
+ Briefly:
+@@ -161,7 +296,7 @@
+ Rename Pacific/Enderbury to Pacific/Kanton. When we added
+ Enderbury in 1993, we did not know that it is uninhabited and that
+ Kanton (population two dozen) is the only inhabited location in
+- that timezone. The old name is now a backward-compatility link.
++ that timezone. The old name is now a backward-compatibility link.
+
+ Changes to past timestamps
+
+@@ -1315,7 +1450,7 @@
+ Changes to build procedure
+
+ The distribution now contains the file 'pacificnew' again.
+- This file was inadvertantly omitted in the 2018a distribution.
++ This file was inadvertently omitted in the 2018a distribution.
+ (Problem reported by Matias Fonzo.)
+
+
+@@ -4387,7 +4522,7 @@
+
+ changes by Paul Eggert
+
+- Derick Rethan's Asmara change
++ Derick Rethans's Asmara change
+
+ Oscar van Vlijmen's Easter Island local mean time change
+
+--- contrib/tzdata/africa.orig
++++ contrib/tzdata/africa
+@@ -159,6 +159,7 @@
+ Link Africa/Abidjan Africa/Lome # Togo
+ Link Africa/Abidjan Africa/Nouakchott # Mauritania
+ Link Africa/Abidjan Africa/Ouagadougou # Burkina Faso
++Link Africa/Abidjan Atlantic/Reykjavik # Iceland
+ Link Africa/Abidjan Atlantic/St_Helena # St Helena
+
+ # Djibouti
+@@ -169,7 +170,7 @@
+ # Egypt
+
+ # Milne says Cairo used 2:05:08.9, the local mean time of the Abbasizeh
+-# observatory; round to nearest. Milne also says that the official time for
++# observatory. Milne also says that the official time for
+ # Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this
+ # did not apply to Cairo, Alexandria, or Port Said.
+
+@@ -354,6 +355,7 @@
+ Rule Egypt 2014 only - Sep lastThu 24:00 0 -
+
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
++ #STDOFF 2:05:08.9
+ Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
+ 2:00 Egypt EE%sT
+
+@@ -407,7 +409,7 @@
+ # At midnight on 30 June 1928 the clocks throughout Kenya was put forward
+ # half an hour by the Alteration of Time Ordinance, 1928.
+ # https://gazettes.africa/archive/ke/1928/ke-government-gazette-dated-1928-05-11-no-28.pdf
+-# [Ordinance No. 11 of 1928, The Offical Gazette, 1928-06-26, p 813]
++# [Ordinance No. 11 of 1928, The Official Gazette, 1928-06-26, p 813]
+ # https://books.google.com/books?id=2S0S6os32ZUC&pg=PA813
+ #
+ # The 1928 ordinance was repealed by the Alteration of Time (repeal) Ordinance,
+@@ -1310,21 +1312,9 @@
+ Link Africa/Lagos Africa/Porto-Novo # Benin
+
+ # Réunion
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis
+- 4:00 - +04
+-#
+-# Scattered Islands (Îles Éparses) administered from Réunion are as follows.
+-# The following information about them is taken from
+-# Îles Éparses (<http://www.outre-mer.gouv.fr/domtom/ile.htm>, 1997-07-22,
+-# in French; no longer available as of 1999-08-17).
+-# We have no info about their time zone histories.
++# See Asia/Dubai.
+ #
+-# Bassas da India - uninhabited
+-# Europa Island - inhabited from 1905 to 1910 by two families
+-# Glorioso Is - inhabited until at least 1958
+-# Juan de Nova - uninhabited
+-# Tromelin - inhabited until at least 1958
++# The Crozet Islands also observe Réunion time; see the 'antarctica' file.
+
+ # Rwanda
+ # See Africa/Maputo.
+@@ -1356,9 +1346,10 @@
+ # From Michael Deckers (2018-12-30):
+ # https://www.legis-palop.org/download.jsp?idFile=102818
+ # ... [The legal time of the country, which coincides with universal
+-# coordinated time, will be restituted at 2 o'clock on day 1 of January, 2019.]
++# coordinated time, will be reinstituted at 2 o'clock on day 1 of January, 2019.]
+
+ Zone Africa/Sao_Tome 0:26:56 - LMT 1884
++ #STDOFF -0:36:44.68
+ -0:36:45 - LMT 1912 Jan 1 00:00u # Lisbon MT
+ 0:00 - GMT 2018 Jan 1 01:00
+ 1:00 - WAT 2019 Jan 1 02:00
+@@ -1368,28 +1359,7 @@
+ # See Africa/Abidjan.
+
+ # Seychelles
+-
+-# From P Chan (2020-11-27):
+-# Standard Time was adopted on 1907-01-01.
+-#
+-# Standard Time Ordinance (Chapter 237)
+-# The Laws of Seychelles in Force on the 31st December, 1971, Vol. 6, p 571
+-# https://books.google.com/books?id=efE-AQAAIAAJ&pg=PA571
+-#
+-# From Tim Parenti (2020-12-05):
+-# A footnote on https://books.google.com/books?id=DYdDAQAAMAAJ&pg=PA1689
+-# confirms that Ordinance No. 9 of 1906 "was brought into force on the 1st
+-# January, 1907."
+-
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Indian/Mahe 3:41:48 - LMT 1907 Jan 1 # Victoria
+- 4:00 - +04
+-# From Paul Eggert (2001-05-30):
+-# Aldabra, Farquhar, and Desroches, originally dependencies of the
+-# Seychelles, were transferred to the British Indian Ocean Territory
+-# in 1965 and returned to Seychelles control in 1976. We don't know
+-# whether this affected their time zone, so omit this for now.
+-# Possibly the islands were uninhabited.
++# See Asia/Dubai.
+
+ # Sierra Leone
+ # See Africa/Abidjan.
+--- contrib/tzdata/antarctica.orig
++++ contrib/tzdata/antarctica
+@@ -157,9 +157,7 @@
+ # St Paul Island - near Amsterdam, uninhabited
+ # fishing stations operated variously 1819/1931
+ #
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Indian/Kerguelen 0 - -00 1950 # Port-aux-Français
+- 5:00 - +05
++# Kerguelen - see Indian/Maldives.
+ #
+ # year-round base in the main continent
+ # Dumont d'Urville - see Pacific/Port_Moresby.
+@@ -242,31 +240,7 @@
+ # year-round from 1960/61 to 1992
+
+ # Vostok, since 1957-12-16, temporarily closed 1994-02/1994-11
+-# From Craig Mundell (1994-12-15):
+-# http://quest.arc.nasa.gov/antarctica/QA/computers/Directions,Time,ZIP
+-# Vostok, which is one of the Russian stations, is set on the same
+-# time as Moscow, Russia.
+-#
+-# From Lee Hotz (2001-03-08):
+-# I queried the folks at Columbia who spent the summer at Vostok and this is
+-# what they had to say about time there:
+-# "in the US Camp (East Camp) we have been on New Zealand (McMurdo)
+-# time, which is 12 hours ahead of GMT. The Russian Station Vostok was
+-# 6 hours behind that (although only 2 miles away, i.e. 6 hours ahead
+-# of GMT). This is a time zone I think two hours east of Moscow. The
+-# natural time zone is in between the two: 8 hours ahead of GMT."
+-#
+-# From Paul Eggert (2001-05-04):
+-# This seems to be hopelessly confusing, so I asked Lee Hotz about it
+-# in person. He said that some Antarctic locations set their local
+-# time so that noon is the warmest part of the day, and that this
+-# changes during the year and does not necessarily correspond to mean
+-# solar noon. So the Vostok time might have been whatever the clocks
+-# happened to be during their visit. So we still don't really know what time
+-# it is at Vostok. But we'll guess +06.
+-#
+-Zone Antarctica/Vostok 0 - -00 1957 Dec 16
+- 6:00 - +06
++# See Asia/Urumqi.
+
+ # S Africa - year-round bases
+ # Marion Island, -4653+03752
+--- contrib/tzdata/asia.orig
++++ contrib/tzdata/asia
+@@ -255,10 +255,7 @@
+ 6:00 - +06
+
+ # Brunei
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Asia/Brunei 7:39:40 - LMT 1926 Mar # Bandar Seri Begawan
+- 7:30 - +0730 1933
+- 8:00 - +08
++# See Asia/Kuching.
+
+ # Burma / Myanmar
+
+@@ -276,6 +273,7 @@
+ 6:30 - +0630 1942 May
+ 9:00 - +09 1945 May 3
+ 6:30 - +0630
++Link Asia/Yangon Indian/Cocos
+
+ # Cambodia
+ # See Asia/Bangkok.
+@@ -344,12 +342,9 @@
+ # in the city at the time for people who use different time standard to adjust
+ # their clock to their preferred time.
+ #
+-# a. For the 1940 May 31 spring forward, the essay claim that it was
+-# coordinared between the international settlement authority and the French
+-# concession authority and have gathered support from Hong Kong and Xiamen,
+-# that it would spring forward an hour from May 31 "midnight", and the essay
+-# claim "Hong Kong government implemented the spring forward in the same time
+-# on the same date as Shanghai".
++# a. For the 1940 May 31 spring forward, the essay [says] ... "Hong
++# Kong government implemented the spring forward in the same time on
++# the same date as Shanghai".
+ #
+ # b. For the 1940 fall back, it was said that they initially intended to do
+ # so on September 30 00:59 at night, however they postponed it to October 12
+@@ -545,7 +540,7 @@
+ # Zhongyuan Time ("Central plain Time") UT +08
+ # Now part of Asia/Shanghai.
+ # most of China
+-# Milne gives 8:05:43.2 for Xujiahui Observatory time; round to nearest.
++# Milne gives 8:05:43.2 for Xujiahui Observatory time....
+ # Guo says Shanghai switched to UT +08 "from the end of the 19th century".
+ #
+ # Long-shu Time (probably as Long and Shu were two names of the area) UT +07
+@@ -664,6 +659,7 @@
+
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+ # Beijing time, used throughout China; represented by Shanghai.
++ #STDOFF 8:05:43.2
+ Zone Asia/Shanghai 8:05:43 - LMT 1901
+ 8:00 Shang C%sT 1949 May 28
+ 8:00 PRC C%sT
+@@ -671,11 +667,12 @@
+ # / Wulumuqi. (Please use Asia/Shanghai if you prefer Beijing time.)
+ Zone Asia/Urumqi 5:50:20 - LMT 1928
+ 6:00 - +06
++Link Asia/Urumqi Antarctica/Vostok
+
+
+ # Hong Kong
+
+-# Milne gives 7:36:41.7; round this.
++# Milne gives 7:36:41.7.
+
+ # From Lee Yiu Chung (2009-10-24):
+ # I found there are some mistakes for the...DST rule for Hong
+@@ -859,7 +856,8 @@
+ Rule HK 1979 only - May 13 3:30 1:00 S
+ Rule HK 1979 only - Oct 21 3:30 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Asia/Hong_Kong 7:36:42 - LMT 1904 Oct 30 0:36:42
++ #STDOFF 7:36:41.7
++Zone Asia/Hong_Kong 7:36:42 - LMT 1904 Oct 29 17:00u
+ 8:00 - HKT 1941 Jun 15 3:00
+ 8:00 1:00 HKST 1941 Oct 1 4:00
+ 8:00 0:30 HKWT 1941 Dec 25
+@@ -1334,7 +1332,7 @@
+ #
+ # From Paul Eggert (2014-09-06):
+ # The 1876 Report of the Secretary of the [US] Navy, p 306 says that Batavia
+-# civil time was 7:07:12.5; round to even for Jakarta.
++# civil time was 7:07:12.5.
+ #
+ # From Gwillim Law (2001-05-28), overriding Shanks & Pottenger:
+ # http://www.sumatera-inc.com/go_to_invest/about_indonesia.asp#standtime
+@@ -1370,10 +1368,11 @@
+ #
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+ # Java, Sumatra
++ #STDOFF 7:07:12.5
+ Zone Asia/Jakarta 7:07:12 - LMT 1867 Aug 10
+ # Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
+ # but this must be a typo.
+- 7:07:12 - BMT 1923 Dec 31 23:47:12 # Batavia
++ 7:07:12 - BMT 1923 Dec 31 16:40u # Batavia
+ 7:20 - +0720 1932 Nov
+ 7:30 - +0730 1942 Mar 23
+ 9:00 - +09 1945 Sep 23
+@@ -1405,6 +1404,111 @@
+
+ # Iran
+
++# From Roozbeh Pournader (2022-05-30):
++# Here's an order from the Cabinet to the rest of the government to switch to
++# Tehran time, which is mentioned to be already at +03:30:
++# https://qavanin.ir/Law/TreeText/180138
++# Just in case that goes away, I also saved a copy at archive.org:
++# https://web.archive.org/web/20220530111940/https://qavanin.ir/Law/TreeText/180138
++# Here's my translation:
++#
++# "Circular on Matching the Hours of Governmental and Official Circles
++# in Provinces
++# Approved 1314/03/22 [=1935-06-13]
++# According to the ruling of the Honorable Cabinet, it is ordered that from
++# now on in all internal provinces of the country, governmental and official
++# circles set their time to match Tehran time (three hours and half before
++# Greenwich)....
++#
++# I still haven't found out when Tehran itself switched to +03:30....
++#
++# From Paul Eggert (2022-06-05):
++# Although the above says Tehran was at +03:30 before 1935-06-13, we don't
++# know when it switched to +03:30. For now, use 1935-06-13 as the switch date.
++# Although most likely wrong, we have no better info.
++
++# From Roozbeh Pournader (2022-06-01):
++# This is from Kayhan newspaper, one of the major Iranian newspapers, from
++# March 20, 1978, page 2:
++#
++# "Pull the clocks 60 minutes forward
++# As we informed before, from the fourth day of the month Farvardin of the
++# new year [=1978-03-24], clocks will be pulled forward, and people's daily
++# work and life program will start one hour earlier than the current program.
++# On the 1st day of the month Farvardin of this year [=1977-03-21], they had
++# pulled the clocks forward by one hour, but in the month of Mehr
++# [=1977-09-23], the clocks were pulled back by 30 minutes.
++# In this way, from the 4th day of the month Farvardin, clocks will be ahead
++# of the previous years by one hour and a half.
++# According to the new program, during the night of 4th of Farvardin, when
++# the midnight, meaning 24 o'clock is announced, the hands of the clock must
++# be pulled forward by one hour and thus consider midnight 1 o'clock in the
++# forenoon."
++#
++# This implies that in September 1977, when the daylight savings time was
++# done with, Iran didn't go back to +03:30, but immediately to +04:00.
++#
++#
++# This is from the major Iranian newspaper Ettela'at, dated [1978-08-03]...,
++# page 32. It looks like they decided to get the clocks back to +4:00
++# just in time for Ramadan that year:
++#
++# "Tomorrow Night, Pull the Clocks Back by One Hour
++# At 1 o'clock in the forenoon of Saturday 14 Mordad [=1978-08-05], the
++# clocks will be pulled one hour back and instead of 1 o'clock in the
++# forenoon, Radio Iran will announce 24 o'clock.
++# This decision was made in the Cabinet of Ministers meeting of 25 Tir
++# [=1978-07-16], [...]
++# At the beginning of the year 2537 [=March 1978: Iran was using a different
++# year number for a few years then, based on the Coronation of Cyrus the
++# Great], the country's official time was pulled forward by one hour and now
++# the official time is one hour and a half ahead compared to last year,
++# because in Farvardin of last year [=March 1977], the official time was
++# pulled forward one hour and this continued until the second half of last
++# year [=September 1977] until in the second half of last year the official
++# time was pulled back half an hour and that half hour still remains."
++#
++# This matches the time of the true noon published in the newspapers, as they
++# clearly go from +05:00 to +04:00 after that date (which happened during a
++# long weekend in Iran).
++
++# From Roozbeh Pournader (2022-05-31):
++# [Movahedi S. Cultural preconceptions of time: Can we use operational time
++# to meddle in God's Time? Comp Stud Soc Hist. 1985;27(3):385-400]
++# https://www.jstor.org/stable/178704
++# Here's the quotes from the paper:
++# 1. '"Iran's official time keeper moved the clock one hour forward as from
++# March 22, 1977 (Farvardin 2, 2536) to make maximum use of daylight and save
++# in energy consumption. Thus Iran joined such other countries as Britain in
++# observing what is known as 'daylight saving.' The proposal was originally
++# put forward by the Ministry of Energy, in no way having any influence on
++# observing religious ceremonies. Moving time one hour forward in summer
++# means that at 11:00 o'clock on March 21, the official time was set as
++# midnight March 22. Then September 24 will actually begin one hour later
++# than the end of September 23 [...]." Iran's time base thus continued to be
++# Greenwich Mean Time plus three and one-half hours (plus four and one-half
++# hours in summer).'
++#
++# The article sources this from Iran Almanac and Book of Facts, 1977, Tehran:
++# Echo of Iran, which is on Google Books at
++# https://www.google.com/books/edition/Iran_Almanac_and_Book_of_Facts/9ybVAAAAMAAJ.
++# (I confirmed it by searching for snippets.)
++#
++# 2. "After the fall of the shah, the revolutionary government returned to
++# daylight-saving time (DST) on 26 May 1979."
++#
++# This seems to have been announced just one day in advance, on 25 May 1979.
++#
++# The change in 1977 clearly seems to be the first daylight savings effort in
++# Iran. But the article doesn't mention what happened in 1978 (which was
++# still during the shah's government), or how things continued in 1979
++# onwards (which was during the Islamic Republic).
++
++# From Francis Santoni (2022-06-01):
++# for Iran and 1977 the effective change is only 20 October
++# (UIT No. 143 17.XI.1977) and not 23 September (UIT No. 141 13.IX.1977).
++# UIT is the Operational Bulletin of International Telecommunication Union.
++
+ # From Roozbeh Pournader (2003-03-15):
+ # This is an English translation of what I just found (originally in Persian).
+ # The Gregorian dates in brackets are mine:
+@@ -1439,65 +1543,12 @@
+ # leap year calculation involved. There has never been any serious
+ # plan to change that law....
+ #
+-# From Paul Eggert (2018-11-30):
+-# Go with Shanks & Pottenger before Sept. 1991, and with Pournader thereafter.
+-# I used the following code in GNU Emacs 26.1 to generate the "Rule Iran"
+-# lines from 2008 through 2087. Emacs 26.1 uses Ed Reingold's
+-# cal-persia implementation of Birashk's approximation, which in the
+-# 2008-2087 range disagrees with the astronomical Persian calendar
+-# for Persian years 1404 (Gregorian 2025) and 1437 (Gregorian 2058), so
+-# the following code special-cases those years. See Table 15.1, page 264, of:
+-# Edward M. Reingold and Nachum Dershowitz, Calendrical Calculations:
+-# The Ultimate Edition, Cambridge University Press (2018).
+-# https://www.cambridge.org/fr/academic/subjects/computer-science/computing-general-interest/calendrical-calculations-ultimate-edition-4th-edition
+-# Page 258, footnote 2, of this book says there is some dispute over what will
+-# happen in 2091 (and some other years after that), so this code
+-# stops in 2087, as 2088 and 2089 agree with the "max" rule below.
+-# (cl-loop
+-# initially (require 'cal-persia)
+-# with first-persian-year = 1387
+-# with last-persian-year = 1466
+-# ;; Exceptional years in the above range,
+-# ;; from Reingold & Dershowitz Table 15.1, page 264:
+-# with exceptional-persian-years = '(1404 1437)
+-# with range-start = nil
+-# for persian-year from first-persian-year to last-persian-year
+-# do
+-# (let*
+-# ((exceptional-year-offset
+-# (if (member persian-year exceptional-persian-years) 1 0))
+-# (beg-dst-absolute
+-# (+ (calendar-persian-to-absolute (list 1 1 persian-year))
+-# exceptional-year-offset))
+-# (end-dst-absolute
+-# (+ (calendar-persian-to-absolute (list 6 30 persian-year))
+-# exceptional-year-offset))
+-# (next-year-beg-dst-absolute
+-# (+ (calendar-persian-to-absolute (list 1 1 (1+ persian-year)))
+-# (if (member (1+ persian-year) exceptional-persian-years) 1 0)))
+-# (beg-dst (calendar-gregorian-from-absolute beg-dst-absolute))
+-# (end-dst (calendar-gregorian-from-absolute end-dst-absolute))
+-# (next-year-beg-dst (calendar-gregorian-from-absolute
+-# next-year-beg-dst-absolute))
+-# (year (calendar-extract-year beg-dst))
+-# (range-end (if range-start year "only")))
+-# (setq range-start (or range-start year))
+-# (when (or (/= (calendar-extract-day beg-dst)
+-# (calendar-extract-day next-year-beg-dst))
+-# (= persian-year last-persian-year))
+-# (insert
+-# (format
+-# "Rule\tIran\t%d\t%s\t-\t%s\t%2d\t24:00\t1:00\t-\n"
+-# range-start range-end
+-# (calendar-month-name (calendar-extract-month beg-dst) t)
+-# (calendar-extract-day beg-dst)))
+-# (insert
+-# (format
+-# "Rule\tIran\t%d\t%s\t-\t%s\t%2d\t24:00\t0\t-\n"
+-# range-start range-end
+-# (calendar-month-name (calendar-extract-month end-dst) t)
+-# (calendar-extract-day end-dst)))
+-# (setq range-start nil))))
++# From Paul Eggert (2022-06-30):
++# Go with Pournader for 1935 through spring 1979, and for timestamps
++# after August 1991; go with with Shanks & Pottenger for other timestamps.
++# Go with Santoni's citation of the UIT for fall 1977, as 20 October 1977
++# is 28 Mehr 1356, consistent with the "Mehr" in Pournader's source.
++# Assume that the UIT's "1930" is UTC, i.e., 24:00 local time.
+ #
+ # From Oscar van Vlijmen (2005-03-30), writing about future
+ # discrepancies between cal-persia and the Iranian calendar:
+@@ -1531,10 +1582,23 @@
+ # be changed back to its previous state on the 24 hours of the
+ # thirtieth day of Shahrivar.
+ #
++# From Ali Mirjamali (2022-05-10):
++# Official IR News Agency announcement: irna.ir/xjJ3TT
++# ...
++# Highlights: DST will be cancelled for the next Iranian year 1402
++# (i.e 2023-March-21) and forthcoming years.
++#
+ # Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+-Rule Iran 1978 1980 - Mar 20 24:00 1:00 -
+-Rule Iran 1978 only - Oct 20 24:00 0 -
++# Work around a bug in zic 2022a and earlier.
++Rule Iran 1910 only - Jan 1 00:00 0 -
++#
++Rule Iran 1977 only - Mar 21 23:00 1:00 -
++Rule Iran 1977 only - Oct 20 24:00 0 -
++Rule Iran 1978 only - Mar 24 24:00 1:00 -
++Rule Iran 1978 only - Aug 5 01:00 0 -
++Rule Iran 1979 only - May 26 24:00 1:00 -
+ Rule Iran 1979 only - Sep 18 24:00 0 -
++Rule Iran 1980 only - Mar 20 24:00 1:00 -
+ Rule Iran 1980 only - Sep 22 24:00 0 -
+ Rule Iran 1991 only - May 2 24:00 1:00 -
+ Rule Iran 1992 1995 - Mar 21 24:00 1:00 -
+@@ -1565,85 +1629,13 @@
+ Rule Iran 2017 2019 - Sep 21 24:00 0 -
+ Rule Iran 2020 only - Mar 20 24:00 1:00 -
+ Rule Iran 2020 only - Sep 20 24:00 0 -
+-Rule Iran 2021 2023 - Mar 21 24:00 1:00 -
+-Rule Iran 2021 2023 - Sep 21 24:00 0 -
+-Rule Iran 2024 only - Mar 20 24:00 1:00 -
+-Rule Iran 2024 only - Sep 20 24:00 0 -
+-Rule Iran 2025 2027 - Mar 21 24:00 1:00 -
+-Rule Iran 2025 2027 - Sep 21 24:00 0 -
+-Rule Iran 2028 2029 - Mar 20 24:00 1:00 -
+-Rule Iran 2028 2029 - Sep 20 24:00 0 -
+-Rule Iran 2030 2031 - Mar 21 24:00 1:00 -
+-Rule Iran 2030 2031 - Sep 21 24:00 0 -
+-Rule Iran 2032 2033 - Mar 20 24:00 1:00 -
+-Rule Iran 2032 2033 - Sep 20 24:00 0 -
+-Rule Iran 2034 2035 - Mar 21 24:00 1:00 -
+-Rule Iran 2034 2035 - Sep 21 24:00 0 -
+-Rule Iran 2036 2037 - Mar 20 24:00 1:00 -
+-Rule Iran 2036 2037 - Sep 20 24:00 0 -
+-Rule Iran 2038 2039 - Mar 21 24:00 1:00 -
+-Rule Iran 2038 2039 - Sep 21 24:00 0 -
+-Rule Iran 2040 2041 - Mar 20 24:00 1:00 -
+-Rule Iran 2040 2041 - Sep 20 24:00 0 -
+-Rule Iran 2042 2043 - Mar 21 24:00 1:00 -
+-Rule Iran 2042 2043 - Sep 21 24:00 0 -
+-Rule Iran 2044 2045 - Mar 20 24:00 1:00 -
+-Rule Iran 2044 2045 - Sep 20 24:00 0 -
+-Rule Iran 2046 2047 - Mar 21 24:00 1:00 -
+-Rule Iran 2046 2047 - Sep 21 24:00 0 -
+-Rule Iran 2048 2049 - Mar 20 24:00 1:00 -
+-Rule Iran 2048 2049 - Sep 20 24:00 0 -
+-Rule Iran 2050 2051 - Mar 21 24:00 1:00 -
+-Rule Iran 2050 2051 - Sep 21 24:00 0 -
+-Rule Iran 2052 2053 - Mar 20 24:00 1:00 -
+-Rule Iran 2052 2053 - Sep 20 24:00 0 -
+-Rule Iran 2054 2055 - Mar 21 24:00 1:00 -
+-Rule Iran 2054 2055 - Sep 21 24:00 0 -
+-Rule Iran 2056 2057 - Mar 20 24:00 1:00 -
+-Rule Iran 2056 2057 - Sep 20 24:00 0 -
+-Rule Iran 2058 2059 - Mar 21 24:00 1:00 -
+-Rule Iran 2058 2059 - Sep 21 24:00 0 -
+-Rule Iran 2060 2062 - Mar 20 24:00 1:00 -
+-Rule Iran 2060 2062 - Sep 20 24:00 0 -
+-Rule Iran 2063 only - Mar 21 24:00 1:00 -
+-Rule Iran 2063 only - Sep 21 24:00 0 -
+-Rule Iran 2064 2066 - Mar 20 24:00 1:00 -
+-Rule Iran 2064 2066 - Sep 20 24:00 0 -
+-Rule Iran 2067 only - Mar 21 24:00 1:00 -
+-Rule Iran 2067 only - Sep 21 24:00 0 -
+-Rule Iran 2068 2070 - Mar 20 24:00 1:00 -
+-Rule Iran 2068 2070 - Sep 20 24:00 0 -
+-Rule Iran 2071 only - Mar 21 24:00 1:00 -
+-Rule Iran 2071 only - Sep 21 24:00 0 -
+-Rule Iran 2072 2074 - Mar 20 24:00 1:00 -
+-Rule Iran 2072 2074 - Sep 20 24:00 0 -
+-Rule Iran 2075 only - Mar 21 24:00 1:00 -
+-Rule Iran 2075 only - Sep 21 24:00 0 -
+-Rule Iran 2076 2078 - Mar 20 24:00 1:00 -
+-Rule Iran 2076 2078 - Sep 20 24:00 0 -
+-Rule Iran 2079 only - Mar 21 24:00 1:00 -
+-Rule Iran 2079 only - Sep 21 24:00 0 -
+-Rule Iran 2080 2082 - Mar 20 24:00 1:00 -
+-Rule Iran 2080 2082 - Sep 20 24:00 0 -
+-Rule Iran 2083 only - Mar 21 24:00 1:00 -
+-Rule Iran 2083 only - Sep 21 24:00 0 -
+-Rule Iran 2084 2086 - Mar 20 24:00 1:00 -
+-Rule Iran 2084 2086 - Sep 20 24:00 0 -
+-Rule Iran 2087 only - Mar 21 24:00 1:00 -
+-Rule Iran 2087 only - Sep 21 24:00 0 -
+-#
+-# The following rules are approximations starting in the year 2088.
+-# These are the best post-2088 approximations available, given the
+-# restrictions of a single rule using ordinary Gregorian dates.
+-# At some point this table will need to be extended, though quite
+-# possibly Iran will change the rules first.
+-Rule Iran 2088 max - Mar 20 24:00 1:00 -
+-Rule Iran 2088 max - Sep 20 24:00 0 -
++Rule Iran 2021 2022 - Mar 21 24:00 1:00 -
++Rule Iran 2021 2022 - Sep 21 24:00 0 -
+
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+ Zone Asia/Tehran 3:25:44 - LMT 1916
+- 3:25:44 - TMT 1946 # Tehran Mean Time
+- 3:30 - +0330 1977 Nov
++ 3:25:44 - TMT 1935 Jun 13 # Tehran Mean Time
++ 3:30 Iran +0330/+0430 1977 Oct 20 24:00
+ 4:00 Iran +04/+05 1979
+ 3:30 Iran +0330/+0430
+
+@@ -2465,9 +2457,9 @@
+ # the third time belt (before 1930 this means +03).
+
+ # From Alexander Konzurovski (2018-12-20):
+-# Qyzyolrda Region (Asia/Qyzylorda) is changing its time zone from
+-# UTC+6 to UTC+5 effective December 21st, 2018. The legal document is
+-# located here: http://adilet.zan.kz/rus/docs/P1800000817 (russian language).
++# (Asia/Qyzylorda) is changing its time zone from UTC+6 to UTC+5
++# effective December 21st, 2018....
++# http://adilet.zan.kz/rus/docs/P1800000817 (russian language).
+
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+ #
+@@ -2744,20 +2736,8 @@
+ Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 -
+ Rule NBorneo 1935 1941 - Dec 14 0:00 0 -
+ #
+-# peninsular Malaysia
+-# taken from Mok Ly Yng (2003-10-30)
+-# https://web.archive.org/web/20190822231045/http://www.math.nus.edu.sg/~mathelmr/teaching/timezone.html
+-# This agrees with Singapore since 1905-06-01.
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Asia/Kuala_Lumpur 6:46:46 - LMT 1901 Jan 1
+- 6:55:25 - SMT 1905 Jun 1 # Singapore M.T.
+- 7:00 - +07 1933 Jan 1
+- 7:00 0:20 +0720 1936 Jan 1
+- 7:20 - +0720 1941 Sep 1
+- 7:30 - +0730 1942 Feb 16
+- 9:00 - +09 1945 Sep 12
+- 7:30 - +0730 1982 Jan 1
+- 8:00 - +08
++# For peninsular Malaysia see Asia/Singapore.
++#
+ # Sabah & Sarawak
+ # From Paul Eggert (2014-08-12):
+ # The data entries here are mostly from Shanks & Pottenger, but the 1942, 1945
+@@ -2768,12 +2748,14 @@
+ 8:00 NBorneo +08/+0820 1942 Feb 16
+ 9:00 - +09 1945 Sep 12
+ 8:00 - +08
++Link Asia/Kuching Asia/Brunei
+
+ # Maldives
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+ Zone Indian/Maldives 4:54:00 - LMT 1880 # Malé
+ 4:54:00 - MMT 1960 # Malé Mean Time
+ 5:00 - +05
++Link Indian/Maldives Indian/Kerguelen
+
+ # Mongolia
+
+@@ -3608,6 +3590,7 @@
+ 9:00 - +09 1945 Sep 12
+ 7:30 - +0730 1982 Jan 1
+ 8:00 - +08
++Link Asia/Singapore Asia/Kuala_Lumpur
+
+ # Spratly Is
+ # no information
+@@ -3842,7 +3825,7 @@
+ Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2
+ 5:00 - +05 1930 Jun 21
+ 6:00 RussiaAsia +06/+07 1991 Mar 31 2:00s
+- 5:00 1:00 +05/+06 1991 Sep 9 2:00s
++ 5:00 1:00 +06 1991 Sep 9 2:00s
+ 5:00 - +05
+
+ # Thailand
+@@ -3852,6 +3835,7 @@
+ 7:00 - +07
+ Link Asia/Bangkok Asia/Phnom_Penh # Cambodia
+ Link Asia/Bangkok Asia/Vientiane # Laos
++Link Asia/Bangkok Indian/Christmas
+
+ # Turkmenistan
+ # From Shanks & Pottenger.
+@@ -3867,6 +3851,8 @@
+ Zone Asia/Dubai 3:41:12 - LMT 1920
+ 4:00 - +04
+ Link Asia/Dubai Asia/Muscat # Oman
++Link Asia/Dubai Indian/Mahe
++Link Asia/Dubai Indian/Reunion
+
+ # Uzbekistan
+ # Byalokoz 1919 says Uzbekistan was 4:27:53.
+@@ -3878,7 +3864,8 @@
+ 6:00 - +06 1982 Apr 1
+ 5:00 RussiaAsia +05/+06 1992
+ 5:00 - +05
+-# Milne says Tashkent was 4:37:10.8; round to nearest.
++# Milne says Tashkent was 4:37:10.8.
++ #STDOFF 4:37:10.8
+ Zone Asia/Tashkent 4:37:11 - LMT 1924 May 2
+ 5:00 - +05 1930 Jun 21
+ 6:00 RussiaAsia +06/+07 1991 Mar 31 2:00
+@@ -3897,7 +3884,7 @@
+ # The English-language name of Vietnam's most populous city is "Ho Chi Minh
+ # City"; use Ho_Chi_Minh below to avoid a name of more than 14 characters.
+
+-# From Paul Eggert (2014-10-21) after a heads-up from Trần Ngọc Quân:
++# From Paul Eggert (2022-07-27) after a 2014 heads-up from Trần Ngọc Quân:
+ # Trần Tiến Bình's authoritative book "Lịch Việt Nam: thế kỷ XX-XXI (1901-2100)"
+ # (Nhà xuất bản Văn Hoá - Thông Tin, Hanoi, 2005), pp 49-50,
+ # is quoted verbatim in:
+@@ -3909,8 +3896,8 @@
+ # The 1906 transition was effective July 1 and standardized Indochina to
+ # Phù Liễn Observatory, legally 104° 17' 17" east of Paris.
+ # It's unclear whether this meant legal Paris Mean Time (00:09:21) or
+-# the Paris Meridian (2° 20' 14.03" E); the former yields 07:06:30.1333...
+-# and the latter 07:06:29.333... so either way it rounds to 07:06:30,
++# the Paris Meridian; for now guess the former and round the exact
++# 07:06:30.1333... to 07:06:30.13 as the legal spec used 66 2/3 ms precision.
+ # which is used below even though the modern-day Phù Liễn Observatory
+ # is closer to 07:06:31. Abbreviate Phù Liễn Mean Time as PLMT.
+ #
+@@ -3937,7 +3924,8 @@
+ # NXB Thuận Hoá, Huế, 1995.
+
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Asia/Ho_Chi_Minh 7:06:40 - LMT 1906 Jul 1
++ #STDOFF 7:06:30.13
++Zone Asia/Ho_Chi_Minh 7:06:30 - LMT 1906 Jul 1
+ 7:06:30 - PLMT 1911 May 1 # Phù Liễn MT
+ 7:00 - +07 1942 Dec 31 23:00
+ 8:00 - +08 1945 Mar 14 23:00
+--- contrib/tzdata/australasia.orig
++++ contrib/tzdata/australasia
+@@ -252,16 +252,10 @@
+ 10:00 AT AE%sT
+
+ # Christmas
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Indian/Christmas 7:02:52 - LMT 1895 Feb
+- 7:00 - +07
++# See Asia/Bangkok.
+
+ # Cocos (Keeling) Is
+-# These islands were ruled by the Ross family from about 1830 to 1978.
+-# We don't know when standard time was introduced; for now, we guess 1900.
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Indian/Cocos 6:27:40 - LMT 1900
+- 6:30 - +0630
++# See Asia/Yangon.
+
+
+ # Fiji
+@@ -478,6 +472,11 @@
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+ Zone Pacific/Tarawa 11:32:04 - LMT 1901 # Bairiki
+ 12:00 - +12
++Link Pacific/Tarawa Pacific/Funafuti
++Link Pacific/Tarawa Pacific/Majuro
++Link Pacific/Tarawa Pacific/Wake
++Link Pacific/Tarawa Pacific/Wallis
++
+ Zone Pacific/Kanton 0 - -00 1937 Aug 31
+ -12:00 - -12 1979 Oct
+ -11:00 - -11 1994 Dec 31
+@@ -491,15 +490,8 @@
+ # See Pacific/Guam.
+
+ # Marshall Is
++# See Pacific/Tarawa for most locations.
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Pacific/Majuro 11:24:48 - LMT 1901
+- 11:00 - +11 1914 Oct
+- 9:00 - +09 1919 Feb 1
+- 11:00 - +11 1937
+- 10:00 - +10 1941 Apr 1
+- 9:00 - +09 1944 Jan 30
+- 11:00 - +11 1969 Oct
+- 12:00 - +12
+ Zone Pacific/Kwajalein 11:09:20 - LMT 1901
+ 11:00 - +11 1937
+ 10:00 - +10 1941 Apr 1
+@@ -509,22 +501,9 @@
+ 12:00 - +12
+
+ # Micronesia
++# For Chuuk and Yap see Pacific/Port_Moresby.
++# For Pohnpei see Pacific/Guadalcanal.
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Pacific/Chuuk -13:52:52 - LMT 1844 Dec 31
+- 10:07:08 - LMT 1901
+- 10:00 - +10 1914 Oct
+- 9:00 - +09 1919 Feb 1
+- 10:00 - +10 1941 Apr 1
+- 9:00 - +09 1945 Aug
+- 10:00 - +10
+-Zone Pacific/Pohnpei -13:27:08 - LMT 1844 Dec 31 # Kolonia
+- 10:32:52 - LMT 1901
+- 11:00 - +11 1914 Oct
+- 9:00 - +09 1919 Feb 1
+- 11:00 - +11 1937
+- 10:00 - +10 1941 Apr 1
+- 9:00 - +09 1945 Aug
+- 11:00 - +11
+ Zone Pacific/Kosrae -13:08:04 - LMT 1844 Dec 31
+ 10:51:56 - LMT 1901
+ 11:00 - +11 1914 Oct
+@@ -594,12 +573,12 @@
+ Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2
+ 11:30 NZ NZ%sT 1946 Jan 1
+ 12:00 NZ NZ%sT
++Link Pacific/Auckland Antarctica/McMurdo
++
+ Zone Pacific/Chatham 12:13:48 - LMT 1868 Nov 2
+ 12:15 - +1215 1946 Jan 1
+ 12:45 Chatham +1245/+1345
+
+-Link Pacific/Auckland Antarctica/McMurdo
+-
+ # Auckland Is
+ # uninhabited; Māori and Moriori, colonial settlers, pastoralists, sealers,
+ # and scientific personnel have wintered
+@@ -658,7 +637,7 @@
+
+
+ # Niue
+-# See Pacific/Raratonga comments for 1952 transition.
++# See Pacific/Rarotonga comments for 1952 transition.
+ #
+ # From Tim Parenti (2021-09-13):
+ # Consecutive contemporaneous editions of The Air Almanac listed -11:20 for
+@@ -694,6 +673,7 @@
+ 9:48:32 - PMMT 1895 # Port Moresby Mean Time
+ 10:00 - +10
+ Link Pacific/Port_Moresby Antarctica/DumontDUrville
++Link Pacific/Port_Moresby Pacific/Chuuk
+ #
+ # From Paul Eggert (2014-10-13):
+ # Base the Bougainville entry on the Arawa-Kieta region, which appears to have
+@@ -821,6 +801,7 @@
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+ Zone Pacific/Guadalcanal 10:39:48 - LMT 1912 Oct # Honiara
+ 11:00 - +11
++Link Pacific/Guadalcanal Pacific/Pohnpei
+
+ # Tokelau
+ #
+@@ -861,9 +842,7 @@
+ 13:00 Tonga +13/+14
+
+ # Tuvalu
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Pacific/Funafuti 11:56:52 - LMT 1901
+- 12:00 - +12
++# See Pacific/Tarawa.
+
+
+ # US minor outlying islands
+@@ -922,9 +901,7 @@
+ # uninhabited since World War II; was probably like Pacific/Kiritimati
+
+ # Wake
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Pacific/Wake 11:06:28 - LMT 1901
+- 12:00 - +12
++# See Pacific/Tarawa.
+
+
+ # Vanuatu
+@@ -963,9 +940,7 @@
+ 11:00 Vanuatu +11/+12
+
+ # Wallis and Futuna
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Pacific/Wallis 12:15:20 - LMT 1901
+- 12:00 - +12
++# See Pacific/Tarawa.
+
+ ###############################################################################
+
+@@ -1283,6 +1258,7 @@
+ # to have the extra hour of sunshine removed from their area." See:
+ # Daylight saving coming to WA in 2019. Guardian Express. 2018-04-01.
+ # https://www.communitynews.com.au/guardian-express/news/exclusive-daylight-savings-coming-wa-summer-2018/
++# [The article ends with "Today's date is April 1."]
+
+ # Queensland
+
+@@ -1826,16 +1802,12 @@
+ # "In Marshall Islands, Friday is followed by Sunday", NY Times. 1993-08-22.
+ # https://www.nytimes.com/1993/08/22/world/in-marshall-islands-friday-is-followed-by-sunday.html
+
+-# From Phake Nick (2018-10-27):
+-# <https://wiki.suikawiki.org/n/南洋群島の標準時> ... pointed out that
+-# currently tzdata say Pacific/Kwajalein switched from GMT+11 to GMT-12 in
+-# 1969 October without explanation, however an 1993 article from NYT say it
+-# synchorized its day with US mainland about 40 years ago and thus the switch
+-# should occur at around 1950s instead.
+-#
+-# From Paul Eggert (2018-11-18):
+-# The NYT (actually, AP) article is vague and possibly wrong about this.
+-# The article says the earlier switch was "40 years ago when the United States
++# From Paul Eggert (2022-03-31):
++# Phake Nick (2018-10-27) noted <https://wiki.suikawiki.org/n/南洋群島の標準時>'s
++# citation of a 1993 AP article published in the New York Times saying
++# Kwajalein synchronized its day with the US mainland about 40 years earlier.
++# However the AP article is vague and possibly wrong about this. The article
++# says the earlier switch was "about 40 years ago when the United States
+ # Army established a missile test range here". However, the Kwajalein Test
+ # Center was established on 1960-10-01 and was run by the US Navy. It was
+ # transferred to the US Army on 1964-07-01. See "Seize the High Ground"
+@@ -1882,13 +1854,6 @@
+ # Like the Ladrones (see Guam commentary), assume the Spanish East Indies
+ # kept American time until the Philippines switched at the end of 1844.
+
+-# Alan Eugene Davis writes (1996-03-16),
+-# "I am certain, having lived there for the past decade, that 'Truk'
+-# (now properly known as Chuuk) ... is in the time zone GMT+10."
+-#
+-# Shanks & Pottenger write that Truk switched from UT +10 to +11
+-# on 1978-10-01; ignore this for now.
+-
+ # From Paul Eggert (1999-10-29):
+ # The Federated States of Micronesia Visitors Board writes in
+ # The Federated States of Micronesia - Visitor Information (1999-01-26)
+@@ -2219,7 +2184,7 @@
+ # through the third Sunday in January at 03:00, like Fiji, for now.
+
+ # From David Wade (2017-10-18):
+-# In August government was disolved by the King. The current prime minister
++# In August government was dissolved by the King. The current prime minister
+ # continued in office in care taker mode. It is easy to see that few
+ # decisions will be made until elections 16th November.
+ #
+@@ -2227,26 +2192,6 @@
+ # For now, guess that DST is discontinued. That's what the IATA is guessing.
+
+
+-# Wake
+-
+-# From Vernice Anderson, Personal Secretary to Philip Jessup,
+-# US Ambassador At Large (oral history interview, 1971-02-02):
+-#
+-# Saturday, the 14th [of October, 1950] - ... The time was all the
+-# more confusing at that point, because we had crossed the
+-# International Date Line, thus getting two Sundays. Furthermore, we
+-# discovered that Wake Island had two hours of daylight saving time
+-# making calculation of time in Washington difficult if not almost
+-# impossible.
+-#
+-# https://www.trumanlibrary.org/oralhist/andrsonv.htm
+-
+-# From Paul Eggert (2003-03-23):
+-# We have no other report of DST in Wake Island, so omit this info for now.
+-
+-# See also the commentary for Micronesia.
+-
+-
+ ###############################################################################
+
+ # The International Date Line
+--- contrib/tzdata/backward.orig
++++ contrib/tzdata/backward
+@@ -4,10 +4,15 @@
+ # 2009-05-17 by Arthur David Olson.
+
+ # This file provides links from old or merged timezone names to current ones.
+-# Many names changed in late 1993. Several of these names are
++# Many names changed in late 1993, and many merged names moved here
++# in the period from 2013 through 2022. Several of these names are
+ # also present in the file 'backzone', which has data important only
+ # for pre-1970 timestamps and so is out of scope for tzdb proper.
+
++# Although this file is optional and tzdb will work if you omit it by
++# building with 'make BACKWARD=', in practice downstream users
++# typically use this file for backward compatibility.
++
+ # Link TARGET LINK-NAME
+ Link Africa/Nairobi Africa/Asmera
+ Link Africa/Abidjan Africa/Timbuktu
+@@ -48,7 +53,7 @@
+ Link Asia/Makassar Asia/Ujung_Pandang
+ Link Asia/Ulaanbaatar Asia/Ulan_Bator
+ Link Atlantic/Faroe Atlantic/Faeroe
+-Link Europe/Oslo Atlantic/Jan_Mayen
++Link Europe/Berlin Atlantic/Jan_Mayen
+ Link Australia/Sydney Australia/ACT
+ Link Australia/Sydney Australia/Canberra
+ Link Australia/Hobart Australia/Currie
+@@ -83,6 +88,7 @@
+ Link Europe/Dublin Eire
+ Link Etc/UTC Etc/UCT
+ Link Europe/London Europe/Belfast
++Link Europe/Kyiv Europe/Kiev
+ Link Europe/Chisinau Europe/Tiraspol
+ Link Europe/London GB
+ Link Europe/London GB-Eire
+@@ -91,7 +97,7 @@
+ Link Etc/GMT GMT0
+ Link Etc/GMT Greenwich
+ Link Asia/Hong_Kong Hongkong
+-Link Atlantic/Reykjavik Iceland
++Link Africa/Abidjan Iceland
+ Link Asia/Tehran Iran
+ Link Asia/Jerusalem Israel
+ Link America/Jamaica Jamaica
+@@ -107,10 +113,10 @@
+ Link Asia/Shanghai PRC
+ Link Pacific/Kanton Pacific/Enderbury
+ Link Pacific/Honolulu Pacific/Johnston
+-Link Pacific/Pohnpei Pacific/Ponape
++Link Pacific/Guadalcanal Pacific/Ponape
+ Link Pacific/Pago_Pago Pacific/Samoa
+-Link Pacific/Chuuk Pacific/Truk
+-Link Pacific/Chuuk Pacific/Yap
++Link Pacific/Port_Moresby Pacific/Truk
++Link Pacific/Port_Moresby Pacific/Yap
+ Link Europe/Warsaw Poland
+ Link Europe/Lisbon Portugal
+ Link Asia/Taipei ROC
+--- contrib/tzdata/backzone.orig
++++ contrib/tzdata/backzone
+@@ -65,6 +65,11 @@
+ # Zones are sorted by zone name. Each zone is preceded by the
+ # name of the country that the zone is in, along with any other
+ # commentary and rules associated with the entry.
++# If the zone overrides links in the main data, it
++# is followed by the corresponding Link lines.
++# If the zone overrides main-data links only when building with
++# PACKRATLIST=zone.tab, it is followed by a commented-out Link line
++# that starts with "#PACKRATLIST zone.tab".
+ #
+ # As explained in the zic man page, the zone columns are:
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -181,6 +186,7 @@
+ 0:00 - GMT 1934 Feb 26
+ -1:00 - -01 1960 Jun 20
+ 0:00 - GMT
++#PACKRATLIST zone.tab Link Africa/Bamako Africa/Timbuktu
+
+ # Central African Republic
+ Zone Africa/Bangui 1:14:20 - LMT 1912
+@@ -498,6 +504,7 @@
+ -6:00 1:00 CDT 1942 Feb 9 2:00s
+ -6:00 Canada C%sT 1945 Sep 30 2:00
+ -5:00 - EST
++#PACKRATLIST zone.tab Link America/Atikokan America/Coral_Harbour
+
+ # Quebec east of Natashquan
+
+@@ -829,6 +836,35 @@
+ Zone Antarctica/Syowa 0 - -00 1957 Jan 29
+ 3:00 - +03
+
++# Vostok, Antarctica
++#
++# Vostok, since 1957-12-16, temporarily closed 1994-02/1994-11
++# From Craig Mundell (1994-12-15):
++# http://quest.arc.nasa.gov/antarctica/QA/computers/Directions,Time,ZIP
++# Vostok, which is one of the Russian stations, is set on the same
++# time as Moscow, Russia.
++#
++# From Lee Hotz (2001-03-08):
++# I queried the folks at Columbia who spent the summer at Vostok and this is
++# what they had to say about time there:
++# "in the US Camp (East Camp) we have been on New Zealand (McMurdo)
++# time, which is 12 hours ahead of GMT. The Russian Station Vostok was
++# 6 hours behind that (although only 2 miles away, i.e. 6 hours ahead
++# of GMT). This is a time zone I think two hours east of Moscow. The
++# natural time zone is in between the two: 8 hours ahead of GMT."
++#
++# From Paul Eggert (2001-05-04):
++# This seems to be hopelessly confusing, so I asked Lee Hotz about it
++# in person. He said that some Antarctic locations set their local
++# time so that noon is the warmest part of the day, and that this
++# changes during the year and does not necessarily correspond to mean
++# solar noon. So the Vostok time might have been whatever the clocks
++# happened to be during their visit. So we still don't really know what time
++# it is at Vostok. But we'll guess +06.
++#
++Zone Antarctica/Vostok 0 - -00 1957 Dec 16
++ 6:00 - +06
++
+ # Yemen
+ # Milne says 2:59:54 was the meridian of the saluting battery at Aden,
+ # and that Yemen was at 1:55:56, the meridian of the Hagia Sophia.
+@@ -867,6 +903,11 @@
+ 4:00 - +04 1972 Jun
+ 3:00 - +03
+
++# Brunei
++Zone Asia/Brunei 7:39:40 - LMT 1926 Mar # Bandar Seri Begawan
++ 7:30 - +0730 1933
++ 8:00 - +08
++
+ # India
+ #
+ # From Paul Eggert (2014-09-06):
+@@ -922,6 +963,20 @@
+ 5:00 - +05 1980 May
+ 8:00 PRC C%sT
+
++# peninsular Malaysia
++# taken from Mok Ly Yng (2003-10-30)
++# https://web.archive.org/web/20190822231045/http://www.math.nus.edu.sg/~mathelmr/teaching/timezone.html
++# This agrees with Singapore since 1905-06-01.
++Zone Asia/Kuala_Lumpur 6:46:46 - LMT 1901 Jan 1
++ 6:55:25 - SMT 1905 Jun 1 # Singapore M.T.
++ 7:00 - +07 1933 Jan 1
++ 7:00 0:20 +0720 1936 Jan 1
++ 7:20 - +0720 1941 Sep 1
++ 7:30 - +0730 1942 Feb 16
++ 9:00 - +09 1945 Sep 12
++ 7:30 - +0730 1982 Jan 1
++ 8:00 - +08
++
+ # Kuwait
+ Zone Asia/Kuwait 3:11:56 - LMT 1950
+ 3:00 - +03
+@@ -995,6 +1050,64 @@
+ # From Whitman:
+ Zone Atlantic/Jan_Mayen -1:00 - -01
+
++# Iceland
++#
++# From Adam David (1993-11-06):
++# The name of the timezone in Iceland for system / mail / news purposes is GMT.
++#
++# (1993-12-05):
++# This material is paraphrased from the 1988 edition of the University of
++# Iceland Almanak.
++#
++# From January 1st, 1908 the whole of Iceland was standardised at 1 hour
++# behind GMT. Previously, local mean solar time was used in different parts
++# of Iceland, the almanak had been based on Reykjavík mean solar time which
++# was 1 hour and 28 minutes behind GMT.
++#
++# "first day of winter" referred to [below] means the first day of the 26 weeks
++# of winter, according to the old icelandic calendar that dates back to the
++# time the norsemen first settled Iceland. The first day of winter is always
++# Saturday, but is not dependent on the Julian or Gregorian calendars.
++#
++# (1993-12-10):
++# I have a reference from the Oxford Icelandic-English dictionary for the
++# beginning of winter, which ties it to the ecclesiastical calendar (and thus
++# to the julian/gregorian calendar) over the period in question.
++# the winter begins on the Saturday next before St. Luke's day
++# (old style), or on St. Luke's day, if a Saturday.
++# St. Luke's day ought to be traceable from ecclesiastical sources. "old style"
++# might be a reference to the Julian calendar as opposed to Gregorian, or it
++# might mean something else (???).
++#
++# From Paul Eggert (2014-11-22):
++# The information below is taken from the 1988 Almanak; see
++# http://www.almanak.hi.is/klukkan.html
++#
++Rule Iceland 1917 1919 - Feb 19 23:00 1:00 -
++Rule Iceland 1917 only - Oct 21 1:00 0 -
++Rule Iceland 1918 1919 - Nov 16 1:00 0 -
++Rule Iceland 1921 only - Mar 19 23:00 1:00 -
++Rule Iceland 1921 only - Jun 23 1:00 0 -
++Rule Iceland 1939 only - Apr 29 23:00 1:00 -
++Rule Iceland 1939 only - Oct 29 2:00 0 -
++Rule Iceland 1940 only - Feb 25 2:00 1:00 -
++Rule Iceland 1940 1941 - Nov Sun>=2 1:00s 0 -
++Rule Iceland 1941 1942 - Mar Sun>=2 1:00s 1:00 -
++# 1943-1946 - first Sunday in March until first Sunday in winter
++Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 -
++Rule Iceland 1942 1948 - Oct Sun>=22 1:00s 0 -
++# 1947-1967 - first Sunday in April until first Sunday in winter
++Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 -
++# 1949 and 1967 Oct transitions delayed by 1 week
++Rule Iceland 1949 only - Oct 30 1:00s 0 -
++Rule Iceland 1950 1966 - Oct Sun>=22 1:00s 0 -
++Rule Iceland 1967 only - Oct 29 1:00s 0 -
++
++Zone Atlantic/Reykjavik -1:28 - LMT 1908
++ -1:00 Iceland -01/+00 1968 Apr 7 1:00s
++ 0:00 - GMT
++Link Atlantic/Reykjavik Iceland
++
+ # St Helena
+ Zone Atlantic/St_Helena -0:22:48 - LMT 1890 # Jamestown
+ -0:22:48 - JMT 1951 # Jamestown Mean Time
+@@ -1006,6 +1119,82 @@
+ 10:00 Aus AE%sT 1968 Oct 15
+ 10:00 AT AE%sT
+
++
++# Netherlands
++
++# Howse writes that the Netherlands' railways used GMT between 1892 and 1940,
++# but for other purposes the Netherlands used Amsterdam mean time.
++
++# However, Robert H. van Gent writes (2001-04-01):
++# Howse's statement is only correct up to 1909. From 1909-05-01 (00:00:00
++# Amsterdam mean time) onwards, the whole of the Netherlands (including
++# the Dutch railways) was required by law to observe Amsterdam mean time
++# (19 minutes 32.13 seconds ahead of GMT). This had already been the
++# common practice (except for the railways) for many decades but it was
++# not until 1909 when the Dutch government finally defined this by law.
++# On 1937-07-01 this was changed to 20 minutes (exactly) ahead of GMT and
++# was generally known as Dutch Time ("Nederlandse Tijd").
++#
++# (2001-04-08):
++# 1892-05-01 was the date when the Dutch railways were by law required to
++# observe GMT while the remainder of the Netherlands adhered to the common
++# practice of following Amsterdam mean time.
++#
++# (2001-04-09):
++# In 1835 the authorities of the province of North Holland requested the
++# municipal authorities of the towns and cities in the province to observe
++# Amsterdam mean time but I do not know in how many cases this request was
++# actually followed.
++#
++# From 1852 onwards the Dutch telegraph offices were by law required to
++# observe Amsterdam mean time. As the time signals from the observatory of
++# Leiden were also distributed by the telegraph system, I assume that most
++# places linked up with the telegraph (and railway) system automatically
++# adopted Amsterdam mean time.
++#
++# Although the early Dutch railway companies initially observed a variety
++# of times, most of them had adopted Amsterdam mean time by 1858 but it
++# was not until 1866 when they were all required by law to observe
++# Amsterdam mean time.
++
++# The data entries before 1945 are taken from
++# https://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm
++
++# From Paul Eggert (2021-05-09):
++# I invented the abbreviations AMT for Amsterdam Mean Time and NST for
++# Netherlands Summer Time, used in the Netherlands from 1835 to 1937.
++
++Rule Neth 1916 only - May 1 0:00 1:00 NST # Netherlands Summer Time
++Rule Neth 1916 only - Oct 1 0:00 0 AMT # Amsterdam Mean Time
++Rule Neth 1917 only - Apr 16 2:00s 1:00 NST
++Rule Neth 1917 only - Sep 17 2:00s 0 AMT
++Rule Neth 1918 1921 - Apr Mon>=1 2:00s 1:00 NST
++Rule Neth 1918 1921 - Sep lastMon 2:00s 0 AMT
++Rule Neth 1922 only - Mar lastSun 2:00s 1:00 NST
++Rule Neth 1922 1936 - Oct Sun>=2 2:00s 0 AMT
++Rule Neth 1923 only - Jun Fri>=1 2:00s 1:00 NST
++Rule Neth 1924 only - Mar lastSun 2:00s 1:00 NST
++Rule Neth 1925 only - Jun Fri>=1 2:00s 1:00 NST
++# From 1926 through 1939 DST began 05-15, except that it was delayed by a week
++# in years when 05-15 fell in the Pentecost weekend.
++Rule Neth 1926 1931 - May 15 2:00s 1:00 NST
++Rule Neth 1932 only - May 22 2:00s 1:00 NST
++Rule Neth 1933 1936 - May 15 2:00s 1:00 NST
++Rule Neth 1937 only - May 22 2:00s 1:00 NST
++Rule Neth 1937 only - Jul 1 0:00 1:00 S
++Rule Neth 1937 1939 - Oct Sun>=2 2:00s 0 -
++Rule Neth 1938 1939 - May 15 2:00s 1:00 S
++Rule Neth 1945 only - Apr 2 2:00s 1:00 S
++Rule Neth 1945 only - Sep 16 2:00s 0 -
++ #STDOFF 0:19:32.13
++Zone Europe/Amsterdam 0:19:32 - LMT 1835
++ 0:19:32 Neth %s 1937 Jul 1
++ 0:20 Neth +0020/+0120 1940 May 16 0:00
++ 1:00 C-Eur CE%sT 1945 Apr 2 2:00
++ 1:00 Neth CE%sT 1977
++ 1:00 EU CE%sT
++
++
+ # Northern Ireland
+ Zone Europe/Belfast -0:23:40 - LMT 1880 Aug 2
+ -0:25:21 - DMT 1916 May 21 2:00
+@@ -1017,6 +1206,60 @@
+ 0:00 GB-Eire %s 1996
+ 0:00 EU GMT/BST
+
++
++# Denmark
++
++# From Jesper Nørgaard Welen (2005-04-26):
++# the law [introducing standard time] was in effect from 1894-01-01....
++# The page https://www.retsinformation.dk/eli/lta/1893/83
++# confirms this, and states that the law was put forth 1893-03-29.
++#
++# The EU [actually, EEC and Euratom] treaty with effect from 1973:
++# https://www.retsinformation.dk/eli/lta/1972/21100
++#
++# This provoked a new law from 1974 to make possible summer time changes
++# in subsequent decrees with the law
++# https://www.retsinformation.dk/eli/lta/1974/223
++#
++# It seems however that no decree was set forward until 1980. I have
++# not found any decree, but in another related law, the effecting DST
++# changes are stated explicitly to be from 1980-04-06 at 02:00 to
++# 1980-09-28 at 02:00. If this is true, this differs slightly from
++# the EU rule in that DST runs to 02:00, not 03:00. We don't know
++# when Denmark began using the EU rule correctly, but we have only
++# confirmation of the 1980-time, so I presume it was correct in 1981:
++# The law is about the management of the extra hour, concerning
++# working hours reported and effect on obligatory-rest rules (which
++# was suspended on that night):
++# https://web.archive.org/web/20140104053304/https://www.retsinformation.dk/Forms/R0710.aspx?id=60267
++
++# From Jesper Nørgaard Welen (2005-06-11):
++# The Herning Folkeblad (1980-09-26) reported that the night between
++# Saturday and Sunday the clock is set back from three to two.
++
++# From Paul Eggert (2005-06-11):
++# Hence the "02:00" of the 1980 law refers to standard time, not
++# wall-clock time, and so the EU rules were in effect in 1980.
++
++Rule Denmark 1916 only - May 14 23:00 1:00 S
++Rule Denmark 1916 only - Sep 30 23:00 0 -
++Rule Denmark 1940 only - May 15 0:00 1:00 S
++Rule Denmark 1945 only - Apr 2 2:00s 1:00 S
++Rule Denmark 1945 only - Aug 15 2:00s 0 -
++Rule Denmark 1946 only - May 1 2:00s 1:00 S
++Rule Denmark 1946 only - Sep 1 2:00s 0 -
++Rule Denmark 1947 only - May 4 2:00s 1:00 S
++Rule Denmark 1947 only - Aug 10 2:00s 0 -
++Rule Denmark 1948 only - May 9 2:00s 1:00 S
++Rule Denmark 1948 only - Aug 8 2:00s 0 -
++#
++Zone Europe/Copenhagen 0:50:20 - LMT 1890
++ 0:50:20 - CMT 1894 Jan 1 # Copenhagen MT
++ 1:00 Denmark CE%sT 1942 Nov 2 2:00s
++ 1:00 C-Eur CE%sT 1945 Apr 2 2:00
++ 1:00 Denmark CE%sT 1980
++ 1:00 EU CE%sT
++
+ # Guernsey
+ # Data from Joseph S. Myers
+ # https://mm.icann.org/pipermail/tz/2013-September/019883.html
+@@ -1072,6 +1315,86 @@
+ 1:00 - CET 1982 Nov 27
+ 1:00 EU CE%sT
+
++
++# Luxembourg
++
++# Whitman disagrees with most of these dates in minor ways;
++# go with Shanks & Pottenger.
++Rule Lux 1916 only - May 14 23:00 1:00 S
++Rule Lux 1916 only - Oct 1 1:00 0 -
++Rule Lux 1917 only - Apr 28 23:00 1:00 S
++Rule Lux 1917 only - Sep 17 1:00 0 -
++Rule Lux 1918 only - Apr Mon>=15 2:00s 1:00 S
++Rule Lux 1918 only - Sep Mon>=15 2:00s 0 -
++Rule Lux 1919 only - Mar 1 23:00 1:00 S
++Rule Lux 1919 only - Oct 5 3:00 0 -
++Rule Lux 1920 only - Feb 14 23:00 1:00 S
++Rule Lux 1920 only - Oct 24 2:00 0 -
++Rule Lux 1921 only - Mar 14 23:00 1:00 S
++Rule Lux 1921 only - Oct 26 2:00 0 -
++Rule Lux 1922 only - Mar 25 23:00 1:00 S
++Rule Lux 1922 only - Oct Sun>=2 1:00 0 -
++Rule Lux 1923 only - Apr 21 23:00 1:00 S
++Rule Lux 1923 only - Oct Sun>=2 2:00 0 -
++Rule Lux 1924 only - Mar 29 23:00 1:00 S
++Rule Lux 1924 1928 - Oct Sun>=2 1:00 0 -
++Rule Lux 1925 only - Apr 5 23:00 1:00 S
++Rule Lux 1926 only - Apr 17 23:00 1:00 S
++Rule Lux 1927 only - Apr 9 23:00 1:00 S
++Rule Lux 1928 only - Apr 14 23:00 1:00 S
++Rule Lux 1929 only - Apr 20 23:00 1:00 S
++
++Zone Europe/Luxembourg 0:24:36 - LMT 1904 Jun
++ 1:00 Lux CE%sT 1918 Nov 25
++ 0:00 Lux WE%sT 1929 Oct 6 2:00s
++ 0:00 Belgium WE%sT 1940 May 14 3:00
++ 1:00 C-Eur WE%sT 1944 Sep 18 3:00
++ 1:00 Belgium CE%sT 1977
++ 1:00 EU CE%sT
++
++# Monaco
++#
++# From Michael Deckers (2020-06-12):
++# In the "Journal de Monaco" of 1892-05-24, online at
++# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/b1c67c12c5af11b41ea888fb048e4fe8.pdf
++# we read: ...
++# [In virtue of a Sovereign Ordinance of the May 13 of the current [year],
++# legal time in the Principality will be set to, from the date of June 1,
++# 1892 onwards, to the meridian of Paris, as in France.]
++# In the "Journal de Monaco" of 1911-03-28, online at
++# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/de74ffb7db53d4f599059fe8f0ed482a.pdf
++# we read an ordinance of 1911-03-16: ...
++# [Legal time in the Principality will be set, from the date of promulgation
++# of the present ordinance, to legal time in France.... Consequently, legal
++# time will be retarded by 9 minutes and 21 seconds.]
++#
++Zone Europe/Monaco 0:29:32 - LMT 1892 Jun 1
++ 0:09:21 - PMT 1911 Mar 29 # Paris Mean Time
++ 0:00 France WE%sT 1945 Sep 16 3:00
++ 1:00 France CE%sT 1977
++ 1:00 EU CE%sT
++
++
++# Norway
++
++# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &
++# Pottenger.
++Rule Norway 1916 only - May 22 1:00 1:00 S
++Rule Norway 1916 only - Sep 30 0:00 0 -
++Rule Norway 1945 only - Apr 2 2:00s 1:00 S
++Rule Norway 1945 only - Oct 1 2:00s 0 -
++Rule Norway 1959 1964 - Mar Sun>=15 2:00s 1:00 S
++Rule Norway 1959 1965 - Sep Sun>=15 2:00s 0 -
++Rule Norway 1965 only - Apr 25 2:00s 1:00 S
++
++Zone Europe/Oslo 0:43:00 - LMT 1895 Jan 1
++ 1:00 Norway CE%sT 1940 Aug 10 23:00
++ 1:00 C-Eur CE%sT 1945 Apr 2 2:00
++ 1:00 Norway CE%sT 1980
++ 1:00 EU CE%sT
++Link Europe/Oslo Arctic/Longyearbyen
++#PACKRATLIST zone.tab Link Europe/Oslo Atlantic/Jan_Mayen
++
+ # Bosnia and Herzegovina
+ Zone Europe/Sarajevo 1:13:40 - LMT 1884
+ 1:00 - CET 1941 Apr 18 23:00
+@@ -1089,6 +1412,62 @@
+ 1:00 EU CE%sT
+
+
++# Sweden
++
++# From Ivan Nilsson (2001-04-13), superseding Shanks & Pottenger:
++#
++# The law "Svensk författningssamling 1878, no 14" about standard time in 1879:
++# From the beginning of 1879 (that is 01-01 00:00) the time for all
++# places in the country is "the mean solar time for the meridian at
++# three degrees, or twelve minutes of time, to the west of the
++# meridian of the Observatory of Stockholm". The law is dated 1878-05-31.
++#
++# The observatory at that time had the meridian 18° 03' 30"
++# eastern longitude = 01:12:14 in time. Less 12 minutes gives the
++# national standard time as 01:00:14 ahead of GMT....
++#
++# About the beginning of CET in Sweden. The lawtext ("Svensk
++# författningssamling 1899, no 44") states, that "from the beginning
++# of 1900... ... the same as the mean solar time for the meridian at
++# the distance of one hour of time from the meridian of the English
++# observatory at Greenwich, or at 12 minutes 14 seconds to the west
++# from the meridian of the Observatory of Stockholm". The law is dated
++# 1899-06-16. In short: At 1900-01-01 00:00:00 the new standard time
++# in Sweden is 01:00:00 ahead of GMT.
++#
++# 1916: The lawtext ("Svensk författningssamling 1916, no 124") states
++# that "1916-05-15 is considered to begin one hour earlier". It is
++# pretty obvious that at 05-14 23:00 the clocks are set to 05-15 00:00....
++# Further the law says, that "1916-09-30 is considered to end one hour later".
++#
++# The laws regulating [DST] are available on the site of the Swedish
++# Parliament beginning with 1985 - the laws regulating 1980/1984 are
++# not available on the site (to my knowledge they are only available
++# in Swedish): <http://www.riksdagen.se/english/work/sfst.asp> (type
++# "sommartid" without the quotes in the field "Fritext" and then click
++# the Sök-button).
++#
++# (2001-05-13):
++#
++# I have now found a newspaper stating that at 1916-10-01 01:00
++# summertime the church-clocks etc were set back one hour to show
++# 1916-10-01 00:00 standard time. The article also reports that some
++# people thought the switch to standard time would take place already
++# at 1916-10-01 00:00 summer time, but they had to wait for another
++# hour before the event took place.
++#
++# Source: The newspaper "Dagens Nyheter", 1916-10-01, page 7 upper left.
++
++# An extra-special abbreviation style is SET for Swedish Time (svensk
++# normaltid) 1879-1899, 3° west of the Stockholm Observatory.
++
++Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
++ 1:00:14 - SET 1900 Jan 1 # Swedish Time
++ 1:00 - CET 1916 May 14 23:00
++ 1:00 1:00 CEST 1916 Oct 1 1:00
++ 1:00 - CET 1980
++ 1:00 EU CE%sT
++
+
+ # Moldova / Transnistria
+ Zone Europe/Tiraspol 1:58:32 - LMT 1880
+@@ -1102,6 +1481,15 @@
+ 3:00 Russia MSK/MSD
+
+ # Liechtenstein
++
++# From Paul Eggert (2022-07-21):
++# Shanks & Pottenger say Vaduz is like Zurich starting June 1894.
++
++# From Alois Treindl (2019-07-04):
++# I was able to access the online archive of the Vaduz paper Vaterland ...
++# I could confirm from the paper that Liechtenstein did in fact follow
++# the same DST in 1941 and 1942 as Switzerland did.
++
+ Zone Europe/Vaduz 0:38:04 - LMT 1894 Jun
+ 1:00 Swiss CE%sT 1981
+ 1:00 EU CE%sT
+@@ -1120,14 +1508,87 @@
+ 3:00 1:00 EAST 1954 May 29 23:00s
+ 3:00 - EAT
+
++# Christmas
++Zone Indian/Christmas 7:02:52 - LMT 1895 Feb
++ 7:00 - +07
++
++# Cocos (Keeling) Is
++# These islands were ruled by the Ross family from about 1830 to 1978.
++# We don't know when standard time was introduced; for now, we guess 1900.
++Zone Indian/Cocos 6:27:40 - LMT 1900
++ 6:30 - +0630
++
+ # Comoros
+ Zone Indian/Comoro 2:53:04 - LMT 1911 Jul # Moroni, Gran Comoro
+ 3:00 - EAT
+
++# Kerguelen
++Zone Indian/Kerguelen 0 - -00 1950 # Port-aux-Français
++ 5:00 - +05
++
++# Seychelles
++#
++# From P Chan (2020-11-27):
++# Standard Time was adopted on 1907-01-01.
++#
++# Standard Time Ordinance (Chapter 237)
++# The Laws of Seychelles in Force on the 31st December, 1971, Vol. 6, p 571
++# https://books.google.com/books?id=efE-AQAAIAAJ&pg=PA571
++#
++# From Tim Parenti (2020-12-05):
++# A footnote on https://books.google.com/books?id=DYdDAQAAMAAJ&pg=PA1689
++# confirms that Ordinance No. 9 of 1906 "was brought into force on the 1st
++# January, 1907."
++
++Zone Indian/Mahe 3:41:48 - LMT 1907 Jan 1 # Victoria
++ 4:00 - +04
++# From Paul Eggert (2001-05-30):
++# Aldabra, Farquhar, and Desroches, originally dependencies of the
++# Seychelles, were transferred to the British Indian Ocean Territory
++# in 1965 and returned to Seychelles control in 1976. We don't know
++# whether this affected their time zone, so omit this for now.
++# Possibly the islands were uninhabited.
++
++
+ # Mayotte
+ Zone Indian/Mayotte 3:00:56 - LMT 1911 Jul # Mamoutzou
+ 3:00 - EAT
+
++# Réunion
++Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis
++ 4:00 - +04
++#
++# Scattered Islands (Îles Éparses) administered from Réunion are as follows.
++# The following information about them is taken from
++# Îles Éparses (<http://www.outre-mer.gouv.fr/domtom/ile.htm>, 1997-07-22,
++# in French; no longer available as of 1999-08-17).
++# We have no info about their time zone histories.
++#
++# Bassas da India - uninhabited
++# Europa Island - inhabited from 1905 to 1910 by two families
++# Glorioso Is - inhabited until at least 1958
++# Juan de Nova - uninhabited
++# Tromelin - inhabited until at least 1958
++
++# Micronesia
++# Also see Pacific/Pohnpei and commentary for Micronesia in 'australasia'.
++#
++# From Paul Eggert (2018-11-18):
++# Alan Eugene Davis writes (1996-03-16),
++# "I am certain, having lived there for the past decade, that 'Truk'
++# (now properly known as Chuuk) ... is in the time zone GMT+10."
++# Shanks & Pottenger write that Truk switched from UT +10 to +11
++# on 1978-10-01; ignore this for now.
++Zone Pacific/Chuuk -13:52:52 - LMT 1844 Dec 31
++ 10:07:08 - LMT 1901
++ 10:00 - +10 1914 Oct
++ 9:00 - +09 1919 Feb 1
++ 10:00 - +10 1941 Apr 1
++ 9:00 - +09 1945 Aug
++ 10:00 - +10
++Link Pacific/Chuuk Pacific/Truk
++Link Pacific/Chuuk Pacific/Yap
++
+ # Phoenix Islands, Kiribati
+ # From Paul Eggert (2021-05-27):
+ # Enderbury was inhabited 1860/1880s to mine guano, and 1938-03-06/1942-02-09
+@@ -1140,9 +1601,23 @@
+ -12:00 - -12 1942 Feb 9
+ 0 - -00
+
++# Tuvalu
++Zone Pacific/Funafuti 11:56:52 - LMT 1901
++ 12:00 - +12
++
+ # Johnston
+ Zone Pacific/Johnston -10:00 - HST
+
++# Marshall Is
++Zone Pacific/Majuro 11:24:48 - LMT 1901
++ 11:00 - +11 1914 Oct
++ 9:00 - +09 1919 Feb 1
++ 11:00 - +11 1937
++ 10:00 - +10 1941 Apr 1
++ 9:00 - +09 1944 Jan 30
++ 11:00 - +11 1969 Oct
++ 12:00 - +12
++
+ # Midway
+ #
+ # From Mark Brader (2005-01-23):
+@@ -1160,6 +1635,18 @@
+ -11:00 1:00 -10 1956 Sep 2
+ -11:00 - -11
+
++# Micronesia
++# Also see Pacific/Chuuk and commentary for Micronesia in 'australasia'.
++Zone Pacific/Pohnpei -13:27:08 - LMT 1844 Dec 31 # Kolonia
++ 10:32:52 - LMT 1901
++ 11:00 - +11 1914 Oct
++ 9:00 - +09 1919 Feb 1
++ 11:00 - +11 1937
++ 10:00 - +10 1941 Apr 1
++ 9:00 - +09 1945 Aug
++ 11:00 - +11
++Link Pacific/Pohnpei Pacific/Ponape
++
+ # N Mariana Is
+ Zone Pacific/Saipan -14:17:00 - LMT 1844 Dec 31
+ 9:43:00 - LMT 1901
+@@ -1167,6 +1654,33 @@
+ 10:00 - +10 2000 Dec 23
+ 10:00 - ChST # Chamorro Standard Time
+
++
++# Wake
++
++# From Vernice Anderson, Personal Secretary to Philip Jessup,
++# US Ambassador At Large (oral history interview, 1971-02-02):
++#
++# Saturday, the 14th [of October, 1950] - ... The time was all the
++# more confusing at that point, because we had crossed the
++# International Date Line, thus getting two Sundays. Furthermore, we
++# discovered that Wake Island had two hours of daylight saving time
++# making calculation of time in Washington difficult if not almost
++# impossible.
++#
++# https://www.trumanlibrary.org/oralhist/andrsonv.htm
++
++# From Paul Eggert (2003-03-23):
++# We have no other report of DST in Wake Island, so omit this info for now.
++
++# Also see commentary for Micronesia in 'australasia'.
++Zone Pacific/Wake 11:06:28 - LMT 1901
++ 12:00 - +12
++
++
++# Wallis and Futuna
++Zone Pacific/Wallis 12:15:20 - LMT 1901
++ 12:00 - +12
++
+ # Local Variables:
+ # coding: utf-8
+ # End:
+--- contrib/tzdata/calendars.orig
++++ contrib/tzdata/calendars
+@@ -71,7 +71,7 @@
+
+ Grotefend's data
+
+-From: "Michael Palmer" [with one obvious typo fixed]
++From: "Michael Palmer" [with two obvious typos fixed]
+ Subject: Re: Gregorian Calendar (was Re: Another FHC related question
+ Newsgroups: soc.genealogy.german
+ Date: Tue, 9 Feb 1999 02:32:48 -800
+@@ -142,7 +142,7 @@
+
+ 31 Dec 1700/
+ 12 Jan 1701 - Friesland, Groningen, Zürich, Bern, Basel, Geneva,
+- Turgau, and Schaffhausen
++ Thurgau, and Schaffhausen
+
+ 1724 - Glarus, Appenzell, and the city of St. Gallen
+
+--- contrib/tzdata/etcetera.orig
++++ contrib/tzdata/etcetera
+@@ -17,13 +17,17 @@
+ # behind GMT but uses the completely misleading abbreviation "GMT".
+
+ Zone Etc/GMT 0 - GMT
++
++# The following zone is used by tzcode functions like gmtime,
++# which load the "UTC" file to handle seconds properly.
+ Zone Etc/UTC 0 - UTC
+
+ # The following link uses older naming conventions,
+ # but it belongs here, not in the file 'backward',
+-# as functions like gmtime load the "UTC" file to handle leap seconds properly.
+-# We want this to work even on installations that omit the other older names.
+-Link Etc/UTC UTC
++# as it is needed for tzcode releases through 2022a,
++# where functions like gmtime load "GMT" instead of the "Etc/UTC".
++# We want this to work even on installations that omit 'backward'.
++Link Etc/GMT GMT
+
+ Link Etc/UTC Etc/Universal
+ Link Etc/UTC Etc/Zulu
+--- contrib/tzdata/europe.orig
++++ contrib/tzdata/europe
+@@ -303,8 +303,7 @@
+ # UT-00:25:22 and cites the International Telegraph Bureau. As it is
+ # not clear that there was any practical significance to the change
+ # from UT-00:25:22 to UT-00:25:21.1 in civil timekeeping, omit this
+-# transition for now and just use the latter value, omitting its
+-# fraction since our format cannot represent fractions.
++# transition for now and just use the latter value.
+
+ # "Countess Markievicz ... claimed that the [1916] abolition of Dublin Mean Time
+ # was among various actions undertaken by the 'English' government that
+@@ -500,7 +499,7 @@
+ # Use Europe/London for Jersey, Guernsey, and the Isle of Man.
+
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/London -0:01:15 - LMT 1847 Dec 1 0:00s
++Zone Europe/London -0:01:15 - LMT 1847 Dec 1
+ 0:00 GB-Eire %s 1968 Oct 27
+ 1:00 - BST 1971 Oct 31 2:00u
+ 0:00 GB-Eire %s 1996
+@@ -538,7 +537,8 @@
+ Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
+
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2
++ #STDOFF -0:25:21.1
++Zone Europe/Dublin -0:25:21 - LMT 1880 Aug 2
+ -0:25:21 - DMT 1916 May 21 2:00s
+ -0:25:21 1:00 IST 1916 Oct 1 2:00s
+ 0:00 GB-Eire %s 1921 Dec 6 # independence
+@@ -961,6 +961,8 @@
+ 1:00 C-Eur CE%sT 1944 Sep 3
+ 1:00 Belgium CE%sT 1977
+ 1:00 EU CE%sT
++Link Europe/Brussels Europe/Amsterdam
++Link Europe/Brussels Europe/Luxembourg
+
+ # Bosnia and Herzegovina
+ # See Europe/Belgrade.
+@@ -1023,62 +1025,12 @@
+ # End of rearguard section.
+ 1:00 Czech CE%sT 1979
+ 1:00 EU CE%sT
+-# Use Europe/Prague also for Slovakia.
++Link Europe/Prague Europe/Bratislava
+
+-# Denmark, Faroe Islands, and Greenland
+
+-# From Jesper Nørgaard Welen (2005-04-26):
+-# the law [introducing standard time] was in effect from 1894-01-01....
+-# The page https://www.retsinformation.dk/eli/lta/1893/83
+-# confirms this, and states that the law was put forth 1893-03-29.
+-#
+-# The EU [actually, EEC and Euratom] treaty with effect from 1973:
+-# https://www.retsinformation.dk/eli/lta/1972/21100
+-#
+-# This provoked a new law from 1974 to make possible summer time changes
+-# in subsequent decrees with the law
+-# https://www.retsinformation.dk/eli/lta/1974/223
+-#
+-# It seems however that no decree was set forward until 1980. I have
+-# not found any decree, but in another related law, the effecting DST
+-# changes are stated explicitly to be from 1980-04-06 at 02:00 to
+-# 1980-09-28 at 02:00. If this is true, this differs slightly from
+-# the EU rule in that DST runs to 02:00, not 03:00. We don't know
+-# when Denmark began using the EU rule correctly, but we have only
+-# confirmation of the 1980-time, so I presume it was correct in 1981:
+-# The law is about the management of the extra hour, concerning
+-# working hours reported and effect on obligatory-rest rules (which
+-# was suspended on that night):
+-# https://web.archive.org/web/20140104053304/https://www.retsinformation.dk/Forms/R0710.aspx?id=60267
+-
+-# From Jesper Nørgaard Welen (2005-06-11):
+-# The Herning Folkeblad (1980-09-26) reported that the night between
+-# Saturday and Sunday the clock is set back from three to two.
+-
+-# From Paul Eggert (2005-06-11):
+-# Hence the "02:00" of the 1980 law refers to standard time, not
+-# wall-clock time, and so the EU rules were in effect in 1980.
++# Denmark, Faroe Islands, and Greenland
++# For Denmark see Europe/Berlin.
+
+-# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+-Rule Denmark 1916 only - May 14 23:00 1:00 S
+-Rule Denmark 1916 only - Sep 30 23:00 0 -
+-Rule Denmark 1940 only - May 15 0:00 1:00 S
+-Rule Denmark 1945 only - Apr 2 2:00s 1:00 S
+-Rule Denmark 1945 only - Aug 15 2:00s 0 -
+-Rule Denmark 1946 only - May 1 2:00s 1:00 S
+-Rule Denmark 1946 only - Sep 1 2:00s 0 -
+-Rule Denmark 1947 only - May 4 2:00s 1:00 S
+-Rule Denmark 1947 only - Aug 10 2:00s 0 -
+-Rule Denmark 1948 only - May 9 2:00s 1:00 S
+-Rule Denmark 1948 only - Aug 8 2:00s 0 -
+-#
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Copenhagen 0:50:20 - LMT 1890
+- 0:50:20 - CMT 1894 Jan 1 # Copenhagen MT
+- 1:00 Denmark CE%sT 1942 Nov 2 2:00s
+- 1:00 C-Eur CE%sT 1945 Apr 2 2:00
+- 1:00 Denmark CE%sT 1980
+- 1:00 EU CE%sT
+ Zone Atlantic/Faroe -0:27:04 - LMT 1908 Jan 11 # Tórshavn
+ 0:00 - WET 1981
+ 0:00 EU WE%sT
+@@ -1298,10 +1250,10 @@
+ Rule Finland 1981 1982 - Mar lastSun 2:00 1:00 S
+ Rule Finland 1981 1982 - Sep lastSun 3:00 0 -
+
+-# Milne says Helsinki (Helsingfors) time was 1:39:49.2 (official document);
+-# round to nearest.
++# Milne says Helsinki (Helsingfors) time was 1:39:49.2 (official document).
+
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
++ #STDOFF 1:39:49.2
+ Zone Europe/Helsinki 1:39:49 - LMT 1878 May 31
+ 1:39:49 - HMT 1921 May # Helsinki Mean Time
+ 2:00 Finland EE%sT 1983
+@@ -1448,6 +1400,7 @@
+ 0:00 France WE%sT 1945 Sep 16 3:00
+ 1:00 France CE%sT 1977
+ 1:00 EU CE%sT
++Link Europe/Paris Europe/Monaco
+
+ # Germany
+
+@@ -1491,21 +1444,11 @@
+ 1:00 SovietZone CE%sT 1946
+ 1:00 Germany CE%sT 1980
+ 1:00 EU CE%sT
++Link Europe/Berlin Arctic/Longyearbyen
++Link Europe/Berlin Europe/Copenhagen
++Link Europe/Berlin Europe/Oslo
++Link Europe/Berlin Europe/Stockholm
+
+-# From Tobias Conradi (2011-09-12):
+-# Büsingen <http://www.buesingen.de>, surrounded by the Swiss canton
+-# Schaffhausen, did not start observing DST in 1980 as the rest of DE
+-# (West Germany at that time) and DD (East Germany at that time) did.
+-# DD merged into DE, the area is currently covered by code DE in ISO 3166-1,
+-# which in turn is covered by the zone Europe/Berlin.
+-#
+-# Source for the time in Büsingen 1980:
+-# http://www.srf.ch/player/video?id=c012c029-03b7-4c2b-9164-aa5902cd58d3
+-
+-# From Arthur David Olson (2012-03-03):
+-# Büsingen and Zurich have shared clocks since 1970.
+-
+-Link Europe/Zurich Europe/Busingen
+
+ # Georgia
+ # Please see the "asia" file for Asia/Tbilisi.
+@@ -1514,7 +1457,7 @@
+
+ # Gibraltar
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 0:00s
++Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2
+ 0:00 GB-Eire %s 1957 Apr 14 2:00
+ 1:00 - CET 1982
+ 1:00 EU CE%sT
+@@ -1625,62 +1568,7 @@
+ 1:00 EU CE%sT
+
+ # Iceland
+-#
+-# From Adam David (1993-11-06):
+-# The name of the timezone in Iceland for system / mail / news purposes is GMT.
+-#
+-# (1993-12-05):
+-# This material is paraphrased from the 1988 edition of the University of
+-# Iceland Almanak.
+-#
+-# From January 1st, 1908 the whole of Iceland was standardised at 1 hour
+-# behind GMT. Previously, local mean solar time was used in different parts
+-# of Iceland, the almanak had been based on Reykjavík mean solar time which
+-# was 1 hour and 28 minutes behind GMT.
+-#
+-# "first day of winter" referred to [below] means the first day of the 26 weeks
+-# of winter, according to the old icelandic calendar that dates back to the
+-# time the norsemen first settled Iceland. The first day of winter is always
+-# Saturday, but is not dependent on the Julian or Gregorian calendars.
+-#
+-# (1993-12-10):
+-# I have a reference from the Oxford Icelandic-English dictionary for the
+-# beginning of winter, which ties it to the ecclesiastical calendar (and thus
+-# to the julian/gregorian calendar) over the period in question.
+-# the winter begins on the Saturday next before St. Luke's day
+-# (old style), or on St. Luke's day, if a Saturday.
+-# St. Luke's day ought to be traceable from ecclesiastical sources. "old style"
+-# might be a reference to the Julian calendar as opposed to Gregorian, or it
+-# might mean something else (???).
+-#
+-# From Paul Eggert (2014-11-22):
+-# The information below is taken from the 1988 Almanak; see
+-# http://www.almanak.hi.is/klukkan.html
+-#
+-# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+-Rule Iceland 1917 1919 - Feb 19 23:00 1:00 -
+-Rule Iceland 1917 only - Oct 21 1:00 0 -
+-Rule Iceland 1918 1919 - Nov 16 1:00 0 -
+-Rule Iceland 1921 only - Mar 19 23:00 1:00 -
+-Rule Iceland 1921 only - Jun 23 1:00 0 -
+-Rule Iceland 1939 only - Apr 29 23:00 1:00 -
+-Rule Iceland 1939 only - Oct 29 2:00 0 -
+-Rule Iceland 1940 only - Feb 25 2:00 1:00 -
+-Rule Iceland 1940 1941 - Nov Sun>=2 1:00s 0 -
+-Rule Iceland 1941 1942 - Mar Sun>=2 1:00s 1:00 -
+-# 1943-1946 - first Sunday in March until first Sunday in winter
+-Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 -
+-Rule Iceland 1942 1948 - Oct Sun>=22 1:00s 0 -
+-# 1947-1967 - first Sunday in April until first Sunday in winter
+-Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 -
+-# 1949 and 1967 Oct transitions delayed by 1 week
+-Rule Iceland 1949 only - Oct 30 1:00s 0 -
+-Rule Iceland 1950 1966 - Oct Sun>=22 1:00s 0 -
+-Rule Iceland 1967 only - Oct 29 1:00s 0 -
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Atlantic/Reykjavik -1:28 - LMT 1908
+- -1:00 Iceland -01/+00 1968 Apr 7 1:00s
+- 0:00 - GMT
++# See Africa/Abidjan.
+
+ # Italy
+ #
+@@ -1796,19 +1684,19 @@
+ Rule Italy 1979 only - Sep 30 0:00s 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+ Zone Europe/Rome 0:49:56 - LMT 1866 Dec 12
+- 0:49:56 - RMT 1893 Oct 31 23:49:56 # Rome Mean
++ 0:49:56 - RMT 1893 Oct 31 23:00u # Rome Mean
+ 1:00 Italy CE%sT 1943 Sep 10
+ 1:00 C-Eur CE%sT 1944 Jun 4
+ 1:00 Italy CE%sT 1980
+ 1:00 EU CE%sT
++Link Europe/Rome Europe/Vatican
++Link Europe/Rome Europe/San_Marino
++
+
+ # Kosovo
+ # See Europe/Belgrade.
+
+
+-Link Europe/Rome Europe/Vatican
+-Link Europe/Rome Europe/San_Marino
+-
+ # Latvia
+
+ # From Liene Kanepe (1998-09-17):
+@@ -1892,16 +1780,7 @@
+ 2:00 EU EE%sT
+
+ # Liechtenstein
+-
+-# From Paul Eggert (2013-09-09):
+-# Shanks & Pottenger say Vaduz is like Zurich.
+-
+-# From Alois Treindl (2019-07-04):
+-# I was able to access the online archive of the Vaduz paper Vaterland ...
+-# I could confirm from the paper that Liechtenstein did in fact follow
+-# the same DST in 1941 and 1942 as Switzerland did.
+-
+-Link Europe/Zurich Europe/Vaduz
++# See Europe/Zurich.
+
+
+ # Lithuania
+@@ -1957,40 +1836,7 @@
+ 2:00 EU EE%sT
+
+ # Luxembourg
+-# Whitman disagrees with most of these dates in minor ways;
+-# go with Shanks & Pottenger.
+-# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+-Rule Lux 1916 only - May 14 23:00 1:00 S
+-Rule Lux 1916 only - Oct 1 1:00 0 -
+-Rule Lux 1917 only - Apr 28 23:00 1:00 S
+-Rule Lux 1917 only - Sep 17 1:00 0 -
+-Rule Lux 1918 only - Apr Mon>=15 2:00s 1:00 S
+-Rule Lux 1918 only - Sep Mon>=15 2:00s 0 -
+-Rule Lux 1919 only - Mar 1 23:00 1:00 S
+-Rule Lux 1919 only - Oct 5 3:00 0 -
+-Rule Lux 1920 only - Feb 14 23:00 1:00 S
+-Rule Lux 1920 only - Oct 24 2:00 0 -
+-Rule Lux 1921 only - Mar 14 23:00 1:00 S
+-Rule Lux 1921 only - Oct 26 2:00 0 -
+-Rule Lux 1922 only - Mar 25 23:00 1:00 S
+-Rule Lux 1922 only - Oct Sun>=2 1:00 0 -
+-Rule Lux 1923 only - Apr 21 23:00 1:00 S
+-Rule Lux 1923 only - Oct Sun>=2 2:00 0 -
+-Rule Lux 1924 only - Mar 29 23:00 1:00 S
+-Rule Lux 1924 1928 - Oct Sun>=2 1:00 0 -
+-Rule Lux 1925 only - Apr 5 23:00 1:00 S
+-Rule Lux 1926 only - Apr 17 23:00 1:00 S
+-Rule Lux 1927 only - Apr 9 23:00 1:00 S
+-Rule Lux 1928 only - Apr 14 23:00 1:00 S
+-Rule Lux 1929 only - Apr 20 23:00 1:00 S
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Luxembourg 0:24:36 - LMT 1904 Jun
+- 1:00 Lux CE%sT 1918 Nov 25
+- 0:00 Lux WE%sT 1929 Oct 6 2:00s
+- 0:00 Belgium WE%sT 1940 May 14 3:00
+- 1:00 C-Eur WE%sT 1944 Sep 18 3:00
+- 1:00 Belgium CE%sT 1977
+- 1:00 EU CE%sT
++# See Europe/Brussels.
+
+ # North Macedonia
+ # See Europe/Belgrade.
+@@ -2009,7 +1855,7 @@
+ Rule Malta 1975 1980 - Sep Sun>=15 2:00 0 -
+ Rule Malta 1980 only - Mar 31 2:00 1:00 S
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 0:00s # Valletta
++Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 # Valletta
+ 1:00 Italy CE%sT 1973 Mar 31
+ 1:00 Malta CE%sT 1981
+ 1:00 EU CE%sT
+@@ -2091,126 +1937,16 @@
+ 2:00 Moldova EE%sT
+
+ # Monaco
+-#
+-# From Michael Deckers (2020-06-12):
+-# In the "Journal de Monaco" of 1892-05-24, online at
+-# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/b1c67c12c5af11b41ea888fb048e4fe8.pdf
+-# we read: ...
+-# [In virtue of a Sovereign Ordinance of the May 13 of the current [year],
+-# legal time in the Principality will be set to, from the date of June 1,
+-# 1892 onwards, to the meridian of Paris, as in France.]
+-# In the "Journal de Monaco" of 1911-03-28, online at
+-# https://journaldemonaco.gouv.mc/var/jdm/storage/original/application/de74ffb7db53d4f599059fe8f0ed482a.pdf
+-# we read an ordinance of 1911-03-16: ...
+-# [Legal time in the Principality will be set, from the date of promulgation
+-# of the present ordinance, to legal time in France.... Consequently, legal
+-# time will be retarded by 9 minutes and 21 seconds.]
+-#
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Monaco 0:29:32 - LMT 1892 Jun 1
+- 0:09:21 - PMT 1911 Mar 29 # Paris Mean Time
+- 0:00 France WE%sT 1945 Sep 16 3:00
+- 1:00 France CE%sT 1977
+- 1:00 EU CE%sT
++# See Europe/Paris.
+
+ # Montenegro
+ # See Europe/Belgrade.
+
+ # Netherlands
+-
+-# Howse writes that the Netherlands' railways used GMT between 1892 and 1940,
+-# but for other purposes the Netherlands used Amsterdam mean time.
+-
+-# However, Robert H. van Gent writes (2001-04-01):
+-# Howse's statement is only correct up to 1909. From 1909-05-01 (00:00:00
+-# Amsterdam mean time) onwards, the whole of the Netherlands (including
+-# the Dutch railways) was required by law to observe Amsterdam mean time
+-# (19 minutes 32.13 seconds ahead of GMT). This had already been the
+-# common practice (except for the railways) for many decades but it was
+-# not until 1909 when the Dutch government finally defined this by law.
+-# On 1937-07-01 this was changed to 20 minutes (exactly) ahead of GMT and
+-# was generally known as Dutch Time ("Nederlandse Tijd").
+-#
+-# (2001-04-08):
+-# 1892-05-01 was the date when the Dutch railways were by law required to
+-# observe GMT while the remainder of the Netherlands adhered to the common
+-# practice of following Amsterdam mean time.
+-#
+-# (2001-04-09):
+-# In 1835 the authorities of the province of North Holland requested the
+-# municipal authorities of the towns and cities in the province to observe
+-# Amsterdam mean time but I do not know in how many cases this request was
+-# actually followed.
+-#
+-# From 1852 onwards the Dutch telegraph offices were by law required to
+-# observe Amsterdam mean time. As the time signals from the observatory of
+-# Leiden were also distributed by the telegraph system, I assume that most
+-# places linked up with the telegraph (and railway) system automatically
+-# adopted Amsterdam mean time.
+-#
+-# Although the early Dutch railway companies initially observed a variety
+-# of times, most of them had adopted Amsterdam mean time by 1858 but it
+-# was not until 1866 when they were all required by law to observe
+-# Amsterdam mean time.
+-
+-# The data entries before 1945 are taken from
+-# https://www.staff.science.uu.nl/~gent0113/wettijd/wettijd.htm
+-
+-# From Paul Eggert (2021-05-09):
+-# I invented the abbreviations AMT for Amsterdam Mean Time and NST for
+-# Netherlands Summer Time, used in the Netherlands from 1835 to 1937.
+-
+-# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+-Rule Neth 1916 only - May 1 0:00 1:00 NST # Netherlands Summer Time
+-Rule Neth 1916 only - Oct 1 0:00 0 AMT # Amsterdam Mean Time
+-Rule Neth 1917 only - Apr 16 2:00s 1:00 NST
+-Rule Neth 1917 only - Sep 17 2:00s 0 AMT
+-Rule Neth 1918 1921 - Apr Mon>=1 2:00s 1:00 NST
+-Rule Neth 1918 1921 - Sep lastMon 2:00s 0 AMT
+-Rule Neth 1922 only - Mar lastSun 2:00s 1:00 NST
+-Rule Neth 1922 1936 - Oct Sun>=2 2:00s 0 AMT
+-Rule Neth 1923 only - Jun Fri>=1 2:00s 1:00 NST
+-Rule Neth 1924 only - Mar lastSun 2:00s 1:00 NST
+-Rule Neth 1925 only - Jun Fri>=1 2:00s 1:00 NST
+-# From 1926 through 1939 DST began 05-15, except that it was delayed by a week
+-# in years when 05-15 fell in the Pentecost weekend.
+-Rule Neth 1926 1931 - May 15 2:00s 1:00 NST
+-Rule Neth 1932 only - May 22 2:00s 1:00 NST
+-Rule Neth 1933 1936 - May 15 2:00s 1:00 NST
+-Rule Neth 1937 only - May 22 2:00s 1:00 NST
+-Rule Neth 1937 only - Jul 1 0:00 1:00 S
+-Rule Neth 1937 1939 - Oct Sun>=2 2:00s 0 -
+-Rule Neth 1938 1939 - May 15 2:00s 1:00 S
+-Rule Neth 1945 only - Apr 2 2:00s 1:00 S
+-Rule Neth 1945 only - Sep 16 2:00s 0 -
+-#
+-# Amsterdam Mean Time was +00:19:32.13, but the .13 is omitted
+-# below because the current format requires STDOFF to be an integer.
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Amsterdam 0:19:32 - LMT 1835
+- 0:19:32 Neth %s 1937 Jul 1
+- 0:20 Neth +0020/+0120 1940 May 16 0:00
+- 1:00 C-Eur CE%sT 1945 Apr 2 2:00
+- 1:00 Neth CE%sT 1977
+- 1:00 EU CE%sT
++# See Europe/Brussels.
+
+ # Norway
+-# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &
+-# Pottenger.
+-# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+-Rule Norway 1916 only - May 22 1:00 1:00 S
+-Rule Norway 1916 only - Sep 30 0:00 0 -
+-Rule Norway 1945 only - Apr 2 2:00s 1:00 S
+-Rule Norway 1945 only - Oct 1 2:00s 0 -
+-Rule Norway 1959 1964 - Mar Sun>=15 2:00s 1:00 S
+-Rule Norway 1959 1965 - Sep Sun>=15 2:00s 0 -
+-Rule Norway 1965 only - Apr 25 2:00s 1:00 S
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Oslo 0:43:00 - LMT 1895 Jan 1
+- 1:00 Norway CE%sT 1940 Aug 10 23:00
+- 1:00 C-Eur CE%sT 1945 Apr 2 2:00
+- 1:00 Norway CE%sT 1980
+- 1:00 EU CE%sT
++# See Europe/Berlin.
+
+ # Svalbard & Jan Mayen
+
+@@ -2257,9 +1993,9 @@
+ # the German armed forces at the Svalbard weather station code-named
+ # Haudegen did not surrender to the Allies until September 1945.
+ #
+-# All these events predate our cutoff date of 1970, so use Europe/Oslo
++# All these events predate our cutoff date of 1970, so use Europe/Berlin
+ # for these regions.
+-Link Europe/Oslo Arctic/Longyearbyen
++
+
+ # Poland
+
+@@ -2313,7 +2049,6 @@
+ # According to a Portuguese decree (1911-05-26)
+ # https://dre.pt/application/dir/pdf1sdip/1911/05/12500/23132313.pdf
+ # Lisbon was at -0:36:44.68, but switched to GMT on 1912-01-01 at 00:00.
+-# Round the old offset to -0:36:45. This agrees with Willett....
+ #
+ # From Michael Deckers (2018-02-15):
+ # article 5 [of the 1911 decree; Deckers's translation] ...:
+@@ -2400,6 +2135,7 @@
+ Rule Port 1983 only - Mar lastSun 2:00s 1:00 S
+ #
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
++ #STDOFF -0:36:44.68
+ Zone Europe/Lisbon -0:36:45 - LMT 1884
+ -0:36:45 - LMT 1912 Jan 1 0:00u # Lisbon MT
+ 0:00 Port WE%sT 1966 Apr 3 2:00
+@@ -2408,9 +2144,13 @@
+ 0:00 W-Eur WE%sT 1992 Sep 27 1:00s
+ 1:00 EU CE%sT 1996 Mar 31 1:00u
+ 0:00 EU WE%sT
+-# This Zone can be simplified once we assume zic %z.
+ Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada
+ -1:54:32 - HMT 1912 Jan 1 2:00u # Horta MT
++# Vanguard section, for zic and other parsers that support %z.
++# -2:00 Port %z 1966 Apr 3 2:00
++# -1:00 Port %z 1983 Sep 25 1:00s
++# -1:00 W-Eur %z 1992 Sep 27 1:00s
++# Rearguard section, for parsers lacking %z; see ziguard.awk.
+ -2:00 Port -02/-01 1942 Apr 25 22:00s
+ -2:00 Port +00 1942 Aug 15 22:00s
+ -2:00 Port -02/-01 1943 Apr 17 22:00s
+@@ -2422,11 +2162,14 @@
+ -2:00 Port -02/-01 1966 Apr 3 2:00
+ -1:00 Port -01/+00 1983 Sep 25 1:00s
+ -1:00 W-Eur -01/+00 1992 Sep 27 1:00s
++# End of rearguard section.
+ 0:00 EU WE%sT 1993 Mar 28 1:00u
+ -1:00 EU -01/+00
+-# This Zone can be simplified once we assume zic %z.
+ Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal
+ -1:07:36 - FMT 1912 Jan 1 1:00u # Funchal MT
++# Vanguard section, for zic and other parsers that support %z.
++# -1:00 Port %z 1966 Apr 3 2:00
++# Rearguard section, for parsers lacking %z; see ziguard.awk.
+ -1:00 Port -01/+00 1942 Apr 25 22:00s
+ -1:00 Port +01 1942 Aug 15 22:00s
+ -1:00 Port -01/+00 1943 Apr 17 22:00s
+@@ -2436,6 +2179,7 @@
+ -1:00 Port -01/+00 1945 Apr 21 22:00s
+ -1:00 Port +01 1945 Aug 25 22:00s
+ -1:00 Port -01/+00 1966 Apr 3 2:00
++# End of rearguard section.
+ 0:00 Port WE%sT 1983 Sep 25 1:00s
+ 0:00 EU WE%sT
+
+@@ -2854,20 +2598,19 @@
+ 2:00 - EET 1992 Mar 20
+ # Central Crimea used Moscow time 1994/1997.
+ #
+-# From Paul Eggert (2006-03-22):
+-# The _Economist_ (1994-05-28, p 45) reports that central Crimea switched
+-# from Kiev to Moscow time sometime after the January 1994 elections.
++# From Paul Eggert (2022-07-21):
++# The _Economist_ (1994-05-28, p 45) reported that central Crimea switched
++# from Kyiv to Moscow time sometime after the January 1994 elections.
+ # Shanks (1999) says "date of change uncertain", but implies that it happened
+ # sometime between the 1994 DST switches. Shanks & Pottenger simply say
+ # 1994-09-25 03:00, but that can't be right. For now, guess it
+-# changed in May.
++# changed in May. This change evidently didn't last long; see below.
+ 2:00 C-Eur EE%sT 1994 May
+-# From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev.
+- 3:00 E-Eur MSK/MSD 1996 Mar 31 0:00s
++# From IATA SSIM (1994/1997), which also said that Kerch is still like Kyiv.
++ 3:00 C-Eur MSK/MSD 1996 Mar 31 0:00s
+ 3:00 1:00 MSD 1996 Oct 27 3:00s
+-# IATA SSIM (1997-09) says Crimea switched to EET/EEST.
++# IATA SSIM (1997-09) said Crimea switched to EET/EEST.
+ # Assume it happened in March by not changing the clocks.
+- 3:00 Russia MSK/MSD 1997
+ 3:00 - MSK 1997 Mar lastSun 1:00u
+ # From Alexander Krivenyshev (2014-03-17):
+ # time change at 2:00 (2am) on March 30, 2014
+@@ -3036,11 +2779,12 @@
+ # Note: Effective 2005-12-01, (59) Perm Oblast and (81) Komi-Permyak
+ # Autonomous Okrug merged to form (90, RU-PER) Perm Krai.
+
+-# Milne says Yekaterinburg was 4:02:32.9; round to nearest.
++# Milne says Yekaterinburg was 4:02:32.9.
+ # Byalokoz 1919 says its provincial time was based on Perm, at 3:45:05.
+ # Assume it switched on 1916-07-03, the time of the new standard.
+ # The 1919 and 1930 transitions are from Shanks.
+
++ #STDOFF 4:02:32.9
+ Zone Asia/Yekaterinburg 4:02:33 - LMT 1916 Jul 3
+ 3:45:05 - PMT 1919 Jul 15 4:00
+ 4:00 - +04 1930 Jun 21
+@@ -3352,8 +3096,8 @@
+ # 14-28 **** Tomponsky District
+ # 14-30 **** Ust-Maysky District
+
+-# From Arthur David Olson (2012-05-09):
+-# Tomponskij and Ust'-Majskij switched from Vladivostok time to Yakutsk time
++# From Arthur David Olson (2022-03-21):
++# Tomponsky and Ust-Maysky switched from Vladivostok time to Yakutsk time
+ # in 2011.
+
+ # From Paul Eggert (2012-11-25):
+@@ -3478,8 +3222,8 @@
+ # Asia/Ust-Nera covers parts of (14, RU-SA) Sakha (Yakutia) Republic:
+ # 14-22 **** Oymyakonsky District
+
+-# From Arthur David Olson (2012-05-09):
+-# Ojmyakonskij [and the Kuril Islands] switched from
++# From Arthur David Olson (2022-03-21):
++# Oymyakonsky and the Kuril Islands switched from
+ # Magadan time to Vladivostok time in 2011.
+ #
+ # From Tim Parenti (2014-07-06), per Alexander Krivenyshev (2014-07-02):
+@@ -3553,7 +3297,7 @@
+ Link Europe/Belgrade Europe/Zagreb # Croatia
+
+ # Slovakia
+-Link Europe/Prague Europe/Bratislava
++# See Europe/Prague.
+
+ # Slovenia
+ # See Europe/Belgrade.
+@@ -3642,7 +3386,7 @@
+ Rule SpainAfrica 1978 only - Jun 1 0:00 1:00 S
+ Rule SpainAfrica 1978 only - Aug 4 0:00 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Madrid -0:14:44 - LMT 1900 Dec 31 23:45:16
++Zone Europe/Madrid -0:14:44 - LMT 1901 Jan 1 0:00u
+ 0:00 Spain WE%sT 1940 Mar 16 23:00
+ 1:00 Spain CE%sT 1979
+ 1:00 EU CE%sT
+@@ -3664,61 +3408,7 @@
+ # Ignore this for now, as the Canaries are part of the EU.
+
+ # Sweden
+-
+-# From Ivan Nilsson (2001-04-13), superseding Shanks & Pottenger:
+-#
+-# The law "Svensk författningssamling 1878, no 14" about standard time in 1879:
+-# From the beginning of 1879 (that is 01-01 00:00) the time for all
+-# places in the country is "the mean solar time for the meridian at
+-# three degrees, or twelve minutes of time, to the west of the
+-# meridian of the Observatory of Stockholm". The law is dated 1878-05-31.
+-#
+-# The observatory at that time had the meridian 18° 03' 30"
+-# eastern longitude = 01:12:14 in time. Less 12 minutes gives the
+-# national standard time as 01:00:14 ahead of GMT....
+-#
+-# About the beginning of CET in Sweden. The lawtext ("Svensk
+-# författningssamling 1899, no 44") states, that "from the beginning
+-# of 1900... ... the same as the mean solar time for the meridian at
+-# the distance of one hour of time from the meridian of the English
+-# observatory at Greenwich, or at 12 minutes 14 seconds to the west
+-# from the meridian of the Observatory of Stockholm". The law is dated
+-# 1899-06-16. In short: At 1900-01-01 00:00:00 the new standard time
+-# in Sweden is 01:00:00 ahead of GMT.
+-#
+-# 1916: The lawtext ("Svensk författningssamling 1916, no 124") states
+-# that "1916-05-15 is considered to begin one hour earlier". It is
+-# pretty obvious that at 05-14 23:00 the clocks are set to 05-15 00:00....
+-# Further the law says, that "1916-09-30 is considered to end one hour later".
+-#
+-# The laws regulating [DST] are available on the site of the Swedish
+-# Parliament beginning with 1985 - the laws regulating 1980/1984 are
+-# not available on the site (to my knowledge they are only available
+-# in Swedish): <http://www.riksdagen.se/english/work/sfst.asp> (type
+-# "sommartid" without the quotes in the field "Fritext" and then click
+-# the Sök-button).
+-#
+-# (2001-05-13):
+-#
+-# I have now found a newspaper stating that at 1916-10-01 01:00
+-# summertime the church-clocks etc were set back one hour to show
+-# 1916-10-01 00:00 standard time. The article also reports that some
+-# people thought the switch to standard time would take place already
+-# at 1916-10-01 00:00 summer time, but they had to wait for another
+-# hour before the event took place.
+-#
+-# Source: The newspaper "Dagens Nyheter", 1916-10-01, page 7 upper left.
+-
+-# An extra-special abbreviation style is SET for Swedish Time (svensk
+-# normaltid) 1879-1899, 3° west of the Stockholm Observatory.
+-
+-# Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
+- 1:00:14 - SET 1900 Jan 1 # Swedish Time
+- 1:00 - CET 1916 May 14 23:00
+- 1:00 1:00 CEST 1916 Oct 1 1:00
+- 1:00 - CET 1980
+- 1:00 EU CE%sT
++# See Europe/Berlin.
+
+ # Switzerland
+ # From Howse:
+@@ -3812,6 +3502,19 @@
+ # 1853-07-16, though it probably occurred at some other date in Zurich, and
+ # legal civil time probably changed at still some other transition date.
+
++# From Tobias Conradi (2011-09-12):
++# Büsingen <http://www.buesingen.de>, surrounded by the Swiss canton
++# Schaffhausen, did not start observing DST in 1980 as the rest of DE
++# (West Germany at that time) and DD (East Germany at that time) did.
++# DD merged into DE, the area is currently covered by code DE in ISO 3166-1,
++# which in turn is covered by the zone Europe/Berlin.
++#
++# Source for the time in Büsingen 1980:
++# http://www.srf.ch/player/video?id=c012c029-03b7-4c2b-9164-aa5902cd58d3
++#
++# From Arthur David Olson (2012-03-03):
++# Büsingen and Zurich have shared clocks since 1970.
++
+ # Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S
+ Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 -
+@@ -3820,6 +3523,9 @@
+ 0:29:46 - BMT 1894 Jun # Bern Mean Time
+ 1:00 Swiss CE%sT 1981
+ 1:00 EU CE%sT
++Link Europe/Zurich Europe/Busingen
++Link Europe/Zurich Europe/Vaduz
++
+
+ # Turkey
+
+@@ -4028,7 +3734,7 @@
+
+ # Ukraine
+ #
+-# From Alois Triendl (2014-03-01):
++# From Alois Treindl (2014-03-01):
+ # REGULATION A N O V A on March 20, 1992 N 139 ... means that from
+ # 1992 on, Ukraine had DST with begin time at 02:00 am, on last Sunday
+ # in March, and end time 03:00 am, last Sunday in September....
+@@ -4088,7 +3794,7 @@
+ # The law documents themselves are at
+ # http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484
+
+-# From Vladimir in Moscow via Alois Treindl re Kiev time 1991/2 (2014-02-28):
++# From Vladimir in Moscow via Alois Treindl re Kyiv time 1991/2 (2014-02-28):
+ # First in Ukraine they changed Time zone from UTC+3 to UTC+2 with DST:
+ # 03 25 1990 02:00 -03.00 1 Time Zone 3 with DST
+ # 07 01 1990 02:00 -02.00 1 Time Zone 2 with DST
+@@ -4116,23 +3822,23 @@
+ # * Ukrainian Government's Resolution of 20.03.1992, No. 139.
+ # http://www.uazakon.com/documents/date_8u/pg_grcasa.htm
+
+-# From Paul Eggert (2018-10-03):
++# From Paul Eggert (2022-04-12):
+ # As is usual in tzdb, Ukrainian zones use the most common English spellings.
+-# For example, tzdb uses Europe/Kiev, as "Kiev" is the most common spelling in
+-# English for Ukraine's capital, even though it is certainly wrong as a
+-# transliteration of the Ukrainian "Київ". This is similar to tzdb's use of
+-# Europe/Prague, which is certainly wrong as a transliteration of the Czech
+-# "Praha". ("Kiev" came from old Slavic via Russian to English, and "Prague"
+-# came from old Slavic via French to English, so the two cases have something
+-# in common.) Admittedly English-language spelling of Ukrainian names is
+-# controversial, and some day "Kyiv" may become substantially more popular in
+-# English; in the meantime, stick with the traditional English "Kiev" as that
+-# means less disruption for our users.
++# In particular, tzdb's name Europe/Kyiv uses the most common spelling in
++# English for Ukraine's capital. Although tzdb's former name was Europe/Kiev,
++# "Kyiv" is now more common due to widespread reporting of the current conflict.
++# Conversely, tzdb continues to use the names Europe/Uzhgorod and
++# Europe/Zaporozhye; this is similar to tzdb's use of Europe/Prague, which is
++# certainly wrong as a transliteration of the Czech "Praha".
++# English-language spelling of Ukrainian names is in flux, and
++# some day "Uzhhorod" or "Zaporizhzhia" may become substantially more
++# common in English; in the meantime, do not change these
++# English spellings as that means less disruption for our users.
+
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-# This represents most of Ukraine. See above for the spelling of "Kiev".
+-Zone Europe/Kiev 2:02:04 - LMT 1880
+- 2:02:04 - KMT 1924 May 2 # Kiev Mean Time
++# This represents most of Ukraine. See above for the spelling of "Kyiv".
++Zone Europe/Kyiv 2:02:04 - LMT 1880
++ 2:02:04 - KMT 1924 May 2 # Kyiv Mean Time
+ 2:00 - EET 1930 Jun 21
+ 3:00 - MSK 1941 Sep 20
+ 1:00 C-Eur CE%sT 1943 Nov 6
+@@ -4155,7 +3861,7 @@
+ 2:00 C-Eur EE%sT 1996 May 13
+ 2:00 EU EE%sT
+ # Zaporozh'ye and eastern Lugansk oblasts observed DST 1990/1991.
+-# "Zaporizhia" is the transliteration of the Ukrainian name, but
++# "Zaporizhzhia" is the transliteration of the Ukrainian name, but
+ # "Zaporozh'ye" is more common in English. Use the common English
+ # spelling, except omit the apostrophe as it is not allowed in
+ # portable Posix file names.
+--- contrib/tzdata/leap-seconds.list.orig
++++ contrib/tzdata/leap-seconds.list
+@@ -204,10 +204,10 @@
+ # current -- the update time stamp, the data and the name of the file
+ # will not change.
+ #
+-# Updated through IERS Bulletin C63
+-# File expires on: 28 December 2022
++# Updated through IERS Bulletin C64
++# File expires on: 28 June 2023
+ #
+-#@ 3881174400
++#@ 3896899200
+ #
+ 2272060800 10 # 1 Jan 1972
+ 2287785600 11 # 1 Jul 1972
+@@ -252,4 +252,4 @@
+ # the hash line is also ignored in the
+ # computation.
+ #
+-#h 732b2044 5863a938 b7e43179 1339c710 ded63837
++#h 2c413af9 124e1031 f165174 ff527c6b 756ae00b
+--- contrib/tzdata/leapseconds.orig
++++ contrib/tzdata/leapseconds
+@@ -72,11 +72,11 @@
+ # Any additional leap seconds will come after this.
+ # This Expires line is commented out for now,
+ # so that pre-2020a zic implementations do not reject this file.
+-#Expires 2022 Dec 28 00:00:00
++#Expires 2023 Jun 28 00:00:00
+
+ # POSIX timestamps for the data in this file:
+ #updated 1467936000 (2016-07-08 00:00:00 UTC)
+-#expires 1672185600 (2022-12-28 00:00:00 UTC)
++#expires 1687910400 (2023-06-28 00:00:00 UTC)
+
+-# Updated through IERS Bulletin C63
+-# File expires on: 28 December 2022
++# Updated through IERS Bulletin C64
++# File expires on: 28 June 2023
+--- contrib/tzdata/northamerica.orig
++++ contrib/tzdata/northamerica
+@@ -344,8 +344,7 @@
+ # From Paul Eggert (2014-09-06):
+ # Monthly Notices of the Royal Astronomical Society 44, 4 (1884-02-08), 208
+ # says that New York City Hall time was 3 minutes 58.4 seconds fast of
+-# Eastern time (i.e., -4:56:01.6) just before the 1883 switch. Round to the
+-# nearest second.
++# Eastern time (i.e., -4:56:01.6) just before the 1883 switch.
+
+ # Rule NAME FROM TO - IN ON AT SAVE LETTER
+ Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
+@@ -354,7 +353,8 @@
+ Rule NYC 1921 1954 - Sep lastSun 2:00 0 S
+ Rule NYC 1955 1966 - Oct lastSun 2:00 0 S
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+-Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58
++ #STDOFF -4:56:01.6
++Zone America/New_York -4:56:02 - LMT 1883 Nov 18 17:00u
+ -5:00 US E%sT 1920
+ -5:00 NYC E%sT 1942
+ -5:00 US E%sT 1946
+@@ -2818,7 +2818,7 @@
+
+ # Barbados
+
+-# For 1899 Milne gives -3:58:29.2; round that.
++# For 1899 Milne gives -3:58:29.2.
+
+ # From P Chan (2020-12-09 and 2020-12-11):
+ # Standard time of GMT-4 was adopted in 1911.
+@@ -2862,6 +2862,7 @@
+ Rule Barb 1979 only - Sep 30 2:00 0 S
+ Rule Barb 1980 only - Sep 25 2:00 0 S
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
++ #STDOFF -3:58:29.2
+ Zone America/Barbados -3:58:29 - LMT 1911 Aug 28 # Bridgetown
+ -4:00 Barb A%sT 1944
+ -4:00 Barb AST/-0330 1945
+@@ -2922,10 +2923,10 @@
+
+ # Bermuda
+
+-# From Paul Eggert (2020-11-24):
++# From Paul Eggert (2022-07-27):
+ # For 1899 Milne gives -4:19:18.3 as the meridian of the clock tower,
+ # Bermuda dockyard, Ireland I. This agrees with standard offset given in the
+-# Daylight Saving Act, 1917 cited below. Round that to the nearest second.
++# Daylight Saving Act, 1917 cited below.
+ # It is not known when this time became standard for Bermuda; guess 1890.
+ # The transition to -04 was specified by:
+ # 1930: The Time Zone Act, 1929 (1929: No. 39) [1929-11-08]
+@@ -3020,6 +3021,7 @@
+ Rule Bermuda 1956 only - Oct lastSun 2:00 0 S
+
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
++ #STDOFF -4:19:18.3
+ Zone Atlantic/Bermuda -4:19:18 - LMT 1890 # Hamilton
+ -4:19:18 Bermuda BMT/BST 1930 Jan 1 2:00
+ -4:00 Bermuda A%sT 1974 Apr 28 2:00
+@@ -3034,7 +3036,7 @@
+
+ # Costa Rica
+
+-# Milne gives -5:36:13.3 as San José mean time; round to nearest.
++# Milne gives -5:36:13.3 as San José mean time.
+
+ # Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D
+@@ -3046,6 +3048,7 @@
+ Rule CR 1992 only - Mar 15 0:00 0 S
+ # There are too many San Josés elsewhere, so we'll use 'Costa Rica'.
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
++ #STDOFF -5:36:13.3
+ Zone America/Costa_Rica -5:36:13 - LMT 1890 # San José
+ -5:36:13 - SJMT 1921 Jan 15 # San José Mean Time
+ -6:00 CR C%sT
+@@ -3468,7 +3471,7 @@
+ # Jamaica
+ # Shanks & Pottenger give -5:07:12, but Milne records -5:07:10.41 from an
+ # unspecified official document, and says "This time is used throughout the
+-# island". Go with Milne. Round to the nearest second as required by zic.
++# island". Go with Milne.
+ #
+ # Shanks & Pottenger give April 28 for the 1974 spring-forward transition, but
+ # Lance Neita writes that Prime Minister Michael Manley decreed it January 5.
+@@ -3481,6 +3484,7 @@
+ # http://www.jamaicaobserver.com/columns/The-politician-in-all-of-us_17573647
+ #
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
++ #STDOFF -5:07:10.41
+ Zone America/Jamaica -5:07:10 - LMT 1890 # Kingston
+ -5:07:10 - KMT 1912 Feb # Kingston Mean Time
+ -5:00 - EST 1974
+@@ -3678,6 +3682,7 @@
+
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+ Zone America/Grand_Turk -4:44:32 - LMT 1890
++ #STDOFF -5:07:10.41
+ -5:07:10 - KMT 1912 Feb # Kingston Mean Time
+ -5:00 - EST 1979
+ -5:00 US E%sT 2015 Mar 8 2:00
+--- contrib/tzdata/southamerica.orig
++++ contrib/tzdata/southamerica
+@@ -400,6 +400,7 @@
+ #
+ # Buenos Aires (BA), Capital Federal (CF),
+ Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
++ #STDOFF -4:16:48.25
+ -4:16:48 - CMT 1920 May # Córdoba Mean Time
+ -4:00 - -04 1930 Dec
+ -4:00 Arg -04/-03 1969 Oct 5
+@@ -417,6 +418,7 @@
+ # - Santiago del Estero switched to -4:00 on 1991-04-01,
+ # then to -3:00 on 1991-04-26.
+ #
++ #STDOFF -4:16:48.25
+ Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - -04 1930 Dec
+@@ -429,6 +431,7 @@
+ #
+ # Salta (SA), La Pampa (LP), Neuquén (NQ), Rio Negro (RN)
+ Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31
++ #STDOFF -4:16:48.25
+ -4:16:48 - CMT 1920 May
+ -4:00 - -04 1930 Dec
+ -4:00 Arg -04/-03 1969 Oct 5
+@@ -441,6 +444,7 @@
+ #
+ # Tucumán (TM)
+ Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31
++ #STDOFF -4:16:48.25
+ -4:16:48 - CMT 1920 May
+ -4:00 - -04 1930 Dec
+ -4:00 Arg -04/-03 1969 Oct 5
+@@ -454,6 +458,7 @@
+ #
+ # La Rioja (LR)
+ Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31
++ #STDOFF -4:16:48.25
+ -4:16:48 - CMT 1920 May
+ -4:00 - -04 1930 Dec
+ -4:00 Arg -04/-03 1969 Oct 5
+@@ -468,6 +473,7 @@
+ #
+ # San Juan (SJ)
+ Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31
++ #STDOFF -4:16:48.25
+ -4:16:48 - CMT 1920 May
+ -4:00 - -04 1930 Dec
+ -4:00 Arg -04/-03 1969 Oct 5
+@@ -482,6 +488,7 @@
+ #
+ # Jujuy (JY)
+ Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31
++ #STDOFF -4:16:48.25
+ -4:16:48 - CMT 1920 May
+ -4:00 - -04 1930 Dec
+ -4:00 Arg -04/-03 1969 Oct 5
+@@ -497,6 +504,7 @@
+ #
+ # Catamarca (CT), Chubut (CH)
+ Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31
++ #STDOFF -4:16:48.25
+ -4:16:48 - CMT 1920 May
+ -4:00 - -04 1930 Dec
+ -4:00 Arg -04/-03 1969 Oct 5
+@@ -511,6 +519,7 @@
+ #
+ # Mendoza (MZ)
+ Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31
++ #STDOFF -4:16:48.25
+ -4:16:48 - CMT 1920 May
+ -4:00 - -04 1930 Dec
+ -4:00 Arg -04/-03 1969 Oct 5
+@@ -533,6 +542,7 @@
+ Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 -
+
+ Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31
++ #STDOFF -4:16:48.25
+ -4:16:48 - CMT 1920 May
+ -4:00 - -04 1930 Dec
+ -4:00 Arg -04/-03 1969 Oct 5
+@@ -551,6 +561,7 @@
+ #
+ # Santa Cruz (SC)
+ Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
++ #STDOFF -4:16:48.25
+ -4:16:48 - CMT 1920 May
+ -4:00 - -04 1930 Dec
+ -4:00 Arg -04/-03 1969 Oct 5
+@@ -563,6 +574,7 @@
+ #
+ # Tierra del Fuego, Antártida e Islas del Atlántico Sur (TF)
+ Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
++ #STDOFF -4:16:48.25
+ -4:16:48 - CMT 1920 May
+ -4:00 - -04 1930 Dec
+ -4:00 Arg -04/-03 1969 Oct 5
+@@ -645,7 +657,7 @@
+
+ # From Rodrigo Severo (2004-10-04):
+ # It's just the biannual change made necessary by the much hyped, supposedly
+-# modern Brazilian eletronic voting machines which, apparently, can't deal
++# modern Brazilian ... voting machines which, apparently, can't deal
+ # with a time change between the first and the second rounds of the elections.
+
+ # From Steffen Thorsen (2007-09-20):
+@@ -1141,7 +1153,7 @@
+ # this is known to work for DST transitions starting in 2008 and
+ # may well be true for earlier transitions.
+
+-# From Tim Parenti (2022-03-15):
++# From Tim Parenti (2022-07-06):
+ # For a brief period of roughly six weeks in 1946, DST was only observed on an
+ # emergency basis in specific regions of central Chile; namely, "the national
+ # territory between the provinces of Coquimbo and Concepción, inclusive".
+@@ -1159,7 +1171,14 @@
+ # Law Number 8,522, promulgated 1946-08-27, reunified Chilean clocks at their
+ # new "Summer Time" of -04, reckoned as that of "the meridian of the
+ # Astronomical Observatory of Lo Espejo, advanced by 42 minutes and 45
+-# seconds".
++# seconds". Although this law specified the new Summer Time to start on 1
++# September each year, a special "transitional article" started it a few days
++# early, as soon as the law took effect. As the law was to take force "from
++# the date of its publication in the 'Diario Oficial', which happened the
++# following day, presume the change took place in Santiago and its environs
++# from 24:00 -03 to 23:00 -04 on Wednesday 1946-08-28. Although this was a
++# no-op for wall clocks in the north and south of the country, put their formal
++# start to DST an hour later when they reached 24:00 -04.
+ # https://www.diariooficial.interior.gob.cl/versiones-anteriores/do-h/19460828/#page/1
+ # After a brief "Winter Time" stint at -05 beginning 1947-04-01, Law Number
+ # 8,777, promulgated 1947-05-17, established year-round -04 "from 23:00 on the
+@@ -1279,11 +1298,19 @@
+ # So we extend the new rules on Saturdays at 24:00 mainland time indefinitely.
+ # From Juan Correa (2019-02-04):
+ # http://www.diariooficial.interior.gob.cl/publicaciones/2018/11/23/42212/01/1498738.pdf
+-# From Paul Eggert (2019-09-01):
+-# The above says the Magallanes exception expires 2022-04-02 at 24:00,
+-# so in theory, they will revert to -04/-03 after that.
+-# For now, assume that they will not revert,
+-# since they have extended the expiration date once already.
++
++# From Juan Correa (2022-04-02):
++# I found there was a decree published last Thursday that will keep
++# Magallanes region to UTC -3 "indefinitely". The decree is available at
++# https://www.diariooficial.interior.gob.cl/publicaciones/2022/03/31/43217-B/01/2108910.pdf
++
++# From Juan Correa (2022-08-09):
++# the Internal Affairs Ministry (Ministerio del Interior) informed DST
++# for America/Santiago will start on midnight of September 11th;
++# and will end on April 1st, 2023. Magallanes region (America/Punta_Arenas)
++# will keep UTC -3 "indefinitely"... This is because on September 4th
++# we will have a voting whether to approve a new Constitution....
++# https://www.interior.gob.cl/noticias/2022/08/09/comunicado-el-proximo-sabado-10-de-septiembre-los-relojes-se-deben-adelantar-una-hora/
+
+ # Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule Chile 1927 1931 - Sep 1 0:00 1:00 -
+@@ -1321,7 +1348,9 @@
+ Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
+ Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
+ Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
+-Rule Chile 2019 max - Sep Sun>=2 4:00u 1:00 -
++Rule Chile 2019 2021 - Sep Sun>=2 4:00u 1:00 -
++Rule Chile 2022 only - Sep Sun>=9 4:00u 1:00 -
++Rule Chile 2023 max - Sep Sun>=2 4:00u 1:00 -
+ # IATA SSIM anomalies: (1992-02) says 1992-03-14;
+ # (1996-09) says 1998-03-08. Ignore these.
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
+@@ -1334,9 +1363,9 @@
+ -5:00 Chile -05/-04 1932 Sep 1
+ -4:00 - -04 1942 Jun 1
+ -5:00 - -05 1942 Aug 1
+- -4:00 - -04 1946 Jul 15
+- -4:00 1:00 -03 1946 Sep 1 # central Chile
+- -4:00 - -04 1947 Apr 1
++ -4:00 - -04 1946 Jul 14 24:00
++ -4:00 1:00 -03 1946 Aug 28 24:00 # central CL
++ -5:00 1:00 -04 1947 Mar 31 24:00
+ -5:00 - -05 1947 May 21 23:00
+ -4:00 Chile -04/-03
+ Zone America/Punta_Arenas -4:43:40 - LMT 1890
+@@ -1348,7 +1377,8 @@
+ -5:00 Chile -05/-04 1932 Sep 1
+ -4:00 - -04 1942 Jun 1
+ -5:00 - -05 1942 Aug 1
+- -4:00 - -04 1947 Apr 1
++ -4:00 - -04 1946 Aug 28 24:00
++ -5:00 1:00 -04 1947 Mar 31 24:00
+ -5:00 - -05 1947 May 21 23:00
+ -4:00 Chile -04/-03 2016 Dec 4
+ -3:00 - -03
+@@ -1382,13 +1412,14 @@
+
+ # Colombia
+
+-# Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest. He writes,
++# Milne gives 4:56:16.4 for Bogotá time in 1899. He writes,
+ # "A variation of fifteen minutes in the public clocks of Bogota is not rare."
+
+ # Rule NAME FROM TO - IN ON AT SAVE LETTER/S
+ Rule CO 1992 only - May 3 0:00 1:00 -
+ Rule CO 1993 only - Apr 4 0:00 0 -
+ # Zone NAME STDOFF RULES FORMAT [UNTIL]
++ #STDOFF -4:56:16.4
+ Zone America/Bogota -4:56:16 - LMT 1884 Mar 13
+ -4:56:16 - BMT 1914 Nov 23 # Bogotá Mean Time
+ -5:00 CO -05/-04
+--- contrib/tzdata/theory.html.orig
++++ contrib/tzdata/theory.html
+@@ -122,7 +122,7 @@
+ locate the user on a timezone map or prioritize names that are
+ geographically close. For an example selection interface, see the
+ <code>tzselect</code> program in the <code><abbr>tz</abbr></code> code.
+-The <a href="http://cldr.unicode.org">Unicode Common Locale Data
++The <a href="https://cldr.unicode.org">Unicode Common Locale Data
+ Repository</a> contains data that may be useful for other selection
+ interfaces; it maps timezone names like <code>Europe/Prague</code> to
+ locale-dependent strings like "Prague", "Praha", "Прага", and "布拉格".
+@@ -376,9 +376,11 @@
+ on platforms that do not support POSIX-style <code>TZ</code> strings;
+ no other source file other than <code>backward</code>
+ contains links to its zones.
+-One of <code>etcetera</code>'s names is <code>GMT</code>,
++One of <code>etcetera</code>'s names is <code>Etc/UTC</code>,
+ used by functions like <code>gmtime</code> to obtain leap
+ second information on platforms that support leap seconds.
++Another <code>etcetera</code> name, <code>GMT</code>,
++is used by older code releases.
+ </p>
+ </section>
+
+@@ -468,6 +470,7 @@
+ PST/PDT Philippine,
+ SAST South Africa,
+ SST Samoa,
++ UTC Universal,
+ WAT/WAST West Africa,
+ WET/WEST/WEMT Western European,
+ WIB Waktu Indonesia Barat,
+@@ -502,7 +505,7 @@
+ HMT Havana, Helsinki, Horta, Howrah;
+ IMT Irkutsk, Istanbul;
+ JMT Jerusalem;
+- KMT Kaunas, Kiev, Kingston;
++ KMT Kaunas, Kyiv, Kingston;
+ LMT Lima, Lisbon, local, Luanda;
+ MMT Macassar, Madras, Malé, Managua, Minsk, Monrovia, Montevideo,
+ Moratuwa, Moscow;
+@@ -568,7 +571,7 @@
+ locations while uninhabited.
+ The leading '<code>-</code>' is a flag that the <abbr>UT</abbr> offset is in
+ some sense undefined; this notation is derived
+- from <a href="https://tools.ietf.org/html/rfc3339">Internet
++ from <a href="https://datatracker.ietf.org/doc/html/rfc3339">Internet
+ <abbr title="Request For Comments">RFC</abbr> 3339</a>.
+ </li>
+ </ul>
+@@ -621,7 +624,7 @@
+ should be observed.
+ In her 2015 book
+ <cite><a
+- href="http://www.hup.harvard.edu/catalog.php?isbn=9780674286146">The
++ href="https://www.hup.harvard.edu/catalog.php?isbn=9780674286146">The
+ Global Transformation of Time, 1870&ndash;1950</a></cite>,
+ Vanessa Ogle writes
+ "Outside of Europe and North America there was no system of time
+@@ -720,8 +723,8 @@
+ than what the <code><abbr>tz</abbr></code> code can handle.
+ For example, from 1880 to 1916 clocks in Ireland observed Dublin Mean
+ Time (estimated to be <abbr>UT</abbr>
+- &minus;00:25:21.1), but the <code><abbr>tz</abbr></code>
+- code cannot represent the fractional second.
++ &minus;00:25:21.1); although the <code><abbr>tz</abbr></code>
++ source data can represent the .1 second, TZif files and the code cannot.
+ In practice these old specifications were rarely if ever
+ implemented to subsecond precision.
+ </li>
+@@ -807,7 +810,7 @@
+ See: Stephenson FR, Morrison LV, Hohenkerk CY.
+ <a href="https://dx.doi.org/10.1098/rspa.2016.0404">Measurement of
+ the Earth's rotation: 720 BC to AD 2015</a>.
+- <cite>Proc Royal Soc A</cite>. 2016 Dec 7;472:20160404.
++ <cite>Proc Royal Soc A</cite>. 2016;472:20160404.
+ Also see: Espenak F. <a
+ href="https://eclipse.gsfc.nasa.gov/SEhelp/uncertainty2004.html">Uncertainty
+ in Delta T (ΔT)</a>.
+@@ -1033,7 +1036,7 @@
+ and numeric data as described <a href="#POSIX">above</a>.
+ The file's format is <dfn><abbr>TZif</abbr></dfn>,
+ a timezone information format that contains binary data; see
+- <a href="https://tools.ietf.org/html/8536">Internet
++ <a href="https://datatracker.ietf.org/doc/html/8536">Internet
+ <abbr>RFC</abbr> 8536</a>.
+ The daylight saving time rules to be used for a
+ particular timezone are encoded in the
+@@ -1061,11 +1064,12 @@
+ </li>
+ <li>
+ The code supports platforms with a <abbr>UT</abbr> offset member
+- in <code>struct tm</code>, e.g., <code>tm_gmtoff</code>.
+- </li>
+- <li>
+- The code supports platforms with a time zone abbreviation member in
+- <code>struct tm</code>, e.g., <code>tm_zone</code>.
++ in <code>struct tm</code>, e.g., <code>tm_gmtoff</code>,
++ or with a time zone abbreviation member in
++ <code>struct tm</code>, e.g., <code>tm_zone</code>. As noted
++ in <a href="https://austingroupbugs.net/view.php?id=1533">Austin
++ Group defect 1533</a>, a future version of POSIX is planned to
++ require <code>tm_gmtoff</code> and <code>tm_zone</code>.
+ </li>
+ <li>
+ Functions <code>tzalloc</code>, <code>tzfree</code>,
+@@ -1126,7 +1130,8 @@
+ <abbr>API</abbr>s.
+ Although it can still be used in arguments to
+ <code>mktime</code> to disambiguate timestamps near
+- a <abbr>DST</abbr> transition when the clock jumps back, this
++ a <abbr>DST</abbr> transition when the clock jumps back on
++ platforms lacking <code>tm_gmtoff</code>, this
+ disambiguation does not work when standard time itself jumps back,
+ which can occur when a location changes to a time zone with a
+ lesser <abbr>UT</abbr> offset.
+@@ -1274,7 +1279,7 @@
+ <a href="tz-link.html#precision">Precision timekeeping</a>,
+ and this package by default installs a <samp>leapseconds</samp> file
+ commonly used by
+-<a href="http://www.ntp.org"><abbr title="Network Time Protocol">NTP</abbr></a>
++<a href="https://www.ntp.org"><abbr title="Network Time Protocol">NTP</abbr></a>
+ software that adjusts the kernel clock.
+ However, kernel-clock twiddling approximates UTC only roughly,
+ and systems needing more-precise UTC can use this package's leap
+@@ -1295,7 +1300,8 @@
+ if no time zone correction is desired,
+ calls to <code>gmtime</code>-like functions
+ also need to consult a <abbr>TZif</abbr> file,
+-conventionally named <samp><abbr>GMT</abbr></samp>,
++conventionally named <samp><abbr>Etc/UTC</abbr></samp>
++(<samp><abbr>GMT</abbr></samp> in previous versions),
+ to see whether leap second corrections are needed.
+ To convert an application's <code>time_t</code> timestamps to or from
+ POSIX <code>time_t</code> timestamps (for use when, say,
+--- contrib/tzdata/version.orig
++++ contrib/tzdata/version
+@@ -1 +1 @@
+-2022a
++2022c
+--- contrib/tzdata/ziguard.awk.orig
++++ contrib/tzdata/ziguard.awk
+@@ -9,7 +9,11 @@
+ # it does not do these nonessential tasks now.
+ #
+ # Although main and vanguard forms are currently equivalent,
+-# this need not always be the case.
++# this need not always be the case. When the two forms differ,
++# this script can convert either from main to vanguard form (needed then),
++# or from vanguard to main form (this conversion would be needed later,
++# after main became rearguard and vanguard became main).
++# There is no need to convert rearguard to other forms.
+ #
+ # When converting to vanguard form, the output can use negative SAVE
+ # values.
+@@ -19,26 +23,82 @@
+ # of the input data as best it can within the constraints of the
+ # rearguard format.
+
++# Given a FIELD like "-0:30", return a minute count like -30.
++function get_minutes(field, \
++ sign, hours, minutes)
++{
++ sign = field ~ /^-/ ? -1 : 1
++ hours = +field
++ if (field ~ /:/) {
++ minutes = field
++ sub(/[^:]*:/, "", minutes)
++ }
++ return 60 * hours + sign * minutes
++}
++
++# Given an OFFSET, which is a minute count like 300 or 330,
++# return a %z-style abbreviation like "+05" or "+0530".
++function offset_abbr(offset, \
++ hours, minutes, sign)
++{
++ hours = int(offset / 60)
++ minutes = offset % 60
++ if (minutes) {
++ return sprintf("%+.4d", hours * 100 + minutes);
++ } else {
++ return sprintf("%+.2d", hours)
++ }
++}
++
++# Round TIMESTAMP (a +-hh:mm:ss.dddd string) to the nearest second.
++function round_to_second(timestamp, \
++ hh, mm, ss, seconds, dot_dddd, subseconds)
++{
++ dot_dddd = timestamp
++ if (!sub(/^[+-]?[0-9]+:[0-9]+:[0-9]+\./, ".", dot_dddd))
++ return timestamp
++ hh = mm = ss = timestamp
++ sub(/^[-+]?[0-9]+:[0-9]+:/, "", ss)
++ sub(/^[-+]?[0-9]+:/, "", mm)
++ sub(/^[-+]?/, "", hh)
++ seconds = 3600 * hh + 60 * mm + ss
++ subseconds = +dot_dddd
++ seconds += 0.5 < subseconds || ((subseconds == 0.5) && (seconds % 2));
++ return sprintf("%s%d:%.2d:%.2d", timestamp ~ /^-/ ? "-" : "", \
++ seconds / 3600, seconds / 60 % 60, seconds % 60)
++}
++
+ BEGIN {
+ dataform_type["vanguard"] = 1
+ dataform_type["main"] = 1
+ dataform_type["rearguard"] = 1
+
++ if (PACKRATLIST) {
++ while (getline <PACKRATLIST) {
++ if ($0 ~ /^#/) continue
++ packratlist[$3] = 1
++ }
++ }
++
+ # The command line should set DATAFORM.
+ if (!dataform_type[DATAFORM]) exit 1
+- vanguard = DATAFORM == "vanguard"
++}
++
++$1 == "#PACKRATLIST" && $2 == PACKRATLIST {
++ sub(/^#PACKRATLIST[\t ]+[^\t ]+[\t ]+/, "")
+ }
+
+ /^Zone/ { zone = $2 }
+
+ DATAFORM != "main" {
+- in_comment = /^#/
++ in_comment = $0 ~ /^#/
+ uncomment = comment_out = 0
+
+ # If this line should differ due to Czechoslovakia using negative SAVE values,
+ # uncomment the desired version and comment out the undesired one.
+- if (zone == "Europe/Prague" && /^#?[\t ]+[01]:00[\t ]/ && /1947 Feb 23/) {
+- if (($(in_comment + 2) != "-") == vanguard) {
++ if (zone == "Europe/Prague" && $0 ~ /^#?[\t ]+[01]:00[\t ]/ \
++ && $0 ~ /1947 Feb 23/) {
++ if (($(in_comment + 2) != "-") == (DATAFORM != "rearguard")) {
+ uncomment = in_comment
+ } else {
+ comment_out = !in_comment
+@@ -47,14 +107,14 @@
+
+ # If this line should differ due to Ireland using negative SAVE values,
+ # uncomment the desired version and comment out the undesired one.
+- Rule_Eire = /^#?Rule[\t ]+Eire[\t ]/
++ Rule_Eire = $0 ~ /^#?Rule[\t ]+Eire[\t ]/
+ Zone_Dublin_post_1968 \
+- = (zone == "Europe/Dublin" && /^#?[\t ]+[01]:00[\t ]/ \
++ = (zone == "Europe/Dublin" && $0 ~ /^#?[\t ]+[01]:00[\t ]/ \
+ && (!$(in_comment + 4) || 1968 < $(in_comment + 4)))
+ if (Rule_Eire || Zone_Dublin_post_1968) {
+ if ((Rule_Eire \
+ || (Zone_Dublin_post_1968 && $(in_comment + 3) == "IST/GMT")) \
+- == vanguard) {
++ == (DATAFORM != "rearguard")) {
+ uncomment = in_comment
+ } else {
+ comment_out = !in_comment
+@@ -63,19 +123,28 @@
+
+ # If this line should differ due to Namibia using negative SAVE values,
+ # uncomment the desired version and comment out the undesired one.
+- Rule_Namibia = /^#?Rule[\t ]+Namibia[\t ]/
++ Rule_Namibia = $0 ~ /^#?Rule[\t ]+Namibia[\t ]/
+ Zone_using_Namibia_rule \
+- = (zone == "Africa/Windhoek" && /^#?[\t ]+[12]:00[\t ]/ \
++ = (zone == "Africa/Windhoek" && $0 ~ /^#?[\t ]+[12]:00[\t ]/ \
+ && ($(in_comment + 2) == "Namibia" \
+ || ($(in_comment + 2) == "-" && $(in_comment + 3) == "CAT" \
+ && ((1994 <= $(in_comment + 4) && $(in_comment + 4) <= 2017) \
+ || in_comment + 3 == NF))))
+ if (Rule_Namibia || Zone_using_Namibia_rule) {
+- if ((Rule_Namibia \
+- ? ($(in_comment + 9) ~ /^-/ \
+- || ($(in_comment + 9) == 0 && $(in_comment + 10) == "CAT")) \
+- : $(in_comment + 1) == "2:00" && $(in_comment + 2) == "Namibia") \
+- == vanguard) {
++ if ((Rule_Namibia \
++ ? ($9 ~ /^-/ || ($9 == 0 && $10 == "CAT")) \
++ : $(in_comment + 1) == "2:00" && $(in_comment + 2) == "Namibia") \
++ == (DATAFORM != "rearguard")) {
++ uncomment = in_comment
++ } else {
++ comment_out = !in_comment
++ }
++ }
++
++ # If this line should differ due to Portugal benefiting from %z if supported,
++ # uncomment the desired version and comment out the undesired one.
++ if ($0 ~ /^#?[\t ]+-[12]:00[\t ]+Port[\t ]+[%+-]/) {
++ if (($0 ~ /%z/) == (DATAFORM == "vanguard")) {
+ uncomment = in_comment
+ } else {
+ comment_out = !in_comment
+@@ -89,34 +158,142 @@
+ sub(/^/, "#")
+ }
+
+- # In rearguard format, change the Japan rule line with "Sat>=8 25:00"
+- # to "Sun>=9 1:00", to cater to zic before 2007 and to older Java.
+- if (!vanguard && $1 == "Rule" && $7 == "Sat>=8" && $8 == "25:00") {
+- sub(/Sat>=8/, "Sun>=9")
+- sub(/25:00/, " 1:00")
++ # Prefer %z in vanguard form, explicit abbreviations otherwise.
++ if (DATAFORM == "vanguard") {
++ sub(/^(Zone[\t ]+[^\t ]+)?[\t ]+[^\t ]+[\t ]+[^\t ]+[\t ]+[-+][^\t ]+/, \
++ "&CHANGE-TO-%z")
++ sub(/-00CHANGE-TO-%z/, "-00")
++ sub(/[-+][^\t ]+CHANGE-TO-/, "")
++ } else {
++ if ($0 ~ /^[^#]*%z/) {
++ stdoff_column = 2 * ($0 ~ /^Zone/) + 1
++ rules_column = stdoff_column + 1
++ stdoff = get_minutes($stdoff_column)
++ rules = $rules_column
++ stdabbr = offset_abbr(stdoff)
++ if (rules == "-") {
++ abbr = stdabbr
++ } else {
++ dstabbr_only = rules ~ /^[+0-9-]/
++ if (dstabbr_only) {
++ dstoff = get_minutes(rules)
++ } else {
++ # The DST offset is normally an hour, but there are special cases.
++ if (rules == "Morocco" && NF == 3) {
++ dstoff = -60
++ } else if (rules == "NBorneo") {
++ dstoff = 20
++ } else if (((rules == "Cook" || rules == "LH") && NF == 3) \
++ || (rules == "Uruguay" \
++ && $0 ~ /[\t ](1942 Dec 14|1960|1970|1974 Dec 22)$/)) {
++ dstoff = 30
++ } else if (rules == "Uruguay" && $0 ~ /[\t ]1974 Mar 10$/) {
++ dstoff = 90
++ } else {
++ dstoff = 60
++ }
++ }
++ dstabbr = offset_abbr(stdoff + dstoff)
++ if (dstabbr_only) {
++ abbr = dstabbr
++ } else {
++ abbr = stdabbr "/" dstabbr
++ }
++ }
++ sub(/%z/, abbr)
++ }
+ }
+
+- # In rearguard format, change the Morocco lines with negative SAVE values
+- # to use positive SAVE values.
+- if (!vanguard && $1 == "Rule" && $2 == "Morocco" && $4 == 2018 \
+- && $6 == "Oct") {
+- sub(/\t2018\t/, "\t2017\t")
++ # Normally, prefer whole seconds. However, prefer subseconds
++ # if generating vanguard form and the otherwise-undocumented
++ # VANGUARD_SUBSECONDS environment variable is set.
++ # This relies on #STDOFF comment lines in the data.
++ # It is for hypothetical clients that support UT offsets that are
++ # not integer multiples of one second (e.g., Europe/Lisbon, 1884 to 1912).
++ # No known clients need this currently, and this experimental
++ # feature may be changed or withdrawn in future releases.
++ if ($1 == "#STDOFF") {
++ stdoff = $2
++ rounded_stdoff = round_to_second(stdoff)
++ if (DATAFORM == "vanguard" && ENVIRON["VANGUARD_SUBSECONDS"]) {
++ stdoff_subst[0] = rounded_stdoff
++ stdoff_subst[1] = stdoff
++ } else {
++ stdoff_subst[0] = stdoff
++ stdoff_subst[1] = rounded_stdoff
++ }
++ } else if (stdoff_subst[0]) {
++ stdoff_column = 2 * ($0 ~ /^Zone/) + 1
++ stdoff_column_val = $stdoff_column
++ if (stdoff_column_val == stdoff_subst[0]) {
++ sub(stdoff_subst[0], stdoff_subst[1])
++ } else if (stdoff_column_val != stdoff_subst[1]) {
++ stdoff_subst[0] = 0
++ }
+ }
+- if (!vanguard && $1 == "Rule" && $2 == "Morocco" && 2019 <= $3) {
+- if ($9 == "0") {
+- last_std_date = $3 " " $6 " " $7 " " $8
+- sub(/\t0\t/, "\t1:00\t")
++
++ # In rearguard form, change the Japan rule line with "Sat>=8 25:00"
++ # to "Sun>=9 1:00", to cater to zic before 2007 and to older Java.
++ if ($0 ~ /^Rule/ && $2 == "Japan") {
++ if (DATAFORM == "rearguard") {
++ if ($7 == "Sat>=8" && $8 == "25:00") {
++ sub(/Sat>=8/, "Sun>=9")
++ sub(/25:00/, " 1:00")
++ }
+ } else {
+- sub(/\t-1:00\t/, "\t0\t")
++ if ($7 == "Sun>=9" && $8 == "1:00") {
++ sub(/Sun>=9/, "Sat>=8")
++ sub(/ 1:00/, "25:00")
++ }
+ }
+ }
+- if (!vanguard && $1 == "1:00" && $2 == "Morocco" && $3 == "+01/+00") {
+- # This introduces a transition from 01:59:59 +00 to 03:00:00 +01
+- # with both times being standard (i.e., a change to standard UT offset).
+- # This is rearguard's way to approximate the actual prediction,
+- # which is that of an ordinary transition from DST to standard time.
+- sub(/1:00\tMorocco\t\+01\/\+00$/,
+- "0:00\tMorocco\t+00/+01\t" last_std_date "\n\t\t\t 1:00\t-\t+01")
++
++ # In rearguard form, change the Morocco lines with negative SAVE values
++ # to use positive SAVE values.
++ if ($2 == "Morocco") {
++ if ($0 ~ /^Rule/) {
++ if ($4 ~ /^201[78]$/ && $6 == "Oct") {
++ if (DATAFORM == "rearguard") {
++ sub(/\t2018\t/, "\t2017\t")
++ } else {
++ sub(/\t2017\t/, "\t2018\t")
++ }
++ }
++
++ if (2019 <= $3) {
++ if ($8 == "2:00") {
++ if (DATAFORM == "rearguard") {
++ sub(/\t0\t/, "\t1:00\t")
++ } else {
++ sub(/\t1:00\t/, "\t0\t")
++ }
++ } else {
++ if (DATAFORM == "rearguard") {
++ sub(/\t-1:00\t/, "\t0\t")
++ } else {
++ sub(/\t0\t/, "\t-1:00\t")
++ }
++ }
++ }
++ }
++ if ($1 ~ /^[+0-9-]/ && NF == 3) {
++ if (DATAFORM == "rearguard") {
++ sub(/1:00\tMorocco/, "0:00\tMorocco")
++ sub(/\t\+01\/\+00$/, "\t+00/+01")
++ } else {
++ sub(/0:00\tMorocco/, "1:00\tMorocco")
++ sub(/\t\+00\/+01$/, "\t+01/+00")
++ }
++ }
++ }
++}
++
++/^Zone/ {
++ packrat_ignored = FILENAME == PACKRATDATA && PACKRATLIST && !packratlist[$2];
++}
++{
++ if (packrat_ignored && $0 !~ /^Rule/) {
++ sub(/^/, "#")
+ }
+ }
+
+--- contrib/tzdata/zishrink.awk.orig
++++ contrib/tzdata/zishrink.awk
+@@ -23,7 +23,7 @@
+ function gen_rule_name(name, \
+ n)
+ {
+- # Use a simple memonic: the first two letters.
++ # Use a simple mnemonic: the first two letters.
+ n = substr(name, 1, 2)
+ record_hash(n, name)
+ # printf "# %s = %s\n", n, name
+@@ -150,10 +150,19 @@
+ }
+ }
+
++function make_line(n, field, \
++ f, r)
++{
++ r = field[1]
++ for (f = 2; f <= n; f++)
++ r = r " " field[f]
++ return r
++}
++
+ # Process the input line LINE and save it for later output.
+
+ function process_input_line(line, \
+- field, end, i, n, startdef, \
++ f, field, end, i, n, r, startdef, \
+ linkline, ruleline, zoneline)
+ {
+ # Remove comments, normalize spaces, and append a space to each line.
+@@ -218,12 +227,11 @@
+
+ n = split(line, field)
+
+- # Abbreviate rule names.
+- i = zoneline ? 4 : linkline ? 0 : 2
+- if (i && field[i] ~ /^[^-+0-9]/) {
+- if (!rule[field[i]])
+- rule[field[i]] = gen_rule_name(field[i])
+- field[i] = rule[field[i]]
++ # Record which rule names are used, and generate their abbreviations.
++ f = zoneline ? 4 : linkline || ruleline ? 0 : 2
++ r = field[f]
++ if (r ~ /^[^-+0-9]/) {
++ rule_used[r] = 1
+ }
+
+ # If this zone supersedes an earlier one, delete the earlier one
+@@ -246,10 +254,38 @@
+ zonedef[zonename] = nout + 1
+
+ # Save the line for later output.
+- line = field[1]
+- for (i = 2; i <= n; i++)
+- line = line " " field[i]
+- output_line[nout++] = line
++ output_line[nout++] = make_line(n, field)
++}
++
++function omit_unused_rules( \
++ i, field)
++{
++ for (i = 0; i < nout; i++) {
++ split(output_line[i], field)
++ if (field[1] == "R" && !rule_used[field[2]]) {
++ output_line[i] = ""
++ }
++ }
++}
++
++function abbreviate_rule_names( \
++ abbr, f, field, i, n, r)
++{
++ for (i = 0; i < nout; i++) {
++ n = split(output_line[i], field)
++ if (n) {
++ f = field[1] == "Z" ? 4 : field[1] == "L" ? 0 : 2
++ r = field[f]
++ if (r ~ /^[^-+0-9]/) {
++ abbr = rule[r]
++ if (!abbr) {
++ rule[r] = abbr = gen_rule_name(r)
++ }
++ field[f] = abbr
++ output_line[i] = make_line(n, field)
++ }
++ }
++ }
+ }
+
+ function output_saved_lines( \
+@@ -314,5 +350,7 @@
+ }
+
+ END {
++ omit_unused_rules()
++ abbreviate_rule_names()
+ output_saved_lines()
+ }
+--- contrib/tzdata/zone.tab.orig
++++ contrib/tzdata/zone.tab
+@@ -130,7 +130,7 @@
+ CA +6227-11421 America/Yellowknife Mountain - NT (central)
+ CA +682059-1334300 America/Inuvik Mountain - NT (west)
+ CA +4906-11631 America/Creston MST - BC (Creston)
+-CA +5946-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John)
++CA +5546-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John)
+ CA +5848-12242 America/Fort_Nelson MST - BC (Ft Nelson)
+ CA +6043-13503 America/Whitehorse MST - Yukon (east)
+ CA +6404-13925 America/Dawson MST - Yukon (west)
+@@ -400,7 +400,7 @@
+ TV -0831+17913 Pacific/Funafuti
+ TW +2503+12130 Asia/Taipei
+ TZ -0648+03917 Africa/Dar_es_Salaam
+-UA +5026+03031 Europe/Kiev Ukraine (most areas)
++UA +5026+03031 Europe/Kyiv Ukraine (most areas)
+ UA +4837+02218 Europe/Uzhgorod Transcarpathia
+ UA +4750+03510 Europe/Zaporozhye Zaporozhye and east Lugansk
+ UG +0019+03225 Africa/Kampala
+--- contrib/tzdata/zone1970.tab.orig
++++ contrib/tzdata/zone1970.tab
+@@ -35,7 +35,7 @@
+ #country-
+ #codes coordinates TZ comments
+ AD +4230+00131 Europe/Andorra
+-AE,OM +2518+05518 Asia/Dubai
++AE,OM,RE,SC,TF +2518+05518 Asia/Dubai UAE, Oman, Réunion, Seychelles, Crozet, Scattered Is
+ AF +3431+06912 Asia/Kabul
+ AL +4120+01950 Europe/Tirane
+ AM +4011+04430 Asia/Yerevan
+@@ -45,7 +45,6 @@
+ AQ -6448-06406 Antarctica/Palmer Palmer
+ AQ -6734-06808 Antarctica/Rothera Rothera
+ AQ -720041+0023206 Antarctica/Troll Troll
+-AQ -7824+10654 Antarctica/Vostok Vostok
+ AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF)
+ AR -3124-06411 America/Argentina/Cordoba Argentina (most areas: CB, CC, CN, ER, FM, MN, SE, SF)
+ AR -2447-06525 America/Argentina/Salta Salta (SA, LP, NQ, RN)
+@@ -75,10 +74,9 @@
+ AZ +4023+04951 Asia/Baku
+ BB +1306-05937 America/Barbados
+ BD +2343+09025 Asia/Dhaka
+-BE +5050+00420 Europe/Brussels
++BE,LU,NL +5050+00420 Europe/Brussels
+ BG +4241+02319 Europe/Sofia
+ BM +3217-06446 Atlantic/Bermuda
+-BN +0456+11455 Asia/Brunei
+ BO -1630-06809 America/La_Paz
+ BR -0351-03225 America/Noronha Atlantic islands
+ BR -0127-04829 America/Belem Pará (east); Amapá
+@@ -119,30 +117,27 @@
+ CA +690650-1050310 America/Cambridge_Bay Mountain - NU (west)
+ CA +6227-11421 America/Yellowknife Mountain - NT (central)
+ CA +682059-1334300 America/Inuvik Mountain - NT (west)
+-CA +5946-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John)
++CA +5546-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John)
+ CA +5848-12242 America/Fort_Nelson MST - BC (Ft Nelson)
+ CA +6043-13503 America/Whitehorse MST - Yukon (east)
+ CA +6404-13925 America/Dawson MST - Yukon (west)
+ CA +4916-12307 America/Vancouver Pacific - BC (most areas)
+-CC -1210+09655 Indian/Cocos
+ CH,DE,LI +4723+00832 Europe/Zurich Swiss time
+-CI,BF,GH,GM,GN,ML,MR,SH,SL,SN,TG +0519-00402 Africa/Abidjan
++CI,BF,GH,GM,GN,IS,ML,MR,SH,SL,SN,TG +0519-00402 Africa/Abidjan
+ CK -2114-15946 Pacific/Rarotonga
+ CL -3327-07040 America/Santiago Chile (most areas)
+ CL -5309-07055 America/Punta_Arenas Region of Magallanes
+ CL -2709-10926 Pacific/Easter Easter Island
+ CN +3114+12128 Asia/Shanghai Beijing Time
+-CN +4348+08735 Asia/Urumqi Xinjiang Time
++CN,AQ +4348+08735 Asia/Urumqi Xinjiang Time, Vostok
+ CO +0436-07405 America/Bogota
+ CR +0956-08405 America/Costa_Rica
+ CU +2308-08222 America/Havana
+ CV +1455-02331 Atlantic/Cape_Verde
+-CX -1025+10543 Indian/Christmas
+ CY +3510+03322 Asia/Nicosia Cyprus (most areas)
+ CY +3507+03357 Asia/Famagusta Northern Cyprus
+ CZ,SK +5005+01426 Europe/Prague
+-DE +5230+01322 Europe/Berlin Germany (most areas)
+-DK +5540+01235 Europe/Copenhagen
++DE,DK,NO,SE,SJ +5230+01322 Europe/Berlin Germany (most areas), Scandinavia
+ DO +1828-06954 America/Santo_Domingo
+ DZ +3647+00303 Africa/Algiers
+ EC -0210-07950 America/Guayaquil Ecuador (mainland)
+@@ -156,11 +151,9 @@
+ FI,AX +6010+02458 Europe/Helsinki
+ FJ -1808+17825 Pacific/Fiji
+ FK -5142-05751 Atlantic/Stanley
+-FM +0725+15147 Pacific/Chuuk Chuuk/Truk, Yap
+-FM +0658+15813 Pacific/Pohnpei Pohnpei/Ponape
+ FM +0519+16259 Pacific/Kosrae Kosrae
+ FO +6201-00646 Atlantic/Faroe
+-FR +4852+00220 Europe/Paris
++FR,MC +4852+00220 Europe/Paris
+ GB,GG,IM,JE +513030-0000731 Europe/London
+ GE +4143+04449 Asia/Tbilisi
+ GF +0456-05220 America/Cayenne
+@@ -189,14 +182,13 @@
+ IO -0720+07225 Indian/Chagos
+ IQ +3321+04425 Asia/Baghdad
+ IR +3540+05126 Asia/Tehran
+-IS +6409-02151 Atlantic/Reykjavik
+ IT,SM,VA +4154+01229 Europe/Rome
+ JM +175805-0764736 America/Jamaica
+ JO +3157+03556 Asia/Amman
+ JP +353916+1394441 Asia/Tokyo
+ KE,DJ,ER,ET,KM,MG,SO,TZ,UG,YT -0117+03649 Africa/Nairobi
+ KG +4254+07436 Asia/Bishkek
+-KI +0125+17300 Pacific/Tarawa Gilbert Islands
++KI,MH,TV,UM,WF +0125+17300 Pacific/Tarawa Gilberts, Marshalls, Tuvalu, Wallis & Futuna, Wake
+ KI -0247-17143 Pacific/Kanton Phoenix Islands
+ KI +0152-15720 Pacific/Kiritimati Line Islands
+ KP +3901+12545 Asia/Pyongyang
+@@ -212,15 +204,12 @@
+ LK +0656+07951 Asia/Colombo
+ LR +0618-01047 Africa/Monrovia
+ LT +5441+02519 Europe/Vilnius
+-LU +4936+00609 Europe/Luxembourg
+ LV +5657+02406 Europe/Riga
+ LY +3254+01311 Africa/Tripoli
+ MA +3339-00735 Africa/Casablanca
+-MC +4342+00723 Europe/Monaco
+ MD +4700+02850 Europe/Chisinau
+-MH +0709+17112 Pacific/Majuro Marshall Islands (most areas)
+ MH +0905+16720 Pacific/Kwajalein Kwajalein
+-MM +1647+09610 Asia/Yangon
++MM,CC +1647+09610 Asia/Yangon
+ MN +4755+10653 Asia/Ulaanbaatar Mongolia (most areas)
+ MN +4801+09139 Asia/Hovd Bayan-Ölgii, Govi-Altai, Hovd, Uvs, Zavkhan
+ MN +4804+11430 Asia/Choibalsan Dornod, Sükhbaatar
+@@ -228,7 +217,7 @@
+ MQ +1436-06105 America/Martinique
+ MT +3554+01431 Europe/Malta
+ MU -2010+05730 Indian/Mauritius
+-MV +0410+07330 Indian/Maldives
++MV,TF +0410+07330 Indian/Maldives Maldives, Kerguelen, St Paul I, Amsterdam I
+ MX +1924-09909 America/Mexico_City Central Time
+ MX +2105-08646 America/Cancun Eastern Standard Time - Quintana Roo
+ MX +2058-08937 America/Merida Central Time - Campeche, Yucatán
+@@ -240,16 +229,13 @@
+ MX +2904-11058 America/Hermosillo Mountain Standard Time - Sonora
+ MX +3232-11701 America/Tijuana Pacific Time US - Baja California
+ MX +2048-10515 America/Bahia_Banderas Central Time - Bahía de Banderas
+-MY +0310+10142 Asia/Kuala_Lumpur Malaysia (peninsula)
+-MY +0133+11020 Asia/Kuching Sabah, Sarawak
++MY,BN +0133+11020 Asia/Kuching Sabah, Sarawak, Brunei
+ MZ,BI,BW,CD,MW,RW,ZM,ZW -2558+03235 Africa/Maputo Central Africa Time
+ NA -2234+01706 Africa/Windhoek
+ NC -2216+16627 Pacific/Noumea
+ NF -2903+16758 Pacific/Norfolk
+ NG,AO,BJ,CD,CF,CG,CM,GA,GQ,NE +0627+00324 Africa/Lagos West Africa Time
+ NI +1209-08617 America/Managua
+-NL +5222+00454 Europe/Amsterdam
+-NO,SJ +5955+01045 Europe/Oslo
+ NP +2743+08519 Asia/Kathmandu
+ NR -0031+16655 Pacific/Nauru
+ NU -1901-16955 Pacific/Niue
+@@ -260,7 +246,7 @@
+ PF -1732-14934 Pacific/Tahiti Society Islands
+ PF -0900-13930 Pacific/Marquesas Marquesas Islands
+ PF -2308-13457 Pacific/Gambier Gambier Islands
+-PG,AQ -0930+14710 Pacific/Port_Moresby Papua New Guinea (most areas), Dumont d'Urville
++PG,AQ,FM -0930+14710 Pacific/Port_Moresby Papua New Guinea (most areas), Chuuk, Yap, Dumont d'Urville
+ PG -0613+15534 Pacific/Bougainville Bougainville
+ PH +1435+12100 Asia/Manila
+ PK +2452+06703 Asia/Karachi
+@@ -276,7 +262,6 @@
+ PW +0720+13429 Pacific/Palau
+ PY -2516-05740 America/Asuncion
+ QA,BH +2517+05132 Asia/Qatar
+-RE,TF -2052+05528 Indian/Reunion Réunion, Crozet, Scattered Islands
+ RO +4426+02606 Europe/Bucharest
+ RS,BA,HR,ME,MK,SI +4450+02030 Europe/Belgrade
+ RU +5443+02030 Europe/Kaliningrad MSK-01 - Kaliningrad
+@@ -308,10 +293,8 @@
+ RU +5301+15839 Asia/Kamchatka MSK+09 - Kamchatka
+ RU +6445+17729 Asia/Anadyr MSK+09 - Bering Sea
+ SA,AQ,KW,YE +2438+04643 Asia/Riyadh Arabia, Syowa
+-SB -0932+16012 Pacific/Guadalcanal
+-SC -0440+05528 Indian/Mahe
++SB,FM -0932+16012 Pacific/Guadalcanal Solomons, Pohnpei
+ SD +1536+03232 Africa/Khartoum
+-SE +5920+01803 Europe/Stockholm
+ SG,MY +0117+10351 Asia/Singapore Singapore, peninsular Malaysia
+ SR +0550-05510 America/Paramaribo
+ SS +0451+03137 Africa/Juba
+@@ -320,8 +303,7 @@
+ SY +3330+03618 Asia/Damascus
+ TC +2128-07108 America/Grand_Turk
+ TD +1207+01503 Africa/Ndjamena
+-TF -492110+0701303 Indian/Kerguelen Kerguelen, St Paul Island, Amsterdam Island
+-TH,KH,LA,VN +1345+10031 Asia/Bangkok Indochina (most areas)
++TH,CX,KH,LA,VN +1345+10031 Asia/Bangkok Indochina (most areas)
+ TJ +3835+06848 Asia/Dushanbe
+ TK -0922-17114 Pacific/Fakaofo
+ TL -0833+12535 Asia/Dili
+@@ -329,12 +311,10 @@
+ TN +3648+01011 Africa/Tunis
+ TO -210800-1751200 Pacific/Tongatapu
+ TR +4101+02858 Europe/Istanbul
+-TV -0831+17913 Pacific/Funafuti
+ TW +2503+12130 Asia/Taipei
+-UA +5026+03031 Europe/Kiev Ukraine (most areas)
++UA +5026+03031 Europe/Kyiv Ukraine (most areas)
+ UA +4837+02218 Europe/Uzhgorod Transcarpathia
+ UA +4750+03510 Europe/Zaporozhye Zaporozhye and east Lugansk
+-UM +1917+16637 Pacific/Wake Wake Island
+ US +404251-0740023 America/New_York Eastern (most areas)
+ US +421953-0830245 America/Detroit Eastern - MI (most areas)
+ US +381515-0854534 America/Kentucky/Louisville Eastern - KY (Louisville area)
+@@ -370,6 +350,29 @@
+ VE +1030-06656 America/Caracas
+ VN +1045+10640 Asia/Ho_Chi_Minh Vietnam (south)
+ VU -1740+16825 Pacific/Efate
+-WF -1318-17610 Pacific/Wallis
+ WS -1350-17144 Pacific/Apia
+ ZA,LS,SZ -2615+02800 Africa/Johannesburg
++#
++# The next section contains experimental tab-separated comments for
++# use by user agents like tzselect that identify continents and oceans.
++#
++# For example, the comment "#@AQ<tab>Antarctica/" means the country code
++# AQ is in the continent Antarctica regardless of the Zone name,
++# so Pacific/Auckland should be listed under Antarctica as well as
++# under the Pacific because its line's country codes include AQ.
++#
++# If more than one country code is affected each is listed separated
++# by commas, e.g., #@IS,SH<tab>Atlantic/". If a country code is in
++# more than one continent or ocean, each is listed separated by
++# commas, e.g., the second column of "#@CY,TR<tab>Asia/,Europe/".
++#
++# These experimental comments are present only for country codes where
++# the continent or ocean is not already obvious from the Zone name.
++# For example, there is no such comment for RU since it already
++# corresponds to Zone names starting with both "Europe/" and "Asia/".
++#
++#@AQ Antarctica/
++#@IS,SH Atlantic/
++#@CY,TR Asia/,Europe/
++#@SJ Arctic/
++#@CC,CX,KM,MG,YT Indian/