Merge branch 'MDL-31153-master' of git://github.com/sammarshallou/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 24 Jan 2012 23:57:25 +0000 (00:57 +0100)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 24 Jan 2012 23:57:25 +0000 (00:57 +0100)
84 files changed:
admin/settings/subsystems.php
backup/util/helper/restore_decode_processor.class.php
backup/util/loggers/file_logger.class.php
blocks/navigation/renderer.php
calendar/lib.php
config-dist.php
course/format/topics/format.php
course/lib.php
enrol/externallib.php
grade/grading/lib.php
lang/en/admin.php
lang/en/question.php
lib/csslib.php [new file with mode: 0644]
lib/enrollib.php
lib/moodlelib.php
lib/outputcomponents.php
lib/portfoliolib.php
lib/simpletest/testcompletionlib.php
lib/simpletest/testcsslib.php [new file with mode: 0644]
lib/simpletest/testfilterconfig.php
lib/timezone.txt
message/lib.php
mod/forum/lib.php
mod/glossary/lib.php
mod/quiz/locallib.php
mod/quiz/renderer.php
mod/quiz/report/reportlib.php
mod/workshop/form/rubric/backup/moodle1/lib.php
question/behaviour/adaptive/simpletest/testwalkthrough.php
question/behaviour/immediatecbm/simpletest/testwalkthrough.php
question/behaviour/interactive/simpletest/testwalkthrough.php
question/editlib.php
question/engine/questionattempt.php
question/engine/questionusage.php
question/engine/simpletest/helpers.php
question/preview.php
question/type/calculated/lang/en/qtype_calculated.php
question/type/calculated/questiontype.php
question/type/calculated/simpletest/helper.php
question/type/calculated/simpletest/testquestion.php
question/type/calculated/simpletest/testquestiontype.php [new file with mode: 0644]
question/type/match/backup/moodle1/lib.php
question/type/numerical/question.php
question/type/numerical/questiontype.php
question/type/numerical/simpletest/helper.php
question/type/numerical/simpletest/testquestion.php
question/type/numerical/simpletest/testquestiontype.php
question/type/questionbase.php
question/type/questiontypebase.php
question/type/randomsamatch/lang/en/qtype_randomsamatch.php
question/type/shortanswer/questiontype.php
question/type/shortanswer/simpletest/helper.php [new file with mode: 0644]
question/type/shortanswer/simpletest/testquestion.php
question/type/shortanswer/simpletest/testquestiontype.php
question/type/truefalse/simpletest/testquestiontype.php
question/type/upgrade.txt
theme/afterburner/config.php
theme/afterburner/style/afterburner_dock.css
theme/afterburner/style/afterburner_settings.css [new file with mode: 0644]
theme/afterburner/style/afterburner_styles.css
theme/formal_white/config.php
theme/formal_white/lang/en/theme_formal_white.php
theme/formal_white/layout/embedded.php
theme/formal_white/layout/frontpage.php
theme/formal_white/layout/general.php
theme/formal_white/layout/report.php [new file with mode: 0755]
theme/formal_white/lib.php
theme/formal_white/settings.php
theme/formal_white/style/formal_white.css
theme/formal_white/style/frame.css
theme/formal_white/style/quiz.css
theme/formal_white/version.php
theme/magazine/config.php
theme/magazine/style/colors.css
theme/magazine/style/core.css
theme/sky_high/config.php
theme/sky_high/layout/frontpage.php
theme/sky_high/layout/general.php
theme/sky_high/style/core.css
theme/sky_high/style/settings.css [new file with mode: 0644]
theme/styles.php
theme/styles_debug.php
user/externallib.php
webservice/rest/locallib.php

index 27e9511..00ffb21 100644 (file)
@@ -43,4 +43,6 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
     $checkbox->set_affects_modinfo(true);
 
     $optionalsubsystems->add(new admin_setting_configcheckbox('enableplagiarism', new lang_string('enableplagiarism','plagiarism'), new lang_string('configenableplagiarism','plagiarism'), 0));
-}
+
+    $optionalsubsystems->add(new admin_setting_configcheckbox('enablecssoptimiser', new lang_string('enablecssoptimiser','admin'), new lang_string('enablecssoptimiser_desc','admin'), 0));
+}
\ No newline at end of file
index 8716029..66dfbef 100644 (file)
@@ -63,7 +63,7 @@ class restore_decode_processor {
 
     public function add_rule($rule) {
         if (!$rule instanceof restore_decode_rule) {
-            throw new restore_decode_processor_exception('incorrect_restore_decode_rule', get_class($content));
+            throw new restore_decode_processor_exception('incorrect_restore_decode_rule', get_class($rule));
         }
         $rule->set_restoreid($this->restoreid);
         $rule->set_wwwroots($this->sourcewwwroot, $this->targetwwwroot);
index b183767..e4ab4b1 100644 (file)
@@ -61,7 +61,7 @@ class file_logger extends base_logger {
     public function __wakeup() {
         if ($this->level > backup::LOG_NONE) { // Only create the file if we are going to log something
             if (! $this->fhandle = fopen($this->fullpath, 'a')) {
-                throw new base_logger_exception('error_opening_file', $fullpath);
+                throw new base_logger_exception('error_opening_file', $this->fullpath);
             }
         }
     }
index e28ac28..b62d4db 100644 (file)
@@ -30,12 +30,14 @@ class block_navigation_renderer extends plugin_renderer_base {
             $isexpandable = (empty($expansionlimit) || ($item->type > navigation_node::TYPE_ACTIVITY || $item->type < $expansionlimit) || ($item->contains_active_node() && $item->children->count() > 0));
             $isbranch = $isexpandable && ($item->children->count() > 0 || ($item->has_children() && (isloggedin() || $item->type <= navigation_node::TYPE_CATEGORY)));
 
-            $hasicon = ((!$isbranch || $item->type == navigation_node::TYPE_ACTIVITY )&& $item->icon instanceof renderable);
+            $hasicon = ((!$isbranch || $item->type == navigation_node::TYPE_ACTIVITY || $item->type == navigation_node::TYPE_RESOURCE) && $item->icon instanceof renderable);
 
             if ($hasicon) {
                 $icon = $this->output->render($item->icon);
-                $content = $icon.$content; // use CSS for spacing of icons
+            } else {
+                $icon = '';
             }
+            $content = $icon.$content; // use CSS for spacing of icons
             if ($item->helpbutton !== null) {
                 $content = trim($item->helpbutton).html_writer::tag('span', $content, array('class'=>'clearhelpbutton'));
             }
@@ -57,6 +59,7 @@ class block_navigation_renderer extends plugin_renderer_base {
             } else if ($item->action instanceof action_link) {
                 //TODO: to be replaced with something else
                 $link = $item->action;
+                $link->text = $icon.$link->text;
                 $link->attributes = array_merge($link->attributes, $attributes);
                 $content = $this->output->render($link);
                 $linkrendered = true;
index 8b9e480..046c0a9 100644 (file)
@@ -1796,7 +1796,7 @@ class calendar_event {
      * @return stdClass
      */
     protected function calculate_context(stdClass $data) {
-        global $USER;
+        global $USER, $DB;
 
         $context = null;
         if (isset($data->courseid) && $data->courseid > 0) {
index c41b795..dbc732c 100644 (file)
@@ -385,6 +385,32 @@ $CFG->admin = 'admin';
 //
 //     $CFG->extramemorylimit = 1G;
 //
+// The CSS files the Moodle produces can be extremely large and complex, especially
+// if you are using a custom theme that builds upon several other themes.
+// In Moodle 2.3 a CSS optimiser was added as an experimental feature for advanced
+// users. The CSS optimiser organises the CSS in order to reduce the overall number
+// of rules and styles being sent to the client. It does this by collating the
+// CSS before it is cached removing excess styles and rules and stripping out any
+// extraneous content such as comments and empty rules.
+// The following settings are used to enable and control the optimisation.
+//
+// Enable the CSS optimiser. This will only optimise the CSS if themedesignermode
+// is not enabled. This can be set through the UI however it is noted here as well
+// because the other CSS optimiser settings can not be set through the UI.
+//
+//      $CFG->enablecssoptimiser = true;
+//
+// If set the CSS optimiser will add stats about the optimisation to the top of
+// the optimised CSS file. You can then inspect the CSS to see the affect the CSS
+// optimiser is having.
+//
+//      $CFG->cssoptimiserstats = true;
+//
+// If set the CSS that is optimised will still retain a minimalistic formatting
+// so that anyone wanting to can still clearly read it.
+//
+//      $CFG->cssoptimiserpretty = true;
+//
 //=========================================================================
 // 8. SETTINGS FOR DEVELOPMENT SERVERS - not intended for production use!!!
 //=========================================================================
index 7e24305..cc7c3c0 100644 (file)
@@ -189,9 +189,9 @@ while ($section <= $course->numsections) {
         if ($PAGE->user_is_editing() && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) {
 
             if ($course->marker == $section) {  // Show the "light globe" on/off
-                echo '<a href="view.php?id='.$course->id.'&amp;marker=0&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strmarkedthistopic.'">'.'<img src="'.$OUTPUT->pix_url('i/marked') . '" alt="'.$strmarkedthistopic.'" /></a><br />';
+                echo '<a href="view.php?id='.$course->id.'&amp;marker=0&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strmarkedthistopic.'">'.'<img src="'.$OUTPUT->pix_url('i/marked') . '" alt="'.$strmarkedthistopic.'" class="icon"/></a><br />';
             } else {
-                echo '<a href="view.php?id='.$course->id.'&amp;marker='.$section.'&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strmarkthistopic.'">'.'<img src="'.$OUTPUT->pix_url('i/marker') . '" alt="'.$strmarkthistopic.'" /></a><br />';
+                echo '<a href="view.php?id='.$course->id.'&amp;marker='.$section.'&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strmarkthistopic.'">'.'<img src="'.$OUTPUT->pix_url('i/marker') . '" alt="'.$strmarkthistopic.'" class="icon"/></a><br />';
             }
 
             if ($thissection->visible) {        // Show the hide/show eye
index e468fe7..d34d9ec 100644 (file)
@@ -818,7 +818,7 @@ function print_log_ods($course, $user, $date, $order='l.time DESC', $modname,
 
         $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
 
-        $myxls->write_string($row, 0, format_string($courses[$log->course], true, array('context' => $context)));
+        $myxls->write_string($row, 0, format_string($courses[$log->course], true, array('context' => $coursecontext)));
         $myxls->write_date($row, 1, $log->time);
         $myxls->write_string($row, 2, $log->ip);
         $fullname = fullname($log, has_capability('moodle/site:viewfullnames', $coursecontext));
index 9e186ce..123f438 100644 (file)
@@ -172,26 +172,8 @@ class core_enrol_external extends external_api {
             }
         }
 
-        // to overwrite this parameter, you need role:review capability
-        if ($withcapability) {
-            require_capability('moodle/role:review', $coursecontext);
-        }
-        // need accessallgroups capability if you want to overwrite this option
-        if (!empty($groupid) && groups_is_member($groupid)) {
-            require_capability('moodle/site:accessallgroups', $context);
-        }
-        // to overwrite this option, you need course:enrolereview permission
-        if ($onlyactive) {
-            require_capability('moodle/course:enrolreview', $coursecontext);
-        }
-
-        list($coursectxselect, $coursectxjoin) = context_instance_preload_sql('c.id', CONTEXT_COURSE, 'ctx');
-        $coursesql = "SELECT c.* $coursectxselect
-                        FROM {course} c $coursectxjoin
-                       WHERE c.id = $courseid";
-        $course = $DB->get_record_sql($coursesql);
-        context_instance_preload($course);
-        $coursecontext = get_context_instance(CONTEXT_COURSE, $params['courseid']);
+        $course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
+        $coursecontext = get_context_instance(CONTEXT_COURSE, $courseid);
         if ($courseid == SITEID) {
             $context = get_system_context();
         } else {
@@ -206,9 +188,26 @@ class core_enrol_external extends external_api {
             throw new moodle_exception(get_string('errorcoursecontextnotvalid' , 'webservice', $exceptionparam));
         }
 
+        if ($courseid == SITEID) {
+            require_capability('moodle/site:viewparticipants', $context);
+        } else {
+            require_capability('moodle/course:viewparticipants', $context);
+        }
+        // to overwrite this parameter, you need role:review capability
+        if ($withcapability) {
+            require_capability('moodle/role:review', $coursecontext);
+        }
+        // need accessallgroups capability if you want to overwrite this option
+        if (!empty($groupid) && groups_is_member($groupid)) {
+            require_capability('moodle/site:accessallgroups', $coursecontext);
+        }
+        // to overwrite this option, you need course:enrolereview permission
+        if ($onlyactive) {
+            require_capability('moodle/course:enrolreview', $coursecontext);
+        }
+
         list($enrolledsql, $enrolledparams) = get_enrolled_sql($coursecontext, $withcapability, $groupid, $onlyactive);
         list($ctxselect, $ctxjoin) = context_instance_preload_sql('u.id', CONTEXT_USER, 'ctx');
-        $records = $DB->get_records_sql($enrolledsql, $enrolledparams);
         $sqlparams['courseid'] = $courseid;
         $sql = "SELECT u.* $ctxselect
                   FROM {user} u $ctxjoin
@@ -217,9 +216,6 @@ class core_enrol_external extends external_api {
         $enrolledusers = $DB->get_recordset_sql($sql, $enrolledparams);
         $users = array();
         foreach ($enrolledusers as $user) {
-            if (!empty($user->deleted)) {
-                continue;
-            }
             context_instance_preload($user);
             if ($userdetails = user_get_user_details($user, $course, $userfields)) {
                 $users[] = $userdetails;
index a2c2d26..e27a4ec 100644 (file)
@@ -461,7 +461,7 @@ class grading_manager {
      * @return grading_controller
      */
     public function get_controller($method) {
-        global $CFG;
+        global $CFG, $DB;
 
         $this->ensure_isset(array('context', 'component', 'area'));
 
index 13953e8..153dcb7 100644 (file)
@@ -466,6 +466,8 @@ $string['enablecomments'] = 'Enable comments';
 $string['enablecourseajax'] = 'Enable AJAX course editing';
 $string['enablecourseajax_desc'] = 'Allow AJAX when editing main course pages. Note that the course format and the theme must support AJAX editing and the user has to enable AJAX in their profiles, too.';
 $string['enablecourserequests'] = 'Enable course requests';
+$string['enablecssoptimiser'] = 'Enable CSS optimiser';
+$string['enablecssoptimiser_desc'] = 'When enabled CSS will be run through an optimisation process before being cached. The optimiser processes the CSS removing duplicate rules and styles, as well as white space removeable and reformatting. Please note turning this on at the same time as theme designer mode is aweful for performance but will help theme designers create optimised CSS.';
 $string['enabledevicedetection'] = 'Enable device detection';
 $string['enablegravatar'] = 'Enable Gravatar';
 $string['enablegravatar_help'] = 'When enabled Moodle will attempt to fetch a user profile picture from Gravatar if the user has not uploaded an image.';
index 1d82d23..48a68b7 100644 (file)
@@ -99,6 +99,7 @@ $string['deletequestioncheck'] = 'Are you absolutely sure you want to delete \'{
 $string['deletequestionscheck'] = 'Are you absolutely sure you want to delete the following questions?<br /><br />{$a}';
 $string['deletingbehaviour'] = 'Deleting question behaviour \'{$a}\'';
 $string['deletingqtype'] = 'Deleting question type \'{$a}\'';
+$string['didnotmatchanyanswer'] = '[Did not match any answer]';
 $string['disabled'] = 'Disabled';
 $string['disterror'] = 'The distribution {$a} caused problems';
 $string['donothing'] = 'Don\'t copy or move files or change links.';
diff --git a/lib/csslib.php b/lib/csslib.php
new file mode 100644 (file)
index 0000000..379ce16
--- /dev/null
@@ -0,0 +1,3584 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * This file contains CSS related class, and function for the CSS optimiser
+ *
+ * Please see the {@see css_optimiser} class for greater detail.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+/**
+ * Stores CSS in a file at the given path.
+ *
+ * This function either succeeds or throws an exception.
+ *
+ * @param theme_config $theme The theme that the CSS belongs to.
+ * @param string $csspath The path to store the CSS at.
+ * @param array $cssfiles The CSS files to store.
+ */
+function css_store_css(theme_config $theme, $csspath, array $cssfiles) {
+    global $CFG;
+
+    if (!empty($CFG->enablecssoptimiser)) {
+        // This is an experimental feature introduced in Moodle 2.3
+        // The CSS optimiser organises the CSS in order to reduce the overall number
+        // of rules and styles being sent to the client. It does this by collating
+        // the CSS before it is cached removing excess styles and rules and stripping
+        // out any extraneous content such as comments and empty rules.
+        $optimiser = new css_optimiser;
+        $css = '';
+        foreach ($cssfiles as $file) {
+            $css .= file_get_contents($file)."\n";
+        }
+        $css = $theme->post_process($css);
+        $css = $optimiser->process($css);
+
+        // If cssoptimisestats is set then stats from the optimisation are collected
+        // and output at the beginning of the CSS
+        if (!empty($CFG->cssoptimiserstats)) {
+            $css = $optimiser->output_stats_css().$css;
+        }
+    } else {
+        // This is the default behaviour.
+        // The cssoptimise setting was introduced in Moodle 2.3 and will hopefully
+        // in the future be changed from an experimental setting to the default.
+        // The css_minify_css will method will use the Minify library remove
+        // comments, additional whitespace and other minor measures to reduce the
+        // the overall CSS being sent.
+        // However it has the distinct disadvantage of having to minify the CSS
+        // before running the post process functions. Potentially things may break
+        // here if theme designers try to push things with CSS post processing.
+        $css = $theme->post_process(css_minify_css($cssfiles));
+    }
+
+    check_dir_exists(dirname($csspath));
+    $fp = fopen($csspath, 'w');
+    fwrite($fp, $css);
+    fclose($fp);
+}
+
+/**
+ * Sends IE specific CSS
+ *
+ * In writing the CSS parser I have a theory that we could optimise the CSS
+ * then split it based upon the number of selectors to ensure we dont' break IE
+ * and that we include only as many sub-stylesheets as we require.
+ * Of course just a theory but may be fun to code.
+ *
+ * @param string $themename The name of the theme we are sending CSS for.
+ * @param string $rev The revision to ensure we utilise the cache.
+ */
+function css_send_ie_css($themename, $rev) {
+    $lifetime = 60*60*24*30; // 30 days
+
+    $css  = "/** Unfortunately IE6/7 does not support more than 4096 selectors in one CSS file, which means we have to use some ugly hacks :-( **/";
+    $css .= "\n@import url(styles.php?theme=$themename&rev=$rev&type=plugins);";
+    $css .= "\n@import url(styles.php?theme=$themename&rev=$rev&type=parents);";
+    $css .= "\n@import url(styles.php?theme=$themename&rev=$rev&type=theme);";
+
+    header('Etag: '.md5($rev));
+    header('Content-Disposition: inline; filename="styles.php"');
+    header('Last-Modified: '. gmdate('D, d M Y H:i:s', time()) .' GMT');
+    header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .' GMT');
+    header('Pragma: ');
+    header('Cache-Control: max-age='.$lifetime);
+    header('Accept-Ranges: none');
+    header('Content-Type: text/css; charset=utf-8');
+    header('Content-Length: '.strlen($css));
+
+    echo $css;
+    die;
+}
+
+/**
+ * Sends a cached CSS file
+ *
+ * This function sends the cached CSS file. Remember it is generated on the first
+ * request, then optimised/minified, and finally cached for serving.
+ *
+ * @param string $csspath The path to the CSS file we want to serve.
+ * @param string $rev The revision to make sure we utilise any caches.
+ */
+function css_send_cached_css($csspath, $rev) {
+    $lifetime = 60*60*24*30; // 30 days
+
+    header('Content-Disposition: inline; filename="styles.php"');
+    header('Last-Modified: '. gmdate('D, d M Y H:i:s', filemtime($csspath)) .' GMT');
+    header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .' GMT');
+    header('Pragma: ');
+    header('Cache-Control: max-age='.$lifetime);
+    header('Accept-Ranges: none');
+    header('Content-Type: text/css; charset=utf-8');
+    if (!min_enable_zlib_compression()) {
+        header('Content-Length: '.filesize($csspath));
+    }
+
+    readfile($csspath);
+    die;
+}
+
+/**
+ * Sends CSS directly without caching it.
+ *
+ * This function takes a raw CSS string, optimises it if required, and then
+ * serves it.
+ * Turning both themedesignermode and CSS optimiser on at the same time is aweful
+ * for performance because of the optimiser running here. However it was done so
+ * that theme designers could utilise the optimised output during development to
+ * help them optimise their CSS... not that they should write lazy CSS.
+ *
+ * @param string CSS
+ */
+function css_send_uncached_css($css) {
+    global $CFG;
+
+    header('Content-Disposition: inline; filename="styles_debug.php"');
+    header('Last-Modified: '. gmdate('D, d M Y H:i:s', time()) .' GMT');
+    header('Expires: '. gmdate('D, d M Y H:i:s', time() + THEME_DESIGNER_CACHE_LIFETIME) .' GMT');
+    header('Pragma: ');
+    header('Accept-Ranges: none');
+    header('Content-Type: text/css; charset=utf-8');
+
+    if (is_array($css)) {
+        $css = implode("\n\n", $css);
+    }
+
+    if (!empty($CFG->enablecssoptimiser)) {
+        $css = str_replace("\n", "\r\n", $css);
+
+        $optimiser = new css_optimiser;
+        $css = $optimiser->process($css);
+        if (!empty($CFG->cssoptimiserstats)) {
+            $css = $optimiser->output_stats_css().$css;
+        }
+    }
+
+    echo $css;
+
+    die;
+}
+
+/**
+ * Sends a 404 message about CSS not being found.
+ */
+function css_send_css_not_found() {
+    header('HTTP/1.0 404 not found');
+    die('CSS was not found, sorry.');
+}
+
+/**
+ * Uses the minify library to compress CSS.
+ *
+ * This is used if $CFG->enablecssoptimiser has been turned off. This was
+ * the original CSS optimisation library.
+ * It removes whitespace and shrinks things but does no apparent optimisation.
+ * Note the minify library is still being used for JavaScript.
+ *
+ * @param array $files An array of files to minify
+ * @return string The minified CSS
+ */
+function css_minify_css($files) {
+    global $CFG;
+
+    set_include_path($CFG->libdir . '/minify/lib' . PATH_SEPARATOR . get_include_path());
+    require_once('Minify.php');
+
+    if (0 === stripos(PHP_OS, 'win')) {
+        Minify::setDocRoot(); // IIS may need help
+    }
+    // disable all caching, we do it in moodle
+    Minify::setCache(null, false);
+
+    $options = array(
+        'bubbleCssImports' => false,
+        // Don't gzip content we just want text for storage
+        'encodeOutput' => false,
+        // Maximum age to cache, not used but required
+        'maxAge' => (60*60*24*20),
+        // The files to minify
+        'files' => $files,
+        // Turn orr URI rewriting
+        'rewriteCssUris' => false,
+        // This returns the CSS rather than echoing it for display
+        'quiet' => true
+    );
+    $result = Minify::serve('Files', $options);
+    return $result['content'];
+}
+
+/**
+ * Determines if the given value is a valid CSS colour.
+ *
+ * A CSS colour can be one of the following:
+ *    - Hex colour:  #AA66BB
+ *    - RGB colour:  rgb(0-255, 0-255, 0-255)
+ *    - RGBA colour: rgba(0-255, 0-255, 0-255, 0-1)
+ *    - HSL colour:  hsl(0-360, 0-100%, 0-100%)
+ *    - HSLA colour: hsla(0-360, 0-100%, 0-100%, 0-1)
+ *
+ * Or a recognised browser colour mapping {@see css_optimiser::$htmlcolours}
+ *
+ * @param string $value The colour value to check
+ * @return bool
+ */
+function css_is_colour($value) {
+    $value = trim($value);
+    if (in_array(strtolower($value), array('inherit'))) {
+        return true;
+    } else if (preg_match('/^#([a-fA-F0-9]{1,3}|[a-fA-F0-9]{6})$/', $value)) {
+        return true;
+    } else if (in_array(strtolower($value), array_keys(css_optimiser::$htmlcolours))) {
+        return true;
+    } else if (preg_match('#^rgb\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$#i', $value, $m) && $m[1] < 256 && $m[2] < 256 && $m[3] < 256) {
+        // It is an RGB colour
+        return true;
+    } else if (preg_match('#^rgba\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1}(\.\d+)?)\s*\)$#i', $value, $m) && $m[1] < 256 && $m[2] < 256 && $m[3] < 256) {
+        // It is an RGBA colour
+        return true;
+    } else if (preg_match('#^hsl\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\%\s*,\s*(\d{1,3})\%\s*\)$#i', $value, $m) && $m[1] <= 360 && $m[2] <= 100 && $m[3] <= 100) {
+        // It is an HSL colour
+        return true;
+    } else if (preg_match('#^hsla\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\%\s*,\s*(\d{1,3})\%\s*,\s*(\d{1}(\.\d+)?)\s*\)$#i', $value, $m) && $m[1] <= 360 && $m[2] <= 100 && $m[3] <= 100) {
+        // It is an HSLA colour
+        return true;
+    }
+    // Doesn't look like a colour.
+    return false;
+}
+
+/**
+ * Returns true is the passed value looks like a CSS width.
+ * In order to pass this test the value must be purely numerical or end with a
+ * valid CSS unit term.
+ *
+ * @param string|int $value
+ * @return boolean
+ */
+function css_is_width($value) {
+    $value = trim($value);
+    if (in_array(strtolower($value), array('auto', 'inherit'))) {
+        return true;
+    }
+    if (preg_match('#^(\-\s*)?(\d*\.)?(\d+)\s*(em|px|pt|%|in|cm|mm|ex|pc)?$#i', $value)) {
+        return true;
+    }
+    return false;
+}
+
+/**
+ * A simple sorting function to sort two array values on the number of items they contain
+ *
+ * @param array $a
+ * @param array $b
+ * @return int
+ */
+function css_sort_by_count(array $a, array $b) {
+    $a = count($a);
+    $b = count($b);
+    if ($a == $b) {
+        return 0;
+    }
+    return ($a > $b) ? -1 : 1;
+}
+
+/**
+ * A basic CSS optimiser that strips out unwanted things and then processing the
+ * CSS organising styles and moving duplicates and useless CSS.
+ *
+ * This CSS optimiser works by reading through a CSS string one character at a
+ * time and building an object structure of the CSS.
+ * As part of that processing styles are expanded out as much as they can be to
+ * ensure we collect all mappings, at the end of the processing those styles are
+ * then combined into an optimised form to keep them as short as possible.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_optimiser {
+
+    /**
+     * Used when the processor is about to start processing.
+     * Processing states. Used internally.
+     */
+    const PROCESSING_START = 0;
+
+    /**
+     * Used when the processor is currently processing a selector.
+     * Processing states. Used internally.
+     */
+    const PROCESSING_SELECTORS = 0;
+
+    /**
+     * Used when the processor is currently processing a style.
+     * Processing states. Used internally.
+     */
+    const PROCESSING_STYLES = 1;
+
+    /**
+     * Used when the processor is currently processing a comment.
+     * Processing states. Used internally.
+     */
+    const PROCESSING_COMMENT = 2;
+
+    /**
+     * Used when the processor is currently processing an @ rule.
+     * Processing states. Used internally.
+     */
+    const PROCESSING_ATRULE = 3;
+
+    /**
+     * The raw string length before optimisation.
+     * Stats variables set during and after processing
+     * @var int
+     */
+    protected $rawstrlen = 0;
+
+    /**
+     * The number of comments that were removed during optimisation.
+     * Stats variables set during and after processing
+     * @var int
+     */
+    protected $commentsincss = 0;
+
+    /**
+     * The number of rules in the CSS before optimisation.
+     * Stats variables set during and after processing
+     * @var int
+     */
+    protected $rawrules = 0;
+
+    /**
+     * The number of selectors using in CSS rules before optimisation.
+     * Stats variables set during and after processing
+     * @var int
+     */
+    protected $rawselectors = 0;
+
+    /**
+     * The string length after optimisation.
+     * Stats variables set during and after processing
+     * @var int
+     */
+    protected $optimisedstrlen = 0;
+
+    /**
+     * The number of rules after optimisation.
+     * Stats variables set during and after processing
+     * @var int
+     */
+    protected $optimisedrules = 0;
+
+    /**
+     * The number of selectors used in rules after optimisation.
+     * Stats variables set during and after processing
+     * @var int
+     */
+    protected $optimisedselectors = 0;
+
+    /**
+     * The start time of the optimisation.
+     * Stats variables set during and after processing
+     * @var int
+     */
+    protected $timestart = 0;
+
+    /**
+     * The end time of the optimisation.
+     * Stats variables set during and after processing
+     * @var int
+     */
+    protected $timecomplete = 0;
+
+    /**
+     * Will be set to any errors that may have occured during processing.
+     * This is updated only at the end of processing NOT during.
+     *
+     * @var array
+     */
+    protected $errors = array();
+
+    /**
+     * Processes incoming CSS optimising it and then returning it.
+     *
+     * @param string $css The raw CSS to optimise
+     * @return string The optimised CSS
+     */
+    public function process($css) {
+        global $CFG;
+
+        $this->reset_stats();
+        $this->timestart = microtime(true);
+        $this->rawstrlen = strlen($css);
+
+        // First up we need to remove all line breaks - this allows us to instantly
+        // reduce our processing requirements and as we will process everything
+        // into a new structure there's really nothing lost.
+        $css = preg_replace('#\r?\n#', ' ', $css);
+
+        // Next remove the comments... no need to them in an optimised world and
+        // knowing they're all gone allows us to REALLY make our processing simpler
+        $css = preg_replace('#/\*(.*?)\*/#m', '', $css, -1, $this->commentsincss);
+
+        $medias = array(
+            'all' => new css_media()
+        );
+        $imports = array();
+        $charset = false;
+
+        $currentprocess = self::PROCESSING_START;
+        $currentrule = css_rule::init();
+        $currentselector = css_selector::init();
+        $inquotes = false;      // ' or "
+        $inbraces = false;      // {
+        $inbrackets = false;    // [
+        $inparenthesis = false; // (
+        $currentmedia = $medias['all'];
+        $currentatrule = null;
+        $suspectatrule = false;
+
+        $buffer = '';
+        $char = null;
+
+        // Next we are going to iterate over every single character in $css.
+        // This is why we removed line breaks and comments!
+        for ($i = 0; $i < $this->rawstrlen; $i++) {
+            $lastchar = $char;
+            $char = substr($css, $i, 1);
+            if ($char == '@' && $buffer == '') {
+                $suspectatrule = true;
+            }
+            switch ($currentprocess) {
+                // Start processing an at rule e.g. @media, @page
+                case self::PROCESSING_ATRULE:
+                    switch ($char) {
+                        case ';':
+                            if (!$inbraces) {
+                                $buffer .= $char;
+                                if ($currentatrule == 'import') {
+                                    $imports[] = $buffer;
+                                    $currentprocess = self::PROCESSING_SELECTORS;
+                                } else if ($currentatrule == 'charset') {
+                                    $charset = $buffer;
+                                    $currentprocess = self::PROCESSING_SELECTORS;
+                                }
+                            }
+                            $buffer = '';
+                            $currentatrule = false;
+                            // continue 1: The switch processing chars
+                            // continue 2: The switch processing the state
+                            // continue 3: The for loop
+                            continue 3;
+                        case '{':
+                            if ($currentatrule == 'media' && preg_match('#\s*@media\s*([a-zA-Z0-9]+(\s*,\s*[a-zA-Z0-9]+)*)#', $buffer, $matches)) {
+                                $mediatypes = str_replace(' ', '', $matches[1]);
+                                if (!array_key_exists($mediatypes, $medias)) {
+                                    $medias[$mediatypes] = new css_media($mediatypes);
+                                }
+                                $currentmedia = $medias[$mediatypes];
+                                $currentprocess = self::PROCESSING_SELECTORS;
+                                $buffer = '';
+                            }
+                            // continue 1: The switch processing chars
+                            // continue 2: The switch processing the state
+                            // continue 3: The for loop
+                            continue 3;
+                    }
+                    break;
+                // Start processing selectors
+                case self::PROCESSING_START:
+                case self::PROCESSING_SELECTORS:
+                    switch ($char) {
+                        case '[':
+                            $inbrackets ++;
+                            $buffer .= $char;
+                            // continue 1: The switch processing chars
+                            // continue 2: The switch processing the state
+                            // continue 3: The for loop
+                            continue 3;
+                        case ']':
+                            $inbrackets --;
+                            $buffer .= $char;
+                            // continue 1: The switch processing chars
+                            // continue 2: The switch processing the state
+                            // continue 3: The for loop
+                            continue 3;
+                        case ' ':
+                            if ($inbrackets) {
+                                // continue 1: The switch processing chars
+                                // continue 2: The switch processing the state
+                                // continue 3: The for loop
+                                continue 3;
+                            }
+                            if (!empty($buffer)) {
+                                if ($suspectatrule && preg_match('#@(media|import|charset)\s*#', $buffer, $matches)) {
+                                    $currentatrule = $matches[1];
+                                    $currentprocess = self::PROCESSING_ATRULE;
+                                    $buffer .= $char;
+                                } else {
+                                    $currentselector->add($buffer);
+                                    $buffer = '';
+                                }
+                            }
+                            $suspectatrule = false;
+                            // continue 1: The switch processing chars
+                            // continue 2: The switch processing the state
+                            // continue 3: The for loop
+                            continue 3;
+                        case '{':
+                            if ($inbrackets) {
+                                // continue 1: The switch processing chars
+                                // continue 2: The switch processing the state
+                                // continue 3: The for loop
+                                continue 3;
+                            }
+
+                            $currentselector->add($buffer);
+                            $currentrule->add_selector($currentselector);
+                            $currentselector = css_selector::init();
+                            $currentprocess = self::PROCESSING_STYLES;
+
+                            $buffer = '';
+                            // continue 1: The switch processing chars
+                            // continue 2: The switch processing the state
+                            // continue 3: The for loop
+                            continue 3;
+                        case '}':
+                            if ($inbrackets) {
+                                // continue 1: The switch processing chars
+                                // continue 2: The switch processing the state
+                                // continue 3: The for loop
+                                continue 3;
+                            }
+                            if ($currentatrule == 'media') {
+                                $currentmedia = $medias['all'];
+                                $currentatrule = false;
+                                $buffer = '';
+                            }
+                            // continue 1: The switch processing chars
+                            // continue 2: The switch processing the state
+                            // continue 3: The for loop
+                            continue 3;
+                        case ',':
+                            if ($inbrackets) {
+                                // continue 1: The switch processing chars
+                                // continue 2: The switch processing the state
+                                // continue 3: The for loop
+                                continue 3;
+                            }
+                            $currentselector->add($buffer);
+                            $currentrule->add_selector($currentselector);
+                            $currentselector = css_selector::init();
+                            $buffer = '';
+                            // continue 1: The switch processing chars
+                            // continue 2: The switch processing the state
+                            // continue 3: The for loop
+                            continue 3;
+                    }
+                    break;
+                // Start processing styles
+                case self::PROCESSING_STYLES:
+                    if ($char == '"' || $char == "'") {
+                        if ($inquotes === false) {
+                            $inquotes = $char;
+                        }
+                        if ($inquotes === $char && $lastchar !== '\\') {
+                            $inquotes = false;
+                        }
+                    }
+                    if ($inquotes) {
+                        $buffer .= $char;
+                        continue 2;
+                    }
+                    switch ($char) {
+                        case ';':
+                            $currentrule->add_style($buffer);
+                            $buffer = '';
+                            $inquotes = false;
+                            // continue 1: The switch processing chars
+                            // continue 2: The switch processing the state
+                            // continue 3: The for loop
+                            continue 3;
+                        case '}':
+                            $currentrule->add_style($buffer);
+                            $this->rawselectors += $currentrule->get_selector_count();
+
+                            $currentmedia->add_rule($currentrule);
+
+                            $currentrule = css_rule::init();
+                            $currentprocess = self::PROCESSING_SELECTORS;
+                            $this->rawrules++;
+                            $buffer = '';
+                            $inquotes = false;
+                            // continue 1: The switch processing chars
+                            // continue 2: The switch processing the state
+                            // continue 3: The for loop
+                            continue 3;
+                    }
+                    break;
+            }
+            $buffer .= $char;
+        }
+
+        $css = '';
+        if (!empty($charset)) {
+            $imports[] = $charset;
+        }
+        if (!empty($imports)) {
+            $css .= implode("\n", $imports);
+            $css .= "\n\n";
+        }
+        foreach ($medias as $media) {
+            $media->organise_rules_by_selectors();
+            $this->optimisedrules += $media->count_rules();
+            $this->optimisedselectors +=  $media->count_selectors();
+            if ($media->has_errors()) {
+                $this->errors[] = $media->get_errors();
+            }
+            $css .= $media->out();
+        }
+        $this->optimisedstrlen = strlen($css);
+
+        $this->timecomplete = microtime(true);
+        return trim($css);
+    }
+
+    /**
+     * Returns an array of stats from the last processing run
+     * @return string
+     */
+    public function get_stats() {
+        $stats = array(
+            'timestart'             => $this->timestart,
+            'timecomplete'          => $this->timecomplete,
+            'timetaken'             => round($this->timecomplete - $this->timestart, 4),
+            'commentsincss'         => $this->commentsincss,
+            'rawstrlen'             => $this->rawstrlen,
+            'rawselectors'          => $this->rawselectors,
+            'rawrules'              => $this->rawrules,
+            'optimisedstrlen'       => $this->optimisedstrlen,
+            'optimisedrules'        => $this->optimisedrules,
+            'optimisedselectors'     => $this->optimisedselectors,
+            'improvementstrlen'     => round(100 - ($this->optimisedstrlen / $this->rawstrlen) * 100, 1).'%',
+            'improvementrules'      => round(100 - ($this->optimisedrules / $this->rawrules) * 100, 1).'%',
+            'improvementselectors'  => round(100 - ($this->optimisedselectors / $this->rawselectors) * 100, 1).'%',
+        );
+        return $stats;
+    }
+
+    /**
+     * Returns true if any errors have occured during processing
+     *
+     * @return bool
+     */
+    public function has_errors() {
+        return !empty($this->errors);
+    }
+
+    /**
+     * Returns an array of errors that have occured
+     *
+     * @return array
+     */
+    public function get_errors() {
+        return $this->errors;
+    }
+
+    /**
+     * Returns any errors as a string that can be included in CSS.
+     *
+     * @return string
+     */
+    public function output_errors_css() {
+        $computedcss  = "/****************************************\n";
+        $computedcss .= " *--- Errors found during processing ----\n";
+        foreach ($this->errors as $error) {
+            $computedcss .= preg_replace('#^#m', '* ', $error);
+        }
+        $computedcss .= " ****************************************/\n\n";
+        return $computedcss;
+    }
+
+    /**
+     * Returns a string to display stats about the last generation within CSS output
+     *
+     * @return string
+     */
+    public function output_stats_css() {
+        $stats = $this->get_stats();
+
+        $strlenimprovement = round(100 - ($this->optimisedstrlen / $this->rawstrlen) * 100, 1);
+        $ruleimprovement = round(100 - ($this->optimisedrules / $this->rawrules) * 100, 1);
+        $selectorimprovement = round(100 - ($this->optimisedselectors / $this->rawselectors) * 100, 1);
+        $timetaken = round($this->timecomplete - $this->timestart, 4);
+
+        $computedcss  = "/****************************************\n";
+        $computedcss .= " *------- CSS Optimisation stats --------\n";
+        $computedcss .= " *  ".date('r')."\n";
+        $computedcss .= " *  {$stats['commentsincss']}  \t comments removed\n";
+        $computedcss .= " *  Optimisation took {$stats['timetaken']} seconds\n";
+        $computedcss .= " *--------------- before ----------------\n";
+        $computedcss .= " *  {$stats['rawstrlen']}  \t chars read in\n";
+        $computedcss .= " *  {$stats['rawrules']}  \t rules read in\n";
+        $computedcss .= " *  {$stats['rawselectors']}  \t total selectors\n";
+        $computedcss .= " *---------------- after ----------------\n";
+        $computedcss .= " *  {$stats['optimisedstrlen']}  \t chars once optimized\n";
+        $computedcss .= " *  {$stats['optimisedrules']}  \t optimized rules\n";
+        $computedcss .= " *  {$stats['optimisedselectors']}  \t total selectors once optimized\n";
+        $computedcss .= " *---------------- stats ----------------\n";
+        $computedcss .= " *  {$stats['improvementstrlen']}  \t reduction in chars\n";
+        $computedcss .= " *  {$stats['improvementrules']}  \t reduction in rules\n";
+        $computedcss .= " *  {$stats['improvementselectors']}  \t reduction in selectors\n";
+        $computedcss .= " ****************************************/\n\n";
+
+        return $computedcss;
+    }
+
+    /**
+     * Resets the stats ready for another fresh processing
+     */
+    public function reset_stats() {
+        $this->commentsincss = 0;
+        $this->optimisedrules = 0;
+        $this->optimisedselectors = 0;
+        $this->optimisedstrlen = 0;
+        $this->rawrules = 0;
+        $this->rawselectors = 0;
+        $this->rawstrlen = 0;
+        $this->timecomplete = 0;
+        $this->timestart = 0;
+    }
+
+    /**
+     * An array of the common HTML colours that are supported by most browsers.
+     *
+     * This reference table is used to allow us to unify colours, and will aid
+     * us in identifying buggy CSS using unsupported colours.
+     *
+     * @staticvar array
+     * @var array
+     */
+    public static $htmlcolours = array(
+        'aliceblue' => '#F0F8FF',
+        'antiquewhite' => '#FAEBD7',
+        'aqua' => '#00FFFF',
+        'aquamarine' => '#7FFFD4',
+        'azure' => '#F0FFFF',
+        'beige' => '#F5F5DC',
+        'bisque' => '#FFE4C4',
+        'black' => '#000000',
+        'blanchedalmond' => '#FFEBCD',
+        'blue' => '#0000FF',
+        'blueviolet' => '#8A2BE2',
+        'brown' => '#A52A2A',
+        'burlywood' => '#DEB887',
+        'cadetblue' => '#5F9EA0',
+        'chartreuse' => '#7FFF00',
+        'chocolate' => '#D2691E',
+        'coral' => '#FF7F50',
+        'cornflowerblue' => '#6495ED',
+        'cornsilk' => '#FFF8DC',
+        'crimson' => '#DC143C',
+        'cyan' => '#00FFFF',
+        'darkblue' => '#00008B',
+        'darkcyan' => '#008B8B',
+        'darkgoldenrod' => '#B8860B',
+        'darkgray' => '#A9A9A9',
+        'darkgrey' => '#A9A9A9',
+        'darkgreen' => '#006400',
+        'darkKhaki' => '#BDB76B',
+        'darkmagenta' => '#8B008B',
+        'darkolivegreen' => '#556B2F',
+        'arkorange' => '#FF8C00',
+        'darkorchid' => '#9932CC',
+        'darkred' => '#8B0000',
+        'darksalmon' => '#E9967A',
+        'darkseagreen' => '#8FBC8F',
+        'darkslateblue' => '#483D8B',
+        'darkslategray' => '#2F4F4F',
+        'darkslategrey' => '#2F4F4F',
+        'darkturquoise' => '#00CED1',
+        'darkviolet' => '#9400D3',
+        'deeppink' => '#FF1493',
+        'deepskyblue' => '#00BFFF',
+        'dimgray' => '#696969',
+        'dimgrey' => '#696969',
+        'dodgerblue' => '#1E90FF',
+        'firebrick' => '#B22222',
+        'floralwhite' => '#FFFAF0',
+        'forestgreen' => '#228B22',
+        'fuchsia' => '#FF00FF',
+        'gainsboro' => '#DCDCDC',
+        'ghostwhite' => '#F8F8FF',
+        'gold' => '#FFD700',
+        'goldenrod' => '#DAA520',
+        'gray' => '#808080',
+        'grey' => '#808080',
+        'green' => '#008000',
+        'greenyellow' => '#ADFF2F',
+        'honeydew' => '#F0FFF0',
+        'hotpink' => '#FF69B4',
+        'indianred ' => '#CD5C5C',
+        'indigo ' => '#4B0082',
+        'ivory' => '#FFFFF0',
+        'khaki' => '#F0E68C',
+        'lavender' => '#E6E6FA',
+        'lavenderblush' => '#FFF0F5',
+        'lawngreen' => '#7CFC00',
+        'lemonchiffon' => '#FFFACD',
+        'lightblue' => '#ADD8E6',
+        'lightcoral' => '#F08080',
+        'lightcyan' => '#E0FFFF',
+        'lightgoldenrodyellow' => '#FAFAD2',
+        'lightgray' => '#D3D3D3',
+        'lightgrey' => '#D3D3D3',
+        'lightgreen' => '#90EE90',
+        'lightpink' => '#FFB6C1',
+        'lightsalmon' => '#FFA07A',
+        'lightseagreen' => '#20B2AA',
+        'lightskyblue' => '#87CEFA',
+        'lightslategray' => '#778899',
+        'lightslategrey' => '#778899',
+        'lightsteelblue' => '#B0C4DE',
+        'lightyellow' => '#FFFFE0',
+        'lime' => '#00FF00',
+        'limegreen' => '#32CD32',
+        'linen' => '#FAF0E6',
+        'magenta' => '#FF00FF',
+        'maroon' => '#800000',
+        'mediumaquamarine' => '#66CDAA',
+        'mediumblue' => '#0000CD',
+        'mediumorchid' => '#BA55D3',
+        'mediumpurple' => '#9370D8',
+        'mediumseagreen' => '#3CB371',
+        'mediumslateblue' => '#7B68EE',
+        'mediumspringgreen' => '#00FA9A',
+        'mediumturquoise' => '#48D1CC',
+        'mediumvioletred' => '#C71585',
+        'midnightblue' => '#191970',
+        'mintcream' => '#F5FFFA',
+        'mistyrose' => '#FFE4E1',
+        'moccasin' => '#FFE4B5',
+        'navajowhite' => '#FFDEAD',
+        'navy' => '#000080',
+        'oldlace' => '#FDF5E6',
+        'olive' => '#808000',
+        'olivedrab' => '#6B8E23',
+        'orange' => '#FFA500',
+        'orangered' => '#FF4500',
+        'orchid' => '#DA70D6',
+        'palegoldenrod' => '#EEE8AA',
+        'palegreen' => '#98FB98',
+        'paleturquoise' => '#AFEEEE',
+        'palevioletred' => '#D87093',
+        'papayawhip' => '#FFEFD5',
+        'peachpuff' => '#FFDAB9',
+        'peru' => '#CD853F',
+        'pink' => '#FFC0CB',
+        'plum' => '#DDA0DD',
+        'powderblue' => '#B0E0E6',
+        'purple' => '#800080',
+        'red' => '#FF0000',
+        'rosybrown' => '#BC8F8F',
+        'royalblue' => '#4169E1',
+        'saddlebrown' => '#8B4513',
+        'salmon' => '#FA8072',
+        'sandybrown' => '#F4A460',
+        'seagreen' => '#2E8B57',
+        'seashell' => '#FFF5EE',
+        'sienna' => '#A0522D',
+        'silver' => '#C0C0C0',
+        'skyblue' => '#87CEEB',
+        'slateblue' => '#6A5ACD',
+        'slategray' => '#708090',
+        'slategrey' => '#708090',
+        'snow' => '#FFFAFA',
+        'springgreen' => '#00FF7F',
+        'steelblue' => '#4682B4',
+        'tan' => '#D2B48C',
+        'teal' => '#008080',
+        'thistle' => '#D8BFD8',
+        'tomato' => '#FF6347',
+        'transparent' => 'transparent',
+        'turquoise' => '#40E0D0',
+        'violet' => '#EE82EE',
+        'wheat' => '#F5DEB3',
+        'white' => '#FFFFFF',
+        'whitesmoke' => '#F5F5F5',
+        'yellow' => '#FFFF00',
+        'yellowgreen' => '#9ACD32'
+    );
+}
+
+/**
+ * Used to prepare CSS strings
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+abstract class css_writer {
+
+    /**
+     * The current indent level
+     * @var int
+     */
+    protected static $indent = 0;
+
+    /**
+     * Returns true if the output should still maintain minimum formatting.
+     * @return bool
+     */
+    protected static function is_pretty() {
+        global $CFG;
+        return (!empty($CFG->cssoptimiserpretty));
+    }
+
+    /**
+     * Returns the indenting char to use for indenting things nicely.
+     * @return string
+     */
+    protected static function get_indent() {
+        if (self::is_pretty()) {
+            return str_repeat("  ", self::$indent);
+        }
+        return '';
+    }
+
+    /**
+     * Increases the current indent
+     */
+    protected static function increase_indent() {
+        self::$indent++;
+    }
+
+    /**
+     * Decreases the current indent
+     */
+    protected static function decrease_indent() {
+        self::$indent--;
+    }
+
+    /**
+     * Returns the string to use as a separator
+     * @return string
+     */
+    protected static function get_separator() {
+        return (self::is_pretty())?"\n":' ';
+    }
+
+    /**
+     * Returns CSS for media
+     *
+     * @param string $typestring
+     * @param array $rules An array of css_rule objects
+     * @return string
+     */
+    public static function media($typestring, array &$rules) {
+        $nl = self::get_separator();
+
+        $output = '';
+        if ($typestring !== 'all') {
+            $output .= $nl.$nl."@media {$typestring} {".$nl;
+            self::increase_indent();
+        }
+        foreach ($rules as $rule) {
+            $output .= $rule->out().$nl;
+        }
+        if ($typestring !== 'all') {
+            self::decrease_indent();
+            $output .= '}';
+        }
+        return $output;
+    }
+
+    /**
+     * Returns CSS for a rule
+     *
+     * @param string $selector
+     * @param string $styles
+     * @return string
+     */
+    public static function rule($selector, $styles) {
+        $css = self::get_indent()."{$selector}{{$styles}}";
+        return $css;
+    }
+
+    /**
+     * Returns CSS for the selectors of a rule
+     *
+     * @param array $selectors Array of css_selector objects
+     * @return string
+     */
+    public static function selectors(array $selectors) {
+        $nl = self::get_separator();
+        $selectorstrings = array();
+        foreach ($selectors as $selector) {
+            $selectorstrings[] = $selector->out();
+        }
+        return join(','.$nl, $selectorstrings);
+    }
+
+    /**
+     * Returns a selector given the components that make it up.
+     *
+     * @param array $components
+     * @return string
+     */
+    public static function selector(array $components) {
+        return trim(join(' ', $components));
+    }
+
+    /**
+     * Returns a CSS string for the provided styles
+     *
+     * @param array $styles Array of css_style objects
+     * @return string
+     */
+    public static function styles(array $styles) {
+        $bits = array();
+        foreach ($styles as $style) {
+            $bits[] = $style->out();
+        }
+        return join('', $bits);
+    }
+
+    /**
+     * Returns a style CSS
+     *
+     * @param string $name
+     * @param string $value
+     * @param bool $important
+     * @return string
+     */
+    public static function style($name, $value, $important = false) {
+        if ($important && strpos($value, '!important') === false) {
+            $value .= ' !important';
+        }
+        return "{$name}:{$value};";
+    }
+}
+
+/**
+ * A structure to represent a CSS selector.
+ *
+ * The selector is the classes, id, elements, and psuedo bits that make up a CSS
+ * rule.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_selector {
+
+    /**
+     * An array of selector bits
+     * @var array
+     */
+    protected $selectors = array();
+
+    /**
+     * The number of selectors.
+     * @var int
+     */
+    protected $count = 0;
+
+    /**
+     * Initialises a new CSS selector
+     * @return css_selector
+     */
+    public static function init() {
+        return new css_selector();
+    }
+
+    /**
+     * CSS selectors can only be created through the init method above.
+     */
+    protected function __construct() {}
+
+    /**
+     * Adds a selector to the end of the current selector
+     * @param string $selector
+     */
+    public function add($selector) {
+        $selector = trim($selector);
+        $count = 0;
+        $count += preg_match_all('/(\.|#)/', $selector, $matchesarray);
+        if (strpos($selector, '.') !== 0 && strpos($selector, '#') !== 0) {
+            $count ++;
+        }
+        $this->count = $count;
+        $this->selectors[] = $selector;
+    }
+    /**
+     * Returns the number of individual components that make up this selector
+     * @return int
+     */
+    public function get_selector_count() {
+        return $this->count;
+    }
+
+    /**
+     * Returns the selector for use in a CSS rule
+     * @return string
+     */
+    public function out() {
+        return css_writer::selector($this->selectors);
+    }
+}
+
+/**
+ * A structure to represent a CSS rule.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_rule {
+
+    /**
+     * An array of CSS selectors {@see css_selector}
+     * @var array
+     */
+    protected $selectors = array();
+
+    /**
+     * An array of CSS styles {@see css_style}
+     * @var array
+     */
+    protected $styles = array();
+
+    /**
+     * Created a new CSS rule. This is the only way to create a new CSS rule externally.
+     * @return css_rule
+     */
+    public static function init() {
+        return new css_rule();
+    }
+
+    /**
+     * Constructs a new css rule.
+     *
+     * @param string $selector The selector or array of selectors that make up this rule.
+     * @param array $styles An array of styles that belong to this rule.
+     */
+    protected function __construct($selector = null, array $styles = array()) {
+        if ($selector != null) {
+            if (is_array($selector)) {
+                $this->selectors = $selector;
+            } else {
+                $this->selectors = array($selector);
+            }
+            $this->add_styles($styles);
+        }
+    }
+
+    /**
+     * Adds a new CSS selector to this rule
+     *
+     * e.g. $rule->add_selector('.one #two.two');
+     *
+     * @param css_selector $selector Adds a CSS selector to this rule.
+     */
+    public function add_selector(css_selector $selector) {
+        $this->selectors[] = $selector;
+    }
+
+    /**
+     * Adds a new CSS style to this rule.
+     *
+     * @param css_style|string $style Adds a new style to this rule
+     */
+    public function add_style($style) {
+        if (is_string($style)) {
+            $style = trim($style);
+            if (empty($style)) {
+                return;
+            }
+            $bits = explode(':', $style, 2);
+            if (count($bits) == 2) {
+                list($name, $value) = array_map('trim', $bits);
+            }
+            if (isset($name) && isset($value) && $name !== '' && $value !== '') {
+                $style = css_style::init($name, $value);
+            }
+        } else if ($style instanceof css_style) {
+            // Clone the style as it may be coming from another rule and we don't
+            // want references as it will likely be overwritten by proceeding
+            // rules
+            $style = clone($style);
+        }
+        if ($style instanceof css_style) {
+            $name = $style->get_name();
+            if (array_key_exists($name, $this->styles)) {
+                $this->styles[$name]->set_value($style->get_value());
+            } else {
+                $this->styles[$name] = $style;
+            }
+        } else if (is_array($style)) {
+            // We probably shouldn't worry about processing styles here but to
+            // be truthful it doesn't hurt.
+            foreach ($style as $astyle) {
+                $this->add_style($astyle);
+            }
+        }
+    }
+
+    /**
+     * An easy method of adding several styles at once. Just calls add_style.
+     *
+     * This method simply iterates over the array and calls {@see css_rule::add_style()}
+     * with each.
+     *
+     * @param array $styles Adds an array of styles
+     */
+    public function add_styles(array $styles) {
+        foreach ($styles as $style) {
+            $this->add_style($style);
+        }
+    }
+
+    /**
+     * Returns the array of selectors
+     *
+     * @return array
+     */
+    public function get_selectors() {
+        return $this->selectors;
+    }
+
+    /**
+     * Returns the array of styles
+     *
+     * @return array
+     */
+    public function get_styles() {
+        return $this->styles;
+    }
+
+    /**
+     * Outputs this rule as a fragment of CSS
+     *
+     * @return string
+     */
+    public function out() {
+        $selectors = css_writer::selectors($this->selectors);
+        $styles = css_writer::styles($this->get_consolidated_styles());
+        return css_writer::rule($selectors, $styles);
+    }
+
+    /**
+     * Consolidates all styles associated with this rule
+     *
+     * @return array An array of consolidated styles
+     */
+    public function get_consolidated_styles() {
+        $finalstyles = array();
+        $consolidate = array();
+        foreach ($this->styles as $style) {
+            $consolidatetoclass = $style->consolidate_to();
+            if ($style->is_valid() && !empty($consolidatetoclass) && class_exists('css_style_'.$consolidatetoclass)) {
+                $class = 'css_style_'.$consolidatetoclass;
+                if (!array_key_exists($class, $consolidate)) {
+                    $consolidate[$class] = array();
+                }
+                $consolidate[$class][] = $style;
+            } else {
+                $finalstyles[] = $style;
+            }
+        }
+
+        foreach ($consolidate as $class => $styles) {
+            $styles = $class::consolidate($styles);
+            foreach ($styles as $style) {
+                $finalstyles[] = $style;
+            }
+        }
+        return $finalstyles;
+    }
+
+    /**
+     * Splits this rules into an array of CSS rules. One for each of the selectors
+     * that make up this rule.
+     *
+     * @return array(css_rule)
+     */
+    public function split_by_selector() {
+        $return = array();
+        foreach ($this->selectors as $selector) {
+            $return[] = new css_rule($selector, $this->styles);
+        }
+        return $return;
+    }
+
+    /**
+     * Splits this rule into an array of rules. One for each of the styles that
+     * make up this rule
+     *
+     * @return array Array of css_rule objects
+     */
+    public function split_by_style() {
+        $return = array();
+        foreach ($this->styles as $style) {
+            $return[] = new css_rule($this->selectors, array($style));
+        }
+        return $return;
+    }
+
+    /**
+     * Gets a hash for the styles of this rule
+     *
+     * @return string
+     */
+    public function get_style_hash() {
+        return md5(css_writer::styles($this->styles));
+    }
+
+    /**
+     * Gets a hash for the selectors of this rule
+     *
+     * @return string
+     */
+    public function get_selector_hash() {
+        return md5(css_writer::selectors($this->selectors));
+    }
+
+    /**
+     * Gets the number of selectors that make up this rule.
+     *
+     * @return int
+     */
+    public function get_selector_count() {
+        $count = 0;
+        foreach ($this->selectors as $selector) {
+            $count += $selector->get_selector_count();
+        }
+        return $count;
+    }
+
+    /**
+     * Returns true if there are any errors with this rule.
+     *
+     * @return bool
+     */
+    public function has_errors() {
+        foreach ($this->styles as $style) {
+            if ($style->has_error()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Returns the error strings that were recorded when processing this rule.
+     *
+     * Before calling this function you should first call {@see css_rule::has_errors()}
+     * to make sure there are errors (hopefully there arn't).
+     *
+     * @return string
+     */
+    public function get_error_string() {
+        $css = $this->out();
+        $errors = array();
+        foreach ($this->styles as $style) {
+            if ($style->has_error()) {
+                $errors[] = "  * ".$style->get_last_error();
+            }
+        }
+        return $css." has the following errors:\n".join("\n", $errors);
+
+    }
+}
+
+/**
+ * A media class to organise rules by the media they apply to.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_media {
+
+    /**
+     * An array of the different media types this instance applies to.
+     * @var array
+     */
+    protected $types = array();
+
+    /**
+     * An array of rules within this media instance
+     * @var array
+     */
+    protected $rules = array();
+
+    /**
+     * Initalises a new media instance
+     *
+     * @param string $for The media that the contained rules are destined for.
+     */
+    public function __construct($for = 'all') {
+        $types = explode(',', $for);
+        $this->types = array_map('trim', $types);
+    }
+
+    /**
+     * Adds a new CSS rule to this media instance
+     *
+     * @param css_rule $newrule
+     */
+    public function add_rule(css_rule $newrule) {
+        foreach ($newrule->split_by_selector() as $rule) {
+            $hash = $rule->get_selector_hash();
+            if (!array_key_exists($hash, $this->rules)) {
+                $this->rules[$hash] = $rule;
+            } else {
+                $this->rules[$hash]->add_styles($rule->get_styles());
+            }
+        }
+    }
+
+    /**
+     * Returns the rules used by this
+     *
+     * @return array
+     */
+    public function get_rules() {
+        return $this->rules;
+    }
+
+    /**
+     * Organises rules by gropuing selectors based upon the styles and consolidating
+     * those selectors into single rules.
+     *
+     * @return bool True if the CSS was optimised by this method
+     */
+    public function organise_rules_by_selectors() {
+        $optimised = array();
+        $beforecount = count($this->rules);
+        foreach ($this->rules as $rule) {
+            $hash = $rule->get_style_hash();
+            if (!array_key_exists($hash, $optimised)) {
+                $optimised[$hash] = clone($rule);
+            } else {
+                foreach ($rule->get_selectors() as $selector) {
+                    $optimised[$hash]->add_selector($selector);
+                }
+            }
+        }
+        $this->rules = $optimised;
+        $aftercount = count($this->rules);
+        return ($beforecount < $aftercount);
+    }
+
+    /**
+     * Returns the total number of rules that exist within this media set
+     *
+     * @return int
+     */
+    public function count_rules() {
+        return count($this->rules);
+    }
+
+    /**
+     * Returns the total number of selectors that exist within this media set
+     *
+     * @return int
+     */
+    public function count_selectors() {
+        $count = 0;
+        foreach ($this->rules as $rule) {
+            $count += $rule->get_selector_count();
+        }
+        return $count;
+    }
+
+    /**
+     * Returns the CSS for this media and all of its rules.
+     *
+     * @return string
+     */
+    public function out() {
+        return css_writer::media(join(',', $this->types), $this->rules);
+    }
+
+    /**
+     * Returns an array of media that this media instance applies to
+     *
+     * @return array
+     */
+    public function get_types() {
+        return $this->types;
+    }
+
+    /**
+     * Returns true if the media has any rules that have errors
+     *
+     * @return boolean
+     */
+    public function has_errors() {
+        foreach ($this->rules as $rule) {
+            if ($rule->has_errors()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Returns any errors that have happened within rules in this media set.
+     *
+     * @return string
+     */
+    public function get_errors() {
+        $errors = array();
+        foreach ($this->rules as $rule) {
+            if ($rule->has_errors()) {
+                $errors[] = $rule->get_error_string();
+            }
+        }
+        return join("\n", $errors);
+    }
+}
+
+/**
+ * An absract class to represent CSS styles
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+abstract class css_style {
+
+    /**
+     * The name of the style
+     * @var string
+     */
+    protected $name;
+
+    /**
+     * The value for the style
+     * @var mixed
+     */
+    protected $value;
+
+    /**
+     * If set to true this style was defined with the !important rule.
+     * Only trolls use !important.
+     * Don't hide under bridges.. its not good for your skin. Do the proper thing
+     * and fix the issue don't just force a fix that will undoubtedly one day
+     * lead to further frustration.
+     * @var bool
+     */
+    protected $important = false;
+
+    /**
+     * Gets set to true if this style has an error
+     * @var bool
+     */
+    protected $error = false;
+
+    /**
+     * The last error message that occured
+     * @var string
+     */
+    protected $errormessage = null;
+
+
+    /**
+     * Initialises a new style.
+     *
+     * This is the only public way to create a style to ensure they that appropriate
+     * style class is used if it exists.
+     *
+     * @param string $name The name of the style.
+     * @param string $value The value of the style.
+     * @return css_style_generic
+     */
+    public static function init($name, $value) {
+        $specificclass = 'css_style_'.preg_replace('#[^a-zA-Z0-9]+#', '', $name);
+        if (class_exists($specificclass)) {
+            return $specificclass::init($value);
+        }
+        return new css_style_generic($name, $value);
+    }
+
+    /**
+     * Creates a new style when given its name and value
+     *
+     * @param string $name The name of the style.
+     * @param string $value The value of the style.
+     */
+    protected function __construct($name, $value) {
+        $this->name = $name;
+        $this->set_value($value);
+    }
+
+    /**
+     * Sets the value for the style
+     *
+     * @param string $value
+     */
+    final public function set_value($value) {
+        $value = trim($value);
+        $important = preg_match('#(\!important\s*;?\s*)$#', $value, $matches);
+        if ($important) {
+            $value = substr($value, 0, -(strlen($matches[1])));
+        }
+        if (!$this->important || $important) {
+            $this->value = $this->clean_value($value);
+            $this->important = $important;
+        }
+        if (!$this->is_valid()) {
+            $this->set_error('Invalid value for '.$this->name);
+        }
+    }
+
+    /**
+     * Returns true if the value associated with this style is valid
+     *
+     * @return bool
+     */
+    public function is_valid() {
+        return true;
+    }
+
+    /**
+     * Returns the name for the style
+     *
+     * @return string
+     */
+    public function get_name() {
+        return $this->name;
+    }
+
+    /**
+     * Returns the value for the style
+     *
+     * @return string
+     */
+    public function get_value() {
+        $value = $this->value;
+        if ($this->important) {
+            $value .= ' !important';
+        }
+        return $value;
+    }
+
+    /**
+     * Returns the style ready for use in CSS
+     *
+     * @param string|null $value A value to use to override the value for this style.
+     * @return string
+     */
+    public function out($value = null) {
+        if (is_null($value)) {
+            $value = $this->get_value();
+        }
+        return css_writer::style($this->name, $value, $this->important);
+    }
+
+    /**
+     * This can be overridden by a specific style allowing it to clean its values
+     * consistently.
+     *
+     * @param mixed $value
+     * @return mixed
+     */
+    protected function clean_value($value) {
+        return $value;
+    }
+
+    /**
+     * If this particular style can be consolidated into another style this function
+     * should return the style that it can be consolidated into.
+     *
+     * @return string|null
+     */
+    public function consolidate_to() {
+        return null;
+    }
+
+    /**
+     * Sets the last error message.
+     *
+     * @param string $message
+     */
+    protected function set_error($message) {
+        $this->error = true;
+        $this->errormessage = $message;
+    }
+
+    /**
+     * Returns true if an error has occured
+     *
+     * @return bool
+     */
+    public function has_error() {
+        return $this->error;
+    }
+
+    /**
+     * Returns the last error that occured or null if no errors have happened.
+     *
+     * @return string
+     */
+    public function get_last_error() {
+        return $this->errormessage;
+    }
+}
+
+/**
+ * A generic CSS style class to use when a more specific class does not exist.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_generic extends css_style {
+
+    /**
+     * Cleans incoming values for typical things that can be optimised.
+     *
+     * @param mixed $value Cleans the provided value optimising it if possible
+     * @return string
+     */
+    protected function clean_value($value) {
+        if (trim($value) == '0px') {
+            $value = 0;
+        } else if (preg_match('/^#([a-fA-F0-9]{3,6})/', $value, $matches)) {
+            $value = '#'.strtoupper($matches[1]);
+        }
+        return $value;
+    }
+}
+
+/**
+ * A colour CSS style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_color extends css_style {
+
+    /**
+     * Creates a new colour style
+     *
+     * @param mixed $value Initialises a new colour style
+     * @return css_style_color
+     */
+    public static function init($value) {
+        return new css_style_color('color', $value);
+    }
+
+    /**
+     * Cleans the colour unifing it to a 6 char hash colour if possible
+     * Doing this allows us to associate identical colours being specified in
+     * different ways. e.g. Red, red, #F00, and #F00000
+     *
+     * @param mixed $value Cleans the provided value optimising it if possible
+     * @return string
+     */
+    protected function clean_value($value) {
+        $value = trim($value);
+        if (css_is_colour($value)) {
+            if (preg_match('/#([a-fA-F0-9]{6})/', $value, $matches)) {
+                $value = '#'.strtoupper($matches[1]);
+            } else if (preg_match('/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/', $value, $matches)) {
+                $value = $matches[1] . $matches[1] . $matches[2] . $matches[2] . $matches[3] . $matches[3];
+                $value = '#'.strtoupper($value);
+            } else if (array_key_exists(strtolower($value), css_optimiser::$htmlcolours)) {
+                $value = css_optimiser::$htmlcolours[strtolower($value)];
+            }
+        }
+        return $value;
+    }
+
+    /**
+     * Returns the colour style for use within CSS.
+     * Will return an optimised hash colour.
+     *
+     * e.g #123456
+     *     #123 instead of #112233
+     *     #F00 instead of red
+     *
+     * @param string $overridevalue If provided then this value will be used instead
+     *     of the styles current value.
+     * @return string
+     */
+    public function out($overridevalue = null) {
+        if ($overridevalue === null) {
+            $overridevalue = $this->value;
+        }
+        return parent::out(self::shrink_value($overridevalue));
+    }
+
+    /**
+     * Shrinks the colour value is possible.
+     *
+     * @param string $value Shrinks the current value to an optimial form if possible
+     * @return string
+     */
+    public static function shrink_value($value) {
+        if (preg_match('/#([a-fA-F0-9])\1([a-fA-F0-9])\2([a-fA-F0-9])\3/', $value, $matches)) {
+            return '#'.$matches[1].$matches[2].$matches[3];
+        }
+        return $value;
+    }
+
+    /**
+     * Returns true if the value is a valid colour.
+     *
+     * @return bool
+     */
+    public function is_valid() {
+        return css_is_colour($this->value);
+    }
+}
+
+/**
+ * A width style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_width extends css_style {
+
+    /**
+     * Checks if the width is valid
+     * @return bool
+     */
+    public function is_valid() {
+        return css_is_width($this->value);
+    }
+
+    /**
+     * Cleans the provided value
+     *
+     * @param mixed $value Cleans the provided value optimising it if possible
+     * @return string
+     */
+    protected function clean_value($value) {
+        if (!css_is_width($value)) {
+            // Note we don't actually change the value to something valid. That
+            // would be bad for futureproofing.
+            $this->set_error('Invalid width specified for '.$this->name);
+        } else if (preg_match('#^0\D+$#', $value)) {
+            $value = 0;
+        }
+        return trim($value);
+    }
+
+    /**
+     * Initialises a new width style
+     *
+     * @param mixed $value The value this style has
+     * @return css_style_width
+     */
+    public static function init($value) {
+        return new css_style_width('width', $value);
+    }
+}
+
+/**
+ * A margin style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_margin extends css_style_width {
+
+    /**
+     * Initialises a margin style.
+     *
+     * In this case we split the margin into several other margin styles so that
+     * we can properly condense overrides and then reconsolidate them later into
+     * an optimal form.
+     *
+     * @param string $value The value the style has
+     * @return array An array of margin values that can later be consolidated
+     */
+    public static function init($value) {
+        $important = '';
+        if (strpos($value, '!important') !== false) {
+            $important = ' !important';
+            $value = str_replace('!important', '', $value);
+        }
+
+        $value = preg_replace('#\s+#', ' ', trim($value));
+        $bits = explode(' ', $value, 4);
+
+        $top = $right = $bottom = $left = null;
+        if (count($bits) > 0) {
+            $top = $right = $bottom = $left = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $right = $left = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $bottom = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $left = array_shift($bits);
+        }
+        return array(
+            new css_style_margintop('margin-top', $top.$important),
+            new css_style_marginright('margin-right', $right.$important),
+            new css_style_marginbottom('margin-bottom', $bottom.$important),
+            new css_style_marginleft('margin-left', $left.$important)
+        );
+    }
+
+    /**
+     * Consolidates individual margin styles into a single margin style
+     *
+     * @param array $styles
+     * @return array An array of consolidated styles
+     */
+    public static function consolidate(array $styles) {
+        if (count($styles) != 4) {
+            return $styles;
+        }
+        $top = $right = $bottom = $left = null;
+        foreach ($styles as $style) {
+            switch ($style->get_name()) {
+                case 'margin-top' : $top = $style->get_value();break;
+                case 'margin-right' : $right = $style->get_value();break;
+                case 'margin-bottom' : $bottom = $style->get_value();break;
+                case 'margin-left' : $left = $style->get_value();break;
+            }
+        }
+        if ($top == $bottom && $left == $right) {
+            if ($top == $left) {
+                return array(new css_style_margin('margin', $top));
+            } else {
+                return array(new css_style_margin('margin', "{$top} {$left}"));
+            }
+        } else if ($left == $right) {
+            return array(new css_style_margin('margin', "{$top} {$right} {$bottom}"));
+        } else {
+            return array(new css_style_margin('margin', "{$top} {$right} {$bottom} {$left}"));
+        }
+    }
+}
+
+/**
+ * A margin top style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_margintop extends css_style_margin {
+
+    /**
+     * A simple init, just a single style
+     *
+     * @param string $value The value the style has
+     * @return css_style_margintop
+     */
+    public static function init($value) {
+        return new css_style_margintop('margin-top', $value);
+    }
+
+    /**
+     * This style can be consolidated into a single margin style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'margin';
+    }
+}
+
+/**
+ * A margin right style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_marginright extends css_style_margin {
+
+    /**
+     * A simple init, just a single style
+     *
+     * @param string $value The value the style has
+     * @return css_style_margintop
+     */
+    public static function init($value) {
+        return new css_style_marginright('margin-right', $value);
+    }
+
+    /**
+     * This style can be consolidated into a single margin style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'margin';
+    }
+}
+
+/**
+ * A margin bottom style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_marginbottom extends css_style_margin {
+
+    /**
+     * A simple init, just a single style
+     *
+     * @param string $value The value the style has
+     * @return css_style_margintop
+     */
+    public static function init($value) {
+        return new css_style_marginbottom('margin-bottom', $value);
+    }
+
+    /**
+     * This style can be consolidated into a single margin style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'margin';
+    }
+}
+
+/**
+ * A margin left style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_marginleft extends css_style_margin {
+
+    /**
+     * A simple init, just a single style
+     *
+     * @param string $value The value the style has
+     * @return css_style_margintop
+     */
+    public static function init($value) {
+        return new css_style_marginleft('margin-left', $value);
+    }
+
+    /**
+     * This style can be consolidated into a single margin style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'margin';
+    }
+}
+
+/**
+ * A border style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_border extends css_style {
+
+    /**
+     * Initalises the border style into an array of individual style compontents
+     *
+     * @param string $value The value the style has
+     * @return css_style_bordercolor
+     */
+    public static function init($value) {
+        $value = preg_replace('#\s+#', ' ', $value);
+        $bits = explode(' ', $value, 3);
+
+        $return = array();
+        if (count($bits) > 0) {
+            $width = array_shift($bits);
+            if (!css_is_width($width)) {
+                $width = '0';
+            }
+            $return[] = new css_style_borderwidth('border-top-width', $width);
+            $return[] = new css_style_borderwidth('border-right-width', $width);
+            $return[] = new css_style_borderwidth('border-bottom-width', $width);
+            $return[] = new css_style_borderwidth('border-left-width', $width);
+        }
+        if (count($bits) > 0) {
+            $style = array_shift($bits);
+            $return[] = new css_style_borderstyle('border-top-style', $style);
+            $return[] = new css_style_borderstyle('border-right-style', $style);
+            $return[] = new css_style_borderstyle('border-bottom-style', $style);
+            $return[] = new css_style_borderstyle('border-left-style', $style);
+        }
+        if (count($bits) > 0) {
+            $colour = array_shift($bits);
+            $return[] = new css_style_bordercolor('border-top-color', $colour);
+            $return[] = new css_style_bordercolor('border-right-color', $colour);
+            $return[] = new css_style_bordercolor('border-bottom-color', $colour);
+            $return[] = new css_style_bordercolor('border-left-color', $colour);
+        }
+        return $return;
+    }
+
+    /**
+     * Consolidates all border styles into a single style
+     *
+     * @param array $styles An array of border styles
+     * @return array An optimised array of border styles
+     */
+    public static function consolidate(array $styles) {
+
+        $borderwidths = array('top' => null, 'right' => null, 'bottom' => null, 'left' => null);
+        $borderstyles = array('top' => null, 'right' => null, 'bottom' => null, 'left' => null);
+        $bordercolors = array('top' => null, 'right' => null, 'bottom' => null, 'left' => null);
+
+        foreach ($styles as $style) {
+            switch ($style->get_name()) {
+                case 'border-top-width': $borderwidths['top'] = $style->get_value(); break;
+                case 'border-right-width': $borderwidths['right'] = $style->get_value(); break;
+                case 'border-bottom-width': $borderwidths['bottom'] = $style->get_value(); break;
+                case 'border-left-width': $borderwidths['left'] = $style->get_value(); break;
+
+                case 'border-top-style': $borderstyles['top'] = $style->get_value(); break;
+                case 'border-right-style': $borderstyles['right'] = $style->get_value(); break;
+                case 'border-bottom-style': $borderstyles['bottom'] = $style->get_value(); break;
+                case 'border-left-style': $borderstyles['left'] = $style->get_value(); break;
+
+                case 'border-top-color': $bordercolors['top'] = $style->get_value(); break;
+                case 'border-right-color': $bordercolors['right'] = $style->get_value(); break;
+                case 'border-bottom-color': $bordercolors['bottom'] = $style->get_value(); break;
+                case 'border-left-color': $bordercolors['left'] = $style->get_value(); break;
+            }
+        }
+
+        $uniquewidths = count(array_unique($borderwidths));
+        $uniquestyles = count(array_unique($borderstyles));
+        $uniquecolors = count(array_unique($bordercolors));
+
+        $nullwidths = in_array(null, $borderwidths, true);
+        $nullstyles = in_array(null, $borderstyles, true);
+        $nullcolors = in_array(null, $bordercolors, true);
+
+        $allwidthsthesame = ($uniquewidths === 1)?1:0;
+        $allstylesthesame = ($uniquestyles === 1)?1:0;
+        $allcolorsthesame = ($uniquecolors === 1)?1:0;
+
+        $allwidthsnull = $allwidthsthesame && $nullwidths;
+        $allstylesnull = $allstylesthesame && $nullstyles;
+        $allcolorsnull = $allcolorsthesame && $nullcolors;
+
+        $return = array();
+        if ($allwidthsnull && $allstylesnull && $allcolorsnull) {
+            // Everything is null still... boo
+            return array(new css_style_border('border', ''));
+
+        } else if ($allwidthsnull && $allstylesnull) {
+
+            self::consolidate_styles_by_direction($return, 'css_style_bordercolor', 'border-color', $bordercolors);
+            return $return;
+
+        } else if ($allwidthsnull && $allcolorsnull) {
+
+            self::consolidate_styles_by_direction($return, 'css_style_borderstyle', 'border-style', $borderstyles);
+            return $return;
+
+        } else if ($allcolorsnull && $allstylesnull) {
+
+            self::consolidate_styles_by_direction($return, 'css_style_borderwidth', 'border-width', $borderwidths);
+            return $return;
+
+        }
+
+        if ($allwidthsthesame + $allstylesthesame + $allcolorsthesame == 3) {
+
+            $return[] = new css_style_border('border', $borderwidths['top'].' '.$borderstyles['top'].' '.$bordercolors['top']);
+
+        } else if ($allwidthsthesame + $allstylesthesame + $allcolorsthesame == 2) {
+
+            if ($allwidthsthesame && $allstylesthesame && !$nullwidths && !$nullstyles) {
+
+                $return[] = new css_style_border('border', $borderwidths['top'].' '.$borderstyles['top']);
+                self::consolidate_styles_by_direction($return, 'css_style_bordercolor', 'border-color', $bordercolors);
+
+            } else if ($allwidthsthesame && $allcolorsthesame && !$nullwidths && !$nullcolors) {
+
+                $return[] = new css_style_border('border', $borderwidths['top'].' solid '.$bordercolors['top']);
+                self::consolidate_styles_by_direction($return, 'css_style_borderstyle', 'border-style', $borderstyles);
+
+            } else if ($allstylesthesame && $allcolorsthesame && !$nullstyles && !$nullcolors) {
+
+                $return[] = new css_style_border('border', '1px '.$borderstyles['top'].' '.$bordercolors['top']);
+                self::consolidate_styles_by_direction($return, 'css_style_borderwidth', 'border-width', $borderwidths);
+
+            } else {
+                self::consolidate_styles_by_direction($return, 'css_style_borderwidth', 'border-width', $borderwidths);
+                self::consolidate_styles_by_direction($return, 'css_style_borderstyle', 'border-style', $borderstyles);
+                self::consolidate_styles_by_direction($return, 'css_style_bordercolor', 'border-color', $bordercolors);
+            }
+
+        } else if (!$nullwidths && !$nullcolors && !$nullstyles && max(array_count_values($borderwidths)) == 3 && max(array_count_values($borderstyles)) == 3 && max(array_count_values($bordercolors)) == 3) {
+            $widthkeys = array();
+            $stylekeys = array();
+            $colorkeys = array();
+
+            foreach ($borderwidths as $key => $value) {
+                if (!array_key_exists($value, $widthkeys)) {
+                    $widthkeys[$value] = array();
+                }
+                $widthkeys[$value][] = $key;
+            }
+            usort($widthkeys, 'css_sort_by_count');
+            $widthkeys = array_values($widthkeys);
+
+            foreach ($borderstyles as $key => $value) {
+                if (!array_key_exists($value, $stylekeys)) {
+                    $stylekeys[$value] = array();
+                }
+                $stylekeys[$value][] = $key;
+            }
+            usort($stylekeys, 'css_sort_by_count');
+            $stylekeys = array_values($stylekeys);
+
+            foreach ($bordercolors as $key => $value) {
+                if (!array_key_exists($value, $colorkeys)) {
+                    $colorkeys[$value] = array();
+                }
+                $colorkeys[$value][] = $key;
+            }
+            usort($colorkeys, 'css_sort_by_count');
+            $colorkeys = array_values($colorkeys);
+
+            if ($widthkeys == $stylekeys && $stylekeys == $colorkeys) {
+                $key = $widthkeys[0][0];
+                self::build_style_string($return, 'css_style_border', 'border',  $borderwidths[$key], $borderstyles[$key], $bordercolors[$key]);
+                $key = $widthkeys[1][0];
+                self::build_style_string($return, 'css_style_border'.$key, 'border-'.$key,  $borderwidths[$key], $borderstyles[$key], $bordercolors[$key]);
+            } else {
+                self::build_style_string($return, 'css_style_bordertop', 'border-top', $borderwidths['top'], $borderstyles['top'], $bordercolors['top']);
+                self::build_style_string($return, 'css_style_borderright', 'border-right', $borderwidths['right'], $borderstyles['right'], $bordercolors['right']);
+                self::build_style_string($return, 'css_style_borderbottom', 'border-bottom', $borderwidths['bottom'], $borderstyles['bottom'], $bordercolors['bottom']);
+                self::build_style_string($return, 'css_style_borderleft', 'border-left', $borderwidths['left'], $borderstyles['left'], $bordercolors['left']);
+            }
+        } else {
+            self::build_style_string($return, 'css_style_bordertop', 'border-top', $borderwidths['top'], $borderstyles['top'], $bordercolors['top']);
+            self::build_style_string($return, 'css_style_borderright', 'border-right', $borderwidths['right'], $borderstyles['right'], $bordercolors['right']);
+            self::build_style_string($return, 'css_style_borderbottom', 'border-bottom', $borderwidths['bottom'], $borderstyles['bottom'], $bordercolors['bottom']);
+            self::build_style_string($return, 'css_style_borderleft', 'border-left', $borderwidths['left'], $borderstyles['left'], $bordercolors['left']);
+        }
+        foreach ($return as $key => $style) {
+            if ($style->get_value() == '') {
+                unset($return[$key]);
+            }
+        }
+        return $return;
+    }
+
+    /**
+     * Border styles get consolidated to a single border style.
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+
+    /**
+     * Consolidates a series of border styles into an optimised array of border
+     * styles by looking at the direction of the border and prioritising that
+     * during the optimisation.
+     *
+     * @param array $array An array to add styles into during consolidation. Passed by reference.
+     * @param string $class The class type to initalise
+     * @param string $style The style to create
+     * @param string|array $top The top value
+     * @param string $right The right value
+     * @param string $bottom The bottom value
+     * @param string $left The left value
+     * @return bool
+     */
+    public static function consolidate_styles_by_direction(&$array, $class, $style, $top, $right = null, $bottom = null, $left = null) {
+        if (is_array($top)) {
+            $right = $top['right'];
+            $bottom = $top['bottom'];
+            $left = $top['left'];
+            $top = $top['top'];
+        }
+
+        if ($top == $bottom && $left == $right && $top == $left) {
+            if (is_null($top)) {
+                $array[] = new $class($style, '');
+            } else {
+                $array[] =  new $class($style, $top);
+            }
+        } else if ($top == null || $right == null || $bottom == null || $left == null) {
+            if ($top !== null) {
+                $array[] = new $class(str_replace('border-', 'border-top-', $style), $top);
+            }
+            if ($right !== null) {
+                $array[] = new $class(str_replace('border-', 'border-right-', $style), $right);
+            }
+            if ($bottom !== null) {
+                $array[] = new $class(str_replace('border-', 'border-bottom-', $style), $bottom);
+            }
+            if ($left !== null) {
+                $array[] = new $class(str_replace('border-', 'border-left-', $style), $left);
+            }
+        } else if ($top == $bottom && $left == $right) {
+            $array[] = new $class($style, $top.' '.$right);
+        } else if ($left == $right) {
+            $array[] = new $class($style, $top.' '.$right.' '.$bottom);
+        } else {
+            $array[] = new $class($style, $top.' '.$right.' '.$bottom.' '.$left);
+        }
+        return true;
+    }
+
+    /**
+     * Builds a border style for a set of width, style, and colour values
+     *
+     * @param array $array An array into which the generated style is added
+     * @param string $class The class type to initialise
+     * @param string $cssstyle The style to use
+     * @param string $width The width of the border
+     * @param string $style The style of the border
+     * @param string $color The colour of the border
+     * @return bool
+     */
+    public static function build_style_string(&$array, $class, $cssstyle, $width = null, $style = null, $color = null) {
+        if (!is_null($width) && !is_null($style) && !is_null($color)) {
+            $array[] = new $class($cssstyle, $width.' '.$style.' '.$color);
+        } else if (!is_null($width) && !is_null($style) && is_null($color)) {
+            $array[] = new $class($cssstyle, $width.' '.$style);
+        } else if (!is_null($width) && is_null($style) && is_null($color)) {
+            $array[] = new $class($cssstyle, $width);
+        } else {
+            if (!is_null($width)) $array[] = new $class($cssstyle, $width);
+            if (!is_null($style)) $array[] = new $class($cssstyle, $style);
+            if (!is_null($color)) $array[] = new $class($cssstyle, $color);
+        }
+        return true;
+    }
+}
+
+/**
+ * A border colour style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_bordercolor extends css_style_color {
+
+    /**
+     * Creates a new border colour style
+     *
+     * Based upon the colour style
+     *
+     * @param mixed $value
+     * @return Array of css_style_bordercolor
+     */
+    public static function init($value) {
+        $value = preg_replace('#\s+#', ' ', $value);
+        $bits = explode(' ', $value, 4);
+
+        $top = $right = $bottom = $left = null;
+        if (count($bits) > 0) {
+            $top = $right = $bottom = $left = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $right = $left = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $bottom = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $left = array_shift($bits);
+        }
+        return array(
+            css_style_bordertopcolor::init($top),
+            css_style_borderrightcolor::init($right),
+            css_style_borderbottomcolor::init($bottom),
+            css_style_borderleftcolor::init($left)
+        );
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+
+    /**
+     * Cleans the value
+     *
+     * @param string $value Cleans the provided value optimising it if possible
+     * @return string
+     */
+    protected function clean_value($value) {
+        $values = explode(' ', $value);
+        $values = array_map('parent::clean_value', $values);
+        return join (' ', $values);
+    }
+
+    /**
+     * Outputs this style
+     *
+     * @param string $overridevalue
+     * @return string
+     */
+    public function out($overridevalue = null) {
+        if ($overridevalue === null) {
+            $overridevalue = $this->value;
+        }
+        $values = explode(' ', $overridevalue);
+        $values = array_map('css_style_color::shrink_value', $values);
+        return parent::out(join (' ', $values));
+    }
+}
+
+/**
+ * A border left style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderleft extends css_style_generic {
+
+    /**
+     * Initialises the border left style into individual components
+     *
+     * @param string $value
+     * @return array Array of css_style_borderleftwidth|css_style_borderleftstyle|css_style_borderleftcolor
+     */
+    public static function init($value) {
+        $value = preg_replace('#\s+#', ' ', $value);
+        $bits = explode(' ', $value, 3);
+
+        $return = array();
+        if (count($bits) > 0) {
+            $return[] = css_style_borderleftwidth::init(array_shift($bits));
+        }
+        if (count($bits) > 0) {
+            $return[] = css_style_borderleftstyle::init(array_shift($bits));
+        }
+        if (count($bits) > 0) {
+            $return[] = css_style_borderleftcolor::init(array_shift($bits));
+        }
+        return $return;
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border right style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderright extends css_style_generic {
+
+    /**
+     * Initialises the border right style into individual components
+     *
+     * @param string $value The value of the style
+     * @return array Array of css_style_borderrightwidth|css_style_borderrightstyle|css_style_borderrightcolor
+     */
+    public static function init($value) {
+        $value = preg_replace('#\s+#', ' ', $value);
+        $bits = explode(' ', $value, 3);
+
+        $return = array();
+        if (count($bits) > 0) {
+            $return[] = css_style_borderrightwidth::init(array_shift($bits));
+        }
+        if (count($bits) > 0) {
+            $return[] = css_style_borderrightstyle::init(array_shift($bits));
+        }
+        if (count($bits) > 0) {
+            $return[] = css_style_borderrightcolor::init(array_shift($bits));
+        }
+        return $return;
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border top style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_bordertop extends css_style_generic {
+
+    /**
+     * Initialises the border top style into individual components
+     *
+     * @param string $value The value of the style
+     * @return array Array of css_style_bordertopwidth|css_style_bordertopstyle|css_style_bordertopcolor
+     */
+    public static function init($value) {
+        $value = preg_replace('#\s+#', ' ', $value);
+        $bits = explode(' ', $value, 3);
+
+        $return = array();
+        if (count($bits) > 0) {
+            $return[] = css_style_bordertopwidth::init(array_shift($bits));
+        }
+        if (count($bits) > 0) {
+            $return[] = css_style_bordertopstyle::init(array_shift($bits));
+        }
+        if (count($bits) > 0) {
+            $return[] = css_style_bordertopcolor::init(array_shift($bits));
+        }
+        return $return;
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border bottom style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderbottom extends css_style_generic {
+
+    /**
+     * Initialises the border bottom style into individual components
+     *
+     * @param string $value The value of the style
+     * @return array Array of css_style_borderbottomwidth|css_style_borderbottomstyle|css_style_borderbottomcolor
+     */
+    public static function init($value) {
+        $value = preg_replace('#\s+#', ' ', $value);
+        $bits = explode(' ', $value, 3);
+
+        $return = array();
+        if (count($bits) > 0) {
+            $return[] = css_style_borderbottomwidth::init(array_shift($bits));
+        }
+        if (count($bits) > 0) {
+            $return[] = css_style_borderbottomstyle::init(array_shift($bits));
+        }
+        if (count($bits) > 0) {
+            $return[] = css_style_borderbottomcolor::init(array_shift($bits));
+        }
+        return $return;
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border width style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderwidth extends css_style_width {
+
+    /**
+     * Creates a new border colour style
+     *
+     * Based upon the colour style
+     *
+     * @param string $value The value of the style
+     * @return array Array of css_style_border*width
+     */
+    public static function init($value) {
+        $value = preg_replace('#\s+#', ' ', $value);
+        $bits = explode(' ', $value, 4);
+
+        $top = $right = $bottom = $left = null;
+        if (count($bits) > 0) {
+            $top = $right = $bottom = $left = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $right = $left = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $bottom = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $left = array_shift($bits);
+        }
+        return array(
+            css_style_bordertopwidth::init($top),
+            css_style_borderrightwidth::init($right),
+            css_style_borderbottomwidth::init($bottom),
+            css_style_borderleftwidth::init($left)
+        );
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border style style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderstyle extends css_style_generic {
+
+    /**
+     * Creates a new border colour style
+     *
+     * Based upon the colour style
+     *
+     * @param string $value The value of the style
+     * @return array Array of css_style_border*style
+     */
+    public static function init($value) {
+        $value = preg_replace('#\s+#', ' ', $value);
+        $bits = explode(' ', $value, 4);
+
+        $top = $right = $bottom = $left = null;
+        if (count($bits) > 0) {
+            $top = $right = $bottom = $left = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $right = $left = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $bottom = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $left = array_shift($bits);
+        }
+        return array(
+            css_style_bordertopstyle::init($top),
+            css_style_borderrightstyle::init($right),
+            css_style_borderbottomstyle::init($bottom),
+            css_style_borderleftstyle::init($left)
+        );
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border top colour style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_bordertopcolor extends css_style_bordercolor {
+
+    /**
+     * Initialises this style object
+     *
+     * @param string $value The value of the style
+     * @return css_style_bordertopcolor
+     */
+    public static function init($value) {
+        return new css_style_bordertopcolor('border-top-color', $value);
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border left colour style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderleftcolor extends css_style_bordercolor {
+
+    /**
+     * Initialises this style object
+     *
+     * @param string $value The value of the style
+     * @return css_style_borderleftcolor
+     */
+    public static function init($value) {
+        return new css_style_borderleftcolor('border-left-color', $value);
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border right colour style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderrightcolor extends css_style_bordercolor {
+
+    /**
+     * Initialises this style object
+     *
+     * @param string $value The value of the style
+     * @return css_style_borderrightcolor
+     */
+    public static function init($value) {
+        return new css_style_borderrightcolor('border-right-color', $value);
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border bottom colour style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderbottomcolor extends css_style_bordercolor {
+
+    /**
+     * Initialises this style object
+     *
+     * @param string $value The value of the style
+     * @return css_style_borderbottomcolor
+     */
+    public static function init($value) {
+        return new css_style_borderbottomcolor('border-bottom-color', $value);
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border width top style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_bordertopwidth extends css_style_borderwidth {
+
+    /**
+     * Initialises this style object
+     *
+     * @param string $value The value of the style
+     * @return css_style_bordertopwidth
+     */
+    public static function init($value) {
+        return new css_style_bordertopwidth('border-top-width', $value);
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border width left style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderleftwidth extends css_style_borderwidth {
+
+    /**
+     * Initialises this style object
+     *
+     * @param string $value The value of the style
+     * @return css_style_borderleftwidth
+     */
+    public static function init($value) {
+        return new css_style_borderleftwidth('border-left-width', $value);
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border width right style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderrightwidth extends css_style_borderwidth {
+
+    /**
+     * Initialises this style object
+     *
+     * @param string $value The value of the style
+     * @return css_style_borderrightwidth
+     */
+    public static function init($value) {
+        return new css_style_borderrightwidth('border-right-width', $value);
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border width bottom style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderbottomwidth extends css_style_borderwidth {
+
+    /**
+     * Initialises this style object
+     *
+     * @param string $value The value of the style
+     * @return css_style_borderbottomwidth
+     */
+    public static function init($value) {
+        return new css_style_borderbottomwidth('border-bottom-width', $value);
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border top style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_bordertopstyle extends css_style_borderstyle {
+
+    /**
+     * Initialises this style object
+     *
+     * @param string $value The value of the style
+     * @return css_style_bordertopstyle
+     */
+    public static function init($value) {
+        return new css_style_bordertopstyle('border-top-style', $value);
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border left style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderleftstyle extends css_style_borderstyle {
+
+    /**
+     * Initialises this style object
+     *
+     * @param string $value The value of the style
+     * @return css_style_borderleftstyle
+     */
+    public static function init($value) {
+        return new css_style_borderleftstyle('border-left-style', $value);
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border right style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderrightstyle extends css_style_borderstyle {
+
+    /**
+     * Initialises this style object
+     *
+     * @param string $value The value of the style
+     * @return css_style_borderrightstyle
+     */
+    public static function init($value) {
+        return new css_style_borderrightstyle('border-right-style', $value);
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A border bottom style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_borderbottomstyle extends css_style_borderstyle {
+
+    /**
+     * Initialises this style object
+     *
+     * @return css_style_borderbottomstyle
+     */
+    public static function init($value) {
+        return new css_style_borderbottomstyle('border-bottom-style', $value);
+    }
+
+    /**
+     * Consolidate this to a single border style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'border';
+    }
+}
+
+/**
+ * A background style
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_background extends css_style {
+
+    /**
+     * Initialises a background style
+     *
+     * @param type $value The value of the style
+     * @return array An array of background component.
+     */
+    public static function init($value) {
+        // colour - image - repeat - attachment - position
+
+        $imageurl = null;
+        if (preg_match('#url\(([^\)]+)\)#', $value, $matches)) {
+            $imageurl = trim($matches[1]);
+            $value = str_replace($matches[1], '', $value);
+        }
+
+        $value = preg_replace('#\s+#', ' ', $value);
+        $bits = explode(' ', $value);
+
+        $repeats = array('repeat', 'repeat-x', 'repeat-y', 'no-repeat', 'inherit');
+        $attachments = array('scroll' , 'fixed', 'inherit');
+
+        $return = array();
+        $unknownbits = array();
+
+        if (count($bits) > 0 && css_is_colour(reset($bits))) {
+            $return[] = new css_style_backgroundcolor('background-color', array_shift($bits));
+        }
+        if (count($bits) > 0 && preg_match('#(none|inherit|url\(\))#', reset($bits))) {
+            $image = array_shift($bits);
+            if ($image == 'url()') {
+                $image = "url({$imageurl})";
+            }
+            $return[] = new css_style_backgroundimage('background-image', $image);
+        }
+        if (count($bits) > 0 && in_array(reset($bits), $repeats)) {
+            $return[] = new css_style_backgroundrepeat('background-repeat', array_shift($bits));
+        }
+        if (count($bits) > 0 && in_array(reset($bits), $attachments)) {
+            // scroll , fixed, inherit
+            $return[] = new css_style_backgroundattachment('background-attachment', array_shift($bits));
+        }
+        if (count($bits) > 0) {
+            $widthbits = array();
+            foreach ($bits as $bit) {
+                if (in_array($bit, array('top', 'left', 'bottom', 'right', 'center')) || css_is_width($bit)) {
+                    $widthbits[] = $bit;
+                } else {
+                    $unknownbits[] = $bit;
+                }
+            }
+            $return[] = new css_style_backgroundposition('background-position', join(' ',$widthbits));
+        }
+        if (count($unknownbits)) {
+            foreach ($unknownbits as $bit) {
+                if (css_is_colour($bit)) {
+                    $return[] = new css_style_backgroundcolor('background-color', $bit);
+                } else if (in_array($bit, $repeats)) {
+                    $return[] = new css_style_backgroundrepeat('background-repeat', $bit);
+                } else if (in_array($bit, $attachments)) {
+                    $return[] = new css_style_backgroundattachment('background-attachment', $bit);
+                }
+            }
+        }
+        return $return;
+    }
+
+    /**
+     * Consolidates background styles into a single background style
+     *
+     * @param array $styles Consolidates the provided array of background styles
+     * @return array Consolidated optimised background styles
+     */
+    public static function consolidate(array $styles) {
+
+        if (count($styles) < 1) {
+            return $styles;
+        }
+
+        $color = $image = $repeat = $attachment = $position = null;
+        foreach ($styles as $style) {
+            switch ($style->get_name()) {
+                case 'background-color' : $color = css_style_color::shrink_value($style->get_value()); break;
+                case 'background-image' : $image = $style->get_value(); break;
+                case 'background-repeat' : $repeat = $style->get_value(); break;
+                case 'background-attachment' : $attachment = $style->get_value(); break;
+                case 'background-position' : $position = $style->get_value(); break;
+            }
+        }
+
+        if ((is_null($image) || is_null($position) || is_null($repeat)) && ($image!= null || $position != null || $repeat != null)) {
+            return $styles;
+        }
+
+        $value = array();
+        if (!is_null($color)) $value[] .= $color;
+        if (!is_null($image)) $value[] .= $image;
+        if (!is_null($repeat)) $value[] .= $repeat;
+        if (!is_null($attachment)) $value[] .= $attachment;
+        if (!is_null($position)) $value[] .= $position;
+        return array(new css_style_background('background', join(' ', $value)));
+    }
+}
+
+/**
+ * A background colour style.
+ *
+ * Based upon the colour style.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_backgroundcolor extends css_style_color {
+
+    /**
+     * Creates a new background colour style
+     *
+     * @param string $value The value of the style
+     * @return css_style_backgroundcolor
+     */
+    public static function init($value) {
+        return new css_style_backgroundcolor('background-color', $value);
+    }
+
+    /**
+     * css_style_backgroundcolor consolidates to css_style_background
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'background';
+    }
+}
+
+/**
+ * A background image style.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_backgroundimage extends css_style_generic {
+
+    /**
+     * Creates a new background colour style
+     *
+     * @param string $value The value of the style
+     * @return css_style_backgroundimage
+     */
+    public static function init($value) {
+        return new css_style_backgroundimage('background-image', $value);
+    }
+
+    /**
+     * Consolidates this style into a single background style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'background';
+    }
+}
+
+/**
+ * A background repeat style.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_backgroundrepeat extends css_style_generic {
+
+    /**
+     * Creates a new background colour style
+     *
+     * @param string $value The value of the style
+     * @return css_style_backgroundrepeat
+     */
+    public static function init($value) {
+        return new css_style_backgroundrepeat('background-repeat', $value);
+    }
+
+    /**
+     * Consolidates this style into a single background style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'background';
+    }
+}
+
+/**
+ * A background attachment style.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_backgroundattachment extends css_style_generic {
+
+    /**
+     * Creates a new background colour style
+     *
+     * @param string $value The value of the style
+     * @return css_style_backgroundattachment
+     */
+    public static function init($value) {
+        return new css_style_backgroundattachment('background-attachment', $value);
+    }
+
+    /**
+     * Consolidates this style into a single background style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'background';
+    }
+}
+
+/**
+ * A background position style.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_backgroundposition extends css_style_generic {
+
+    /**
+     * Creates a new background colour style
+     *
+     * @param string $value The value of the style
+     * @return css_style_backgroundposition
+     */
+    public static function init($value) {
+        return new css_style_backgroundposition('background-position', $value);
+    }
+
+    /**
+     * Consolidates this style into a single background style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'background';
+    }
+}
+
+/**
+ * A padding style.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_padding extends css_style_width {
+
+    /**
+     * Initialises this padding style into several individual padding styles
+     *
+     * @param string $value The value fo the style
+     * @return array An array of padding styles
+     */
+    public static function init($value) {
+        $important = '';
+        if (strpos($value, '!important') !== false) {
+            $important = ' !important';
+            $value = str_replace('!important', '', $value);
+        }
+
+        $value = preg_replace('#\s+#', ' ', trim($value));
+        $bits = explode(' ', $value, 4);
+
+        $top = $right = $bottom = $left = null;
+        if (count($bits) > 0) {
+            $top = $right = $bottom = $left = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $right = $left = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $bottom = array_shift($bits);
+        }
+        if (count($bits) > 0) {
+            $left = array_shift($bits);
+        }
+        return array(
+            new css_style_paddingtop('padding-top', $top.$important),
+            new css_style_paddingright('padding-right', $right.$important),
+            new css_style_paddingbottom('padding-bottom', $bottom.$important),
+            new css_style_paddingleft('padding-left', $left.$important)
+        );
+    }
+
+    /**
+     * Consolidates several padding styles into a single style.
+     *
+     * @param array $styles Array of padding styles
+     * @return array Optimised+consolidated array of padding styles
+     */
+    public static function consolidate(array $styles) {
+        if (count($styles) != 4) {
+            return $styles;
+        }
+        $top = $right = $bottom = $left = null;
+        foreach ($styles as $style) {
+            switch ($style->get_name()) {
+                case 'padding-top' : $top = $style->get_value();break;
+                case 'padding-right' : $right = $style->get_value();break;
+                case 'padding-bottom' : $bottom = $style->get_value();break;
+                case 'padding-left' : $left = $style->get_value();break;
+            }
+        }
+        if ($top == $bottom && $left == $right) {
+            if ($top == $left) {
+                return array(new css_style_padding('padding', $top));
+            } else {
+                return array(new css_style_padding('padding', "{$top} {$left}"));
+            }
+        } else if ($left == $right) {
+            return array(new css_style_padding('padding', "{$top} {$right} {$bottom}"));
+        } else {
+            return array(new css_style_padding('padding', "{$top} {$right} {$bottom} {$left}"));
+        }
+    }
+}
+
+/**
+ * A padding top style.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_paddingtop extends css_style_padding {
+
+    /**
+     * Initialises this style
+     *
+     * @param string $value The value of the style
+     * @return css_style_paddingtop
+     */
+    public static function init($value) {
+        return new css_style_paddingtop('padding-top', $value);
+    }
+
+    /**
+     * Consolidates this style into a single padding style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'padding';
+    }
+}
+
+/**
+ * A padding right style.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_paddingright extends css_style_padding {
+
+    /**
+     * Initialises this style
+     *
+     * @param string $value The value of the style
+     * @return css_style_paddingright
+     */
+    public static function init($value) {
+        return new css_style_paddingright('padding-right', $value);
+    }
+
+    /**
+     * Consolidates this style into a single padding style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'padding';
+    }
+}
+
+/**
+ * A padding bottom style.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_paddingbottom extends css_style_padding {
+
+    /**
+     * Initialises this style
+     *
+     * @param string $value The value of the style
+     * @return css_style_paddingbottom
+     */
+    public static function init($value) {
+        return new css_style_paddingbottom('padding-bottom', $value);
+    }
+
+    /**
+     * Consolidates this style into a single padding style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'padding';
+    }
+}
+
+/**
+ * A padding left style.
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_style_paddingleft extends css_style_padding {
+
+    /**
+     * Initialises this style
+     *
+     * @param string $value The value of the style
+     * @return css_style_paddingleft
+     */
+    public static function init($value) {
+        return new css_style_paddingleft('padding-left', $value);
+    }
+
+    /**
+     * Consolidates this style into a single padding style
+     *
+     * @return string
+     */
+    public function consolidate_to() {
+        return 'padding';
+    }
+}
\ No newline at end of file
index 4154db4..62e791a 100644 (file)
@@ -1039,10 +1039,7 @@ abstract class enrol_plugin {
     protected function load_config() {
         if (!isset($this->config)) {
             $name = $this->get_name();
-            if (!$config = get_config("enrol_$name")) {
-                $config = new stdClass();
-            }
-            $this->config = $config;
+            $this->config = get_config("enrol_$name");
         }
     }
 
index 5582758..3230ae8 100644 (file)
@@ -1318,7 +1318,7 @@ function get_config($plugin, $name = NULL) {
         if ($localcfg) {
             return (object)$localcfg;
         } else {
-            return null;
+            return new stdClass();
         }
 
     } else {
@@ -2218,7 +2218,7 @@ function get_timezone_record($timezonename) {
     }
 
     return $cache[$timezonename] = $DB->get_record_sql('SELECT * FROM {timezone}
-                                                        WHERE name = ? ORDER BY year DESC', array($timezonename), true);
+                                                        WHERE name = ? ORDER BY year DESC', array($timezonename), IGNORE_MULTIPLE);
 }
 
 /**
@@ -5028,6 +5028,17 @@ function email_to_user($user, $from, $subject, $messagetext, $messagehtml='', $a
         return true;
     }
 
+    if (!validate_email($user->email)) {
+        // we can not send emails to invalid addresses - it might create security issue or confuse the mailer
+        $invalidemail = "User $user->id (".fullname($user).") email ($user->email) is invalid! Not sending.";
+        error_log($invalidemail);
+        if (CLI_SCRIPT) {
+            // do not print this in standard web pages
+            mtrace($invalidemail);
+        }
+        return false;
+    }
+
     if (over_bounce_threshold($user)) {
         $bouncemsg = "User $user->id (".fullname($user).") is over bounce threshold! Not sending.";
         error_log($bouncemsg);
index 9699647..f87c4ac 100644 (file)
@@ -1199,7 +1199,7 @@ class html_writer {
                     $timeunits[$i] = userdate(gmmktime(12,0,0,$i,15,2000), "%B");
                 }
                 $userdatetype = 'month';
-                $currentdate['month'] = $currentdate['mon'];
+                $currentdate['month'] = (int)$currentdate['mon'];
                 break;
             case 'days':
                 for ($i=1; $i<=31; $i++) {
index c981d09..22f4544 100644 (file)
@@ -353,7 +353,7 @@ class portfolio_add_button {
                 $formoutput .= "\n" . '</form>';
             break;
             case PORTFOLIO_ADD_ICON_LINK:
-                $linkoutput .= '"><img class="portfolio-add-icon" src="' . $OUTPUT->pix_url('t/portfolioadd') . '" alt="' . $addstr .'" /></a>';
+                $linkoutput .= '"><img class="portfolio-add-icon iconsmall" src="' . $OUTPUT->pix_url('t/portfolioadd') . '" alt="' . $addstr .'" /></a>';
             break;
             case PORTFOLIO_ADD_TEXT_LINK:
                 $linkoutput .= '">' . $addstr .'</a>';
index c78063b..1496494 100644 (file)
@@ -46,11 +46,11 @@ class fake_recordset implements Iterator {
     }
 
     function close() {
-        $closed=true;
+        $this->closed=true;
     }
 
     function was_closed() {
-        return $closed;
+        return $this->closed;
     }
 }
 
diff --git a/lib/simpletest/testcsslib.php b/lib/simpletest/testcsslib.php
new file mode 100644 (file)
index 0000000..b69a8a5
--- /dev/null
@@ -0,0 +1,706 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle 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 for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * This file contains the unittests for the css optimiser in csslib.php
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+if (!defined('MOODLE_INTERNAL')) {
+    die('Direct access to this script is forbidden.');    ///  It must be included from a Moodle page
+}
+require_once($CFG->libdir . '/csslib.php');
+
+
+/**
+ * CSS optimiser test class
+ *
+ * @package core_css
+ * @category css
+ * @copyright 2012 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class css_optimiser_test extends UnitTestCase {
+
+    /**
+     * Sets up the test class
+     */
+    public function setUp() {
+        global $CFG;
+        parent::setUp();
+        // We need to disable these if they are enabled to that we can predict
+        // the output.
+        $CFG->cssoptimiserstats = false;
+        $CFG->cssoptimiserpretty = false;
+    }
+
+    /**
+     * Test the process method
+     */
+    public function test_process() {
+        $optimiser = new css_optimiser;
+
+        $this->check_background($optimiser);
+        $this->check_borders($optimiser);
+        $this->check_colors($optimiser);
+        $this->check_margins($optimiser);
+        $this->check_padding($optimiser);
+        $this->check_widths($optimiser);
+
+        $this->try_broken_css_found_in_moodle($optimiser);
+        $this->try_invalid_css_handling($optimiser);
+        $this->try_bulk_processing($optimiser);
+        $this->try_break_things($optimiser);
+    }
+
+    /**
+     * Background colour tests
+     * @param css_optimiser $optimiser
+     */
+    protected function check_background(css_optimiser $optimiser) {
+
+        $cssin = '.test {background-color: #123456;}';
+        $cssout = '.test{background:#123456;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {background-image: url(\'test.png\');}';
+        $cssout = '.test{background-image:url(\'test.png\');}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {background: #123456 url(\'test.png\') no-repeat top left;}';
+        $cssout = '.test{background:#123456 url(\'test.png\') no-repeat top left;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {background: url(\'test.png\') no-repeat top left;}.test{background-position: bottom right}.test {background-color:#123456;}';
+        $cssout = '.test{background:#123456 url(\'test.png\') no-repeat bottom right;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {background: url(   \'test.png\'    )}.test{background: bottom right}.test {background:#123456;}';
+        $cssout = '.test{background-image:url(\'test.png\');background-position:bottom right;background-color:#123456;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {background-color: #123456;background-repeat: repeat-x; background-position: 100% 0%;}';
+        $cssout = '.test{background-color:#123456;background-repeat:repeat-x;background-position:100% 0%;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.tree_item.branch {background-image: url([[pix:t/expanded]]);background-position: 0 10%;background-repeat: no-repeat;}
+                  .tree_item.branch.navigation_node {background-image:none;padding-left:0;}';
+        $cssout = '.tree_item.branch{background:url([[pix:t/expanded]]) no-repeat 0 10%;} .tree_item.branch.navigation_node{background-image:none;padding-left:0;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.block_tree .tree_item.emptybranch {background-image: url([[pix:t/collapsed_empty]]);background-position: 0% 5%;background-repeat: no-repeat;}
+                  .block_tree .collapsed .tree_item.branch {background-image: url([[pix:t/collapsed]]);}';
+        $cssout = '.block_tree .tree_item.emptybranch{background:url([[pix:t/collapsed_empty]]) no-repeat 0% 5%;} .block_tree .collapsed .tree_item.branch{background-image:url([[pix:t/collapsed]]);}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+    }
+
+    /**
+     * Border tests
+     * @param css_optimiser $optimiser
+     */
+    protected function check_borders(css_optimiser $optimiser) {
+        $cssin = '.test {border: 1px solid #654321} .test {border-bottom-color: #123456}';
+        $cssout = '.test{border:1px solid;border-color:#654321 #654321 #123456;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {border:1px solid red;}';
+        $cssout = '.one{border:1px solid #FF0000;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {border:1px solid;} .one {border:2px dotted #DDD;}';
+        $cssout = '.one{border:2px dotted #DDDDDD;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {border:2px dotted #DDD;}.one {border:1px solid;} ';
+        $cssout = '.one{border:1px solid #DDDDDD;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one, .two {border:1px solid red;}';
+        $cssout = ".one, .two{border:1px solid #FF0000;}";
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one, .two {border:0px;}';
+        $cssout = ".one, .two{border-width:0;}";
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one, .two {border-top: 5px solid white;}';
+        $cssout = ".one, .two{border-top:5px solid #FFFFFF;}";
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {border:1px solid red;} .two {border:1px solid red;}';
+        $cssout = ".one, .two{border:1px solid #FF0000;}";
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {border:1px solid red;width:20px;} .two {border:1px solid red;height:20px;}';
+        $cssout = ".one{width:20px;border:1px solid #FF0000;} .two{height:20px;border:1px solid #FF0000;}";
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {border: 1px solid #123456;} .test {border-color: #654321}';
+        $cssout = '.test{border:1px solid #654321;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {border-width: 1px; border-style: solid; border-color: #123456;}';
+        $cssout = '.test{border:1px solid #123456;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {border:1px solid #123456;border-top:2px dotted #654321;}';
+        $cssout = '.test{border:1px solid #123456;border-top:2px dotted #654321;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {border:1px solid #123456;border-left:2px dotted #654321;}';
+        $cssout = '.test{border:1px solid #123456;border-left:2px dotted #654321;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {border-left:2px dotted #654321;border:1px solid #123456;}';
+        $cssout = '.test{border:1px solid #123456;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {border:1px solid;border-top-color:#123456;}';
+        $cssout = '.test{border:1px solid;border-top-color:#123456;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {border:1px solid;border-top-color:#111; border-bottom-color: #222;border-left-color: #333;}';
+        $cssout = '.test{border:1px solid;border-top-color:#111;border-bottom-color:#222;border-left-color:#333;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.test {border:1px solid;border-top-color:#111; border-bottom-color: #222;border-left-color: #333;border-right-color:#444;}';
+        $cssout = '.test{border:1px solid;border-color:#111 #444 #222 #333;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.generaltable .cell {border-color:#EEEEEE;} .generaltable .cell {border-width: 1px;border-style: solid;}';
+        $cssout = '.generaltable .cell{border:1px solid #EEEEEE;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '#page-admin-roles-override .rolecap {border:none;border-bottom:1px solid #CECECE;}';
+        $cssout = '#page-admin-roles-override .rolecap{border-top:0;border-right:0;border-bottom:1px solid #CECECE;border-left:0;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+    }
+
+    /**
+     * Test colour styles
+     * @param css_optimiser $optimiser
+     */
+    protected function check_colors(css_optimiser $optimiser) {
+        $css = '.css{}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = '.css{color:#123456;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = '#some{color:#123456;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = 'div{color:#123456;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = 'div.css{color:#123456;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = 'div#some{color:#123456;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = 'div[type=blah]{color:#123456;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = 'div.css[type=blah]{color:#123456;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = 'div#some[type=blah]{color:#123456;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = '#some.css[type=blah]{color:#123456;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = '#some .css[type=blah]{color:#123456;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $cssin = '.one {color:red;} .two {color:#F00;}';
+        $cssout = ".one, .two{color:#F00;}";
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {color:#123;color:#321;}';
+        $cssout = '.one{color:#321;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {color:#123; color : #321 ;}';
+        $cssout = '.one{color:#321;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {color:#123;} .one {color:#321;}';
+        $cssout = '.one{color:#321;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {color:#123 !important;color:#321;}';
+        $cssout = '.one{color:#123 !important;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {color:#123 !important;} .one {color:#321;}';
+        $cssout = '.one{color:#123 !important;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {color:rgb(255, 128, 1)}';
+        $cssout = '.one{color:rgb(255, 128, 1);}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {color:rgba(255, 128, 1, 0.5)}';
+        $cssout = '.one{color:rgba(255, 128, 1, 0.5);}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {color:hsl(120, 65%, 75%)}';
+        $cssout = '.one{color:hsl(120, 65%, 75%);}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {color:hsla(120,65%,75%,0.5)}';
+        $cssout = '.one{color:hsla(120,65%,75%,0.5);}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Try some invalid colours to make sure we don't mangle them.
+        $css = 'div#some{color:#1;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = 'div#some{color:#12;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = 'div#some{color:#1234;}';
+        $this->assertEqual($css, $optimiser->process($css));
+
+        $css = 'div#some{color:#12345;}';
+        $this->assertEqual($css, $optimiser->process($css));
+    }
+
+    protected function check_widths(css_optimiser $optimiser) {
+        $cssin  = '.css {width:0}';
+        $cssout = '.css{width:0;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin  = '.css {width:0px}';
+        $cssout = '.css{width:0;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin  = '.css {width:0em}';
+        $cssout = '.css{width:0;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin  = '.css {width:0pt}';
+        $cssout = '.css{width:0;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin  = '.css {width:0mm}';
+        $cssout = '.css{width:0;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin  = '.css {width:100px}';
+        $cssout = '.css{width:100px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+    }
+
+    /**
+     * Test margin styles
+     * @param css_optimiser $optimiser
+     */
+    protected function check_margins(css_optimiser $optimiser) {
+        $cssin = '.one {margin: 1px 2px 3px 4px}';
+        $cssout = '.one{margin:1px 2px 3px 4px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {margin-top:1px; margin-left:4px; margin-right:2px; margin-bottom: 3px;}';
+        $cssout = '.one{margin:1px 2px 3px 4px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {margin-top:1px; margin-left:4px;}';
+        $cssout = '.one{margin-top:1px;margin-left:4px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {margin:1px; margin-left:4px;}';
+        $cssout = '.one{margin:1px 1px 1px 4px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {margin:1px; margin-bottom:4px;}';
+        $cssout = '.one{margin:1px 1px 4px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one, .two, .one.two, .one .two {margin:0;} .one.two {margin:0 7px;}';
+        $cssout = '.one, .two, .one .two{margin:0;} .one.two{margin:0 7px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+    }
+
+    /**
+     * Test padding styles
+     *
+     * @param css_optimiser $optimiser
+     */
+    protected function check_padding(css_optimiser $optimiser) {
+        $cssin = '.one {margin: 1px 2px 3px 4px}';
+        $cssout = '.one{margin:1px 2px 3px 4px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {margin-top:1px; margin-left:4px; margin-right:2px; margin-bottom: 3px;}';
+        $cssout = '.one{margin:1px 2px 3px 4px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {margin-top:1px; margin-left:4px;}';
+        $cssout = '.one{margin-top:1px;margin-left:4px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {margin:1px; margin-left:4px;}';
+        $cssout = '.one{margin:1px 1px 1px 4px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {margin:1px; margin-bottom:4px;}';
+        $cssout = '.one{margin:1px 1px 4px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {margin:0 !important;}';
+        $cssout = '.one{margin:0 !important;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {padding:0 !important;}';
+        $cssout = '.one{padding:0 !important;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one, .two, .one.two, .one .two {margin:0;} .one.two {margin:0 7px;}';
+        $cssout = '.one, .two, .one .two{margin:0;} .one.two{margin:0 7px;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+    }
+
+    /**
+     * Test some totally invalid CSS optimisation
+     *
+     * @param css_optimiser $optimiser
+     */
+    protected function try_invalid_css_handling(css_optimiser $optimiser) {
+
+        $cssin = array(
+            '.one{}',
+            '.one {:}',
+            '.one {;}',
+            '.one {;;;;;}',
+            '.one {:;}',
+            '.one {:;:;:;:::;;;}',
+            '.one {!important}',
+            '.one {:!important}',
+            '.one {:!important;}',
+            '.one {;!important}'
+        );
+        $cssout = '.one{}';
+        foreach ($cssin as $css) {
+            $this->assertEqual($cssout, $optimiser->process($css));
+        }
+
+        $cssin = array(
+            '.one{background-color:red;}',
+            '.one {background-color:red;} .one {background-color:}',
+            '.one {background-color:red;} .one {background-color;}',
+            '.one {background-color:red;} .one {background-color}',
+            '.one {background-color:red;} .one {background-color:;}',
+            '.one {background-color:red;} .one {:blue;}',
+            '.one {background-color:red;} .one {:#00F}',
+        );
+        $cssout = '.one{background:#F00;}';
+        foreach ($cssin as $css) {
+            $this->assertEqual($cssout, $optimiser->process($css));
+        }
+
+        $cssin = '..one {background-color:color:red}';
+        $cssout = '..one{background-color:color:red;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '#.one {background-color:color:red}';
+        $cssout = '#.one{background-color:color:red;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '##one {background-color:color:red}';
+        $cssout = '##one{background-color:color:red;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {background-color:color:red}';
+        $cssout = '.one{background-color:color:red;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin = '.one {background-color:red;color;border-color:blue}';
+        $cssout = '.one{background:#F00;border-color:#00F;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin  = '{background-color:#123456;color:red;}{color:green;}';
+        $cssout = "{color:#008000;background:#123456;}";
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        $cssin  = '.one {color:red;} {color:green;} .one {background-color:blue;}';
+        $cssout = ".one{color:#F00;background:#00F;} {color:#008000;}";
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+    }
+
+    /**
+     * Try to break some things
+     * @param css_optimiser $optimiser
+     */
+    protected function try_break_things(css_optimiser $optimiser) {
+        // Wildcard test
+        $cssin  = '* {color: black;}';
+        $cssout = '*{color:#000;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Wildcard test
+        $cssin  = '.one * {color: black;}';
+        $cssout = '.one *{color:#000;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Wildcard test
+        $cssin  = '* .one * {color: black;}';
+        $cssout = '* .one *{color:#000;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Wildcard test
+        $cssin  = '*,* {color: black;}';
+        $cssout = '*{color:#000;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Wildcard test
+        $cssin  = '*, * .one {color: black;}';
+        $cssout = "*,\n* .one{color:#000;}";
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Wildcard test
+        $cssin  = '*, *.one {color: black;}';
+        $cssout = "*,\n*.one{color:#000;}";
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Psedo test
+        $cssin  = '.one:before {color: black;}';
+        $cssout = '.one:before{color:#000;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Psedo test
+        $cssin  = '.one:after {color: black;}';
+        $cssout = '.one:after{color:#000;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Psedo test
+        $cssin  = '.one:onclick {color: black;}';
+        $cssout = '.one:onclick{color:#000;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Test complex CSS rules that don't really exist but mimic other CSS rules
+        $cssin  = '.one {master-of-destruction: explode(\' \', "What madness";}';
+        $cssout = '.one{master-of-destruction:explode(\' \', "What madness";}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Test some complex IE css... I couldn't even think of a more complext solution
+        // than the CSS they came up with.
+        $cssin  = 'a { opacity: 0.5; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter: alpha(opacity=50); }';
+        $cssout = 'a{opacity:0.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50);}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+    }
+
+    /**
+     * A bulk processing test
+     * @param css_optimiser $optimiser
+     */
+    protected function try_bulk_processing(css_optimiser $optimiser) {
+        global $CFG;
+        $cssin = <<<CSS
+.test .one {
+    margin:5px;
+    border:0;
+}
+.test .one {
+    margin: 10px;
+    color: red;
+}
+
+.test.one {
+    margin: 15px;
+}
+
+#test .one {margin:  20px;}
+#test #one {margin:  25px;}.test #one {margin:  30px;}
+  .test    .one      {     background-color: #123;     }
+.test.one{border:1px solid blue}.test.one{border-color:green;}
+
+@media print {
+    #test .one {margin: 35px;}
+}
+
+@media print {
+    #test .one {margin: 40px;color: #123456;}
+    #test #one {margin: 45px;}
+}
+
+@media print,screen {
+    #test .one {color: #654321;}
+}
+
+#test .one,
+#new.style {color:#000;}
+CSS;
+
+        $cssout = <<<CSS
+.test .one{color:#F00;margin:10px;border-width:0;background:#123;}
+.test.one{margin:15px;border:1px solid #008000;}
+#test .one{color:#000;margin:20px;}
+#test #one{margin:25px;}
+.test #one{margin:30px;}
+#new.style{color:#000;}
+
+
+@media print {
+  #test .one{color:#123456;margin:40px;}
+  #test #one{margin:45px;}
+}
+
+@media print,screen {
+  #test .one{color:#654321;}
+}
+CSS;
+        $CFG->cssoptimiserpretty = 1;
+        $this->assertEqual($optimiser->process($cssin), $cssout);
+    }
+
+    /**
+     * Test CSS colour matching
+     */
+    public function test_css_is_colour() {
+        // First lets test hex colours
+        $this->assertTrue(css_is_colour('#123456'));
+        $this->assertTrue(css_is_colour('#123'));
+        $this->assertTrue(css_is_colour('#ABCDEF'));
+        $this->assertTrue(css_is_colour('#ABC'));
+        $this->assertTrue(css_is_colour('#abcdef'));
+        $this->assertTrue(css_is_colour('#abc'));
+        $this->assertTrue(css_is_colour('#aBcDeF'));
+        $this->assertTrue(css_is_colour('#aBc'));
+        $this->assertTrue(css_is_colour('#1a2Bc3'));
+        $this->assertTrue(css_is_colour('#1Ac'));
+
+        // Note the following two colour's arn't really colours but browsers process
+        // them still.
+        $this->assertTrue(css_is_colour('#A'));
+        $this->assertTrue(css_is_colour('#12'));
+        // Having four or five characters however are not valid colours and
+        // browsers don't parse them. They need to fail so that broken CSS
+        // stays broken after optimisation.
+        $this->assertFalse(css_is_colour('#1234'));
+        $this->assertFalse(css_is_colour('#12345'));
+
+        $this->assertFalse(css_is_colour('#BCDEFG'));
+        $this->assertFalse(css_is_colour('#'));
+        $this->assertFalse(css_is_colour('#0000000'));
+        $this->assertFalse(css_is_colour('#132-245'));
+        $this->assertFalse(css_is_colour('#13 23 43'));
+        $this->assertFalse(css_is_colour('123456'));
+
+        // Next lets test real browser mapped colours
+        $this->assertTrue(css_is_colour('black'));
+        $this->assertTrue(css_is_colour('blue'));
+        $this->assertTrue(css_is_colour('BLACK'));
+        $this->assertTrue(css_is_colour('Black'));
+        $this->assertTrue(css_is_colour('bLACK'));
+        $this->assertTrue(css_is_colour('mediumaquamarine'));
+        $this->assertTrue(css_is_colour('mediumAquamarine'));
+        $this->assertFalse(css_is_colour('monkey'));
+        $this->assertFalse(css_is_colour(''));
+        $this->assertFalse(css_is_colour('not a colour'));
+
+        // Next lets test rgb(a) colours
+        $this->assertTrue(css_is_colour('rgb(255,255,255)'));
+        $this->assertTrue(css_is_colour('rgb(0, 0, 0)'));
+        $this->assertTrue(css_is_colour('RGB (255, 255   ,    255)'));
+        $this->assertTrue(css_is_colour('rgba(0,0,0,0)'));
+        $this->assertTrue(css_is_colour('RGBA(255,255,255,1)'));
+        $this->assertTrue(css_is_colour('rgbA(255,255,255,0.5)'));
+        $this->assertFalse(css_is_colour('rgb(-255,-255,-255)'));
+        $this->assertFalse(css_is_colour('rgb(256,-256,256)'));
+
+        // Now lets test HSL colours
+        $this->assertTrue(css_is_colour('hsl(0,0%,100%)'));
+        $this->assertTrue(css_is_colour('hsl(180, 0%, 10%)'));
+        $this->assertTrue(css_is_colour('hsl (360, 100%   ,    95%)'));
+
+        // Finally test the special values
+        $this->assertTrue(css_is_colour('inherit'));
+    }
+
+    /**
+     * Test the css_is_width function
+     */
+    public function test_css_is_width() {
+
+        $this->assertTrue(css_is_width('0'));
+        $this->assertTrue(css_is_width('0px'));
+        $this->assertTrue(css_is_width('0em'));
+        $this->assertTrue(css_is_width('199px'));
+        $this->assertTrue(css_is_width('199em'));
+        $this->assertTrue(css_is_width('199%'));
+        $this->assertTrue(css_is_width('-1'));
+        $this->assertTrue(css_is_width('-1px'));
+        $this->assertTrue(css_is_width('auto'));
+        $this->assertTrue(css_is_width('inherit'));
+
+        $this->assertFalse(css_is_width('-'));
+        $this->assertFalse(css_is_width('bananas'));
+        $this->assertFalse(css_is_width(''));
+        $this->assertFalse(css_is_width('top'));
+    }
+
+    /**
+     * This function tests some of the broken crazy CSS we have in Moodle.
+     * For each of these things the value needs to be corrected if we can be 100%
+     * certain what is going wrong, Or it needs to be left as is.
+     *
+     * @param css_optimiser $optimiser
+     */
+    public function try_broken_css_found_in_moodle(css_optimiser $optimiser) {
+        // Notice how things are out of order here but that they get corrected
+        $cssin = '.test {background:url([[pix:theme|pageheaderbgred]]) top center no-repeat}';
+        $cssout = '.test{background:url([[pix:theme|pageheaderbgred]]) no-repeat top center;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Cursor hand isn't valid
+        $cssin  = '.test {cursor: hand;}';
+        $cssout = '.test{cursor:hand;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Zoom property isn't valid
+        $cssin  = '.test {zoom: 1;}';
+        $cssout = '.test{zoom:1;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Left isn't a valid position property
+        $cssin  = '.test {position: left;}';
+        $cssout = '.test{position:left;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // The dark red color isn't a valid HTML color but has a standardised
+        // translation of #8B0000
+        $cssin  = '.test {color: darkred;}';
+        $cssout = '.test{color:#8B0000;}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // You can't use argb colours as border colors
+        $cssin  = '.test {border-bottom: 1px solid rgba(0,0,0,0.25);}';
+        $cssout = '.test{border-bottom:1px solid rgba(0,0,0,0.25);}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+
+        // Opacity with annoying IE equivilants....
+        $cssin  = '.test {opacity: 0.5; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter: alpha(opacity=50);}';
+        $cssout = '.test{opacity:0.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50);}';
+        $this->assertEqual($cssout, $optimiser->process($cssin));
+    }
+}
\ No newline at end of file
index 28ad2df..fcb4e3b 100644 (file)
@@ -747,7 +747,7 @@ class filter_delete_config_test extends UnitTestCaseUsingDatabase {
         $expectedconfig = new stdClass;
         $expectedconfig->configname = 'Other config value';
         $this->assertEqual($expectedconfig, get_config('filter_other'));
-        $this->assertNull(get_config('filter_name'));
+        $this->assertIdentical(get_config('filter_name'), new stdClass());
     }
 
     public function test_filter_delete_all_for_context() {
@@ -785,6 +785,7 @@ class filter_filter_set_applies_to_strings extends UnitTestCaseUsingDatabase {
     }
 
     public function tearDown() {
+        global $CFG;
         $CFG->stringfilters = $this->origcfgstringfilters;
         $CFG->filterall = $this->origcfgfilterall;
 
index 01df2c7..6818d2d 100644 (file)
@@ -103,2099 +103,2152 @@ id,name,year,tzrule,gmtoff,dstoff,dst_month,dst_startday,dst_weekday,dst_skipwee
 102,Africa/Khartoum,1972,Sudan,120,60,4,-1,0,0,02:00,10,15,-1,0,01:00
 103,Africa/Khartoum,1985,Sudan,120,0,4,-1,0,0,02:00,10,15,-1,0,01:00
 104,Africa/Khartoum,2000,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-105,Africa/Mbabane,1970,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-106,Africa/Dar_es_Salaam,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-107,Africa/Lome,1970,,0,0,0,0,0,0,00:00,0,0,0,0,00:00
-108,Africa/Tunis,1970,Tunisia,60,60,4,1,1,0,03:00,9,16,-1,0,00:00
-109,Africa/Tunis,1977,Tunisia,60,60,4,30,-1,0,01:00,9,24,-1,0,01:00
-110,Africa/Tunis,1978,Tunisia,60,60,5,1,-1,0,01:00,10,1,-1,0,01:00
-111,Africa/Tunis,1988,Tunisia,60,60,6,1,-1,0,01:00,9,-1,0,0,01:00
-112,Africa/Tunis,1989,Tunisia,60,60,3,26,-1,0,01:00,9,-1,0,0,01:00
-113,Africa/Tunis,1990,Tunisia,60,60,5,1,-1,0,01:00,9,-1,0,0,01:00
-114,Africa/Tunis,2005,Tunisia,60,60,5,1,-1,0,01:00,9,30,-1,0,02:00
-115,Africa/Tunis,2006,Tunisia,60,60,3,-1,0,0,03:00,10,-1,0,0,03:00
-116,Africa/Tunis,2008,Tunisia,60,0,3,-1,0,0,03:00,10,-1,0,0,03:00
-117,Africa/Kampala,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-118,Africa/Lusaka,1970,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-119,Africa/Harare,1970,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-120,Antarctica/Casey,1970,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-121,Antarctica/Casey,2009,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
-122,Antarctica/Casey,2010,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-123,Antarctica/Davis,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-124,Antarctica/Davis,2009,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-125,Antarctica/Davis,2010,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-126,Antarctica/Mawson,1970,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-127,Antarctica/Mawson,2009,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-128,Antarctica/Macquarie,1970,ATAQ,600,60,10,-1,0,0,12:00,3,8,0,0,12:00
-129,Antarctica/Macquarie,1972,ATAQ,600,60,10,-1,0,0,12:00,2,-1,0,0,12:00
-130,Antarctica/Macquarie,1973,ATAQ,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-131,Antarctica/Macquarie,1982,ATAQ,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
-132,Antarctica/Macquarie,1984,ATAQ,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-133,Antarctica/Macquarie,1986,ATAQ,600,60,10,15,0,0,12:00,3,1,0,0,12:00
-134,Antarctica/Macquarie,1987,ATAQ,600,60,10,22,0,0,12:00,3,15,0,0,12:00
-135,Antarctica/Macquarie,1988,ATAQ,600,60,10,-1,0,0,12:00,3,15,0,0,12:00
-136,Antarctica/Macquarie,1991,ATAQ,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
-137,Antarctica/Macquarie,2000,ATAQ,600,60,8,-1,0,0,12:00,3,-1,0,0,12:00
-138,Antarctica/Macquarie,2001,ATAQ,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
-139,Antarctica/Macquarie,2006,ATAQ,600,60,10,1,0,0,12:00,4,1,0,0,12:00
-140,Antarctica/Macquarie,2007,ATAQ,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
-141,Antarctica/Macquarie,2008,ATAQ,600,60,10,1,0,0,12:00,4,1,0,0,12:00
-142,Antarctica/Macquarie,2010,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
-143,Indian/Kerguelen,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-144,Antarctica/DumontDUrville,1970,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
-145,Antarctica/Syowa,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-146,Antarctica/Vostok,1970,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-147,Antarctica/Rothera,1970,,0,0,0,0,0,0,00:00,0,0,0,0,00:00
-148,Antarctica/Rothera,1976,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-149,Antarctica/Palmer,1970,ArgAQ,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-150,Antarctica/Palmer,1974,ArgAQ,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-151,Antarctica/Palmer,1975,ArgAQ,-180,0,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-152,Antarctica/Palmer,1982,ChileAQ,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
-153,Antarctica/Palmer,1987,ChileAQ,-240,60,10,9,0,0,4:00,4,12,-1,0,3:00
-154,Antarctica/Palmer,1988,ChileAQ,-240,60,10,1,0,0,4:00,3,9,0,0,3:00
-155,Antarctica/Palmer,1989,ChileAQ,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
-156,Antarctica/Palmer,1990,ChileAQ,-240,60,9,16,-1,0,4:00,3,18,-1,0,3:00
-157,Antarctica/Palmer,1991,ChileAQ,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
-158,Antarctica/Palmer,1997,ChileAQ,-240,60,10,9,0,0,4:00,3,30,-1,0,3:00
-159,Antarctica/Palmer,1998,ChileAQ,-240,60,9,27,-1,0,4:00,3,9,0,0,3:00
-160,Antarctica/Palmer,1999,ChileAQ,-240,60,10,9,0,0,4:00,4,4,-1,0,3:00
-161,Antarctica/Palmer,2000,ChileAQ,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
-162,Antarctica/McMurdo,1970,NZAQ,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-163,Antarctica/McMurdo,1974,NZAQ,720,60,11,3,-1,0,14:00,1,1,-1,0,23:00
-164,Antarctica/McMurdo,1975,NZAQ,720,60,10,-1,0,0,14:00,2,23,-1,0,14:00
-165,Antarctica/McMurdo,1976,NZAQ,720,60,10,-1,0,0,14:00,3,1,0,0,14:00
-166,Antarctica/McMurdo,1989,NZAQ,720,60,10,8,-1,0,14:00,3,1,0,0,14:00
-167,Antarctica/McMurdo,1990,NZAQ,720,60,10,1,0,0,14:00,3,15,0,0,14:00
-168,Antarctica/McMurdo,2007,NZAQ,720,60,9,-1,0,0,14:00,3,15,0,0,14:00
-169,Antarctica/McMurdo,2008,NZAQ,720,60,9,-1,0,0,14:00,4,1,0,0,14:00
-170,Asia/Kabul,1970,,270,0,0,0,0,0,00:00,0,0,0,0,00:00
-171,Asia/Yerevan,1970,RussiaAsia,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-172,Asia/Yerevan,1981,RussiaAsia,240,60,4,1,-1,0,04:00,10,1,-1,0,03:00
-173,Asia/Yerevan,1984,RussiaAsia,240,60,4,1,-1,0,04:00,9,-1,0,0,06:00
-174,Asia/Yerevan,1985,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
-175,Asia/Yerevan,1991,RussiaAsia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-176,Asia/Yerevan,1992,RussiaAsia,180,60,3,-1,6,0,26:00,9,-1,6,0,25:00
-177,Asia/Yerevan,1993,RussiaAsia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-178,Asia/Yerevan,1995,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-179,Asia/Yerevan,1997,RussiaAsia,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-180,Asia/Baku,1970,RussiaAsia,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-181,Asia/Baku,1981,RussiaAsia,240,60,4,1,-1,0,04:00,10,1,-1,0,03:00
-182,Asia/Baku,1984,RussiaAsia,240,60,4,1,-1,0,04:00,9,-1,0,0,06:00
-183,Asia/Baku,1985,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
-184,Asia/Baku,1991,RussiaAsia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-185,Asia/Baku,1992,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-186,Asia/Baku,1996,EUAsia,240,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-187,Asia/Baku,1997,Azer,240,60,3,-1,0,0,08:00,10,-1,0,0,08:00
-188,Asia/Bahrain,1970,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-189,Asia/Bahrain,1972,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-190,Asia/Dhaka,1970,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-191,Asia/Dhaka,1971,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-192,Asia/Dhaka,2009,Dhaka,360,60,6,19,-1,0,29:00,12,31,-1,0,28:59
-193,Asia/Dhaka,2010,Dhaka,360,0,6,19,-1,0,29:00,12,31,-1,0,28:59
-194,Asia/Thimphu,1970,,330,0,0,0,0,0,00:00,0,0,0,0,00:00
-195,Asia/Thimphu,1987,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-196,Indian/Chagos,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-197,Indian/Chagos,1996,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-198,Asia/Brunei,1970,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-199,Asia/Rangoon,1970,,390,0,0,0,0,0,00:00,0,0,0,0,00:00
-200,Asia/Phnom_Penh,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-201,Asia/Harbin,1970,,510,0,0,0,0,0,00:00,0,0,0,0,00:00
-202,Asia/Harbin,1980,PRC,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-203,Asia/Harbin,1986,PRC,480,60,5,4,-1,0,08:00,9,11,0,0,07:00
-204,Asia/Harbin,1987,PRC,480,60,4,10,0,0,08:00,9,11,0,0,07:00
-205,Asia/Harbin,1991,PRC,480,0,4,10,0,0,08:00,9,11,0,0,07:00
-206,Asia/Shanghai,1970,PRC,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-207,Asia/Shanghai,1986,PRC,480,60,5,4,-1,0,08:00,9,11,0,0,07:00
-208,Asia/Shanghai,1987,PRC,480,60,4,10,0,0,08:00,9,11,0,0,07:00
-209,Asia/Shanghai,1991,PRC,480,0,4,10,0,0,08:00,9,11,0,0,07:00
-210,Asia/Chongqing,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-211,Asia/Chongqing,1980,PRC,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-212,Asia/Chongqing,1986,PRC,480,60,5,4,-1,0,08:00,9,11,0,0,07:00
-213,Asia/Chongqing,1987,PRC,480,60,4,10,0,0,08:00,9,11,0,0,07:00
-214,Asia/Chongqing,1991,PRC,480,0,4,10,0,0,08:00,9,11,0,0,07:00
-215,Asia/Urumqi,1970,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-216,Asia/Urumqi,1980,PRC,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-217,Asia/Urumqi,1986,PRC,480,60,5,4,-1,0,08:00,9,11,0,0,07:00
-218,Asia/Urumqi,1987,PRC,480,60,4,10,0,0,08:00,9,11,0,0,07:00
-219,Asia/Urumqi,1991,PRC,480,0,4,10,0,0,08:00,9,11,0,0,07:00
-220,Asia/Kashgar,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-221,Asia/Kashgar,1980,PRC,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-222,Asia/Kashgar,1986,PRC,480,60,5,4,-1,0,08:00,9,11,0,0,07:00
-223,Asia/Kashgar,1987,PRC,480,60,4,10,0,0,08:00,9,11,0,0,07:00
-224,Asia/Kashgar,1991,PRC,480,0,4,10,0,0,08:00,9,11,0,0,07:00
-225,Asia/Hong_Kong,1970,HK,480,60,4,16,0,0,11:30,10,16,0,0,10:30
-226,Asia/Hong_Kong,1973,HK,480,60,12,30,-1,0,11:30,10,16,0,0,10:30
-227,Asia/Hong_Kong,1974,HK,480,60,4,16,0,0,11:30,10,16,0,0,10:30
-228,Asia/Hong_Kong,1979,HK,480,60,5,8,0,0,11:30,10,16,0,0,10:30
-229,Asia/Hong_Kong,1980,HK,480,0,5,8,0,0,11:30,10,16,0,0,10:30
-230,Asia/Taipei,1970,Taiwan,480,60,6,1,-1,0,08:00,10,1,-1,0,07:00
-231,Asia/Taipei,1974,Taiwan,480,60,4,1,-1,0,08:00,10,1,-1,0,07:00
-232,Asia/Taipei,1979,Taiwan,480,60,6,30,-1,0,08:00,9,30,-1,0,07:00
-233,Asia/Taipei,1980,Taiwan,480,0,6,30,-1,0,08:00,9,30,-1,0,07:00
-234,Asia/Macau,1970,Macau,480,60,4,16,0,0,11:30,10,16,0,0,10:30
-235,Asia/Macau,1972,Macau,480,60,4,15,0,0,08:00,10,15,0,0,07:00
-236,Asia/Macau,1974,Macau,480,60,4,15,0,0,08:00,10,15,0,0,10:30
-237,Asia/Macau,1975,Macau,480,60,4,15,0,0,11:30,10,15,0,0,10:30
-238,Asia/Macau,1978,Macau,480,60,4,15,0,0,08:00,10,15,0,0,07:00
-239,Asia/Macau,1980,Macau,480,0,4,15,0,0,08:00,10,15,0,0,07:00
-240,Asia/Macau,1999,PRC,480,0,4,15,0,0,08:00,10,15,0,0,07:00
-241,Asia/Nicosia,1970,Cyprus,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-242,Asia/Nicosia,1975,Cyprus,120,60,4,13,-1,0,02:00,10,12,-1,0,01:00
-243,Asia/Nicosia,1976,Cyprus,120,60,5,15,-1,0,02:00,10,11,-1,0,01:00
-244,Asia/Nicosia,1977,Cyprus,120,60,4,1,0,0,02:00,9,25,-1,0,01:00
-245,Asia/Nicosia,1978,Cyprus,120,60,4,1,0,0,02:00,10,2,-1,0,01:00
-246,Asia/Nicosia,1979,Cyprus,120,60,4,1,0,0,02:00,9,-1,0,0,01:00
-247,Asia/Nicosia,1981,Cyprus,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
-248,Asia/Nicosia,1998,EUAsia,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
-249,Asia/Tbilisi,1970,RussiaAsia,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-250,Asia/Tbilisi,1981,RussiaAsia,240,60,4,1,-1,0,04:00,10,1,-1,0,03:00
-251,Asia/Tbilisi,1984,RussiaAsia,240,60,4,1,-1,0,04:00,9,-1,0,0,06:00
-252,Asia/Tbilisi,1985,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
-253,Asia/Tbilisi,1991,RussiaAsia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-254,Asia/Tbilisi,1992,E-EurAsia,180,60,3,-1,0,0,03:00,9,-1,0,0,02:00
-255,Asia/Tbilisi,1994,E-EurAsia,240,60,3,-1,0,0,04:00,9,-1,0,0,03:00
-256,Asia/Tbilisi,1995,E-EurAsia,240,0,12,31,-1,0,16:00,9,-1,0,0,03:00
-257,Asia/Tbilisi,1996,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-258,Asia/Tbilisi,1997,E-EurAsia,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-259,Asia/Tbilisi,2004,RussiaAsia,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-260,Asia/Tbilisi,2005,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-261,Asia/Dili,1970,,540,0,0,0,0,0,00:00,0,0,0,0,00:00
-262,Asia/Dili,1976,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-263,Asia/Dili,2000,,540,0,0,0,0,0,00:00,0,0,0,0,00:00
-264,Asia/Kolkata,1970,,330,0,0,0,0,0,00:00,0,0,0,0,00:00
-265,Asia/Jakarta,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-266,Asia/Pontianak,1970,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-267,Asia/Pontianak,1988,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-268,Asia/Makassar,1970,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-269,Asia/Jayapura,1970,,540,0,0,0,0,0,00:00,0,0,0,0,00:00
-270,Asia/Tehran,1970,,210,0,0,0,0,0,00:00,0,0,0,0,00:00
-271,Asia/Tehran,1977,Iran,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-272,Asia/Tehran,1978,Iran,240,60,3,21,-1,0,04:00,10,21,-1,0,03:00
-273,Asia/Tehran,1979,Iran,210,60,3,21,-1,0,03:30,9,19,-1,0,02:30
-274,Asia/Tehran,1980,Iran,210,60,3,21,-1,0,03:30,9,23,-1,0,02:30
-275,Asia/Tehran,1991,Iran,210,60,5,3,-1,0,03:30,9,22,-1,0,02:30
-276,Asia/Tehran,1992,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
-277,Asia/Tehran,1996,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
-278,Asia/Tehran,1997,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
-279,Asia/Tehran,2000,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
-280,Asia/Tehran,2001,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
-281,Asia/Tehran,2004,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
-282,Asia/Tehran,2005,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
-283,Asia/Tehran,2008,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
-284,Asia/Tehran,2009,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
-285,Asia/Tehran,2012,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
-286,Asia/Tehran,2013,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
-287,Asia/Tehran,2016,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
-288,Asia/Tehran,2017,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
-289,Asia/Tehran,2020,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
-290,Asia/Baghdad,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-291,Asia/Baghdad,1982,Iraq,180,60,5,1,-1,0,03:00,10,1,-1,0,02:00
-292,Asia/Baghdad,1983,Iraq,180,60,3,31,-1,0,03:00,10,1,-1,0,02:00
-293,Asia/Baghdad,1984,Iraq,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
-294,Asia/Baghdad,1985,Iraq,180,60,4,1,-1,0,03:00,9,-1,0,0,04:00
-295,Asia/Baghdad,1986,Iraq,180,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-296,Asia/Baghdad,1991,Iraq,180,60,4,1,-1,0,06:00,10,1,-1,0,06:00
-297,Asia/Baghdad,2007,Iraq,180,0,4,1,-1,0,06:00,10,1,-1,0,06:00
-298,Asia/Jerusalem,1970,Zion,120,60,4,29,-1,0,04:00,9,22,-1,0,01:00
-299,Asia/Jerusalem,1974,Zion,120,60,7,7,-1,0,02:00,10,13,-1,0,01:00
-300,Asia/Jerusalem,1975,Zion,120,60,4,20,-1,0,02:00,8,31,-1,0,01:00
-301,Asia/Jerusalem,1985,Zion,120,60,4,14,-1,0,02:00,9,15,-1,0,01:00
-302,Asia/Jerusalem,1986,Zion,120,60,5,18,-1,0,02:00,9,7,-1,0,01:00
-303,Asia/Jerusalem,1987,Zion,120,60,4,15,-1,0,02:00,9,13,-1,0,01:00
-304,Asia/Jerusalem,1988,Zion,120,60,4,9,-1,0,02:00,9,3,-1,0,01:00
-305,Asia/Jerusalem,1989,Zion,120,60,4,30,-1,0,02:00,9,3,-1,0,01:00
-306,Asia/Jerusalem,1990,Zion,120,60,3,25,-1,0,02:00,8,26,-1,0,01:00
-307,Asia/Jerusalem,1991,Zion,120,60,3,24,-1,0,02:00,9,1,-1,0,01:00
-308,Asia/Jerusalem,1992,Zion,120,60,3,29,-1,0,02:00,9,6,-1,0,01:00
-309,Asia/Jerusalem,1993,Zion,120,60,4,2,-1,0,02:00,9,5,-1,0,01:00
-310,Asia/Jerusalem,1994,Zion,120,60,4,1,-1,0,02:00,8,28,-1,0,01:00
-311,Asia/Jerusalem,1995,Zion,120,60,3,31,-1,0,02:00,9,3,-1,0,01:00
-312,Asia/Jerusalem,1996,Zion,120,60,3,15,-1,0,02:00,9,16,-1,0,01:00
-313,Asia/Jerusalem,1997,Zion,120,60,3,21,-1,0,02:00,9,14,-1,0,01:00
-314,Asia/Jerusalem,1998,Zion,120,60,3,20,-1,0,02:00,9,6,-1,0,01:00
-315,Asia/Jerusalem,1999,Zion,120,60,4,2,-1,0,04:00,9,3,-1,0,03:00
-316,Asia/Jerusalem,2000,Zion,120,60,4,14,-1,0,04:00,10,6,-1,0,02:00
-317,Asia/Jerusalem,2001,Zion,120,60,4,9,-1,0,03:00,9,24,-1,0,02:00
-318,Asia/Jerusalem,2002,Zion,120,60,3,29,-1,0,03:00,10,7,-1,0,02:00
-319,Asia/Jerusalem,2003,Zion,120,60,3,28,-1,0,03:00,10,3,-1,0,02:00
-320,Asia/Jerusalem,2004,Zion,120,60,4,7,-1,0,03:00,9,22,-1,0,02:00
-321,Asia/Jerusalem,2005,Zion,120,60,4,1,-1,0,04:00,10,9,-1,0,03:00
-322,Asia/Jerusalem,2006,Zion,120,60,3,26,5,0,04:00,10,1,-1,0,03:00
-323,Asia/Jerusalem,2007,Zion,120,60,3,26,5,0,04:00,9,16,-1,0,03:00
-324,Asia/Jerusalem,2008,Zion,120,60,3,26,5,0,04:00,10,5,-1,0,03:00
-325,Asia/Jerusalem,2009,Zion,120,60,3,26,5,0,04:00,9,27,-1,0,03:00
-326,Asia/Jerusalem,2010,Zion,120,60,3,26,5,0,04:00,9,12,-1,0,03:00
-327,Asia/Jerusalem,2011,Zion,120,60,4,1,-1,0,04:00,10,2,-1,0,03:00
-328,Asia/Jerusalem,2012,Zion,120,60,3,26,5,0,04:00,9,23,-1,0,03:00
-329,Asia/Jerusalem,2013,Zion,120,60,3,26,5,0,04:00,9,8,-1,0,03:00
-330,Asia/Jerusalem,2014,Zion,120,60,3,26,5,0,04:00,9,28,-1,0,03:00
-331,Asia/Jerusalem,2015,Zion,120,60,3,26,5,0,04:00,9,20,-1,0,03:00
-332,Asia/Jerusalem,2016,Zion,120,60,4,1,-1,0,04:00,10,9,-1,0,03:00
-333,Asia/Jerusalem,2017,Zion,120,60,3,26,5,0,04:00,9,24,-1,0,03:00
-334,Asia/Jerusalem,2018,Zion,120,60,3,26,5,0,04:00,9,16,-1,0,03:00
-335,Asia/Jerusalem,2019,Zion,120,60,3,26,5,0,04:00,10,6,-1,0,03:00
-336,Asia/Jerusalem,2020,Zion,120,60,3,26,5,0,04:00,9,27,-1,0,03:00
-337,Asia/Tokyo,1970,Japan,540,0,5,1,0,0,11:00,9,8,6,0,10:00
-338,Asia/Amman,1970,Jordan,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-339,Asia/Amman,1973,Jordan,120,60,6,6,-1,0,02:00,10,1,-1,0,01:00
-340,Asia/Amman,1974,Jordan,120,60,5,1,-1,0,02:00,10,1,-1,0,01:00
-341,Asia/Amman,1976,Jordan,120,60,5,1,-1,0,02:00,11,1,-1,0,01:00
-342,Asia/Amman,1977,Jordan,120,60,5,1,-1,0,02:00,10,1,-1,0,01:00
-343,Asia/Amman,1978,Jordan,120,60,4,30,-1,0,02:00,9,30,-1,0,01:00
-344,Asia/Amman,1985,Jordan,120,60,4,1,-1,0,02:00,10,1,-1,0,01:00
-345,Asia/Amman,1986,Jordan,120,60,4,1,5,0,02:00,10,1,5,0,01:00
-346,Asia/Amman,1989,Jordan,120,60,5,8,-1,0,02:00,10,1,5,0,01:00
-347,Asia/Amman,1990,Jordan,120,60,4,27,-1,0,02:00,10,1,5,0,01:00
-348,Asia/Amman,1991,Jordan,120,60,4,17,-1,0,02:00,9,27,-1,0,01:00
-349,Asia/Amman,1992,Jordan,120,60,4,10,-1,0,02:00,10,1,5,0,01:00
-350,Asia/Amman,1993,Jordan,120,60,4,1,5,0,02:00,10,1,5,0,01:00
-351,Asia/Amman,1994,Jordan,120,60,4,1,5,0,02:00,9,15,5,0,01:00
-352,Asia/Amman,1995,Jordan,120,60,4,1,5,0,02:00,9,15,5,0,02:00
-353,Asia/Amman,1999,Jordan,120,60,7,1,-1,0,02:00,9,-1,5,0,02:00
-354,Asia/Amman,2000,Jordan,120,60,3,-1,4,0,02:00,9,-1,5,0,02:00
-355,Asia/Amman,2002,Jordan,120,60,3,-1,4,0,26:00,9,-1,5,0,02:00
-356,Asia/Amman,2003,Jordan,120,60,3,-1,4,0,26:00,10,24,-1,0,02:00
-357,Asia/Amman,2004,Jordan,120,60,3,-1,4,0,26:00,10,15,-1,0,02:00
-358,Asia/Amman,2005,Jordan,120,60,3,-1,4,0,26:00,9,-1,5,0,02:00
-359,Asia/Amman,2006,Jordan,120,60,3,-1,4,0,26:00,10,-1,5,0,02:00
-360,Asia/Almaty,1970,RussiaAsia,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-361,Asia/Almaty,1981,RussiaAsia,360,60,4,1,-1,0,06:00,10,1,-1,0,05:00
-362,Asia/Almaty,1984,RussiaAsia,360,60,4,1,-1,0,06:00,9,-1,0,0,08:00
-363,Asia/Almaty,1985,RussiaAsia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
-364,Asia/Almaty,1991,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-365,Asia/Almaty,1992,RussiaAsia,360,60,3,-1,6,0,29:00,9,-1,6,0,28:00
-366,Asia/Almaty,1993,RussiaAsia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
-367,Asia/Almaty,1996,RussiaAsia,360,60,3,-1,0,0,08:00,10,-1,0,0,08:00
-368,Asia/Almaty,2005,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-369,Asia/Qyzylorda,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-370,Asia/Qyzylorda,1981,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-371,Asia/Qyzylorda,1982,RussiaAsia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
-372,Asia/Qyzylorda,1984,RussiaAsia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
-373,Asia/Qyzylorda,1985,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-374,Asia/Qyzylorda,1991,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-375,Asia/Qyzylorda,1992,RussiaAsia,360,60,3,-1,6,0,29:00,9,-1,6,0,28:00
-376,Asia/Qyzylorda,1993,RussiaAsia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
-377,Asia/Qyzylorda,1996,RussiaAsia,360,60,3,-1,0,0,08:00,10,-1,0,0,08:00
-378,Asia/Qyzylorda,2005,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-379,Asia/Aqtobe,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-380,Asia/Aqtobe,1981,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-381,Asia/Aqtobe,1982,RussiaAsia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
-382,Asia/Aqtobe,1984,RussiaAsia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
-383,Asia/Aqtobe,1985,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-384,Asia/Aqtobe,1992,RussiaAsia,300,60,3,-1,6,0,28:00,9,-1,6,0,27:00
-385,Asia/Aqtobe,1993,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-386,Asia/Aqtobe,1996,RussiaAsia,300,60,3,-1,0,0,07:00,10,-1,0,0,07:00
-387,Asia/Aqtobe,2005,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-388,Asia/Aqtau,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-389,Asia/Aqtau,1981,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-390,Asia/Aqtau,1982,RussiaAsia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
-391,Asia/Aqtau,1984,RussiaAsia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
-392,Asia/Aqtau,1985,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-393,Asia/Aqtau,1992,RussiaAsia,300,60,3,-1,6,0,28:00,9,-1,6,0,27:00
-394,Asia/Aqtau,1993,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-395,Asia/Aqtau,1995,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
-396,Asia/Aqtau,1996,RussiaAsia,240,60,3,-1,0,0,06:00,10,-1,0,0,06:00
-397,Asia/Aqtau,2005,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-398,Asia/Oral,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-399,Asia/Oral,1981,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-400,Asia/Oral,1982,RussiaAsia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
-401,Asia/Oral,1984,RussiaAsia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
-402,Asia/Oral,1985,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-403,Asia/Oral,1989,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
-404,Asia/Oral,1992,RussiaAsia,240,60,3,-1,6,0,27:00,9,-1,6,0,26:00
-405,Asia/Oral,1993,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
-406,Asia/Oral,1996,RussiaAsia,240,60,3,-1,0,0,06:00,10,-1,0,0,06:00
-407,Asia/Oral,2005,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-408,Asia/Bishkek,1970,RussiaAsia,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-409,Asia/Bishkek,1981,RussiaAsia,360,60,4,1,-1,0,06:00,10,1,-1,0,05:00
-410,Asia/Bishkek,1984,RussiaAsia,360,60,4,1,-1,0,06:00,9,-1,0,0,08:00
-411,Asia/Bishkek,1985,RussiaAsia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
-412,Asia/Bishkek,1991,Kyrgyz,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-413,Asia/Bishkek,1992,Kyrgyz,300,60,4,7,0,0,05:00,9,-1,0,0,04:00
-414,Asia/Bishkek,1997,Kyrgyz,300,60,3,-1,0,0,07:30,10,-1,0,0,06:30
-415,Asia/Bishkek,2005,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-416,Asia/Seoul,1970,ROK,540,60,5,15,-1,0,09:00,9,13,-1,0,08:00
-417,Asia/Seoul,1987,ROK,540,60,5,8,0,0,09:00,10,8,0,0,08:00
-418,Asia/Seoul,1988,ROK,540,0,5,8,0,0,09:00,10,8,0,0,08:00
-419,Asia/Pyongyang,1970,,540,0,0,0,0,0,00:00,0,0,0,0,00:00
-420,Asia/Kuwait,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-421,Asia/Vientiane,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-422,Asia/Beirut,1970,Lebanon,120,60,5,1,-1,0,02:00,10,1,-1,0,01:00
-423,Asia/Beirut,1972,Lebanon,120,60,6,22,-1,0,02:00,10,1,-1,0,01:00
-424,Asia/Beirut,1973,Lebanon,120,60,5,1,-1,0,02:00,10,1,-1,0,01:00
-425,Asia/Beirut,1978,Lebanon,120,60,4,30,-1,0,02:00,9,30,-1,0,01:00
-426,Asia/Beirut,1984,Lebanon,120,60,5,1,-1,0,02:00,10,16,-1,0,01:00
-427,Asia/Beirut,1988,Lebanon,120,60,6,1,-1,0,02:00,10,16,-1,0,01:00
-428,Asia/Beirut,1989,Lebanon,120,60,5,10,-1,0,02:00,10,16,-1,0,01:00
-429,Asia/Beirut,1990,Lebanon,120,60,5,1,-1,0,02:00,10,16,-1,0,01:00
-430,Asia/Beirut,1992,Lebanon,120,60,5,1,-1,0,02:00,10,4,-1,0,01:00
-431,Asia/Beirut,1993,Lebanon,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
-432,Asia/Beirut,1999,Lebanon,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
-433,Asia/Kuala_Lumpur,1970,,450,0,0,0,0,0,00:00,0,0,0,0,00:00
-434,Asia/Kuala_Lumpur,1982,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-435,Asia/Kuching,1970,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-436,Asia/Kuching,1982,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-437,Indian/Maldives,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-438,Asia/Hovd,1970,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-439,Asia/Hovd,1978,Mongol,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-440,Asia/Hovd,1983,Mongol,420,60,4,1,-1,0,07:00,10,1,-1,0,06:00
-441,Asia/Hovd,1984,Mongol,420,60,4,1,-1,0,07:00,9,-1,0,0,06:00
-442,Asia/Hovd,1985,Mongol,420,60,3,-1,0,0,07:00,9,-1,0,0,06:00
-443,Asia/Hovd,2001,Mongol,420,60,4,-1,6,0,09:00,9,-1,6,0,08:00
-444,Asia/Hovd,2002,Mongol,420,60,3,-1,6,0,09:00,9,-1,6,0,08:00
-445,Asia/Hovd,2006,Mongol,420,0,3,-1,6,0,09:00,9,-1,6,0,08:00
-446,Asia/Ulaanbaatar,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-447,Asia/Ulaanbaatar,1978,Mongol,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-448,Asia/Ulaanbaatar,1983,Mongol,480,60,4,1,-1,0,08:00,10,1,-1,0,07:00
-449,Asia/Ulaanbaatar,1984,Mongol,480,60,4,1,-1,0,08:00,9,-1,0,0,07:00
-450,Asia/Ulaanbaatar,1985,Mongol,480,60,3,-1,0,0,08:00,9,-1,0,0,07:00
-451,Asia/Ulaanbaatar,2001,Mongol,480,60,4,-1,6,0,10:00,9,-1,6,0,09:00
-452,Asia/Ulaanbaatar,2002,Mongol,480,60,3,-1,6,0,10:00,9,-1,6,0,09:00
-453,Asia/Ulaanbaatar,2006,Mongol,480,0,3,-1,6,0,10:00,9,-1,6,0,09:00
-454,Asia/Choibalsan,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-455,Asia/Choibalsan,1978,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-456,Asia/Choibalsan,1983,Mongol,540,60,4,1,-1,0,09:00,10,1,-1,0,08:00
-457,Asia/Choibalsan,1984,Mongol,540,60,4,1,-1,0,09:00,9,-1,0,0,08:00
-458,Asia/Choibalsan,1985,Mongol,540,60,3,-1,0,0,09:00,9,-1,0,0,08:00
-459,Asia/Choibalsan,2001,Mongol,540,60,4,-1,6,0,11:00,9,-1,6,0,10:00
-460,Asia/Choibalsan,2002,Mongol,540,60,3,-1,6,0,11:00,9,-1,6,0,10:00
-461,Asia/Choibalsan,2006,Mongol,540,0,3,-1,6,0,11:00,9,-1,6,0,10:00
-462,Asia/Choibalsan,2008,Mongol,480,0,3,-1,6,0,10:00,9,-1,6,0,09:00
-463,Asia/Kathmandu,1970,,330,0,0,0,0,0,00:00,0,0,0,0,00:00
-464,Asia/Kathmandu,1986,,345,0,0,0,0,0,00:00,0,0,0,0,00:00
-465,Asia/Muscat,1970,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-466,Asia/Karachi,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-467,Asia/Karachi,1971,Pakistan,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-468,Asia/Karachi,2002,Pakistan,300,60,4,2,0,0,05:01,10,2,0,0,04:01
-469,Asia/Karachi,2008,Pakistan,300,60,6,1,-1,0,05:00,11,1,-1,0,04:00
-470,Asia/Karachi,2009,Pakistan,300,60,4,15,-1,0,05:00,11,1,-1,0,04:00
-471,Asia/Karachi,2010,Pakistan,300,0,4,15,-1,0,05:00,11,1,-1,0,04:00
-472,Asia/Gaza,1970,Zion,120,60,4,29,-1,0,04:00,9,22,-1,0,01:00
-473,Asia/Gaza,1974,Zion,120,60,7,7,-1,0,02:00,10,13,-1,0,01:00
-474,Asia/Gaza,1975,Zion,120,60,4,20,-1,0,02:00,8,31,-1,0,01:00
-475,Asia/Gaza,1985,Zion,120,60,4,14,-1,0,02:00,9,15,-1,0,01:00
-476,Asia/Gaza,1986,Zion,120,60,5,18,-1,0,02:00,9,7,-1,0,01:00
-477,Asia/Gaza,1987,Zion,120,60,4,15,-1,0,02:00,9,13,-1,0,01:00
-478,Asia/Gaza,1988,Zion,120,60,4,9,-1,0,02:00,9,3,-1,0,01:00
-479,Asia/Gaza,1989,Zion,120,60,4,30,-1,0,02:00,9,3,-1,0,01:00
-480,Asia/Gaza,1990,Zion,120,60,3,25,-1,0,02:00,8,26,-1,0,01:00
-481,Asia/Gaza,1991,Zion,120,60,3,24,-1,0,02:00,9,1,-1,0,01:00
-482,Asia/Gaza,1992,Zion,120,60,3,29,-1,0,02:00,9,6,-1,0,01:00
-483,Asia/Gaza,1993,Zion,120,60,4,2,-1,0,02:00,9,5,-1,0,01:00
-484,Asia/Gaza,1994,Zion,120,60,4,1,-1,0,02:00,8,28,-1,0,01:00
-485,Asia/Gaza,1995,Zion,120,60,3,31,-1,0,02:00,9,3,-1,0,01:00
-486,Asia/Gaza,1996,Jordan,120,60,4,1,5,0,02:00,9,15,5,0,02:00
-487,Asia/Gaza,1999,Palestine,120,60,4,15,5,0,02:00,10,15,5,0,01:00
-488,Asia/Gaza,2004,Palestine,120,60,4,15,5,0,02:00,10,1,-1,0,02:00
-489,Asia/Gaza,2005,Palestine,120,60,4,15,5,0,02:00,10,4,-1,0,03:00
-490,Asia/Gaza,2006,Palestine,120,60,4,1,-1,0,02:00,9,22,-1,0,01:00
-491,Asia/Gaza,2007,Palestine,120,60,4,1,-1,0,02:00,9,8,4,0,03:00
-492,Asia/Gaza,2008,Palestine,120,60,4,1,-1,0,02:00,8,-1,5,0,03:00
-493,Asia/Gaza,2009,Palestine,120,60,3,-1,5,0,02:00,9,1,5,0,03:00
-494,Asia/Gaza,2010,Palestine,120,60,3,-1,6,0,02:01,8,11,-1,0,01:00
-495,Asia/Gaza,2011,Palestine,120,0,3,-1,6,0,02:01,8,11,-1,0,01:00
-496,Asia/Manila,1970,Phil,480,60,4,12,-1,0,08:00,7,1,-1,0,07:00
-497,Asia/Manila,1978,Phil,480,60,3,22,-1,0,08:00,9,21,-1,0,07:00
-498,Asia/Manila,1979,Phil,480,0,3,22,-1,0,08:00,9,21,-1,0,07:00
-499,Asia/Qatar,1970,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-500,Asia/Qatar,1972,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-501,Asia/Riyadh,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-502,Asia/Singapore,1970,,450,0,0,0,0,0,00:00,0,0,0,0,00:00
-503,Asia/Singapore,1982,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-504,Asia/Colombo,1970,,330,0,0,0,0,0,00:00,0,0,0,0,00:00
-505,Asia/Colombo,1996,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-506,Asia/Colombo,2006,,330,0,0,0,0,0,00:00,0,0,0,0,00:00
-507,Asia/Damascus,1970,Syria,120,60,5,1,-1,0,04:00,10,1,-1,0,03:00
-508,Asia/Damascus,1977,Syria,120,60,5,1,-1,0,04:00,9,1,-1,0,03:00
-509,Asia/Damascus,1983,Syria,120,60,4,9,-1,0,04:00,10,1,-1,0,03:00
-510,Asia/Damascus,1986,Syria,120,60,2,16,-1,0,04:00,10,9,-1,0,03:00
-511,Asia/Damascus,1987,Syria,120,60,3,1,-1,0,04:00,10,31,-1,0,03:00
-512,Asia/Damascus,1988,Syria,120,60,3,15,-1,0,04:00,10,31,-1,0,03:00
-513,Asia/Damascus,1989,Syria,120,60,3,31,-1,0,04:00,10,1,-1,0,03:00
-514,Asia/Damascus,1990,Syria,120,60,4,1,-1,0,04:00,9,30,-1,0,03:00
-515,Asia/Damascus,1991,Syria,120,60,4,1,-1,0,02:00,10,1,-1,0,01:00
-516,Asia/Damascus,1992,Syria,120,60,4,8,-1,0,02:00,10,1,-1,0,01:00
-517,Asia/Damascus,1993,Syria,120,60,3,26,-1,0,02:00,9,25,-1,0,01:00
-518,Asia/Damascus,1994,Syria,120,60,4,1,-1,0,02:00,10,1,-1,0,01:00
-519,Asia/Damascus,1997,Syria,120,60,3,-1,1,0,02:00,10,1,-1,0,01:00
-520,Asia/Damascus,1999,Syria,120,60,4,1,-1,0,02:00,10,1,-1,0,01:00
-521,Asia/Damascus,2006,Syria,120,60,4,1,-1,0,02:00,9,22,-1,0,01:00
-522,Asia/Damascus,2007,Syria,120,60,3,-1,5,0,02:00,11,1,5,0,01:00
-523,Asia/Damascus,2008,Syria,120,60,4,1,5,0,02:00,11,1,-1,0,01:00
-524,Asia/Damascus,2009,Syria,120,60,3,-1,5,0,02:00,10,-1,5,0,01:00
-525,Asia/Damascus,2010,Syria,120,60,4,1,5,0,02:00,10,-1,5,0,01:00
-526,Asia/Dushanbe,1970,RussiaAsia,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-527,Asia/Dushanbe,1981,RussiaAsia,360,60,4,1,-1,0,06:00,10,1,-1,0,05:00
-528,Asia/Dushanbe,1984,RussiaAsia,360,60,4,1,-1,0,06:00,9,-1,0,0,08:00
-529,Asia/Dushanbe,1985,RussiaAsia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
-530,Asia/Dushanbe,1991,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-531,Asia/Bangkok,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-532,Asia/Ashgabat,1970,RussiaAsia,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-533,Asia/Ashgabat,1981,RussiaAsia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
-534,Asia/Ashgabat,1984,RussiaAsia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
-535,Asia/Ashgabat,1985,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-536,Asia/Ashgabat,1991,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
-537,Asia/Ashgabat,1992,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-538,Asia/Dubai,1970,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-539,Asia/Samarkand,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-540,Asia/Samarkand,1981,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-541,Asia/Samarkand,1982,RussiaAsia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
-542,Asia/Samarkand,1984,RussiaAsia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
-543,Asia/Samarkand,1985,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-544,Asia/Samarkand,1992,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-545,Asia/Tashkent,1970,RussiaAsia,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-546,Asia/Tashkent,1981,RussiaAsia,360,60,4,1,-1,0,06:00,10,1,-1,0,05:00
-547,Asia/Tashkent,1984,RussiaAsia,360,60,4,1,-1,0,06:00,9,-1,0,0,08:00
-548,Asia/Tashkent,1985,RussiaAsia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
-549,Asia/Tashkent,1991,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-550,Asia/Tashkent,1992,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
-551,Asia/Ho_Chi_Minh,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-552,Asia/Aden,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-553,Australia/Darwin,1970,Aus,570,0,12,31,-1,0,21:30,3,-1,0,0,10:30
-554,Australia/Perth,1970,AW,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-555,Australia/Perth,1974,AW,480,60,10,-1,0,0,10:00,1,1,-1,0,19:00
-556,Australia/Perth,1975,AW,480,0,12,31,-1,0,20:00,3,1,0,0,10:00
-557,Australia/Perth,1983,AW,480,60,10,-1,0,0,10:00,1,1,-1,0,19:00
-558,Australia/Perth,1984,AW,480,0,12,31,-1,0,20:00,3,1,0,0,10:00
-559,Australia/Perth,1991,AW,480,60,11,17,-1,0,10:00,1,1,-1,0,19:00
-560,Australia/Perth,1992,AW,480,0,12,31,-1,0,20:00,3,1,0,0,10:00
-561,Australia/Perth,2006,AW,480,60,12,3,-1,0,10:00,1,1,-1,0,19:00
-562,Australia/Perth,2007,AW,480,60,10,-1,0,0,10:00,3,-1,0,0,10:00
-563,Australia/Perth,2009,AW,480,0,12,31,-1,0,20:00,3,-1,0,0,10:00
-564,Australia/Eucla,1970,AW,525,0,0,0,0,0,00:00,0,0,0,0,00:00
-565,Australia/Eucla,1974,AW,525,60,10,-1,0,0,10:45,1,1,-1,0,19:45
-566,Australia/Eucla,1975,AW,525,0,12,31,-1,0,20:45,3,1,0,0,10:45
-567,Australia/Eucla,1983,AW,525,60,10,-1,0,0,10:45,1,1,-1,0,19:45
-568,Australia/Eucla,1984,AW,525,0,12,31,-1,0,20:45,3,1,0,0,10:45
-569,Australia/Eucla,1991,AW,525,60,11,17,-1,0,10:45,1,1,-1,0,19:45
-570,Australia/Eucla,1992,AW,525,0,12,31,-1,0,20:45,3,1,0,0,10:45
-571,Australia/Eucla,2006,AW,525,60,12,3,-1,0,10:45,1,1,-1,0,19:45
-572,Australia/Eucla,2007,AW,525,60,10,-1,0,0,10:45,3,-1,0,0,10:45
-573,Australia/Eucla,2009,AW,525,0,12,31,-1,0,20:45,3,-1,0,0,10:45
-574,Australia/Brisbane,1970,Aus,600,0,12,31,-1,0,22:00,3,-1,0,0,11:00
-575,Australia/Brisbane,1971,AQ,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
-576,Australia/Brisbane,1972,AQ,600,0,12,31,-1,0,22:00,2,-1,0,0,12:00
-577,Australia/Brisbane,1989,AQ,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
-578,Australia/Brisbane,1990,AQ,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-579,Australia/Brisbane,1992,AQ,600,0,12,31,-1,0,22:00,3,1,0,0,12:00
-580,Australia/Lindeman,1970,Aus,600,0,12,31,-1,0,22:00,3,-1,0,0,11:00
-581,Australia/Lindeman,1971,AQ,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
-582,Australia/Lindeman,1972,AQ,600,0,12,31,-1,0,22:00,2,-1,0,0,12:00
-583,Australia/Lindeman,1989,AQ,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
-584,Australia/Lindeman,1990,AQ,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-585,Australia/Lindeman,1992,Holiday,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
-586,Australia/Lindeman,1993,Holiday,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-587,Australia/Lindeman,1994,Holiday,600,0,12,31,-1,0,22:00,3,1,0,0,12:00
-588,Australia/Adelaide,1970,Aus,570,0,12,31,-1,0,21:30,3,-1,0,0,10:30
-589,Australia/Adelaide,1971,AS,570,60,10,-1,0,0,11:30,1,1,-1,0,20:30
-590,Australia/Adelaide,1972,AS,570,60,10,-1,0,0,11:30,2,27,-1,0,11:30
-591,Australia/Adelaide,1973,AS,570,60,10,-1,0,0,11:30,3,1,0,0,11:30
-592,Australia/Adelaide,1986,AS,570,60,10,19,-1,0,11:30,3,15,0,0,11:30
-593,Australia/Adelaide,1987,AS,570,60,10,-1,0,0,11:30,3,15,0,0,11:30
-594,Australia/Adelaide,1991,AS,570,60,10,-1,0,0,11:30,3,3,-1,0,11:30
-595,Australia/Adelaide,1992,AS,570,60,10,-1,0,0,11:30,3,22,-1,0,11:30
-596,Australia/Adelaide,1993,AS,570,60,10,-1,0,0,11:30,3,7,-1,0,11:30
-597,Australia/Adelaide,1994,AS,570,60,10,-1,0,0,11:30,3,20,-1,0,11:30
-598,Australia/Adelaide,1995,AS,570,60,10,-1,0,0,11:30,3,-1,0,0,11:30
-599,Australia/Adelaide,2006,AS,570,60,10,-1,0,0,11:30,4,2,-1,0,11:30
-600,Australia/Adelaide,2007,AS,570,60,10,-1,0,0,11:30,3,-1,0,0,11:30
-601,Australia/Adelaide,2008,AS,570,60,10,1,0,0,11:30,4,1,0,0,11:30
-602,Australia/Hobart,1970,AT,600,60,10,-1,0,0,12:00,3,8,0,0,12:00
-603,Australia/Hobart,1972,AT,600,60,10,-1,0,0,12:00,2,-1,0,0,12:00
-604,Australia/Hobart,1973,AT,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-605,Australia/Hobart,1982,AT,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
-606,Australia/Hobart,1984,AT,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-607,Australia/Hobart,1986,AT,600,60,10,15,0,0,12:00,3,1,0,0,12:00
-608,Australia/Hobart,1987,AT,600,60,10,22,0,0,12:00,3,15,0,0,12:00
-609,Australia/Hobart,1988,AT,600,60,10,-1,0,0,12:00,3,15,0,0,12:00
-610,Australia/Hobart,1991,AT,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
-611,Australia/Hobart,2000,AT,600,60,8,-1,0,0,12:00,3,-1,0,0,12:00
-612,Australia/Hobart,2001,AT,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
-613,Australia/Hobart,2006,AT,600,60,10,1,0,0,12:00,4,1,0,0,12:00
-614,Australia/Hobart,2007,AT,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
-615,Australia/Hobart,2008,AT,600,60,10,1,0,0,12:00,4,1,0,0,12:00
-616,Australia/Currie,1970,Aus,600,0,12,31,-1,0,22:00,3,-1,0,0,11:00
-617,Australia/Currie,1971,AT,600,60,10,-1,0,0,12:00,3,8,0,0,12:00
-618,Australia/Currie,1972,AT,600,60,10,-1,0,0,12:00,2,-1,0,0,12:00
-619,Australia/Currie,1973,AT,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-620,Australia/Currie,1982,AT,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
-621,Australia/Currie,1984,AT,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-622,Australia/Currie,1986,AT,600,60,10,15,0,0,12:00,3,1,0,0,12:00
-623,Australia/Currie,1987,AT,600,60,10,22,0,0,12:00,3,15,0,0,12:00
-624,Australia/Currie,1988,AT,600,60,10,-1,0,0,12:00,3,15,0,0,12:00
-625,Australia/Currie,1991,AT,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
-626,Australia/Currie,2000,AT,600,60,8,-1,0,0,12:00,3,-1,0,0,12:00
-627,Australia/Currie,2001,AT,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
-628,Australia/Currie,2006,AT,600,60,10,1,0,0,12:00,4,1,0,0,12:00
-629,Australia/Currie,2007,AT,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
-630,Australia/Currie,2008,AT,600,60,10,1,0,0,12:00,4,1,0,0,12:00
-631,Australia/Melbourne,1970,Aus,600,0,12,31,-1,0,22:00,3,-1,0,0,11:00
-632,Australia/Melbourne,1971,AV,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
-633,Australia/Melbourne,1972,AV,600,60,10,-1,0,0,12:00,2,-1,0,0,12:00
-634,Australia/Melbourne,1973,AV,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-635,Australia/Melbourne,1986,AV,600,60,10,15,0,0,12:00,3,15,0,0,12:00
-636,Australia/Melbourne,1988,AV,600,60,10,-1,0,0,12:00,3,15,0,0,12:00
-637,Australia/Melbourne,1991,AV,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-638,Australia/Melbourne,1995,AV,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
-639,Australia/Melbourne,2000,AV,600,60,8,-1,0,0,12:00,3,-1,0,0,12:00
-640,Australia/Melbourne,2001,AV,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
-641,Australia/Melbourne,2006,AV,600,60,10,-1,0,0,12:00,4,1,0,0,12:00
-642,Australia/Melbourne,2007,AV,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
-643,Australia/Melbourne,2008,AV,600,60,10,1,0,0,12:00,4,1,0,0,12:00
-644,Australia/Sydney,1970,Aus,600,0,12,31,-1,0,22:00,3,-1,0,0,11:00
-645,Australia/Sydney,1971,AN,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
-646,Australia/Sydney,1972,AN,600,60,10,-1,0,0,12:00,2,27,-1,0,12:00
-647,Australia/Sydney,1973,AN,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-648,Australia/Sydney,1982,AN,600,60,10,-1,0,0,12:00,4,1,0,0,12:00
-649,Australia/Sydney,1983,AN,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-650,Australia/Sydney,1986,AN,600,60,10,19,-1,0,12:00,3,15,0,0,12:00
-651,Australia/Sydney,1987,AN,600,60,10,-1,0,0,12:00,3,15,0,0,12:00
-652,Australia/Sydney,1990,AN,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
-653,Australia/Sydney,1996,AN,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
-654,Australia/Sydney,2000,AN,600,60,8,-1,0,0,12:00,3,-1,0,0,12:00
-655,Australia/Sydney,2001,AN,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
-656,Australia/Sydney,2006,AN,600,60,10,-1,0,0,12:00,4,1,0,0,12:00
-657,Australia/Sydney,2007,AN,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
-658,Australia/Sydney,2008,AN,600,60,10,1,0,0,12:00,4,1,0,0,12:00
-659,Australia/Broken_Hill,1970,Aus,570,0,12,31,-1,0,21:30,3,-1,0,0,10:30
-660,Australia/Broken_Hill,1971,AN,570,60,10,-1,0,0,11:30,1,1,-1,0,20:30
-661,Australia/Broken_Hill,1972,AN,570,60,10,-1,0,0,11:30,2,27,-1,0,11:30
-662,Australia/Broken_Hill,1973,AN,570,60,10,-1,0,0,11:30,3,1,0,0,11:30
-663,Australia/Broken_Hill,1982,AN,570,60,10,-1,0,0,11:30,4,1,0,0,11:30
-664,Australia/Broken_Hill,1983,AN,570,60,10,-1,0,0,11:30,3,1,0,0,11:30
-665,Australia/Broken_Hill,1986,AN,570,60,10,19,-1,0,11:30,3,15,0,0,11:30
-666,Australia/Broken_Hill,1987,AN,570,60,10,-1,0,0,11:30,3,15,0,0,11:30
-667,Australia/Broken_Hill,1990,AN,570,60,10,-1,0,0,11:30,3,1,0,0,11:30
-668,Australia/Broken_Hill,1996,AN,570,60,10,-1,0,0,11:30,3,-1,0,0,11:30
-669,Australia/Broken_Hill,2000,AS,570,60,10,-1,0,0,11:30,3,-1,0,0,11:30
-670,Australia/Broken_Hill,2006,AS,570,60,10,-1,0,0,11:30,4,2,-1,0,11:30
-671,Australia/Broken_Hill,2007,AS,570,60,10,-1,0,0,11:30,3,-1,0,0,11:30
-672,Australia/Broken_Hill,2008,AS,570,60,10,1,0,0,11:30,4,1,0,0,11:30
-673,Australia/Lord_Howe,1970,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
-674,Australia/Lord_Howe,1981,LH,630,60,10,-1,0,0,12:30,1,1,-1,0,21:30
-675,Australia/Lord_Howe,1982,LH,630,60,10,-1,0,0,12:30,3,1,0,0,11:30
-676,Australia/Lord_Howe,1985,LH,630,30,10,-1,0,0,12:30,3,1,0,0,11:30
-677,Australia/Lord_Howe,1986,LH,630,30,10,19,-1,0,12:30,3,15,0,0,11:30
-678,Australia/Lord_Howe,1987,LH,630,30,10,-1,0,0,12:30,3,15,0,0,11:30
-679,Australia/Lord_Howe,1990,LH,630,30,10,-1,0,0,12:30,3,1,0,0,11:30
-680,Australia/Lord_Howe,1996,LH,630,30,10,-1,0,0,12:30,3,-1,0,0,11:30
-681,Australia/Lord_Howe,2000,LH,630,30,8,-1,0,0,12:30,3,-1,0,0,11:30
-682,Australia/Lord_Howe,2001,LH,630,30,10,-1,0,0,12:30,3,-1,0,0,11:30
-683,Australia/Lord_Howe,2006,LH,630,30,10,-1,0,0,12:30,4,1,0,0,11:30
-684,Australia/Lord_Howe,2007,LH,630,30,10,-1,0,0,12:30,3,-1,0,0,11:30
-685,Australia/Lord_Howe,2008,LH,630,30,10,1,0,0,12:30,4,1,0,0,11:30
-686,Indian/Christmas,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-687,Pacific/Rarotonga,1970,,-630,0,0,0,0,0,00:00,0,0,0,0,00:00
-688,Pacific/Rarotonga,1978,Cook,-600,30,11,12,-1,0,-10:00,1,1,-1,0,01:00
-689,Pacific/Rarotonga,1979,Cook,-600,30,10,-1,0,0,-10:00,3,1,0,0,-11:00
-690,Pacific/Rarotonga,1991,Cook,-600,0,12,31,-1,0,02:00,3,1,0,0,-11:00
-691,Indian/Cocos,1970,,390,0,0,0,0,0,00:00,0,0,0,0,00:00
-692,Pacific/Fiji,1970,Fiji,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-693,Pacific/Fiji,1998,Fiji,720,60,11,1,0,0,14:00,1,1,-1,0,23:00
-694,Pacific/Fiji,1999,Fiji,720,60,11,1,0,0,14:00,2,-1,0,0,14:00
-695,Pacific/Fiji,2000,Fiji,720,0,12,31,-1,0,24:00,2,-1,0,0,14:00
-696,Pacific/Fiji,2009,Fiji,720,60,11,29,-1,0,14:00,1,1,-1,0,23:00
-697,Pacific/Fiji,2010,Fiji,720,60,10,24,-1,0,14:00,3,-1,0,0,14:00
-698,Pacific/Fiji,2011,Fiji,720,0,12,31,-1,0,24:00,3,1,0,0,14:00
-699,Pacific/Gambier,1970,,-540,0,0,0,0,0,00:00,0,0,0,0,00:00
-700,Pacific/Marquesas,1970,,-570,0,0,0,0,0,00:00,0,0,0,0,00:00
-701,Pacific/Tahiti,1970,,-600,0,0,0,0,0,00:00,0,0,0,0,00:00
-702,Pacific/Guam,1970,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
-703,Pacific/Guam,2000,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
-704,Pacific/Tarawa,1970,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-705,Pacific/Enderbury,1970,,-720,0,0,0,0,0,00:00,0,0,0,0,00:00
-706,Pacific/Enderbury,1979,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
-707,Pacific/Enderbury,1995,,780,0,0,0,0,0,00:00,0,0,0,0,00:00
-708,Pacific/Kiritimati,1970,,-640,0,0,0,0,0,00:00,0,0,0,0,00:00
-709,Pacific/Kiritimati,1979,,-600,0,0,0,0,0,00:00,0,0,0,0,00:00
-710,Pacific/Kiritimati,1995,,840,0,0,0,0,0,00:00,0,0,0,0,00:00
-711,Pacific/Saipan,1970,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
-712,Pacific/Saipan,2000,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
-713,Pacific/Majuro,1970,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-714,Pacific/Kwajalein,1970,,-720,0,0,0,0,0,00:00,0,0,0,0,00:00
-715,Pacific/Kwajalein,1993,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-716,Pacific/Chuuk,1970,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
-717,Pacific/Pohnpei,1970,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
-718,Pacific/Kosrae,1970,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-719,Pacific/Kosrae,1999,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
-720,Pacific/Nauru,1970,,690,0,0,0,0,0,00:00,0,0,0,0,00:00
-721,Pacific/Nauru,1979,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-722,Pacific/Noumea,1970,NC,660,0,0,0,0,0,00:00,0,0,0,0,00:00
-723,Pacific/Noumea,1977,NC,660,60,12,1,0,0,11:00,1,1,-1,0,22:00
-724,Pacific/Noumea,1978,NC,660,60,12,1,0,0,11:00,2,27,-1,0,10:00
-725,Pacific/Noumea,1979,NC,660,0,12,31,-1,0,23:00,2,27,-1,0,10:00
-726,Pacific/Noumea,1996,NC,660,60,12,1,-1,0,13:00,1,1,-1,0,22:00
-727,Pacific/Noumea,1997,NC,660,0,12,31,-1,0,23:00,3,2,-1,0,13:00
-728,Pacific/Auckland,1970,NZ,720,0,12,31,-1,0,24:00,1,1,-1,0,11:00
-729,Pacific/Auckland,1974,NZ,720,60,11,1,0,0,14:00,1,1,-1,0,23:00
-730,Pacific/Auckland,1975,NZ,720,60,10,-1,0,0,14:00,2,-1,0,0,14:00
-731,Pacific/Auckland,1976,NZ,720,60,10,-1,0,0,14:00,3,1,0,0,14:00
-732,Pacific/Auckland,1989,NZ,720,60,10,8,0,0,14:00,3,1,0,0,14:00
-733,Pacific/Auckland,1990,NZ,720,60,10,1,0,0,14:00,3,15,0,0,14:00
-734,Pacific/Auckland,2007,NZ,720,60,9,-1,0,0,14:00,3,15,0,0,14:00
-735,Pacific/Auckland,2008,NZ,720,60,9,-1,0,0,14:00,4,1,0,0,14:00
-736,Pacific/Chatham,1970,Chatham,765,0,0,0,0,0,00:00,0,0,0,0,00:00
-737,Pacific/Chatham,1974,Chatham,765,60,11,1,0,0,15:30,1,1,-1,0,23:45
-738,Pacific/Chatham,1975,Chatham,765,60,10,-1,0,0,15:30,2,-1,0,0,15:30
-739,Pacific/Chatham,1976,Chatham,765,60,10,-1,0,0,15:30,3,1,0,0,15:30
-740,Pacific/Chatham,1989,Chatham,765,60,10,8,0,0,15:30,3,1,0,0,15:30
-741,Pacific/Chatham,1990,Chatham,765,60,10,1,0,0,15:30,3,15,0,0,15:30
-742,Pacific/Chatham,2007,Chatham,765,60,9,-1,0,0,15:30,3,15,0,0,15:30
-743,Pacific/Chatham,2008,Chatham,765,60,9,-1,0,0,15:30,4,1,0,0,15:30
-744,Pacific/Niue,1970,,-690,0,0,0,0,0,00:00,0,0,0,0,00:00
-745,Pacific/Niue,1978,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
-746,Pacific/Norfolk,1970,,690,0,0,0,0,0,00:00,0,0,0,0,00:00
-747,Pacific/Palau,1970,,540,0,0,0,0,0,00:00,0,0,0,0,00:00
-748,Pacific/Port_Moresby,1970,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
-749,Pacific/Pitcairn,1970,,-510,0,0,0,0,0,00:00,0,0,0,0,00:00
-750,Pacific/Pitcairn,1998,,-480,0,0,0,0,0,00:00,0,0,0,0,00:00
-751,Pacific/Pago_Pago,1970,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
-752,Pacific/Pago_Pago,1983,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
-753,Pacific/Apia,1970,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
-754,Pacific/Apia,2010,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
-755,Pacific/Guadalcanal,1970,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
-756,Pacific/Fakaofo,1970,,-600,0,0,0,0,0,00:00,0,0,0,0,00:00
-757,Pacific/Tongatapu,1970,,780,0,0,0,0,0,00:00,0,0,0,0,00:00
-758,Pacific/Tongatapu,1999,Tonga,780,60,10,7,-1,0,15:00,1,1,-1,0,24:00
-759,Pacific/Tongatapu,2000,Tonga,780,60,11,1,0,0,15:00,3,19,-1,0,15:00
-760,Pacific/Tongatapu,2001,Tonga,780,60,11,1,0,0,15:00,1,-1,0,0,14:00
-761,Pacific/Tongatapu,2002,Tonga,780,0,12,31,-1,0,25:00,1,-1,0,0,14:00
-762,Pacific/Funafuti,1970,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-763,Pacific/Johnston,1970,,-600,0,0,0,0,0,00:00,0,0,0,0,00:00
-764,Pacific/Midway,1970,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
-765,Pacific/Midway,1983,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
-766,Pacific/Wake,1970,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-767,Pacific/Efate,1970,Vanuatu,660,0,0,0,0,0,00:00,0,0,0,0,00:00
-768,Pacific/Efate,1983,Vanuatu,660,60,9,25,-1,0,11:00,1,1,-1,0,22:00
-769,Pacific/Efate,1984,Vanuatu,660,60,10,23,-1,0,11:00,3,23,0,0,10:00
-770,Pacific/Efate,1985,Vanuatu,660,60,9,23,0,0,11:00,3,23,0,0,10:00
-771,Pacific/Efate,1992,Vanuatu,660,60,10,23,0,0,11:00,1,23,0,0,10:00
-772,Pacific/Efate,1993,Vanuatu,660,0,12,31,-1,0,23:00,1,23,0,0,10:00
-773,Pacific/Wallis,1970,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-774,Europe/London,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
-775,Europe/London,1971,GB-Eire,0,0,0,0,0,0,00:00,0,0,0,0,00:00
-776,Europe/London,1972,GB-Eire,0,60,3,16,0,0,02:00,10,23,0,0,02:00
-777,Europe/London,1981,GB-Eire,0,60,3,-1,0,0,1:00,10,23,0,0,1:00
-778,Europe/London,1990,GB-Eire,0,60,3,-1,0,0,1:00,10,22,0,0,1:00
-779,Europe/London,1995,GB-Eire,0,0,3,-1,0,0,1:00,10,22,0,0,1:00
-780,Europe/London,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-781,Europe/Dublin,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
-782,Europe/Dublin,1971,GB-Eire,0,0,0,0,0,0,00:00,0,0,0,0,00:00
-783,Europe/Dublin,1972,GB-Eire,0,60,3,16,0,0,02:00,10,23,0,0,02:00
-784,Europe/Dublin,1981,GB-Eire,0,60,3,-1,0,0,1:00,10,23,0,0,1:00
-785,Europe/Dublin,1990,GB-Eire,0,60,3,-1,0,0,1:00,10,22,0,0,1:00
-786,Europe/Dublin,1995,GB-Eire,0,0,3,-1,0,0,1:00,10,22,0,0,1:00
-787,Europe/Dublin,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-788,WET,1970,EU,0,0,0,0,0,0,00:00,0,0,0,0,00:00
-789,WET,1977,EU,0,60,4,1,0,0,1:00,9,-1,0,0,1:00
-790,WET,1978,EU,0,60,4,1,0,0,1:00,10,1,-1,0,1:00
-791,WET,1979,EU,0,60,4,1,0,0,1:00,9,-1,0,0,1:00
-792,WET,1981,EU,0,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-793,WET,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-794,CET,1970,C-Eur,60,60,4,1,1,0,03:00,9,16,-1,0,03:00
-795,CET,1977,C-Eur,60,60,4,1,0,0,03:00,9,-1,0,0,03:00
-796,CET,1978,C-Eur,60,60,4,1,0,0,03:00,10,1,-1,0,03:00
-797,CET,1979,C-Eur,60,60,4,1,0,0,03:00,9,-1,0,0,03:00
-798,CET,1981,C-Eur,60,60,3,-1,0,0,03:00,9,-1,0,0,03:00
-799,CET,1996,C-Eur,60,60,3,-1,0,0,03:00,10,-1,0,0,03:00
-800,MET,1970,C-Eur,60,60,4,1,1,0,03:00,9,16,-1,0,03:00
-801,MET,1977,C-Eur,60,60,4,1,0,0,03:00,9,-1,0,0,03:00
-802,MET,1978,C-Eur,60,60,4,1,0,0,03:00,10,1,-1,0,03:00
-803,MET,1979,C-Eur,60,60,4,1,0,0,03:00,9,-1,0,0,03:00
-804,MET,1981,C-Eur,60,60,3,-1,0,0,03:00,9,-1,0,0,03:00
-805,MET,1996,C-Eur,60,60,3,-1,0,0,03:00,10,-1,0,0,03:00
-806,EET,1970,EU,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-807,EET,1977,EU,120,60,4,1,0,0,1:00,9,-1,0,0,1:00
-808,EET,1978,EU,120,60,4,1,0,0,1:00,10,1,-1,0,1:00
-809,EET,1979,EU,120,60,4,1,0,0,1:00,9,-1,0,0,1:00
-810,EET,1981,EU,120,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-811,EET,1996,EU,120,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-812,Europe/Tirane,1970,Albania,60,60,3,29,-1,0,03:00,4,10,-1,0,03:00
-813,Europe/Tirane,1974,Albania,60,60,5,4,-1,0,01:00,10,2,-1,0,00:00
-814,Europe/Tirane,1975,Albania,60,60,5,1,-1,0,01:00,10,2,-1,0,00:00
-815,Europe/Tirane,1976,Albania,60,60,5,2,-1,0,01:00,10,3,-1,0,00:00
-816,Europe/Tirane,1977,Albania,60,60,5,8,-1,0,01:00,10,2,-1,0,00:00
-817,Europe/Tirane,1978,Albania,60,60,5,6,-1,0,01:00,10,1,-1,0,00:00
-818,Europe/Tirane,1979,Albania,60,60,5,5,-1,0,01:00,9,30,-1,0,00:00
-819,Europe/Tirane,1980,Albania,60,60,5,3,-1,0,01:00,10,4,-1,0,00:00
-820,Europe/Tirane,1981,Albania,60,60,4,26,-1,0,01:00,9,27,-1,0,00:00
-821,Europe/Tirane,1982,Albania,60,60,5,2,-1,0,01:00,10,3,-1,0,00:00
-822,Europe/Tirane,1983,Albania,60,60,4,18,-1,0,01:00,10,1,-1,0,00:00
-823,Europe/Tirane,1984,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-824,Europe/Tirane,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-825,Europe/Andorra,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
-826,Europe/Andorra,1985,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-827,Europe/Andorra,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-828,Europe/Vienna,1970,Austria,60,60,4,18,-1,0,03:00,10,1,0,0,03:00
-829,Europe/Vienna,1980,Austria,60,60,4,6,-1,0,01:00,9,28,-1,0,00:00
-830,Europe/Vienna,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-831,Europe/Vienna,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-832,Europe/Minsk,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
-833,Europe/Minsk,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
-834,Europe/Minsk,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
-835,Europe/Minsk,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-836,Europe/Minsk,1990,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-837,Europe/Minsk,1991,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-838,Europe/Minsk,1992,Russia,120,60,3,-1,6,0,25:00,9,-1,6,0,24:00
-839,Europe/Minsk,1993,Russia,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-840,Europe/Minsk,1996,Russia,120,60,3,-1,0,0,04:00,10,-1,0,0,04:00
-841,Europe/Brussels,1970,Belgium,60,0,5,19,-1,0,03:00,10,7,-1,0,03:00
-842,Europe/Brussels,1977,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-843,Europe/Brussels,1978,EU,60,60,4,1,0,0,1:00,10,1,-1,0,1:00
-844,Europe/Brussels,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-845,Europe/Brussels,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-846,Europe/Brussels,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-847,Europe/Sofia,1970,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-848,Europe/Sofia,1979,Bulg,120,60,3,31,-1,0,25:00,10,1,-1,0,02:00
-849,Europe/Sofia,1980,Bulg,120,60,4,1,6,0,25:00,9,29,-1,0,02:00
-850,Europe/Sofia,1981,Bulg,120,60,4,1,6,0,25:00,9,27,-1,0,03:00
-851,Europe/Sofia,1982,C-Eur,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-852,Europe/Sofia,1991,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
-853,Europe/Sofia,1996,E-Eur,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
-854,Europe/Sofia,1997,EU,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
-855,Europe/Prague,1970,Czech,60,0,4,9,-1,0,03:00,10,1,0,0,03:00
-856,Europe/Prague,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-857,Europe/Prague,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-858,Europe/Prague,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-859,Europe/Copenhagen,1970,Denmark,60,0,5,9,-1,0,03:00,8,8,-1,0,03:00
-860,Europe/Copenhagen,1980,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-861,Europe/Copenhagen,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-862,Europe/Copenhagen,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-863,Atlantic/Faroe,1970,,0,0,0,0,0,0,00:00,0,0,0,0,00:00
-864,Atlantic/Faroe,1981,EU,0,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-865,Atlantic/Faroe,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-866,America/Danmarkshavn,1970,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-867,America/Danmarkshavn,1980,EU,-180,60,4,1,0,0,1:00,9,-1,0,0,1:00
-868,America/Danmarkshavn,1981,EU,-180,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-869,America/Danmarkshavn,1996,,0,0,0,0,0,0,00:00,0,0,0,0,00:00
-870,America/Scoresbysund,1970,,-120,0,0,0,0,0,00:00,0,0,0,0,00:00
-871,America/Scoresbysund,1980,C-Eur,-120,60,4,1,0,0,00:00,9,-1,0,0,00:00
-872,America/Scoresbysund,1981,EU,-60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-873,America/Scoresbysund,1996,EU,-60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-874,America/Godthab,1970,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-875,America/Godthab,1980,EU,-180,60,4,1,0,0,1:00,9,-1,0,0,1:00
-876,America/Godthab,1981,EU,-180,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-877,America/Godthab,1996,EU,-180,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-878,America/Thule,1970,Thule,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-879,America/Thule,1991,Thule,-240,60,3,-1,0,0,-2:00,9,-1,0,0,-3:00
-880,America/Thule,1993,Thule,-240,60,4,1,0,0,-2:00,10,-1,0,0,-3:00
-881,America/Thule,2007,Thule,-240,60,3,8,0,0,-2:00,11,1,0,0,-3:00
-882,Europe/Tallinn,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
-883,Europe/Tallinn,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
-884,Europe/Tallinn,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
-885,Europe/Tallinn,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-886,Europe/Tallinn,1989,C-Eur,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-887,Europe/Tallinn,1996,C-Eur,120,60,3,-1,0,0,04:00,10,-1,0,0,04:00
-888,Europe/Tallinn,1998,EU,120,60,3,-1,0,0,04:00,10,-1,0,0,04:00
-889,Europe/Tallinn,1999,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-890,Europe/Tallinn,2002,EU,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-891,Europe/Helsinki,1970,Finland,120,60,4,3,-1,0,02:00,10,3,-1,0,01:00
-892,Europe/Helsinki,1981,Finland,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-893,Europe/Helsinki,1982,Finland,120,0,3,-1,0,0,04:00,9,-1,0,0,04:00
-894,Europe/Helsinki,1983,EU,120,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-895,Europe/Helsinki,1996,EU,120,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-896,Europe/Paris,1970,France,60,120,4,2,-1,0,03:00,9,16,-1,0,03:00
-897,Europe/Paris,1976,France,60,60,3,28,-1,0,02:00,9,26,-1,0,01:00
-898,Europe/Paris,1977,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-899,Europe/Paris,1978,EU,60,60,4,1,0,0,1:00,10,1,-1,0,1:00
-900,Europe/Paris,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-901,Europe/Paris,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-902,Europe/Paris,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-903,Europe/Berlin,1970,Germany,60,0,4,10,-1,0,03:00,10,1,0,0,03:00
-904,Europe/Berlin,1980,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-905,Europe/Berlin,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-906,Europe/Berlin,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-907,Europe/Gibraltar,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
-908,Europe/Gibraltar,1982,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-909,Europe/Gibraltar,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-910,Europe/Athens,1970,Greece,120,60,7,1,-1,0,02:00,11,2,-1,0,01:00
-911,Europe/Athens,1975,Greece,120,60,4,12,-1,0,02:00,11,26,-1,0,02:00
-912,Europe/Athens,1976,Greece,120,60,4,11,-1,0,04:00,10,10,-1,0,04:00
-913,Europe/Athens,1977,Greece,120,60,4,1,0,0,04:00,9,26,-1,0,04:00
-914,Europe/Athens,1978,Greece,120,60,4,1,0,0,04:00,9,24,-1,0,05:00
-915,Europe/Athens,1979,Greece,120,60,4,1,-1,0,11:00,9,29,-1,0,03:00
-916,Europe/Athens,1980,Greece,120,60,4,1,-1,0,02:00,9,28,-1,0,01:00
-917,Europe/Athens,1981,EU,120,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-918,Europe/Athens,1996,EU,120,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-919,Europe/Budapest,1970,Hungary,60,60,6,1,0,0,02:00,9,-1,0,0,03:00
-920,Europe/Budapest,1980,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-921,Europe/Budapest,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-922,Europe/Budapest,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-923,Atlantic/Reykjavik,1970,,0,0,0,0,0,0,00:00,0,0,0,0,00:00
-924,Europe/Rome,1970,Italy,60,60,5,31,-1,0,01:00,9,-1,0,0,00:00
-925,Europe/Rome,1971,Italy,60,60,5,22,0,0,01:00,9,-1,0,0,01:00
-926,Europe/Rome,1972,Italy,60,60,5,22,0,0,01:00,10,1,-1,0,00:00
-927,Europe/Rome,1973,Italy,60,60,6,3,-1,0,01:00,9,-1,0,0,00:00
-928,Europe/Rome,1974,Italy,60,60,5,26,-1,0,01:00,9,-1,0,0,00:00
-929,Europe/Rome,1975,Italy,60,60,6,1,-1,0,01:00,9,-1,0,0,01:00
-930,Europe/Rome,1976,Italy,60,60,5,30,-1,0,01:00,9,-1,0,0,01:00
-931,Europe/Rome,1977,Italy,60,60,5,22,0,0,01:00,9,-1,0,0,01:00
-932,Europe/Rome,1978,Italy,60,60,5,22,0,0,01:00,10,1,-1,0,01:00
-933,Europe/Rome,1979,Italy,60,60,5,22,0,0,01:00,9,30,-1,0,01:00
-934,Europe/Rome,1980,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-935,Europe/Rome,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-936,Europe/Rome,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-937,Europe/Riga,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
-938,Europe/Riga,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
-939,Europe/Riga,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
-940,Europe/Riga,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-941,Europe/Riga,1989,Latvia,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-942,Europe/Riga,1996,Latvia,120,0,3,-1,0,0,04:00,9,-1,0,0,04:00
-943,Europe/Riga,1997,EU,120,0,3,-1,0,0,04:00,9,-1,0,0,04:00
-944,Europe/Riga,2000,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-945,Europe/Riga,2001,EU,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-946,Europe/Vaduz,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
-947,Europe/Vaduz,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-948,Europe/Vaduz,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-949,Europe/Vilnius,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
-950,Europe/Vilnius,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
-951,Europe/Vilnius,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
-952,Europe/Vilnius,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-953,Europe/Vilnius,1991,C-Eur,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-954,Europe/Vilnius,1996,C-Eur,120,60,3,-1,0,0,04:00,10,-1,0,0,04:00
-955,Europe/Vilnius,1998,EU,60,60,3,-1,0,0,03:00,10,-1,0,0,03:00
-956,Europe/Vilnius,1999,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-957,Europe/Vilnius,2003,EU,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-958,Europe/Luxembourg,1970,Belgium,60,0,5,19,-1,0,03:00,10,7,-1,0,03:00
-959,Europe/Luxembourg,1977,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-960,Europe/Luxembourg,1978,EU,60,60,4,1,0,0,1:00,10,1,-1,0,1:00
-961,Europe/Luxembourg,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-962,Europe/Luxembourg,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-963,Europe/Luxembourg,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-964,Europe/Malta,1970,Italy,60,60,5,31,-1,0,01:00,9,-1,0,0,00:00
-965,Europe/Malta,1971,Italy,60,60,5,22,0,0,01:00,9,-1,0,0,01:00
-966,Europe/Malta,1972,Italy,60,60,5,22,0,0,01:00,10,1,-1,0,00:00
-967,Europe/Malta,1973,Malta,60,60,3,31,-1,0,01:00,9,29,-1,0,01:00
-968,Europe/Malta,1974,Malta,60,60,4,21,-1,0,01:00,9,16,-1,0,01:00
-969,Europe/Malta,1975,Malta,60,60,4,15,0,0,03:00,9,15,0,0,02:00
-970,Europe/Malta,1980,Malta,60,0,3,31,-1,0,03:00,9,15,0,0,02:00
-971,Europe/Malta,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-972,Europe/Malta,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-973,Europe/Chisinau,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
-974,Europe/Chisinau,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
-975,Europe/Chisinau,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
-976,Europe/Chisinau,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-977,Europe/Chisinau,1990,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-978,Europe/Chisinau,1991,Russia,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-979,Europe/Chisinau,1992,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
-980,Europe/Chisinau,1996,E-Eur,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
-981,Europe/Chisinau,1997,EU,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
-982,Europe/Monaco,1970,France,60,120,4,2,-1,0,03:00,9,16,-1,0,03:00
-983,Europe/Monaco,1976,France,60,60,3,28,-1,0,02:00,9,26,-1,0,01:00
-984,Europe/Monaco,1977,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-985,Europe/Monaco,1978,EU,60,60,4,1,0,0,1:00,10,1,-1,0,1:00
-986,Europe/Monaco,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-987,Europe/Monaco,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-988,Europe/Monaco,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-989,Europe/Amsterdam,1970,Neth,60,0,4,2,-1,0,03:00,9,16,-1,0,03:00
-990,Europe/Amsterdam,1977,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-991,Europe/Amsterdam,1978,EU,60,60,4,1,0,0,1:00,10,1,-1,0,1:00
-992,Europe/Amsterdam,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-993,Europe/Amsterdam,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-994,Europe/Amsterdam,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-995,Europe/Oslo,1970,Norway,60,0,4,25,-1,0,03:00,9,15,0,0,03:00
-996,Europe/Oslo,1980,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-997,Europe/Oslo,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-998,Europe/Oslo,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-999,Europe/Warsaw,1970,Poland,60,0,5,-1,0,0,02:00,9,-1,0,0,02:00
-1000,Europe/Warsaw,1977,W-Eur,60,60,4,1,0,0,02:00,9,-1,0,0,02:00
-1001,Europe/Warsaw,1978,W-Eur,60,60,4,1,0,0,02:00,10,1,-1,0,02:00
-1002,Europe/Warsaw,1979,W-Eur,60,60,4,1,0,0,02:00,9,-1,0,0,02:00
-1003,Europe/Warsaw,1981,W-Eur,60,60,3,-1,0,0,02:00,9,-1,0,0,02:00
-1004,Europe/Warsaw,1988,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1005,Europe/Warsaw,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1006,Europe/Lisbon,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
-1007,Europe/Lisbon,1976,Port,0,0,0,0,0,0,00:00,0,0,0,0,00:00
-1008,Europe/Lisbon,1977,Port,0,60,3,27,-1,0,00:00,9,25,-1,0,00:00
-1009,Europe/Lisbon,1978,Port,0,60,4,1,0,0,00:00,10,1,-1,0,00:00
-1010,Europe/Lisbon,1979,Port,0,60,4,1,0,0,00:00,9,-1,0,0,01:00
-1011,Europe/Lisbon,1980,Port,0,60,3,-1,0,0,00:00,9,-1,0,0,01:00
-1012,Europe/Lisbon,1981,Port,0,60,3,-1,0,0,01:00,9,-1,0,0,01:00
-1013,Europe/Lisbon,1983,W-Eur,0,60,3,-1,0,0,01:00,9,-1,0,0,01:00
-1014,Europe/Lisbon,1992,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1015,Europe/Lisbon,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1016,Atlantic/Azores,1970,Port,-60,60,4,1,0,0,01:00,10,1,0,0,01:00
-1017,Atlantic/Azores,1977,Port,-60,60,3,27,-1,0,-1:00,9,25,-1,0,-1:00
-1018,Atlantic/Azores,1978,Port,-60,60,4,1,0,0,-1:00,10,1,-1,0,-1:00
-1019,Atlantic/Azores,1979,Port,-60,60,4,1,0,0,-1:00,9,-1,0,0,00:00
-1020,Atlantic/Azores,1980,Port,-60,60,3,-1,0,0,-1:00,9,-1,0,0,00:00
-1021,Atlantic/Azores,1981,Port,-60,60,3,-1,0,0,00:00,9,-1,0,0,00:00
-1022,Atlantic/Azores,1983,W-Eur,-60,60,3,-1,0,0,00:00,9,-1,0,0,00:00
-1023,Atlantic/Azores,1992,EU,0,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1024,Atlantic/Azores,1993,EU,-60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1025,Atlantic/Azores,1996,EU,-60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1026,Atlantic/Madeira,1970,Port,0,60,4,1,0,0,02:00,10,1,0,0,02:00
-1027,Atlantic/Madeira,1977,Port,0,60,3,27,-1,0,00:00,9,25,-1,0,00:00
-1028,Atlantic/Madeira,1978,Port,0,60,4,1,0,0,00:00,10,1,-1,0,00:00
-1029,Atlantic/Madeira,1979,Port,0,60,4,1,0,0,00:00,9,-1,0,0,01:00
-1030,Atlantic/Madeira,1980,Port,0,60,3,-1,0,0,00:00,9,-1,0,0,01:00
-1031,Atlantic/Madeira,1981,Port,0,60,3,-1,0,0,01:00,9,-1,0,0,01:00
-1032,Atlantic/Madeira,1983,EU,0,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1033,Atlantic/Madeira,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1034,Europe/Bucharest,1970,Romania,120,60,4,2,0,0,02:00,10,1,0,0,02:00
-1035,Europe/Bucharest,1979,Romania,120,60,5,27,-1,0,02:00,9,-1,0,0,01:00
-1036,Europe/Bucharest,1980,Romania,120,60,4,5,-1,0,25:00,9,-1,0,0,02:00
-1037,Europe/Bucharest,1981,C-Eur,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-1038,Europe/Bucharest,1991,Romania,120,60,3,-1,0,0,02:00,9,-1,0,0,02:00
-1039,Europe/Bucharest,1993,Romania,120,0,3,-1,0,0,02:00,9,-1,0,0,02:00
-1040,Europe/Bucharest,1994,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
-1041,Europe/Bucharest,1996,E-Eur,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
-1042,Europe/Bucharest,1997,EU,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
-1043,Europe/Kaliningrad,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
-1044,Europe/Kaliningrad,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
-1045,Europe/Kaliningrad,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
-1046,Europe/Kaliningrad,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-1047,Europe/Kaliningrad,1991,Russia,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-1048,Europe/Kaliningrad,1992,Russia,120,60,3,-1,6,0,25:00,9,-1,6,0,24:00
-1049,Europe/Kaliningrad,1993,Russia,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-1050,Europe/Kaliningrad,1996,Russia,120,60,3,-1,0,0,04:00,10,-1,0,0,04:00
-1051,Europe/Kaliningrad,2011,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1052,Europe/Moscow,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
-1053,Europe/Moscow,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
-1054,Europe/Moscow,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
-1055,Europe/Moscow,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-1056,Europe/Moscow,1991,Russia,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-1057,Europe/Moscow,1992,Russia,180,60,3,-1,6,0,26:00,9,-1,6,0,25:00
-1058,Europe/Moscow,1993,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-1059,Europe/Moscow,1996,Russia,180,60,3,-1,0,0,05:00,10,-1,0,0,05:00
-1060,Europe/Moscow,2011,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1061,Europe/Volgograd,1970,Russia,240,60,9,1,-1,0,04:00,10,1,-1,0,03:00
-1062,Europe/Volgograd,1981,Russia,240,60,4,1,-1,0,04:00,10,1,-1,0,03:00
-1063,Europe/Volgograd,1984,Russia,240,60,4,1,-1,0,04:00,9,-1,0,0,06:00
-1064,Europe/Volgograd,1985,Russia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
-1065,Europe/Volgograd,1989,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-1066,Europe/Volgograd,1991,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1067,Europe/Volgograd,1992,Russia,180,60,3,-1,6,0,26:00,9,-1,6,0,25:00
-1068,Europe/Volgograd,1993,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-1069,Europe/Volgograd,1996,Russia,180,60,3,-1,0,0,05:00,10,-1,0,0,05:00
-1070,Europe/Volgograd,2011,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1071,Europe/Samara,1970,Russia,240,60,9,1,-1,0,04:00,10,1,-1,0,03:00
-1072,Europe/Samara,1981,Russia,240,60,4,1,-1,0,04:00,10,1,-1,0,03:00
-1073,Europe/Samara,1984,Russia,240,60,4,1,-1,0,04:00,9,-1,0,0,06:00
-1074,Europe/Samara,1985,Russia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
-1075,Europe/Samara,1989,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-1076,Europe/Samara,1991,Russia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
-1077,Europe/Samara,1992,Russia,240,60,3,-1,6,0,27:00,9,-1,6,0,26:00
-1078,Europe/Samara,1993,Russia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
-1079,Europe/Samara,1996,Russia,240,60,3,-1,0,0,06:00,10,-1,0,0,06:00
-1080,Europe/Samara,2010,Russia,180,60,3,-1,0,0,05:00,10,-1,0,0,05:00
-1081,Europe/Samara,2011,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1082,Asia/Yekaterinburg,1970,Russia,300,60,9,1,-1,0,05:00,10,1,-1,0,04:00
-1083,Asia/Yekaterinburg,1981,Russia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
-1084,Asia/Yekaterinburg,1984,Russia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
-1085,Asia/Yekaterinburg,1985,Russia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-1086,Asia/Yekaterinburg,1991,Russia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
-1087,Asia/Yekaterinburg,1992,Russia,300,60,3,-1,6,0,28:00,9,-1,6,0,27:00
-1088,Asia/Yekaterinburg,1993,Russia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-1089,Asia/Yekaterinburg,1996,Russia,300,60,3,-1,0,0,07:00,10,-1,0,0,07:00
-1090,Asia/Yekaterinburg,2011,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1091,Asia/Omsk,1970,Russia,360,60,9,1,-1,0,06:00,10,1,-1,0,05:00
-1092,Asia/Omsk,1981,Russia,360,60,4,1,-1,0,06:00,10,1,-1,0,05:00
-1093,Asia/Omsk,1984,Russia,360,60,4,1,-1,0,06:00,9,-1,0,0,08:00
-1094,Asia/Omsk,1985,Russia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
-1095,Asia/Omsk,1991,Russia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
-1096,Asia/Omsk,1992,Russia,360,60,3,-1,6,0,29:00,9,-1,6,0,28:00
-1097,Asia/Omsk,1993,Russia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
-1098,Asia/Omsk,1996,Russia,360,60,3,-1,0,0,08:00,10,-1,0,0,08:00
-1099,Asia/Omsk,2011,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-1100,Asia/Novosibirsk,1970,Russia,420,60,9,1,-1,0,07:00,10,1,-1,0,06:00
-1101,Asia/Novosibirsk,1981,Russia,420,60,4,1,-1,0,07:00,10,1,-1,0,06:00
-1102,Asia/Novosibirsk,1984,Russia,420,60,4,1,-1,0,07:00,9,-1,0,0,09:00
-1103,Asia/Novosibirsk,1985,Russia,420,60,3,-1,0,0,09:00,9,-1,0,0,09:00
-1104,Asia/Novosibirsk,1991,Russia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
-1105,Asia/Novosibirsk,1992,Russia,420,60,3,-1,6,0,30:00,9,-1,6,0,29:00
-1106,Asia/Novosibirsk,1993,Russia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
-1107,Asia/Novosibirsk,1996,Russia,360,60,3,-1,0,0,08:00,10,-1,0,0,08:00
-1108,Asia/Novosibirsk,2011,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-1109,Asia/Novokuznetsk,1970,Russia,420,60,9,1,-1,0,07:00,10,1,-1,0,06:00
-1110,Asia/Novokuznetsk,1981,Russia,420,60,4,1,-1,0,07:00,10,1,-1,0,06:00
-1111,Asia/Novokuznetsk,1984,Russia,420,60,4,1,-1,0,07:00,9,-1,0,0,09:00
-1112,Asia/Novokuznetsk,1985,Russia,420,60,3,-1,0,0,09:00,9,-1,0,0,09:00
-1113,Asia/Novokuznetsk,1991,Russia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
-1114,Asia/Novokuznetsk,1992,Russia,420,60,3,-1,6,0,30:00,9,-1,6,0,29:00
-1115,Asia/Novokuznetsk,1993,Russia,420,60,3,-1,0,0,09:00,9,-1,0,0,09:00
-1116,Asia/Novokuznetsk,1996,Russia,420,60,3,-1,0,0,09:00,10,-1,0,0,09:00
-1117,Asia/Novokuznetsk,2010,Russia,360,60,3,-1,0,0,08:00,10,-1,0,0,08:00
-1118,Asia/Novokuznetsk,2011,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
-1119,Asia/Krasnoyarsk,1970,Russia,420,60,9,1,-1,0,07:00,10,1,-1,0,06:00
-1120,Asia/Krasnoyarsk,1981,Russia,420,60,4,1,-1,0,07:00,10,1,-1,0,06:00
-1121,Asia/Krasnoyarsk,1984,Russia,420,60,4,1,-1,0,07:00,9,-1,0,0,09:00
-1122,Asia/Krasnoyarsk,1985,Russia,420,60,3,-1,0,0,09:00,9,-1,0,0,09:00
-1123,Asia/Krasnoyarsk,1991,Russia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
-1124,Asia/Krasnoyarsk,1992,Russia,420,60,3,-1,6,0,30:00,9,-1,6,0,29:00
-1125,Asia/Krasnoyarsk,1993,Russia,420,60,3,-1,0,0,09:00,9,-1,0,0,09:00
-1126,Asia/Krasnoyarsk,1996,Russia,420,60,3,-1,0,0,09:00,10,-1,0,0,09:00
-1127,Asia/Krasnoyarsk,2011,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
-1128,Asia/Irkutsk,1970,Russia,480,60,9,1,-1,0,08:00,10,1,-1,0,07:00
-1129,Asia/Irkutsk,1981,Russia,480,60,4,1,-1,0,08:00,10,1,-1,0,07:00
-1130,Asia/Irkutsk,1984,Russia,480,60,4,1,-1,0,08:00,9,-1,0,0,10:00
-1131,Asia/Irkutsk,1985,Russia,480,60,3,-1,0,0,10:00,9,-1,0,0,10:00
-1132,Asia/Irkutsk,1991,Russia,420,60,3,-1,0,0,09:00,9,-1,0,0,09:00
-1133,Asia/Irkutsk,1992,Russia,480,60,3,-1,6,0,31:00,9,-1,6,0,30:00
-1134,Asia/Irkutsk,1993,Russia,480,60,3,-1,0,0,10:00,9,-1,0,0,10:00
-1135,Asia/Irkutsk,1996,Russia,480,60,3,-1,0,0,10:00,10,-1,0,0,10:00
-1136,Asia/Irkutsk,2011,,540,0,0,0,0,0,00:00,0,0,0,0,00:00
-1137,Asia/Yakutsk,1970,Russia,540,60,9,1,-1,0,09:00,10,1,-1,0,08:00
-1138,Asia/Yakutsk,1981,Russia,540,60,4,1,-1,0,09:00,10,1,-1,0,08:00
-1139,Asia/Yakutsk,1984,Russia,540,60,4,1,-1,0,09:00,9,-1,0,0,11:00
-1140,Asia/Yakutsk,1985,Russia,540,60,3,-1,0,0,11:00,9,-1,0,0,11:00
-1141,Asia/Yakutsk,1991,Russia,480,60,3,-1,0,0,10:00,9,-1,0,0,10:00
-1142,Asia/Yakutsk,1992,Russia,540,60,3,-1,6,0,32:00,9,-1,6,0,31:00
-1143,Asia/Yakutsk,1993,Russia,540,60,3,-1,0,0,11:00,9,-1,0,0,11:00
-1144,Asia/Yakutsk,1996,Russia,540,60,3,-1,0,0,11:00,10,-1,0,0,11:00
-1145,Asia/Yakutsk,2011,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
-1146,Asia/Vladivostok,1970,Russia,600,60,9,1,-1,0,10:00,10,1,-1,0,09:00
-1147,Asia/Vladivostok,1981,Russia,600,60,4,1,-1,0,10:00,10,1,-1,0,09:00
-1148,Asia/Vladivostok,1984,Russia,600,60,4,1,-1,0,10:00,9,-1,0,0,12:00
-1149,Asia/Vladivostok,1985,Russia,600,60,3,-1,0,0,12:00,9,-1,0,0,12:00
-1150,Asia/Vladivostok,1991,Russia,540,60,3,-1,0,0,11:00,9,-1,0,0,11:00
-1151,Asia/Vladivostok,1992,Russia,600,60,3,-1,6,0,33:00,9,-1,6,0,32:00
-1152,Asia/Vladivostok,1993,Russia,600,60,3,-1,0,0,12:00,9,-1,0,0,12:00
-1153,Asia/Vladivostok,1996,Russia,600,60,3,-1,0,0,12:00,10,-1,0,0,12:00
-1154,Asia/Vladivostok,2011,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
-1155,Asia/Sakhalin,1970,Russia,660,60,9,1,-1,0,11:00,10,1,-1,0,10:00
-1156,Asia/Sakhalin,1981,Russia,660,60,4,1,-1,0,11:00,10,1,-1,0,10:00
-1157,Asia/Sakhalin,1984,Russia,660,60,4,1,-1,0,11:00,9,-1,0,0,13:00
-1158,Asia/Sakhalin,1985,Russia,660,60,3,-1,0,0,13:00,9,-1,0,0,13:00
-1159,Asia/Sakhalin,1991,Russia,600,60,3,-1,0,0,12:00,9,-1,0,0,12:00
-1160,Asia/Sakhalin,1992,Russia,660,60,3,-1,6,0,34:00,9,-1,6,0,33:00
-1161,Asia/Sakhalin,1993,Russia,660,60,3,-1,0,0,13:00,9,-1,0,0,13:00
-1162,Asia/Sakhalin,1996,Russia,660,60,3,-1,0,0,13:00,10,-1,0,0,13:00
-1163,Asia/Sakhalin,1997,Russia,600,60,3,-1,0,0,12:00,10,-1,0,0,12:00
-1164,Asia/Sakhalin,2011,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
-1165,Asia/Magadan,1970,Russia,660,60,9,1,-1,0,11:00,10,1,-1,0,10:00
-1166,Asia/Magadan,1981,Russia,660,60,4,1,-1,0,11:00,10,1,-1,0,10:00
-1167,Asia/Magadan,1984,Russia,660,60,4,1,-1,0,11:00,9,-1,0,0,13:00
-1168,Asia/Magadan,1985,Russia,660,60,3,-1,0,0,13:00,9,-1,0,0,13:00
-1169,Asia/Magadan,1991,Russia,600,60,3,-1,0,0,12:00,9,-1,0,0,12:00
-1170,Asia/Magadan,1992,Russia,660,60,3,-1,6,0,34:00,9,-1,6,0,33:00
-1171,Asia/Magadan,1993,Russia,660,60,3,-1,0,0,13:00,9,-1,0,0,13:00
-1172,Asia/Magadan,1996,Russia,660,60,3,-1,0,0,13:00,10,-1,0,0,13:00
-1173,Asia/Magadan,2011,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-1174,Asia/Kamchatka,1970,Russia,720,60,9,1,-1,0,12:00,10,1,-1,0,11:00
-1175,Asia/Kamchatka,1981,Russia,720,60,4,1,-1,0,12:00,10,1,-1,0,11:00
-1176,Asia/Kamchatka,1984,Russia,720,60,4,1,-1,0,12:00,9,-1,0,0,14:00
-1177,Asia/Kamchatka,1985,Russia,720,60,3,-1,0,0,14:00,9,-1,0,0,14:00
-1178,Asia/Kamchatka,1991,Russia,660,60,3,-1,0,0,13:00,9,-1,0,0,13:00
-1179,Asia/Kamchatka,1992,Russia,720,60,3,-1,6,0,35:00,9,-1,6,0,34:00
-1180,Asia/Kamchatka,1993,Russia,720,60,3,-1,0,0,14:00,9,-1,0,0,14:00
-1181,Asia/Kamchatka,1996,Russia,720,60,3,-1,0,0,14:00,10,-1,0,0,14:00
-1182,Asia/Kamchatka,2010,Russia,660,60,3,-1,0,0,13:00,10,-1,0,0,13:00
-1183,Asia/Kamchatka,2011,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-1184,Asia/Anadyr,1970,Russia,780,60,9,1,-1,0,13:00,10,1,-1,0,12:00
-1185,Asia/Anadyr,1981,Russia,780,60,4,1,-1,0,13:00,10,1,-1,0,12:00
-1186,Asia/Anadyr,1982,Russia,720,60,4,1,-1,0,12:00,10,1,-1,0,11:00
-1187,Asia/Anadyr,1984,Russia,720,60,4,1,-1,0,12:00,9,-1,0,0,14:00
-1188,Asia/Anadyr,1985,Russia,720,60,3,-1,0,0,14:00,9,-1,0,0,14:00
-1189,Asia/Anadyr,1991,Russia,660,60,3,-1,0,0,13:00,9,-1,0,0,13:00
-1190,Asia/Anadyr,1992,Russia,720,60,3,-1,6,0,35:00,9,-1,6,0,34:00
-1191,Asia/Anadyr,1993,Russia,720,60,3,-1,0,0,14:00,9,-1,0,0,14:00
-1192,Asia/Anadyr,1996,Russia,720,60,3,-1,0,0,14:00,10,-1,0,0,14:00
-1193,Asia/Anadyr,2010,Russia,660,60,3,-1,0,0,13:00,10,-1,0,0,13:00
-1194,Asia/Anadyr,2011,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
-1195,Europe/Belgrade,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
-1196,Europe/Belgrade,1982,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1197,Europe/Belgrade,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1198,Europe/Madrid,1970,Spain,60,60,4,30,-1,0,24:00,9,30,-1,0,01:00
-1199,Europe/Madrid,1974,Spain,60,60,4,13,6,0,24:00,10,1,0,0,01:00
-1200,Europe/Madrid,1976,Spain,60,60,3,27,-1,0,24:00,9,-1,0,0,01:00
-1201,Europe/Madrid,1977,Spain,60,60,4,2,-1,0,24:00,9,-1,0,0,01:00
-1202,Europe/Madrid,1978,Spain,60,60,4,2,-1,0,24:00,10,1,-1,0,01:00
-1203,Europe/Madrid,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-1204,Europe/Madrid,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1205,Europe/Madrid,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1206,Africa/Ceuta,1970,SpainAfrica,0,60,6,3,-1,0,12:00,10,1,-1,0,-1:00
-1207,Africa/Ceuta,1974,SpainAfrica,0,60,6,24,-1,0,00:00,9,1,-1,0,-1:00
-1208,Africa/Ceuta,1976,SpainAfrica,0,60,5,1,-1,0,00:00,8,1,-1,0,-1:00
-1209,Africa/Ceuta,1977,SpainAfrica,0,60,5,1,-1,0,00:00,9,28,-1,0,-1:00
-1210,Africa/Ceuta,1978,SpainAfrica,0,60,6,1,-1,0,00:00,8,4,-1,0,-1:00
-1211,Africa/Ceuta,1979,SpainAfrica,0,0,6,1,-1,0,00:00,8,4,-1,0,-1:00
-1212,Africa/Ceuta,1984,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
-1213,Africa/Ceuta,1986,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1214,Africa/Ceuta,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1215,Atlantic/Canary,1970,,0,0,0,0,0,0,00:00,0,0,0,0,00:00
-1216,Atlantic/Canary,1980,EU,0,60,4,1,0,0,1:00,9,-1,0,0,1:00
-1217,Atlantic/Canary,1981,EU,0,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1218,Atlantic/Canary,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1219,Europe/Stockholm,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
-1220,Europe/Stockholm,1980,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
-1221,Europe/Stockholm,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1222,Europe/Stockholm,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1223,Europe/Zurich,1970,Swiss,60,0,5,1,1,0,02:00,10,1,1,0,02:00
-1224,Europe/Zurich,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1225,Europe/Zurich,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1226,Europe/Istanbul,1970,Turkey,120,60,5,2,0,0,02:00,10,2,0,0,01:00
-1227,Europe/Istanbul,1973,Turkey,120,60,6,3,-1,0,03:00,11,4,-1,0,04:00
-1228,Europe/Istanbul,1974,Turkey,120,60,3,31,-1,0,04:00,11,3,-1,0,06:00
-1229,Europe/Istanbul,1975,Turkey,120,60,3,30,-1,0,02:00,10,-1,0,0,01:00
-1230,Europe/Istanbul,1976,Turkey,120,60,6,1,-1,0,02:00,10,-1,0,0,01:00
-1231,Europe/Istanbul,1977,Turkey,120,60,4,1,0,0,02:00,10,16,-1,0,01:00
-1232,Europe/Istanbul,1978,Turkey,180,60,4,1,0,0,03:00,1,1,-1,0,14:00
-1233,Europe/Istanbul,1979,Turkey,180,60,4,1,0,0,06:00,10,11,1,0,02:00
-1234,Europe/Istanbul,1981,Turkey,180,60,3,-1,0,0,06:00,10,11,1,0,02:00
-1235,Europe/Istanbul,1983,Turkey,180,60,7,31,-1,0,03:00,10,2,-1,0,02:00
-1236,Europe/Istanbul,1985,Turkey,120,60,4,20,-1,0,02:00,9,28,-1,0,01:00
-1237,Europe/Istanbul,1986,Turkey,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
-1238,Europe/Istanbul,1991,Turkey,120,60,3,-1,0,0,03:00,9,-1,0,0,03:00
-1239,Europe/Istanbul,1996,Turkey,120,60,3,-1,0,0,03:00,10,-1,0,0,03:00
-1240,Europe/Istanbul,2006,Turkey,120,0,3,-1,0,0,03:00,10,-1,0,0,03:00
-1241,Europe/Istanbul,2007,EU,120,0,3,-1,0,0,03:00,10,-1,0,0,03:00
-1242,Europe/Kiev,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
-1243,Europe/Kiev,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
-1244,Europe/Kiev,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
-1245,Europe/Kiev,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-1246,Europe/Kiev,1990,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-1247,Europe/Kiev,1992,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
-1248,Europe/Kiev,1995,EU,120,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1249,Europe/Kiev,1996,EU,120,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1250,Europe/Uzhgorod,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
-1251,Europe/Uzhgorod,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
-1252,Europe/Uzhgorod,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
-1253,Europe/Uzhgorod,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-1254,Europe/Uzhgorod,1990,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
-1255,Europe/Uzhgorod,1991,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-1256,Europe/Uzhgorod,1992,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
-1257,Europe/Uzhgorod,1995,EU,120,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1258,Europe/Uzhgorod,1996,EU,120,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1259,Europe/Zaporozhye,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
-1260,Europe/Zaporozhye,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
-1261,Europe/Zaporozhye,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
-1262,Europe/Zaporozhye,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-1263,Europe/Zaporozhye,1991,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
-1264,Europe/Zaporozhye,1995,EU,120,60,3,-1,0,0,1:00,9,-1,0,0,1:00
-1265,Europe/Zaporozhye,1996,EU,120,60,3,-1,0,0,1:00,10,-1,0,0,1:00
-1266,Europe/Simferopol,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
-1267,Europe/Simferopol,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
-1268,Europe/Simferopol,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
-1269,Europe/Simferopol,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
-1270,Europe/Simferopol,1990,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
-1271,Europe/Simferopol,1992,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
-1272,Europe/Simferopol,1994,E-Eur,180,60,3,-1,0,0,03:00,9,-1,0,0,02:00
-1273,Europe/Simferopol,1996,Russia,180,60,3,-1,0,0,05:00,10,-1,0,0,05:00
-1274,Europe/Simferopol,1997,EU,120,60,3,-1,0,0,04:00,10,-1,0,0,04:00
-1275,EST,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1276,MST,1970,,-420,0,0,0,0,0,00:00,0,0,0,0,00:00
-1277,HST,1970,,-600,0,0,0,0,0,00:00,0,0,0,0,00:00
-1278,EST5EDT,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1279,EST5EDT,1974,US,-300,60,1,6,-1,0,-3:00,10,-1,0,0,-4:00
-1280,EST5EDT,1975,US,-300,60,2,23,-1,0,-3:00,10,-1,0,0,-4:00
-1281,EST5EDT,1976,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1282,EST5EDT,1987,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1283,EST5EDT,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1284,CST6CDT,1970,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1285,CST6CDT,1974,US,-360,60,1,6,-1,0,-4:00,10,-1,0,0,-5:00
-1286,CST6CDT,1975,US,-360,60,2,23,-1,0,-4:00,10,-1,0,0,-5:00
-1287,CST6CDT,1976,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1288,CST6CDT,1987,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1289,CST6CDT,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
-1290,MST7MDT,1970,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1291,MST7MDT,1974,US,-420,60,1,6,-1,0,-5:00,10,-1,0,0,-6:00
-1292,MST7MDT,1975,US,-420,60,2,23,-1,0,-5:00,10,-1,0,0,-6:00
-1293,MST7MDT,1976,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1294,MST7MDT,1987,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1295,MST7MDT,2007,US,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
-1296,PST8PDT,1970,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1297,PST8PDT,1974,US,-480,60,1,6,-1,0,-6:00,10,-1,0,0,-7:00
-1298,PST8PDT,1975,US,-480,60,2,23,-1,0,-6:00,10,-1,0,0,-7:00
-1299,PST8PDT,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1300,PST8PDT,1987,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1301,PST8PDT,2007,US,-480,60,3,8,0,0,-6:00,11,1,0,0,-7:00
-1302,America/New_York,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1303,America/New_York,1974,US,-300,60,1,6,-1,0,-3:00,10,-1,0,0,-4:00
-1304,America/New_York,1975,US,-300,60,2,23,-1,0,-3:00,10,-1,0,0,-4:00
-1305,America/New_York,1976,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1306,America/New_York,1987,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1307,America/New_York,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1308,America/Chicago,1970,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1309,America/Chicago,1974,US,-360,60,1,6,-1,0,-4:00,10,-1,0,0,-5:00
-1310,America/Chicago,1975,US,-360,60,2,23,-1,0,-4:00,10,-1,0,0,-5:00
-1311,America/Chicago,1976,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1312,America/Chicago,1987,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1313,America/Chicago,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
-1314,America/North_Dakota/Center,1970,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1315,America/North_Dakota/Center,1974,US,-420,60,1,6,-1,0,-5:00,10,-1,0,0,-6:00
-1316,America/North_Dakota/Center,1975,US,-420,60,2,23,-1,0,-5:00,10,-1,0,0,-6:00
-1317,America/North_Dakota/Center,1976,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1318,America/North_Dakota/Center,1987,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1319,America/North_Dakota/Center,1992,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1320,America/North_Dakota/Center,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
-1321,America/North_Dakota/New_Salem,1970,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1322,America/North_Dakota/New_Salem,1974,US,-420,60,1,6,-1,0,-5:00,10,-1,0,0,-6:00
-1323,America/North_Dakota/New_Salem,1975,US,-420,60,2,23,-1,0,-5:00,10,-1,0,0,-6:00
-1324,America/North_Dakota/New_Salem,1976,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1325,America/North_Dakota/New_Salem,1987,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1326,America/North_Dakota/New_Salem,2003,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1327,America/North_Dakota/New_Salem,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
-1328,America/North_Dakota/Beulah,1970,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1329,America/North_Dakota/Beulah,1974,US,-420,60,1,6,-1,0,-5:00,10,-1,0,0,-6:00
-1330,America/North_Dakota/Beulah,1975,US,-420,60,2,23,-1,0,-5:00,10,-1,0,0,-6:00
-1331,America/North_Dakota/Beulah,1976,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1332,America/North_Dakota/Beulah,1987,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1333,America/North_Dakota/Beulah,2007,US,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
-1334,America/North_Dakota/Beulah,2010,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
-1335,America/Denver,1970,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1336,America/Denver,1974,US,-420,60,1,6,-1,0,-5:00,10,-1,0,0,-6:00
-1337,America/Denver,1975,US,-420,60,2,23,-1,0,-5:00,10,-1,0,0,-6:00
-1338,America/Denver,1976,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1339,America/Denver,1987,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1340,America/Denver,2007,US,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
-1341,America/Los_Angeles,1970,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1342,America/Los_Angeles,1974,US,-480,60,1,6,-1,0,-6:00,10,-1,0,0,-7:00
-1343,America/Los_Angeles,1975,US,-480,60,2,23,-1,0,-6:00,10,-1,0,0,-7:00
-1344,America/Los_Angeles,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1345,America/Los_Angeles,1987,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1346,America/Los_Angeles,2007,US,-480,60,3,8,0,0,-6:00,11,1,0,0,-7:00
-1347,America/Juneau,1970,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1348,America/Juneau,1974,US,-480,60,1,6,-1,0,-6:00,10,-1,0,0,-7:00
-1349,America/Juneau,1975,US,-480,60,2,23,-1,0,-6:00,10,-1,0,0,-7:00
-1350,America/Juneau,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1351,America/Juneau,1983,US,-540,60,4,-1,0,0,-7:00,10,-1,0,0,-8:00
-1352,America/Juneau,1987,US,-540,60,4,1,0,0,-7:00,10,-1,0,0,-8:00
-1353,America/Juneau,2007,US,-540,60,3,8,0,0,-7:00,11,1,0,0,-8:00
-1354,America/Sitka,1970,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1355,America/Sitka,1974,US,-480,60,1,6,-1,0,-6:00,10,-1,0,0,-7:00
-1356,America/Sitka,1975,US,-480,60,2,23,-1,0,-6:00,10,-1,0,0,-7:00
-1357,America/Sitka,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1358,America/Sitka,1983,US,-540,60,4,-1,0,0,-7:00,10,-1,0,0,-8:00
-1359,America/Sitka,1987,US,-540,60,4,1,0,0,-7:00,10,-1,0,0,-8:00
-1360,America/Sitka,2007,US,-540,60,3,8,0,0,-7:00,11,1,0,0,-8:00
-1361,America/Metlakatla,1970,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1362,America/Metlakatla,1974,US,-480,60,1,6,-1,0,-6:00,10,-1,0,0,-7:00
-1363,America/Metlakatla,1975,US,-480,60,2,23,-1,0,-6:00,10,-1,0,0,-7:00
-1364,America/Metlakatla,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1365,America/Metlakatla,1987,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1366,America/Metlakatla,2007,US,-480,60,3,8,0,0,-6:00,11,1,0,0,-7:00
-1367,America/Yakutat,1970,US,-540,60,4,-1,0,0,-7:00,10,-1,0,0,-8:00
-1368,America/Yakutat,1974,US,-540,60,1,6,-1,0,-7:00,10,-1,0,0,-8:00
-1369,America/Yakutat,1975,US,-540,60,2,23,-1,0,-7:00,10,-1,0,0,-8:00
-1370,America/Yakutat,1976,US,-540,60,4,-1,0,0,-7:00,10,-1,0,0,-8:00
-1371,America/Yakutat,1987,US,-540,60,4,1,0,0,-7:00,10,-1,0,0,-8:00
-1372,America/Yakutat,2007,US,-540,60,3,8,0,0,-7:00,11,1,0,0,-8:00
-1373,America/Anchorage,1970,US,-600,60,4,-1,0,0,-8:00,10,-1,0,0,-9:00
-1374,America/Anchorage,1974,US,-600,60,1,6,-1,0,-8:00,10,-1,0,0,-9:00
-1375,America/Anchorage,1975,US,-600,60,2,23,-1,0,-8:00,10,-1,0,0,-9:00
-1376,America/Anchorage,1976,US,-600,60,4,-1,0,0,-8:00,10,-1,0,0,-9:00
-1377,America/Anchorage,1983,US,-540,60,4,-1,0,0,-7:00,10,-1,0,0,-8:00
-1378,America/Anchorage,1987,US,-540,60,4,1,0,0,-7:00,10,-1,0,0,-8:00
-1379,America/Anchorage,2007,US,-540,60,3,8,0,0,-7:00,11,1,0,0,-8:00
-1380,America/Nome,1970,US,-660,60,4,-1,0,0,-9:00,10,-1,0,0,-10:00
-1381,America/Nome,1974,US,-660,60,1,6,-1,0,-9:00,10,-1,0,0,-10:00
-1382,America/Nome,1975,US,-660,60,2,23,-1,0,-9:00,10,-1,0,0,-10:00
-1383,America/Nome,1976,US,-660,60,4,-1,0,0,-9:00,10,-1,0,0,-10:00
-1384,America/Nome,1983,US,-540,60,4,-1,0,0,-7:00,10,-1,0,0,-8:00
-1385,America/Nome,1987,US,-540,60,4,1,0,0,-7:00,10,-1,0,0,-8:00
-1386,America/Nome,2007,US,-540,60,3,8,0,0,-7:00,11,1,0,0,-8:00
-1387,America/Adak,1970,US,-660,60,4,-1,0,0,-9:00,10,-1,0,0,-10:00
-1388,America/Adak,1974,US,-660,60,1,6,-1,0,-9:00,10,-1,0,0,-10:00
-1389,America/Adak,1975,US,-660,60,2,23,-1,0,-9:00,10,-1,0,0,-10:00
-1390,America/Adak,1976,US,-660,60,4,-1,0,0,-9:00,10,-1,0,0,-10:00
-1391,America/Adak,1983,US,-600,60,4,-1,0,0,-8:00,10,-1,0,0,-9:00
-1392,America/Adak,1987,US,-600,60,4,1,0,0,-8:00,10,-1,0,0,-9:00
-1393,America/Adak,2007,US,-600,60,3,8,0,0,-8:00,11,1,0,0,-9:00
-1394,Pacific/Honolulu,1970,,-600,0,0,0,0,0,00:00,0,0,0,0,00:00
-1395,America/Phoenix,1970,,-420,0,0,0,0,0,00:00,0,0,0,0,00:00
-1396,America/Boise,1970,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1397,America/Boise,1974,US,-420,60,1,6,-1,0,-5:00,10,-1,0,0,-6:00
-1398,America/Boise,1975,US,-420,60,2,23,-1,0,-5:00,10,-1,0,0,-6:00
-1399,America/Boise,1976,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1400,America/Boise,1987,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1401,America/Boise,2007,US,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
-1402,America/Indiana/Indianapolis,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1403,America/Indiana/Indianapolis,1971,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1404,America/Indiana/Indianapolis,2006,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1405,America/Indiana/Indianapolis,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1406,America/Indiana/Marengo,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1407,America/Indiana/Marengo,1974,US,-300,60,1,6,-1,0,-3:00,10,-1,0,0,-4:00
-1408,America/Indiana/Marengo,1975,US,-300,60,2,23,-1,0,-3:00,10,-1,0,0,-4:00
-1409,America/Indiana/Marengo,1976,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1410,America/Indiana/Marengo,2006,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1411,America/Indiana/Marengo,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1412,America/Indiana/Vincennes,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1413,America/Indiana/Vincennes,1971,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1414,America/Indiana/Vincennes,2006,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1415,America/Indiana/Vincennes,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1416,America/Indiana/Tell_City,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1417,America/Indiana/Tell_City,1971,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1418,America/Indiana/Tell_City,2006,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1419,America/Indiana/Tell_City,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
-1420,America/Indiana/Petersburg,1970,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1421,America/Indiana/Petersburg,1974,US,-360,60,1,6,-1,0,-4:00,10,-1,0,0,-5:00
-1422,America/Indiana/Petersburg,1975,US,-360,60,2,23,-1,0,-4:00,10,-1,0,0,-5:00
-1423,America/Indiana/Petersburg,1976,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1424,America/Indiana/Petersburg,1977,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1425,America/Indiana/Petersburg,2006,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1426,America/Indiana/Petersburg,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1427,America/Indiana/Knox,1970,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1428,America/Indiana/Knox,1974,US,-360,60,1,6,-1,0,-4:00,10,-1,0,0,-5:00
-1429,America/Indiana/Knox,1975,US,-360,60,2,23,-1,0,-4:00,10,-1,0,0,-5:00
-1430,America/Indiana/Knox,1976,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1431,America/Indiana/Knox,1987,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1432,America/Indiana/Knox,1991,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1433,America/Indiana/Knox,2006,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1434,America/Indiana/Knox,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
-1435,America/Indiana/Winamac,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1436,America/Indiana/Winamac,1971,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1437,America/Indiana/Winamac,2006,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1438,America/Indiana/Winamac,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1439,America/Indiana/Vevay,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1440,America/Indiana/Vevay,1973,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1441,America/Indiana/Vevay,2006,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1442,America/Indiana/Vevay,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1443,America/Kentucky/Louisville,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1444,America/Kentucky/Louisville,1974,US,-300,60,1,6,-1,0,-3:00,10,-1,0,0,-4:00
-1445,America/Kentucky/Louisville,1975,US,-300,60,2,23,-1,0,-3:00,10,-1,0,0,-4:00
-1446,America/Kentucky/Louisville,1976,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1447,America/Kentucky/Louisville,1987,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1448,America/Kentucky/Louisville,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1449,America/Kentucky/Monticello,1970,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1450,America/Kentucky/Monticello,1974,US,-360,60,1,6,-1,0,-4:00,10,-1,0,0,-5:00
-1451,America/Kentucky/Monticello,1975,US,-360,60,2,23,-1,0,-4:00,10,-1,0,0,-5:00
-1452,America/Kentucky/Monticello,1976,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1453,America/Kentucky/Monticello,1987,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1454,America/Kentucky/Monticello,2000,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1455,America/Kentucky/Monticello,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1456,America/Detroit,1970,Detroit,-300,0,6,14,-1,0,-3:00,10,-1,0,0,-4:00
-1457,America/Detroit,1973,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1458,America/Detroit,1974,US,-300,60,1,6,-1,0,-3:00,10,-1,0,0,-4:00
-1459,America/Detroit,1975,US,-300,60,2,23,-1,0,-3:00,10,-1,0,0,-4:00
-1460,America/Detroit,1976,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1461,America/Detroit,1987,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1462,America/Detroit,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1463,America/Menominee,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1464,America/Menominee,1973,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1465,America/Menominee,1974,US,-360,60,1,6,-1,0,-4:00,10,-1,0,0,-5:00
-1466,America/Menominee,1975,US,-360,60,2,23,-1,0,-4:00,10,-1,0,0,-5:00
-1467,America/Menominee,1976,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1468,America/Menominee,1987,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1469,America/Menominee,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
-1470,America/St_Johns,1970,StJohns,-210,60,4,-1,0,0,-1:30,10,-1,0,0,-2:30
-1471,America/St_Johns,1987,StJohns,-210,60,4,1,0,0,-3:29,10,-1,0,0,-4:29
-1472,America/St_Johns,1988,StJohns,-210,120,4,1,0,0,-3:29,10,-1,0,0,-4:29
-1473,America/St_Johns,1989,StJohns,-210,60,4,1,0,0,-3:29,10,-1,0,0,-4:29
-1474,America/St_Johns,2007,StJohns,-210,60,3,8,0,0,-3:29,11,1,0,0,-4:29
-1475,America/Goose_Bay,1970,StJohns,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1476,America/Goose_Bay,1987,StJohns,-240,60,4,1,0,0,-3:59,10,-1,0,0,-4:59
-1477,America/Goose_Bay,1988,StJohns,-240,120,4,1,0,0,-3:59,10,-1,0,0,-4:59
-1478,America/Goose_Bay,1989,StJohns,-240,60,4,1,0,0,-3:59,10,-1,0,0,-4:59
-1479,America/Goose_Bay,2007,StJohns,-240,60,3,8,0,0,-3:59,11,1,0,0,-4:59
-1480,America/Halifax,1970,Halifax,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1481,America/Halifax,1973,Halifax,-240,0,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1482,America/Halifax,1974,Canada,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1483,America/Halifax,1987,Canada,-240,60,4,1,0,0,-2:00,10,-1,0,0,-3:00
-1484,America/Halifax,2007,Canada,-240,60,3,8,0,0,-2:00,11,1,0,0,-3:00
-1485,America/Glace_Bay,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1486,America/Glace_Bay,1972,Halifax,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1487,America/Glace_Bay,1973,Halifax,-240,0,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1488,America/Glace_Bay,1974,Canada,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1489,America/Glace_Bay,1987,Canada,-240,60,4,1,0,0,-2:00,10,-1,0,0,-3:00
-1490,America/Glace_Bay,2007,Canada,-240,60,3,8,0,0,-2:00,11,1,0,0,-3:00
-1491,America/Moncton,1970,Moncton,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1492,America/Moncton,1973,Canada,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1493,America/Moncton,1987,Canada,-240,60,4,1,0,0,-2:00,10,-1,0,0,-3:00
-1494,America/Moncton,1993,Moncton,-240,60,4,1,0,0,-3:59,10,-1,0,0,-4:59
-1495,America/Moncton,2006,Moncton,-240,0,4,1,0,0,-3:59,10,-1,0,0,-4:59
-1496,America/Moncton,2007,Canada,-240,60,3,8,0,0,-2:00,11,1,0,0,-3:00
-1497,America/Blanc-Sablon,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1498,America/Montreal,1970,Mont,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1499,America/Montreal,1974,Canada,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1500,America/Montreal,1987,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1501,America/Montreal,2007,Canada,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1502,America/Toronto,1970,Toronto,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1503,America/Toronto,1973,Toronto,-300,0,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1504,America/Toronto,1974,Canada,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1505,America/Toronto,1987,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1506,America/Toronto,2007,Canada,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1507,America/Thunder_Bay,1970,Mont,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1508,America/Thunder_Bay,1973,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1509,America/Thunder_Bay,1974,Canada,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1510,America/Thunder_Bay,1987,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1511,America/Thunder_Bay,2007,Canada,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1512,America/Nipigon,1970,Canada,-300,60,8,14,-1,0,23:00,9,30,-1,0,-4:00
-1513,America/Nipigon,1974,Canada,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1514,America/Nipigon,1987,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1515,America/Nipigon,2007,Canada,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1516,America/Rainy_River,1970,Canada,-360,60,8,14,-1,0,23:00,9,30,-1,0,-5:00
-1517,America/Rainy_River,1974,Canada,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1518,America/Rainy_River,1987,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1519,America/Rainy_River,2007,Canada,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
-1520,America/Atikokan,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1521,America/Winnipeg,1970,Winn,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-4:00
-1522,America/Winnipeg,1987,Winn,-360,60,4,1,0,0,-4:00,10,-1,0,0,-4:00
-1523,America/Winnipeg,2005,Winn,-360,0,4,1,0,0,-4:00,10,-1,0,0,-4:00
-1524,America/Winnipeg,2006,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1525,America/Winnipeg,2007,Canada,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
-1526,America/Regina,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1527,America/Swift_Current,1970,Swift,-420,0,4,-1,0,0,-5:00,9,-1,0,0,-6:00
-1528,America/Swift_Current,1972,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1529,America/Edmonton,1970,Edm,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1530,America/Edmonton,1987,Canada,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1531,America/Edmonton,2007,Canada,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
-1532,America/Vancouver,1970,Vanc,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1533,America/Vancouver,1987,Canada,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1534,America/Vancouver,2007,Canada,-480,60,3,8,0,0,-6:00,11,1,0,0,-7:00
-1535,America/Dawson_Creek,1970,Vanc,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1536,America/Dawson_Creek,1972,,-420,0,0,0,0,0,00:00,0,0,0,0,00:00
-1537,America/Pangnirtung,1970,NT_YK,-240,120,4,-1,0,0,-4:00,10,-1,0,0,-3:00
-1538,America/Pangnirtung,1980,NT_YK,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1539,America/Pangnirtung,1987,NT_YK,-240,60,4,1,0,0,-2:00,10,-1,0,0,-3:00
-1540,America/Pangnirtung,1995,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1541,America/Pangnirtung,1999,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1542,America/Pangnirtung,2000,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1543,America/Pangnirtung,2007,Canada,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1544,America/Iqaluit,1970,NT_YK,-300,120,4,-1,0,0,-5:00,10,-1,0,0,-4:00
-1545,America/Iqaluit,1980,NT_YK,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1546,America/Iqaluit,1987,NT_YK,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1547,America/Iqaluit,1999,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1548,America/Iqaluit,2000,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1549,America/Iqaluit,2007,Canada,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1550,America/Resolute,1970,NT_YK,-360,120,4,-1,0,0,-6:00,10,-1,0,0,-5:00
-1551,America/Resolute,1980,NT_YK,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1552,America/Resolute,1987,NT_YK,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1553,America/Resolute,2000,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1554,America/Resolute,2001,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1555,America/Resolute,2006,Resolute,-300,0,12,31,-1,0,07:00,11,1,0,0,-4:00
-1556,America/Resolute,2007,Resolute,-300,0,12,31,-1,0,07:00,3,8,0,0,-4:00
-1557,America/Rankin_Inlet,1970,NT_YK,-360,120,4,-1,0,0,-6:00,10,-1,0,0,-5:00
-1558,America/Rankin_Inlet,1980,NT_YK,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
-1559,America/Rankin_Inlet,1987,NT_YK,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1560,America/Rankin_Inlet,2000,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1561,America/Rankin_Inlet,2001,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1562,America/Rankin_Inlet,2007,Canada,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
-1563,America/Cambridge_Bay,1970,NT_YK,-420,120,4,-1,0,0,-7:00,10,-1,0,0,-6:00
-1564,America/Cambridge_Bay,1980,NT_YK,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1565,America/Cambridge_Bay,1987,NT_YK,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1566,America/Cambridge_Bay,1999,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1567,America/Cambridge_Bay,2000,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1568,America/Cambridge_Bay,2001,Canada,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1569,America/Cambridge_Bay,2007,Canada,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
-1570,America/Yellowknife,1970,NT_YK,-420,120,4,-1,0,0,-7:00,10,-1,0,0,-6:00
-1571,America/Yellowknife,1980,Canada,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1572,America/Yellowknife,1987,Canada,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1573,America/Yellowknife,2007,Canada,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
-1574,America/Inuvik,1970,NT_YK,-480,120,4,-1,0,0,-8:00,10,-1,0,0,-7:00
-1575,America/Inuvik,1979,NT_YK,-420,120,4,-1,0,0,-7:00,10,-1,0,0,-6:00
-1576,America/Inuvik,1980,Canada,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1577,America/Inuvik,1987,Canada,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1578,America/Inuvik,2007,Canada,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
-1579,America/Whitehorse,1970,NT_YK,-480,120,4,-1,0,0,-8:00,10,-1,0,0,-7:00
-1580,America/Whitehorse,1980,Canada,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1581,America/Whitehorse,1987,Canada,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1582,America/Whitehorse,2007,Canada,-480,60,3,8,0,0,-6:00,11,1,0,0,-7:00
-1583,America/Dawson,1970,NT_YK,-540,120,4,-1,0,0,-9:00,10,-1,0,0,-8:00
-1584,America/Dawson,1973,NT_YK,-480,120,4,-1,0,0,-8:00,10,-1,0,0,-7:00
-1585,America/Dawson,1980,Canada,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1586,America/Dawson,1987,Canada,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1587,America/Dawson,2007,Canada,-480,60,3,8,0,0,-6:00,11,1,0,0,-7:00
-1588,America/Cancun,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1589,America/Cancun,1981,Mexico,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1590,America/Cancun,1996,Mexico,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1591,America/Cancun,1998,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1592,America/Cancun,2001,Mexico,-360,60,5,1,0,0,-4:00,9,-1,0,0,-5:00
-1593,America/Cancun,2002,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1594,America/Merida,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1595,America/Merida,1981,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1596,America/Merida,1982,Mexico,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1597,America/Merida,1996,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1598,America/Merida,2001,Mexico,-360,60,5,1,0,0,-4:00,9,-1,0,0,-5:00
-1599,America/Merida,2002,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1600,America/Matamoros,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1601,America/Matamoros,1988,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1602,America/Matamoros,1989,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1603,America/Matamoros,2001,Mexico,-360,60,5,1,0,0,-4:00,9,-1,0,0,-5:00
-1604,America/Matamoros,2002,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1605,America/Matamoros,2010,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1606,America/Monterrey,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1607,America/Monterrey,1988,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1608,America/Monterrey,1989,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1609,America/Monterrey,2001,Mexico,-360,60,5,1,0,0,-4:00,9,-1,0,0,-5:00
-1610,America/Monterrey,2002,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1611,America/Mexico_City,1970,Mexico,-360,60,2,12,-1,0,-6:00,7,30,-1,0,-7:00
-1612,America/Mexico_City,1996,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1613,America/Mexico_City,2001,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1614,America/Mexico_City,2002,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1615,America/Ojinaga,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1616,America/Ojinaga,1996,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1617,America/Ojinaga,1998,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1618,America/Ojinaga,2001,Mexico,-420,60,5,1,0,0,-5:00,9,-1,0,0,-6:00
-1619,America/Ojinaga,2002,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1620,America/Ojinaga,2010,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1621,America/Chihuahua,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1622,America/Chihuahua,1996,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1623,America/Chihuahua,1998,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1624,America/Chihuahua,2001,Mexico,-420,60,5,1,0,0,-5:00,9,-1,0,0,-6:00
-1625,America/Chihuahua,2002,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1626,America/Hermosillo,1970,Mexico,-420,60,2,12,-1,0,-7:00,7,30,-1,0,-8:00
-1627,America/Hermosillo,1996,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1628,America/Hermosillo,1999,,-420,0,0,0,0,0,00:00,0,0,0,0,00:00
-1629,America/Mazatlan,1970,Mexico,-420,60,2,12,-1,0,-7:00,7,30,-1,0,-8:00
-1630,America/Mazatlan,1996,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1631,America/Mazatlan,2001,Mexico,-420,60,5,1,0,0,-5:00,9,-1,0,0,-6:00
-1632,America/Mazatlan,2002,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1633,America/Bahia_Banderas,1970,Mexico,-420,60,2,12,-1,0,-7:00,7,30,-1,0,-8:00
-1634,America/Bahia_Banderas,1996,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1635,America/Bahia_Banderas,2001,Mexico,-420,60,5,1,0,0,-5:00,9,-1,0,0,-6:00
-1636,America/Bahia_Banderas,2002,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1637,America/Bahia_Banderas,2010,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
-1638,America/Tijuana,1970,,-480,0,0,0,0,0,00:00,0,0,0,0,00:00
-1639,America/Tijuana,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1640,America/Tijuana,1987,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1641,America/Tijuana,1996,Mexico,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1642,America/Tijuana,2001,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1643,America/Tijuana,2002,Mexico,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1644,America/Tijuana,2010,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1645,America/Santa_Isabel,1970,,-480,0,0,0,0,0,00:00,0,0,0,0,00:00
-1646,America/Santa_Isabel,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
-1647,America/Santa_Isabel,1987,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1648,America/Santa_Isabel,1996,Mexico,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1649,America/Santa_Isabel,2001,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1650,America/Santa_Isabel,2002,Mexico,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
-1651,America/Anguilla,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1652,America/Antigua,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1653,America/Nassau,1970,Bahamas,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1654,America/Nassau,1975,Bahamas,-300,0,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1655,America/Nassau,1976,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1656,America/Nassau,1987,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1657,America/Nassau,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1658,America/Barbados,1970,Barb,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1659,America/Barbados,1977,Barb,-240,60,6,12,-1,0,-2:00,10,1,0,0,-3:00
-1660,America/Barbados,1978,Barb,-240,60,4,15,0,0,-2:00,10,1,0,0,-3:00
-1661,America/Barbados,1979,Barb,-240,60,4,15,0,0,-2:00,9,30,-1,0,-3:00
-1662,America/Barbados,1980,Barb,-240,60,4,15,0,0,-2:00,9,25,-1,0,-3:00
-1663,America/Barbados,1981,Barb,-240,0,4,15,0,0,-2:00,9,25,-1,0,-3:00
-1664,America/Belize,1970,Belize,-360,0,12,31,-1,0,06:00,2,9,0,0,-7:00
-1665,America/Belize,1973,Belize,-360,60,12,5,-1,0,-6:00,1,1,-1,0,05:00
-1666,America/Belize,1974,Belize,-360,0,12,31,-1,0,06:00,2,9,-1,0,-7:00
-1667,America/Belize,1982,Belize,-360,60,12,18,-1,0,-6:00,1,1,-1,0,05:00
-1668,America/Belize,1983,Belize,-360,0,12,31,-1,0,06:00,2,12,-1,0,-7:00
-1669,Atlantic/Bermuda,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1670,Atlantic/Bermuda,1974,Bahamas,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1671,Atlantic/Bermuda,1975,Bahamas,-240,0,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1672,Atlantic/Bermuda,1976,US,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
-1673,Atlantic/Bermuda,1987,US,-240,60,4,1,0,0,-2:00,10,-1,0,0,-3:00
-1674,Atlantic/Bermuda,2007,US,-240,60,3,8,0,0,-2:00,11,1,0,0,-3:00
-1675,America/Cayman,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1676,America/Costa_Rica,1970,CR,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1677,America/Costa_Rica,1979,CR,-360,60,2,-1,0,0,-6:00,6,1,0,0,-7:00
-1678,America/Costa_Rica,1991,CR,-360,60,1,15,6,0,-6:00,7,1,-1,0,-7:00
-1679,America/Costa_Rica,1992,CR,-360,60,1,15,6,0,-6:00,3,15,-1,0,-7:00
-1680,America/Costa_Rica,1993,CR,-360,0,1,15,6,0,-6:00,3,15,-1,0,-7:00
-1681,America/Havana,1970,Cuba,-300,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1682,America/Havana,1972,Cuba,-300,60,4,-1,0,0,-5:00,10,8,-1,0,-6:00
-1683,America/Havana,1975,Cuba,-300,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1684,America/Havana,1978,Cuba,-300,60,5,7,-1,0,-5:00,10,8,0,0,-6:00
-1685,America/Havana,1979,Cuba,-300,60,3,15,0,0,-5:00,10,8,0,0,-6:00
-1686,America/Havana,1981,Cuba,-300,60,5,5,0,0,-5:00,10,8,0,0,-6:00
-1687,America/Havana,1986,Cuba,-300,60,3,14,0,0,-5:00,10,8,0,0,-6:00
-1688,America/Havana,1990,Cuba,-300,60,4,1,0,0,-5:00,10,8,0,0,-6:00
-1689,America/Havana,1991,Cuba,-300,60,4,1,0,0,-5:00,10,8,0,0,-5:00
-1690,America/Havana,1996,Cuba,-300,60,4,1,0,0,-5:00,10,6,-1,0,-5:00
-1691,America/Havana,1997,Cuba,-300,60,4,1,0,0,-5:00,10,12,-1,0,-5:00
-1692,America/Havana,1998,Cuba,-300,60,3,-1,0,0,-5:00,10,-1,0,0,-5:00
-1693,America/Havana,2000,Cuba,-300,60,4,1,0,0,-5:00,10,-1,0,0,-5:00
-1694,America/Havana,2004,Cuba,-300,60,4,1,0,0,-5:00,1,1,-1,0,06:00
-1695,America/Havana,2006,Cuba,-300,0,12,31,-1,0,07:00,10,-1,0,0,-5:00
-1696,America/Havana,2007,Cuba,-300,60,3,8,0,0,-5:00,10,-1,0,0,-5:00
-1697,America/Havana,2008,Cuba,-300,60,3,15,0,0,-5:00,10,-1,0,0,-5:00
-1698,America/Havana,2009,Cuba,-300,60,3,8,0,0,-5:00,10,-1,0,0,-5:00
-1699,America/Havana,2011,Cuba,-300,60,3,15,0,0,-5:00,10,-1,0,0,-5:00
-1700,America/Havana,2012,Cuba,-300,60,3,8,0,0,-5:00,10,-1,0,0,-5:00
-1701,America/Dominica,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1702,America/Santo_Domingo,1970,DR,-300,30,10,-1,0,0,-5:00,2,21,-1,0,-6:00
-1703,America/Santo_Domingo,1971,DR,-300,30,10,-1,0,0,-5:00,1,20,-1,0,-6:00
-1704,America/Santo_Domingo,1972,DR,-300,30,10,-1,0,0,-5:00,1,21,-1,0,-6:00
-1705,America/Santo_Domingo,1974,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1706,America/El_Salvador,1970,Salv,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1707,America/El_Salvador,1987,Salv,-360,60,5,1,0,0,-6:00,9,-1,0,0,-7:00
-1708,America/El_Salvador,1988,Salv,-360,0,5,1,0,0,-6:00,9,-1,0,0,-7:00
-1709,America/Grenada,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1710,America/Guadeloupe,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1711,America/Guatemala,1970,Guat,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1712,America/Guatemala,1973,Guat,-360,60,11,25,-1,0,-6:00,1,1,-1,0,05:00
-1713,America/Guatemala,1974,Guat,-360,0,12,31,-1,0,06:00,2,24,-1,0,-7:00
-1714,America/Guatemala,1983,Guat,-360,60,5,21,-1,0,-6:00,9,22,-1,0,-7:00
-1715,America/Guatemala,1991,Guat,-360,60,3,23,-1,0,-6:00,9,7,-1,0,-7:00
-1716,America/Guatemala,2006,Guat,-360,60,4,30,-1,0,-6:00,10,1,-1,0,-7:00
-1717,America/Guatemala,2007,Guat,-360,0,4,30,-1,0,-6:00,10,1,-1,0,-7:00
-1718,America/Port-au-Prince,1970,Haiti,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1719,America/Port-au-Prince,1983,Haiti,-300,60,5,8,-1,0,-5:00,10,-1,0,0,-6:00
-1720,America/Port-au-Prince,1984,Haiti,-300,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
-1721,America/Port-au-Prince,1988,Haiti,-300,60,4,1,0,0,-4:00,10,-1,0,0,-4:00
-1722,America/Port-au-Prince,2005,Haiti,-300,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1723,America/Port-au-Prince,2006,Haiti,-300,0,4,1,0,0,-5:00,10,-1,0,0,-6:00
-1724,America/Tegucigalpa,1970,Hond,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1725,America/Tegucigalpa,1987,Hond,-360,60,5,1,0,0,-6:00,9,-1,0,0,-7:00
-1726,America/Tegucigalpa,2006,Hond,-360,60,5,1,0,0,-6:00,8,1,1,0,-7:00
-1727,America/Tegucigalpa,2007,Hond,-360,0,5,1,0,0,-6:00,8,1,1,0,-7:00
-1728,America/Jamaica,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1729,America/Jamaica,1974,US,-300,60,1,6,-1,0,-3:00,10,-1,0,0,-4:00
-1730,America/Jamaica,1975,US,-300,60,2,23,-1,0,-3:00,10,-1,0,0,-4:00
-1731,America/Jamaica,1976,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1732,America/Jamaica,1984,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1733,America/Martinique,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1734,America/Martinique,1980,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1735,America/Montserrat,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1736,America/Managua,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1737,America/Managua,1973,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1738,America/Managua,1975,Nic,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1739,America/Managua,1979,Nic,-360,60,3,16,0,0,-6:00,6,23,1,0,-7:00
-1740,America/Managua,1992,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1741,America/Managua,1993,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1742,America/Managua,1997,Nic,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-1743,America/Managua,2005,Nic,-360,60,4,10,-1,0,-6:00,10,1,0,0,-7:00
-1744,America/Managua,2006,Nic,-360,60,4,30,-1,0,-4:00,10,1,0,0,-6:00
-1745,America/Managua,2007,Nic,-360,0,4,30,-1,0,-4:00,10,1,0,0,-6:00
-1746,America/Panama,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1747,America/Puerto_Rico,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1748,America/St_Kitts,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1749,America/St_Lucia,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1750,America/Miquelon,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1751,America/Miquelon,1980,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1752,America/Miquelon,1987,Canada,-180,60,4,1,0,0,-1:00,10,-1,0,0,-2:00
-1753,America/Miquelon,2007,Canada,-180,60,3,8,0,0,-1:00,11,1,0,0,-2:00
-1754,America/St_Vincent,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1755,America/Grand_Turk,1970,TC,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-1756,America/Grand_Turk,1979,TC,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
-1757,America/Grand_Turk,1987,TC,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
-1758,America/Grand_Turk,2007,TC,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
-1759,America/Tortola,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1760,America/St_Thomas,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1761,America/Argentina/Buenos_Aires,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-1762,America/Argentina/Buenos_Aires,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-1763,America/Argentina/Buenos_Aires,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
-1764,America/Argentina/Buenos_Aires,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1765,America/Argentina/Buenos_Aires,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
-1766,America/Argentina/Buenos_Aires,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
-1767,America/Argentina/Buenos_Aires,2000,Arg,-180,0,12,31,-1,0,09:00,3,3,-1,0,-4:00
-1768,America/Argentina/Buenos_Aires,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
-1769,America/Argentina/Buenos_Aires,2008,Arg,-180,60,10,15,0,0,-3:00,3,15,0,0,-4:00
-1770,America/Argentina/Buenos_Aires,2009,Arg,-180,0,12,31,-1,0,09:00,3,15,0,0,-4:00
-1771,America/Argentina/Cordoba,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-1772,America/Argentina/Cordoba,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-1773,America/Argentina/Cordoba,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
-1774,America/Argentina/Cordoba,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1775,America/Argentina/Cordoba,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
-1776,America/Argentina/Cordoba,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
-1777,America/Argentina/Cordoba,2000,Arg,-180,0,12,31,-1,0,09:00,3,3,-1,0,-4:00
-1778,America/Argentina/Cordoba,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
-1779,America/Argentina/Cordoba,2008,Arg,-180,60,10,15,0,0,-3:00,3,15,0,0,-4:00
-1780,America/Argentina/Cordoba,2009,Arg,-180,0,12,31,-1,0,09:00,3,15,0,0,-4:00
-1781,America/Argentina/Salta,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-1782,America/Argentina/Salta,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-1783,America/Argentina/Salta,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
-1784,America/Argentina/Salta,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1785,America/Argentina/Salta,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
-1786,America/Argentina/Salta,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
-1787,America/Argentina/Salta,2000,Arg,-180,0,12,31,-1,0,09:00,3,3,-1,0,-4:00
-1788,America/Argentina/Salta,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
-1789,America/Argentina/Salta,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1790,America/Argentina/Tucuman,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-1791,America/Argentina/Tucuman,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-1792,America/Argentina/Tucuman,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
-1793,America/Argentina/Tucuman,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1794,America/Argentina/Tucuman,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
-1795,America/Argentina/Tucuman,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
-1796,America/Argentina/Tucuman,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1797,America/Argentina/Tucuman,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1798,America/Argentina/Tucuman,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
-1799,America/Argentina/Tucuman,2008,Arg,-180,60,10,15,0,0,-3:00,3,15,0,0,-4:00
-1800,America/Argentina/Tucuman,2009,Arg,-180,0,12,31,-1,0,09:00,3,15,0,0,-4:00
-1801,America/Argentina/La_Rioja,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-1802,America/Argentina/La_Rioja,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-1803,America/Argentina/La_Rioja,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
-1804,America/Argentina/La_Rioja,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1805,America/Argentina/La_Rioja,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
-1806,America/Argentina/La_Rioja,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
-1807,America/Argentina/La_Rioja,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1808,America/Argentina/La_Rioja,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1809,America/Argentina/La_Rioja,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
-1810,America/Argentina/La_Rioja,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1811,America/Argentina/San_Juan,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-1812,America/Argentina/San_Juan,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-1813,America/Argentina/San_Juan,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
-1814,America/Argentina/San_Juan,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1815,America/Argentina/San_Juan,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
-1816,America/Argentina/San_Juan,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
-1817,America/Argentina/San_Juan,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1818,America/Argentina/San_Juan,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1819,America/Argentina/San_Juan,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
-1820,America/Argentina/San_Juan,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1821,America/Argentina/Jujuy,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-1822,America/Argentina/Jujuy,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-1823,America/Argentina/Jujuy,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
-1824,America/Argentina/Jujuy,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1825,America/Argentina/Jujuy,1990,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1826,America/Argentina/Jujuy,1991,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1827,America/Argentina/Jujuy,1992,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1828,America/Argentina/Jujuy,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
-1829,America/Argentina/Jujuy,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
-1830,America/Argentina/Jujuy,2000,Arg,-180,0,12,31,-1,0,09:00,3,3,-1,0,-4:00
-1831,America/Argentina/Jujuy,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
-1832,America/Argentina/Jujuy,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1833,America/Argentina/Catamarca,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-1834,America/Argentina/Catamarca,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-1835,America/Argentina/Catamarca,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
-1836,America/Argentina/Catamarca,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1837,America/Argentina/Catamarca,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
-1838,America/Argentina/Catamarca,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
-1839,America/Argentina/Catamarca,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1840,America/Argentina/Catamarca,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1841,America/Argentina/Catamarca,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
-1842,America/Argentina/Catamarca,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1843,America/Argentina/Mendoza,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-1844,America/Argentina/Mendoza,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-1845,America/Argentina/Mendoza,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
-1846,America/Argentina/Mendoza,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1847,America/Argentina/Mendoza,1990,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1848,America/Argentina/Mendoza,1992,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1849,America/Argentina/Mendoza,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
-1850,America/Argentina/Mendoza,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
-1851,America/Argentina/Mendoza,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1852,America/Argentina/Mendoza,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1853,America/Argentina/Mendoza,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
-1854,America/Argentina/Mendoza,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1855,America/Argentina/San_Luis,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-1856,America/Argentina/San_Luis,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-1857,America/Argentina/San_Luis,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
-1858,America/Argentina/San_Luis,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1859,America/Argentina/San_Luis,1990,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1860,America/Argentina/San_Luis,1991,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1861,America/Argentina/San_Luis,1999,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1862,America/Argentina/San_Luis,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1863,America/Argentina/San_Luis,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1864,America/Argentina/San_Luis,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
-1865,America/Argentina/San_Luis,2008,SanLuis,-240,60,10,8,0,0,-4:00,3,8,0,0,-5:00
-1866,America/Argentina/Rio_Gallegos,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-1867,America/Argentina/Rio_Gallegos,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-1868,America/Argentina/Rio_Gallegos,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
-1869,America/Argentina/Rio_Gallegos,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1870,America/Argentina/Rio_Gallegos,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
-1871,America/Argentina/Rio_Gallegos,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
-1872,America/Argentina/Rio_Gallegos,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1873,America/Argentina/Rio_Gallegos,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1874,America/Argentina/Rio_Gallegos,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
-1875,America/Argentina/Rio_Gallegos,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1876,America/Argentina/Ushuaia,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
-1877,America/Argentina/Ushuaia,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
-1878,America/Argentina/Ushuaia,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
-1879,America/Argentina/Ushuaia,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
-1880,America/Argentina/Ushuaia,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
-1881,America/Argentina/Ushuaia,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
-1882,America/Argentina/Ushuaia,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1883,America/Argentina/Ushuaia,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1884,America/Argentina/Ushuaia,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
-1885,America/Argentina/Ushuaia,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1886,America/Aruba,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1887,America/La_Paz,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1888,America/Noronha,1970,Brazil,-120,0,12,31,-1,0,10:00,3,1,-1,0,-3:00
-1889,America/Noronha,1985,Brazil,-120,60,11,2,-1,0,-2:00,1,1,-1,0,09:00
-1890,America/Noronha,1986,Brazil,-120,60,10,25,-1,0,-2:00,3,15,-1,0,-3:00
-1891,America/Noronha,1987,Brazil,-120,60,10,25,-1,0,-2:00,2,14,-1,0,-3:00
-1892,America/Noronha,1988,Brazil,-120,60,10,16,-1,0,-2:00,2,7,-1,0,-3:00
-1893,America/Noronha,1989,Brazil,-120,60,10,15,-1,0,-2:00,1,29,-1,0,-3:00
-1894,America/Noronha,1990,,-120,0,0,0,0,0,00:00,0,0,0,0,00:00
-1895,America/Noronha,1999,Brazil,-120,60,10,3,-1,0,-2:00,2,21,-1,0,-3:00
-1896,America/Noronha,2000,,-120,0,0,0,0,0,00:00,0,0,0,0,00:00
-1897,America/Noronha,2001,Brazil,-120,60,10,8,0,0,-2:00,2,15,0,0,-3:00
-1898,America/Noronha,2002,,-120,0,0,0,0,0,00:00,0,0,0,0,00:00
-1899,America/Belem,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
-1900,America/Belem,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
-1901,America/Belem,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
-1902,America/Belem,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
-1903,America/Belem,1988,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1904,America/Santarem,1970,Brazil,-240,0,12,31,-1,0,08:00,3,1,-1,0,-5:00
-1905,America/Santarem,1985,Brazil,-240,60,11,2,-1,0,-4:00,1,1,-1,0,07:00
-1906,America/Santarem,1986,Brazil,-240,60,10,25,-1,0,-4:00,3,15,-1,0,-5:00
-1907,America/Santarem,1987,Brazil,-240,60,10,25,-1,0,-4:00,2,14,-1,0,-5:00
-1908,America/Santarem,1988,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-1909,America/Santarem,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1910,America/Fortaleza,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
-1911,America/Fortaleza,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
-1912,America/Fortaleza,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
-1913,America/Fortaleza,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
-1914,America/Fortaleza,1988,Brazil,-180,60,10,16,-1,0,-3:00,2,7,-1,0,-4:00
-1915,America/Fortaleza,1989,Brazil,-180,60,10,15,-1,0,-3:00,1,29,-1,0,-4:00
-1916,America/Fortaleza,1990,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1917,America/Fortaleza,1999,Brazil,-180,60,10,3,-1,0,-3:00,2,21,-1,0,-4:00
-1918,America/Fortaleza,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1919,America/Fortaleza,2001,Brazil,-180,60,10,8,0,0,-3:00,2,15,0,0,-4:00
-1920,America/Fortaleza,2002,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1921,America/Recife,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
-1922,America/Recife,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
-1923,America/Recife,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
-1924,America/Recife,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
-1925,America/Recife,1988,Brazil,-180,60,10,16,-1,0,-3:00,2,7,-1,0,-4:00
-1926,America/Recife,1989,Brazil,-180,60,10,15,-1,0,-3:00,1,29,-1,0,-4:00
-1927,America/Recife,1990,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1928,America/Recife,1999,Brazil,-180,60,10,3,-1,0,-3:00,2,21,-1,0,-4:00
-1929,America/Recife,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1930,America/Recife,2001,Brazil,-180,60,10,8,0,0,-3:00,2,15,0,0,-4:00
-1931,America/Recife,2002,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1932,America/Araguaina,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
-1933,America/Araguaina,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
-1934,America/Araguaina,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
-1935,America/Araguaina,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
-1936,America/Araguaina,1988,Brazil,-180,60,10,16,-1,0,-3:00,2,7,-1,0,-4:00
-1937,America/Araguaina,1989,Brazil,-180,60,10,15,-1,0,-3:00,1,29,-1,0,-4:00
-1938,America/Araguaina,1990,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1939,America/Araguaina,1995,Brazil,-180,60,10,11,0,0,-3:00,2,15,0,0,-4:00
-1940,America/Araguaina,1996,Brazil,-180,60,10,6,-1,0,-3:00,2,11,-1,0,-4:00
-1941,America/Araguaina,1997,Brazil,-180,60,10,6,-1,0,-3:00,2,16,-1,0,-4:00
-1942,America/Araguaina,1998,Brazil,-180,60,10,11,-1,0,-3:00,3,1,-1,0,-4:00
-1943,America/Araguaina,1999,Brazil,-180,60,10,3,-1,0,-3:00,2,21,-1,0,-4:00
-1944,America/Araguaina,2000,Brazil,-180,60,10,8,0,0,-3:00,2,27,-1,0,-4:00
-1945,America/Araguaina,2001,Brazil,-180,60,10,8,0,0,-3:00,2,15,0,0,-4:00
-1946,America/Araguaina,2002,Brazil,-180,60,11,3,-1,0,-3:00,2,15,0,0,-4:00
-1947,America/Araguaina,2003,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1948,America/Maceio,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
-1949,America/Maceio,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
-1950,America/Maceio,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
-1951,America/Maceio,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
-1952,America/Maceio,1988,Brazil,-180,60,10,16,-1,0,-3:00,2,7,-1,0,-4:00
-1953,America/Maceio,1989,Brazil,-180,60,10,15,-1,0,-3:00,1,29,-1,0,-4:00
-1954,America/Maceio,1990,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1955,America/Maceio,1995,Brazil,-180,60,10,11,0,0,-3:00,2,15,0,0,-4:00
-1956,America/Maceio,1996,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1957,America/Maceio,1999,Brazil,-180,60,10,3,-1,0,-3:00,2,21,-1,0,-4:00
-1958,America/Maceio,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1959,America/Maceio,2001,Brazil,-180,60,10,8,0,0,-3:00,2,15,0,0,-4:00
-1960,America/Maceio,2002,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1961,America/Bahia,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
-1962,America/Bahia,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
-1963,America/Bahia,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
-1964,America/Bahia,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
-1965,America/Bahia,1988,Brazil,-180,60,10,16,-1,0,-3:00,2,7,-1,0,-4:00
-1966,America/Bahia,1989,Brazil,-180,60,10,15,-1,0,-3:00,1,29,-1,0,-4:00
-1967,America/Bahia,1990,Brazil,-180,60,10,21,-1,0,-3:00,2,11,-1,0,-4:00
-1968,America/Bahia,1991,Brazil,-180,60,10,20,-1,0,-3:00,2,17,-1,0,-4:00
-1969,America/Bahia,1992,Brazil,-180,60,10,25,-1,0,-3:00,2,9,-1,0,-4:00
-1970,America/Bahia,1993,Brazil,-180,60,10,11,0,0,-3:00,1,31,-1,0,-4:00
-1971,America/Bahia,1994,Brazil,-180,60,10,11,0,0,-3:00,2,15,0,0,-4:00
-1972,America/Bahia,1996,Brazil,-180,60,10,6,-1,0,-3:00,2,11,-1,0,-4:00
-1973,America/Bahia,1997,Brazil,-180,60,10,6,-1,0,-3:00,2,16,-1,0,-4:00
-1974,America/Bahia,1998,Brazil,-180,60,10,11,-1,0,-3:00,3,1,-1,0,-4:00
-1975,America/Bahia,1999,Brazil,-180,60,10,3,-1,0,-3:00,2,21,-1,0,-4:00
-1976,America/Bahia,2000,Brazil,-180,60,10,8,0,0,-3:00,2,27,-1,0,-4:00
-1977,America/Bahia,2001,Brazil,-180,60,10,8,0,0,-3:00,2,15,0,0,-4:00
-1978,America/Bahia,2002,Brazil,-180,60,11,3,-1,0,-3:00,2,15,0,0,-4:00
-1979,America/Bahia,2003,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-1980,America/Sao_Paulo,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
-1981,America/Sao_Paulo,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
-1982,America/Sao_Paulo,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
-1983,America/Sao_Paulo,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
-1984,America/Sao_Paulo,1988,Brazil,-180,60,10,16,-1,0,-3:00,2,7,-1,0,-4:00
-1985,America/Sao_Paulo,1989,Brazil,-180,60,10,15,-1,0,-3:00,1,29,-1,0,-4:00
-1986,America/Sao_Paulo,1990,Brazil,-180,60,10,21,-1,0,-3:00,2,11,-1,0,-4:00
-1987,America/Sao_Paulo,1991,Brazil,-180,60,10,20,-1,0,-3:00,2,17,-1,0,-4:00
-1988,America/Sao_Paulo,1992,Brazil,-180,60,10,25,-1,0,-3:00,2,9,-1,0,-4:00
-1989,America/Sao_Paulo,1993,Brazil,-180,60,10,11,0,0,-3:00,1,31,-1,0,-4:00
-1990,America/Sao_Paulo,1994,Brazil,-180,60,10,11,0,0,-3:00,2,15,0,0,-4:00
-1991,America/Sao_Paulo,1996,Brazil,-180,60,10,6,-1,0,-3:00,2,11,-1,0,-4:00
-1992,America/Sao_Paulo,1997,Brazil,-180,60,10,6,-1,0,-3:00,2,16,-1,0,-4:00
-1993,America/Sao_Paulo,1998,Brazil,-180,60,10,11,-1,0,-3:00,3,1,-1,0,-4:00
-1994,America/Sao_Paulo,1999,Brazil,-180,60,10,3,-1,0,-3:00,2,21,-1,0,-4:00
-1995,America/Sao_Paulo,2000,Brazil,-180,60,10,8,0,0,-3:00,2,27,-1,0,-4:00
-1996,America/Sao_Paulo,2001,Brazil,-180,60,10,8,0,0,-3:00,2,15,0,0,-4:00
-1997,America/Sao_Paulo,2002,Brazil,-180,60,11,3,-1,0,-3:00,2,15,0,0,-4:00
-1998,America/Sao_Paulo,2003,Brazil,-180,60,10,19,-1,0,-3:00,2,15,0,0,-4:00
-1999,America/Sao_Paulo,2004,Brazil,-180,60,11,2,-1,0,-3:00,2,15,0,0,-4:00
-2000,America/Sao_Paulo,2005,Brazil,-180,60,10,16,-1,0,-3:00,2,15,0,0,-4:00
-2001,America/Sao_Paulo,2006,Brazil,-180,60,11,5,-1,0,-3:00,2,15,0,0,-4:00
-2002,America/Sao_Paulo,2007,Brazil,-180,60,10,8,0,0,-3:00,2,25,-1,0,-4:00
-2003,America/Sao_Paulo,2008,Brazil,-180,60,10,15,0,0,-3:00,2,15,0,0,-4:00
-2004,America/Sao_Paulo,2012,Brazil,-180,60,10,15,0,0,-3:00,2,22,0,0,-4:00
-2005,America/Sao_Paulo,2013,Brazil,-180,60,10,15,0,0,-3:00,2,15,0,0,-4:00
-2006,America/Sao_Paulo,2015,Brazil,-180,60,10,15,0,0,-3:00,2,22,0,0,-4:00
-2007,America/Sao_Paulo,2016,Brazil,-180,60,10,15,0,0,-3:00,2,15,0,0,-4:00
-2008,America/Campo_Grande,1970,Brazil,-240,0,12,31,-1,0,08:00,3,1,-1,0,-5:00
-2009,America/Campo_Grande,1985,Brazil,-240,60,11,2,-1,0,-4:00,1,1,-1,0,07:00
-2010,America/Campo_Grande,1986,Brazil,-240,60,10,25,-1,0,-4:00,3,15,-1,0,-5:00
-2011,America/Campo_Grande,1987,Brazil,-240,60,10,25,-1,0,-4:00,2,14,-1,0,-5:00
-2012,America/Campo_Grande,1988,Brazil,-240,60,10,16,-1,0,-4:00,2,7,-1,0,-5:00
-2013,America/Campo_Grande,1989,Brazil,-240,60,10,15,-1,0,-4:00,1,29,-1,0,-5:00
-2014,America/Campo_Grande,1990,Brazil,-240,60,10,21,-1,0,-4:00,2,11,-1,0,-5:00
-2015,America/Campo_Grande,1991,Brazil,-240,60,10,20,-1,0,-4:00,2,17,-1,0,-5:00
-2016,America/Campo_Grande,1992,Brazil,-240,60,10,25,-1,0,-4:00,2,9,-1,0,-5:00
-2017,America/Campo_Grande,1993,Brazil,-240,60,10,11,0,0,-4:00,1,31,-1,0,-5:00
-2018,America/Campo_Grande,1994,Brazil,-240,60,10,11,0,0,-4:00,2,15,0,0,-5:00
-2019,America/Campo_Grande,1996,Brazil,-240,60,10,6,-1,0,-4:00,2,11,-1,0,-5:00
-2020,America/Campo_Grande,1997,Brazil,-240,60,10,6,-1,0,-4:00,2,16,-1,0,-5:00
-2021,America/Campo_Grande,1998,Brazil,-240,60,10,11,-1,0,-4:00,3,1,-1,0,-5:00
-2022,America/Campo_Grande,1999,Brazil,-240,60,10,3,-1,0,-4:00,2,21,-1,0,-5:00
-2023,America/Campo_Grande,2000,Brazil,-240,60,10,8,0,0,-4:00,2,27,-1,0,-5:00
-2024,America/Campo_Grande,2001,Brazil,-240,60,10,8,0,0,-4:00,2,15,0,0,-5:00
-2025,America/Campo_Grande,2002,Brazil,-240,60,11,3,-1,0,-4:00,2,15,0,0,-5:00
-2026,America/Campo_Grande,2003,Brazil,-240,60,10,19,-1,0,-4:00,2,15,0,0,-5:00
-2027,America/Campo_Grande,2004,Brazil,-240,60,11,2,-1,0,-4:00,2,15,0,0,-5:00
-2028,America/Campo_Grande,2005,Brazil,-240,60,10,16,-1,0,-4:00,2,15,0,0,-5:00
-2029,America/Campo_Grande,2006,Brazil,-240,60,11,5,-1,0,-4:00,2,15,0,0,-5:00
-2030,America/Campo_Grande,2007,Brazil,-240,60,10,8,0,0,-4:00,2,25,-1,0,-5:00
-2031,America/Campo_Grande,2008,Brazil,-240,60,10,15,0,0,-4:00,2,15,0,0,-5:00
-2032,America/Campo_Grande,2012,Brazil,-240,60,10,15,0,0,-4:00,2,22,0,0,-5:00
-2033,America/Campo_Grande,2013,Brazil,-240,60,10,15,0,0,-4:00,2,15,0,0,-5:00
-2034,America/Campo_Grande,2015,Brazil,-240,60,10,15,0,0,-4:00,2,22,0,0,-5:00
-2035,America/Campo_Grande,2016,Brazil,-240,60,10,15,0,0,-4:00,2,15,0,0,-5:00
-2036,America/Cuiaba,1970,Brazil,-240,0,12,31,-1,0,08:00,3,1,-1,0,-5:00
-2037,America/Cuiaba,1985,Brazil,-240,60,11,2,-1,0,-4:00,1,1,-1,0,07:00
-2038,America/Cuiaba,1986,Brazil,-240,60,10,25,-1,0,-4:00,3,15,-1,0,-5:00
-2039,America/Cuiaba,1987,Brazil,-240,60,10,25,-1,0,-4:00,2,14,-1,0,-5:00
-2040,America/Cuiaba,1988,Brazil,-240,60,10,16,-1,0,-4:00,2,7,-1,0,-5:00
-2041,America/Cuiaba,1989,Brazil,-240,60,10,15,-1,0,-4:00,1,29,-1,0,-5:00
-2042,America/Cuiaba,1990,Brazil,-240,60,10,21,-1,0,-4:00,2,11,-1,0,-5:00
-2043,America/Cuiaba,1991,Brazil,-240,60,10,20,-1,0,-4:00,2,17,-1,0,-5:00
-2044,America/Cuiaba,1992,Brazil,-240,60,10,25,-1,0,-4:00,2,9,-1,0,-5:00
-2045,America/Cuiaba,1993,Brazil,-240,60,10,11,0,0,-4:00,1,31,-1,0,-5:00
-2046,America/Cuiaba,1994,Brazil,-240,60,10,11,0,0,-4:00,2,15,0,0,-5:00
-2047,America/Cuiaba,1996,Brazil,-240,60,10,6,-1,0,-4:00,2,11,-1,0,-5:00
-2048,America/Cuiaba,1997,Brazil,-240,60,10,6,-1,0,-4:00,2,16,-1,0,-5:00
-2049,America/Cuiaba,1998,Brazil,-240,60,10,11,-1,0,-4:00,3,1,-1,0,-5:00
-2050,America/Cuiaba,1999,Brazil,-240,60,10,3,-1,0,-4:00,2,21,-1,0,-5:00
-2051,America/Cuiaba,2000,Brazil,-240,60,10,8,0,0,-4:00,2,27,-1,0,-5:00
-2052,America/Cuiaba,2001,Brazil,-240,60,10,8,0,0,-4:00,2,15,0,0,-5:00
-2053,America/Cuiaba,2002,Brazil,-240,60,11,3,-1,0,-4:00,2,15,0,0,-5:00
-2054,America/Cuiaba,2003,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2055,America/Cuiaba,2004,Brazil,-240,60,11,2,-1,0,-4:00,2,15,0,0,-5:00
-2056,America/Cuiaba,2005,Brazil,-240,60,10,16,-1,0,-4:00,2,15,0,0,-5:00
-2057,America/Cuiaba,2006,Brazil,-240,60,11,5,-1,0,-4:00,2,15,0,0,-5:00
-2058,America/Cuiaba,2007,Brazil,-240,60,10,8,0,0,-4:00,2,25,-1,0,-5:00
-2059,America/Cuiaba,2008,Brazil,-240,60,10,15,0,0,-4:00,2,15,0,0,-5:00
-2060,America/Cuiaba,2012,Brazil,-240,60,10,15,0,0,-4:00,2,22,0,0,-5:00
-2061,America/Cuiaba,2013,Brazil,-240,60,10,15,0,0,-4:00,2,15,0,0,-5:00
-2062,America/Cuiaba,2015,Brazil,-240,60,10,15,0,0,-4:00,2,22,0,0,-5:00
-2063,America/Cuiaba,2016,Brazil,-240,60,10,15,0,0,-4:00,2,15,0,0,-5:00
-2064,America/Porto_Velho,1970,Brazil,-240,0,12,31,-1,0,08:00,3,1,-1,0,-5:00
-2065,America/Porto_Velho,1985,Brazil,-240,60,11,2,-1,0,-4:00,1,1,-1,0,07:00
-2066,America/Porto_Velho,1986,Brazil,-240,60,10,25,-1,0,-4:00,3,15,-1,0,-5:00
-2067,America/Porto_Velho,1987,Brazil,-240,60,10,25,-1,0,-4:00,2,14,-1,0,-5:00
-2068,America/Porto_Velho,1988,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2069,America/Boa_Vista,1970,Brazil,-240,0,12,31,-1,0,08:00,3,1,-1,0,-5:00
-2070,America/Boa_Vista,1985,Brazil,-240,60,11,2,-1,0,-4:00,1,1,-1,0,07:00
-2071,America/Boa_Vista,1986,Brazil,-240,60,10,25,-1,0,-4:00,3,15,-1,0,-5:00
-2072,America/Boa_Vista,1987,Brazil,-240,60,10,25,-1,0,-4:00,2,14,-1,0,-5:00
-2073,America/Boa_Vista,1988,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2074,America/Boa_Vista,1999,Brazil,-240,60,10,3,-1,0,-4:00,2,21,-1,0,-5:00
-2075,America/Boa_Vista,2000,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2076,America/Manaus,1970,Brazil,-240,0,12,31,-1,0,08:00,3,1,-1,0,-5:00
-2077,America/Manaus,1985,Brazil,-240,60,11,2,-1,0,-4:00,1,1,-1,0,07:00
-2078,America/Manaus,1986,Brazil,-240,60,10,25,-1,0,-4:00,3,15,-1,0,-5:00
-2079,America/Manaus,1987,Brazil,-240,60,10,25,-1,0,-4:00,2,14,-1,0,-5:00
-2080,America/Manaus,1988,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2081,America/Manaus,1993,Brazil,-240,60,10,11,0,0,-4:00,1,31,-1,0,-5:00
-2082,America/Manaus,1994,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2083,America/Eirunepe,1970,Brazil,-300,0,12,31,-1,0,07:00,3,1,-1,0,-6:00
-2084,America/Eirunepe,1985,Brazil,-300,60,11,2,-1,0,-5:00,1,1,-1,0,06:00
-2085,America/Eirunepe,1986,Brazil,-300,60,10,25,-1,0,-5:00,3,15,-1,0,-6:00
-2086,America/Eirunepe,1987,Brazil,-300,60,10,25,-1,0,-5:00,2,14,-1,0,-6:00
-2087,America/Eirunepe,1988,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-2088,America/Eirunepe,1993,Brazil,-300,60,10,11,0,0,-5:00,1,31,-1,0,-6:00
-2089,America/Eirunepe,1994,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-2090,America/Eirunepe,2008,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2091,America/Rio_Branco,1970,Brazil,-300,0,12,31,-1,0,07:00,3,1,-1,0,-6:00
-2092,America/Rio_Branco,1985,Brazil,-300,60,11,2,-1,0,-5:00,1,1,-1,0,06:00
-2093,America/Rio_Branco,1986,Brazil,-300,60,10,25,-1,0,-5:00,3,15,-1,0,-6:00
-2094,America/Rio_Branco,1987,Brazil,-300,60,10,25,-1,0,-5:00,2,14,-1,0,-6:00
-2095,America/Rio_Branco,1988,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-2096,America/Rio_Branco,2008,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2097,America/Santiago,1970,Chile,-240,60,10,9,0,0,4:00,3,29,-1,0,3:00
-2098,America/Santiago,1971,Chile,-240,60,10,9,0,0,4:00,3,14,-1,0,3:00
-2099,America/Santiago,1972,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
-2100,America/Santiago,1973,Chile,-240,60,9,30,-1,0,4:00,3,9,0,0,3:00
-2101,America/Santiago,1974,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
-2102,America/Santiago,1987,Chile,-240,60,10,9,0,0,4:00,4,12,-1,0,3:00
-2103,America/Santiago,1988,Chile,-240,60,10,1,0,0,4:00,3,9,0,0,3:00
-2104,America/Santiago,1989,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
-2105,America/Santiago,1990,Chile,-240,60,9,16,-1,0,4:00,3,18,-1,0,3:00
-2106,America/Santiago,1991,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
-2107,America/Santiago,1997,Chile,-240,60,10,9,0,0,4:00,3,30,-1,0,3:00
-2108,America/Santiago,1998,Chile,-240,60,9,27,-1,0,4:00,3,9,0,0,3:00
-2109,America/Santiago,1999,Chile,-240,60,10,9,0,0,4:00,4,4,-1,0,3:00
-2110,America/Santiago,2000,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
-2111,America/Santiago,2008,Chile,-240,60,10,9,0,0,4:00,3,30,-1,0,3:00
-2112,America/Santiago,2009,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
-2113,America/Santiago,2010,Chile,-240,60,10,9,0,0,4:00,4,1,0,0,3:00
-2114,America/Santiago,2011,Chile,-240,60,8,16,0,0,4:00,5,2,0,0,3:00
-2115,America/Santiago,2012,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
-2116,Pacific/Easter,1970,Chile,-420,60,10,9,0,0,4:00,3,29,-1,0,3:00
-2117,Pacific/Easter,1971,Chile,-420,60,10,9,0,0,4:00,3,14,-1,0,3:00
-2118,Pacific/Easter,1972,Chile,-420,60,10,9,0,0,4:00,3,9,0,0,3:00
-2119,Pacific/Easter,1973,Chile,-420,60,9,30,-1,0,4:00,3,9,0,0,3:00
-2120,Pacific/Easter,1974,Chile,-420,60,10,9,0,0,4:00,3,9,0,0,3:00
-2121,Pacific/Easter,1982,Chile,-360,60,10,9,0,0,4:00,3,9,0,0,3:00
-2122,Pacific/Easter,1987,Chile,-360,60,10,9,0,0,4:00,4,12,-1,0,3:00
-2123,Pacific/Easter,1988,Chile,-360,60,10,1,0,0,4:00,3,9,0,0,3:00
-2124,Pacific/Easter,1989,Chile,-360,60,10,9,0,0,4:00,3,9,0,0,3:00
-2125,Pacific/Easter,1990,Chile,-360,60,9,16,-1,0,4:00,3,18,-1,0,3:00
-2126,Pacific/Easter,1991,Chile,-360,60,10,9,0,0,4:00,3,9,0,0,3:00
-2127,Pacific/Easter,1997,Chile,-360,60,10,9,0,0,4:00,3,30,-1,0,3:00
-2128,Pacific/Easter,1998,Chile,-360,60,9,27,-1,0,4:00,3,9,0,0,3:00
-2129,Pacific/Easter,1999,Chile,-360,60,10,9,0,0,4:00,4,4,-1,0,3:00
-2130,Pacific/Easter,2000,Chile,-360,60,10,9,0,0,4:00,3,9,0,0,3:00
-2131,Pacific/Easter,2008,Chile,-360,60,10,9,0,0,4:00,3,30,-1,0,3:00
-2132,Pacific/Easter,2009,Chile,-360,60,10,9,0,0,4:00,3,9,0,0,3:00
-2133,Pacific/Easter,2010,Chile,-360,60,10,9,0,0,4:00,4,1,0,0,3:00
-2134,Pacific/Easter,2011,Chile,-360,60,8,16,0,0,4:00,5,2,0,0,3:00
-2135,Pacific/Easter,2012,Chile,-360,60,10,9,0,0,4:00,3,9,0,0,3:00
-2136,America/Bogota,1970,CO,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-2137,America/Bogota,1992,CO,-300,60,5,3,-1,0,-5:00,1,1,-1,0,06:00
-2138,America/Bogota,1993,CO,-300,0,12,31,-1,0,07:00,4,4,-1,0,-6:00
-2139,America/Curacao,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2140,America/Guayaquil,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-2141,Pacific/Galapagos,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
-2142,Pacific/Galapagos,1986,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
-2143,Atlantic/Stanley,1970,Falk,-240,0,12,31,-1,0,08:00,1,1,-1,0,-5:00
-2144,Atlantic/Stanley,1983,Falk,-180,60,9,-1,0,0,-3:00,1,1,-1,0,08:00
-2145,Atlantic/Stanley,1984,Falk,-180,60,9,16,-1,0,-3:00,4,-1,0,0,-4:00
-2146,Atlantic/Stanley,1985,Falk,-240,60,9,9,0,0,-4:00,4,-1,0,0,-5:00
-2147,Atlantic/Stanley,1986,Falk,-240,60,9,9,0,0,-4:00,4,16,0,0,-5:00
-2148,Atlantic/Stanley,2001,Falk,-240,60,9,1,0,0,-2:00,4,15,0,0,-3:00
-2149,Atlantic/Stanley,2011,Falk,-240,60,9,1,0,0,-2:00,1,1,-1,0,07:00
-2150,Atlantic/Stanley,2012,Falk,-240,60,9,1,0,0,-2:00,4,15,0,0,-3:00
-2151,America/Cayenne,1970,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-2152,America/Guyana,1970,,-225,0,0,0,0,0,00:00,0,0,0,0,00:00
-2153,America/Guyana,1975,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-2154,America/Guyana,1991,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2155,America/Asuncion,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2156,America/Asuncion,1972,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-2157,America/Asuncion,1974,Para,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2158,America/Asuncion,1975,Para,-240,60,10,1,-1,0,-4:00,3,1,-1,0,-5:00
-2159,America/Asuncion,1979,Para,-240,60,10,1,-1,0,-4:00,4,1,-1,0,-5:00
-2160,America/Asuncion,1989,Para,-240,60,10,22,-1,0,-4:00,4,1,-1,0,-5:00
-2161,America/Asuncion,1990,Para,-240,60,10,1,-1,0,-4:00,4,1,-1,0,-5:00
-2162,America/Asuncion,1991,Para,-240,60,10,6,-1,0,-4:00,4,1,-1,0,-5:00
-2163,America/Asuncion,1992,Para,-240,60,10,5,-1,0,-4:00,3,1,-1,0,-5:00
-2164,America/Asuncion,1993,Para,-240,60,10,1,-1,0,-4:00,3,31,-1,0,-5:00
-2165,America/Asuncion,1994,Para,-240,60,10,1,-1,0,-4:00,2,-1,0,0,-5:00
-2166,America/Asuncion,1996,Para,-240,60,10,1,0,0,-4:00,3,1,-1,0,-5:00
-2167,America/Asuncion,1997,Para,-240,60,10,1,0,0,-4:00,2,-1,0,0,-5:00
-2168,America/Asuncion,1998,Para,-240,60,10,1,0,0,-4:00,3,1,0,0,-5:00
-2169,America/Asuncion,2002,Para,-240,60,9,1,0,0,-4:00,4,1,0,0,-5:00
-2170,America/Asuncion,2004,Para,-240,60,10,15,0,0,-4:00,4,1,0,0,-5:00
-2171,America/Asuncion,2005,Para,-240,60,10,15,0,0,-4:00,3,8,0,0,-5:00
-2172,America/Asuncion,2010,Para,-240,60,10,1,0,0,-4:00,4,8,0,0,-5:00
-2173,America/Lima,1970,Peru,-300,0,12,31,-1,0,07:00,3,24,0,0,-6:00
-2174,America/Lima,1986,Peru,-300,60,1,1,-1,0,-5:00,4,1,-1,0,-6:00
-2175,America/Lima,1995,Peru,-300,0,1,1,-1,0,-5:00,4,1,-1,0,-6:00
-2176,Atlantic/South_Georgia,1970,,-120,0,0,0,0,0,00:00,0,0,0,0,00:00
-2177,America/Paramaribo,1970,,-210,0,0,0,0,0,00:00,0,0,0,0,00:00
-2178,America/Paramaribo,1975,,-210,0,0,0,0,0,00:00,0,0,0,0,00:00
-2179,America/Paramaribo,1984,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
-2180,America/Port_of_Spain,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2181,America/Montevideo,1970,Uruguay,-180,30,5,27,-1,0,-3:00,12,2,-1,0,-4:00
-2182,America/Montevideo,1972,Uruguay,-180,60,4,24,-1,0,-3:00,8,15,-1,0,-4:00
-2183,America/Montevideo,1974,Uruguay,-180,60,12,22,-1,0,-3:00,1,1,-1,0,08:00
-2184,America/Montevideo,1976,Uruguay,-180,0,12,31,-1,0,09:00,10,1,-1,0,-4:00
-2185,America/Montevideo,1977,Uruguay,-180,60,12,4,-1,0,-3:00,1,1,-1,0,08:00
-2186,America/Montevideo,1978,Uruguay,-180,0,12,31,-1,0,09:00,4,1,-1,0,-4:00
-2187,America/Montevideo,1979,Uruguay,-180,60,10,1,-1,0,-3:00,1,1,-1,0,08:00
-2188,America/Montevideo,1980,Uruguay,-180,0,12,31,-1,0,09:00,5,1,-1,0,-4:00
-2189,America/Montevideo,1987,Uruguay,-180,60,12,14,-1,0,-3:00,1,1,-1,0,08:00
-2190,America/Montevideo,1988,Uruguay,-180,60,12,11,-1,0,-3:00,3,14,-1,0,-4:00
-2191,America/Montevideo,1989,Uruguay,-180,60,10,29,-1,0,-3:00,3,12,-1,0,-4:00
-2192,America/Montevideo,1990,Uruguay,-180,60,10,21,0,0,-3:00,3,1,0,0,-4:00
-2193,America/Montevideo,1992,Uruguay,-180,60,10,18,-1,0,-3:00,3,1,0,0,-4:00
-2194,America/Montevideo,1993,Uruguay,-180,0,12,31,-1,0,09:00,2,28,-1,0,-4:00
-2195,America/Montevideo,2004,Uruguay,-180,60,9,19,-1,0,-3:00,1,1,-1,0,08:00
-2196,America/Montevideo,2005,Uruguay,-180,60,10,9,-1,0,-1:00,3,27,-1,0,-2:00
-2197,America/Montevideo,2006,Uruguay,-180,60,10,1,0,0,-1:00,3,12,-1,0,-2:00
-2198,America/Montevideo,2007,Uruguay,-180,60,10,1,0,0,-1:00,3,8,0,0,-2:00
-2199,America/Caracas,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
-2200,America/Caracas,2007,,-270,0,0,0,0,0,00:00,0,0,0,0,00:00
+105,Africa/Juba,1970,Sudan,120,60,5,1,-1,0,02:00,10,15,-1,0,01:00
+106,Africa/Juba,1971,Sudan,120,60,4,30,-1,0,02:00,10,15,-1,0,01:00
+107,Africa/Juba,1972,Sudan,120,60,4,-1,0,0,02:00,10,15,-1,0,01:00
+108,Africa/Juba,1985,Sudan,120,0,4,-1,0,0,02:00,10,15,-1,0,01:00
+109,Africa/Juba,2000,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+110,Africa/Mbabane,1970,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+111,Africa/Dar_es_Salaam,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+112,Africa/Lome,1970,,0,0,0,0,0,0,00:00,0,0,0,0,00:00
+113,Africa/Tunis,1970,Tunisia,60,60,4,1,1,0,03:00,9,16,-1,0,00:00
+114,Africa/Tunis,1977,Tunisia,60,60,4,30,-1,0,01:00,9,24,-1,0,01:00
+115,Africa/Tunis,1978,Tunisia,60,60,5,1,-1,0,01:00,10,1,-1,0,01:00
+116,Africa/Tunis,1988,Tunisia,60,60,6,1,-1,0,01:00,9,-1,0,0,01:00
+117,Africa/Tunis,1989,Tunisia,60,60,3,26,-1,0,01:00,9,-1,0,0,01:00
+118,Africa/Tunis,1990,Tunisia,60,60,5,1,-1,0,01:00,9,-1,0,0,01:00
+119,Africa/Tunis,2005,Tunisia,60,60,5,1,-1,0,01:00,9,30,-1,0,02:00
+120,Africa/Tunis,2006,Tunisia,60,60,3,-1,0,0,03:00,10,-1,0,0,03:00
+121,Africa/Tunis,2008,Tunisia,60,0,3,-1,0,0,03:00,10,-1,0,0,03:00
+122,Africa/Kampala,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+123,Africa/Lusaka,1970,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+124,Africa/Harare,1970,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+125,Antarctica/Casey,1970,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+126,Antarctica/Casey,2009,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
+127,Antarctica/Casey,2010,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+128,Antarctica/Davis,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+129,Antarctica/Davis,2009,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+130,Antarctica/Davis,2010,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+131,Antarctica/Mawson,1970,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+132,Antarctica/Mawson,2009,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+133,Antarctica/Macquarie,1970,ATAQ,600,60,10,-1,0,0,12:00,3,8,0,0,12:00
+134,Antarctica/Macquarie,1972,ATAQ,600,60,10,-1,0,0,12:00,2,-1,0,0,12:00
+135,Antarctica/Macquarie,1973,ATAQ,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+136,Antarctica/Macquarie,1982,ATAQ,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
+137,Antarctica/Macquarie,1984,ATAQ,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+138,Antarctica/Macquarie,1986,ATAQ,600,60,10,15,0,0,12:00,3,1,0,0,12:00
+139,Antarctica/Macquarie,1987,ATAQ,600,60,10,22,0,0,12:00,3,15,0,0,12:00
+140,Antarctica/Macquarie,1988,ATAQ,600,60,10,-1,0,0,12:00,3,15,0,0,12:00
+141,Antarctica/Macquarie,1991,ATAQ,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
+142,Antarctica/Macquarie,2000,ATAQ,600,60,8,-1,0,0,12:00,3,-1,0,0,12:00
+143,Antarctica/Macquarie,2001,ATAQ,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
+144,Antarctica/Macquarie,2006,ATAQ,600,60,10,1,0,0,12:00,4,1,0,0,12:00
+145,Antarctica/Macquarie,2007,ATAQ,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
+146,Antarctica/Macquarie,2008,ATAQ,600,60,10,1,0,0,12:00,4,1,0,0,12:00
+147,Antarctica/Macquarie,2010,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
+148,Indian/Kerguelen,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+149,Antarctica/DumontDUrville,1970,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
+150,Antarctica/Syowa,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+151,Antarctica/Vostok,1970,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+152,Antarctica/Rothera,1970,,0,0,0,0,0,0,00:00,0,0,0,0,00:00
+153,Antarctica/Rothera,1976,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+154,Antarctica/Palmer,1970,ArgAQ,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+155,Antarctica/Palmer,1974,ArgAQ,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+156,Antarctica/Palmer,1975,ArgAQ,-180,0,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+157,Antarctica/Palmer,1982,ChileAQ,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
+158,Antarctica/Palmer,1987,ChileAQ,-240,60,10,9,0,0,4:00,4,12,-1,0,3:00
+159,Antarctica/Palmer,1988,ChileAQ,-240,60,10,1,0,0,4:00,3,9,0,0,3:00
+160,Antarctica/Palmer,1989,ChileAQ,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
+161,Antarctica/Palmer,1990,ChileAQ,-240,60,9,16,-1,0,4:00,3,18,-1,0,3:00
+162,Antarctica/Palmer,1991,ChileAQ,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
+163,Antarctica/Palmer,1997,ChileAQ,-240,60,10,9,0,0,4:00,3,30,-1,0,3:00
+164,Antarctica/Palmer,1998,ChileAQ,-240,60,9,27,-1,0,4:00,3,9,0,0,3:00
+165,Antarctica/Palmer,1999,ChileAQ,-240,60,10,9,0,0,4:00,4,4,-1,0,3:00
+166,Antarctica/Palmer,2000,ChileAQ,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
+167,Antarctica/McMurdo,1970,NZAQ,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+168,Antarctica/McMurdo,1974,NZAQ,720,60,11,3,-1,0,14:00,1,1,-1,0,23:00
+169,Antarctica/McMurdo,1975,NZAQ,720,60,10,-1,0,0,14:00,2,23,-1,0,14:00
+170,Antarctica/McMurdo,1976,NZAQ,720,60,10,-1,0,0,14:00,3,1,0,0,14:00
+171,Antarctica/McMurdo,1989,NZAQ,720,60,10,8,-1,0,14:00,3,1,0,0,14:00
+172,Antarctica/McMurdo,1990,NZAQ,720,60,10,1,0,0,14:00,3,15,0,0,14:00
+173,Antarctica/McMurdo,2007,NZAQ,720,60,9,-1,0,0,14:00,3,15,0,0,14:00
+174,Antarctica/McMurdo,2008,NZAQ,720,60,9,-1,0,0,14:00,4,1,0,0,14:00
+175,Asia/Kabul,1970,,270,0,0,0,0,0,00:00,0,0,0,0,00:00
+176,Asia/Yerevan,1970,RussiaAsia,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+177,Asia/Yerevan,1981,RussiaAsia,240,60,4,1,-1,0,04:00,10,1,-1,0,03:00
+178,Asia/Yerevan,1984,RussiaAsia,240,60,4,1,-1,0,04:00,9,-1,0,0,06:00
+179,Asia/Yerevan,1985,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
+180,Asia/Yerevan,1991,RussiaAsia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+181,Asia/Yerevan,1992,RussiaAsia,180,60,3,-1,6,0,26:00,9,-1,6,0,25:00
+182,Asia/Yerevan,1993,RussiaAsia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+183,Asia/Yerevan,1995,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+184,Asia/Yerevan,1997,RussiaAsia,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+185,Asia/Baku,1970,RussiaAsia,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+186,Asia/Baku,1981,RussiaAsia,240,60,4,1,-1,0,04:00,10,1,-1,0,03:00
+187,Asia/Baku,1984,RussiaAsia,240,60,4,1,-1,0,04:00,9,-1,0,0,06:00
+188,Asia/Baku,1985,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
+189,Asia/Baku,1991,RussiaAsia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+190,Asia/Baku,1992,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+191,Asia/Baku,1996,EUAsia,240,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+192,Asia/Baku,1997,Azer,240,60,3,-1,0,0,08:00,10,-1,0,0,08:00
+193,Asia/Bahrain,1970,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+194,Asia/Bahrain,1972,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+195,Asia/Dhaka,1970,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+196,Asia/Dhaka,1971,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+197,Asia/Dhaka,2009,Dhaka,360,60,6,19,-1,0,29:00,12,31,-1,0,28:59
+198,Asia/Dhaka,2010,Dhaka,360,0,6,19,-1,0,29:00,12,31,-1,0,28:59
+199,Asia/Thimphu,1970,,330,0,0,0,0,0,00:00,0,0,0,0,00:00
+200,Asia/Thimphu,1987,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+201,Indian/Chagos,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+202,Indian/Chagos,1996,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+203,Asia/Brunei,1970,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+204,Asia/Rangoon,1970,,390,0,0,0,0,0,00:00,0,0,0,0,00:00
+205,Asia/Phnom_Penh,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+206,Asia/Harbin,1970,,510,0,0,0,0,0,00:00,0,0,0,0,00:00
+207,Asia/Harbin,1980,PRC,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+208,Asia/Harbin,1986,PRC,480,60,5,4,-1,0,08:00,9,11,0,0,07:00
+209,Asia/Harbin,1987,PRC,480,60,4,10,0,0,08:00,9,11,0,0,07:00
+210,Asia/Harbin,1991,PRC,480,0,4,10,0,0,08:00,9,11,0,0,07:00
+211,Asia/Shanghai,1970,PRC,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+212,Asia/Shanghai,1986,PRC,480,60,5,4,-1,0,08:00,9,11,0,0,07:00
+213,Asia/Shanghai,1987,PRC,480,60,4,10,0,0,08:00,9,11,0,0,07:00
+214,Asia/Shanghai,1991,PRC,480,0,4,10,0,0,08:00,9,11,0,0,07:00
+215,Asia/Chongqing,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+216,Asia/Chongqing,1980,PRC,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+217,Asia/Chongqing,1986,PRC,480,60,5,4,-1,0,08:00,9,11,0,0,07:00
+218,Asia/Chongqing,1987,PRC,480,60,4,10,0,0,08:00,9,11,0,0,07:00
+219,Asia/Chongqing,1991,PRC,480,0,4,10,0,0,08:00,9,11,0,0,07:00
+220,Asia/Urumqi,1970,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+221,Asia/Urumqi,1980,PRC,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+222,Asia/Urumqi,1986,PRC,480,60,5,4,-1,0,08:00,9,11,0,0,07:00
+223,Asia/Urumqi,1987,PRC,480,60,4,10,0,0,08:00,9,11,0,0,07:00
+224,Asia/Urumqi,1991,PRC,480,0,4,10,0,0,08:00,9,11,0,0,07:00
+225,Asia/Kashgar,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+226,Asia/Kashgar,1980,PRC,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+227,Asia/Kashgar,1986,PRC,480,60,5,4,-1,0,08:00,9,11,0,0,07:00
+228,Asia/Kashgar,1987,PRC,480,60,4,10,0,0,08:00,9,11,0,0,07:00
+229,Asia/Kashgar,1991,PRC,480,0,4,10,0,0,08:00,9,11,0,0,07:00
+230,Asia/Hong_Kong,1970,HK,480,60,4,16,0,0,11:30,10,16,0,0,10:30
+231,Asia/Hong_Kong,1973,HK,480,60,12,30,-1,0,11:30,10,16,0,0,10:30
+232,Asia/Hong_Kong,1974,HK,480,60,4,16,0,0,11:30,10,16,0,0,10:30
+233,Asia/Hong_Kong,1979,HK,480,60,5,8,0,0,11:30,10,16,0,0,10:30
+234,Asia/Hong_Kong,1980,HK,480,0,5,8,0,0,11:30,10,16,0,0,10:30
+235,Asia/Taipei,1970,Taiwan,480,60,6,1,-1,0,08:00,10,1,-1,0,07:00
+236,Asia/Taipei,1974,Taiwan,480,60,4,1,-1,0,08:00,10,1,-1,0,07:00
+237,Asia/Taipei,1979,Taiwan,480,60,6,30,-1,0,08:00,9,30,-1,0,07:00
+238,Asia/Taipei,1980,Taiwan,480,0,6,30,-1,0,08:00,9,30,-1,0,07:00
+239,Asia/Macau,1970,Macau,480,60,4,16,0,0,11:30,10,16,0,0,10:30
+240,Asia/Macau,1972,Macau,480,60,4,15,0,0,08:00,10,15,0,0,07:00
+241,Asia/Macau,1974,Macau,480,60,4,15,0,0,08:00,10,15,0,0,10:30
+242,Asia/Macau,1975,Macau,480,60,4,15,0,0,11:30,10,15,0,0,10:30
+243,Asia/Macau,1978,Macau,480,60,4,15,0,0,08:00,10,15,0,0,07:00
+244,Asia/Macau,1980,Macau,480,0,4,15,0,0,08:00,10,15,0,0,07:00
+245,Asia/Macau,1999,PRC,480,0,4,15,0,0,08:00,10,15,0,0,07:00
+246,Asia/Nicosia,1970,Cyprus,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+247,Asia/Nicosia,1975,Cyprus,120,60,4,13,-1,0,02:00,10,12,-1,0,01:00
+248,Asia/Nicosia,1976,Cyprus,120,60,5,15,-1,0,02:00,10,11,-1,0,01:00
+249,Asia/Nicosia,1977,Cyprus,120,60,4,1,0,0,02:00,9,25,-1,0,01:00
+250,Asia/Nicosia,1978,Cyprus,120,60,4,1,0,0,02:00,10,2,-1,0,01:00
+251,Asia/Nicosia,1979,Cyprus,120,60,4,1,0,0,02:00,9,-1,0,0,01:00
+252,Asia/Nicosia,1981,Cyprus,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
+253,Asia/Nicosia,1998,EUAsia,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
+254,Asia/Tbilisi,1970,RussiaAsia,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+255,Asia/Tbilisi,1981,RussiaAsia,240,60,4,1,-1,0,04:00,10,1,-1,0,03:00
+256,Asia/Tbilisi,1984,RussiaAsia,240,60,4,1,-1,0,04:00,9,-1,0,0,06:00
+257,Asia/Tbilisi,1985,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
+258,Asia/Tbilisi,1991,RussiaAsia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+259,Asia/Tbilisi,1992,E-EurAsia,180,60,3,-1,0,0,03:00,9,-1,0,0,02:00
+260,Asia/Tbilisi,1994,E-EurAsia,240,60,3,-1,0,0,04:00,9,-1,0,0,03:00
+261,Asia/Tbilisi,1995,E-EurAsia,240,0,12,31,-1,0,16:00,9,-1,0,0,03:00
+262,Asia/Tbilisi,1996,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+263,Asia/Tbilisi,1997,E-EurAsia,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+264,Asia/Tbilisi,2004,RussiaAsia,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+265,Asia/Tbilisi,2005,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+266,Asia/Dili,1970,,540,0,0,0,0,0,00:00,0,0,0,0,00:00
+267,Asia/Dili,1976,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+268,Asia/Dili,2000,,540,0,0,0,0,0,00:00,0,0,0,0,00:00
+269,Asia/Kolkata,1970,,330,0,0,0,0,0,00:00,0,0,0,0,00:00
+270,Asia/Jakarta,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+271,Asia/Pontianak,1970,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+272,Asia/Pontianak,1988,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+273,Asia/Makassar,1970,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+274,Asia/Jayapura,1970,,540,0,0,0,0,0,00:00,0,0,0,0,00:00
+275,Asia/Tehran,1970,,210,0,0,0,0,0,00:00,0,0,0,0,00:00
+276,Asia/Tehran,1977,Iran,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+277,Asia/Tehran,1978,Iran,240,60,3,21,-1,0,04:00,10,21,-1,0,03:00
+278,Asia/Tehran,1979,Iran,210,60,3,21,-1,0,03:30,9,19,-1,0,02:30
+279,Asia/Tehran,1980,Iran,210,60,3,21,-1,0,03:30,9,23,-1,0,02:30
+280,Asia/Tehran,1991,Iran,210,60,5,3,-1,0,03:30,9,22,-1,0,02:30
+281,Asia/Tehran,1992,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
+282,Asia/Tehran,1996,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
+283,Asia/Tehran,1997,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
+284,Asia/Tehran,2000,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
+285,Asia/Tehran,2001,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
+286,Asia/Tehran,2004,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
+287,Asia/Tehran,2005,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
+288,Asia/Tehran,2008,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
+289,Asia/Tehran,2009,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
+290,Asia/Tehran,2012,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
+291,Asia/Tehran,2013,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
+292,Asia/Tehran,2016,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
+293,Asia/Tehran,2017,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
+294,Asia/Tehran,2020,Iran,210,60,3,21,-1,0,03:30,9,21,-1,0,02:30
+295,Asia/Tehran,2021,Iran,210,60,3,22,-1,0,03:30,9,22,-1,0,02:30
+296,Asia/Baghdad,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+297,Asia/Baghdad,1982,Iraq,180,60,5,1,-1,0,03:00,10,1,-1,0,02:00
+298,Asia/Baghdad,1983,Iraq,180,60,3,31,-1,0,03:00,10,1,-1,0,02:00
+299,Asia/Baghdad,1984,Iraq,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
+300,Asia/Baghdad,1985,Iraq,180,60,4,1,-1,0,03:00,9,-1,0,0,04:00
+301,Asia/Baghdad,1986,Iraq,180,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+302,Asia/Baghdad,1991,Iraq,180,60,4,1,-1,0,06:00,10,1,-1,0,06:00
+303,Asia/Baghdad,2007,Iraq,180,0,4,1,-1,0,06:00,10,1,-1,0,06:00
+304,Asia/Jerusalem,1970,Zion,120,60,4,29,-1,0,04:00,9,22,-1,0,01:00
+305,Asia/Jerusalem,1974,Zion,120,60,7,7,-1,0,02:00,10,13,-1,0,01:00
+306,Asia/Jerusalem,1975,Zion,120,60,4,20,-1,0,02:00,8,31,-1,0,01:00
+307,Asia/Jerusalem,1985,Zion,120,60,4,14,-1,0,02:00,9,15,-1,0,01:00
+308,Asia/Jerusalem,1986,Zion,120,60,5,18,-1,0,02:00,9,7,-1,0,01:00
+309,Asia/Jerusalem,1987,Zion,120,60,4,15,-1,0,02:00,9,13,-1,0,01:00
+310,Asia/Jerusalem,1988,Zion,120,60,4,9,-1,0,02:00,9,3,-1,0,01:00
+311,Asia/Jerusalem,1989,Zion,120,60,4,30,-1,0,02:00,9,3,-1,0,01:00
+312,Asia/Jerusalem,1990,Zion,120,60,3,25,-1,0,02:00,8,26,-1,0,01:00
+313,Asia/Jerusalem,1991,Zion,120,60,3,24,-1,0,02:00,9,1,-1,0,01:00
+314,Asia/Jerusalem,1992,Zion,120,60,3,29,-1,0,02:00,9,6,-1,0,01:00
+315,Asia/Jerusalem,1993,Zion,120,60,4,2,-1,0,02:00,9,5,-1,0,01:00
+316,Asia/Jerusalem,1994,Zion,120,60,4,1,-1,0,02:00,8,28,-1,0,01:00
+317,Asia/Jerusalem,1995,Zion,120,60,3,31,-1,0,02:00,9,3,-1,0,01:00
+318,Asia/Jerusalem,1996,Zion,120,60,3,15,-1,0,02:00,9,16,-1,0,01:00
+319,Asia/Jerusalem,1997,Zion,120,60,3,21,-1,0,02:00,9,14,-1,0,01:00
+320,Asia/Jerusalem,1998,Zion,120,60,3,20,-1,0,02:00,9,6,-1,0,01:00
+321,Asia/Jerusalem,1999,Zion,120,60,4,2,-1,0,04:00,9,3,-1,0,03:00
+322,Asia/Jerusalem,2000,Zion,120,60,4,14,-1,0,04:00,10,6,-1,0,02:00
+323,Asia/Jerusalem,2001,Zion,120,60,4,9,-1,0,03:00,9,24,-1,0,02:00
+324,Asia/Jerusalem,2002,Zion,120,60,3,29,-1,0,03:00,10,7,-1,0,02:00
+325,Asia/Jerusalem,2003,Zion,120,60,3,28,-1,0,03:00,10,3,-1,0,02:00
+326,Asia/Jerusalem,2004,Zion,120,60,4,7,-1,0,03:00,9,22,-1,0,02:00
+327,Asia/Jerusalem,2005,Zion,120,60,4,1,-1,0,04:00,10,9,-1,0,03:00
+328,Asia/Jerusalem,2006,Zion,120,60,3,26,5,0,04:00,10,1,-1,0,03:00
+329,Asia/Jerusalem,2007,Zion,120,60,3,26,5,0,04:00,9,16,-1,0,03:00
+330,Asia/Jerusalem,2008,Zion,120,60,3,26,5,0,04:00,10,5,-1,0,03:00
+331,Asia/Jerusalem,2009,Zion,120,60,3,26,5,0,04:00,9,27,-1,0,03:00
+332,Asia/Jerusalem,2010,Zion,120,60,3,26,5,0,04:00,9,12,-1,0,03:00
+333,Asia/Jerusalem,2011,Zion,120,60,4,1,-1,0,04:00,10,2,-1,0,03:00
+334,Asia/Jerusalem,2012,Zion,120,60,3,26,5,0,04:00,9,23,-1,0,03:00
+335,Asia/Jerusalem,2013,Zion,120,60,3,26,5,0,04:00,9,8,-1,0,03:00
+336,Asia/Jerusalem,2014,Zion,120,60,3,26,5,0,04:00,9,28,-1,0,03:00
+337,Asia/Jerusalem,2015,Zion,120,60,3,26,5,0,04:00,9,20,-1,0,03:00
+338,Asia/Jerusalem,2016,Zion,120,60,4,1,-1,0,04:00,10,9,-1,0,03:00
+339,Asia/Jerusalem,2017,Zion,120,60,3,26,5,0,04:00,9,24,-1,0,03:00
+340,Asia/Jerusalem,2018,Zion,120,60,3,26,5,0,04:00,9,16,-1,0,03:00
+341,Asia/Jerusalem,2019,Zion,120,60,3,26,5,0,04:00,10,6,-1,0,03:00
+342,Asia/Jerusalem,2020,Zion,120,60,3,26,5,0,04:00,9,27,-1,0,03:00
+343,Asia/Jerusalem,2021,Zion,120,60,3,26,5,0,04:00,9,12,-1,0,03:00
+344,Asia/Tokyo,1970,Japan,540,0,5,1,0,0,11:00,9,8,6,0,10:00
+345,Asia/Amman,1970,Jordan,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+346,Asia/Amman,1973,Jordan,120,60,6,6,-1,0,02:00,10,1,-1,0,01:00
+347,Asia/Amman,1974,Jordan,120,60,5,1,-1,0,02:00,10,1,-1,0,01:00
+348,Asia/Amman,1976,Jordan,120,60,5,1,-1,0,02:00,11,1,-1,0,01:00
+349,Asia/Amman,1977,Jordan,120,60,5,1,-1,0,02:00,10,1,-1,0,01:00
+350,Asia/Amman,1978,Jordan,120,60,4,30,-1,0,02:00,9,30,-1,0,01:00
+351,Asia/Amman,1985,Jordan,120,60,4,1,-1,0,02:00,10,1,-1,0,01:00
+352,Asia/Amman,1986,Jordan,120,60,4,1,5,0,02:00,10,1,5,0,01:00
+353,Asia/Amman,1989,Jordan,120,60,5,8,-1,0,02:00,10,1,5,0,01:00
+354,Asia/Amman,1990,Jordan,120,60,4,27,-1,0,02:00,10,1,5,0,01:00
+355,Asia/Amman,1991,Jordan,120,60,4,17,-1,0,02:00,9,27,-1,0,01:00
+356,Asia/Amman,1992,Jordan,120,60,4,10,-1,0,02:00,10,1,5,0,01:00
+357,Asia/Amman,1993,Jordan,120,60,4,1,5,0,02:00,10,1,5,0,01:00
+358,Asia/Amman,1994,Jordan,120,60,4,1,5,0,02:00,9,15,5,0,01:00
+359,Asia/Amman,1995,Jordan,120,60,4,1,5,0,02:00,9,15,5,0,02:00
+360,Asia/Amman,1999,Jordan,120,60,7,1,-1,0,02:00,9,-1,5,0,02:00
+361,Asia/Amman,2000,Jordan,120,60,3,-1,4,0,02:00,9,-1,5,0,02:00
+362,Asia/Amman,2002,Jordan,120,60,3,-1,4,0,26:00,9,-1,5,0,02:00
+363,Asia/Amman,2003,Jordan,120,60,3,-1,4,0,26:00,10,24,-1,0,02:00
+364,Asia/Amman,2004,Jordan,120,60,3,-1,4,0,26:00,10,15,-1,0,02:00
+365,Asia/Amman,2005,Jordan,120,60,3,-1,4,0,26:00,9,-1,5,0,02:00
+366,Asia/Amman,2006,Jordan,120,60,3,-1,4,0,26:00,10,-1,5,0,02:00
+367,Asia/Almaty,1970,RussiaAsia,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+368,Asia/Almaty,1981,RussiaAsia,360,60,4,1,-1,0,06:00,10,1,-1,0,05:00
+369,Asia/Almaty,1984,RussiaAsia,360,60,4,1,-1,0,06:00,9,-1,0,0,08:00
+370,Asia/Almaty,1985,RussiaAsia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
+371,Asia/Almaty,1991,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+372,Asia/Almaty,1992,RussiaAsia,360,60,3,-1,6,0,29:00,9,-1,6,0,28:00
+373,Asia/Almaty,1993,RussiaAsia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
+374,Asia/Almaty,1996,RussiaAsia,360,60,3,-1,0,0,08:00,10,-1,0,0,08:00
+375,Asia/Almaty,2005,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+376,Asia/Qyzylorda,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+377,Asia/Qyzylorda,1981,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+378,Asia/Qyzylorda,1982,RussiaAsia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
+379,Asia/Qyzylorda,1984,RussiaAsia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
+380,Asia/Qyzylorda,1985,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+381,Asia/Qyzylorda,1991,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+382,Asia/Qyzylorda,1992,RussiaAsia,360,60,3,-1,6,0,29:00,9,-1,6,0,28:00
+383,Asia/Qyzylorda,1993,RussiaAsia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
+384,Asia/Qyzylorda,1996,RussiaAsia,360,60,3,-1,0,0,08:00,10,-1,0,0,08:00
+385,Asia/Qyzylorda,2005,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+386,Asia/Aqtobe,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+387,Asia/Aqtobe,1981,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+388,Asia/Aqtobe,1982,RussiaAsia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
+389,Asia/Aqtobe,1984,RussiaAsia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
+390,Asia/Aqtobe,1985,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+391,Asia/Aqtobe,1992,RussiaAsia,300,60,3,-1,6,0,28:00,9,-1,6,0,27:00
+392,Asia/Aqtobe,1993,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+393,Asia/Aqtobe,1996,RussiaAsia,300,60,3,-1,0,0,07:00,10,-1,0,0,07:00
+394,Asia/Aqtobe,2005,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+395,Asia/Aqtau,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+396,Asia/Aqtau,1981,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+397,Asia/Aqtau,1982,RussiaAsia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
+398,Asia/Aqtau,1984,RussiaAsia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
+399,Asia/Aqtau,1985,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+400,Asia/Aqtau,1992,RussiaAsia,300,60,3,-1,6,0,28:00,9,-1,6,0,27:00
+401,Asia/Aqtau,1993,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+402,Asia/Aqtau,1995,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
+403,Asia/Aqtau,1996,RussiaAsia,240,60,3,-1,0,0,06:00,10,-1,0,0,06:00
+404,Asia/Aqtau,2005,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+405,Asia/Oral,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+406,Asia/Oral,1981,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+407,Asia/Oral,1982,RussiaAsia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
+408,Asia/Oral,1984,RussiaAsia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
+409,Asia/Oral,1985,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+410,Asia/Oral,1989,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
+411,Asia/Oral,1992,RussiaAsia,240,60,3,-1,6,0,27:00,9,-1,6,0,26:00
+412,Asia/Oral,1993,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
+413,Asia/Oral,1996,RussiaAsia,240,60,3,-1,0,0,06:00,10,-1,0,0,06:00
+414,Asia/Oral,2005,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+415,Asia/Bishkek,1970,RussiaAsia,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+416,Asia/Bishkek,1981,RussiaAsia,360,60,4,1,-1,0,06:00,10,1,-1,0,05:00
+417,Asia/Bishkek,1984,RussiaAsia,360,60,4,1,-1,0,06:00,9,-1,0,0,08:00
+418,Asia/Bishkek,1985,RussiaAsia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
+419,Asia/Bishkek,1991,Kyrgyz,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+420,Asia/Bishkek,1992,Kyrgyz,300,60,4,7,0,0,05:00,9,-1,0,0,04:00
+421,Asia/Bishkek,1997,Kyrgyz,300,60,3,-1,0,0,07:30,10,-1,0,0,06:30
+422,Asia/Bishkek,2005,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+423,Asia/Seoul,1970,ROK,540,60,5,15,-1,0,09:00,9,13,-1,0,08:00
+424,Asia/Seoul,1987,ROK,540,60,5,8,0,0,09:00,10,8,0,0,08:00
+425,Asia/Seoul,1988,ROK,540,0,5,8,0,0,09:00,10,8,0,0,08:00
+426,Asia/Pyongyang,1970,,540,0,0,0,0,0,00:00,0,0,0,0,00:00
+427,Asia/Kuwait,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+428,Asia/Vientiane,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+429,Asia/Beirut,1970,Lebanon,120,60,5,1,-1,0,02:00,10,1,-1,0,01:00
+430,Asia/Beirut,1972,Lebanon,120,60,6,22,-1,0,02:00,10,1,-1,0,01:00
+431,Asia/Beirut,1973,Lebanon,120,60,5,1,-1,0,02:00,10,1,-1,0,01:00
+432,Asia/Beirut,1978,Lebanon,120,60,4,30,-1,0,02:00,9,30,-1,0,01:00
+433,Asia/Beirut,1984,Lebanon,120,60,5,1,-1,0,02:00,10,16,-1,0,01:00
+434,Asia/Beirut,1988,Lebanon,120,60,6,1,-1,0,02:00,10,16,-1,0,01:00
+435,Asia/Beirut,1989,Lebanon,120,60,5,10,-1,0,02:00,10,16,-1,0,01:00
+436,Asia/Beirut,1990,Lebanon,120,60,5,1,-1,0,02:00,10,16,-1,0,01:00
+437,Asia/Beirut,1992,Lebanon,120,60,5,1,-1,0,02:00,10,4,-1,0,01:00
+438,Asia/Beirut,1993,Lebanon,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
+439,Asia/Beirut,1999,Lebanon,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
+440,Asia/Kuala_Lumpur,1970,,450,0,0,0,0,0,00:00,0,0,0,0,00:00
+441,Asia/Kuala_Lumpur,1982,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+442,Asia/Kuching,1970,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+443,Asia/Kuching,1982,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+444,Indian/Maldives,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+445,Asia/Hovd,1970,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+446,Asia/Hovd,1978,Mongol,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+447,Asia/Hovd,1983,Mongol,420,60,4,1,-1,0,07:00,10,1,-1,0,06:00
+448,Asia/Hovd,1984,Mongol,420,60,4,1,-1,0,07:00,9,-1,0,0,06:00
+449,Asia/Hovd,1985,Mongol,420,60,3,-1,0,0,07:00,9,-1,0,0,06:00
+450,Asia/Hovd,2001,Mongol,420,60,4,-1,6,0,09:00,9,-1,6,0,08:00
+451,Asia/Hovd,2002,Mongol,420,60,3,-1,6,0,09:00,9,-1,6,0,08:00
+452,Asia/Hovd,2006,Mongol,420,0,3,-1,6,0,09:00,9,-1,6,0,08:00
+453,Asia/Ulaanbaatar,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+454,Asia/Ulaanbaatar,1978,Mongol,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+455,Asia/Ulaanbaatar,1983,Mongol,480,60,4,1,-1,0,08:00,10,1,-1,0,07:00
+456,Asia/Ulaanbaatar,1984,Mongol,480,60,4,1,-1,0,08:00,9,-1,0,0,07:00
+457,Asia/Ulaanbaatar,1985,Mongol,480,60,3,-1,0,0,08:00,9,-1,0,0,07:00
+458,Asia/Ulaanbaatar,2001,Mongol,480,60,4,-1,6,0,10:00,9,-1,6,0,09:00
+459,Asia/Ulaanbaatar,2002,Mongol,480,60,3,-1,6,0,10:00,9,-1,6,0,09:00
+460,Asia/Ulaanbaatar,2006,Mongol,480,0,3,-1,6,0,10:00,9,-1,6,0,09:00
+461,Asia/Choibalsan,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+462,Asia/Choibalsan,1978,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+463,Asia/Choibalsan,1983,Mongol,540,60,4,1,-1,0,09:00,10,1,-1,0,08:00
+464,Asia/Choibalsan,1984,Mongol,540,60,4,1,-1,0,09:00,9,-1,0,0,08:00
+465,Asia/Choibalsan,1985,Mongol,540,60,3,-1,0,0,09:00,9,-1,0,0,08:00
+466,Asia/Choibalsan,2001,Mongol,540,60,4,-1,6,0,11:00,9,-1,6,0,10:00
+467,Asia/Choibalsan,2002,Mongol,540,60,3,-1,6,0,11:00,9,-1,6,0,10:00
+468,Asia/Choibalsan,2006,Mongol,540,0,3,-1,6,0,11:00,9,-1,6,0,10:00
+469,Asia/Choibalsan,2008,Mongol,480,0,3,-1,6,0,10:00,9,-1,6,0,09:00
+470,Asia/Kathmandu,1970,,330,0,0,0,0,0,00:00,0,0,0,0,00:00
+471,Asia/Kathmandu,1986,,345,0,0,0,0,0,00:00,0,0,0,0,00:00
+472,Asia/Muscat,1970,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+473,Asia/Karachi,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+474,Asia/Karachi,1971,Pakistan,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+475,Asia/Karachi,2002,Pakistan,300,60,4,2,0,0,05:01,10,2,0,0,04:01
+476,Asia/Karachi,2008,Pakistan,300,60,6,1,-1,0,05:00,11,1,-1,0,04:00
+477,Asia/Karachi,2009,Pakistan,300,60,4,15,-1,0,05:00,11,1,-1,0,04:00
+478,Asia/Karachi,2010,Pakistan,300,0,4,15,-1,0,05:00,11,1,-1,0,04:00
+479,Asia/Gaza,1970,Zion,120,60,4,29,-1,0,04:00,9,22,-1,0,01:00
+480,Asia/Gaza,1974,Zion,120,60,7,7,-1,0,02:00,10,13,-1,0,01:00
+481,Asia/Gaza,1975,Zion,120,60,4,20,-1,0,02:00,8,31,-1,0,01:00
+482,Asia/Gaza,1985,Zion,120,60,4,14,-1,0,02:00,9,15,-1,0,01:00
+483,Asia/Gaza,1986,Zion,120,60,5,18,-1,0,02:00,9,7,-1,0,01:00
+484,Asia/Gaza,1987,Zion,120,60,4,15,-1,0,02:00,9,13,-1,0,01:00
+485,Asia/Gaza,1988,Zion,120,60,4,9,-1,0,02:00,9,3,-1,0,01:00
+486,Asia/Gaza,1989,Zion,120,60,4,30,-1,0,02:00,9,3,-1,0,01:00
+487,Asia/Gaza,1990,Zion,120,60,3,25,-1,0,02:00,8,26,-1,0,01:00
+488,Asia/Gaza,1991,Zion,120,60,3,24,-1,0,02:00,9,1,-1,0,01:00
+489,Asia/Gaza,1992,Zion,120,60,3,29,-1,0,02:00,9,6,-1,0,01:00
+490,Asia/Gaza,1993,Zion,120,60,4,2,-1,0,02:00,9,5,-1,0,01:00
+491,Asia/Gaza,1994,Zion,120,60,4,1,-1,0,02:00,8,28,-1,0,01:00
+492,Asia/Gaza,1995,Zion,120,60,3,31,-1,0,02:00,9,3,-1,0,01:00
+493,Asia/Gaza,1996,Jordan,120,60,4,1,5,0,02:00,9,15,5,0,02:00
+494,Asia/Gaza,1999,Palestine,120,60,4,15,5,0,02:00,10,15,5,0,01:00
+495,Asia/Gaza,2004,Palestine,120,60,4,15,5,0,02:00,10,1,-1,0,02:00
+496,Asia/Gaza,2005,Palestine,120,60,4,15,5,0,02:00,10,4,-1,0,03:00
+497,Asia/Gaza,2006,Palestine,120,60,4,1,-1,0,02:00,9,22,-1,0,01:00
+498,Asia/Gaza,2007,Palestine,120,60,4,1,-1,0,02:00,9,8,4,0,03:00
+499,Asia/Gaza,2008,Palestine,120,60,4,1,-1,0,02:00,8,-1,5,0,01:00
+500,Asia/Gaza,2009,Palestine,120,60,3,-1,5,0,02:00,9,1,5,0,03:00
+501,Asia/Gaza,2010,Palestine,120,60,3,-1,6,0,02:01,8,11,-1,0,01:00
+502,Asia/Gaza,2011,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+503,Asia/Hebron,1970,Zion,120,60,4,29,-1,0,04:00,9,22,-1,0,01:00
+504,Asia/Hebron,1974,Zion,120,60,7,7,-1,0,02:00,10,13,-1,0,01:00
+505,Asia/Hebron,1975,Zion,120,60,4,20,-1,0,02:00,8,31,-1,0,01:00
+506,Asia/Hebron,1985,Zion,120,60,4,14,-1,0,02:00,9,15,-1,0,01:00
+507,Asia/Hebron,1986,Zion,120,60,5,18,-1,0,02:00,9,7,-1,0,01:00
+508,Asia/Hebron,1987,Zion,120,60,4,15,-1,0,02:00,9,13,-1,0,01:00
+509,Asia/Hebron,1988,Zion,120,60,4,9,-1,0,02:00,9,3,-1,0,01:00
+510,Asia/Hebron,1989,Zion,120,60,4,30,-1,0,02:00,9,3,-1,0,01:00
+511,Asia/Hebron,1990,Zion,120,60,3,25,-1,0,02:00,8,26,-1,0,01:00
+512,Asia/Hebron,1991,Zion,120,60,3,24,-1,0,02:00,9,1,-1,0,01:00
+513,Asia/Hebron,1992,Zion,120,60,3,29,-1,0,02:00,9,6,-1,0,01:00
+514,Asia/Hebron,1993,Zion,120,60,4,2,-1,0,02:00,9,5,-1,0,01:00
+515,Asia/Hebron,1994,Zion,120,60,4,1,-1,0,02:00,8,28,-1,0,01:00
+516,Asia/Hebron,1995,Zion,120,60,3,31,-1,0,02:00,9,3,-1,0,01:00
+517,Asia/Hebron,1996,Jordan,120,60,4,1,5,0,02:00,9,15,5,0,02:00
+518,Asia/Hebron,1999,Palestine,120,60,4,15,5,0,02:00,10,15,5,0,01:00
+519,Asia/Hebron,2004,Palestine,120,60,4,15,5,0,02:00,10,1,-1,0,02:00
+520,Asia/Hebron,2005,Palestine,120,60,4,15,5,0,02:00,10,4,-1,0,03:00
+521,Asia/Hebron,2006,Palestine,120,60,4,1,-1,0,02:00,9,22,-1,0,01:00
+522,Asia/Hebron,2007,Palestine,120,60,4,1,-1,0,02:00,9,8,4,0,03:00
+523,Asia/Hebron,2008,Palestine,120,60,4,1,-1,0,02:00,8,-1,5,0,01:00
+524,Asia/Hebron,2009,Palestine,120,60,3,-1,5,0,02:00,9,1,5,0,03:00
+525,Asia/Hebron,2010,Palestine,120,60,3,-1,6,0,02:01,8,11,-1,0,01:00
+526,Asia/Hebron,2011,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+527,Asia/Manila,1970,Phil,480,60,4,12,-1,0,08:00,7,1,-1,0,07:00
+528,Asia/Manila,1978,Phil,480,60,3,22,-1,0,08:00,9,21,-1,0,07:00
+529,Asia/Manila,1979,Phil,480,0,3,22,-1,0,08:00,9,21,-1,0,07:00
+530,Asia/Qatar,1970,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+531,Asia/Qatar,1972,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+532,Asia/Riyadh,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+533,Asia/Singapore,1970,,450,0,0,0,0,0,00:00,0,0,0,0,00:00
+534,Asia/Singapore,1982,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+535,Asia/Colombo,1970,,330,0,0,0,0,0,00:00,0,0,0,0,00:00
+536,Asia/Colombo,1996,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+537,Asia/Colombo,2006,,330,0,0,0,0,0,00:00,0,0,0,0,00:00
+538,Asia/Damascus,1970,Syria,120,60,5,1,-1,0,04:00,10,1,-1,0,03:00
+539,Asia/Damascus,1977,Syria,120,60,5,1,-1,0,04:00,9,1,-1,0,03:00
+540,Asia/Damascus,1983,Syria,120,60,4,9,-1,0,04:00,10,1,-1,0,03:00
+541,Asia/Damascus,1986,Syria,120,60,2,16,-1,0,04:00,10,9,-1,0,03:00
+542,Asia/Damascus,1987,Syria,120,60,3,1,-1,0,04:00,10,31,-1,0,03:00
+543,Asia/Damascus,1988,Syria,120,60,3,15,-1,0,04:00,10,31,-1,0,03:00
+544,Asia/Damascus,1989,Syria,120,60,3,31,-1,0,04:00,10,1,-1,0,03:00
+545,Asia/Damascus,1990,Syria,120,60,4,1,-1,0,04:00,9,30,-1,0,03:00
+546,Asia/Damascus,1991,Syria,120,60,4,1,-1,0,02:00,10,1,-1,0,01:00
+547,Asia/Damascus,1992,Syria,120,60,4,8,-1,0,02:00,10,1,-1,0,01:00
+548,Asia/Damascus,1993,Syria,120,60,3,26,-1,0,02:00,9,25,-1,0,01:00
+549,Asia/Damascus,1994,Syria,120,60,4,1,-1,0,02:00,10,1,-1,0,01:00
+550,Asia/Damascus,1997,Syria,120,60,3,-1,1,0,02:00,10,1,-1,0,01:00
+551,Asia/Damascus,1999,Syria,120,60,4,1,-1,0,02:00,10,1,-1,0,01:00
+552,Asia/Damascus,2006,Syria,120,60,4,1,-1,0,02:00,9,22,-1,0,01:00
+553,Asia/Damascus,2007,Syria,120,60,3,-1,5,0,02:00,11,1,5,0,01:00
+554,Asia/Damascus,2008,Syria,120,60,4,1,5,0,02:00,11,1,-1,0,01:00
+555,Asia/Damascus,2009,Syria,120,60,3,-1,5,0,02:00,10,-1,5,0,01:00
+556,Asia/Damascus,2010,Syria,120,60,4,1,5,0,02:00,10,-1,5,0,01:00
+557,Asia/Dushanbe,1970,RussiaAsia,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+558,Asia/Dushanbe,1981,RussiaAsia,360,60,4,1,-1,0,06:00,10,1,-1,0,05:00
+559,Asia/Dushanbe,1984,RussiaAsia,360,60,4,1,-1,0,06:00,9,-1,0,0,08:00
+560,Asia/Dushanbe,1985,RussiaAsia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
+561,Asia/Dushanbe,1991,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+562,Asia/Bangkok,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+563,Asia/Ashgabat,1970,RussiaAsia,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+564,Asia/Ashgabat,1981,RussiaAsia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
+565,Asia/Ashgabat,1984,RussiaAsia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
+566,Asia/Ashgabat,1985,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+567,Asia/Ashgabat,1991,RussiaAsia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
+568,Asia/Ashgabat,1992,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+569,Asia/Dubai,1970,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+570,Asia/Samarkand,1970,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+571,Asia/Samarkand,1981,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+572,Asia/Samarkand,1982,RussiaAsia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
+573,Asia/Samarkand,1984,RussiaAsia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
+574,Asia/Samarkand,1985,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+575,Asia/Samarkand,1992,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+576,Asia/Tashkent,1970,RussiaAsia,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+577,Asia/Tashkent,1981,RussiaAsia,360,60,4,1,-1,0,06:00,10,1,-1,0,05:00
+578,Asia/Tashkent,1984,RussiaAsia,360,60,4,1,-1,0,06:00,9,-1,0,0,08:00
+579,Asia/Tashkent,1985,RussiaAsia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
+580,Asia/Tashkent,1991,RussiaAsia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+581,Asia/Tashkent,1992,,300,0,0,0,0,0,00:00,0,0,0,0,00:00
+582,Asia/Ho_Chi_Minh,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+583,Asia/Aden,1970,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+584,Australia/Darwin,1970,Aus,570,0,12,31,-1,0,21:30,3,-1,0,0,10:30
+585,Australia/Perth,1970,AW,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+586,Australia/Perth,1974,AW,480,60,10,-1,0,0,10:00,1,1,-1,0,19:00
+587,Australia/Perth,1975,AW,480,0,12,31,-1,0,20:00,3,1,0,0,10:00
+588,Australia/Perth,1983,AW,480,60,10,-1,0,0,10:00,1,1,-1,0,19:00
+589,Australia/Perth,1984,AW,480,0,12,31,-1,0,20:00,3,1,0,0,10:00
+590,Australia/Perth,1991,AW,480,60,11,17,-1,0,10:00,1,1,-1,0,19:00
+591,Australia/Perth,1992,AW,480,0,12,31,-1,0,20:00,3,1,0,0,10:00
+592,Australia/Perth,2006,AW,480,60,12,3,-1,0,10:00,1,1,-1,0,19:00
+593,Australia/Perth,2007,AW,480,60,10,-1,0,0,10:00,3,-1,0,0,10:00
+594,Australia/Perth,2009,AW,480,0,12,31,-1,0,20:00,3,-1,0,0,10:00
+595,Australia/Eucla,1970,AW,525,0,0,0,0,0,00:00,0,0,0,0,00:00
+596,Australia/Eucla,1974,AW,525,60,10,-1,0,0,10:45,1,1,-1,0,19:45
+597,Australia/Eucla,1975,AW,525,0,12,31,-1,0,20:45,3,1,0,0,10:45
+598,Australia/Eucla,1983,AW,525,60,10,-1,0,0,10:45,1,1,-1,0,19:45
+599,Australia/Eucla,1984,AW,525,0,12,31,-1,0,20:45,3,1,0,0,10:45
+600,Australia/Eucla,1991,AW,525,60,11,17,-1,0,10:45,1,1,-1,0,19:45
+601,Australia/Eucla,1992,AW,525,0,12,31,-1,0,20:45,3,1,0,0,10:45
+602,Australia/Eucla,2006,AW,525,60,12,3,-1,0,10:45,1,1,-1,0,19:45
+603,Australia/Eucla,2007,AW,525,60,10,-1,0,0,10:45,3,-1,0,0,10:45
+604,Australia/Eucla,2009,AW,525,0,12,31,-1,0,20:45,3,-1,0,0,10:45
+605,Australia/Brisbane,1970,Aus,600,0,12,31,-1,0,22:00,3,-1,0,0,11:00
+606,Australia/Brisbane,1971,AQ,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
+607,Australia/Brisbane,1972,AQ,600,0,12,31,-1,0,22:00,2,-1,0,0,12:00
+608,Australia/Brisbane,1989,AQ,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
+609,Australia/Brisbane,1990,AQ,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+610,Australia/Brisbane,1992,AQ,600,0,12,31,-1,0,22:00,3,1,0,0,12:00
+611,Australia/Lindeman,1970,Aus,600,0,12,31,-1,0,22:00,3,-1,0,0,11:00
+612,Australia/Lindeman,1971,AQ,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
+613,Australia/Lindeman,1972,AQ,600,0,12,31,-1,0,22:00,2,-1,0,0,12:00
+614,Australia/Lindeman,1989,AQ,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
+615,Australia/Lindeman,1990,AQ,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+616,Australia/Lindeman,1992,Holiday,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
+617,Australia/Lindeman,1993,Holiday,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+618,Australia/Lindeman,1994,Holiday,600,0,12,31,-1,0,22:00,3,1,0,0,12:00
+619,Australia/Adelaide,1970,Aus,570,0,12,31,-1,0,21:30,3,-1,0,0,10:30
+620,Australia/Adelaide,1971,AS,570,60,10,-1,0,0,11:30,1,1,-1,0,20:30
+621,Australia/Adelaide,1972,AS,570,60,10,-1,0,0,11:30,2,27,-1,0,11:30
+622,Australia/Adelaide,1973,AS,570,60,10,-1,0,0,11:30,3,1,0,0,11:30
+623,Australia/Adelaide,1986,AS,570,60,10,19,-1,0,11:30,3,15,0,0,11:30
+624,Australia/Adelaide,1987,AS,570,60,10,-1,0,0,11:30,3,15,0,0,11:30
+625,Australia/Adelaide,1991,AS,570,60,10,-1,0,0,11:30,3,3,-1,0,11:30
+626,Australia/Adelaide,1992,AS,570,60,10,-1,0,0,11:30,3,22,-1,0,11:30
+627,Australia/Adelaide,1993,AS,570,60,10,-1,0,0,11:30,3,7,-1,0,11:30
+628,Australia/Adelaide,1994,AS,570,60,10,-1,0,0,11:30,3,20,-1,0,11:30
+629,Australia/Adelaide,1995,AS,570,60,10,-1,0,0,11:30,3,-1,0,0,11:30
+630,Australia/Adelaide,2006,AS,570,60,10,-1,0,0,11:30,4,2,-1,0,11:30
+631,Australia/Adelaide,2007,AS,570,60,10,-1,0,0,11:30,3,-1,0,0,11:30
+632,Australia/Adelaide,2008,AS,570,60,10,1,0,0,11:30,4,1,0,0,11:30
+633,Australia/Hobart,1970,AT,600,60,10,-1,0,0,12:00,3,8,0,0,12:00
+634,Australia/Hobart,1972,AT,600,60,10,-1,0,0,12:00,2,-1,0,0,12:00
+635,Australia/Hobart,1973,AT,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+636,Australia/Hobart,1982,AT,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
+637,Australia/Hobart,1984,AT,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+638,Australia/Hobart,1986,AT,600,60,10,15,0,0,12:00,3,1,0,0,12:00
+639,Australia/Hobart,1987,AT,600,60,10,22,0,0,12:00,3,15,0,0,12:00
+640,Australia/Hobart,1988,AT,600,60,10,-1,0,0,12:00,3,15,0,0,12:00
+641,Australia/Hobart,1991,AT,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
+642,Australia/Hobart,2000,AT,600,60,8,-1,0,0,12:00,3,-1,0,0,12:00
+643,Australia/Hobart,2001,AT,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
+644,Australia/Hobart,2006,AT,600,60,10,1,0,0,12:00,4,1,0,0,12:00
+645,Australia/Hobart,2007,AT,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
+646,Australia/Hobart,2008,AT,600,60,10,1,0,0,12:00,4,1,0,0,12:00
+647,Australia/Currie,1970,Aus,600,0,12,31,-1,0,22:00,3,-1,0,0,11:00
+648,Australia/Currie,1971,AT,600,60,10,-1,0,0,12:00,3,8,0,0,12:00
+649,Australia/Currie,1972,AT,600,60,10,-1,0,0,12:00,2,-1,0,0,12:00
+650,Australia/Currie,1973,AT,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+651,Australia/Currie,1982,AT,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
+652,Australia/Currie,1984,AT,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+653,Australia/Currie,1986,AT,600,60,10,15,0,0,12:00,3,1,0,0,12:00
+654,Australia/Currie,1987,AT,600,60,10,22,0,0,12:00,3,15,0,0,12:00
+655,Australia/Currie,1988,AT,600,60,10,-1,0,0,12:00,3,15,0,0,12:00
+656,Australia/Currie,1991,AT,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
+657,Australia/Currie,2000,AT,600,60,8,-1,0,0,12:00,3,-1,0,0,12:00
+658,Australia/Currie,2001,AT,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
+659,Australia/Currie,2006,AT,600,60,10,1,0,0,12:00,4,1,0,0,12:00
+660,Australia/Currie,2007,AT,600,60,10,1,0,0,12:00,3,-1,0,0,12:00
+661,Australia/Currie,2008,AT,600,60,10,1,0,0,12:00,4,1,0,0,12:00
+662,Australia/Melbourne,1970,Aus,600,0,12,31,-1,0,22:00,3,-1,0,0,11:00
+663,Australia/Melbourne,1971,AV,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
+664,Australia/Melbourne,1972,AV,600,60,10,-1,0,0,12:00,2,-1,0,0,12:00
+665,Australia/Melbourne,1973,AV,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+666,Australia/Melbourne,1986,AV,600,60,10,15,0,0,12:00,3,15,0,0,12:00
+667,Australia/Melbourne,1988,AV,600,60,10,-1,0,0,12:00,3,15,0,0,12:00
+668,Australia/Melbourne,1991,AV,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+669,Australia/Melbourne,1995,AV,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
+670,Australia/Melbourne,2000,AV,600,60,8,-1,0,0,12:00,3,-1,0,0,12:00
+671,Australia/Melbourne,2001,AV,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
+672,Australia/Melbourne,2006,AV,600,60,10,-1,0,0,12:00,4,1,0,0,12:00
+673,Australia/Melbourne,2007,AV,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
+674,Australia/Melbourne,2008,AV,600,60,10,1,0,0,12:00,4,1,0,0,12:00
+675,Australia/Sydney,1970,Aus,600,0,12,31,-1,0,22:00,3,-1,0,0,11:00
+676,Australia/Sydney,1971,AN,600,60,10,-1,0,0,12:00,1,1,-1,0,21:00
+677,Australia/Sydney,1972,AN,600,60,10,-1,0,0,12:00,2,27,-1,0,12:00
+678,Australia/Sydney,1973,AN,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+679,Australia/Sydney,1982,AN,600,60,10,-1,0,0,12:00,4,1,0,0,12:00
+680,Australia/Sydney,1983,AN,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+681,Australia/Sydney,1986,AN,600,60,10,19,-1,0,12:00,3,15,0,0,12:00
+682,Australia/Sydney,1987,AN,600,60,10,-1,0,0,12:00,3,15,0,0,12:00
+683,Australia/Sydney,1990,AN,600,60,10,-1,0,0,12:00,3,1,0,0,12:00
+684,Australia/Sydney,1996,AN,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
+685,Australia/Sydney,2000,AN,600,60,8,-1,0,0,12:00,3,-1,0,0,12:00
+686,Australia/Sydney,2001,AN,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
+687,Australia/Sydney,2006,AN,600,60,10,-1,0,0,12:00,4,1,0,0,12:00
+688,Australia/Sydney,2007,AN,600,60,10,-1,0,0,12:00,3,-1,0,0,12:00
+689,Australia/Sydney,2008,AN,600,60,10,1,0,0,12:00,4,1,0,0,12:00
+690,Australia/Broken_Hill,1970,Aus,570,0,12,31,-1,0,21:30,3,-1,0,0,10:30
+691,Australia/Broken_Hill,1971,AN,570,60,10,-1,0,0,11:30,1,1,-1,0,20:30
+692,Australia/Broken_Hill,1972,AN,570,60,10,-1,0,0,11:30,2,27,-1,0,11:30
+693,Australia/Broken_Hill,1973,AN,570,60,10,-1,0,0,11:30,3,1,0,0,11:30
+694,Australia/Broken_Hill,1982,AN,570,60,10,-1,0,0,11:30,4,1,0,0,11:30
+695,Australia/Broken_Hill,1983,AN,570,60,10,-1,0,0,11:30,3,1,0,0,11:30
+696,Australia/Broken_Hill,1986,AN,570,60,10,19,-1,0,11:30,3,15,0,0,11:30
+697,Australia/Broken_Hill,1987,AN,570,60,10,-1,0,0,11:30,3,15,0,0,11:30
+698,Australia/Broken_Hill,1990,AN,570,60,10,-1,0,0,11:30,3,1,0,0,11:30
+699,Australia/Broken_Hill,1996,AN,570,60,10,-1,0,0,11:30,3,-1,0,0,11:30
+700,Australia/Broken_Hill,2000,AS,570,60,10,-1,0,0,11:30,3,-1,0,0,11:30
+701,Australia/Broken_Hill,2006,AS,570,60,10,-1,0,0,11:30,4,2,-1,0,11:30
+702,Australia/Broken_Hill,2007,AS,570,60,10,-1,0,0,11:30,3,-1,0,0,11:30
+703,Australia/Broken_Hill,2008,AS,570,60,10,1,0,0,11:30,4,1,0,0,11:30
+704,Australia/Lord_Howe,1970,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
+705,Australia/Lord_Howe,1981,LH,630,60,10,-1,0,0,12:30,1,1,-1,0,21:30
+706,Australia/Lord_Howe,1982,LH,630,60,10,-1,0,0,12:30,3,1,0,0,11:30
+707,Australia/Lord_Howe,1985,LH,630,30,10,-1,0,0,12:30,3,1,0,0,11:30
+708,Australia/Lord_Howe,1986,LH,630,30,10,19,-1,0,12:30,3,15,0,0,11:30
+709,Australia/Lord_Howe,1987,LH,630,30,10,-1,0,0,12:30,3,15,0,0,11:30
+710,Australia/Lord_Howe,1990,LH,630,30,10,-1,0,0,12:30,3,1,0,0,11:30
+711,Australia/Lord_Howe,1996,LH,630,30,10,-1,0,0,12:30,3,-1,0,0,11:30
+712,Australia/Lord_Howe,2000,LH,630,30,8,-1,0,0,12:30,3,-1,0,0,11:30
+713,Australia/Lord_Howe,2001,LH,630,30,10,-1,0,0,12:30,3,-1,0,0,11:30
+714,Australia/Lord_Howe,2006,LH,630,30,10,-1,0,0,12:30,4,1,0,0,11:30
+715,Australia/Lord_Howe,2007,LH,630,30,10,-1,0,0,12:30,3,-1,0,0,11:30
+716,Australia/Lord_Howe,2008,LH,630,30,10,1,0,0,12:30,4,1,0,0,11:30
+717,Indian/Christmas,1970,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+718,Pacific/Rarotonga,1970,,-630,0,0,0,0,0,00:00,0,0,0,0,00:00
+719,Pacific/Rarotonga,1978,Cook,-600,30,11,12,-1,0,-10:00,1,1,-1,0,01:00
+720,Pacific/Rarotonga,1979,Cook,-600,30,10,-1,0,0,-10:00,3,1,0,0,-11:00
+721,Pacific/Rarotonga,1991,Cook,-600,0,12,31,-1,0,02:00,3,1,0,0,-11:00
+722,Indian/Cocos,1970,,390,0,0,0,0,0,00:00,0,0,0,0,00:00
+723,Pacific/Fiji,1970,Fiji,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+724,Pacific/Fiji,1998,Fiji,720,60,11,1,0,0,14:00,1,1,-1,0,23:00
+725,Pacific/Fiji,1999,Fiji,720,60,11,1,0,0,14:00,2,-1,0,0,14:00
+726,Pacific/Fiji,2000,Fiji,720,0,12,31,-1,0,24:00,2,-1,0,0,14:00
+727,Pacific/Fiji,2009,Fiji,720,60,11,29,-1,0,14:00,1,1,-1,0,23:00
+728,Pacific/Fiji,2010,Fiji,720,60,10,24,-1,0,14:00,3,-1,0,0,14:00
+729,Pacific/Fiji,2011,Fiji,720,60,10,23,-1,0,14:00,3,1,0,0,14:00
+730,Pacific/Fiji,2012,Fiji,720,0,12,31,-1,0,24:00,1,22,-1,0,14:00
+731,Pacific/Gambier,1970,,-540,0,0,0,0,0,00:00,0,0,0,0,00:00
+732,Pacific/Marquesas,1970,,-570,0,0,0,0,0,00:00,0,0,0,0,00:00
+733,Pacific/Tahiti,1970,,-600,0,0,0,0,0,00:00,0,0,0,0,00:00
+734,Pacific/Guam,1970,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
+735,Pacific/Guam,2000,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
+736,Pacific/Tarawa,1970,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+737,Pacific/Enderbury,1970,,-720,0,0,0,0,0,00:00,0,0,0,0,00:00
+738,Pacific/Enderbury,1979,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
+739,Pacific/Enderbury,1995,,780,0,0,0,0,0,00:00,0,0,0,0,00:00
+740,Pacific/Kiritimati,1970,,-640,0,0,0,0,0,00:00,0,0,0,0,00:00
+741,Pacific/Kiritimati,1979,,-600,0,0,0,0,0,00:00,0,0,0,0,00:00
+742,Pacific/Kiritimati,1995,,840,0,0,0,0,0,00:00,0,0,0,0,00:00
+743,Pacific/Saipan,1970,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
+744,Pacific/Saipan,2000,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
+745,Pacific/Majuro,1970,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+746,Pacific/Kwajalein,1970,,-720,0,0,0,0,0,00:00,0,0,0,0,00:00
+747,Pacific/Kwajalein,1993,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+748,Pacific/Chuuk,1970,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
+749,Pacific/Pohnpei,1970,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
+750,Pacific/Kosrae,1970,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+751,Pacific/Kosrae,1999,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
+752,Pacific/Nauru,1970,,690,0,0,0,0,0,00:00,0,0,0,0,00:00
+753,Pacific/Nauru,1979,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+754,Pacific/Noumea,1970,NC,660,0,0,0,0,0,00:00,0,0,0,0,00:00
+755,Pacific/Noumea,1977,NC,660,60,12,1,0,0,11:00,1,1,-1,0,22:00
+756,Pacific/Noumea,1978,NC,660,60,12,1,0,0,11:00,2,27,-1,0,10:00
+757,Pacific/Noumea,1979,NC,660,0,12,31,-1,0,23:00,2,27,-1,0,10:00
+758,Pacific/Noumea,1996,NC,660,60,12,1,-1,0,13:00,1,1,-1,0,22:00
+759,Pacific/Noumea,1997,NC,660,0,12,31,-1,0,23:00,3,2,-1,0,13:00
+760,Pacific/Auckland,1970,NZ,720,0,12,31,-1,0,24:00,1,1,-1,0,11:00
+761,Pacific/Auckland,1974,NZ,720,60,11,1,0,0,14:00,1,1,-1,0,23:00
+762,Pacific/Auckland,1975,NZ,720,60,10,-1,0,0,14:00,2,-1,0,0,14:00
+763,Pacific/Auckland,1976,NZ,720,60,10,-1,0,0,14:00,3,1,0,0,14:00
+764,Pacific/Auckland,1989,NZ,720,60,10,8,0,0,14:00,3,1,0,0,14:00
+765,Pacific/Auckland,1990,NZ,720,60,10,1,0,0,14:00,3,15,0,0,14:00
+766,Pacific/Auckland,2007,NZ,720,60,9,-1,0,0,14:00,3,15,0,0,14:00
+767,Pacific/Auckland,2008,NZ,720,60,9,-1,0,0,14:00,4,1,0,0,14:00
+768,Pacific/Chatham,1970,Chatham,765,0,0,0,0,0,00:00,0,0,0,0,00:00
+769,Pacific/Chatham,1974,Chatham,765,60,11,1,0,0,15:30,1,1,-1,0,23:45
+770,Pacific/Chatham,1975,Chatham,765,60,10,-1,0,0,15:30,2,-1,0,0,15:30
+771,Pacific/Chatham,1976,Chatham,765,60,10,-1,0,0,15:30,3,1,0,0,15:30
+772,Pacific/Chatham,1989,Chatham,765,60,10,8,0,0,15:30,3,1,0,0,15:30
+773,Pacific/Chatham,1990,Chatham,765,60,10,1,0,0,15:30,3,15,0,0,15:30
+774,Pacific/Chatham,2007,Chatham,765,60,9,-1,0,0,15:30,3,15,0,0,15:30
+775,Pacific/Chatham,2008,Chatham,765,60,9,-1,0,0,15:30,4,1,0,0,15:30
+776,Pacific/Niue,1970,,-690,0,0,0,0,0,00:00,0,0,0,0,00:00
+777,Pacific/Niue,1978,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
+778,Pacific/Norfolk,1970,,690,0,0,0,0,0,00:00,0,0,0,0,00:00
+779,Pacific/Palau,1970,,540,0,0,0,0,0,00:00,0,0,0,0,00:00
+780,Pacific/Port_Moresby,1970,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
+781,Pacific/Pitcairn,1970,,-510,0,0,0,0,0,00:00,0,0,0,0,00:00
+782,Pacific/Pitcairn,1998,,-480,0,0,0,0,0,00:00,0,0,0,0,00:00
+783,Pacific/Pago_Pago,1970,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
+784,Pacific/Pago_Pago,1983,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
+785,Pacific/Apia,1970,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
+786,Pacific/Apia,2010,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
+787,Pacific/Apia,2011,,780,0,0,0,0,0,00:00,0,0,0,0,00:00
+788,Pacific/Guadalcanal,1970,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
+789,Pacific/Fakaofo,1970,,-600,0,0,0,0,0,00:00,0,0,0,0,00:00
+790,Pacific/Tongatapu,1970,,780,0,0,0,0,0,00:00,0,0,0,0,00:00
+791,Pacific/Tongatapu,1999,Tonga,780,60,10,7,-1,0,15:00,1,1,-1,0,24:00
+792,Pacific/Tongatapu,2000,Tonga,780,60,11,1,0,0,15:00,3,19,-1,0,15:00
+793,Pacific/Tongatapu,2001,Tonga,780,60,11,1,0,0,15:00,1,-1,0,0,14:00
+794,Pacific/Tongatapu,2002,Tonga,780,0,12,31,-1,0,25:00,1,-1,0,0,14:00
+795,Pacific/Funafuti,1970,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+796,Pacific/Johnston,1970,,-600,0,0,0,0,0,00:00,0,0,0,0,00:00
+797,Pacific/Midway,1970,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
+798,Pacific/Midway,1983,,-660,0,0,0,0,0,00:00,0,0,0,0,00:00
+799,Pacific/Wake,1970,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+800,Pacific/Efate,1970,Vanuatu,660,0,0,0,0,0,00:00,0,0,0,0,00:00
+801,Pacific/Efate,1983,Vanuatu,660,60,9,25,-1,0,11:00,1,1,-1,0,22:00
+802,Pacific/Efate,1984,Vanuatu,660,60,10,23,-1,0,11:00,3,23,0,0,10:00
+803,Pacific/Efate,1985,Vanuatu,660,60,9,23,0,0,11:00,3,23,0,0,10:00
+804,Pacific/Efate,1992,Vanuatu,660,60,10,23,0,0,11:00,1,23,0,0,10:00
+805,Pacific/Efate,1993,Vanuatu,660,0,12,31,-1,0,23:00,1,23,0,0,10:00
+806,Pacific/Wallis,1970,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+807,Europe/London,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
+808,Europe/London,1971,GB-Eire,0,0,0,0,0,0,00:00,0,0,0,0,00:00
+809,Europe/London,1972,GB-Eire,0,60,3,16,0,0,02:00,10,23,0,0,02:00
+810,Europe/London,1981,GB-Eire,0,60,3,-1,0,0,1:00,10,23,0,0,1:00
+811,Europe/London,1990,GB-Eire,0,60,3,-1,0,0,1:00,10,22,0,0,1:00
+812,Europe/London,1995,GB-Eire,0,0,3,-1,0,0,1:00,10,22,0,0,1:00
+813,Europe/London,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+814,Europe/Dublin,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
+815,Europe/Dublin,1971,GB-Eire,0,0,0,0,0,0,00:00,0,0,0,0,00:00
+816,Europe/Dublin,1972,GB-Eire,0,60,3,16,0,0,02:00,10,23,0,0,02:00
+817,Europe/Dublin,1981,GB-Eire,0,60,3,-1,0,0,1:00,10,23,0,0,1:00
+818,Europe/Dublin,1990,GB-Eire,0,60,3,-1,0,0,1:00,10,22,0,0,1:00
+819,Europe/Dublin,1995,GB-Eire,0,0,3,-1,0,0,1:00,10,22,0,0,1:00
+820,Europe/Dublin,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+821,WET,1970,EU,0,0,0,0,0,0,00:00,0,0,0,0,00:00
+822,WET,1977,EU,0,60,4,1,0,0,1:00,9,-1,0,0,1:00
+823,WET,1978,EU,0,60,4,1,0,0,1:00,10,1,-1,0,1:00
+824,WET,1979,EU,0,60,4,1,0,0,1:00,9,-1,0,0,1:00
+825,WET,1981,EU,0,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+826,WET,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+827,CET,1970,C-Eur,60,60,4,1,1,0,03:00,9,16,-1,0,03:00
+828,CET,1977,C-Eur,60,60,4,1,0,0,03:00,9,-1,0,0,03:00
+829,CET,1978,C-Eur,60,60,4,1,0,0,03:00,10,1,-1,0,03:00
+830,CET,1979,C-Eur,60,60,4,1,0,0,03:00,9,-1,0,0,03:00
+831,CET,1981,C-Eur,60,60,3,-1,0,0,03:00,9,-1,0,0,03:00
+832,CET,1996,C-Eur,60,60,3,-1,0,0,03:00,10,-1,0,0,03:00
+833,MET,1970,C-Eur,60,60,4,1,1,0,03:00,9,16,-1,0,03:00
+834,MET,1977,C-Eur,60,60,4,1,0,0,03:00,9,-1,0,0,03:00
+835,MET,1978,C-Eur,60,60,4,1,0,0,03:00,10,1,-1,0,03:00
+836,MET,1979,C-Eur,60,60,4,1,0,0,03:00,9,-1,0,0,03:00
+837,MET,1981,C-Eur,60,60,3,-1,0,0,03:00,9,-1,0,0,03:00
+838,MET,1996,C-Eur,60,60,3,-1,0,0,03:00,10,-1,0,0,03:00
+839,EET,1970,EU,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+840,EET,1977,EU,120,60,4,1,0,0,1:00,9,-1,0,0,1:00
+841,EET,1978,EU,120,60,4,1,0,0,1:00,10,1,-1,0,1:00
+842,EET,1979,EU,120,60,4,1,0,0,1:00,9,-1,0,0,1:00
+843,EET,1981,EU,120,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+844,EET,1996,EU,120,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+845,Europe/Tirane,1970,Albania,60,60,3,29,-1,0,03:00,4,10,-1,0,03:00
+846,Europe/Tirane,1974,Albania,60,60,5,4,-1,0,01:00,10,2,-1,0,00:00
+847,Europe/Tirane,1975,Albania,60,60,5,1,-1,0,01:00,10,2,-1,0,00:00
+848,Europe/Tirane,1976,Albania,60,60,5,2,-1,0,01:00,10,3,-1,0,00:00
+849,Europe/Tirane,1977,Albania,60,60,5,8,-1,0,01:00,10,2,-1,0,00:00
+850,Europe/Tirane,1978,Albania,60,60,5,6,-1,0,01:00,10,1,-1,0,00:00
+851,Europe/Tirane,1979,Albania,60,60,5,5,-1,0,01:00,9,30,-1,0,00:00
+852,Europe/Tirane,1980,Albania,60,60,5,3,-1,0,01:00,10,4,-1,0,00:00
+853,Europe/Tirane,1981,Albania,60,60,4,26,-1,0,01:00,9,27,-1,0,00:00
+854,Europe/Tirane,1982,Albania,60,60,5,2,-1,0,01:00,10,3,-1,0,00:00
+855,Europe/Tirane,1983,Albania,60,60,4,18,-1,0,01:00,10,1,-1,0,00:00
+856,Europe/Tirane,1984,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+857,Europe/Tirane,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+858,Europe/Andorra,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
+859,Europe/Andorra,1985,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+860,Europe/Andorra,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+861,Europe/Vienna,1970,Austria,60,60,4,18,-1,0,03:00,10,1,0,0,03:00
+862,Europe/Vienna,1980,Austria,60,60,4,6,-1,0,01:00,9,28,-1,0,00:00
+863,Europe/Vienna,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+864,Europe/Vienna,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+865,Europe/Minsk,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
+866,Europe/Minsk,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
+867,Europe/Minsk,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
+868,Europe/Minsk,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+869,Europe/Minsk,1990,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+870,Europe/Minsk,1991,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+871,Europe/Minsk,1992,Russia,120,60,3,-1,6,0,25:00,9,-1,6,0,24:00
+872,Europe/Minsk,1993,Russia,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+873,Europe/Minsk,1996,Russia,120,60,3,-1,0,0,04:00,10,-1,0,0,04:00
+874,Europe/Minsk,2010,Russia,120,0,3,-1,0,0,04:00,10,-1,0,0,04:00
+875,Europe/Minsk,2011,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+876,Europe/Brussels,1970,Belgium,60,0,5,19,-1,0,03:00,10,7,-1,0,03:00
+877,Europe/Brussels,1977,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+878,Europe/Brussels,1978,EU,60,60,4,1,0,0,1:00,10,1,-1,0,1:00
+879,Europe/Brussels,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+880,Europe/Brussels,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+881,Europe/Brussels,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+882,Europe/Sofia,1970,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+883,Europe/Sofia,1979,Bulg,120,60,3,31,-1,0,25:00,10,1,-1,0,02:00
+884,Europe/Sofia,1980,Bulg,120,60,4,1,6,0,25:00,9,29,-1,0,02:00
+885,Europe/Sofia,1981,Bulg,120,60,4,1,6,0,25:00,9,27,-1,0,03:00
+886,Europe/Sofia,1982,C-Eur,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+887,Europe/Sofia,1991,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
+888,Europe/Sofia,1996,E-Eur,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
+889,Europe/Sofia,1997,EU,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
+890,Europe/Prague,1970,Czech,60,0,4,9,-1,0,03:00,10,1,0,0,03:00
+891,Europe/Prague,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+892,Europe/Prague,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+893,Europe/Prague,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+894,Europe/Copenhagen,1970,Denmark,60,0,5,9,-1,0,03:00,8,8,-1,0,03:00
+895,Europe/Copenhagen,1980,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+896,Europe/Copenhagen,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+897,Europe/Copenhagen,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+898,Atlantic/Faroe,1970,,0,0,0,0,0,0,00:00,0,0,0,0,00:00
+899,Atlantic/Faroe,1981,EU,0,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+900,Atlantic/Faroe,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+901,America/Danmarkshavn,1970,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+902,America/Danmarkshavn,1980,EU,-180,60,4,1,0,0,1:00,9,-1,0,0,1:00
+903,America/Danmarkshavn,1981,EU,-180,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+904,America/Danmarkshavn,1996,,0,0,0,0,0,0,00:00,0,0,0,0,00:00
+905,America/Scoresbysund,1970,,-120,0,0,0,0,0,00:00,0,0,0,0,00:00
+906,America/Scoresbysund,1980,C-Eur,-120,60,4,1,0,0,00:00,9,-1,0,0,00:00
+907,America/Scoresbysund,1981,EU,-60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+908,America/Scoresbysund,1996,EU,-60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+909,America/Godthab,1970,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+910,America/Godthab,1980,EU,-180,60,4,1,0,0,1:00,9,-1,0,0,1:00
+911,America/Godthab,1981,EU,-180,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+912,America/Godthab,1996,EU,-180,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+913,America/Thule,1970,Thule,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+914,America/Thule,1991,Thule,-240,60,3,-1,0,0,-2:00,9,-1,0,0,-3:00
+915,America/Thule,1993,Thule,-240,60,4,1,0,0,-2:00,10,-1,0,0,-3:00
+916,America/Thule,2007,Thule,-240,60,3,8,0,0,-2:00,11,1,0,0,-3:00
+917,Europe/Tallinn,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
+918,Europe/Tallinn,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
+919,Europe/Tallinn,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
+920,Europe/Tallinn,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+921,Europe/Tallinn,1989,C-Eur,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+922,Europe/Tallinn,1996,C-Eur,120,60,3,-1,0,0,04:00,10,-1,0,0,04:00
+923,Europe/Tallinn,1998,EU,120,60,3,-1,0,0,04:00,10,-1,0,0,04:00
+924,Europe/Tallinn,1999,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+925,Europe/Tallinn,2002,EU,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+926,Europe/Helsinki,1970,Finland,120,60,4,3,-1,0,02:00,10,3,-1,0,01:00
+927,Europe/Helsinki,1981,Finland,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+928,Europe/Helsinki,1982,Finland,120,0,3,-1,0,0,04:00,9,-1,0,0,04:00
+929,Europe/Helsinki,1983,EU,120,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+930,Europe/Helsinki,1996,EU,120,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+931,Europe/Paris,1970,France,60,120,4,2,-1,0,03:00,9,16,-1,0,03:00
+932,Europe/Paris,1976,France,60,60,3,28,-1,0,02:00,9,26,-1,0,01:00
+933,Europe/Paris,1977,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+934,Europe/Paris,1978,EU,60,60,4,1,0,0,1:00,10,1,-1,0,1:00
+935,Europe/Paris,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+936,Europe/Paris,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+937,Europe/Paris,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+938,Europe/Berlin,1970,Germany,60,0,4,10,-1,0,03:00,10,1,0,0,03:00
+939,Europe/Berlin,1980,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+940,Europe/Berlin,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+941,Europe/Berlin,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+942,Europe/Gibraltar,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
+943,Europe/Gibraltar,1982,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+944,Europe/Gibraltar,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+945,Europe/Athens,1970,Greece,120,60,7,1,-1,0,02:00,11,2,-1,0,01:00
+946,Europe/Athens,1975,Greece,120,60,4,12,-1,0,02:00,11,26,-1,0,02:00
+947,Europe/Athens,1976,Greece,120,60,4,11,-1,0,04:00,10,10,-1,0,04:00
+948,Europe/Athens,1977,Greece,120,60,4,1,0,0,04:00,9,26,-1,0,04:00
+949,Europe/Athens,1978,Greece,120,60,4,1,0,0,04:00,9,24,-1,0,05:00
+950,Europe/Athens,1979,Greece,120,60,4,1,-1,0,11:00,9,29,-1,0,03:00
+951,Europe/Athens,1980,Greece,120,60,4,1,-1,0,02:00,9,28,-1,0,01:00
+952,Europe/Athens,1981,EU,120,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+953,Europe/Athens,1996,EU,120,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+954,Europe/Budapest,1970,Hungary,60,60,6,1,0,0,02:00,9,-1,0,0,03:00
+955,Europe/Budapest,1980,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+956,Europe/Budapest,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+957,Europe/Budapest,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+958,Atlantic/Reykjavik,1970,,0,0,0,0,0,0,00:00,0,0,0,0,00:00
+959,Europe/Rome,1970,Italy,60,60,5,31,-1,0,01:00,9,-1,0,0,00:00
+960,Europe/Rome,1971,Italy,60,60,5,22,0,0,01:00,9,-1,0,0,01:00
+961,Europe/Rome,1972,Italy,60,60,5,22,0,0,01:00,10,1,-1,0,00:00
+962,Europe/Rome,1973,Italy,60,60,6,3,-1,0,01:00,9,-1,0,0,00:00
+963,Europe/Rome,1974,Italy,60,60,5,26,-1,0,01:00,9,-1,0,0,00:00
+964,Europe/Rome,1975,Italy,60,60,6,1,-1,0,01:00,9,-1,0,0,01:00
+965,Europe/Rome,1976,Italy,60,60,5,30,-1,0,01:00,9,-1,0,0,01:00
+966,Europe/Rome,1977,Italy,60,60,5,22,0,0,01:00,9,-1,0,0,01:00
+967,Europe/Rome,1978,Italy,60,60,5,22,0,0,01:00,10,1,-1,0,01:00
+968,Europe/Rome,1979,Italy,60,60,5,22,0,0,01:00,9,30,-1,0,01:00
+969,Europe/Rome,1980,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+970,Europe/Rome,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+971,Europe/Rome,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+972,Europe/Riga,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
+973,Europe/Riga,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
+974,Europe/Riga,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
+975,Europe/Riga,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+976,Europe/Riga,1989,Latvia,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+977,Europe/Riga,1996,Latvia,120,0,3,-1,0,0,04:00,9,-1,0,0,04:00
+978,Europe/Riga,1997,EU,120,0,3,-1,0,0,04:00,9,-1,0,0,04:00
+979,Europe/Riga,2000,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+980,Europe/Riga,2001,EU,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+981,Europe/Vaduz,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
+982,Europe/Vaduz,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+983,Europe/Vaduz,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+984,Europe/Vilnius,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
+985,Europe/Vilnius,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
+986,Europe/Vilnius,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
+987,Europe/Vilnius,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+988,Europe/Vilnius,1991,C-Eur,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+989,Europe/Vilnius,1996,C-Eur,120,60,3,-1,0,0,04:00,10,-1,0,0,04:00
+990,Europe/Vilnius,1998,EU,60,60,3,-1,0,0,03:00,10,-1,0,0,03:00
+991,Europe/Vilnius,1999,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+992,Europe/Vilnius,2003,EU,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+993,Europe/Luxembourg,1970,Belgium,60,0,5,19,-1,0,03:00,10,7,-1,0,03:00
+994,Europe/Luxembourg,1977,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+995,Europe/Luxembourg,1978,EU,60,60,4,1,0,0,1:00,10,1,-1,0,1:00
+996,Europe/Luxembourg,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+997,Europe/Luxembourg,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+998,Europe/Luxembourg,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+999,Europe/Malta,1970,Italy,60,60,5,31,-1,0,01:00,9,-1,0,0,00:00
+1000,Europe/Malta,1971,Italy,60,60,5,22,0,0,01:00,9,-1,0,0,01:00
+1001,Europe/Malta,1972,Italy,60,60,5,22,0,0,01:00,10,1,-1,0,00:00
+1002,Europe/Malta,1973,Malta,60,60,3,31,-1,0,01:00,9,29,-1,0,01:00
+1003,Europe/Malta,1974,Malta,60,60,4,21,-1,0,01:00,9,16,-1,0,01:00
+1004,Europe/Malta,1975,Malta,60,60,4,15,0,0,03:00,9,15,0,0,02:00
+1005,Europe/Malta,1980,Malta,60,0,3,31,-1,0,03:00,9,15,0,0,02:00
+1006,Europe/Malta,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1007,Europe/Malta,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1008,Europe/Chisinau,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
+1009,Europe/Chisinau,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
+1010,Europe/Chisinau,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
+1011,Europe/Chisinau,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+1012,Europe/Chisinau,1990,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+1013,Europe/Chisinau,1991,Russia,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+1014,Europe/Chisinau,1992,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
+1015,Europe/Chisinau,1996,E-Eur,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
+1016,Europe/Chisinau,1997,EU,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
+1017,Europe/Monaco,1970,France,60,120,4,2,-1,0,03:00,9,16,-1,0,03:00
+1018,Europe/Monaco,1976,France,60,60,3,28,-1,0,02:00,9,26,-1,0,01:00
+1019,Europe/Monaco,1977,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+1020,Europe/Monaco,1978,EU,60,60,4,1,0,0,1:00,10,1,-1,0,1:00
+1021,Europe/Monaco,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+1022,Europe/Monaco,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1023,Europe/Monaco,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1024,Europe/Amsterdam,1970,Neth,60,0,4,2,-1,0,03:00,9,16,-1,0,03:00
+1025,Europe/Amsterdam,1977,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+1026,Europe/Amsterdam,1978,EU,60,60,4,1,0,0,1:00,10,1,-1,0,1:00
+1027,Europe/Amsterdam,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+1028,Europe/Amsterdam,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1029,Europe/Amsterdam,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1030,Europe/Oslo,1970,Norway,60,0,4,25,-1,0,03:00,9,15,0,0,03:00
+1031,Europe/Oslo,1980,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+1032,Europe/Oslo,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1033,Europe/Oslo,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1034,Europe/Warsaw,1970,Poland,60,0,5,-1,0,0,02:00,9,-1,0,0,02:00
+1035,Europe/Warsaw,1977,W-Eur,60,60,4,1,0,0,02:00,9,-1,0,0,02:00
+1036,Europe/Warsaw,1978,W-Eur,60,60,4,1,0,0,02:00,10,1,-1,0,02:00
+1037,Europe/Warsaw,1979,W-Eur,60,60,4,1,0,0,02:00,9,-1,0,0,02:00
+1038,Europe/Warsaw,1981,W-Eur,60,60,3,-1,0,0,02:00,9,-1,0,0,02:00
+1039,Europe/Warsaw,1988,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1040,Europe/Warsaw,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1041,Europe/Lisbon,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
+1042,Europe/Lisbon,1976,Port,0,0,0,0,0,0,00:00,0,0,0,0,00:00
+1043,Europe/Lisbon,1977,Port,0,60,3,27,-1,0,00:00,9,25,-1,0,00:00
+1044,Europe/Lisbon,1978,Port,0,60,4,1,0,0,00:00,10,1,-1,0,00:00
+1045,Europe/Lisbon,1979,Port,0,60,4,1,0,0,00:00,9,-1,0,0,01:00
+1046,Europe/Lisbon,1980,Port,0,60,3,-1,0,0,00:00,9,-1,0,0,01:00
+1047,Europe/Lisbon,1981,Port,0,60,3,-1,0,0,01:00,9,-1,0,0,01:00
+1048,Europe/Lisbon,1983,W-Eur,0,60,3,-1,0,0,01:00,9,-1,0,0,01:00
+1049,Europe/Lisbon,1992,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1050,Europe/Lisbon,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1051,Atlantic/Azores,1970,Port,-60,60,4,1,0,0,01:00,10,1,0,0,01:00
+1052,Atlantic/Azores,1977,Port,-60,60,3,27,-1,0,-1:00,9,25,-1,0,-1:00
+1053,Atlantic/Azores,1978,Port,-60,60,4,1,0,0,-1:00,10,1,-1,0,-1:00
+1054,Atlantic/Azores,1979,Port,-60,60,4,1,0,0,-1:00,9,-1,0,0,00:00
+1055,Atlantic/Azores,1980,Port,-60,60,3,-1,0,0,-1:00,9,-1,0,0,00:00
+1056,Atlantic/Azores,1981,Port,-60,60,3,-1,0,0,00:00,9,-1,0,0,00:00
+1057,Atlantic/Azores,1983,W-Eur,-60,60,3,-1,0,0,00:00,9,-1,0,0,00:00
+1058,Atlantic/Azores,1992,EU,0,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1059,Atlantic/Azores,1993,EU,-60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1060,Atlantic/Azores,1996,EU,-60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1061,Atlantic/Madeira,1970,Port,0,60,4,1,0,0,02:00,10,1,0,0,02:00
+1062,Atlantic/Madeira,1977,Port,0,60,3,27,-1,0,00:00,9,25,-1,0,00:00
+1063,Atlantic/Madeira,1978,Port,0,60,4,1,0,0,00:00,10,1,-1,0,00:00
+1064,Atlantic/Madeira,1979,Port,0,60,4,1,0,0,00:00,9,-1,0,0,01:00
+1065,Atlantic/Madeira,1980,Port,0,60,3,-1,0,0,00:00,9,-1,0,0,01:00
+1066,Atlantic/Madeira,1981,Port,0,60,3,-1,0,0,01:00,9,-1,0,0,01:00
+1067,Atlantic/Madeira,1983,EU,0,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1068,Atlantic/Madeira,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1069,Europe/Bucharest,1970,Romania,120,60,4,2,0,0,02:00,10,1,0,0,02:00
+1070,Europe/Bucharest,1979,Romania,120,60,5,27,-1,0,02:00,9,-1,0,0,01:00
+1071,Europe/Bucharest,1980,Romania,120,60,4,5,-1,0,25:00,9,-1,0,0,02:00
+1072,Europe/Bucharest,1981,C-Eur,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+1073,Europe/Bucharest,1991,Romania,120,60,3,-1,0,0,02:00,9,-1,0,0,02:00
+1074,Europe/Bucharest,1993,Romania,120,0,3,-1,0,0,02:00,9,-1,0,0,02:00
+1075,Europe/Bucharest,1994,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
+1076,Europe/Bucharest,1996,E-Eur,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
+1077,Europe/Bucharest,1997,EU,120,60,3,-1,0,0,02:00,10,-1,0,0,01:00
+1078,Europe/Kaliningrad,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
+1079,Europe/Kaliningrad,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
+1080,Europe/Kaliningrad,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
+1081,Europe/Kaliningrad,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+1082,Europe/Kaliningrad,1991,Russia,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+1083,Europe/Kaliningrad,1992,Russia,120,60,3,-1,6,0,25:00,9,-1,6,0,24:00
+1084,Europe/Kaliningrad,1993,Russia,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+1085,Europe/Kaliningrad,1996,Russia,120,60,3,-1,0,0,04:00,10,-1,0,0,04:00
+1086,Europe/Kaliningrad,2010,Russia,120,0,3,-1,0,0,04:00,10,-1,0,0,04:00
+1087,Europe/Kaliningrad,2011,,180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1088,Europe/Moscow,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
+1089,Europe/Moscow,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
+1090,Europe/Moscow,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
+1091,Europe/Moscow,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+1092,Europe/Moscow,1991,Russia,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+1093,Europe/Moscow,1992,Russia,180,60,3,-1,6,0,26:00,9,-1,6,0,25:00
+1094,Europe/Moscow,1993,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+1095,Europe/Moscow,1996,Russia,180,60,3,-1,0,0,05:00,10,-1,0,0,05:00
+1096,Europe/Moscow,2010,Russia,180,0,3,-1,0,0,05:00,10,-1,0,0,05:00
+1097,Europe/Moscow,2011,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1098,Europe/Volgograd,1970,Russia,240,60,9,1,-1,0,04:00,10,1,-1,0,03:00
+1099,Europe/Volgograd,1981,Russia,240,60,4,1,-1,0,04:00,10,1,-1,0,03:00
+1100,Europe/Volgograd,1984,Russia,240,60,4,1,-1,0,04:00,9,-1,0,0,06:00
+1101,Europe/Volgograd,1985,Russia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
+1102,Europe/Volgograd,1989,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+1103,Europe/Volgograd,1991,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1104,Europe/Volgograd,1992,Russia,180,60,3,-1,6,0,26:00,9,-1,6,0,25:00
+1105,Europe/Volgograd,1993,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+1106,Europe/Volgograd,1996,Russia,180,60,3,-1,0,0,05:00,10,-1,0,0,05:00
+1107,Europe/Volgograd,2010,Russia,180,0,3,-1,0,0,05:00,10,-1,0,0,05:00
+1108,Europe/Volgograd,2011,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1109,Europe/Samara,1970,Russia,240,60,9,1,-1,0,04:00,10,1,-1,0,03:00
+1110,Europe/Samara,1981,Russia,240,60,4,1,-1,0,04:00,10,1,-1,0,03:00
+1111,Europe/Samara,1984,Russia,240,60,4,1,-1,0,04:00,9,-1,0,0,06:00
+1112,Europe/Samara,1985,Russia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
+1113,Europe/Samara,1989,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+1114,Europe/Samara,1991,Russia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
+1115,Europe/Samara,1992,Russia,240,60,3,-1,6,0,27:00,9,-1,6,0,26:00
+1116,Europe/Samara,1993,Russia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
+1117,Europe/Samara,1996,Russia,240,60,3,-1,0,0,06:00,10,-1,0,0,06:00
+1118,Europe/Samara,2010,Russia,180,0,3,-1,0,0,05:00,10,-1,0,0,05:00
+1119,Europe/Samara,2011,,240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1120,Asia/Yekaterinburg,1970,Russia,300,60,9,1,-1,0,05:00,10,1,-1,0,04:00
+1121,Asia/Yekaterinburg,1981,Russia,300,60,4,1,-1,0,05:00,10,1,-1,0,04:00
+1122,Asia/Yekaterinburg,1984,Russia,300,60,4,1,-1,0,05:00,9,-1,0,0,07:00
+1123,Asia/Yekaterinburg,1985,Russia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+1124,Asia/Yekaterinburg,1991,Russia,240,60,3,-1,0,0,06:00,9,-1,0,0,06:00
+1125,Asia/Yekaterinburg,1992,Russia,300,60,3,-1,6,0,28:00,9,-1,6,0,27:00
+1126,Asia/Yekaterinburg,1993,Russia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+1127,Asia/Yekaterinburg,1996,Russia,300,60,3,-1,0,0,07:00,10,-1,0,0,07:00
+1128,Asia/Yekaterinburg,2010,Russia,300,0,3,-1,0,0,07:00,10,-1,0,0,07:00
+1129,Asia/Yekaterinburg,2011,,360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1130,Asia/Omsk,1970,Russia,360,60,9,1,-1,0,06:00,10,1,-1,0,05:00
+1131,Asia/Omsk,1981,Russia,360,60,4,1,-1,0,06:00,10,1,-1,0,05:00
+1132,Asia/Omsk,1984,Russia,360,60,4,1,-1,0,06:00,9,-1,0,0,08:00
+1133,Asia/Omsk,1985,Russia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
+1134,Asia/Omsk,1991,Russia,300,60,3,-1,0,0,07:00,9,-1,0,0,07:00
+1135,Asia/Omsk,1992,Russia,360,60,3,-1,6,0,29:00,9,-1,6,0,28:00
+1136,Asia/Omsk,1993,Russia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
+1137,Asia/Omsk,1996,Russia,360,60,3,-1,0,0,08:00,10,-1,0,0,08:00
+1138,Asia/Omsk,2010,Russia,360,0,3,-1,0,0,08:00,10,-1,0,0,08:00
+1139,Asia/Omsk,2011,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+1140,Asia/Novosibirsk,1970,Russia,420,60,9,1,-1,0,07:00,10,1,-1,0,06:00
+1141,Asia/Novosibirsk,1981,Russia,420,60,4,1,-1,0,07:00,10,1,-1,0,06:00
+1142,Asia/Novosibirsk,1984,Russia,420,60,4,1,-1,0,07:00,9,-1,0,0,09:00
+1143,Asia/Novosibirsk,1985,Russia,420,60,3,-1,0,0,09:00,9,-1,0,0,09:00
+1144,Asia/Novosibirsk,1991,Russia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
+1145,Asia/Novosibirsk,1992,Russia,420,60,3,-1,6,0,30:00,9,-1,6,0,29:00
+1146,Asia/Novosibirsk,1993,Russia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
+1147,Asia/Novosibirsk,1996,Russia,360,60,3,-1,0,0,08:00,10,-1,0,0,08:00
+1148,Asia/Novosibirsk,2010,Russia,360,0,3,-1,0,0,08:00,10,-1,0,0,08:00
+1149,Asia/Novosibirsk,2011,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+1150,Asia/Novokuznetsk,1970,Russia,420,60,9,1,-1,0,07:00,10,1,-1,0,06:00
+1151,Asia/Novokuznetsk,1981,Russia,420,60,4,1,-1,0,07:00,10,1,-1,0,06:00
+1152,Asia/Novokuznetsk,1984,Russia,420,60,4,1,-1,0,07:00,9,-1,0,0,09:00
+1153,Asia/Novokuznetsk,1985,Russia,420,60,3,-1,0,0,09:00,9,-1,0,0,09:00
+1154,Asia/Novokuznetsk,1991,Russia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
+1155,Asia/Novokuznetsk,1992,Russia,420,60,3,-1,6,0,30:00,9,-1,6,0,29:00
+1156,Asia/Novokuznetsk,1993,Russia,420,60,3,-1,0,0,09:00,9,-1,0,0,09:00
+1157,Asia/Novokuznetsk,1996,Russia,420,60,3,-1,0,0,09:00,10,-1,0,0,09:00
+1158,Asia/Novokuznetsk,2010,Russia,360,0,3,-1,0,0,08:00,10,-1,0,0,08:00
+1159,Asia/Novokuznetsk,2011,,420,0,0,0,0,0,00:00,0,0,0,0,00:00
+1160,Asia/Krasnoyarsk,1970,Russia,420,60,9,1,-1,0,07:00,10,1,-1,0,06:00
+1161,Asia/Krasnoyarsk,1981,Russia,420,60,4,1,-1,0,07:00,10,1,-1,0,06:00
+1162,Asia/Krasnoyarsk,1984,Russia,420,60,4,1,-1,0,07:00,9,-1,0,0,09:00
+1163,Asia/Krasnoyarsk,1985,Russia,420,60,3,-1,0,0,09:00,9,-1,0,0,09:00
+1164,Asia/Krasnoyarsk,1991,Russia,360,60,3,-1,0,0,08:00,9,-1,0,0,08:00
+1165,Asia/Krasnoyarsk,1992,Russia,420,60,3,-1,6,0,30:00,9,-1,6,0,29:00
+1166,Asia/Krasnoyarsk,1993,Russia,420,60,3,-1,0,0,09:00,9,-1,0,0,09:00
+1167,Asia/Krasnoyarsk,1996,Russia,420,60,3,-1,0,0,09:00,10,-1,0,0,09:00
+1168,Asia/Krasnoyarsk,2010,Russia,420,0,3,-1,0,0,09:00,10,-1,0,0,09:00
+1169,Asia/Krasnoyarsk,2011,,480,0,0,0,0,0,00:00,0,0,0,0,00:00
+1170,Asia/Irkutsk,1970,Russia,480,60,9,1,-1,0,08:00,10,1,-1,0,07:00
+1171,Asia/Irkutsk,1981,Russia,480,60,4,1,-1,0,08:00,10,1,-1,0,07:00
+1172,Asia/Irkutsk,1984,Russia,480,60,4,1,-1,0,08:00,9,-1,0,0,10:00
+1173,Asia/Irkutsk,1985,Russia,480,60,3,-1,0,0,10:00,9,-1,0,0,10:00
+1174,Asia/Irkutsk,1991,Russia,420,60,3,-1,0,0,09:00,9,-1,0,0,09:00
+1175,Asia/Irkutsk,1992,Russia,480,60,3,-1,6,0,31:00,9,-1,6,0,30:00
+1176,Asia/Irkutsk,1993,Russia,480,60,3,-1,0,0,10:00,9,-1,0,0,10:00
+1177,Asia/Irkutsk,1996,Russia,480,60,3,-1,0,0,10:00,10,-1,0,0,10:00
+1178,Asia/Irkutsk,2010,Russia,480,0,3,-1,0,0,10:00,10,-1,0,0,10:00
+1179,Asia/Irkutsk,2011,,540,0,0,0,0,0,00:00,0,0,0,0,00:00
+1180,Asia/Yakutsk,1970,Russia,540,60,9,1,-1,0,09:00,10,1,-1,0,08:00
+1181,Asia/Yakutsk,1981,Russia,540,60,4,1,-1,0,09:00,10,1,-1,0,08:00
+1182,Asia/Yakutsk,1984,Russia,540,60,4,1,-1,0,09:00,9,-1,0,0,11:00
+1183,Asia/Yakutsk,1985,Russia,540,60,3,-1,0,0,11:00,9,-1,0,0,11:00
+1184,Asia/Yakutsk,1991,Russia,480,60,3,-1,0,0,10:00,9,-1,0,0,10:00
+1185,Asia/Yakutsk,1992,Russia,540,60,3,-1,6,0,32:00,9,-1,6,0,31:00
+1186,Asia/Yakutsk,1993,Russia,540,60,3,-1,0,0,11:00,9,-1,0,0,11:00
+1187,Asia/Yakutsk,1996,Russia,540,60,3,-1,0,0,11:00,10,-1,0,0,11:00
+1188,Asia/Yakutsk,2010,Russia,540,0,3,-1,0,0,11:00,10,-1,0,0,11:00
+1189,Asia/Yakutsk,2011,,600,0,0,0,0,0,00:00,0,0,0,0,00:00
+1190,Asia/Vladivostok,1970,Russia,600,60,9,1,-1,0,10:00,10,1,-1,0,09:00
+1191,Asia/Vladivostok,1981,Russia,600,60,4,1,-1,0,10:00,10,1,-1,0,09:00
+1192,Asia/Vladivostok,1984,Russia,600,60,4,1,-1,0,10:00,9,-1,0,0,12:00
+1193,Asia/Vladivostok,1985,Russia,600,60,3,-1,0,0,12:00,9,-1,0,0,12:00
+1194,Asia/Vladivostok,1991,Russia,540,60,3,-1,0,0,11:00,9,-1,0,0,11:00
+1195,Asia/Vladivostok,1992,Russia,600,60,3,-1,6,0,33:00,9,-1,6,0,32:00
+1196,Asia/Vladivostok,1993,Russia,600,60,3,-1,0,0,12:00,9,-1,0,0,12:00
+1197,Asia/Vladivostok,1996,Russia,600,60,3,-1,0,0,12:00,10,-1,0,0,12:00
+1198,Asia/Vladivostok,2010,Russia,600,0,3,-1,0,0,12:00,10,-1,0,0,12:00
+1199,Asia/Vladivostok,2011,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
+1200,Asia/Sakhalin,1970,Russia,660,60,9,1,-1,0,11:00,10,1,-1,0,10:00
+1201,Asia/Sakhalin,1981,Russia,660,60,4,1,-1,0,11:00,10,1,-1,0,10:00
+1202,Asia/Sakhalin,1984,Russia,660,60,4,1,-1,0,11:00,9,-1,0,0,13:00
+1203,Asia/Sakhalin,1985,Russia,660,60,3,-1,0,0,13:00,9,-1,0,0,13:00
+1204,Asia/Sakhalin,1991,Russia,600,60,3,-1,0,0,12:00,9,-1,0,0,12:00
+1205,Asia/Sakhalin,1992,Russia,660,60,3,-1,6,0,34:00,9,-1,6,0,33:00
+1206,Asia/Sakhalin,1993,Russia,660,60,3,-1,0,0,13:00,9,-1,0,0,13:00
+1207,Asia/Sakhalin,1996,Russia,660,60,3,-1,0,0,13:00,10,-1,0,0,13:00
+1208,Asia/Sakhalin,1997,Russia,600,60,3,-1,0,0,12:00,10,-1,0,0,12:00
+1209,Asia/Sakhalin,2010,Russia,600,0,3,-1,0,0,12:00,10,-1,0,0,12:00
+1210,Asia/Sakhalin,2011,,660,0,0,0,0,0,00:00,0,0,0,0,00:00
+1211,Asia/Magadan,1970,Russia,660,60,9,1,-1,0,11:00,10,1,-1,0,10:00
+1212,Asia/Magadan,1981,Russia,660,60,4,1,-1,0,11:00,10,1,-1,0,10:00
+1213,Asia/Magadan,1984,Russia,660,60,4,1,-1,0,11:00,9,-1,0,0,13:00
+1214,Asia/Magadan,1985,Russia,660,60,3,-1,0,0,13:00,9,-1,0,0,13:00
+1215,Asia/Magadan,1991,Russia,600,60,3,-1,0,0,12:00,9,-1,0,0,12:00
+1216,Asia/Magadan,1992,Russia,660,60,3,-1,6,0,34:00,9,-1,6,0,33:00
+1217,Asia/Magadan,1993,Russia,660,60,3,-1,0,0,13:00,9,-1,0,0,13:00
+1218,Asia/Magadan,1996,Russia,660,60,3,-1,0,0,13:00,10,-1,0,0,13:00
+1219,Asia/Magadan,2010,Russia,660,0,3,-1,0,0,13:00,10,-1,0,0,13:00
+1220,Asia/Magadan,2011,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+1221,Asia/Kamchatka,1970,Russia,720,60,9,1,-1,0,12:00,10,1,-1,0,11:00
+1222,Asia/Kamchatka,1981,Russia,720,60,4,1,-1,0,12:00,10,1,-1,0,11:00
+1223,Asia/Kamchatka,1984,Russia,720,60,4,1,-1,0,12:00,9,-1,0,0,14:00
+1224,Asia/Kamchatka,1985,Russia,720,60,3,-1,0,0,14:00,9,-1,0,0,14:00
+1225,Asia/Kamchatka,1991,Russia,660,60,3,-1,0,0,13:00,9,-1,0,0,13:00
+1226,Asia/Kamchatka,1992,Russia,720,60,3,-1,6,0,35:00,9,-1,6,0,34:00
+1227,Asia/Kamchatka,1993,Russia,720,60,3,-1,0,0,14:00,9,-1,0,0,14:00
+1228,Asia/Kamchatka,1996,Russia,720,60,3,-1,0,0,14:00,10,-1,0,0,14:00
+1229,Asia/Kamchatka,2010,Russia,660,0,3,-1,0,0,13:00,10,-1,0,0,13:00
+1230,Asia/Kamchatka,2011,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+1231,Asia/Anadyr,1970,Russia,780,60,9,1,-1,0,13:00,10,1,-1,0,12:00
+1232,Asia/Anadyr,1981,Russia,780,60,4,1,-1,0,13:00,10,1,-1,0,12:00
+1233,Asia/Anadyr,1982,Russia,720,60,4,1,-1,0,12:00,10,1,-1,0,11:00
+1234,Asia/Anadyr,1984,Russia,720,60,4,1,-1,0,12:00,9,-1,0,0,14:00
+1235,Asia/Anadyr,1985,Russia,720,60,3,-1,0,0,14:00,9,-1,0,0,14:00
+1236,Asia/Anadyr,1991,Russia,660,60,3,-1,0,0,13:00,9,-1,0,0,13:00
+1237,Asia/Anadyr,1992,Russia,720,60,3,-1,6,0,35:00,9,-1,6,0,34:00
+1238,Asia/Anadyr,1993,Russia,720,60,3,-1,0,0,14:00,9,-1,0,0,14:00
+1239,Asia/Anadyr,1996,Russia,720,60,3,-1,0,0,14:00,10,-1,0,0,14:00
+1240,Asia/Anadyr,2010,Russia,660,0,3,-1,0,0,13:00,10,-1,0,0,13:00
+1241,Asia/Anadyr,2011,,720,0,0,0,0,0,00:00,0,0,0,0,00:00
+1242,Europe/Belgrade,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
+1243,Europe/Belgrade,1982,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1244,Europe/Belgrade,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1245,Europe/Madrid,1970,Spain,60,60,4,30,-1,0,24:00,9,30,-1,0,01:00
+1246,Europe/Madrid,1974,Spain,60,60,4,13,6,0,24:00,10,1,0,0,01:00
+1247,Europe/Madrid,1976,Spain,60,60,3,27,-1,0,24:00,9,-1,0,0,01:00
+1248,Europe/Madrid,1977,Spain,60,60,4,2,-1,0,24:00,9,-1,0,0,01:00
+1249,Europe/Madrid,1978,Spain,60,60,4,2,-1,0,24:00,10,1,-1,0,01:00
+1250,Europe/Madrid,1979,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+1251,Europe/Madrid,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1252,Europe/Madrid,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1253,Africa/Ceuta,1970,SpainAfrica,0,60,6,3,-1,0,12:00,10,1,-1,0,-1:00
+1254,Africa/Ceuta,1974,SpainAfrica,0,60,6,24,-1,0,00:00,9,1,-1,0,-1:00
+1255,Africa/Ceuta,1976,SpainAfrica,0,60,5,1,-1,0,00:00,8,1,-1,0,-1:00
+1256,Africa/Ceuta,1977,SpainAfrica,0,60,5,1,-1,0,00:00,9,28,-1,0,-1:00
+1257,Africa/Ceuta,1978,SpainAfrica,0,60,6,1,-1,0,00:00,8,4,-1,0,-1:00
+1258,Africa/Ceuta,1979,SpainAfrica,0,0,6,1,-1,0,00:00,8,4,-1,0,-1:00
+1259,Africa/Ceuta,1984,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
+1260,Africa/Ceuta,1986,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1261,Africa/Ceuta,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1262,Atlantic/Canary,1970,,0,0,0,0,0,0,00:00,0,0,0,0,00:00
+1263,Atlantic/Canary,1980,EU,0,60,4,1,0,0,1:00,9,-1,0,0,1:00
+1264,Atlantic/Canary,1981,EU,0,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1265,Atlantic/Canary,1996,EU,0,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1266,Europe/Stockholm,1970,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
+1267,Europe/Stockholm,1980,EU,60,60,4,1,0,0,1:00,9,-1,0,0,1:00
+1268,Europe/Stockholm,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1269,Europe/Stockholm,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1270,Europe/Zurich,1970,Swiss,60,0,5,1,1,0,02:00,10,1,1,0,02:00
+1271,Europe/Zurich,1981,EU,60,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1272,Europe/Zurich,1996,EU,60,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1273,Europe/Istanbul,1970,Turkey,120,60,5,2,0,0,02:00,10,2,0,0,01:00
+1274,Europe/Istanbul,1973,Turkey,120,60,6,3,-1,0,03:00,11,4,-1,0,04:00
+1275,Europe/Istanbul,1974,Turkey,120,60,3,31,-1,0,04:00,11,3,-1,0,06:00
+1276,Europe/Istanbul,1975,Turkey,120,60,3,30,-1,0,02:00,10,-1,0,0,01:00
+1277,Europe/Istanbul,1976,Turkey,120,60,6,1,-1,0,02:00,10,-1,0,0,01:00
+1278,Europe/Istanbul,1977,Turkey,120,60,4,1,0,0,02:00,10,16,-1,0,01:00
+1279,Europe/Istanbul,1978,Turkey,180,60,4,1,0,0,03:00,1,1,-1,0,14:00
+1280,Europe/Istanbul,1979,Turkey,180,60,4,1,0,0,06:00,10,11,1,0,02:00
+1281,Europe/Istanbul,1981,Turkey,180,60,3,-1,0,0,06:00,10,11,1,0,02:00
+1282,Europe/Istanbul,1983,Turkey,180,60,7,31,-1,0,03:00,10,2,-1,0,02:00
+1283,Europe/Istanbul,1985,Turkey,120,60,4,20,-1,0,02:00,9,28,-1,0,01:00
+1284,Europe/Istanbul,1986,Turkey,120,60,3,-1,0,0,04:00,9,-1,0,0,04:00
+1285,Europe/Istanbul,1991,Turkey,120,60,3,-1,0,0,03:00,9,-1,0,0,03:00
+1286,Europe/Istanbul,1996,Turkey,120,60,3,-1,0,0,03:00,10,-1,0,0,03:00
+1287,Europe/Istanbul,2006,Turkey,120,0,3,-1,0,0,03:00,10,-1,0,0,03:00
+1288,Europe/Istanbul,2007,EU,120,0,3,-1,0,0,03:00,10,-1,0,0,03:00
+1289,Europe/Kiev,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
+1290,Europe/Kiev,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
+1291,Europe/Kiev,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
+1292,Europe/Kiev,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+1293,Europe/Kiev,1990,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+1294,Europe/Kiev,1992,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
+1295,Europe/Kiev,1995,EU,120,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1296,Europe/Kiev,1996,EU,120,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1297,Europe/Uzhgorod,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
+1298,Europe/Uzhgorod,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
+1299,Europe/Uzhgorod,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
+1300,Europe/Uzhgorod,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+1301,Europe/Uzhgorod,1990,,60,0,0,0,0,0,00:00,0,0,0,0,00:00
+1302,Europe/Uzhgorod,1991,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+1303,Europe/Uzhgorod,1992,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
+1304,Europe/Uzhgorod,1995,EU,120,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1305,Europe/Uzhgorod,1996,EU,120,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1306,Europe/Zaporozhye,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
+1307,Europe/Zaporozhye,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
+1308,Europe/Zaporozhye,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
+1309,Europe/Zaporozhye,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+1310,Europe/Zaporozhye,1991,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
+1311,Europe/Zaporozhye,1995,EU,120,60,3,-1,0,0,1:00,9,-1,0,0,1:00
+1312,Europe/Zaporozhye,1996,EU,120,60,3,-1,0,0,1:00,10,-1,0,0,1:00
+1313,Europe/Simferopol,1970,Russia,180,60,9,1,-1,0,03:00,10,1,-1,0,02:00
+1314,Europe/Simferopol,1981,Russia,180,60,4,1,-1,0,03:00,10,1,-1,0,02:00
+1315,Europe/Simferopol,1984,Russia,180,60,4,1,-1,0,03:00,9,-1,0,0,05:00
+1316,Europe/Simferopol,1985,Russia,180,60,3,-1,0,0,05:00,9,-1,0,0,05:00
+1317,Europe/Simferopol,1990,,120,0,0,0,0,0,00:00,0,0,0,0,00:00
+1318,Europe/Simferopol,1992,E-Eur,120,60,3,-1,0,0,02:00,9,-1,0,0,01:00
+1319,Europe/Simferopol,1994,E-Eur,180,60,3,-1,0,0,03:00,9,-1,0,0,02:00
+1320,Europe/Simferopol,1996,Russia,180,60,3,-1,0,0,05:00,10,-1,0,0,05:00
+1321,Europe/Simferopol,1997,EU,120,60,3,-1,0,0,04:00,10,-1,0,0,04:00
+1322,EST,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1323,MST,1970,,-420,0,0,0,0,0,00:00,0,0,0,0,00:00
+1324,HST,1970,,-600,0,0,0,0,0,00:00,0,0,0,0,00:00
+1325,EST5EDT,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1326,EST5EDT,1974,US,-300,60,1,6,-1,0,-3:00,10,-1,0,0,-4:00
+1327,EST5EDT,1975,US,-300,60,2,23,-1,0,-3:00,10,-1,0,0,-4:00
+1328,EST5EDT,1976,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1329,EST5EDT,1987,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1330,EST5EDT,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1331,CST6CDT,1970,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1332,CST6CDT,1974,US,-360,60,1,6,-1,0,-4:00,10,-1,0,0,-5:00
+1333,CST6CDT,1975,US,-360,60,2,23,-1,0,-4:00,10,-1,0,0,-5:00
+1334,CST6CDT,1976,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1335,CST6CDT,1987,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1336,CST6CDT,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
+1337,MST7MDT,1970,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1338,MST7MDT,1974,US,-420,60,1,6,-1,0,-5:00,10,-1,0,0,-6:00
+1339,MST7MDT,1975,US,-420,60,2,23,-1,0,-5:00,10,-1,0,0,-6:00
+1340,MST7MDT,1976,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1341,MST7MDT,1987,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1342,MST7MDT,2007,US,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
+1343,PST8PDT,1970,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1344,PST8PDT,1974,US,-480,60,1,6,-1,0,-6:00,10,-1,0,0,-7:00
+1345,PST8PDT,1975,US,-480,60,2,23,-1,0,-6:00,10,-1,0,0,-7:00
+1346,PST8PDT,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1347,PST8PDT,1987,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1348,PST8PDT,2007,US,-480,60,3,8,0,0,-6:00,11,1,0,0,-7:00
+1349,America/New_York,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1350,America/New_York,1974,US,-300,60,1,6,-1,0,-3:00,10,-1,0,0,-4:00
+1351,America/New_York,1975,US,-300,60,2,23,-1,0,-3:00,10,-1,0,0,-4:00
+1352,America/New_York,1976,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1353,America/New_York,1987,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1354,America/New_York,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1355,America/Chicago,1970,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1356,America/Chicago,1974,US,-360,60,1,6,-1,0,-4:00,10,-1,0,0,-5:00
+1357,America/Chicago,1975,US,-360,60,2,23,-1,0,-4:00,10,-1,0,0,-5:00
+1358,America/Chicago,1976,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1359,America/Chicago,1987,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1360,America/Chicago,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
+1361,America/North_Dakota/Center,1970,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1362,America/North_Dakota/Center,1974,US,-420,60,1,6,-1,0,-5:00,10,-1,0,0,-6:00
+1363,America/North_Dakota/Center,1975,US,-420,60,2,23,-1,0,-5:00,10,-1,0,0,-6:00
+1364,America/North_Dakota/Center,1976,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1365,America/North_Dakota/Center,1987,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1366,America/North_Dakota/Center,1992,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1367,America/North_Dakota/Center,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
+1368,America/North_Dakota/New_Salem,1970,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1369,America/North_Dakota/New_Salem,1974,US,-420,60,1,6,-1,0,-5:00,10,-1,0,0,-6:00
+1370,America/North_Dakota/New_Salem,1975,US,-420,60,2,23,-1,0,-5:00,10,-1,0,0,-6:00
+1371,America/North_Dakota/New_Salem,1976,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1372,America/North_Dakota/New_Salem,1987,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1373,America/North_Dakota/New_Salem,2003,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1374,America/North_Dakota/New_Salem,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
+1375,America/North_Dakota/Beulah,1970,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1376,America/North_Dakota/Beulah,1974,US,-420,60,1,6,-1,0,-5:00,10,-1,0,0,-6:00
+1377,America/North_Dakota/Beulah,1975,US,-420,60,2,23,-1,0,-5:00,10,-1,0,0,-6:00
+1378,America/North_Dakota/Beulah,1976,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1379,America/North_Dakota/Beulah,1987,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1380,America/North_Dakota/Beulah,2007,US,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
+1381,America/North_Dakota/Beulah,2010,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
+1382,America/Denver,1970,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1383,America/Denver,1974,US,-420,60,1,6,-1,0,-5:00,10,-1,0,0,-6:00
+1384,America/Denver,1975,US,-420,60,2,23,-1,0,-5:00,10,-1,0,0,-6:00
+1385,America/Denver,1976,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1386,America/Denver,1987,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1387,America/Denver,2007,US,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
+1388,America/Los_Angeles,1970,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1389,America/Los_Angeles,1974,US,-480,60,1,6,-1,0,-6:00,10,-1,0,0,-7:00
+1390,America/Los_Angeles,1975,US,-480,60,2,23,-1,0,-6:00,10,-1,0,0,-7:00
+1391,America/Los_Angeles,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1392,America/Los_Angeles,1987,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1393,America/Los_Angeles,2007,US,-480,60,3,8,0,0,-6:00,11,1,0,0,-7:00
+1394,America/Juneau,1970,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1395,America/Juneau,1974,US,-480,60,1,6,-1,0,-6:00,10,-1,0,0,-7:00
+1396,America/Juneau,1975,US,-480,60,2,23,-1,0,-6:00,10,-1,0,0,-7:00
+1397,America/Juneau,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1398,America/Juneau,1983,US,-540,60,4,-1,0,0,-7:00,10,-1,0,0,-8:00
+1399,America/Juneau,1987,US,-540,60,4,1,0,0,-7:00,10,-1,0,0,-8:00
+1400,America/Juneau,2007,US,-540,60,3,8,0,0,-7:00,11,1,0,0,-8:00
+1401,America/Sitka,1970,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1402,America/Sitka,1974,US,-480,60,1,6,-1,0,-6:00,10,-1,0,0,-7:00
+1403,America/Sitka,1975,US,-480,60,2,23,-1,0,-6:00,10,-1,0,0,-7:00
+1404,America/Sitka,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1405,America/Sitka,1983,US,-540,60,4,-1,0,0,-7:00,10,-1,0,0,-8:00
+1406,America/Sitka,1987,US,-540,60,4,1,0,0,-7:00,10,-1,0,0,-8:00
+1407,America/Sitka,2007,US,-540,60,3,8,0,0,-7:00,11,1,0,0,-8:00
+1408,America/Metlakatla,1970,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1409,America/Metlakatla,1974,US,-480,60,1,6,-1,0,-6:00,10,-1,0,0,-7:00
+1410,America/Metlakatla,1975,US,-480,60,2,23,-1,0,-6:00,10,-1,0,0,-7:00
+1411,America/Metlakatla,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1412,America/Metlakatla,1983,,-480,0,0,0,0,0,00:00,0,0,0,0,00:00
+1413,America/Yakutat,1970,US,-540,60,4,-1,0,0,-7:00,10,-1,0,0,-8:00
+1414,America/Yakutat,1974,US,-540,60,1,6,-1,0,-7:00,10,-1,0,0,-8:00
+1415,America/Yakutat,1975,US,-540,60,2,23,-1,0,-7:00,10,-1,0,0,-8:00
+1416,America/Yakutat,1976,US,-540,60,4,-1,0,0,-7:00,10,-1,0,0,-8:00
+1417,America/Yakutat,1987,US,-540,60,4,1,0,0,-7:00,10,-1,0,0,-8:00
+1418,America/Yakutat,2007,US,-540,60,3,8,0,0,-7:00,11,1,0,0,-8:00
+1419,America/Anchorage,1970,US,-600,60,4,-1,0,0,-8:00,10,-1,0,0,-9:00
+1420,America/Anchorage,1974,US,-600,60,1,6,-1,0,-8:00,10,-1,0,0,-9:00
+1421,America/Anchorage,1975,US,-600,60,2,23,-1,0,-8:00,10,-1,0,0,-9:00
+1422,America/Anchorage,1976,US,-600,60,4,-1,0,0,-8:00,10,-1,0,0,-9:00
+1423,America/Anchorage,1983,US,-540,60,4,-1,0,0,-7:00,10,-1,0,0,-8:00
+1424,America/Anchorage,1987,US,-540,60,4,1,0,0,-7:00,10,-1,0,0,-8:00
+1425,America/Anchorage,2007,US,-540,60,3,8,0,0,-7:00,11,1,0,0,-8:00
+1426,America/Nome,1970,US,-660,60,4,-1,0,0,-9:00,10,-1,0,0,-10:00
+1427,America/Nome,1974,US,-660,60,1,6,-1,0,-9:00,10,-1,0,0,-10:00
+1428,America/Nome,1975,US,-660,60,2,23,-1,0,-9:00,10,-1,0,0,-10:00
+1429,America/Nome,1976,US,-660,60,4,-1,0,0,-9:00,10,-1,0,0,-10:00
+1430,America/Nome,1983,US,-540,60,4,-1,0,0,-7:00,10,-1,0,0,-8:00
+1431,America/Nome,1987,US,-540,60,4,1,0,0,-7:00,10,-1,0,0,-8:00
+1432,America/Nome,2007,US,-540,60,3,8,0,0,-7:00,11,1,0,0,-8:00
+1433,America/Adak,1970,US,-660,60,4,-1,0,0,-9:00,10,-1,0,0,-10:00
+1434,America/Adak,1974,US,-660,60,1,6,-1,0,-9:00,10,-1,0,0,-10:00
+1435,America/Adak,1975,US,-660,60,2,23,-1,0,-9:00,10,-1,0,0,-10:00
+1436,America/Adak,1976,US,-660,60,4,-1,0,0,-9:00,10,-1,0,0,-10:00
+1437,America/Adak,1983,US,-600,60,4,-1,0,0,-8:00,10,-1,0,0,-9:00
+1438,America/Adak,1987,US,-600,60,4,1,0,0,-8:00,10,-1,0,0,-9:00
+1439,America/Adak,2007,US,-600,60,3,8,0,0,-8:00,11,1,0,0,-9:00
+1440,Pacific/Honolulu,1970,,-600,0,0,0,0,0,00:00,0,0,0,0,00:00
+1441,America/Phoenix,1970,,-420,0,0,0,0,0,00:00,0,0,0,0,00:00
+1442,America/Boise,1970,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1443,America/Boise,1974,US,-420,60,1,6,-1,0,-5:00,10,-1,0,0,-6:00
+1444,America/Boise,1975,US,-420,60,2,23,-1,0,-5:00,10,-1,0,0,-6:00
+1445,America/Boise,1976,US,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1446,America/Boise,1987,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1447,America/Boise,2007,US,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
+1448,America/Indiana/Indianapolis,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1449,America/Indiana/Indianapolis,1971,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1450,America/Indiana/Indianapolis,2006,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1451,America/Indiana/Indianapolis,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1452,America/Indiana/Marengo,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1453,America/Indiana/Marengo,1974,US,-300,60,1,6,-1,0,-3:00,10,-1,0,0,-4:00
+1454,America/Indiana/Marengo,1975,US,-300,60,2,23,-1,0,-3:00,10,-1,0,0,-4:00
+1455,America/Indiana/Marengo,1976,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1456,America/Indiana/Marengo,2006,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1457,America/Indiana/Marengo,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1458,America/Indiana/Vincennes,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1459,America/Indiana/Vincennes,1971,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1460,America/Indiana/Vincennes,2006,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1461,America/Indiana/Vincennes,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1462,America/Indiana/Tell_City,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1463,America/Indiana/Tell_City,1971,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1464,America/Indiana/Tell_City,2006,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1465,America/Indiana/Tell_City,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
+1466,America/Indiana/Petersburg,1970,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1467,America/Indiana/Petersburg,1974,US,-360,60,1,6,-1,0,-4:00,10,-1,0,0,-5:00
+1468,America/Indiana/Petersburg,1975,US,-360,60,2,23,-1,0,-4:00,10,-1,0,0,-5:00
+1469,America/Indiana/Petersburg,1976,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1470,America/Indiana/Petersburg,1977,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1471,America/Indiana/Petersburg,2006,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1472,America/Indiana/Petersburg,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1473,America/Indiana/Knox,1970,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1474,America/Indiana/Knox,1974,US,-360,60,1,6,-1,0,-4:00,10,-1,0,0,-5:00
+1475,America/Indiana/Knox,1975,US,-360,60,2,23,-1,0,-4:00,10,-1,0,0,-5:00
+1476,America/Indiana/Knox,1976,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1477,America/Indiana/Knox,1987,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1478,America/Indiana/Knox,1991,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1479,America/Indiana/Knox,2006,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1480,America/Indiana/Knox,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
+1481,America/Indiana/Winamac,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1482,America/Indiana/Winamac,1971,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1483,America/Indiana/Winamac,2006,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1484,America/Indiana/Winamac,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1485,America/Indiana/Vevay,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1486,America/Indiana/Vevay,1973,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1487,America/Indiana/Vevay,2006,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1488,America/Indiana/Vevay,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1489,America/Kentucky/Louisville,1970,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1490,America/Kentucky/Louisville,1974,US,-300,60,1,6,-1,0,-3:00,10,-1,0,0,-4:00
+1491,America/Kentucky/Louisville,1975,US,-300,60,2,23,-1,0,-3:00,10,-1,0,0,-4:00
+1492,America/Kentucky/Louisville,1976,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1493,America/Kentucky/Louisville,1987,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1494,America/Kentucky/Louisville,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1495,America/Kentucky/Monticello,1970,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1496,America/Kentucky/Monticello,1974,US,-360,60,1,6,-1,0,-4:00,10,-1,0,0,-5:00
+1497,America/Kentucky/Monticello,1975,US,-360,60,2,23,-1,0,-4:00,10,-1,0,0,-5:00
+1498,America/Kentucky/Monticello,1976,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1499,America/Kentucky/Monticello,1987,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1500,America/Kentucky/Monticello,2000,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1501,America/Kentucky/Monticello,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1502,America/Detroit,1970,Detroit,-300,0,6,14,-1,0,-3:00,10,-1,0,0,-4:00
+1503,America/Detroit,1973,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1504,America/Detroit,1974,US,-300,60,1,6,-1,0,-3:00,10,-1,0,0,-4:00
+1505,America/Detroit,1975,US,-300,60,2,23,-1,0,-3:00,10,-1,0,0,-4:00
+1506,America/Detroit,1976,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1507,America/Detroit,1987,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1508,America/Detroit,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1509,America/Menominee,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1510,America/Menominee,1973,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1511,America/Menominee,1974,US,-360,60,1,6,-1,0,-4:00,10,-1,0,0,-5:00
+1512,America/Menominee,1975,US,-360,60,2,23,-1,0,-4:00,10,-1,0,0,-5:00
+1513,America/Menominee,1976,US,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1514,America/Menominee,1987,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1515,America/Menominee,2007,US,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
+1516,America/St_Johns,1970,StJohns,-210,60,4,-1,0,0,-1:30,10,-1,0,0,-2:30
+1517,America/St_Johns,1987,StJohns,-210,60,4,1,0,0,-3:29,10,-1,0,0,-4:29
+1518,America/St_Johns,1988,StJohns,-210,120,4,1,0,0,-3:29,10,-1,0,0,-4:29
+1519,America/St_Johns,1989,StJohns,-210,60,4,1,0,0,-3:29,10,-1,0,0,-4:29
+1520,America/St_Johns,2007,StJohns,-210,60,3,8,0,0,-3:29,11,1,0,0,-4:29
+1521,America/St_Johns,2011,Canada,-210,60,3,8,0,0,-3:29,11,1,0,0,-4:29
+1522,America/Goose_Bay,1970,StJohns,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1523,America/Goose_Bay,1987,StJohns,-240,60,4,1,0,0,-3:59,10,-1,0,0,-4:59
+1524,America/Goose_Bay,1988,StJohns,-240,120,4,1,0,0,-3:59,10,-1,0,0,-4:59
+1525,America/Goose_Bay,1989,StJohns,-240,60,4,1,0,0,-3:59,10,-1,0,0,-4:59
+1526,America/Goose_Bay,2007,StJohns,-240,60,3,8,0,0,-3:59,11,1,0,0,-4:59
+1527,America/Goose_Bay,2011,Canada,-240,60,3,8,0,0,-3:59,11,1,0,0,-4:59
+1528,America/Halifax,1970,Halifax,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1529,America/Halifax,1973,Halifax,-240,0,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1530,America/Halifax,1974,Canada,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1531,America/Halifax,1987,Canada,-240,60,4,1,0,0,-2:00,10,-1,0,0,-3:00
+1532,America/Halifax,2007,Canada,-240,60,3,8,0,0,-2:00,11,1,0,0,-3:00
+1533,America/Glace_Bay,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1534,America/Glace_Bay,1972,Halifax,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1535,America/Glace_Bay,1973,Halifax,-240,0,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1536,America/Glace_Bay,1974,Canada,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1537,America/Glace_Bay,1987,Canada,-240,60,4,1,0,0,-2:00,10,-1,0,0,-3:00
+1538,America/Glace_Bay,2007,Canada,-240,60,3,8,0,0,-2:00,11,1,0,0,-3:00
+1539,America/Moncton,1970,Moncton,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1540,America/Moncton,1973,Canada,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1541,America/Moncton,1987,Canada,-240,60,4,1,0,0,-2:00,10,-1,0,0,-3:00
+1542,America/Moncton,1993,Moncton,-240,60,4,1,0,0,-3:59,10,-1,0,0,-4:59
+1543,America/Moncton,2006,Moncton,-240,0,4,1,0,0,-3:59,10,-1,0,0,-4:59
+1544,America/Moncton,2007,Canada,-240,60,3,8,0,0,-2:00,11,1,0,0,-3:00
+1545,America/Blanc-Sablon,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1546,America/Montreal,1970,Mont,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1547,America/Montreal,1974,Canada,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1548,America/Montreal,1987,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1549,America/Montreal,2007,Canada,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1550,America/Toronto,1970,Toronto,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1551,America/Toronto,1973,Toronto,-300,0,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1552,America/Toronto,1974,Canada,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1553,America/Toronto,1987,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1554,America/Toronto,2007,Canada,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1555,America/Thunder_Bay,1970,Mont,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1556,America/Thunder_Bay,1973,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1557,America/Thunder_Bay,1974,Canada,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1558,America/Thunder_Bay,1987,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1559,America/Thunder_Bay,2007,Canada,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1560,America/Nipigon,1970,Canada,-300,60,8,14,-1,0,23:00,9,30,-1,0,-4:00
+1561,America/Nipigon,1974,Canada,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1562,America/Nipigon,1987,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1563,America/Nipigon,2007,Canada,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1564,America/Rainy_River,1970,Canada,-360,60,8,14,-1,0,23:00,9,30,-1,0,-5:00
+1565,America/Rainy_River,1974,Canada,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1566,America/Rainy_River,1987,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1567,America/Rainy_River,2007,Canada,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
+1568,America/Atikokan,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1569,America/Winnipeg,1970,Winn,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-4:00
+1570,America/Winnipeg,1987,Winn,-360,60,4,1,0,0,-4:00,10,-1,0,0,-4:00
+1571,America/Winnipeg,2005,Winn,-360,0,4,1,0,0,-4:00,10,-1,0,0,-4:00
+1572,America/Winnipeg,2006,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1573,America/Winnipeg,2007,Canada,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
+1574,America/Regina,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1575,America/Swift_Current,1970,Swift,-420,0,4,-1,0,0,-5:00,9,-1,0,0,-6:00
+1576,America/Swift_Current,1972,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1577,America/Edmonton,1970,Edm,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1578,America/Edmonton,1987,Canada,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1579,America/Edmonton,2007,Canada,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
+1580,America/Vancouver,1970,Vanc,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1581,America/Vancouver,1987,Canada,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1582,America/Vancouver,2007,Canada,-480,60,3,8,0,0,-6:00,11,1,0,0,-7:00
+1583,America/Dawson_Creek,1970,Vanc,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1584,America/Dawson_Creek,1972,,-420,0,0,0,0,0,00:00,0,0,0,0,00:00
+1585,America/Pangnirtung,1970,NT_YK,-240,120,4,-1,0,0,-4:00,10,-1,0,0,-3:00
+1586,America/Pangnirtung,1980,NT_YK,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1587,America/Pangnirtung,1987,NT_YK,-240,60,4,1,0,0,-2:00,10,-1,0,0,-3:00
+1588,America/Pangnirtung,1995,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1589,America/Pangnirtung,1999,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1590,America/Pangnirtung,2000,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1591,America/Pangnirtung,2007,Canada,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1592,America/Iqaluit,1970,NT_YK,-300,120,4,-1,0,0,-5:00,10,-1,0,0,-4:00
+1593,America/Iqaluit,1980,NT_YK,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1594,America/Iqaluit,1987,NT_YK,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1595,America/Iqaluit,1999,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1596,America/Iqaluit,2000,Canada,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1597,America/Iqaluit,2007,Canada,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1598,America/Resolute,1970,NT_YK,-360,120,4,-1,0,0,-6:00,10,-1,0,0,-5:00
+1599,America/Resolute,1980,NT_YK,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1600,America/Resolute,1987,NT_YK,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1601,America/Resolute,2000,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1602,America/Resolute,2001,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1603,America/Resolute,2006,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1604,America/Resolute,2007,Canada,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
+1605,America/Rankin_Inlet,1970,NT_YK,-360,120,4,-1,0,0,-6:00,10,-1,0,0,-5:00
+1606,America/Rankin_Inlet,1980,NT_YK,-360,60,4,-1,0,0,-4:00,10,-1,0,0,-5:00
+1607,America/Rankin_Inlet,1987,NT_YK,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1608,America/Rankin_Inlet,2000,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1609,America/Rankin_Inlet,2001,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1610,America/Rankin_Inlet,2007,Canada,-360,60,3,8,0,0,-4:00,11,1,0,0,-5:00
+1611,America/Cambridge_Bay,1970,NT_YK,-420,120,4,-1,0,0,-7:00,10,-1,0,0,-6:00
+1612,America/Cambridge_Bay,1980,NT_YK,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1613,America/Cambridge_Bay,1987,NT_YK,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1614,America/Cambridge_Bay,1999,Canada,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1615,America/Cambridge_Bay,2000,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1616,America/Cambridge_Bay,2001,Canada,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1617,America/Cambridge_Bay,2007,Canada,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
+1618,America/Yellowknife,1970,NT_YK,-420,120,4,-1,0,0,-7:00,10,-1,0,0,-6:00
+1619,America/Yellowknife,1980,Canada,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1620,America/Yellowknife,1987,Canada,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1621,America/Yellowknife,2007,Canada,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
+1622,America/Inuvik,1970,NT_YK,-480,120,4,-1,0,0,-8:00,10,-1,0,0,-7:00
+1623,America/Inuvik,1979,NT_YK,-420,120,4,-1,0,0,-7:00,10,-1,0,0,-6:00
+1624,America/Inuvik,1980,Canada,-420,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1625,America/Inuvik,1987,Canada,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1626,America/Inuvik,2007,Canada,-420,60,3,8,0,0,-5:00,11,1,0,0,-6:00
+1627,America/Whitehorse,1970,NT_YK,-480,120,4,-1,0,0,-8:00,10,-1,0,0,-7:00
+1628,America/Whitehorse,1980,Canada,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1629,America/Whitehorse,1987,Canada,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1630,America/Whitehorse,2007,Canada,-480,60,3,8,0,0,-6:00,11,1,0,0,-7:00
+1631,America/Dawson,1970,NT_YK,-540,120,4,-1,0,0,-9:00,10,-1,0,0,-8:00
+1632,America/Dawson,1973,NT_YK,-480,120,4,-1,0,0,-8:00,10,-1,0,0,-7:00
+1633,America/Dawson,1980,Canada,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1634,America/Dawson,1987,Canada,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1635,America/Dawson,2007,Canada,-480,60,3,8,0,0,-6:00,11,1,0,0,-7:00
+1636,America/Cancun,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1637,America/Cancun,1981,Mexico,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1638,America/Cancun,1996,Mexico,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1639,America/Cancun,1998,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1640,America/Cancun,2001,Mexico,-360,60,5,1,0,0,-4:00,9,-1,0,0,-5:00
+1641,America/Cancun,2002,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1642,America/Merida,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1643,America/Merida,1981,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1644,America/Merida,1982,Mexico,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1645,America/Merida,1996,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1646,America/Merida,2001,Mexico,-360,60,5,1,0,0,-4:00,9,-1,0,0,-5:00
+1647,America/Merida,2002,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1648,America/Matamoros,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1649,America/Matamoros,1988,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1650,America/Matamoros,1989,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1651,America/Matamoros,2001,Mexico,-360,60,5,1,0,0,-4:00,9,-1,0,0,-5:00
+1652,America/Matamoros,2002,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1653,America/Matamoros,2010,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1654,America/Monterrey,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1655,America/Monterrey,1988,US,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1656,America/Monterrey,1989,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1657,America/Monterrey,2001,Mexico,-360,60,5,1,0,0,-4:00,9,-1,0,0,-5:00
+1658,America/Monterrey,2002,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1659,America/Mexico_City,1970,Mexico,-360,60,2,12,-1,0,-6:00,7,30,-1,0,-7:00
+1660,America/Mexico_City,1996,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1661,America/Mexico_City,2001,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1662,America/Mexico_City,2002,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1663,America/Ojinaga,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1664,America/Ojinaga,1996,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1665,America/Ojinaga,1998,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1666,America/Ojinaga,2001,Mexico,-420,60,5,1,0,0,-5:00,9,-1,0,0,-6:00
+1667,America/Ojinaga,2002,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1668,America/Ojinaga,2010,US,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1669,America/Chihuahua,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1670,America/Chihuahua,1996,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1671,America/Chihuahua,1998,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1672,America/Chihuahua,2001,Mexico,-420,60,5,1,0,0,-5:00,9,-1,0,0,-6:00
+1673,America/Chihuahua,2002,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1674,America/Hermosillo,1970,Mexico,-420,60,2,12,-1,0,-7:00,7,30,-1,0,-8:00
+1675,America/Hermosillo,1996,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1676,America/Hermosillo,1999,,-420,0,0,0,0,0,00:00,0,0,0,0,00:00
+1677,America/Mazatlan,1970,Mexico,-420,60,2,12,-1,0,-7:00,7,30,-1,0,-8:00
+1678,America/Mazatlan,1996,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1679,America/Mazatlan,2001,Mexico,-420,60,5,1,0,0,-5:00,9,-1,0,0,-6:00
+1680,America/Mazatlan,2002,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1681,America/Bahia_Banderas,1970,Mexico,-420,60,2,12,-1,0,-7:00,7,30,-1,0,-8:00
+1682,America/Bahia_Banderas,1996,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1683,America/Bahia_Banderas,2001,Mexico,-420,60,5,1,0,0,-5:00,9,-1,0,0,-6:00
+1684,America/Bahia_Banderas,2002,Mexico,-420,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1685,America/Bahia_Banderas,2010,Mexico,-360,60,4,1,0,0,-4:00,10,-1,0,0,-5:00
+1686,America/Tijuana,1970,,-480,0,0,0,0,0,00:00,0,0,0,0,00:00
+1687,America/Tijuana,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1688,America/Tijuana,1987,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1689,America/Tijuana,1996,Mexico,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1690,America/Tijuana,2001,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1691,America/Tijuana,2002,Mexico,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1692,America/Tijuana,2010,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1693,America/Santa_Isabel,1970,,-480,0,0,0,0,0,00:00,0,0,0,0,00:00
+1694,America/Santa_Isabel,1976,US,-480,60,4,-1,0,0,-6:00,10,-1,0,0,-7:00
+1695,America/Santa_Isabel,1987,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1696,America/Santa_Isabel,1996,Mexico,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1697,America/Santa_Isabel,2001,US,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1698,America/Santa_Isabel,2002,Mexico,-480,60,4,1,0,0,-6:00,10,-1,0,0,-7:00
+1699,America/Anguilla,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1700,America/Antigua,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1701,America/Nassau,1970,Bahamas,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1702,America/Nassau,1975,Bahamas,-300,0,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1703,America/Nassau,1976,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1704,America/Nassau,1987,US,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1705,America/Nassau,2007,US,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1706,America/Barbados,1970,Barb,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1707,America/Barbados,1977,Barb,-240,60,6,12,-1,0,-2:00,10,1,0,0,-3:00
+1708,America/Barbados,1978,Barb,-240,60,4,15,0,0,-2:00,10,1,0,0,-3:00
+1709,America/Barbados,1979,Barb,-240,60,4,15,0,0,-2:00,9,30,-1,0,-3:00
+1710,America/Barbados,1980,Barb,-240,60,4,15,0,0,-2:00,9,25,-1,0,-3:00
+1711,America/Barbados,1981,Barb,-240,0,4,15,0,0,-2:00,9,25,-1,0,-3:00
+1712,America/Belize,1970,Belize,-360,0,12,31,-1,0,06:00,2,9,0,0,-7:00
+1713,America/Belize,1973,Belize,-360,60,12,5,-1,0,-6:00,1,1,-1,0,05:00
+1714,America/Belize,1974,Belize,-360,0,12,31,-1,0,06:00,2,9,-1,0,-7:00
+1715,America/Belize,1982,Belize,-360,60,12,18,-1,0,-6:00,1,1,-1,0,05:00
+1716,America/Belize,1983,Belize,-360,0,12,31,-1,0,06:00,2,12,-1,0,-7:00
+1717,Atlantic/Bermuda,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1718,Atlantic/Bermuda,1974,Bahamas,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1719,Atlantic/Bermuda,1975,Bahamas,-240,0,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1720,Atlantic/Bermuda,1976,US,-240,60,4,-1,0,0,-2:00,10,-1,0,0,-3:00
+1721,Atlantic/Bermuda,1987,US,-240,60,4,1,0,0,-2:00,10,-1,0,0,-3:00
+1722,Atlantic/Bermuda,2007,US,-240,60,3,8,0,0,-2:00,11,1,0,0,-3:00
+1723,America/Cayman,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1724,America/Costa_Rica,1970,CR,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1725,America/Costa_Rica,1979,CR,-360,60,2,-1,0,0,-6:00,6,1,0,0,-7:00
+1726,America/Costa_Rica,1991,CR,-360,60,1,15,6,0,-6:00,7,1,-1,0,-7:00
+1727,America/Costa_Rica,1992,CR,-360,60,1,15,6,0,-6:00,3,15,-1,0,-7:00
+1728,America/Costa_Rica,1993,CR,-360,0,1,15,6,0,-6:00,3,15,-1,0,-7:00
+1729,America/Havana,1970,Cuba,-300,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1730,America/Havana,1972,Cuba,-300,60,4,-1,0,0,-5:00,10,8,-1,0,-6:00
+1731,America/Havana,1975,Cuba,-300,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1732,America/Havana,1978,Cuba,-300,60,5,7,-1,0,-5:00,10,8,0,0,-6:00
+1733,America/Havana,1979,Cuba,-300,60,3,15,0,0,-5:00,10,8,0,0,-6:00
+1734,America/Havana,1981,Cuba,-300,60,5,5,0,0,-5:00,10,8,0,0,-6:00
+1735,America/Havana,1986,Cuba,-300,60,3,14,0,0,-5:00,10,8,0,0,-6:00
+1736,America/Havana,1990,Cuba,-300,60,4,1,0,0,-5:00,10,8,0,0,-6:00
+1737,America/Havana,1991,Cuba,-300,60,4,1,0,0,-5:00,10,8,0,0,-5:00
+1738,America/Havana,1996,Cuba,-300,60,4,1,0,0,-5:00,10,6,-1,0,-5:00
+1739,America/Havana,1997,Cuba,-300,60,4,1,0,0,-5:00,10,12,-1,0,-5:00
+1740,America/Havana,1998,Cuba,-300,60,3,-1,0,0,-5:00,10,-1,0,0,-5:00
+1741,America/Havana,2000,Cuba,-300,60,4,1,0,0,-5:00,10,-1,0,0,-5:00
+1742,America/Havana,2004,Cuba,-300,60,4,1,0,0,-5:00,1,1,-1,0,06:00
+1743,America/Havana,2006,Cuba,-300,0,12,31,-1,0,07:00,10,-1,0,0,-5:00
+1744,America/Havana,2007,Cuba,-300,60,3,8,0,0,-5:00,10,-1,0,0,-5:00
+1745,America/Havana,2008,Cuba,-300,60,3,15,0,0,-5:00,10,-1,0,0,-5:00
+1746,America/Havana,2009,Cuba,-300,60,3,8,0,0,-5:00,10,-1,0,0,-5:00
+1747,America/Havana,2011,Cuba,-300,60,3,15,0,0,-5:00,11,13,-1,0,-5:00
+1748,America/Havana,2012,Cuba,-300,60,3,8,0,0,-5:00,10,-1,0,0,-5:00
+1749,America/Dominica,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1750,America/Santo_Domingo,1970,DR,-300,30,10,-1,0,0,-5:00,2,21,-1,0,-6:00
+1751,America/Santo_Domingo,1971,DR,-300,30,10,-1,0,0,-5:00,1,20,-1,0,-6:00
+1752,America/Santo_Domingo,1972,DR,-300,30,10,-1,0,0,-5:00,1,21,-1,0,-6:00
+1753,America/Santo_Domingo,1974,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1754,America/El_Salvador,1970,Salv,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1755,America/El_Salvador,1987,Salv,-360,60,5,1,0,0,-6:00,9,-1,0,0,-7:00
+1756,America/El_Salvador,1988,Salv,-360,0,5,1,0,0,-6:00,9,-1,0,0,-7:00
+1757,America/Grenada,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1758,America/Guadeloupe,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1759,America/Guatemala,1970,Guat,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1760,America/Guatemala,1973,Guat,-360,60,11,25,-1,0,-6:00,1,1,-1,0,05:00
+1761,America/Guatemala,1974,Guat,-360,0,12,31,-1,0,06:00,2,24,-1,0,-7:00
+1762,America/Guatemala,1983,Guat,-360,60,5,21,-1,0,-6:00,9,22,-1,0,-7:00
+1763,America/Guatemala,1991,Guat,-360,60,3,23,-1,0,-6:00,9,7,-1,0,-7:00
+1764,America/Guatemala,2006,Guat,-360,60,4,30,-1,0,-6:00,10,1,-1,0,-7:00
+1765,America/Guatemala,2007,Guat,-360,0,4,30,-1,0,-6:00,10,1,-1,0,-7:00
+1766,America/Port-au-Prince,1970,Haiti,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1767,America/Port-au-Prince,1983,Haiti,-300,60,5,8,-1,0,-5:00,10,-1,0,0,-6:00
+1768,America/Port-au-Prince,1984,Haiti,-300,60,4,-1,0,0,-5:00,10,-1,0,0,-6:00
+1769,America/Port-au-Prince,1988,Haiti,-300,60,4,1,0,0,-4:00,10,-1,0,0,-4:00
+1770,America/Port-au-Prince,2005,Haiti,-300,60,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1771,America/Port-au-Prince,2006,Haiti,-300,0,4,1,0,0,-5:00,10,-1,0,0,-6:00
+1772,America/Tegucigalpa,1970,Hond,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1773,America/Tegucigalpa,1987,Hond,-360,60,5,1,0,0,-6:00,9,-1,0,0,-7:00
+1774,America/Tegucigalpa,2006,Hond,-360,60,5,1,0,0,-6:00,8,1,1,0,-7:00
+1775,America/Tegucigalpa,2007,Hond,-360,0,5,1,0,0,-6:00,8,1,1,0,-7:00
+1776,America/Jamaica,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1777,America/Jamaica,1974,US,-300,60,1,6,-1,0,-3:00,10,-1,0,0,-4:00
+1778,America/Jamaica,1975,US,-300,60,2,23,-1,0,-3:00,10,-1,0,0,-4:00
+1779,America/Jamaica,1976,US,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1780,America/Jamaica,1984,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1781,America/Martinique,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1782,America/Martinique,1980,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1783,America/Montserrat,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1784,America/Managua,1970,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1785,America/Managua,1973,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1786,America/Managua,1975,Nic,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1787,America/Managua,1979,Nic,-360,60,3,16,0,0,-6:00,6,23,1,0,-7:00
+1788,America/Managua,1992,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1789,America/Managua,1993,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1790,America/Managua,1997,Nic,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+1791,America/Managua,2005,Nic,-360,60,4,10,-1,0,-6:00,10,1,0,0,-7:00
+1792,America/Managua,2006,Nic,-360,60,4,30,-1,0,-4:00,10,1,0,0,-6:00
+1793,America/Managua,2007,Nic,-360,0,4,30,-1,0,-4:00,10,1,0,0,-6:00
+1794,America/Panama,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1795,America/Puerto_Rico,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1796,America/St_Kitts,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1797,America/St_Lucia,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1798,America/Miquelon,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1799,America/Miquelon,1980,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1800,America/Miquelon,1987,Canada,-180,60,4,1,0,0,-1:00,10,-1,0,0,-2:00
+1801,America/Miquelon,2007,Canada,-180,60,3,8,0,0,-1:00,11,1,0,0,-2:00
+1802,America/St_Vincent,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1803,America/Grand_Turk,1970,TC,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+1804,America/Grand_Turk,1979,TC,-300,60,4,-1,0,0,-3:00,10,-1,0,0,-4:00
+1805,America/Grand_Turk,1987,TC,-300,60,4,1,0,0,-3:00,10,-1,0,0,-4:00
+1806,America/Grand_Turk,2007,TC,-300,60,3,8,0,0,-3:00,11,1,0,0,-4:00
+1807,America/Tortola,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1808,America/St_Thomas,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1809,America/Argentina/Buenos_Aires,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+1810,America/Argentina/Buenos_Aires,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+1811,America/Argentina/Buenos_Aires,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
+1812,America/Argentina/Buenos_Aires,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1813,America/Argentina/Buenos_Aires,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
+1814,America/Argentina/Buenos_Aires,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
+1815,America/Argentina/Buenos_Aires,2000,Arg,-180,0,12,31,-1,0,09:00,3,3,-1,0,-4:00
+1816,America/Argentina/Buenos_Aires,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
+1817,America/Argentina/Buenos_Aires,2008,Arg,-180,60,10,15,0,0,-3:00,3,15,0,0,-4:00
+1818,America/Argentina/Buenos_Aires,2009,Arg,-180,0,12,31,-1,0,09:00,3,15,0,0,-4:00
+1819,America/Argentina/Cordoba,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+1820,America/Argentina/Cordoba,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+1821,America/Argentina/Cordoba,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
+1822,America/Argentina/Cordoba,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1823,America/Argentina/Cordoba,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
+1824,America/Argentina/Cordoba,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
+1825,America/Argentina/Cordoba,2000,Arg,-180,0,12,31,-1,0,09:00,3,3,-1,0,-4:00
+1826,America/Argentina/Cordoba,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
+1827,America/Argentina/Cordoba,2008,Arg,-180,60,10,15,0,0,-3:00,3,15,0,0,-4:00
+1828,America/Argentina/Cordoba,2009,Arg,-180,0,12,31,-1,0,09:00,3,15,0,0,-4:00
+1829,America/Argentina/Salta,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+1830,America/Argentina/Salta,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+1831,America/Argentina/Salta,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
+1832,America/Argentina/Salta,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1833,America/Argentina/Salta,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
+1834,America/Argentina/Salta,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
+1835,America/Argentina/Salta,2000,Arg,-180,0,12,31,-1,0,09:00,3,3,-1,0,-4:00
+1836,America/Argentina/Salta,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
+1837,America/Argentina/Salta,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1838,America/Argentina/Tucuman,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+1839,America/Argentina/Tucuman,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+1840,America/Argentina/Tucuman,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
+1841,America/Argentina/Tucuman,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1842,America/Argentina/Tucuman,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
+1843,America/Argentina/Tucuman,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
+1844,America/Argentina/Tucuman,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1845,America/Argentina/Tucuman,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1846,America/Argentina/Tucuman,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
+1847,America/Argentina/Tucuman,2008,Arg,-180,60,10,15,0,0,-3:00,3,15,0,0,-4:00
+1848,America/Argentina/Tucuman,2009,Arg,-180,0,12,31,-1,0,09:00,3,15,0,0,-4:00
+1849,America/Argentina/La_Rioja,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+1850,America/Argentina/La_Rioja,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+1851,America/Argentina/La_Rioja,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
+1852,America/Argentina/La_Rioja,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1853,America/Argentina/La_Rioja,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
+1854,America/Argentina/La_Rioja,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
+1855,America/Argentina/La_Rioja,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1856,America/Argentina/La_Rioja,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1857,America/Argentina/La_Rioja,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
+1858,America/Argentina/La_Rioja,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1859,America/Argentina/San_Juan,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+1860,America/Argentina/San_Juan,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+1861,America/Argentina/San_Juan,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
+1862,America/Argentina/San_Juan,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1863,America/Argentina/San_Juan,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
+1864,America/Argentina/San_Juan,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
+1865,America/Argentina/San_Juan,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1866,America/Argentina/San_Juan,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1867,America/Argentina/San_Juan,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
+1868,America/Argentina/San_Juan,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1869,America/Argentina/Jujuy,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+1870,America/Argentina/Jujuy,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+1871,America/Argentina/Jujuy,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
+1872,America/Argentina/Jujuy,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1873,America/Argentina/Jujuy,1990,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1874,America/Argentina/Jujuy,1991,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1875,America/Argentina/Jujuy,1992,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1876,America/Argentina/Jujuy,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
+1877,America/Argentina/Jujuy,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
+1878,America/Argentina/Jujuy,2000,Arg,-180,0,12,31,-1,0,09:00,3,3,-1,0,-4:00
+1879,America/Argentina/Jujuy,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
+1880,America/Argentina/Jujuy,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1881,America/Argentina/Catamarca,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+1882,America/Argentina/Catamarca,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+1883,America/Argentina/Catamarca,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
+1884,America/Argentina/Catamarca,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1885,America/Argentina/Catamarca,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
+1886,America/Argentina/Catamarca,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
+1887,America/Argentina/Catamarca,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1888,America/Argentina/Catamarca,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1889,America/Argentina/Catamarca,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
+1890,America/Argentina/Catamarca,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1891,America/Argentina/Mendoza,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+1892,America/Argentina/Mendoza,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+1893,America/Argentina/Mendoza,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
+1894,America/Argentina/Mendoza,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1895,America/Argentina/Mendoza,1990,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1896,America/Argentina/Mendoza,1992,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1897,America/Argentina/Mendoza,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
+1898,America/Argentina/Mendoza,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
+1899,America/Argentina/Mendoza,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1900,America/Argentina/Mendoza,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1901,America/Argentina/Mendoza,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
+1902,America/Argentina/Mendoza,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1903,America/Argentina/San_Luis,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+1904,America/Argentina/San_Luis,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+1905,America/Argentina/San_Luis,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
+1906,America/Argentina/San_Luis,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1907,America/Argentina/San_Luis,1990,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1908,America/Argentina/San_Luis,1991,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1909,America/Argentina/San_Luis,1999,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1910,America/Argentina/San_Luis,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1911,America/Argentina/San_Luis,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1912,America/Argentina/San_Luis,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
+1913,America/Argentina/San_Luis,2008,SanLuis,-240,60,10,8,0,0,-4:00,3,8,0,0,-5:00
+1914,America/Argentina/Rio_Gallegos,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+1915,America/Argentina/Rio_Gallegos,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+1916,America/Argentina/Rio_Gallegos,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
+1917,America/Argentina/Rio_Gallegos,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1918,America/Argentina/Rio_Gallegos,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
+1919,America/Argentina/Rio_Gallegos,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
+1920,America/Argentina/Rio_Gallegos,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1921,America/Argentina/Rio_Gallegos,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1922,America/Argentina/Rio_Gallegos,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
+1923,America/Argentina/Rio_Gallegos,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1924,America/Argentina/Ushuaia,1970,Arg,-180,0,12,31,-1,0,09:00,4,1,0,0,-4:00
+1925,America/Argentina/Ushuaia,1974,Arg,-180,60,1,23,-1,0,-3:00,5,1,-1,0,-4:00
+1926,America/Argentina/Ushuaia,1988,Arg,-180,60,12,1,-1,0,-3:00,1,1,-1,0,08:00
+1927,America/Argentina/Ushuaia,1989,Arg,-180,60,10,15,0,0,-3:00,3,1,0,0,-4:00
+1928,America/Argentina/Ushuaia,1993,Arg,-180,0,12,31,-1,0,09:00,3,1,0,0,-4:00
+1929,America/Argentina/Ushuaia,1999,Arg,-240,60,10,1,0,0,-4:00,1,1,-1,0,07:00
+1930,America/Argentina/Ushuaia,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1931,America/Argentina/Ushuaia,2004,Arg,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1932,America/Argentina/Ushuaia,2007,Arg,-180,60,12,30,-1,0,-3:00,1,1,-1,0,08:00
+1933,America/Argentina/Ushuaia,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1934,America/Aruba,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1935,America/La_Paz,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1936,America/Noronha,1970,Brazil,-120,0,12,31,-1,0,10:00,3,1,-1,0,-3:00
+1937,America/Noronha,1985,Brazil,-120,60,11,2,-1,0,-2:00,1,1,-1,0,09:00
+1938,America/Noronha,1986,Brazil,-120,60,10,25,-1,0,-2:00,3,15,-1,0,-3:00
+1939,America/Noronha,1987,Brazil,-120,60,10,25,-1,0,-2:00,2,14,-1,0,-3:00
+1940,America/Noronha,1988,Brazil,-120,60,10,16,-1,0,-2:00,2,7,-1,0,-3:00
+1941,America/Noronha,1989,Brazil,-120,60,10,15,-1,0,-2:00,1,29,-1,0,-3:00
+1942,America/Noronha,1990,,-120,0,0,0,0,0,00:00,0,0,0,0,00:00
+1943,America/Noronha,1999,Brazil,-120,60,10,3,-1,0,-2:00,2,21,-1,0,-3:00
+1944,America/Noronha,2000,,-120,0,0,0,0,0,00:00,0,0,0,0,00:00
+1945,America/Noronha,2001,Brazil,-120,60,10,8,0,0,-2:00,2,15,0,0,-3:00
+1946,America/Noronha,2002,,-120,0,0,0,0,0,00:00,0,0,0,0,00:00
+1947,America/Belem,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
+1948,America/Belem,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
+1949,America/Belem,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
+1950,America/Belem,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
+1951,America/Belem,1988,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1952,America/Santarem,1970,Brazil,-240,0,12,31,-1,0,08:00,3,1,-1,0,-5:00
+1953,America/Santarem,1985,Brazil,-240,60,11,2,-1,0,-4:00,1,1,-1,0,07:00
+1954,America/Santarem,1986,Brazil,-240,60,10,25,-1,0,-4:00,3,15,-1,0,-5:00
+1955,America/Santarem,1987,Brazil,-240,60,10,25,-1,0,-4:00,2,14,-1,0,-5:00
+1956,America/Santarem,1988,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+1957,America/Santarem,2008,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1958,America/Fortaleza,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
+1959,America/Fortaleza,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
+1960,America/Fortaleza,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
+1961,America/Fortaleza,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
+1962,America/Fortaleza,1988,Brazil,-180,60,10,16,-1,0,-3:00,2,7,-1,0,-4:00
+1963,America/Fortaleza,1989,Brazil,-180,60,10,15,-1,0,-3:00,1,29,-1,0,-4:00
+1964,America/Fortaleza,1990,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1965,America/Fortaleza,1999,Brazil,-180,60,10,3,-1,0,-3:00,2,21,-1,0,-4:00
+1966,America/Fortaleza,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1967,America/Fortaleza,2001,Brazil,-180,60,10,8,0,0,-3:00,2,15,0,0,-4:00
+1968,America/Fortaleza,2002,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1969,America/Recife,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
+1970,America/Recife,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
+1971,America/Recife,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
+1972,America/Recife,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
+1973,America/Recife,1988,Brazil,-180,60,10,16,-1,0,-3:00,2,7,-1,0,-4:00
+1974,America/Recife,1989,Brazil,-180,60,10,15,-1,0,-3:00,1,29,-1,0,-4:00
+1975,America/Recife,1990,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1976,America/Recife,1999,Brazil,-180,60,10,3,-1,0,-3:00,2,21,-1,0,-4:00
+1977,America/Recife,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1978,America/Recife,2001,Brazil,-180,60,10,8,0,0,-3:00,2,15,0,0,-4:00
+1979,America/Recife,2002,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1980,America/Araguaina,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
+1981,America/Araguaina,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
+1982,America/Araguaina,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
+1983,America/Araguaina,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
+1984,America/Araguaina,1988,Brazil,-180,60,10,16,-1,0,-3:00,2,7,-1,0,-4:00
+1985,America/Araguaina,1989,Brazil,-180,60,10,15,-1,0,-3:00,1,29,-1,0,-4:00
+1986,America/Araguaina,1990,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1987,America/Araguaina,1995,Brazil,-180,60,10,11,0,0,-3:00,2,15,0,0,-4:00
+1988,America/Araguaina,1996,Brazil,-180,60,10,6,-1,0,-3:00,2,11,-1,0,-4:00
+1989,America/Araguaina,1997,Brazil,-180,60,10,6,-1,0,-3:00,2,16,-1,0,-4:00
+1990,America/Araguaina,1998,Brazil,-180,60,10,11,-1,0,-3:00,3,1,-1,0,-4:00
+1991,America/Araguaina,1999,Brazil,-180,60,10,3,-1,0,-3:00,2,21,-1,0,-4:00
+1992,America/Araguaina,2000,Brazil,-180,60,10,8,0,0,-3:00,2,27,-1,0,-4:00
+1993,America/Araguaina,2001,Brazil,-180,60,10,8,0,0,-3:00,2,15,0,0,-4:00
+1994,America/Araguaina,2002,Brazil,-180,60,11,3,-1,0,-3:00,2,15,0,0,-4:00
+1995,America/Araguaina,2003,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+1996,America/Maceio,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
+1997,America/Maceio,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
+1998,America/Maceio,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
+1999,America/Maceio,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
+2000,America/Maceio,1988,Brazil,-180,60,10,16,-1,0,-3:00,2,7,-1,0,-4:00
+2001,America/Maceio,1989,Brazil,-180,60,10,15,-1,0,-3:00,1,29,-1,0,-4:00
+2002,America/Maceio,1990,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+2003,America/Maceio,1995,Brazil,-180,60,10,11,0,0,-3:00,2,15,0,0,-4:00
+2004,America/Maceio,1996,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+2005,America/Maceio,1999,Brazil,-180,60,10,3,-1,0,-3:00,2,21,-1,0,-4:00
+2006,America/Maceio,2000,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+2007,America/Maceio,2001,Brazil,-180,60,10,8,0,0,-3:00,2,15,0,0,-4:00
+2008,America/Maceio,2002,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+2009,America/Bahia,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
+2010,America/Bahia,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
+2011,America/Bahia,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
+2012,America/Bahia,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
+2013,America/Bahia,1988,Brazil,-180,60,10,16,-1,0,-3:00,2,7,-1,0,-4:00
+2014,America/Bahia,1989,Brazil,-180,60,10,15,-1,0,-3:00,1,29,-1,0,-4:00
+2015,America/Bahia,1990,Brazil,-180,60,10,21,-1,0,-3:00,2,11,-1,0,-4:00
+2016,America/Bahia,1991,Brazil,-180,60,10,20,-1,0,-3:00,2,17,-1,0,-4:00
+2017,America/Bahia,1992,Brazil,-180,60,10,25,-1,0,-3:00,2,9,-1,0,-4:00
+2018,America/Bahia,1993,Brazil,-180,60,10,11,0,0,-3:00,1,31,-1,0,-4:00
+2019,America/Bahia,1994,Brazil,-180,60,10,11,0,0,-3:00,2,15,0,0,-4:00
+2020,America/Bahia,1996,Brazil,-180,60,10,6,-1,0,-3:00,2,11,-1,0,-4:00
+2021,America/Bahia,1997,Brazil,-180,60,10,6,-1,0,-3:00,2,16,-1,0,-4:00
+2022,America/Bahia,1998,Brazil,-180,60,10,11,-1,0,-3:00,3,1,-1,0,-4:00
+2023,America/Bahia,1999,Brazil,-180,60,10,3,-1,0,-3:00,2,21,-1,0,-4:00
+2024,America/Bahia,2000,Brazil,-180,60,10,8,0,0,-3:00,2,27,-1,0,-4:00
+2025,America/Bahia,2001,Brazil,-180,60,10,8,0,0,-3:00,2,15,0,0,-4:00
+2026,America/Bahia,2002,Brazil,-180,60,11,3,-1,0,-3:00,2,15,0,0,-4:00
+2027,America/Bahia,2003,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+2028,America/Bahia,2011,Brazil,-180,60,10,15,0,0,-3:00,2,15,0,0,-4:00
+2029,America/Bahia,2012,Brazil,-180,60,10,15,0,0,-3:00,2,22,0,0,-4:00
+2030,America/Bahia,2013,Brazil,-180,60,10,15,0,0,-3:00,2,15,0,0,-4:00
+2031,America/Bahia,2015,Brazil,-180,60,10,15,0,0,-3:00,2,22,0,0,-4:00
+2032,America/Bahia,2016,Brazil,-180,60,10,15,0,0,-3:00,2,15,0,0,-4:00
+2033,America/Sao_Paulo,1970,Brazil,-180,0,12,31,-1,0,09:00,3,1,-1,0,-4:00
+2034,America/Sao_Paulo,1985,Brazil,-180,60,11,2,-1,0,-3:00,1,1,-1,0,08:00
+2035,America/Sao_Paulo,1986,Brazil,-180,60,10,25,-1,0,-3:00,3,15,-1,0,-4:00
+2036,America/Sao_Paulo,1987,Brazil,-180,60,10,25,-1,0,-3:00,2,14,-1,0,-4:00
+2037,America/Sao_Paulo,1988,Brazil,-180,60,10,16,-1,0,-3:00,2,7,-1,0,-4:00
+2038,America/Sao_Paulo,1989,Brazil,-180,60,10,15,-1,0,-3:00,1,29,-1,0,-4:00
+2039,America/Sao_Paulo,1990,Brazil,-180,60,10,21,-1,0,-3:00,2,11,-1,0,-4:00
+2040,America/Sao_Paulo,1991,Brazil,-180,60,10,20,-1,0,-3:00,2,17,-1,0,-4:00
+2041,America/Sao_Paulo,1992,Brazil,-180,60,10,25,-1,0,-3:00,2,9,-1,0,-4:00
+2042,America/Sao_Paulo,1993,Brazil,-180,60,10,11,0,0,-3:00,1,31,-1,0,-4:00
+2043,America/Sao_Paulo,1994,Brazil,-180,60,10,11,0,0,-3:00,2,15,0,0,-4:00
+2044,America/Sao_Paulo,1996,Brazil,-180,60,10,6,-1,0,-3:00,2,11,-1,0,-4:00
+2045,America/Sao_Paulo,1997,Brazil,-180,60,10,6,-1,0,-3:00,2,16,-1,0,-4:00
+2046,America/Sao_Paulo,1998,Brazil,-180,60,10,11,-1,0,-3:00,3,1,-1,0,-4:00
+2047,America/Sao_Paulo,1999,Brazil,-180,60,10,3,-1,0,-3:00,2,21,-1,0,-4:00
+2048,America/Sao_Paulo,2000,Brazil,-180,60,10,8,0,0,-3:00,2,27,-1,0,-4:00
+2049,America/Sao_Paulo,2001,Brazil,-180,60,10,8,0,0,-3:00,2,15,0,0,-4:00
+2050,America/Sao_Paulo,2002,Brazil,-180,60,11,3,-1,0,-3:00,2,15,0,0,-4:00
+2051,America/Sao_Paulo,2003,Brazil,-180,60,10,19,-1,0,-3:00,2,15,0,0,-4:00
+2052,America/Sao_Paulo,2004,Brazil,-180,60,11,2,-1,0,-3:00,2,15,0,0,-4:00
+2053,America/Sao_Paulo,2005,Brazil,-180,60,10,16,-1,0,-3:00,2,15,0,0,-4:00
+2054,America/Sao_Paulo,2006,Brazil,-180,60,11,5,-1,0,-3:00,2,15,0,0,-4:00
+2055,America/Sao_Paulo,2007,Brazil,-180,60,10,8,0,0,-3:00,2,25,-1,0,-4:00
+2056,America/Sao_Paulo,2008,Brazil,-180,60,10,15,0,0,-3:00,2,15,0,0,-4:00
+2057,America/Sao_Paulo,2012,Brazil,-180,60,10,15,0,0,-3:00,2,22,0,0,-4:00
+2058,America/Sao_Paulo,2013,Brazil,-180,60,10,15,0,0,-3:00,2,15,0,0,-4:00
+2059,America/Sao_Paulo,2015,Brazil,-180,60,10,15,0,0,-3:00,2,22,0,0,-4:00
+2060,America/Sao_Paulo,2016,Brazil,-180,60,10,15,0,0,-3:00,2,15,0,0,-4:00
+2061,America/Campo_Grande,1970,Brazil,-240,0,12,31,-1,0,08:00,3,1,-1,0,-5:00
+2062,America/Campo_Grande,1985,Brazil,-240,60,11,2,-1,0,-4:00,1,1,-1,0,07:00
+2063,America/Campo_Grande,1986,Brazil,-240,60,10,25,-1,0,-4:00,3,15,-1,0,-5:00
+2064,America/Campo_Grande,1987,Brazil,-240,60,10,25,-1,0,-4:00,2,14,-1,0,-5:00
+2065,America/Campo_Grande,1988,Brazil,-240,60,10,16,-1,0,-4:00,2,7,-1,0,-5:00
+2066,America/Campo_Grande,1989,Brazil,-240,60,10,15,-1,0,-4:00,1,29,-1,0,-5:00
+2067,America/Campo_Grande,1990,Brazil,-240,60,10,21,-1,0,-4:00,2,11,-1,0,-5:00
+2068,America/Campo_Grande,1991,Brazil,-240,60,10,20,-1,0,-4:00,2,17,-1,0,-5:00
+2069,America/Campo_Grande,1992,Brazil,-240,60,10,25,-1,0,-4:00,2,9,-1,0,-5:00
+2070,America/Campo_Grande,1993,Brazil,-240,60,10,11,0,0,-4:00,1,31,-1,0,-5:00
+2071,America/Campo_Grande,1994,Brazil,-240,60,10,11,0,0,-4:00,2,15,0,0,-5:00
+2072,America/Campo_Grande,1996,Brazil,-240,60,10,6,-1,0,-4:00,2,11,-1,0,-5:00
+2073,America/Campo_Grande,1997,Brazil,-240,60,10,6,-1,0,-4:00,2,16,-1,0,-5:00
+2074,America/Campo_Grande,1998,Brazil,-240,60,10,11,-1,0,-4:00,3,1,-1,0,-5:00
+2075,America/Campo_Grande,1999,Brazil,-240,60,10,3,-1,0,-4:00,2,21,-1,0,-5:00
+2076,America/Campo_Grande,2000,Brazil,-240,60,10,8,0,0,-4:00,2,27,-1,0,-5:00
+2077,America/Campo_Grande,2001,Brazil,-240,60,10,8,0,0,-4:00,2,15,0,0,-5:00
+2078,America/Campo_Grande,2002,Brazil,-240,60,11,3,-1,0,-4:00,2,15,0,0,-5:00
+2079,America/Campo_Grande,2003,Brazil,-240,60,10,19,-1,0,-4:00,2,15,0,0,-5:00
+2080,America/Campo_Grande,2004,Brazil,-240,60,11,2,-1,0,-4:00,2,15,0,0,-5:00
+2081,America/Campo_Grande,2005,Brazil,-240,60,10,16,-1,0,-4:00,2,15,0,0,-5:00
+2082,America/Campo_Grande,2006,Brazil,-240,60,11,5,-1,0,-4:00,2,15,0,0,-5:00
+2083,America/Campo_Grande,2007,Brazil,-240,60,10,8,0,0,-4:00,2,25,-1,0,-5:00
+2084,America/Campo_Grande,2008,Brazil,-240,60,10,15,0,0,-4:00,2,15,0,0,-5:00
+2085,America/Campo_Grande,2012,Brazil,-240,60,10,15,0,0,-4:00,2,22,0,0,-5:00
+2086,America/Campo_Grande,2013,Brazil,-240,60,10,15,0,0,-4:00,2,15,0,0,-5:00
+2087,America/Campo_Grande,2015,Brazil,-240,60,10,15,0,0,-4:00,2,22,0,0,-5:00
+2088,America/Campo_Grande,2016,Brazil,-240,60,10,15,0,0,-4:00,2,15,0,0,-5:00
+2089,America/Cuiaba,1970,Brazil,-240,0,12,31,-1,0,08:00,3,1,-1,0,-5:00
+2090,America/Cuiaba,1985,Brazil,-240,60,11,2,-1,0,-4:00,1,1,-1,0,07:00
+2091,America/Cuiaba,1986,Brazil,-240,60,10,25,-1,0,-4:00,3,15,-1,0,-5:00
+2092,America/Cuiaba,1987,Brazil,-240,60,10,25,-1,0,-4:00,2,14,-1,0,-5:00
+2093,America/Cuiaba,1988,Brazil,-240,60,10,16,-1,0,-4:00,2,7,-1,0,-5:00
+2094,America/Cuiaba,1989,Brazil,-240,60,10,15,-1,0,-4:00,1,29,-1,0,-5:00
+2095,America/Cuiaba,1990,Brazil,-240,60,10,21,-1,0,-4:00,2,11,-1,0,-5:00
+2096,America/Cuiaba,1991,Brazil,-240,60,10,20,-1,0,-4:00,2,17,-1,0,-5:00
+2097,America/Cuiaba,1992,Brazil,-240,60,10,25,-1,0,-4:00,2,9,-1,0,-5:00
+2098,America/Cuiaba,1993,Brazil,-240,60,10,11,0,0,-4:00,1,31,-1,0,-5:00
+2099,America/Cuiaba,1994,Brazil,-240,60,10,11,0,0,-4:00,2,15,0,0,-5:00
+2100,America/Cuiaba,1996,Brazil,-240,60,10,6,-1,0,-4:00,2,11,-1,0,-5:00
+2101,America/Cuiaba,1997,Brazil,-240,60,10,6,-1,0,-4:00,2,16,-1,0,-5:00
+2102,America/Cuiaba,1998,Brazil,-240,60,10,11,-1,0,-4:00,3,1,-1,0,-5:00
+2103,America/Cuiaba,1999,Brazil,-240,60,10,3,-1,0,-4:00,2,21,-1,0,-5:00
+2104,America/Cuiaba,2000,Brazil,-240,60,10,8,0,0,-4:00,2,27,-1,0,-5:00
+2105,America/Cuiaba,2001,Brazil,-240,60,10,8,0,0,-4:00,2,15,0,0,-5:00
+2106,America/Cuiaba,2002,Brazil,-240,60,11,3,-1,0,-4:00,2,15,0,0,-5:00
+2107,America/Cuiaba,2003,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2108,America/Cuiaba,2004,Brazil,-240,60,11,2,-1,0,-4:00,2,15,0,0,-5:00
+2109,America/Cuiaba,2005,Brazil,-240,60,10,16,-1,0,-4:00,2,15,0,0,-5:00
+2110,America/Cuiaba,2006,Brazil,-240,60,11,5,-1,0,-4:00,2,15,0,0,-5:00
+2111,America/Cuiaba,2007,Brazil,-240,60,10,8,0,0,-4:00,2,25,-1,0,-5:00
+2112,America/Cuiaba,2008,Brazil,-240,60,10,15,0,0,-4:00,2,15,0,0,-5:00
+2113,America/Cuiaba,2012,Brazil,-240,60,10,15,0,0,-4:00,2,22,0,0,-5:00
+2114,America/Cuiaba,2013,Brazil,-240,60,10,15,0,0,-4:00,2,15,0,0,-5:00
+2115,America/Cuiaba,2015,Brazil,-240,60,10,15,0,0,-4:00,2,22,0,0,-5:00
+2116,America/Cuiaba,2016,Brazil,-240,60,10,15,0,0,-4:00,2,15,0,0,-5:00
+2117,America/Porto_Velho,1970,Brazil,-240,0,12,31,-1,0,08:00,3,1,-1,0,-5:00
+2118,America/Porto_Velho,1985,Brazil,-240,60,11,2,-1,0,-4:00,1,1,-1,0,07:00
+2119,America/Porto_Velho,1986,Brazil,-240,60,10,25,-1,0,-4:00,3,15,-1,0,-5:00
+2120,America/Porto_Velho,1987,Brazil,-240,60,10,25,-1,0,-4:00,2,14,-1,0,-5:00
+2121,America/Porto_Velho,1988,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2122,America/Boa_Vista,1970,Brazil,-240,0,12,31,-1,0,08:00,3,1,-1,0,-5:00
+2123,America/Boa_Vista,1985,Brazil,-240,60,11,2,-1,0,-4:00,1,1,-1,0,07:00
+2124,America/Boa_Vista,1986,Brazil,-240,60,10,25,-1,0,-4:00,3,15,-1,0,-5:00
+2125,America/Boa_Vista,1987,Brazil,-240,60,10,25,-1,0,-4:00,2,14,-1,0,-5:00
+2126,America/Boa_Vista,1988,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2127,America/Boa_Vista,1999,Brazil,-240,60,10,3,-1,0,-4:00,2,21,-1,0,-5:00
+2128,America/Boa_Vista,2000,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2129,America/Manaus,1970,Brazil,-240,0,12,31,-1,0,08:00,3,1,-1,0,-5:00
+2130,America/Manaus,1985,Brazil,-240,60,11,2,-1,0,-4:00,1,1,-1,0,07:00
+2131,America/Manaus,1986,Brazil,-240,60,10,25,-1,0,-4:00,3,15,-1,0,-5:00
+2132,America/Manaus,1987,Brazil,-240,60,10,25,-1,0,-4:00,2,14,-1,0,-5:00
+2133,America/Manaus,1988,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2134,America/Manaus,1993,Brazil,-240,60,10,11,0,0,-4:00,1,31,-1,0,-5:00
+2135,America/Manaus,1994,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2136,America/Eirunepe,1970,Brazil,-300,0,12,31,-1,0,07:00,3,1,-1,0,-6:00
+2137,America/Eirunepe,1985,Brazil,-300,60,11,2,-1,0,-5:00,1,1,-1,0,06:00
+2138,America/Eirunepe,1986,Brazil,-300,60,10,25,-1,0,-5:00,3,15,-1,0,-6:00
+2139,America/Eirunepe,1987,Brazil,-300,60,10,25,-1,0,-5:00,2,14,-1,0,-6:00
+2140,America/Eirunepe,1988,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+2141,America/Eirunepe,1993,Brazil,-300,60,10,11,0,0,-5:00,1,31,-1,0,-6:00
+2142,America/Eirunepe,1994,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+2143,America/Eirunepe,2008,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2144,America/Rio_Branco,1970,Brazil,-300,0,12,31,-1,0,07:00,3,1,-1,0,-6:00
+2145,America/Rio_Branco,1985,Brazil,-300,60,11,2,-1,0,-5:00,1,1,-1,0,06:00
+2146,America/Rio_Branco,1986,Brazil,-300,60,10,25,-1,0,-5:00,3,15,-1,0,-6:00
+2147,America/Rio_Branco,1987,Brazil,-300,60,10,25,-1,0,-5:00,2,14,-1,0,-6:00
+2148,America/Rio_Branco,1988,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+2149,America/Rio_Branco,2008,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2150,America/Santiago,1970,Chile,-240,60,10,9,0,0,4:00,3,29,-1,0,3:00
+2151,America/Santiago,1971,Chile,-240,60,10,9,0,0,4:00,3,14,-1,0,3:00
+2152,America/Santiago,1972,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
+2153,America/Santiago,1973,Chile,-240,60,9,30,-1,0,4:00,3,9,0,0,3:00
+2154,America/Santiago,1974,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
+2155,America/Santiago,1987,Chile,-240,60,10,9,0,0,4:00,4,12,-1,0,3:00
+2156,America/Santiago,1988,Chile,-240,60,10,1,0,0,4:00,3,9,0,0,3:00
+2157,America/Santiago,1989,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
+2158,America/Santiago,1990,Chile,-240,60,9,16,-1,0,4:00,3,18,-1,0,3:00
+2159,America/Santiago,1991,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
+2160,America/Santiago,1997,Chile,-240,60,10,9,0,0,4:00,3,30,-1,0,3:00
+2161,America/Santiago,1998,Chile,-240,60,9,27,-1,0,4:00,3,9,0,0,3:00
+2162,America/Santiago,1999,Chile,-240,60,10,9,0,0,4:00,4,4,-1,0,3:00
+2163,America/Santiago,2000,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
+2164,America/Santiago,2008,Chile,-240,60,10,9,0,0,4:00,3,30,-1,0,3:00
+2165,America/Santiago,2009,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
+2166,America/Santiago,2010,Chile,-240,60,10,9,0,0,4:00,4,1,0,0,3:00
+2167,America/Santiago,2011,Chile,-240,60,8,16,0,0,4:00,5,2,0,0,3:00
+2168,America/Santiago,2012,Chile,-240,60,10,9,0,0,4:00,3,9,0,0,3:00
+2169,Pacific/Easter,1970,Chile,-420,60,10,9,0,0,4:00,3,29,-1,0,3:00
+2170,Pacific/Easter,1971,Chile,-420,60,10,9,0,0,4:00,3,14,-1,0,3:00
+2171,Pacific/Easter,1972,Chile,-420,60,10,9,0,0,4:00,3,9,0,0,3:00
+2172,Pacific/Easter,1973,Chile,-420,60,9,30,-1,0,4:00,3,9,0,0,3:00
+2173,Pacific/Easter,1974,Chile,-420,60,10,9,0,0,4:00,3,9,0,0,3:00
+2174,Pacific/Easter,1982,Chile,-360,60,10,9,0,0,4:00,3,9,0,0,3:00
+2175,Pacific/Easter,1987,Chile,-360,60,10,9,0,0,4:00,4,12,-1,0,3:00
+2176,Pacific/Easter,1988,Chile,-360,60,10,1,0,0,4:00,3,9,0,0,3:00
+2177,Pacific/Easter,1989,Chile,-360,60,10,9,0,0,4:00,3,9,0,0,3:00
+2178,Pacific/Easter,1990,Chile,-360,60,9,16,-1,0,4:00,3,18,-1,0,3:00
+2179,Pacific/Easter,1991,Chile,-360,60,10,9,0,0,4:00,3,9,0,0,3:00
+2180,Pacific/Easter,1997,Chile,-360,60,10,9,0,0,4:00,3,30,-1,0,3:00
+2181,Pacific/Easter,1998,Chile,-360,60,9,27,-1,0,4:00,3,9,0,0,3:00
+2182,Pacific/Easter,1999,Chile,-360,60,10,9,0,0,4:00,4,4,-1,0,3:00
+2183,Pacific/Easter,2000,Chile,-360,60,10,9,0,0,4:00,3,9,0,0,3:00
+2184,Pacific/Easter,2008,Chile,-360,60,10,9,0,0,4:00,3,30,-1,0,3:00
+2185,Pacific/Easter,2009,Chile,-360,60,10,9,0,0,4:00,3,9,0,0,3:00
+2186,Pacific/Easter,2010,Chile,-360,60,10,9,0,0,4:00,4,1,0,0,3:00
+2187,Pacific/Easter,2011,Chile,-360,60,8,16,0,0,4:00,5,2,0,0,3:00
+2188,Pacific/Easter,2012,Chile,-360,60,10,9,0,0,4:00,3,9,0,0,3:00
+2189,America/Bogota,1970,CO,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+2190,America/Bogota,1992,CO,-300,60,5,3,-1,0,-5:00,1,1,-1,0,06:00
+2191,America/Bogota,1993,CO,-300,0,12,31,-1,0,07:00,4,4,-1,0,-6:00
+2192,America/Curacao,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2193,America/Guayaquil,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+2194,Pacific/Galapagos,1970,,-300,0,0,0,0,0,00:00,0,0,0,0,00:00
+2195,Pacific/Galapagos,1986,,-360,0,0,0,0,0,00:00,0,0,0,0,00:00
+2196,Atlantic/Stanley,1970,Falk,-240,0,12,31,-1,0,08:00,1,1,-1,0,-5:00
+2197,Atlantic/Stanley,1983,Falk,-180,60,9,-1,0,0,-3:00,1,1,-1,0,08:00
+2198,Atlantic/Stanley,1984,Falk,-180,60,9,16,-1,0,-3:00,4,-1,0,0,-4:00
+2199,Atlantic/Stanley,1985,Falk,-240,60,9,9,0,0,-4:00,4,-1,0,0,-5:00
+2200,Atlantic/Stanley,1986,Falk,-240,60,9,9,0,0,-4:00,4,16,0,0,-5:00
+2201,Atlantic/Stanley,2001,Falk,-240,60,9,1,0,0,-2:00,4,15,0,0,-3:00
+2202,Atlantic/Stanley,2011,Falk,-240,60,9,1,0,0,-2:00,1,1,-1,0,07:00
+2203,Atlantic/Stanley,2012,Falk,-240,60,9,1,0,0,-2:00,4,15,0,0,-3:00
+2204,America/Cayenne,1970,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+2205,America/Guyana,1970,,-225,0,0,0,0,0,00:00,0,0,0,0,00:00
+2206,America/Guyana,1975,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+2207,America/Guyana,1991,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2208,America/Asuncion,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2209,America/Asuncion,1972,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+2210,America/Asuncion,1974,Para,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2211,America/Asuncion,1975,Para,-240,60,10,1,-1,0,-4:00,3,1,-1,0,-5:00
+2212,America/Asuncion,1979,Para,-240,60,10,1,-1,0,-4:00,4,1,-1,0,-5:00
+2213,America/Asuncion,1989,Para,-240,60,10,22,-1,0,-4:00,4,1,-1,0,-5:00
+2214,America/Asuncion,1990,Para,-240,60,10,1,-1,0,-4:00,4,1,-1,0,-5:00
+2215,America/Asuncion,1991,Para,-240,60,10,6,-1,0,-4:00,4,1,-1,0,-5:00
+2216,America/Asuncion,1992,Para,-240,60,10,5,-1,0,-4:00,3,1,-1,0,-5:00
+2217,America/Asuncion,1993,Para,-240,60,10,1,-1,0,-4:00,3,31,-1,0,-5:00
+2218,America/Asuncion,1994,Para,-240,60,10,1,-1,0,-4:00,2,-1,0,0,-5:00
+2219,America/Asuncion,1996,Para,-240,60,10,1,0,0,-4:00,3,1,-1,0,-5:00
+2220,America/Asuncion,1997,Para,-240,60,10,1,0,0,-4:00,2,-1,0,0,-5:00
+2221,America/Asuncion,1998,Para,-240,60,10,1,0,0,-4:00,3,1,0,0,-5:00
+2222,America/Asuncion,2002,Para,-240,60,9,1,0,0,-4:00,4,1,0,0,-5:00
+2223,America/Asuncion,2004,Para,-240,60,10,15,0,0,-4:00,4,1,0,0,-5:00
+2224,America/Asuncion,2005,Para,-240,60,10,15,0,0,-4:00,3,8,0,0,-5:00
+2225,America/Asuncion,2010,Para,-240,60,10,1,0,0,-4:00,4,8,0,0,-5:00
+2226,America/Lima,1970,Peru,-300,0,12,31,-1,0,07:00,3,24,0,0,-6:00
+2227,America/Lima,1986,Peru,-300,60,1,1,-1,0,-5:00,4,1,-1,0,-6:00
+2228,America/Lima,1995,Peru,-300,0,1,1,-1,0,-5:00,4,1,-1,0,-6:00
+2229,Atlantic/South_Georgia,1970,,-120,0,0,0,0,0,00:00,0,0,0,0,00:00
+2230,America/Paramaribo,1970,,-210,0,0,0,0,0,00:00,0,0,0,0,00:00
+2231,America/Paramaribo,1975,,-210,0,0,0,0,0,00:00,0,0,0,0,00:00
+2232,America/Paramaribo,1984,,-180,0,0,0,0,0,00:00,0,0,0,0,00:00
+2233,America/Port_of_Spain,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2234,America/Montevideo,1970,Uruguay,-180,30,5,27,-1,0,-3:00,12,2,-1,0,-4:00
+2235,America/Montevideo,1972,Uruguay,-180,60,4,24,-1,0,-3:00,8,15,-1,0,-4:00
+2236,America/Montevideo,1974,Uruguay,-180,60,12,22,-1,0,-3:00,1,1,-1,0,08:00
+2237,America/Montevideo,1976,Uruguay,-180,0,12,31,-1,0,09:00,10,1,-1,0,-4:00
+2238,America/Montevideo,1977,Uruguay,-180,60,12,4,-1,0,-3:00,1,1,-1,0,08:00
+2239,America/Montevideo,1978,Uruguay,-180,0,12,31,-1,0,09:00,4,1,-1,0,-4:00
+2240,America/Montevideo,1979,Uruguay,-180,60,10,1,-1,0,-3:00,1,1,-1,0,08:00
+2241,America/Montevideo,1980,Uruguay,-180,0,12,31,-1,0,09:00,5,1,-1,0,-4:00
+2242,America/Montevideo,1987,Uruguay,-180,60,12,14,-1,0,-3:00,1,1,-1,0,08:00
+2243,America/Montevideo,1988,Uruguay,-180,60,12,11,-1,0,-3:00,3,14,-1,0,-4:00
+2244,America/Montevideo,1989,Uruguay,-180,60,10,29,-1,0,-3:00,3,12,-1,0,-4:00
+2245,America/Montevideo,1990,Uruguay,-180,60,10,21,0,0,-3:00,3,1,0,0,-4:00
+2246,America/Montevideo,1992,Uruguay,-180,60,10,18,-1,0,-3:00,3,1,0,0,-4:00
+2247,America/Montevideo,1993,Uruguay,-180,0,12,31,-1,0,09:00,2,28,-1,0,-4:00
+2248,America/Montevideo,2004,Uruguay,-180,60,9,19,-1,0,-3:00,1,1,-1,0,08:00
+2249,America/Montevideo,2005,Uruguay,-180,60,10,9,-1,0,-1:00,3,27,-1,0,-2:00
+2250,America/Montevideo,2006,Uruguay,-180,60,10,1,0,0,-1:00,3,12,-1,0,-2:00
+2251,America/Montevideo,2007,Uruguay,-180,60,10,1,0,0,-1:00,3,8,0,0,-2:00
+2252,America/Caracas,1970,,-240,0,0,0,0,0,00:00,0,0,0,0,00:00
+2253,America/Caracas,2007,,-270,0,0,0,0,0,00:00,0,0,0,0,00:00
index 023b994..190b027 100644 (file)
@@ -2347,11 +2347,7 @@ function get_message_processor($type) {
  * @return object $processors object containing information on message processors
  */
 function get_message_output_default_preferences() {
-    $preferences = get_config('message');
-    if (!$preferences) {
-        $preferences = new stdClass();
-    }
-    return $preferences;
+    return get_config('message');
 }
 
 /**
@@ -2383,7 +2379,7 @@ function translate_message_default_setting($plugindefault, $processorname) {
 
     // Validate the value. It should not exceed the maximum size
     if (!is_int($plugindefault) || ($plugindefault > 0x0f)) {
-        $OUTPUT->notification(get_string('errortranslatingdefault', 'message'), 'notifyproblem');
+        debugging(get_string('errortranslatingdefault', 'message'));
         $plugindefault = $default;
     }
     // Use plugin default setting of 'permitted' is 0
index b32e281..f36d56e 100644 (file)
@@ -4543,9 +4543,10 @@ function forum_get_subscribed_forums($course) {
     $sql = "SELECT f.id
               FROM {forum} f
                    LEFT JOIN {forum_subscriptions} fs ON (fs.forum = f.id AND fs.userid = ?)
-             WHERE f.forcesubscribe <> ".FORUM_DISALLOWSUBSCRIBE."
+             WHERE f.course = ?
+                   AND f.forcesubscribe <> ".FORUM_DISALLOWSUBSCRIBE."
                    AND (f.forcesubscribe = ".FORUM_FORCESUBSCRIBE." OR fs.id IS NOT NULL)";
-    if ($subscribed = $DB->get_records_sql($sql, array($USER->id))) {
+    if ($subscribed = $DB->get_records_sql($sql, array($USER->id, $course->id))) {
         foreach ($subscribed as $s) {
             $subscribed[$s->id] = $s->id;
         }
@@ -7897,7 +7898,7 @@ function forum_get_forums_user_posted_in($user, array $courseids = null, $discus
  *               ->posts: An array containing the posts to show for this request.
  */
 function forum_get_posts_by_user($user, array $courses, $musthaveaccess = false, $discussionsonly = false, $limitfrom = 0, $limitnum = 50) {
-    global $DB, $USER;
+    global $DB, $USER, $CFG;
 
     $return = new stdClass;
     $return->totalcount = 0;    // The total number of posts that the current user is able to view
index 2c4ac78..5f1417d 100644 (file)
@@ -2231,24 +2231,24 @@ function glossary_count_unrated_entries($glossaryid, $userid) {
         // Now we need to co