#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.

# This file is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
# tz@iana.org for general use in the future).  For more, please see
# the file CONTRIBUTING in the tz distribution.

# From Paul Eggert (2014-10-31):
#
# Unless otherwise specified, the source for data through 1990 is:
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
# San Diego: ACS Publications, Inc. (2003).
# Unfortunately this book contains many errors and cites no sources.
#
# Gwillim Law writes that a good source
# for recent time zone data is the International Air Transport
# Association's Standard Schedules Information Manual (IATA SSIM),
# published semiannually.  Law sent in several helpful summaries
# of the IATA's data after 1990.  Except where otherwise noted,
# IATA SSIM is the source for entries after 1990.
#
# For data circa 1899, a common source is:
# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
# http://www.jstor.org/stable/1774359
#
# Earlier editions of these tables used the North American style (e.g. ARST and
# ARDT for Argentine Standard and Daylight Time), but the following quote
# suggests that it's better to use European style (e.g. ART and ARST).
#	I suggest the use of _Summer time_ instead of the more cumbersome
#	_daylight-saving time_.  _Summer time_ seems to be in general use
#	in Europe and South America.
#	-- E O Cutler, _New York Times_ (1937-02-14), quoted in
#	H L Mencken, _The American Language: Supplement I_ (1960), p 466
#
# Earlier editions of these tables also used the North American style
# for time zones in Brazil, but this was incorrect, as Brazilians say
# "summer time".  Reinaldo Goulart, a São Paulo businessman active in
# the railroad sector, writes (1999-07-06):
#	The subject of time zones is currently a matter of discussion/debate in
#	Brazil.  Let's say that "the Brasília time" is considered the
#	"official time" because Brasília is the capital city.
#	The other three time zones are called "Brasília time "minus one" or
#	"plus one" or "plus two".  As far as I know there is no such
#	name/designation as "Eastern Time" or "Central Time".
# So I invented the following (English-language) abbreviations for now.
# Corrections are welcome!
#		std	dst
#	-2:00	FNT	FNST	Fernando de Noronha
#	-3:00	BRT	BRST	Brasília
#	-4:00	AMT	AMST	Amazon
#	-5:00	ACT	ACST	Acre

###############################################################################

###############################################################################

# Argentina

# From Bob Devine (1988-01-28):
# Argentina: first Sunday in October to first Sunday in April since 1976.
# Double Summer time from 1969 to 1974.  Switches at midnight.

# From U. S. Naval Observatory (1988-01-19):
# ARGENTINA           3 H BEHIND   UTC

# From Hernan G. Otero (1995-06-26):
# I am sending modifications to the Argentine time zone table...
# AR was chosen because they are the ISO letters that represent Argentina.

# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Arg	1930	only	-	Dec	 1	0:00	1:00	S
Rule	Arg	1931	only	-	Apr	 1	0:00	0	-
Rule	Arg	1931	only	-	Oct	15	0:00	1:00	S
Rule	Arg	1932	1940	-	Mar	 1	0:00	0	-
Rule	Arg	1932	1939	-	Nov	 1	0:00	1:00	S
Rule	Arg	1940	only	-	Jul	 1	0:00	1:00	S
Rule	Arg	1941	only	-	Jun	15	0:00	0	-
Rule	Arg	1941	only	-	Oct	15	0:00	1:00	S
Rule	Arg	1943	only	-	Aug	 1	0:00	0	-
Rule	Arg	1943	only	-	Oct	15	0:00	1:00	S
Rule	Arg	1946	only	-	Mar	 1	0:00	0	-
Rule	Arg	1946	only	-	Oct	 1	0:00	1:00	S
Rule	Arg	1963	only	-	Oct	 1	0:00	0	-
Rule	Arg	1963	only	-	Dec	15	0:00	1:00	S
Rule	Arg	1964	1966	-	Mar	 1	0:00	0	-
Rule	Arg	1964	1966	-	Oct	15	0:00	1:00	S
Rule	Arg	1967	only	-	Apr	 2	0:00	0	-
Rule	Arg	1967	1968	-	Oct	Sun>=1	0:00	1:00	S
Rule	Arg	1968	1969	-	Apr	Sun>=1	0:00	0	-
Rule	Arg	1974	only	-	Jan	23	0:00	1:00	S
Rule	Arg	1974	only	-	May	 1	0:00	0	-
Rule	Arg	1988	only	-	Dec	 1	0:00	1:00	S
#
# From Hernan G. Otero (1995-06-26):
# These corrections were contributed by InterSoft Argentina S.A.,
# obtaining the data from the:
# Talleres de Hidrografía Naval Argentina
# (Argentine Naval Hydrography Institute)
Rule	Arg	1989	1993	-	Mar	Sun>=1	0:00	0	-
Rule	Arg	1989	1992	-	Oct	Sun>=15	0:00	1:00	S
#
# From Hernan G. Otero (1995-06-26):
# From this moment on, the law that mandated the daylight saving
# time corrections was derogated and no more modifications
# to the time zones (for daylight saving) are now made.
#
# From Rives McDow (2000-01-10):
# On October 3, 1999, 0:00 local, Argentina implemented daylight savings time,
# which did not result in the switch of a time zone, as they stayed 9 hours
# from the International Date Line.
Rule	Arg	1999	only	-	Oct	Sun>=1	0:00	1:00	S
# From Paul Eggert (2007-12-28):
# DST was set to expire on March 5, not March 3, but since it was converted
# to standard time on March 3 it's more convenient for us to pretend that
# it ended on March 3.
Rule	Arg	2000	only	-	Mar	3	0:00	0	-
#
# From Peter Gradelski via Steffen Thorsen (2000-03-01):
# We just checked with our São Paulo office and they say the government of
# Argentina decided not to become one of the countries that go on or off DST.
# So Buenos Aires should be -3 hours from GMT at all times.
#
# From Fabián L. Arce Jofré (2000-04-04):
# The law that claimed DST for Argentina was derogated by President Fernando
# de la Rúa on March 2, 2000, because it would make people spend more energy
# in the winter time, rather than less.  The change took effect on March 3.
#
# From Mariano Absatz (2001-06-06):
# one of the major newspapers here in Argentina said that the 1999
# Timezone Law (which never was effectively applied) will (would?) be
# in effect.... The article is at
# http://ar.clarin.com/diario/2001-06-06/e-01701.htm
# ... The Law itself is "Ley No. 25155", sanctioned on 1999-08-25, enacted
# 1999-09-17, and published 1999-09-21.  The official publication is at:
# http://www.boletin.jus.gov.ar/BON/Primera/1999/09-Septiembre/21/PDF/BO21-09-99LEG.PDF
# Regretfully, you have to subscribe (and pay) for the on-line version....
#
# (2001-06-12):
# the timezone for Argentina will not change next Sunday.
# Apparently it will do so on Sunday 24th....
# http://ar.clarin.com/diario/2001-06-12/s-03501.htm
#
# (2001-06-25):
# Last Friday (yes, the last working day before the date of the change), the
# Senate annulled the 1999 law that introduced the changes later postponed.
# http://www.clarin.com.ar/diario/2001-06-22/s-03601.htm
# It remains the vote of the Deputies..., but it will be the same....
# This kind of things had always been done this way in Argentina.
# We are still -03:00 all year round in all of the country.
#
# From Steffen Thorsen (2007-12-21):
# A user (Leonardo Chaim) reported that Argentina will adopt DST....
# all of the country (all Zone-entries) are affected.  News reports like
# http://www.lanacion.com.ar/opinion/nota.asp?nota_id=973037 indicate
# that Argentina will use DST next year as well, from October to
# March, although exact rules are not given.
#
# From Jesper Nørgaard Welen (2007-12-26)
# The last hurdle of Argentina DST is over, the proposal was approved in
# the lower chamber too (Diputados) with a vote 192 for and 2 against.
# By the way thanks to Mariano Absatz and Daniel Mario Vega for the link to
# the original scanned proposal, where the dates and the zero hours are
# clear and unambiguous...This is the article about final approval:
# http://www.lanacion.com.ar/politica/nota.asp?nota_id=973996
#
# From Paul Eggert (2007-12-22):
# For dates after mid-2008, the following rules are my guesses and
# are quite possibly wrong, but are more likely than no DST at all.

# From Alexander Krivenyshev (2008-09-05):
# As per message from Carlos Alberto Fonseca Arauz (Nicaragua),
# Argentina will start DST on Sunday October 19, 2008.
#
# http://www.worldtimezone.com/dst_news/dst_news_argentina03.html
# http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish)

# From Juan Manuel Docile in https://bugs.gentoo.org/240339 (2008-10-07)
# via Rodrigo Severo:
# Argentinian law No. 25.155 is no longer valid.
# http://www.infoleg.gov.ar/infolegInternet/anexos/60000-64999/60036/norma.htm
# The new one is law No. 26.350
# http://www.infoleg.gov.ar/infolegInternet/anexos/135000-139999/136191/norma.htm
# So there is no summer time in Argentina for now.

# From Mariano Absatz (2008-10-20):
# Decree 1693/2008 applies Law 26.350 for the summer 2008/2009 establishing DST
# in Argentina from 2008-10-19 until 2009-03-15.
# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=16102008&pi=3&pf=4&s=0&sec=01
#

# Decree 1705/2008 excepting 12 Provinces from applying DST in the summer
# 2008/2009: Catamarca, La Rioja, Mendoza, Salta, San Juan, San Luis, La
# Pampa, Neuquén, Rio Negro, Chubut, Santa Cruz and Tierra del Fuego
# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=17102008&pi=1&pf=1&s=0&sec=01
#
# Press release 235 dated Saturday October 18th, from the Government of the
# Province of Jujuy saying it will not apply DST either (even when it was not
# included in Decree 1705/2008).
# http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc

# From fullinet (2009-10-18):
# As announced in
# http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356
# (an official .gob.ar) under title: "Sin Cambio de Hora"
# (English: "No hour change").
#
# "Por el momento, el Gobierno Nacional resolvió no modificar la hora
# oficial, decisión que estaba en estudio para su implementación el
# domingo 18 de octubre. Desde el Ministerio de Planificación se anunció
# que la Argentina hoy, en estas condiciones meteorológicas, no necesita
# la modificación del huso horario, ya que 2009 nos encuentra con
# crecimiento en la producción y distribución energética."

Rule	Arg	2007	only	-	Dec	30	0:00	1:00	S
Rule	Arg	2008	2009	-	Mar	Sun>=15	0:00	0	-
Rule	Arg	2008	only	-	Oct	Sun>=15	0:00	1:00	S

