úÎ\vXx,      !"#$%&'()*+Yitzchak Gale 2010Yitzchak Gale <gale@sefer.org>portable Safe-Inferred\The reference C implentation imposes size limits on the data structures in a timezone file.&The maximum number of transition times,The maximum number of TtInfo clock settingsAThe maximum total number of bytes in all timezone abbreviations.2The maximum number of leap second specifications.QOlson timezone files can contain leap second specifications, though most do not.CA Unix timestamp indicating the time that the leap second occurred <The new total offset of UTC from UT1 after this leap second A TtInfoi is a specification of local time in a timezone for some period during which the clocks did not change. abbr is String2 if the timezone abbreviation is represented as a String, or Int… if it is represented as an index into a long string of null-terminated abbreviation strings (as in an Olson binary timezone file). 0The offset of local clocks from UTC, in seconds $True if local clocks are summer time!The timezone abbreviation string.A TransitionTypeÿŽ is historical information about whether the official body that announced a time change specified the time of the change in terms of UTC, standard time (i.e., non-summer time) for the time zone, or the current wall clock time in the time zone. This historical trivia may seem rather boring, but unfortunately it is needed to interpret a POSIX-style TZ string timezone specification correctly.A  TransitionÈ represents a moment when the clocks change in a timezone. It consists of a Unix timestamp value that indicates the exact moment in UTC when the clocks change, and the 0-based index in the list of TtInfoM specifications for the description of the new time after the clocks change.:Unix timestamp indicating the time when the clocks change0-based index in the list of TtInfo that describes the new time OlsonData7 represents a full set of timezone data for a location. OlsonDataF can represent timezone data from files in Version 1, 2, or 3 format.ŽVersion 1 format files can only contain timestamp values that can be represented in less than 32 bits, and cannot contain a POSIX TZ string.ÿªIn a Version 2 format file, the timezone data is split into two parts. The first part contains timezone data for which all timestamp values can be represented in less than 32 bits, and the second part contains timezone data for which 32 bits or more are required to represent timestamp values. The POSIX TZ string, if present, can only be rendered in a Version 2 file, and appears after both parts of the timezone data.‹Version 3 format files relax certain syntax requirements for the POSIX TZ string. Since we represent the POSIX TZ string as an unparsed ,8, Version 3 is identical to Version 2 for our purposes.3Optional POSIX TZ string for times after the last  TransitionThe size limits in  defaultLimits are taken from the file tzfile.h from tzcode version 2010f. These are the limits for the C implementation on many platforms. limitsNoSolarv contains the tighter size limits imposed on some platforms that do not allow timezones that are based on solar time. noLimits$ imposes no size limits. If you use noLimitss when parsing, you may exhaust all available memory when reading a faulty or malicious timezone file. If you use noLimitsS when rendering, the rendered timezone file might not be readable on some systems."  -!      -Yitzchak Gale 2010Yitzchak Gale <gale@sefer.org>portable Safe-Inferred! Render a TimeZoneSeries! as a binary Olson timezone file.OIf the values in the Olson timezone data exceed the standard size limits (see ?), this function throws an exception. For other behavior, use ", #, % and . directly." Convert a TimeZoneSeries to  OlsonData for rendering.#Check whether  OlsonData is within size limits.$:Render Olson timezone data as a binary Olson timezone fileOIf the values in the Olson timezone data exceed the standard size limits (see ?), this function throws an exception. For other behavior, use #, % and . directly.%KRender Olson timezone data in binary Olson timezone file format as a lazy  ByteString&GExtract Olson timezone data that can be rendered using Version 1 format!"#$%&/012345678!"#$%&!"#$%&/012345678Yitzchak Gale 2010Yitzchak Gale <gale@sefer.org>portable Safe-Inferred+'\An exception indicating that the binary data being parsed was not valid Olson timezone data(*Convert parsed Olson timezone data into a TimeZoneSeries.)LRead timezone data from a binary Olson timezone file and convert it into a TimeZoneSeries3 for use together with the types and fucntions of  Data.TimeS. This is the function from this module for which you are most likely to have use.OIf the values in the Olson timezone file exceed the standard size limits (see ?), this function throws an exception. For other behavior, use + and 9 directly.*#Parse a binary Olson timezone file.OIf the values in the Olson timezone file exceed the standard size limits (see ?), this function throws an exception. For other behavior, use + and 9 directly.+/A binary parser for binary Olson timezone files':()*;+<=>?@ABCDEFGHIJKLM'()*+':()*;+<=>?@ABCDEFGHIJKLMYitzchak Gale 2010Yitzchak Gale <gale@sefer.org>portable Safe-Inferred,  !"#$%&'()*+,)*(+'!"$#%&   N        !"#$%&'()*+,-./0123456789:;<0=>'?@ABCDEFGHIJKLMNOPQRtimezone-olson-0.1.7"Data.Time.LocalTime.TimeZone.Olson(Data.Time.LocalTime.TimeZone.Olson.Types)Data.Time.LocalTime.TimeZone.Olson.Render(Data.Time.LocalTime.TimeZone.Olson.Parse SizeLimitsmaxTimesmaxTypes maxAbbrCharsmaxLeapsLeapInfoleapTime leapOffsetTtInfo tt_gmtofftt_isdsttt_ttypett_abbrTransitionTypeUTCWallStd Transition transTime transIndex OlsonDataolsonTransitions olsonTypes olsonLeaps olsonPosixTZ defaultLimits limitsNoSolarnoLimitsrenderTimeZoneSeriesToOlsonFiletimeZoneSeriesToOlsonverifyOlsonLimitsrenderOlsonToFileputOlsonextractOlsonV1 OlsonErrorolsonToTimeZoneSeriesgetTimeZoneSeriesFromOlsonFilegetOlsonFromFilegetOlsonbaseGHC.BaseString$fMonoidOlsonDatabinary-0.7.1.0Data.Binary.PutrunPut putOlsonPart putPosixTZ putTtInfo putLeapInfoput8bitIntegralput32bitIntegralput64bitIntegralputBooluniqputASCIIData.Binary.GetrunGet formatError getOlsonPart zipWithExtend getPosixTZ getTtInfo getLeapInfo get8bitIntgetInt32 get32bitIntget32bitIntegergetInt64get64bitIntegergetBooltoASCIIverifyverify_ throwOlson$fExceptionOlsonError$fShowOlsonError