# From Mariano Absatz (2004-05-21):
# Today it was officially published that the Province of Mendoza is changing
# its timezone this winter... starting tomorrow night....
# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040521-27158-normas.pdf
# From Paul Eggert (2004-05-24):
# It's Law No. 7,210.  This change is due to a public power emergency, so for
# now we'll assume it's for this year only.
#
# From Paul Eggert (2014-08-09):
# Hora de verano para la República Argentina
# http://buenasiembra.com.ar/esoterismo/astrologia/hora-de-verano-de-la-republica-argentina-27.html
# says that standard time in Argentina from 1894-10-31
# to 1920-05-01 was -4:16:48.25.  Go with this more-precise value
# over Shanks & Pottenger.
#
# From Mariano Absatz (2004-06-05):
# These media articles from a major newspaper mostly cover the current state:
# http://www.lanacion.com.ar/04/05/27/de_604825.asp
# http://www.lanacion.com.ar/04/05/28/de_605203.asp
#
# The following eight (8) provinces pulled clocks back to UTC-04:00 at
# midnight Monday May 31st. (that is, the night between 05/31 and 06/01).
# Apparently, all nine provinces would go back to UTC-03:00 at the same
# time in October 17th.
#
# Catamarca, Chubut, La Rioja, San Juan, San Luis, Santa Cruz,
# Tierra del Fuego, Tucumán.
#
# From Mariano Absatz (2004-06-14):
# ... this weekend, the Province of Tucumán decided it'd go back to UTC-03:00
# yesterday midnight (that is, at 24:00 Saturday 12th), since the people's
# annoyance with the change is much higher than the power savings obtained....
#
# From Gwillim Law (2004-06-14):
# http://www.lanacion.com.ar/04/06/10/de_609078.asp ...
#     "The time change in Tierra del Fuego was a conflicted decision from
#   the start.  The government had decreed that the measure would take
#   effect on June 1, but a normative error forced the new time to begin
#   three days earlier, from a Saturday to a Sunday....
# Our understanding was that the change was originally scheduled to take place
# on June 1 at 00:00 in Chubut, Santa Cruz, Tierra del Fuego (and some other
# provinces).  Sunday was May 30, only two days earlier.  So the article
# contains a contradiction.  I would give more credence to the Saturday/Sunday
# date than the "three days earlier" phrase, and conclude that Tierra del
# Fuego set its clocks back at 2004-05-30 00:00.
#
# From Steffen Thorsen (2004-10-05):
# The previous law 7210 which changed the province of Mendoza's time zone
# back in May have been modified slightly in a new law 7277, which set the
# new end date to 2004-09-26 (original date was 2004-10-17).
# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040924-27244-normas.pdf
#
# From Mariano Absatz (2004-10-05):
# San Juan changed from UTC-03:00 to UTC-04:00 at midnight between
# Sunday, May 30th and Monday, May 31st.  It changed back to UTC-03:00
# at midnight between Saturday, July 24th and Sunday, July 25th....
# http://www.sanjuan.gov.ar/prensa/archivo/000329.html
# http://www.sanjuan.gov.ar/prensa/archivo/000426.html
# http://www.sanjuan.gov.ar/prensa/archivo/000441.html

# From Alex Krivenyshev (2008-01-17):
# Here are articles that Argentina Province San Luis is planning to end DST
# as earlier as upcoming Monday January 21, 2008 or February 2008:
#
# Provincia argentina retrasa reloj y marca diferencia con resto del país
# (Argentine Province delayed clock and mark difference with the rest of the
# country)
# http://cl.invertia.com/noticias/noticia.aspx?idNoticia=200801171849_EFE_ET4373&idtel
#
# Es inminente que en San Luis atrasen una hora los relojes
# (It is imminent in San Luis clocks one hour delay)
# http://www.lagaceta.com.ar/nota/253414/Economia/Es-inminente-que-en-San-Luis-atrasen-una-hora-los-relojes.html
# http://www.worldtimezone.net/dst_news/dst_news_argentina02.html

# From Jesper Nørgaard Welen (2008-01-18):
# The page of the San Luis provincial government
# http://www.sanluis.gov.ar/notas.asp?idCanal=0&id=22812
# confirms what Alex Krivenyshev has earlier sent to the tz
# emailing list about that San Luis plans to return to standard
# time much earlier than the rest of the country. It also
# confirms that upon request the provinces San Juan and Mendoza
# refused to follow San Luis in this change.
#
# The change is supposed to take place Monday the 21st at 0:00
# hours. As far as I understand it if this goes ahead, we need
# a new timezone for San Luis (although there are also documented
# independent changes in the southamerica file of San Luis in
# 1990 and 1991 which has not been confirmed).

# From Jesper Nørgaard Welen (2008-01-25):
# Unfortunately the below page has become defunct, about the San Luis
# time change. Perhaps because it now is part of a group of pages "Most
# important pages of 2008."
#
# You can use
# http://www.sanluis.gov.ar/notas.asp?idCanal=8141&id=22834
# instead it seems. Or use "Buscador" from the main page of the San Luis
# government, and fill in "huso" and click OK, and you will get 3 pages
# from which the first one is identical to the above.

# From Mariano Absatz (2008-01-28):
# I can confirm that the Province of San Luis (and so far only that
# province) decided to go back to UTC-3 effective midnight Jan 20th 2008
# (that is, Monday 21st at 0:00 is the time the clocks were delayed back
# 1 hour), and they intend to keep UTC-3 as their timezone all year round
# (that is, unless they change their mind any minute now).
#
# So we'll have to add yet another city to 'southamerica' (I think San
# Luis city is the mos populated city in the Province, so it'd be
# America/Argentina/San_Luis... of course I can't remember if San Luis's
# history of particular changes goes along with Mendoza or San Juan :-(
# (I only remember not being able to collect hard facts about San Luis
# back in 2004, when these provinces changed to UTC-4 for a few days, I
# mailed them personally and never got an answer).

# From Paul Eggert (2014-08-12):
# Unless otherwise specified, data entries are from Shanks & Pottenger through
# 1992, from the IATA otherwise.  As noted below, Shanks & Pottenger say that
# America/Cordoba split into 6 subregions during 1991/1992, one of which
# was America/San_Luis, but we haven't verified this yet so for now we'll
# keep America/Cordoba a single region rather than splitting it into the
# other 5 subregions.

# From Mariano Absatz (2009-03-13):
# Yesterday (with our usual 2-day notice) the Province of San Luis
# decided that next Sunday instead of "staying" @utc-03:00 they will go
# to utc-04:00 until the second Saturday in October...
#
# The press release is at
# http://www.sanluis.gov.ar/SL/Paginas/NoticiaDetalle.asp?TemaId=1&InfoPrensaId=3102
# (I couldn't find the decree, but www.sanluis.gov.ar
# is the official page for the Province Government.)
#
# There's also a note in only one of the major national papers ...
# http://www.lanacion.com.ar/nota.asp?nota_id=1107912
#
# The press release says [quick and dirty translation]:
# ... announced that next Sunday, at 00:00, Puntanos (the San Luis
# inhabitants) will have to turn back one hour their clocks
#
# Since then, San Luis will establish its own Province timezone. Thus,
# during 2009, this timezone change will run from 00:00 the third Sunday
# in March until 24:00 of the second Saturday in October.

# From Mariano Absatz (2009-10-16):
# ...the Province of San Luis is a case in itself.
#
# The Law at
# http://www.diputadossanluis.gov.ar/diputadosasp/paginas/verNorma.asp?NormaID=276
# is ambiguous because establishes a calendar from the 2nd Sunday in
# October at 0:00 thru the 2nd Saturday in March at 24:00 and the
# complement of that starting on the 2nd Sunday of March at 0:00 and
# ending on the 2nd Saturday of March at 24:00.
#
# This clearly breaks every time the 1st of March or October is a Sunday.
#
# IMHO, the "spirit of the Law" is to make the changes at 0:00 on the 2nd
# Sunday of October and March.
#
# The problem is that the changes in the rest of the Provinces that did
# change in 2007/2008, were made according to the Federal Law and Decrees
# that did so on the 3rd Sunday of October and March.
#
# In fact, San Luis actually switched from UTC-4 to UTC-3 last Sunday
# (October 11th) at 0:00.
#
# So I guess a new set of rules, besides "Arg", must be made and the last
# America/Argentina/San_Luis entries should change to use these...
#
# I'm enclosing a patch that does what I say... regretfully, the San Luis
# timezone must be called "WART/WARST" even when most of the time (like,
# right now) WARST == ART... that is, since last Sunday, all the country
# is using UTC-3, but in my patch, San Luis calls it "WARST" and the rest
# of the country calls it "ART".
# ...

# From Alexander Krivenyshev (2010-04-09):
# According to news reports from El Diario de la República Province San
# Luis, Argentina (standard time UTC-04) will keep Daylight Saving Time
# after April 11, 2010 - will continue to have same time as rest of
# Argentina (UTC-3) (no DST).
#
# Confirmaron la prórroga del huso horario de verano (Spanish)
# http://www.eldiariodelarepublica.com/index.php?option=com_content&task=view&id=29383&Itemid=9
# or (some English translation):
# http://www.worldtimezone.com/dst_news/dst_news_argentina08.html

# From Mariano Absatz (2010-04-12):
# yes...I can confirm this...and given that San Luis keeps calling
# UTC-03:00 "summer time", we should't just let San Luis go back to "Arg"
# rules...San Luis is still using "Western ARgentina Time" and it got
# stuck on Summer daylight savings time even though the summer is over.

# From Paul Eggert (2013-09-05):
# Perhaps San Luis operates on the legal fiction that it is at UTC-4
# with perpetual summer time, but ordinary usage typically seems to
# just say it's at UTC-3; see, for example,
# http://es.wikipedia.org/wiki/Hora_oficial_argentina
# We've documented similar situations as being plain changes to
# standard time, so let's do that here too.  This does not change UTC
# offsets, only tm_isdst and the time zone abbreviations.  One minor
# plus is that this silences a zic complaint that there's no POSIX TZ
# setting for time stamps past 2038.

# From Paul Eggert (2013-02-21):
# Milne says Córdoba time was -4:16:48.2.  Round to the nearest second.

# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
#
# Buenos Aires (BA), Capital Federal (CF),
Zone America/Argentina/Buenos_Aires -3:53:48 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May    # Córdoba Mean Time
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	Arg	AR%sT
#
# Córdoba (CB), Santa Fe (SF), Entre Ríos (ER), Corrientes (CN), Misiones (MN),
# Chaco (CC), Formosa (FM), Santiago del Estero (SE)
#
# Shanks & Pottenger also make the following claims, which we haven't verified:
# - Formosa switched to -3:00 on 1991-01-07.
# - Misiones switched to -3:00 on 1990-12-29.
# - Chaco switched to -3:00 on 1991-01-04.
# - Santiago del Estero switched to -4:00 on 1991-04-01,
#   then to -3:00 on 1991-04-26.
#
Zone America/Argentina/Cordoba -4:16:48 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1991 Mar  3
			-4:00	-	WART	1991 Oct 20
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	Arg	AR%sT
#
# Salta (SA), La Pampa (LP), Neuquén (NQ), Rio Negro (RN)
Zone America/Argentina/Salta -4:21:40 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1991 Mar  3
			-4:00	-	WART	1991 Oct 20
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	Arg	AR%sT	2008 Oct 18
			-3:00	-	ART
#
# Tucumán (TM)
Zone America/Argentina/Tucuman -4:20:52 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1991 Mar  3
			-4:00	-	WART	1991 Oct 20
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 Jun  1
			-4:00	-	WART	2004 Jun 13
			-3:00	Arg	AR%sT
#
# La Rioja (LR)
Zone America/Argentina/La_Rioja -4:27:24 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1991 Mar  1
			-4:00	-	WART	1991 May  7
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 Jun  1
			-4:00	-	WART	2004 Jun 20
			-3:00	Arg	AR%sT	2008 Oct 18
			-3:00	-	ART
#
# San Juan (SJ)
Zone America/Argentina/San_Juan -4:34:04 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1991 Mar  1
			-4:00	-	WART	1991 May  7
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 May 31
			-4:00	-	WART	2004 Jul 25
			-3:00	Arg	AR%sT	2008 Oct 18
			-3:00	-	ART
#
# Jujuy (JY)
Zone America/Argentina/Jujuy -4:21:12 -	LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1990 Mar  4
			-4:00	-	WART	1990 Oct 28
			-4:00	1:00	WARST	1991 Mar 17
			-4:00	-	WART	1991 Oct  6
			-3:00	1:00	ARST	1992
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	Arg	AR%sT	2008 Oct 18
			-3:00	-	ART
#
# Catamarca (CT), Chubut (CH)
Zone America/Argentina/Catamarca -4:23:08 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1991 Mar  3
			-4:00	-	WART	1991 Oct 20
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 Jun  1
			-4:00	-	WART	2004 Jun 20
			-3:00	Arg	AR%sT	2008 Oct 18
			-3:00	-	ART
#
# Mendoza (MZ)
Zone America/Argentina/Mendoza -4:35:16 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1990 Mar  4
			-4:00	-	WART	1990 Oct 15
			-4:00	1:00	WARST	1991 Mar  1
			-4:00	-	WART	1991 Oct 15
			-4:00	1:00	WARST	1992 Mar  1
			-4:00	-	WART	1992 Oct 18
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 May 23
			-4:00	-	WART	2004 Sep 26
			-3:00	Arg	AR%sT	2008 Oct 18
			-3:00	-	ART
#
# San Luis (SL)

Rule	SanLuis	2008	2009	-	Mar	Sun>=8	0:00	0	-
Rule	SanLuis	2007	2008	-	Oct	Sun>=8	0:00	1:00	S

Zone America/Argentina/San_Luis -4:25:24 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1990
			-3:00	1:00	ARST	1990 Mar 14
			-4:00	-	WART	1990 Oct 15
			-4:00	1:00	WARST	1991 Mar  1
			-4:00	-	WART	1991 Jun  1
			-3:00	-	ART	1999 Oct  3
			-4:00	1:00	WARST	2000 Mar  3
			-3:00	-	ART	2004 May 31
			-4:00	-	WART	2004 Jul 25
			-3:00	Arg	AR%sT	2008 Jan 21
			-4:00	SanLuis	WAR%sT	2009 Oct 11
			-3:00	-	ART
#
# Santa Cruz (SC)
Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May    # Córdoba Mean Time
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 Jun  1
			-4:00	-	WART	2004 Jun 20
			-3:00	Arg	AR%sT	2008 Oct 18
			-3:00	-	ART
#
# Tierra del Fuego, Antártida e Islas del Atlántico Sur (TF)
Zone America/Argentina/Ushuaia -4:33:12 - LMT	1894 Oct 31
			-4:16:48 -	CMT	1920 May    # Córdoba Mean Time
			-4:00	-	ART	1930 Dec
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1999 Oct  3
			-4:00	Arg	AR%sT	2000 Mar  3
			-3:00	-	ART	2004 May 30
			-4:00	-	WART	2004 Jun 20
			-3:00	Arg	AR%sT	2008 Oct 18
			-3:00	-	ART

# Aruba
Link America/Curacao America/Aruba

# Bolivia
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	America/La_Paz	-4:32:36 -	LMT	1890
			-4:32:36 -	CMT	1931 Oct 15 # Calamarca MT
			-4:32:36 1:00	BOST	1932 Mar 21 # Bolivia ST
			-4:00	-	BOT	# Bolivia Time

# Brazil

# From Paul Eggert (1993-11-18):
# The mayor of Rio recently attempted to change the time zone rules
# just in his city, in order to leave more summer time for the tourist trade.
# The rule change lasted only part of the day;
# the federal government refused to follow the city's rules, and business
# was in a chaos, so the mayor backed down that afternoon.

# From IATA SSIM (1996-02):
# _Only_ the following states in BR1 observe DST: Rio Grande do Sul (RS),
# Santa Catarina (SC), Paraná (PR), São Paulo (SP), Rio de Janeiro (RJ),
# Espírito Santo (ES), Minas Gerais (MG), Bahia (BA), Goiás (GO),
# Distrito Federal (DF), Tocantins (TO), Sergipe [SE] and Alagoas [AL].
# [The last three states are new to this issue of the IATA SSIM.]

# From Gwillim Law (1996-10-07):
# Geography, history (Tocantins was part of Goiás until 1989), and other
# sources of time zone information lead me to believe that AL, SE, and TO were
# always in BR1, and so the only change was whether or not they observed DST....
# The earliest issue of the SSIM I have is 2/91.  Each issue from then until
# 9/95 says that DST is observed only in the ten states I quoted from 9/95,
# along with Mato Grosso (MT) and Mato Grosso do Sul (MS), which are in BR2
# (UTC-4)....  The other two time zones given for Brazil are BR3, which is
# UTC-5, no DST, and applies only in the state of Acre (AC); and BR4, which is
# UTC-2, and applies to Fernando de Noronha (formerly FN, but I believe it's
# become part of the state of Pernambuco).  The boundary between BR1 and BR2
# has never been clearly stated.  They've simply been called East and West.
# However, some conclusions can be drawn from another IATA manual: the Airline
# Coding Directory, which lists close to 400 airports in Brazil.  For each
# airport it gives a time zone which is coded to the SSIM.  From that
# information, I'm led to conclude that the states of Amapá (AP), Ceará (CE),
# Maranhão (MA), Paraíba (PR), Pernambuco (PE), Piauí (PI), and Rio Grande do
# Norte (RN), and the eastern part of Pará (PA) are all in BR1 without DST.

# From Marcos Tadeu (1998-09-27):
# Brazilian official page <http://pcdsh01.on.br/verao1.html>

# From Jesper Nørgaard (2000-11-03):
# [For an official list of which regions in Brazil use which time zones, see:]
# http://pcdsh01.on.br/Fusbr.htm
# http://pcdsh01.on.br/Fusbrhv.htm

# From Celso Doria via David Madeo (2002-10-09):
# The reason for the delay this year has to do with elections in Brazil.
#
# Unlike in the United States, elections in Brazil are 100% computerized and
# the results are known almost immediately.  Yesterday, it was the first
# round of the elections when 115 million Brazilians voted for President,
# Governor, Senators, Federal Deputies, and State Deputies.  Nobody is
# counting (or re-counting) votes anymore and we know there will be a second
# round for the Presidency and also for some Governors.  The 2nd round will
# take place on October 27th.
#
# The reason why the DST will only begin November 3rd is that the thousands
# of electoral machines used cannot have their time changed, and since the
# Constitution says the elections must begin at 8:00 AM and end at 5:00 PM,
# the Government decided to postpone DST, instead of changing the Constitution
# (maybe, for the next elections, it will be possible to change the clock)...

# 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
# with a time change between the first and the second rounds of the elections.

# From Steffen Thorsen (2007-09-20):
# Brazil will start DST on 2007-10-14 00:00 and end on 2008-02-17 00:00:
# http://www.mme.gov.br/site/news/detail.do;jsessionid=BBA06811AFCAAC28F0285210913513DA?newsId=13975

# From Paul Schulze (2008-06-24):
# ...by law number 11.662 of April 24, 2008 (published in the "Diario
# Oficial da União"...) in Brazil there are changes in the timezones,
# effective today (00:00am at June 24, 2008) as follows:
#
# a) The timezone UTC+5 is extinguished, with all the Acre state and the
# part of the Amazonas state that had this timezone now being put to the
# timezone UTC+4
# b) The whole Pará state now is put at timezone UTC+3, instead of just
# part of it, as was before.
#
# This change follows a proposal of senator Tiao Viana of Acre state, that
# proposed it due to concerns about open television channels displaying
# programs inappropriate to youths in the states that had the timezone
# UTC+5 too early in the night. In the occasion, some more corrections
# were proposed, trying to unify the timezones of any given state. This
# change modifies timezone rules defined in decree 2.784 of 18 June,
# 1913.

# From Rodrigo Severo (2008-06-24):
# Just correcting the URL:
# https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=do&secao=1&pagina=1&data=25/04/2008
#
# As a result of the above Decree I believe the America/Rio_Branco
# timezone shall be modified from UTC-5 to UTC-4 and a new timezone shall
# be created to represent the...west side of the Pará State. I
# suggest this new timezone be called Santarem as the most
# important/populated city in the affected area.
#
# This new timezone would be the same as the Rio_Branco timezone up to
# the 2008/06/24 change which would be to UTC-3 instead of UTC-4.

# From Alex Krivenyshev (2008-06-24):
# This is a quick reference page for New and Old Brazil Time Zones map.
# http://www.worldtimezone.com/brazil-time-new-old.php
#
# - 4 time zones replaced by 3 time zones - eliminating time zone UTC-05
# (state Acre and the part of the Amazonas will be UTC/GMT-04) - western
# part of Par state is moving to one timezone UTC-03 (from UTC-04).

# From Paul Eggert (2002-10-10):
# The official decrees referenced below are mostly taken from
# Decretos sobre o Horário de Verão no Brasil.
# http://pcdsh01.on.br/DecHV.html

# From Steffen Thorsen (2008-08-29):
# As announced by the government and many newspapers in Brazil late
# yesterday, Brazil will start DST on 2008-10-19 (need to change rule) and
# it will end on 2009-02-15 (current rule for Brazil is fine). Based on
# past years experience with the elections, there was a good chance that
# the start was postponed to November, but it did not happen this year.
#
# It has not yet been posted to http://pcdsh01.on.br/DecHV.html
#
# An official page about it:
# http://www.mme.gov.br/site/news/detail.do?newsId=16722
# Note that this link does not always work directly, but must be accessed
# by going to
# http://www.mme.gov.br/first
#
# One example link that works directly:
# http://jornale.com.br/index.php?option=com_content&task=view&id=13530&Itemid=54
# (Portuguese)
#
# We have a written a short article about it as well:
# http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html
#
# From Alexander Krivenyshev (2011-10-04):
# State Bahia will return to Daylight savings time this year after 8 years off.
# The announcement was made by Governor Jaques Wagner in an interview to a
# television station in Salvador.

# In Portuguese:
# http://g1.globo.com/bahia/noticia/2011/10/governador-jaques-wagner-confirma-horario-de-verao-na-bahia.html
# http://noticias.terra.com.br/brasil/noticias/0,,OI5390887-EI8139,00-Bahia+volta+a+ter+horario+de+verao+apos+oito+anos.html

# From Guilherme Bernardes Rodrigues (2011-10-07):
# There is news in the media, however there is still no decree about it.
# I just send a e-mail to Zulmira Brandao at http://pcdsh01.on.br/ the
# official agency about time in Brazil, and she confirmed that the old rule is
# still in force.

# From Guilherme Bernardes Rodrigues (2011-10-14)
# It's official, the President signed a decree that includes Bahia in summer
# time.
#	 [ and in a second message (same day): ]
# I found the decree.
#
# DECRETO No. 7.584, DE 13 DE OUTUBRO DE 2011
# Link :
# http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6

# From Kelley Cook (2012-10-16):
# The governor of state of Bahia in Brazil announced on Thursday that
# due to public pressure, he is reversing the DST policy they implemented
# last year and will not be going to Summer Time on October 21st....
# http://www.correio24horas.com.br/r/artigo/apos-pressoes-wagner-suspende-horario-de-verao-na-bahia

# From Rodrigo Severo (2012-10-16):
# Tocantins state will have DST.
# http://noticias.terra.com.br/brasil/noticias/0,,OI6232536-EI306.html

# From Steffen Thorsen (2013-09-20):
# Tocantins in Brazil is very likely not to observe DST from October....
# http://conexaoto.com.br/2013/09/18/ministerio-confirma-que-tocantins-esta-fora-do-horario-de-verao-em-2013-mas-falta-publicacao-de-decreto
# We will keep this article updated when this is confirmed:
# http://www.timeanddate.com/news/time/brazil-starts-dst-2013.html

# From Steffen Thorsen (2013-10-17):
# http://www.timeanddate.com/news/time/acre-amazonas-change-time-zone.html
# Senator Jorge Viana announced that Acre will change time zone on November 10.
# He did not specify the time of the change, nor if western parts of Amazonas
# will change as well.
#
# From Paul Eggert (2013-10-17):
# For now, assume western Amazonas will change as well.

# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
# Decree 20,466 <http://pcdsh01.on.br/HV20466.htm> (1931-10-01)
# Decree 21,896 <http://pcdsh01.on.br/HV21896.htm> (1932-01-10)
Rule	Brazil	1931	only	-	Oct	 3	11:00	1:00	S
Rule	Brazil	1932	1933	-	Apr	 1	 0:00	0	-
Rule	Brazil	1932	only	-	Oct	 3	 0:00	1:00	S
# Decree 23,195 <http://pcdsh01.on.br/HV23195.htm> (1933-10-10)
# revoked DST.
# Decree 27,496 <http://pcdsh01.on.br/HV27496.htm> (1949-11-24)
# Decree 27,998 <http://pcdsh01.on.br/HV27998.htm> (1950-04-13)
Rule	Brazil	1949	1952	-	Dec	 1	 0:00	1:00	S
Rule	Brazil	1950	only	-	Apr	16	 1:00	0	-
Rule	Brazil	1951	1952	-	Apr	 1	 0:00	0	-
# Decree 32,308 <http://pcdsh01.on.br/HV32308.htm> (1953-02-24)
Rule	Brazil	1953	only	-	Mar	 1	 0:00	0	-
# Decree 34,724 <http://pcdsh01.on.br/HV34724.htm> (1953-11-30)
# revoked DST.
# Decree 52,700 <http://pcdsh01.on.br/HV52700.htm> (1963-10-18)
# established DST from 1963-10-23 00:00 to 1964-02-29 00:00
# in SP, RJ, GB, MG, ES, due to the prolongation of the drought.
# Decree 53,071 <http://pcdsh01.on.br/HV53071.htm> (1963-12-03)
# extended the above decree to all of the national territory on 12-09.
Rule	Brazil	1963	only	-	Dec	 9	 0:00	1:00	S
# Decree 53,604 <http://pcdsh01.on.br/HV53604.htm> (1964-02-25)
# extended summer time by one day to 1964-03-01 00:00 (start of school).
Rule	Brazil	1964	only	-	Mar	 1	 0:00	0	-
# Decree 55,639 <http://pcdsh01.on.br/HV55639.htm> (1965-01-27)
Rule	Brazil	1965	only	-	Jan	31	 0:00	1:00	S
Rule	Brazil	1965	only	-	Mar	31	 0:00	0	-
# Decree 57,303 <http://pcdsh01.on.br/HV57303.htm> (1965-11-22)
Rule	Brazil	1965	only	-	Dec	 1	 0:00	1:00	S
# Decree 57,843 <http://pcdsh01.on.br/HV57843.htm> (1966-02-18)
Rule	Brazil	1966	1968	-	Mar	 1	 0:00	0	-
Rule	Brazil	1966	1967	-	Nov	 1	 0:00	1:00	S
# Decree 63,429 <http://pcdsh01.on.br/HV63429.htm> (1968-10-15)
# revoked DST.
# Decree 91,698 <http://pcdsh01.on.br/HV91698.htm> (1985-09-27)
Rule	Brazil	1985	only	-	Nov	 2	 0:00	1:00	S
# Decree 92,310 (1986-01-21)
# Decree 92,463 (1986-03-13)
Rule	Brazil	1986	only	-	Mar	15	 0:00	0	-
# Decree 93,316 (1986-10-01)
Rule	Brazil	1986	only	-	Oct	25	 0:00	1:00	S
Rule	Brazil	1987	only	-	Feb	14	 0:00	0	-
# Decree 94,922 <http://pcdsh01.on.br/HV94922.htm> (1987-09-22)
Rule	Brazil	1987	only	-	Oct	25	 0:00	1:00	S
Rule	Brazil	1988	only	-	Feb	 7	 0:00	0	-
# Decree 96,676 <http://pcdsh01.on.br/HV96676.htm> (1988-09-12)
# except for the states of AC, AM, PA, RR, RO, and AP (then a territory)
Rule	Brazil	1988	only	-	Oct	16	 0:00	1:00	S
Rule	Brazil	1989	only	-	Jan	29	 0:00	0	-
# Decree 98,077 <http://pcdsh01.on.br/HV98077.htm> (1989-08-21)
# with the same exceptions
Rule	Brazil	1989	only	-	Oct	15	 0:00	1:00	S
Rule	Brazil	1990	only	-	Feb	11	 0:00	0	-
# Decree 99,530 <http://pcdsh01.on.br/HV99530.htm> (1990-09-17)
# adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF.
# Decree 99,629 (1990-10-19) adds BA, MT.
Rule	Brazil	1990	only	-	Oct	21	 0:00	1:00	S
Rule	Brazil	1991	only	-	Feb	17	 0:00	0	-
# Unnumbered decree <http://pcdsh01.on.br/HV1991.htm> (1991-09-25)
# adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF.
Rule	Brazil	1991	only	-	Oct	20	 0:00	1:00	S
Rule	Brazil	1992	only	-	Feb	 9	 0:00	0	-
# Unnumbered decree <http://pcdsh01.on.br/HV1992.htm> (1992-10-16)
# adopted by same states.
Rule	Brazil	1992	only	-	Oct	25	 0:00	1:00	S
Rule	Brazil	1993	only	-	Jan	31	 0:00	0	-
# Decree 942 <http://pcdsh01.on.br/HV942.htm> (1993-09-28)
# adopted by same states, plus AM.
# Decree 1,252 <http://pcdsh01.on.br/HV1252.htm> (1994-09-22;
# web page corrected 2004-01-07) adopted by same states, minus AM.
# Decree 1,636 <http://pcdsh01.on.br/HV1636.htm> (1995-09-14)
# adopted by same states, plus MT and TO.
# Decree 1,674 <http://pcdsh01.on.br/HV1674.htm> (1995-10-13)
# adds AL, SE.
Rule	Brazil	1993	1995	-	Oct	Sun>=11	 0:00	1:00	S
Rule	Brazil	1994	1995	-	Feb	Sun>=15	 0:00	0	-
Rule	Brazil	1996	only	-	Feb	11	 0:00	0	-
# Decree 2,000 <http://pcdsh01.on.br/HV2000.htm> (1996-09-04)
# adopted by same states, minus AL, SE.
Rule	Brazil	1996	only	-	Oct	 6	 0:00	1:00	S
Rule	Brazil	1997	only	-	Feb	16	 0:00	0	-
# From Daniel C. Sobral (1998-02-12):
# In 1997, the DS began on October 6. The stated reason was that
# because international television networks ignored Brazil's policy on DS,
# they bought the wrong times on satellite for coverage of Pope's visit.
# This year, the ending date of DS was postponed to March 1
# to help dealing with the shortages of electric power.
#
# Decree 2,317 (1997-09-04), adopted by same states.
Rule	Brazil	1997	only	-	Oct	 6	 0:00	1:00	S
# Decree 2,495 <http://pcdsh01.on.br/figuras/HV2495.JPG>
# (1998-02-10)
Rule	Brazil	1998	only	-	Mar	 1	 0:00	0	-
# Decree 2,780 <http://pcdsh01.on.br/figuras/Hv98.jpg> (1998-09-11)
# adopted by the same states as before.
Rule	Brazil	1998	only	-	Oct	11	 0:00	1:00	S
Rule	Brazil	1999	only	-	Feb	21	 0:00	0	-
# Decree 3,150 <http://pcdsh01.on.br/figuras/HV3150.gif>
# (1999-08-23) adopted by same states.
# Decree 3,188 <http://pcdsh01.on.br/DecHV99.gif> (1999-09-30)
# adds SE, AL, PB, PE, RN, CE, PI, MA and RR.
Rule	Brazil	1999	only	-	Oct	 3	 0:00	1:00	S
Rule	Brazil	2000	only	-	Feb	27	 0:00	0	-
# Decree 3,592 <http://pcdsh01.on.br/DEC3592.htm> (2000-09-06)
# adopted by the same states as before.
# Decree 3,630 <http://pcdsh01.on.br/Dec3630.jpg> (2000-10-13)
# repeals DST in PE and RR, effective 2000-10-15 00:00.
# Decree 3,632 <http://pcdsh01.on.br/Dec3632.jpg> (2000-10-17)
# repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00.
# Decree 3,916 <http://pcdsh01.on.br/figuras/HV3916.gif>
# (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE.
Rule	Brazil	2000	2001	-	Oct	Sun>=8	 0:00	1:00	S
Rule	Brazil	2001	2006	-	Feb	Sun>=15	 0:00	0	-
# Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE.
# 4,399 <http://www.presidencia.gov.br/CCIVIL/decreto/2002/D4399.htm>
Rule	Brazil	2002	only	-	Nov	 3	 0:00	1:00	S
# Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.
# 4,844 <http://www.presidencia.gov.br/CCIVIL/decreto/2003/D4844.htm>
Rule	Brazil	2003	only	-	Oct	19	 0:00	1:00	S
# Decree 5,223 (2004-10-01) reestablishes DST in MT.
# 5,223 <http://www.planalto.gov.br/ccivil_03/_Ato2004-2006/2004/Decreto/D5223.htm>
Rule	Brazil	2004	only	-	Nov	 2	 0:00	1:00	S
# Decree 5,539 <http://pcdsh01.on.br/DecHV5539.gif> (2005-09-19),
# adopted by the same states as before.
Rule	Brazil	2005	only	-	Oct	16	 0:00	1:00	S
# Decree 5,920 <http://pcdsh01.on.br/DecHV5920.gif> (2006-10-03),
# adopted by the same states as before.
Rule	Brazil	2006	only	-	Nov	 5	 0:00	1:00	S
Rule	Brazil	2007	only	-	Feb	25	 0:00	0	-
# Decree 6,212 <http://pcdsh01.on.br/DecHV6212.gif> (2007-09-26),
# adopted by the same states as before.
Rule	Brazil	2007	only	-	Oct	Sun>=8	 0:00	1:00	S
# From Frederico A. C. Neves (2008-09-10):
# According to this decree
# http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm
# [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the
# 3rd Feb Sunday. There is an exception on the return date when this is
# the Carnival Sunday then the return date will be the next Sunday...
Rule	Brazil	2008	max	-	Oct	Sun>=15	0:00	1:00	S
Rule	Brazil	2008	2011	-	Feb	Sun>=15	0:00	0	-
Rule	Brazil	2012	only	-	Feb	Sun>=22	0:00	0	-
Rule	Brazil	2013	2014	-	Feb	Sun>=15	0:00	0	-
Rule	Brazil	2015	only	-	Feb	Sun>=22	0:00	0	-
Rule	Brazil	2016	2022	-	Feb	Sun>=15	0:00	0	-
Rule	Brazil	2023	only	-	Feb	Sun>=22	0:00	0	-
Rule	Brazil	2024	2025	-	Feb	Sun>=15	0:00	0	-
Rule	Brazil	2026	only	-	Feb	Sun>=22	0:00	0	-
Rule	Brazil	2027	2033	-	Feb	Sun>=15	0:00	0	-
Rule	Brazil	2034	only	-	Feb	Sun>=22	0:00	0	-
Rule	Brazil	2035	2036	-	Feb	Sun>=15	0:00	0	-
Rule	Brazil	2037	only	-	Feb	Sun>=22	0:00	0	-
# From Arthur David Olson (2008-09-29):
# The next is wrong in some years but is better than nothing.
Rule	Brazil	2038	max	-	Feb	Sun>=15	0:00	0	-

# The latest ruleset listed above says that the following states observe DST:
# DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.

# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
#
# Fernando de Noronha (administratively part of PE)
Zone America/Noronha	-2:09:40 -	LMT	1914
			-2:00	Brazil	FN%sT	1990 Sep 17
			-2:00	-	FNT	1999 Sep 30
			-2:00	Brazil	FN%sT	2000 Oct 15
			-2:00	-	FNT	2001 Sep 13
			-2:00	Brazil	FN%sT	2002 Oct  1
			-2:00	-	FNT
# Other Atlantic islands have no permanent settlement.
# These include Trindade and Martim Vaz (administratively part of ES),
# Rocas Atoll (RN), and the St Peter and St Paul Archipelago (PE).
# Fernando de Noronha was a separate territory from 1942-09-02 to 1989-01-01;
# it also included the Penedos.
#
# Amapá (AP), east Pará (PA)
# East Pará includes Belém, Marabá, Serra Norte, and São Félix do Xingu.
# The division between east and west Pará is the river Xingu.
# In the north a very small part from the river Javary (now Jari I guess,
# the border with Amapá) to the Amazon, then to the Xingu.
Zone America/Belem	-3:13:56 -	LMT	1914
			-3:00	Brazil	BR%sT	1988 Sep 12
			-3:00	-	BRT
#
# west Pará (PA)
# West Pará includes Altamira, Óbidos, Prainha, Oriximiná, and Santarém.
Zone America/Santarem	-3:38:48 -	LMT	1914
			-4:00	Brazil	AM%sT	1988 Sep 12
			-4:00	-	AMT	2008 Jun 24  0:00
			-3:00	-	BRT
#
# Maranhão (MA), Piauí (PI), Ceará (CE), Rio Grande do Norte (RN),
# Paraíba (PB)
Zone America/Fortaleza	-2:34:00 -	LMT	1914
			-3:00	Brazil	BR%sT	1990 Sep 17
			-3:00	-	BRT	1999 Sep 30
			-3:00	Brazil	BR%sT	2000 Oct 22
			-3:00	-	BRT	2001 Sep 13
			-3:00	Brazil	BR%sT	2002 Oct  1
			-3:00	-	BRT
#
# Pernambuco (PE) (except Atlantic islands)
Zone America/Recife	-2:19:36 -	LMT	1914
			-3:00	Brazil	BR%sT	1990 Sep 17
			-3:00	-	BRT	1999 Sep 30
			-3:00	Brazil	BR%sT	2000 Oct 15
			-3:00	-	BRT	2001 Sep 13
			-3:00	Brazil	BR%sT	2002 Oct  1
			-3:00	-	BRT
#
# Tocantins (TO)
Zone America/Araguaina	-3:12:48 -	LMT	1914
			-3:00	Brazil	BR%sT	1990 Sep 17
			-3:00	-	BRT	1995 Sep 14
			-3:00	Brazil	BR%sT	2003 Sep 24
			-3:00	-	BRT	2012 Oct 21
			-3:00	Brazil	BR%sT	2013 Sep
			-3:00	-	BRT
#
# Alagoas (AL), Sergipe (SE)
Zone America/Maceio	-2:22:52 -	LMT	1914
			-3:00	Brazil	BR%sT	1990 Sep 17
			-3:00	-	BRT	1995 Oct 13
			-3:00	Brazil	BR%sT	1996 Sep  4
			-3:00	-	BRT	1999 Sep 30
			-3:00	Brazil	BR%sT	2000 Oct 22
			-3:00	-	BRT	2001 Sep 13
			-3:00	Brazil	BR%sT	2002 Oct  1
			-3:00	-	BRT
#
# Bahia (BA)
# There are too many Salvadors elsewhere, so use America/Bahia instead
# of America/Salvador.
Zone America/Bahia	-2:34:04 -	LMT	1914
			-3:00	Brazil	BR%sT	2003 Sep 24
			-3:00	-	BRT	2011 Oct 16
			-3:00	Brazil	BR%sT	2012 Oct 21
			-3:00	-	BRT
#
# Goiás (GO), Distrito Federal (DF), Minas Gerais (MG),
# Espírito Santo (ES), Rio de Janeiro (RJ), São Paulo (SP), Paraná (PR),
# Santa Catarina (SC), Rio Grande do Sul (RS)
Zone America/Sao_Paulo	-3:06:28 -	LMT	1914
			-3:00	Brazil	BR%sT	1963 Oct 23  0:00
			-3:00	1:00	BRST	1964
			-3:00	Brazil	BR%sT
#
# Mato Grosso do Sul (MS)
Zone America/Campo_Grande -3:38:28 -	LMT	1914
			-4:00	Brazil	AM%sT
#
# Mato Grosso (MT)
Zone America/Cuiaba	-3:44:20 -	LMT	1914
			-4:00	Brazil	AM%sT	2003 Sep 24
			-4:00	-	AMT	2004 Oct  1
			-4:00	Brazil	AM%sT
#
# Rondônia (RO)
Zone America/Porto_Velho -4:15:36 -	LMT	1914
			-4:00	Brazil	AM%sT	1988 Sep 12
			-4:00	-	AMT
#
# Roraima (RR)
Zone America/Boa_Vista	-4:02:40 -	LMT	1914
			-4:00	Brazil	AM%sT	1988 Sep 12
			-4:00	-	AMT	1999 Sep 30
			-4:00	Brazil	AM%sT	2000 Oct 15
			-4:00	-	AMT
#
# east Amazonas (AM): Boca do Acre, Jutaí, Manaus, Floriano Peixoto
# The great circle line from Tabatinga to Porto Acre divides
# east from west Amazonas.
Zone America/Manaus	-4:00:04 -	LMT	1914
			-4:00	Brazil	AM%sT	1988 Sep 12
			-4:00	-	AMT	1993 Sep 28
			-4:00	Brazil	AM%sT	1994 Sep 22
			-4:00	-	AMT
#
# west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,
#	Eirunepé, Envira, Ipixuna
Zone America/Eirunepe	-4:39:28 -	LMT	1914
			-5:00	Brazil	AC%sT	1988 Sep 12
			-5:00	-	ACT	1993 Sep 28
			-5:00	Brazil	AC%sT	1994 Sep 22
			-5:00	-	ACT	2008 Jun 24  0:00
			-4:00	-	AMT	2013 Nov 10
			-5:00	-	ACT
#
# Acre (AC)
Zone America/Rio_Branco	-4:31:12 -	LMT	1914
			-5:00	Brazil	AC%sT	1988 Sep 12
			-5:00	-	ACT	2008 Jun 24  0:00
			-4:00	-	AMT	2013 Nov 10
			-5:00	-	ACT

# Chile

# From Paul Eggert (2015-04-03):
# Shanks & Pottenger says America/Santiago introduced standard time in
# 1890 and rounds its UTC offset to 70W40; guess that in practice this
# was the same offset as in 1916-1919.  It also says Pacific/Easter
# standardized on 109W22 in 1890; assume this didn't change the clocks.
#
# Dates for America/Santiago from 1910 to 2004 are primarily from
# the following source, cited by Oscar van Vlijmen (2006-10-08):
# [1] Chile Law
# http://www.webexhibits.org/daylightsaving/chile.html
# This contains a copy of a this official table:
# Cambios en la hora oficial de Chile desde 1900 (retrieved 2008-03-30)
# http://web.archive.org/web/20080330200901/http://www.horaoficial.cl/cambio.htm
# [1] needs several corrections, though.
#
# The first set of corrections is from:
# [2] History of the Official Time of Chile
# http://www.horaoficial.cl/ing/horaof_ing.html (retrieved 2012-03-06).  See:
# http://web.archive.org/web/20120306042032/http://www.horaoficial.cl/ing/horaof_ing.html
# This is an English translation of:
# Historia de la hora oficial de Chile (retrieved 2012-10-24).  See:
# http://web.archive.org/web/20121024234627/http://www.horaoficial.cl/horaof.htm
# A fancier Spanish version (requiring mouse-clicking) is at:
# http://www.horaoficial.cl/historia_hora.html
# Conflicts between [1] and [2] were resolved as follows:
#
#  - [1] says the 1910 transition was Jan 1, [2] says Jan 10 and cites
#    Boletín No. 1, Aviso No. 1 (1910).  Go with [2].
#
#  - [1] says SMT was -4:42:45, [2] says Chile's official time from
#    1916 to 1919 was -4:42:46.3, the meridian of Chile's National
#    Astronomical Observatory (OAN), then located in what is now
#    Quinta Normal in Santiago.  Go with [2], rounding it to -4:42:46.
#
#  - [1] says the 1918 transition was Sep 1, [2] says Sep 10 and cites
#    Boletín No. 22, Aviso No. 129/1918 (1918-08-23).  Go with [2].
#
#  - [1] does not give times for transitions; assume they occur
#    at midnight mainland time, the current common practice.  However,
#    go with [2]'s specification of 23:00 for the 1947-05-21 transition.
#
# Another correction to [1] is from Jesper Nørgaard Welen, who
# wrote (2006-10-08), "I think that there are some obvious mistakes in
# the suggested link from Oscar van Vlijmen,... for instance entry 66
# says that GMT-4 ended 1990-09-12 while entry 67 only begins GMT-3 at
# 1990-09-15 (they should have been 1990-09-15 and 1990-09-16
# respectively), but anyhow it clears up some doubts too."
#
# Data for Pacific/Easter from 1910 through 1967 come from Shanks &
# Pottenger.  After that, for lack of better info assume
# Pacific/Easter is always two hours behind America/Santiago;
# this is known to work for DST transitions starting in 2008 and
# may well be true for earlier transitions.

# From Eduardo Krell (1995-10-19):
# The law says to switch to DST at midnight [24:00] on the second SATURDAY
# of October....  The law is the same for March and October.
# (1998-09-29):
# Because of the drought this year, the government decided to go into
# DST earlier (saturday 9/26 at 24:00). This is a one-time change only ...
# (unless there's another dry season next year, I guess).

# From Julio I. Pacheco Troncoso (1999-03-18):
# Because of the same drought, the government decided to end DST later,
# on April 3, (one-time change).

# From Germán Poo-Caamaño (2008-03-03):
# Due to drought, Chile extends Daylight Time in three weeks.  This
# is one-time change (Saturday 3/29 at 24:00 for America/Santiago
# and Saturday 3/29 at 22:00 for Pacific/Easter)
# The Supreme Decree is located at
# http://www.shoa.cl/servicios/supremo316.pdf
#
# From José Miguel Garrido (2008-03-05):
# http://www.shoa.cl/noticias/2008/04hora/hora.htm

# From Angel Chiang (2010-03-04):
# Subject: DST in Chile exceptionally extended to 3 April due to earthquake
# http://www.gobiernodechile.cl/viewNoticia.aspx?idArticulo=30098
#
# From Arthur David Olson (2010-03-06):
# Angel Chiang's message confirmed by Julio Pacheco; Julio provided a patch.

# From Glenn Eychaner (2011-03-28):
# http://diario.elmercurio.com/2011/03/28/_portada/_portada/noticias/7565897A-CA86-49E6-9E03-660B21A4883E.htm?id=3D{7565897A-CA86-49E6-9E03-660B21A4883E}
# In English:
# Chile's clocks will go back an hour this year on the 7th of May instead
# of this Saturday. They will go forward again the 3rd Saturday in
# August, not in October as they have since 1968.

# From Mauricio Parada (2012-02-22), translated by Glenn Eychaner (2012-02-23):
# As stated in the website of the Chilean Energy Ministry
# http://www.minenergia.cl/ministerio/noticias/generales/gobierno-anuncia-fechas-de-cambio-de.html
# The Chilean Government has decided to postpone the entrance into winter time
# (to leave DST) from March 11 2012 to April 28th 2012....
# Quote from the website communication:
#
# 6. For the year 2012, the dates of entry into winter time will be as follows:
# a. Saturday April 28, 2012, clocks should go back 60 minutes; that is, at
# 23:59:59, instead of passing to 0:00, the time should be adjusted to be 23:00
# of the same day.
# b. Saturday, September 1, 2012, clocks should go forward 60 minutes; that is,
# at 23:59:59, instead of passing to 0:00, the time should be adjusted to be
# 01:00 on September 2.

# From Steffen Thorsen (2013-02-15):
# According to several news sources, Chile has extended DST this year,
# they will end DST later and start DST earlier than planned.  They
# hope to save energy.  The new end date is 2013-04-28 00:00 and new
# start date is 2013-09-08 00:00....
# http://www.gob.cl/informa/2013/02/15/gobierno-anuncia-fechas-de-cambio-de-hora-para-el-ano-2013.htm

# From José Miguel Garrido (2014-02-19):
# Today appeared in the Diario Oficial a decree amending the time change
# dates to 2014.
# DST End: last Saturday of April 2014 (Sun 27 Apr 2014 03:00 UTC)
# DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC)
# http://www.diariooficial.interior.gob.cl//media/2014/02/19/do-20140219.pdf

# From Eduardo Romero Urra (2015-03-03):
# Today has been published officially that Chile will use the DST time
# permanently until March 25 of 2017
# http://www.diariooficial.interior.gob.cl/media/2015/03/03/1-large.jpg
#
# From Paul Eggert (2015-03-03):
# For now, assume that the extension will persist indefinitely.

# From Juan Correa (2016-03-18):
# The decree regarding DST has been published in today's Official Gazette:
# http://www.diariooficial.interior.gob.cl/versiones-anteriores/do/20160318/
# http://www.leychile.cl/Navegar?idNorma=1088502
# It does consider the second Saturday of May and August as the dates
# for the transition; and it lists DST dates until 2019, but I think
# this scheme will stick.
#
# From Paul Eggert (2016-03-18):
# For now, assume the pattern holds for the indefinite future.
# The decree says transitions occur at 24:00; in practice this appears
# to mean 24:00 mainland time, not 24:00 local time, so that Easter
# Island is always two hours behind the mainland.

# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Chile	1927	1931	-	Sep	 1	0:00	1:00	S
Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
Rule	Chile	1968	only	-	Nov	 3	4:00u	1:00	S
Rule	Chile	1969	only	-	Mar	30	3:00u	0	-
Rule	Chile	1969	only	-	Nov	23	4:00u	1:00	S
Rule	Chile	1970	only	-	Mar	29	3:00u	0	-
Rule	Chile	1971	only	-	Mar	14	3:00u	0	-
Rule	Chile	1970	1972	-	Oct	Sun>=9	4:00u	1:00	S
Rule	Chile	1972	1986	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	1973	only	-	Sep	30	4:00u	1:00	S
Rule	Chile	1974	1987	-	Oct	Sun>=9	4:00u	1:00	S
Rule	Chile	1987	only	-	Apr	12	3:00u	0	-
Rule	Chile	1988	1990	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	1988	1989	-	Oct	Sun>=9	4:00u	1:00	S
Rule	Chile	1990	only	-	Sep	16	4:00u	1:00	S
Rule	Chile	1991	1996	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	1991	1997	-	Oct	Sun>=9	4:00u	1:00	S
Rule	Chile	1997	only	-	Mar	30	3:00u	0	-
Rule	Chile	1998	only	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	1998	only	-	Sep	27	4:00u	1:00	S
Rule	Chile	1999	only	-	Apr	 4	3:00u	0	-
Rule	Chile	1999	2010	-	Oct	Sun>=9	4:00u	1:00	S
Rule	Chile	2000	2007	-	Mar	Sun>=9	3:00u	0	-
# N.B.: the end of March 29 in Chile is March 30 in Universal time,
# which is used below in specifying the transition.
Rule	Chile	2008	only	-	Mar	30	3:00u	0	-
Rule	Chile	2009	only	-	Mar	Sun>=9	3:00u	0	-
Rule	Chile	2010	only	-	Apr	Sun>=1	3:00u	0	-
Rule	Chile	2011	only	-	May	Sun>=2	3:00u	0	-
Rule	Chile	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
Rule	Chile	2012	2014	-	Apr	Sun>=23	3:00u	0	-
Rule	Chile	2012	2014	-	Sep	Sun>=2	4:00u	1:00	S
Rule	Chile	2016	max	-	May	Sun>=9	3:00u	0	-
Rule	Chile	2016	max	-	Aug	Sun>=9	4:00u	1:00	S
# IATA SSIM anomalies: (1992-02) says 1992-03-14;
# (1996-09) says 1998-03-08.  Ignore these.
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Santiago	-4:42:46 -	LMT	1890
			-4:42:46 -	SMT	1910 Jan 10 # Santiago Mean Time
			-5:00	-	CLT	1916 Jul  1 # Chile Time
			-4:42:46 -	SMT	1918 Sep 10
			-4:00	-	CLT	1919 Jul  1
			-4:42:46 -	SMT	1927 Sep  1
			-5:00	Chile	CL%sT	1932 Sep  1
			-4:00	-	CLT	1942 Jun  1
			-5:00	-	CLT	1942 Aug  1
			-4:00	-	CLT	1946 Jul 15
			-4:00	1:00	CLST	1946 Sep  1 # central Chile
			-4:00	-	CLT	1947 Apr  1
			-5:00	-	CLT	1947 May 21 23:00
			-4:00	Chile	CL%sT
Zone Pacific/Easter	-7:17:28 -	LMT	1890
			-7:17:28 -	EMT	1932 Sep    # Easter Mean Time
			-7:00	Chile	EAS%sT	1982 Mar 14 3:00u # Easter Time
			-6:00	Chile	EAS%sT
#
# Salas y Gómez Island is uninhabited.
# Other Chilean locations, including Juan Fernández Is, Desventuradas Is,
# and Antarctic bases, are like America/Santiago.

# Antarctic base using South American rules
# (See the file 'antarctica' for more.)
#
# Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
#
# From Ethan Dicks (1996-10-06):
# It keeps the same time as Punta Arenas, Chile, because, just like us
# and the South Pole, that's the other end of their supply line....
# I verified with someone who was there that since 1980,
# Palmer has followed Chile.  Prior to that, before the Falklands War,
# Palmer used to be supplied from Argentina.
#
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone Antarctica/Palmer	0	-	-00	1965
			-4:00	Arg	AR%sT	1969 Oct  5
			-3:00	Arg	AR%sT	1982 May
			-4:00	Chile	CL%sT

# Colombia

# Milne gives 4:56:16.4 for Bogotá time in 1899; round to nearest.  He writes,
# "A variation of fifteen minutes in the public clocks of Bogota is not rare."

# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	CO	1992	only	-	May	 3	0:00	1:00	S
Rule	CO	1993	only	-	Apr	 4	0:00	0	-
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	America/Bogota	-4:56:16 -	LMT	1884 Mar 13
			-4:56:16 -	BMT	1914 Nov 23 # Bogotá Mean Time
			-5:00	CO	CO%sT	# Colombia Time
# Malpelo, Providencia, San Andres
# no information; probably like America/Bogota

# Curaçao

# Milne gives 4:35:46.9 for Curaçao mean time; round to nearest.
#
# From Paul Eggert (2006-03-22):
# Shanks & Pottenger say that The Bottom and Philipsburg have been at
# -4:00 since standard time was introduced on 1912-03-02; and that
# Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
# 1912-02-02 to 1965-01-01.  The former is dubious, since S&P also say
# Saba Island has been like Curaçao.
# This all predates our 1970 cutoff, though.
#
# By July 2007 Curaçao and St Maarten are planned to become
# associated states within the Netherlands, much like Aruba;
# Bonaire, Saba and St Eustatius would become directly part of the
# Netherlands as Kingdom Islands.  This won't affect their time zones
# though, as far as we know.
#
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	America/Curacao	-4:35:47 -	LMT	1912 Feb 12 # Willemstad
			-4:30	-	ANT	1965 # Netherlands Antilles Time
			-4:00	-	AST

# From Arthur David Olson (2011-06-15):
# use links for places with new iso3166 codes.
# The name "Lower Prince's Quarter" is both longer than fourteen characters
# and contains an apostrophe; use "Lower_Princes" below.

Link	America/Curacao	America/Lower_Princes	# Sint Maarten
Link	America/Curacao	America/Kralendijk	# Caribbean Netherlands

# Ecuador
#
# Milne says the Central and South American Telegraph Company used -5:24:15.
#
# From Paul Eggert (2007-03-04):
# Apparently Ecuador had a failed experiment with DST in 1992.
# <http://midena.gov.ec/content/view/1261/208/> (2007-02-27) and
# <http://www.hoy.com.ec/NoticiaNue.asp?row_id=249856> (2006-11-06) both
# talk about "hora Sixto".  Leave this alone for now, as we have no data.
#
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Guayaquil	-5:19:20 -	LMT	1890
			-5:14:00 -	QMT	1931 # Quito Mean Time
			-5:00	-	ECT	# Ecuador Time
Zone Pacific/Galapagos	-5:58:24 -	LMT	1931 # Puerto Baquerizo Moreno
			-5:00	-	ECT	1986
			-6:00	-	GALT	# Galápagos Time

# Falklands

# From Paul Eggert (2006-03-22):
# Between 1990 and 2000 inclusive, Shanks & Pottenger and the IATA agree except
# the IATA gives 1996-09-08.  Go with Shanks & Pottenger.

# From Falkland Islands Government Office, London (2001-01-22)
# via Jesper Nørgaard:
# ... the clocks revert back to Local Mean Time at 2 am on Sunday 15
# April 2001 and advance one hour to summer time at 2 am on Sunday 2
# September.  It is anticipated that the clocks will revert back at 2
# am on Sunday 21 April 2002 and advance to summer time at 2 am on
# Sunday 1 September.

# From Rives McDow (2001-02-13):
#
# I have communicated several times with people there, and the last
# time I had communications that was helpful was in 1998.  Here is
# what was said then:
#
# "The general rule was that Stanley used daylight saving and the Camp
# did not. However for various reasons many people in the Camp have
# started to use daylight saving (known locally as 'Stanley Time')
# There is no rule as to who uses daylight saving - it is a matter of
# personal choice and so it is impossible to draw a map showing who
# uses it and who does not. Any list would be out of date as soon as
# it was produced. This year daylight saving ended on April 18/19th
# and started again on September 12/13th.  I do not know what the rule
# is, but can find out if you like.  We do not change at the same time
# as UK or Chile."
#
# I did have in my notes that the rule was "Second Saturday in Sep at
# 0:00 until third Saturday in Apr at 0:00".  I think that this does
# not agree in some cases with Shanks; is this true?
#
# Also, there is no mention in the list that some areas in the
# Falklands do not use DST.  I have found in my communications there
# that these areas are on the western half of East Falkland and all of
# West Falkland.  Stanley is the only place that consistently observes
# DST.  Again, as in other places in the world, the farmers don't like
# it.  West Falkland is almost entirely sheep farmers.
#
# I know one lady there that keeps a list of which farm keeps DST and
# which doesn't each year.  She runs a shop in Stanley, and says that
# the list changes each year.  She uses it to communicate to her
# customers, catching them when they are home for lunch or dinner.

# From Paul Eggert (2001-03-05):
# For now, we'll just record the time in Stanley, since we have no
# better info.

# From Steffen Thorsen (2011-04-01):
# The Falkland Islands will not turn back clocks this winter, but stay on
# daylight saving time.
#
# One source:
# http://www.falklandnews.com/public/story.cfm?get=5914&source=3
#
# We have gotten this confirmed by a clerk of the legislative assembly:
# Normally the clocks revert to Local Mean Time (UTC/GMT -4 hours) on the
# third Sunday of April at 0200hrs and advance to Summer Time (UTC/GMT -3
# hours) on the first Sunday of September at 0200hrs.
#
# IMPORTANT NOTE: During 2011, on a trial basis, the Falkland Islands
# will not revert to local mean time, but clocks will remain on Summer
# time (UTC/GMT - 3 hours) throughout the whole of 2011.  Any long term
# change to local time following the trial period will be notified.
#
# From Andrew Newman (2012-02-24)
# A letter from Justin McPhee, Chief Executive,
# Cable & Wireless Falkland Islands (dated 2012-02-22)
# states...
#   The current Atlantic/Stanley entry under South America expects the
#   clocks to go back to standard Falklands Time (FKT) on the 15th April.
#   The database entry states that in 2011 Stanley was staying on fixed
#   summer time on a trial basis only.  FIG need to contact IANA and/or
#   the maintainers of the database to inform them we're adopting
#   the same policy this year and suggest recommendations for future years.
#
# For now we will assume permanent summer time for the Falklands
# until advised differently (to apply for 2012 and beyond, after the 2011
# experiment was apparently successful.)
# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Falk	1937	1938	-	Sep	lastSun	0:00	1:00	S
Rule	Falk	1938	1942	-	Mar	Sun>=19	0:00	0	-
Rule	Falk	1939	only	-	Oct	1	0:00	1:00	S
Rule	Falk	1940	1942	-	Sep	lastSun	0:00	1:00	S
Rule	Falk	1943	only	-	Jan	1	0:00	0	-
Rule	Falk	1983	only	-	Sep	lastSun	0:00	1:00	S
Rule	Falk	1984	1985	-	Apr	lastSun	0:00	0	-
Rule	Falk	1984	only	-	Sep	16	0:00	1:00	S
Rule	Falk	1985	2000	-	Sep	Sun>=9	0:00	1:00	S
Rule	Falk	1986	2000	-	Apr	Sun>=16	0:00	0	-
Rule	Falk	2001	2010	-	Apr	Sun>=15	2:00	0	-
Rule	Falk	2001	2010	-	Sep	Sun>=1	2:00	1:00	S
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone Atlantic/Stanley	-3:51:24 -	LMT	1890
			-3:51:24 -	SMT	1912 Mar 12 # Stanley Mean Time
			-4:00	Falk	FK%sT	1983 May    # Falkland Is Time
			-3:00	Falk	FK%sT	1985 Sep 15
			-4:00	Falk	FK%sT	2010 Sep  5  2:00
			-3:00	-	FKST

# French Guiana
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Cayenne	-3:29:20 -	LMT	1911 Jul
			-4:00	-	GFT	1967 Oct # French Guiana Time
			-3:00	-	GFT

# Guyana
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	America/Guyana	-3:52:40 -	LMT	1915 Mar    # Georgetown
			-3:45	-	GBGT	1966 May 26 # Br Guiana Time
			-3:45	-	GYT	1975 Jul 31 # Guyana Time
			-3:00	-	GYT	1991
# IATA SSIM (1996-06) says -4:00.  Assume a 1991 switch.
			-4:00	-	GYT

# Paraguay
#
# From Paul Eggert (2006-03-22):
# Shanks & Pottenger say that spring transitions are 01:00 -> 02:00,
# and autumn transitions are 00:00 -> 23:00.  Go with pre-1999
# editions of Shanks, and with the IATA, who say transitions occur at 00:00.
#
# From Waldemar Villamayor-Venialbo (2013-09-20):
# No time of the day is established for the adjustment, so people normally
# adjust their clocks at 0 hour of the given dates.
#
# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Para	1975	1988	-	Oct	 1	0:00	1:00	S
Rule	Para	1975	1978	-	Mar	 1	0:00	0	-
Rule	Para	1979	1991	-	Apr	 1	0:00	0	-
Rule	Para	1989	only	-	Oct	22	0:00	1:00	S
Rule	Para	1990	only	-	Oct	 1	0:00	1:00	S
Rule	Para	1991	only	-	Oct	 6	0:00	1:00	S
Rule	Para	1992	only	-	Mar	 1	0:00	0	-
Rule	Para	1992	only	-	Oct	 5	0:00	1:00	S
Rule	Para	1993	only	-	Mar	31	0:00	0	-
Rule	Para	1993	1995	-	Oct	 1	0:00	1:00	S
Rule	Para	1994	1995	-	Feb	lastSun	0:00	0	-
Rule	Para	1996	only	-	Mar	 1	0:00	0	-
# IATA SSIM (2000-02) says 1999-10-10; ignore this for now.
# From Steffen Thorsen (2000-10-02):
# I have three independent reports that Paraguay changed to DST this Sunday
# (10-01).
#
# Translated by Gwillim Law (2001-02-27) from
# Noticias, a daily paper in Asunción, Paraguay (2000-10-01):
# http://www.diarionoticias.com.py/011000/nacional/naciona1.htm
# Starting at 0:00 today, the clock will be set forward 60 minutes, in
# fulfillment of Decree No. 7,273 of the Executive Power....  The time change
# system has been operating for several years.  Formerly there was a separate
# decree each year; the new law has the same effect, but permanently.  Every
# year, the time will change on the first Sunday of October; likewise, the
# clock will be set back on the first Sunday of March.
#
Rule	Para	1996	2001	-	Oct	Sun>=1	0:00	1:00	S
# IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger.
Rule	Para	1997	only	-	Feb	lastSun	0:00	0	-
# Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but
# (1999-09) reports no date; go with above sources and Gerd Knops (2001-02-27).
Rule	Para	1998	2001	-	Mar	Sun>=1	0:00	0	-
# From Rives McDow (2002-02-28):
# A decree was issued in Paraguay (No. 16350) on 2002-02-26 that changed the
# dst method to be from the first Sunday in September to the first Sunday in
# April.
Rule	Para	2002	2004	-	Apr	Sun>=1	0:00	0	-
Rule	Para	2002	2003	-	Sep	Sun>=1	0:00	1:00	S
#
# From Jesper Nørgaard Welen (2005-01-02):
# There are several sources that claim that Paraguay made
# a timezone rule change in autumn 2004.
# From Steffen Thorsen (2005-01-05):
# Decree 1,867 (2004-03-05)
# From Carlos Raúl Perasso via Jesper Nørgaard Welen (2006-10-13)
# http://www.presidencia.gov.py/decretos/D1867.pdf
Rule	Para	2004	2009	-	Oct	Sun>=15	0:00	1:00	S
Rule	Para	2005	2009	-	Mar	Sun>=8	0:00	0	-
# From Carlos Raúl Perasso (2010-02-18):
# By decree number 3958 issued yesterday
# http://www.presidencia.gov.py/v1/wp-content/uploads/2010/02/decreto3958.pdf
# Paraguay changes its DST schedule, postponing the March rule to April and
# modifying the October date. The decree reads:
# ...
# Art. 1. It is hereby established that from the second Sunday of the month of
# April of this year (2010), the official time is to be set back 60 minutes,
# and that on the first Sunday of the month of October, it is to be set
# forward 60 minutes, in all the territory of the Paraguayan Republic.
# ...
Rule	Para	2010	max	-	Oct	Sun>=1	0:00	1:00	S
Rule	Para	2010	2012	-	Apr	Sun>=8	0:00	0	-
#
# From Steffen Thorsen (2013-03-07):
# Paraguay will end DST on 2013-03-24 00:00....
# http://www.ande.gov.py/interna.php?id=1075
#
# From Carlos Raúl Perasso (2013-03-15):
# The change in Paraguay is now final.  Decree number 10780
# http://www.presidencia.gov.py/uploads/pdf/presidencia-3b86ff4b691c79d4f5927ca964922ec74772ce857c02ca054a52a37b49afc7fb.pdf
# From Carlos Raúl Perasso (2014-02-28):
# Decree 1264 can be found at:
# http://www.presidencia.gov.py/archivos/documentos/DECRETO1264_ey9r8zai.pdf
Rule	Para	2013	max	-	Mar	Sun>=22	0:00	0	-

# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Asuncion	-3:50:40 -	LMT	1890
			-3:50:40 -	AMT	1931 Oct 10 # Asunción Mean Time
			-4:00	-	PYT	1972 Oct    # Paraguay Time
			-3:00	-	PYT	1974 Apr
			-4:00	Para	PY%sT

# Peru
#
# From Evelyn C. Leeper via Mark Brader (2003-10-26)
# <news:xrGmb.39935$gA1.13896113@news4.srv.hcvlny.cv.net>:
# When we were in Peru in 1985-1986, they apparently switched over
# sometime between December 29 and January 3 while we were on the Amazon.
#
# From Paul Eggert (2006-03-22):
# Shanks & Pottenger don't have this transition.  Assume 1986 was like 1987.

# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
Rule	Peru	1938	only	-	Jan	 1	0:00	1:00	S
Rule	Peru	1938	only	-	Apr	 1	0:00	0	-
Rule	Peru	1938	1939	-	Sep	lastSun	0:00	1:00	S
Rule	Peru	1939	1940	-	Mar	Sun>=24	0:00	0	-
Rule	Peru	1986	1987	-	Jan	 1	0:00	1:00	S
Rule	Peru	1986	1987	-	Apr	 1	0:00	0	-
Rule	Peru	1990	only	-	Jan	 1	0:00	1:00	S
Rule	Peru	1990	only	-	Apr	 1	0:00	0	-
# IATA is ambiguous for 1993/1995; go with Shanks & Pottenger.
Rule	Peru	1994	only	-	Jan	 1	0:00	1:00	S
Rule	Peru	1994	only	-	Apr	 1	0:00	0	-
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	America/Lima	-5:08:12 -	LMT	1890
			-5:08:36 -	LMT	1908 Jul 28 # Lima Mean Time?
			-5:00	Peru	PE%sT	# Peru Time

# South Georgia
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone Atlantic/South_Georgia -2:26:08 -	LMT	1890 # Grytviken
			-2:00	-	GST	# South Georgia Time

# South Sandwich Is
# uninhabited; scientific personnel have wintered

# Suriname
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Paramaribo	-3:40:40 -	LMT	1911
			-3:40:52 -	PMT	1935     # Paramaribo Mean Time
			-3:40:36 -	PMT	1945 Oct    # The capital moved?
			-3:30	-	NEGT	1975 Nov 20 # Dutch Guiana Time
			-3:30	-	SRT	1984 Oct    # Suriname Time
			-3:00	-	SRT

# Trinidad and Tobago
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Port_of_Spain -4:06:04 -	LMT	1912 Mar 2
			-4:00	-	AST

# These all agree with Trinidad and Tobago since 1970.
Link America/Port_of_Spain America/Anguilla
Link America/Port_of_Spain America/Antigua
Link America/Port_of_Spain America/Dominica
Link America/Port_of_Spain America/Grenada
Link America/Port_of_Spain America/Guadeloupe
Link America/Port_of_Spain America/Marigot	# St Martin (French part)
Link America/Port_of_Spain America/Montserrat
Link America/Port_of_Spain America/St_Barthelemy # St Barthélemy
Link America/Port_of_Spain America/St_Kitts	# St Kitts & Nevis
Link America/Port_of_Spain America/St_Lucia
Link America/Port_of_Spain America/St_Thomas	# Virgin Islands (US)
Link America/Port_of_Spain America/St_Vincent
Link America/Port_of_Spain America/Tortola	# Virgin Islands (UK)

# Uruguay
# From Paul Eggert (1993-11-18):
# Uruguay wins the prize for the strangest peacetime manipulation of the rules.
# From Shanks & Pottenger:
# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
# Whitman gives 1923 Oct 1; go with Shanks & Pottenger.
Rule	Uruguay	1923	only	-	Oct	 2	 0:00	0:30	HS
Rule	Uruguay	1924	1926	-	Apr	 1	 0:00	0	-
Rule	Uruguay	1924	1925	-	Oct	 1	 0:00	0:30	HS
Rule	Uruguay	1933	1935	-	Oct	lastSun	 0:00	0:30	HS
# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman.
Rule	Uruguay	1934	1936	-	Mar	Sat>=25	23:30s	0	-
Rule	Uruguay	1936	only	-	Nov	 1	 0:00	0:30	HS
Rule	Uruguay	1937	1941	-	Mar	lastSun	 0:00	0	-
# Whitman gives 1937 Oct 3; go with Shanks & Pottenger.
Rule	Uruguay	1937	1940	-	Oct	lastSun	 0:00	0:30	HS
# Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13,
# and 1943 Apr 13 "to present time"; go with Shanks & Pottenger.
Rule	Uruguay	1941	only	-	Aug	 1	 0:00	0:30	HS
Rule	Uruguay	1942	only	-	Jan	 1	 0:00	0	-
Rule	Uruguay	1942	only	-	Dec	14	 0:00	1:00	S
Rule	Uruguay	1943	only	-	Mar	14	 0:00	0	-
Rule	Uruguay	1959	only	-	May	24	 0:00	1:00	S
Rule	Uruguay	1959	only	-	Nov	15	 0:00	0	-
Rule	Uruguay	1960	only	-	Jan	17	 0:00	1:00	S
Rule	Uruguay	1960	only	-	Mar	 6	 0:00	0	-
Rule	Uruguay	1965	1967	-	Apr	Sun>=1	 0:00	1:00	S
Rule	Uruguay	1965	only	-	Sep	26	 0:00	0	-
Rule	Uruguay	1966	1967	-	Oct	31	 0:00	0	-
Rule	Uruguay	1968	1970	-	May	27	 0:00	0:30	HS
Rule	Uruguay	1968	1970	-	Dec	 2	 0:00	0	-
Rule	Uruguay	1972	only	-	Apr	24	 0:00	1:00	S
Rule	Uruguay	1972	only	-	Aug	15	 0:00	0	-
Rule	Uruguay	1974	only	-	Mar	10	 0:00	0:30	HS
Rule	Uruguay	1974	only	-	Dec	22	 0:00	1:00	S
Rule	Uruguay	1976	only	-	Oct	 1	 0:00	0	-
Rule	Uruguay	1977	only	-	Dec	 4	 0:00	1:00	S
Rule	Uruguay	1978	only	-	Apr	 1	 0:00	0	-
Rule	Uruguay	1979	only	-	Oct	 1	 0:00	1:00	S
Rule	Uruguay	1980	only	-	May	 1	 0:00	0	-
Rule	Uruguay	1987	only	-	Dec	14	 0:00	1:00	S
Rule	Uruguay	1988	only	-	Mar	14	 0:00	0	-
Rule	Uruguay	1988	only	-	Dec	11	 0:00	1:00	S
Rule	Uruguay	1989	only	-	Mar	12	 0:00	0	-
Rule	Uruguay	1989	only	-	Oct	29	 0:00	1:00	S
# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2,
# and that 1992/3's DST was from 10-25 to 03-01.  Go with IATA.
Rule	Uruguay	1990	1992	-	Mar	Sun>=1	 0:00	0	-
Rule	Uruguay	1990	1991	-	Oct	Sun>=21	 0:00	1:00	S
Rule	Uruguay	1992	only	-	Oct	18	 0:00	1:00	S
Rule	Uruguay	1993	only	-	Feb	28	 0:00	0	-
# From Eduardo Cota (2004-09-20):
# The Uruguayan government has decreed a change in the local time....
# http://www.presidencia.gub.uy/decretos/2004091502.htm
Rule	Uruguay	2004	only	-	Sep	19	 0:00	1:00	S
# From Steffen Thorsen (2005-03-11):
# Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to
# save energy ... it was postponed two weeks....
# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm
Rule	Uruguay	2005	only	-	Mar	27	 2:00	0	-
# From Eduardo Cota (2005-09-27):
# http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF
# This means that from 2005-10-09 at 02:00 local time, until 2006-03-12 at
# 02:00 local time, official time in Uruguay will be at GMT -2.
Rule	Uruguay	2005	only	-	Oct	 9	 2:00	1:00	S
Rule	Uruguay	2006	only	-	Mar	12	 2:00	0	-
# From Jesper Nørgaard Welen (2006-09-06):
# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF
#
# From Steffen Thorsen (2015-06-30):
# ... it looks like they will not be using DST the coming summer:
# http://www.elobservador.com.uy/gobierno-resolvio-que-no-habra-cambio-horario-verano-n656787
# http://www.republica.com.uy/este-ano-no-se-modificara-el-huso-horario-en-uruguay/523760/
# From Paul Eggert (2015-06-30):
# Apparently restaurateurs complained that DST caused people to go to the beach
# instead of out to dinner.
# From Pablo Camargo (2015-07-13):
# http://archivo.presidencia.gub.uy/sci/decretos/2015/06/cons_min_201.pdf
# [dated 2015-06-29; repeals Decree 311/006 dated 2006-09-04]
Rule	Uruguay	2006	2014	-	Oct	Sun>=1	 2:00	1:00	S
Rule	Uruguay	2007	2015	-	Mar	Sun>=8	 2:00	0	-
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone America/Montevideo	-3:44:44 -	LMT	1898 Jun 28
			-3:44:44 -	MMT	1920 May  1 # Montevideo MT
			-3:30	Uruguay	UY%sT	1942 Dec 14 # Uruguay Time
			-3:00	Uruguay	UY%sT

# Venezuela
#
# From Paul Eggert (2015-07-28):
# For the 1965 transition see Gaceta Oficial No. 27.619 (1964-12-15), p 205.533
# http://www.pgr.gob.ve/dmdocuments/1964/27619.pdf
#
# From John Stainforth (2007-11-28):
# ... the change for Venezuela originally expected for 2007-12-31 has
# been brought forward to 2007-12-09.  The official announcement was
# published today in the "Gaceta Oficial de la República Bolivariana
# de Venezuela, número 38.819" (official document for all laws or
# resolution publication)
# http://www.globovision.com/news.php?nid=72208

# From Alexander Krivenyshev (2016-04-15):
# https://actualidad.rt.com/actualidad/204758-venezuela-modificar-huso-horario-sequia-elnino
#
# From Paul Eggert (2016-04-15):
# Clocks advance 30 minutes on 2016-05-01 at 02:30....
# "'Venezuela's new time-zone: hours without light, hours without water,
# hours of presidential broadcasts, hours of lines,' quipped comedian
# Jean Mary Curró ...". See: Cawthorne A, Kai D. Venezuela scraps
# half-hour time difference set by Chavez. Reuters 2016-04-15 14:50 -0400
# http://www.reuters.com/article/us-venezuela-timezone-idUSKCN0XC2BE
#
# From Matt Johnson (2016-04-20):
# ... published in the official Gazette [2016-04-18], here:
# http://historico.tsj.gob.ve/gaceta_ext/abril/1842016/E-1842016-4551.pdf

# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	America/Caracas	-4:27:44 -	LMT	1890
			-4:27:40 -	CMT	1912 Feb 12 # Caracas Mean Time?
			-4:30	-	VET	1965 Jan  1  0:00 # Venezuela T.
			-4:00	-	VET	2007 Dec  9  3:00
			-4:30	-	VET	2016 May  1  2:30
			-4:00	-	VET
