]> granicus.if.org Git - php/commitdiff
Merged PHP-7.0 by hand due to conflicts.
authorDerick Rethans <github@derickrethans.nl>
Tue, 15 Aug 2017 14:06:18 +0000 (15:06 +0100)
committerDerick Rethans <github@derickrethans.nl>
Tue, 15 Aug 2017 14:06:18 +0000 (15:06 +0100)
50 files changed:
ext/date/lib/LICENSE.rst
ext/date/lib/astro.c
ext/date/lib/dow.c
ext/date/lib/fallbackmap.h
ext/date/lib/interval.c
ext/date/lib/parse_date.c
ext/date/lib/parse_date.c.orig [new file with mode: 0644]
ext/date/lib/parse_date.re
ext/date/lib/parse_iso_intervals.c
ext/date/lib/parse_iso_intervals.re
ext/date/lib/parse_tz.c
ext/date/lib/timelib.c
ext/date/lib/timelib.h
ext/date/lib/timelib.m4
ext/date/lib/timelib_private.h [new file with mode: 0644]
ext/date/lib/timelib_structs.h [deleted file]
ext/date/lib/timezonemap.h
ext/date/lib/tm2unixtime.c
ext/date/lib/unixtime2tm.c
ext/date/php_date.c
ext/date/tests/DateTimeZone_getLocation.phpt
ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt
ext/date/tests/bug35499.phpt
ext/date/tests/bug41964.phpt
ext/date/tests/bug45081.phpt
ext/date/tests/bug68078_negative.phpt
ext/date/tests/date_parse_001.phpt
ext/date/tests/date_sun_info_001.phpt
ext/date/tests/date_sun_info_002.phpt
ext/date/tests/date_sun_info_003.phpt
ext/date/tests/date_sun_info_variation1.phpt
ext/date/tests/date_sun_info_variation2.phpt
ext/date/tests/date_sun_info_variation3.phpt
ext/date/tests/date_sunrise_variation1.phpt
ext/date/tests/date_sunrise_variation3.phpt
ext/date/tests/date_sunrise_variation4.phpt
ext/date/tests/date_sunrise_variation5.phpt
ext/date/tests/date_sunrise_variation6.phpt
ext/date/tests/date_sunrise_variation7.phpt
ext/date/tests/date_sunset_variation1.phpt
ext/date/tests/date_sunset_variation3.phpt
ext/date/tests/date_sunset_variation4.phpt
ext/date/tests/date_sunset_variation5.phpt
ext/date/tests/date_sunset_variation6.phpt
ext/date/tests/date_sunset_variation7.phpt
ext/date/tests/sunfuncts.phpt
ext/date/tests/timezone_abbreviations_list_basic1.phpt
ext/date/tests/timezone_name_from_abbr_basic1.phpt
ext/intl/common/common_date.cpp
ext/intl/timezone/timezone_class.cpp

index cde273c6a9039a47616ae20258b88627a7d60e79..70bf7b00bde2b5cec83732bd48f117c5d260c888 100644 (file)
@@ -1,6 +1,7 @@
 The MIT License (MIT)
 
-Copyright (c) 2015 Derick Rethans
+Copyright (c) 2015-2017 Derick Rethans
+Copyright (c) 2017 MongoDB, Inc.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
index 69ff6c2056be7d5609c2a085e62a7b8541943dfd..bae96e205746394494b0c3ed643545dfa828f08f 100644 (file)
    | Schlyter, who wrote this in December 1992                            |
  */
 
+#include "timelib.h"
 #include <stdio.h>
 #include <math.h>
-#include "timelib.h"
 
 #define days_since_2000_Jan_0(y,m,d) \
        (367L*(y)-((7*((y)+(((m)+9)/12)))/4)+((275*(m))/9)+(d)-730530L)
 
 #ifndef PI
- #define PI        3.1415926535897932384
+define PI        3.1415926535897932384
 #endif
 
 #define RADEG     ( 180.0 / PI )
@@ -230,7 +230,8 @@ int timelib_astro_rise_set_altitude(timelib_time *t_loc, double lon, double lat,
        t_loc->i = t_loc->s = 0;
        timelib_update_ts(t_loc, NULL);
 
-       /* Calculate TS belonging to UTC 00:00 of the current day */
+       /* Calculate TS belonging to UTC 00:00 of the current day, for input into
+        * the algorithm */
        t_utc = timelib_time_ctor();
        t_utc->y = t_loc->y;
        t_utc->m = t_loc->m;
@@ -239,8 +240,8 @@ int timelib_astro_rise_set_altitude(timelib_time *t_loc, double lon, double lat,
        timelib_update_ts(t_utc, NULL);
 
        /* Compute d of 12h local mean solar time */
-       timestamp = t_loc->sse;
-       d = timelib_ts_to_juliandate(timestamp) - lon/360.0;
+       timestamp = t_utc->sse;
+       d = timelib_ts_to_j2000(timestamp) + 2 - lon/360.0;
 
        /* Compute local sidereal time of this moment */
        sidtime = astro_revolution(astro_GMST0(d) + 180.0 + lon);
@@ -295,14 +296,18 @@ int timelib_astro_rise_set_altitude(timelib_time *t_loc, double lon, double lat,
        return rc;
 }
 
-double timelib_ts_to_juliandate(timelib_sll ts)
+double timelib_ts_to_julianday(timelib_sll ts)
 {
        double tmp;
 
-       tmp = ts;
-       tmp /= 86400;
-       tmp += 2440587.5;
-       tmp -= 2451543;
+       tmp = (double) ts;
+       tmp /= (double) 86400;
+       tmp += (double) 2440587.5;
 
        return tmp;
 }
+
+double timelib_ts_to_j2000(timelib_sll ts)
+{
+       return timelib_ts_to_julianday(ts) - 2451545;
+}
index 78aca8c7024ae6cb150cd7890fb00f33434a55be..33553e7806f4dd8ca29c77cb7d7cb2a13237480d 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 #include "timelib.h"
+#include "timelib_private.h"
 
 static int m_table_common[13] = { -1, 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5 }; /* 1 = jan */
 static int m_table_leap[13] =   { -1, 6, 2, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5 }; /* 1 = jan */
@@ -137,17 +138,71 @@ void timelib_isoweek_from_date(timelib_sll y, timelib_sll m, timelib_sll d, time
        }
 }
 
-timelib_sll timelib_daynr_from_weeknr(timelib_sll y, timelib_sll w, timelib_sll d)
+void timelib_isodate_from_date(timelib_sll y, timelib_sll m, timelib_sll d, timelib_sll *iy, timelib_sll *iw, timelib_sll *id)
+{
+       timelib_isoweek_from_date(y, m, d, iw, iy);
+       *id = timelib_day_of_week_ex(y, m, d, 1);
+}
+
+static timelib_sll timelib_daynr_from_weeknr_ex(timelib_sll iy, timelib_sll iw, timelib_sll id, timelib_sll *y)
 {
        timelib_sll dow, day;
 
        /* Figure out the dayofweek for y-1-1 */
-       dow = timelib_day_of_week(y, 1, 1);
+       dow = timelib_day_of_week(iy, 1, 1);
        /* then use that to figure out the offset for day 1 of week 1 */
        day = 0 - (dow > 4 ? dow - 7 : dow);
+       /* and adjust the year to the natural year if we need to */
+       *y = (iw == 1 && day < 0 && id < dow) ? iy - 1 : iy;
 
        /* Add weeks and days */
-       return day + ((w - 1) * 7) + d;
+       return day + ((iw - 1) * 7) + id;
+}
+
+timelib_sll timelib_daynr_from_weeknr(timelib_sll iy, timelib_sll iw, timelib_sll id)
+{
+       timelib_sll dummy_iso_year;
+
+       return timelib_daynr_from_weeknr_ex(iy, iw, id, &dummy_iso_year);
+}
+
+void timelib_date_from_isodate(timelib_sll iy, timelib_sll iw, timelib_sll id, timelib_sll *y, timelib_sll *m, timelib_sll *d)
+{
+       timelib_sll daynr = timelib_daynr_from_weeknr_ex(iy, iw, id, y) + 1;
+       int *table;
+
+       *m = 0;
+
+       if (daynr <= 0) {
+               *y += 1;
+       }
+
+       if (timelib_is_leap(*y)) {
+               table = ml_table_leap;
+               if (daynr > 366) {
+                       *y += 1;
+                       daynr -= 366;
+               }
+       } else {
+               table = ml_table_common;
+               if (daynr > 365) {
+                       *y += 1;
+                       daynr -= 365;
+               }
+       }
+
+       do {
+               daynr -= table[*m];
+               (*m)++;
+       } while (daynr > table[*m]);
+
+       if (daynr <= 0) {
+               daynr += 31;
+               *y -= 1;
+               *m = 12;
+       }
+
+       *d = daynr;
 }
 
 int timelib_valid_time(timelib_sll h, timelib_sll i, timelib_sll s)
index af69482c0cb8d5ba0dab944a287833ccaebac740..5a4c6123c3a5bb1d31d9daa9f94a217a1a8f411b 100644 (file)
@@ -1,42 +1,42 @@
-       { "sst",   0, -660, "Pacific/Apia" },
-       { "hst",   0, -600, "Pacific/Honolulu" },
-       { "akst",  0, -540, "America/Anchorage" },
-       { "akdt",  1, -480, "America/Anchorage" },
-       { "pst",   0, -480, "America/Los_Angeles" },
-       { "pdt",   1, -420, "America/Los_Angeles" },
-       { "mst",   0, -420, "America/Denver" },
-       { "mdt",   1, -360, "America/Denver" },
-       { "cst",   0, -360, "America/Chicago" },
-       { "cdt",   1, -300, "America/Chicago" },
-       { "est",   0, -300, "America/New_York" },
-       { "vet",   0, -270, "America/Caracas" },
-       { "edt",   1, -240, "America/New_York" },
-       { "ast",   0, -240, "America/Halifax" },
-       { "adt",   1, -180, "America/Halifax" },
-       { "brt",   0, -180, "America/Sao_Paulo" },
-       { "brst",  1, -120, "America/Sao_Paulo" },
-       { "azost", 0,  -60, "Atlantic/Azores" },
-       { "azodt", 1,    0, "Atlantic/Azores" },
-       { "gmt",   0,    0, "Europe/London" },
-       { "bst",   1,   60, "Europe/London" },
-       { "cet",   0,   60, "Europe/Paris" },
-       { "cest",  1,  120, "Europe/Paris" },
-       { "eet",   0,  120, "Europe/Helsinki" },
-       { "eest",  1,  180, "Europe/Helsinki" },
-       { "msk",   0,  180, "Europe/Moscow" },
-       { "msd",   1,  240, "Europe/Moscow" },
-       { "gst",   0,  240, "Asia/Dubai" },
-       { "pkt",   0,  300, "Asia/Karachi" },
-       { "ist",   0,  330, "Asia/Kolkata" },
-       { "npt",   0,  345, "Asia/Katmandu" },
-       { "yekt",  1,  360, "Asia/Yekaterinburg" },
-       { "novst", 1,  420, "Asia/Novosibirsk" },
-       { "krat",  0,  420, "Asia/Krasnoyarsk" },
-       { "cst",   0,  480, "Asia/Shanghai" },
-       { "krast", 1,  480, "Asia/Krasnoyarsk" },
-       { "jst",   0,  540, "Asia/Tokyo" },
-       { "est",   0,  600, "Australia/Melbourne" },
-       { "cst",   1,  630, "Australia/Adelaide" },
-       { "est",   1,  660, "Australia/Melbourne" },
-       { "nzst",  0,  720, "Pacific/Auckland" },
-       { "nzdt",  1,  780, "Pacific/Auckland" },
+       { "sst",   0, -660 * 60, "Pacific/Apia" },
+       { "hst",   0, -600 * 60, "Pacific/Honolulu" },
+       { "akst",  0, -540 * 60, "America/Anchorage" },
+       { "akdt",  1, -480 * 60, "America/Anchorage" },
+       { "pst",   0, -480 * 60, "America/Los_Angeles" },
+       { "pdt",   1, -420 * 60, "America/Los_Angeles" },
+       { "mst",   0, -420 * 60, "America/Denver" },
+       { "mdt",   1, -360 * 60, "America/Denver" },
+       { "cst",   0, -360 * 60, "America/Chicago" },
+       { "cdt",   1, -300 * 60, "America/Chicago" },
+       { "est",   0, -300 * 60, "America/New_York" },
+       { "vet",   0, -270 * 60, "America/Caracas" },
+       { "edt",   1, -240 * 60, "America/New_York" },
+       { "ast",   0, -240 * 60, "America/Halifax" },
+       { "adt",   1, -180 * 60, "America/Halifax" },
+       { "brt",   0, -180 * 60, "America/Sao_Paulo" },
+       { "brst",  1, -120 * 60, "America/Sao_Paulo" },
+       { "azost", 0,  -60 * 60, "Atlantic/Azores" },
+       { "azodt", 1,    0 * 60, "Atlantic/Azores" },
+       { "gmt",   0,    0 * 60, "Europe/London" },
+       { "bst",   1,   60 * 60, "Europe/London" },
+       { "cet",   0,   60 * 60, "Europe/Paris" },
+       { "cest",  1,  120 * 60, "Europe/Paris" },
+       { "eet",   0,  120 * 60, "Europe/Helsinki" },
+       { "eest",  1,  180 * 60, "Europe/Helsinki" },
+       { "msk",   0,  180 * 60, "Europe/Moscow" },
+       { "msd",   1,  240 * 60, "Europe/Moscow" },
+       { "gst",   0,  240 * 60, "Asia/Dubai" },
+       { "pkt",   0,  300 * 60, "Asia/Karachi" },
+       { "ist",   0,  330 * 60, "Asia/Kolkata" },
+       { "npt",   0,  345 * 60, "Asia/Katmandu" },
+       { "yekt",  1,  360 * 60, "Asia/Yekaterinburg" },
+       { "novst", 1,  420 * 60, "Asia/Novosibirsk" },
+       { "krat",  0,  420 * 60, "Asia/Krasnoyarsk" },
+       { "cst",   0,  480 * 60, "Asia/Shanghai" },
+       { "krast", 1,  480 * 60, "Asia/Krasnoyarsk" },
+       { "jst",   0,  540 * 60, "Asia/Tokyo" },
+       { "est",   0,  600 * 60, "Australia/Melbourne" },
+       { "cst",   1,  630 * 60, "Australia/Adelaide" },
+       { "est",   1,  660 * 60, "Australia/Melbourne" },
+       { "nzst",  0,  720 * 60, "Pacific/Auckland" },
+       { "nzdt",  1,  780 * 60, "Pacific/Auckland" },
index dee9f92eedb1f0a3285a709be6c054808ecdb973..e034392a0f9874bebe0d9ff37d8d9a607ff35ee1 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 #include "timelib.h"
+#include "timelib_private.h"
 #include <math.h>
 
 timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two)
@@ -65,7 +66,7 @@ timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two)
        rt->h = two->h - one->h;
        rt->i = two->i - one->i;
        rt->s = two->s - one->s;
-       rt->f = two->f - one->f;
+       rt->us = two->us - one->us;
        if (one_backup.dst == 0 && two_backup.dst == 1 && two->sse >= one->sse + 86400 - dst_corr) {
                rt->h += dst_h_corr;
                rt->i += dst_m_corr;
@@ -111,7 +112,7 @@ timelib_time *timelib_add(timelib_time *old_time, timelib_rel_time *interval)
                t->relative.h = interval->h * bias;
                t->relative.i = interval->i * bias;
                t->relative.s = interval->s * bias;
-               t->relative.f = interval->f * bias;
+               t->relative.us = interval->us * bias;
        }
        t->have_relative = 1;
        t->sse_uptodate = 0;
@@ -147,7 +148,7 @@ timelib_time *timelib_sub(timelib_time *old_time, timelib_rel_time *interval)
        t->relative.h = 0 - (interval->h * bias);
        t->relative.i = 0 - (interval->i * bias);
        t->relative.s = 0 - (interval->s * bias);
-       t->relative.f = 0 - (interval->f * bias);
+       t->relative.us = 0 - (interval->us * bias);
        t->have_relative = 1;
        t->sse_uptodate = 0;
 
index 0cc708d84f87d2ff087721cb1ac0d50048db733f..d99f0e907baefd84b724ed121a66b97e9d5fbb53 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.15.3 on Tue Jul  4 21:15:17 2017 */
+/* Generated by re2c 0.15.3 on Tue Aug 15 14:20:17 2017 */
 #line 1 "ext/date/lib/parse_date.re"
 /*
  * The MIT License (MIT)
 /* $Id$ */
 
 #include "timelib.h"
+#include "timelib_private.h"
 
-#include <stdio.h>
 #include <ctype.h>
 #include <math.h>
 #include <assert.h>
 
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
 #if defined(_MSC_VER)
 # define strtoll(s, f, b) _atoi64(s)
 #elif !defined(HAVE_STRTOLL)
 # endif
 #endif
 
-#define TIMELIB_UNSET   -99999
-
-#define TIMELIB_SECOND   1
-#define TIMELIB_MINUTE   2
-#define TIMELIB_HOUR     3
-#define TIMELIB_DAY      4
-#define TIMELIB_MONTH    5
-#define TIMELIB_YEAR     6
-#define TIMELIB_WEEKDAY  7
-#define TIMELIB_SPECIAL  8
-#define TIMELIB_MICROSEC 9
-
 #define EOI      257
 #define TIME     258
 #define DATE     259
@@ -115,14 +94,14 @@ typedef unsigned char uchar;
 
 #define timelib_string_free timelib_free
 
-#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; } }
-#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; }
-#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
+#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
+#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; }
+#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
 #define TIMELIB_UNHAVE_DATE() { s->time->have_date = 0; s->time->d = 0; s->time->m = 0; s->time->y = 0; }
 #define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
 #define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_weekday_relative = 1; }
 #define TIMELIB_HAVE_SPECIAL_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_special_relative = 1; }
-#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, "Double timezone specification") : add_warning(s, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
+#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
 
 #define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
 #define TIMELIB_DEINIT timelib_string_free(str)
@@ -148,8 +127,6 @@ typedef unsigned char uchar;
 #define YYDEBUG(s,c)
 #endif
 
-#include "timelib_structs.h"
-
 typedef struct timelib_elems {
        unsigned int   c; /* Number of elements */
        char         **v; /* Values */
@@ -178,17 +155,17 @@ typedef struct _timelib_relunit {
 } timelib_relunit;
 
 /* The timezone table. */
-const static timelib_tz_lookup_table timelib_timezone_lookup[] = {
+static const timelib_tz_lookup_table timelib_timezone_lookup[] = {
 #include "timezonemap.h"
        { NULL, 0, 0, NULL },
 };
 
-const static timelib_tz_lookup_table timelib_timezone_fallbackmap[] = {
+static const timelib_tz_lookup_table timelib_timezone_fallbackmap[] = {
 #include "fallbackmap.h"
        { NULL, 0, 0, NULL },
 };
 
-const static timelib_tz_lookup_table timelib_timezone_utc[] = {
+static const timelib_tz_lookup_table timelib_timezone_utc[] = {
        { "utc", 0, 0, "UTC" },
 };
 
@@ -357,37 +334,41 @@ uchar *fill(Scanner *s, uchar *cursor){
 }
 #endif
 
-static void add_warning(Scanner *s, char *error)
+static void add_warning(Scanner *s, int error_code, char *error)
 {
        s->errors->warning_count++;
        s->errors->warning_messages = timelib_realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
+       s->errors->warning_messages[s->errors->warning_count - 1].error_code = error_code;
        s->errors->warning_messages[s->errors->warning_count - 1].position = s->tok ? s->tok - s->str : 0;
        s->errors->warning_messages[s->errors->warning_count - 1].character = s->tok ? *s->tok : 0;
        s->errors->warning_messages[s->errors->warning_count - 1].message = timelib_strdup(error);
 }
 
-static void add_error(Scanner *s, char *error)
+static void add_error(Scanner *s, int error_code, char *error)
 {
        s->errors->error_count++;
        s->errors->error_messages = timelib_realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
+       s->errors->error_messages[s->errors->error_count - 1].error_code = error_code;
        s->errors->error_messages[s->errors->error_count - 1].position = s->tok ? s->tok - s->str : 0;
        s->errors->error_messages[s->errors->error_count - 1].character = s->tok ? *s->tok : 0;
        s->errors->error_messages[s->errors->error_count - 1].message = timelib_strdup(error);
 }
 
-static void add_pbf_warning(Scanner *s, char *error, char *sptr, char *cptr)
+static void add_pbf_warning(Scanner *s, int error_code, char *error, char *sptr, char *cptr)
 {
        s->errors->warning_count++;
        s->errors->warning_messages = timelib_realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
+       s->errors->warning_messages[s->errors->warning_count - 1].error_code = error_code;
        s->errors->warning_messages[s->errors->warning_count - 1].position = cptr - sptr;
        s->errors->warning_messages[s->errors->warning_count - 1].character = *cptr;
        s->errors->warning_messages[s->errors->warning_count - 1].message = timelib_strdup(error);
 }
 
-static void add_pbf_error(Scanner *s, char *error, char *sptr, char *cptr)
+static void add_pbf_error(Scanner *s, int error_code, char *error, char *sptr, char *cptr)
 {
        s->errors->error_count++;
        s->errors->error_messages = timelib_realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
+       s->errors->error_messages[s->errors->error_count - 1].error_code = error_code;
        s->errors->error_messages[s->errors->error_count - 1].position = cptr - sptr;
        s->errors->error_messages[s->errors->error_count - 1].character = *cptr;
        s->errors->error_messages[s->errors->error_count - 1].message = timelib_strdup(error);
@@ -507,7 +488,7 @@ static void timelib_skip_day_suffix(char **ptr)
        }
 }
 
-static double timelib_get_frac_nr(char **ptr, int max_length)
+static timelib_sll timelib_get_frac_nr(char **ptr, int max_length)
 {
        char *begin, *end, *str;
        double tmp_nr = TIMELIB_UNSET;
@@ -525,12 +506,9 @@ static double timelib_get_frac_nr(char **ptr, int max_length)
                ++len;
        }
        end = *ptr;
-       str = timelib_calloc(1, end - begin + 1);
-       memcpy(str, begin, end - begin);
-       if (str[0] == ':') {
-               str[0] = '.';
-       }
-       tmp_nr = strtod(str, NULL);
+       str = timelib_calloc(1, end - begin);
+       memcpy(str, begin + 1, end - begin - 1);
+       tmp_nr = strtod(str, NULL) * pow(10, 7 - (end - begin));
        timelib_free(str);
        return tmp_nr;
 }
@@ -670,7 +648,7 @@ static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, S
        }
 
        switch (relunit->unit) {
-               case TIMELIB_MICROSEC: s->time->relative.f += (((double) amount * (double) relunit->multiplier) / 1000000); break;
+               case TIMELIB_MICROSEC: s->time->relative.us += amount * relunit->multiplier; break;
                case TIMELIB_SECOND:   s->time->relative.s += amount * relunit->multiplier; break;
                case TIMELIB_MINUTE:   s->time->relative.i += amount * relunit->multiplier; break;
                case TIMELIB_HOUR:     s->time->relative.h += amount * relunit->multiplier; break;
@@ -694,7 +672,7 @@ static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, S
        }
 }
 
-const static timelib_tz_lookup_table* abbr_search(const char *word, timelib_long gmtoffset, int isdst)
+static const timelib_tz_lookup_table* abbr_search(const char *word, timelib_long gmtoffset, int isdst)
 {
        int first_found = 0;
        const timelib_tz_lookup_table  *tp, *first_found_elem = NULL;
@@ -725,7 +703,7 @@ const static timelib_tz_lookup_table* abbr_search(const char *word, timelib_long
        /* Still didn't find anything, let's find the zone solely based on
         * offset/isdst then */
        for (fmp = timelib_timezone_fallbackmap; fmp->name; fmp++) {
-               if ((fmp->gmtoffset * 60) == gmtoffset && fmp->type == isdst) {
+               if (fmp->gmtoffset == gmtoffset && fmp->type == isdst) {
                        return fmp;
                }
        }
@@ -747,9 +725,9 @@ static timelib_long timelib_lookup_abbr(char **ptr, int *dst, char **tz_abbr, in
        memcpy(word, begin, end - begin);
 
        if ((tp = abbr_search(word, -1, 0))) {
-               value = -tp->gmtoffset / 60;
+               value = tp->gmtoffset;
                *dst = tp->type;
-               value += tp->type * 60;
+               value -= tp->type * 3600;
                *found = 1;
        } else {
                *found = 0;
@@ -759,6 +737,42 @@ static timelib_long timelib_lookup_abbr(char **ptr, int *dst, char **tz_abbr, in
        return value;
 }
 
+#define sHOUR(a) (int)(a * 3600)
+#define sMIN(a) (int)(a * 60)
+
+static timelib_long timelib_parse_tz_cor(char **ptr)
+{
+       char *begin = *ptr, *end;
+       timelib_long  tmp;
+
+       while (isdigit(**ptr) || **ptr == ':') {
+               ++*ptr;
+       }
+       end = *ptr;
+       switch (end - begin) {
+               case 1: /* H */
+               case 2: /* HH */
+                       return sHOUR(strtol(begin, NULL, 10));
+                       break;
+               case 3: /* H:M */
+               case 4: /* H:MM, HH:M, HHMM */
+                       if (begin[1] == ':') {
+                               tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 2, NULL, 10));
+                               return tmp;
+                       } else if (begin[2] == ':') {
+                               tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 3, NULL, 10));
+                               return tmp;
+                       } else {
+                               tmp = strtol(begin, NULL, 10);
+                               return sHOUR(tmp / 100) + sMIN(tmp % 100);
+                       }
+               case 5: /* HH:MM */
+                       tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 3, NULL, 10));
+                       return tmp;
+       }
+       return 0;
+}
+
 timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_wrapper)
 {
        timelib_tzinfo *res;
@@ -779,7 +793,7 @@ timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_n
                *tz_not_found = 0;
                t->dst = 0;
 
-               retval = -1 * timelib_parse_tz_cor(ptr);
+               retval = timelib_parse_tz_cor(ptr);
        } else if (**ptr == '-') {
                ++*ptr;
                t->is_localtime = 1;
@@ -787,7 +801,7 @@ timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_n
                *tz_not_found = 0;
                t->dst = 0;
 
-               retval = timelib_parse_tz_cor(ptr);
+               retval = -1 * timelib_parse_tz_cor(ptr);
        } else {
                int found = 0;
                timelib_long offset = 0;
@@ -804,7 +818,9 @@ timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_n
 
                /* Otherwise, we look if we have a TimeZone identifier */
                if (!found || strcmp("UTC", tz_abbr) == 0) {
-                       if ((res = tz_wrapper(tz_abbr, tzdb)) != NULL) {
+                       int dummy_error_code;
+
+                       if ((res = tz_wrapper(tz_abbr, tzdb, &dummy_error_code)) != NULL) {
                                t->tz_info = res;
                                t->zone_type = TIMELIB_ZONETYPE_ID;
                                found++;
@@ -838,11 +854,11 @@ static int scan(Scanner *s, timelib_tz_get_wrapper tz_get_wrapper)
 std:
        s->tok = cursor;
        s->len = 0;
-#line 965 "ext/date/lib/parse_date.re"
+#line 981 "ext/date/lib/parse_date.re"
 
 
 
-#line 846 "ext/date/lib/parse_date.c"
+#line 862 "<stdout>"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -880,6 +896,7 @@ std:
                  0,   0,   0,   0,   0,   0,   0,   0, 
                  0,   0,   0,   0,   0,   0,   0,   0, 
        };
+       YYDEBUG(0, *YYCURSOR);
        if ((YYLIMIT - YYCURSOR) < 33) YYFILL(33);
        yych = *YYCURSOR;
        switch (yych) {
@@ -958,6 +975,7 @@ std:
        default:        goto yy53;
        }
 yy2:
+       YYDEBUG(2, *YYCURSOR);
        ++YYCURSOR;
        if ((yych = *YYCURSOR) <= 'E') {
                if (yych <= ')') {
@@ -965,19 +983,20 @@ yy2:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'D') goto yy165;
-                       goto yy1521;
+                       goto yy1523;
                }
        } else {
                if (yych <= 'd') {
                        if (yych <= 'Z') goto yy165;
                        if (yych >= 'a') goto yy170;
                } else {
-                       if (yych <= 'e') goto yy1530;
+                       if (yych <= 'e') goto yy1532;
                        if (yych <= 'z') goto yy170;
                }
        }
 yy3:
-#line 1673 "ext/date/lib/parse_date.re"
+       YYDEBUG(3, *YYCURSOR);
+#line 1689 "ext/date/lib/parse_date.re"
        {
                int tz_not_found;
                DEBUG_OUTPUT("tzcorrection | tz");
@@ -985,13 +1004,14 @@ yy3:
                TIMELIB_HAVE_TZ();
                s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                if (tz_not_found) {
-                       add_error(s, "The timezone could not be found in the database");
+                       add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
                }
                TIMELIB_DEINIT;
                return TIMELIB_TIMEZONE;
        }
-#line 994 "ext/date/lib/parse_date.c"
+#line 1013 "<stdout>"
 yy4:
+       YYDEBUG(4, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -1000,7 +1020,7 @@ yy4:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'D') goto yy165;
-                       goto yy1521;
+                       goto yy1523;
                }
        } else {
                if (yych <= 'd') {
@@ -1008,12 +1028,13 @@ yy4:
                        if (yych <= '`') goto yy3;
                        goto yy165;
                } else {
-                       if (yych <= 'e') goto yy1521;
+                       if (yych <= 'e') goto yy1523;
                        if (yych <= 'z') goto yy165;
                        goto yy3;
                }
        }
 yy5:
+       YYDEBUG(5, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'O') {
                if (yych <= 'D') {
@@ -1022,12 +1043,12 @@ yy5:
                        goto yy165;
                } else {
                        if (yych <= 'H') {
-                               if (yych <= 'E') goto yy1492;
+                               if (yych <= 'E') goto yy1494;
                                goto yy165;
                        } else {
-                               if (yych <= 'I') goto yy1493;
+                               if (yych <= 'I') goto yy1495;
                                if (yych <= 'N') goto yy165;
-                               goto yy1491;
+                               goto yy1493;
                        }
                }
        } else {
@@ -1036,21 +1057,22 @@ yy5:
                                if (yych <= 'Z') goto yy165;
                                goto yy3;
                        } else {
-                               if (yych == 'e') goto yy1508;
+                               if (yych == 'e') goto yy1510;
                                goto yy170;
                        }
                } else {
                        if (yych <= 'n') {
-                               if (yych <= 'i') goto yy1509;
+                               if (yych <= 'i') goto yy1511;
                                goto yy170;
                        } else {
-                               if (yych <= 'o') goto yy1507;
+                               if (yych <= 'o') goto yy1509;
                                if (yych <= 'z') goto yy170;
                                goto yy3;
                        }
                }
        }
 yy6:
+       YYDEBUG(6, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'O') {
                if (yych <= 'D') {
@@ -1059,12 +1081,12 @@ yy6:
                        goto yy165;
                } else {
                        if (yych <= 'H') {
-                               if (yych <= 'E') goto yy1492;
+                               if (yych <= 'E') goto yy1494;
                                goto yy165;
                        } else {
-                               if (yych <= 'I') goto yy1493;
+                               if (yych <= 'I') goto yy1495;
                                if (yych <= 'N') goto yy165;
-                               goto yy1491;
+                               goto yy1493;
                        }
                }
        } else {
@@ -1073,93 +1095,96 @@ yy6:
                                if (yych <= 'Z') goto yy165;
                                goto yy3;
                        } else {
-                               if (yych == 'e') goto yy1492;
+                               if (yych == 'e') goto yy1494;
                                goto yy165;
                        }
                } else {
                        if (yych <= 'n') {
-                               if (yych <= 'i') goto yy1493;
+                               if (yych <= 'i') goto yy1495;
                                goto yy165;
                        } else {
-                               if (yych <= 'o') goto yy1491;
+                               if (yych <= 'o') goto yy1493;
                                if (yych <= 'z') goto yy165;
                                goto yy3;
                        }
                }
        }
 yy7:
+       YYDEBUG(7, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'O') {
                if (yych <= 'A') {
                        if (yych == ')') goto yy164;
                        if (yych <= '@') goto yy3;
-                       goto yy1461;
+                       goto yy1463;
                } else {
-                       if (yych == 'I') goto yy1462;
+                       if (yych == 'I') goto yy1464;
                        if (yych <= 'N') goto yy165;
-                       goto yy1463;
+                       goto yy1465;
                }
        } else {
                if (yych <= 'h') {
                        if (yych <= 'Z') goto yy165;
                        if (yych <= '`') goto yy3;
-                       if (yych <= 'a') goto yy1476;
+                       if (yych <= 'a') goto yy1478;
                        goto yy170;
                } else {
                        if (yych <= 'n') {
-                               if (yych <= 'i') goto yy1477;
+                               if (yych <= 'i') goto yy1479;
                                goto yy170;
                        } else {
-                               if (yych <= 'o') goto yy1478;
+                               if (yych <= 'o') goto yy1480;
                                if (yych <= 'z') goto yy170;
                                goto yy3;
                        }
                }
        }
 yy8:
+       YYDEBUG(8, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'O') {
                if (yych <= 'A') {
                        if (yych == ')') goto yy164;
                        if (yych <= '@') goto yy3;
-                       goto yy1461;
+                       goto yy1463;
                } else {
-                       if (yych == 'I') goto yy1462;
+                       if (yych == 'I') goto yy1464;
                        if (yych <= 'N') goto yy165;
-                       goto yy1463;
+                       goto yy1465;
                }
        } else {
                if (yych <= 'h') {
                        if (yych <= 'Z') goto yy165;
                        if (yych <= '`') goto yy3;
-                       if (yych <= 'a') goto yy1461;
+                       if (yych <= 'a') goto yy1463;
                        goto yy165;
                } else {
                        if (yych <= 'n') {
-                               if (yych <= 'i') goto yy1462;
+                               if (yych <= 'i') goto yy1464;
                                goto yy165;
                        } else {
-                               if (yych <= 'o') goto yy1463;
+                               if (yych <= 'o') goto yy1465;
                                if (yych <= 'z') goto yy165;
                                goto yy3;
                        }
                }
        }
 yy9:
+       YYDEBUG(9, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
        case ')':       goto yy164;
        case '0':
-       case '1':       goto yy1391;
-       case '2':       goto yy1392;
+       case '1':       goto yy1393;
+       case '2':       goto yy1394;
        case '3':
        case '4':
        case '5':
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy1393;
+       case '9':       goto yy1395;
        case 'A':
        case 'B':
        case 'C':
@@ -1181,11 +1206,11 @@ yy9:
        case 'X':
        case 'Y':
        case 'Z':       goto yy165;
-       case 'E':       goto yy1386;
-       case 'H':       goto yy1387;
-       case 'O':       goto yy1388;
-       case 'U':       goto yy1389;
-       case 'W':       goto yy1390;
+       case 'E':       goto yy1388;
+       case 'H':       goto yy1389;
+       case 'O':       goto yy1390;
+       case 'U':       goto yy1391;
+       case 'W':       goto yy1392;
        case 'a':
        case 'b':
        case 'c':
@@ -1207,28 +1232,29 @@ yy9:
        case 'x':
        case 'y':
        case 'z':       goto yy170;
-       case 'e':       goto yy1429;
-       case 'h':       goto yy1430;
-       case 'o':       goto yy1431;
-       case 'u':       goto yy1432;
-       case 'w':       goto yy1433;
+       case 'e':       goto yy1431;
+       case 'h':       goto yy1432;
+       case 'o':       goto yy1433;
+       case 'u':       goto yy1434;
+       case 'w':       goto yy1435;
        default:        goto yy3;
        }
 yy10:
+       YYDEBUG(10, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
        case ')':       goto yy164;
        case '0':
-       case '1':       goto yy1391;
-       case '2':       goto yy1392;
+       case '1':       goto yy1393;
+       case '2':       goto yy1394;
        case '3':
        case '4':
        case '5':
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy1393;
+       case '9':       goto yy1395;
        case 'A':
        case 'B':
        case 'C':
@@ -1272,31 +1298,34 @@ yy10:
        case 'y':
        case 'z':       goto yy165;
        case 'E':
-       case 'e':       goto yy1386;
+       case 'e':       goto yy1388;
        case 'H':
-       case 'h':       goto yy1387;
+       case 'h':       goto yy1389;
        case 'O':
-       case 'o':       goto yy1388;
+       case 'o':       goto yy1390;
        case 'U':
-       case 'u':       goto yy1389;
+       case 'u':       goto yy1391;
        case 'W':
-       case 'w':       goto yy1390;
+       case 'w':       goto yy1392;
        default:        goto yy3;
        }
 yy11:
+       YYDEBUG(11, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if (yych == '-') goto yy1374;
+       if (yych == '-') goto yy1376;
        if (yych <= '/') goto yy12;
-       if (yych <= '9') goto yy1375;
+       if (yych <= '9') goto yy1377;
 yy12:
-#line 1768 "ext/date/lib/parse_date.re"
+       YYDEBUG(12, *YYCURSOR);
+#line 1784 "ext/date/lib/parse_date.re"
        {
-               add_error(s, "Unexpected character");
+               add_error(s, TIMELIB_ERR_UNEXPECTED_CHARACTER, "Unexpected character");
                goto std;
        }
-#line 1299 "ext/date/lib/parse_date.c"
+#line 1327 "<stdout>"
 yy13:
+       YYDEBUG(13, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= 'E') {
@@ -1306,16 +1335,16 @@ yy13:
                        } else {
                                if (yych <= '@') goto yy3;
                                if (yych <= 'D') goto yy165;
-                               goto yy1310;
+                               goto yy1311;
                        }
                } else {
                        if (yych <= 'N') {
-                               if (yych == 'I') goto yy1311;
+                               if (yych == 'I') goto yy1312;
                                goto yy165;
                        } else {
-                               if (yych <= 'O') goto yy1312;
+                               if (yych <= 'O') goto yy1313;
                                if (yych <= 'Q') goto yy165;
-                               goto yy1313;
+                               goto yy1314;
                        }
                }
        } else {
@@ -1325,22 +1354,23 @@ yy13:
                                if (yych <= '`') goto yy3;
                                goto yy170;
                        } else {
-                               if (yych <= 'e') goto yy1351;
+                               if (yych <= 'e') goto yy1353;
                                if (yych <= 'h') goto yy170;
-                               goto yy1352;
+                               goto yy1354;
                        }
                } else {
                        if (yych <= 'q') {
-                               if (yych == 'o') goto yy1353;
+                               if (yych == 'o') goto yy1355;
                                goto yy170;
                        } else {
-                               if (yych <= 'r') goto yy1354;
+                               if (yych <= 'r') goto yy1356;
                                if (yych <= 'z') goto yy170;
                                goto yy3;
                        }
                }
        }
 yy14:
+       YYDEBUG(14, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= 'E') {
@@ -1350,16 +1380,16 @@ yy14:
                        } else {
                                if (yych <= '@') goto yy3;
                                if (yych <= 'D') goto yy165;
-                               goto yy1310;
+                               goto yy1311;
                        }
                } else {
                        if (yych <= 'N') {
-                               if (yych == 'I') goto yy1311;
+                               if (yych == 'I') goto yy1312;
                                goto yy165;
                        } else {
-                               if (yych <= 'O') goto yy1312;
+                               if (yych <= 'O') goto yy1313;
                                if (yych <= 'Q') goto yy165;
-                               goto yy1313;
+                               goto yy1314;
                        }
                }
        } else {
@@ -1369,54 +1399,57 @@ yy14:
                                if (yych <= '`') goto yy3;
                                goto yy165;
                        } else {
-                               if (yych <= 'e') goto yy1310;
+                               if (yych <= 'e') goto yy1311;
                                if (yych <= 'h') goto yy165;
-                               goto yy1311;
+                               goto yy1312;
                        }
                } else {
                        if (yych <= 'q') {
-                               if (yych == 'o') goto yy1312;
+                               if (yych == 'o') goto yy1313;
                                goto yy165;
                        } else {
-                               if (yych <= 'r') goto yy1313;
+                               if (yych <= 'r') goto yy1314;
                                if (yych <= 'z') goto yy165;
                                goto yy3;
                        }
                }
        }
 yy15:
+       YYDEBUG(15, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'A') {
                if (yych == ')') goto yy164;
                if (yych <= '@') goto yy3;
-               goto yy1296;
+               goto yy1297;
        } else {
                if (yych <= '`') {
                        if (yych <= 'Z') goto yy165;
                        goto yy3;
                } else {
-                       if (yych <= 'a') goto yy1307;
+                       if (yych <= 'a') goto yy1308;
                        if (yych <= 'z') goto yy170;
                        goto yy3;
                }
        }
 yy16:
+       YYDEBUG(16, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'A') {
                if (yych == ')') goto yy164;
                if (yych <= '@') goto yy3;
-               goto yy1296;
+               goto yy1297;
        } else {
                if (yych <= '`') {
                        if (yych <= 'Z') goto yy165;
                        goto yy3;
                } else {
-                       if (yych <= 'a') goto yy1296;
+                       if (yych <= 'a') goto yy1297;
                        if (yych <= 'z') goto yy165;
                        goto yy3;
                }
        }
 yy17:
+       YYDEBUG(17, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'A') {
                if (yych == ')') goto yy164;
@@ -1427,12 +1460,13 @@ yy17:
                        if (yych <= 'Z') goto yy165;
                        goto yy3;
                } else {
-                       if (yych <= 'a') goto yy1293;
+                       if (yych <= 'a') goto yy1294;
                        if (yych <= 'z') goto yy170;
                        goto yy3;
                }
        }
 yy18:
+       YYDEBUG(18, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'A') {
                if (yych == ')') goto yy164;
@@ -1449,6 +1483,7 @@ yy18:
                }
        }
 yy19:
+       YYDEBUG(19, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= 'D') {
@@ -1492,6 +1527,7 @@ yy19:
                }
        }
 yy20:
+       YYDEBUG(20, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= 'D') {
@@ -1535,6 +1571,7 @@ yy20:
                }
        }
 yy21:
+       YYDEBUG(21, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych <= '@') {
@@ -1558,6 +1595,7 @@ yy21:
                }
        }
 yy22:
+       YYDEBUG(22, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych <= '@') {
@@ -1581,6 +1619,7 @@ yy22:
                }
        }
 yy23:
+       YYDEBUG(23, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= ')') {
@@ -1603,6 +1642,7 @@ yy23:
                }
        }
 yy24:
+       YYDEBUG(24, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= ')') {
@@ -1625,6 +1665,7 @@ yy24:
                }
        }
 yy25:
+       YYDEBUG(25, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '`') {
@@ -1716,6 +1757,7 @@ yy25:
                }
        }
 yy26:
+       YYDEBUG(26, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '`') {
@@ -1807,6 +1849,7 @@ yy26:
                }
        }
 yy27:
+       YYDEBUG(27, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '`') {
@@ -1898,6 +1941,7 @@ yy27:
                }
        }
 yy28:
+       YYDEBUG(28, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '`') {
@@ -1989,6 +2033,7 @@ yy28:
                }
        }
 yy29:
+       YYDEBUG(29, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'a') {
@@ -2076,6 +2121,7 @@ yy29:
                }
        }
 yy30:
+       YYDEBUG(30, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 4) {
@@ -2097,6 +2143,7 @@ yy30:
        default:        goto yy12;
        }
 yy31:
+       YYDEBUG(31, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -2139,6 +2186,7 @@ yy31:
                }
        }
 yy32:
+       YYDEBUG(32, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -2169,6 +2217,7 @@ yy32:
                }
        }
 yy33:
+       YYDEBUG(33, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -2199,6 +2248,7 @@ yy33:
                }
        }
 yy34:
+       YYDEBUG(34, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= '@') {
@@ -2221,6 +2271,7 @@ yy34:
                }
        }
 yy35:
+       YYDEBUG(35, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= '@') {
@@ -2243,6 +2294,7 @@ yy35:
                }
        }
 yy36:
+       YYDEBUG(36, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= 'F') {
@@ -2280,6 +2332,7 @@ yy36:
                }
        }
 yy37:
+       YYDEBUG(37, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= 'F') {
@@ -2317,6 +2370,7 @@ yy37:
                }
        }
 yy38:
+       YYDEBUG(38, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'C') {
                if (yych <= ')') {
@@ -2339,6 +2393,7 @@ yy38:
                }
        }
 yy39:
+       YYDEBUG(39, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'C') {
                if (yych <= ')') {
@@ -2361,6 +2416,7 @@ yy39:
                }
        }
 yy40:
+       YYDEBUG(40, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -2383,6 +2439,7 @@ yy40:
                }
        }
 yy41:
+       YYDEBUG(41, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -2405,6 +2462,7 @@ yy41:
                }
        }
 yy42:
+       YYDEBUG(42, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -2427,6 +2485,7 @@ yy42:
                }
        }
 yy43:
+       YYDEBUG(43, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -2449,6 +2508,7 @@ yy43:
                }
        }
 yy44:
+       YYDEBUG(44, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych == ')') goto yy164;
@@ -2465,6 +2525,7 @@ yy44:
                }
        }
 yy45:
+       YYDEBUG(45, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') goto yy12;
        if (yych <= 'Z') goto yy180;
@@ -2472,6 +2533,7 @@ yy45:
        if (yych <= 'z') goto yy180;
        goto yy12;
 yy46:
+       YYDEBUG(46, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy164;
@@ -2483,6 +2545,7 @@ yy46:
                goto yy3;
        }
 yy47:
+       YYDEBUG(47, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy164;
@@ -2494,6 +2557,7 @@ yy47:
                goto yy3;
        }
 yy48:
+       YYDEBUG(48, *YYCURSOR);
        yyaccept = 2;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 4) {
@@ -2502,29 +2566,36 @@ yy48:
        if (yych <= '/') goto yy49;
        if (yych <= '9') goto yy54;
 yy49:
-#line 1757 "ext/date/lib/parse_date.re"
+       YYDEBUG(49, *YYCURSOR);
+#line 1773 "ext/date/lib/parse_date.re"
        {
                goto std;
        }
-#line 2510 "ext/date/lib/parse_date.c"
+#line 2575 "<stdout>"
 yy50:
+       YYDEBUG(50, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy49;
 yy51:
+       YYDEBUG(51, *YYCURSOR);
        ++YYCURSOR;
-#line 1762 "ext/date/lib/parse_date.re"
+       YYDEBUG(52, *YYCURSOR);
+#line 1778 "ext/date/lib/parse_date.re"
        {
                s->pos = cursor; s->line++;
                goto std;
        }
-#line 2521 "ext/date/lib/parse_date.c"
+#line 2589 "<stdout>"
 yy53:
+       YYDEBUG(53, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy12;
 yy54:
+       YYDEBUG(54, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
        yych = *YYCURSOR;
+       YYDEBUG(55, *YYCURSOR);
        if (yybm[0+yych] & 2) {
                goto yy54;
        }
@@ -2592,6 +2663,7 @@ yy54:
                }
        }
 yy56:
+       YYDEBUG(56, *YYCURSOR);
        YYCURSOR = YYMARKER;
        if (yyaccept <= 16) {
                if (yyaccept <= 8) {
@@ -2704,32 +2776,34 @@ yy56:
                                        }
                                } else {
                                        if (yyaccept == 28) {
-                                               goto yy1377;
+                                               goto yy1379;
                                        } else {
-                                               goto yy1415;
+                                               goto yy1417;
                                        }
                                }
                        } else {
                                if (yyaccept <= 31) {
                                        if (yyaccept == 30) {
-                                               goto yy1418;
+                                               goto yy1420;
                                        } else {
-                                               goto yy1498;
+                                               goto yy1500;
                                        }
                                } else {
                                        if (yyaccept == 32) {
-                                               goto yy1506;
+                                               goto yy1508;
                                        } else {
-                                               goto yy1529;
+                                               goto yy1531;
                                        }
                                }
                        }
                }
        }
 yy57:
+       YYDEBUG(57, *YYCURSOR);
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYDEBUG(58, *YYCURSOR);
        if (yybm[0+yych] & 4) {
                goto yy57;
        }
@@ -2737,10 +2811,12 @@ yy57:
        if (yych <= '9') goto yy54;
        goto yy56;
 yy59:
+       YYDEBUG(59, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
        yych = *YYCURSOR;
 yy60:
+       YYDEBUG(60, *YYCURSOR);
        if (yych <= 'X') {
                if (yych <= 'G') {
                        if (yych <= ' ') {
@@ -2817,6 +2893,7 @@ yy60:
                }
        }
 yy61:
+       YYDEBUG(61, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych <= 'N') {
@@ -2838,15 +2915,18 @@ yy61:
                }
        }
 yy62:
+       YYDEBUG(62, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 0xB5) goto yy134;
        goto yy56;
 yy63:
+       YYDEBUG(63, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy132;
        if (yych == 's') goto yy132;
        goto yy56;
 yy64:
+       YYDEBUG(64, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= 'D') {
@@ -2868,16 +2948,19 @@ yy64:
                }
        }
 yy65:
+       YYDEBUG(65, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy116;
        if (yych == 'o') goto yy116;
        goto yy56;
 yy66:
+       YYDEBUG(66, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy115;
        if (yych == 'a') goto yy115;
        goto yy56;
 yy67:
+       YYDEBUG(67, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych == 'O') goto yy100;
@@ -2893,16 +2976,19 @@ yy67:
                }
        }
 yy68:
+       YYDEBUG(68, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy96;
        if (yych == 'e') goto yy96;
        goto yy56;
 yy69:
+       YYDEBUG(69, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy84;
        if (yych == 'e') goto yy84;
        goto yy56;
 yy70:
+       YYDEBUG(70, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'H') goto yy71;
@@ -2917,21 +3003,25 @@ yy70:
                }
        }
 yy71:
+       YYDEBUG(71, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'U') goto yy79;
        if (yych == 'u') goto yy79;
        goto yy56;
 yy72:
+       YYDEBUG(72, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy73;
        if (yych != 'e') goto yy56;
 yy73:
+       YYDEBUG(73, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'S') goto yy75;
        if (yych == 's') goto yy75;
 yy74:
-#line 1741 "ext/date/lib/parse_date.re"
+       YYDEBUG(74, *YYCURSOR);
+#line 1757 "ext/date/lib/parse_date.re"
        {
                timelib_ull i;
                DEBUG_OUTPUT("relative");
@@ -2946,45 +3036,55 @@ yy74:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 2950 "ext/date/lib/parse_date.c"
+#line 3040 "<stdout>"
 yy75:
+       YYDEBUG(75, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy76;
        if (yych != 'd') goto yy56;
 yy76:
+       YYDEBUG(76, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy77;
        if (yych != 'a') goto yy56;
 yy77:
+       YYDEBUG(77, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy78;
        if (yych != 'y') goto yy56;
 yy78:
+       YYDEBUG(78, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy74;
 yy79:
+       YYDEBUG(79, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'R') goto yy80;
        if (yych != 'r') goto yy74;
 yy80:
+       YYDEBUG(80, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy81;
        if (yych != 's') goto yy56;
 yy81:
+       YYDEBUG(81, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy82;
        if (yych != 'd') goto yy56;
 yy82:
+       YYDEBUG(82, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy83;
        if (yych != 'a') goto yy56;
 yy83:
+       YYDEBUG(83, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy78;
        if (yych == 'y') goto yy78;
        goto yy56;
 yy84:
+       YYDEBUG(84, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= 'C') goto yy56;
@@ -2994,37 +3094,45 @@ yy84:
                if (yych <= 'd') goto yy86;
                if (yych >= 'f') goto yy56;
        }
+       YYDEBUG(85, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'K') goto yy92;
        if (yych == 'k') goto yy92;
        goto yy56;
 yy86:
+       YYDEBUG(86, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'N') goto yy87;
        if (yych != 'n') goto yy74;
 yy87:
+       YYDEBUG(87, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy88;
        if (yych != 'e') goto yy56;
 yy88:
+       YYDEBUG(88, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy89;
        if (yych != 's') goto yy56;
 yy89:
+       YYDEBUG(89, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy90;
        if (yych != 'd') goto yy56;
 yy90:
+       YYDEBUG(90, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy91;
        if (yych != 'a') goto yy56;
 yy91:
+       YYDEBUG(91, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy78;
        if (yych == 'y') goto yy78;
        goto yy56;
 yy92:
+       YYDEBUG(92, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -3040,45 +3148,55 @@ yy92:
                }
        }
 yy93:
+       YYDEBUG(93, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy94;
        if (yych != 'a') goto yy56;
 yy94:
+       YYDEBUG(94, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy95;
        if (yych != 'y') goto yy56;
 yy95:
+       YYDEBUG(95, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy78;
        if (yych == 's') goto yy78;
        goto yy74;
 yy96:
+       YYDEBUG(96, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy97;
        if (yych != 'a') goto yy56;
 yy97:
+       YYDEBUG(97, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy98;
        if (yych != 'r') goto yy56;
 yy98:
+       YYDEBUG(98, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy78;
        if (yych == 's') goto yy78;
        goto yy74;
 yy99:
+       YYDEBUG(99, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy112;
        if (yych == 'i') goto yy112;
        goto yy56;
 yy100:
+       YYDEBUG(100, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy101;
        if (yych != 'r') goto yy56;
 yy101:
+       YYDEBUG(101, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy102;
        if (yych != 't') goto yy56;
 yy102:
+       YYDEBUG(102, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych == 'H') goto yy104;
@@ -3091,87 +3209,106 @@ yy102:
                        if (yych != 'n') goto yy56;
                }
        }
+       YYDEBUG(103, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy109;
        if (yych == 'i') goto yy109;
        goto yy56;
 yy104:
+       YYDEBUG(104, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy105;
        if (yych != 'n') goto yy56;
 yy105:
+       YYDEBUG(105, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy106;
        if (yych != 'i') goto yy56;
 yy106:
+       YYDEBUG(106, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'G') goto yy107;
        if (yych != 'g') goto yy56;
 yy107:
+       YYDEBUG(107, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'H') goto yy108;
        if (yych != 'h') goto yy56;
 yy108:
+       YYDEBUG(108, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy98;
        if (yych == 't') goto yy98;
        goto yy56;
 yy109:
+       YYDEBUG(109, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'G') goto yy110;
        if (yych != 'g') goto yy56;
 yy110:
+       YYDEBUG(110, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'H') goto yy111;
        if (yych != 'h') goto yy56;
 yy111:
+       YYDEBUG(111, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy98;
        if (yych == 't') goto yy98;
        goto yy56;
 yy112:
+       YYDEBUG(112, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'D') goto yy113;
        if (yych != 'd') goto yy74;
 yy113:
+       YYDEBUG(113, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy114;
        if (yych != 'a') goto yy56;
 yy114:
+       YYDEBUG(114, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy78;
        if (yych == 'y') goto yy78;
        goto yy56;
 yy115:
+       YYDEBUG(115, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy98;
        if (yych == 'y') goto yy98;
        goto yy56;
 yy116:
+       YYDEBUG(116, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'U') goto yy117;
        if (yych != 'u') goto yy56;
 yy117:
+       YYDEBUG(117, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy98;
        if (yych == 'r') goto yy98;
        goto yy56;
 yy118:
+       YYDEBUG(118, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy129;
        if (yych == 'n') goto yy129;
        goto yy56;
 yy119:
+       YYDEBUG(119, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy124;
        if (yych == 't') goto yy124;
        goto yy56;
 yy120:
+       YYDEBUG(120, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy121;
        if (yych != 'c') goto yy56;
 yy121:
+       YYDEBUG(121, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -3187,79 +3324,96 @@ yy121:
                }
        }
 yy122:
+       YYDEBUG(122, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy123;
        if (yych != 'n') goto yy56;
 yy123:
+       YYDEBUG(123, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy98;
        if (yych == 'd') goto yy98;
        goto yy56;
 yy124:
+       YYDEBUG(124, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'U') goto yy125;
        if (yych != 'u') goto yy74;
 yy125:
+       YYDEBUG(125, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy126;
        if (yych != 'r') goto yy56;
 yy126:
+       YYDEBUG(126, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy127;
        if (yych != 'd') goto yy56;
 yy127:
+       YYDEBUG(127, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy128;
        if (yych != 'a') goto yy56;
 yy128:
+       YYDEBUG(128, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy78;
        if (yych == 'y') goto yy78;
        goto yy56;
 yy129:
+       YYDEBUG(129, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'D') goto yy130;
        if (yych != 'd') goto yy74;
 yy130:
+       YYDEBUG(130, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy131;
        if (yych != 'a') goto yy56;
 yy131:
+       YYDEBUG(131, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy78;
        if (yych == 'y') goto yy78;
        goto yy56;
 yy132:
+       YYDEBUG(132, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy133;
        if (yych != 'e') goto yy56;
 yy133:
+       YYDEBUG(133, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy98;
        if (yych == 'c') goto yy98;
        goto yy56;
 yy134:
+       YYDEBUG(134, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy135;
        if (yych != 's') goto yy56;
 yy135:
+       YYDEBUG(135, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'E') goto yy136;
        if (yych != 'e') goto yy74;
 yy136:
+       YYDEBUG(136, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy98;
        if (yych == 'c') goto yy98;
        goto yy56;
 yy137:
+       YYDEBUG(137, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy160;
        if (yych == 'n') goto yy160;
        goto yy56;
 yy138:
+       YYDEBUG(138, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= 'K') {
@@ -3281,26 +3435,31 @@ yy138:
                }
        }
 yy139:
+       YYDEBUG(139, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'E') goto yy140;
        if (yych != 'e') goto yy74;
 yy140:
+       YYDEBUG(140, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy98;
        if (yych == 'c') goto yy98;
        goto yy56;
 yy141:
+       YYDEBUG(141, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'L') goto yy153;
        if (yych == 'l') goto yy153;
        goto yy56;
 yy142:
+       YYDEBUG(142, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy146;
        if (yych == 'r') goto yy146;
        goto yy56;
 yy143:
+       YYDEBUG(143, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'U') {
@@ -3314,73 +3473,90 @@ yy143:
                        if (yych != 'u') goto yy74;
                }
        }
+       YYDEBUG(144, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy145;
        if (yych != 't') goto yy56;
 yy145:
+       YYDEBUG(145, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy98;
        if (yych == 'e') goto yy98;
        goto yy56;
 yy146:
+       YYDEBUG(146, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy147;
        if (yych != 'o') goto yy56;
 yy147:
+       YYDEBUG(147, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy148;
        if (yych != 's') goto yy56;
 yy148:
+       YYDEBUG(148, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy149;
        if (yych != 'e') goto yy56;
 yy149:
+       YYDEBUG(149, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy150;
        if (yych != 'c') goto yy56;
 yy150:
+       YYDEBUG(150, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy151;
        if (yych != 'o') goto yy56;
 yy151:
+       YYDEBUG(151, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy152;
        if (yych != 'n') goto yy56;
 yy152:
+       YYDEBUG(152, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy98;
        if (yych == 'd') goto yy98;
        goto yy56;
 yy153:
+       YYDEBUG(153, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy154;
        if (yych != 'i') goto yy56;
 yy154:
+       YYDEBUG(154, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy155;
        if (yych != 's') goto yy56;
 yy155:
+       YYDEBUG(155, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy156;
        if (yych != 'e') goto yy56;
 yy156:
+       YYDEBUG(156, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy157;
        if (yych != 'c') goto yy56;
 yy157:
+       YYDEBUG(157, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy158;
        if (yych != 'o') goto yy56;
 yy158:
+       YYDEBUG(158, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy159;
        if (yych != 'n') goto yy56;
 yy159:
+       YYDEBUG(159, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy98;
        if (yych == 'd') goto yy98;
        goto yy56;
 yy160:
+       YYDEBUG(160, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'T') {
@@ -3396,24 +3572,29 @@ yy160:
                }
        }
 yy161:
+       YYDEBUG(161, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy163;
        if (yych == 'a') goto yy163;
        goto yy56;
 yy162:
+       YYDEBUG(162, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'H') goto yy98;
        if (yych == 'h') goto yy98;
        goto yy56;
 yy163:
+       YYDEBUG(163, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy78;
        if (yych == 'y') goto yy78;
        goto yy56;
 yy164:
+       YYDEBUG(164, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy3;
 yy165:
+       YYDEBUG(165, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy164;
@@ -3424,6 +3605,7 @@ yy165:
                if (yych >= '{') goto yy3;
        }
 yy166:
+       YYDEBUG(166, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy164;
@@ -3434,6 +3616,7 @@ yy166:
                if (yych >= '{') goto yy3;
        }
 yy167:
+       YYDEBUG(167, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy164;
@@ -3444,6 +3627,7 @@ yy167:
                if (yych >= '{') goto yy3;
        }
 yy168:
+       YYDEBUG(168, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy164;
@@ -3454,10 +3638,12 @@ yy168:
                if (yych >= '{') goto yy3;
        }
 yy169:
+       YYDEBUG(169, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == ')') goto yy164;
        goto yy3;
 yy170:
+       YYDEBUG(170, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -3480,6 +3666,7 @@ yy170:
                }
        }
 yy171:
+       YYDEBUG(171, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -3502,6 +3689,7 @@ yy171:
                }
        }
 yy172:
+       YYDEBUG(172, *YYCURSOR);
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
@@ -3510,10 +3698,12 @@ yy172:
        }
        goto yy56;
 yy173:
+       YYDEBUG(173, *YYCURSOR);
        yyaccept = 0;
        YYMARKER = ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYDEBUG(174, *YYCURSOR);
        if (yybm[0+yych] & 8) {
                goto yy173;
        }
@@ -3526,6 +3716,7 @@ yy173:
                goto yy3;
        }
 yy175:
+       YYDEBUG(175, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -3548,6 +3739,7 @@ yy175:
                }
        }
 yy176:
+       YYDEBUG(176, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -3570,6 +3762,7 @@ yy176:
                }
        }
 yy177:
+       YYDEBUG(177, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 16) {
@@ -3589,10 +3782,12 @@ yy177:
                }
        }
 yy178:
+       YYDEBUG(178, *YYCURSOR);
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
 yy179:
+       YYDEBUG(179, *YYCURSOR);
        if (yybm[0+yych] & 16) {
                goto yy178;
        }
@@ -3605,6 +3800,7 @@ yy179:
                goto yy56;
        }
 yy180:
+       YYDEBUG(180, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy164;
@@ -3616,6 +3812,7 @@ yy180:
                goto yy3;
        }
 yy181:
+       YYDEBUG(181, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych == ')') goto yy164;
@@ -3630,6 +3827,7 @@ yy181:
                        goto yy3;
                }
        }
+       YYDEBUG(182, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -3651,6 +3849,7 @@ yy181:
                }
        }
 yy183:
+       YYDEBUG(183, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '1') goto yy184;
@@ -3658,12 +3857,14 @@ yy183:
        if (yych <= '9') goto yy186;
        goto yy56;
 yy184:
+       YYDEBUG(184, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy3;
        if (yych <= '9') goto yy186;
        if (yych <= ':') goto yy187;
        goto yy3;
 yy185:
+       YYDEBUG(185, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '5') {
                if (yych <= '/') goto yy3;
@@ -3674,23 +3875,27 @@ yy185:
                goto yy3;
        }
 yy186:
+       YYDEBUG(186, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy3;
        if (yych <= '5') goto yy188;
        if (yych <= '9') goto yy164;
        if (yych >= ';') goto yy3;
 yy187:
+       YYDEBUG(187, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy3;
        if (yych <= '5') goto yy188;
        if (yych <= '9') goto yy164;
        goto yy3;
 yy188:
+       YYDEBUG(188, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy3;
        if (yych <= '9') goto yy164;
        goto yy3;
 yy189:
+       YYDEBUG(189, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= '@') {
@@ -3713,6 +3918,7 @@ yy189:
                }
        }
 yy190:
+       YYDEBUG(190, *YYCURSOR);
        ++YYCURSOR;
        if ((yych = *YYCURSOR) <= 'N') {
                if (yych <= ')') {
@@ -3732,7 +3938,8 @@ yy190:
                }
        }
 yy191:
-#line 1604 "ext/date/lib/parse_date.re"
+       YYDEBUG(191, *YYCURSOR);
+#line 1620 "ext/date/lib/parse_date.re"
        {
                const timelib_relunit* relunit;
                DEBUG_OUTPUT("daytext");
@@ -3749,8 +3956,9 @@ yy191:
                TIMELIB_DEINIT;
                return TIMELIB_WEEKDAY;
        }
-#line 3753 "ext/date/lib/parse_date.c"
+#line 3960 "<stdout>"
 yy192:
+       YYDEBUG(192, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'K') {
                if (yych <= ')') {
@@ -3772,6 +3980,7 @@ yy192:
                }
        }
 yy193:
+       YYDEBUG(193, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'D') {
                if (yych <= ')') {
@@ -3793,6 +4002,7 @@ yy193:
                }
        }
 yy194:
+       YYDEBUG(194, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'A') {
                if (yych == ')') goto yy164;
@@ -3808,6 +4018,7 @@ yy194:
                }
        }
 yy195:
+       YYDEBUG(195, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'X') {
                if (yych == ')') goto yy164;
@@ -3817,13 +4028,16 @@ yy195:
                if (yych != 'y') goto yy3;
        }
 yy196:
+       YYDEBUG(196, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy197;
        if (yych != 's') goto yy191;
 yy197:
+       YYDEBUG(197, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy191;
 yy198:
+       YYDEBUG(198, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -3845,6 +4059,7 @@ yy198:
                }
        }
 yy199:
+       YYDEBUG(199, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych <= ')') {
@@ -3866,6 +4081,7 @@ yy199:
                }
        }
 yy200:
+       YYDEBUG(200, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -3876,15 +4092,18 @@ yy200:
                if (yych != 'd') goto yy3;
        }
 yy201:
+       YYDEBUG(201, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy202;
        if (yych != 'a') goto yy56;
 yy202:
+       YYDEBUG(202, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy197;
        if (yych == 'y') goto yy197;
        goto yy56;
 yy203:
+       YYDEBUG(203, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -3921,6 +4140,7 @@ yy203:
                        }
                }
        }
+       YYDEBUG(204, *YYCURSOR);
        yyaccept = 4;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -3951,6 +4171,7 @@ yy203:
                }
        }
 yy205:
+       YYDEBUG(205, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'J') {
@@ -3981,6 +4202,7 @@ yy205:
                }
        }
 yy206:
+       YYDEBUG(206, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -4011,6 +4233,7 @@ yy206:
                }
        }
 yy207:
+       YYDEBUG(207, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -4036,6 +4259,7 @@ yy207:
                }
        }
 yy208:
+       YYDEBUG(208, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'X') {
@@ -4059,6 +4283,7 @@ yy208:
                }
        }
 yy209:
+       YYDEBUG(209, *YYCURSOR);
        yyaccept = 4;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -4081,6 +4306,7 @@ yy209:
                }
        }
 yy210:
+       YYDEBUG(210, *YYCURSOR);
        yyaccept = 4;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 16) {
@@ -4095,6 +4321,7 @@ yy210:
                goto yy191;
        }
 yy211:
+       YYDEBUG(211, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -4125,6 +4352,7 @@ yy211:
                }
        }
 yy212:
+       YYDEBUG(212, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'R') {
@@ -4155,6 +4383,7 @@ yy212:
                }
        }
 yy213:
+       YYDEBUG(213, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -4178,14 +4407,17 @@ yy213:
                }
        }
 yy214:
+       YYDEBUG(214, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy202;
        if (yych != 'a') goto yy179;
+       YYDEBUG(215, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy197;
        if (yych == 'y') goto yy210;
        goto yy179;
 yy216:
+       YYDEBUG(216, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'C') {
                if (yych <= ')') {
@@ -4207,6 +4439,7 @@ yy216:
                }
        }
 yy217:
+       YYDEBUG(217, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -4242,7 +4475,8 @@ yy217:
                }
        }
 yy218:
-#line 1663 "ext/date/lib/parse_date.re"
+       YYDEBUG(218, *YYCURSOR);
+#line 1679 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("monthtext");
                TIMELIB_INIT;
@@ -4251,12 +4485,14 @@ yy218:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_TEXT;
        }
-#line 4255 "ext/date/lib/parse_date.c"
+#line 4489 "<stdout>"
 yy219:
+       YYDEBUG(219, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 23) YYFILL(23);
        yych = *YYCURSOR;
 yy220:
+       YYDEBUG(220, *YYCURSOR);
        if (yybm[0+yych] & 32) {
                goto yy219;
        }
@@ -4266,6 +4502,7 @@ yy220:
        if (yych <= '9') goto yy224;
        goto yy56;
 yy221:
+       YYDEBUG(221, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy220;
        if (yych <= '0') goto yy324;
@@ -4273,6 +4510,7 @@ yy221:
        if (yych <= '3') goto yy326;
        goto yy220;
 yy222:
+       YYDEBUG(222, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '9') {
                if (yych <= ' ') {
@@ -4316,6 +4554,7 @@ yy222:
                }
        }
 yy223:
+       YYDEBUG(223, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '1') {
                if (yych <= ' ') {
@@ -4360,6 +4599,7 @@ yy223:
                }
        }
 yy224:
+       YYDEBUG(224, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '9') {
                if (yych <= ' ') {
@@ -4403,6 +4643,7 @@ yy224:
                }
        }
 yy225:
+       YYDEBUG(225, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'M') {
                if (yych <= ')') {
@@ -4424,6 +4665,7 @@ yy225:
                }
        }
 yy226:
+       YYDEBUG(226, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'B') {
                if (yych <= ')') {
@@ -4445,6 +4687,7 @@ yy226:
                }
        }
 yy227:
+       YYDEBUG(227, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -4455,10 +4698,12 @@ yy227:
                if (yych != 'e') goto yy3;
        }
 yy228:
+       YYDEBUG(228, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy229;
        if (yych != 'r') goto yy56;
 yy229:
+       YYDEBUG(229, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ' ') {
@@ -4476,17 +4721,20 @@ yy229:
                }
        }
 yy230:
+       YYDEBUG(230, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy320;
        goto yy56;
 yy231:
+       YYDEBUG(231, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 't') goto yy319;
        goto yy237;
 yy232:
-#line 1409 "ext/date/lib/parse_date.re"
+       YYDEBUG(232, *YYCURSOR);
+#line 1425 "ext/date/lib/parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("datetextual | datenoyear");
@@ -4499,28 +4747,33 @@ yy232:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_TEXT;
        }
-#line 4503 "ext/date/lib/parse_date.c"
+#line 4751 "<stdout>"
 yy233:
+       YYDEBUG(233, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'd') goto yy319;
        goto yy237;
 yy234:
+       YYDEBUG(234, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'd') goto yy319;
        goto yy237;
 yy235:
+       YYDEBUG(235, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'h') goto yy319;
        goto yy237;
 yy236:
+       YYDEBUG(236, *YYCURSOR);
        yyaccept = 6;
        YYMARKER = ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 18) YYFILL(18);
        yych = *YYCURSOR;
 yy237:
+       YYDEBUG(237, *YYCURSOR);
        if (yybm[0+yych] & 64) {
                goto yy236;
        }
@@ -4535,6 +4788,7 @@ yy237:
                goto yy232;
        }
 yy238:
+       YYDEBUG(238, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -4554,6 +4808,7 @@ yy238:
                }
        }
 yy239:
+       YYDEBUG(239, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '1') goto yy308;
@@ -4561,6 +4816,7 @@ yy239:
        if (yych <= '9') goto yy298;
        goto yy56;
 yy240:
+       YYDEBUG(240, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') {
                if (yych == '.') goto yy299;
@@ -4572,6 +4828,7 @@ yy240:
                goto yy56;
        }
 yy241:
+       YYDEBUG(241, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') {
                if (yych == '.') goto yy244;
@@ -4583,6 +4840,7 @@ yy241:
                goto yy56;
        }
 yy242:
+       YYDEBUG(242, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') {
                if (yych == '.') goto yy244;
@@ -4593,16 +4851,19 @@ yy242:
                goto yy56;
        }
 yy243:
+       YYDEBUG(243, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '.') goto yy244;
        if (yych != ':') goto yy56;
 yy244:
+       YYDEBUG(244, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy245;
        if (yych <= '9') goto yy247;
        goto yy56;
 yy245:
+       YYDEBUG(245, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -4612,7 +4873,8 @@ yy245:
                if (yych <= ':') goto yy248;
        }
 yy246:
-#line 1711 "ext/date/lib/parse_date.re"
+       YYDEBUG(246, *YYCURSOR);
+#line 1727 "ext/date/lib/parse_date.re"
        {
                int tz_not_found;
                DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz");
@@ -4628,26 +4890,28 @@ yy246:
                        s->time->s = timelib_get_nr((char **) &ptr, 2);
 
                        if (*ptr == '.') {
-                               s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
+                               s->time->us = timelib_get_frac_nr((char **) &ptr, 8);
                        }
                }
 
                if (*ptr != '\0') {
                        s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                        if (tz_not_found) {
-                               add_error(s, "The timezone could not be found in the database");
+                               add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
                        }
                }
                TIMELIB_DEINIT;
                return TIMELIB_SHORTDATE_WITH_TIME;
        }
-#line 4645 "ext/date/lib/parse_date.c"
+#line 4907 "<stdout>"
 yy247:
+       YYDEBUG(247, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy248;
        if (yych != ':') goto yy246;
 yy248:
+       YYDEBUG(248, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy249;
@@ -4655,18 +4919,22 @@ yy248:
        if (yych <= '9') goto yy251;
        goto yy56;
 yy249:
+       YYDEBUG(249, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy246;
        if (yych <= '9') goto yy252;
        goto yy246;
 yy250:
+       YYDEBUG(250, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '0') goto yy252;
        goto yy246;
 yy251:
+       YYDEBUG(251, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy246;
 yy252:
+       YYDEBUG(252, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '*') {
@@ -4691,10 +4959,12 @@ yy252:
                }
        }
 yy253:
+       YYDEBUG(253, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
        yych = *YYCURSOR;
 yy254:
+       YYDEBUG(254, *YYCURSOR);
        if (yych <= '@') {
                if (yych <= '\'') {
                        if (yych <= '\t') {
@@ -4736,6 +5006,7 @@ yy254:
                }
        }
 yy255:
+       YYDEBUG(255, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych == ')') goto yy251;
@@ -4752,6 +5023,7 @@ yy255:
                }
        }
 yy256:
+       YYDEBUG(256, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '1') goto yy284;
@@ -4759,6 +5031,7 @@ yy256:
        if (yych <= '9') goto yy286;
        goto yy56;
 yy257:
+       YYDEBUG(257, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') goto yy56;
        if (yych <= 'Z') goto yy261;
@@ -4766,6 +5039,7 @@ yy257:
        if (yych <= 'z') goto yy261;
        goto yy56;
 yy258:
+       YYDEBUG(258, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'L') {
@@ -4789,6 +5063,7 @@ yy258:
                }
        }
 yy259:
+       YYDEBUG(259, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy251;
@@ -4800,6 +5075,7 @@ yy259:
                goto yy246;
        }
 yy260:
+       YYDEBUG(260, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'L') {
@@ -4823,6 +5099,7 @@ yy260:
                }
        }
 yy261:
+       YYDEBUG(261, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy251;
@@ -4833,6 +5110,7 @@ yy261:
                if (yych >= '{') goto yy246;
        }
 yy262:
+       YYDEBUG(262, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy251;
@@ -4843,6 +5121,7 @@ yy262:
                if (yych >= '{') goto yy246;
        }
 yy263:
+       YYDEBUG(263, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy251;
@@ -4853,6 +5132,7 @@ yy263:
                if (yych >= '{') goto yy246;
        }
 yy264:
+       YYDEBUG(264, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy251;
@@ -4863,6 +5143,7 @@ yy264:
                if (yych >= '{') goto yy246;
        }
 yy265:
+       YYDEBUG(265, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '@') {
                if (yych == ')') goto yy251;
@@ -4873,15 +5154,18 @@ yy265:
                if (yych >= '{') goto yy246;
        }
 yy266:
+       YYDEBUG(266, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == ')') goto yy251;
        goto yy246;
 yy267:
+       YYDEBUG(267, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy272;
        if (yych == 'm') goto yy272;
        goto yy56;
 yy268:
+       YYDEBUG(268, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ')') {
@@ -4905,6 +5189,7 @@ yy268:
                }
        }
 yy269:
+       YYDEBUG(269, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '\t') {
                if (yych <= 0x00) goto yy270;
@@ -4913,8 +5198,10 @@ yy269:
                if (yych != ' ') goto yy56;
        }
 yy270:
+       YYDEBUG(270, *YYCURSOR);
        ++YYCURSOR;
-#line 1687 "ext/date/lib/parse_date.re"
+       YYDEBUG(271, *YYCURSOR);
+#line 1703 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12");
                TIMELIB_INIT;
@@ -4929,7 +5216,7 @@ yy270:
                        s->time->s = timelib_get_nr((char **) &ptr, 2);
 
                        if (*ptr == '.') {
-                               s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
+                               s->time->us = timelib_get_frac_nr((char **) &ptr, 8);
                        }
                }
 
@@ -4937,8 +5224,9 @@ yy270:
                TIMELIB_DEINIT;
                return TIMELIB_SHORTDATE_WITH_TIME;
        }
-#line 4941 "ext/date/lib/parse_date.c"
+#line 5228 "<stdout>"
 yy272:
+       YYDEBUG(272, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 0x1F) {
                if (yych <= 0x00) goto yy270;
@@ -4950,6 +5238,7 @@ yy272:
                goto yy56;
        }
 yy273:
+       YYDEBUG(273, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -4972,6 +5261,7 @@ yy273:
                }
        }
 yy274:
+       YYDEBUG(274, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -4994,6 +5284,7 @@ yy274:
                }
        }
 yy275:
+       YYDEBUG(275, *YYCURSOR);
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
@@ -5002,10 +5293,12 @@ yy275:
        if (yych <= '`') goto yy56;
        if (yych >= '{') goto yy56;
 yy276:
+       YYDEBUG(276, *YYCURSOR);
        yyaccept = 7;
        YYMARKER = ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYDEBUG(277, *YYCURSOR);
        if (yych <= '@') {
                if (yych <= '-') {
                        if (yych <= ',') goto yy246;
@@ -5026,6 +5319,7 @@ yy276:
                }
        }
 yy278:
+       YYDEBUG(278, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -5047,6 +5341,7 @@ yy278:
                        if (yych >= '{') goto yy246;
                }
        }
+       YYDEBUG(279, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -5068,6 +5363,7 @@ yy278:
                        if (yych >= '{') goto yy246;
                }
        }
+       YYDEBUG(280, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -5089,9 +5385,11 @@ yy278:
                }
        }
 yy281:
+       YYDEBUG(281, *YYCURSOR);
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYDEBUG(282, *YYCURSOR);
        if (yych <= '/') {
                if (yych == '-') goto yy275;
                if (yych <= '.') goto yy56;
@@ -5107,6 +5405,7 @@ yy281:
                }
        }
 yy283:
+       YYDEBUG(283, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '-') {
@@ -5142,12 +5441,14 @@ yy283:
                }
        }
 yy284:
+       YYDEBUG(284, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy246;
        if (yych <= '9') goto yy286;
        if (yych <= ':') goto yy287;
        goto yy246;
 yy285:
+       YYDEBUG(285, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '5') {
                if (yych <= '/') goto yy246;
@@ -5158,23 +5459,27 @@ yy285:
                goto yy246;
        }
 yy286:
+       YYDEBUG(286, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy246;
        if (yych <= '5') goto yy288;
        if (yych <= '9') goto yy251;
        if (yych >= ';') goto yy246;
 yy287:
+       YYDEBUG(287, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy246;
        if (yych <= '5') goto yy288;
        if (yych <= '9') goto yy251;
        goto yy246;
 yy288:
+       YYDEBUG(288, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy246;
        if (yych <= '9') goto yy251;
        goto yy246;
 yy289:
+       YYDEBUG(289, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych == ')') goto yy251;
@@ -5189,6 +5494,7 @@ yy289:
                        goto yy246;
                }
        }
+       YYDEBUG(290, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -5211,6 +5517,7 @@ yy289:
                }
        }
 yy291:
+       YYDEBUG(291, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ':') {
@@ -5238,9 +5545,11 @@ yy291:
                }
        }
 yy292:
+       YYDEBUG(292, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = *YYCURSOR;
+       YYDEBUG(293, *YYCURSOR);
        if (yych <= 'A') {
                if (yych <= 0x1F) {
                        if (yych == '\t') goto yy292;
@@ -5258,6 +5567,7 @@ yy292:
                }
        }
 yy294:
+       YYDEBUG(294, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych != '.') goto yy56;
@@ -5266,10 +5576,12 @@ yy294:
                if (yych == 'm') goto yy296;
                goto yy56;
        }
+       YYDEBUG(295, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy296;
        if (yych != 'm') goto yy56;
 yy296:
+       YYDEBUG(296, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 0x1F) {
                if (yych <= 0x00) goto yy270;
@@ -5279,6 +5591,7 @@ yy296:
                if (yych <= ' ') goto yy270;
                if (yych != '.') goto yy56;
        }
+       YYDEBUG(297, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '\t') {
                if (yych <= 0x00) goto yy270;
@@ -5289,16 +5602,19 @@ yy296:
                goto yy56;
        }
 yy298:
+       YYDEBUG(298, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '.') goto yy299;
        if (yych != ':') goto yy56;
 yy299:
+       YYDEBUG(299, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy300;
        if (yych <= '9') goto yy301;
        goto yy56;
 yy300:
+       YYDEBUG(300, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -5310,11 +5626,13 @@ yy300:
                goto yy246;
        }
 yy301:
+       YYDEBUG(301, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy302;
        if (yych != ':') goto yy246;
 yy302:
+       YYDEBUG(302, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy303;
@@ -5322,14 +5640,17 @@ yy302:
        if (yych <= '9') goto yy251;
        goto yy56;
 yy303:
+       YYDEBUG(303, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy246;
        if (yych <= '9') goto yy305;
        goto yy246;
 yy304:
+       YYDEBUG(304, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '0') goto yy246;
 yy305:
+       YYDEBUG(305, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '*') {
@@ -5354,10 +5675,12 @@ yy305:
                }
        }
 yy306:
+       YYDEBUG(306, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
        yych = *YYCURSOR;
 yy307:
+       YYDEBUG(307, *YYCURSOR);
        if (yych <= '+') {
                if (yych <= ' ') {
                        if (yych == '\t') goto yy306;
@@ -5385,6 +5708,7 @@ yy307:
                }
        }
 yy308:
+       YYDEBUG(308, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') {
                if (yych == '.') goto yy299;
@@ -5395,6 +5719,7 @@ yy308:
                goto yy56;
        }
 yy309:
+       YYDEBUG(309, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') {
                if (yych == '.') goto yy299;
@@ -5405,6 +5730,7 @@ yy309:
                goto yy56;
        }
 yy310:
+       YYDEBUG(310, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -5417,6 +5743,7 @@ yy310:
                goto yy232;
        }
 yy311:
+       YYDEBUG(311, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -5429,6 +5756,7 @@ yy311:
                goto yy232;
        }
 yy312:
+       YYDEBUG(312, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -5441,6 +5769,7 @@ yy312:
                goto yy232;
        }
 yy313:
+       YYDEBUG(313, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -5452,16 +5781,20 @@ yy313:
                goto yy232;
        }
 yy314:
+       YYDEBUG(314, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy232;
        if (yych >= ':') goto yy232;
 yy315:
+       YYDEBUG(315, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy232;
        if (yych >= ':') goto yy232;
+       YYDEBUG(316, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy232;
 yy317:
+       YYDEBUG(317, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -5473,6 +5806,7 @@ yy317:
                goto yy232;
        }
 yy318:
+       YYDEBUG(318, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -5484,16 +5818,20 @@ yy318:
                goto yy232;
        }
 yy319:
+       YYDEBUG(319, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 0x00) goto yy238;
        goto yy237;
 yy320:
+       YYDEBUG(320, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(321, *YYCURSOR);
        ++YYCURSOR;
-#line 1381 "ext/date/lib/parse_date.re"
+       YYDEBUG(322, *YYCURSOR);
+#line 1397 "ext/date/lib/parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("datenoday");
@@ -5506,8 +5844,9 @@ yy320:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_NO_DAY;
        }
-#line 5510 "ext/date/lib/parse_date.c"
+#line 5848 "<stdout>"
 yy323:
+       YYDEBUG(323, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '9') {
                if (yych <= ' ') {
@@ -5551,6 +5890,7 @@ yy323:
                }
        }
 yy324:
+       YYDEBUG(324, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '9') {
                if (yych <= ' ') {
@@ -5594,6 +5934,7 @@ yy324:
                }
        }
 yy325:
+       YYDEBUG(325, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '9') {
                if (yych <= ' ') {
@@ -5637,6 +5978,7 @@ yy325:
                }
        }
 yy326:
+       YYDEBUG(326, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '1') {
                if (yych <= ' ') {
@@ -5680,6 +6022,7 @@ yy326:
                }
        }
 yy327:
+       YYDEBUG(327, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '9') {
                if (yych <= ' ') {
@@ -5722,14 +6065,17 @@ yy327:
                        }
                }
        }
+       YYDEBUG(328, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(329, *YYCURSOR);
        ++YYCURSOR;
        if ((yych = *YYCURSOR) <= '/') goto yy330;
        if (yych <= '9') goto yy331;
 yy330:
-#line 1525 "ext/date/lib/parse_date.re"
+       YYDEBUG(330, *YYCURSOR);
+#line 1541 "ext/date/lib/parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("pgtextshort");
@@ -5742,17 +6088,21 @@ yy330:
                TIMELIB_DEINIT;
                return TIMELIB_PG_TEXT;
        }
-#line 5746 "ext/date/lib/parse_date.c"
+#line 6092 "<stdout>"
 yy331:
+       YYDEBUG(331, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy330;
        if (yych >= ':') goto yy330;
+       YYDEBUG(332, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy330;
        if (yych >= ':') goto yy330;
+       YYDEBUG(333, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy330;
 yy334:
+       YYDEBUG(334, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'B') {
@@ -5783,6 +6133,7 @@ yy334:
                }
        }
 yy335:
+       YYDEBUG(335, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -5826,6 +6177,7 @@ yy335:
                }
        }
 yy336:
+       YYDEBUG(336, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yybm[0+yych] & 8) {
                goto yy173;
@@ -5836,6 +6188,7 @@ yy336:
        if (yych <= '3') goto yy326;
        goto yy220;
 yy337:
+       YYDEBUG(337, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'L') {
@@ -5866,6 +6219,7 @@ yy337:
                }
        }
 yy338:
+       YYDEBUG(338, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'A') {
@@ -5896,6 +6250,7 @@ yy338:
                }
        }
 yy339:
+       YYDEBUG(339, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -5919,10 +6274,12 @@ yy339:
                }
        }
 yy340:
+       YYDEBUG(340, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy229;
        if (yych != 'r') goto yy179;
 yy341:
+       YYDEBUG(341, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 16) {
@@ -5946,12 +6303,14 @@ yy341:
                }
        }
 yy342:
+       YYDEBUG(342, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yybm[0+yych] & 8) {
                goto yy173;
        }
        goto yy220;
 yy343:
+       YYDEBUG(343, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -5973,6 +6332,7 @@ yy343:
                }
        }
 yy344:
+       YYDEBUG(344, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -6014,6 +6374,7 @@ yy344:
                }
        }
 yy345:
+       YYDEBUG(345, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'B') {
                if (yych <= ')') {
@@ -6035,6 +6396,7 @@ yy345:
                }
        }
 yy346:
+       YYDEBUG(346, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -6056,6 +6418,7 @@ yy346:
                }
        }
 yy347:
+       YYDEBUG(347, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'Q') {
                if (yych == ')') goto yy164;
@@ -6066,6 +6429,7 @@ yy347:
                goto yy3;
        }
 yy348:
+       YYDEBUG(348, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -6096,6 +6460,7 @@ yy348:
                }
        }
 yy349:
+       YYDEBUG(349, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -6140,6 +6505,7 @@ yy349:
                }
        }
 yy350:
+       YYDEBUG(350, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'A') {
@@ -6170,6 +6536,7 @@ yy350:
                }
        }
 yy351:
+       YYDEBUG(351, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -6200,6 +6567,7 @@ yy351:
                }
        }
 yy352:
+       YYDEBUG(352, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
@@ -6223,6 +6591,7 @@ yy352:
                }
        }
 yy353:
+       YYDEBUG(353, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'G') {
                if (yych <= ')') {
@@ -6245,6 +6614,7 @@ yy353:
                }
        }
 yy354:
+       YYDEBUG(354, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= ')') {
@@ -6267,6 +6637,7 @@ yy354:
                }
        }
 yy355:
+       YYDEBUG(355, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'O') {
                if (yych <= ')') {
@@ -6288,6 +6659,7 @@ yy355:
                }
        }
 yy356:
+       YYDEBUG(356, *YYCURSOR);
        ++YYCURSOR;
        if ((yych = *YYCURSOR) <= '@') {
                if (yych == ')') goto yy164;
@@ -6297,7 +6669,8 @@ yy356:
                if (yych <= 'z') goto yy167;
        }
 yy357:
-#line 1583 "ext/date/lib/parse_date.re"
+       YYDEBUG(357, *YYCURSOR);
+#line 1599 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("ago");
                TIMELIB_INIT;
@@ -6317,8 +6690,9 @@ yy357:
                TIMELIB_DEINIT;
                return TIMELIB_AGO;
        }
-#line 6321 "ext/date/lib/parse_date.c"
+#line 6694 "<stdout>"
 yy358:
+       YYDEBUG(358, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -6360,6 +6734,7 @@ yy358:
                }
        }
 yy359:
+       YYDEBUG(359, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych <= ')') {
@@ -6381,6 +6756,7 @@ yy359:
                }
        }
 yy360:
+       YYDEBUG(360, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -6405,6 +6781,7 @@ yy360:
                }
        }
 yy361:
+       YYDEBUG(361, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -6446,6 +6823,7 @@ yy361:
                }
        }
 yy362:
+       YYDEBUG(362, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych <= ')') {
@@ -6467,6 +6845,7 @@ yy362:
                }
        }
 yy363:
+       YYDEBUG(363, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -6488,6 +6867,7 @@ yy363:
                }
        }
 yy364:
+       YYDEBUG(364, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '(') {
@@ -6510,6 +6890,7 @@ yy364:
                }
        }
 yy365:
+       YYDEBUG(365, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'F') {
@@ -6540,6 +6921,7 @@ yy365:
                }
        }
 yy366:
+       YYDEBUG(366, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
@@ -6570,6 +6952,7 @@ yy366:
                }
        }
 yy367:
+       YYDEBUG(367, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'N') {
@@ -6600,6 +6983,7 @@ yy367:
                }
        }
 yy368:
+       YYDEBUG(368, *YYCURSOR);
        yyaccept = 8;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -6623,6 +7007,7 @@ yy368:
                }
        }
 yy369:
+       YYDEBUG(369, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -6667,6 +7052,7 @@ yy369:
                }
        }
 yy370:
+       YYDEBUG(370, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'K') {
@@ -6697,6 +7083,7 @@ yy370:
                }
        }
 yy371:
+       YYDEBUG(371, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -6732,6 +7119,7 @@ yy371:
                }
        }
 yy372:
+       YYDEBUG(372, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -6776,6 +7164,7 @@ yy372:
                }
        }
 yy373:
+       YYDEBUG(373, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'R') {
@@ -6806,6 +7195,7 @@ yy373:
                }
        }
 yy374:
+       YYDEBUG(374, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -6836,6 +7226,7 @@ yy374:
                }
        }
 yy375:
+       YYDEBUG(375, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 16) {
@@ -6862,6 +7253,7 @@ yy375:
                }
        }
 yy376:
+       YYDEBUG(376, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= '@') {
@@ -6885,6 +7277,7 @@ yy376:
                }
        }
 yy377:
+       YYDEBUG(377, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= ')') {
@@ -6906,6 +7299,7 @@ yy377:
                }
        }
 yy378:
+       YYDEBUG(378, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -6947,6 +7341,7 @@ yy378:
                }
        }
 yy379:
+       YYDEBUG(379, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'A') {
                if (yych == ')') goto yy164;
@@ -6962,6 +7357,7 @@ yy379:
                }
        }
 yy380:
+       YYDEBUG(380, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= ')') {
@@ -6983,6 +7379,7 @@ yy380:
                }
        }
 yy381:
+       YYDEBUG(381, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'X') {
                if (yych == ')') goto yy164;
@@ -6993,6 +7390,7 @@ yy381:
                goto yy3;
        }
 yy382:
+       YYDEBUG(382, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -7035,6 +7433,7 @@ yy382:
                }
        }
 yy383:
+       YYDEBUG(383, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -7076,6 +7475,7 @@ yy383:
                }
        }
 yy384:
+       YYDEBUG(384, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -7100,6 +7500,7 @@ yy384:
                }
        }
 yy385:
+       YYDEBUG(385, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -7141,6 +7542,7 @@ yy385:
                }
        }
 yy386:
+       YYDEBUG(386, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -7171,6 +7573,7 @@ yy386:
                }
        }
 yy387:
+       YYDEBUG(387, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -7215,6 +7618,7 @@ yy387:
                }
        }
 yy388:
+       YYDEBUG(388, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -7240,6 +7644,7 @@ yy388:
                }
        }
 yy389:
+       YYDEBUG(389, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
@@ -7270,6 +7675,7 @@ yy389:
                }
        }
 yy390:
+       YYDEBUG(390, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'X') {
@@ -7293,6 +7699,7 @@ yy390:
                }
        }
 yy391:
+       YYDEBUG(391, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -7337,6 +7744,7 @@ yy391:
                }
        }
 yy392:
+       YYDEBUG(392, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -7381,6 +7789,7 @@ yy392:
                }
        }
 yy393:
+       YYDEBUG(393, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -7416,6 +7825,7 @@ yy393:
                }
        }
 yy394:
+       YYDEBUG(394, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -7445,6 +7855,7 @@ yy394:
                }
        }
 yy395:
+       YYDEBUG(395, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -7469,6 +7880,7 @@ yy395:
                }
        }
 yy396:
+       YYDEBUG(396, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -7497,6 +7909,7 @@ yy396:
                        }
                }
        }
+       YYDEBUG(397, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -7525,6 +7938,7 @@ yy396:
                        }
                }
        }
+       YYDEBUG(398, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -7549,6 +7963,7 @@ yy396:
                }
        }
 yy399:
+       YYDEBUG(399, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -7573,6 +7988,7 @@ yy399:
                }
        }
 yy400:
+       YYDEBUG(400, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -7603,6 +8019,7 @@ yy400:
                }
        }
 yy401:
+       YYDEBUG(401, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -7676,6 +8093,7 @@ yy401:
                }
        }
 yy402:
+       YYDEBUG(402, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'V') {
@@ -7759,6 +8177,7 @@ yy402:
                }
        }
 yy403:
+       YYDEBUG(403, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'V') {
@@ -7838,9 +8257,11 @@ yy403:
                }
        }
 yy404:
+       YYDEBUG(404, *YYCURSOR);
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYDEBUG(405, *YYCURSOR);
        if (yybm[0+yych] & 4) {
                goto yy57;
        }
@@ -7854,6 +8275,7 @@ yy404:
                goto yy56;
        }
 yy406:
+       YYDEBUG(406, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -7922,6 +8344,7 @@ yy406:
                }
        }
 yy407:
+       YYDEBUG(407, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -7988,33 +8411,40 @@ yy407:
                        }
                }
        }
+       YYDEBUG(408, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych >= ':') goto yy60;
 yy409:
+       YYDEBUG(409, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yybm[0+yych] & 2) {
                goto yy54;
        }
        if (yych != '-') goto yy60;
 yy410:
+       YYDEBUG(410, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '0') goto yy411;
        if (yych <= '1') goto yy412;
        goto yy56;
 yy411:
+       YYDEBUG(411, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy413;
        goto yy56;
 yy412:
+       YYDEBUG(412, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '3') goto yy56;
 yy413:
+       YYDEBUG(413, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '-') goto yy56;
+       YYDEBUG(414, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '0') goto yy415;
@@ -8022,23 +8452,28 @@ yy413:
        if (yych <= '3') goto yy417;
        goto yy56;
 yy415:
+       YYDEBUG(415, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy418;
        goto yy56;
 yy416:
+       YYDEBUG(416, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy418;
        goto yy56;
 yy417:
+       YYDEBUG(417, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '2') goto yy56;
 yy418:
+       YYDEBUG(418, *YYCURSOR);
        ++YYCURSOR;
 yy419:
-#line 1286 "ext/date/lib/parse_date.re"
+       YYDEBUG(419, *YYCURSOR);
+#line 1302 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash");
                TIMELIB_INIT;
@@ -8049,8 +8484,9 @@ yy419:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_DATE;
        }
-#line 8053 "ext/date/lib/parse_date.c"
+#line 8488 "<stdout>"
 yy420:
+       YYDEBUG(420, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -8119,6 +8555,7 @@ yy420:
                }
        }
 yy421:
+       YYDEBUG(421, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'V') {
@@ -8196,6 +8633,7 @@ yy421:
                        }
                }
        }
+       YYDEBUG(422, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -8262,6 +8700,7 @@ yy421:
                        }
                }
        }
+       YYDEBUG(423, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 2) {
@@ -8333,6 +8772,7 @@ yy421:
                }
        }
 yy424:
+       YYDEBUG(424, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy426;
        if (yych <= '0') goto yy700;
@@ -8340,10 +8780,12 @@ yy424:
        if (yych <= '9') goto yy702;
        goto yy426;
 yy425:
+       YYDEBUG(425, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
        yych = *YYCURSOR;
 yy426:
+       YYDEBUG(426, *YYCURSOR);
        if (yych <= 'W') {
                if (yych <= 'G') {
                        if (yych <= '.') {
@@ -8437,6 +8879,7 @@ yy426:
                }
        }
 yy427:
+       YYDEBUG(427, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych <= 'I') {
@@ -8464,6 +8907,7 @@ yy427:
                }
        }
 yy428:
+       YYDEBUG(428, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= 'D') {
@@ -8485,6 +8929,7 @@ yy428:
                }
        }
 yy429:
+       YYDEBUG(429, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '`') {
                if (yych <= 'D') {
@@ -8508,6 +8953,7 @@ yy429:
                }
        }
 yy430:
+       YYDEBUG(430, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych == 'A') goto yy115;
@@ -8523,6 +8969,7 @@ yy430:
                }
        }
 yy431:
+       YYDEBUG(431, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= 'N') {
@@ -8544,6 +8991,7 @@ yy431:
                }
        }
 yy432:
+       YYDEBUG(432, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'H') goto yy71;
@@ -8559,12 +9007,14 @@ yy432:
                }
        }
 yy433:
+       YYDEBUG(433, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '-') goto yy706;
        if (yych <= '/') goto yy60;
        if (yych <= '9') goto yy705;
        goto yy60;
 yy434:
+       YYDEBUG(434, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'c') {
                if (yych == 'O') goto yy494;
@@ -8575,10 +9025,12 @@ yy434:
                goto yy56;
        }
 yy435:
+       YYDEBUG(435, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'd') goto yy693;
        goto yy56;
 yy436:
+       YYDEBUG(436, *YYCURSOR);
        yych = *++YYCURSOR;
        switch (yych) {
        case '0':
@@ -8610,6 +9062,7 @@ yy436:
        default:        goto yy56;
        }
 yy437:
+       YYDEBUG(437, *YYCURSOR);
        yych = *++YYCURSOR;
        switch (yych) {
        case '0':       goto yy580;
@@ -8641,6 +9094,7 @@ yy437:
        default:        goto yy542;
        }
 yy438:
+       YYDEBUG(438, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '1') {
                if (yych <= '/') goto yy542;
@@ -8652,6 +9106,7 @@ yy438:
                goto yy542;
        }
 yy439:
+       YYDEBUG(439, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -8672,7 +9127,8 @@ yy439:
                }
        }
 yy440:
-#line 1423 "ext/date/lib/parse_date.re"
+       YYDEBUG(440, *YYCURSOR);
+#line 1439 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("datenoyearrev");
                TIMELIB_INIT;
@@ -8683,8 +9139,9 @@ yy440:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_TEXT;
        }
-#line 8687 "ext/date/lib/parse_date.c"
+#line 9143 "<stdout>"
 yy441:
+       YYDEBUG(441, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -8706,6 +9163,7 @@ yy441:
                }
        }
 yy442:
+       YYDEBUG(442, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -8727,6 +9185,7 @@ yy442:
                }
        }
 yy443:
+       YYDEBUG(443, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'A') goto yy521;
@@ -8742,6 +9201,7 @@ yy443:
                }
        }
 yy444:
+       YYDEBUG(444, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= 'L') {
@@ -8764,22 +9224,26 @@ yy444:
                }
        }
 yy445:
+       YYDEBUG(445, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy508;
        if (yych == 'c') goto yy508;
        goto yy56;
 yy446:
+       YYDEBUG(446, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy494;
        if (yych == 'o') goto yy494;
        goto yy56;
 yy447:
+       YYDEBUG(447, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy454;
        if (yych <= '9') goto yy456;
        goto yy56;
 yy448:
+       YYDEBUG(448, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych != '.') goto yy56;
@@ -8789,10 +9253,12 @@ yy448:
                goto yy56;
        }
 yy449:
+       YYDEBUG(449, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy450;
        if (yych != 'm') goto yy56;
 yy450:
+       YYDEBUG(450, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 0x1F) {
                if (yych <= 0x00) goto yy452;
@@ -8802,6 +9268,7 @@ yy450:
                if (yych <= ' ') goto yy452;
                if (yych != '.') goto yy56;
        }
+       YYDEBUG(451, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '\t') {
                if (yych <= 0x00) goto yy452;
@@ -8810,8 +9277,10 @@ yy450:
                if (yych != ' ') goto yy56;
        }
 yy452:
+       YYDEBUG(452, *YYCURSOR);
        ++YYCURSOR;
-#line 1141 "ext/date/lib/parse_date.re"
+       YYDEBUG(453, *YYCURSOR);
+#line 1157 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12");
                TIMELIB_INIT;
@@ -8827,8 +9296,9 @@ yy452:
                TIMELIB_DEINIT;
                return TIMELIB_TIME12;
        }
-#line 8831 "ext/date/lib/parse_date.c"
+#line 9300 "<stdout>"
 yy454:
+       YYDEBUG(454, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -8838,7 +9308,8 @@ yy454:
                if (yych <= ':') goto yy457;
        }
 yy455:
-#line 1178 "ext/date/lib/parse_date.re"
+       YYDEBUG(455, *YYCURSOR);
+#line 1194 "ext/date/lib/parse_date.re"
        {
                int tz_not_found;
                DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long");
@@ -8850,26 +9321,28 @@ yy455:
                        s->time->s = timelib_get_nr((char **) &ptr, 2);
 
                        if (*ptr == '.') {
-                               s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
+                               s->time->us = timelib_get_frac_nr((char **) &ptr, 8);
                        }
                }
 
                if (*ptr != '\0') {
                        s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                        if (tz_not_found) {
-                               add_error(s, "The timezone could not be found in the database");
+                               add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
                        }
                }
                TIMELIB_DEINIT;
                return TIMELIB_TIME24_WITH_ZONE;
        }
-#line 8867 "ext/date/lib/parse_date.c"
+#line 9338 "<stdout>"
 yy456:
+       YYDEBUG(456, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy457;
        if (yych != ':') goto yy455;
 yy457:
+       YYDEBUG(457, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy458;
@@ -8877,6 +9350,7 @@ yy457:
        if (yych <= '9') goto yy460;
        goto yy56;
 yy458:
+       YYDEBUG(458, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy461;
@@ -8884,27 +9358,33 @@ yy458:
        if (yych <= '9') goto yy464;
        goto yy455;
 yy459:
+       YYDEBUG(459, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy461;
        if (yych == '0') goto yy464;
        goto yy455;
 yy460:
+       YYDEBUG(460, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych != '.') goto yy455;
 yy461:
+       YYDEBUG(461, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
 yy462:
+       YYDEBUG(462, *YYCURSOR);
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYDEBUG(463, *YYCURSOR);
        if (yych <= '/') goto yy455;
        if (yych <= '9') goto yy462;
        goto yy455;
 yy464:
+       YYDEBUG(464, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -8927,9 +9407,11 @@ yy464:
                }
        }
 yy465:
+       YYDEBUG(465, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = *YYCURSOR;
+       YYDEBUG(466, *YYCURSOR);
        if (yych <= 'A') {
                if (yych <= 0x1F) {
                        if (yych == '\t') goto yy465;
@@ -8947,6 +9429,7 @@ yy465:
                }
        }
 yy467:
+       YYDEBUG(467, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych != '.') goto yy56;
@@ -8955,10 +9438,12 @@ yy467:
                if (yych == 'm') goto yy469;
                goto yy56;
        }
+       YYDEBUG(468, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy469;
        if (yych != 'm') goto yy56;
 yy469:
+       YYDEBUG(469, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 0x1F) {
                if (yych <= 0x00) goto yy452;
@@ -8968,6 +9453,7 @@ yy469:
                if (yych <= ' ') goto yy452;
                if (yych != '.') goto yy56;
        }
+       YYDEBUG(470, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '\t') {
                if (yych <= 0x00) goto yy452;
@@ -8978,6 +9464,7 @@ yy469:
                goto yy56;
        }
 yy471:
+       YYDEBUG(471, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ':') {
@@ -9005,9 +9492,11 @@ yy471:
                }
        }
 yy472:
+       YYDEBUG(472, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = *YYCURSOR;
+       YYDEBUG(473, *YYCURSOR);
        if (yych <= 'A') {
                if (yych <= 0x1F) {
                        if (yych == '\t') goto yy472;
@@ -9025,6 +9514,7 @@ yy472:
                }
        }
 yy474:
+       YYDEBUG(474, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych == '.') goto yy491;
@@ -9035,6 +9525,7 @@ yy474:
                goto yy56;
        }
 yy475:
+       YYDEBUG(475, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy476;
@@ -9042,6 +9533,7 @@ yy475:
        if (yych <= '9') goto yy460;
        goto yy56;
 yy476:
+       YYDEBUG(476, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy461;
@@ -9049,11 +9541,13 @@ yy476:
        if (yych <= '9') goto yy478;
        goto yy455;
 yy477:
+       YYDEBUG(477, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy461;
        if (yych != '0') goto yy455;
 yy478:
+       YYDEBUG(478, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ':') {
@@ -9082,18 +9576,22 @@ yy478:
                }
        }
 yy479:
+       YYDEBUG(479, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy489;
        goto yy56;
 yy480:
+       YYDEBUG(480, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
 yy481:
+       YYDEBUG(481, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = *YYCURSOR;
+       YYDEBUG(482, *YYCURSOR);
        if (yych <= 'O') {
                if (yych <= '9') {
                        if (yych <= '/') goto yy56;
@@ -9110,6 +9608,7 @@ yy481:
                }
        }
 yy483:
+       YYDEBUG(483, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych != '.') goto yy56;
@@ -9118,10 +9617,12 @@ yy483:
                if (yych == 'm') goto yy485;
                goto yy56;
        }
+       YYDEBUG(484, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy485;
        if (yych != 'm') goto yy56;
 yy485:
+       YYDEBUG(485, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 0x1F) {
                if (yych <= 0x00) goto yy487;
@@ -9131,6 +9632,7 @@ yy485:
                if (yych <= ' ') goto yy487;
                if (yych != '.') goto yy56;
        }
+       YYDEBUG(486, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '\t') {
                if (yych <= 0x00) goto yy487;
@@ -9139,8 +9641,10 @@ yy485:
                if (yych != ' ') goto yy56;
        }
 yy487:
+       YYDEBUG(487, *YYCURSOR);
        ++YYCURSOR;
-#line 1158 "ext/date/lib/parse_date.re"
+       YYDEBUG(488, *YYCURSOR);
+#line 1174 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("mssqltime");
                TIMELIB_INIT;
@@ -9151,7 +9655,7 @@ yy487:
                        s->time->s = timelib_get_nr((char **) &ptr, 2);
 
                        if (*ptr == ':' || *ptr == '.') {
-                               s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
+                               s->time->us = timelib_get_frac_nr((char **) &ptr, 8);
                        }
                }
                timelib_eat_spaces((char **) &ptr);
@@ -9159,12 +9663,14 @@ yy487:
                TIMELIB_DEINIT;
                return TIMELIB_TIME24_WITH_ZONE;
        }
-#line 9163 "ext/date/lib/parse_date.c"
+#line 9667 "<stdout>"
 yy489:
+       YYDEBUG(489, *YYCURSOR);
        yyaccept = 10;
        YYMARKER = ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = *YYCURSOR;
+       YYDEBUG(490, *YYCURSOR);
        if (yych <= 'O') {
                if (yych <= '9') {
                        if (yych <= '/') goto yy455;
@@ -9184,10 +9690,12 @@ yy489:
                }
        }
 yy491:
+       YYDEBUG(491, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy492;
        if (yych != 'm') goto yy56;
 yy492:
+       YYDEBUG(492, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 0x1F) {
                if (yych <= 0x00) goto yy452;
@@ -9197,6 +9705,7 @@ yy492:
                if (yych <= ' ') goto yy452;
                if (yych != '.') goto yy56;
        }
+       YYDEBUG(493, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '\t') {
                if (yych <= 0x00) goto yy452;
@@ -9207,10 +9716,12 @@ yy492:
                goto yy56;
        }
 yy494:
+       YYDEBUG(494, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'V') goto yy495;
        if (yych != 'v') goto yy56;
 yy495:
+       YYDEBUG(495, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9232,10 +9743,12 @@ yy495:
                }
        }
 yy496:
+       YYDEBUG(496, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
        yych = *YYCURSOR;
 yy497:
+       YYDEBUG(497, *YYCURSOR);
        if (yych <= ' ') {
                if (yych == '\t') goto yy496;
                if (yych <= 0x1F) goto yy56;
@@ -9250,11 +9763,13 @@ yy497:
                }
        }
 yy498:
+       YYDEBUG(498, *YYCURSOR);
        ++YYCURSOR;
        if ((yych = *YYCURSOR) <= '/') goto yy499;
        if (yych <= '9') goto yy505;
 yy499:
-#line 1340 "ext/date/lib/parse_date.re"
+       YYDEBUG(499, *YYCURSOR);
+#line 1356 "ext/date/lib/parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("datefull");
@@ -9268,24 +9783,29 @@ yy499:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_FULL;
        }
-#line 9272 "ext/date/lib/parse_date.c"
+#line 9787 "<stdout>"
 yy500:
+       YYDEBUG(500, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy501;
        if (yych != 'm') goto yy56;
 yy501:
+       YYDEBUG(501, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy502;
        if (yych != 'b') goto yy56;
 yy502:
+       YYDEBUG(502, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy503;
        if (yych != 'e') goto yy56;
 yy503:
+       YYDEBUG(503, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy504;
        if (yych != 'r') goto yy56;
 yy504:
+       YYDEBUG(504, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ' ') {
@@ -9303,20 +9823,25 @@ yy504:
                }
        }
 yy505:
+       YYDEBUG(505, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy499;
        if (yych >= ':') goto yy499;
 yy506:
+       YYDEBUG(506, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy499;
        if (yych >= ':') goto yy499;
+       YYDEBUG(507, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy499;
 yy508:
+       YYDEBUG(508, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy509;
        if (yych != 't') goto yy56;
 yy509:
+       YYDEBUG(509, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9339,28 +9864,34 @@ yy509:
                }
        }
 yy510:
+       YYDEBUG(510, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy511;
        if (yych != 'b') goto yy56;
 yy511:
+       YYDEBUG(511, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy512;
        if (yych != 'e') goto yy56;
 yy512:
+       YYDEBUG(512, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy504;
        if (yych == 'r') goto yy504;
        goto yy56;
 yy513:
+       YYDEBUG(513, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'G') goto yy517;
        if (yych == 'g') goto yy517;
        goto yy56;
 yy514:
+       YYDEBUG(514, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy515;
        if (yych != 'r') goto yy56;
 yy515:
+       YYDEBUG(515, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9383,11 +9914,13 @@ yy515:
                }
        }
 yy516:
+       YYDEBUG(516, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'L') goto yy504;
        if (yych == 'l') goto yy504;
        goto yy56;
 yy517:
+       YYDEBUG(517, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9410,15 +9943,18 @@ yy517:
                }
        }
 yy518:
+       YYDEBUG(518, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy519;
        if (yych != 's') goto yy56;
 yy519:
+       YYDEBUG(519, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy504;
        if (yych == 't') goto yy504;
        goto yy56;
 yy520:
+       YYDEBUG(520, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych == 'L') goto yy527;
@@ -9434,10 +9970,12 @@ yy520:
                }
        }
 yy521:
+       YYDEBUG(521, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy522;
        if (yych != 'n') goto yy56;
 yy522:
+       YYDEBUG(522, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9460,19 +9998,23 @@ yy522:
                }
        }
 yy523:
+       YYDEBUG(523, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy524;
        if (yych != 'a') goto yy56;
 yy524:
+       YYDEBUG(524, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy525;
        if (yych != 'r') goto yy56;
 yy525:
+       YYDEBUG(525, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy504;
        if (yych == 'y') goto yy504;
        goto yy56;
 yy526:
+       YYDEBUG(526, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9496,6 +10038,7 @@ yy526:
                }
        }
 yy527:
+       YYDEBUG(527, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9519,6 +10062,7 @@ yy527:
                }
        }
 yy528:
+       YYDEBUG(528, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -9540,6 +10084,7 @@ yy528:
                }
        }
 yy529:
+       YYDEBUG(529, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -9559,6 +10104,7 @@ yy529:
                        if (yych != 'I') goto yy440;
                }
        }
+       YYDEBUG(530, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -9580,6 +10126,7 @@ yy529:
                }
        }
 yy531:
+       YYDEBUG(531, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -9601,6 +10148,7 @@ yy531:
                }
        }
 yy532:
+       YYDEBUG(532, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9614,6 +10162,7 @@ yy532:
                goto yy455;
        }
 yy533:
+       YYDEBUG(533, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -9628,6 +10177,7 @@ yy533:
                goto yy455;
        }
 yy534:
+       YYDEBUG(534, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9641,6 +10191,7 @@ yy534:
                goto yy455;
        }
 yy535:
+       YYDEBUG(535, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9652,16 +10203,19 @@ yy535:
                goto yy455;
        }
 yy536:
+       YYDEBUG(536, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy559;
        if (yych == 'e') goto yy559;
        goto yy56;
 yy537:
+       YYDEBUG(537, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy556;
        if (yych == 'a') goto yy556;
        goto yy56;
 yy538:
+       YYDEBUG(538, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'P') goto yy514;
@@ -9677,20 +10231,24 @@ yy538:
                }
        }
 yy539:
+       YYDEBUG(539, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy549;
        if (yych == 'e') goto yy549;
        goto yy56;
 yy540:
+       YYDEBUG(540, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy543;
        if (yych == 'e') goto yy543;
        goto yy56;
 yy541:
+       YYDEBUG(541, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
        yych = *YYCURSOR;
 yy542:
+       YYDEBUG(542, *YYCURSOR);
        switch (yych) {
        case '\t':
        case ' ':
@@ -9718,10 +10276,12 @@ yy542:
        default:        goto yy56;
        }
 yy543:
+       YYDEBUG(543, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy544;
        if (yych != 'c') goto yy56;
 yy544:
+       YYDEBUG(544, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9744,27 +10304,33 @@ yy544:
                }
        }
 yy545:
+       YYDEBUG(545, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy546;
        if (yych != 'm') goto yy56;
 yy546:
+       YYDEBUG(546, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy547;
        if (yych != 'b') goto yy56;
 yy547:
+       YYDEBUG(547, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy548;
        if (yych != 'e') goto yy56;
 yy548:
+       YYDEBUG(548, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy504;
        if (yych == 'r') goto yy504;
        goto yy56;
 yy549:
+       YYDEBUG(549, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'P') goto yy550;
        if (yych != 'p') goto yy56;
 yy550:
+       YYDEBUG(550, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9787,6 +10353,7 @@ yy550:
                }
        }
 yy551:
+       YYDEBUG(551, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9809,23 +10376,28 @@ yy551:
                }
        }
 yy552:
+       YYDEBUG(552, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy553;
        if (yych != 'm') goto yy56;
 yy553:
+       YYDEBUG(553, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy554;
        if (yych != 'b') goto yy56;
 yy554:
+       YYDEBUG(554, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy555;
        if (yych != 'e') goto yy56;
 yy555:
+       YYDEBUG(555, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy504;
        if (yych == 'r') goto yy504;
        goto yy56;
 yy556:
+       YYDEBUG(556, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'Y') {
                if (yych == 'R') goto yy557;
@@ -9840,6 +10412,7 @@ yy556:
                }
        }
 yy557:
+       YYDEBUG(557, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9862,15 +10435,18 @@ yy557:
                }
        }
 yy558:
+       YYDEBUG(558, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'H') goto yy504;
        if (yych == 'h') goto yy504;
        goto yy56;
 yy559:
+       YYDEBUG(559, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy560;
        if (yych != 'b') goto yy56;
 yy560:
+       YYDEBUG(560, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -9893,23 +10469,28 @@ yy560:
                }
        }
 yy561:
+       YYDEBUG(561, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'U') goto yy562;
        if (yych != 'u') goto yy56;
 yy562:
+       YYDEBUG(562, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy563;
        if (yych != 'a') goto yy56;
 yy563:
+       YYDEBUG(563, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy564;
        if (yych != 'r') goto yy56;
 yy564:
+       YYDEBUG(564, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy504;
        if (yych == 'y') goto yy504;
        goto yy56;
 yy565:
+       YYDEBUG(565, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy572;
@@ -9917,22 +10498,28 @@ yy565:
        if (yych <= '9') goto yy574;
        goto yy56;
 yy566:
+       YYDEBUG(566, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(567, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
 yy568:
+       YYDEBUG(568, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
 yy569:
+       YYDEBUG(569, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(570, *YYCURSOR);
        ++YYCURSOR;
-#line 1355 "ext/date/lib/parse_date.re"
+       YYDEBUG(571, *YYCURSOR);
+#line 1371 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("pointed date YYYY");
                TIMELIB_INIT;
@@ -9943,8 +10530,9 @@ yy569:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_FULL_POINTED;
        }
-#line 9947 "ext/date/lib/parse_date.c"
+#line 10534 "<stdout>"
 yy572:
+       YYDEBUG(572, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy461;
@@ -9952,6 +10540,7 @@ yy572:
        if (yych <= '9') goto yy577;
        goto yy455;
 yy573:
+       YYDEBUG(573, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -9963,18 +10552,21 @@ yy573:
                goto yy455;
        }
 yy574:
+       YYDEBUG(574, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy461;
        if (yych <= '/') goto yy455;
        if (yych >= ':') goto yy455;
 yy575:
+       YYDEBUG(575, *YYCURSOR);
        yyaccept = 11;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy576;
        if (yych <= '9') goto yy569;
 yy576:
-#line 1367 "ext/date/lib/parse_date.re"
+       YYDEBUG(576, *YYCURSOR);
+#line 1383 "ext/date/lib/parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("pointed date YY");
@@ -9987,8 +10579,9 @@ yy576:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_FULL_POINTED;
        }
-#line 9991 "ext/date/lib/parse_date.c"
+#line 10583 "<stdout>"
 yy577:
+       YYDEBUG(577, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -10017,6 +10610,7 @@ yy577:
                }
        }
 yy578:
+       YYDEBUG(578, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ':') {
@@ -10045,6 +10639,7 @@ yy578:
                }
        }
 yy579:
+       YYDEBUG(579, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ':') {
@@ -10078,6 +10673,7 @@ yy579:
                }
        }
 yy580:
+       YYDEBUG(580, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '.') {
                if (yych <= ',') goto yy56;
@@ -10089,6 +10685,7 @@ yy580:
                goto yy56;
        }
 yy581:
+       YYDEBUG(581, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '.') {
                if (yych <= ',') goto yy56;
@@ -10099,12 +10696,14 @@ yy581:
                if (yych >= '3') goto yy56;
        }
 yy582:
+       YYDEBUG(582, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= ',') goto yy56;
        if (yych <= '-') goto yy619;
        if (yych <= '.') goto yy566;
        goto yy56;
 yy583:
+       YYDEBUG(583, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'A') goto yy615;
@@ -10120,16 +10719,19 @@ yy583:
                }
        }
 yy584:
+       YYDEBUG(584, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy612;
        if (yych == 'e') goto yy612;
        goto yy56;
 yy585:
+       YYDEBUG(585, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy609;
        if (yych == 'a') goto yy609;
        goto yy56;
 yy586:
+       YYDEBUG(586, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'P') goto yy606;
@@ -10145,29 +10747,35 @@ yy586:
                }
        }
 yy587:
+       YYDEBUG(587, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy602;
        if (yych == 'e') goto yy602;
        goto yy56;
 yy588:
+       YYDEBUG(588, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy600;
        if (yych == 'c') goto yy600;
        goto yy56;
 yy589:
+       YYDEBUG(589, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy598;
        if (yych == 'o') goto yy598;
        goto yy56;
 yy590:
+       YYDEBUG(590, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy591;
        if (yych != 'e') goto yy56;
 yy591:
+       YYDEBUG(591, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy592;
        if (yych != 'c') goto yy56;
 yy592:
+       YYDEBUG(592, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -10191,6 +10799,7 @@ yy592:
                }
        }
 yy593:
+       YYDEBUG(593, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy497;
        if (yych <= '0') goto yy594;
@@ -10198,31 +10807,37 @@ yy593:
        if (yych <= '3') goto yy596;
        goto yy497;
 yy594:
+       YYDEBUG(594, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy499;
        if (yych <= '9') goto yy597;
        goto yy499;
 yy595:
+       YYDEBUG(595, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy499;
        if (yych <= '9') goto yy597;
        goto yy499;
 yy596:
+       YYDEBUG(596, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy499;
        if (yych <= '1') goto yy597;
        if (yych <= '9') goto yy505;
        goto yy499;
 yy597:
+       YYDEBUG(597, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy499;
        if (yych <= '9') goto yy506;
        goto yy499;
 yy598:
+       YYDEBUG(598, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'V') goto yy599;
        if (yych != 'v') goto yy56;
 yy599:
+       YYDEBUG(599, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -10247,10 +10862,12 @@ yy599:
                }
        }
 yy600:
+       YYDEBUG(600, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy601;
        if (yych != 't') goto yy56;
 yy601:
+       YYDEBUG(601, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -10275,10 +10892,12 @@ yy601:
                }
        }
 yy602:
+       YYDEBUG(602, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'P') goto yy603;
        if (yych != 'p') goto yy56;
 yy603:
+       YYDEBUG(603, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -10302,6 +10921,7 @@ yy603:
                }
        }
 yy604:
+       YYDEBUG(604, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -10326,15 +10946,18 @@ yy604:
                }
        }
 yy605:
+       YYDEBUG(605, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'G') goto yy608;
        if (yych == 'g') goto yy608;
        goto yy56;
 yy606:
+       YYDEBUG(606, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy607;
        if (yych != 'r') goto yy56;
 yy607:
+       YYDEBUG(607, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -10359,6 +10982,7 @@ yy607:
                }
        }
 yy608:
+       YYDEBUG(608, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -10383,6 +11007,7 @@ yy608:
                }
        }
 yy609:
+       YYDEBUG(609, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'Y') {
                if (yych == 'R') goto yy610;
@@ -10397,6 +11022,7 @@ yy609:
                }
        }
 yy610:
+       YYDEBUG(610, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -10421,6 +11047,7 @@ yy610:
                }
        }
 yy611:
+       YYDEBUG(611, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ',') {
@@ -10442,10 +11069,12 @@ yy611:
                }
        }
 yy612:
+       YYDEBUG(612, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy613;
        if (yych != 'b') goto yy56;
 yy613:
+       YYDEBUG(613, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -10470,6 +11099,7 @@ yy613:
                }
        }
 yy614:
+       YYDEBUG(614, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych == 'L') goto yy618;
@@ -10485,10 +11115,12 @@ yy614:
                }
        }
 yy615:
+       YYDEBUG(615, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy616;
        if (yych != 'n') goto yy56;
 yy616:
+       YYDEBUG(616, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -10513,6 +11145,7 @@ yy616:
                }
        }
 yy617:
+       YYDEBUG(617, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -10537,6 +11170,7 @@ yy617:
                }
        }
 yy618:
+       YYDEBUG(618, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -10561,6 +11195,7 @@ yy618:
                }
        }
 yy619:
+       YYDEBUG(619, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '2') goto yy620;
@@ -10568,6 +11203,7 @@ yy619:
        if (yych <= '9') goto yy623;
        goto yy56;
 yy620:
+       YYDEBUG(620, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -10583,7 +11219,8 @@ yy620:
                }
        }
 yy621:
-#line 1326 "ext/date/lib/parse_date.re"
+       YYDEBUG(621, *YYCURSOR);
+#line 1342 "ext/date/lib/parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("gnudateshort");
@@ -10596,8 +11233,9 @@ yy621:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_DATE;
        }
-#line 10600 "ext/date/lib/parse_date.c"
+#line 11237 "<stdout>"
 yy622:
+       YYDEBUG(622, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -10620,6 +11258,7 @@ yy622:
                }
        }
 yy623:
+       YYDEBUG(623, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -10638,24 +11277,30 @@ yy623:
                }
        }
 yy624:
+       YYDEBUG(624, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 't') goto yy628;
        goto yy56;
 yy625:
+       YYDEBUG(625, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'd') goto yy628;
        goto yy56;
 yy626:
+       YYDEBUG(626, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'd') goto yy628;
        goto yy56;
 yy627:
+       YYDEBUG(627, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != 'h') goto yy56;
 yy628:
+       YYDEBUG(628, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy621;
 yy629:
+       YYDEBUG(629, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -10674,6 +11319,7 @@ yy629:
                }
        }
 yy630:
+       YYDEBUG(630, *YYCURSOR);
        yyaccept = 13;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -10692,7 +11338,8 @@ yy630:
                }
        }
 yy631:
-#line 1270 "ext/date/lib/parse_date.re"
+       YYDEBUG(631, *YYCURSOR);
+#line 1286 "ext/date/lib/parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("americanshort | american");
@@ -10707,8 +11354,9 @@ yy631:
                TIMELIB_DEINIT;
                return TIMELIB_AMERICAN;
        }
-#line 10711 "ext/date/lib/parse_date.c"
+#line 11358 "<stdout>"
 yy632:
+       YYDEBUG(632, *YYCURSOR);
        yyaccept = 13;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -10731,6 +11379,7 @@ yy632:
                }
        }
 yy633:
+       YYDEBUG(633, *YYCURSOR);
        yyaccept = 13;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -10748,6 +11397,7 @@ yy633:
                }
        }
 yy634:
+       YYDEBUG(634, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'A') goto yy682;
@@ -10763,16 +11413,19 @@ yy634:
                }
        }
 yy635:
+       YYDEBUG(635, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy680;
        if (yych == 'e') goto yy680;
        goto yy56;
 yy636:
+       YYDEBUG(636, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy679;
        if (yych == 'a') goto yy679;
        goto yy56;
 yy637:
+       YYDEBUG(637, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'P') goto yy678;
@@ -10788,92 +11441,116 @@ yy637:
                }
        }
 yy638:
+       YYDEBUG(638, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy675;
        if (yych == 'e') goto yy675;
        goto yy56;
 yy639:
+       YYDEBUG(639, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy674;
        if (yych == 'c') goto yy674;
        goto yy56;
 yy640:
+       YYDEBUG(640, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy673;
        if (yych == 'o') goto yy673;
        goto yy56;
 yy641:
+       YYDEBUG(641, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy642;
        if (yych != 'e') goto yy56;
 yy642:
+       YYDEBUG(642, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy643;
        if (yych != 'c') goto yy56;
 yy643:
+       YYDEBUG(643, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '/') goto yy56;
 yy644:
+       YYDEBUG(644, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(645, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(646, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(647, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(648, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy56;
+       YYDEBUG(649, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '1') goto yy650;
        if (yych <= '2') goto yy651;
        goto yy56;
 yy650:
+       YYDEBUG(650, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy652;
        goto yy56;
 yy651:
+       YYDEBUG(651, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '5') goto yy56;
 yy652:
+       YYDEBUG(652, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy56;
+       YYDEBUG(653, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '6') goto yy56;
+       YYDEBUG(654, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(655, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy56;
+       YYDEBUG(656, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy657;
        if (yych <= '6') goto yy658;
        goto yy56;
 yy657:
+       YYDEBUG(657, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy659;
        goto yy56;
 yy658:
+       YYDEBUG(658, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '0') goto yy56;
 yy659:
+       YYDEBUG(659, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '\t') goto yy660;
        if (yych != ' ') goto yy56;
 yy660:
+       YYDEBUG(660, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
        yych = *YYCURSOR;
+       YYDEBUG(661, *YYCURSOR);
        if (yych <= '*') {
                if (yych <= '\t') {
                        if (yych <= 0x08) goto yy56;
@@ -10890,10 +11567,12 @@ yy660:
                        if (yych != 'G') goto yy56;
                }
        }
+       YYDEBUG(662, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy671;
        goto yy56;
 yy663:
+       YYDEBUG(663, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '1') goto yy664;
@@ -10901,12 +11580,14 @@ yy663:
        if (yych <= '9') goto yy667;
        goto yy56;
 yy664:
+       YYDEBUG(664, *YYCURSOR);
        ++YYCURSOR;
        if ((yych = *YYCURSOR) <= '/') goto yy665;
        if (yych <= '9') goto yy667;
        if (yych <= ':') goto yy668;
 yy665:
-#line 1553 "ext/date/lib/parse_date.re"
+       YYDEBUG(665, *YYCURSOR);
+#line 1569 "ext/date/lib/parse_date.re"
        {
                int tz_not_found;
                DEBUG_OUTPUT("clf");
@@ -10921,13 +11602,14 @@ yy665:
                s->time->s = timelib_get_nr((char **) &ptr, 2);
                s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                if (tz_not_found) {
-                       add_error(s, "The timezone could not be found in the database");
+                       add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
                }
                TIMELIB_DEINIT;
                return TIMELIB_CLF;
        }
-#line 10930 "ext/date/lib/parse_date.c"
+#line 11611 "<stdout>"
 yy666:
+       YYDEBUG(666, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '5') {
                if (yych <= '/') goto yy665;
@@ -10938,46 +11620,56 @@ yy666:
                goto yy665;
        }
 yy667:
+       YYDEBUG(667, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy665;
        if (yych <= '5') goto yy669;
        if (yych <= '9') goto yy670;
        if (yych >= ';') goto yy665;
 yy668:
+       YYDEBUG(668, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy665;
        if (yych <= '5') goto yy669;
        if (yych <= '9') goto yy670;
        goto yy665;
 yy669:
+       YYDEBUG(669, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy665;
        if (yych >= ':') goto yy665;
 yy670:
+       YYDEBUG(670, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy665;
 yy671:
+       YYDEBUG(671, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != 'T') goto yy56;
+       YYDEBUG(672, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '+') goto yy663;
        if (yych == '-') goto yy663;
        goto yy56;
 yy673:
+       YYDEBUG(673, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'V') goto yy643;
        if (yych == 'v') goto yy643;
        goto yy56;
 yy674:
+       YYDEBUG(674, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy643;
        if (yych == 't') goto yy643;
        goto yy56;
 yy675:
+       YYDEBUG(675, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'P') goto yy676;
        if (yych != 'p') goto yy56;
 yy676:
+       YYDEBUG(676, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych == '/') goto yy644;
@@ -10988,16 +11680,19 @@ yy676:
                goto yy56;
        }
 yy677:
+       YYDEBUG(677, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'G') goto yy643;
        if (yych == 'g') goto yy643;
        goto yy56;
 yy678:
+       YYDEBUG(678, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy643;
        if (yych == 'r') goto yy643;
        goto yy56;
 yy679:
+       YYDEBUG(679, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'Y') {
                if (yych == 'R') goto yy643;
@@ -11013,11 +11708,13 @@ yy679:
                }
        }
 yy680:
+       YYDEBUG(680, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy643;
        if (yych == 'b') goto yy643;
        goto yy56;
 yy681:
+       YYDEBUG(681, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych == 'L') goto yy643;
@@ -11033,47 +11730,59 @@ yy681:
                }
        }
 yy682:
+       YYDEBUG(682, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy643;
        if (yych == 'n') goto yy643;
        goto yy56;
 yy683:
+       YYDEBUG(683, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 't') goto yy692;
        goto yy56;
 yy684:
+       YYDEBUG(684, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'd') goto yy692;
        goto yy56;
 yy685:
+       YYDEBUG(685, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'd') goto yy692;
        goto yy56;
 yy686:
+       YYDEBUG(686, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'h') goto yy692;
        goto yy56;
 yy687:
+       YYDEBUG(687, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(688, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy631;
        if (yych >= ':') goto yy631;
+       YYDEBUG(689, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy631;
        if (yych >= ':') goto yy631;
+       YYDEBUG(690, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy631;
        if (yych >= ':') goto yy631;
+       YYDEBUG(691, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy631;
 yy692:
+       YYDEBUG(692, *YYCURSOR);
        yyaccept = 13;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '/') goto yy687;
        goto yy631;
 yy693:
+       YYDEBUG(693, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= ',') {
                if (yych == '\t') goto yy695;
@@ -11084,6 +11793,7 @@ yy693:
                if (yych >= '0') goto yy542;
        }
 yy694:
+       YYDEBUG(694, *YYCURSOR);
        yych = *++YYCURSOR;
        switch (yych) {
        case 'A':
@@ -11105,6 +11815,7 @@ yy694:
        default:        goto yy56;
        }
 yy695:
+       YYDEBUG(695, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy542;
        if (yych <= '0') goto yy700;
@@ -11112,6 +11823,7 @@ yy695:
        if (yych <= '9') goto yy702;
        goto yy542;
 yy696:
+       YYDEBUG(696, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy542;
        if (yych <= '0') goto yy697;
@@ -11119,6 +11831,7 @@ yy696:
        if (yych <= '9') goto yy699;
        goto yy542;
 yy697:
+       YYDEBUG(697, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= ',') goto yy56;
        if (yych <= '.') goto yy566;
@@ -11126,17 +11839,20 @@ yy697:
        if (yych <= '9') goto yy699;
        goto yy56;
 yy698:
+       YYDEBUG(698, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= ',') goto yy56;
        if (yych <= '.') goto yy566;
        if (yych <= '/') goto yy56;
        if (yych >= '3') goto yy56;
 yy699:
+       YYDEBUG(699, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= ',') goto yy56;
        if (yych <= '.') goto yy566;
        goto yy56;
 yy700:
+       YYDEBUG(700, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '.') {
                if (yych <= ',') goto yy56;
@@ -11148,6 +11864,7 @@ yy700:
                goto yy56;
        }
 yy701:
+       YYDEBUG(701, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '.') {
                if (yych <= ',') goto yy56;
@@ -11158,25 +11875,30 @@ yy701:
                if (yych >= '3') goto yy56;
        }
 yy702:
+       YYDEBUG(702, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= ',') goto yy56;
        if (yych <= '-') goto yy566;
        if (yych >= '/') goto yy56;
 yy703:
+       YYDEBUG(703, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(704, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy575;
        goto yy56;
 yy705:
+       YYDEBUG(705, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '-') goto yy749;
        if (yych <= '/') goto yy60;
        if (yych <= '9') goto yy747;
        goto yy60;
 yy706:
+       YYDEBUG(706, *YYCURSOR);
        yych = *++YYCURSOR;
        switch (yych) {
        case '0':       goto yy715;
@@ -11208,6 +11930,7 @@ yy706:
        default:        goto yy56;
        }
 yy707:
+       YYDEBUG(707, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'A') goto yy746;
@@ -11223,16 +11946,19 @@ yy707:
                }
        }
 yy708:
+       YYDEBUG(708, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy744;
        if (yych == 'e') goto yy744;
        goto yy56;
 yy709:
+       YYDEBUG(709, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy743;
        if (yych == 'a') goto yy743;
        goto yy56;
 yy710:
+       YYDEBUG(710, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'P') goto yy742;
@@ -11248,41 +11974,49 @@ yy710:
                }
        }
 yy711:
+       YYDEBUG(711, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy739;
        if (yych == 'e') goto yy739;
        goto yy56;
 yy712:
+       YYDEBUG(712, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy738;
        if (yych == 'c') goto yy738;
        goto yy56;
 yy713:
+       YYDEBUG(713, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy737;
        if (yych == 'o') goto yy737;
        goto yy56;
 yy714:
+       YYDEBUG(714, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy729;
        if (yych == 'e') goto yy729;
        goto yy56;
 yy715:
+       YYDEBUG(715, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '-') goto yy718;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy722;
        goto yy56;
 yy716:
+       YYDEBUG(716, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '-') goto yy718;
        if (yych <= '/') goto yy56;
        if (yych <= '2') goto yy722;
        goto yy56;
 yy717:
+       YYDEBUG(717, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '-') goto yy56;
 yy718:
+       YYDEBUG(718, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '2') goto yy719;
@@ -11290,6 +12024,7 @@ yy718:
        if (yych <= '9') goto yy721;
        goto yy56;
 yy719:
+       YYDEBUG(719, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -11308,6 +12043,7 @@ yy719:
                }
        }
 yy720:
+       YYDEBUG(720, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -11326,6 +12062,7 @@ yy720:
                }
        }
 yy721:
+       YYDEBUG(721, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'q') {
@@ -11338,8 +12075,10 @@ yy721:
                goto yy621;
        }
 yy722:
+       YYDEBUG(722, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '-') goto yy56;
+       YYDEBUG(723, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '2') {
                if (yych <= '/') goto yy56;
@@ -11349,6 +12088,7 @@ yy722:
                if (yych <= '9') goto yy721;
                goto yy56;
        }
+       YYDEBUG(724, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -11367,6 +12107,7 @@ yy722:
                }
        }
 yy725:
+       YYDEBUG(725, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -11385,6 +12126,7 @@ yy725:
                }
        }
 yy726:
+       YYDEBUG(726, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -11403,6 +12145,7 @@ yy726:
                }
        }
 yy727:
+       YYDEBUG(727, *YYCURSOR);
        yyaccept = 14;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'q') {
@@ -11413,7 +12156,8 @@ yy727:
                if (yych <= 't') goto yy627;
        }
 yy728:
-#line 1298 "ext/date/lib/parse_date.re"
+       YYDEBUG(728, *YYCURSOR);
+#line 1314 "ext/date/lib/parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("iso8601date2");
@@ -11426,15 +12170,18 @@ yy728:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_DATE;
        }
-#line 11430 "ext/date/lib/parse_date.c"
+#line 12174 "<stdout>"
 yy729:
+       YYDEBUG(729, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy730;
        if (yych != 'c') goto yy56;
 yy730:
+       YYDEBUG(730, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '-') goto yy56;
 yy731:
+       YYDEBUG(731, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '0') goto yy732;
@@ -11442,22 +12189,27 @@ yy731:
        if (yych <= '3') goto yy734;
        goto yy56;
 yy732:
+       YYDEBUG(732, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy735;
        goto yy56;
 yy733:
+       YYDEBUG(733, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy735;
        goto yy56;
 yy734:
+       YYDEBUG(734, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '2') goto yy56;
 yy735:
+       YYDEBUG(735, *YYCURSOR);
        ++YYCURSOR;
-#line 1539 "ext/date/lib/parse_date.re"
+       YYDEBUG(736, *YYCURSOR);
+#line 1555 "ext/date/lib/parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("pgtextreverse");
@@ -11470,22 +12222,26 @@ yy735:
                TIMELIB_DEINIT;
                return TIMELIB_PG_TEXT;
        }
-#line 11474 "ext/date/lib/parse_date.c"
+#line 12226 "<stdout>"
 yy737:
+       YYDEBUG(737, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'V') goto yy730;
        if (yych == 'v') goto yy730;
        goto yy56;
 yy738:
+       YYDEBUG(738, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy730;
        if (yych == 't') goto yy730;
        goto yy56;
 yy739:
+       YYDEBUG(739, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'P') goto yy740;
        if (yych != 'p') goto yy56;
 yy740:
+       YYDEBUG(740, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych == '-') goto yy731;
@@ -11496,16 +12252,19 @@ yy740:
                goto yy56;
        }
 yy741:
+       YYDEBUG(741, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'G') goto yy730;
        if (yych == 'g') goto yy730;
        goto yy56;
 yy742:
+       YYDEBUG(742, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy730;
        if (yych == 'r') goto yy730;
        goto yy56;
 yy743:
+       YYDEBUG(743, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'Y') {
                if (yych == 'R') goto yy730;
@@ -11521,11 +12280,13 @@ yy743:
                }
        }
 yy744:
+       YYDEBUG(744, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy730;
        if (yych == 'b') goto yy730;
        goto yy56;
 yy745:
+       YYDEBUG(745, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych == 'L') goto yy730;
@@ -11541,11 +12302,13 @@ yy745:
                }
        }
 yy746:
+       YYDEBUG(746, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy730;
        if (yych == 'n') goto yy730;
        goto yy56;
 yy747:
+       YYDEBUG(747, *YYCURSOR);
        yyaccept = 15;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'O') {
@@ -11623,7 +12386,8 @@ yy747:
                }
        }
 yy748:
-#line 1574 "ext/date/lib/parse_date.re"
+       YYDEBUG(748, *YYCURSOR);
+#line 1590 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("year4");
                TIMELIB_INIT;
@@ -11631,8 +12395,9 @@ yy748:
                TIMELIB_DEINIT;
                return TIMELIB_CLF;
        }
-#line 11635 "ext/date/lib/parse_date.c"
+#line 12399 "<stdout>"
 yy749:
+       YYDEBUG(749, *YYCURSOR);
        yych = *++YYCURSOR;
        switch (yych) {
        case '0':       goto yy750;
@@ -11664,18 +12429,21 @@ yy749:
        default:        goto yy56;
        }
 yy750:
+       YYDEBUG(750, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '-') goto yy718;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy717;
        goto yy56;
 yy751:
+       YYDEBUG(751, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '-') goto yy718;
        if (yych <= '/') goto yy56;
        if (yych <= '2') goto yy717;
        goto yy56;
 yy752:
+       YYDEBUG(752, *YYCURSOR);
        yych = *++YYCURSOR;
        switch (yych) {
        case '0':       goto yy937;
@@ -11708,6 +12476,7 @@ yy752:
        default:        goto yy903;
        }
 yy753:
+       YYDEBUG(753, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '0') goto yy911;
@@ -11715,10 +12484,12 @@ yy753:
        if (yych <= '9') goto yy913;
        goto yy56;
 yy754:
+       YYDEBUG(754, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
        yych = *YYCURSOR;
 yy755:
+       YYDEBUG(755, *YYCURSOR);
        if (yych <= 'W') {
                if (yych <= 'G') {
                        if (yych <= '.') {
@@ -11811,6 +12582,7 @@ yy755:
                }
        }
 yy756:
+       YYDEBUG(756, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy903;
        if (yych <= '0') goto yy895;
@@ -11818,6 +12590,7 @@ yy756:
        if (yych <= '3') goto yy897;
        goto yy903;
 yy757:
+       YYDEBUG(757, *YYCURSOR);
        ++YYCURSOR;
        if ((yych = *YYCURSOR) <= 'U') {
                if (yych == 'I') goto yy894;
@@ -11826,7 +12599,8 @@ yy757:
                if (yych <= 'X') goto yy848;
        }
 yy758:
-#line 1395 "ext/date/lib/parse_date.re"
+       YYDEBUG(758, *YYCURSOR);
+#line 1411 "ext/date/lib/parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("datenodayrev");
@@ -11839,16 +12613,19 @@ yy758:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_NO_DAY;
        }
-#line 11843 "ext/date/lib/parse_date.c"
+#line 12617 "<stdout>"
 yy759:
+       YYDEBUG(759, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy892;
        goto yy758;
 yy760:
+       YYDEBUG(760, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy891;
        goto yy758;
 yy761:
+       YYDEBUG(761, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'A') goto yy884;
@@ -11864,6 +12641,7 @@ yy761:
                }
        }
 yy762:
+       YYDEBUG(762, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= 'N') {
@@ -11885,6 +12663,7 @@ yy762:
                }
        }
 yy763:
+       YYDEBUG(763, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych <= 'I') {
@@ -11912,6 +12691,7 @@ yy763:
                }
        }
 yy764:
+       YYDEBUG(764, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'P') goto yy868;
@@ -11927,6 +12707,7 @@ yy764:
                }
        }
 yy765:
+       YYDEBUG(765, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= 'D') {
@@ -11948,16 +12729,19 @@ yy765:
                }
        }
 yy766:
+       YYDEBUG(766, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy855;
        if (yych == 'c') goto yy855;
        goto yy56;
 yy767:
+       YYDEBUG(767, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy849;
        if (yych == 'o') goto yy849;
        goto yy56;
 yy768:
+       YYDEBUG(768, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych == 'A') goto yy115;
@@ -11973,29 +12757,34 @@ yy768:
                }
        }
 yy769:
+       YYDEBUG(769, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '0') goto yy839;
        if (yych <= '9') goto yy840;
        goto yy60;
 yy770:
+       YYDEBUG(770, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '2') goto yy808;
        if (yych <= '9') goto yy787;
        goto yy60;
 yy771:
+       YYDEBUG(771, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '0') goto yy788;
        if (yych <= '1') goto yy789;
        goto yy56;
 yy772:
+       YYDEBUG(772, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '9') goto yy787;
        goto yy60;
 yy773:
+       YYDEBUG(773, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '5') goto yy783;
@@ -12003,6 +12792,7 @@ yy773:
        if (yych <= '9') goto yy54;
        goto yy60;
 yy774:
+       YYDEBUG(774, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '5') {
                if (yych <= '/') goto yy56;
@@ -12019,27 +12809,32 @@ yy774:
                }
        }
 yy775:
+       YYDEBUG(775, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '0') goto yy56;
        if (yych <= '9') goto yy778;
        goto yy56;
 yy776:
+       YYDEBUG(776, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy778;
        goto yy56;
 yy777:
+       YYDEBUG(777, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '4') goto yy56;
 yy778:
+       YYDEBUG(778, *YYCURSOR);
        yyaccept = 16;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '-') goto yy780;
        if (yych <= '/') goto yy779;
        if (yych <= '7') goto yy781;
 yy779:
-#line 1506 "ext/date/lib/parse_date.re"
+       YYDEBUG(779, *YYCURSOR);
+#line 1522 "ext/date/lib/parse_date.re"
        {
                timelib_sll w, d;
                DEBUG_OUTPUT("isoweek");
@@ -12057,14 +12852,17 @@ yy779:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_WEEK;
        }
-#line 12061 "ext/date/lib/parse_date.c"
+#line 12856 "<stdout>"
 yy780:
+       YYDEBUG(780, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '8') goto yy56;
 yy781:
+       YYDEBUG(781, *YYCURSOR);
        ++YYCURSOR;
-#line 1487 "ext/date/lib/parse_date.re"
+       YYDEBUG(782, *YYCURSOR);
+#line 1503 "ext/date/lib/parse_date.re"
        {
                timelib_sll w, d;
                DEBUG_OUTPUT("isoweekday");
@@ -12082,19 +12880,22 @@ yy781:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_WEEK;
        }
-#line 12086 "ext/date/lib/parse_date.c"
+#line 12884 "<stdout>"
 yy783:
+       YYDEBUG(783, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '9') goto yy785;
        goto yy60;
 yy784:
+       YYDEBUG(784, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '6') goto yy785;
        if (yych <= '9') goto yy54;
        goto yy60;
 yy785:
+       YYDEBUG(785, *YYCURSOR);
        yyaccept = 17;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 2) {
@@ -12148,7 +12949,8 @@ yy785:
                }
        }
 yy786:
-#line 1473 "ext/date/lib/parse_date.re"
+       YYDEBUG(786, *YYCURSOR);
+#line 1489 "ext/date/lib/parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("pgydotd");
@@ -12161,24 +12963,29 @@ yy786:
                TIMELIB_DEINIT;
                return TIMELIB_PG_YEARDAY;
        }
-#line 12165 "ext/date/lib/parse_date.c"
+#line 12967 "<stdout>"
 yy787:
+       YYDEBUG(787, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '9') goto yy785;
        goto yy60;
 yy788:
+       YYDEBUG(788, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy790;
        goto yy56;
 yy789:
+       YYDEBUG(789, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '3') goto yy56;
 yy790:
+       YYDEBUG(790, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy56;
+       YYDEBUG(791, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '0') goto yy792;
@@ -12186,64 +12993,80 @@ yy790:
        if (yych <= '3') goto yy794;
        goto yy56;
 yy792:
+       YYDEBUG(792, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy795;
        goto yy56;
 yy793:
+       YYDEBUG(793, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy795;
        goto yy56;
 yy794:
+       YYDEBUG(794, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '2') goto yy56;
 yy795:
+       YYDEBUG(795, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ' ') goto yy56;
+       YYDEBUG(796, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '1') goto yy797;
        if (yych <= '2') goto yy798;
        goto yy56;
 yy797:
+       YYDEBUG(797, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy799;
        goto yy56;
 yy798:
+       YYDEBUG(798, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '5') goto yy56;
 yy799:
+       YYDEBUG(799, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy56;
+       YYDEBUG(800, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '6') goto yy56;
+       YYDEBUG(801, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(802, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy56;
+       YYDEBUG(803, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy804;
        if (yych <= '6') goto yy805;
        goto yy56;
 yy804:
+       YYDEBUG(804, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy806;
        goto yy56;
 yy805:
+       YYDEBUG(805, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '0') goto yy56;
 yy806:
+       YYDEBUG(806, *YYCURSOR);
        ++YYCURSOR;
 yy807:
-#line 1447 "ext/date/lib/parse_date.re"
+       YYDEBUG(807, *YYCURSOR);
+#line 1463 "ext/date/lib/parse_date.re"
        {
                int tz_not_found;
                DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif");
@@ -12257,19 +13080,20 @@ yy807:
                s->time->i = timelib_get_nr((char **) &ptr, 2);
                s->time->s = timelib_get_nr((char **) &ptr, 2);
                if (*ptr == '.') {
-                       s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
+                       s->time->us = timelib_get_frac_nr((char **) &ptr, 9);
                        if (*ptr) { /* timezone is optional */
                                s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                                if (tz_not_found) {
-                                       add_error(s, "The timezone could not be found in the database");
+                                       add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
                                }
                        }
                }
                TIMELIB_DEINIT;
                return TIMELIB_XMLRPC_SOAP;
        }
-#line 12272 "ext/date/lib/parse_date.c"
+#line 13095 "<stdout>"
 yy808:
+       YYDEBUG(808, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '2') {
                if (yych <= '/') goto yy60;
@@ -12280,6 +13104,7 @@ yy808:
                goto yy60;
        }
 yy809:
+       YYDEBUG(809, *YYCURSOR);
        yyaccept = 17;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -12348,6 +13173,7 @@ yy809:
                }
        }
 yy810:
+       YYDEBUG(810, *YYCURSOR);
        yyaccept = 17;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -12416,6 +13242,7 @@ yy810:
                }
        }
 yy811:
+       YYDEBUG(811, *YYCURSOR);
        yyaccept = 17;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -12488,6 +13315,7 @@ yy811:
                }
        }
 yy812:
+       YYDEBUG(812, *YYCURSOR);
        yyaccept = 18;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 2) {
@@ -12557,7 +13385,8 @@ yy812:
                }
        }
 yy813:
-#line 1435 "ext/date/lib/parse_date.re"
+       YYDEBUG(813, *YYCURSOR);
+#line 1451 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("datenocolon");
                TIMELIB_INIT;
@@ -12568,8 +13397,9 @@ yy813:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_NOCOLON;
        }
-#line 12572 "ext/date/lib/parse_date.c"
+#line 13401 "<stdout>"
 yy814:
+       YYDEBUG(814, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'H') {
                if (yych <= '2') {
@@ -12592,6 +13422,7 @@ yy814:
                }
        }
 yy815:
+       YYDEBUG(815, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'H') {
                if (yych <= '2') {
@@ -12612,47 +13443,56 @@ yy815:
                        goto yy56;
                }
        }
+       YYDEBUG(816, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy823;
        if (yych <= '9') goto yy818;
        goto yy56;
 yy817:
+       YYDEBUG(817, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '4') goto yy823;
        if (yych <= '5') goto yy819;
        goto yy56;
 yy818:
+       YYDEBUG(818, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '6') goto yy56;
 yy819:
+       YYDEBUG(819, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
 yy820:
+       YYDEBUG(820, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy821;
        if (yych <= '6') goto yy822;
        goto yy56;
 yy821:
+       YYDEBUG(821, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy806;
        goto yy56;
 yy822:
+       YYDEBUG(822, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '0') goto yy806;
        goto yy56;
 yy823:
+       YYDEBUG(823, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy824;
        if (yych <= '9') goto yy820;
        goto yy56;
 yy824:
+       YYDEBUG(824, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy825;
@@ -12660,6 +13500,7 @@ yy824:
        if (yych <= '9') goto yy820;
        goto yy56;
 yy825:
+       YYDEBUG(825, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy827;
@@ -12667,6 +13508,7 @@ yy825:
        if (yych <= '9') goto yy806;
        goto yy56;
 yy826:
+       YYDEBUG(826, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '0') goto yy827;
@@ -12674,15 +13516,18 @@ yy826:
        if (yych <= '6') goto yy822;
        goto yy56;
 yy827:
+       YYDEBUG(827, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy807;
        if (yych <= '9') goto yy806;
        goto yy807;
 yy828:
+       YYDEBUG(828, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '0') goto yy806;
        goto yy807;
 yy829:
+       YYDEBUG(829, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy838;
@@ -12690,6 +13535,7 @@ yy829:
        if (yych <= ':') goto yy832;
        goto yy56;
 yy830:
+       YYDEBUG(830, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '5') {
                if (yych <= '/') goto yy56;
@@ -12700,34 +13546,42 @@ yy830:
                goto yy56;
        }
 yy831:
+       YYDEBUG(831, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy819;
        if (yych != ':') goto yy56;
 yy832:
+       YYDEBUG(832, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= '6') goto yy56;
+       YYDEBUG(833, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(834, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy56;
+       YYDEBUG(835, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy836;
        if (yych <= '6') goto yy837;
        goto yy56;
 yy836:
+       YYDEBUG(836, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy806;
        goto yy56;
 yy837:
+       YYDEBUG(837, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '0') goto yy806;
        goto yy56;
 yy838:
+       YYDEBUG(838, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy824;
@@ -12735,6 +13589,7 @@ yy838:
        if (yych <= ':') goto yy832;
        goto yy56;
 yy839:
+       YYDEBUG(839, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '2') {
                if (yych <= '/') goto yy60;
@@ -12746,6 +13601,7 @@ yy839:
                goto yy60;
        }
 yy840:
+       YYDEBUG(840, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '2') {
                if (yych <= '/') goto yy60;
@@ -12757,87 +13613,107 @@ yy840:
                goto yy60;
        }
 yy841:
+       YYDEBUG(841, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '9') goto yy812;
        goto yy60;
 yy842:
+       YYDEBUG(842, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy843;
        if (yych != 'c') goto yy56;
 yy843:
+       YYDEBUG(843, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'E') goto yy844;
        if (yych != 'e') goto yy758;
 yy844:
+       YYDEBUG(844, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy845;
        if (yych != 'm') goto yy56;
 yy845:
+       YYDEBUG(845, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy846;
        if (yych != 'b') goto yy56;
 yy846:
+       YYDEBUG(846, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy847;
        if (yych != 'e') goto yy56;
 yy847:
+       YYDEBUG(847, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy848;
        if (yych != 'r') goto yy56;
 yy848:
+       YYDEBUG(848, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy758;
 yy849:
+       YYDEBUG(849, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'V') goto yy850;
        if (yych != 'v') goto yy56;
 yy850:
+       YYDEBUG(850, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'E') goto yy851;
        if (yych != 'e') goto yy758;
 yy851:
+       YYDEBUG(851, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy852;
        if (yych != 'm') goto yy56;
 yy852:
+       YYDEBUG(852, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy853;
        if (yych != 'b') goto yy56;
 yy853:
+       YYDEBUG(853, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy854;
        if (yych != 'e') goto yy56;
 yy854:
+       YYDEBUG(854, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy848;
        if (yych == 'r') goto yy848;
        goto yy56;
 yy855:
+       YYDEBUG(855, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy856;
        if (yych != 't') goto yy56;
 yy856:
+       YYDEBUG(856, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'O') goto yy857;
        if (yych != 'o') goto yy758;
 yy857:
+       YYDEBUG(857, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy858;
        if (yych != 'b') goto yy56;
 yy858:
+       YYDEBUG(858, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy859;
        if (yych != 'e') goto yy56;
 yy859:
+       YYDEBUG(859, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy848;
        if (yych == 'r') goto yy848;
        goto yy56;
 yy860:
+       YYDEBUG(860, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'P') {
                if (yych == 'C') goto yy121;
@@ -12851,65 +13727,79 @@ yy860:
                }
        }
 yy861:
+       YYDEBUG(861, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy862;
        if (yych != 't') goto yy758;
 yy862:
+       YYDEBUG(862, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'E') goto yy863;
        if (yych != 'e') goto yy758;
 yy863:
+       YYDEBUG(863, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy864;
        if (yych != 'm') goto yy56;
 yy864:
+       YYDEBUG(864, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy865;
        if (yych != 'b') goto yy56;
 yy865:
+       YYDEBUG(865, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy866;
        if (yych != 'e') goto yy56;
 yy866:
+       YYDEBUG(866, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy848;
        if (yych == 'r') goto yy848;
        goto yy56;
 yy867:
+       YYDEBUG(867, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'G') goto yy871;
        if (yych == 'g') goto yy871;
        goto yy56;
 yy868:
+       YYDEBUG(868, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy869;
        if (yych != 'r') goto yy56;
 yy869:
+       YYDEBUG(869, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'I') goto yy870;
        if (yych != 'i') goto yy758;
 yy870:
+       YYDEBUG(870, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'L') goto yy848;
        if (yych == 'l') goto yy848;
        goto yy56;
 yy871:
+       YYDEBUG(871, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'U') goto yy872;
        if (yych != 'u') goto yy758;
 yy872:
+       YYDEBUG(872, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy873;
        if (yych != 's') goto yy56;
 yy873:
+       YYDEBUG(873, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy848;
        if (yych == 't') goto yy848;
        goto yy56;
 yy874:
+       YYDEBUG(874, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'Y') {
                if (yych == 'R') goto yy875;
@@ -12924,42 +13814,51 @@ yy874:
                }
        }
 yy875:
+       YYDEBUG(875, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'C') goto yy876;
        if (yych != 'c') goto yy758;
 yy876:
+       YYDEBUG(876, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'H') goto yy848;
        if (yych == 'h') goto yy848;
        goto yy56;
 yy877:
+       YYDEBUG(877, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy878;
        if (yych != 'b') goto yy56;
 yy878:
+       YYDEBUG(878, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'R') goto yy879;
        if (yych != 'r') goto yy758;
 yy879:
+       YYDEBUG(879, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'U') goto yy880;
        if (yych != 'u') goto yy56;
 yy880:
+       YYDEBUG(880, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy881;
        if (yych != 'a') goto yy56;
 yy881:
+       YYDEBUG(881, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy882;
        if (yych != 'r') goto yy56;
 yy882:
+       YYDEBUG(882, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy848;
        if (yych == 'y') goto yy848;
        goto yy56;
 yy883:
+       YYDEBUG(883, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych == 'L') goto yy890;
@@ -12975,93 +13874,113 @@ yy883:
                }
        }
 yy884:
+       YYDEBUG(884, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy885;
        if (yych != 'n') goto yy56;
 yy885:
+       YYDEBUG(885, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'U') goto yy886;
        if (yych != 'u') goto yy758;
 yy886:
+       YYDEBUG(886, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy887;
        if (yych != 'a') goto yy56;
 yy887:
+       YYDEBUG(887, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy888;
        if (yych != 'r') goto yy56;
 yy888:
+       YYDEBUG(888, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy848;
        if (yych == 'y') goto yy848;
        goto yy56;
 yy889:
+       YYDEBUG(889, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy848;
        if (yych == 'e') goto yy848;
        goto yy758;
 yy890:
+       YYDEBUG(890, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy848;
        if (yych == 'y') goto yy848;
        goto yy758;
 yy891:
+       YYDEBUG(891, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy848;
        goto yy758;
 yy892:
+       YYDEBUG(892, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != 'I') goto yy758;
+       YYDEBUG(893, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy848;
        goto yy758;
 yy894:
+       YYDEBUG(894, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy848;
        goto yy758;
 yy895:
+       YYDEBUG(895, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '0') goto yy910;
        if (yych <= '9') goto yy909;
        goto yy56;
 yy896:
+       YYDEBUG(896, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy908;
        goto yy56;
 yy897:
+       YYDEBUG(897, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy906;
        if (yych <= '6') goto yy905;
        goto yy56;
 yy898:
+       YYDEBUG(898, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy877;
        if (yych == 'e') goto yy877;
        goto yy56;
 yy899:
+       YYDEBUG(899, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy874;
        if (yych == 'a') goto yy874;
        goto yy56;
 yy900:
+       YYDEBUG(900, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy904;
        if (yych == 'e') goto yy904;
        goto yy56;
 yy901:
+       YYDEBUG(901, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy842;
        if (yych == 'e') goto yy842;
        goto yy56;
 yy902:
+       YYDEBUG(902, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
        yych = *YYCURSOR;
 yy903:
+       YYDEBUG(903, *YYCURSOR);
        switch (yych) {
        case '\t':
        case ' ':
@@ -13089,53 +14008,64 @@ yy903:
        default:        goto yy56;
        }
 yy904:
+       YYDEBUG(904, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'P') goto yy861;
        if (yych == 'p') goto yy861;
        goto yy56;
 yy905:
+       YYDEBUG(905, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '6') goto yy907;
        goto yy56;
 yy906:
+       YYDEBUG(906, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
 yy907:
+       YYDEBUG(907, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy786;
 yy908:
+       YYDEBUG(908, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy907;
        goto yy56;
 yy909:
+       YYDEBUG(909, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy907;
        goto yy56;
 yy910:
+       YYDEBUG(910, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '0') goto yy56;
        if (yych <= '9') goto yy907;
        goto yy56;
 yy911:
+       YYDEBUG(911, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '.') goto yy56;
        if (yych <= '/') goto yy914;
        if (yych <= '9') goto yy922;
        goto yy56;
 yy912:
+       YYDEBUG(912, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '.') goto yy56;
        if (yych <= '/') goto yy914;
        if (yych <= '2') goto yy922;
        goto yy56;
 yy913:
+       YYDEBUG(913, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '/') goto yy56;
 yy914:
+       YYDEBUG(914, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '2') goto yy915;
@@ -13143,6 +14073,7 @@ yy914:
        if (yych <= '9') goto yy917;
        goto yy56;
 yy915:
+       YYDEBUG(915, *YYCURSOR);
        yyaccept = 20;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -13161,6 +14092,7 @@ yy915:
                }
        }
 yy916:
+       YYDEBUG(916, *YYCURSOR);
        yyaccept = 20;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -13179,6 +14111,7 @@ yy916:
                }
        }
 yy917:
+       YYDEBUG(917, *YYCURSOR);
        yyaccept = 20;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'q') {
@@ -13191,24 +14124,30 @@ yy917:
                goto yy419;
        }
 yy918:
+       YYDEBUG(918, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 't') goto yy418;
        goto yy56;
 yy919:
+       YYDEBUG(919, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'd') goto yy418;
        goto yy56;
 yy920:
+       YYDEBUG(920, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'd') goto yy418;
        goto yy56;
 yy921:
+       YYDEBUG(921, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'h') goto yy418;
        goto yy56;
 yy922:
+       YYDEBUG(922, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '/') goto yy56;
+       YYDEBUG(923, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '2') {
                if (yych <= '/') goto yy56;
@@ -13218,6 +14157,7 @@ yy922:
                if (yych <= '9') goto yy917;
                goto yy56;
        }
+       YYDEBUG(924, *YYCURSOR);
        yyaccept = 20;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -13236,6 +14176,7 @@ yy922:
                }
        }
 yy925:
+       YYDEBUG(925, *YYCURSOR);
        yyaccept = 20;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -13254,6 +14195,7 @@ yy925:
                }
        }
 yy926:
+       YYDEBUG(926, *YYCURSOR);
        yyaccept = 20;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -13272,6 +14214,7 @@ yy926:
                }
        }
 yy927:
+       YYDEBUG(927, *YYCURSOR);
        yyaccept = 20;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -13289,6 +14232,7 @@ yy927:
                }
        }
 yy928:
+       YYDEBUG(928, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'A') goto yy1008;
@@ -13304,16 +14248,19 @@ yy928:
                }
        }
 yy929:
+       YYDEBUG(929, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy1005;
        if (yych == 'e') goto yy1005;
        goto yy56;
 yy930:
+       YYDEBUG(930, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy1002;
        if (yych == 'a') goto yy1002;
        goto yy56;
 yy931:
+       YYDEBUG(931, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'P') goto yy999;
@@ -13329,26 +14276,31 @@ yy931:
                }
        }
 yy932:
+       YYDEBUG(932, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy995;
        if (yych == 'e') goto yy995;
        goto yy56;
 yy933:
+       YYDEBUG(933, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy993;
        if (yych == 'c') goto yy993;
        goto yy56;
 yy934:
+       YYDEBUG(934, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy991;
        if (yych == 'o') goto yy991;
        goto yy56;
 yy935:
+       YYDEBUG(935, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy989;
        if (yych == 'e') goto yy989;
        goto yy56;
 yy936:
+       YYDEBUG(936, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '0') goto yy775;
@@ -13356,13 +14308,15 @@ yy936:
        if (yych <= '5') goto yy777;
        goto yy56;
 yy937:
+       YYDEBUG(937, *YYCURSOR);
        yyaccept = 21;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '-') goto yy941;
        if (yych <= '/') goto yy938;
        if (yych <= '9') goto yy960;
 yy938:
-#line 1312 "ext/date/lib/parse_date.re"
+       YYDEBUG(938, *YYCURSOR);
+#line 1328 "ext/date/lib/parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("gnudateshorter");
@@ -13375,8 +14329,9 @@ yy938:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_DATE;
        }
-#line 13379 "ext/date/lib/parse_date.c"
+#line 14333 "<stdout>"
 yy939:
+       YYDEBUG(939, *YYCURSOR);
        yyaccept = 21;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '-') goto yy941;
@@ -13384,10 +14339,12 @@ yy939:
        if (yych <= '2') goto yy960;
        goto yy938;
 yy940:
+       YYDEBUG(940, *YYCURSOR);
        yyaccept = 21;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych != '-') goto yy938;
 yy941:
+       YYDEBUG(941, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '2') goto yy942;
@@ -13395,6 +14352,7 @@ yy941:
        if (yych <= '9') goto yy944;
        goto yy56;
 yy942:
+       YYDEBUG(942, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'm') {
@@ -13417,6 +14375,7 @@ yy942:
                }
        }
 yy943:
+       YYDEBUG(943, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'm') {
@@ -13438,6 +14397,7 @@ yy943:
                }
        }
 yy944:
+       YYDEBUG(944, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -13455,22 +14415,27 @@ yy944:
                }
        }
 yy945:
+       YYDEBUG(945, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 't') goto yy959;
        goto yy56;
 yy946:
+       YYDEBUG(946, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'd') goto yy959;
        goto yy56;
 yy947:
+       YYDEBUG(947, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'd') goto yy959;
        goto yy56;
 yy948:
+       YYDEBUG(948, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'h') goto yy959;
        goto yy56;
 yy949:
+       YYDEBUG(949, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '1') goto yy950;
@@ -13478,36 +14443,43 @@ yy949:
        if (yych <= '9') goto yy952;
        goto yy56;
 yy950:
+       YYDEBUG(950, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy952;
        if (yych <= ':') goto yy953;
        goto yy56;
 yy951:
+       YYDEBUG(951, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '4') goto yy952;
        if (yych == ':') goto yy953;
        goto yy56;
 yy952:
+       YYDEBUG(952, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy56;
 yy953:
+       YYDEBUG(953, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy954;
        if (yych <= '9') goto yy955;
        goto yy56;
 yy954:
+       YYDEBUG(954, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy955;
        if (yych <= ':') goto yy956;
        goto yy56;
 yy955:
+       YYDEBUG(955, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy56;
 yy956:
+       YYDEBUG(956, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy957;
@@ -13515,23 +14487,28 @@ yy956:
        if (yych <= '9') goto yy806;
        goto yy56;
 yy957:
+       YYDEBUG(957, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy807;
        if (yych <= '9') goto yy806;
        goto yy807;
 yy958:
+       YYDEBUG(958, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '0') goto yy806;
        goto yy807;
 yy959:
+       YYDEBUG(959, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'T') goto yy949;
        goto yy621;
 yy960:
+       YYDEBUG(960, *YYCURSOR);
        yyaccept = 21;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych != '-') goto yy938;
+       YYDEBUG(961, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '2') {
                if (yych <= '/') goto yy56;
@@ -13541,6 +14518,7 @@ yy960:
                if (yych <= '9') goto yy944;
                goto yy56;
        }
+       YYDEBUG(962, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'm') {
@@ -13563,6 +14541,7 @@ yy960:
                }
        }
 yy963:
+       YYDEBUG(963, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'm') {
@@ -13585,6 +14564,7 @@ yy963:
                }
        }
 yy964:
+       YYDEBUG(964, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'm') {
@@ -13606,6 +14586,7 @@ yy964:
                }
        }
 yy965:
+       YYDEBUG(965, *YYCURSOR);
        yyaccept = 20;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -13623,6 +14604,7 @@ yy965:
                }
        }
 yy966:
+       YYDEBUG(966, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '1') goto yy967;
@@ -13630,34 +14612,41 @@ yy966:
        if (yych <= '9') goto yy952;
        goto yy56;
 yy967:
+       YYDEBUG(967, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy969;
        if (yych <= ':') goto yy953;
        goto yy56;
 yy968:
+       YYDEBUG(968, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '4') goto yy969;
        if (yych == ':') goto yy953;
        goto yy56;
 yy969:
+       YYDEBUG(969, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy56;
+       YYDEBUG(970, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy971;
        if (yych <= '9') goto yy955;
        goto yy56;
 yy971:
+       YYDEBUG(971, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '9') goto yy972;
        if (yych <= ':') goto yy956;
        goto yy56;
 yy972:
+       YYDEBUG(972, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy56;
+       YYDEBUG(973, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy974;
@@ -13665,25 +14654,31 @@ yy972:
        if (yych <= '9') goto yy806;
        goto yy56;
 yy974:
+       YYDEBUG(974, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy807;
        if (yych <= '9') goto yy976;
        goto yy807;
 yy975:
+       YYDEBUG(975, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '0') goto yy807;
 yy976:
+       YYDEBUG(976, *YYCURSOR);
        yyaccept = 22;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych != '.') goto yy807;
+       YYDEBUG(977, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
 yy978:
+       YYDEBUG(978, *YYCURSOR);
        yyaccept = 22;
        YYMARKER = ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
        yych = *YYCURSOR;
+       YYDEBUG(979, *YYCURSOR);
        if (yych <= '-') {
                if (yych == '+') goto yy981;
                if (yych <= ',') goto yy807;
@@ -13696,10 +14691,12 @@ yy978:
                        if (yych != 'G') goto yy807;
                }
        }
+       YYDEBUG(980, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'M') goto yy987;
        goto yy56;
 yy981:
+       YYDEBUG(981, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '1') goto yy982;
@@ -13707,12 +14704,14 @@ yy981:
        if (yych <= '9') goto yy984;
        goto yy56;
 yy982:
+       YYDEBUG(982, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy807;
        if (yych <= '9') goto yy984;
        if (yych <= ':') goto yy985;
        goto yy807;
 yy983:
+       YYDEBUG(983, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '5') {
                if (yych <= '/') goto yy807;
@@ -13723,34 +14722,41 @@ yy983:
                goto yy807;
        }
 yy984:
+       YYDEBUG(984, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy807;
        if (yych <= '5') goto yy986;
        if (yych <= '9') goto yy806;
        if (yych >= ';') goto yy807;
 yy985:
+       YYDEBUG(985, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy807;
        if (yych <= '5') goto yy986;
        if (yych <= '9') goto yy806;
        goto yy807;
 yy986:
+       YYDEBUG(986, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy807;
        if (yych <= '9') goto yy806;
        goto yy807;
 yy987:
+       YYDEBUG(987, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != 'T') goto yy56;
+       YYDEBUG(988, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '+') goto yy981;
        if (yych == '-') goto yy981;
        goto yy56;
 yy989:
+       YYDEBUG(989, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy990;
        if (yych != 'c') goto yy56;
 yy990:
+       YYDEBUG(990, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -13762,10 +14768,12 @@ yy990:
                goto yy758;
        }
 yy991:
+       YYDEBUG(991, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'V') goto yy992;
        if (yych != 'v') goto yy56;
 yy992:
+       YYDEBUG(992, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -13777,10 +14785,12 @@ yy992:
                goto yy758;
        }
 yy993:
+       YYDEBUG(993, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy994;
        if (yych != 't') goto yy56;
 yy994:
+       YYDEBUG(994, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'N') {
@@ -13792,10 +14802,12 @@ yy994:
                goto yy758;
        }
 yy995:
+       YYDEBUG(995, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'P') goto yy996;
        if (yych != 'p') goto yy56;
 yy996:
+       YYDEBUG(996, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -13806,6 +14818,7 @@ yy996:
                if (yych != 't') goto yy758;
        }
 yy997:
+       YYDEBUG(997, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -13817,15 +14830,18 @@ yy997:
                goto yy758;
        }
 yy998:
+       YYDEBUG(998, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'G') goto yy1001;
        if (yych == 'g') goto yy1001;
        goto yy56;
 yy999:
+       YYDEBUG(999, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy1000;
        if (yych != 'r') goto yy56;
 yy1000:
+       YYDEBUG(1000, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'H') {
@@ -13837,6 +14853,7 @@ yy1000:
                goto yy758;
        }
 yy1001:
+       YYDEBUG(1001, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'T') {
@@ -13848,6 +14865,7 @@ yy1001:
                goto yy758;
        }
 yy1002:
+       YYDEBUG(1002, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'Y') {
                if (yych == 'R') goto yy1003;
@@ -13862,6 +14880,7 @@ yy1002:
                }
        }
 yy1003:
+       YYDEBUG(1003, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'B') {
@@ -13873,15 +14892,18 @@ yy1003:
                goto yy758;
        }
 yy1004:
+       YYDEBUG(1004, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '-') goto yy731;
        goto yy758;
 yy1005:
+       YYDEBUG(1005, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'B') goto yy1006;
        if (yych != 'b') goto yy56;
 yy1006:
+       YYDEBUG(1006, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
@@ -13893,6 +14915,7 @@ yy1006:
                goto yy758;
        }
 yy1007:
+       YYDEBUG(1007, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych == 'L') goto yy1011;
@@ -13908,10 +14931,12 @@ yy1007:
                }
        }
 yy1008:
+       YYDEBUG(1008, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy1009;
        if (yych != 'n') goto yy56;
 yy1009:
+       YYDEBUG(1009, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'T') {
@@ -13923,6 +14948,7 @@ yy1009:
                goto yy758;
        }
 yy1010:
+       YYDEBUG(1010, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -13934,6 +14960,7 @@ yy1010:
                goto yy758;
        }
 yy1011:
+       YYDEBUG(1011, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'X') {
@@ -13945,6 +14972,7 @@ yy1011:
                goto yy758;
        }
 yy1012:
+       YYDEBUG(1012, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '.') {
                if (yych <= '\t') {
@@ -13966,6 +14994,7 @@ yy1012:
                }
        }
 yy1013:
+       YYDEBUG(1013, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'P') {
                if (yych == 'C') goto yy121;
@@ -13981,6 +15010,7 @@ yy1013:
                }
        }
 yy1014:
+       YYDEBUG(1014, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '9') {
                if (yych <= ',') {
@@ -14004,6 +15034,7 @@ yy1014:
                }
        }
 yy1015:
+       YYDEBUG(1015, *YYCURSOR);
        yych = *++YYCURSOR;
        switch (yych) {
        case '0':       goto yy1019;
@@ -14035,6 +15066,7 @@ yy1015:
        default:        goto yy542;
        }
 yy1016:
+       YYDEBUG(1016, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy1018;
        if (yych <= '0') goto yy700;
@@ -14042,10 +15074,12 @@ yy1016:
        if (yych <= '9') goto yy702;
        goto yy1018;
 yy1017:
+       YYDEBUG(1017, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
        yych = *YYCURSOR;
 yy1018:
+       YYDEBUG(1018, *YYCURSOR);
        if (yych <= 'W') {
                if (yych <= 'G') {
                        if (yych <= '.') {
@@ -14138,6 +15172,7 @@ yy1018:
                }
        }
 yy1019:
+       YYDEBUG(1019, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '.') {
                if (yych <= ',') goto yy56;
@@ -14149,6 +15184,7 @@ yy1019:
                goto yy56;
        }
 yy1020:
+       YYDEBUG(1020, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '.') {
                if (yych <= ',') goto yy56;
@@ -14159,12 +15195,14 @@ yy1020:
                if (yych >= '3') goto yy56;
        }
 yy1021:
+       YYDEBUG(1021, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= ',') goto yy56;
        if (yych <= '-') goto yy1022;
        if (yych <= '.') goto yy566;
        goto yy56;
 yy1022:
+       YYDEBUG(1022, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '2') {
                if (yych <= '/') goto yy56;
@@ -14174,6 +15212,7 @@ yy1022:
                if (yych <= '9') goto yy623;
                goto yy56;
        }
+       YYDEBUG(1023, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -14192,6 +15231,7 @@ yy1022:
                }
        }
 yy1024:
+       YYDEBUG(1024, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -14210,6 +15250,7 @@ yy1024:
                }
        }
 yy1025:
+       YYDEBUG(1025, *YYCURSOR);
        yyaccept = 12;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -14231,6 +15272,7 @@ yy1025:
                }
        }
 yy1026:
+       YYDEBUG(1026, *YYCURSOR);
        yyaccept = 14;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'n') {
@@ -14249,6 +15291,7 @@ yy1026:
                }
        }
 yy1027:
+       YYDEBUG(1027, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '9') {
                if (yych <= '-') {
@@ -14274,6 +15317,7 @@ yy1027:
                }
        }
 yy1028:
+       YYDEBUG(1028, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '1') {
                if (yych <= '/') goto yy542;
@@ -14285,16 +15329,19 @@ yy1028:
                goto yy542;
        }
 yy1029:
+       YYDEBUG(1029, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy1047;
        if (yych <= '9') goto yy1048;
        goto yy56;
 yy1030:
+       YYDEBUG(1030, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '-') goto yy749;
        if (yych <= '/') goto yy60;
        if (yych >= ':') goto yy60;
+       YYDEBUG(1031, *YYCURSOR);
        yyaccept = 23;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'L') {
@@ -14374,7 +15421,8 @@ yy1030:
                }
        }
 yy1032:
-#line 1204 "ext/date/lib/parse_date.re"
+       YYDEBUG(1032, *YYCURSOR);
+#line 1220 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("gnunocolon");
                TIMELIB_INIT;
@@ -14389,32 +15437,36 @@ yy1032:
                                break;
                        default:
                                TIMELIB_DEINIT;
-                               add_error(s, "Double time specification");
+                               add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification");
                                return TIMELIB_ERROR;
                }
                s->time->have_time++;
                TIMELIB_DEINIT;
                return TIMELIB_GNU_NOCOLON;
        }
-#line 14400 "ext/date/lib/parse_date.c"
+#line 15448 "<stdout>"
 yy1033:
+       YYDEBUG(1033, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '0') goto yy1045;
        if (yych <= '9') goto yy1046;
        goto yy60;
 yy1034:
+       YYDEBUG(1034, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '2') goto yy1044;
        if (yych <= '9') goto yy1043;
        goto yy60;
 yy1035:
+       YYDEBUG(1035, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '9') goto yy1043;
        goto yy60;
 yy1036:
+       YYDEBUG(1036, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '5') goto yy1041;
@@ -14422,17 +15474,20 @@ yy1036:
        if (yych <= '9') goto yy1039;
        goto yy60;
 yy1037:
+       YYDEBUG(1037, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '9') goto yy1039;
        goto yy60;
 yy1038:
+       YYDEBUG(1038, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy60;
        if (yych <= '0') goto yy1039;
        if (yych <= '9') goto yy54;
        goto yy60;
 yy1039:
+       YYDEBUG(1039, *YYCURSOR);
        yyaccept = 24;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 2) {
@@ -14486,7 +15541,8 @@ yy1039:
                }
        }
 yy1040:
-#line 1250 "ext/date/lib/parse_date.re"
+       YYDEBUG(1040, *YYCURSOR);
+#line 1266 "ext/date/lib/parse_date.re"
        {
                int tz_not_found;
                DEBUG_OUTPUT("iso8601nocolon");
@@ -14499,14 +15555,15 @@ yy1040:
                if (*ptr != '\0') {
                        s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                        if (tz_not_found) {
-                               add_error(s, "The timezone could not be found in the database");
+                               add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
                        }
                }
                TIMELIB_DEINIT;
                return TIMELIB_ISO_NOCOLON;
        }
-#line 14509 "ext/date/lib/parse_date.c"
+#line 15565 "<stdout>"
 yy1041:
+       YYDEBUG(1041, *YYCURSOR);
        yyaccept = 24;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -14575,6 +15632,7 @@ yy1041:
                }
        }
 yy1042:
+       YYDEBUG(1042, *YYCURSOR);
        yyaccept = 24;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -14648,6 +15706,7 @@ yy1042:
                }
        }
 yy1043:
+       YYDEBUG(1043, *YYCURSOR);
        yyaccept = 24;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -14716,6 +15775,7 @@ yy1043:
                }
        }
 yy1044:
+       YYDEBUG(1044, *YYCURSOR);
        yyaccept = 24;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'V') {
@@ -14799,6 +15859,7 @@ yy1044:
                }
        }
 yy1045:
+       YYDEBUG(1045, *YYCURSOR);
        yyaccept = 24;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'V') {
@@ -14882,6 +15943,7 @@ yy1045:
                }
        }
 yy1046:
+       YYDEBUG(1046, *YYCURSOR);
        yyaccept = 24;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'V') {
@@ -14965,6 +16027,7 @@ yy1046:
                }
        }
 yy1047:
+       YYDEBUG(1047, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -14976,11 +16039,13 @@ yy1047:
                goto yy455;
        }
 yy1048:
+       YYDEBUG(1048, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy1049;
        if (yych != ':') goto yy455;
 yy1049:
+       YYDEBUG(1049, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy1050;
@@ -14988,6 +16053,7 @@ yy1049:
        if (yych <= '9') goto yy460;
        goto yy56;
 yy1050:
+       YYDEBUG(1050, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy461;
@@ -14995,12 +16061,14 @@ yy1050:
        if (yych <= '9') goto yy460;
        goto yy455;
 yy1051:
+       YYDEBUG(1051, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy461;
        if (yych == '0') goto yy460;
        goto yy455;
 yy1052:
+       YYDEBUG(1052, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -15014,6 +16082,7 @@ yy1052:
                goto yy455;
        }
 yy1053:
+       YYDEBUG(1053, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -15028,6 +16097,7 @@ yy1053:
                goto yy455;
        }
 yy1054:
+       YYDEBUG(1054, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -15041,6 +16111,7 @@ yy1054:
                goto yy455;
        }
 yy1055:
+       YYDEBUG(1055, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -15051,6 +16122,7 @@ yy1055:
                goto yy455;
        }
 yy1056:
+       YYDEBUG(1056, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '5') goto yy1057;
@@ -15058,6 +16130,7 @@ yy1056:
        if (yych <= '9') goto yy574;
        goto yy56;
 yy1057:
+       YYDEBUG(1057, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy461;
@@ -15065,6 +16138,7 @@ yy1057:
        if (yych <= '9') goto yy1059;
        goto yy455;
 yy1058:
+       YYDEBUG(1058, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -15076,6 +16150,7 @@ yy1058:
                goto yy455;
        }
 yy1059:
+       YYDEBUG(1059, *YYCURSOR);
        yyaccept = 10;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '.') goto yy461;
@@ -15083,6 +16158,7 @@ yy1059:
        if (yych <= '9') goto yy569;
        goto yy455;
 yy1060:
+       YYDEBUG(1060, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '9') {
                if (yych <= '-') {
@@ -15108,6 +16184,7 @@ yy1060:
                }
        }
 yy1061:
+       YYDEBUG(1061, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '9') {
                if (yych <= '-') {
@@ -15133,6 +16210,7 @@ yy1061:
                }
        }
 yy1062:
+       YYDEBUG(1062, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -15154,6 +16232,7 @@ yy1062:
                }
        }
 yy1063:
+       YYDEBUG(1063, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'V') {
                if (yych <= ')') {
@@ -15175,6 +16254,7 @@ yy1063:
                }
        }
 yy1064:
+       YYDEBUG(1064, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'I') {
                if (yych <= ')') {
@@ -15196,6 +16276,7 @@ yy1064:
                }
        }
 yy1065:
+       YYDEBUG(1065, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'O') {
                if (yych <= ')') {
@@ -15217,6 +16298,7 @@ yy1065:
                }
        }
 yy1066:
+       YYDEBUG(1066, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'T') {
@@ -15227,18 +16309,22 @@ yy1066:
                if (yych != 'u') goto yy3;
        }
 yy1067:
+       YYDEBUG(1067, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy1068;
        if (yych != 's') goto yy56;
 yy1068:
+       YYDEBUG(1068, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '\t') goto yy1069;
        if (yych != ' ') goto yy56;
 yy1069:
+       YYDEBUG(1069, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
        yych = *YYCURSOR;
 yy1070:
+       YYDEBUG(1070, *YYCURSOR);
        if (yych <= 'X') {
                if (yych <= 'G') {
                        if (yych <= ' ') {
@@ -15315,6 +16401,7 @@ yy1070:
                }
        }
 yy1071:
+       YYDEBUG(1071, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych <= 'N') {
@@ -15336,15 +16423,18 @@ yy1071:
                }
        }
 yy1072:
+       YYDEBUG(1072, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 0xB5) goto yy1151;
        goto yy56;
 yy1073:
+       YYDEBUG(1073, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy1149;
        if (yych == 's') goto yy1149;
        goto yy56;
 yy1074:
+       YYDEBUG(1074, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= 'D') {
@@ -15366,16 +16456,19 @@ yy1074:
                }
        }
 yy1075:
+       YYDEBUG(1075, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy1133;
        if (yych == 'o') goto yy1133;
        goto yy56;
 yy1076:
+       YYDEBUG(1076, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy1132;
        if (yych == 'a') goto yy1132;
        goto yy56;
 yy1077:
+       YYDEBUG(1077, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych == 'O') goto yy1117;
@@ -15391,16 +16484,19 @@ yy1077:
                }
        }
 yy1078:
+       YYDEBUG(1078, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy1113;
        if (yych == 'e') goto yy1113;
        goto yy56;
 yy1079:
+       YYDEBUG(1079, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy1099;
        if (yych == 'e') goto yy1099;
        goto yy56;
 yy1080:
+       YYDEBUG(1080, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych == 'H') goto yy1081;
@@ -15415,15 +16511,18 @@ yy1080:
                }
        }
 yy1081:
+       YYDEBUG(1081, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'U') goto yy1094;
        if (yych == 'u') goto yy1094;
        goto yy56;
 yy1082:
+       YYDEBUG(1082, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy1083;
        if (yych != 'e') goto yy56;
 yy1083:
+       YYDEBUG(1083, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ' ') {
@@ -15437,7 +16536,8 @@ yy1083:
                }
        }
 yy1084:
-#line 1646 "ext/date/lib/parse_date.re"
+       YYDEBUG(1084, *YYCURSOR);
+#line 1662 "ext/date/lib/parse_date.re"
        {
                timelib_sll i;
                int         behavior = 0;
@@ -15453,11 +16553,13 @@ yy1084:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 15457 "ext/date/lib/parse_date.c"
+#line 16557 "<stdout>"
 yy1085:
+       YYDEBUG(1085, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = *YYCURSOR;
+       YYDEBUG(1086, *YYCURSOR);
        if (yych <= ' ') {
                if (yych == '\t') goto yy1085;
                if (yych <= 0x1F) goto yy56;
@@ -15472,30 +16574,37 @@ yy1085:
                }
        }
 yy1087:
+       YYDEBUG(1087, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy1088;
        if (yych != 'd') goto yy56;
 yy1088:
+       YYDEBUG(1088, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy1089;
        if (yych != 'a') goto yy56;
 yy1089:
+       YYDEBUG(1089, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy1090;
        if (yych != 'y') goto yy56;
 yy1090:
+       YYDEBUG(1090, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == '\t') goto yy1085;
        if (yych == ' ') goto yy1085;
        goto yy1084;
 yy1091:
+       YYDEBUG(1091, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'F') goto yy1092;
        if (yych != 'f') goto yy56;
 yy1092:
+       YYDEBUG(1092, *YYCURSOR);
        ++YYCURSOR;
-#line 1119 "ext/date/lib/parse_date.re"
+       YYDEBUG(1093, *YYCURSOR);
+#line 1135 "ext/date/lib/parse_date.re"
        {
                timelib_sll i;
                int         behavior = 0;
@@ -15516,8 +16625,9 @@ yy1092:
                TIMELIB_DEINIT;
                return TIMELIB_WEEK_DAY_OF_MONTH;
        }
-#line 15520 "ext/date/lib/parse_date.c"
+#line 16629 "<stdout>"
 yy1094:
+       YYDEBUG(1094, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ' ') {
@@ -15531,23 +16641,28 @@ yy1094:
                        if (yych != 'r') goto yy1084;
                }
        }
+       YYDEBUG(1095, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy1096;
        if (yych != 's') goto yy56;
 yy1096:
+       YYDEBUG(1096, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy1097;
        if (yych != 'd') goto yy56;
 yy1097:
+       YYDEBUG(1097, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy1098;
        if (yych != 'a') goto yy56;
 yy1098:
+       YYDEBUG(1098, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy1090;
        if (yych == 'y') goto yy1090;
        goto yy56;
 yy1099:
+       YYDEBUG(1099, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= 'C') goto yy56;
@@ -15557,11 +16672,13 @@ yy1099:
                if (yych <= 'd') goto yy1101;
                if (yych >= 'f') goto yy56;
        }
+       YYDEBUG(1100, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'K') goto yy1107;
        if (yych == 'k') goto yy1107;
        goto yy56;
 yy1101:
+       YYDEBUG(1101, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ' ') {
@@ -15575,27 +16692,33 @@ yy1101:
                        if (yych != 'n') goto yy1084;
                }
        }
+       YYDEBUG(1102, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy1103;
        if (yych != 'e') goto yy56;
 yy1103:
+       YYDEBUG(1103, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy1104;
        if (yych != 's') goto yy56;
 yy1104:
+       YYDEBUG(1104, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy1105;
        if (yych != 'd') goto yy56;
 yy1105:
+       YYDEBUG(1105, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy1106;
        if (yych != 'a') goto yy56;
 yy1106:
+       YYDEBUG(1106, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy1090;
        if (yych == 'y') goto yy1090;
        goto yy56;
 yy1107:
+       YYDEBUG(1107, *YYCURSOR);
        yyaccept = 26;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -15609,7 +16732,8 @@ yy1107:
                }
        }
 yy1108:
-#line 1622 "ext/date/lib/parse_date.re"
+       YYDEBUG(1108, *YYCURSOR);
+#line 1638 "ext/date/lib/parse_date.re"
        {
                timelib_sll i;
                int         behavior = 0;
@@ -15632,50 +16756,61 @@ yy1108:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 15636 "ext/date/lib/parse_date.c"
+#line 16760 "<stdout>"
 yy1109:
+       YYDEBUG(1109, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy1084;
 yy1110:
+       YYDEBUG(1110, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy1111;
        if (yych != 'a') goto yy56;
 yy1111:
+       YYDEBUG(1111, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy1112;
        if (yych != 'y') goto yy56;
 yy1112:
+       YYDEBUG(1112, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy1109;
        if (yych == 's') goto yy1109;
        goto yy1084;
 yy1113:
+       YYDEBUG(1113, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy1114;
        if (yych != 'a') goto yy56;
 yy1114:
+       YYDEBUG(1114, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy1115;
        if (yych != 'r') goto yy56;
 yy1115:
+       YYDEBUG(1115, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy1109;
        if (yych == 's') goto yy1109;
        goto yy1084;
 yy1116:
+       YYDEBUG(1116, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy1129;
        if (yych == 'i') goto yy1129;
        goto yy56;
 yy1117:
+       YYDEBUG(1117, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy1118;
        if (yych != 'r') goto yy56;
 yy1118:
+       YYDEBUG(1118, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy1119;
        if (yych != 't') goto yy56;
 yy1119:
+       YYDEBUG(1119, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych == 'H') goto yy1121;
@@ -15688,45 +16823,55 @@ yy1119:
                        if (yych != 'n') goto yy56;
                }
        }
+       YYDEBUG(1120, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy1126;
        if (yych == 'i') goto yy1126;
        goto yy56;
 yy1121:
+       YYDEBUG(1121, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy1122;
        if (yych != 'n') goto yy56;
 yy1122:
+       YYDEBUG(1122, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy1123;
        if (yych != 'i') goto yy56;
 yy1123:
+       YYDEBUG(1123, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'G') goto yy1124;
        if (yych != 'g') goto yy56;
 yy1124:
+       YYDEBUG(1124, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'H') goto yy1125;
        if (yych != 'h') goto yy56;
 yy1125:
+       YYDEBUG(1125, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy1115;
        if (yych == 't') goto yy1115;
        goto yy56;
 yy1126:
+       YYDEBUG(1126, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'G') goto yy1127;
        if (yych != 'g') goto yy56;
 yy1127:
+       YYDEBUG(1127, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'H') goto yy1128;
        if (yych != 'h') goto yy56;
 yy1128:
+       YYDEBUG(1128, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy1115;
        if (yych == 't') goto yy1115;
        goto yy56;
 yy1129:
+       YYDEBUG(1129, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ' ') {
@@ -15740,43 +16885,52 @@ yy1129:
                        if (yych != 'd') goto yy1084;
                }
        }
+       YYDEBUG(1130, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy1131;
        if (yych != 'a') goto yy56;
 yy1131:
+       YYDEBUG(1131, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy1090;
        if (yych == 'y') goto yy1090;
        goto yy56;
 yy1132:
+       YYDEBUG(1132, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy1115;
        if (yych == 'y') goto yy1115;
        goto yy56;
 yy1133:
+       YYDEBUG(1133, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'U') goto yy1134;
        if (yych != 'u') goto yy56;
 yy1134:
+       YYDEBUG(1134, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy1115;
        if (yych == 'r') goto yy1115;
        goto yy56;
 yy1135:
+       YYDEBUG(1135, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy1146;
        if (yych == 'n') goto yy1146;
        goto yy56;
 yy1136:
+       YYDEBUG(1136, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy1141;
        if (yych == 't') goto yy1141;
        goto yy56;
 yy1137:
+       YYDEBUG(1137, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy1138;
        if (yych != 'c') goto yy56;
 yy1138:
+       YYDEBUG(1138, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -15792,15 +16946,18 @@ yy1138:
                }
        }
 yy1139:
+       YYDEBUG(1139, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy1140;
        if (yych != 'n') goto yy56;
 yy1140:
+       YYDEBUG(1140, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy1115;
        if (yych == 'd') goto yy1115;
        goto yy56;
 yy1141:
+       YYDEBUG(1141, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ' ') {
@@ -15814,23 +16971,28 @@ yy1141:
                        if (yych != 'u') goto yy1084;
                }
        }
+       YYDEBUG(1142, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy1143;
        if (yych != 'r') goto yy56;
 yy1143:
+       YYDEBUG(1143, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy1144;
        if (yych != 'd') goto yy56;
 yy1144:
+       YYDEBUG(1144, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy1145;
        if (yych != 'a') goto yy56;
 yy1145:
+       YYDEBUG(1145, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy1090;
        if (yych == 'y') goto yy1090;
        goto yy56;
 yy1146:
+       YYDEBUG(1146, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ' ') {
@@ -15844,43 +17006,52 @@ yy1146:
                        if (yych != 'd') goto yy1084;
                }
        }
+       YYDEBUG(1147, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy1148;
        if (yych != 'a') goto yy56;
 yy1148:
+       YYDEBUG(1148, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy1090;
        if (yych == 'y') goto yy1090;
        goto yy56;
 yy1149:
+       YYDEBUG(1149, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy1150;
        if (yych != 'e') goto yy56;
 yy1150:
+       YYDEBUG(1150, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy1115;
        if (yych == 'c') goto yy1115;
        goto yy56;
 yy1151:
+       YYDEBUG(1151, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy1152;
        if (yych != 's') goto yy56;
 yy1152:
+       YYDEBUG(1152, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'E') goto yy1153;
        if (yych != 'e') goto yy1084;
 yy1153:
+       YYDEBUG(1153, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy1115;
        if (yych == 'c') goto yy1115;
        goto yy56;
 yy1154:
+       YYDEBUG(1154, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy1177;
        if (yych == 'n') goto yy1177;
        goto yy56;
 yy1155:
+       YYDEBUG(1155, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= 'K') {
@@ -15902,26 +17073,31 @@ yy1155:
                }
        }
 yy1156:
+       YYDEBUG(1156, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych == 'E') goto yy1157;
        if (yych != 'e') goto yy1084;
 yy1157:
+       YYDEBUG(1157, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy1115;
        if (yych == 'c') goto yy1115;
        goto yy56;
 yy1158:
+       YYDEBUG(1158, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'L') goto yy1170;
        if (yych == 'l') goto yy1170;
        goto yy56;
 yy1159:
+       YYDEBUG(1159, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy1163;
        if (yych == 'r') goto yy1163;
        goto yy56;
 yy1160:
+       YYDEBUG(1160, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'U') {
@@ -15935,73 +17111,90 @@ yy1160:
                        if (yych != 'u') goto yy1084;
                }
        }
+       YYDEBUG(1161, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy1162;
        if (yych != 't') goto yy56;
 yy1162:
+       YYDEBUG(1162, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy1115;
        if (yych == 'e') goto yy1115;
        goto yy56;
 yy1163:
+       YYDEBUG(1163, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy1164;
        if (yych != 'o') goto yy56;
 yy1164:
+       YYDEBUG(1164, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy1165;
        if (yych != 's') goto yy56;
 yy1165:
+       YYDEBUG(1165, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy1166;
        if (yych != 'e') goto yy56;
 yy1166:
+       YYDEBUG(1166, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy1167;
        if (yych != 'c') goto yy56;
 yy1167:
+       YYDEBUG(1167, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy1168;
        if (yych != 'o') goto yy56;
 yy1168:
+       YYDEBUG(1168, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy1169;
        if (yych != 'n') goto yy56;
 yy1169:
+       YYDEBUG(1169, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy1115;
        if (yych == 'd') goto yy1115;
        goto yy56;
 yy1170:
+       YYDEBUG(1170, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'I') goto yy1171;
        if (yych != 'i') goto yy56;
 yy1171:
+       YYDEBUG(1171, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy1172;
        if (yych != 's') goto yy56;
 yy1172:
+       YYDEBUG(1172, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy1173;
        if (yych != 'e') goto yy56;
 yy1173:
+       YYDEBUG(1173, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'C') goto yy1174;
        if (yych != 'c') goto yy56;
 yy1174:
+       YYDEBUG(1174, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy1175;
        if (yych != 'o') goto yy56;
 yy1175:
+       YYDEBUG(1175, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'N') goto yy1176;
        if (yych != 'n') goto yy56;
 yy1176:
+       YYDEBUG(1176, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'D') goto yy1115;
        if (yych == 'd') goto yy1115;
        goto yy56;
 yy1177:
+       YYDEBUG(1177, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -16023,21 +17216,25 @@ yy1177:
                }
        }
 yy1178:
+       YYDEBUG(1178, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'A') goto yy1180;
        if (yych == 'a') goto yy1180;
        goto yy56;
 yy1179:
+       YYDEBUG(1179, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'H') goto yy1115;
        if (yych == 'h') goto yy1115;
        goto yy56;
 yy1180:
+       YYDEBUG(1180, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy1090;
        if (yych == 'y') goto yy1090;
        goto yy56;
 yy1181:
+       YYDEBUG(1181, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -16068,6 +17265,7 @@ yy1181:
                }
        }
 yy1182:
+       YYDEBUG(1182, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'U') {
@@ -16098,6 +17296,7 @@ yy1182:
                }
        }
 yy1183:
+       YYDEBUG(1183, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'H') {
@@ -16128,6 +17327,7 @@ yy1183:
                }
        }
 yy1184:
+       YYDEBUG(1184, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'N') {
@@ -16158,6 +17358,7 @@ yy1184:
                }
        }
 yy1185:
+       YYDEBUG(1185, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'T') {
@@ -16181,9 +17382,11 @@ yy1185:
                }
        }
 yy1186:
+       YYDEBUG(1186, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'S') goto yy1068;
        if (yych != 's') goto yy179;
+       YYDEBUG(1187, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yybm[0+yych] & 16) {
                goto yy178;
@@ -16206,6 +17409,7 @@ yy1186:
                }
        }
 yy1188:
+       YYDEBUG(1188, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'G') {
                if (yych <= ')') {
@@ -16228,6 +17432,7 @@ yy1188:
                }
        }
 yy1189:
+       YYDEBUG(1189, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -16249,6 +17454,7 @@ yy1189:
                }
        }
 yy1190:
+       YYDEBUG(1190, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'V') {
                if (yych <= ')') {
@@ -16270,6 +17476,7 @@ yy1190:
                }
        }
 yy1191:
+       YYDEBUG(1191, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -16291,6 +17498,7 @@ yy1191:
                }
        }
 yy1192:
+       YYDEBUG(1192, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= ')') {
@@ -16312,6 +17520,7 @@ yy1192:
                }
        }
 yy1193:
+       YYDEBUG(1193, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -16322,18 +17531,22 @@ yy1193:
                if (yych != 't') goto yy3;
        }
 yy1194:
+       YYDEBUG(1194, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'H') goto yy1195;
        if (yych != 'h') goto yy56;
 yy1195:
+       YYDEBUG(1195, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '\t') goto yy1196;
        if (yych != ' ') goto yy56;
 yy1196:
+       YYDEBUG(1196, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
        yych = *YYCURSOR;
 yy1197:
+       YYDEBUG(1197, *YYCURSOR);
        if (yych <= 'X') {
                if (yych <= 'G') {
                        if (yych <= ' ') {
@@ -16408,10 +17621,12 @@ yy1197:
                        }
                }
        }
+       YYDEBUG(1198, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy1199;
        if (yych != 'e') goto yy56;
 yy1199:
+       YYDEBUG(1199, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= 'C') goto yy56;
@@ -16421,10 +17636,12 @@ yy1199:
                if (yych <= 'd') goto yy1101;
                if (yych >= 'f') goto yy56;
        }
+       YYDEBUG(1200, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'K') goto yy1201;
        if (yych != 'k') goto yy56;
 yy1201:
+       YYDEBUG(1201, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych == 'D') goto yy1110;
@@ -16440,6 +17657,7 @@ yy1201:
                }
        }
 yy1202:
+       YYDEBUG(1202, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'H') {
                if (yych <= ')') {
@@ -16461,6 +17679,7 @@ yy1202:
                }
        }
 yy1203:
+       YYDEBUG(1203, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -16482,6 +17701,7 @@ yy1203:
                }
        }
 yy1204:
+       YYDEBUG(1204, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -16505,6 +17725,7 @@ yy1204:
                }
        }
 yy1205:
+       YYDEBUG(1205, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 0x1F) {
@@ -16516,6 +17737,7 @@ yy1205:
                goto yy3;
        }
 yy1206:
+       YYDEBUG(1206, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'F') {
@@ -16546,6 +17768,7 @@ yy1206:
                }
        }
 yy1207:
+       YYDEBUG(1207, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -16576,6 +17799,7 @@ yy1207:
                }
        }
 yy1208:
+       YYDEBUG(1208, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'U') {
@@ -16606,6 +17830,7 @@ yy1208:
                }
        }
 yy1209:
+       YYDEBUG(1209, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -16636,6 +17861,7 @@ yy1209:
                }
        }
 yy1210:
+       YYDEBUG(1210, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -16666,6 +17892,7 @@ yy1210:
                }
        }
 yy1211:
+       YYDEBUG(1211, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -16689,10 +17916,12 @@ yy1211:
                }
        }
 yy1212:
+       YYDEBUG(1212, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'H') goto yy1195;
        if (yych != 'h') goto yy179;
 yy1213:
+       YYDEBUG(1213, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yybm[0+yych] & 16) {
                goto yy178;
@@ -16715,6 +17944,7 @@ yy1213:
                }
        }
 yy1214:
+       YYDEBUG(1214, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
@@ -16745,6 +17975,7 @@ yy1214:
                }
        }
 yy1215:
+       YYDEBUG(1215, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -16775,6 +18006,7 @@ yy1215:
                }
        }
 yy1216:
+       YYDEBUG(1216, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -16818,6 +18050,7 @@ yy1216:
                }
        }
 yy1217:
+       YYDEBUG(1217, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 16) {
@@ -16843,6 +18076,7 @@ yy1217:
                }
        }
 yy1218:
+       YYDEBUG(1218, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'V') {
                if (yych <= 'B') {
@@ -16880,6 +18114,7 @@ yy1218:
                }
        }
 yy1219:
+       YYDEBUG(1219, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -16902,6 +18137,7 @@ yy1219:
                }
        }
 yy1220:
+       YYDEBUG(1220, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'X') {
                if (yych <= ')') {
@@ -16924,6 +18160,7 @@ yy1220:
                }
        }
 yy1221:
+       YYDEBUG(1221, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= ')') {
@@ -16945,6 +18182,7 @@ yy1221:
                }
        }
 yy1222:
+       YYDEBUG(1222, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'D') {
                if (yych <= ')') {
@@ -16966,6 +18204,7 @@ yy1222:
                }
        }
 yy1223:
+       YYDEBUG(1223, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'A') {
                if (yych == ')') goto yy164;
@@ -16981,6 +18220,7 @@ yy1223:
                }
        }
 yy1224:
+       YYDEBUG(1224, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'Y') {
                if (yych <= ')') {
@@ -17002,10 +18242,12 @@ yy1224:
                }
        }
 yy1225:
+       YYDEBUG(1225, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == ')') goto yy164;
        goto yy191;
 yy1226:
+       YYDEBUG(1226, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -17027,6 +18269,7 @@ yy1226:
                }
        }
 yy1227:
+       YYDEBUG(1227, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'H') {
                if (yych <= ')') {
@@ -17048,6 +18291,7 @@ yy1227:
                }
        }
 yy1228:
+       YYDEBUG(1228, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '(') {
@@ -17070,6 +18314,7 @@ yy1228:
                }
        }
 yy1229:
+       YYDEBUG(1229, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= ')') {
@@ -17091,6 +18336,7 @@ yy1229:
                }
        }
 yy1230:
+       YYDEBUG(1230, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= ')') {
@@ -17112,6 +18358,7 @@ yy1230:
                }
        }
 yy1231:
+       YYDEBUG(1231, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'D') {
                if (yych <= ')') {
@@ -17133,6 +18380,7 @@ yy1231:
                }
        }
 yy1232:
+       YYDEBUG(1232, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -17143,11 +18391,13 @@ yy1232:
                if (yych != 'a') goto yy3;
        }
 yy1233:
+       YYDEBUG(1233, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy197;
        if (yych == 'y') goto yy197;
        goto yy56;
 yy1234:
+       YYDEBUG(1234, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'O') {
                if (yych <= ')') {
@@ -17170,6 +18420,7 @@ yy1234:
                }
        }
 yy1235:
+       YYDEBUG(1235, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -17192,6 +18443,7 @@ yy1235:
                }
        }
 yy1236:
+       YYDEBUG(1236, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -17233,6 +18485,7 @@ yy1236:
                }
        }
 yy1237:
+       YYDEBUG(1237, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -17274,6 +18527,7 @@ yy1237:
                }
        }
 yy1238:
+       YYDEBUG(1238, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'M') {
                if (yych <= ')') {
@@ -17295,6 +18549,7 @@ yy1238:
                }
        }
 yy1239:
+       YYDEBUG(1239, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'A') {
@@ -17305,15 +18560,18 @@ yy1239:
                if (yych != 'b') goto yy3;
        }
 yy1240:
+       YYDEBUG(1240, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy1241;
        if (yych != 'e') goto yy56;
 yy1241:
+       YYDEBUG(1241, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy229;
        if (yych == 'r') goto yy229;
        goto yy56;
 yy1242:
+       YYDEBUG(1242, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= ')') {
@@ -17335,6 +18593,7 @@ yy1242:
                }
        }
 yy1243:
+       YYDEBUG(1243, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -17356,6 +18615,7 @@ yy1243:
                }
        }
 yy1244:
+       YYDEBUG(1244, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
@@ -17367,6 +18627,7 @@ yy1244:
                goto yy3;
        }
 yy1245:
+       YYDEBUG(1245, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= ')') {
@@ -17388,6 +18649,7 @@ yy1245:
                }
        }
 yy1246:
+       YYDEBUG(1246, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'D') {
                if (yych <= ')') {
@@ -17410,6 +18672,7 @@ yy1246:
                }
        }
 yy1247:
+       YYDEBUG(1247, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'U') {
@@ -17455,6 +18718,7 @@ yy1247:
                }
        }
 yy1248:
+       YYDEBUG(1248, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -17485,6 +18749,7 @@ yy1248:
                }
        }
 yy1249:
+       YYDEBUG(1249, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -17515,6 +18780,7 @@ yy1249:
                }
        }
 yy1250:
+       YYDEBUG(1250, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -17545,6 +18811,7 @@ yy1250:
                }
        }
 yy1251:
+       YYDEBUG(1251, *YYCURSOR);
        yyaccept = 4;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -17575,6 +18842,7 @@ yy1251:
                }
        }
 yy1252:
+       YYDEBUG(1252, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -17600,6 +18868,7 @@ yy1252:
                }
        }
 yy1253:
+       YYDEBUG(1253, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'X') {
@@ -17630,6 +18899,7 @@ yy1253:
                }
        }
 yy1254:
+       YYDEBUG(1254, *YYCURSOR);
        yyaccept = 4;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 16) {
@@ -17649,6 +18919,7 @@ yy1254:
                }
        }
 yy1255:
+       YYDEBUG(1255, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -17679,6 +18950,7 @@ yy1255:
                }
        }
 yy1256:
+       YYDEBUG(1256, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
@@ -17709,6 +18981,7 @@ yy1256:
                }
        }
 yy1257:
+       YYDEBUG(1257, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '-') {
@@ -17738,6 +19011,7 @@ yy1257:
                }
        }
 yy1258:
+       YYDEBUG(1258, *YYCURSOR);
        yyaccept = 4;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'T') {
@@ -17768,6 +19042,7 @@ yy1258:
                }
        }
 yy1259:
+       YYDEBUG(1259, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
@@ -17798,6 +19073,7 @@ yy1259:
                }
        }
 yy1260:
+       YYDEBUG(1260, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -17828,6 +19104,7 @@ yy1260:
                }
        }
 yy1261:
+       YYDEBUG(1261, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -17852,11 +19129,13 @@ yy1261:
                }
        }
 yy1262:
+       YYDEBUG(1262, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy197;
        if (yych == 'y') goto yy210;
        goto yy179;
 yy1263:
+       YYDEBUG(1263, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'N') {
@@ -17887,6 +19166,7 @@ yy1263:
                }
        }
 yy1264:
+       YYDEBUG(1264, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -17917,6 +19197,7 @@ yy1264:
                }
        }
 yy1265:
+       YYDEBUG(1265, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -17961,6 +19242,7 @@ yy1265:
                }
        }
 yy1266:
+       YYDEBUG(1266, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -18005,6 +19287,7 @@ yy1266:
                }
        }
 yy1267:
+       YYDEBUG(1267, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'L') {
@@ -18035,6 +19318,7 @@ yy1267:
                }
        }
 yy1268:
+       YYDEBUG(1268, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'A') {
@@ -18058,14 +19342,17 @@ yy1268:
                }
        }
 yy1269:
+       YYDEBUG(1269, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'E') goto yy1241;
        if (yych != 'e') goto yy179;
+       YYDEBUG(1270, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy229;
        if (yych == 'r') goto yy341;
        goto yy179;
 yy1271:
+       YYDEBUG(1271, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -18096,6 +19383,7 @@ yy1271:
                }
        }
 yy1272:
+       YYDEBUG(1272, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -18126,6 +19414,7 @@ yy1272:
                }
        }
 yy1273:
+       YYDEBUG(1273, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
@@ -18149,6 +19438,7 @@ yy1273:
                }
        }
 yy1274:
+       YYDEBUG(1274, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -18179,6 +19469,7 @@ yy1274:
                }
        }
 yy1275:
+       YYDEBUG(1275, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -18209,6 +19500,7 @@ yy1275:
                }
        }
 yy1276:
+       YYDEBUG(1276, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'C') {
                if (yych <= ')') {
@@ -18230,6 +19522,7 @@ yy1276:
                }
        }
 yy1277:
+       YYDEBUG(1277, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'K') {
                if (yych <= ')') {
@@ -18251,6 +19544,7 @@ yy1277:
                }
        }
 yy1278:
+       YYDEBUG(1278, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ')') {
@@ -18268,16 +19562,20 @@ yy1278:
                }
        }
 yy1279:
+       YYDEBUG(1279, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'O') goto yy1280;
        if (yych != 'o') goto yy56;
 yy1280:
+       YYDEBUG(1280, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'F') goto yy1281;
        if (yych != 'f') goto yy56;
 yy1281:
+       YYDEBUG(1281, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ' ') goto yy56;
+       YYDEBUG(1282, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych <= '1') goto yy1283;
@@ -18285,13 +19583,29 @@ yy1281:
        if (yych <= '9') goto yy1286;
        goto yy56;
 yy1283:
+       YYDEBUG(1283, *YYCURSOR);
        yyaccept = 27;
        yych = *(YYMARKER = ++YYCURSOR);
-       if (yych <= '/') goto yy1287;
-       if (yych <= '9') goto yy1286;
-       goto yy1287;
+       if (yych <= '@') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy1287;
+               } else {
+                       if (yych <= ' ') goto yy1287;
+                       if (yych <= '/') goto yy1284;
+                       if (yych <= '9') goto yy1286;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'A') goto yy1289;
+                       if (yych == 'P') goto yy1289;
+               } else {
+                       if (yych <= 'a') goto yy1289;
+                       if (yych == 'p') goto yy1289;
+               }
+       }
 yy1284:
-#line 1096 "ext/date/lib/parse_date.re"
+       YYDEBUG(1284, *YYCURSOR);
+#line 1112 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("backof | frontof");
                TIMELIB_INIT;
@@ -18313,67 +19627,114 @@ yy1284:
                TIMELIB_DEINIT;
                return TIMELIB_LF_DAY_OF_MONTH;
        }
-#line 18317 "ext/date/lib/parse_date.c"
+#line 19631 "<stdout>"
 yy1285:
+       YYDEBUG(1285, *YYCURSOR);
        yyaccept = 27;
        yych = *(YYMARKER = ++YYCURSOR);
-       if (yych <= '/') goto yy1287;
-       if (yych >= '5') goto yy1287;
+       if (yych <= '@') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy1287;
+                       goto yy1284;
+               } else {
+                       if (yych <= ' ') goto yy1287;
+                       if (yych <= '/') goto yy1284;
+                       if (yych >= '5') goto yy1284;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'A') goto yy1289;
+                       if (yych == 'P') goto yy1289;
+                       goto yy1284;
+               } else {
+                       if (yych <= 'a') goto yy1289;
+                       if (yych == 'p') goto yy1289;
+                       goto yy1284;
+               }
+       }
 yy1286:
+       YYDEBUG(1286, *YYCURSOR);
        yyaccept = 27;
-       YYMARKER = ++YYCURSOR;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'A') {
+               if (yych <= 0x1F) {
+                       if (yych != '\t') goto yy1284;
+               } else {
+                       if (yych <= ' ') goto yy1287;
+                       if (yych <= '@') goto yy1284;
+                       goto yy1289;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych == 'P') goto yy1289;
+                       goto yy1284;
+               } else {
+                       if (yych <= 'a') goto yy1289;
+                       if (yych == 'p') goto yy1289;
+                       goto yy1284;
+               }
+       }
+yy1287:
+       YYDEBUG(1287, *YYCURSOR);
+       ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = *YYCURSOR;
-yy1287:
+       YYDEBUG(1288, *YYCURSOR);
        if (yych <= 'A') {
                if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy1286;
-                       goto yy1284;
+                       if (yych == '\t') goto yy1287;
+                       goto yy56;
                } else {
-                       if (yych <= ' ') goto yy1286;
-                       if (yych <= '@') goto yy1284;
+                       if (yych <= ' ') goto yy1287;
+                       if (yych <= '@') goto yy56;
                }
        } else {
                if (yych <= '`') {
-                       if (yych != 'P') goto yy1284;
+                       if (yych != 'P') goto yy56;
                } else {
-                       if (yych <= 'a') goto yy1288;
-                       if (yych != 'p') goto yy1284;
+                       if (yych <= 'a') goto yy1289;
+                       if (yych != 'p') goto yy56;
                }
        }
-yy1288:
+yy1289:
+       YYDEBUG(1289, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych != '.') goto yy56;
        } else {
-               if (yych <= 'M') goto yy1290;
-               if (yych == 'm') goto yy1290;
+               if (yych <= 'M') goto yy1291;
+               if (yych == 'm') goto yy1291;
                goto yy56;
        }
+       YYDEBUG(1290, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'M') goto yy1290;
+       if (yych == 'M') goto yy1291;
        if (yych != 'm') goto yy56;
-yy1290:
+yy1291:
+       YYDEBUG(1291, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych <= 0x00) goto yy1292;
-               if (yych == '\t') goto yy1292;
+               if (yych <= 0x00) goto yy1293;
+               if (yych == '\t') goto yy1293;
                goto yy56;
        } else {
-               if (yych <= ' ') goto yy1292;
+               if (yych <= ' ') goto yy1293;
                if (yych != '.') goto yy56;
        }
+       YYDEBUG(1292, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '\t') {
-               if (yych <= 0x00) goto yy1292;
+               if (yych <= 0x00) goto yy1293;
                if (yych <= 0x08) goto yy56;
        } else {
                if (yych != ' ') goto yy56;
        }
-yy1292:
+yy1293:
+       YYDEBUG(1293, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy1284;
-yy1293:
+yy1294:
+       YYDEBUG(1294, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'B') {
@@ -18397,13 +19758,14 @@ yy1293:
                                if (yych <= '`') goto yy3;
                                goto yy171;
                        } else {
-                               if (yych <= 'c') goto yy1294;
+                               if (yych <= 'c') goto yy1295;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1294:
+yy1295:
+       YYDEBUG(1295, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'J') {
@@ -18427,13 +19789,14 @@ yy1294:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 'k') goto yy1295;
+                               if (yych <= 'k') goto yy1296;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1295:
+yy1296:
+       YYDEBUG(1296, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -18458,7 +19821,8 @@ yy1295:
                        goto yy3;
                }
        }
-yy1296:
+yy1297:
+       YYDEBUG(1297, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych <= ')') {
@@ -18474,12 +19838,13 @@ yy1296:
                        if (yych <= '`') goto yy3;
                        goto yy166;
                } else {
-                       if (yych <= 's') goto yy1297;
+                       if (yych <= 's') goto yy1298;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1297:
+yy1298:
+       YYDEBUG(1298, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -18495,12 +19860,13 @@ yy1297:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 't') goto yy1298;
+                       if (yych <= 't') goto yy1299;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1298:
+yy1299:
+       YYDEBUG(1299, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '(') {
@@ -18521,19 +19887,23 @@ yy1298:
                        goto yy3;
                }
        }
-yy1299:
+yy1300:
+       YYDEBUG(1300, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'D') goto yy1300;
+       if (yych == 'D') goto yy1301;
        if (yych != 'd') goto yy1070;
-yy1300:
+yy1301:
+       YYDEBUG(1301, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'A') goto yy1301;
+       if (yych == 'A') goto yy1302;
        if (yych != 'a') goto yy56;
-yy1301:
+yy1302:
+       YYDEBUG(1302, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'Y') goto yy1302;
+       if (yych == 'Y') goto yy1303;
        if (yych != 'y') goto yy56;
-yy1302:
+yy1303:
+       YYDEBUG(1303, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'R') {
@@ -18543,16 +19913,20 @@ yy1302:
                if (yych == 's') goto yy1109;
                goto yy1084;
        }
+       YYDEBUG(1304, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'O') goto yy1304;
+       if (yych == 'O') goto yy1305;
        if (yych != 'o') goto yy56;
-yy1304:
+yy1305:
+       YYDEBUG(1305, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'F') goto yy1305;
+       if (yych == 'F') goto yy1306;
        if (yych != 'f') goto yy56;
-yy1305:
+yy1306:
+       YYDEBUG(1306, *YYCURSOR);
        ++YYCURSOR;
-#line 1079 "ext/date/lib/parse_date.re"
+       YYDEBUG(1307, *YYCURSOR);
+#line 1095 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("firstdayof | lastdayof");
                TIMELIB_INIT;
@@ -18568,8 +19942,9 @@ yy1305:
                TIMELIB_DEINIT;
                return TIMELIB_LF_DAY_OF_MONTH;
        }
-#line 18572 "ext/date/lib/parse_date.c"
-yy1307:
+#line 19946 "<stdout>"
+yy1308:
+       YYDEBUG(1308, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'R') {
@@ -18584,7 +19959,7 @@ yy1307:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'S') goto yy1297;
+                       if (yych <= 'S') goto yy1298;
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -18593,13 +19968,14 @@ yy1307:
                                if (yych <= '`') goto yy3;
                                goto yy171;
                        } else {
-                               if (yych <= 's') goto yy1308;
+                               if (yych <= 's') goto yy1309;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1308:
+yy1309:
+       YYDEBUG(1309, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -18614,7 +19990,7 @@ yy1308:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'T') goto yy1298;
+                       if (yych <= 'T') goto yy1299;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -18623,20 +19999,21 @@ yy1308:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 't') goto yy1309;
+                               if (yych <= 't') goto yy1310;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1309:
+yy1310:
+       YYDEBUG(1310, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '-') {
                if (yych <= ' ') {
                        if (yych == '\t') goto yy1069;
                        if (yych <= 0x1F) goto yy3;
-                       goto yy1299;
+                       goto yy1300;
                } else {
                        if (yych == ')') goto yy164;
                        if (yych <= ',') goto yy3;
@@ -18658,7 +20035,8 @@ yy1309:
                        }
                }
        }
-yy1310:
+yy1311:
+       YYDEBUG(1311, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'B') {
                if (yych <= ')') {
@@ -18667,7 +20045,7 @@ yy1310:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'A') goto yy166;
-                       goto yy1346;
+                       goto yy1348;
                }
        } else {
                if (yych <= 'a') {
@@ -18675,35 +20053,37 @@ yy1310:
                        if (yych <= '`') goto yy3;
                        goto yy166;
                } else {
-                       if (yych <= 'b') goto yy1346;
+                       if (yych <= 'b') goto yy1348;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1311:
+yy1312:
+       YYDEBUG(1312, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= '@') {
                        if (yych == ')') goto yy164;
                        goto yy3;
                } else {
-                       if (yych == 'F') goto yy1336;
+                       if (yych == 'F') goto yy1338;
                        if (yych <= 'Q') goto yy166;
-                       goto yy1335;
+                       goto yy1337;
                }
        } else {
                if (yych <= 'f') {
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '`') goto yy3;
                        if (yych <= 'e') goto yy166;
-                       goto yy1336;
+                       goto yy1338;
                } else {
-                       if (yych == 'r') goto yy1335;
+                       if (yych == 'r') goto yy1337;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1312:
+yy1313:
+       YYDEBUG(1313, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= ')') {
@@ -18712,7 +20092,7 @@ yy1312:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'T') goto yy166;
-                       goto yy1332;
+                       goto yy1334;
                }
        } else {
                if (yych <= 't') {
@@ -18720,19 +20100,20 @@ yy1312:
                        if (yych <= '`') goto yy3;
                        goto yy166;
                } else {
-                       if (yych <= 'u') goto yy1332;
+                       if (yych <= 'u') goto yy1334;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1313:
+yy1314:
+       YYDEBUG(1314, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'O') {
                if (yych <= '@') {
                        if (yych == ')') goto yy164;
                        goto yy3;
                } else {
-                       if (yych == 'I') goto yy1315;
+                       if (yych == 'I') goto yy1316;
                        if (yych <= 'N') goto yy166;
                }
        } else {
@@ -18740,14 +20121,15 @@ yy1313:
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '`') goto yy3;
                        if (yych <= 'h') goto yy166;
-                       goto yy1315;
+                       goto yy1316;
                } else {
-                       if (yych == 'o') goto yy1314;
+                       if (yych == 'o') goto yy1315;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1314:
+yy1315:
+       YYDEBUG(1315, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= ')') {
@@ -18756,7 +20138,7 @@ yy1314:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'M') goto yy167;
-                       goto yy1318;
+                       goto yy1319;
                }
        } else {
                if (yych <= 'm') {
@@ -18764,12 +20146,13 @@ yy1314:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 'n') goto yy1318;
+                       if (yych <= 'n') goto yy1319;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1315:
+yy1316:
+       YYDEBUG(1316, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'D') {
                if (yych <= ')') {
@@ -18785,12 +20168,13 @@ yy1315:
                        if (yych <= '`') goto yy191;
                        goto yy167;
                } else {
-                       if (yych <= 'd') goto yy1316;
+                       if (yych <= 'd') goto yy1317;
                        if (yych <= 'z') goto yy167;
                        goto yy191;
                }
        }
-yy1316:
+yy1317:
+       YYDEBUG(1317, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'A') {
                if (yych == ')') goto yy164;
@@ -18800,12 +20184,13 @@ yy1316:
                        if (yych <= 'Z') goto yy168;
                        goto yy3;
                } else {
-                       if (yych <= 'a') goto yy1317;
+                       if (yych <= 'a') goto yy1318;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1317:
+yy1318:
+       YYDEBUG(1318, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'Y') {
                if (yych <= ')') {
@@ -18827,7 +20212,8 @@ yy1317:
                        goto yy3;
                }
        }
-yy1318:
+yy1319:
+       YYDEBUG(1319, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -18843,16 +20229,17 @@ yy1318:
                        if (yych <= '`') goto yy3;
                        goto yy168;
                } else {
-                       if (yych <= 't') goto yy1319;
+                       if (yych <= 't') goto yy1320;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1319:
+yy1320:
+       YYDEBUG(1320, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= ')') {
-               if (yych == ' ') goto yy1320;
+               if (yych == ' ') goto yy1321;
                if (yych <= '(') goto yy3;
                goto yy164;
        } else {
@@ -18865,88 +20252,157 @@ yy1319:
                        goto yy3;
                }
        }
-yy1320:
+yy1321:
+       YYDEBUG(1321, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'O') goto yy1321;
+       if (yych == 'O') goto yy1322;
        if (yych != 'o') goto yy56;
-yy1321:
+yy1322:
+       YYDEBUG(1322, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'F') goto yy1322;
+       if (yych == 'F') goto yy1323;
        if (yych != 'f') goto yy56;
-yy1322:
+yy1323:
+       YYDEBUG(1323, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ' ') goto yy56;
+       YYDEBUG(1324, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
-       if (yych <= '1') goto yy1324;
-       if (yych <= '2') goto yy1325;
-       if (yych <= '9') goto yy1326;
+       if (yych <= '1') goto yy1325;
+       if (yych <= '2') goto yy1326;
+       if (yych <= '9') goto yy1327;
        goto yy56;
-yy1324:
-       yyaccept = 27;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if (yych <= '/') goto yy1327;
-       if (yych <= '9') goto yy1326;
-       goto yy1327;
 yy1325:
+       YYDEBUG(1325, *YYCURSOR);
        yyaccept = 27;
        yych = *(YYMARKER = ++YYCURSOR);
-       if (yych <= '/') goto yy1327;
-       if (yych >= '5') goto yy1327;
+       if (yych <= '@') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy1328;
+                       goto yy1284;
+               } else {
+                       if (yych <= ' ') goto yy1328;
+                       if (yych <= '/') goto yy1284;
+                       if (yych <= '9') goto yy1327;
+                       goto yy1284;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'A') goto yy1330;
+                       if (yych == 'P') goto yy1330;
+                       goto yy1284;
+               } else {
+                       if (yych <= 'a') goto yy1330;
+                       if (yych == 'p') goto yy1330;
+                       goto yy1284;
+               }
+       }
 yy1326:
+       YYDEBUG(1326, *YYCURSOR);
        yyaccept = 27;
-       YYMARKER = ++YYCURSOR;
-       if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
-       yych = *YYCURSOR;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy1328;
+                       goto yy1284;
+               } else {
+                       if (yych <= ' ') goto yy1328;
+                       if (yych <= '/') goto yy1284;
+                       if (yych >= '5') goto yy1284;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'A') goto yy1330;
+                       if (yych == 'P') goto yy1330;
+                       goto yy1284;
+               } else {
+                       if (yych <= 'a') goto yy1330;
+                       if (yych == 'p') goto yy1330;
+                       goto yy1284;
+               }
+       }
 yy1327:
+       YYDEBUG(1327, *YYCURSOR);
+       yyaccept = 27;
+       yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'A') {
                if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy1326;
-                       goto yy1284;
+                       if (yych != '\t') goto yy1284;
                } else {
-                       if (yych <= ' ') goto yy1326;
+                       if (yych <= ' ') goto yy1328;
                        if (yych <= '@') goto yy1284;
+                       goto yy1330;
                }
        } else {
                if (yych <= '`') {
-                       if (yych != 'P') goto yy1284;
+                       if (yych == 'P') goto yy1330;
+                       goto yy1284;
                } else {
-                       if (yych <= 'a') goto yy1328;
-                       if (yych != 'p') goto yy1284;
+                       if (yych <= 'a') goto yy1330;
+                       if (yych == 'p') goto yy1330;
+                       goto yy1284;
                }
        }
 yy1328:
+       YYDEBUG(1328, *YYCURSOR);
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+       yych = *YYCURSOR;
+       YYDEBUG(1329, *YYCURSOR);
+       if (yych <= 'A') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy1328;
+                       goto yy56;
+               } else {
+                       if (yych <= ' ') goto yy1328;
+                       if (yych <= '@') goto yy56;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych != 'P') goto yy56;
+               } else {
+                       if (yych <= 'a') goto yy1330;
+                       if (yych != 'p') goto yy56;
+               }
+       }
+yy1330:
+       YYDEBUG(1330, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych != '.') goto yy56;
        } else {
-               if (yych <= 'M') goto yy1330;
-               if (yych == 'm') goto yy1330;
+               if (yych <= 'M') goto yy1332;
+               if (yych == 'm') goto yy1332;
                goto yy56;
        }
+       YYDEBUG(1331, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'M') goto yy1330;
+       if (yych == 'M') goto yy1332;
        if (yych != 'm') goto yy56;
-yy1330:
+yy1332:
+       YYDEBUG(1332, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych <= 0x00) goto yy1292;
-               if (yych == '\t') goto yy1292;
+               if (yych <= 0x00) goto yy1293;
+               if (yych == '\t') goto yy1293;
                goto yy56;
        } else {
-               if (yych <= ' ') goto yy1292;
+               if (yych <= ' ') goto yy1293;
                if (yych != '.') goto yy56;
        }
+       YYDEBUG(1333, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '\t') {
-               if (yych <= 0x00) goto yy1292;
+               if (yych <= 0x00) goto yy1293;
                if (yych <= 0x08) goto yy56;
-               goto yy1292;
+               goto yy1293;
        } else {
-               if (yych == ' ') goto yy1292;
+               if (yych == ' ') goto yy1293;
                goto yy56;
        }
-yy1332:
+yy1334:
+       YYDEBUG(1334, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= ')') {
@@ -18962,12 +20418,13 @@ yy1332:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 'r') goto yy1333;
+                       if (yych <= 'r') goto yy1335;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1333:
+yy1335:
+       YYDEBUG(1335, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -18983,12 +20440,13 @@ yy1333:
                        if (yych <= '`') goto yy3;
                        goto yy168;
                } else {
-                       if (yych <= 't') goto yy1334;
+                       if (yych <= 't') goto yy1336;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1334:
+yy1336:
+       YYDEBUG(1336, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'H') {
                if (yych <= ')') {
@@ -19010,7 +20468,8 @@ yy1334:
                        goto yy3;
                }
        }
-yy1335:
+yy1337:
+       YYDEBUG(1337, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych <= ')') {
@@ -19019,7 +20478,7 @@ yy1335:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'R') goto yy167;
-                       goto yy1338;
+                       goto yy1340;
                }
        } else {
                if (yych <= 'r') {
@@ -19027,12 +20486,13 @@ yy1335:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 's') goto yy1338;
+                       if (yych <= 's') goto yy1340;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1336:
+yy1338:
+       YYDEBUG(1338, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -19048,12 +20508,13 @@ yy1336:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 't') goto yy1337;
+                       if (yych <= 't') goto yy1339;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1337:
+yy1339:
+       YYDEBUG(1339, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'H') {
                if (yych <= ')') {
@@ -19075,7 +20536,8 @@ yy1337:
                        goto yy3;
                }
        }
-yy1338:
+yy1340:
+       YYDEBUG(1340, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -19091,12 +20553,13 @@ yy1338:
                        if (yych <= '`') goto yy3;
                        goto yy168;
                } else {
-                       if (yych <= 't') goto yy1339;
+                       if (yych <= 't') goto yy1341;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1339:
+yy1341:
+       YYDEBUG(1341, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '(') {
@@ -19117,19 +20580,23 @@ yy1339:
                        goto yy3;
                }
        }
-yy1340:
+yy1342:
+       YYDEBUG(1342, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'D') goto yy1341;
+       if (yych == 'D') goto yy1343;
        if (yych != 'd') goto yy1197;
-yy1341:
+yy1343:
+       YYDEBUG(1343, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'A') goto yy1342;
+       if (yych == 'A') goto yy1344;
        if (yych != 'a') goto yy56;
-yy1342:
+yy1344:
+       YYDEBUG(1344, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'Y') goto yy1343;
+       if (yych == 'Y') goto yy1345;
        if (yych != 'y') goto yy56;
-yy1343:
+yy1345:
+       YYDEBUG(1345, *YYCURSOR);
        yyaccept = 25;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'R') {
@@ -19139,15 +20606,18 @@ yy1343:
                if (yych == 's') goto yy1109;
                goto yy1084;
        }
+       YYDEBUG(1346, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'O') goto yy1345;
+       if (yych == 'O') goto yy1347;
        if (yych != 'o') goto yy56;
-yy1345:
+yy1347:
+       YYDEBUG(1347, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'F') goto yy1305;
-       if (yych == 'f') goto yy1305;
+       if (yych == 'F') goto yy1306;
+       if (yych == 'f') goto yy1306;
        goto yy56;
-yy1346:
+yy1348:
+       YYDEBUG(1348, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -19182,13 +20652,14 @@ yy1346:
                                if (yych <= '`') goto yy218;
                                goto yy167;
                        } else {
-                               if (yych <= 'r') goto yy1347;
+                               if (yych <= 'r') goto yy1349;
                                if (yych <= 'z') goto yy167;
                                goto yy218;
                        }
                }
        }
-yy1347:
+yy1349:
+       YYDEBUG(1349, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= ')') {
@@ -19204,12 +20675,13 @@ yy1347:
                        if (yych <= '`') goto yy3;
                        goto yy168;
                } else {
-                       if (yych <= 'u') goto yy1348;
+                       if (yych <= 'u') goto yy1350;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1348:
+yy1350:
+       YYDEBUG(1350, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'A') {
                if (yych == ')') goto yy164;
@@ -19219,27 +20691,30 @@ yy1348:
                        if (yych <= 'Z') goto yy169;
                        goto yy3;
                } else {
-                       if (yych <= 'a') goto yy1349;
+                       if (yych <= 'a') goto yy1351;
                        if (yych <= 'z') goto yy169;
                        goto yy3;
                }
        }
-yy1349:
+yy1351:
+       YYDEBUG(1351, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
                if (yych == ')') goto yy164;
                goto yy3;
        } else {
-               if (yych <= 'R') goto yy1350;
+               if (yych <= 'R') goto yy1352;
                if (yych != 'r') goto yy3;
        }
-yy1350:
+yy1352:
+       YYDEBUG(1352, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy229;
        if (yych == 'y') goto yy229;
        goto yy56;
-yy1351:
+yy1353:
+       YYDEBUG(1353, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'A') {
@@ -19254,7 +20729,7 @@ yy1351:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'B') goto yy1346;
+                       if (yych <= 'B') goto yy1348;
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -19263,13 +20738,14 @@ yy1351:
                                if (yych <= '`') goto yy3;
                                goto yy171;
                        } else {
-                               if (yych <= 'b') goto yy1369;
+                               if (yych <= 'b') goto yy1371;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1352:
+yy1354:
+       YYDEBUG(1354, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
@@ -19286,14 +20762,14 @@ yy1352:
                                if (yych <= '/') goto yy172;
                                goto yy3;
                        } else {
-                               if (yych == 'F') goto yy1336;
+                               if (yych == 'F') goto yy1338;
                                goto yy166;
                        }
                }
        } else {
                if (yych <= '`') {
                        if (yych <= 'Z') {
-                               if (yych <= 'R') goto yy1335;
+                               if (yych <= 'R') goto yy1337;
                                goto yy166;
                        } else {
                                if (yych == '_') goto yy172;
@@ -19301,16 +20777,17 @@ yy1352:
                        }
                } else {
                        if (yych <= 'q') {
-                               if (yych == 'f') goto yy1365;
+                               if (yych == 'f') goto yy1367;
                                goto yy171;
                        } else {
-                               if (yych <= 'r') goto yy1364;
+                               if (yych <= 'r') goto yy1366;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1353:
+yy1355:
+       YYDEBUG(1355, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'T') {
@@ -19325,7 +20802,7 @@ yy1353:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'U') goto yy1332;
+                       if (yych <= 'U') goto yy1334;
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -19334,13 +20811,14 @@ yy1353:
                                if (yych <= '`') goto yy3;
                                goto yy171;
                        } else {
-                               if (yych <= 'u') goto yy1361;
+                               if (yych <= 'u') goto yy1363;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1354:
+yy1356:
+       YYDEBUG(1356, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'N') {
@@ -19357,14 +20835,14 @@ yy1354:
                                if (yych <= '/') goto yy172;
                                goto yy3;
                        } else {
-                               if (yych == 'I') goto yy1315;
+                               if (yych == 'I') goto yy1316;
                                goto yy166;
                        }
                }
        } else {
                if (yych <= '`') {
                        if (yych <= 'Z') {
-                               if (yych <= 'O') goto yy1314;
+                               if (yych <= 'O') goto yy1315;
                                goto yy166;
                        } else {
                                if (yych == '_') goto yy172;
@@ -19372,16 +20850,17 @@ yy1354:
                        }
                } else {
                        if (yych <= 'n') {
-                               if (yych == 'i') goto yy1356;
+                               if (yych == 'i') goto yy1358;
                                goto yy171;
                        } else {
-                               if (yych <= 'o') goto yy1355;
+                               if (yych <= 'o') goto yy1357;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1355:
+yy1357:
+       YYDEBUG(1357, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -19396,7 +20875,7 @@ yy1355:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'N') goto yy1318;
+                       if (yych <= 'N') goto yy1319;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -19405,13 +20884,14 @@ yy1355:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 'n') goto yy1359;
+                               if (yych <= 'n') goto yy1361;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1356:
+yy1358:
+       YYDEBUG(1358, *YYCURSOR);
        yyaccept = 4;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -19426,7 +20906,7 @@ yy1356:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'D') goto yy1316;
+                       if (yych <= 'D') goto yy1317;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy191;
                        goto yy172;
@@ -19435,13 +20915,14 @@ yy1356:
                                if (yych <= '`') goto yy191;
                                goto yy175;
                        } else {
-                               if (yych <= 'd') goto yy1357;
+                               if (yych <= 'd') goto yy1359;
                                if (yych <= 'z') goto yy175;
                                goto yy191;
                        }
                }
        }
-yy1357:
+yy1359:
+       YYDEBUG(1359, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -19455,18 +20936,19 @@ yy1357:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'A') goto yy1317;
+                       if (yych <= 'A') goto yy1318;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
                } else {
                        if (yych <= '`') goto yy3;
-                       if (yych <= 'a') goto yy1358;
+                       if (yych <= 'a') goto yy1360;
                        if (yych <= 'z') goto yy176;
                        goto yy3;
                }
        }
-yy1358:
+yy1360:
+       YYDEBUG(1360, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'X') {
@@ -19496,7 +20978,8 @@ yy1358:
                        }
                }
        }
-yy1359:
+yy1361:
+       YYDEBUG(1361, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -19511,7 +20994,7 @@ yy1359:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'T') goto yy1319;
+                       if (yych <= 'T') goto yy1320;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -19520,18 +21003,19 @@ yy1359:
                                if (yych <= '`') goto yy3;
                                goto yy176;
                        } else {
-                               if (yych <= 't') goto yy1360;
+                               if (yych <= 't') goto yy1362;
                                if (yych <= 'z') goto yy176;
                                goto yy3;
                        }
                }
        }
-yy1360:
+yy1362:
+       YYDEBUG(1362, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
                if (yych <= '(') {
-                       if (yych == ' ') goto yy1320;
+                       if (yych == ' ') goto yy1321;
                        goto yy3;
                } else {
                        if (yych <= ')') goto yy164;
@@ -19551,7 +21035,8 @@ yy1360:
                        goto yy3;
                }
        }
-yy1361:
+yy1363:
+       YYDEBUG(1363, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
@@ -19566,7 +21051,7 @@ yy1361:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'R') goto yy1333;
+                       if (yych <= 'R') goto yy1335;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -19575,13 +21060,14 @@ yy1361:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 'r') goto yy1362;
+                               if (yych <= 'r') goto yy1364;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1362:
+yy1364:
+       YYDEBUG(1364, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -19596,7 +21082,7 @@ yy1362:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'T') goto yy1334;
+                       if (yych <= 'T') goto yy1336;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -19605,13 +21091,14 @@ yy1362:
                                if (yych <= '`') goto yy3;
                                goto yy176;
                        } else {
-                               if (yych <= 't') goto yy1363;
+                               if (yych <= 't') goto yy1365;
                                if (yych <= 'z') goto yy176;
                                goto yy3;
                        }
                }
        }
-yy1363:
+yy1365:
+       YYDEBUG(1365, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
@@ -19641,7 +21128,8 @@ yy1363:
                        }
                }
        }
-yy1364:
+yy1366:
+       YYDEBUG(1366, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'R') {
@@ -19656,7 +21144,7 @@ yy1364:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'S') goto yy1338;
+                       if (yych <= 'S') goto yy1340;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -19665,13 +21153,14 @@ yy1364:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 's') goto yy1367;
+                               if (yych <= 's') goto yy1369;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1365:
+yy1367:
+       YYDEBUG(1367, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -19686,7 +21175,7 @@ yy1365:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'T') goto yy1337;
+                       if (yych <= 'T') goto yy1339;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -19695,13 +21184,14 @@ yy1365:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 't') goto yy1366;
+                               if (yych <= 't') goto yy1368;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1366:
+yy1368:
+       YYDEBUG(1368, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
@@ -19731,7 +21221,8 @@ yy1366:
                        }
                }
        }
-yy1367:
+yy1369:
+       YYDEBUG(1369, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -19746,7 +21237,7 @@ yy1367:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'T') goto yy1339;
+                       if (yych <= 'T') goto yy1341;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -19755,20 +21246,21 @@ yy1367:
                                if (yych <= '`') goto yy3;
                                goto yy176;
                        } else {
-                               if (yych <= 't') goto yy1368;
+                               if (yych <= 't') goto yy1370;
                                if (yych <= 'z') goto yy176;
                                goto yy3;
                        }
                }
        }
-yy1368:
+yy1370:
+       YYDEBUG(1370, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '-') {
                if (yych <= ' ') {
                        if (yych == '\t') goto yy1196;
                        if (yych <= 0x1F) goto yy3;
-                       goto yy1340;
+                       goto yy1342;
                } else {
                        if (yych == ')') goto yy164;
                        if (yych <= ',') goto yy3;
@@ -19790,7 +21282,8 @@ yy1368:
                        }
                }
        }
-yy1369:
+yy1371:
+       YYDEBUG(1371, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -19818,7 +21311,7 @@ yy1369:
                                if (yych <= '@') goto yy218;
                                goto yy167;
                        } else {
-                               if (yych <= 'R') goto yy1347;
+                               if (yych <= 'R') goto yy1349;
                                if (yych <= 'Z') goto yy167;
                                goto yy218;
                        }
@@ -19828,13 +21321,14 @@ yy1369:
                                if (yych <= '`') goto yy218;
                                goto yy175;
                        } else {
-                               if (yych <= 'r') goto yy1370;
+                               if (yych <= 'r') goto yy1372;
                                if (yych <= 'z') goto yy175;
                                goto yy218;
                        }
                }
        }
-yy1370:
+yy1372:
+       YYDEBUG(1372, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'T') {
@@ -19849,7 +21343,7 @@ yy1370:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'U') goto yy1348;
+                       if (yych <= 'U') goto yy1350;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -19858,13 +21352,14 @@ yy1370:
                                if (yych <= '`') goto yy3;
                                goto yy176;
                        } else {
-                               if (yych <= 'u') goto yy1371;
+                               if (yych <= 'u') goto yy1373;
                                if (yych <= 'z') goto yy176;
                                goto yy3;
                        }
                }
        }
-yy1371:
+yy1373:
+       YYDEBUG(1373, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -19878,18 +21373,19 @@ yy1371:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'A') goto yy1349;
+                       if (yych <= 'A') goto yy1351;
                        if (yych <= 'Z') goto yy169;
                        if (yych <= '^') goto yy3;
                        goto yy172;
                } else {
                        if (yych <= '`') goto yy3;
-                       if (yych <= 'a') goto yy1372;
+                       if (yych <= 'a') goto yy1374;
                        if (yych <= 'z') goto yy177;
                        goto yy3;
                }
        }
-yy1372:
+yy1374:
+       YYDEBUG(1374, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
@@ -19903,34 +21399,39 @@ yy1372:
                }
        } else {
                if (yych <= '`') {
-                       if (yych <= 'R') goto yy1350;
+                       if (yych <= 'R') goto yy1352;
                        if (yych == '_') goto yy172;
                        goto yy3;
                } else {
-                       if (yych == 'r') goto yy1373;
+                       if (yych == 'r') goto yy1375;
                        if (yych <= 'z') goto yy178;
                        goto yy3;
                }
        }
-yy1373:
+yy1375:
+       YYDEBUG(1375, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy229;
        if (yych == 'y') goto yy341;
        goto yy179;
-yy1374:
+yy1376:
+       YYDEBUG(1376, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
-yy1375:
+yy1377:
+       YYDEBUG(1377, *YYCURSOR);
        yyaccept = 28;
        YYMARKER = ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
        yych = *YYCURSOR;
-       if (yych == '.') goto yy1378;
-       if (yych <= '/') goto yy1377;
-       if (yych <= '9') goto yy1375;
-yy1377:
-#line 1025 "ext/date/lib/parse_date.re"
+       YYDEBUG(1378, *YYCURSOR);
+       if (yych == '.') goto yy1380;
+       if (yych <= '/') goto yy1379;
+       if (yych <= '9') goto yy1377;
+yy1379:
+       YYDEBUG(1379, *YYCURSOR);
+#line 1041 "ext/date/lib/parse_date.re"
        {
                timelib_ull i;
 
@@ -19945,7 +21446,7 @@ yy1377:
                s->time->m = 1;
                s->time->d = 1;
                s->time->h = s->time->i = s->time->s = 0;
-               s->time->f = 0.0;
+               s->time->us = 0;
                s->time->relative.s += i;
                s->time->is_localtime = 1;
                s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
@@ -19955,30 +21456,38 @@ yy1377:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 19959 "ext/date/lib/parse_date.c"
-yy1378:
+#line 21460 "<stdout>"
+yy1380:
+       YYDEBUG(1380, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(1381, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(1382, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(1383, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(1384, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(1385, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(1386, *YYCURSOR);
        ++YYCURSOR;
-#line 1051 "ext/date/lib/parse_date.re"
+       YYDEBUG(1387, *YYCURSOR);
+#line 1067 "ext/date/lib/parse_date.re"
        {
-               timelib_ull i, ms;
+               timelib_ull i, us;
 
                TIMELIB_INIT;
                TIMELIB_HAVE_RELATIVE();
@@ -19987,14 +21496,14 @@ yy1378:
                TIMELIB_HAVE_TZ();
 
                i = timelib_get_unsigned_nr((char **) &ptr, 24);
-               ms = timelib_get_unsigned_nr((char **) &ptr, 24);
+               us = timelib_get_unsigned_nr((char **) &ptr, 24);
                s->time->y = 1970;
                s->time->m = 1;
                s->time->d = 1;
                s->time->h = s->time->i = s->time->s = 0;
-               s->time->f = 0.0;
+               s->time->us = 0;
                s->time->relative.s += i;
-               s->time->relative.f = ((double) ms) / 1000000.0;
+               s->time->relative.us = us;
                s->time->is_localtime = 1;
                s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
                s->time->z = 0;
@@ -20003,8 +21512,9 @@ yy1378:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 20007 "ext/date/lib/parse_date.c"
-yy1386:
+#line 21516 "<stdout>"
+yy1388:
+       YYDEBUG(1388, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= ')') {
@@ -20013,7 +21523,7 @@ yy1386:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'M') goto yy166;
-                       goto yy1427;
+                       goto yy1429;
                }
        } else {
                if (yych <= 'm') {
@@ -20021,58 +21531,61 @@ yy1386:
                        if (yych <= '`') goto yy3;
                        goto yy166;
                } else {
-                       if (yych <= 'n') goto yy1427;
+                       if (yych <= 'n') goto yy1429;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1387:
+yy1389:
+       YYDEBUG(1389, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'U') {
                if (yych <= '@') {
                        if (yych == ')') goto yy164;
                        goto yy3;
                } else {
-                       if (yych == 'I') goto yy1419;
+                       if (yych == 'I') goto yy1421;
                        if (yych <= 'T') goto yy166;
-                       goto yy1420;
+                       goto yy1422;
                }
        } else {
                if (yych <= 'i') {
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '`') goto yy3;
                        if (yych <= 'h') goto yy166;
-                       goto yy1419;
+                       goto yy1421;
                } else {
-                       if (yych == 'u') goto yy1420;
+                       if (yych == 'u') goto yy1422;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1388:
+yy1390:
+       YYDEBUG(1390, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'M') {
                if (yych <= '@') {
                        if (yych == ')') goto yy164;
                        goto yy3;
                } else {
-                       if (yych == 'D') goto yy1408;
+                       if (yych == 'D') goto yy1410;
                        if (yych <= 'L') goto yy166;
-                       goto yy1409;
+                       goto yy1411;
                }
        } else {
                if (yych <= 'd') {
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '`') goto yy3;
                        if (yych <= 'c') goto yy166;
-                       goto yy1408;
+                       goto yy1410;
                } else {
-                       if (yych == 'm') goto yy1409;
+                       if (yych == 'm') goto yy1411;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1389:
+yy1391:
+       YYDEBUG(1391, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -20081,7 +21594,7 @@ yy1389:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'D') goto yy166;
-                       goto yy1404;
+                       goto yy1406;
                }
        } else {
                if (yych <= 'd') {
@@ -20089,12 +21602,13 @@ yy1389:
                        if (yych <= '`') goto yy3;
                        goto yy166;
                } else {
-                       if (yych <= 'e') goto yy1404;
+                       if (yych <= 'e') goto yy1406;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1390:
+yy1392:
+       YYDEBUG(1392, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -20103,7 +21617,7 @@ yy1390:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'D') goto yy166;
-                       goto yy1400;
+                       goto yy1402;
                }
        } else {
                if (yych <= 'd') {
@@ -20111,68 +21625,78 @@ yy1390:
                        if (yych <= '`') goto yy3;
                        goto yy166;
                } else {
-                       if (yych <= 'e') goto yy1400;
+                       if (yych <= 'e') goto yy1402;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1391:
+yy1393:
+       YYDEBUG(1393, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') {
                if (yych == '.') goto yy1029;
                goto yy56;
        } else {
-               if (yych <= '9') goto yy1394;
+               if (yych <= '9') goto yy1396;
                if (yych <= ':') goto yy1029;
                goto yy56;
        }
-yy1392:
+yy1394:
+       YYDEBUG(1394, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') {
                if (yych == '.') goto yy1029;
                goto yy56;
        } else {
-               if (yych <= '4') goto yy1394;
+               if (yych <= '4') goto yy1396;
                if (yych == ':') goto yy1029;
                goto yy56;
        }
-yy1393:
+yy1395:
+       YYDEBUG(1395, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == '.') goto yy1029;
        if (yych == ':') goto yy1029;
        goto yy56;
-yy1394:
+yy1396:
+       YYDEBUG(1396, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') {
                if (yych == '.') goto yy1029;
                goto yy56;
        } else {
-               if (yych <= '5') goto yy1395;
+               if (yych <= '5') goto yy1397;
                if (yych == ':') goto yy1029;
                goto yy56;
        }
-yy1395:
+yy1397:
+       YYDEBUG(1397, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
        if (yych >= ':') goto yy56;
+       YYDEBUG(1398, *YYCURSOR);
        yyaccept = 23;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy1032;
-       if (yych <= '5') goto yy1397;
-       if (yych <= '6') goto yy1398;
+       if (yych <= '5') goto yy1399;
+       if (yych <= '6') goto yy1400;
        goto yy1032;
-yy1397:
+yy1399:
+       YYDEBUG(1399, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy56;
-       if (yych <= '9') goto yy1399;
+       if (yych <= '9') goto yy1401;
        goto yy56;
-yy1398:
+yy1400:
+       YYDEBUG(1400, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '0') goto yy56;
-yy1399:
+yy1401:
+       YYDEBUG(1401, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy1040;
-yy1400:
+yy1402:
+       YYDEBUG(1402, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych <= ')') {
@@ -20188,12 +21712,13 @@ yy1400:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 'l') goto yy1401;
+                       if (yych <= 'l') goto yy1403;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1401:
+yy1403:
+       YYDEBUG(1403, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'F') {
                if (yych <= ')') {
@@ -20209,12 +21734,13 @@ yy1401:
                        if (yych <= '`') goto yy3;
                        goto yy168;
                } else {
-                       if (yych <= 'f') goto yy1402;
+                       if (yych <= 'f') goto yy1404;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1402:
+yy1404:
+       YYDEBUG(1404, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -20230,12 +21756,13 @@ yy1402:
                        if (yych <= '`') goto yy3;
                        goto yy169;
                } else {
-                       if (yych <= 't') goto yy1403;
+                       if (yych <= 't') goto yy1405;
                        if (yych <= 'z') goto yy169;
                        goto yy3;
                }
        }
-yy1403:
+yy1405:
+       YYDEBUG(1405, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
@@ -20246,7 +21773,8 @@ yy1403:
                if (yych == 'h') goto yy1195;
                goto yy3;
        }
-yy1404:
+yy1406:
+       YYDEBUG(1406, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych <= ')') {
@@ -20262,12 +21790,13 @@ yy1404:
                        if (yych <= '`') goto yy191;
                        goto yy167;
                } else {
-                       if (yych <= 's') goto yy1405;
+                       if (yych <= 's') goto yy1407;
                        if (yych <= 'z') goto yy167;
                        goto yy191;
                }
        }
-yy1405:
+yy1407:
+       YYDEBUG(1407, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'D') {
                if (yych <= ')') {
@@ -20283,12 +21812,13 @@ yy1405:
                        if (yych <= '`') goto yy3;
                        goto yy168;
                } else {
-                       if (yych <= 'd') goto yy1406;
+                       if (yych <= 'd') goto yy1408;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1406:
+yy1408:
+       YYDEBUG(1408, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'A') {
                if (yych == ')') goto yy164;
@@ -20298,12 +21828,13 @@ yy1406:
                        if (yych <= 'Z') goto yy169;
                        goto yy3;
                } else {
-                       if (yych <= 'a') goto yy1407;
+                       if (yych <= 'a') goto yy1409;
                        if (yych <= 'z') goto yy169;
                        goto yy3;
                }
        }
-yy1407:
+yy1409:
+       YYDEBUG(1409, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'X') {
                if (yych == ')') goto yy164;
@@ -20313,23 +21844,25 @@ yy1407:
                if (yych == 'y') goto yy197;
                goto yy3;
        }
-yy1408:
+yy1410:
+       YYDEBUG(1410, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'A') {
                if (yych == ')') goto yy164;
                if (yych <= '@') goto yy3;
-               goto yy1416;
+               goto yy1418;
        } else {
                if (yych <= '`') {
                        if (yych <= 'Z') goto yy167;
                        goto yy3;
                } else {
-                       if (yych <= 'a') goto yy1416;
+                       if (yych <= 'a') goto yy1418;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1409:
+yy1411:
+       YYDEBUG(1411, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'O') {
                if (yych <= ')') {
@@ -20345,12 +21878,13 @@ yy1409:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 'o') goto yy1410;
+                       if (yych <= 'o') goto yy1412;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1410:
+yy1412:
+       YYDEBUG(1412, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= ')') {
@@ -20366,12 +21900,13 @@ yy1410:
                        if (yych <= '`') goto yy3;
                        goto yy168;
                } else {
-                       if (yych <= 'r') goto yy1411;
+                       if (yych <= 'r') goto yy1413;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1411:
+yy1413:
+       YYDEBUG(1413, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= ')') {
@@ -20387,29 +21922,33 @@ yy1411:
                        if (yych <= '`') goto yy3;
                        goto yy169;
                } else {
-                       if (yych <= 'r') goto yy1412;
+                       if (yych <= 'r') goto yy1414;
                        if (yych <= 'z') goto yy169;
                        goto yy3;
                }
        }
-yy1412:
+yy1414:
+       YYDEBUG(1414, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'N') {
                if (yych == ')') goto yy164;
                goto yy3;
        } else {
-               if (yych <= 'O') goto yy1413;
+               if (yych <= 'O') goto yy1415;
                if (yych != 'o') goto yy3;
        }
-yy1413:
+yy1415:
+       YYDEBUG(1415, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'W') goto yy1414;
+       if (yych == 'W') goto yy1416;
        if (yych != 'w') goto yy56;
-yy1414:
+yy1416:
+       YYDEBUG(1416, *YYCURSOR);
        ++YYCURSOR;
-yy1415:
-#line 1013 "ext/date/lib/parse_date.re"
+yy1417:
+       YYDEBUG(1417, *YYCURSOR);
+#line 1029 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("tomorrow");
                TIMELIB_INIT;
@@ -20420,8 +21959,9 @@ yy1415:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 20424 "ext/date/lib/parse_date.c"
-yy1416:
+#line 21963 "<stdout>"
+yy1418:
+       YYDEBUG(1418, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'Y') {
                if (yych <= ')') {
@@ -20437,22 +21977,24 @@ yy1416:
                        if (yych <= '`') goto yy3;
                        goto yy168;
                } else {
-                       if (yych <= 'y') goto yy1417;
+                       if (yych <= 'y') goto yy1419;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1417:
+yy1419:
+       YYDEBUG(1419, *YYCURSOR);
        ++YYCURSOR;
        if ((yych = *YYCURSOR) <= '@') {
                if (yych == ')') goto yy164;
        } else {
                if (yych <= 'Z') goto yy169;
-               if (yych <= '`') goto yy1418;
+               if (yych <= '`') goto yy1420;
                if (yych <= 'z') goto yy169;
        }
-yy1418:
-#line 1003 "ext/date/lib/parse_date.re"
+yy1420:
+       YYDEBUG(1420, *YYCURSOR);
+#line 1019 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("midnight | today");
                TIMELIB_INIT;
@@ -20461,8 +22003,9 @@ yy1418:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 20465 "ext/date/lib/parse_date.c"
-yy1419:
+#line 22007 "<stdout>"
+yy1421:
+       YYDEBUG(1421, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych <= '@') {
@@ -20470,8 +22013,8 @@ yy1419:
                        goto yy3;
                } else {
                        if (yych <= 'Q') goto yy167;
-                       if (yych <= 'R') goto yy1425;
-                       goto yy1426;
+                       if (yych <= 'R') goto yy1427;
+                       goto yy1428;
                }
        } else {
                if (yych <= 'q') {
@@ -20479,13 +22022,14 @@ yy1419:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 'r') goto yy1425;
-                       if (yych <= 's') goto yy1426;
+                       if (yych <= 'r') goto yy1427;
+                       if (yych <= 's') goto yy1428;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1420:
+yy1422:
+       YYDEBUG(1422, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= ')') {
@@ -20501,12 +22045,13 @@ yy1420:
                        if (yych <= '`') goto yy191;
                        goto yy167;
                } else {
-                       if (yych <= 'r') goto yy1421;
+                       if (yych <= 'r') goto yy1423;
                        if (yych <= 'z') goto yy167;
                        goto yy191;
                }
        }
-yy1421:
+yy1423:
+       YYDEBUG(1423, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych <= ')') {
@@ -20522,12 +22067,13 @@ yy1421:
                        if (yych <= '`') goto yy3;
                        goto yy168;
                } else {
-                       if (yych <= 's') goto yy1422;
+                       if (yych <= 's') goto yy1424;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1422:
+yy1424:
+       YYDEBUG(1424, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'D') {
                if (yych <= ')') {
@@ -20543,27 +22089,30 @@ yy1422:
                        if (yych <= '`') goto yy3;
                        goto yy169;
                } else {
-                       if (yych <= 'd') goto yy1423;
+                       if (yych <= 'd') goto yy1425;
                        if (yych <= 'z') goto yy169;
                        goto yy3;
                }
        }
-yy1423:
+yy1425:
+       YYDEBUG(1425, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
                if (yych == ')') goto yy164;
                goto yy3;
        } else {
-               if (yych <= 'A') goto yy1424;
+               if (yych <= 'A') goto yy1426;
                if (yych != 'a') goto yy3;
        }
-yy1424:
+yy1426:
+       YYDEBUG(1426, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy197;
        if (yych == 'y') goto yy197;
        goto yy56;
-yy1425:
+yy1427:
+       YYDEBUG(1427, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'D') {
                if (yych <= ')') {
@@ -20585,7 +22134,8 @@ yy1425:
                        goto yy3;
                }
        }
-yy1426:
+yy1428:
+       YYDEBUG(1428, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '(') {
@@ -20607,7 +22157,8 @@ yy1426:
                        goto yy3;
                }
        }
-yy1427:
+yy1429:
+       YYDEBUG(1429, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -20623,12 +22174,13 @@ yy1427:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 't') goto yy1428;
+                       if (yych <= 't') goto yy1430;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1428:
+yy1430:
+       YYDEBUG(1430, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'H') {
                if (yych <= ')') {
@@ -20650,7 +22202,8 @@ yy1428:
                        goto yy3;
                }
        }
-yy1429:
+yy1431:
+       YYDEBUG(1431, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -20665,7 +22218,7 @@ yy1429:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'N') goto yy1427;
+                       if (yych <= 'N') goto yy1429;
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -20674,13 +22227,14 @@ yy1429:
                                if (yych <= '`') goto yy3;
                                goto yy171;
                        } else {
-                               if (yych <= 'n') goto yy1459;
+                               if (yych <= 'n') goto yy1461;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1430:
+yy1432:
+       YYDEBUG(1432, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'T') {
@@ -20697,14 +22251,14 @@ yy1430:
                                if (yych <= '/') goto yy172;
                                goto yy3;
                        } else {
-                               if (yych == 'I') goto yy1419;
+                               if (yych == 'I') goto yy1421;
                                goto yy166;
                        }
                }
        } else {
                if (yych <= '`') {
                        if (yych <= 'Z') {
-                               if (yych <= 'U') goto yy1420;
+                               if (yych <= 'U') goto yy1422;
                                goto yy166;
                        } else {
                                if (yych == '_') goto yy172;
@@ -20712,16 +22266,17 @@ yy1430:
                        }
                } else {
                        if (yych <= 't') {
-                               if (yych == 'i') goto yy1451;
+                               if (yych == 'i') goto yy1453;
                                goto yy171;
                        } else {
-                               if (yych <= 'u') goto yy1452;
+                               if (yych <= 'u') goto yy1454;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1431:
+yy1433:
+       YYDEBUG(1433, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'L') {
@@ -20738,14 +22293,14 @@ yy1431:
                                if (yych <= '/') goto yy172;
                                goto yy3;
                        } else {
-                               if (yych == 'D') goto yy1408;
+                               if (yych == 'D') goto yy1410;
                                goto yy166;
                        }
                }
        } else {
                if (yych <= '`') {
                        if (yych <= 'Z') {
-                               if (yych <= 'M') goto yy1409;
+                               if (yych <= 'M') goto yy1411;
                                goto yy166;
                        } else {
                                if (yych == '_') goto yy172;
@@ -20753,16 +22308,17 @@ yy1431:
                        }
                } else {
                        if (yych <= 'l') {
-                               if (yych == 'd') goto yy1442;
+                               if (yych == 'd') goto yy1444;
                                goto yy171;
                        } else {
-                               if (yych <= 'm') goto yy1443;
+                               if (yych <= 'm') goto yy1445;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1432:
+yy1434:
+       YYDEBUG(1434, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -20777,7 +22333,7 @@ yy1432:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'E') goto yy1404;
+                       if (yych <= 'E') goto yy1406;
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -20786,13 +22342,14 @@ yy1432:
                                if (yych <= '`') goto yy3;
                                goto yy171;
                        } else {
-                               if (yych <= 'e') goto yy1438;
+                               if (yych <= 'e') goto yy1440;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1433:
+yy1435:
+       YYDEBUG(1435, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -20807,7 +22364,7 @@ yy1433:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'E') goto yy1400;
+                       if (yych <= 'E') goto yy1402;
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -20816,13 +22373,14 @@ yy1433:
                                if (yych <= '`') goto yy3;
                                goto yy171;
                        } else {
-                               if (yych <= 'e') goto yy1434;
+                               if (yych <= 'e') goto yy1436;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1434:
+yy1436:
+       YYDEBUG(1436, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'K') {
@@ -20837,7 +22395,7 @@ yy1434:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'L') goto yy1401;
+                       if (yych <= 'L') goto yy1403;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -20846,13 +22404,14 @@ yy1434:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 'l') goto yy1435;
+                               if (yych <= 'l') goto yy1437;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1435:
+yy1437:
+       YYDEBUG(1437, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'E') {
@@ -20867,7 +22426,7 @@ yy1435:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'F') goto yy1402;
+                       if (yych <= 'F') goto yy1404;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -20876,13 +22435,14 @@ yy1435:
                                if (yych <= '`') goto yy3;
                                goto yy176;
                        } else {
-                               if (yych <= 'f') goto yy1436;
+                               if (yych <= 'f') goto yy1438;
                                if (yych <= 'z') goto yy176;
                                goto yy3;
                        }
                }
        }
-yy1436:
+yy1438:
+       YYDEBUG(1438, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -20897,7 +22457,7 @@ yy1436:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'T') goto yy1403;
+                       if (yych <= 'T') goto yy1405;
                        if (yych <= 'Z') goto yy169;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -20906,13 +22466,14 @@ yy1436:
                                if (yych <= '`') goto yy3;
                                goto yy177;
                        } else {
-                               if (yych <= 't') goto yy1437;
+                               if (yych <= 't') goto yy1439;
                                if (yych <= 'z') goto yy177;
                                goto yy3;
                        }
                }
        }
-yy1437:
+yy1439:
+       YYDEBUG(1439, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
@@ -20935,7 +22496,8 @@ yy1437:
                        goto yy3;
                }
        }
-yy1438:
+yy1440:
+       YYDEBUG(1440, *YYCURSOR);
        yyaccept = 4;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'R') {
@@ -20950,7 +22512,7 @@ yy1438:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'S') goto yy1405;
+                       if (yych <= 'S') goto yy1407;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy191;
                        goto yy172;
@@ -20959,13 +22521,14 @@ yy1438:
                                if (yych <= '`') goto yy191;
                                goto yy175;
                        } else {
-                               if (yych <= 's') goto yy1439;
+                               if (yych <= 's') goto yy1441;
                                if (yych <= 'z') goto yy175;
                                goto yy191;
                        }
                }
        }
-yy1439:
+yy1441:
+       YYDEBUG(1441, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -20980,7 +22543,7 @@ yy1439:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'D') goto yy1406;
+                       if (yych <= 'D') goto yy1408;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -20989,13 +22552,14 @@ yy1439:
                                if (yych <= '`') goto yy3;
                                goto yy176;
                        } else {
-                               if (yych <= 'd') goto yy1440;
+                               if (yych <= 'd') goto yy1442;
                                if (yych <= 'z') goto yy176;
                                goto yy3;
                        }
                }
        }
-yy1440:
+yy1442:
+       YYDEBUG(1442, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -21009,18 +22573,19 @@ yy1440:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'A') goto yy1407;
+                       if (yych <= 'A') goto yy1409;
                        if (yych <= 'Z') goto yy169;
                        if (yych <= '^') goto yy3;
                        goto yy172;
                } else {
                        if (yych <= '`') goto yy3;
-                       if (yych <= 'a') goto yy1441;
+                       if (yych <= 'a') goto yy1443;
                        if (yych <= 'z') goto yy177;
                        goto yy3;
                }
        }
-yy1441:
+yy1443:
+       YYDEBUG(1443, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'X') {
@@ -21043,7 +22608,8 @@ yy1441:
                        goto yy3;
                }
        }
-yy1442:
+yy1444:
+       YYDEBUG(1444, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -21057,18 +22623,19 @@ yy1442:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'A') goto yy1416;
+                       if (yych <= 'A') goto yy1418;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
                } else {
                        if (yych <= '`') goto yy3;
-                       if (yych <= 'a') goto yy1449;
+                       if (yych <= 'a') goto yy1451;
                        if (yych <= 'z') goto yy175;
                        goto yy3;
                }
        }
-yy1443:
+yy1445:
+       YYDEBUG(1445, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'N') {
@@ -21083,7 +22650,7 @@ yy1443:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'O') goto yy1410;
+                       if (yych <= 'O') goto yy1412;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -21092,13 +22659,14 @@ yy1443:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 'o') goto yy1444;
+                               if (yych <= 'o') goto yy1446;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1444:
+yy1446:
+       YYDEBUG(1446, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
@@ -21113,7 +22681,7 @@ yy1444:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'R') goto yy1411;
+                       if (yych <= 'R') goto yy1413;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -21122,13 +22690,14 @@ yy1444:
                                if (yych <= '`') goto yy3;
                                goto yy176;
                        } else {
-                               if (yych <= 'r') goto yy1445;
+                               if (yych <= 'r') goto yy1447;
                                if (yych <= 'z') goto yy176;
                                goto yy3;
                        }
                }
        }
-yy1445:
+yy1447:
+       YYDEBUG(1447, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
@@ -21143,7 +22712,7 @@ yy1445:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'R') goto yy1412;
+                       if (yych <= 'R') goto yy1414;
                        if (yych <= 'Z') goto yy169;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -21152,13 +22721,14 @@ yy1445:
                                if (yych <= '`') goto yy3;
                                goto yy177;
                        } else {
-                               if (yych <= 'r') goto yy1446;
+                               if (yych <= 'r') goto yy1448;
                                if (yych <= 'z') goto yy177;
                                goto yy3;
                        }
                }
        }
-yy1446:
+yy1448:
+       YYDEBUG(1448, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'N') {
@@ -21172,19 +22742,21 @@ yy1446:
                }
        } else {
                if (yych <= '`') {
-                       if (yych <= 'O') goto yy1413;
+                       if (yych <= 'O') goto yy1415;
                        if (yych == '_') goto yy172;
                        goto yy3;
                } else {
-                       if (yych == 'o') goto yy1447;
+                       if (yych == 'o') goto yy1449;
                        if (yych <= 'z') goto yy178;
                        goto yy3;
                }
        }
-yy1447:
+yy1449:
+       YYDEBUG(1449, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'W') goto yy1414;
+       if (yych == 'W') goto yy1416;
        if (yych != 'w') goto yy179;
+       YYDEBUG(1450, *YYCURSOR);
        yyaccept = 29;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 16) {
@@ -21192,13 +22764,14 @@ yy1447:
        }
        if (yych <= '.') {
                if (yych == '-') goto yy172;
-               goto yy1415;
+               goto yy1417;
        } else {
                if (yych <= '/') goto yy172;
                if (yych == '_') goto yy172;
-               goto yy1415;
+               goto yy1417;
        }
-yy1449:
+yy1451:
+       YYDEBUG(1451, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'X') {
@@ -21213,7 +22786,7 @@ yy1449:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'Y') goto yy1417;
+                       if (yych <= 'Y') goto yy1419;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -21222,36 +22795,38 @@ yy1449:
                                if (yych <= '`') goto yy3;
                                goto yy176;
                        } else {
-                               if (yych <= 'y') goto yy1450;
+                               if (yych <= 'y') goto yy1452;
                                if (yych <= 'z') goto yy176;
                                goto yy3;
                        }
                }
        }
-yy1450:
+yy1452:
+       YYDEBUG(1452, *YYCURSOR);
        yyaccept = 30;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
                if (yych <= ',') {
                        if (yych == ')') goto yy164;
-                       goto yy1418;
+                       goto yy1420;
                } else {
-                       if (yych == '.') goto yy1418;
+                       if (yych == '.') goto yy1420;
                        goto yy172;
                }
        } else {
                if (yych <= '^') {
-                       if (yych <= '@') goto yy1418;
+                       if (yych <= '@') goto yy1420;
                        if (yych <= 'Z') goto yy169;
-                       goto yy1418;
+                       goto yy1420;
                } else {
                        if (yych <= '_') goto yy172;
-                       if (yych <= '`') goto yy1418;
+                       if (yych <= '`') goto yy1420;
                        if (yych <= 'z') goto yy177;
-                       goto yy1418;
+                       goto yy1420;
                }
        }
-yy1451:
+yy1453:
+       YYDEBUG(1453, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'R') {
@@ -21266,13 +22841,13 @@ yy1451:
                        } else {
                                if (yych <= '@') goto yy3;
                                if (yych <= 'Q') goto yy167;
-                               goto yy1425;
+                               goto yy1427;
                        }
                }
        } else {
                if (yych <= '`') {
                        if (yych <= 'Z') {
-                               if (yych <= 'S') goto yy1426;
+                               if (yych <= 'S') goto yy1428;
                                goto yy167;
                        } else {
                                if (yych == '_') goto yy172;
@@ -21281,15 +22856,16 @@ yy1451:
                } else {
                        if (yych <= 'r') {
                                if (yych <= 'q') goto yy175;
-                               goto yy1457;
+                               goto yy1459;
                        } else {
-                               if (yych <= 's') goto yy1458;
+                               if (yych <= 's') goto yy1460;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1452:
+yy1454:
+       YYDEBUG(1454, *YYCURSOR);
        yyaccept = 4;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
@@ -21304,7 +22880,7 @@ yy1452:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'R') goto yy1421;
+                       if (yych <= 'R') goto yy1423;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy191;
                        goto yy172;
@@ -21313,13 +22889,14 @@ yy1452:
                                if (yych <= '`') goto yy191;
                                goto yy175;
                        } else {
-                               if (yych <= 'r') goto yy1453;
+                               if (yych <= 'r') goto yy1455;
                                if (yych <= 'z') goto yy175;
                                goto yy191;
                        }
                }
        }
-yy1453:
+yy1455:
+       YYDEBUG(1455, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'R') {
@@ -21334,7 +22911,7 @@ yy1453:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'S') goto yy1422;
+                       if (yych <= 'S') goto yy1424;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -21343,13 +22920,14 @@ yy1453:
                                if (yych <= '`') goto yy3;
                                goto yy176;
                        } else {
-                               if (yych <= 's') goto yy1454;
+                               if (yych <= 's') goto yy1456;
                                if (yych <= 'z') goto yy176;
                                goto yy3;
                        }
                }
        }
-yy1454:
+yy1456:
+       YYDEBUG(1456, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -21364,7 +22942,7 @@ yy1454:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'D') goto yy1423;
+                       if (yych <= 'D') goto yy1425;
                        if (yych <= 'Z') goto yy169;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -21373,13 +22951,14 @@ yy1454:
                                if (yych <= '`') goto yy3;
                                goto yy177;
                        } else {
-                               if (yych <= 'd') goto yy1455;
+                               if (yych <= 'd') goto yy1457;
                                if (yych <= 'z') goto yy177;
                                goto yy3;
                        }
                }
        }
-yy1455:
+yy1457:
+       YYDEBUG(1457, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -21393,22 +22972,24 @@ yy1455:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'A') goto yy1424;
+                       if (yych <= 'A') goto yy1426;
                        if (yych <= '^') goto yy3;
                        goto yy172;
                } else {
                        if (yych <= '`') goto yy3;
-                       if (yych <= 'a') goto yy1456;
+                       if (yych <= 'a') goto yy1458;
                        if (yych <= 'z') goto yy178;
                        goto yy3;
                }
        }
-yy1456:
+yy1458:
+       YYDEBUG(1458, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Y') goto yy197;
        if (yych == 'y') goto yy210;
        goto yy179;
-yy1457:
+yy1459:
+       YYDEBUG(1459, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -21438,7 +23019,8 @@ yy1457:
                        }
                }
        }
-yy1458:
+yy1460:
+       YYDEBUG(1460, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '-') {
@@ -21467,7 +23049,8 @@ yy1458:
                        }
                }
        }
-yy1459:
+yy1461:
+       YYDEBUG(1461, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -21482,7 +23065,7 @@ yy1459:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'T') goto yy1428;
+                       if (yych <= 'T') goto yy1430;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -21491,13 +23074,14 @@ yy1459:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 't') goto yy1460;
+                               if (yych <= 't') goto yy1462;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1460:
+yy1462:
+       YYDEBUG(1462, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
@@ -21527,30 +23111,32 @@ yy1460:
                        }
                }
        }
-yy1461:
+yy1463:
+       YYDEBUG(1463, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'Y') {
                if (yych <= '@') {
                        if (yych == ')') goto yy164;
                        goto yy3;
                } else {
-                       if (yych == 'R') goto yy1473;
+                       if (yych == 'R') goto yy1475;
                        if (yych <= 'X') goto yy166;
-                       goto yy1474;
+                       goto yy1476;
                }
        } else {
                if (yych <= 'r') {
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '`') goto yy3;
                        if (yych <= 'q') goto yy166;
-                       goto yy1473;
+                       goto yy1475;
                } else {
-                       if (yych == 'y') goto yy1474;
+                       if (yych == 'y') goto yy1476;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1462:
+yy1464:
+       YYDEBUG(1464, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'D') {
                if (yych <= ')') {
@@ -21559,7 +23145,7 @@ yy1462:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'C') goto yy166;
-                       goto yy1467;
+                       goto yy1469;
                }
        } else {
                if (yych <= 'c') {
@@ -21567,12 +23153,13 @@ yy1462:
                        if (yych <= '`') goto yy3;
                        goto yy166;
                } else {
-                       if (yych <= 'd') goto yy1467;
+                       if (yych <= 'd') goto yy1469;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1463:
+yy1465:
+       YYDEBUG(1465, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= ')') {
@@ -21588,12 +23175,13 @@ yy1463:
                        if (yych <= '`') goto yy3;
                        goto yy166;
                } else {
-                       if (yych <= 'n') goto yy1464;
+                       if (yych <= 'n') goto yy1466;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1464:
+yy1466:
+       YYDEBUG(1466, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'D') {
                if (yych <= ')') {
@@ -21609,12 +23197,13 @@ yy1464:
                        if (yych <= '`') goto yy191;
                        goto yy167;
                } else {
-                       if (yych <= 'd') goto yy1465;
+                       if (yych <= 'd') goto yy1467;
                        if (yych <= 'z') goto yy167;
                        goto yy191;
                }
        }
-yy1465:
+yy1467:
+       YYDEBUG(1467, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'A') {
                if (yych == ')') goto yy164;
@@ -21624,12 +23213,13 @@ yy1465:
                        if (yych <= 'Z') goto yy168;
                        goto yy3;
                } else {
-                       if (yych <= 'a') goto yy1466;
+                       if (yych <= 'a') goto yy1468;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1466:
+yy1468:
+       YYDEBUG(1468, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'Y') {
                if (yych <= ')') {
@@ -21651,7 +23241,8 @@ yy1466:
                        goto yy3;
                }
        }
-yy1467:
+yy1469:
+       YYDEBUG(1469, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= ')') {
@@ -21667,12 +23258,13 @@ yy1467:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 'n') goto yy1468;
+                       if (yych <= 'n') goto yy1470;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1468:
+yy1470:
+       YYDEBUG(1470, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'I') {
                if (yych <= ')') {
@@ -21688,12 +23280,13 @@ yy1468:
                        if (yych <= '`') goto yy3;
                        goto yy168;
                } else {
-                       if (yych <= 'i') goto yy1469;
+                       if (yych <= 'i') goto yy1471;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1469:
+yy1471:
+       YYDEBUG(1471, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'G') {
                if (yych <= ')') {
@@ -21709,29 +23302,33 @@ yy1469:
                        if (yych <= '`') goto yy3;
                        goto yy169;
                } else {
-                       if (yych <= 'g') goto yy1470;
+                       if (yych <= 'g') goto yy1472;
                        if (yych <= 'z') goto yy169;
                        goto yy3;
                }
        }
-yy1470:
+yy1472:
+       YYDEBUG(1472, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
                if (yych == ')') goto yy164;
                goto yy3;
        } else {
-               if (yych <= 'H') goto yy1471;
+               if (yych <= 'H') goto yy1473;
                if (yych != 'h') goto yy3;
        }
-yy1471:
+yy1473:
+       YYDEBUG(1473, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'T') goto yy1472;
+       if (yych == 'T') goto yy1474;
        if (yych != 't') goto yy56;
-yy1472:
+yy1474:
+       YYDEBUG(1474, *YYCURSOR);
        yych = *++YYCURSOR;
-       goto yy1418;
-yy1473:
+       goto yy1420;
+yy1475:
+       YYDEBUG(1475, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -21759,7 +23356,7 @@ yy1473:
                                if (yych <= '9') goto yy220;
                                goto yy218;
                        } else {
-                               if (yych == 'C') goto yy1475;
+                               if (yych == 'C') goto yy1477;
                                goto yy167;
                        }
                } else {
@@ -21767,13 +23364,14 @@ yy1473:
                                if (yych <= '`') goto yy218;
                                goto yy167;
                        } else {
-                               if (yych <= 'c') goto yy1475;
+                               if (yych <= 'c') goto yy1477;
                                if (yych <= 'z') goto yy167;
                                goto yy218;
                        }
                }
        }
-yy1474:
+yy1476:
+       YYDEBUG(1476, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '-') {
@@ -21798,7 +23396,8 @@ yy1474:
                        goto yy218;
                }
        }
-yy1475:
+yy1477:
+       YYDEBUG(1477, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'H') {
                if (yych <= ')') {
@@ -21820,7 +23419,8 @@ yy1475:
                        goto yy3;
                }
        }
-yy1476:
+yy1478:
+       YYDEBUG(1478, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'X') {
@@ -21837,14 +23437,14 @@ yy1476:
                                if (yych <= '/') goto yy172;
                                goto yy3;
                        } else {
-                               if (yych == 'R') goto yy1473;
+                               if (yych == 'R') goto yy1475;
                                goto yy166;
                        }
                }
        } else {
                if (yych <= '`') {
                        if (yych <= 'Z') {
-                               if (yych <= 'Y') goto yy1474;
+                               if (yych <= 'Y') goto yy1476;
                                goto yy166;
                        } else {
                                if (yych == '_') goto yy172;
@@ -21852,16 +23452,17 @@ yy1476:
                        }
                } else {
                        if (yych <= 'x') {
-                               if (yych == 'r') goto yy1488;
+                               if (yych == 'r') goto yy1490;
                                goto yy171;
                        } else {
-                               if (yych <= 'y') goto yy1489;
+                               if (yych <= 'y') goto yy1491;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1477:
+yy1479:
+       YYDEBUG(1479, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -21876,7 +23477,7 @@ yy1477:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'D') goto yy1467;
+                       if (yych <= 'D') goto yy1469;
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -21885,13 +23486,14 @@ yy1477:
                                if (yych <= '`') goto yy3;
                                goto yy171;
                        } else {
-                               if (yych <= 'd') goto yy1482;
+                               if (yych <= 'd') goto yy1484;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1478:
+yy1480:
+       YYDEBUG(1480, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -21906,7 +23508,7 @@ yy1478:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'N') goto yy1464;
+                       if (yych <= 'N') goto yy1466;
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -21915,13 +23517,14 @@ yy1478:
                                if (yych <= '`') goto yy3;
                                goto yy171;
                        } else {
-                               if (yych <= 'n') goto yy1479;
+                               if (yych <= 'n') goto yy1481;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1479:
+yy1481:
+       YYDEBUG(1481, *YYCURSOR);
        yyaccept = 4;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -21936,7 +23539,7 @@ yy1479:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'D') goto yy1465;
+                       if (yych <= 'D') goto yy1467;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy191;
                        goto yy172;
@@ -21945,13 +23548,14 @@ yy1479:
                                if (yych <= '`') goto yy191;
                                goto yy175;
                        } else {
-                               if (yych <= 'd') goto yy1480;
+                               if (yych <= 'd') goto yy1482;
                                if (yych <= 'z') goto yy175;
                                goto yy191;
                        }
                }
        }
-yy1480:
+yy1482:
+       YYDEBUG(1482, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
@@ -21965,18 +23569,19 @@ yy1480:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'A') goto yy1466;
+                       if (yych <= 'A') goto yy1468;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
                } else {
                        if (yych <= '`') goto yy3;
-                       if (yych <= 'a') goto yy1481;
+                       if (yych <= 'a') goto yy1483;
                        if (yych <= 'z') goto yy176;
                        goto yy3;
                }
        }
-yy1481:
+yy1483:
+       YYDEBUG(1483, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'X') {
@@ -22006,7 +23611,8 @@ yy1481:
                        }
                }
        }
-yy1482:
+yy1484:
+       YYDEBUG(1484, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -22021,7 +23627,7 @@ yy1482:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'N') goto yy1468;
+                       if (yych <= 'N') goto yy1470;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -22030,13 +23636,14 @@ yy1482:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 'n') goto yy1483;
+                               if (yych <= 'n') goto yy1485;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1483:
+yy1485:
+       YYDEBUG(1485, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'H') {
@@ -22051,7 +23658,7 @@ yy1483:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'I') goto yy1469;
+                       if (yych <= 'I') goto yy1471;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -22060,13 +23667,14 @@ yy1483:
                                if (yych <= '`') goto yy3;
                                goto yy176;
                        } else {
-                               if (yych <= 'i') goto yy1484;
+                               if (yych <= 'i') goto yy1486;
                                if (yych <= 'z') goto yy176;
                                goto yy3;
                        }
                }
        }
-yy1484:
+yy1486:
+       YYDEBUG(1486, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'F') {
@@ -22081,7 +23689,7 @@ yy1484:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'G') goto yy1470;
+                       if (yych <= 'G') goto yy1472;
                        if (yych <= 'Z') goto yy169;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -22090,13 +23698,14 @@ yy1484:
                                if (yych <= '`') goto yy3;
                                goto yy177;
                        } else {
-                               if (yych <= 'g') goto yy1485;
+                               if (yych <= 'g') goto yy1487;
                                if (yych <= 'z') goto yy177;
                                goto yy3;
                        }
                }
        }
-yy1485:
+yy1487:
+       YYDEBUG(1487, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
@@ -22110,19 +23719,21 @@ yy1485:
                }
        } else {
                if (yych <= '`') {
-                       if (yych <= 'H') goto yy1471;
+                       if (yych <= 'H') goto yy1473;
                        if (yych == '_') goto yy172;
                        goto yy3;
                } else {
-                       if (yych == 'h') goto yy1486;
+                       if (yych == 'h') goto yy1488;
                        if (yych <= 'z') goto yy178;
                        goto yy3;
                }
        }
-yy1486:
+yy1488:
+       YYDEBUG(1488, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'T') goto yy1472;
+       if (yych == 'T') goto yy1474;
        if (yych != 't') goto yy179;
+       YYDEBUG(1489, *YYCURSOR);
        yyaccept = 30;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 16) {
@@ -22130,13 +23741,14 @@ yy1486:
        }
        if (yych <= '.') {
                if (yych == '-') goto yy172;
-               goto yy1418;
+               goto yy1420;
        } else {
                if (yych <= '/') goto yy172;
                if (yych == '_') goto yy172;
-               goto yy1418;
+               goto yy1420;
        }
-yy1488:
+yy1490:
+       YYDEBUG(1490, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -22164,7 +23776,7 @@ yy1488:
                                if (yych <= '@') goto yy218;
                                goto yy167;
                        } else {
-                               if (yych <= 'C') goto yy1475;
+                               if (yych <= 'C') goto yy1477;
                                if (yych <= 'Z') goto yy167;
                                goto yy218;
                        }
@@ -22174,13 +23786,14 @@ yy1488:
                                if (yych <= '`') goto yy218;
                                goto yy175;
                        } else {
-                               if (yych <= 'c') goto yy1490;
+                               if (yych <= 'c') goto yy1492;
                                if (yych <= 'z') goto yy175;
                                goto yy218;
                        }
                }
        }
-yy1489:
+yy1491:
+       YYDEBUG(1491, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '.') {
@@ -22215,7 +23828,8 @@ yy1489:
                        }
                }
        }
-yy1490:
+yy1492:
+       YYDEBUG(1492, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
@@ -22245,7 +23859,8 @@ yy1490:
                        }
                }
        }
-yy1491:
+yy1493:
+       YYDEBUG(1493, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'W') {
                if (yych <= 'N') {
@@ -22253,29 +23868,30 @@ yy1491:
                        if (yych <= '@') goto yy3;
                        goto yy166;
                } else {
-                       if (yych <= 'O') goto yy1499;
+                       if (yych <= 'O') goto yy1501;
                        if (yych <= 'U') goto yy166;
-                       if (yych <= 'V') goto yy1500;
-                       goto yy1497;
+                       if (yych <= 'V') goto yy1502;
+                       goto yy1499;
                }
        } else {
                if (yych <= 'o') {
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '`') goto yy3;
                        if (yych <= 'n') goto yy166;
-                       goto yy1499;
+                       goto yy1501;
                } else {
                        if (yych <= 'v') {
                                if (yych <= 'u') goto yy166;
-                               goto yy1500;
+                               goto yy1502;
                        } else {
-                               if (yych <= 'w') goto yy1497;
+                               if (yych <= 'w') goto yy1499;
                                if (yych <= 'z') goto yy166;
                                goto yy3;
                        }
                }
        }
-yy1492:
+yy1494:
+       YYDEBUG(1494, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'X') {
                if (yych <= ')') {
@@ -22284,7 +23900,7 @@ yy1492:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'W') goto yy166;
-                       goto yy1496;
+                       goto yy1498;
                }
        } else {
                if (yych <= 'w') {
@@ -22292,12 +23908,13 @@ yy1492:
                        if (yych <= '`') goto yy3;
                        goto yy166;
                } else {
-                       if (yych <= 'x') goto yy1496;
+                       if (yych <= 'x') goto yy1498;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1493:
+yy1495:
+       YYDEBUG(1495, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= ')') {
@@ -22313,12 +23930,13 @@ yy1493:
                        if (yych <= '`') goto yy3;
                        goto yy166;
                } else {
-                       if (yych <= 'n') goto yy1494;
+                       if (yych <= 'n') goto yy1496;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1494:
+yy1496:
+       YYDEBUG(1496, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -22334,12 +23952,13 @@ yy1494:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 't') goto yy1495;
+                       if (yych <= 't') goto yy1497;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1495:
+yy1497:
+       YYDEBUG(1497, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'H') {
                if (yych <= ')') {
@@ -22361,7 +23980,8 @@ yy1495:
                        goto yy3;
                }
        }
-yy1496:
+yy1498:
+       YYDEBUG(1498, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -22370,7 +23990,7 @@ yy1496:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'S') goto yy167;
-                       goto yy1426;
+                       goto yy1428;
                }
        } else {
                if (yych <= 's') {
@@ -22378,22 +23998,24 @@ yy1496:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 't') goto yy1426;
+                       if (yych <= 't') goto yy1428;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1497:
+yy1499:
+       YYDEBUG(1499, *YYCURSOR);
        ++YYCURSOR;
        if ((yych = *YYCURSOR) <= '@') {
                if (yych == ')') goto yy164;
        } else {
                if (yych <= 'Z') goto yy167;
-               if (yych <= '`') goto yy1498;
+               if (yych <= '`') goto yy1500;
                if (yych <= 'z') goto yy167;
        }
-yy1498:
-#line 982 "ext/date/lib/parse_date.re"
+yy1500:
+       YYDEBUG(1500, *YYCURSOR);
+#line 998 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("now");
                TIMELIB_INIT;
@@ -22401,8 +24023,9 @@ yy1498:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 22405 "ext/date/lib/parse_date.c"
-yy1499:
+#line 24027 "<stdout>"
+yy1501:
+       YYDEBUG(1501, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'N') {
                if (yych <= ')') {
@@ -22411,7 +24034,7 @@ yy1499:
                } else {
                        if (yych <= '@') goto yy3;
                        if (yych <= 'M') goto yy167;
-                       goto yy1505;
+                       goto yy1507;
                }
        } else {
                if (yych <= 'm') {
@@ -22419,12 +24042,13 @@ yy1499:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 'n') goto yy1505;
+                       if (yych <= 'n') goto yy1507;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1500:
+yy1502:
+       YYDEBUG(1502, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
@@ -22459,13 +24083,14 @@ yy1500:
                                if (yych <= '`') goto yy218;
                                goto yy167;
                        } else {
-                               if (yych <= 'e') goto yy1501;
+                               if (yych <= 'e') goto yy1503;
                                if (yych <= 'z') goto yy167;
                                goto yy218;
                        }
                }
        }
-yy1501:
+yy1503:
+       YYDEBUG(1503, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'M') {
                if (yych <= ')') {
@@ -22481,12 +24106,13 @@ yy1501:
                        if (yych <= '`') goto yy3;
                        goto yy168;
                } else {
-                       if (yych <= 'm') goto yy1502;
+                       if (yych <= 'm') goto yy1504;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1502:
+yy1504:
+       YYDEBUG(1504, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'B') {
                if (yych <= ')') {
@@ -22502,37 +24128,41 @@ yy1502:
                        if (yych <= '`') goto yy3;
                        goto yy169;
                } else {
-                       if (yych <= 'b') goto yy1503;
+                       if (yych <= 'b') goto yy1505;
                        if (yych <= 'z') goto yy169;
                        goto yy3;
                }
        }
-yy1503:
+yy1505:
+       YYDEBUG(1505, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
                if (yych == ')') goto yy164;
                goto yy3;
        } else {
-               if (yych <= 'E') goto yy1504;
+               if (yych <= 'E') goto yy1506;
                if (yych != 'e') goto yy3;
        }
-yy1504:
+yy1506:
+       YYDEBUG(1506, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy229;
        if (yych == 'r') goto yy229;
        goto yy56;
-yy1505:
+yy1507:
+       YYDEBUG(1507, *YYCURSOR);
        ++YYCURSOR;
        if ((yych = *YYCURSOR) <= '@') {
                if (yych == ')') goto yy164;
        } else {
                if (yych <= 'Z') goto yy168;
-               if (yych <= '`') goto yy1506;
+               if (yych <= '`') goto yy1508;
                if (yych <= 'z') goto yy168;
        }
-yy1506:
-#line 991 "ext/date/lib/parse_date.re"
+yy1508:
+       YYDEBUG(1508, *YYCURSOR);
+#line 1007 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("noon");
                TIMELIB_INIT;
@@ -22543,8 +24173,9 @@ yy1506:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 22547 "ext/date/lib/parse_date.c"
-yy1507:
+#line 24177 "<stdout>"
+yy1509:
+       YYDEBUG(1509, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'V') {
@@ -22562,15 +24193,15 @@ yy1507:
                                if (yych <= '@') goto yy3;
                                goto yy166;
                        } else {
-                               if (yych <= 'O') goto yy1499;
+                               if (yych <= 'O') goto yy1501;
                                if (yych <= 'U') goto yy166;
-                               goto yy1500;
+                               goto yy1502;
                        }
                }
        } else {
                if (yych <= 'n') {
                        if (yych <= '^') {
-                               if (yych <= 'W') goto yy1497;
+                               if (yych <= 'W') goto yy1499;
                                if (yych <= 'Z') goto yy166;
                                goto yy3;
                        } else {
@@ -22580,17 +24211,18 @@ yy1507:
                        }
                } else {
                        if (yych <= 'v') {
-                               if (yych <= 'o') goto yy1514;
+                               if (yych <= 'o') goto yy1516;
                                if (yych <= 'u') goto yy171;
-                               goto yy1515;
+                               goto yy1517;
                        } else {
-                               if (yych <= 'w') goto yy1513;
+                               if (yych <= 'w') goto yy1515;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1508:
+yy1510:
+       YYDEBUG(1510, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'W') {
@@ -22605,7 +24237,7 @@ yy1508:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'X') goto yy1496;
+                       if (yych <= 'X') goto yy1498;
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -22614,13 +24246,14 @@ yy1508:
                                if (yych <= '`') goto yy3;
                                goto yy171;
                        } else {
-                               if (yych <= 'x') goto yy1512;
+                               if (yych <= 'x') goto yy1514;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1509:
+yy1511:
+       YYDEBUG(1511, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -22635,7 +24268,7 @@ yy1509:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'N') goto yy1494;
+                       if (yych <= 'N') goto yy1496;
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -22644,13 +24277,14 @@ yy1509:
                                if (yych <= '`') goto yy3;
                                goto yy171;
                        } else {
-                               if (yych <= 'n') goto yy1510;
+                               if (yych <= 'n') goto yy1512;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1510:
+yy1512:
+       YYDEBUG(1512, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -22665,7 +24299,7 @@ yy1510:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'T') goto yy1495;
+                       if (yych <= 'T') goto yy1497;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -22674,13 +24308,14 @@ yy1510:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 't') goto yy1511;
+                               if (yych <= 't') goto yy1513;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1511:
+yy1513:
+       YYDEBUG(1513, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'G') {
@@ -22710,7 +24345,8 @@ yy1511:
                        }
                }
        }
-yy1512:
+yy1514:
+       YYDEBUG(1514, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -22725,7 +24361,7 @@ yy1512:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'T') goto yy1426;
+                       if (yych <= 'T') goto yy1428;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -22734,36 +24370,38 @@ yy1512:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 't') goto yy1458;
+                               if (yych <= 't') goto yy1460;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1513:
+yy1515:
+       YYDEBUG(1515, *YYCURSOR);
        yyaccept = 31;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
                if (yych <= ',') {
                        if (yych == ')') goto yy164;
-                       goto yy1498;
+                       goto yy1500;
                } else {
-                       if (yych == '.') goto yy1498;
+                       if (yych == '.') goto yy1500;
                        goto yy172;
                }
        } else {
                if (yych <= '^') {
-                       if (yych <= '@') goto yy1498;
+                       if (yych <= '@') goto yy1500;
                        if (yych <= 'Z') goto yy167;
-                       goto yy1498;
+                       goto yy1500;
                } else {
                        if (yych <= '_') goto yy172;
-                       if (yych <= '`') goto yy1498;
+                       if (yych <= '`') goto yy1500;
                        if (yych <= 'z') goto yy175;
-                       goto yy1498;
+                       goto yy1500;
                }
        }
-yy1514:
+yy1516:
+       YYDEBUG(1516, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'M') {
@@ -22778,7 +24416,7 @@ yy1514:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'N') goto yy1505;
+                       if (yych <= 'N') goto yy1507;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -22787,13 +24425,14 @@ yy1514:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 'n') goto yy1520;
+                               if (yych <= 'n') goto yy1522;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1515:
+yy1517:
+       YYDEBUG(1517, *YYCURSOR);
        yyaccept = 5;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '9') {
@@ -22821,7 +24460,7 @@ yy1515:
                                if (yych <= '@') goto yy218;
                                goto yy167;
                        } else {
-                               if (yych <= 'E') goto yy1501;
+                               if (yych <= 'E') goto yy1503;
                                if (yych <= 'Z') goto yy167;
                                goto yy218;
                        }
@@ -22831,13 +24470,14 @@ yy1515:
                                if (yych <= '`') goto yy218;
                                goto yy175;
                        } else {
-                               if (yych <= 'e') goto yy1516;
+                               if (yych <= 'e') goto yy1518;
                                if (yych <= 'z') goto yy175;
                                goto yy218;
                        }
                }
        }
-yy1516:
+yy1518:
+       YYDEBUG(1518, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'L') {
@@ -22852,7 +24492,7 @@ yy1516:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'M') goto yy1502;
+                       if (yych <= 'M') goto yy1504;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -22861,13 +24501,14 @@ yy1516:
                                if (yych <= '`') goto yy3;
                                goto yy176;
                        } else {
-                               if (yych <= 'm') goto yy1517;
+                               if (yych <= 'm') goto yy1519;
                                if (yych <= 'z') goto yy176;
                                goto yy3;
                        }
                }
        }
-yy1517:
+yy1519:
+       YYDEBUG(1519, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'A') {
@@ -22882,7 +24523,7 @@ yy1517:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'B') goto yy1503;
+                       if (yych <= 'B') goto yy1505;
                        if (yych <= 'Z') goto yy169;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -22891,13 +24532,14 @@ yy1517:
                                if (yych <= '`') goto yy3;
                                goto yy177;
                        } else {
-                               if (yych <= 'b') goto yy1518;
+                               if (yych <= 'b') goto yy1520;
                                if (yych <= 'z') goto yy177;
                                goto yy3;
                        }
                }
        }
-yy1518:
+yy1520:
+       YYDEBUG(1520, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -22911,44 +24553,47 @@ yy1518:
                }
        } else {
                if (yych <= '`') {
-                       if (yych <= 'E') goto yy1504;
+                       if (yych <= 'E') goto yy1506;
                        if (yych == '_') goto yy172;
                        goto yy3;
                } else {
-                       if (yych == 'e') goto yy1519;
+                       if (yych == 'e') goto yy1521;
                        if (yych <= 'z') goto yy178;
                        goto yy3;
                }
        }
-yy1519:
+yy1521:
+       YYDEBUG(1521, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'R') goto yy229;
        if (yych == 'r') goto yy341;
        goto yy179;
-yy1520:
+yy1522:
+       YYDEBUG(1522, *YYCURSOR);
        yyaccept = 32;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') {
                if (yych <= ',') {
                        if (yych == ')') goto yy164;
-                       goto yy1506;
+                       goto yy1508;
                } else {
-                       if (yych == '.') goto yy1506;
+                       if (yych == '.') goto yy1508;
                        goto yy172;
                }
        } else {
                if (yych <= '^') {
-                       if (yych <= '@') goto yy1506;
+                       if (yych <= '@') goto yy1508;
                        if (yych <= 'Z') goto yy168;
-                       goto yy1506;
+                       goto yy1508;
                } else {
                        if (yych <= '_') goto yy172;
-                       if (yych <= '`') goto yy1506;
+                       if (yych <= '`') goto yy1508;
                        if (yych <= 'z') goto yy176;
-                       goto yy1506;
+                       goto yy1508;
                }
        }
-yy1521:
+yy1523:
+       YYDEBUG(1523, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'S') {
                if (yych <= ')') {
@@ -22964,12 +24609,13 @@ yy1521:
                        if (yych <= '`') goto yy3;
                        goto yy166;
                } else {
-                       if (yych <= 's') goto yy1522;
+                       if (yych <= 's') goto yy1524;
                        if (yych <= 'z') goto yy166;
                        goto yy3;
                }
        }
-yy1522:
+yy1524:
+       YYDEBUG(1524, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'T') {
                if (yych <= ')') {
@@ -22985,12 +24631,13 @@ yy1522:
                        if (yych <= '`') goto yy3;
                        goto yy167;
                } else {
-                       if (yych <= 't') goto yy1523;
+                       if (yych <= 't') goto yy1525;
                        if (yych <= 'z') goto yy167;
                        goto yy3;
                }
        }
-yy1523:
+yy1525:
+       YYDEBUG(1525, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'E') {
                if (yych <= ')') {
@@ -23006,12 +24653,13 @@ yy1523:
                        if (yych <= '`') goto yy3;
                        goto yy168;
                } else {
-                       if (yych <= 'e') goto yy1524;
+                       if (yych <= 'e') goto yy1526;
                        if (yych <= 'z') goto yy168;
                        goto yy3;
                }
        }
-yy1524:
+yy1526:
+       YYDEBUG(1526, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'R') {
                if (yych <= ')') {
@@ -23027,33 +24675,38 @@ yy1524:
                        if (yych <= '`') goto yy3;
                        goto yy169;
                } else {
-                       if (yych <= 'r') goto yy1525;
+                       if (yych <= 'r') goto yy1527;
                        if (yych <= 'z') goto yy169;
                        goto yy3;
                }
        }
-yy1525:
+yy1527:
+       YYDEBUG(1527, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
                if (yych == ')') goto yy164;
                goto yy3;
        } else {
-               if (yych <= 'D') goto yy1526;
+               if (yych <= 'D') goto yy1528;
                if (yych != 'd') goto yy3;
        }
-yy1526:
+yy1528:
+       YYDEBUG(1528, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'A') goto yy1527;
+       if (yych == 'A') goto yy1529;
        if (yych != 'a') goto yy56;
-yy1527:
+yy1529:
+       YYDEBUG(1529, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'Y') goto yy1528;
+       if (yych == 'Y') goto yy1530;
        if (yych != 'y') goto yy56;
-yy1528:
+yy1530:
+       YYDEBUG(1530, *YYCURSOR);
        ++YYCURSOR;
-yy1529:
-#line 970 "ext/date/lib/parse_date.re"
+yy1531:
+       YYDEBUG(1531, *YYCURSOR);
+#line 986 "ext/date/lib/parse_date.re"
        {
                DEBUG_OUTPUT("yesterday");
                TIMELIB_INIT;
@@ -23064,8 +24717,9 @@ yy1529:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 23068 "ext/date/lib/parse_date.c"
-yy1530:
+#line 24721 "<stdout>"
+yy1532:
+       YYDEBUG(1532, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'R') {
@@ -23080,7 +24734,7 @@ yy1530:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'S') goto yy1522;
+                       if (yych <= 'S') goto yy1524;
                        if (yych <= 'Z') goto yy166;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -23089,13 +24743,14 @@ yy1530:
                                if (yych <= '`') goto yy3;
                                goto yy171;
                        } else {
-                               if (yych <= 's') goto yy1531;
+                               if (yych <= 's') goto yy1533;
                                if (yych <= 'z') goto yy171;
                                goto yy3;
                        }
                }
        }
-yy1531:
+yy1533:
+       YYDEBUG(1533, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'S') {
@@ -23110,7 +24765,7 @@ yy1531:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'T') goto yy1523;
+                       if (yych <= 'T') goto yy1525;
                        if (yych <= 'Z') goto yy167;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -23119,13 +24774,14 @@ yy1531:
                                if (yych <= '`') goto yy3;
                                goto yy175;
                        } else {
-                               if (yych <= 't') goto yy1532;
+                               if (yych <= 't') goto yy1534;
                                if (yych <= 'z') goto yy175;
                                goto yy3;
                        }
                }
        }
-yy1532:
+yy1534:
+       YYDEBUG(1534, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'D') {
@@ -23140,7 +24796,7 @@ yy1532:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'E') goto yy1524;
+                       if (yych <= 'E') goto yy1526;
                        if (yych <= 'Z') goto yy168;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -23149,13 +24805,14 @@ yy1532:
                                if (yych <= '`') goto yy3;
                                goto yy176;
                        } else {
-                               if (yych <= 'e') goto yy1533;
+                               if (yych <= 'e') goto yy1535;
                                if (yych <= 'z') goto yy176;
                                goto yy3;
                        }
                }
        }
-yy1533:
+yy1535:
+       YYDEBUG(1535, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'Q') {
@@ -23170,7 +24827,7 @@ yy1533:
                }
        } else {
                if (yych <= '_') {
-                       if (yych <= 'R') goto yy1525;
+                       if (yych <= 'R') goto yy1527;
                        if (yych <= 'Z') goto yy169;
                        if (yych <= '^') goto yy3;
                        goto yy172;
@@ -23179,13 +24836,14 @@ yy1533:
                                if (yych <= '`') goto yy3;
                                goto yy177;
                        } else {
-                               if (yych <= 'r') goto yy1534;
+                               if (yych <= 'r') goto yy1536;
                                if (yych <= 'z') goto yy177;
                                goto yy3;
                        }
                }
        }
-yy1534:
+yy1536:
+       YYDEBUG(1536, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'C') {
@@ -23199,22 +24857,25 @@ yy1534:
                }
        } else {
                if (yych <= '`') {
-                       if (yych <= 'D') goto yy1526;
+                       if (yych <= 'D') goto yy1528;
                        if (yych == '_') goto yy172;
                        goto yy3;
                } else {
-                       if (yych == 'd') goto yy1535;
+                       if (yych == 'd') goto yy1537;
                        if (yych <= 'z') goto yy178;
                        goto yy3;
                }
        }
-yy1535:
+yy1537:
+       YYDEBUG(1537, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'A') goto yy1527;
+       if (yych == 'A') goto yy1529;
        if (yych != 'a') goto yy179;
+       YYDEBUG(1538, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'Y') goto yy1528;
+       if (yych == 'Y') goto yy1530;
        if (yych != 'y') goto yy179;
+       YYDEBUG(1539, *YYCURSOR);
        yyaccept = 33;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 16) {
@@ -23222,14 +24883,14 @@ yy1535:
        }
        if (yych <= '.') {
                if (yych == '-') goto yy172;
-               goto yy1529;
+               goto yy1531;
        } else {
                if (yych <= '/') goto yy172;
                if (yych == '_') goto yy172;
-               goto yy1529;
+               goto yy1531;
        }
 }
-#line 1772 "ext/date/lib/parse_date.re"
+#line 1788 "ext/date/lib/parse_date.re"
 
 }
 
@@ -23258,13 +24919,13 @@ timelib_time* timelib_strtotime(char *s, size_t len, struct timelib_error_contai
        }
        if (e - s < 0) {
                in.time = timelib_time_ctor();
-               add_error(&in, "Empty string");
+               add_error(&in, TIMELIB_ERR_EMPTY_STRING, "Empty string");
                if (errors) {
                        *errors = in.errors;
                } else {
                        timelib_error_container_dtor(in.errors);
                }
-               in.time->y = in.time->d = in.time->m = in.time->h = in.time->i = in.time->s = in.time->f = in.time->dst = in.time->z = TIMELIB_UNSET;
+               in.time->y = in.time->d = in.time->m = in.time->h = in.time->i = in.time->s = in.time->us = in.time->dst = in.time->z = TIMELIB_UNSET;
                in.time->is_localtime = in.time->zone_type = 0;
                return in.time;
        }
@@ -23282,7 +24943,7 @@ timelib_time* timelib_strtotime(char *s, size_t len, struct timelib_error_contai
        in.time->h = TIMELIB_UNSET;
        in.time->i = TIMELIB_UNSET;
        in.time->s = TIMELIB_UNSET;
-       in.time->f = TIMELIB_UNSET;
+       in.time->us = TIMELIB_UNSET;
        in.time->z = TIMELIB_UNSET;
        in.time->dst = TIMELIB_UNSET;
        in.tzdb = tzdb;
@@ -23299,11 +24960,11 @@ timelib_time* timelib_strtotime(char *s, size_t len, struct timelib_error_contai
 
        /* do funky checking whether the parsed time was valid time */
        if (in.time->have_time && !timelib_valid_time( in.time->h, in.time->i, in.time->s)) {
-               add_warning(&in, "The parsed time was invalid");
+               add_warning(&in, TIMELIB_WARN_INVALID_TIME, "The parsed time was invalid");
        }
        /* do funky checking whether the parsed date was valid date */
        if (in.time->have_date && !timelib_valid_date( in.time->y, in.time->m, in.time->d)) {
-               add_warning(&in, "The parsed date was invalid");
+               add_warning(&in, TIMELIB_WARN_INVALID_DATE, "The parsed date was invalid");
        }
 
        timelib_free(in.str);
@@ -23318,12 +24979,12 @@ timelib_time* timelib_strtotime(char *s, size_t len, struct timelib_error_contai
 #define TIMELIB_CHECK_NUMBER                                           \
                if (strchr("0123456789", *ptr) == NULL)                        \
                {                                                              \
-                       add_pbf_error(s, "Unexpected data found.", string, begin); \
+                       add_pbf_error(s, TIMELIB_ERR_UNEXPECTED_DATA, "Unexpected data found.", string, begin); \
                }
 #define TIMELIB_CHECK_SIGNED_NUMBER                                    \
                if (strchr("-0123456789", *ptr) == NULL)                       \
                {                                                              \
-                       add_pbf_error(s, "Unexpected data found.", string, begin); \
+                       add_pbf_error(s, TIMELIB_ERR_UNEXPECTED_DATA, "Unexpected data found.", string, begin); \
                }
 
 static void timelib_time_reset_fields(timelib_time *time)
@@ -23334,7 +24995,7 @@ static void timelib_time_reset_fields(timelib_time *time)
        time->m = 1;
        time->d = 1;
        time->h = time->i = time->s = 0;
-       time->f = 0.0;
+       time->us = 0;
        time->tz_info = NULL;
 }
 
@@ -23348,7 +25009,7 @@ static void timelib_time_reset_unset_fields(timelib_time *time)
        if (time->h == TIMELIB_UNSET ) time->h = 0;
        if (time->i == TIMELIB_UNSET ) time->i = 0;
        if (time->s == TIMELIB_UNSET ) time->s = 0;
-       if (time->f == TIMELIB_UNSET ) time->f = 0.0;
+       if (time->us == TIMELIB_UNSET ) time->us = 0;
 }
 
 timelib_time *timelib_parse_from_format(char *format, char *string, size_t len, timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper)
@@ -23375,7 +25036,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
        in.time->h = TIMELIB_UNSET;
        in.time->i = TIMELIB_UNSET;
        in.time->s = TIMELIB_UNSET;
-       in.time->f = TIMELIB_UNSET;
+       in.time->us = TIMELIB_UNSET;
        in.time->z = TIMELIB_UNSET;
        in.time->dst = TIMELIB_UNSET;
        in.tzdb = tzdb;
@@ -23393,7 +25054,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
 
                                        tmprel = timelib_lookup_relunit((char **) &ptr);
                                        if (!tmprel) {
-                                               add_pbf_error(s, "A textual day could not be found", string, begin);
+                                               add_pbf_error(s, TIMELIB_ERR_NO_TEXTUAL_DAY, "A textual day could not be found", string, begin);
                                                break;
                                        } else {
                                                in.time->have_relative = 1;
@@ -23407,7 +25068,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                        case 'j': /* two digit day, without leading zero */
                                TIMELIB_CHECK_NUMBER;
                                if ((s->time->d = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A two digit day could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_DAY, "A two digit day could not be found", string, begin);
                                }
                                break;
                        case 'S': /* day suffix, ignored, nor checked */
@@ -23416,7 +25077,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                        case 'z': /* day of year - resets month (0 based) - also initializes everything else to !TIMELIB_UNSET */
                                TIMELIB_CHECK_NUMBER;
                                if ((tmp = timelib_get_nr((char **) &ptr, 3)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A three digit day-of-year could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_THREE_DIGIT_DAY_OF_YEAR, "A three digit day-of-year could not be found", string, begin);
                                } else {
                                        s->time->m = 1;
                                        s->time->d = tmp + 1;
@@ -23428,14 +25089,14 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                        case 'n': /* two digit month, without leading zero */
                                TIMELIB_CHECK_NUMBER;
                                if ((s->time->m = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A two digit month could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_MONTH, "A two digit month could not be found", string, begin);
                                }
                                break;
                        case 'M': /* three letter month */
                        case 'F': /* full month */
                                tmp = timelib_lookup_month((char **) &ptr);
                                if (!tmp) {
-                                       add_pbf_error(s, "A textual month could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_TEXTUAL_MONTH, "A textual month could not be found", string, begin);
                                } else {
                                        s->time->m = tmp;
                                }
@@ -23445,7 +25106,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                        int length = 0;
                                        TIMELIB_CHECK_NUMBER;
                                        if ((s->time->y = timelib_get_nr_ex((char **) &ptr, 2, &length)) == TIMELIB_UNSET) {
-                                               add_pbf_error(s, "A two digit year could not be found", string, begin);
+                                               add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_YEAR, "A two digit year could not be found", string, begin);
                                        }
                                        TIMELIB_PROCESS_YEAR(s->time->y, length);
                                }
@@ -23453,32 +25114,32 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                        case 'Y': /* four digit year */
                                TIMELIB_CHECK_NUMBER;
                                if ((s->time->y = timelib_get_nr((char **) &ptr, 4)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A four digit year could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_FOUR_DIGIT_YEAR, "A four digit year could not be found", string, begin);
                                }
                                break;
                        case 'g': /* two digit hour, with leading zero */
                        case 'h': /* two digit hour, without leading zero */
                                TIMELIB_CHECK_NUMBER;
                                if ((s->time->h = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A two digit hour could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_HOUR, "A two digit hour could not be found", string, begin);
                                }
                                if (s->time->h > 12) {
-                                       add_pbf_error(s, "Hour can not be higher than 12", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_HOUR_LARGER_THAN_12, "Hour can not be higher than 12", string, begin);
                                }
                                break;
                        case 'G': /* two digit hour, with leading zero */
                        case 'H': /* two digit hour, without leading zero */
                                TIMELIB_CHECK_NUMBER;
                                if ((s->time->h = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A two digit hour could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_HOUR, "A two digit hour could not be found", string, begin);
                                }
                                break;
                        case 'a': /* am/pm/a.m./p.m. */
                        case 'A': /* AM/PM/A.M./P.M. */
                                if (s->time->h == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "Meridian can only come after an hour has been found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_MERIDIAN_BEFORE_HOUR, "Meridian can only come after an hour has been found", string, begin);
                                } else if ((tmp = timelib_meridian_with_check((char **) &ptr, s->time->h)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A meridian could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_MERIDIAN, "A meridian could not be found", string, begin);
                                } else {
                                        s->time->h += tmp;
                                }
@@ -23491,7 +25152,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                        TIMELIB_CHECK_NUMBER;
                                        min = timelib_get_nr_ex((char **) &ptr, 2, &length);
                                        if (min == TIMELIB_UNSET || length != 2) {
-                                               add_pbf_error(s, "A two digit minute could not be found", string, begin);
+                                               add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_MINUTE, "A two digit minute could not be found", string, begin);
                                        } else {
                                                s->time->i = min;
                                        }
@@ -23505,13 +25166,13 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                        TIMELIB_CHECK_NUMBER;
                                        sec = timelib_get_nr_ex((char **) &ptr, 2, &length);
                                        if (sec == TIMELIB_UNSET || length != 2) {
-                                               add_pbf_error(s, "A two digit second could not be found", string, begin);
+                                               add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_SECOND, "A two digit second could not be found", string, begin);
                                        } else {
                                                s->time->s = sec;
                                        }
                                }
                                break;
-                       case 'u': /* up to six digit millisecond */
+                       case 'u': /* up to six digit microsecond */
                                {
                                        double f;
                                        char *tptr;
@@ -23519,9 +25180,9 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                        TIMELIB_CHECK_NUMBER;
                                        tptr = ptr;
                                        if ((f = timelib_get_nr((char **) &ptr, 6)) == TIMELIB_UNSET || (ptr - tptr < 1)) {
-                                               add_pbf_error(s, "A six digit millisecond could not be found", string, begin);
+                                               add_pbf_error(s, TIMELIB_ERR_NO_SIX_DIGIT_MICROSECOND, "A six digit microsecond could not be found", string, begin);
                                        } else {
-                                               s->time->f = (f / pow(10, (ptr - tptr)));
+                                               s->time->us = (f * pow(10, 6 - (ptr - tptr)));
                                        }
                                }
                                break;
@@ -23551,7 +25212,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                        int tz_not_found;
                                        s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                                        if (tz_not_found) {
-                                               add_pbf_error(s, "The timezone could not be found in the database", string, begin);
+                                               add_pbf_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database", string, begin);
                                        }
                                }
                                break;
@@ -23560,7 +25221,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                if (*ptr == ';' || *ptr == ':' || *ptr == '/' || *ptr == '.' || *ptr == ',' || *ptr == '-' || *ptr == '(' || *ptr == ')') {
                                        ++ptr;
                                } else {
-                                       add_pbf_error(s, "The separation symbol ([;:/.,-]) could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_SEP_SYMBOL, "The separation symbol ([;:/.,-]) could not be found", string, begin);
                                }
                                break;
 
@@ -23575,7 +25236,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                if (*ptr == *fptr) {
                                        ++ptr;
                                } else {
-                                       add_pbf_error(s, "The separation symbol could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_SEP_SYMBOL, "The separation symbol could not be found", string, begin);
                                }
                                break;
 
@@ -23593,14 +25254,14 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
 
                        case '\\': /* escaped char */
                                if(!fptr[1]) {
-                                       add_pbf_error(s, "Escaped character expected", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_EXPECTED_ESCAPE_CHAR, "Escaped character expected", string, begin);
                                        break;
                                }
                                fptr++;
                                if (*ptr == *fptr) {
                                        ++ptr;
                                } else {
-                                       add_pbf_error(s, "The escaped character could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_ESCAPED_CHAR, "The escaped character could not be found", string, begin);
                                }
                                break;
 
@@ -23614,7 +25275,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
 
                        default:
                                if (*fptr != *ptr) {
-                                       add_pbf_error(s, "The format separator does not match", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_WRONG_FORMAT_SEP, "The format separator does not match", string, begin);
                                }
                                ptr++;
                }
@@ -23622,9 +25283,9 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
        }
        if (*ptr) {
                if (allow_extra) {
-                       add_pbf_warning(s, "Trailing data", string, ptr);
+                       add_pbf_warning(s, TIMELIB_WARN_TRAILING_DATA, "Trailing data", string, ptr);
                } else {
-                       add_pbf_error(s, "Trailing data", string, ptr);
+                       add_pbf_error(s, TIMELIB_ERR_TRAILING_DATA, "Trailing data", string, ptr);
                }
        }
        /* ignore trailing +'s */
@@ -23645,7 +25306,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                        break;
 
                                default:
-                                       add_pbf_error(s, "Data missing", string, ptr);
+                                       add_pbf_error(s, TIMELIB_ERR_DATA_MISSING, "Data missing", string, ptr);
                                        done = 1;
                        }
                }
@@ -23668,13 +25329,13 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
        if (s->time->h != TIMELIB_UNSET && s->time->i != TIMELIB_UNSET &&
                s->time->s != TIMELIB_UNSET &&
                !timelib_valid_time( s->time->h, s->time->i, s->time->s)) {
-               add_pbf_warning(s, "The parsed time was invalid", string, ptr);
+               add_pbf_warning(s, TIMELIB_WARN_INVALID_TIME, "The parsed time was invalid", string, ptr);
        }
        /* do funky checking whether the parsed date was valid date */
        if (s->time->y != TIMELIB_UNSET && s->time->m != TIMELIB_UNSET &&
                s->time->d != TIMELIB_UNSET &&
                !timelib_valid_date( s->time->y, s->time->m, s->time->d)) {
-               add_pbf_warning(s, "The parsed date was invalid", string, ptr);
+               add_pbf_warning(s, TIMELIB_WARN_INVALID_DATE, "The parsed date was invalid", string, ptr);
        }
 
        if (errors) {
@@ -23691,15 +25352,15 @@ void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options)
                parsed->h = 0;
                parsed->i = 0;
                parsed->s = 0;
-               parsed->f = 0;
+               parsed->us = 0;
        }
        if (
                parsed->y != TIMELIB_UNSET || parsed->m != TIMELIB_UNSET || parsed->d != TIMELIB_UNSET ||
                parsed->h != TIMELIB_UNSET || parsed->i != TIMELIB_UNSET || parsed->s != TIMELIB_UNSET
        ) {
-               if (parsed->f == TIMELIB_UNSET) parsed->f = 0;
+               if (parsed->us == TIMELIB_UNSET) parsed->us = 0;
        } else {
-               if (parsed->f == TIMELIB_UNSET) parsed->f = now->f != TIMELIB_UNSET ? now->f : 0;
+               if (parsed->us == TIMELIB_UNSET) parsed->us = now->us != TIMELIB_UNSET ? now->us : 0;
        }
        if (parsed->y == TIMELIB_UNSET) parsed->y = now->y != TIMELIB_UNSET ? now->y : 0;
        if (parsed->m == TIMELIB_UNSET) parsed->m = now->m != TIMELIB_UNSET ? now->m : 0;
diff --git a/ext/date/lib/parse_date.c.orig b/ext/date/lib/parse_date.c.orig
new file mode 100644 (file)
index 0000000..89b6a06
--- /dev/null
@@ -0,0 +1,23670 @@
+/* Generated by re2c 0.15.3 on Tue Jul  4 21:22:52 2017 */
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2015 Derick Rethans
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/* $Id$ */
+
+#include "timelib.h"
+
+#include <stdio.h>
+#include <ctype.h>
+#include <math.h>
+#include <assert.h>
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+
+#if defined(_MSC_VER)
+# define strtoll(s, f, b) _atoi64(s)
+#elif !defined(HAVE_STRTOLL)
+# if defined(HAVE_ATOLL)
+#  define strtoll(s, f, b) atoll(s)
+# else
+#  define strtoll(s, f, b) strtol(s, f, b)
+# endif
+#endif
+
+#define TIMELIB_UNSET   -99999
+
+#define TIMELIB_SECOND   1
+#define TIMELIB_MINUTE   2
+#define TIMELIB_HOUR     3
+#define TIMELIB_DAY      4
+#define TIMELIB_MONTH    5
+#define TIMELIB_YEAR     6
+#define TIMELIB_WEEKDAY  7
+#define TIMELIB_SPECIAL  8
+#define TIMELIB_MICROSEC 9
+
+#define EOI      257
+#define TIME     258
+#define DATE     259
+
+#define TIMELIB_XMLRPC_SOAP    260
+#define TIMELIB_TIME12         261
+#define TIMELIB_TIME24         262
+#define TIMELIB_GNU_NOCOLON    263
+#define TIMELIB_GNU_NOCOLON_TZ 264
+#define TIMELIB_ISO_NOCOLON    265
+
+#define TIMELIB_AMERICAN       266
+#define TIMELIB_ISO_DATE       267
+#define TIMELIB_DATE_FULL      268
+#define TIMELIB_DATE_TEXT      269
+#define TIMELIB_DATE_NOCOLON   270
+#define TIMELIB_PG_YEARDAY     271
+#define TIMELIB_PG_TEXT        272
+#define TIMELIB_PG_REVERSE     273
+#define TIMELIB_CLF            274
+#define TIMELIB_DATE_NO_DAY    275
+#define TIMELIB_SHORTDATE_WITH_TIME 276
+#define TIMELIB_DATE_FULL_POINTED 277
+#define TIMELIB_TIME24_WITH_ZONE 278
+#define TIMELIB_ISO_WEEK       279
+#define TIMELIB_LF_DAY_OF_MONTH 280
+#define TIMELIB_WEEK_DAY_OF_MONTH 281
+
+#define TIMELIB_TIMEZONE       300
+#define TIMELIB_AGO            301
+
+#define TIMELIB_RELATIVE       310
+
+#define TIMELIB_ERROR          999
+
+/* Some compilers like AIX, defines uchar in sys/types.h */
+#undef uchar
+typedef unsigned char uchar;
+
+#define   BSIZE           8192
+
+#define   YYCTYPE      uchar
+#define   YYCURSOR     cursor
+#define   YYLIMIT      s->lim
+#define   YYMARKER     s->ptr
+#define   YYFILL(n)    return EOI;
+
+#define   RET(i)       {s->cur = cursor; return i;}
+
+#define timelib_string_free timelib_free
+
+#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; } }
+#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; }
+#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
+#define TIMELIB_UNHAVE_DATE() { s->time->have_date = 0; s->time->d = 0; s->time->m = 0; s->time->y = 0; }
+#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
+#define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_weekday_relative = 1; }
+#define TIMELIB_HAVE_SPECIAL_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_special_relative = 1; }
+#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, "Double timezone specification") : add_warning(s, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
+
+#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
+#define TIMELIB_DEINIT timelib_string_free(str)
+#define TIMELIB_ADJUST_RELATIVE_WEEKDAY() if (in->time.have_weekday_relative && (in.rel.d > 0)) { in.rel.d -= 7; }
+
+#define TIMELIB_PROCESS_YEAR(x, l) { \
+       if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
+       /*      (x) = 0; */          \
+       } else if ((x) < 100) {  \
+               if ((x) < 70) {      \
+                       (x) += 2000;     \
+               } else {             \
+                       (x) += 1900;     \
+               }                    \
+       }                        \
+}
+
+#ifdef DEBUG_PARSER
+#define DEBUG_OUTPUT(s) printf("%s\n", s);
+#define YYDEBUG(s,c) { if (s != -1) { printf("state: %d ", s); printf("[%c]\n", c); } }
+#else
+#define DEBUG_OUTPUT(s)
+#define YYDEBUG(s,c)
+#endif
+
+#include "timelib_structs.h"
+
+typedef struct timelib_elems {
+       unsigned int   c; /* Number of elements */
+       char         **v; /* Values */
+} timelib_elems;
+
+typedef struct Scanner {
+       int           fd;
+       uchar        *lim, *str, *ptr, *cur, *tok, *pos;
+       unsigned int  line, len;
+       struct timelib_error_container *errors;
+
+       struct timelib_time *time;
+       const timelib_tzdb  *tzdb;
+} Scanner;
+
+typedef struct _timelib_lookup_table {
+    const char *name;
+    int         type;
+    int         value;
+} timelib_lookup_table;
+
+typedef struct _timelib_relunit {
+       const char *name;
+       int         unit;
+       int         multiplier;
+} timelib_relunit;
+
+/* The timezone table. */
+const static timelib_tz_lookup_table timelib_timezone_lookup[] = {
+#include "timezonemap.h"
+       { NULL, 0, 0, NULL },
+};
+
+const static timelib_tz_lookup_table timelib_timezone_fallbackmap[] = {
+#include "fallbackmap.h"
+       { NULL, 0, 0, NULL },
+};
+
+const static timelib_tz_lookup_table timelib_timezone_utc[] = {
+       { "utc", 0, 0, "UTC" },
+};
+
+static timelib_relunit const timelib_relunit_lookup[] = {
+       { "ms",           TIMELIB_MICROSEC, 1000 },
+       { "msec",         TIMELIB_MICROSEC, 1000 },
+       { "msecs",        TIMELIB_MICROSEC, 1000 },
+       { "millisecond",  TIMELIB_MICROSEC, 1000 },
+       { "milliseconds", TIMELIB_MICROSEC, 1000 },
+       { "µs",           TIMELIB_MICROSEC,    1 },
+       { "usec",         TIMELIB_MICROSEC,    1 },
+       { "usecs",        TIMELIB_MICROSEC,    1 },
+       { "µsec",         TIMELIB_MICROSEC,    1 },
+       { "µsecs",        TIMELIB_MICROSEC,    1 },
+       { "microsecond",  TIMELIB_MICROSEC,    1 },
+       { "microseconds", TIMELIB_MICROSEC,    1 },
+       { "sec",         TIMELIB_SECOND,  1 },
+       { "secs",        TIMELIB_SECOND,  1 },
+       { "second",      TIMELIB_SECOND,  1 },
+       { "seconds",     TIMELIB_SECOND,  1 },
+       { "min",         TIMELIB_MINUTE,  1 },
+       { "mins",        TIMELIB_MINUTE,  1 },
+       { "minute",      TIMELIB_MINUTE,  1 },
+       { "minutes",     TIMELIB_MINUTE,  1 },
+       { "hour",        TIMELIB_HOUR,    1 },
+       { "hours",       TIMELIB_HOUR,    1 },
+       { "day",         TIMELIB_DAY,     1 },
+       { "days",        TIMELIB_DAY,     1 },
+       { "week",        TIMELIB_DAY,     7 },
+       { "weeks",       TIMELIB_DAY,     7 },
+       { "fortnight",   TIMELIB_DAY,    14 },
+       { "fortnights",  TIMELIB_DAY,    14 },
+       { "forthnight",  TIMELIB_DAY,    14 },
+       { "forthnights", TIMELIB_DAY,    14 },
+       { "month",       TIMELIB_MONTH,   1 },
+       { "months",      TIMELIB_MONTH,   1 },
+       { "year",        TIMELIB_YEAR,    1 },
+       { "years",       TIMELIB_YEAR,    1 },
+
+       { "monday",      TIMELIB_WEEKDAY, 1 },
+       { "mon",         TIMELIB_WEEKDAY, 1 },
+       { "tuesday",     TIMELIB_WEEKDAY, 2 },
+       { "tue",         TIMELIB_WEEKDAY, 2 },
+       { "wednesday",   TIMELIB_WEEKDAY, 3 },
+       { "wed",         TIMELIB_WEEKDAY, 3 },
+       { "thursday",    TIMELIB_WEEKDAY, 4 },
+       { "thu",         TIMELIB_WEEKDAY, 4 },
+       { "friday",      TIMELIB_WEEKDAY, 5 },
+       { "fri",         TIMELIB_WEEKDAY, 5 },
+       { "saturday",    TIMELIB_WEEKDAY, 6 },
+       { "sat",         TIMELIB_WEEKDAY, 6 },
+       { "sunday",      TIMELIB_WEEKDAY, 0 },
+       { "sun",         TIMELIB_WEEKDAY, 0 },
+
+       { "weekday",     TIMELIB_SPECIAL, TIMELIB_SPECIAL_WEEKDAY },
+       { "weekdays",    TIMELIB_SPECIAL, TIMELIB_SPECIAL_WEEKDAY },
+       { NULL,          0,          0 }
+};
+
+/* The relative text table. */
+static timelib_lookup_table const timelib_reltext_lookup[] = {
+       { "first",    0,  1 },
+       { "next",     0,  1 },
+       { "second",   0,  2 },
+       { "third",    0,  3 },
+       { "fourth",   0,  4 },
+       { "fifth",    0,  5 },
+       { "sixth",    0,  6 },
+       { "seventh",  0,  7 },
+       { "eight",    0,  8 },
+       { "eighth",   0,  8 },
+       { "ninth",    0,  9 },
+       { "tenth",    0, 10 },
+       { "eleventh", 0, 11 },
+       { "twelfth",  0, 12 },
+       { "last",     0, -1 },
+       { "previous", 0, -1 },
+       { "this",     1,  0 },
+       { NULL,       1,  0 }
+};
+
+/* The month table. */
+static timelib_lookup_table const timelib_month_lookup[] = {
+       { "jan",  0,  1 },
+       { "feb",  0,  2 },
+       { "mar",  0,  3 },
+       { "apr",  0,  4 },
+       { "may",  0,  5 },
+       { "jun",  0,  6 },
+       { "jul",  0,  7 },
+       { "aug",  0,  8 },
+       { "sep",  0,  9 },
+       { "sept", 0,  9 },
+       { "oct",  0, 10 },
+       { "nov",  0, 11 },
+       { "dec",  0, 12 },
+       { "i",    0,  1 },
+       { "ii",   0,  2 },
+       { "iii",  0,  3 },
+       { "iv",   0,  4 },
+       { "v",    0,  5 },
+       { "vi",   0,  6 },
+       { "vii",  0,  7 },
+       { "viii", 0,  8 },
+       { "ix",   0,  9 },
+       { "x",    0, 10 },
+       { "xi",   0, 11 },
+       { "xii",  0, 12 },
+
+       { "january",   0,  1 },
+       { "february",  0,  2 },
+       { "march",     0,  3 },
+       { "april",     0,  4 },
+       { "may",       0,  5 },
+       { "june",      0,  6 },
+       { "july",      0,  7 },
+       { "august",    0,  8 },
+       { "september", 0,  9 },
+       { "october",   0, 10 },
+       { "november",  0, 11 },
+       { "december",  0, 12 },
+       {  NULL,       0,  0 }
+};
+
+#if 0
+static char* timelib_ltrim(char *s)
+{
+       char *ptr = s;
+       while (ptr[0] == ' ' || ptr[0] == '\t') {
+               ptr++;
+       }
+       return ptr;
+}
+#endif
+
+#if 0
+uchar *fill(Scanner *s, uchar *cursor){
+       if(!s->eof){
+               unsigned int cnt = s->tok - s->bot;
+               if(cnt){
+                       memcpy(s->bot, s->tok, s->lim - s->tok);
+                       s->tok = s->bot;
+                       s->ptr -= cnt;
+                       cursor -= cnt;
+                       s->pos -= cnt;
+                       s->lim -= cnt;
+               }
+               if((s->top - s->lim) < BSIZE){
+                       uchar *buf = (uchar*) timelib_malloc(((s->lim - s->bot) + BSIZE)*sizeof(uchar));
+                       memcpy(buf, s->tok, s->lim - s->tok);
+                       s->tok = buf;
+                       s->ptr = &buf[s->ptr - s->bot];
+                       cursor = &buf[cursor - s->bot];
+                       s->pos = &buf[s->pos - s->bot];
+                       s->lim = &buf[s->lim - s->bot];
+                       s->top = &s->lim[BSIZE];
+                       timelib_free(s->bot);
+                       s->bot = buf;
+               }
+               if((cnt = read(s->fd, (char*) s->lim, BSIZE)) != BSIZE){
+                       s->eof = &s->lim[cnt]; *(s->eof)++ = '\n';
+               }
+               s->lim += cnt;
+       }
+       return cursor;
+}
+#endif
+
+static void add_warning(Scanner *s, char *error)
+{
+       s->errors->warning_count++;
+       s->errors->warning_messages = timelib_realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
+       s->errors->warning_messages[s->errors->warning_count - 1].position = s->tok ? s->tok - s->str : 0;
+       s->errors->warning_messages[s->errors->warning_count - 1].character = s->tok ? *s->tok : 0;
+       s->errors->warning_messages[s->errors->warning_count - 1].message = timelib_strdup(error);
+}
+
+static void add_error(Scanner *s, char *error)
+{
+       s->errors->error_count++;
+       s->errors->error_messages = timelib_realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
+       s->errors->error_messages[s->errors->error_count - 1].position = s->tok ? s->tok - s->str : 0;
+       s->errors->error_messages[s->errors->error_count - 1].character = s->tok ? *s->tok : 0;
+       s->errors->error_messages[s->errors->error_count - 1].message = timelib_strdup(error);
+}
+
+static void add_pbf_warning(Scanner *s, char *error, char *sptr, char *cptr)
+{
+       s->errors->warning_count++;
+       s->errors->warning_messages = timelib_realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
+       s->errors->warning_messages[s->errors->warning_count - 1].position = cptr - sptr;
+       s->errors->warning_messages[s->errors->warning_count - 1].character = *cptr;
+       s->errors->warning_messages[s->errors->warning_count - 1].message = timelib_strdup(error);
+}
+
+static void add_pbf_error(Scanner *s, char *error, char *sptr, char *cptr)
+{
+       s->errors->error_count++;
+       s->errors->error_messages = timelib_realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
+       s->errors->error_messages[s->errors->error_count - 1].position = cptr - sptr;
+       s->errors->error_messages[s->errors->error_count - 1].character = *cptr;
+       s->errors->error_messages[s->errors->error_count - 1].message = timelib_strdup(error);
+}
+
+static timelib_sll timelib_meridian(char **ptr, timelib_sll h)
+{
+       timelib_sll retval = 0;
+
+       while (!strchr("AaPp", **ptr)) {
+               ++*ptr;
+       }
+       if (**ptr == 'a' || **ptr == 'A') {
+               if (h == 12) {
+                       retval = -12;
+               }
+       } else if (h != 12) {
+               retval = 12;
+       }
+       ++*ptr;
+       if (**ptr == '.') {
+               ++*ptr;
+       }
+       if (**ptr == 'M' || **ptr == 'm') {
+               ++*ptr;
+       }
+       if (**ptr == '.') {
+               ++*ptr;
+       }
+       return retval;
+}
+
+static timelib_sll timelib_meridian_with_check(char **ptr, timelib_sll h)
+{
+       timelib_sll retval = 0;
+
+       while (**ptr && !strchr("AaPp", **ptr)) {
+               ++*ptr;
+       }
+       if(!**ptr) {
+               return TIMELIB_UNSET;
+       }
+       if (**ptr == 'a' || **ptr == 'A') {
+               if (h == 12) {
+                       retval = -12;
+               }
+       } else if (h != 12) {
+               retval = 12;
+       }
+       ++*ptr;
+       if (**ptr == '.') {
+               ++*ptr;
+               if (**ptr != 'm' && **ptr != 'M') {
+                       return TIMELIB_UNSET;
+               }
+               ++*ptr;
+               if (**ptr != '.' ) {
+                       return TIMELIB_UNSET;
+               }
+               ++*ptr;
+       } else if (**ptr == 'm' || **ptr == 'M') {
+               ++*ptr;
+       } else {
+               return TIMELIB_UNSET;
+       }
+       return retval;
+}
+
+static char *timelib_string(Scanner *s)
+{
+       char *tmp = timelib_calloc(1, s->cur - s->tok + 1);
+       memcpy(tmp, s->tok, s->cur - s->tok);
+
+       return tmp;
+}
+
+static timelib_sll timelib_get_nr_ex(char **ptr, int max_length, int *scanned_length)
+{
+       char *begin, *end, *str;
+       timelib_sll tmp_nr = TIMELIB_UNSET;
+       int len = 0;
+
+       while ((**ptr < '0') || (**ptr > '9')) {
+               if (**ptr == '\0') {
+                       return TIMELIB_UNSET;
+               }
+               ++*ptr;
+       }
+       begin = *ptr;
+       while ((**ptr >= '0') && (**ptr <= '9') && len < max_length) {
+               ++*ptr;
+               ++len;
+       }
+       end = *ptr;
+       if (scanned_length) {
+               *scanned_length = end - begin;
+       }
+       str = timelib_calloc(1, end - begin + 1);
+       memcpy(str, begin, end - begin);
+       tmp_nr = strtoll(str, NULL, 10);
+       timelib_free(str);
+       return tmp_nr;
+}
+
+static timelib_sll timelib_get_nr(char **ptr, int max_length)
+{
+       return timelib_get_nr_ex(ptr, max_length, NULL);
+}
+
+static void timelib_skip_day_suffix(char **ptr)
+{
+       if (isspace(**ptr)) {
+               return;
+       }
+       if (!strncasecmp(*ptr, "nd", 2) || !strncasecmp(*ptr, "rd", 2) ||!strncasecmp(*ptr, "st", 2) || !strncasecmp(*ptr, "th", 2)) {
+               *ptr += 2;
+       }
+}
+
+static double timelib_get_frac_nr(char **ptr, int max_length)
+{
+       char *begin, *end, *str;
+       double tmp_nr = TIMELIB_UNSET;
+       int len = 0;
+
+       while ((**ptr != '.') && (**ptr != ':') && ((**ptr < '0') || (**ptr > '9'))) {
+               if (**ptr == '\0') {
+                       return TIMELIB_UNSET;
+               }
+               ++*ptr;
+       }
+       begin = *ptr;
+       while (((**ptr == '.') || (**ptr == ':') || ((**ptr >= '0') && (**ptr <= '9'))) && len < max_length) {
+               ++*ptr;
+               ++len;
+       }
+       end = *ptr;
+       str = timelib_calloc(1, end - begin + 1);
+       memcpy(str, begin, end - begin);
+       if (str[0] == ':') {
+               str[0] = '.';
+       }
+       tmp_nr = strtod(str, NULL);
+       timelib_free(str);
+       return tmp_nr;
+}
+
+static timelib_ull timelib_get_unsigned_nr(char **ptr, int max_length)
+{
+       timelib_ull dir = 1;
+
+       while (((**ptr < '0') || (**ptr > '9')) && (**ptr != '+') && (**ptr != '-')) {
+               if (**ptr == '\0') {
+                       return TIMELIB_UNSET;
+               }
+               ++*ptr;
+       }
+
+       while (**ptr == '+' || **ptr == '-')
+       {
+               if (**ptr == '-') {
+                       dir *= -1;
+               }
+               ++*ptr;
+       }
+       return dir * timelib_get_nr(ptr, max_length);
+}
+
+static timelib_sll timelib_lookup_relative_text(char **ptr, int *behavior)
+{
+       char *word;
+       char *begin = *ptr, *end;
+       timelib_sll  value = 0;
+       const timelib_lookup_table *tp;
+
+       while ((**ptr >= 'A' && **ptr <= 'Z') || (**ptr >= 'a' && **ptr <= 'z')) {
+               ++*ptr;
+       }
+       end = *ptr;
+       word = timelib_calloc(1, end - begin + 1);
+       memcpy(word, begin, end - begin);
+
+       for (tp = timelib_reltext_lookup; tp->name; tp++) {
+               if (strcasecmp(word, tp->name) == 0) {
+                       value = tp->value;
+                       *behavior = tp->type;
+               }
+       }
+
+       timelib_free(word);
+       return value;
+}
+
+static timelib_sll timelib_get_relative_text(char **ptr, int *behavior)
+{
+       while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '/') {
+               ++*ptr;
+       }
+       return timelib_lookup_relative_text(ptr, behavior);
+}
+
+static timelib_long timelib_lookup_month(char **ptr)
+{
+       char *word;
+       char *begin = *ptr, *end;
+       timelib_long  value = 0;
+       const timelib_lookup_table *tp;
+
+       while ((**ptr >= 'A' && **ptr <= 'Z') || (**ptr >= 'a' && **ptr <= 'z')) {
+               ++*ptr;
+       }
+       end = *ptr;
+       word = timelib_calloc(1, end - begin + 1);
+       memcpy(word, begin, end - begin);
+
+       for (tp = timelib_month_lookup; tp->name; tp++) {
+               if (strcasecmp(word, tp->name) == 0) {
+                       value = tp->value;
+               }
+       }
+
+       timelib_free(word);
+       return value;
+}
+
+static timelib_long timelib_get_month(char **ptr)
+{
+       while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '.' || **ptr == '/') {
+               ++*ptr;
+       }
+       return timelib_lookup_month(ptr);
+}
+
+static void timelib_eat_spaces(char **ptr)
+{
+       while (**ptr == ' ' || **ptr == '\t') {
+               ++*ptr;
+       }
+}
+
+static void timelib_eat_until_separator(char **ptr)
+{
+       ++*ptr;
+       while (strchr(" \t.,:;/-0123456789", **ptr) == NULL) {
+               ++*ptr;
+       }
+}
+
+static const timelib_relunit* timelib_lookup_relunit(char **ptr)
+{
+       char *word;
+       char *begin = *ptr, *end;
+       const timelib_relunit *tp, *value = NULL;
+
+       while (**ptr != '\0' && **ptr != ' ' && **ptr != ',' && **ptr != '\t' && **ptr != ';' && **ptr != ':' &&
+           **ptr != '/' && **ptr != '.' && **ptr != '-' && **ptr != '(' && **ptr != ')' ) {
+               ++*ptr;
+       }
+       end = *ptr;
+       word = timelib_calloc(1, end - begin + 1);
+       memcpy(word, begin, end - begin);
+
+       for (tp = timelib_relunit_lookup; tp->name; tp++) {
+               if (strcasecmp(word, tp->name) == 0) {
+                       value = tp;
+                       break;
+               }
+       }
+
+       timelib_free(word);
+       return value;
+}
+
+static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, Scanner *s)
+{
+       const timelib_relunit* relunit;
+
+       if (!(relunit = timelib_lookup_relunit(ptr))) {
+               return;
+       }
+
+       switch (relunit->unit) {
+               case TIMELIB_MICROSEC: s->time->relative.f += (((double) amount * (double) relunit->multiplier) / 1000000); break;
+               case TIMELIB_SECOND:   s->time->relative.s += amount * relunit->multiplier; break;
+               case TIMELIB_MINUTE:   s->time->relative.i += amount * relunit->multiplier; break;
+               case TIMELIB_HOUR:     s->time->relative.h += amount * relunit->multiplier; break;
+               case TIMELIB_DAY:      s->time->relative.d += amount * relunit->multiplier; break;
+               case TIMELIB_MONTH:    s->time->relative.m += amount * relunit->multiplier; break;
+               case TIMELIB_YEAR:     s->time->relative.y += amount * relunit->multiplier; break;
+
+               case TIMELIB_WEEKDAY:
+                       TIMELIB_HAVE_WEEKDAY_RELATIVE();
+                       TIMELIB_UNHAVE_TIME();
+                       s->time->relative.d += (amount > 0 ? amount - 1 : amount) * 7;
+                       s->time->relative.weekday = relunit->multiplier;
+                       s->time->relative.weekday_behavior = behavior;
+                       break;
+
+               case TIMELIB_SPECIAL:
+                       TIMELIB_HAVE_SPECIAL_RELATIVE();
+                       TIMELIB_UNHAVE_TIME();
+                       s->time->relative.special.type = relunit->multiplier;
+                       s->time->relative.special.amount = amount;
+       }
+}
+
+const static timelib_tz_lookup_table* abbr_search(const char *word, timelib_long gmtoffset, int isdst)
+{
+       int first_found = 0;
+       const timelib_tz_lookup_table  *tp, *first_found_elem = NULL;
+       const timelib_tz_lookup_table  *fmp;
+
+       if (strcasecmp("utc", word) == 0 || strcasecmp("gmt", word) == 0) {
+               return timelib_timezone_utc;
+       }
+
+       for (tp = timelib_timezone_lookup; tp->name; tp++) {
+               if (strcasecmp(word, tp->name) == 0) {
+                       if (!first_found) {
+                               first_found = 1;
+                               first_found_elem = tp;
+                               if (gmtoffset == -1) {
+                                       return tp;
+                               }
+                       }
+                       if (tp->gmtoffset == gmtoffset) {
+                               return tp;
+                       }
+               }
+       }
+       if (first_found) {
+               return first_found_elem;
+       }
+
+       /* Still didn't find anything, let's find the zone solely based on
+        * offset/isdst then */
+       for (fmp = timelib_timezone_fallbackmap; fmp->name; fmp++) {
+               if ((fmp->gmtoffset * 60) == gmtoffset && fmp->type == isdst) {
+                       return fmp;
+               }
+       }
+       return NULL;
+}
+
+static timelib_long timelib_lookup_abbr(char **ptr, int *dst, char **tz_abbr, int *found)
+{
+       char *word;
+       char *begin = *ptr, *end;
+       timelib_long  value = 0;
+       const timelib_tz_lookup_table *tp;
+
+       while (**ptr != '\0' && **ptr != ')' && **ptr != ' ') {
+               ++*ptr;
+       }
+       end = *ptr;
+       word = timelib_calloc(1, end - begin + 1);
+       memcpy(word, begin, end - begin);
+
+       if ((tp = abbr_search(word, -1, 0))) {
+               value = -tp->gmtoffset / 60;
+               *dst = tp->type;
+               value += tp->type * 60;
+               *found = 1;
+       } else {
+               *found = 0;
+       }
+
+       *tz_abbr = word;
+       return value;
+}
+
+timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_wrapper)
+{
+       timelib_tzinfo *res;
+       timelib_long            retval = 0;
+
+       *tz_not_found = 0;
+
+       while (**ptr == ' ' || **ptr == '\t' || **ptr == '(') {
+               ++*ptr;
+       }
+       if ((*ptr)[0] == 'G' && (*ptr)[1] == 'M' && (*ptr)[2] == 'T' && ((*ptr)[3] == '+' || (*ptr)[3] == '-')) {
+               *ptr += 3;
+       }
+       if (**ptr == '+') {
+               ++*ptr;
+               t->is_localtime = 1;
+               t->zone_type = TIMELIB_ZONETYPE_OFFSET;
+               *tz_not_found = 0;
+               t->dst = 0;
+
+               retval = -1 * timelib_parse_tz_cor(ptr);
+       } else if (**ptr == '-') {
+               ++*ptr;
+               t->is_localtime = 1;
+               t->zone_type = TIMELIB_ZONETYPE_OFFSET;
+               *tz_not_found = 0;
+               t->dst = 0;
+
+               retval = timelib_parse_tz_cor(ptr);
+       } else {
+               int found = 0;
+               timelib_long offset = 0;
+               char *tz_abbr;
+
+               t->is_localtime = 1;
+
+               /* First, we lookup by abbreviation only */
+               offset = timelib_lookup_abbr(ptr, dst, &tz_abbr, &found);
+               if (found) {
+                       t->zone_type = TIMELIB_ZONETYPE_ABBR;
+                       timelib_time_tz_abbr_update(t, tz_abbr);
+               }
+
+               /* Otherwise, we look if we have a TimeZone identifier */
+               if (!found || strcmp("UTC", tz_abbr) == 0) {
+                       if ((res = tz_wrapper(tz_abbr, tzdb)) != NULL) {
+                               t->tz_info = res;
+                               t->zone_type = TIMELIB_ZONETYPE_ID;
+                               found++;
+                       }
+               }
+               timelib_free(tz_abbr);
+               *tz_not_found = (found == 0);
+               retval = offset;
+       }
+       while (**ptr == ')') {
+               ++*ptr;
+       }
+       return retval;
+}
+
+#define timelib_split_free(arg) {       \
+       int i;                         \
+       for (i = 0; i < arg.c; i++) {  \
+               timelib_free(arg.v[i]);    \
+       }                              \
+       if (arg.v) {                   \
+               timelib_free(arg.v);       \
+       }                              \
+}
+
+static int scan(Scanner *s, timelib_tz_get_wrapper tz_get_wrapper)
+{
+       uchar *cursor = s->cur;
+       char *str, *ptr = NULL;
+
+std:
+       s->tok = cursor;
+       s->len = 0;
+
+
+
+{
+       YYCTYPE yych;
+       unsigned int yyaccept = 0;
+       static const unsigned char yybm[] = {
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0, 100,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+               100,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0, 128,  64, 160,  96,   0, 
+                 2,   2,   2,   2,   2,   2,   2,   2, 
+                 2,   2,   0,   0,   0,   0,   0,   0, 
+                 0,   8,   8,   8,   8,   8,   8,   8, 
+                 8,   8,   8,   8,   8,   8,   8,   8, 
+                 8,   8,   8,   8,   8,   8,   8,   8, 
+                 8,   8,   8,   0,   0,   0,   0,   0, 
+                 0,  24,  24,  24,  88,  24,  24,  24, 
+                88,  24,  24,  24,  24,  24,  88,  24, 
+                24,  24,  88,  88,  88,  24,  24,  24, 
+                24,  24,  24,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+       };
+       if ((YYLIMIT - YYCURSOR) < 33) YYFILL(33);
+       yych = *YYCURSOR;
+       switch (yych) {
+       case 0x00:
+       case '\n':      goto yy51;
+       case '\t':
+       case ' ':       goto yy48;
+       case '(':       goto yy45;
+       case '+':
+       case '-':       goto yy30;
+       case ',':
+       case '.':       goto yy50;
+       case '0':       goto yy25;
+       case '1':       goto yy26;
+       case '2':       goto yy27;
+       case '3':       goto yy28;
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy29;
+       case '@':       goto yy11;
+       case 'A':       goto yy36;
+       case 'B':       goto yy17;
+       case 'C':
+       case 'H':
+       case 'K':
+       case 'Q':
+       case 'R':
+       case 'U':
+       case 'Z':       goto yy46;
+       case 'D':       goto yy40;
+       case 'E':       goto yy21;
+       case 'F':       goto yy13;
+       case 'G':       goto yy44;
+       case 'I':       goto yy31;
+       case 'J':       goto yy34;
+       case 'L':       goto yy15;
+       case 'M':       goto yy7;
+       case 'N':       goto yy5;
+       case 'O':       goto yy38;
+       case 'P':       goto yy23;
+       case 'S':       goto yy19;
+       case 'T':       goto yy9;
+       case 'V':       goto yy32;
+       case 'W':       goto yy42;
+       case 'X':       goto yy33;
+       case 'Y':       goto yy2;
+       case 'a':       goto yy37;
+       case 'b':       goto yy18;
+       case 'c':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'k':
+       case 'q':
+       case 'r':
+       case 'u':
+       case 'v':
+       case 'x':
+       case 'z':       goto yy47;
+       case 'd':       goto yy41;
+       case 'e':       goto yy22;
+       case 'f':       goto yy14;
+       case 'j':       goto yy35;
+       case 'l':       goto yy16;
+       case 'm':       goto yy8;
+       case 'n':       goto yy6;
+       case 'o':       goto yy39;
+       case 'p':       goto yy24;
+       case 's':       goto yy20;
+       case 't':       goto yy10;
+       case 'w':       goto yy43;
+       case 'y':       goto yy4;
+       default:        goto yy53;
+       }
+yy2:
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= 'E') {
+               if (yych <= ')') {
+                       if (yych >= ')') goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy165;
+                       goto yy1521;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych >= 'a') goto yy170;
+               } else {
+                       if (yych <= 'e') goto yy1530;
+                       if (yych <= 'z') goto yy170;
+               }
+       }
+yy3:
+       {
+               int tz_not_found;
+               DEBUG_OUTPUT("tzcorrection | tz");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_TZ();
+               s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
+               if (tz_not_found) {
+                       add_error(s, "The timezone could not be found in the database");
+               }
+               TIMELIB_DEINIT;
+               return TIMELIB_TIMEZONE;
+       }
+yy4:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy165;
+                       goto yy1521;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       goto yy165;
+               } else {
+                       if (yych <= 'e') goto yy1521;
+                       if (yych <= 'z') goto yy165;
+                       goto yy3;
+               }
+       }
+yy5:
+       yych = *++YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= 'D') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+                       goto yy165;
+               } else {
+                       if (yych <= 'H') {
+                               if (yych <= 'E') goto yy1492;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'I') goto yy1493;
+                               if (yych <= 'N') goto yy165;
+                               goto yy1491;
+                       }
+               }
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= '`') {
+                               if (yych <= 'Z') goto yy165;
+                               goto yy3;
+                       } else {
+                               if (yych == 'e') goto yy1508;
+                               goto yy170;
+                       }
+               } else {
+                       if (yych <= 'n') {
+                               if (yych <= 'i') goto yy1509;
+                               goto yy170;
+                       } else {
+                               if (yych <= 'o') goto yy1507;
+                               if (yych <= 'z') goto yy170;
+                               goto yy3;
+                       }
+               }
+       }
+yy6:
+       yych = *++YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= 'D') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+                       goto yy165;
+               } else {
+                       if (yych <= 'H') {
+                               if (yych <= 'E') goto yy1492;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'I') goto yy1493;
+                               if (yych <= 'N') goto yy165;
+                               goto yy1491;
+                       }
+               }
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= '`') {
+                               if (yych <= 'Z') goto yy165;
+                               goto yy3;
+                       } else {
+                               if (yych == 'e') goto yy1492;
+                               goto yy165;
+                       }
+               } else {
+                       if (yych <= 'n') {
+                               if (yych <= 'i') goto yy1493;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'o') goto yy1491;
+                               if (yych <= 'z') goto yy165;
+                               goto yy3;
+                       }
+               }
+       }
+yy7:
+       yych = *++YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= 'A') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+                       goto yy1461;
+               } else {
+                       if (yych == 'I') goto yy1462;
+                       if (yych <= 'N') goto yy165;
+                       goto yy1463;
+               }
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'a') goto yy1476;
+                       goto yy170;
+               } else {
+                       if (yych <= 'n') {
+                               if (yych <= 'i') goto yy1477;
+                               goto yy170;
+                       } else {
+                               if (yych <= 'o') goto yy1478;
+                               if (yych <= 'z') goto yy170;
+                               goto yy3;
+                       }
+               }
+       }
+yy8:
+       yych = *++YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= 'A') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+                       goto yy1461;
+               } else {
+                       if (yych == 'I') goto yy1462;
+                       if (yych <= 'N') goto yy165;
+                       goto yy1463;
+               }
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'a') goto yy1461;
+                       goto yy165;
+               } else {
+                       if (yych <= 'n') {
+                               if (yych <= 'i') goto yy1462;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'o') goto yy1463;
+                               if (yych <= 'z') goto yy165;
+                               goto yy3;
+                       }
+               }
+       }
+yy9:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case ')':       goto yy164;
+       case '0':
+       case '1':       goto yy1391;
+       case '2':       goto yy1392;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy1393;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'F':
+       case 'G':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'V':
+       case 'X':
+       case 'Y':
+       case 'Z':       goto yy165;
+       case 'E':       goto yy1386;
+       case 'H':       goto yy1387;
+       case 'O':       goto yy1388;
+       case 'U':       goto yy1389;
+       case 'W':       goto yy1390;
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'f':
+       case 'g':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'v':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy170;
+       case 'e':       goto yy1429;
+       case 'h':       goto yy1430;
+       case 'o':       goto yy1431;
+       case 'u':       goto yy1432;
+       case 'w':       goto yy1433;
+       default:        goto yy3;
+       }
+yy10:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch (yych) {
+       case ')':       goto yy164;
+       case '0':
+       case '1':       goto yy1391;
+       case '2':       goto yy1392;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy1393;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'F':
+       case 'G':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'V':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'f':
+       case 'g':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'v':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy165;
+       case 'E':
+       case 'e':       goto yy1386;
+       case 'H':
+       case 'h':       goto yy1387;
+       case 'O':
+       case 'o':       goto yy1388;
+       case 'U':
+       case 'u':       goto yy1389;
+       case 'W':
+       case 'w':       goto yy1390;
+       default:        goto yy3;
+       }
+yy11:
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '-') goto yy1374;
+       if (yych <= '/') goto yy12;
+       if (yych <= '9') goto yy1375;
+yy12:
+       {
+               add_error(s, "Unexpected character");
+               goto std;
+       }
+yy13:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= 'E') {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy3;
+                               goto yy164;
+                       } else {
+                               if (yych <= '@') goto yy3;
+                               if (yych <= 'D') goto yy165;
+                               goto yy1310;
+                       }
+               } else {
+                       if (yych <= 'N') {
+                               if (yych == 'I') goto yy1311;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'O') goto yy1312;
+                               if (yych <= 'Q') goto yy165;
+                               goto yy1313;
+                       }
+               }
+       } else {
+               if (yych <= 'i') {
+                       if (yych <= 'd') {
+                               if (yych <= 'Z') goto yy165;
+                               if (yych <= '`') goto yy3;
+                               goto yy170;
+                       } else {
+                               if (yych <= 'e') goto yy1351;
+                               if (yych <= 'h') goto yy170;
+                               goto yy1352;
+                       }
+               } else {
+                       if (yych <= 'q') {
+                               if (yych == 'o') goto yy1353;
+                               goto yy170;
+                       } else {
+                               if (yych <= 'r') goto yy1354;
+                               if (yych <= 'z') goto yy170;
+                               goto yy3;
+                       }
+               }
+       }
+yy14:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= 'E') {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy3;
+                               goto yy164;
+                       } else {
+                               if (yych <= '@') goto yy3;
+                               if (yych <= 'D') goto yy165;
+                               goto yy1310;
+                       }
+               } else {
+                       if (yych <= 'N') {
+                               if (yych == 'I') goto yy1311;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'O') goto yy1312;
+                               if (yych <= 'Q') goto yy165;
+                               goto yy1313;
+                       }
+               }
+       } else {
+               if (yych <= 'i') {
+                       if (yych <= 'd') {
+                               if (yych <= 'Z') goto yy165;
+                               if (yych <= '`') goto yy3;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'e') goto yy1310;
+                               if (yych <= 'h') goto yy165;
+                               goto yy1311;
+                       }
+               } else {
+                       if (yych <= 'q') {
+                               if (yych == 'o') goto yy1312;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'r') goto yy1313;
+                               if (yych <= 'z') goto yy165;
+                               goto yy3;
+                       }
+               }
+       }
+yy15:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+               goto yy1296;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy165;
+                       goto yy3;
+               } else {
+                       if (yych <= 'a') goto yy1307;
+                       if (yych <= 'z') goto yy170;
+                       goto yy3;
+               }
+       }
+yy16:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+               goto yy1296;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy165;
+                       goto yy3;
+               } else {
+                       if (yych <= 'a') goto yy1296;
+                       if (yych <= 'z') goto yy165;
+                       goto yy3;
+               }
+       }
+yy17:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+               goto yy1276;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy165;
+                       goto yy3;
+               } else {
+                       if (yych <= 'a') goto yy1293;
+                       if (yych <= 'z') goto yy170;
+                       goto yy3;
+               }
+       }
+yy18:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+               goto yy1276;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy165;
+                       goto yy3;
+               } else {
+                       if (yych <= 'a') goto yy1276;
+                       if (yych <= 'z') goto yy165;
+                       goto yy3;
+               }
+       }
+yy19:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= 'D') {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy3;
+                               goto yy164;
+                       } else {
+                               if (yych <= '@') goto yy3;
+                               if (yych <= 'A') goto yy1219;
+                               goto yy165;
+                       }
+               } else {
+                       if (yych <= 'H') {
+                               if (yych <= 'E') goto yy1218;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'I') goto yy1220;
+                               if (yych <= 'T') goto yy165;
+                               goto yy1221;
+                       }
+               }
+       } else {
+               if (yych <= 'e') {
+                       if (yych <= '`') {
+                               if (yych <= 'Z') goto yy165;
+                               goto yy3;
+                       } else {
+                               if (yych <= 'a') goto yy1248;
+                               if (yych <= 'd') goto yy170;
+                               goto yy1247;
+                       }
+               } else {
+                       if (yych <= 't') {
+                               if (yych == 'i') goto yy1249;
+                               goto yy170;
+                       } else {
+                               if (yych <= 'u') goto yy1250;
+                               if (yych <= 'z') goto yy170;
+                               goto yy3;
+                       }
+               }
+       }
+yy20:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= 'D') {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy3;
+                               goto yy164;
+                       } else {
+                               if (yych <= '@') goto yy3;
+                               if (yych <= 'A') goto yy1219;
+                               goto yy165;
+                       }
+               } else {
+                       if (yych <= 'H') {
+                               if (yych <= 'E') goto yy1218;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'I') goto yy1220;
+                               if (yych <= 'T') goto yy165;
+                               goto yy1221;
+                       }
+               }
+       } else {
+               if (yych <= 'e') {
+                       if (yych <= '`') {
+                               if (yych <= 'Z') goto yy165;
+                               goto yy3;
+                       } else {
+                               if (yych <= 'a') goto yy1219;
+                               if (yych <= 'd') goto yy165;
+                               goto yy1218;
+                       }
+               } else {
+                       if (yych <= 't') {
+                               if (yych == 'i') goto yy1220;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'u') goto yy1221;
+                               if (yych <= 'z') goto yy165;
+                               goto yy3;
+                       }
+               }
+       }
+yy21:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == 'I') goto yy1188;
+                       if (yych <= 'K') goto yy165;
+                       goto yy1189;
+               }
+       } else {
+               if (yych <= 'i') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'h') goto yy170;
+                       goto yy1206;
+               } else {
+                       if (yych == 'l') goto yy1207;
+                       if (yych <= 'z') goto yy170;
+                       goto yy3;
+               }
+       }
+yy22:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == 'I') goto yy1188;
+                       if (yych <= 'K') goto yy165;
+                       goto yy1189;
+               }
+       } else {
+               if (yych <= 'i') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'h') goto yy165;
+                       goto yy1188;
+               } else {
+                       if (yych == 'l') goto yy1189;
+                       if (yych <= 'z') goto yy165;
+                       goto yy3;
+               }
+       }
+yy23:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Q') goto yy165;
+                       goto yy1062;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       goto yy170;
+               } else {
+                       if (yych <= 'r') goto yy1181;
+                       if (yych <= 'z') goto yy170;
+                       goto yy3;
+               }
+       }
+yy24:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Q') goto yy165;
+                       goto yy1062;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       goto yy165;
+               } else {
+                       if (yych <= 'r') goto yy1062;
+                       if (yych <= 'z') goto yy165;
+                       goto yy3;
+               }
+       }
+yy25:
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '`') {
+               if (yych <= '@') {
+                       if (yych <= '-') {
+                               if (yych <= 0x1F) {
+                                       if (yych == '\t') goto yy1016;
+                                       goto yy12;
+                               } else {
+                                       if (yych <= ' ') goto yy1018;
+                                       if (yych <= ',') goto yy12;
+                                       goto yy437;
+                               }
+                       } else {
+                               if (yych <= '0') {
+                                       if (yych <= '.') goto yy1028;
+                                       if (yych <= '/') goto yy436;
+                                       goto yy1061;
+                               } else {
+                                       if (yych <= '9') goto yy1060;
+                                       if (yych <= ':') goto yy1029;
+                                       goto yy12;
+                               }
+                       }
+               } else {
+                       if (yych <= 'G') {
+                               if (yych <= 'D') {
+                                       if (yych <= 'A') goto yy1018;
+                                       if (yych <= 'C') goto yy12;
+                                       goto yy1018;
+                               } else {
+                                       if (yych == 'F') goto yy1018;
+                                       goto yy12;
+                               }
+                       } else {
+                               if (yych <= 'O') {
+                                       if (yych <= 'J') goto yy1018;
+                                       if (yych <= 'L') goto yy12;
+                                       goto yy1018;
+                               } else {
+                                       if (yych <= 'R') goto yy12;
+                                       if (yych <= 'Y') goto yy1018;
+                                       goto yy12;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'g') {
+                               if (yych <= 'd') {
+                                       if (yych <= 'a') goto yy1018;
+                                       if (yych <= 'c') goto yy12;
+                                       goto yy1018;
+                               } else {
+                                       if (yych == 'f') goto yy1018;
+                                       goto yy12;
+                               }
+                       } else {
+                               if (yych <= 'j') {
+                                       if (yych == 'i') goto yy12;
+                                       goto yy1018;
+                               } else {
+                                       if (yych <= 'l') goto yy12;
+                                       if (yych <= 'm') goto yy1018;
+                                       goto yy434;
+                               }
+                       }
+               } else {
+                       if (yych <= 'u') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'o') goto yy1018;
+                                       if (yych <= 'q') goto yy12;
+                                       goto yy435;
+                               } else {
+                                       if (yych <= 's') goto yy429;
+                                       if (yych <= 't') goto yy432;
+                                       goto yy1018;
+                               }
+                       } else {
+                               if (yych <= 'x') {
+                                       if (yych == 'w') goto yy1018;
+                                       goto yy12;
+                               } else {
+                                       if (yych <= 'y') goto yy1018;
+                                       if (yych == 0xC2) goto yy1018;
+                                       goto yy12;
+                               }
+                       }
+               }
+       }
+yy26:
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '`') {
+               if (yych <= '@') {
+                       if (yych <= '-') {
+                               if (yych <= 0x1F) {
+                                       if (yych == '\t') goto yy424;
+                                       goto yy12;
+                               } else {
+                                       if (yych <= ' ') goto yy426;
+                                       if (yych <= ',') goto yy12;
+                                       goto yy437;
+                               }
+                       } else {
+                               if (yych <= '2') {
+                                       if (yych <= '.') goto yy438;
+                                       if (yych <= '/') goto yy436;
+                                       goto yy1060;
+                               } else {
+                                       if (yych <= '9') goto yy1027;
+                                       if (yych <= ':') goto yy447;
+                                       goto yy12;
+                               }
+                       }
+               } else {
+                       if (yych <= 'G') {
+                               if (yych <= 'D') {
+                                       if (yych <= 'A') goto yy426;
+                                       if (yych <= 'C') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych == 'F') goto yy426;
+                                       goto yy12;
+                               }
+                       } else {
+                               if (yych <= 'P') {
+                                       if (yych <= 'J') goto yy426;
+                                       if (yych <= 'L') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych <= 'R') goto yy12;
+                                       if (yych <= 'Y') goto yy426;
+                                       goto yy12;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'g') {
+                               if (yych <= 'd') {
+                                       if (yych <= 'a') goto yy426;
+                                       if (yych <= 'c') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych == 'f') goto yy426;
+                                       goto yy12;
+                               }
+                       } else {
+                               if (yych <= 'j') {
+                                       if (yych == 'i') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych <= 'l') goto yy12;
+                                       if (yych <= 'm') goto yy426;
+                                       goto yy434;
+                               }
+                       }
+               } else {
+                       if (yych <= 'u') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'p') goto yy426;
+                                       if (yych <= 'q') goto yy12;
+                                       goto yy435;
+                               } else {
+                                       if (yych <= 's') goto yy429;
+                                       if (yych <= 't') goto yy432;
+                                       goto yy426;
+                               }
+                       } else {
+                               if (yych <= 'x') {
+                                       if (yych == 'w') goto yy426;
+                                       goto yy12;
+                               } else {
+                                       if (yych <= 'y') goto yy426;
+                                       if (yych == 0xC2) goto yy426;
+                                       goto yy12;
+                               }
+                       }
+               }
+       }
+yy27:
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '`') {
+               if (yych <= '@') {
+                       if (yych <= '-') {
+                               if (yych <= 0x1F) {
+                                       if (yych == '\t') goto yy424;
+                                       goto yy12;
+                               } else {
+                                       if (yych <= ' ') goto yy426;
+                                       if (yych <= ',') goto yy12;
+                                       goto yy437;
+                               }
+                       } else {
+                               if (yych <= '4') {
+                                       if (yych <= '.') goto yy438;
+                                       if (yych <= '/') goto yy436;
+                                       goto yy1027;
+                               } else {
+                                       if (yych <= '9') goto yy1014;
+                                       if (yych <= ':') goto yy447;
+                                       goto yy12;
+                               }
+                       }
+               } else {
+                       if (yych <= 'G') {
+                               if (yych <= 'D') {
+                                       if (yych <= 'A') goto yy426;
+                                       if (yych <= 'C') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych == 'F') goto yy426;
+                                       goto yy12;
+                               }
+                       } else {
+                               if (yych <= 'P') {
+                                       if (yych <= 'J') goto yy426;
+                                       if (yych <= 'L') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych <= 'R') goto yy12;
+                                       if (yych <= 'Y') goto yy426;
+                                       goto yy12;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'g') {
+                               if (yych <= 'd') {
+                                       if (yych <= 'a') goto yy426;
+                                       if (yych <= 'c') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych == 'f') goto yy426;
+                                       goto yy12;
+                               }
+                       } else {
+                               if (yych <= 'j') {
+                                       if (yych == 'i') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych <= 'l') goto yy12;
+                                       if (yych <= 'm') goto yy426;
+                                       goto yy434;
+                               }
+                       }
+               } else {
+                       if (yych <= 'u') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'p') goto yy426;
+                                       if (yych <= 'q') goto yy12;
+                                       goto yy435;
+                               } else {
+                                       if (yych <= 's') goto yy429;
+                                       if (yych <= 't') goto yy432;
+                                       goto yy426;
+                               }
+                       } else {
+                               if (yych <= 'x') {
+                                       if (yych == 'w') goto yy426;
+                                       goto yy12;
+                               } else {
+                                       if (yych <= 'y') goto yy426;
+                                       if (yych == 0xC2) goto yy426;
+                                       goto yy12;
+                               }
+                       }
+               }
+       }
+yy28:
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '`') {
+               if (yych <= '@') {
+                       if (yych <= '-') {
+                               if (yych <= 0x1F) {
+                                       if (yych == '\t') goto yy424;
+                                       goto yy12;
+                               } else {
+                                       if (yych <= ' ') goto yy426;
+                                       if (yych <= ',') goto yy12;
+                                       goto yy437;
+                               }
+                       } else {
+                               if (yych <= '1') {
+                                       if (yych <= '.') goto yy438;
+                                       if (yych <= '/') goto yy436;
+                                       goto yy1014;
+                               } else {
+                                       if (yych <= '9') goto yy433;
+                                       if (yych <= ':') goto yy447;
+                                       goto yy12;
+                               }
+                       }
+               } else {
+                       if (yych <= 'G') {
+                               if (yych <= 'D') {
+                                       if (yych <= 'A') goto yy426;
+                                       if (yych <= 'C') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych == 'F') goto yy426;
+                                       goto yy12;
+                               }
+                       } else {
+                               if (yych <= 'P') {
+                                       if (yych <= 'J') goto yy426;
+                                       if (yych <= 'L') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych <= 'R') goto yy12;
+                                       if (yych <= 'Y') goto yy426;
+                                       goto yy12;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'g') {
+                               if (yych <= 'd') {
+                                       if (yych <= 'a') goto yy426;
+                                       if (yych <= 'c') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych == 'f') goto yy426;
+                                       goto yy12;
+                               }
+                       } else {
+                               if (yych <= 'j') {
+                                       if (yych == 'i') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych <= 'l') goto yy12;
+                                       if (yych <= 'm') goto yy426;
+                                       goto yy434;
+                               }
+                       }
+               } else {
+                       if (yych <= 'u') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'p') goto yy426;
+                                       if (yych <= 'q') goto yy12;
+                                       goto yy435;
+                               } else {
+                                       if (yych <= 's') goto yy429;
+                                       if (yych <= 't') goto yy432;
+                                       goto yy426;
+                               }
+                       } else {
+                               if (yych <= 'x') {
+                                       if (yych == 'w') goto yy426;
+                                       goto yy12;
+                               } else {
+                                       if (yych <= 'y') goto yy426;
+                                       if (yych == 0xC2) goto yy426;
+                                       goto yy12;
+                               }
+                       }
+               }
+       }
+yy29:
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'a') {
+               if (yych <= 'A') {
+                       if (yych <= '-') {
+                               if (yych <= 0x1F) {
+                                       if (yych == '\t') goto yy424;
+                                       goto yy12;
+                               } else {
+                                       if (yych <= ' ') goto yy426;
+                                       if (yych <= ',') goto yy12;
+                                       goto yy437;
+                               }
+                       } else {
+                               if (yych <= '9') {
+                                       if (yych <= '.') goto yy438;
+                                       if (yych <= '/') goto yy436;
+                                       goto yy433;
+                               } else {
+                                       if (yych <= ':') goto yy447;
+                                       if (yych <= '@') goto yy12;
+                                       goto yy426;
+                               }
+                       }
+               } else {
+                       if (yych <= 'J') {
+                               if (yych <= 'E') {
+                                       if (yych == 'D') goto yy426;
+                                       goto yy12;
+                               } else {
+                                       if (yych == 'G') goto yy12;
+                                       goto yy426;
+                               }
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'L') goto yy12;
+                                       if (yych <= 'P') goto yy426;
+                                       goto yy12;
+                               } else {
+                                       if (yych <= 'Y') goto yy426;
+                                       if (yych <= '`') goto yy12;
+                                       goto yy426;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'p') {
+                       if (yych <= 'h') {
+                               if (yych <= 'e') {
+                                       if (yych == 'd') goto yy426;
+                                       goto yy12;
+                               } else {
+                                       if (yych == 'g') goto yy12;
+                                       goto yy426;
+                               }
+                       } else {
+                               if (yych <= 'l') {
+                                       if (yych == 'j') goto yy426;
+                                       goto yy12;
+                               } else {
+                                       if (yych == 'n') goto yy434;
+                                       goto yy426;
+                               }
+                       }
+               } else {
+                       if (yych <= 'v') {
+                               if (yych <= 's') {
+                                       if (yych <= 'q') goto yy12;
+                                       if (yych <= 'r') goto yy435;
+                                       goto yy429;
+                               } else {
+                                       if (yych <= 't') goto yy432;
+                                       if (yych <= 'u') goto yy426;
+                                       goto yy12;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych == 'x') goto yy12;
+                                       goto yy426;
+                               } else {
+                                       if (yych == 0xC2) goto yy426;
+                                       goto yy12;
+                               }
+                       }
+               }
+       }
+yy30:
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 4) {
+               goto yy57;
+       }
+       switch (yych) {
+       case '+':
+       case '-':       goto yy404;
+       case '0':
+       case '1':       goto yy401;
+       case '2':       goto yy402;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy403;
+       default:        goto yy12;
+       }
+yy31:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy3;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy3;
+                       } else {
+                               if (yych == '/') goto yy3;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= 'V') {
+                       if (yych <= 'H') {
+                               if (yych <= '@') goto yy3;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'I') goto yy400;
+                               if (yych <= 'U') goto yy165;
+                               goto yy399;
+                       }
+               } else {
+                       if (yych <= 'Z') {
+                               if (yych == 'X') goto yy399;
+                               goto yy165;
+                       } else {
+                               if (yych <= '`') goto yy3;
+                               if (yych <= 'z') goto yy170;
+                               goto yy3;
+                       }
+               }
+       }
+yy32:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy220;
+                       if (yych <= 0x1F) goto yy3;
+                       goto yy220;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy220;
+               }
+       } else {
+               if (yych <= 'H') {
+                       if (yych <= '/') goto yy3;
+                       if (yych <= '9') goto yy220;
+                       if (yych <= '@') goto yy3;
+                       goto yy165;
+               } else {
+                       if (yych <= 'Z') {
+                               if (yych <= 'I') goto yy396;
+                               goto yy165;
+                       } else {
+                               if (yych <= '`') goto yy3;
+                               if (yych <= 'z') goto yy170;
+                               goto yy3;
+                       }
+               }
+       }
+yy33:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy220;
+                       if (yych <= 0x1F) goto yy3;
+                       goto yy220;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy220;
+               }
+       } else {
+               if (yych <= 'H') {
+                       if (yych <= '/') goto yy3;
+                       if (yych <= '9') goto yy220;
+                       if (yych <= '@') goto yy3;
+                       goto yy165;
+               } else {
+                       if (yych <= 'Z') {
+                               if (yych <= 'I') goto yy394;
+                               goto yy165;
+                       } else {
+                               if (yych <= '`') goto yy3;
+                               if (yych <= 'z') goto yy170;
+                               goto yy3;
+                       }
+               }
+       }
+yy34:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych <= 'A') goto yy377;
+                       if (yych <= 'T') goto yy165;
+                       goto yy376;
+               }
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       goto yy386;
+               } else {
+                       if (yych == 'u') goto yy385;
+                       if (yych <= 'z') goto yy170;
+                       goto yy3;
+               }
+       }
+yy35:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych <= 'A') goto yy377;
+                       if (yych <= 'T') goto yy165;
+                       goto yy376;
+               }
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       goto yy377;
+               } else {
+                       if (yych == 'u') goto yy376;
+                       if (yych <= 'z') goto yy165;
+                       goto yy3;
+               }
+       }
+yy36:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= 'F') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+                       goto yy165;
+               } else {
+                       if (yych <= 'O') {
+                               if (yych <= 'G') goto yy355;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'P') goto yy354;
+                               if (yych <= 'T') goto yy165;
+                               goto yy353;
+                       }
+               }
+       } else {
+               if (yych <= 'o') {
+                       if (yych <= '`') {
+                               if (yych <= 'Z') goto yy165;
+                               goto yy3;
+                       } else {
+                               if (yych == 'g') goto yy367;
+                               goto yy170;
+                       }
+               } else {
+                       if (yych <= 't') {
+                               if (yych <= 'p') goto yy366;
+                               goto yy170;
+                       } else {
+                               if (yych <= 'u') goto yy365;
+                               if (yych <= 'z') goto yy170;
+                               goto yy3;
+                       }
+               }
+       }
+yy37:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= 'F') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+                       goto yy165;
+               } else {
+                       if (yych <= 'O') {
+                               if (yych <= 'G') goto yy355;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'P') goto yy354;
+                               if (yych <= 'T') goto yy165;
+                               goto yy353;
+                       }
+               }
+       } else {
+               if (yych <= 'o') {
+                       if (yych <= '`') {
+                               if (yych <= 'Z') goto yy165;
+                               goto yy3;
+                       } else {
+                               if (yych == 'g') goto yy355;
+                               goto yy165;
+                       }
+               } else {
+                       if (yych <= 't') {
+                               if (yych <= 'p') goto yy354;
+                               goto yy165;
+                       } else {
+                               if (yych <= 'u') goto yy353;
+                               if (yych <= 'z') goto yy165;
+                               goto yy3;
+                       }
+               }
+       }
+yy38:
+       yych = *++YYCURSOR;
+       if (yych <= 'C') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'B') goto yy165;
+                       goto yy343;
+               }
+       } else {
+               if (yych <= 'b') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       goto yy170;
+               } else {
+                       if (yych <= 'c') goto yy348;
+                       if (yych <= 'z') goto yy170;
+                       goto yy3;
+               }
+       }
+yy39:
+       yych = *++YYCURSOR;
+       if (yych <= 'C') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'B') goto yy165;
+                       goto yy343;
+               }
+       } else {
+               if (yych <= 'b') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       goto yy165;
+               } else {
+                       if (yych <= 'c') goto yy343;
+                       if (yych <= 'z') goto yy165;
+                       goto yy3;
+               }
+       }
+yy40:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy165;
+                       goto yy216;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       goto yy170;
+               } else {
+                       if (yych <= 'e') goto yy334;
+                       if (yych <= 'z') goto yy170;
+                       goto yy3;
+               }
+       }
+yy41:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy165;
+                       goto yy216;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       goto yy165;
+               } else {
+                       if (yych <= 'e') goto yy216;
+                       if (yych <= 'z') goto yy165;
+                       goto yy3;
+               }
+       }
+yy42:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy165;
+                       goto yy189;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       goto yy170;
+               } else {
+                       if (yych <= 'e') goto yy203;
+                       if (yych <= 'z') goto yy170;
+                       goto yy3;
+               }
+       }
+yy43:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy165;
+                       goto yy189;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+                       goto yy165;
+               } else {
+                       if (yych <= 'e') goto yy189;
+                       if (yych <= 'z') goto yy165;
+                       goto yy3;
+               }
+       }
+yy44:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+               goto yy165;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= 'M') goto yy181;
+                       goto yy165;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy170;
+                       goto yy3;
+               }
+       }
+yy45:
+       yych = *++YYCURSOR;
+       if (yych <= '@') goto yy12;
+       if (yych <= 'Z') goto yy180;
+       if (yych <= '`') goto yy12;
+       if (yych <= 'z') goto yy180;
+       goto yy12;
+yy46:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'Z') goto yy165;
+               if (yych <= '`') goto yy3;
+               if (yych <= 'z') goto yy170;
+               goto yy3;
+       }
+yy47:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'Z') goto yy165;
+               if (yych <= '`') goto yy3;
+               if (yych <= 'z') goto yy165;
+               goto yy3;
+       }
+yy48:
+       yyaccept = 2;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 4) {
+               goto yy57;
+       }
+       if (yych <= '/') goto yy49;
+       if (yych <= '9') goto yy54;
+yy49:
+       {
+               goto std;
+       }
+yy50:
+       yych = *++YYCURSOR;
+       goto yy49;
+yy51:
+       ++YYCURSOR;
+       {
+               s->pos = cursor; s->line++;
+               goto std;
+       }
+yy53:
+       yych = *++YYCURSOR;
+       goto yy12;
+yy54:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+       yych = *YYCURSOR;
+       if (yybm[0+yych] & 2) {
+               goto yy54;
+       }
+       if (yych <= 'X') {
+               if (yych <= 'G') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy59;
+                               if (yych >= ' ') goto yy59;
+                       } else {
+                               if (yych <= 'D') {
+                                       if (yych >= 'D') goto yy66;
+                               } else {
+                                       if (yych == 'F') goto yy67;
+                               }
+                       }
+               } else {
+                       if (yych <= 'S') {
+                               if (yych <= 'L') {
+                                       if (yych <= 'H') goto yy65;
+                               } else {
+                                       if (yych <= 'M') goto yy61;
+                                       if (yych >= 'S') goto yy64;
+                               }
+                       } else {
+                               if (yych <= 'U') {
+                                       if (yych <= 'T') goto yy70;
+                                       goto yy63;
+                               } else {
+                                       if (yych == 'W') goto yy69;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'f') {
+                               if (yych <= 'c') {
+                                       if (yych <= 'Y') goto yy68;
+                               } else {
+                                       if (yych <= 'd') goto yy66;
+                                       if (yych >= 'f') goto yy67;
+                               }
+                       } else {
+                               if (yych <= 'h') {
+                                       if (yych >= 'h') goto yy65;
+                               } else {
+                                       if (yych == 'm') goto yy61;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 't') {
+                                       if (yych <= 's') goto yy64;
+                                       goto yy70;
+                               } else {
+                                       if (yych <= 'u') goto yy63;
+                                       if (yych >= 'w') goto yy69;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych >= 'y') goto yy68;
+                               } else {
+                                       if (yych == 0xC2) goto yy62;
+                               }
+                       }
+               }
+       }
+yy56:
+       YYCURSOR = YYMARKER;
+       if (yyaccept <= 16) {
+               if (yyaccept <= 8) {
+                       if (yyaccept <= 4) {
+                               if (yyaccept <= 2) {
+                                       if (yyaccept <= 1) {
+                                               if (yyaccept == 0) {
+                                                       goto yy3;
+                                               } else {
+                                                       goto yy12;
+                                               }
+                                       } else {
+                                               goto yy49;
+                                       }
+                               } else {
+                                       if (yyaccept == 3) {
+                                               goto yy74;
+                                       } else {
+                                               goto yy191;
+                                       }
+                               }
+                       } else {
+                               if (yyaccept <= 6) {
+                                       if (yyaccept == 5) {
+                                               goto yy218;
+                                       } else {
+                                               goto yy232;
+                                       }
+                               } else {
+                                       if (yyaccept == 7) {
+                                               goto yy246;
+                                       } else {
+                                               goto yy357;
+                                       }
+                               }
+                       }
+               } else {
+                       if (yyaccept <= 12) {
+                               if (yyaccept <= 10) {
+                                       if (yyaccept == 9) {
+                                               goto yy440;
+                                       } else {
+                                               goto yy455;
+                                       }
+                               } else {
+                                       if (yyaccept == 11) {
+                                               goto yy576;
+                                       } else {
+                                               goto yy621;
+                                       }
+                               }
+                       } else {
+                               if (yyaccept <= 14) {
+                                       if (yyaccept == 13) {
+                                               goto yy631;
+                                       } else {
+                                               goto yy728;
+                                       }
+                               } else {
+                                       if (yyaccept == 15) {
+                                               goto yy748;
+                                       } else {
+                                               goto yy779;
+                                       }
+                               }
+                       }
+               }
+       } else {
+               if (yyaccept <= 25) {
+                       if (yyaccept <= 21) {
+                               if (yyaccept <= 19) {
+                                       if (yyaccept <= 18) {
+                                               if (yyaccept == 17) {
+                                                       goto yy786;
+                                               } else {
+                                                       goto yy813;
+                                               }
+                                       } else {
+                                               goto yy758;
+                                       }
+                               } else {
+                                       if (yyaccept == 20) {
+                                               goto yy419;
+                                       } else {
+                                               goto yy938;
+                                       }
+                               }
+                       } else {
+                               if (yyaccept <= 23) {
+                                       if (yyaccept == 22) {
+                                               goto yy807;
+                                       } else {
+                                               goto yy1032;
+                                       }
+                               } else {
+                                       if (yyaccept == 24) {
+                                               goto yy1040;
+                                       } else {
+                                               goto yy1084;
+                                       }
+                               }
+                       }
+               } else {
+                       if (yyaccept <= 29) {
+                               if (yyaccept <= 27) {
+                                       if (yyaccept == 26) {
+                                               goto yy1108;
+                                       } else {
+                                               goto yy1284;
+                                       }
+                               } else {
+                                       if (yyaccept == 28) {
+                                               goto yy1377;
+                                       } else {
+                                               goto yy1415;
+                                       }
+                               }
+                       } else {
+                               if (yyaccept <= 31) {
+                                       if (yyaccept == 30) {
+                                               goto yy1418;
+                                       } else {
+                                               goto yy1498;
+                                       }
+                               } else {
+                                       if (yyaccept == 32) {
+                                               goto yy1506;
+                                       } else {
+                                               goto yy1529;
+                                       }
+                               }
+                       }
+               }
+       }
+yy57:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if (yybm[0+yych] & 4) {
+               goto yy57;
+       }
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy54;
+       goto yy56;
+yy59:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+       yych = *YYCURSOR;
+yy60:
+       if (yych <= 'X') {
+               if (yych <= 'G') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy59;
+                               if (yych <= 0x1F) goto yy56;
+                               goto yy59;
+                       } else {
+                               if (yych <= 'D') {
+                                       if (yych <= 'C') goto yy56;
+                                       goto yy66;
+                               } else {
+                                       if (yych == 'F') goto yy67;
+                                       goto yy56;
+                               }
+                       }
+               } else {
+                       if (yych <= 'S') {
+                               if (yych <= 'L') {
+                                       if (yych <= 'H') goto yy65;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'M') goto yy61;
+                                       if (yych <= 'R') goto yy56;
+                                       goto yy64;
+                               }
+                       } else {
+                               if (yych <= 'U') {
+                                       if (yych <= 'T') goto yy70;
+                                       goto yy63;
+                               } else {
+                                       if (yych == 'W') goto yy69;
+                                       goto yy56;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'f') {
+                               if (yych <= 'c') {
+                                       if (yych <= 'Y') goto yy68;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'd') goto yy66;
+                                       if (yych <= 'e') goto yy56;
+                                       goto yy67;
+                               }
+                       } else {
+                               if (yych <= 'h') {
+                                       if (yych <= 'g') goto yy56;
+                                       goto yy65;
+                               } else {
+                                       if (yych != 'm') goto yy56;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 't') {
+                                       if (yych <= 's') goto yy64;
+                                       goto yy70;
+                               } else {
+                                       if (yych <= 'u') goto yy63;
+                                       if (yych <= 'v') goto yy56;
+                                       goto yy69;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy56;
+                                       goto yy68;
+                               } else {
+                                       if (yych == 0xC2) goto yy62;
+                                       goto yy56;
+                               }
+                       }
+               }
+       }
+yy61:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= 'N') {
+                       if (yych == 'I') goto yy138;
+                       goto yy56;
+               } else {
+                       if (yych <= 'O') goto yy137;
+                       if (yych <= 'R') goto yy56;
+                       goto yy139;
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych == 'i') goto yy138;
+                       goto yy56;
+               } else {
+                       if (yych <= 'o') goto yy137;
+                       if (yych == 's') goto yy139;
+                       goto yy56;
+               }
+       }
+yy62:
+       yych = *++YYCURSOR;
+       if (yych == 0xB5) goto yy134;
+       goto yy56;
+yy63:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy132;
+       if (yych == 's') goto yy132;
+       goto yy56;
+yy64:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= 'D') {
+                       if (yych == 'A') goto yy119;
+                       goto yy56;
+               } else {
+                       if (yych <= 'E') goto yy120;
+                       if (yych <= 'T') goto yy56;
+                       goto yy118;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych == 'a') goto yy119;
+                       goto yy56;
+               } else {
+                       if (yych <= 'e') goto yy120;
+                       if (yych == 'u') goto yy118;
+                       goto yy56;
+               }
+       }
+yy65:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy116;
+       if (yych == 'o') goto yy116;
+       goto yy56;
+yy66:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy115;
+       if (yych == 'a') goto yy115;
+       goto yy56;
+yy67:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych == 'O') goto yy100;
+               if (yych <= 'Q') goto yy56;
+               goto yy99;
+       } else {
+               if (yych <= 'o') {
+                       if (yych <= 'n') goto yy56;
+                       goto yy100;
+               } else {
+                       if (yych == 'r') goto yy99;
+                       goto yy56;
+               }
+       }
+yy68:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy96;
+       if (yych == 'e') goto yy96;
+       goto yy56;
+yy69:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy84;
+       if (yych == 'e') goto yy84;
+       goto yy56;
+yy70:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'H') goto yy71;
+               if (yych <= 'T') goto yy56;
+               goto yy72;
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= 'g') goto yy56;
+               } else {
+                       if (yych == 'u') goto yy72;
+                       goto yy56;
+               }
+       }
+yy71:
+       yych = *++YYCURSOR;
+       if (yych == 'U') goto yy79;
+       if (yych == 'u') goto yy79;
+       goto yy56;
+yy72:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy73;
+       if (yych != 'e') goto yy56;
+yy73:
+       yyaccept = 3;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'S') goto yy75;
+       if (yych == 's') goto yy75;
+yy74:
+       {
+               timelib_ull i;
+               DEBUG_OUTPUT("relative");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_RELATIVE();
+
+               while(*ptr) {
+                       i = timelib_get_unsigned_nr((char **) &ptr, 24);
+                       timelib_eat_spaces((char **) &ptr);
+                       timelib_set_relative((char **) &ptr, i, 1, s);
+               }
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+yy75:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy76;
+       if (yych != 'd') goto yy56;
+yy76:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy77;
+       if (yych != 'a') goto yy56;
+yy77:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy78;
+       if (yych != 'y') goto yy56;
+yy78:
+       yych = *++YYCURSOR;
+       goto yy74;
+yy79:
+       yyaccept = 3;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'R') goto yy80;
+       if (yych != 'r') goto yy74;
+yy80:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy81;
+       if (yych != 's') goto yy56;
+yy81:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy82;
+       if (yych != 'd') goto yy56;
+yy82:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy83;
+       if (yych != 'a') goto yy56;
+yy83:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy78;
+       if (yych == 'y') goto yy78;
+       goto yy56;
+yy84:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= 'C') goto yy56;
+               if (yych <= 'D') goto yy86;
+       } else {
+               if (yych <= 'c') goto yy56;
+               if (yych <= 'd') goto yy86;
+               if (yych >= 'f') goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'K') goto yy92;
+       if (yych == 'k') goto yy92;
+       goto yy56;
+yy86:
+       yyaccept = 3;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'N') goto yy87;
+       if (yych != 'n') goto yy74;
+yy87:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy88;
+       if (yych != 'e') goto yy56;
+yy88:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy89;
+       if (yych != 's') goto yy56;
+yy89:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy90;
+       if (yych != 'd') goto yy56;
+yy90:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy91;
+       if (yych != 'a') goto yy56;
+yy91:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy78;
+       if (yych == 'y') goto yy78;
+       goto yy56;
+yy92:
+       yyaccept = 3;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych == 'D') goto yy93;
+               if (yych <= 'R') goto yy74;
+               goto yy78;
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'c') goto yy74;
+               } else {
+                       if (yych == 's') goto yy78;
+                       goto yy74;
+               }
+       }
+yy93:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy94;
+       if (yych != 'a') goto yy56;
+yy94:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy95;
+       if (yych != 'y') goto yy56;
+yy95:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy78;
+       if (yych == 's') goto yy78;
+       goto yy74;
+yy96:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy97;
+       if (yych != 'a') goto yy56;
+yy97:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy98;
+       if (yych != 'r') goto yy56;
+yy98:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy78;
+       if (yych == 's') goto yy78;
+       goto yy74;
+yy99:
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy112;
+       if (yych == 'i') goto yy112;
+       goto yy56;
+yy100:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy101;
+       if (yych != 'r') goto yy56;
+yy101:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy102;
+       if (yych != 't') goto yy56;
+yy102:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych == 'H') goto yy104;
+               if (yych <= 'M') goto yy56;
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= 'g') goto yy56;
+                       goto yy104;
+               } else {
+                       if (yych != 'n') goto yy56;
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy109;
+       if (yych == 'i') goto yy109;
+       goto yy56;
+yy104:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy105;
+       if (yych != 'n') goto yy56;
+yy105:
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy106;
+       if (yych != 'i') goto yy56;
+yy106:
+       yych = *++YYCURSOR;
+       if (yych == 'G') goto yy107;
+       if (yych != 'g') goto yy56;
+yy107:
+       yych = *++YYCURSOR;
+       if (yych == 'H') goto yy108;
+       if (yych != 'h') goto yy56;
+yy108:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy98;
+       if (yych == 't') goto yy98;
+       goto yy56;
+yy109:
+       yych = *++YYCURSOR;
+       if (yych == 'G') goto yy110;
+       if (yych != 'g') goto yy56;
+yy110:
+       yych = *++YYCURSOR;
+       if (yych == 'H') goto yy111;
+       if (yych != 'h') goto yy56;
+yy111:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy98;
+       if (yych == 't') goto yy98;
+       goto yy56;
+yy112:
+       yyaccept = 3;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'D') goto yy113;
+       if (yych != 'd') goto yy74;
+yy113:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy114;
+       if (yych != 'a') goto yy56;
+yy114:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy78;
+       if (yych == 'y') goto yy78;
+       goto yy56;
+yy115:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy98;
+       if (yych == 'y') goto yy98;
+       goto yy56;
+yy116:
+       yych = *++YYCURSOR;
+       if (yych == 'U') goto yy117;
+       if (yych != 'u') goto yy56;
+yy117:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy98;
+       if (yych == 'r') goto yy98;
+       goto yy56;
+yy118:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy129;
+       if (yych == 'n') goto yy129;
+       goto yy56;
+yy119:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy124;
+       if (yych == 't') goto yy124;
+       goto yy56;
+yy120:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy121;
+       if (yych != 'c') goto yy56;
+yy121:
+       yyaccept = 3;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych == 'O') goto yy122;
+               if (yych <= 'R') goto yy74;
+               goto yy78;
+       } else {
+               if (yych <= 'o') {
+                       if (yych <= 'n') goto yy74;
+               } else {
+                       if (yych == 's') goto yy78;
+                       goto yy74;
+               }
+       }
+yy122:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy123;
+       if (yych != 'n') goto yy56;
+yy123:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy98;
+       if (yych == 'd') goto yy98;
+       goto yy56;
+yy124:
+       yyaccept = 3;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'U') goto yy125;
+       if (yych != 'u') goto yy74;
+yy125:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy126;
+       if (yych != 'r') goto yy56;
+yy126:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy127;
+       if (yych != 'd') goto yy56;
+yy127:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy128;
+       if (yych != 'a') goto yy56;
+yy128:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy78;
+       if (yych == 'y') goto yy78;
+       goto yy56;
+yy129:
+       yyaccept = 3;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'D') goto yy130;
+       if (yych != 'd') goto yy74;
+yy130:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy131;
+       if (yych != 'a') goto yy56;
+yy131:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy78;
+       if (yych == 'y') goto yy78;
+       goto yy56;
+yy132:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy133;
+       if (yych != 'e') goto yy56;
+yy133:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy98;
+       if (yych == 'c') goto yy98;
+       goto yy56;
+yy134:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy135;
+       if (yych != 's') goto yy56;
+yy135:
+       yyaccept = 3;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'E') goto yy136;
+       if (yych != 'e') goto yy74;
+yy136:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy98;
+       if (yych == 'c') goto yy98;
+       goto yy56;
+yy137:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy160;
+       if (yych == 'n') goto yy160;
+       goto yy56;
+yy138:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= 'K') {
+                       if (yych == 'C') goto yy142;
+                       goto yy56;
+               } else {
+                       if (yych <= 'L') goto yy141;
+                       if (yych <= 'M') goto yy56;
+                       goto yy143;
+               }
+       } else {
+               if (yych <= 'k') {
+                       if (yych == 'c') goto yy142;
+                       goto yy56;
+               } else {
+                       if (yych <= 'l') goto yy141;
+                       if (yych == 'n') goto yy143;
+                       goto yy56;
+               }
+       }
+yy139:
+       yyaccept = 3;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'E') goto yy140;
+       if (yych != 'e') goto yy74;
+yy140:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy98;
+       if (yych == 'c') goto yy98;
+       goto yy56;
+yy141:
+       yych = *++YYCURSOR;
+       if (yych == 'L') goto yy153;
+       if (yych == 'l') goto yy153;
+       goto yy56;
+yy142:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy146;
+       if (yych == 'r') goto yy146;
+       goto yy56;
+yy143:
+       yyaccept = 3;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'U') {
+               if (yych == 'S') goto yy78;
+               if (yych <= 'T') goto yy74;
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'r') goto yy74;
+                       goto yy78;
+               } else {
+                       if (yych != 'u') goto yy74;
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy145;
+       if (yych != 't') goto yy56;
+yy145:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy98;
+       if (yych == 'e') goto yy98;
+       goto yy56;
+yy146:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy147;
+       if (yych != 'o') goto yy56;
+yy147:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy148;
+       if (yych != 's') goto yy56;
+yy148:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy149;
+       if (yych != 'e') goto yy56;
+yy149:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy150;
+       if (yych != 'c') goto yy56;
+yy150:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy151;
+       if (yych != 'o') goto yy56;
+yy151:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy152;
+       if (yych != 'n') goto yy56;
+yy152:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy98;
+       if (yych == 'd') goto yy98;
+       goto yy56;
+yy153:
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy154;
+       if (yych != 'i') goto yy56;
+yy154:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy155;
+       if (yych != 's') goto yy56;
+yy155:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy156;
+       if (yych != 'e') goto yy56;
+yy156:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy157;
+       if (yych != 'c') goto yy56;
+yy157:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy158;
+       if (yych != 'o') goto yy56;
+yy158:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy159;
+       if (yych != 'n') goto yy56;
+yy159:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy98;
+       if (yych == 'd') goto yy98;
+       goto yy56;
+yy160:
+       yyaccept = 3;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'T') {
+               if (yych == 'D') goto yy161;
+               if (yych <= 'S') goto yy74;
+               goto yy162;
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'c') goto yy74;
+               } else {
+                       if (yych == 't') goto yy162;
+                       goto yy74;
+               }
+       }
+yy161:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy163;
+       if (yych == 'a') goto yy163;
+       goto yy56;
+yy162:
+       yych = *++YYCURSOR;
+       if (yych == 'H') goto yy98;
+       if (yych == 'h') goto yy98;
+       goto yy56;
+yy163:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy78;
+       if (yych == 'y') goto yy78;
+       goto yy56;
+yy164:
+       yych = *++YYCURSOR;
+       goto yy3;
+yy165:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'Z') goto yy166;
+               if (yych <= '`') goto yy3;
+               if (yych >= '{') goto yy3;
+       }
+yy166:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'Z') goto yy167;
+               if (yych <= '`') goto yy3;
+               if (yych >= '{') goto yy3;
+       }
+yy167:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'Z') goto yy168;
+               if (yych <= '`') goto yy3;
+               if (yych >= '{') goto yy3;
+       }
+yy168:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'Z') goto yy169;
+               if (yych <= '`') goto yy3;
+               if (yych >= '{') goto yy3;
+       }
+yy169:
+       yych = *++YYCURSOR;
+       if (yych == ')') goto yy164;
+       goto yy3;
+yy170:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Z') goto yy166;
+                       goto yy3;
+               } else {
+                       if (yych <= '_') goto yy172;
+                       if (yych <= '`') goto yy3;
+                       if (yych >= '{') goto yy3;
+               }
+       }
+yy171:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Z') goto yy167;
+                       goto yy3;
+               } else {
+                       if (yych <= '_') goto yy172;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy175;
+                       goto yy3;
+               }
+       }
+yy172:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if (yybm[0+yych] & 8) {
+               goto yy173;
+       }
+       goto yy56;
+yy173:
+       yyaccept = 0;
+       YYMARKER = ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if (yybm[0+yych] & 8) {
+               goto yy173;
+       }
+       if (yych <= '.') {
+               if (yych == '-') goto yy172;
+               goto yy3;
+       } else {
+               if (yych <= '/') goto yy172;
+               if (yych == '_') goto yy172;
+               goto yy3;
+       }
+yy175:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Z') goto yy168;
+                       goto yy3;
+               } else {
+                       if (yych <= '_') goto yy172;
+                       if (yych <= '`') goto yy3;
+                       if (yych >= '{') goto yy3;
+               }
+       }
+yy176:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Z') goto yy169;
+                       goto yy3;
+               } else {
+                       if (yych <= '_') goto yy172;
+                       if (yych <= '`') goto yy3;
+                       if (yych >= '{') goto yy3;
+               }
+       }
+yy177:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 16) {
+               goto yy178;
+       }
+       if (yych <= '-') {
+               if (yych == ')') goto yy164;
+               if (yych <= ',') goto yy3;
+               goto yy172;
+       } else {
+               if (yych <= '/') {
+                       if (yych <= '.') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               }
+       }
+yy178:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+yy179:
+       if (yybm[0+yych] & 16) {
+               goto yy178;
+       }
+       if (yych <= '.') {
+               if (yych == '-') goto yy172;
+               goto yy56;
+       } else {
+               if (yych <= '/') goto yy172;
+               if (yych == '_') goto yy172;
+               goto yy56;
+       }
+yy180:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'Z') goto yy165;
+               if (yych <= '`') goto yy3;
+               if (yych <= 'z') goto yy165;
+               goto yy3;
+       }
+yy181:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+               goto yy166;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych >= 'U') goto yy166;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych != '+') goto yy3;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '-') goto yy183;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy183:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '1') goto yy184;
+       if (yych <= '2') goto yy185;
+       if (yych <= '9') goto yy186;
+       goto yy56;
+yy184:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy3;
+       if (yych <= '9') goto yy186;
+       if (yych <= ':') goto yy187;
+       goto yy3;
+yy185:
+       yych = *++YYCURSOR;
+       if (yych <= '5') {
+               if (yych <= '/') goto yy3;
+               if (yych >= '5') goto yy188;
+       } else {
+               if (yych <= '9') goto yy164;
+               if (yych <= ':') goto yy187;
+               goto yy3;
+       }
+yy186:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy3;
+       if (yych <= '5') goto yy188;
+       if (yych <= '9') goto yy164;
+       if (yych >= ';') goto yy3;
+yy187:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy3;
+       if (yych <= '5') goto yy188;
+       if (yych <= '9') goto yy164;
+       goto yy3;
+yy188:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy3;
+       if (yych <= '9') goto yy164;
+       goto yy3;
+yy189:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych <= 'C') goto yy166;
+                       if (yych >= 'E') goto yy192;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'd') goto yy190;
+                       if (yych <= 'e') goto yy192;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy190:
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= 'N') {
+               if (yych <= ')') {
+                       if (yych >= ')') goto yy164;
+               } else {
+                       if (yych <= '@') goto yy191;
+                       if (yych <= 'M') goto yy167;
+                       goto yy198;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych >= 'a') goto yy167;
+               } else {
+                       if (yych <= 'n') goto yy198;
+                       if (yych <= 'z') goto yy167;
+               }
+       }
+yy191:
+       {
+               const timelib_relunit* relunit;
+               DEBUG_OUTPUT("daytext");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_RELATIVE();
+               TIMELIB_HAVE_WEEKDAY_RELATIVE();
+               TIMELIB_UNHAVE_TIME();
+               relunit = timelib_lookup_relunit((char**) &ptr);
+               s->time->relative.weekday = relunit->multiplier;
+               if (s->time->relative.weekday_behavior != 2) {
+                       s->time->relative.weekday_behavior = 1;
+               }
+
+               TIMELIB_DEINIT;
+               return TIMELIB_WEEKDAY;
+       }
+yy192:
+       yych = *++YYCURSOR;
+       if (yych <= 'K') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'J') goto yy167;
+               }
+       } else {
+               if (yych <= 'j') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'k') goto yy193;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy193:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'C') goto yy168;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'd') goto yy194;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy194:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy169;
+                       goto yy3;
+               } else {
+                       if (yych <= 'a') goto yy195;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy195:
+       yych = *++YYCURSOR;
+       if (yych <= 'X') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'Y') goto yy196;
+               if (yych != 'y') goto yy3;
+       }
+yy196:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy197;
+       if (yych != 's') goto yy191;
+yy197:
+       yych = *++YYCURSOR;
+       goto yy191;
+yy198:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy168;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'e') goto yy199;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy199:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'R') goto yy169;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 's') goto yy200;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy200:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'D') goto yy201;
+               if (yych != 'd') goto yy3;
+       }
+yy201:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy202;
+       if (yych != 'a') goto yy56;
+yy202:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy197;
+       if (yych == 'y') goto yy197;
+       goto yy56;
+yy203:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '/') {
+                               if (yych <= '.') goto yy3;
+                               goto yy172;
+                       } else {
+                               if (yych <= '@') goto yy3;
+                               if (yych <= 'C') goto yy166;
+                               goto yy190;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+                               if (yych <= 'E') goto yy192;
+                               goto yy166;
+                       } else {
+                               if (yych == '_') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= 'c') goto yy171;
+                       } else {
+                               if (yych <= 'e') goto yy205;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy191;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'N') goto yy198;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= '`') goto yy191;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'n') goto yy211;
+                               if (yych <= 'z') goto yy175;
+                               goto yy191;
+                       }
+               }
+       }
+yy205:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'J') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'K') goto yy193;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'j') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'k') goto yy206;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy206:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'D') goto yy194;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'c') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'd') goto yy207;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy207:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'A') goto yy195;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'a') goto yy208;
+                       if (yych <= 'z') goto yy177;
+                       goto yy3;
+               }
+       }
+yy208:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Y') goto yy196;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'y') goto yy209;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy209:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '.') {
+                       if (yych == '-') goto yy172;
+                       goto yy191;
+               } else {
+                       if (yych <= '/') goto yy172;
+                       if (yych <= 'R') goto yy191;
+                       goto yy197;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych == '_') goto yy172;
+                       goto yy191;
+               } else {
+                       if (yych == 's') goto yy210;
+                       if (yych <= 'z') goto yy178;
+                       goto yy191;
+               }
+       }
+yy210:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 16) {
+               goto yy178;
+       }
+       if (yych <= '.') {
+               if (yych == '-') goto yy172;
+               goto yy191;
+       } else {
+               if (yych <= '/') goto yy172;
+               if (yych == '_') goto yy172;
+               goto yy191;
+       }
+yy211:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'E') goto yy199;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'e') goto yy212;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy212:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'S') goto yy200;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 's') goto yy213;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy213:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'D') goto yy201;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'd') goto yy214;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy214:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy202;
+       if (yych != 'a') goto yy179;
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy197;
+       if (yych == 'y') goto yy210;
+       goto yy179;
+yy216:
+       yych = *++YYCURSOR;
+       if (yych <= 'C') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'B') goto yy166;
+               }
+       } else {
+               if (yych <= 'b') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'c') goto yy217;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy217:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych >= '\t') goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                       } else {
+                               if (yych <= '-') goto yy221;
+                               if (yych <= '.') goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') {
+                               if (yych <= '9') goto yy220;
+                       } else {
+                               if (yych == 'E') goto yy225;
+                               goto yy167;
+                       }
+               } else {
+                       if (yych <= 'd') {
+                               if (yych >= 'a') goto yy167;
+                       } else {
+                               if (yych <= 'e') goto yy225;
+                               if (yych <= 'z') goto yy167;
+                       }
+               }
+       }
+yy218:
+       {
+               DEBUG_OUTPUT("monthtext");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->m = timelib_lookup_month((char **) &ptr);
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_TEXT;
+       }
+yy219:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 23) YYFILL(23);
+       yych = *YYCURSOR;
+yy220:
+       if (yybm[0+yych] & 32) {
+               goto yy219;
+       }
+       if (yych <= '/') goto yy56;
+       if (yych <= '2') goto yy222;
+       if (yych <= '3') goto yy223;
+       if (yych <= '9') goto yy224;
+       goto yy56;
+yy221:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy220;
+       if (yych <= '0') goto yy324;
+       if (yych <= '2') goto yy325;
+       if (yych <= '3') goto yy326;
+       goto yy220;
+yy222:
+       yych = *++YYCURSOR;
+       if (yych <= '9') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) {
+                               if (yych <= 0x00) goto yy238;
+                               goto yy56;
+                       } else {
+                               if (yych <= '\t') goto yy236;
+                               if (yych <= 0x1F) goto yy56;
+                               goto yy236;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych == ',') goto yy236;
+                               goto yy56;
+                       } else {
+                               if (yych <= '.') goto yy236;
+                               if (yych <= '/') goto yy56;
+                               goto yy323;
+                       }
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'd') {
+                               if (yych <= 'c') goto yy56;
+                               goto yy236;
+                       } else {
+                               if (yych == 'h') goto yy236;
+                               goto yy56;
+                       }
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= 'n') goto yy233;
+                               if (yych <= 'q') goto yy56;
+                               goto yy234;
+                       } else {
+                               if (yych <= 's') goto yy231;
+                               if (yych <= 't') goto yy235;
+                               goto yy56;
+                       }
+               }
+       }
+yy223:
+       yych = *++YYCURSOR;
+       if (yych <= '1') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) {
+                               if (yych <= 0x00) goto yy238;
+                               goto yy56;
+                       } else {
+                               if (yych <= '\t') goto yy236;
+                               if (yych <= 0x1F) goto yy56;
+                               goto yy236;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych == ',') goto yy236;
+                               goto yy56;
+                       } else {
+                               if (yych <= '.') goto yy236;
+                               if (yych <= '/') goto yy56;
+                               goto yy323;
+                       }
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'd') {
+                               if (yych <= '9') goto yy230;
+                               if (yych <= 'c') goto yy56;
+                               goto yy236;
+                       } else {
+                               if (yych == 'h') goto yy236;
+                               goto yy56;
+                       }
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= 'n') goto yy233;
+                               if (yych <= 'q') goto yy56;
+                               goto yy234;
+                       } else {
+                               if (yych <= 's') goto yy231;
+                               if (yych <= 't') goto yy235;
+                               goto yy56;
+                       }
+               }
+       }
+yy224:
+       yych = *++YYCURSOR;
+       if (yych <= '9') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) {
+                               if (yych <= 0x00) goto yy238;
+                               goto yy56;
+                       } else {
+                               if (yych <= '\t') goto yy236;
+                               if (yych <= 0x1F) goto yy56;
+                               goto yy236;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych == ',') goto yy236;
+                               goto yy56;
+                       } else {
+                               if (yych <= '.') goto yy236;
+                               if (yych <= '/') goto yy56;
+                               goto yy230;
+                       }
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'd') {
+                               if (yych <= 'c') goto yy56;
+                               goto yy236;
+                       } else {
+                               if (yych == 'h') goto yy236;
+                               goto yy56;
+                       }
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= 'n') goto yy233;
+                               if (yych <= 'q') goto yy56;
+                               goto yy234;
+                       } else {
+                               if (yych <= 's') goto yy231;
+                               if (yych <= 't') goto yy235;
+                               goto yy56;
+                       }
+               }
+       }
+yy225:
+       yych = *++YYCURSOR;
+       if (yych <= 'M') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'L') goto yy168;
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'm') goto yy226;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy226:
+       yych = *++YYCURSOR;
+       if (yych <= 'B') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'A') goto yy169;
+               }
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'b') goto yy227;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy227:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'E') goto yy228;
+               if (yych != 'e') goto yy3;
+       }
+yy228:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy229;
+       if (yych != 'r') goto yy56;
+yy229:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ' ') {
+               if (yych == '\t') goto yy220;
+               if (yych <= 0x1F) goto yy218;
+               goto yy220;
+       } else {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy218;
+                       goto yy220;
+               } else {
+                       if (yych <= '/') goto yy218;
+                       if (yych <= '9') goto yy220;
+                       goto yy218;
+               }
+       }
+yy230:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy320;
+       goto yy56;
+yy231:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 't') goto yy319;
+       goto yy237;
+yy232:
+       {
+               int length = 0;
+               DEBUG_OUTPUT("datetextual | datenoyear");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->m = timelib_get_month((char **) &ptr);
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+               TIMELIB_PROCESS_YEAR(s->time->y, length);
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_TEXT;
+       }
+yy233:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'd') goto yy319;
+       goto yy237;
+yy234:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'd') goto yy319;
+       goto yy237;
+yy235:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'h') goto yy319;
+       goto yy237;
+yy236:
+       yyaccept = 6;
+       YYMARKER = ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 18) YYFILL(18);
+       yych = *YYCURSOR;
+yy237:
+       if (yybm[0+yych] & 64) {
+               goto yy236;
+       }
+       if (yych <= '2') {
+               if (yych <= '/') goto yy232;
+               if (yych <= '0') goto yy310;
+               if (yych <= '1') goto yy311;
+               goto yy312;
+       } else {
+               if (yych <= '9') goto yy313;
+               if (yych == 'T') goto yy239;
+               goto yy232;
+       }
+yy238:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '0') {
+                       if (yych <= '/') goto yy232;
+                       goto yy240;
+               } else {
+                       if (yych <= '1') goto yy241;
+                       if (yych <= '2') goto yy242;
+                       goto yy243;
+               }
+       } else {
+               if (yych <= 'T') {
+                       if (yych <= 'S') goto yy232;
+               } else {
+                       if (yych != 't') goto yy232;
+               }
+       }
+yy239:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '1') goto yy308;
+       if (yych <= '2') goto yy309;
+       if (yych <= '9') goto yy298;
+       goto yy56;
+yy240:
+       yych = *++YYCURSOR;
+       if (yych <= '/') {
+               if (yych == '.') goto yy299;
+               goto yy56;
+       } else {
+               if (yych <= '0') goto yy298;
+               if (yych <= '9') goto yy243;
+               if (yych <= ':') goto yy299;
+               goto yy56;
+       }
+yy241:
+       yych = *++YYCURSOR;
+       if (yych <= '/') {
+               if (yych == '.') goto yy244;
+               goto yy56;
+       } else {
+               if (yych <= '2') goto yy243;
+               if (yych <= '9') goto yy298;
+               if (yych <= ':') goto yy244;
+               goto yy56;
+       }
+yy242:
+       yych = *++YYCURSOR;
+       if (yych <= '/') {
+               if (yych == '.') goto yy244;
+               goto yy56;
+       } else {
+               if (yych <= '4') goto yy298;
+               if (yych == ':') goto yy244;
+               goto yy56;
+       }
+yy243:
+       yych = *++YYCURSOR;
+       if (yych == '.') goto yy244;
+       if (yych != ':') goto yy56;
+yy244:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy245;
+       if (yych <= '9') goto yy247;
+       goto yy56;
+yy245:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych == '.') goto yy248;
+       } else {
+               if (yych <= '9') goto yy291;
+               if (yych <= ':') goto yy248;
+       }
+yy246:
+       {
+               int tz_not_found;
+               DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->m = timelib_get_month((char **) &ptr);
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+
+               TIMELIB_HAVE_TIME();
+               s->time->h = timelib_get_nr((char **) &ptr, 2);
+               s->time->i = timelib_get_nr((char **) &ptr, 2);
+               if (*ptr == ':') {
+                       s->time->s = timelib_get_nr((char **) &ptr, 2);
+
+                       if (*ptr == '.') {
+                               s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
+                       }
+               }
+
+               if (*ptr != '\0') {
+                       s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
+                       if (tz_not_found) {
+                               add_error(s, "The timezone could not be found in the database");
+                       }
+               }
+               TIMELIB_DEINIT;
+               return TIMELIB_SHORTDATE_WITH_TIME;
+       }
+yy247:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy248;
+       if (yych != ':') goto yy246;
+yy248:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy249;
+       if (yych <= '6') goto yy250;
+       if (yych <= '9') goto yy251;
+       goto yy56;
+yy249:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy246;
+       if (yych <= '9') goto yy252;
+       goto yy246;
+yy250:
+       yych = *++YYCURSOR;
+       if (yych == '0') goto yy252;
+       goto yy246;
+yy251:
+       yych = *++YYCURSOR;
+       goto yy246;
+yy252:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '*') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy254;
+                       goto yy246;
+               } else {
+                       if (yych <= ' ') goto yy254;
+                       if (yych == '(') goto yy254;
+                       goto yy246;
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych == ',') goto yy246;
+                       if (yych <= '-') goto yy254;
+                       goto yy246;
+               } else {
+                       if (yych <= 'Z') goto yy254;
+                       if (yych <= '`') goto yy246;
+                       if (yych <= 'z') goto yy254;
+                       goto yy246;
+               }
+       }
+yy253:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
+       yych = *YYCURSOR;
+yy254:
+       if (yych <= '@') {
+               if (yych <= '\'') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy56;
+                               goto yy253;
+                       } else {
+                               if (yych == ' ') goto yy253;
+                               goto yy56;
+                       }
+               } else {
+                       if (yych <= '+') {
+                               if (yych <= '(') goto yy257;
+                               if (yych <= '*') goto yy56;
+                               goto yy256;
+                       } else {
+                               if (yych == '-') goto yy256;
+                               goto yy56;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= 'G') {
+                               if (yych <= 'A') goto yy258;
+                               if (yych <= 'F') goto yy259;
+                       } else {
+                               if (yych == 'P') goto yy258;
+                               goto yy259;
+                       }
+               } else {
+                       if (yych <= 'o') {
+                               if (yych <= '`') goto yy56;
+                               if (yych <= 'a') goto yy260;
+                               goto yy261;
+                       } else {
+                               if (yych <= 'p') goto yy260;
+                               if (yych <= 'z') goto yy261;
+                               goto yy56;
+                       }
+               }
+       }
+yy255:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych == ')') goto yy251;
+               if (yych <= '@') goto yy246;
+               goto yy262;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= 'M') goto yy289;
+                       goto yy262;
+               } else {
+                       if (yych <= '`') goto yy246;
+                       if (yych <= 'z') goto yy273;
+                       goto yy246;
+               }
+       }
+yy256:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '1') goto yy284;
+       if (yych <= '2') goto yy285;
+       if (yych <= '9') goto yy286;
+       goto yy56;
+yy257:
+       yych = *++YYCURSOR;
+       if (yych <= '@') goto yy56;
+       if (yych <= 'Z') goto yy261;
+       if (yych <= '`') goto yy56;
+       if (yych <= 'z') goto yy261;
+       goto yy56;
+yy258:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'L') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy251;
+                       goto yy246;
+               } else {
+                       if (yych <= '.') goto yy267;
+                       if (yych <= '@') goto yy246;
+                       goto yy262;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'M') goto yy268;
+                       if (yych <= 'Z') goto yy262;
+                       goto yy246;
+               } else {
+                       if (yych == 'm') goto yy283;
+                       if (yych <= 'z') goto yy273;
+                       goto yy246;
+               }
+       }
+yy259:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy251;
+               goto yy246;
+       } else {
+               if (yych <= 'Z') goto yy262;
+               if (yych <= '`') goto yy246;
+               if (yych <= 'z') goto yy273;
+               goto yy246;
+       }
+yy260:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'L') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy251;
+                       goto yy246;
+               } else {
+                       if (yych <= '.') goto yy267;
+                       if (yych <= '@') goto yy246;
+                       goto yy262;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'M') goto yy268;
+                       if (yych <= 'Z') goto yy262;
+                       goto yy246;
+               } else {
+                       if (yych == 'm') goto yy268;
+                       if (yych <= 'z') goto yy262;
+                       goto yy246;
+               }
+       }
+yy261:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy251;
+               goto yy246;
+       } else {
+               if (yych <= 'Z') goto yy262;
+               if (yych <= '`') goto yy246;
+               if (yych >= '{') goto yy246;
+       }
+yy262:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy251;
+               goto yy246;
+       } else {
+               if (yych <= 'Z') goto yy263;
+               if (yych <= '`') goto yy246;
+               if (yych >= '{') goto yy246;
+       }
+yy263:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy251;
+               goto yy246;
+       } else {
+               if (yych <= 'Z') goto yy264;
+               if (yych <= '`') goto yy246;
+               if (yych >= '{') goto yy246;
+       }
+yy264:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy251;
+               goto yy246;
+       } else {
+               if (yych <= 'Z') goto yy265;
+               if (yych <= '`') goto yy246;
+               if (yych >= '{') goto yy246;
+       }
+yy265:
+       yych = *++YYCURSOR;
+       if (yych <= '@') {
+               if (yych == ')') goto yy251;
+               goto yy246;
+       } else {
+               if (yych <= 'Z') goto yy266;
+               if (yych <= '`') goto yy246;
+               if (yych >= '{') goto yy246;
+       }
+yy266:
+       yych = *++YYCURSOR;
+       if (yych == ')') goto yy251;
+       goto yy246;
+yy267:
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy272;
+       if (yych == 'm') goto yy272;
+       goto yy56;
+yy268:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ')') {
+               if (yych <= '\t') {
+                       if (yych <= 0x00) goto yy270;
+                       if (yych <= 0x08) goto yy246;
+                       goto yy270;
+               } else {
+                       if (yych == ' ') goto yy270;
+                       if (yych <= '(') goto yy246;
+                       goto yy251;
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych != '.') goto yy246;
+               } else {
+                       if (yych <= 'Z') goto yy263;
+                       if (yych <= '`') goto yy246;
+                       if (yych <= 'z') goto yy263;
+                       goto yy246;
+               }
+       }
+yy269:
+       yych = *++YYCURSOR;
+       if (yych <= '\t') {
+               if (yych <= 0x00) goto yy270;
+               if (yych <= 0x08) goto yy56;
+       } else {
+               if (yych != ' ') goto yy56;
+       }
+yy270:
+       ++YYCURSOR;
+       {
+               DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->m = timelib_get_month((char **) &ptr);
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+
+               TIMELIB_HAVE_TIME();
+               s->time->h = timelib_get_nr((char **) &ptr, 2);
+               s->time->i = timelib_get_nr((char **) &ptr, 2);
+               if (*ptr == ':' || *ptr == '.') {
+                       s->time->s = timelib_get_nr((char **) &ptr, 2);
+
+                       if (*ptr == '.') {
+                               s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
+                       }
+               }
+
+               s->time->h += timelib_meridian((char **) &ptr, s->time->h);
+               TIMELIB_DEINIT;
+               return TIMELIB_SHORTDATE_WITH_TIME;
+       }
+yy272:
+       yych = *++YYCURSOR;
+       if (yych <= 0x1F) {
+               if (yych <= 0x00) goto yy270;
+               if (yych == '\t') goto yy270;
+               goto yy56;
+       } else {
+               if (yych <= ' ') goto yy270;
+               if (yych == '.') goto yy269;
+               goto yy56;
+       }
+yy273:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy251;
+                       goto yy246;
+               } else {
+                       if (yych == '.') goto yy246;
+                       goto yy275;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '@') goto yy246;
+                       if (yych <= 'Z') goto yy263;
+                       goto yy246;
+               } else {
+                       if (yych <= '_') goto yy275;
+                       if (yych <= '`') goto yy246;
+                       if (yych >= '{') goto yy246;
+               }
+       }
+yy274:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy251;
+                       goto yy246;
+               } else {
+                       if (yych == '.') goto yy246;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '@') goto yy246;
+                       if (yych <= 'Z') goto yy264;
+                       goto yy246;
+               } else {
+                       if (yych <= '_') goto yy275;
+                       if (yych <= '`') goto yy246;
+                       if (yych <= 'z') goto yy278;
+                       goto yy246;
+               }
+       }
+yy275:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if (yych <= '@') goto yy56;
+       if (yych <= 'Z') goto yy276;
+       if (yych <= '`') goto yy56;
+       if (yych >= '{') goto yy56;
+yy276:
+       yyaccept = 7;
+       YYMARKER = ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if (yych <= '@') {
+               if (yych <= '-') {
+                       if (yych <= ',') goto yy246;
+                       goto yy275;
+               } else {
+                       if (yych == '/') goto yy275;
+                       goto yy246;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'Z') goto yy276;
+                       if (yych <= '^') goto yy246;
+                       goto yy275;
+               } else {
+                       if (yych <= '`') goto yy246;
+                       if (yych <= 'z') goto yy276;
+                       goto yy246;
+               }
+       }
+yy278:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy251;
+                       goto yy246;
+               } else {
+                       if (yych == '.') goto yy246;
+                       goto yy275;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '@') goto yy246;
+                       if (yych <= 'Z') goto yy265;
+                       goto yy246;
+               } else {
+                       if (yych <= '_') goto yy275;
+                       if (yych <= '`') goto yy246;
+                       if (yych >= '{') goto yy246;
+               }
+       }
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy251;
+                       goto yy246;
+               } else {
+                       if (yych == '.') goto yy246;
+                       goto yy275;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '@') goto yy246;
+                       if (yych <= 'Z') goto yy266;
+                       goto yy246;
+               } else {
+                       if (yych <= '_') goto yy275;
+                       if (yych <= '`') goto yy246;
+                       if (yych >= '{') goto yy246;
+               }
+       }
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy246;
+                       goto yy251;
+               } else {
+                       if (yych == '-') goto yy275;
+                       goto yy246;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= '/') goto yy275;
+                       if (yych <= '^') goto yy246;
+                       goto yy275;
+               } else {
+                       if (yych <= '`') goto yy246;
+                       if (yych >= '{') goto yy246;
+               }
+       }
+yy281:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if (yych <= '/') {
+               if (yych == '-') goto yy275;
+               if (yych <= '.') goto yy56;
+               goto yy275;
+       } else {
+               if (yych <= '_') {
+                       if (yych <= '^') goto yy56;
+                       goto yy275;
+               } else {
+                       if (yych <= '`') goto yy56;
+                       if (yych <= 'z') goto yy281;
+                       goto yy56;
+               }
+       }
+yy283:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '-') {
+               if (yych <= 0x1F) {
+                       if (yych <= 0x00) goto yy270;
+                       if (yych == '\t') goto yy270;
+                       goto yy246;
+               } else {
+                       if (yych <= '(') {
+                               if (yych <= ' ') goto yy270;
+                               goto yy246;
+                       } else {
+                               if (yych <= ')') goto yy251;
+                               if (yych <= ',') goto yy246;
+                               goto yy275;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '.') goto yy269;
+                       if (yych <= '/') goto yy275;
+                       if (yych <= '@') goto yy246;
+                       goto yy263;
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= '^') goto yy246;
+                               goto yy275;
+                       } else {
+                               if (yych <= '`') goto yy246;
+                               if (yych <= 'z') goto yy274;
+                               goto yy246;
+                       }
+               }
+       }
+yy284:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy246;
+       if (yych <= '9') goto yy286;
+       if (yych <= ':') goto yy287;
+       goto yy246;
+yy285:
+       yych = *++YYCURSOR;
+       if (yych <= '5') {
+               if (yych <= '/') goto yy246;
+               if (yych >= '5') goto yy288;
+       } else {
+               if (yych <= '9') goto yy251;
+               if (yych <= ':') goto yy287;
+               goto yy246;
+       }
+yy286:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy246;
+       if (yych <= '5') goto yy288;
+       if (yych <= '9') goto yy251;
+       if (yych >= ';') goto yy246;
+yy287:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy246;
+       if (yych <= '5') goto yy288;
+       if (yych <= '9') goto yy251;
+       goto yy246;
+yy288:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy246;
+       if (yych <= '9') goto yy251;
+       goto yy246;
+yy289:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych == ')') goto yy251;
+               if (yych <= '@') goto yy246;
+               goto yy263;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych >= 'U') goto yy263;
+               } else {
+                       if (yych <= '`') goto yy246;
+                       if (yych <= 'z') goto yy263;
+                       goto yy246;
+               }
+       }
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy246;
+                       goto yy251;
+               } else {
+                       if (yych == '+') goto yy256;
+                       goto yy246;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '-') goto yy256;
+                       if (yych <= '@') goto yy246;
+                       goto yy264;
+               } else {
+                       if (yych <= '`') goto yy246;
+                       if (yych <= 'z') goto yy264;
+                       goto yy246;
+               }
+       }
+yy291:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ':') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy292;
+                       if (yych <= 0x1F) goto yy246;
+               } else {
+                       if (yych == '.') goto yy248;
+                       if (yych <= '9') goto yy246;
+                       goto yy248;
+               }
+       } else {
+               if (yych <= 'P') {
+                       if (yych == 'A') goto yy294;
+                       if (yych <= 'O') goto yy246;
+                       goto yy294;
+               } else {
+                       if (yych <= 'a') {
+                               if (yych <= '`') goto yy246;
+                               goto yy294;
+                       } else {
+                               if (yych == 'p') goto yy294;
+                               goto yy246;
+                       }
+               }
+       }
+yy292:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+       yych = *YYCURSOR;
+       if (yych <= 'A') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy292;
+                       goto yy56;
+               } else {
+                       if (yych <= ' ') goto yy292;
+                       if (yych <= '@') goto yy56;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych != 'P') goto yy56;
+               } else {
+                       if (yych <= 'a') goto yy294;
+                       if (yych != 'p') goto yy56;
+               }
+       }
+yy294:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych != '.') goto yy56;
+       } else {
+               if (yych <= 'M') goto yy296;
+               if (yych == 'm') goto yy296;
+               goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy296;
+       if (yych != 'm') goto yy56;
+yy296:
+       yych = *++YYCURSOR;
+       if (yych <= 0x1F) {
+               if (yych <= 0x00) goto yy270;
+               if (yych == '\t') goto yy270;
+               goto yy56;
+       } else {
+               if (yych <= ' ') goto yy270;
+               if (yych != '.') goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych <= '\t') {
+               if (yych <= 0x00) goto yy270;
+               if (yych <= 0x08) goto yy56;
+               goto yy270;
+       } else {
+               if (yych == ' ') goto yy270;
+               goto yy56;
+       }
+yy298:
+       yych = *++YYCURSOR;
+       if (yych == '.') goto yy299;
+       if (yych != ':') goto yy56;
+yy299:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy300;
+       if (yych <= '9') goto yy301;
+       goto yy56;
+yy300:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych == '.') goto yy302;
+               goto yy246;
+       } else {
+               if (yych <= '9') goto yy301;
+               if (yych <= ':') goto yy302;
+               goto yy246;
+       }
+yy301:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy302;
+       if (yych != ':') goto yy246;
+yy302:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy303;
+       if (yych <= '6') goto yy304;
+       if (yych <= '9') goto yy251;
+       goto yy56;
+yy303:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy246;
+       if (yych <= '9') goto yy305;
+       goto yy246;
+yy304:
+       yych = *++YYCURSOR;
+       if (yych != '0') goto yy246;
+yy305:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '*') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy307;
+                       goto yy246;
+               } else {
+                       if (yych <= ' ') goto yy307;
+                       if (yych == '(') goto yy307;
+                       goto yy246;
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych == ',') goto yy246;
+                       if (yych <= '-') goto yy307;
+                       goto yy246;
+               } else {
+                       if (yych <= 'Z') goto yy307;
+                       if (yych <= '`') goto yy246;
+                       if (yych <= 'z') goto yy307;
+                       goto yy246;
+               }
+       }
+yy306:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
+       yych = *YYCURSOR;
+yy307:
+       if (yych <= '+') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy306;
+                       if (yych <= 0x1F) goto yy56;
+                       goto yy306;
+               } else {
+                       if (yych == '(') goto yy257;
+                       if (yych <= '*') goto yy56;
+                       goto yy256;
+               }
+       } else {
+               if (yych <= 'F') {
+                       if (yych == '-') goto yy256;
+                       if (yych <= '@') goto yy56;
+                       goto yy259;
+               } else {
+                       if (yych <= 'Z') {
+                               if (yych <= 'G') goto yy255;
+                               goto yy259;
+                       } else {
+                               if (yych <= '`') goto yy56;
+                               if (yych <= 'z') goto yy261;
+                               goto yy56;
+                       }
+               }
+       }
+yy308:
+       yych = *++YYCURSOR;
+       if (yych <= '/') {
+               if (yych == '.') goto yy299;
+               goto yy56;
+       } else {
+               if (yych <= '9') goto yy298;
+               if (yych <= ':') goto yy299;
+               goto yy56;
+       }
+yy309:
+       yych = *++YYCURSOR;
+       if (yych <= '/') {
+               if (yych == '.') goto yy299;
+               goto yy56;
+       } else {
+               if (yych <= '4') goto yy298;
+               if (yych == ':') goto yy299;
+               goto yy56;
+       }
+yy310:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych == '.') goto yy299;
+               goto yy232;
+       } else {
+               if (yych <= '0') goto yy317;
+               if (yych <= '9') goto yy318;
+               if (yych <= ':') goto yy299;
+               goto yy232;
+       }
+yy311:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych == '.') goto yy244;
+               goto yy232;
+       } else {
+               if (yych <= '2') goto yy318;
+               if (yych <= '9') goto yy317;
+               if (yych <= ':') goto yy244;
+               goto yy232;
+       }
+yy312:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych == '.') goto yy244;
+               goto yy232;
+       } else {
+               if (yych <= '4') goto yy317;
+               if (yych <= '9') goto yy314;
+               if (yych <= ':') goto yy244;
+               goto yy232;
+       }
+yy313:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych == '.') goto yy244;
+               goto yy232;
+       } else {
+               if (yych <= '9') goto yy314;
+               if (yych <= ':') goto yy244;
+               goto yy232;
+       }
+yy314:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy232;
+       if (yych >= ':') goto yy232;
+yy315:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy232;
+       if (yych >= ':') goto yy232;
+       yych = *++YYCURSOR;
+       goto yy232;
+yy317:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych == '.') goto yy299;
+               goto yy232;
+       } else {
+               if (yych <= '9') goto yy315;
+               if (yych <= ':') goto yy299;
+               goto yy232;
+       }
+yy318:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych == '.') goto yy244;
+               goto yy232;
+       } else {
+               if (yych <= '9') goto yy315;
+               if (yych <= ':') goto yy244;
+               goto yy232;
+       }
+yy319:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 0x00) goto yy238;
+       goto yy237;
+yy320:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       ++YYCURSOR;
+       {
+               int length = 0;
+               DEBUG_OUTPUT("datenoday");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->m = timelib_get_month((char **) &ptr);
+               s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+               s->time->d = 1;
+               TIMELIB_PROCESS_YEAR(s->time->y, length);
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_NO_DAY;
+       }
+yy323:
+       yych = *++YYCURSOR;
+       if (yych <= '9') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) {
+                               if (yych <= 0x00) goto yy238;
+                               goto yy56;
+                       } else {
+                               if (yych <= '\t') goto yy236;
+                               if (yych <= 0x1F) goto yy56;
+                               goto yy236;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych == ',') goto yy236;
+                               goto yy56;
+                       } else {
+                               if (yych <= '.') goto yy236;
+                               if (yych <= '/') goto yy56;
+                               goto yy320;
+                       }
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'd') {
+                               if (yych <= 'c') goto yy56;
+                               goto yy236;
+                       } else {
+                               if (yych == 'h') goto yy236;
+                               goto yy56;
+                       }
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= 'n') goto yy233;
+                               if (yych <= 'q') goto yy56;
+                               goto yy234;
+                       } else {
+                               if (yych <= 's') goto yy231;
+                               if (yych <= 't') goto yy235;
+                               goto yy56;
+                       }
+               }
+       }
+yy324:
+       yych = *++YYCURSOR;
+       if (yych <= '9') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) {
+                               if (yych <= 0x00) goto yy238;
+                               goto yy56;
+                       } else {
+                               if (yych <= '\t') goto yy236;
+                               if (yych <= 0x1F) goto yy56;
+                               goto yy236;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych == ',') goto yy236;
+                               goto yy56;
+                       } else {
+                               if (yych <= '.') goto yy236;
+                               if (yych <= '/') goto yy56;
+                               goto yy327;
+                       }
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'd') {
+                               if (yych <= 'c') goto yy56;
+                               goto yy236;
+                       } else {
+                               if (yych == 'h') goto yy236;
+                               goto yy56;
+                       }
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= 'n') goto yy233;
+                               if (yych <= 'q') goto yy56;
+                               goto yy234;
+                       } else {
+                               if (yych <= 's') goto yy231;
+                               if (yych <= 't') goto yy235;
+                               goto yy56;
+                       }
+               }
+       }
+yy325:
+       yych = *++YYCURSOR;
+       if (yych <= '9') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) {
+                               if (yych <= 0x00) goto yy238;
+                               goto yy56;
+                       } else {
+                               if (yych <= '\t') goto yy236;
+                               if (yych <= 0x1F) goto yy56;
+                               goto yy236;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych == ',') goto yy236;
+                               goto yy56;
+                       } else {
+                               if (yych <= '.') goto yy236;
+                               if (yych <= '/') goto yy56;
+                               goto yy327;
+                       }
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'd') {
+                               if (yych <= 'c') goto yy56;
+                               goto yy236;
+                       } else {
+                               if (yych == 'h') goto yy236;
+                               goto yy56;
+                       }
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= 'n') goto yy233;
+                               if (yych <= 'q') goto yy56;
+                               goto yy234;
+                       } else {
+                               if (yych <= 's') goto yy231;
+                               if (yych <= 't') goto yy235;
+                               goto yy56;
+                       }
+               }
+       }
+yy326:
+       yych = *++YYCURSOR;
+       if (yych <= '1') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) {
+                               if (yych <= 0x00) goto yy238;
+                               goto yy56;
+                       } else {
+                               if (yych <= '\t') goto yy236;
+                               if (yych <= 0x1F) goto yy56;
+                               goto yy236;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych == ',') goto yy236;
+                               goto yy56;
+                       } else {
+                               if (yych <= '.') goto yy236;
+                               if (yych <= '/') goto yy56;
+                       }
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'd') {
+                               if (yych <= '9') goto yy230;
+                               if (yych <= 'c') goto yy56;
+                               goto yy236;
+                       } else {
+                               if (yych == 'h') goto yy236;
+                               goto yy56;
+                       }
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= 'n') goto yy233;
+                               if (yych <= 'q') goto yy56;
+                               goto yy234;
+                       } else {
+                               if (yych <= 's') goto yy231;
+                               if (yych <= 't') goto yy235;
+                               goto yy56;
+                       }
+               }
+       }
+yy327:
+       yych = *++YYCURSOR;
+       if (yych <= '9') {
+               if (yych <= ' ') {
+                       if (yych <= 0x08) {
+                               if (yych <= 0x00) goto yy238;
+                               goto yy56;
+                       } else {
+                               if (yych <= '\t') goto yy236;
+                               if (yych <= 0x1F) goto yy56;
+                               goto yy236;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= '+') goto yy56;
+                               if (yych <= ',') goto yy236;
+                       } else {
+                               if (yych <= '.') goto yy236;
+                               if (yych <= '/') goto yy56;
+                               goto yy320;
+                       }
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'd') {
+                               if (yych <= 'c') goto yy56;
+                               goto yy236;
+                       } else {
+                               if (yych == 'h') goto yy236;
+                               goto yy56;
+                       }
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= 'n') goto yy233;
+                               if (yych <= 'q') goto yy56;
+                               goto yy234;
+                       } else {
+                               if (yych <= 's') goto yy231;
+                               if (yych <= 't') goto yy235;
+                               goto yy56;
+                       }
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= '/') goto yy330;
+       if (yych <= '9') goto yy331;
+yy330:
+       {
+               int length = 0;
+               DEBUG_OUTPUT("pgtextshort");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->m = timelib_get_month((char **) &ptr);
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+               TIMELIB_PROCESS_YEAR(s->time->y, length);
+               TIMELIB_DEINIT;
+               return TIMELIB_PG_TEXT;
+       }
+yy331:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy330;
+       if (yych >= ':') goto yy330;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy330;
+       if (yych >= ':') goto yy330;
+       yych = *++YYCURSOR;
+       goto yy330;
+yy334:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'B') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'C') goto yy217;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'b') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'c') goto yy335;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy335:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ')') goto yy164;
+                               if (yych <= ',') goto yy218;
+                       } else {
+                               if (yych == '/') goto yy172;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'D') {
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'E') goto yy225;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'e') goto yy337;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+yy336:
+       yych = *++YYCURSOR;
+       if (yybm[0+yych] & 8) {
+               goto yy173;
+       }
+       if (yych <= '/') goto yy220;
+       if (yych <= '0') goto yy324;
+       if (yych <= '2') goto yy325;
+       if (yych <= '3') goto yy326;
+       goto yy220;
+yy337:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'L') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'M') goto yy226;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'l') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'm') goto yy338;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy338:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'A') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'B') goto yy227;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'a') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'b') goto yy339;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy339:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'E') goto yy228;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'e') goto yy340;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy340:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy229;
+       if (yych != 'r') goto yy179;
+yy341:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 16) {
+               goto yy178;
+       }
+       if (yych <= '-') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy220;
+                       goto yy218;
+               } else {
+                       if (yych <= ' ') goto yy220;
+                       if (yych <= ',') goto yy218;
+               }
+       } else {
+               if (yych <= '9') {
+                       if (yych == '/') goto yy172;
+                       goto yy220;
+               } else {
+                       if (yych == '_') goto yy172;
+                       goto yy218;
+               }
+       }
+yy342:
+       yych = *++YYCURSOR;
+       if (yybm[0+yych] & 8) {
+               goto yy173;
+       }
+       goto yy220;
+yy343:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy166;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 't') goto yy344;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy344:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy218;
+                       } else {
+                               if (yych <= '-') goto yy221;
+                               if (yych <= '.') goto yy220;
+                               goto yy218;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') {
+                               if (yych <= '9') goto yy220;
+                               goto yy218;
+                       } else {
+                               if (yych != 'O') goto yy167;
+                       }
+               } else {
+                       if (yych <= 'n') {
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'o') goto yy345;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+yy345:
+       yych = *++YYCURSOR;
+       if (yych <= 'B') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'A') goto yy168;
+               }
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'b') goto yy346;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy346:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy169;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'e') goto yy347;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy347:
+       yych = *++YYCURSOR;
+       if (yych <= 'Q') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'R') goto yy229;
+               if (yych == 'r') goto yy229;
+               goto yy3;
+       }
+yy348:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy344;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 't') goto yy349;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy349:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ')') goto yy164;
+                               if (yych <= ',') goto yy218;
+                               goto yy336;
+                       } else {
+                               if (yych == '/') goto yy172;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'N') {
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'O') goto yy345;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= 'n') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'o') goto yy350;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+yy350:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'A') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'B') goto yy346;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'a') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'b') goto yy351;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy351:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'E') goto yy347;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'e') goto yy352;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy352:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'R') goto yy229;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'r') goto yy341;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy353:
+       yych = *++YYCURSOR;
+       if (yych <= 'G') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'F') goto yy166;
+                       goto yy361;
+               }
+       } else {
+               if (yych <= 'f') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'g') goto yy361;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy354:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Q') goto yy166;
+                       goto yy358;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'r') goto yy358;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy355:
+       yych = *++YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'N') goto yy166;
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'o') goto yy356;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy356:
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= '@') {
+               if (yych == ')') goto yy164;
+       } else {
+               if (yych <= 'Z') goto yy167;
+               if (yych <= '`') goto yy357;
+               if (yych <= 'z') goto yy167;
+       }
+yy357:
+       {
+               DEBUG_OUTPUT("ago");
+               TIMELIB_INIT;
+               s->time->relative.y = 0 - s->time->relative.y;
+               s->time->relative.m = 0 - s->time->relative.m;
+               s->time->relative.d = 0 - s->time->relative.d;
+               s->time->relative.h = 0 - s->time->relative.h;
+               s->time->relative.i = 0 - s->time->relative.i;
+               s->time->relative.s = 0 - s->time->relative.s;
+               s->time->relative.weekday = 0 - s->time->relative.weekday;
+               if (s->time->relative.weekday == 0) {
+                       s->time->relative.weekday = -7;
+               }
+               if (s->time->relative.have_special_relative && s->time->relative.special.type == TIMELIB_SPECIAL_WEEKDAY) {
+                       s->time->relative.special.amount = 0 - s->time->relative.special.amount;
+               }
+               TIMELIB_DEINIT;
+               return TIMELIB_AGO;
+       }
+yy358:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy218;
+                       } else {
+                               if (yych <= '-') goto yy221;
+                               if (yych <= '.') goto yy220;
+                               goto yy218;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') {
+                               if (yych <= '9') goto yy220;
+                               goto yy218;
+                       } else {
+                               if (yych != 'I') goto yy167;
+                       }
+               } else {
+                       if (yych <= 'h') {
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'i') goto yy359;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+yy359:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'K') goto yy168;
+               }
+       } else {
+               if (yych <= 'k') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'l') goto yy360;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy360:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy220;
+                       goto yy218;
+               } else {
+                       if (yych <= ' ') goto yy220;
+                       if (yych == ')') goto yy164;
+                       goto yy218;
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych == '/') goto yy218;
+                       if (yych <= '9') goto yy220;
+                       goto yy218;
+               } else {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy218;
+                       if (yych <= 'z') goto yy169;
+                       goto yy218;
+               }
+       }
+yy361:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy218;
+                       } else {
+                               if (yych <= '-') goto yy221;
+                               if (yych <= '.') goto yy220;
+                               goto yy218;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') {
+                               if (yych <= '9') goto yy220;
+                               goto yy218;
+                       } else {
+                               if (yych != 'U') goto yy167;
+                       }
+               } else {
+                       if (yych <= 't') {
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'u') goto yy362;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+yy362:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'R') goto yy168;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 's') goto yy363;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy363:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy169;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 't') goto yy364;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy364:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '(') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy218;
+                       goto yy220;
+               } else {
+                       if (yych == ' ') goto yy220;
+                       goto yy218;
+               }
+       } else {
+               if (yych <= '.') {
+                       if (yych <= ')') goto yy164;
+                       if (yych <= ',') goto yy218;
+                       goto yy220;
+               } else {
+                       if (yych <= '/') goto yy218;
+                       if (yych <= '9') goto yy220;
+                       goto yy218;
+               }
+       }
+yy365:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'F') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'G') goto yy361;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'f') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'g') goto yy372;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy366:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'R') goto yy358;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'q') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'r') goto yy369;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy367:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'N') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'O') goto yy356;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'n') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'o') goto yy368;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy368:
+       yyaccept = 8;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy357;
+               } else {
+                       if (yych == '.') goto yy357;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '@') goto yy357;
+                       if (yych <= 'Z') goto yy167;
+                       goto yy357;
+               } else {
+                       if (yych <= '_') goto yy172;
+                       if (yych <= '`') goto yy357;
+                       if (yych <= 'z') goto yy175;
+                       goto yy357;
+               }
+       }
+yy369:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ')') goto yy164;
+                               if (yych <= ',') goto yy218;
+                               goto yy336;
+                       } else {
+                               if (yych == '/') goto yy172;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'H') {
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'I') goto yy359;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= 'h') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'i') goto yy370;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+yy370:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'K') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'L') goto yy360;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'k') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'l') goto yy371;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy371:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy220;
+                       if (yych <= 0x1F) goto yy218;
+                       goto yy220;
+               } else {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy218;
+                               goto yy164;
+                       } else {
+                               if (yych <= ',') goto yy218;
+                               if (yych <= '-') goto yy342;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '/') goto yy172;
+                       if (yych <= '9') goto yy220;
+                       if (yych <= '@') goto yy218;
+                       goto yy169;
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= '^') goto yy218;
+                               goto yy172;
+                       } else {
+                               if (yych <= '`') goto yy218;
+                               if (yych <= 'z') goto yy177;
+                               goto yy218;
+                       }
+               }
+       }
+yy372:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ')') goto yy164;
+                               if (yych <= ',') goto yy218;
+                               goto yy336;
+                       } else {
+                               if (yych == '/') goto yy172;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'T') {
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'U') goto yy362;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= 't') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'u') goto yy373;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+yy373:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'S') goto yy363;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 's') goto yy374;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy374:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy364;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 't') goto yy375;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy375:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 16) {
+               goto yy178;
+       }
+       if (yych <= ',') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy220;
+                       goto yy218;
+               } else {
+                       if (yych <= ' ') goto yy220;
+                       if (yych == ')') goto yy164;
+                       goto yy218;
+               }
+       } else {
+               if (yych <= '/') {
+                       if (yych <= '-') goto yy342;
+                       if (yych <= '.') goto yy220;
+                       goto yy172;
+               } else {
+                       if (yych <= '9') goto yy220;
+                       if (yych == '_') goto yy172;
+                       goto yy218;
+               }
+       }
+yy376:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == 'L') goto yy383;
+                       if (yych <= 'M') goto yy166;
+                       goto yy382;
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'k') goto yy166;
+                       goto yy383;
+               } else {
+                       if (yych == 'n') goto yy382;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy377:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy166;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'n') goto yy378;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy378:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy218;
+                       } else {
+                               if (yych <= '-') goto yy221;
+                               if (yych <= '.') goto yy220;
+                               goto yy218;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') {
+                               if (yych <= '9') goto yy220;
+                               goto yy218;
+                       } else {
+                               if (yych != 'U') goto yy167;
+                       }
+               } else {
+                       if (yych <= 't') {
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'u') goto yy379;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+yy379:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy168;
+                       goto yy3;
+               } else {
+                       if (yych <= 'a') goto yy380;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy380:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Q') goto yy169;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'r') goto yy381;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy381:
+       yych = *++YYCURSOR;
+       if (yych <= 'X') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'Y') goto yy229;
+               if (yych == 'y') goto yy229;
+               goto yy3;
+       }
+yy382:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy218;
+                       } else {
+                               if (yych <= '-') goto yy221;
+                               if (yych <= '.') goto yy220;
+                               goto yy218;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') {
+                               if (yych <= '9') goto yy220;
+                               goto yy218;
+                       } else {
+                               if (yych == 'E') goto yy384;
+                               goto yy167;
+                       }
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'e') goto yy384;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+yy383:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy218;
+                       } else {
+                               if (yych <= '-') goto yy221;
+                               if (yych <= '.') goto yy220;
+                               goto yy218;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') {
+                               if (yych <= '9') goto yy220;
+                               goto yy218;
+                       } else {
+                               if (yych != 'Y') goto yy167;
+                       }
+               } else {
+                       if (yych <= 'x') {
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'y') goto yy384;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+yy384:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy220;
+                       goto yy218;
+               } else {
+                       if (yych <= ' ') goto yy220;
+                       if (yych == ')') goto yy164;
+                       goto yy218;
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych == '/') goto yy218;
+                       if (yych <= '9') goto yy220;
+                       goto yy218;
+               } else {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy218;
+                       if (yych <= 'z') goto yy168;
+                       goto yy218;
+               }
+       }
+yy385:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '.') {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy3;
+                               goto yy164;
+                       } else {
+                               if (yych == '-') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= '@') {
+                               if (yych <= '/') goto yy172;
+                               goto yy3;
+                       } else {
+                               if (yych == 'L') goto yy383;
+                               goto yy166;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+                               if (yych <= 'N') goto yy382;
+                               goto yy166;
+                       } else {
+                               if (yych == '_') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= 'm') {
+                               if (yych == 'l') goto yy392;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'n') goto yy391;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy386:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'N') goto yy378;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'n') goto yy387;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy387:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ')') goto yy164;
+                               if (yych <= ',') goto yy218;
+                               goto yy336;
+                       } else {
+                               if (yych == '/') goto yy172;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'T') {
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'U') goto yy379;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= 't') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'u') goto yy388;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+yy388:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'A') goto yy380;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'a') goto yy389;
+                       if (yych <= 'z') goto yy176;
+                       goto yy3;
+               }
+       }
+yy389:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'R') goto yy381;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'q') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'r') goto yy390;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy390:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Y') goto yy229;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'y') goto yy341;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy391:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ')') goto yy164;
+                               if (yych <= ',') goto yy218;
+                               goto yy336;
+                       } else {
+                               if (yych == '/') goto yy172;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'D') {
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'E') goto yy384;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'e') goto yy393;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+yy392:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ')') goto yy164;
+                               if (yych <= ',') goto yy218;
+                               goto yy336;
+                       } else {
+                               if (yych == '/') goto yy172;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'X') {
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'Y') goto yy384;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= 'x') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'y') goto yy393;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+yy393:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy220;
+                       if (yych <= 0x1F) goto yy218;
+                       goto yy220;
+               } else {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy218;
+                               goto yy164;
+                       } else {
+                               if (yych <= ',') goto yy218;
+                               if (yych <= '-') goto yy342;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '/') goto yy172;
+                       if (yych <= '9') goto yy220;
+                       if (yych <= '@') goto yy218;
+                       goto yy168;
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= '^') goto yy218;
+                               goto yy172;
+                       } else {
+                               if (yych <= '`') goto yy218;
+                               if (yych <= 'z') goto yy176;
+                               goto yy218;
+                       }
+               }
+       }
+yy394:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy220;
+                       if (yych <= 0x1F) goto yy3;
+                       goto yy220;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy220;
+               }
+       } else {
+               if (yych <= 'H') {
+                       if (yych <= '/') goto yy3;
+                       if (yych <= '9') goto yy220;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'Z') {
+                               if (yych >= 'J') goto yy166;
+                       } else {
+                               if (yych <= '`') goto yy3;
+                               if (yych <= 'z') goto yy166;
+                               goto yy3;
+                       }
+               }
+       }
+yy395:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy220;
+                       goto yy3;
+               } else {
+                       if (yych <= ' ') goto yy220;
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych == '/') goto yy3;
+                       if (yych <= '9') goto yy220;
+                       goto yy3;
+               } else {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy396:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy220;
+                       if (yych <= 0x1F) goto yy3;
+                       goto yy220;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy220;
+               }
+       } else {
+               if (yych <= 'H') {
+                       if (yych <= '/') goto yy3;
+                       if (yych <= '9') goto yy220;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'Z') {
+                               if (yych >= 'J') goto yy166;
+                       } else {
+                               if (yych <= '`') goto yy3;
+                               if (yych <= 'z') goto yy166;
+                               goto yy3;
+                       }
+               }
+       }
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy220;
+                       if (yych <= 0x1F) goto yy3;
+                       goto yy220;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy220;
+               }
+       } else {
+               if (yych <= 'H') {
+                       if (yych <= '/') goto yy3;
+                       if (yych <= '9') goto yy220;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'Z') {
+                               if (yych >= 'J') goto yy167;
+                       } else {
+                               if (yych <= '`') goto yy3;
+                               if (yych <= 'z') goto yy167;
+                               goto yy3;
+                       }
+               }
+       }
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy220;
+                       goto yy3;
+               } else {
+                       if (yych <= ' ') goto yy220;
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych == '/') goto yy3;
+                       if (yych <= '9') goto yy220;
+                       goto yy3;
+               } else {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy399:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy220;
+                       goto yy3;
+               } else {
+                       if (yych <= ' ') goto yy220;
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych == '/') goto yy3;
+                       if (yych <= '9') goto yy220;
+                       goto yy3;
+               } else {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy400:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy220;
+                       if (yych <= 0x1F) goto yy3;
+                       goto yy220;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy220;
+               }
+       } else {
+               if (yych <= 'H') {
+                       if (yych <= '/') goto yy3;
+                       if (yych <= '9') goto yy220;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'Z') {
+                               if (yych <= 'I') goto yy395;
+                               goto yy166;
+                       } else {
+                               if (yych <= '`') goto yy3;
+                               if (yych <= 'z') goto yy166;
+                               goto yy3;
+                       }
+               }
+       }
+yy401:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= 'D') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= '9') {
+                                       if (yych <= '/') goto yy3;
+                                       goto yy421;
+                               } else {
+                                       if (yych <= ':') goto yy187;
+                                       if (yych <= 'C') goto yy3;
+                                       goto yy60;
+                               }
+                       }
+               } else {
+                       if (yych <= 'L') {
+                               if (yych <= 'F') {
+                                       if (yych <= 'E') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'H') goto yy60;
+                                       goto yy3;
+                               }
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'M') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'V') goto yy3;
+                                       goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych == 'Y') goto yy60;
+                               if (yych <= 'c') goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'v') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               }
+       }
+yy402:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'V') {
+               if (yych <= 'C') {
+                       if (yych <= '/') {
+                               if (yych <= '\t') {
+                                       if (yych <= 0x08) goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == ' ') goto yy60;
+                                       goto yy3;
+                               }
+                       } else {
+                               if (yych <= '5') {
+                                       if (yych <= '4') goto yy421;
+                                       goto yy406;
+                               } else {
+                                       if (yych <= '9') goto yy407;
+                                       if (yych <= ':') goto yy187;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'H') {
+                               if (yych <= 'E') {
+                                       if (yych <= 'D') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'G') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'M') {
+                                       if (yych <= 'L') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych <= 'R') goto yy3;
+                                       if (yych <= 'U') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych <= 'X') {
+                                       if (yych <= 'W') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych <= 'Y') goto yy60;
+                                       if (yych <= 'c') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'v') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               }
+       }
+yy403:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'V') {
+               if (yych <= 'C') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= '5') {
+                                       if (yych <= '/') goto yy3;
+                                       goto yy406;
+                               } else {
+                                       if (yych <= '9') goto yy407;
+                                       if (yych <= ':') goto yy187;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'H') {
+                               if (yych <= 'E') {
+                                       if (yych <= 'D') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'G') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'M') {
+                                       if (yych <= 'L') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych <= 'R') goto yy3;
+                                       if (yych <= 'U') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych <= 'X') {
+                                       if (yych <= 'W') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych <= 'Y') goto yy60;
+                                       if (yych <= 'c') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'v') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               }
+       }
+yy404:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if (yybm[0+yych] & 4) {
+               goto yy57;
+       }
+       if (yych <= ',') {
+               if (yych == '+') goto yy404;
+               goto yy56;
+       } else {
+               if (yych <= '-') goto yy404;
+               if (yych <= '/') goto yy56;
+               if (yych <= '9') goto yy54;
+               goto yy56;
+       }
+yy406:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= 'E') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= '9') {
+                                       if (yych <= '/') goto yy3;
+                                       goto yy420;
+                               } else {
+                                       if (yych == 'D') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'L') {
+                               if (yych == 'G') goto yy3;
+                               if (yych <= 'H') goto yy60;
+                               goto yy3;
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'M') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'V') goto yy3;
+                                       goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych == 'Y') goto yy60;
+                               if (yych <= 'c') goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'v') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               }
+       }
+yy407:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= 'E') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= '9') {
+                                       if (yych <= '/') goto yy3;
+                               } else {
+                                       if (yych == 'D') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'L') {
+                               if (yych == 'G') goto yy3;
+                               if (yych <= 'H') goto yy60;
+                               goto yy3;
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'M') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'V') goto yy3;
+                                       goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych == 'Y') goto yy60;
+                               if (yych <= 'c') goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'v') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych >= ':') goto yy60;
+yy409:
+       yych = *++YYCURSOR;
+       if (yybm[0+yych] & 2) {
+               goto yy54;
+       }
+       if (yych != '-') goto yy60;
+yy410:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '0') goto yy411;
+       if (yych <= '1') goto yy412;
+       goto yy56;
+yy411:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy413;
+       goto yy56;
+yy412:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '3') goto yy56;
+yy413:
+       yych = *++YYCURSOR;
+       if (yych != '-') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '0') goto yy415;
+       if (yych <= '2') goto yy416;
+       if (yych <= '3') goto yy417;
+       goto yy56;
+yy415:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy418;
+       goto yy56;
+yy416:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy418;
+       goto yy56;
+yy417:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '2') goto yy56;
+yy418:
+       ++YYCURSOR;
+yy419:
+       {
+               DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->y = timelib_get_unsigned_nr((char **) &ptr, 4);
+               s->time->m = timelib_get_nr((char **) &ptr, 2);
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_DATE;
+       }
+yy420:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= 'E') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= '9') {
+                                       if (yych <= '/') goto yy3;
+                                       goto yy409;
+                               } else {
+                                       if (yych == 'D') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'L') {
+                               if (yych == 'G') goto yy3;
+                               if (yych <= 'H') goto yy60;
+                               goto yy3;
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'M') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'V') goto yy3;
+                                       goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych == 'Y') goto yy60;
+                               if (yych <= 'c') goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'v') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               }
+       }
+yy421:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'V') {
+               if (yych <= 'C') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= '5') {
+                                       if (yych <= '/') goto yy3;
+                               } else {
+                                       if (yych <= '9') goto yy420;
+                                       if (yych <= ':') goto yy187;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'H') {
+                               if (yych <= 'E') {
+                                       if (yych <= 'D') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'G') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'M') {
+                                       if (yych <= 'L') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych <= 'R') goto yy3;
+                                       if (yych <= 'U') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych <= 'X') {
+                                       if (yych <= 'W') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych <= 'Y') goto yy60;
+                                       if (yych <= 'c') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'v') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               }
+       }
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= 'E') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= '9') {
+                                       if (yych <= '/') goto yy3;
+                               } else {
+                                       if (yych == 'D') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'L') {
+                               if (yych == 'G') goto yy3;
+                               if (yych <= 'H') goto yy60;
+                               goto yy3;
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'M') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'V') goto yy3;
+                                       goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych == 'Y') goto yy60;
+                               if (yych <= 'c') goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'v') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               }
+       }
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 2) {
+               goto yy54;
+       }
+       if (yych <= 'W') {
+               if (yych <= 'E') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= '-') {
+                                       if (yych <= ',') goto yy3;
+                                       goto yy410;
+                               } else {
+                                       if (yych == 'D') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'L') {
+                               if (yych == 'G') goto yy3;
+                               if (yych <= 'H') goto yy60;
+                               goto yy3;
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'M') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'V') goto yy3;
+                                       goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych == 'Y') goto yy60;
+                               if (yych <= 'c') goto yy3;
+                               goto yy60;
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy3;
+                               } else {
+                                       if (yych == 'v') goto yy3;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy3;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy3;
+                               }
+                       }
+               }
+       }
+yy424:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy426;
+       if (yych <= '0') goto yy700;
+       if (yych <= '1') goto yy701;
+       if (yych <= '9') goto yy702;
+       goto yy426;
+yy425:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
+       yych = *YYCURSOR;
+yy426:
+       if (yych <= 'W') {
+               if (yych <= 'G') {
+                       if (yych <= '.') {
+                               if (yych <= 0x1F) {
+                                       if (yych == '\t') goto yy425;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= ' ') goto yy425;
+                                       if (yych <= ',') goto yy56;
+                                       goto yy541;
+                               }
+                       } else {
+                               if (yych <= 'C') {
+                                       if (yych == 'A') goto yy444;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'D') goto yy430;
+                                       if (yych == 'F') goto yy431;
+                                       goto yy56;
+                               }
+                       }
+               } else {
+                       if (yych <= 'O') {
+                               if (yych <= 'J') {
+                                       if (yych <= 'H') goto yy65;
+                                       if (yych <= 'I') goto yy439;
+                                       goto yy443;
+                               } else {
+                                       if (yych <= 'L') goto yy56;
+                                       if (yych <= 'M') goto yy427;
+                                       if (yych <= 'N') goto yy446;
+                                       goto yy445;
+                               }
+                       } else {
+                               if (yych <= 'S') {
+                                       if (yych <= 'P') goto yy448;
+                                       if (yych <= 'R') goto yy56;
+                                       goto yy428;
+                               } else {
+                                       if (yych <= 'T') goto yy70;
+                                       if (yych <= 'U') goto yy63;
+                                       if (yych <= 'V') goto yy441;
+                                       goto yy69;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'e') {
+                               if (yych <= '`') {
+                                       if (yych <= 'X') goto yy442;
+                                       if (yych <= 'Y') goto yy68;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'a') goto yy444;
+                                       if (yych == 'd') goto yy430;
+                                       goto yy56;
+                               }
+                       } else {
+                               if (yych <= 'h') {
+                                       if (yych <= 'f') goto yy431;
+                                       if (yych <= 'g') goto yy56;
+                                       goto yy65;
+                               } else {
+                                       if (yych == 'j') goto yy443;
+                                       if (yych <= 'l') goto yy56;
+                               }
+                       }
+               } else {
+                       if (yych <= 'u') {
+                               if (yych <= 'p') {
+                                       if (yych <= 'n') goto yy446;
+                                       if (yych <= 'o') goto yy445;
+                                       goto yy448;
+                               } else {
+                                       if (yych <= 'r') goto yy56;
+                                       if (yych <= 's') goto yy428;
+                                       if (yych <= 't') goto yy70;
+                                       goto yy63;
+                               }
+                       } else {
+                               if (yych <= 'x') {
+                                       if (yych == 'w') goto yy69;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'y') goto yy68;
+                                       if (yych == 0xC2) goto yy62;
+                                       goto yy56;
+                               }
+                       }
+               }
+       }
+yy427:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= 'I') {
+                       if (yych == 'A') goto yy556;
+                       if (yych <= 'H') goto yy56;
+                       goto yy138;
+               } else {
+                       if (yych == 'O') goto yy137;
+                       if (yych <= 'R') goto yy56;
+                       goto yy139;
+               }
+       } else {
+               if (yych <= 'i') {
+                       if (yych == 'a') goto yy556;
+                       if (yych <= 'h') goto yy56;
+                       goto yy138;
+               } else {
+                       if (yych <= 'o') {
+                               if (yych <= 'n') goto yy56;
+                               goto yy137;
+                       } else {
+                               if (yych == 's') goto yy139;
+                               goto yy56;
+                       }
+               }
+       }
+yy428:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= 'D') {
+                       if (yych == 'A') goto yy119;
+                       goto yy56;
+               } else {
+                       if (yych <= 'E') goto yy1013;
+                       if (yych <= 'T') goto yy56;
+                       goto yy118;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych == 'a') goto yy119;
+                       goto yy56;
+               } else {
+                       if (yych <= 'e') goto yy1013;
+                       if (yych == 'u') goto yy118;
+                       goto yy56;
+               }
+       }
+yy429:
+       yych = *++YYCURSOR;
+       if (yych <= '`') {
+               if (yych <= 'D') {
+                       if (yych == 'A') goto yy119;
+                       goto yy56;
+               } else {
+                       if (yych <= 'E') goto yy1013;
+                       if (yych == 'U') goto yy118;
+                       goto yy56;
+               }
+       } else {
+               if (yych <= 'e') {
+                       if (yych <= 'a') goto yy119;
+                       if (yych <= 'd') goto yy56;
+                       goto yy1013;
+               } else {
+                       if (yych <= 's') goto yy56;
+                       if (yych <= 't') goto yy693;
+                       if (yych <= 'u') goto yy118;
+                       goto yy56;
+               }
+       }
+yy430:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych == 'A') goto yy115;
+               if (yych <= 'D') goto yy56;
+               goto yy543;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy56;
+                       goto yy115;
+               } else {
+                       if (yych == 'e') goto yy543;
+                       goto yy56;
+               }
+       }
+yy431:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= 'N') {
+                       if (yych == 'E') goto yy559;
+                       goto yy56;
+               } else {
+                       if (yych <= 'O') goto yy100;
+                       if (yych <= 'Q') goto yy56;
+                       goto yy99;
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych == 'e') goto yy559;
+                       goto yy56;
+               } else {
+                       if (yych <= 'o') goto yy100;
+                       if (yych == 'r') goto yy99;
+                       goto yy56;
+               }
+       }
+yy432:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'H') goto yy71;
+               if (yych <= 'T') goto yy56;
+               goto yy72;
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= 'g') goto yy56;
+                       goto yy1012;
+               } else {
+                       if (yych == 'u') goto yy72;
+                       goto yy56;
+               }
+       }
+yy433:
+       yych = *++YYCURSOR;
+       if (yych == '-') goto yy706;
+       if (yych <= '/') goto yy60;
+       if (yych <= '9') goto yy705;
+       goto yy60;
+yy434:
+       yych = *++YYCURSOR;
+       if (yych <= 'c') {
+               if (yych == 'O') goto yy494;
+               goto yy56;
+       } else {
+               if (yych <= 'd') goto yy693;
+               if (yych == 'o') goto yy494;
+               goto yy56;
+       }
+yy435:
+       yych = *++YYCURSOR;
+       if (yych == 'd') goto yy693;
+       goto yy56;
+yy436:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':
+       case '1':
+       case '2':       goto yy630;
+       case '3':       goto yy632;
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy633;
+       case 'A':
+       case 'a':       goto yy637;
+       case 'D':
+       case 'd':       goto yy641;
+       case 'F':
+       case 'f':       goto yy635;
+       case 'J':
+       case 'j':       goto yy634;
+       case 'M':
+       case 'm':       goto yy636;
+       case 'N':
+       case 'n':       goto yy640;
+       case 'O':
+       case 'o':       goto yy639;
+       case 'S':
+       case 's':       goto yy638;
+       default:        goto yy56;
+       }
+yy437:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy580;
+       case '1':       goto yy581;
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy582;
+       case 'A':
+       case 'a':       goto yy586;
+       case 'D':
+       case 'd':       goto yy590;
+       case 'F':
+       case 'f':       goto yy584;
+       case 'J':
+       case 'j':       goto yy583;
+       case 'M':
+       case 'm':       goto yy585;
+       case 'N':
+       case 'n':       goto yy589;
+       case 'O':
+       case 'o':       goto yy588;
+       case 'S':
+       case 's':       goto yy587;
+       default:        goto yy542;
+       }
+yy438:
+       yych = *++YYCURSOR;
+       if (yych <= '1') {
+               if (yych <= '/') goto yy542;
+               if (yych <= '0') goto yy532;
+               goto yy533;
+       } else {
+               if (yych <= '5') goto yy534;
+               if (yych <= '9') goto yy535;
+               goto yy542;
+       }
+yy439:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych <= '.') goto yy496;
+               }
+       } else {
+               if (yych <= 'U') {
+                       if (yych <= '9') goto yy498;
+                       if (yych == 'I') goto yy531;
+               } else {
+                       if (yych == 'W') goto yy440;
+                       if (yych <= 'X') goto yy504;
+               }
+       }
+yy440:
+       {
+               DEBUG_OUTPUT("datenoyearrev");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               timelib_skip_day_suffix((char **) &ptr);
+               s->time->m = timelib_get_month((char **) &ptr);
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_TEXT;
+       }
+yy441:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy440;
+                       goto yy496;
+               } else {
+                       if (yych == ' ') goto yy496;
+                       goto yy440;
+               }
+       } else {
+               if (yych <= '9') {
+                       if (yych <= '.') goto yy496;
+                       if (yych <= '/') goto yy440;
+                       goto yy498;
+               } else {
+                       if (yych == 'I') goto yy529;
+                       goto yy440;
+               }
+       }
+yy442:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy440;
+                       goto yy496;
+               } else {
+                       if (yych == ' ') goto yy496;
+                       goto yy440;
+               }
+       } else {
+               if (yych <= '9') {
+                       if (yych <= '.') goto yy496;
+                       if (yych <= '/') goto yy440;
+                       goto yy498;
+               } else {
+                       if (yych == 'I') goto yy528;
+                       goto yy440;
+               }
+       }
+yy443:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'A') goto yy521;
+               if (yych <= 'T') goto yy56;
+               goto yy520;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy56;
+                       goto yy521;
+               } else {
+                       if (yych == 'u') goto yy520;
+                       goto yy56;
+               }
+       }
+yy444:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= 'L') {
+                       if (yych == '.') goto yy449;
+                       goto yy56;
+               } else {
+                       if (yych <= 'M') goto yy450;
+                       if (yych == 'P') goto yy514;
+                       goto yy56;
+               }
+       } else {
+               if (yych <= 'o') {
+                       if (yych <= 'U') goto yy513;
+                       if (yych == 'm') goto yy450;
+                       goto yy56;
+               } else {
+                       if (yych <= 'p') goto yy514;
+                       if (yych == 'u') goto yy513;
+                       goto yy56;
+               }
+       }
+yy445:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy508;
+       if (yych == 'c') goto yy508;
+       goto yy56;
+yy446:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy494;
+       if (yych == 'o') goto yy494;
+       goto yy56;
+yy447:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy454;
+       if (yych <= '9') goto yy456;
+       goto yy56;
+yy448:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych != '.') goto yy56;
+       } else {
+               if (yych <= 'M') goto yy450;
+               if (yych == 'm') goto yy450;
+               goto yy56;
+       }
+yy449:
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy450;
+       if (yych != 'm') goto yy56;
+yy450:
+       yych = *++YYCURSOR;
+       if (yych <= 0x1F) {
+               if (yych <= 0x00) goto yy452;
+               if (yych == '\t') goto yy452;
+               goto yy56;
+       } else {
+               if (yych <= ' ') goto yy452;
+               if (yych != '.') goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych <= '\t') {
+               if (yych <= 0x00) goto yy452;
+               if (yych <= 0x08) goto yy56;
+       } else {
+               if (yych != ' ') goto yy56;
+       }
+yy452:
+       ++YYCURSOR;
+       {
+               DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_TIME();
+               s->time->h = timelib_get_nr((char **) &ptr, 2);
+               if (*ptr == ':' || *ptr == '.') {
+                       s->time->i = timelib_get_nr((char **) &ptr, 2);
+                       if (*ptr == ':' || *ptr == '.') {
+                               s->time->s = timelib_get_nr((char **) &ptr, 2);
+                       }
+               }
+               s->time->h += timelib_meridian((char **) &ptr, s->time->h);
+               TIMELIB_DEINIT;
+               return TIMELIB_TIME12;
+       }
+yy454:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych == '.') goto yy457;
+       } else {
+               if (yych <= '9') goto yy471;
+               if (yych <= ':') goto yy457;
+       }
+yy455:
+       {
+               int tz_not_found;
+               DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_TIME();
+               s->time->h = timelib_get_nr((char **) &ptr, 2);
+               s->time->i = timelib_get_nr((char **) &ptr, 2);
+               if (*ptr == ':' || *ptr == '.') {
+                       s->time->s = timelib_get_nr((char **) &ptr, 2);
+
+                       if (*ptr == '.') {
+                               s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
+                       }
+               }
+
+               if (*ptr != '\0') {
+                       s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
+                       if (tz_not_found) {
+                               add_error(s, "The timezone could not be found in the database");
+                       }
+               }
+               TIMELIB_DEINIT;
+               return TIMELIB_TIME24_WITH_ZONE;
+       }
+yy456:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy457;
+       if (yych != ':') goto yy455;
+yy457:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy458;
+       if (yych <= '6') goto yy459;
+       if (yych <= '9') goto yy460;
+       goto yy56;
+yy458:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy461;
+       if (yych <= '/') goto yy455;
+       if (yych <= '9') goto yy464;
+       goto yy455;
+yy459:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy461;
+       if (yych == '0') goto yy464;
+       goto yy455;
+yy460:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych != '.') goto yy455;
+yy461:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+yy462:
+       ++YYCURSOR;
+       if (YYLIMIT <= YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if (yych <= '/') goto yy455;
+       if (yych <= '9') goto yy462;
+       goto yy455;
+yy464:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= 0x1F) {
+                       if (yych != '\t') goto yy455;
+               } else {
+                       if (yych <= ' ') goto yy465;
+                       if (yych == '.') goto yy461;
+                       goto yy455;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'A') goto yy467;
+                       if (yych == 'P') goto yy467;
+                       goto yy455;
+               } else {
+                       if (yych <= 'a') goto yy467;
+                       if (yych == 'p') goto yy467;
+                       goto yy455;
+               }
+       }
+yy465:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+       yych = *YYCURSOR;
+       if (yych <= 'A') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy465;
+                       goto yy56;
+               } else {
+                       if (yych <= ' ') goto yy465;
+                       if (yych <= '@') goto yy56;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych != 'P') goto yy56;
+               } else {
+                       if (yych <= 'a') goto yy467;
+                       if (yych != 'p') goto yy56;
+               }
+       }
+yy467:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych != '.') goto yy56;
+       } else {
+               if (yych <= 'M') goto yy469;
+               if (yych == 'm') goto yy469;
+               goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy469;
+       if (yych != 'm') goto yy56;
+yy469:
+       yych = *++YYCURSOR;
+       if (yych <= 0x1F) {
+               if (yych <= 0x00) goto yy452;
+               if (yych == '\t') goto yy452;
+               goto yy56;
+       } else {
+               if (yych <= ' ') goto yy452;
+               if (yych != '.') goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych <= '\t') {
+               if (yych <= 0x00) goto yy452;
+               if (yych <= 0x08) goto yy56;
+               goto yy452;
+       } else {
+               if (yych == ' ') goto yy452;
+               goto yy56;
+       }
+yy471:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ':') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy472;
+                       if (yych <= 0x1F) goto yy455;
+               } else {
+                       if (yych == '.') goto yy457;
+                       if (yych <= '9') goto yy455;
+                       goto yy475;
+               }
+       } else {
+               if (yych <= 'P') {
+                       if (yych == 'A') goto yy474;
+                       if (yych <= 'O') goto yy455;
+                       goto yy474;
+               } else {
+                       if (yych <= 'a') {
+                               if (yych <= '`') goto yy455;
+                               goto yy474;
+                       } else {
+                               if (yych == 'p') goto yy474;
+                               goto yy455;
+                       }
+               }
+       }
+yy472:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+       yych = *YYCURSOR;
+       if (yych <= 'A') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy472;
+                       goto yy56;
+               } else {
+                       if (yych <= ' ') goto yy472;
+                       if (yych <= '@') goto yy56;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych != 'P') goto yy56;
+               } else {
+                       if (yych <= 'a') goto yy474;
+                       if (yych != 'p') goto yy56;
+               }
+       }
+yy474:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych == '.') goto yy491;
+               goto yy56;
+       } else {
+               if (yych <= 'M') goto yy492;
+               if (yych == 'm') goto yy492;
+               goto yy56;
+       }
+yy475:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy476;
+       if (yych <= '6') goto yy477;
+       if (yych <= '9') goto yy460;
+       goto yy56;
+yy476:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy461;
+       if (yych <= '/') goto yy455;
+       if (yych <= '9') goto yy478;
+       goto yy455;
+yy477:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy461;
+       if (yych != '0') goto yy455;
+yy478:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ':') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy465;
+                       if (yych <= 0x1F) goto yy455;
+                       goto yy465;
+               } else {
+                       if (yych == '.') goto yy479;
+                       if (yych <= '9') goto yy455;
+                       goto yy480;
+               }
+       } else {
+               if (yych <= 'P') {
+                       if (yych == 'A') goto yy467;
+                       if (yych <= 'O') goto yy455;
+                       goto yy467;
+               } else {
+                       if (yych <= 'a') {
+                               if (yych <= '`') goto yy455;
+                               goto yy467;
+                       } else {
+                               if (yych == 'p') goto yy467;
+                               goto yy455;
+                       }
+               }
+       }
+yy479:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy489;
+       goto yy56;
+yy480:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+yy481:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+       yych = *YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= '9') {
+                       if (yych <= '/') goto yy56;
+                       goto yy481;
+               } else {
+                       if (yych != 'A') goto yy56;
+               }
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= 'P') goto yy483;
+                       if (yych <= '`') goto yy56;
+               } else {
+                       if (yych != 'p') goto yy56;
+               }
+       }
+yy483:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych != '.') goto yy56;
+       } else {
+               if (yych <= 'M') goto yy485;
+               if (yych == 'm') goto yy485;
+               goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy485;
+       if (yych != 'm') goto yy56;
+yy485:
+       yych = *++YYCURSOR;
+       if (yych <= 0x1F) {
+               if (yych <= 0x00) goto yy487;
+               if (yych == '\t') goto yy487;
+               goto yy56;
+       } else {
+               if (yych <= ' ') goto yy487;
+               if (yych != '.') goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych <= '\t') {
+               if (yych <= 0x00) goto yy487;
+               if (yych <= 0x08) goto yy56;
+       } else {
+               if (yych != ' ') goto yy56;
+       }
+yy487:
+       ++YYCURSOR;
+       {
+               DEBUG_OUTPUT("mssqltime");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_TIME();
+               s->time->h = timelib_get_nr((char **) &ptr, 2);
+               s->time->i = timelib_get_nr((char **) &ptr, 2);
+               if (*ptr == ':' || *ptr == '.') {
+                       s->time->s = timelib_get_nr((char **) &ptr, 2);
+
+                       if (*ptr == ':' || *ptr == '.') {
+                               s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
+                       }
+               }
+               timelib_eat_spaces((char **) &ptr);
+               s->time->h += timelib_meridian((char **) &ptr, s->time->h);
+               TIMELIB_DEINIT;
+               return TIMELIB_TIME24_WITH_ZONE;
+       }
+yy489:
+       yyaccept = 10;
+       YYMARKER = ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+       yych = *YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= '9') {
+                       if (yych <= '/') goto yy455;
+                       goto yy489;
+               } else {
+                       if (yych == 'A') goto yy483;
+                       goto yy455;
+               }
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= 'P') goto yy483;
+                       if (yych <= '`') goto yy455;
+                       goto yy483;
+               } else {
+                       if (yych == 'p') goto yy483;
+                       goto yy455;
+               }
+       }
+yy491:
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy492;
+       if (yych != 'm') goto yy56;
+yy492:
+       yych = *++YYCURSOR;
+       if (yych <= 0x1F) {
+               if (yych <= 0x00) goto yy452;
+               if (yych == '\t') goto yy452;
+               goto yy56;
+       } else {
+               if (yych <= ' ') goto yy452;
+               if (yych != '.') goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych <= '\t') {
+               if (yych <= 0x00) goto yy452;
+               if (yych <= 0x08) goto yy56;
+               goto yy452;
+       } else {
+               if (yych == ' ') goto yy452;
+               goto yy56;
+       }
+yy494:
+       yych = *++YYCURSOR;
+       if (yych == 'V') goto yy495;
+       if (yych != 'v') goto yy56;
+yy495:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych != '\t') goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+               }
+       } else {
+               if (yych <= 'D') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'E') goto yy500;
+                       if (yych == 'e') goto yy500;
+                       goto yy440;
+               }
+       }
+yy496:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+       yych = *YYCURSOR;
+yy497:
+       if (yych <= ' ') {
+               if (yych == '\t') goto yy496;
+               if (yych <= 0x1F) goto yy56;
+               goto yy496;
+       } else {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy56;
+                       goto yy496;
+               } else {
+                       if (yych <= '/') goto yy56;
+                       if (yych >= ':') goto yy56;
+               }
+       }
+yy498:
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= '/') goto yy499;
+       if (yych <= '9') goto yy505;
+yy499:
+       {
+               int length = 0;
+               DEBUG_OUTPUT("datefull");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               timelib_skip_day_suffix((char **) &ptr);
+               s->time->m = timelib_get_month((char **) &ptr);
+               s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+               TIMELIB_PROCESS_YEAR(s->time->y, length);
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_FULL;
+       }
+yy500:
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy501;
+       if (yych != 'm') goto yy56;
+yy501:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy502;
+       if (yych != 'b') goto yy56;
+yy502:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy503;
+       if (yych != 'e') goto yy56;
+yy503:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy504;
+       if (yych != 'r') goto yy56;
+yy504:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ' ') {
+               if (yych == '\t') goto yy496;
+               if (yych <= 0x1F) goto yy440;
+               goto yy496;
+       } else {
+               if (yych <= '.') {
+                       if (yych <= ',') goto yy440;
+                       goto yy496;
+               } else {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               }
+       }
+yy505:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy499;
+       if (yych >= ':') goto yy499;
+yy506:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy499;
+       if (yych >= ':') goto yy499;
+       yych = *++YYCURSOR;
+       goto yy499;
+yy508:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy509;
+       if (yych != 't') goto yy56;
+yy509:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'N') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'O') goto yy510;
+                       if (yych != 'o') goto yy440;
+               }
+       }
+yy510:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy511;
+       if (yych != 'b') goto yy56;
+yy511:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy512;
+       if (yych != 'e') goto yy56;
+yy512:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy504;
+       if (yych == 'r') goto yy504;
+       goto yy56;
+yy513:
+       yych = *++YYCURSOR;
+       if (yych == 'G') goto yy517;
+       if (yych == 'g') goto yy517;
+       goto yy56;
+yy514:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy515;
+       if (yych != 'r') goto yy56;
+yy515:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'H') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'I') goto yy516;
+                       if (yych != 'i') goto yy440;
+               }
+       }
+yy516:
+       yych = *++YYCURSOR;
+       if (yych == 'L') goto yy504;
+       if (yych == 'l') goto yy504;
+       goto yy56;
+yy517:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'T') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'U') goto yy518;
+                       if (yych != 'u') goto yy440;
+               }
+       }
+yy518:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy519;
+       if (yych != 's') goto yy56;
+yy519:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy504;
+       if (yych == 't') goto yy504;
+       goto yy56;
+yy520:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych == 'L') goto yy527;
+               if (yych <= 'M') goto yy56;
+               goto yy526;
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'k') goto yy56;
+                       goto yy527;
+               } else {
+                       if (yych == 'n') goto yy526;
+                       goto yy56;
+               }
+       }
+yy521:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy522;
+       if (yych != 'n') goto yy56;
+yy522:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'T') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'U') goto yy523;
+                       if (yych != 'u') goto yy440;
+               }
+       }
+yy523:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy524;
+       if (yych != 'a') goto yy56;
+yy524:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy525;
+       if (yych != 'r') goto yy56;
+yy525:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy504;
+       if (yych == 'y') goto yy504;
+       goto yy56;
+yy526:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'D') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'E') goto yy504;
+                       if (yych == 'e') goto yy504;
+                       goto yy440;
+               }
+       }
+yy527:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'X') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'Y') goto yy504;
+                       if (yych == 'y') goto yy504;
+                       goto yy440;
+               }
+       }
+yy528:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy440;
+                       goto yy496;
+               } else {
+                       if (yych == ' ') goto yy496;
+                       goto yy440;
+               }
+       } else {
+               if (yych <= '9') {
+                       if (yych <= '.') goto yy496;
+                       if (yych <= '/') goto yy440;
+                       goto yy498;
+               } else {
+                       if (yych == 'I') goto yy504;
+                       goto yy440;
+               }
+       }
+yy529:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy440;
+                       goto yy496;
+               } else {
+                       if (yych == ' ') goto yy496;
+                       goto yy440;
+               }
+       } else {
+               if (yych <= '9') {
+                       if (yych <= '.') goto yy496;
+                       if (yych <= '/') goto yy440;
+                       goto yy498;
+               } else {
+                       if (yych != 'I') goto yy440;
+               }
+       }
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy440;
+                       goto yy496;
+               } else {
+                       if (yych == ' ') goto yy496;
+                       goto yy440;
+               }
+       } else {
+               if (yych <= '9') {
+                       if (yych <= '.') goto yy496;
+                       if (yych <= '/') goto yy440;
+                       goto yy498;
+               } else {
+                       if (yych == 'I') goto yy504;
+                       goto yy440;
+               }
+       }
+yy531:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy440;
+                       goto yy496;
+               } else {
+                       if (yych == ' ') goto yy496;
+                       goto yy440;
+               }
+       } else {
+               if (yych <= '9') {
+                       if (yych <= '.') goto yy496;
+                       if (yych <= '/') goto yy440;
+                       goto yy498;
+               } else {
+                       if (yych == 'I') goto yy504;
+                       goto yy440;
+               }
+       }
+yy532:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ',') goto yy455;
+               if (yych <= '-') goto yy566;
+               goto yy565;
+       } else {
+               if (yych <= '/') goto yy455;
+               if (yych <= '9') goto yy579;
+               if (yych <= ':') goto yy457;
+               goto yy455;
+       }
+yy533:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') goto yy455;
+               if (yych <= '-') goto yy566;
+               if (yych <= '.') goto yy565;
+               goto yy455;
+       } else {
+               if (yych <= '2') goto yy579;
+               if (yych <= '9') goto yy578;
+               if (yych <= ':') goto yy457;
+               goto yy455;
+       }
+yy534:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ',') goto yy455;
+               if (yych <= '-') goto yy566;
+               goto yy565;
+       } else {
+               if (yych <= '/') goto yy455;
+               if (yych <= '9') goto yy578;
+               if (yych <= ':') goto yy457;
+               goto yy455;
+       }
+yy535:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ',') goto yy455;
+               if (yych <= '-') goto yy566;
+               goto yy565;
+       } else {
+               if (yych == ':') goto yy457;
+               goto yy455;
+       }
+yy536:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy559;
+       if (yych == 'e') goto yy559;
+       goto yy56;
+yy537:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy556;
+       if (yych == 'a') goto yy556;
+       goto yy56;
+yy538:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'P') goto yy514;
+               if (yych <= 'T') goto yy56;
+               goto yy513;
+       } else {
+               if (yych <= 'p') {
+                       if (yych <= 'o') goto yy56;
+                       goto yy514;
+               } else {
+                       if (yych == 'u') goto yy513;
+                       goto yy56;
+               }
+       }
+yy539:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy549;
+       if (yych == 'e') goto yy549;
+       goto yy56;
+yy540:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy543;
+       if (yych == 'e') goto yy543;
+       goto yy56;
+yy541:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
+       yych = *YYCURSOR;
+yy542:
+       switch (yych) {
+       case '\t':
+       case ' ':
+       case '-':
+       case '.':       goto yy541;
+       case 'A':
+       case 'a':       goto yy538;
+       case 'D':
+       case 'd':       goto yy540;
+       case 'F':
+       case 'f':       goto yy536;
+       case 'I':       goto yy439;
+       case 'J':
+       case 'j':       goto yy443;
+       case 'M':
+       case 'm':       goto yy537;
+       case 'N':
+       case 'n':       goto yy446;
+       case 'O':
+       case 'o':       goto yy445;
+       case 'S':
+       case 's':       goto yy539;
+       case 'V':       goto yy441;
+       case 'X':       goto yy442;
+       default:        goto yy56;
+       }
+yy543:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy544;
+       if (yych != 'c') goto yy56;
+yy544:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'D') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'E') goto yy545;
+                       if (yych != 'e') goto yy440;
+               }
+       }
+yy545:
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy546;
+       if (yych != 'm') goto yy56;
+yy546:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy547;
+       if (yych != 'b') goto yy56;
+yy547:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy548;
+       if (yych != 'e') goto yy56;
+yy548:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy504;
+       if (yych == 'r') goto yy504;
+       goto yy56;
+yy549:
+       yych = *++YYCURSOR;
+       if (yych == 'P') goto yy550;
+       if (yych != 'p') goto yy56;
+yy550:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'S') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'T') goto yy551;
+                       if (yych != 't') goto yy440;
+               }
+       }
+yy551:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'D') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'E') goto yy552;
+                       if (yych != 'e') goto yy440;
+               }
+       }
+yy552:
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy553;
+       if (yych != 'm') goto yy56;
+yy553:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy554;
+       if (yych != 'b') goto yy56;
+yy554:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy555;
+       if (yych != 'e') goto yy56;
+yy555:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy504;
+       if (yych == 'r') goto yy504;
+       goto yy56;
+yy556:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych == 'R') goto yy557;
+               if (yych <= 'X') goto yy56;
+               goto yy504;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy56;
+               } else {
+                       if (yych == 'y') goto yy504;
+                       goto yy56;
+               }
+       }
+yy557:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'B') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'C') goto yy558;
+                       if (yych != 'c') goto yy440;
+               }
+       }
+yy558:
+       yych = *++YYCURSOR;
+       if (yych == 'H') goto yy504;
+       if (yych == 'h') goto yy504;
+       goto yy56;
+yy559:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy560;
+       if (yych != 'b') goto yy56;
+yy560:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'Q') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'R') goto yy561;
+                       if (yych != 'r') goto yy440;
+               }
+       }
+yy561:
+       yych = *++YYCURSOR;
+       if (yych == 'U') goto yy562;
+       if (yych != 'u') goto yy56;
+yy562:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy563;
+       if (yych != 'a') goto yy56;
+yy563:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy564;
+       if (yych != 'r') goto yy56;
+yy564:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy504;
+       if (yych == 'y') goto yy504;
+       goto yy56;
+yy565:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy572;
+       if (yych <= '6') goto yy573;
+       if (yych <= '9') goto yy574;
+       goto yy56;
+yy566:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+yy568:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+yy569:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       ++YYCURSOR;
+       {
+               DEBUG_OUTPUT("pointed date YYYY");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               s->time->m = timelib_get_nr((char **) &ptr, 2);
+               s->time->y = timelib_get_nr((char **) &ptr, 4);
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_FULL_POINTED;
+       }
+yy572:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy461;
+       if (yych <= '/') goto yy455;
+       if (yych <= '9') goto yy577;
+       goto yy455;
+yy573:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych == '.') goto yy461;
+               goto yy455;
+       } else {
+               if (yych <= '0') goto yy577;
+               if (yych <= '9') goto yy575;
+               goto yy455;
+       }
+yy574:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy461;
+       if (yych <= '/') goto yy455;
+       if (yych >= ':') goto yy455;
+yy575:
+       yyaccept = 11;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') goto yy576;
+       if (yych <= '9') goto yy569;
+yy576:
+       {
+               int length = 0;
+               DEBUG_OUTPUT("pointed date YY");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               s->time->m = timelib_get_nr((char **) &ptr, 2);
+               s->time->y = timelib_get_nr_ex((char **) &ptr, 2, &length);
+               TIMELIB_PROCESS_YEAR(s->time->y, length);
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_FULL_POINTED;
+       }
+yy577:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy465;
+                       if (yych <= 0x1F) goto yy455;
+                       goto yy465;
+               } else {
+                       if (yych == '.') goto yy461;
+                       if (yych <= '/') goto yy455;
+                       goto yy569;
+               }
+       } else {
+               if (yych <= 'P') {
+                       if (yych == 'A') goto yy467;
+                       if (yych <= 'O') goto yy455;
+                       goto yy467;
+               } else {
+                       if (yych <= 'a') {
+                               if (yych <= '`') goto yy455;
+                               goto yy467;
+                       } else {
+                               if (yych == 'p') goto yy467;
+                               goto yy455;
+                       }
+               }
+       }
+yy578:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ':') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy472;
+                       if (yych <= 0x1F) goto yy455;
+                       goto yy472;
+               } else {
+                       if (yych == '.') goto yy457;
+                       if (yych <= '9') goto yy455;
+                       goto yy457;
+               }
+       } else {
+               if (yych <= 'P') {
+                       if (yych == 'A') goto yy474;
+                       if (yych <= 'O') goto yy455;
+                       goto yy474;
+               } else {
+                       if (yych <= 'a') {
+                               if (yych <= '`') goto yy455;
+                               goto yy474;
+                       } else {
+                               if (yych == 'p') goto yy474;
+                               goto yy455;
+                       }
+               }
+       }
+yy579:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ':') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy472;
+                       if (yych <= 0x1F) goto yy455;
+                       goto yy472;
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ',') goto yy455;
+                               goto yy566;
+                       } else {
+                               if (yych <= '.') goto yy565;
+                               if (yych <= '9') goto yy455;
+                               goto yy457;
+                       }
+               }
+       } else {
+               if (yych <= 'P') {
+                       if (yych == 'A') goto yy474;
+                       if (yych <= 'O') goto yy455;
+                       goto yy474;
+               } else {
+                       if (yych <= 'a') {
+                               if (yych <= '`') goto yy455;
+                               goto yy474;
+                       } else {
+                               if (yych == 'p') goto yy474;
+                               goto yy455;
+                       }
+               }
+       }
+yy580:
+       yych = *++YYCURSOR;
+       if (yych <= '.') {
+               if (yych <= ',') goto yy56;
+               if (yych <= '-') goto yy619;
+               goto yy566;
+       } else {
+               if (yych <= '/') goto yy56;
+               if (yych <= '9') goto yy582;
+               goto yy56;
+       }
+yy581:
+       yych = *++YYCURSOR;
+       if (yych <= '.') {
+               if (yych <= ',') goto yy56;
+               if (yych <= '-') goto yy619;
+               goto yy566;
+       } else {
+               if (yych <= '/') goto yy56;
+               if (yych >= '3') goto yy56;
+       }
+yy582:
+       yych = *++YYCURSOR;
+       if (yych <= ',') goto yy56;
+       if (yych <= '-') goto yy619;
+       if (yych <= '.') goto yy566;
+       goto yy56;
+yy583:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'A') goto yy615;
+               if (yych <= 'T') goto yy56;
+               goto yy614;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy56;
+                       goto yy615;
+               } else {
+                       if (yych == 'u') goto yy614;
+                       goto yy56;
+               }
+       }
+yy584:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy612;
+       if (yych == 'e') goto yy612;
+       goto yy56;
+yy585:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy609;
+       if (yych == 'a') goto yy609;
+       goto yy56;
+yy586:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'P') goto yy606;
+               if (yych <= 'T') goto yy56;
+               goto yy605;
+       } else {
+               if (yych <= 'p') {
+                       if (yych <= 'o') goto yy56;
+                       goto yy606;
+               } else {
+                       if (yych == 'u') goto yy605;
+                       goto yy56;
+               }
+       }
+yy587:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy602;
+       if (yych == 'e') goto yy602;
+       goto yy56;
+yy588:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy600;
+       if (yych == 'c') goto yy600;
+       goto yy56;
+yy589:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy598;
+       if (yych == 'o') goto yy598;
+       goto yy56;
+yy590:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy591;
+       if (yych != 'e') goto yy56;
+yy591:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy592;
+       if (yych != 'c') goto yy56;
+yy592:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych >= '.') goto yy496;
+               }
+       } else {
+               if (yych <= 'D') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'E') goto yy545;
+                       if (yych == 'e') goto yy545;
+                       goto yy440;
+               }
+       }
+yy593:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy497;
+       if (yych <= '0') goto yy594;
+       if (yych <= '2') goto yy595;
+       if (yych <= '3') goto yy596;
+       goto yy497;
+yy594:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy499;
+       if (yych <= '9') goto yy597;
+       goto yy499;
+yy595:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy499;
+       if (yych <= '9') goto yy597;
+       goto yy499;
+yy596:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy499;
+       if (yych <= '1') goto yy597;
+       if (yych <= '9') goto yy505;
+       goto yy499;
+yy597:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy499;
+       if (yych <= '9') goto yy506;
+       goto yy499;
+yy598:
+       yych = *++YYCURSOR;
+       if (yych == 'V') goto yy599;
+       if (yych != 'v') goto yy56;
+yy599:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych <= '-') goto yy593;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'D') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'E') goto yy500;
+                       if (yych == 'e') goto yy500;
+                       goto yy440;
+               }
+       }
+yy600:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy601;
+       if (yych != 't') goto yy56;
+yy601:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych <= '-') goto yy593;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'N') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'O') goto yy510;
+                       if (yych == 'o') goto yy510;
+                       goto yy440;
+               }
+       }
+yy602:
+       yych = *++YYCURSOR;
+       if (yych == 'P') goto yy603;
+       if (yych != 'p') goto yy56;
+yy603:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych <= '-') goto yy593;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'S') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'T') goto yy604;
+                       if (yych != 't') goto yy440;
+               }
+       }
+yy604:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych <= '-') goto yy593;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'D') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'E') goto yy552;
+                       if (yych == 'e') goto yy552;
+                       goto yy440;
+               }
+       }
+yy605:
+       yych = *++YYCURSOR;
+       if (yych == 'G') goto yy608;
+       if (yych == 'g') goto yy608;
+       goto yy56;
+yy606:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy607;
+       if (yych != 'r') goto yy56;
+yy607:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych <= '-') goto yy593;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'H') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'I') goto yy516;
+                       if (yych == 'i') goto yy516;
+                       goto yy440;
+               }
+       }
+yy608:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych <= '-') goto yy593;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'T') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'U') goto yy518;
+                       if (yych == 'u') goto yy518;
+                       goto yy440;
+               }
+       }
+yy609:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych == 'R') goto yy610;
+               if (yych <= 'X') goto yy56;
+               goto yy611;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy56;
+               } else {
+                       if (yych == 'y') goto yy611;
+                       goto yy56;
+               }
+       }
+yy610:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych <= '-') goto yy593;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'B') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'C') goto yy558;
+                       if (yych == 'c') goto yy558;
+                       goto yy440;
+               }
+       }
+yy611:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ',') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy440;
+                       goto yy496;
+               } else {
+                       if (yych == ' ') goto yy496;
+                       goto yy440;
+               }
+       } else {
+               if (yych <= '.') {
+                       if (yych <= '-') goto yy593;
+                       goto yy496;
+               } else {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               }
+       }
+yy612:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy613;
+       if (yych != 'b') goto yy56;
+yy613:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych <= '-') goto yy593;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'Q') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'R') goto yy561;
+                       if (yych == 'r') goto yy561;
+                       goto yy440;
+               }
+       }
+yy614:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych == 'L') goto yy618;
+               if (yych <= 'M') goto yy56;
+               goto yy617;
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'k') goto yy56;
+                       goto yy618;
+               } else {
+                       if (yych == 'n') goto yy617;
+                       goto yy56;
+               }
+       }
+yy615:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy616;
+       if (yych != 'n') goto yy56;
+yy616:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych <= '-') goto yy593;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'T') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'U') goto yy523;
+                       if (yych == 'u') goto yy523;
+                       goto yy440;
+               }
+       }
+yy617:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych <= '-') goto yy593;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'D') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'E') goto yy504;
+                       if (yych == 'e') goto yy504;
+                       goto yy440;
+               }
+       }
+yy618:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy496;
+                       goto yy440;
+               } else {
+                       if (yych <= ' ') goto yy496;
+                       if (yych <= ',') goto yy440;
+                       if (yych <= '-') goto yy593;
+                       goto yy496;
+               }
+       } else {
+               if (yych <= 'X') {
+                       if (yych <= '/') goto yy440;
+                       if (yych <= '9') goto yy498;
+                       goto yy440;
+               } else {
+                       if (yych <= 'Y') goto yy504;
+                       if (yych == 'y') goto yy504;
+                       goto yy440;
+               }
+       }
+yy619:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '2') goto yy620;
+       if (yych <= '3') goto yy622;
+       if (yych <= '9') goto yy623;
+       goto yy56;
+yy620:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy621;
+               if (yych <= '9') goto yy629;
+               if (yych >= 'n') goto yy625;
+       } else {
+               if (yych <= 'r') {
+                       if (yych >= 'r') goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+               }
+       }
+yy621:
+       {
+               int length = 0;
+               DEBUG_OUTPUT("gnudateshort");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+               s->time->m = timelib_get_nr((char **) &ptr, 2);
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               TIMELIB_PROCESS_YEAR(s->time->y, length);
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_DATE;
+       }
+yy622:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '1') {
+                       if (yych <= '/') goto yy621;
+                       goto yy629;
+               } else {
+                       if (yych <= '9') goto yy568;
+                       if (yych <= 'm') goto yy621;
+                       goto yy625;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy621;
+                       goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+                       goto yy621;
+               }
+       }
+yy623:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy621;
+               if (yych <= '9') goto yy568;
+               if (yych <= 'm') goto yy621;
+               goto yy625;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy621;
+                       goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+                       goto yy621;
+               }
+       }
+yy624:
+       yych = *++YYCURSOR;
+       if (yych == 't') goto yy628;
+       goto yy56;
+yy625:
+       yych = *++YYCURSOR;
+       if (yych == 'd') goto yy628;
+       goto yy56;
+yy626:
+       yych = *++YYCURSOR;
+       if (yych == 'd') goto yy628;
+       goto yy56;
+yy627:
+       yych = *++YYCURSOR;
+       if (yych != 'h') goto yy56;
+yy628:
+       yych = *++YYCURSOR;
+       goto yy621;
+yy629:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy621;
+               if (yych <= '9') goto yy569;
+               if (yych <= 'm') goto yy621;
+               goto yy625;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy621;
+                       goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+                       goto yy621;
+               }
+       }
+yy630:
+       yyaccept = 13;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') {
+                       if (yych >= '/') goto yy687;
+               } else {
+                       if (yych <= '9') goto yy633;
+                       if (yych >= 'n') goto yy684;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych >= 'r') goto yy685;
+               } else {
+                       if (yych <= 's') goto yy683;
+                       if (yych <= 't') goto yy686;
+               }
+       }
+yy631:
+       {
+               int length = 0;
+               DEBUG_OUTPUT("americanshort | american");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->m = timelib_get_nr((char **) &ptr, 2);
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               if (*ptr == '/') {
+                       s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+                       TIMELIB_PROCESS_YEAR(s->time->y, length);
+               }
+               TIMELIB_DEINIT;
+               return TIMELIB_AMERICAN;
+       }
+yy632:
+       yyaccept = 13;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') {
+                       if (yych <= '.') goto yy631;
+                       goto yy687;
+               } else {
+                       if (yych <= '1') goto yy633;
+                       if (yych <= 'm') goto yy631;
+                       goto yy684;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy631;
+                       goto yy685;
+               } else {
+                       if (yych <= 's') goto yy683;
+                       if (yych <= 't') goto yy686;
+                       goto yy631;
+               }
+       }
+yy633:
+       yyaccept = 13;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych == '/') goto yy687;
+               if (yych <= 'm') goto yy631;
+               goto yy684;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy631;
+                       goto yy685;
+               } else {
+                       if (yych <= 's') goto yy683;
+                       if (yych <= 't') goto yy686;
+                       goto yy631;
+               }
+       }
+yy634:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'A') goto yy682;
+               if (yych <= 'T') goto yy56;
+               goto yy681;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy56;
+                       goto yy682;
+               } else {
+                       if (yych == 'u') goto yy681;
+                       goto yy56;
+               }
+       }
+yy635:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy680;
+       if (yych == 'e') goto yy680;
+       goto yy56;
+yy636:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy679;
+       if (yych == 'a') goto yy679;
+       goto yy56;
+yy637:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'P') goto yy678;
+               if (yych <= 'T') goto yy56;
+               goto yy677;
+       } else {
+               if (yych <= 'p') {
+                       if (yych <= 'o') goto yy56;
+                       goto yy678;
+               } else {
+                       if (yych == 'u') goto yy677;
+                       goto yy56;
+               }
+       }
+yy638:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy675;
+       if (yych == 'e') goto yy675;
+       goto yy56;
+yy639:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy674;
+       if (yych == 'c') goto yy674;
+       goto yy56;
+yy640:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy673;
+       if (yych == 'o') goto yy673;
+       goto yy56;
+yy641:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy642;
+       if (yych != 'e') goto yy56;
+yy642:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy643;
+       if (yych != 'c') goto yy56;
+yy643:
+       yych = *++YYCURSOR;
+       if (yych != '/') goto yy56;
+yy644:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych != ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '1') goto yy650;
+       if (yych <= '2') goto yy651;
+       goto yy56;
+yy650:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy652;
+       goto yy56;
+yy651:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '5') goto yy56;
+yy652:
+       yych = *++YYCURSOR;
+       if (yych != ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '6') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych != ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy657;
+       if (yych <= '6') goto yy658;
+       goto yy56;
+yy657:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy659;
+       goto yy56;
+yy658:
+       yych = *++YYCURSOR;
+       if (yych != '0') goto yy56;
+yy659:
+       yych = *++YYCURSOR;
+       if (yych == '\t') goto yy660;
+       if (yych != ' ') goto yy56;
+yy660:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
+       yych = *YYCURSOR;
+       if (yych <= '*') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy56;
+                       goto yy660;
+               } else {
+                       if (yych == ' ') goto yy660;
+                       goto yy56;
+               }
+       } else {
+               if (yych <= '-') {
+                       if (yych == ',') goto yy56;
+                       goto yy663;
+               } else {
+                       if (yych != 'G') goto yy56;
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy671;
+       goto yy56;
+yy663:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '1') goto yy664;
+       if (yych <= '2') goto yy666;
+       if (yych <= '9') goto yy667;
+       goto yy56;
+yy664:
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= '/') goto yy665;
+       if (yych <= '9') goto yy667;
+       if (yych <= ':') goto yy668;
+yy665:
+       {
+               int tz_not_found;
+               DEBUG_OUTPUT("clf");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_TIME();
+               TIMELIB_HAVE_DATE();
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               s->time->m = timelib_get_month((char **) &ptr);
+               s->time->y = timelib_get_nr((char **) &ptr, 4);
+               s->time->h = timelib_get_nr((char **) &ptr, 2);
+               s->time->i = timelib_get_nr((char **) &ptr, 2);
+               s->time->s = timelib_get_nr((char **) &ptr, 2);
+               s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
+               if (tz_not_found) {
+                       add_error(s, "The timezone could not be found in the database");
+               }
+               TIMELIB_DEINIT;
+               return TIMELIB_CLF;
+       }
+yy666:
+       yych = *++YYCURSOR;
+       if (yych <= '5') {
+               if (yych <= '/') goto yy665;
+               if (yych >= '5') goto yy669;
+       } else {
+               if (yych <= '9') goto yy670;
+               if (yych <= ':') goto yy668;
+               goto yy665;
+       }
+yy667:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy665;
+       if (yych <= '5') goto yy669;
+       if (yych <= '9') goto yy670;
+       if (yych >= ';') goto yy665;
+yy668:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy665;
+       if (yych <= '5') goto yy669;
+       if (yych <= '9') goto yy670;
+       goto yy665;
+yy669:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy665;
+       if (yych >= ':') goto yy665;
+yy670:
+       yych = *++YYCURSOR;
+       goto yy665;
+yy671:
+       yych = *++YYCURSOR;
+       if (yych != 'T') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych == '+') goto yy663;
+       if (yych == '-') goto yy663;
+       goto yy56;
+yy673:
+       yych = *++YYCURSOR;
+       if (yych == 'V') goto yy643;
+       if (yych == 'v') goto yy643;
+       goto yy56;
+yy674:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy643;
+       if (yych == 't') goto yy643;
+       goto yy56;
+yy675:
+       yych = *++YYCURSOR;
+       if (yych == 'P') goto yy676;
+       if (yych != 'p') goto yy56;
+yy676:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych == '/') goto yy644;
+               goto yy56;
+       } else {
+               if (yych <= 'T') goto yy643;
+               if (yych == 't') goto yy643;
+               goto yy56;
+       }
+yy677:
+       yych = *++YYCURSOR;
+       if (yych == 'G') goto yy643;
+       if (yych == 'g') goto yy643;
+       goto yy56;
+yy678:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy643;
+       if (yych == 'r') goto yy643;
+       goto yy56;
+yy679:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych == 'R') goto yy643;
+               if (yych <= 'X') goto yy56;
+               goto yy643;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy56;
+                       goto yy643;
+               } else {
+                       if (yych == 'y') goto yy643;
+                       goto yy56;
+               }
+       }
+yy680:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy643;
+       if (yych == 'b') goto yy643;
+       goto yy56;
+yy681:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych == 'L') goto yy643;
+               if (yych <= 'M') goto yy56;
+               goto yy643;
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'k') goto yy56;
+                       goto yy643;
+               } else {
+                       if (yych == 'n') goto yy643;
+                       goto yy56;
+               }
+       }
+yy682:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy643;
+       if (yych == 'n') goto yy643;
+       goto yy56;
+yy683:
+       yych = *++YYCURSOR;
+       if (yych == 't') goto yy692;
+       goto yy56;
+yy684:
+       yych = *++YYCURSOR;
+       if (yych == 'd') goto yy692;
+       goto yy56;
+yy685:
+       yych = *++YYCURSOR;
+       if (yych == 'd') goto yy692;
+       goto yy56;
+yy686:
+       yych = *++YYCURSOR;
+       if (yych == 'h') goto yy692;
+       goto yy56;
+yy687:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy631;
+       if (yych >= ':') goto yy631;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy631;
+       if (yych >= ':') goto yy631;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy631;
+       if (yych >= ':') goto yy631;
+       yych = *++YYCURSOR;
+       goto yy631;
+yy692:
+       yyaccept = 13;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '/') goto yy687;
+       goto yy631;
+yy693:
+       yych = *++YYCURSOR;
+       if (yych <= ',') {
+               if (yych == '\t') goto yy695;
+               goto yy542;
+       } else {
+               if (yych <= '-') goto yy696;
+               if (yych <= '.') goto yy695;
+               if (yych >= '0') goto yy542;
+       }
+yy694:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case 'A':
+       case 'a':       goto yy637;
+       case 'D':
+       case 'd':       goto yy641;
+       case 'F':
+       case 'f':       goto yy635;
+       case 'J':
+       case 'j':       goto yy634;
+       case 'M':
+       case 'm':       goto yy636;
+       case 'N':
+       case 'n':       goto yy640;
+       case 'O':
+       case 'o':       goto yy639;
+       case 'S':
+       case 's':       goto yy638;
+       default:        goto yy56;
+       }
+yy695:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy542;
+       if (yych <= '0') goto yy700;
+       if (yych <= '1') goto yy701;
+       if (yych <= '9') goto yy702;
+       goto yy542;
+yy696:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy542;
+       if (yych <= '0') goto yy697;
+       if (yych <= '1') goto yy698;
+       if (yych <= '9') goto yy699;
+       goto yy542;
+yy697:
+       yych = *++YYCURSOR;
+       if (yych <= ',') goto yy56;
+       if (yych <= '.') goto yy566;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy699;
+       goto yy56;
+yy698:
+       yych = *++YYCURSOR;
+       if (yych <= ',') goto yy56;
+       if (yych <= '.') goto yy566;
+       if (yych <= '/') goto yy56;
+       if (yych >= '3') goto yy56;
+yy699:
+       yych = *++YYCURSOR;
+       if (yych <= ',') goto yy56;
+       if (yych <= '.') goto yy566;
+       goto yy56;
+yy700:
+       yych = *++YYCURSOR;
+       if (yych <= '.') {
+               if (yych <= ',') goto yy56;
+               if (yych <= '-') goto yy566;
+               goto yy703;
+       } else {
+               if (yych <= '/') goto yy56;
+               if (yych <= '9') goto yy702;
+               goto yy56;
+       }
+yy701:
+       yych = *++YYCURSOR;
+       if (yych <= '.') {
+               if (yych <= ',') goto yy56;
+               if (yych <= '-') goto yy566;
+               goto yy703;
+       } else {
+               if (yych <= '/') goto yy56;
+               if (yych >= '3') goto yy56;
+       }
+yy702:
+       yych = *++YYCURSOR;
+       if (yych <= ',') goto yy56;
+       if (yych <= '-') goto yy566;
+       if (yych >= '/') goto yy56;
+yy703:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy575;
+       goto yy56;
+yy705:
+       yych = *++YYCURSOR;
+       if (yych == '-') goto yy749;
+       if (yych <= '/') goto yy60;
+       if (yych <= '9') goto yy747;
+       goto yy60;
+yy706:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy715;
+       case '1':       goto yy716;
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy717;
+       case 'A':
+       case 'a':       goto yy710;
+       case 'D':
+       case 'd':       goto yy714;
+       case 'F':
+       case 'f':       goto yy708;
+       case 'J':
+       case 'j':       goto yy707;
+       case 'M':
+       case 'm':       goto yy709;
+       case 'N':
+       case 'n':       goto yy713;
+       case 'O':
+       case 'o':       goto yy712;
+       case 'S':
+       case 's':       goto yy711;
+       default:        goto yy56;
+       }
+yy707:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'A') goto yy746;
+               if (yych <= 'T') goto yy56;
+               goto yy745;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy56;
+                       goto yy746;
+               } else {
+                       if (yych == 'u') goto yy745;
+                       goto yy56;
+               }
+       }
+yy708:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy744;
+       if (yych == 'e') goto yy744;
+       goto yy56;
+yy709:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy743;
+       if (yych == 'a') goto yy743;
+       goto yy56;
+yy710:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'P') goto yy742;
+               if (yych <= 'T') goto yy56;
+               goto yy741;
+       } else {
+               if (yych <= 'p') {
+                       if (yych <= 'o') goto yy56;
+                       goto yy742;
+               } else {
+                       if (yych == 'u') goto yy741;
+                       goto yy56;
+               }
+       }
+yy711:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy739;
+       if (yych == 'e') goto yy739;
+       goto yy56;
+yy712:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy738;
+       if (yych == 'c') goto yy738;
+       goto yy56;
+yy713:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy737;
+       if (yych == 'o') goto yy737;
+       goto yy56;
+yy714:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy729;
+       if (yych == 'e') goto yy729;
+       goto yy56;
+yy715:
+       yych = *++YYCURSOR;
+       if (yych == '-') goto yy718;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy722;
+       goto yy56;
+yy716:
+       yych = *++YYCURSOR;
+       if (yych == '-') goto yy718;
+       if (yych <= '/') goto yy56;
+       if (yych <= '2') goto yy722;
+       goto yy56;
+yy717:
+       yych = *++YYCURSOR;
+       if (yych != '-') goto yy56;
+yy718:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '2') goto yy719;
+       if (yych <= '3') goto yy720;
+       if (yych <= '9') goto yy721;
+       goto yy56;
+yy719:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy621;
+               if (yych <= '9') goto yy721;
+               if (yych <= 'm') goto yy621;
+               goto yy625;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy621;
+                       goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+                       goto yy621;
+               }
+       }
+yy720:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy621;
+               if (yych <= '1') goto yy721;
+               if (yych <= 'm') goto yy621;
+               goto yy625;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy621;
+                       goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+                       goto yy621;
+               }
+       }
+yy721:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'q') {
+               if (yych == 'n') goto yy625;
+               goto yy621;
+       } else {
+               if (yych <= 'r') goto yy626;
+               if (yych <= 's') goto yy624;
+               if (yych <= 't') goto yy627;
+               goto yy621;
+       }
+yy722:
+       yych = *++YYCURSOR;
+       if (yych != '-') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '2') {
+               if (yych <= '/') goto yy56;
+               if (yych >= '1') goto yy725;
+       } else {
+               if (yych <= '3') goto yy726;
+               if (yych <= '9') goto yy721;
+               goto yy56;
+       }
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy621;
+               if (yych <= '9') goto yy727;
+               if (yych <= 'm') goto yy621;
+               goto yy625;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy621;
+                       goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+                       goto yy621;
+               }
+       }
+yy725:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy621;
+               if (yych <= '9') goto yy727;
+               if (yych <= 'm') goto yy621;
+               goto yy625;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy621;
+                       goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+                       goto yy621;
+               }
+       }
+yy726:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy621;
+               if (yych <= '1') goto yy727;
+               if (yych <= 'm') goto yy621;
+               goto yy625;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy621;
+                       goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+                       goto yy621;
+               }
+       }
+yy727:
+       yyaccept = 14;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'q') {
+               if (yych == 'n') goto yy625;
+       } else {
+               if (yych <= 'r') goto yy626;
+               if (yych <= 's') goto yy624;
+               if (yych <= 't') goto yy627;
+       }
+yy728:
+       {
+               int length = 0;
+               DEBUG_OUTPUT("iso8601date2");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+               s->time->m = timelib_get_nr((char **) &ptr, 2);
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               TIMELIB_PROCESS_YEAR(s->time->y, length);
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_DATE;
+       }
+yy729:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy730;
+       if (yych != 'c') goto yy56;
+yy730:
+       yych = *++YYCURSOR;
+       if (yych != '-') goto yy56;
+yy731:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '0') goto yy732;
+       if (yych <= '2') goto yy733;
+       if (yych <= '3') goto yy734;
+       goto yy56;
+yy732:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy735;
+       goto yy56;
+yy733:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy735;
+       goto yy56;
+yy734:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '2') goto yy56;
+yy735:
+       ++YYCURSOR;
+       {
+               int length = 0;
+               DEBUG_OUTPUT("pgtextreverse");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+               s->time->m = timelib_get_month((char **) &ptr);
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               TIMELIB_PROCESS_YEAR(s->time->y, length);
+               TIMELIB_DEINIT;
+               return TIMELIB_PG_TEXT;
+       }
+yy737:
+       yych = *++YYCURSOR;
+       if (yych == 'V') goto yy730;
+       if (yych == 'v') goto yy730;
+       goto yy56;
+yy738:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy730;
+       if (yych == 't') goto yy730;
+       goto yy56;
+yy739:
+       yych = *++YYCURSOR;
+       if (yych == 'P') goto yy740;
+       if (yych != 'p') goto yy56;
+yy740:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych == '-') goto yy731;
+               goto yy56;
+       } else {
+               if (yych <= 'T') goto yy730;
+               if (yych == 't') goto yy730;
+               goto yy56;
+       }
+yy741:
+       yych = *++YYCURSOR;
+       if (yych == 'G') goto yy730;
+       if (yych == 'g') goto yy730;
+       goto yy56;
+yy742:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy730;
+       if (yych == 'r') goto yy730;
+       goto yy56;
+yy743:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych == 'R') goto yy730;
+               if (yych <= 'X') goto yy56;
+               goto yy730;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy56;
+                       goto yy730;
+               } else {
+                       if (yych == 'y') goto yy730;
+                       goto yy56;
+               }
+       }
+yy744:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy730;
+       if (yych == 'b') goto yy730;
+       goto yy56;
+yy745:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych == 'L') goto yy730;
+               if (yych <= 'M') goto yy56;
+               goto yy730;
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'k') goto yy56;
+                       goto yy730;
+               } else {
+                       if (yych == 'n') goto yy730;
+                       goto yy56;
+               }
+       }
+yy746:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy730;
+       if (yych == 'n') goto yy730;
+       goto yy56;
+yy747:
+       yyaccept = 15;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'O') {
+               if (yych <= '3') {
+                       if (yych <= '-') {
+                               if (yych <= 0x1F) {
+                                       if (yych == '\t') goto yy755;
+                               } else {
+                                       if (yych <= ' ') goto yy755;
+                                       if (yych >= '-') goto yy752;
+                               }
+                       } else {
+                               if (yych <= '0') {
+                                       if (yych <= '.') goto yy756;
+                                       if (yych <= '/') goto yy753;
+                                       goto yy769;
+                               } else {
+                                       if (yych <= '1') goto yy770;
+                                       if (yych <= '2') goto yy772;
+                                       goto yy773;
+                               }
+                       }
+               } else {
+                       if (yych <= 'D') {
+                               if (yych <= '@') {
+                                       if (yych <= '9') goto yy54;
+                                       if (yych <= ':') goto yy771;
+                               } else {
+                                       if (yych <= 'A') goto yy755;
+                                       if (yych >= 'D') goto yy755;
+                               }
+                       } else {
+                               if (yych <= 'G') {
+                                       if (yych == 'F') goto yy755;
+                               } else {
+                                       if (yych <= 'J') goto yy755;
+                                       if (yych >= 'M') goto yy755;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= 'a') {
+                               if (yych <= 'W') {
+                                       if (yych <= 'R') goto yy748;
+                                       if (yych <= 'V') goto yy755;
+                                       goto yy774;
+                               } else {
+                                       if (yych <= 'Y') goto yy755;
+                                       if (yych >= 'a') goto yy755;
+                               }
+                       } else {
+                               if (yych <= 'e') {
+                                       if (yych == 'd') goto yy755;
+                               } else {
+                                       if (yych != 'g') goto yy755;
+                               }
+                       }
+               } else {
+                       if (yych <= 'u') {
+                               if (yych <= 'l') {
+                                       if (yych == 'j') goto yy755;
+                               } else {
+                                       if (yych <= 'o') goto yy755;
+                                       if (yych >= 's') goto yy755;
+                               }
+                       } else {
+                               if (yych <= 'x') {
+                                       if (yych == 'w') goto yy755;
+                               } else {
+                                       if (yych <= 'y') goto yy755;
+                                       if (yych == 0xC2) goto yy755;
+                               }
+                       }
+               }
+       }
+yy748:
+       {
+               DEBUG_OUTPUT("year4");
+               TIMELIB_INIT;
+               s->time->y = timelib_get_nr((char **) &ptr, 4);
+               TIMELIB_DEINIT;
+               return TIMELIB_CLF;
+       }
+yy749:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy750;
+       case '1':       goto yy751;
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy717;
+       case 'A':
+       case 'a':       goto yy710;
+       case 'D':
+       case 'd':       goto yy714;
+       case 'F':
+       case 'f':       goto yy708;
+       case 'J':
+       case 'j':       goto yy707;
+       case 'M':
+       case 'm':       goto yy709;
+       case 'N':
+       case 'n':       goto yy713;
+       case 'O':
+       case 'o':       goto yy712;
+       case 'S':
+       case 's':       goto yy711;
+       default:        goto yy56;
+       }
+yy750:
+       yych = *++YYCURSOR;
+       if (yych == '-') goto yy718;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy717;
+       goto yy56;
+yy751:
+       yych = *++YYCURSOR;
+       if (yych == '-') goto yy718;
+       if (yych <= '/') goto yy56;
+       if (yych <= '2') goto yy717;
+       goto yy56;
+yy752:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy937;
+       case '1':       goto yy939;
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy940;
+       case 'A':
+       case 'a':       goto yy931;
+       case 'D':
+       case 'd':       goto yy935;
+       case 'F':
+       case 'f':       goto yy929;
+       case 'J':
+       case 'j':       goto yy928;
+       case 'M':
+       case 'm':       goto yy930;
+       case 'N':
+       case 'n':       goto yy934;
+       case 'O':
+       case 'o':       goto yy933;
+       case 'S':
+       case 's':       goto yy932;
+       case 'W':       goto yy936;
+       default:        goto yy903;
+       }
+yy753:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '0') goto yy911;
+       if (yych <= '1') goto yy912;
+       if (yych <= '9') goto yy913;
+       goto yy56;
+yy754:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+       yych = *YYCURSOR;
+yy755:
+       if (yych <= 'W') {
+               if (yych <= 'G') {
+                       if (yych <= '.') {
+                               if (yych <= 0x1F) {
+                                       if (yych == '\t') goto yy754;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= ' ') goto yy754;
+                                       if (yych <= ',') goto yy56;
+                                       goto yy902;
+                               }
+                       } else {
+                               if (yych <= 'C') {
+                                       if (yych == 'A') goto yy764;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'D') goto yy768;
+                                       if (yych == 'F') goto yy762;
+                                       goto yy56;
+                               }
+                       }
+               } else {
+                       if (yych <= 'N') {
+                               if (yych <= 'J') {
+                                       if (yych <= 'H') goto yy65;
+                                       if (yych <= 'I') goto yy757;
+                                       goto yy761;
+                               } else {
+                                       if (yych <= 'L') goto yy56;
+                                       if (yych <= 'M') goto yy763;
+                                       goto yy767;
+                               }
+                       } else {
+                               if (yych <= 'S') {
+                                       if (yych <= 'O') goto yy766;
+                                       if (yych <= 'R') goto yy56;
+                                       goto yy765;
+                               } else {
+                                       if (yych <= 'T') goto yy70;
+                                       if (yych <= 'U') goto yy63;
+                                       if (yych <= 'V') goto yy759;
+                                       goto yy69;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych <= '`') {
+                                       if (yych <= 'X') goto yy760;
+                                       if (yych <= 'Y') goto yy68;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'a') goto yy764;
+                                       if (yych <= 'c') goto yy56;
+                                       goto yy768;
+                               }
+                       } else {
+                               if (yych <= 'g') {
+                                       if (yych == 'f') goto yy762;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'h') goto yy65;
+                                       if (yych == 'j') goto yy761;
+                                       goto yy56;
+                               }
+                       }
+               } else {
+                       if (yych <= 'u') {
+                               if (yych <= 'o') {
+                                       if (yych <= 'm') goto yy763;
+                                       if (yych <= 'n') goto yy767;
+                                       goto yy766;
+                               } else {
+                                       if (yych <= 'r') goto yy56;
+                                       if (yych <= 's') goto yy765;
+                                       if (yych <= 't') goto yy70;
+                                       goto yy63;
+                               }
+                       } else {
+                               if (yych <= 'x') {
+                                       if (yych == 'w') goto yy69;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'y') goto yy68;
+                                       if (yych == 0xC2) goto yy62;
+                                       goto yy56;
+                               }
+                       }
+               }
+       }
+yy756:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy903;
+       if (yych <= '0') goto yy895;
+       if (yych <= '2') goto yy896;
+       if (yych <= '3') goto yy897;
+       goto yy903;
+yy757:
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= 'U') {
+               if (yych == 'I') goto yy894;
+       } else {
+               if (yych == 'W') goto yy758;
+               if (yych <= 'X') goto yy848;
+       }
+yy758:
+       {
+               int length = 0;
+               DEBUG_OUTPUT("datenodayrev");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+               s->time->m = timelib_get_month((char **) &ptr);
+               s->time->d = 1;
+               TIMELIB_PROCESS_YEAR(s->time->y, length);
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_NO_DAY;
+       }
+yy759:
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy892;
+       goto yy758;
+yy760:
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy891;
+       goto yy758;
+yy761:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'A') goto yy884;
+               if (yych <= 'T') goto yy56;
+               goto yy883;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy56;
+                       goto yy884;
+               } else {
+                       if (yych == 'u') goto yy883;
+                       goto yy56;
+               }
+       }
+yy762:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= 'N') {
+                       if (yych == 'E') goto yy877;
+                       goto yy56;
+               } else {
+                       if (yych <= 'O') goto yy100;
+                       if (yych <= 'Q') goto yy56;
+                       goto yy99;
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych == 'e') goto yy877;
+                       goto yy56;
+               } else {
+                       if (yych <= 'o') goto yy100;
+                       if (yych == 'r') goto yy99;
+                       goto yy56;
+               }
+       }
+yy763:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= 'I') {
+                       if (yych == 'A') goto yy874;
+                       if (yych <= 'H') goto yy56;
+                       goto yy138;
+               } else {
+                       if (yych == 'O') goto yy137;
+                       if (yych <= 'R') goto yy56;
+                       goto yy139;
+               }
+       } else {
+               if (yych <= 'i') {
+                       if (yych == 'a') goto yy874;
+                       if (yych <= 'h') goto yy56;
+                       goto yy138;
+               } else {
+                       if (yych <= 'o') {
+                               if (yych <= 'n') goto yy56;
+                               goto yy137;
+                       } else {
+                               if (yych == 's') goto yy139;
+                               goto yy56;
+                       }
+               }
+       }
+yy764:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'P') goto yy868;
+               if (yych <= 'T') goto yy56;
+               goto yy867;
+       } else {
+               if (yych <= 'p') {
+                       if (yych <= 'o') goto yy56;
+                       goto yy868;
+               } else {
+                       if (yych == 'u') goto yy867;
+                       goto yy56;
+               }
+       }
+yy765:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= 'D') {
+                       if (yych == 'A') goto yy119;
+                       goto yy56;
+               } else {
+                       if (yych <= 'E') goto yy860;
+                       if (yych <= 'T') goto yy56;
+                       goto yy118;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych == 'a') goto yy119;
+                       goto yy56;
+               } else {
+                       if (yych <= 'e') goto yy860;
+                       if (yych == 'u') goto yy118;
+                       goto yy56;
+               }
+       }
+yy766:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy855;
+       if (yych == 'c') goto yy855;
+       goto yy56;
+yy767:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy849;
+       if (yych == 'o') goto yy849;
+       goto yy56;
+yy768:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych == 'A') goto yy115;
+               if (yych <= 'D') goto yy56;
+               goto yy842;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy56;
+                       goto yy115;
+               } else {
+                       if (yych == 'e') goto yy842;
+                       goto yy56;
+               }
+       }
+yy769:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '0') goto yy839;
+       if (yych <= '9') goto yy840;
+       goto yy60;
+yy770:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '2') goto yy808;
+       if (yych <= '9') goto yy787;
+       goto yy60;
+yy771:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '0') goto yy788;
+       if (yych <= '1') goto yy789;
+       goto yy56;
+yy772:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '9') goto yy787;
+       goto yy60;
+yy773:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '5') goto yy783;
+       if (yych <= '6') goto yy784;
+       if (yych <= '9') goto yy54;
+       goto yy60;
+yy774:
+       yych = *++YYCURSOR;
+       if (yych <= '5') {
+               if (yych <= '/') goto yy56;
+               if (yych <= '0') goto yy775;
+               if (yych <= '4') goto yy776;
+               goto yy777;
+       } else {
+               if (yych <= 'E') {
+                       if (yych <= 'D') goto yy56;
+                       goto yy84;
+               } else {
+                       if (yych == 'e') goto yy84;
+                       goto yy56;
+               }
+       }
+yy775:
+       yych = *++YYCURSOR;
+       if (yych <= '0') goto yy56;
+       if (yych <= '9') goto yy778;
+       goto yy56;
+yy776:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy778;
+       goto yy56;
+yy777:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '4') goto yy56;
+yy778:
+       yyaccept = 16;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '-') goto yy780;
+       if (yych <= '/') goto yy779;
+       if (yych <= '7') goto yy781;
+yy779:
+       {
+               timelib_sll w, d;
+               DEBUG_OUTPUT("isoweek");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               TIMELIB_HAVE_RELATIVE();
+
+               s->time->y = timelib_get_nr((char **) &ptr, 4);
+               w = timelib_get_nr((char **) &ptr, 2);
+               d = 1;
+               s->time->m = 1;
+               s->time->d = 1;
+               s->time->relative.d = timelib_daynr_from_weeknr(s->time->y, w, d);
+
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_WEEK;
+       }
+yy780:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '8') goto yy56;
+yy781:
+       ++YYCURSOR;
+       {
+               timelib_sll w, d;
+               DEBUG_OUTPUT("isoweekday");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               TIMELIB_HAVE_RELATIVE();
+
+               s->time->y = timelib_get_nr((char **) &ptr, 4);
+               w = timelib_get_nr((char **) &ptr, 2);
+               d = timelib_get_nr((char **) &ptr, 1);
+               s->time->m = 1;
+               s->time->d = 1;
+               s->time->relative.d = timelib_daynr_from_weeknr(s->time->y, w, d);
+
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_WEEK;
+       }
+yy783:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '9') goto yy785;
+       goto yy60;
+yy784:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '6') goto yy785;
+       if (yych <= '9') goto yy54;
+       goto yy60;
+yy785:
+       yyaccept = 17;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 2) {
+               goto yy54;
+       }
+       if (yych <= 'X') {
+               if (yych <= 'F') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych >= ' ') goto yy60;
+                       } else {
+                               if (yych == 'D') goto yy60;
+                               if (yych >= 'F') goto yy60;
+                       }
+               } else {
+                       if (yych <= 'M') {
+                               if (yych == 'H') goto yy60;
+                               if (yych >= 'M') goto yy60;
+                       } else {
+                               if (yych <= 'U') {
+                                       if (yych >= 'S') goto yy60;
+                               } else {
+                                       if (yych == 'W') goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'e') {
+                               if (yych <= 'Y') goto yy60;
+                               if (yych == 'd') goto yy60;
+                       } else {
+                               if (yych <= 'g') {
+                                       if (yych <= 'f') goto yy60;
+                               } else {
+                                       if (yych <= 'h') goto yy60;
+                                       if (yych >= 'm') goto yy60;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') goto yy786;
+                               if (yych != 'v') goto yy60;
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych >= 'y') goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                               }
+                       }
+               }
+       }
+yy786:
+       {
+               int length = 0;
+               DEBUG_OUTPUT("pgydotd");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+               s->time->d = timelib_get_nr((char **) &ptr, 3);
+               s->time->m = 1;
+               TIMELIB_PROCESS_YEAR(s->time->y, length);
+               TIMELIB_DEINIT;
+               return TIMELIB_PG_YEARDAY;
+       }
+yy787:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '9') goto yy785;
+       goto yy60;
+yy788:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy790;
+       goto yy56;
+yy789:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '3') goto yy56;
+yy790:
+       yych = *++YYCURSOR;
+       if (yych != ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '0') goto yy792;
+       if (yych <= '2') goto yy793;
+       if (yych <= '3') goto yy794;
+       goto yy56;
+yy792:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy795;
+       goto yy56;
+yy793:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy795;
+       goto yy56;
+yy794:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '2') goto yy56;
+yy795:
+       yych = *++YYCURSOR;
+       if (yych != ' ') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '1') goto yy797;
+       if (yych <= '2') goto yy798;
+       goto yy56;
+yy797:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy799;
+       goto yy56;
+yy798:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '5') goto yy56;
+yy799:
+       yych = *++YYCURSOR;
+       if (yych != ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '6') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych != ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy804;
+       if (yych <= '6') goto yy805;
+       goto yy56;
+yy804:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy806;
+       goto yy56;
+yy805:
+       yych = *++YYCURSOR;
+       if (yych != '0') goto yy56;
+yy806:
+       ++YYCURSOR;
+yy807:
+       {
+               int tz_not_found;
+               DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_TIME();
+               TIMELIB_HAVE_DATE();
+               s->time->y = timelib_get_nr((char **) &ptr, 4);
+               s->time->m = timelib_get_nr((char **) &ptr, 2);
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               s->time->h = timelib_get_nr((char **) &ptr, 2);
+               s->time->i = timelib_get_nr((char **) &ptr, 2);
+               s->time->s = timelib_get_nr((char **) &ptr, 2);
+               if (*ptr == '.') {
+                       s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
+                       if (*ptr) { /* timezone is optional */
+                               s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
+                               if (tz_not_found) {
+                                       add_error(s, "The timezone could not be found in the database");
+                               }
+                       }
+               }
+               TIMELIB_DEINIT;
+               return TIMELIB_XMLRPC_SOAP;
+       }
+yy808:
+       yych = *++YYCURSOR;
+       if (yych <= '2') {
+               if (yych <= '/') goto yy60;
+               if (yych >= '1') goto yy810;
+       } else {
+               if (yych <= '3') goto yy811;
+               if (yych <= '9') goto yy785;
+               goto yy60;
+       }
+yy809:
+       yyaccept = 17;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= 'E') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy786;
+                               goto yy60;
+                       } else {
+                               if (yych <= '9') {
+                                       if (yych <= '/') goto yy786;
+                                       goto yy812;
+                               } else {
+                                       if (yych == 'D') goto yy60;
+                                       goto yy786;
+                               }
+                       }
+               } else {
+                       if (yych <= 'L') {
+                               if (yych == 'G') goto yy786;
+                               if (yych <= 'H') goto yy60;
+                               goto yy786;
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'M') goto yy60;
+                                       goto yy786;
+                               } else {
+                                       if (yych == 'V') goto yy786;
+                                       goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych == 'Y') goto yy60;
+                               if (yych <= 'c') goto yy786;
+                               goto yy60;
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy786;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy786;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy786;
+                               } else {
+                                       if (yych == 'v') goto yy786;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy786;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy786;
+                               }
+                       }
+               }
+       }
+yy810:
+       yyaccept = 17;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= 'E') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy786;
+                               goto yy60;
+                       } else {
+                               if (yych <= '9') {
+                                       if (yych <= '/') goto yy786;
+                                       goto yy812;
+                               } else {
+                                       if (yych == 'D') goto yy60;
+                                       goto yy786;
+                               }
+                       }
+               } else {
+                       if (yych <= 'L') {
+                               if (yych == 'G') goto yy786;
+                               if (yych <= 'H') goto yy60;
+                               goto yy786;
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'M') goto yy60;
+                                       goto yy786;
+                               } else {
+                                       if (yych == 'V') goto yy786;
+                                       goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych == 'Y') goto yy60;
+                               if (yych <= 'c') goto yy786;
+                               goto yy60;
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy786;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy786;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy786;
+                               } else {
+                                       if (yych == 'v') goto yy786;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy786;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy786;
+                               }
+                       }
+               }
+       }
+yy811:
+       yyaccept = 17;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= 'D') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy786;
+                               goto yy60;
+                       } else {
+                               if (yych <= '1') {
+                                       if (yych <= '/') goto yy786;
+                               } else {
+                                       if (yych <= '9') goto yy54;
+                                       if (yych <= 'C') goto yy786;
+                                       goto yy60;
+                               }
+                       }
+               } else {
+                       if (yych <= 'L') {
+                               if (yych <= 'F') {
+                                       if (yych <= 'E') goto yy786;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'H') goto yy60;
+                                       goto yy786;
+                               }
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'M') goto yy60;
+                                       goto yy786;
+                               } else {
+                                       if (yych == 'V') goto yy786;
+                                       goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych == 'Y') goto yy60;
+                               if (yych <= 'c') goto yy786;
+                               goto yy60;
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy786;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy786;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy786;
+                               } else {
+                                       if (yych == 'v') goto yy786;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy786;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy786;
+                               }
+                       }
+               }
+       }
+yy812:
+       yyaccept = 18;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 2) {
+               goto yy54;
+       }
+       if (yych <= 'X') {
+               if (yych <= 'G') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy59;
+                               if (yych >= ' ') goto yy59;
+                       } else {
+                               if (yych <= 'D') {
+                                       if (yych >= 'D') goto yy66;
+                               } else {
+                                       if (yych == 'F') goto yy67;
+                               }
+                       }
+               } else {
+                       if (yych <= 'S') {
+                               if (yych <= 'L') {
+                                       if (yych <= 'H') goto yy65;
+                               } else {
+                                       if (yych <= 'M') goto yy61;
+                                       if (yych >= 'S') goto yy64;
+                               }
+                       } else {
+                               if (yych <= 'U') {
+                                       if (yych <= 'T') goto yy814;
+                                       goto yy63;
+                               } else {
+                                       if (yych == 'W') goto yy69;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'f') {
+                               if (yych <= 'c') {
+                                       if (yych <= 'Y') goto yy68;
+                               } else {
+                                       if (yych <= 'd') goto yy66;
+                                       if (yych >= 'f') goto yy67;
+                               }
+                       } else {
+                               if (yych <= 'h') {
+                                       if (yych >= 'h') goto yy65;
+                               } else {
+                                       if (yych == 'm') goto yy61;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 't') {
+                                       if (yych <= 's') goto yy64;
+                                       goto yy815;
+                               } else {
+                                       if (yych <= 'u') goto yy63;
+                                       if (yych >= 'w') goto yy69;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych >= 'y') goto yy68;
+                               } else {
+                                       if (yych == 0xC2) goto yy62;
+                               }
+                       }
+               }
+       }
+yy813:
+       {
+               DEBUG_OUTPUT("datenocolon");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->y = timelib_get_nr((char **) &ptr, 4);
+               s->time->m = timelib_get_nr((char **) &ptr, 2);
+               s->time->d = timelib_get_nr((char **) &ptr, 2);
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_NOCOLON;
+       }
+yy814:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= '2') {
+                       if (yych <= '/') goto yy56;
+                       if (yych <= '1') goto yy829;
+                       goto yy830;
+               } else {
+                       if (yych <= '9') goto yy831;
+                       if (yych <= 'G') goto yy56;
+                       goto yy71;
+               }
+       } else {
+               if (yych <= 'g') {
+                       if (yych == 'U') goto yy72;
+                       goto yy56;
+               } else {
+                       if (yych <= 'h') goto yy71;
+                       if (yych == 'u') goto yy72;
+                       goto yy56;
+               }
+       }
+yy815:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= '2') {
+                       if (yych <= '/') goto yy56;
+                       if (yych >= '2') goto yy817;
+               } else {
+                       if (yych <= '9') goto yy818;
+                       if (yych <= 'G') goto yy56;
+                       goto yy71;
+               }
+       } else {
+               if (yych <= 'g') {
+                       if (yych == 'U') goto yy72;
+                       goto yy56;
+               } else {
+                       if (yych <= 'h') goto yy71;
+                       if (yych == 'u') goto yy72;
+                       goto yy56;
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy823;
+       if (yych <= '9') goto yy818;
+       goto yy56;
+yy817:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '4') goto yy823;
+       if (yych <= '5') goto yy819;
+       goto yy56;
+yy818:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '6') goto yy56;
+yy819:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+yy820:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy821;
+       if (yych <= '6') goto yy822;
+       goto yy56;
+yy821:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy806;
+       goto yy56;
+yy822:
+       yych = *++YYCURSOR;
+       if (yych == '0') goto yy806;
+       goto yy56;
+yy823:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy824;
+       if (yych <= '9') goto yy820;
+       goto yy56;
+yy824:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy825;
+       if (yych <= '6') goto yy826;
+       if (yych <= '9') goto yy820;
+       goto yy56;
+yy825:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy827;
+       if (yych <= '6') goto yy828;
+       if (yych <= '9') goto yy806;
+       goto yy56;
+yy826:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '0') goto yy827;
+       if (yych <= '5') goto yy821;
+       if (yych <= '6') goto yy822;
+       goto yy56;
+yy827:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy807;
+       if (yych <= '9') goto yy806;
+       goto yy807;
+yy828:
+       yych = *++YYCURSOR;
+       if (yych == '0') goto yy806;
+       goto yy807;
+yy829:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy838;
+       if (yych <= '9') goto yy831;
+       if (yych <= ':') goto yy832;
+       goto yy56;
+yy830:
+       yych = *++YYCURSOR;
+       if (yych <= '5') {
+               if (yych <= '/') goto yy56;
+               if (yych <= '4') goto yy838;
+               goto yy819;
+       } else {
+               if (yych == ':') goto yy832;
+               goto yy56;
+       }
+yy831:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy819;
+       if (yych != ':') goto yy56;
+yy832:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '6') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych != ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy836;
+       if (yych <= '6') goto yy837;
+       goto yy56;
+yy836:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy806;
+       goto yy56;
+yy837:
+       yych = *++YYCURSOR;
+       if (yych == '0') goto yy806;
+       goto yy56;
+yy838:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy824;
+       if (yych <= '9') goto yy820;
+       if (yych <= ':') goto yy832;
+       goto yy56;
+yy839:
+       yych = *++YYCURSOR;
+       if (yych <= '2') {
+               if (yych <= '/') goto yy60;
+               if (yych <= '0') goto yy841;
+               goto yy810;
+       } else {
+               if (yych <= '3') goto yy811;
+               if (yych <= '9') goto yy785;
+               goto yy60;
+       }
+yy840:
+       yych = *++YYCURSOR;
+       if (yych <= '2') {
+               if (yych <= '/') goto yy60;
+               if (yych <= '0') goto yy809;
+               goto yy810;
+       } else {
+               if (yych <= '3') goto yy811;
+               if (yych <= '9') goto yy785;
+               goto yy60;
+       }
+yy841:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '9') goto yy812;
+       goto yy60;
+yy842:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy843;
+       if (yych != 'c') goto yy56;
+yy843:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'E') goto yy844;
+       if (yych != 'e') goto yy758;
+yy844:
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy845;
+       if (yych != 'm') goto yy56;
+yy845:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy846;
+       if (yych != 'b') goto yy56;
+yy846:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy847;
+       if (yych != 'e') goto yy56;
+yy847:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy848;
+       if (yych != 'r') goto yy56;
+yy848:
+       yych = *++YYCURSOR;
+       goto yy758;
+yy849:
+       yych = *++YYCURSOR;
+       if (yych == 'V') goto yy850;
+       if (yych != 'v') goto yy56;
+yy850:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'E') goto yy851;
+       if (yych != 'e') goto yy758;
+yy851:
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy852;
+       if (yych != 'm') goto yy56;
+yy852:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy853;
+       if (yych != 'b') goto yy56;
+yy853:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy854;
+       if (yych != 'e') goto yy56;
+yy854:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy848;
+       if (yych == 'r') goto yy848;
+       goto yy56;
+yy855:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy856;
+       if (yych != 't') goto yy56;
+yy856:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'O') goto yy857;
+       if (yych != 'o') goto yy758;
+yy857:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy858;
+       if (yych != 'b') goto yy56;
+yy858:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy859;
+       if (yych != 'e') goto yy56;
+yy859:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy848;
+       if (yych == 'r') goto yy848;
+       goto yy56;
+yy860:
+       yych = *++YYCURSOR;
+       if (yych <= 'P') {
+               if (yych == 'C') goto yy121;
+               if (yych <= 'O') goto yy56;
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'b') goto yy56;
+                       goto yy121;
+               } else {
+                       if (yych != 'p') goto yy56;
+               }
+       }
+yy861:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy862;
+       if (yych != 't') goto yy758;
+yy862:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'E') goto yy863;
+       if (yych != 'e') goto yy758;
+yy863:
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy864;
+       if (yych != 'm') goto yy56;
+yy864:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy865;
+       if (yych != 'b') goto yy56;
+yy865:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy866;
+       if (yych != 'e') goto yy56;
+yy866:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy848;
+       if (yych == 'r') goto yy848;
+       goto yy56;
+yy867:
+       yych = *++YYCURSOR;
+       if (yych == 'G') goto yy871;
+       if (yych == 'g') goto yy871;
+       goto yy56;
+yy868:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy869;
+       if (yych != 'r') goto yy56;
+yy869:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'I') goto yy870;
+       if (yych != 'i') goto yy758;
+yy870:
+       yych = *++YYCURSOR;
+       if (yych == 'L') goto yy848;
+       if (yych == 'l') goto yy848;
+       goto yy56;
+yy871:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'U') goto yy872;
+       if (yych != 'u') goto yy758;
+yy872:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy873;
+       if (yych != 's') goto yy56;
+yy873:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy848;
+       if (yych == 't') goto yy848;
+       goto yy56;
+yy874:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych == 'R') goto yy875;
+               if (yych <= 'X') goto yy56;
+               goto yy848;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy56;
+               } else {
+                       if (yych == 'y') goto yy848;
+                       goto yy56;
+               }
+       }
+yy875:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'C') goto yy876;
+       if (yych != 'c') goto yy758;
+yy876:
+       yych = *++YYCURSOR;
+       if (yych == 'H') goto yy848;
+       if (yych == 'h') goto yy848;
+       goto yy56;
+yy877:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy878;
+       if (yych != 'b') goto yy56;
+yy878:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'R') goto yy879;
+       if (yych != 'r') goto yy758;
+yy879:
+       yych = *++YYCURSOR;
+       if (yych == 'U') goto yy880;
+       if (yych != 'u') goto yy56;
+yy880:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy881;
+       if (yych != 'a') goto yy56;
+yy881:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy882;
+       if (yych != 'r') goto yy56;
+yy882:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy848;
+       if (yych == 'y') goto yy848;
+       goto yy56;
+yy883:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych == 'L') goto yy890;
+               if (yych <= 'M') goto yy56;
+               goto yy889;
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'k') goto yy56;
+                       goto yy890;
+               } else {
+                       if (yych == 'n') goto yy889;
+                       goto yy56;
+               }
+       }
+yy884:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy885;
+       if (yych != 'n') goto yy56;
+yy885:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'U') goto yy886;
+       if (yych != 'u') goto yy758;
+yy886:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy887;
+       if (yych != 'a') goto yy56;
+yy887:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy888;
+       if (yych != 'r') goto yy56;
+yy888:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy848;
+       if (yych == 'y') goto yy848;
+       goto yy56;
+yy889:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy848;
+       if (yych == 'e') goto yy848;
+       goto yy758;
+yy890:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy848;
+       if (yych == 'y') goto yy848;
+       goto yy758;
+yy891:
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy848;
+       goto yy758;
+yy892:
+       yych = *++YYCURSOR;
+       if (yych != 'I') goto yy758;
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy848;
+       goto yy758;
+yy894:
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy848;
+       goto yy758;
+yy895:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '0') goto yy910;
+       if (yych <= '9') goto yy909;
+       goto yy56;
+yy896:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy908;
+       goto yy56;
+yy897:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy906;
+       if (yych <= '6') goto yy905;
+       goto yy56;
+yy898:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy877;
+       if (yych == 'e') goto yy877;
+       goto yy56;
+yy899:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy874;
+       if (yych == 'a') goto yy874;
+       goto yy56;
+yy900:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy904;
+       if (yych == 'e') goto yy904;
+       goto yy56;
+yy901:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy842;
+       if (yych == 'e') goto yy842;
+       goto yy56;
+yy902:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
+       yych = *YYCURSOR;
+yy903:
+       switch (yych) {
+       case '\t':
+       case ' ':
+       case '-':
+       case '.':       goto yy902;
+       case 'A':
+       case 'a':       goto yy764;
+       case 'D':
+       case 'd':       goto yy901;
+       case 'F':
+       case 'f':       goto yy898;
+       case 'I':       goto yy757;
+       case 'J':
+       case 'j':       goto yy761;
+       case 'M':
+       case 'm':       goto yy899;
+       case 'N':
+       case 'n':       goto yy767;
+       case 'O':
+       case 'o':       goto yy766;
+       case 'S':
+       case 's':       goto yy900;
+       case 'V':       goto yy759;
+       case 'X':       goto yy760;
+       default:        goto yy56;
+       }
+yy904:
+       yych = *++YYCURSOR;
+       if (yych == 'P') goto yy861;
+       if (yych == 'p') goto yy861;
+       goto yy56;
+yy905:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '6') goto yy907;
+       goto yy56;
+yy906:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+yy907:
+       yych = *++YYCURSOR;
+       goto yy786;
+yy908:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy907;
+       goto yy56;
+yy909:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy907;
+       goto yy56;
+yy910:
+       yych = *++YYCURSOR;
+       if (yych <= '0') goto yy56;
+       if (yych <= '9') goto yy907;
+       goto yy56;
+yy911:
+       yych = *++YYCURSOR;
+       if (yych <= '.') goto yy56;
+       if (yych <= '/') goto yy914;
+       if (yych <= '9') goto yy922;
+       goto yy56;
+yy912:
+       yych = *++YYCURSOR;
+       if (yych <= '.') goto yy56;
+       if (yych <= '/') goto yy914;
+       if (yych <= '2') goto yy922;
+       goto yy56;
+yy913:
+       yych = *++YYCURSOR;
+       if (yych != '/') goto yy56;
+yy914:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '2') goto yy915;
+       if (yych <= '3') goto yy916;
+       if (yych <= '9') goto yy917;
+       goto yy56;
+yy915:
+       yyaccept = 20;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy419;
+               if (yych <= '9') goto yy917;
+               if (yych <= 'm') goto yy419;
+               goto yy919;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy419;
+                       goto yy920;
+               } else {
+                       if (yych <= 's') goto yy918;
+                       if (yych <= 't') goto yy921;
+                       goto yy419;
+               }
+       }
+yy916:
+       yyaccept = 20;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy419;
+               if (yych <= '1') goto yy917;
+               if (yych <= 'm') goto yy419;
+               goto yy919;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy419;
+                       goto yy920;
+               } else {
+                       if (yych <= 's') goto yy918;
+                       if (yych <= 't') goto yy921;
+                       goto yy419;
+               }
+       }
+yy917:
+       yyaccept = 20;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'q') {
+               if (yych == 'n') goto yy919;
+               goto yy419;
+       } else {
+               if (yych <= 'r') goto yy920;
+               if (yych <= 's') goto yy918;
+               if (yych <= 't') goto yy921;
+               goto yy419;
+       }
+yy918:
+       yych = *++YYCURSOR;
+       if (yych == 't') goto yy418;
+       goto yy56;
+yy919:
+       yych = *++YYCURSOR;
+       if (yych == 'd') goto yy418;
+       goto yy56;
+yy920:
+       yych = *++YYCURSOR;
+       if (yych == 'd') goto yy418;
+       goto yy56;
+yy921:
+       yych = *++YYCURSOR;
+       if (yych == 'h') goto yy418;
+       goto yy56;
+yy922:
+       yych = *++YYCURSOR;
+       if (yych != '/') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '2') {
+               if (yych <= '/') goto yy56;
+               if (yych >= '1') goto yy925;
+       } else {
+               if (yych <= '3') goto yy926;
+               if (yych <= '9') goto yy917;
+               goto yy56;
+       }
+       yyaccept = 20;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy419;
+               if (yych <= '9') goto yy927;
+               if (yych <= 'm') goto yy419;
+               goto yy919;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy419;
+                       goto yy920;
+               } else {
+                       if (yych <= 's') goto yy918;
+                       if (yych <= 't') goto yy921;
+                       goto yy419;
+               }
+       }
+yy925:
+       yyaccept = 20;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy419;
+               if (yych <= '9') goto yy927;
+               if (yych <= 'm') goto yy419;
+               goto yy919;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy419;
+                       goto yy920;
+               } else {
+                       if (yych <= 's') goto yy918;
+                       if (yych <= 't') goto yy921;
+                       goto yy419;
+               }
+       }
+yy926:
+       yyaccept = 20;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy419;
+               if (yych <= '1') goto yy927;
+               if (yych <= 'm') goto yy419;
+               goto yy919;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy419;
+                       goto yy920;
+               } else {
+                       if (yych <= 's') goto yy918;
+                       if (yych <= 't') goto yy921;
+                       goto yy419;
+               }
+       }
+yy927:
+       yyaccept = 20;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych == '/') goto yy418;
+               if (yych <= 'm') goto yy419;
+               goto yy919;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy419;
+                       goto yy920;
+               } else {
+                       if (yych <= 's') goto yy918;
+                       if (yych <= 't') goto yy921;
+                       goto yy419;
+               }
+       }
+yy928:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'A') goto yy1008;
+               if (yych <= 'T') goto yy56;
+               goto yy1007;
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= '`') goto yy56;
+                       goto yy1008;
+               } else {
+                       if (yych == 'u') goto yy1007;
+                       goto yy56;
+               }
+       }
+yy929:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy1005;
+       if (yych == 'e') goto yy1005;
+       goto yy56;
+yy930:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1002;
+       if (yych == 'a') goto yy1002;
+       goto yy56;
+yy931:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'P') goto yy999;
+               if (yych <= 'T') goto yy56;
+               goto yy998;
+       } else {
+               if (yych <= 'p') {
+                       if (yych <= 'o') goto yy56;
+                       goto yy999;
+               } else {
+                       if (yych == 'u') goto yy998;
+                       goto yy56;
+               }
+       }
+yy932:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy995;
+       if (yych == 'e') goto yy995;
+       goto yy56;
+yy933:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy993;
+       if (yych == 'c') goto yy993;
+       goto yy56;
+yy934:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy991;
+       if (yych == 'o') goto yy991;
+       goto yy56;
+yy935:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy989;
+       if (yych == 'e') goto yy989;
+       goto yy56;
+yy936:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '0') goto yy775;
+       if (yych <= '4') goto yy776;
+       if (yych <= '5') goto yy777;
+       goto yy56;
+yy937:
+       yyaccept = 21;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '-') goto yy941;
+       if (yych <= '/') goto yy938;
+       if (yych <= '9') goto yy960;
+yy938:
+       {
+               int length = 0;
+               DEBUG_OUTPUT("gnudateshorter");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
+               s->time->m = timelib_get_nr((char **) &ptr, 2);
+               s->time->d = 1;
+               TIMELIB_PROCESS_YEAR(s->time->y, length);
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_DATE;
+       }
+yy939:
+       yyaccept = 21;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '-') goto yy941;
+       if (yych <= '/') goto yy938;
+       if (yych <= '2') goto yy960;
+       goto yy938;
+yy940:
+       yyaccept = 21;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych != '-') goto yy938;
+yy941:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '2') goto yy942;
+       if (yych <= '3') goto yy943;
+       if (yych <= '9') goto yy944;
+       goto yy56;
+yy942:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'm') {
+               if (yych <= '9') {
+                       if (yych <= '/') goto yy621;
+                       goto yy944;
+               } else {
+                       if (yych == 'T') goto yy949;
+                       goto yy621;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'n') goto yy946;
+                       if (yych <= 'q') goto yy621;
+                       goto yy947;
+               } else {
+                       if (yych <= 's') goto yy945;
+                       if (yych <= 't') goto yy948;
+                       goto yy621;
+               }
+       }
+yy943:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'm') {
+               if (yych <= '1') {
+                       if (yych <= '/') goto yy621;
+               } else {
+                       if (yych == 'T') goto yy949;
+                       goto yy621;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'n') goto yy946;
+                       if (yych <= 'q') goto yy621;
+                       goto yy947;
+               } else {
+                       if (yych <= 's') goto yy945;
+                       if (yych <= 't') goto yy948;
+                       goto yy621;
+               }
+       }
+yy944:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych == 'T') goto yy949;
+               if (yych <= 'm') goto yy621;
+               goto yy946;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy621;
+                       goto yy947;
+               } else {
+                       if (yych <= 's') goto yy945;
+                       if (yych <= 't') goto yy948;
+                       goto yy621;
+               }
+       }
+yy945:
+       yych = *++YYCURSOR;
+       if (yych == 't') goto yy959;
+       goto yy56;
+yy946:
+       yych = *++YYCURSOR;
+       if (yych == 'd') goto yy959;
+       goto yy56;
+yy947:
+       yych = *++YYCURSOR;
+       if (yych == 'd') goto yy959;
+       goto yy56;
+yy948:
+       yych = *++YYCURSOR;
+       if (yych == 'h') goto yy959;
+       goto yy56;
+yy949:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '1') goto yy950;
+       if (yych <= '2') goto yy951;
+       if (yych <= '9') goto yy952;
+       goto yy56;
+yy950:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy952;
+       if (yych <= ':') goto yy953;
+       goto yy56;
+yy951:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '4') goto yy952;
+       if (yych == ':') goto yy953;
+       goto yy56;
+yy952:
+       yych = *++YYCURSOR;
+       if (yych != ':') goto yy56;
+yy953:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy954;
+       if (yych <= '9') goto yy955;
+       goto yy56;
+yy954:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy955;
+       if (yych <= ':') goto yy956;
+       goto yy56;
+yy955:
+       yych = *++YYCURSOR;
+       if (yych != ':') goto yy56;
+yy956:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy957;
+       if (yych <= '6') goto yy958;
+       if (yych <= '9') goto yy806;
+       goto yy56;
+yy957:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy807;
+       if (yych <= '9') goto yy806;
+       goto yy807;
+yy958:
+       yych = *++YYCURSOR;
+       if (yych == '0') goto yy806;
+       goto yy807;
+yy959:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'T') goto yy949;
+       goto yy621;
+yy960:
+       yyaccept = 21;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych != '-') goto yy938;
+       yych = *++YYCURSOR;
+       if (yych <= '2') {
+               if (yych <= '/') goto yy56;
+               if (yych >= '1') goto yy963;
+       } else {
+               if (yych <= '3') goto yy964;
+               if (yych <= '9') goto yy944;
+               goto yy56;
+       }
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'm') {
+               if (yych <= '9') {
+                       if (yych <= '/') goto yy621;
+                       goto yy965;
+               } else {
+                       if (yych == 'T') goto yy949;
+                       goto yy621;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'n') goto yy946;
+                       if (yych <= 'q') goto yy621;
+                       goto yy947;
+               } else {
+                       if (yych <= 's') goto yy945;
+                       if (yych <= 't') goto yy948;
+                       goto yy621;
+               }
+       }
+yy963:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'm') {
+               if (yych <= '9') {
+                       if (yych <= '/') goto yy621;
+                       goto yy965;
+               } else {
+                       if (yych == 'T') goto yy949;
+                       goto yy621;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'n') goto yy946;
+                       if (yych <= 'q') goto yy621;
+                       goto yy947;
+               } else {
+                       if (yych <= 's') goto yy945;
+                       if (yych <= 't') goto yy948;
+                       goto yy621;
+               }
+       }
+yy964:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'm') {
+               if (yych <= '1') {
+                       if (yych <= '/') goto yy621;
+               } else {
+                       if (yych == 'T') goto yy949;
+                       goto yy621;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'n') goto yy946;
+                       if (yych <= 'q') goto yy621;
+                       goto yy947;
+               } else {
+                       if (yych <= 's') goto yy945;
+                       if (yych <= 't') goto yy948;
+                       goto yy621;
+               }
+       }
+yy965:
+       yyaccept = 20;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych == 'T') goto yy966;
+               if (yych <= 'm') goto yy419;
+               goto yy946;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy419;
+                       goto yy947;
+               } else {
+                       if (yych <= 's') goto yy945;
+                       if (yych <= 't') goto yy948;
+                       goto yy419;
+               }
+       }
+yy966:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '1') goto yy967;
+       if (yych <= '2') goto yy968;
+       if (yych <= '9') goto yy952;
+       goto yy56;
+yy967:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy969;
+       if (yych <= ':') goto yy953;
+       goto yy56;
+yy968:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '4') goto yy969;
+       if (yych == ':') goto yy953;
+       goto yy56;
+yy969:
+       yych = *++YYCURSOR;
+       if (yych != ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy971;
+       if (yych <= '9') goto yy955;
+       goto yy56;
+yy971:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy972;
+       if (yych <= ':') goto yy956;
+       goto yy56;
+yy972:
+       yych = *++YYCURSOR;
+       if (yych != ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy974;
+       if (yych <= '6') goto yy975;
+       if (yych <= '9') goto yy806;
+       goto yy56;
+yy974:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy807;
+       if (yych <= '9') goto yy976;
+       goto yy807;
+yy975:
+       yych = *++YYCURSOR;
+       if (yych != '0') goto yy807;
+yy976:
+       yyaccept = 22;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych != '.') goto yy807;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+yy978:
+       yyaccept = 22;
+       YYMARKER = ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
+       yych = *YYCURSOR;
+       if (yych <= '-') {
+               if (yych == '+') goto yy981;
+               if (yych <= ',') goto yy807;
+               goto yy981;
+       } else {
+               if (yych <= '9') {
+                       if (yych <= '/') goto yy807;
+                       goto yy978;
+               } else {
+                       if (yych != 'G') goto yy807;
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy987;
+       goto yy56;
+yy981:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '1') goto yy982;
+       if (yych <= '2') goto yy983;
+       if (yych <= '9') goto yy984;
+       goto yy56;
+yy982:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy807;
+       if (yych <= '9') goto yy984;
+       if (yych <= ':') goto yy985;
+       goto yy807;
+yy983:
+       yych = *++YYCURSOR;
+       if (yych <= '5') {
+               if (yych <= '/') goto yy807;
+               if (yych >= '5') goto yy986;
+       } else {
+               if (yych <= '9') goto yy806;
+               if (yych <= ':') goto yy985;
+               goto yy807;
+       }
+yy984:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy807;
+       if (yych <= '5') goto yy986;
+       if (yych <= '9') goto yy806;
+       if (yych >= ';') goto yy807;
+yy985:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy807;
+       if (yych <= '5') goto yy986;
+       if (yych <= '9') goto yy806;
+       goto yy807;
+yy986:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy807;
+       if (yych <= '9') goto yy806;
+       goto yy807;
+yy987:
+       yych = *++YYCURSOR;
+       if (yych != 'T') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych == '+') goto yy981;
+       if (yych == '-') goto yy981;
+       goto yy56;
+yy989:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy990;
+       if (yych != 'c') goto yy56;
+yy990:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych == '-') goto yy731;
+               goto yy758;
+       } else {
+               if (yych <= 'E') goto yy844;
+               if (yych == 'e') goto yy844;
+               goto yy758;
+       }
+yy991:
+       yych = *++YYCURSOR;
+       if (yych == 'V') goto yy992;
+       if (yych != 'v') goto yy56;
+yy992:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych == '-') goto yy731;
+               goto yy758;
+       } else {
+               if (yych <= 'E') goto yy851;
+               if (yych == 'e') goto yy851;
+               goto yy758;
+       }
+yy993:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy994;
+       if (yych != 't') goto yy56;
+yy994:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'N') {
+               if (yych == '-') goto yy731;
+               goto yy758;
+       } else {
+               if (yych <= 'O') goto yy857;
+               if (yych == 'o') goto yy857;
+               goto yy758;
+       }
+yy995:
+       yych = *++YYCURSOR;
+       if (yych == 'P') goto yy996;
+       if (yych != 'p') goto yy56;
+yy996:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych == '-') goto yy731;
+               goto yy758;
+       } else {
+               if (yych <= 'T') goto yy997;
+               if (yych != 't') goto yy758;
+       }
+yy997:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych == '-') goto yy731;
+               goto yy758;
+       } else {
+               if (yych <= 'E') goto yy863;
+               if (yych == 'e') goto yy863;
+               goto yy758;
+       }
+yy998:
+       yych = *++YYCURSOR;
+       if (yych == 'G') goto yy1001;
+       if (yych == 'g') goto yy1001;
+       goto yy56;
+yy999:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy1000;
+       if (yych != 'r') goto yy56;
+yy1000:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'H') {
+               if (yych == '-') goto yy731;
+               goto yy758;
+       } else {
+               if (yych <= 'I') goto yy870;
+               if (yych == 'i') goto yy870;
+               goto yy758;
+       }
+yy1001:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'T') {
+               if (yych == '-') goto yy731;
+               goto yy758;
+       } else {
+               if (yych <= 'U') goto yy872;
+               if (yych == 'u') goto yy872;
+               goto yy758;
+       }
+yy1002:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych == 'R') goto yy1003;
+               if (yych <= 'X') goto yy56;
+               goto yy1004;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy56;
+               } else {
+                       if (yych == 'y') goto yy1004;
+                       goto yy56;
+               }
+       }
+yy1003:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'B') {
+               if (yych == '-') goto yy731;
+               goto yy758;
+       } else {
+               if (yych <= 'C') goto yy876;
+               if (yych == 'c') goto yy876;
+               goto yy758;
+       }
+yy1004:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '-') goto yy731;
+       goto yy758;
+yy1005:
+       yych = *++YYCURSOR;
+       if (yych == 'B') goto yy1006;
+       if (yych != 'b') goto yy56;
+yy1006:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych == '-') goto yy731;
+               goto yy758;
+       } else {
+               if (yych <= 'R') goto yy879;
+               if (yych == 'r') goto yy879;
+               goto yy758;
+       }
+yy1007:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych == 'L') goto yy1011;
+               if (yych <= 'M') goto yy56;
+               goto yy1010;
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'k') goto yy56;
+                       goto yy1011;
+               } else {
+                       if (yych == 'n') goto yy1010;
+                       goto yy56;
+               }
+       }
+yy1008:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy1009;
+       if (yych != 'n') goto yy56;
+yy1009:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'T') {
+               if (yych == '-') goto yy731;
+               goto yy758;
+       } else {
+               if (yych <= 'U') goto yy886;
+               if (yych == 'u') goto yy886;
+               goto yy758;
+       }
+yy1010:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych == '-') goto yy731;
+               goto yy758;
+       } else {
+               if (yych <= 'E') goto yy848;
+               if (yych == 'e') goto yy848;
+               goto yy758;
+       }
+yy1011:
+       yyaccept = 19;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+               if (yych == '-') goto yy731;
+               goto yy758;
+       } else {
+               if (yych <= 'Y') goto yy848;
+               if (yych == 'y') goto yy848;
+               goto yy758;
+       }
+yy1012:
+       yych = *++YYCURSOR;
+       if (yych <= '.') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy542;
+                       goto yy695;
+               } else {
+                       if (yych <= ',') goto yy542;
+                       if (yych <= '-') goto yy696;
+                       goto yy695;
+               }
+       } else {
+               if (yych <= 'U') {
+                       if (yych <= '/') goto yy694;
+                       if (yych <= 'T') goto yy542;
+                       goto yy79;
+               } else {
+                       if (yych == 'u') goto yy79;
+                       goto yy542;
+               }
+       }
+yy1013:
+       yych = *++YYCURSOR;
+       if (yych <= 'P') {
+               if (yych == 'C') goto yy121;
+               if (yych <= 'O') goto yy56;
+               goto yy550;
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'b') goto yy56;
+                       goto yy121;
+               } else {
+                       if (yych == 'p') goto yy550;
+                       goto yy56;
+               }
+       }
+yy1014:
+       yych = *++YYCURSOR;
+       if (yych <= '9') {
+               if (yych <= ',') {
+                       if (yych == '\t') goto yy1016;
+                       goto yy1018;
+               } else {
+                       if (yych <= '-') goto yy1015;
+                       if (yych <= '.') goto yy695;
+                       if (yych <= '/') goto yy694;
+                       goto yy705;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych == 'n') goto yy434;
+                       goto yy1018;
+               } else {
+                       if (yych <= 'r') goto yy435;
+                       if (yych <= 's') goto yy429;
+                       if (yych <= 't') goto yy432;
+                       goto yy1018;
+               }
+       }
+yy1015:
+       yych = *++YYCURSOR;
+       switch (yych) {
+       case '0':       goto yy1019;
+       case '1':       goto yy1020;
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':       goto yy582;
+       case 'A':
+       case 'a':       goto yy586;
+       case 'D':
+       case 'd':       goto yy590;
+       case 'F':
+       case 'f':       goto yy584;
+       case 'J':
+       case 'j':       goto yy583;
+       case 'M':
+       case 'm':       goto yy585;
+       case 'N':
+       case 'n':       goto yy589;
+       case 'O':
+       case 'o':       goto yy588;
+       case 'S':
+       case 's':       goto yy587;
+       default:        goto yy542;
+       }
+yy1016:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy1018;
+       if (yych <= '0') goto yy700;
+       if (yych <= '1') goto yy701;
+       if (yych <= '9') goto yy702;
+       goto yy1018;
+yy1017:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13);
+       yych = *YYCURSOR;
+yy1018:
+       if (yych <= 'W') {
+               if (yych <= 'G') {
+                       if (yych <= '.') {
+                               if (yych <= 0x1F) {
+                                       if (yych == '\t') goto yy1017;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= ' ') goto yy1017;
+                                       if (yych <= ',') goto yy56;
+                                       goto yy541;
+                               }
+                       } else {
+                               if (yych <= 'C') {
+                                       if (yych == 'A') goto yy538;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'D') goto yy430;
+                                       if (yych == 'F') goto yy431;
+                                       goto yy56;
+                               }
+                       }
+               } else {
+                       if (yych <= 'N') {
+                               if (yych <= 'J') {
+                                       if (yych <= 'H') goto yy65;
+                                       if (yych <= 'I') goto yy439;
+                                       goto yy443;
+                               } else {
+                                       if (yych <= 'L') goto yy56;
+                                       if (yych <= 'M') goto yy427;
+                                       goto yy446;
+                               }
+                       } else {
+                               if (yych <= 'S') {
+                                       if (yych <= 'O') goto yy445;
+                                       if (yych <= 'R') goto yy56;
+                                       goto yy428;
+                               } else {
+                                       if (yych <= 'T') goto yy70;
+                                       if (yych <= 'U') goto yy63;
+                                       if (yych <= 'V') goto yy441;
+                                       goto yy69;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych <= '`') {
+                                       if (yych <= 'X') goto yy442;
+                                       if (yych <= 'Y') goto yy68;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'a') goto yy538;
+                                       if (yych <= 'c') goto yy56;
+                                       goto yy430;
+                               }
+                       } else {
+                               if (yych <= 'g') {
+                                       if (yych == 'f') goto yy431;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'h') goto yy65;
+                                       if (yych == 'j') goto yy443;
+                                       goto yy56;
+                               }
+                       }
+               } else {
+                       if (yych <= 'u') {
+                               if (yych <= 'o') {
+                                       if (yych <= 'm') goto yy427;
+                                       if (yych <= 'n') goto yy446;
+                                       goto yy445;
+                               } else {
+                                       if (yych <= 'r') goto yy56;
+                                       if (yych <= 's') goto yy428;
+                                       if (yych <= 't') goto yy70;
+                                       goto yy63;
+                               }
+                       } else {
+                               if (yych <= 'x') {
+                                       if (yych == 'w') goto yy69;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'y') goto yy68;
+                                       if (yych == 0xC2) goto yy62;
+                                       goto yy56;
+                               }
+                       }
+               }
+       }
+yy1019:
+       yych = *++YYCURSOR;
+       if (yych <= '.') {
+               if (yych <= ',') goto yy56;
+               if (yych <= '-') goto yy619;
+               goto yy566;
+       } else {
+               if (yych <= '/') goto yy56;
+               if (yych <= '9') goto yy1021;
+               goto yy56;
+       }
+yy1020:
+       yych = *++YYCURSOR;
+       if (yych <= '.') {
+               if (yych <= ',') goto yy56;
+               if (yych <= '-') goto yy619;
+               goto yy566;
+       } else {
+               if (yych <= '/') goto yy56;
+               if (yych >= '3') goto yy56;
+       }
+yy1021:
+       yych = *++YYCURSOR;
+       if (yych <= ',') goto yy56;
+       if (yych <= '-') goto yy1022;
+       if (yych <= '.') goto yy566;
+       goto yy56;
+yy1022:
+       yych = *++YYCURSOR;
+       if (yych <= '2') {
+               if (yych <= '/') goto yy56;
+               if (yych >= '1') goto yy1024;
+       } else {
+               if (yych <= '3') goto yy1025;
+               if (yych <= '9') goto yy623;
+               goto yy56;
+       }
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy621;
+               if (yych <= '9') goto yy1026;
+               if (yych <= 'm') goto yy621;
+               goto yy625;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy621;
+                       goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+                       goto yy621;
+               }
+       }
+yy1024:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy621;
+               if (yych <= '9') goto yy1026;
+               if (yych <= 'm') goto yy621;
+               goto yy625;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy621;
+                       goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+                       goto yy621;
+               }
+       }
+yy1025:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '1') {
+                       if (yych <= '/') goto yy621;
+               } else {
+                       if (yych <= '9') goto yy568;
+                       if (yych <= 'm') goto yy621;
+                       goto yy625;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy621;
+                       goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+                       goto yy621;
+               }
+       }
+yy1026:
+       yyaccept = 14;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'n') {
+               if (yych <= '/') goto yy728;
+               if (yych <= '9') goto yy569;
+               if (yych <= 'm') goto yy728;
+               goto yy625;
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'q') goto yy728;
+                       goto yy626;
+               } else {
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy627;
+                       goto yy728;
+               }
+       }
+yy1027:
+       yych = *++YYCURSOR;
+       if (yych <= '9') {
+               if (yych <= '-') {
+                       if (yych == '\t') goto yy1016;
+                       if (yych <= ',') goto yy1018;
+                       goto yy1015;
+               } else {
+                       if (yych <= '.') goto yy1028;
+                       if (yych <= '/') goto yy694;
+                       if (yych <= '5') goto yy1030;
+                       goto yy705;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= ':') goto yy1029;
+                       if (yych == 'n') goto yy434;
+                       goto yy1018;
+               } else {
+                       if (yych <= 'r') goto yy435;
+                       if (yych <= 's') goto yy429;
+                       if (yych <= 't') goto yy432;
+                       goto yy1018;
+               }
+       }
+yy1028:
+       yych = *++YYCURSOR;
+       if (yych <= '1') {
+               if (yych <= '/') goto yy542;
+               if (yych <= '0') goto yy1052;
+               goto yy1053;
+       } else {
+               if (yych <= '5') goto yy1054;
+               if (yych <= '9') goto yy1055;
+               goto yy542;
+       }
+yy1029:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy1047;
+       if (yych <= '9') goto yy1048;
+       goto yy56;
+yy1030:
+       yych = *++YYCURSOR;
+       if (yych == '-') goto yy749;
+       if (yych <= '/') goto yy60;
+       if (yych >= ':') goto yy60;
+       yyaccept = 23;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'L') {
+               if (yych <= '3') {
+                       if (yych <= '-') {
+                               if (yych <= 0x1F) {
+                                       if (yych == '\t') goto yy755;
+                               } else {
+                                       if (yych <= ' ') goto yy755;
+                                       if (yych >= '-') goto yy752;
+                               }
+                       } else {
+                               if (yych <= '0') {
+                                       if (yych <= '.') goto yy756;
+                                       if (yych <= '/') goto yy753;
+                                       goto yy1033;
+                               } else {
+                                       if (yych <= '1') goto yy1034;
+                                       if (yych <= '2') goto yy1035;
+                                       goto yy1036;
+                               }
+                       }
+               } else {
+                       if (yych <= 'A') {
+                               if (yych <= '9') {
+                                       if (yych <= '5') goto yy1037;
+                                       if (yych <= '6') goto yy1038;
+                                       goto yy54;
+                               } else {
+                                       if (yych <= ':') goto yy771;
+                                       if (yych >= 'A') goto yy755;
+                               }
+                       } else {
+                               if (yych <= 'E') {
+                                       if (yych == 'D') goto yy755;
+                               } else {
+                                       if (yych == 'G') goto yy1032;
+                                       if (yych <= 'J') goto yy755;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= '`') {
+                               if (yych <= 'V') {
+                                       if (yych <= 'O') goto yy755;
+                                       if (yych >= 'S') goto yy755;
+                               } else {
+                                       if (yych <= 'W') goto yy774;
+                                       if (yych <= 'Y') goto yy755;
+                               }
+                       } else {
+                               if (yych <= 'd') {
+                                       if (yych <= 'a') goto yy755;
+                                       if (yych >= 'd') goto yy755;
+                               } else {
+                                       if (yych == 'f') goto yy755;
+                                       if (yych >= 'h') goto yy755;
+                               }
+                       }
+               } else {
+                       if (yych <= 'u') {
+                               if (yych <= 'l') {
+                                       if (yych == 'j') goto yy755;
+                               } else {
+                                       if (yych <= 'o') goto yy755;
+                                       if (yych >= 's') goto yy755;
+                               }
+                       } else {
+                               if (yych <= 'x') {
+                                       if (yych == 'w') goto yy755;
+                               } else {
+                                       if (yych <= 'y') goto yy755;
+                                       if (yych == 0xC2) goto yy755;
+                               }
+                       }
+               }
+       }
+yy1032:
+       {
+               DEBUG_OUTPUT("gnunocolon");
+               TIMELIB_INIT;
+               switch (s->time->have_time) {
+                       case 0:
+                               s->time->h = timelib_get_nr((char **) &ptr, 2);
+                               s->time->i = timelib_get_nr((char **) &ptr, 2);
+                               s->time->s = 0;
+                               break;
+                       case 1:
+                               s->time->y = timelib_get_nr((char **) &ptr, 4);
+                               break;
+                       default:
+                               TIMELIB_DEINIT;
+                               add_error(s, "Double time specification");
+                               return TIMELIB_ERROR;
+               }
+               s->time->have_time++;
+               TIMELIB_DEINIT;
+               return TIMELIB_GNU_NOCOLON;
+       }
+yy1033:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '0') goto yy1045;
+       if (yych <= '9') goto yy1046;
+       goto yy60;
+yy1034:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '2') goto yy1044;
+       if (yych <= '9') goto yy1043;
+       goto yy60;
+yy1035:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '9') goto yy1043;
+       goto yy60;
+yy1036:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '5') goto yy1041;
+       if (yych <= '6') goto yy1042;
+       if (yych <= '9') goto yy1039;
+       goto yy60;
+yy1037:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '9') goto yy1039;
+       goto yy60;
+yy1038:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+       if (yych <= '0') goto yy1039;
+       if (yych <= '9') goto yy54;
+       goto yy60;
+yy1039:
+       yyaccept = 24;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 2) {
+               goto yy54;
+       }
+       if (yych <= 'X') {
+               if (yych <= 'F') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych >= ' ') goto yy60;
+                       } else {
+                               if (yych == 'D') goto yy60;
+                               if (yych >= 'F') goto yy60;
+                       }
+               } else {
+                       if (yych <= 'M') {
+                               if (yych == 'H') goto yy60;
+                               if (yych >= 'M') goto yy60;
+                       } else {
+                               if (yych <= 'U') {
+                                       if (yych >= 'S') goto yy60;
+                               } else {
+                                       if (yych == 'W') goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'e') {
+                               if (yych <= 'Y') goto yy60;
+                               if (yych == 'd') goto yy60;
+                       } else {
+                               if (yych <= 'g') {
+                                       if (yych <= 'f') goto yy60;
+                               } else {
+                                       if (yych <= 'h') goto yy60;
+                                       if (yych >= 'm') goto yy60;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') goto yy1040;
+                               if (yych != 'v') goto yy60;
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych >= 'y') goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                               }
+                       }
+               }
+       }
+yy1040:
+       {
+               int tz_not_found;
+               DEBUG_OUTPUT("iso8601nocolon");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_TIME();
+               s->time->h = timelib_get_nr((char **) &ptr, 2);
+               s->time->i = timelib_get_nr((char **) &ptr, 2);
+               s->time->s = timelib_get_nr((char **) &ptr, 2);
+
+               if (*ptr != '\0') {
+                       s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
+                       if (tz_not_found) {
+                               add_error(s, "The timezone could not be found in the database");
+                       }
+               }
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_NOCOLON;
+       }
+yy1041:
+       yyaccept = 24;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= 'E') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy1040;
+                               goto yy60;
+                       } else {
+                               if (yych <= '9') {
+                                       if (yych <= '/') goto yy1040;
+                                       goto yy785;
+                               } else {
+                                       if (yych == 'D') goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               } else {
+                       if (yych <= 'L') {
+                               if (yych == 'G') goto yy1040;
+                               if (yych <= 'H') goto yy60;
+                               goto yy1040;
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'M') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych == 'V') goto yy1040;
+                                       goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych == 'Y') goto yy60;
+                               if (yych <= 'c') goto yy1040;
+                               goto yy60;
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych == 'v') goto yy1040;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               }
+       }
+yy1042:
+       yyaccept = 24;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= 'D') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy1040;
+                               goto yy60;
+                       } else {
+                               if (yych <= '6') {
+                                       if (yych <= '/') goto yy1040;
+                                       goto yy785;
+                               } else {
+                                       if (yych <= '9') goto yy54;
+                                       if (yych <= 'C') goto yy1040;
+                                       goto yy60;
+                               }
+                       }
+               } else {
+                       if (yych <= 'L') {
+                               if (yych <= 'F') {
+                                       if (yych <= 'E') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'H') goto yy60;
+                                       goto yy1040;
+                               }
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'M') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych == 'V') goto yy1040;
+                                       goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych == 'Y') goto yy60;
+                               if (yych <= 'c') goto yy1040;
+                               goto yy60;
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych == 'v') goto yy1040;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               }
+       }
+yy1043:
+       yyaccept = 24;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= 'E') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy60;
+                               if (yych <= 0x1F) goto yy1040;
+                               goto yy60;
+                       } else {
+                               if (yych <= '9') {
+                                       if (yych <= '/') goto yy1040;
+                                       goto yy785;
+                               } else {
+                                       if (yych == 'D') goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               } else {
+                       if (yych <= 'L') {
+                               if (yych == 'G') goto yy1040;
+                               if (yych <= 'H') goto yy60;
+                               goto yy1040;
+                       } else {
+                               if (yych <= 'R') {
+                                       if (yych <= 'M') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych == 'V') goto yy1040;
+                                       goto yy60;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych == 'Y') goto yy60;
+                               if (yych <= 'c') goto yy1040;
+                               goto yy60;
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych == 'v') goto yy1040;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               }
+       }
+yy1044:
+       yyaccept = 24;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'V') {
+               if (yych <= 'C') {
+                       if (yych <= '/') {
+                               if (yych <= '\t') {
+                                       if (yych <= 0x08) goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == ' ') goto yy60;
+                                       goto yy1040;
+                               }
+                       } else {
+                               if (yych <= '2') {
+                                       if (yych <= '0') goto yy809;
+                                       goto yy810;
+                               } else {
+                                       if (yych <= '3') goto yy811;
+                                       if (yych <= '9') goto yy785;
+                                       goto yy1040;
+                               }
+                       }
+               } else {
+                       if (yych <= 'H') {
+                               if (yych <= 'E') {
+                                       if (yych <= 'D') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych == 'G') goto yy1040;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'M') {
+                                       if (yych <= 'L') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych <= 'R') goto yy1040;
+                                       if (yych <= 'U') goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych <= 'X') {
+                                       if (yych <= 'W') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych <= 'Y') goto yy60;
+                                       if (yych <= 'c') goto yy1040;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych == 'v') goto yy1040;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               }
+       }
+yy1045:
+       yyaccept = 24;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'V') {
+               if (yych <= 'C') {
+                       if (yych <= '/') {
+                               if (yych <= '\t') {
+                                       if (yych <= 0x08) goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == ' ') goto yy60;
+                                       goto yy1040;
+                               }
+                       } else {
+                               if (yych <= '2') {
+                                       if (yych <= '0') goto yy841;
+                                       goto yy810;
+                               } else {
+                                       if (yych <= '3') goto yy811;
+                                       if (yych <= '9') goto yy785;
+                                       goto yy1040;
+                               }
+                       }
+               } else {
+                       if (yych <= 'H') {
+                               if (yych <= 'E') {
+                                       if (yych <= 'D') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych == 'G') goto yy1040;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'M') {
+                                       if (yych <= 'L') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych <= 'R') goto yy1040;
+                                       if (yych <= 'U') goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych <= 'X') {
+                                       if (yych <= 'W') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych <= 'Y') goto yy60;
+                                       if (yych <= 'c') goto yy1040;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych == 'v') goto yy1040;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               }
+       }
+yy1046:
+       yyaccept = 24;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'V') {
+               if (yych <= 'C') {
+                       if (yych <= '/') {
+                               if (yych <= '\t') {
+                                       if (yych <= 0x08) goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == ' ') goto yy60;
+                                       goto yy1040;
+                               }
+                       } else {
+                               if (yych <= '2') {
+                                       if (yych <= '0') goto yy809;
+                                       goto yy810;
+                               } else {
+                                       if (yych <= '3') goto yy811;
+                                       if (yych <= '9') goto yy785;
+                                       goto yy1040;
+                               }
+                       }
+               } else {
+                       if (yych <= 'H') {
+                               if (yych <= 'E') {
+                                       if (yych <= 'D') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych == 'G') goto yy1040;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'M') {
+                                       if (yych <= 'L') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych <= 'R') goto yy1040;
+                                       if (yych <= 'U') goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'd') {
+                               if (yych <= 'X') {
+                                       if (yych <= 'W') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych <= 'Y') goto yy60;
+                                       if (yych <= 'c') goto yy1040;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'f') {
+                                       if (yych <= 'e') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 'h') goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 'r') {
+                                       if (yych <= 'm') goto yy60;
+                                       goto yy1040;
+                               } else {
+                                       if (yych == 'v') goto yy1040;
+                                       goto yy60;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy1040;
+                                       goto yy60;
+                               } else {
+                                       if (yych == 0xC2) goto yy60;
+                                       goto yy1040;
+                               }
+                       }
+               }
+       }
+yy1047:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych == '.') goto yy1049;
+               goto yy455;
+       } else {
+               if (yych <= '9') goto yy1048;
+               if (yych <= ':') goto yy1049;
+               goto yy455;
+       }
+yy1048:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy1049;
+       if (yych != ':') goto yy455;
+yy1049:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy1050;
+       if (yych <= '6') goto yy1051;
+       if (yych <= '9') goto yy460;
+       goto yy56;
+yy1050:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy461;
+       if (yych <= '/') goto yy455;
+       if (yych <= '9') goto yy460;
+       goto yy455;
+yy1051:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy461;
+       if (yych == '0') goto yy460;
+       goto yy455;
+yy1052:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ',') goto yy455;
+               if (yych <= '-') goto yy566;
+               goto yy1056;
+       } else {
+               if (yych <= '/') goto yy455;
+               if (yych <= '9') goto yy1055;
+               if (yych <= ':') goto yy1049;
+               goto yy455;
+       }
+yy1053:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') goto yy455;
+               if (yych <= '-') goto yy566;
+               if (yych <= '.') goto yy1056;
+               goto yy455;
+       } else {
+               if (yych <= '2') goto yy1055;
+               if (yych <= '9') goto yy1048;
+               if (yych <= ':') goto yy1049;
+               goto yy455;
+       }
+yy1054:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ',') goto yy455;
+               if (yych <= '-') goto yy566;
+               goto yy1056;
+       } else {
+               if (yych <= '/') goto yy455;
+               if (yych <= '9') goto yy1048;
+               if (yych <= ':') goto yy1049;
+               goto yy455;
+       }
+yy1055:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ',') goto yy455;
+               if (yych <= '-') goto yy566;
+       } else {
+               if (yych == ':') goto yy1049;
+               goto yy455;
+       }
+yy1056:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '5') goto yy1057;
+       if (yych <= '6') goto yy1058;
+       if (yych <= '9') goto yy574;
+       goto yy56;
+yy1057:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy461;
+       if (yych <= '/') goto yy455;
+       if (yych <= '9') goto yy1059;
+       goto yy455;
+yy1058:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych == '.') goto yy461;
+               goto yy455;
+       } else {
+               if (yych <= '0') goto yy1059;
+               if (yych <= '9') goto yy575;
+               goto yy455;
+       }
+yy1059:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '.') goto yy461;
+       if (yych <= '/') goto yy455;
+       if (yych <= '9') goto yy569;
+       goto yy455;
+yy1060:
+       yych = *++YYCURSOR;
+       if (yych <= '9') {
+               if (yych <= '-') {
+                       if (yych == '\t') goto yy424;
+                       if (yych <= ',') goto yy426;
+                       goto yy1015;
+               } else {
+                       if (yych <= '.') goto yy438;
+                       if (yych <= '/') goto yy436;
+                       if (yych <= '5') goto yy1030;
+                       goto yy705;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= ':') goto yy447;
+                       if (yych == 'n') goto yy434;
+                       goto yy426;
+               } else {
+                       if (yych <= 'r') goto yy435;
+                       if (yych <= 's') goto yy429;
+                       if (yych <= 't') goto yy432;
+                       goto yy426;
+               }
+       }
+yy1061:
+       yych = *++YYCURSOR;
+       if (yych <= '9') {
+               if (yych <= '-') {
+                       if (yych == '\t') goto yy1016;
+                       if (yych <= ',') goto yy1018;
+                       goto yy1015;
+               } else {
+                       if (yych <= '.') goto yy1028;
+                       if (yych <= '/') goto yy436;
+                       if (yych <= '5') goto yy1030;
+                       goto yy705;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= ':') goto yy1029;
+                       if (yych == 'n') goto yy434;
+                       goto yy1018;
+               } else {
+                       if (yych <= 'r') goto yy435;
+                       if (yych <= 's') goto yy429;
+                       if (yych <= 't') goto yy432;
+                       goto yy1018;
+               }
+       }
+yy1062:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy166;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'e') goto yy1063;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1063:
+       yych = *++YYCURSOR;
+       if (yych <= 'V') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'U') goto yy167;
+               }
+       } else {
+               if (yych <= 'u') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'v') goto yy1064;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1064:
+       yych = *++YYCURSOR;
+       if (yych <= 'I') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'H') goto yy168;
+               }
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'i') goto yy1065;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1065:
+       yych = *++YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'N') goto yy169;
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'o') goto yy1066;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1066:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'T') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'U') goto yy1067;
+               if (yych != 'u') goto yy3;
+       }
+yy1067:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy1068;
+       if (yych != 's') goto yy56;
+yy1068:
+       yych = *++YYCURSOR;
+       if (yych == '\t') goto yy1069;
+       if (yych != ' ') goto yy56;
+yy1069:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+       yych = *YYCURSOR;
+yy1070:
+       if (yych <= 'X') {
+               if (yych <= 'G') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy1069;
+                               if (yych <= 0x1F) goto yy56;
+                               goto yy1069;
+                       } else {
+                               if (yych <= 'D') {
+                                       if (yych <= 'C') goto yy56;
+                                       goto yy1076;
+                               } else {
+                                       if (yych == 'F') goto yy1077;
+                                       goto yy56;
+                               }
+                       }
+               } else {
+                       if (yych <= 'S') {
+                               if (yych <= 'L') {
+                                       if (yych <= 'H') goto yy1075;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'M') goto yy1071;
+                                       if (yych <= 'R') goto yy56;
+                                       goto yy1074;
+                               }
+                       } else {
+                               if (yych <= 'U') {
+                                       if (yych <= 'T') goto yy1080;
+                                       goto yy1073;
+                               } else {
+                                       if (yych == 'W') goto yy1079;
+                                       goto yy56;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'f') {
+                               if (yych <= 'c') {
+                                       if (yych <= 'Y') goto yy1078;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'd') goto yy1076;
+                                       if (yych <= 'e') goto yy56;
+                                       goto yy1077;
+                               }
+                       } else {
+                               if (yych <= 'h') {
+                                       if (yych <= 'g') goto yy56;
+                                       goto yy1075;
+                               } else {
+                                       if (yych != 'm') goto yy56;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 't') {
+                                       if (yych <= 's') goto yy1074;
+                                       goto yy1080;
+                               } else {
+                                       if (yych <= 'u') goto yy1073;
+                                       if (yych <= 'v') goto yy56;
+                                       goto yy1079;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy56;
+                                       goto yy1078;
+                               } else {
+                                       if (yych == 0xC2) goto yy1072;
+                                       goto yy56;
+                               }
+                       }
+               }
+       }
+yy1071:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= 'N') {
+                       if (yych == 'I') goto yy1155;
+                       goto yy56;
+               } else {
+                       if (yych <= 'O') goto yy1154;
+                       if (yych <= 'R') goto yy56;
+                       goto yy1156;
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych == 'i') goto yy1155;
+                       goto yy56;
+               } else {
+                       if (yych <= 'o') goto yy1154;
+                       if (yych == 's') goto yy1156;
+                       goto yy56;
+               }
+       }
+yy1072:
+       yych = *++YYCURSOR;
+       if (yych == 0xB5) goto yy1151;
+       goto yy56;
+yy1073:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy1149;
+       if (yych == 's') goto yy1149;
+       goto yy56;
+yy1074:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= 'D') {
+                       if (yych == 'A') goto yy1136;
+                       goto yy56;
+               } else {
+                       if (yych <= 'E') goto yy1137;
+                       if (yych <= 'T') goto yy56;
+                       goto yy1135;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych == 'a') goto yy1136;
+                       goto yy56;
+               } else {
+                       if (yych <= 'e') goto yy1137;
+                       if (yych == 'u') goto yy1135;
+                       goto yy56;
+               }
+       }
+yy1075:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy1133;
+       if (yych == 'o') goto yy1133;
+       goto yy56;
+yy1076:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1132;
+       if (yych == 'a') goto yy1132;
+       goto yy56;
+yy1077:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych == 'O') goto yy1117;
+               if (yych <= 'Q') goto yy56;
+               goto yy1116;
+       } else {
+               if (yych <= 'o') {
+                       if (yych <= 'n') goto yy56;
+                       goto yy1117;
+               } else {
+                       if (yych == 'r') goto yy1116;
+                       goto yy56;
+               }
+       }
+yy1078:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy1113;
+       if (yych == 'e') goto yy1113;
+       goto yy56;
+yy1079:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy1099;
+       if (yych == 'e') goto yy1099;
+       goto yy56;
+yy1080:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych == 'H') goto yy1081;
+               if (yych <= 'T') goto yy56;
+               goto yy1082;
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= 'g') goto yy56;
+               } else {
+                       if (yych == 'u') goto yy1082;
+                       goto yy56;
+               }
+       }
+yy1081:
+       yych = *++YYCURSOR;
+       if (yych == 'U') goto yy1094;
+       if (yych == 'u') goto yy1094;
+       goto yy56;
+yy1082:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy1083;
+       if (yych != 'e') goto yy56;
+yy1083:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ' ') {
+               if (yych == '\t') goto yy1085;
+               if (yych >= ' ') goto yy1085;
+       } else {
+               if (yych <= 'S') {
+                       if (yych >= 'S') goto yy1087;
+               } else {
+                       if (yych == 's') goto yy1087;
+               }
+       }
+yy1084:
+       {
+               timelib_sll i;
+               int         behavior = 0;
+               DEBUG_OUTPUT("relativetext");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_RELATIVE();
+
+               while(*ptr) {
+                       i = timelib_get_relative_text((char **) &ptr, &behavior);
+                       timelib_eat_spaces((char **) &ptr);
+                       timelib_set_relative((char **) &ptr, i, behavior, s);
+               }
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+yy1085:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+       yych = *YYCURSOR;
+       if (yych <= ' ') {
+               if (yych == '\t') goto yy1085;
+               if (yych <= 0x1F) goto yy56;
+               goto yy1085;
+       } else {
+               if (yych <= 'O') {
+                       if (yych <= 'N') goto yy56;
+                       goto yy1091;
+               } else {
+                       if (yych == 'o') goto yy1091;
+                       goto yy56;
+               }
+       }
+yy1087:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy1088;
+       if (yych != 'd') goto yy56;
+yy1088:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1089;
+       if (yych != 'a') goto yy56;
+yy1089:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1090;
+       if (yych != 'y') goto yy56;
+yy1090:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == '\t') goto yy1085;
+       if (yych == ' ') goto yy1085;
+       goto yy1084;
+yy1091:
+       yych = *++YYCURSOR;
+       if (yych == 'F') goto yy1092;
+       if (yych != 'f') goto yy56;
+yy1092:
+       ++YYCURSOR;
+       {
+               timelib_sll i;
+               int         behavior = 0;
+               DEBUG_OUTPUT("weekdayof");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_RELATIVE();
+               TIMELIB_HAVE_SPECIAL_RELATIVE();
+
+               i = timelib_get_relative_text((char **) &ptr, &behavior);
+               timelib_eat_spaces((char **) &ptr);
+               if (i > 0) { /* first, second... etc */
+                       s->time->relative.special.type = TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH;
+                       timelib_set_relative((char **) &ptr, i, 1, s);
+               } else { /* last */
+                       s->time->relative.special.type = TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH;
+                       timelib_set_relative((char **) &ptr, i, behavior, s);
+               }
+               TIMELIB_DEINIT;
+               return TIMELIB_WEEK_DAY_OF_MONTH;
+       }
+yy1094:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ' ') {
+               if (yych == '\t') goto yy1085;
+               if (yych <= 0x1F) goto yy1084;
+               goto yy1085;
+       } else {
+               if (yych <= 'R') {
+                       if (yych <= 'Q') goto yy1084;
+               } else {
+                       if (yych != 'r') goto yy1084;
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy1096;
+       if (yych != 's') goto yy56;
+yy1096:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy1097;
+       if (yych != 'd') goto yy56;
+yy1097:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1098;
+       if (yych != 'a') goto yy56;
+yy1098:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1090;
+       if (yych == 'y') goto yy1090;
+       goto yy56;
+yy1099:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= 'C') goto yy56;
+               if (yych <= 'D') goto yy1101;
+       } else {
+               if (yych <= 'c') goto yy56;
+               if (yych <= 'd') goto yy1101;
+               if (yych >= 'f') goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'K') goto yy1107;
+       if (yych == 'k') goto yy1107;
+       goto yy56;
+yy1101:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ' ') {
+               if (yych == '\t') goto yy1085;
+               if (yych <= 0x1F) goto yy1084;
+               goto yy1085;
+       } else {
+               if (yych <= 'N') {
+                       if (yych <= 'M') goto yy1084;
+               } else {
+                       if (yych != 'n') goto yy1084;
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy1103;
+       if (yych != 'e') goto yy56;
+yy1103:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy1104;
+       if (yych != 's') goto yy56;
+yy1104:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy1105;
+       if (yych != 'd') goto yy56;
+yy1105:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1106;
+       if (yych != 'a') goto yy56;
+yy1106:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1090;
+       if (yych == 'y') goto yy1090;
+       goto yy56;
+yy1107:
+       yyaccept = 26;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych == 'D') goto yy1110;
+               if (yych >= 'S') goto yy1109;
+       } else {
+               if (yych <= 'd') {
+                       if (yych >= 'd') goto yy1110;
+               } else {
+                       if (yych == 's') goto yy1109;
+               }
+       }
+yy1108:
+       {
+               timelib_sll i;
+               int         behavior = 0;
+               DEBUG_OUTPUT("relativetextweek");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_RELATIVE();
+
+               while(*ptr) {
+                       i = timelib_get_relative_text((char **) &ptr, &behavior);
+                       timelib_eat_spaces((char **) &ptr);
+                       timelib_set_relative((char **) &ptr, i, behavior, s);
+                       s->time->relative.weekday_behavior = 2;
+
+                       /* to handle the format weekday + last/this/next week */
+                       if (s->time->relative.have_weekday_relative == 0) {
+                               TIMELIB_HAVE_WEEKDAY_RELATIVE();
+                               s->time->relative.weekday = 1;
+                       }
+               }
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+yy1109:
+       yych = *++YYCURSOR;
+       goto yy1084;
+yy1110:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1111;
+       if (yych != 'a') goto yy56;
+yy1111:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1112;
+       if (yych != 'y') goto yy56;
+yy1112:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy1109;
+       if (yych == 's') goto yy1109;
+       goto yy1084;
+yy1113:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1114;
+       if (yych != 'a') goto yy56;
+yy1114:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy1115;
+       if (yych != 'r') goto yy56;
+yy1115:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy1109;
+       if (yych == 's') goto yy1109;
+       goto yy1084;
+yy1116:
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy1129;
+       if (yych == 'i') goto yy1129;
+       goto yy56;
+yy1117:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy1118;
+       if (yych != 'r') goto yy56;
+yy1118:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy1119;
+       if (yych != 't') goto yy56;
+yy1119:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych == 'H') goto yy1121;
+               if (yych <= 'M') goto yy56;
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= 'g') goto yy56;
+                       goto yy1121;
+               } else {
+                       if (yych != 'n') goto yy56;
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy1126;
+       if (yych == 'i') goto yy1126;
+       goto yy56;
+yy1121:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy1122;
+       if (yych != 'n') goto yy56;
+yy1122:
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy1123;
+       if (yych != 'i') goto yy56;
+yy1123:
+       yych = *++YYCURSOR;
+       if (yych == 'G') goto yy1124;
+       if (yych != 'g') goto yy56;
+yy1124:
+       yych = *++YYCURSOR;
+       if (yych == 'H') goto yy1125;
+       if (yych != 'h') goto yy56;
+yy1125:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy1115;
+       if (yych == 't') goto yy1115;
+       goto yy56;
+yy1126:
+       yych = *++YYCURSOR;
+       if (yych == 'G') goto yy1127;
+       if (yych != 'g') goto yy56;
+yy1127:
+       yych = *++YYCURSOR;
+       if (yych == 'H') goto yy1128;
+       if (yych != 'h') goto yy56;
+yy1128:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy1115;
+       if (yych == 't') goto yy1115;
+       goto yy56;
+yy1129:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ' ') {
+               if (yych == '\t') goto yy1085;
+               if (yych <= 0x1F) goto yy1084;
+               goto yy1085;
+       } else {
+               if (yych <= 'D') {
+                       if (yych <= 'C') goto yy1084;
+               } else {
+                       if (yych != 'd') goto yy1084;
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1131;
+       if (yych != 'a') goto yy56;
+yy1131:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1090;
+       if (yych == 'y') goto yy1090;
+       goto yy56;
+yy1132:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1115;
+       if (yych == 'y') goto yy1115;
+       goto yy56;
+yy1133:
+       yych = *++YYCURSOR;
+       if (yych == 'U') goto yy1134;
+       if (yych != 'u') goto yy56;
+yy1134:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy1115;
+       if (yych == 'r') goto yy1115;
+       goto yy56;
+yy1135:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy1146;
+       if (yych == 'n') goto yy1146;
+       goto yy56;
+yy1136:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy1141;
+       if (yych == 't') goto yy1141;
+       goto yy56;
+yy1137:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy1138;
+       if (yych != 'c') goto yy56;
+yy1138:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych == 'O') goto yy1139;
+               if (yych <= 'R') goto yy1084;
+               goto yy1109;
+       } else {
+               if (yych <= 'o') {
+                       if (yych <= 'n') goto yy1084;
+               } else {
+                       if (yych == 's') goto yy1109;
+                       goto yy1084;
+               }
+       }
+yy1139:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy1140;
+       if (yych != 'n') goto yy56;
+yy1140:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy1115;
+       if (yych == 'd') goto yy1115;
+       goto yy56;
+yy1141:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ' ') {
+               if (yych == '\t') goto yy1085;
+               if (yych <= 0x1F) goto yy1084;
+               goto yy1085;
+       } else {
+               if (yych <= 'U') {
+                       if (yych <= 'T') goto yy1084;
+               } else {
+                       if (yych != 'u') goto yy1084;
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy1143;
+       if (yych != 'r') goto yy56;
+yy1143:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy1144;
+       if (yych != 'd') goto yy56;
+yy1144:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1145;
+       if (yych != 'a') goto yy56;
+yy1145:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1090;
+       if (yych == 'y') goto yy1090;
+       goto yy56;
+yy1146:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ' ') {
+               if (yych == '\t') goto yy1085;
+               if (yych <= 0x1F) goto yy1084;
+               goto yy1085;
+       } else {
+               if (yych <= 'D') {
+                       if (yych <= 'C') goto yy1084;
+               } else {
+                       if (yych != 'd') goto yy1084;
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1148;
+       if (yych != 'a') goto yy56;
+yy1148:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1090;
+       if (yych == 'y') goto yy1090;
+       goto yy56;
+yy1149:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy1150;
+       if (yych != 'e') goto yy56;
+yy1150:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy1115;
+       if (yych == 'c') goto yy1115;
+       goto yy56;
+yy1151:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy1152;
+       if (yych != 's') goto yy56;
+yy1152:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'E') goto yy1153;
+       if (yych != 'e') goto yy1084;
+yy1153:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy1115;
+       if (yych == 'c') goto yy1115;
+       goto yy56;
+yy1154:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy1177;
+       if (yych == 'n') goto yy1177;
+       goto yy56;
+yy1155:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= 'K') {
+                       if (yych == 'C') goto yy1159;
+                       goto yy56;
+               } else {
+                       if (yych <= 'L') goto yy1158;
+                       if (yych <= 'M') goto yy56;
+                       goto yy1160;
+               }
+       } else {
+               if (yych <= 'k') {
+                       if (yych == 'c') goto yy1159;
+                       goto yy56;
+               } else {
+                       if (yych <= 'l') goto yy1158;
+                       if (yych == 'n') goto yy1160;
+                       goto yy56;
+               }
+       }
+yy1156:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych == 'E') goto yy1157;
+       if (yych != 'e') goto yy1084;
+yy1157:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy1115;
+       if (yych == 'c') goto yy1115;
+       goto yy56;
+yy1158:
+       yych = *++YYCURSOR;
+       if (yych == 'L') goto yy1170;
+       if (yych == 'l') goto yy1170;
+       goto yy56;
+yy1159:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy1163;
+       if (yych == 'r') goto yy1163;
+       goto yy56;
+yy1160:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'U') {
+               if (yych == 'S') goto yy1109;
+               if (yych <= 'T') goto yy1084;
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'r') goto yy1084;
+                       goto yy1109;
+               } else {
+                       if (yych != 'u') goto yy1084;
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy1162;
+       if (yych != 't') goto yy56;
+yy1162:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy1115;
+       if (yych == 'e') goto yy1115;
+       goto yy56;
+yy1163:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy1164;
+       if (yych != 'o') goto yy56;
+yy1164:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy1165;
+       if (yych != 's') goto yy56;
+yy1165:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy1166;
+       if (yych != 'e') goto yy56;
+yy1166:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy1167;
+       if (yych != 'c') goto yy56;
+yy1167:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy1168;
+       if (yych != 'o') goto yy56;
+yy1168:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy1169;
+       if (yych != 'n') goto yy56;
+yy1169:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy1115;
+       if (yych == 'd') goto yy1115;
+       goto yy56;
+yy1170:
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy1171;
+       if (yych != 'i') goto yy56;
+yy1171:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy1172;
+       if (yych != 's') goto yy56;
+yy1172:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy1173;
+       if (yych != 'e') goto yy56;
+yy1173:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy1174;
+       if (yych != 'c') goto yy56;
+yy1174:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy1175;
+       if (yych != 'o') goto yy56;
+yy1175:
+       yych = *++YYCURSOR;
+       if (yych == 'N') goto yy1176;
+       if (yych != 'n') goto yy56;
+yy1176:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy1115;
+       if (yych == 'd') goto yy1115;
+       goto yy56;
+yy1177:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy1085;
+                       goto yy1084;
+               } else {
+                       if (yych <= ' ') goto yy1085;
+                       if (yych <= 'C') goto yy1084;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych == 'T') goto yy1179;
+                       goto yy1084;
+               } else {
+                       if (yych <= 'd') goto yy1178;
+                       if (yych == 't') goto yy1179;
+                       goto yy1084;
+               }
+       }
+yy1178:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1180;
+       if (yych == 'a') goto yy1180;
+       goto yy56;
+yy1179:
+       yych = *++YYCURSOR;
+       if (yych == 'H') goto yy1115;
+       if (yych == 'h') goto yy1115;
+       goto yy56;
+yy1180:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1090;
+       if (yych == 'y') goto yy1090;
+       goto yy56;
+yy1181:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'E') goto yy1063;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'e') goto yy1182;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1182:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'U') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'V') goto yy1064;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'u') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'v') goto yy1183;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1183:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'H') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'I') goto yy1065;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'h') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'i') goto yy1184;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1184:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'N') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'O') goto yy1066;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'n') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'o') goto yy1185;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1185:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'T') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'U') goto yy1067;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'u') goto yy1186;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1186:
+       yych = *++YYCURSOR;
+       if (yych == 'S') goto yy1068;
+       if (yych != 's') goto yy179;
+       yych = *++YYCURSOR;
+       if (yybm[0+yych] & 16) {
+               goto yy178;
+       }
+       if (yych <= ',') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy56;
+                       goto yy1069;
+               } else {
+                       if (yych == ' ') goto yy1069;
+                       goto yy56;
+               }
+       } else {
+               if (yych <= '/') {
+                       if (yych == '.') goto yy56;
+                       goto yy172;
+               } else {
+                       if (yych == '_') goto yy172;
+                       goto yy56;
+               }
+       }
+yy1188:
+       yych = *++YYCURSOR;
+       if (yych <= 'G') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'F') goto yy166;
+                       goto yy1202;
+               }
+       } else {
+               if (yych <= 'f') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'g') goto yy1202;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1189:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy166;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'e') goto yy1190;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1190:
+       yych = *++YYCURSOR;
+       if (yych <= 'V') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'U') goto yy167;
+               }
+       } else {
+               if (yych <= 'u') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'v') goto yy1191;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1191:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy168;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'e') goto yy1192;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1192:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy169;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'n') goto yy1193;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1193:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'T') goto yy1194;
+               if (yych != 't') goto yy3;
+       }
+yy1194:
+       yych = *++YYCURSOR;
+       if (yych == 'H') goto yy1195;
+       if (yych != 'h') goto yy56;
+yy1195:
+       yych = *++YYCURSOR;
+       if (yych == '\t') goto yy1196;
+       if (yych != ' ') goto yy56;
+yy1196:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+       yych = *YYCURSOR;
+yy1197:
+       if (yych <= 'X') {
+               if (yych <= 'G') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy1196;
+                               if (yych <= 0x1F) goto yy56;
+                               goto yy1196;
+                       } else {
+                               if (yych <= 'D') {
+                                       if (yych <= 'C') goto yy56;
+                                       goto yy1076;
+                               } else {
+                                       if (yych == 'F') goto yy1077;
+                                       goto yy56;
+                               }
+                       }
+               } else {
+                       if (yych <= 'S') {
+                               if (yych <= 'L') {
+                                       if (yych <= 'H') goto yy1075;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'M') goto yy1071;
+                                       if (yych <= 'R') goto yy56;
+                                       goto yy1074;
+                               }
+                       } else {
+                               if (yych <= 'U') {
+                                       if (yych <= 'T') goto yy1080;
+                                       goto yy1073;
+                               } else {
+                                       if (yych != 'W') goto yy56;
+                               }
+                       }
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'f') {
+                               if (yych <= 'c') {
+                                       if (yych <= 'Y') goto yy1078;
+                                       goto yy56;
+                               } else {
+                                       if (yych <= 'd') goto yy1076;
+                                       if (yych <= 'e') goto yy56;
+                                       goto yy1077;
+                               }
+                       } else {
+                               if (yych <= 'h') {
+                                       if (yych <= 'g') goto yy56;
+                                       goto yy1075;
+                               } else {
+                                       if (yych == 'm') goto yy1071;
+                                       goto yy56;
+                               }
+                       }
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= 't') {
+                                       if (yych <= 's') goto yy1074;
+                                       goto yy1080;
+                               } else {
+                                       if (yych <= 'u') goto yy1073;
+                                       if (yych <= 'v') goto yy56;
+                               }
+                       } else {
+                               if (yych <= 'y') {
+                                       if (yych <= 'x') goto yy56;
+                                       goto yy1078;
+                               } else {
+                                       if (yych == 0xC2) goto yy1072;
+                                       goto yy56;
+                               }
+                       }
+               }
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy1199;
+       if (yych != 'e') goto yy56;
+yy1199:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= 'C') goto yy56;
+               if (yych <= 'D') goto yy1101;
+       } else {
+               if (yych <= 'c') goto yy56;
+               if (yych <= 'd') goto yy1101;
+               if (yych >= 'f') goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'K') goto yy1201;
+       if (yych != 'k') goto yy56;
+yy1201:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych == 'D') goto yy1110;
+               if (yych <= 'R') goto yy56;
+               goto yy1109;
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'c') goto yy56;
+                       goto yy1110;
+               } else {
+                       if (yych == 's') goto yy1109;
+                       goto yy56;
+               }
+       }
+yy1202:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'G') goto yy167;
+               }
+       } else {
+               if (yych <= 'g') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'h') goto yy1203;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1203:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy168;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 't') goto yy1204;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1204:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy1196;
+                       goto yy3;
+               } else {
+                       if (yych <= ' ') goto yy1196;
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych == 'H') goto yy1205;
+                       if (yych <= 'Z') goto yy169;
+                       goto yy3;
+               } else {
+                       if (yych == 'h') goto yy1205;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1205:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 0x1F) {
+               if (yych == '\t') goto yy1196;
+               goto yy3;
+       } else {
+               if (yych <= ' ') goto yy1196;
+               if (yych == ')') goto yy164;
+               goto yy3;
+       }
+yy1206:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'F') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'G') goto yy1202;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'f') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'g') goto yy1214;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1207:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'E') goto yy1190;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'e') goto yy1208;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1208:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'U') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'V') goto yy1191;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'u') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'v') goto yy1209;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1209:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'E') goto yy1192;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'e') goto yy1210;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1210:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'N') goto yy1193;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'n') goto yy1211;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1211:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'T') goto yy1194;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 't') goto yy1212;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1212:
+       yych = *++YYCURSOR;
+       if (yych == 'H') goto yy1195;
+       if (yych != 'h') goto yy179;
+yy1213:
+       yych = *++YYCURSOR;
+       if (yybm[0+yych] & 16) {
+               goto yy178;
+       }
+       if (yych <= ',') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy56;
+                       goto yy1196;
+               } else {
+                       if (yych == ' ') goto yy1196;
+                       goto yy56;
+               }
+       } else {
+               if (yych <= '/') {
+                       if (yych == '.') goto yy56;
+                       goto yy172;
+               } else {
+                       if (yych == '_') goto yy172;
+                       goto yy56;
+               }
+       }
+yy1214:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'H') goto yy1203;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'g') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'h') goto yy1215;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1215:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1204;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 't') goto yy1216;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1216:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy3;
+                               goto yy1196;
+                       } else {
+                               if (yych == ' ') goto yy1196;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy3;
+                       } else {
+                               if (yych == '.') goto yy3;
+                               goto yy172;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'G') {
+                               if (yych <= '@') goto yy3;
+                               goto yy169;
+                       } else {
+                               if (yych <= 'H') goto yy1205;
+                               if (yych <= 'Z') goto yy169;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= 'g') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'h') goto yy1217;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1217:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 16) {
+               goto yy178;
+       }
+       if (yych <= ')') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy1196;
+                       goto yy3;
+               } else {
+                       if (yych <= ' ') goto yy1196;
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               }
+       } else {
+               if (yych <= '.') {
+                       if (yych == '-') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych <= '/') goto yy172;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               }
+       }
+yy1218:
+       yych = *++YYCURSOR;
+       if (yych <= 'V') {
+               if (yych <= 'B') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'O') {
+                               if (yych <= 'C') goto yy1234;
+                               goto yy166;
+                       } else {
+                               if (yych <= 'P') goto yy1236;
+                               if (yych <= 'U') goto yy166;
+                               goto yy1235;
+                       }
+               }
+       } else {
+               if (yych <= 'o') {
+                       if (yych <= '`') {
+                               if (yych <= 'Z') goto yy166;
+                               goto yy3;
+                       } else {
+                               if (yych == 'c') goto yy1234;
+                               goto yy166;
+                       }
+               } else {
+                       if (yych <= 'u') {
+                               if (yych <= 'p') goto yy1236;
+                               goto yy166;
+                       } else {
+                               if (yych <= 'v') goto yy1235;
+                               if (yych <= 'z') goto yy166;
+                               goto yy3;
+                       }
+               }
+       }
+yy1219:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy166;
+                       goto yy1229;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 't') goto yy1229;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1220:
+       yych = *++YYCURSOR;
+       if (yych <= 'X') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'W') goto yy166;
+                       goto yy1226;
+               }
+       } else {
+               if (yych <= 'w') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'x') goto yy1226;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1221:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy166;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'n') goto yy1222;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1222:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy191;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy191;
+                       if (yych <= 'C') goto yy167;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy191;
+                       goto yy167;
+               } else {
+                       if (yych <= 'd') goto yy1223;
+                       if (yych <= 'z') goto yy167;
+                       goto yy191;
+               }
+       }
+yy1223:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy168;
+                       goto yy3;
+               } else {
+                       if (yych <= 'a') goto yy1224;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1224:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'X') goto yy169;
+               }
+       } else {
+               if (yych <= 'x') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'y') goto yy1225;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1225:
+       yych = *++YYCURSOR;
+       if (yych == ')') goto yy164;
+       goto yy191;
+yy1226:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy167;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 't') goto yy1227;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1227:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'G') goto yy168;
+               }
+       } else {
+               if (yych <= 'g') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'h') goto yy1228;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1228:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '(') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy3;
+                       goto yy1196;
+               } else {
+                       if (yych == ' ') goto yy1196;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1229:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy191;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy191;
+                       if (yych <= 'T') goto yy167;
+               }
+       } else {
+               if (yych <= 't') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy191;
+                       goto yy167;
+               } else {
+                       if (yych <= 'u') goto yy1230;
+                       if (yych <= 'z') goto yy167;
+                       goto yy191;
+               }
+       }
+yy1230:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Q') goto yy168;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'r') goto yy1231;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1231:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'C') goto yy169;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'd') goto yy1232;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1232:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'A') goto yy1233;
+               if (yych != 'a') goto yy3;
+       }
+yy1233:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy197;
+       if (yych == 'y') goto yy197;
+       goto yy56;
+yy1234:
+       yych = *++YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'N') goto yy167;
+                       goto yy1245;
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'o') goto yy1245;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1235:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy167;
+                       goto yy1242;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'e') goto yy1242;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1236:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy218;
+                       } else {
+                               if (yych <= '-') goto yy221;
+                               if (yych <= '.') goto yy220;
+                               goto yy218;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') {
+                               if (yych <= '9') goto yy220;
+                               goto yy218;
+                       } else {
+                               if (yych != 'T') goto yy167;
+                       }
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 't') goto yy1237;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+yy1237:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy218;
+                       } else {
+                               if (yych <= '-') goto yy221;
+                               if (yych <= '.') goto yy220;
+                               goto yy218;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') {
+                               if (yych <= '9') goto yy220;
+                               goto yy218;
+                       } else {
+                               if (yych != 'E') goto yy168;
+                       }
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '`') goto yy218;
+                               goto yy168;
+                       } else {
+                               if (yych <= 'e') goto yy1238;
+                               if (yych <= 'z') goto yy168;
+                               goto yy218;
+                       }
+               }
+       }
+yy1238:
+       yych = *++YYCURSOR;
+       if (yych <= 'M') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'L') goto yy169;
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'm') goto yy1239;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1239:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'B') goto yy1240;
+               if (yych != 'b') goto yy3;
+       }
+yy1240:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy1241;
+       if (yych != 'e') goto yy56;
+yy1241:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy229;
+       if (yych == 'r') goto yy229;
+       goto yy56;
+yy1242:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy168;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'n') goto yy1243;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1243:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy169;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 't') goto yy1244;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1244:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'H') goto yy1195;
+               if (yych == 'h') goto yy1195;
+               goto yy3;
+       }
+yy1245:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy168;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'n') goto yy1246;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1246:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'C') goto yy169;
+                       goto yy1205;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'd') goto yy1205;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1247:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'U') {
+               if (yych <= '/') {
+                       if (yych <= ',') {
+                               if (yych == ')') goto yy164;
+                               goto yy3;
+                       } else {
+                               if (yych == '.') goto yy3;
+                               goto yy172;
+                       }
+               } else {
+                       if (yych <= 'C') {
+                               if (yych <= '@') goto yy3;
+                               if (yych <= 'B') goto yy166;
+                               goto yy1234;
+                       } else {
+                               if (yych == 'P') goto yy1236;
+                               goto yy166;
+                       }
+               }
+       } else {
+               if (yych <= 'b') {
+                       if (yych <= '^') {
+                               if (yych <= 'V') goto yy1235;
+                               if (yych <= 'Z') goto yy166;
+                               goto yy3;
+                       } else {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       }
+               } else {
+                       if (yych <= 'p') {
+                               if (yych <= 'c') goto yy1263;
+                               if (yych <= 'o') goto yy171;
+                               goto yy1265;
+                       } else {
+                               if (yych == 'v') goto yy1264;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1248:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1229;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 't') goto yy1258;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1249:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'X') goto yy1226;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'x') goto yy1255;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1250:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'N') goto yy1222;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'n') goto yy1251;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1251:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy191;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'D') goto yy1223;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych <= 'c') {
+                               if (yych <= '`') goto yy191;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'd') goto yy1252;
+                               if (yych <= 'z') goto yy175;
+                               goto yy191;
+                       }
+               }
+       }
+yy1252:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'A') goto yy1224;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'a') goto yy1253;
+                       if (yych <= 'z') goto yy176;
+                       goto yy3;
+               }
+       }
+yy1253:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'Y') goto yy1225;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'x') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'y') goto yy1254;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1254:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 16) {
+               goto yy178;
+       }
+       if (yych <= '-') {
+               if (yych == ')') goto yy164;
+               if (yych <= ',') goto yy191;
+               goto yy172;
+       } else {
+               if (yych <= '/') {
+                       if (yych <= '.') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych == '_') goto yy172;
+                       goto yy191;
+               }
+       }
+yy1255:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1227;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 't') goto yy1256;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1256:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'H') goto yy1228;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'g') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'h') goto yy1257;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1257:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '-') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy1196;
+                       if (yych <= 0x1F) goto yy3;
+                       goto yy1196;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= '^') goto yy3;
+                               goto yy172;
+                       } else {
+                               if (yych <= '`') goto yy3;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1258:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'T') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy191;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'U') goto yy1230;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych <= 't') {
+                               if (yych <= '`') goto yy191;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'u') goto yy1259;
+                               if (yych <= 'z') goto yy175;
+                               goto yy191;
+                       }
+               }
+       }
+yy1259:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'R') goto yy1231;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'q') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'r') goto yy1260;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1260:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'D') goto yy1232;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'c') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'd') goto yy1261;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1261:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'A') goto yy1233;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'a') goto yy1262;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1262:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy197;
+       if (yych == 'y') goto yy210;
+       goto yy179;
+yy1263:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'N') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'O') goto yy1245;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'n') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'o') goto yy1274;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1264:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'E') goto yy1242;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'e') goto yy1271;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1265:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ')') goto yy164;
+                               if (yych <= ',') goto yy218;
+                               goto yy336;
+                       } else {
+                               if (yych == '/') goto yy172;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'S') {
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'T') goto yy1237;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+                               if (yych <= 't') goto yy1266;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+yy1266:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ')') goto yy164;
+                               if (yych <= ',') goto yy218;
+                               goto yy336;
+                       } else {
+                               if (yych == '/') goto yy172;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'D') {
+                               if (yych <= '@') goto yy218;
+                               goto yy168;
+                       } else {
+                               if (yych <= 'E') goto yy1238;
+                               if (yych <= 'Z') goto yy168;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy218;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'e') goto yy1267;
+                               if (yych <= 'z') goto yy176;
+                               goto yy218;
+                       }
+               }
+       }
+yy1267:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'L') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'M') goto yy1239;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'l') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'm') goto yy1268;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1268:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'A') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'B') goto yy1240;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'b') goto yy1269;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1269:
+       yych = *++YYCURSOR;
+       if (yych == 'E') goto yy1241;
+       if (yych != 'e') goto yy179;
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy229;
+       if (yych == 'r') goto yy341;
+       goto yy179;
+yy1271:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'N') goto yy1243;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'n') goto yy1272;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1272:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1244;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 't') goto yy1273;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1273:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'H') goto yy1195;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'h') goto yy1213;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1274:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'N') goto yy1246;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'n') goto yy1275;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1275:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'D') goto yy1205;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'c') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'd') goto yy1217;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1276:
+       yych = *++YYCURSOR;
+       if (yych <= 'C') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'B') goto yy166;
+               }
+       } else {
+               if (yych <= 'b') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'c') goto yy1277;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1277:
+       yych = *++YYCURSOR;
+       if (yych <= 'K') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'J') goto yy167;
+               }
+       } else {
+               if (yych <= 'j') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'k') goto yy1278;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1278:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ')') {
+               if (yych == ' ') goto yy1279;
+               if (yych <= '(') goto yy3;
+               goto yy164;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1279:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy1280;
+       if (yych != 'o') goto yy56;
+yy1280:
+       yych = *++YYCURSOR;
+       if (yych == 'F') goto yy1281;
+       if (yych != 'f') goto yy56;
+yy1281:
+       yych = *++YYCURSOR;
+       if (yych != ' ') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '1') goto yy1283;
+       if (yych <= '2') goto yy1285;
+       if (yych <= '9') goto yy1286;
+       goto yy56;
+yy1283:
+       yyaccept = 27;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') goto yy1287;
+       if (yych <= '9') goto yy1286;
+       goto yy1287;
+yy1284:
+       {
+               DEBUG_OUTPUT("backof | frontof");
+               TIMELIB_INIT;
+               TIMELIB_UNHAVE_TIME();
+               TIMELIB_HAVE_TIME();
+
+               if (*ptr == 'b') {
+                       s->time->h = timelib_get_nr((char **) &ptr, 2);
+                       s->time->i = 15;
+               } else {
+                       s->time->h = timelib_get_nr((char **) &ptr, 2) - 1;
+                       s->time->i = 45;
+               }
+               if (*ptr != '\0' ) {
+                       timelib_eat_spaces((char **) &ptr);
+                       s->time->h += timelib_meridian((char **) &ptr, s->time->h);
+               }
+
+               TIMELIB_DEINIT;
+               return TIMELIB_LF_DAY_OF_MONTH;
+       }
+yy1285:
+       yyaccept = 27;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') goto yy1287;
+       if (yych >= '5') goto yy1287;
+yy1286:
+       yyaccept = 27;
+       YYMARKER = ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+       yych = *YYCURSOR;
+yy1287:
+       if (yych <= 'A') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy1286;
+                       goto yy1284;
+               } else {
+                       if (yych <= ' ') goto yy1286;
+                       if (yych <= '@') goto yy1284;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych != 'P') goto yy1284;
+               } else {
+                       if (yych <= 'a') goto yy1288;
+                       if (yych != 'p') goto yy1284;
+               }
+       }
+yy1288:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych != '.') goto yy56;
+       } else {
+               if (yych <= 'M') goto yy1290;
+               if (yych == 'm') goto yy1290;
+               goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy1290;
+       if (yych != 'm') goto yy56;
+yy1290:
+       yych = *++YYCURSOR;
+       if (yych <= 0x1F) {
+               if (yych <= 0x00) goto yy1292;
+               if (yych == '\t') goto yy1292;
+               goto yy56;
+       } else {
+               if (yych <= ' ') goto yy1292;
+               if (yych != '.') goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych <= '\t') {
+               if (yych <= 0x00) goto yy1292;
+               if (yych <= 0x08) goto yy56;
+       } else {
+               if (yych != ' ') goto yy56;
+       }
+yy1292:
+       yych = *++YYCURSOR;
+       goto yy1284;
+yy1293:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'B') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'C') goto yy1277;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'b') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'c') goto yy1294;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1294:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'J') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'K') goto yy1278;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'j') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'k') goto yy1295;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1295:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= '(') {
+                       if (yych == ' ') goto yy1279;
+                       goto yy3;
+               } else {
+                       if (yych <= ')') goto yy164;
+                       if (yych == '-') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Z') goto yy168;
+                       goto yy3;
+               } else {
+                       if (yych <= '_') goto yy172;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy176;
+                       goto yy3;
+               }
+       }
+yy1296:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'R') goto yy166;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 's') goto yy1297;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1297:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy167;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 't') goto yy1298;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1298:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '(') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy3;
+                       goto yy1069;
+               } else {
+                       if (yych != ' ') goto yy3;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1299:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy1300;
+       if (yych != 'd') goto yy1070;
+yy1300:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1301;
+       if (yych != 'a') goto yy56;
+yy1301:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1302;
+       if (yych != 'y') goto yy56;
+yy1302:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+               if (yych != ' ') goto yy1084;
+       } else {
+               if (yych <= 'S') goto yy1109;
+               if (yych == 's') goto yy1109;
+               goto yy1084;
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy1304;
+       if (yych != 'o') goto yy56;
+yy1304:
+       yych = *++YYCURSOR;
+       if (yych == 'F') goto yy1305;
+       if (yych != 'f') goto yy56;
+yy1305:
+       ++YYCURSOR;
+       {
+               DEBUG_OUTPUT("firstdayof | lastdayof");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_RELATIVE();
+
+               /* skip "last day of" or "first day of" */
+               if (*ptr == 'l' || *ptr == 'L') {
+                       s->time->relative.first_last_day_of = TIMELIB_SPECIAL_LAST_DAY_OF_MONTH;
+               } else {
+                       s->time->relative.first_last_day_of = TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH;
+               }
+
+               TIMELIB_DEINIT;
+               return TIMELIB_LF_DAY_OF_MONTH;
+       }
+yy1307:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'S') goto yy1297;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 's') goto yy1308;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1308:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1298;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 't') goto yy1309;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1309:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '-') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy1069;
+                       if (yych <= 0x1F) goto yy3;
+                       goto yy1299;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= '^') goto yy3;
+                               goto yy172;
+                       } else {
+                               if (yych <= '`') goto yy3;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1310:
+       yych = *++YYCURSOR;
+       if (yych <= 'B') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'A') goto yy166;
+                       goto yy1346;
+               }
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'b') goto yy1346;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1311:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == 'F') goto yy1336;
+                       if (yych <= 'Q') goto yy166;
+                       goto yy1335;
+               }
+       } else {
+               if (yych <= 'f') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'e') goto yy166;
+                       goto yy1336;
+               } else {
+                       if (yych == 'r') goto yy1335;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1312:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'T') goto yy166;
+                       goto yy1332;
+               }
+       } else {
+               if (yych <= 't') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'u') goto yy1332;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1313:
+       yych = *++YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == 'I') goto yy1315;
+                       if (yych <= 'N') goto yy166;
+               }
+       } else {
+               if (yych <= 'i') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'h') goto yy166;
+                       goto yy1315;
+               } else {
+                       if (yych == 'o') goto yy1314;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1314:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy167;
+                       goto yy1318;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'n') goto yy1318;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1315:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy191;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy191;
+                       if (yych <= 'C') goto yy167;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy191;
+                       goto yy167;
+               } else {
+                       if (yych <= 'd') goto yy1316;
+                       if (yych <= 'z') goto yy167;
+                       goto yy191;
+               }
+       }
+yy1316:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy168;
+                       goto yy3;
+               } else {
+                       if (yych <= 'a') goto yy1317;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1317:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'X') goto yy169;
+                       goto yy1225;
+               }
+       } else {
+               if (yych <= 'x') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'y') goto yy1225;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1318:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy168;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 't') goto yy1319;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1319:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ')') {
+               if (yych == ' ') goto yy1320;
+               if (yych <= '(') goto yy3;
+               goto yy164;
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1320:
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy1321;
+       if (yych != 'o') goto yy56;
+yy1321:
+       yych = *++YYCURSOR;
+       if (yych == 'F') goto yy1322;
+       if (yych != 'f') goto yy56;
+yy1322:
+       yych = *++YYCURSOR;
+       if (yych != ' ') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '1') goto yy1324;
+       if (yych <= '2') goto yy1325;
+       if (yych <= '9') goto yy1326;
+       goto yy56;
+yy1324:
+       yyaccept = 27;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') goto yy1327;
+       if (yych <= '9') goto yy1326;
+       goto yy1327;
+yy1325:
+       yyaccept = 27;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') goto yy1327;
+       if (yych >= '5') goto yy1327;
+yy1326:
+       yyaccept = 27;
+       YYMARKER = ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+       yych = *YYCURSOR;
+yy1327:
+       if (yych <= 'A') {
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy1326;
+                       goto yy1284;
+               } else {
+                       if (yych <= ' ') goto yy1326;
+                       if (yych <= '@') goto yy1284;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych != 'P') goto yy1284;
+               } else {
+                       if (yych <= 'a') goto yy1328;
+                       if (yych != 'p') goto yy1284;
+               }
+       }
+yy1328:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych != '.') goto yy56;
+       } else {
+               if (yych <= 'M') goto yy1330;
+               if (yych == 'm') goto yy1330;
+               goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy1330;
+       if (yych != 'm') goto yy56;
+yy1330:
+       yych = *++YYCURSOR;
+       if (yych <= 0x1F) {
+               if (yych <= 0x00) goto yy1292;
+               if (yych == '\t') goto yy1292;
+               goto yy56;
+       } else {
+               if (yych <= ' ') goto yy1292;
+               if (yych != '.') goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych <= '\t') {
+               if (yych <= 0x00) goto yy1292;
+               if (yych <= 0x08) goto yy56;
+               goto yy1292;
+       } else {
+               if (yych == ' ') goto yy1292;
+               goto yy56;
+       }
+yy1332:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Q') goto yy167;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'r') goto yy1333;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1333:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy168;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 't') goto yy1334;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1334:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'G') goto yy169;
+                       goto yy1205;
+               }
+       } else {
+               if (yych <= 'g') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'h') goto yy1205;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1335:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'R') goto yy167;
+                       goto yy1338;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 's') goto yy1338;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1336:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy167;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 't') goto yy1337;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1337:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'G') goto yy168;
+                       goto yy1228;
+               }
+       } else {
+               if (yych <= 'g') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'h') goto yy1228;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1338:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy168;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 't') goto yy1339;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1339:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '(') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy3;
+                       goto yy1196;
+               } else {
+                       if (yych != ' ') goto yy3;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1340:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy1341;
+       if (yych != 'd') goto yy1197;
+yy1341:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1342;
+       if (yych != 'a') goto yy56;
+yy1342:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1343;
+       if (yych != 'y') goto yy56;
+yy1343:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+               if (yych != ' ') goto yy1084;
+       } else {
+               if (yych <= 'S') goto yy1109;
+               if (yych == 's') goto yy1109;
+               goto yy1084;
+       }
+       yych = *++YYCURSOR;
+       if (yych == 'O') goto yy1345;
+       if (yych != 'o') goto yy56;
+yy1345:
+       yych = *++YYCURSOR;
+       if (yych == 'F') goto yy1305;
+       if (yych == 'f') goto yy1305;
+       goto yy56;
+yy1346:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy218;
+                       } else {
+                               if (yych <= '-') goto yy221;
+                               if (yych <= '.') goto yy220;
+                               goto yy218;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') {
+                               if (yych <= '9') goto yy220;
+                               goto yy218;
+                       } else {
+                               if (yych != 'R') goto yy167;
+                       }
+               } else {
+                       if (yych <= 'q') {
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'r') goto yy1347;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+yy1347:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'T') goto yy168;
+               }
+       } else {
+               if (yych <= 't') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'u') goto yy1348;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1348:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy169;
+                       goto yy3;
+               } else {
+                       if (yych <= 'a') goto yy1349;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1349:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'R') goto yy1350;
+               if (yych != 'r') goto yy3;
+       }
+yy1350:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy229;
+       if (yych == 'y') goto yy229;
+       goto yy56;
+yy1351:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'A') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'B') goto yy1346;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'a') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'b') goto yy1369;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1352:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych <= '.') {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy3;
+                               goto yy164;
+                       } else {
+                               if (yych == '-') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= '@') {
+                               if (yych <= '/') goto yy172;
+                               goto yy3;
+                       } else {
+                               if (yych == 'F') goto yy1336;
+                               goto yy166;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+                               if (yych <= 'R') goto yy1335;
+                               goto yy166;
+                       } else {
+                               if (yych == '_') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= 'q') {
+                               if (yych == 'f') goto yy1365;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'r') goto yy1364;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1353:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'T') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'U') goto yy1332;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 't') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'u') goto yy1361;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1354:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'N') {
+               if (yych <= '.') {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy3;
+                               goto yy164;
+                       } else {
+                               if (yych == '-') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= '@') {
+                               if (yych <= '/') goto yy172;
+                               goto yy3;
+                       } else {
+                               if (yych == 'I') goto yy1315;
+                               goto yy166;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+                               if (yych <= 'O') goto yy1314;
+                               goto yy166;
+                       } else {
+                               if (yych == '_') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= 'n') {
+                               if (yych == 'i') goto yy1356;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'o') goto yy1355;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1355:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'N') goto yy1318;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'n') goto yy1359;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1356:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy191;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'D') goto yy1316;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych <= 'c') {
+                               if (yych <= '`') goto yy191;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'd') goto yy1357;
+                               if (yych <= 'z') goto yy175;
+                               goto yy191;
+                       }
+               }
+       }
+yy1357:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'A') goto yy1317;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'a') goto yy1358;
+                       if (yych <= 'z') goto yy176;
+                       goto yy3;
+               }
+       }
+yy1358:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'Y') goto yy1225;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'x') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'y') goto yy1254;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1359:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1319;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 't') goto yy1360;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1360:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= '(') {
+                       if (yych == ' ') goto yy1320;
+                       goto yy3;
+               } else {
+                       if (yych <= ')') goto yy164;
+                       if (yych == '-') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Z') goto yy169;
+                       goto yy3;
+               } else {
+                       if (yych <= '_') goto yy172;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy177;
+                       goto yy3;
+               }
+       }
+yy1361:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'R') goto yy1333;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'q') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'r') goto yy1362;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1362:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1334;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 't') goto yy1363;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1363:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'H') goto yy1205;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'g') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'h') goto yy1217;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1364:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'S') goto yy1338;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 's') goto yy1367;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1365:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1337;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 't') goto yy1366;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1366:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'H') goto yy1228;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'g') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'h') goto yy1257;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1367:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1339;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 't') goto yy1368;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1368:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '-') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy1196;
+                       if (yych <= 0x1F) goto yy3;
+                       goto yy1340;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= '^') goto yy3;
+                               goto yy172;
+                       } else {
+                               if (yych <= '`') goto yy3;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1369:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ')') goto yy164;
+                               if (yych <= ',') goto yy218;
+                               goto yy336;
+                       } else {
+                               if (yych == '/') goto yy172;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'Q') {
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'R') goto yy1347;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= 'q') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'r') goto yy1370;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+yy1370:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'T') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'U') goto yy1348;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 't') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'u') goto yy1371;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1371:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'A') goto yy1349;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'a') goto yy1372;
+                       if (yych <= 'z') goto yy177;
+                       goto yy3;
+               }
+       }
+yy1372:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'R') goto yy1350;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'r') goto yy1373;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1373:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy229;
+       if (yych == 'y') goto yy341;
+       goto yy179;
+yy1374:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+yy1375:
+       yyaccept = 28;
+       YYMARKER = ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
+       yych = *YYCURSOR;
+       if (yych == '.') goto yy1378;
+       if (yych <= '/') goto yy1377;
+       if (yych <= '9') goto yy1375;
+yy1377:
+       {
+               timelib_ull i;
+
+               TIMELIB_INIT;
+               TIMELIB_HAVE_RELATIVE();
+               TIMELIB_UNHAVE_DATE();
+               TIMELIB_UNHAVE_TIME();
+               TIMELIB_HAVE_TZ();
+
+               i = timelib_get_unsigned_nr((char **) &ptr, 24);
+               s->time->y = 1970;
+               s->time->m = 1;
+               s->time->d = 1;
+               s->time->h = s->time->i = s->time->s = 0;
+               s->time->f = 0.0;
+               s->time->relative.s += i;
+               s->time->is_localtime = 1;
+               s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
+               s->time->z = 0;
+               s->time->dst = 0;
+
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+yy1378:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       ++YYCURSOR;
+       {
+               timelib_ull i, ms;
+
+               TIMELIB_INIT;
+               TIMELIB_HAVE_RELATIVE();
+               TIMELIB_UNHAVE_DATE();
+               TIMELIB_UNHAVE_TIME();
+               TIMELIB_HAVE_TZ();
+
+               i = timelib_get_unsigned_nr((char **) &ptr, 24);
+               ms = timelib_get_unsigned_nr((char **) &ptr, 24);
+               s->time->y = 1970;
+               s->time->m = 1;
+               s->time->d = 1;
+               s->time->h = s->time->i = s->time->s = 0;
+               s->time->f = 0.0;
+               s->time->relative.s += i;
+               s->time->relative.f = ((double) ms) / 1000000.0;
+               s->time->is_localtime = 1;
+               s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
+               s->time->z = 0;
+               s->time->dst = 0;
+
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+yy1386:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy166;
+                       goto yy1427;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'n') goto yy1427;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1387:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == 'I') goto yy1419;
+                       if (yych <= 'T') goto yy166;
+                       goto yy1420;
+               }
+       } else {
+               if (yych <= 'i') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'h') goto yy166;
+                       goto yy1419;
+               } else {
+                       if (yych == 'u') goto yy1420;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1388:
+       yych = *++YYCURSOR;
+       if (yych <= 'M') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == 'D') goto yy1408;
+                       if (yych <= 'L') goto yy166;
+                       goto yy1409;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'c') goto yy166;
+                       goto yy1408;
+               } else {
+                       if (yych == 'm') goto yy1409;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1389:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy166;
+                       goto yy1404;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'e') goto yy1404;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1390:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy166;
+                       goto yy1400;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'e') goto yy1400;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1391:
+       yych = *++YYCURSOR;
+       if (yych <= '/') {
+               if (yych == '.') goto yy1029;
+               goto yy56;
+       } else {
+               if (yych <= '9') goto yy1394;
+               if (yych <= ':') goto yy1029;
+               goto yy56;
+       }
+yy1392:
+       yych = *++YYCURSOR;
+       if (yych <= '/') {
+               if (yych == '.') goto yy1029;
+               goto yy56;
+       } else {
+               if (yych <= '4') goto yy1394;
+               if (yych == ':') goto yy1029;
+               goto yy56;
+       }
+yy1393:
+       yych = *++YYCURSOR;
+       if (yych == '.') goto yy1029;
+       if (yych == ':') goto yy1029;
+       goto yy56;
+yy1394:
+       yych = *++YYCURSOR;
+       if (yych <= '/') {
+               if (yych == '.') goto yy1029;
+               goto yy56;
+       } else {
+               if (yych <= '5') goto yy1395;
+               if (yych == ':') goto yy1029;
+               goto yy56;
+       }
+yy1395:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yyaccept = 23;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') goto yy1032;
+       if (yych <= '5') goto yy1397;
+       if (yych <= '6') goto yy1398;
+       goto yy1032;
+yy1397:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych <= '9') goto yy1399;
+       goto yy56;
+yy1398:
+       yych = *++YYCURSOR;
+       if (yych != '0') goto yy56;
+yy1399:
+       yych = *++YYCURSOR;
+       goto yy1040;
+yy1400:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'K') goto yy167;
+               }
+       } else {
+               if (yych <= 'k') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'l') goto yy1401;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1401:
+       yych = *++YYCURSOR;
+       if (yych <= 'F') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'E') goto yy168;
+               }
+       } else {
+               if (yych <= 'e') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'f') goto yy1402;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1402:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy169;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 't') goto yy1403;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1403:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'H') goto yy1195;
+               if (yych == 'h') goto yy1195;
+               goto yy3;
+       }
+yy1404:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy191;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy191;
+                       if (yych <= 'R') goto yy167;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy191;
+                       goto yy167;
+               } else {
+                       if (yych <= 's') goto yy1405;
+                       if (yych <= 'z') goto yy167;
+                       goto yy191;
+               }
+       }
+yy1405:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'C') goto yy168;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'd') goto yy1406;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1406:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy169;
+                       goto yy3;
+               } else {
+                       if (yych <= 'a') goto yy1407;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1407:
+       yych = *++YYCURSOR;
+       if (yych <= 'X') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'Y') goto yy197;
+               if (yych == 'y') goto yy197;
+               goto yy3;
+       }
+yy1408:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+               goto yy1416;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy167;
+                       goto yy3;
+               } else {
+                       if (yych <= 'a') goto yy1416;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1409:
+       yych = *++YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'N') goto yy167;
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'o') goto yy1410;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1410:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Q') goto yy168;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'r') goto yy1411;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1411:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Q') goto yy169;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'r') goto yy1412;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1412:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'N') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'O') goto yy1413;
+               if (yych != 'o') goto yy3;
+       }
+yy1413:
+       yych = *++YYCURSOR;
+       if (yych == 'W') goto yy1414;
+       if (yych != 'w') goto yy56;
+yy1414:
+       ++YYCURSOR;
+yy1415:
+       {
+               DEBUG_OUTPUT("tomorrow");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_RELATIVE();
+               TIMELIB_UNHAVE_TIME();
+
+               s->time->relative.d = 1;
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+yy1416:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'X') goto yy168;
+               }
+       } else {
+               if (yych <= 'x') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'y') goto yy1417;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1417:
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= '@') {
+               if (yych == ')') goto yy164;
+       } else {
+               if (yych <= 'Z') goto yy169;
+               if (yych <= '`') goto yy1418;
+               if (yych <= 'z') goto yy169;
+       }
+yy1418:
+       {
+               DEBUG_OUTPUT("midnight | today");
+               TIMELIB_INIT;
+               TIMELIB_UNHAVE_TIME();
+
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+yy1419:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych <= 'Q') goto yy167;
+                       if (yych <= 'R') goto yy1425;
+                       goto yy1426;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'r') goto yy1425;
+                       if (yych <= 's') goto yy1426;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1420:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy191;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy191;
+                       if (yych <= 'Q') goto yy167;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy191;
+                       goto yy167;
+               } else {
+                       if (yych <= 'r') goto yy1421;
+                       if (yych <= 'z') goto yy167;
+                       goto yy191;
+               }
+       }
+yy1421:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'R') goto yy168;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 's') goto yy1422;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1422:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'C') goto yy169;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'd') goto yy1423;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1423:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'A') goto yy1424;
+               if (yych != 'a') goto yy3;
+       }
+yy1424:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy197;
+       if (yych == 'y') goto yy197;
+       goto yy56;
+yy1425:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'C') goto yy168;
+                       goto yy1228;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'd') goto yy1228;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1426:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '(') {
+               if (yych <= '\t') {
+                       if (yych <= 0x08) goto yy3;
+                       goto yy1069;
+               } else {
+                       if (yych == ' ') goto yy1069;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1427:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy167;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 't') goto yy1428;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1428:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'G') goto yy168;
+                       goto yy1228;
+               }
+       } else {
+               if (yych <= 'g') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'h') goto yy1228;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1429:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'N') goto yy1427;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'n') goto yy1459;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1430:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'T') {
+               if (yych <= '.') {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy3;
+                               goto yy164;
+                       } else {
+                               if (yych == '-') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= '@') {
+                               if (yych <= '/') goto yy172;
+                               goto yy3;
+                       } else {
+                               if (yych == 'I') goto yy1419;
+                               goto yy166;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+                               if (yych <= 'U') goto yy1420;
+                               goto yy166;
+                       } else {
+                               if (yych == '_') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= 't') {
+                               if (yych == 'i') goto yy1451;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'u') goto yy1452;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1431:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'L') {
+               if (yych <= '.') {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy3;
+                               goto yy164;
+                       } else {
+                               if (yych == '-') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= '@') {
+                               if (yych <= '/') goto yy172;
+                               goto yy3;
+                       } else {
+                               if (yych == 'D') goto yy1408;
+                               goto yy166;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+                               if (yych <= 'M') goto yy1409;
+                               goto yy166;
+                       } else {
+                               if (yych == '_') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= 'l') {
+                               if (yych == 'd') goto yy1442;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'm') goto yy1443;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1432:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'E') goto yy1404;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'e') goto yy1438;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1433:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'E') goto yy1400;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'e') goto yy1434;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1434:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'K') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'L') goto yy1401;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'k') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'l') goto yy1435;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1435:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'E') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'F') goto yy1402;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'e') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'f') goto yy1436;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1436:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1403;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 't') goto yy1437;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1437:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'H') goto yy1195;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'h') goto yy1213;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1438:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy191;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'S') goto yy1405;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= '`') goto yy191;
+                               goto yy175;
+                       } else {
+                               if (yych <= 's') goto yy1439;
+                               if (yych <= 'z') goto yy175;
+                               goto yy191;
+                       }
+               }
+       }
+yy1439:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'D') goto yy1406;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'c') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'd') goto yy1440;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1440:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'A') goto yy1407;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'a') goto yy1441;
+                       if (yych <= 'z') goto yy177;
+                       goto yy3;
+               }
+       }
+yy1441:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Y') goto yy197;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'y') goto yy210;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1442:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'A') goto yy1416;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'a') goto yy1449;
+                       if (yych <= 'z') goto yy175;
+                       goto yy3;
+               }
+       }
+yy1443:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'N') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'O') goto yy1410;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'n') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'o') goto yy1444;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1444:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'R') goto yy1411;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'q') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'r') goto yy1445;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1445:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'R') goto yy1412;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'q') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'r') goto yy1446;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1446:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'N') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'O') goto yy1413;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'o') goto yy1447;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1447:
+       yych = *++YYCURSOR;
+       if (yych == 'W') goto yy1414;
+       if (yych != 'w') goto yy179;
+       yyaccept = 29;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 16) {
+               goto yy178;
+       }
+       if (yych <= '.') {
+               if (yych == '-') goto yy172;
+               goto yy1415;
+       } else {
+               if (yych <= '/') goto yy172;
+               if (yych == '_') goto yy172;
+               goto yy1415;
+       }
+yy1449:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'Y') goto yy1417;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'x') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'y') goto yy1450;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1450:
+       yyaccept = 30;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy1418;
+               } else {
+                       if (yych == '.') goto yy1418;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '@') goto yy1418;
+                       if (yych <= 'Z') goto yy169;
+                       goto yy1418;
+               } else {
+                       if (yych <= '_') goto yy172;
+                       if (yych <= '`') goto yy1418;
+                       if (yych <= 'z') goto yy177;
+                       goto yy1418;
+               }
+       }
+yy1451:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '/') {
+                               if (yych <= '.') goto yy3;
+                               goto yy172;
+                       } else {
+                               if (yych <= '@') goto yy3;
+                               if (yych <= 'Q') goto yy167;
+                               goto yy1425;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+                               if (yych <= 'S') goto yy1426;
+                               goto yy167;
+                       } else {
+                               if (yych == '_') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= 'q') goto yy175;
+                               goto yy1457;
+                       } else {
+                               if (yych <= 's') goto yy1458;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1452:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy191;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'R') goto yy1421;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych <= 'q') {
+                               if (yych <= '`') goto yy191;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'r') goto yy1453;
+                               if (yych <= 'z') goto yy175;
+                               goto yy191;
+                       }
+               }
+       }
+yy1453:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'S') goto yy1422;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 's') goto yy1454;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1454:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'D') goto yy1423;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'c') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'd') goto yy1455;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1455:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'A') goto yy1424;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'a') goto yy1456;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1456:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy197;
+       if (yych == 'y') goto yy210;
+       goto yy179;
+yy1457:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'D') goto yy1228;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'c') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'd') goto yy1257;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1458:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '-') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy1069;
+                       if (yych <= 0x1F) goto yy3;
+                       goto yy1069;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= '^') goto yy3;
+                               goto yy172;
+                       } else {
+                               if (yych <= '`') goto yy3;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1459:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1428;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 't') goto yy1460;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1460:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'H') goto yy1228;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'g') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'h') goto yy1257;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1461:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == 'R') goto yy1473;
+                       if (yych <= 'X') goto yy166;
+                       goto yy1474;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'q') goto yy166;
+                       goto yy1473;
+               } else {
+                       if (yych == 'y') goto yy1474;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1462:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'C') goto yy166;
+                       goto yy1467;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'd') goto yy1467;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1463:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy166;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'n') goto yy1464;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1464:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy191;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy191;
+                       if (yych <= 'C') goto yy167;
+               }
+       } else {
+               if (yych <= 'c') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy191;
+                       goto yy167;
+               } else {
+                       if (yych <= 'd') goto yy1465;
+                       if (yych <= 'z') goto yy167;
+                       goto yy191;
+               }
+       }
+yy1465:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy168;
+                       goto yy3;
+               } else {
+                       if (yych <= 'a') goto yy1466;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1466:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'X') goto yy169;
+                       goto yy1225;
+               }
+       } else {
+               if (yych <= 'x') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'y') goto yy1225;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1467:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy167;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'n') goto yy1468;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1468:
+       yych = *++YYCURSOR;
+       if (yych <= 'I') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'H') goto yy168;
+               }
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'i') goto yy1469;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1469:
+       yych = *++YYCURSOR;
+       if (yych <= 'G') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'F') goto yy169;
+               }
+       } else {
+               if (yych <= 'f') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'g') goto yy1470;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1470:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'H') goto yy1471;
+               if (yych != 'h') goto yy3;
+       }
+yy1471:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy1472;
+       if (yych != 't') goto yy56;
+yy1472:
+       yych = *++YYCURSOR;
+       goto yy1418;
+yy1473:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy218;
+                       } else {
+                               if (yych <= '-') goto yy221;
+                               if (yych <= '.') goto yy220;
+                               goto yy218;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') {
+                               if (yych <= '9') goto yy220;
+                               goto yy218;
+                       } else {
+                               if (yych == 'C') goto yy1475;
+                               goto yy167;
+                       }
+               } else {
+                       if (yych <= 'b') {
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'c') goto yy1475;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+yy1474:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '-') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy220;
+                       if (yych <= 0x1F) goto yy218;
+                       goto yy220;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy218;
+                       goto yy221;
+               }
+       } else {
+               if (yych <= '@') {
+                       if (yych == '/') goto yy218;
+                       if (yych <= '9') goto yy220;
+                       goto yy218;
+               } else {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy218;
+                       if (yych <= 'z') goto yy167;
+                       goto yy218;
+               }
+       }
+yy1475:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'G') goto yy168;
+                       goto yy360;
+               }
+       } else {
+               if (yych <= 'g') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'h') goto yy360;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1476:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+               if (yych <= '.') {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy3;
+                               goto yy164;
+                       } else {
+                               if (yych == '-') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= '@') {
+                               if (yych <= '/') goto yy172;
+                               goto yy3;
+                       } else {
+                               if (yych == 'R') goto yy1473;
+                               goto yy166;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+                               if (yych <= 'Y') goto yy1474;
+                               goto yy166;
+                       } else {
+                               if (yych == '_') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= 'x') {
+                               if (yych == 'r') goto yy1488;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'y') goto yy1489;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1477:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'D') goto yy1467;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'c') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'd') goto yy1482;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1478:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'N') goto yy1464;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'n') goto yy1479;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1479:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy191;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'D') goto yy1465;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy191;
+                       goto yy172;
+               } else {
+                       if (yych <= 'c') {
+                               if (yych <= '`') goto yy191;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'd') goto yy1480;
+                               if (yych <= 'z') goto yy175;
+                               goto yy191;
+                       }
+               }
+       }
+yy1480:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'A') goto yy1466;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'a') goto yy1481;
+                       if (yych <= 'z') goto yy176;
+                       goto yy3;
+               }
+       }
+yy1481:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'Y') goto yy1225;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'x') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'y') goto yy1254;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1482:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'N') goto yy1468;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'n') goto yy1483;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1483:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'H') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'I') goto yy1469;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'h') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'i') goto yy1484;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1484:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'F') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'G') goto yy1470;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'f') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'g') goto yy1485;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1485:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'H') goto yy1471;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'h') goto yy1486;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1486:
+       yych = *++YYCURSOR;
+       if (yych == 'T') goto yy1472;
+       if (yych != 't') goto yy179;
+       yyaccept = 30;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 16) {
+               goto yy178;
+       }
+       if (yych <= '.') {
+               if (yych == '-') goto yy172;
+               goto yy1418;
+       } else {
+               if (yych <= '/') goto yy172;
+               if (yych == '_') goto yy172;
+               goto yy1418;
+       }
+yy1488:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ')') goto yy164;
+                               if (yych <= ',') goto yy218;
+                               goto yy336;
+                       } else {
+                               if (yych == '/') goto yy172;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'B') {
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'C') goto yy1475;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= 'b') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'c') goto yy1490;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+yy1489:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy220;
+                       if (yych <= 0x1F) goto yy218;
+                       goto yy220;
+               } else {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy218;
+                               goto yy164;
+                       } else {
+                               if (yych <= ',') goto yy218;
+                               if (yych <= '-') goto yy336;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '/') goto yy172;
+                       if (yych <= '9') goto yy220;
+                       if (yych <= '@') goto yy218;
+                       goto yy167;
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= '^') goto yy218;
+                               goto yy172;
+                       } else {
+                               if (yych <= '`') goto yy218;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+yy1490:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'H') goto yy360;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'g') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'h') goto yy371;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1491:
+       yych = *++YYCURSOR;
+       if (yych <= 'W') {
+               if (yych <= 'N') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'O') goto yy1499;
+                       if (yych <= 'U') goto yy166;
+                       if (yych <= 'V') goto yy1500;
+                       goto yy1497;
+               }
+       } else {
+               if (yych <= 'o') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'n') goto yy166;
+                       goto yy1499;
+               } else {
+                       if (yych <= 'v') {
+                               if (yych <= 'u') goto yy166;
+                               goto yy1500;
+                       } else {
+                               if (yych <= 'w') goto yy1497;
+                               if (yych <= 'z') goto yy166;
+                               goto yy3;
+                       }
+               }
+       }
+yy1492:
+       yych = *++YYCURSOR;
+       if (yych <= 'X') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'W') goto yy166;
+                       goto yy1496;
+               }
+       } else {
+               if (yych <= 'w') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'x') goto yy1496;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1493:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy166;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 'n') goto yy1494;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1494:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy167;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 't') goto yy1495;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1495:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'G') goto yy168;
+                       goto yy1228;
+               }
+       } else {
+               if (yych <= 'g') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'h') goto yy1228;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1496:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy167;
+                       goto yy1426;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 't') goto yy1426;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1497:
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= '@') {
+               if (yych == ')') goto yy164;
+       } else {
+               if (yych <= 'Z') goto yy167;
+               if (yych <= '`') goto yy1498;
+               if (yych <= 'z') goto yy167;
+       }
+yy1498:
+       {
+               DEBUG_OUTPUT("now");
+               TIMELIB_INIT;
+
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+yy1499:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy167;
+                       goto yy1505;
+               }
+       } else {
+               if (yych <= 'm') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 'n') goto yy1505;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1500:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= ',') {
+                               if (yych <= ')') goto yy164;
+                               goto yy218;
+                       } else {
+                               if (yych <= '-') goto yy221;
+                               if (yych <= '.') goto yy220;
+                               goto yy218;
+                       }
+               }
+       } else {
+               if (yych <= 'Z') {
+                       if (yych <= '@') {
+                               if (yych <= '9') goto yy220;
+                               goto yy218;
+                       } else {
+                               if (yych != 'E') goto yy167;
+                       }
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'e') goto yy1501;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+yy1501:
+       yych = *++YYCURSOR;
+       if (yych <= 'M') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'L') goto yy168;
+               }
+       } else {
+               if (yych <= 'l') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'm') goto yy1502;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1502:
+       yych = *++YYCURSOR;
+       if (yych <= 'B') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'A') goto yy169;
+               }
+       } else {
+               if (yych <= 'a') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'b') goto yy1503;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1503:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'E') goto yy1504;
+               if (yych != 'e') goto yy3;
+       }
+yy1504:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy229;
+       if (yych == 'r') goto yy229;
+       goto yy56;
+yy1505:
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= '@') {
+               if (yych == ')') goto yy164;
+       } else {
+               if (yych <= 'Z') goto yy168;
+               if (yych <= '`') goto yy1506;
+               if (yych <= 'z') goto yy168;
+       }
+yy1506:
+       {
+               DEBUG_OUTPUT("noon");
+               TIMELIB_INIT;
+               TIMELIB_UNHAVE_TIME();
+               TIMELIB_HAVE_TIME();
+               s->time->h = 12;
+
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+yy1507:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'V') {
+               if (yych <= '.') {
+                       if (yych <= ')') {
+                               if (yych <= '(') goto yy3;
+                               goto yy164;
+                       } else {
+                               if (yych == '-') goto yy172;
+                               goto yy3;
+                       }
+               } else {
+                       if (yych <= 'N') {
+                               if (yych <= '/') goto yy172;
+                               if (yych <= '@') goto yy3;
+                               goto yy166;
+                       } else {
+                               if (yych <= 'O') goto yy1499;
+                               if (yych <= 'U') goto yy166;
+                               goto yy1500;
+                       }
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= '^') {
+                               if (yych <= 'W') goto yy1497;
+                               if (yych <= 'Z') goto yy166;
+                               goto yy3;
+                       } else {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       }
+               } else {
+                       if (yych <= 'v') {
+                               if (yych <= 'o') goto yy1514;
+                               if (yych <= 'u') goto yy171;
+                               goto yy1515;
+                       } else {
+                               if (yych <= 'w') goto yy1513;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1508:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'X') goto yy1496;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'w') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'x') goto yy1512;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1509:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'N') goto yy1494;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 'n') goto yy1510;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1510:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1495;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 't') goto yy1511;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1511:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'H') goto yy1228;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'g') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'h') goto yy1257;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1512:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1426;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 't') goto yy1458;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1513:
+       yyaccept = 31;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy1498;
+               } else {
+                       if (yych == '.') goto yy1498;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '@') goto yy1498;
+                       if (yych <= 'Z') goto yy167;
+                       goto yy1498;
+               } else {
+                       if (yych <= '_') goto yy172;
+                       if (yych <= '`') goto yy1498;
+                       if (yych <= 'z') goto yy175;
+                       goto yy1498;
+               }
+       }
+yy1514:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'N') goto yy1505;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'm') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'n') goto yy1520;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1515:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+               if (yych <= '(') {
+                       if (yych <= '\t') {
+                               if (yych <= 0x08) goto yy218;
+                               goto yy220;
+                       } else {
+                               if (yych == ' ') goto yy220;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= '-') {
+                               if (yych <= ')') goto yy164;
+                               if (yych <= ',') goto yy218;
+                               goto yy336;
+                       } else {
+                               if (yych == '/') goto yy172;
+                               goto yy220;
+                       }
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= 'D') {
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+                               if (yych <= 'E') goto yy1501;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '_') goto yy172;
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+                               if (yych <= 'e') goto yy1516;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+yy1516:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'L') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'M') goto yy1502;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'l') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'm') goto yy1517;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1517:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'A') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'B') goto yy1503;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'a') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'b') goto yy1518;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1518:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'E') goto yy1504;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'e') goto yy1519;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1519:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy229;
+       if (yych == 'r') goto yy341;
+       goto yy179;
+yy1520:
+       yyaccept = 32;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy1506;
+               } else {
+                       if (yych == '.') goto yy1506;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= '^') {
+                       if (yych <= '@') goto yy1506;
+                       if (yych <= 'Z') goto yy168;
+                       goto yy1506;
+               } else {
+                       if (yych <= '_') goto yy172;
+                       if (yych <= '`') goto yy1506;
+                       if (yych <= 'z') goto yy176;
+                       goto yy1506;
+               }
+       }
+yy1521:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'R') goto yy166;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+                       if (yych <= 's') goto yy1522;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+yy1522:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy167;
+               }
+       } else {
+               if (yych <= 's') {
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+                       if (yych <= 't') goto yy1523;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+yy1523:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy168;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+                       if (yych <= 'e') goto yy1524;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+yy1524:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+                       if (yych <= '(') goto yy3;
+                       goto yy164;
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'Q') goto yy169;
+               }
+       } else {
+               if (yych <= 'q') {
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+                       if (yych <= 'r') goto yy1525;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+yy1525:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+               if (yych <= 'D') goto yy1526;
+               if (yych != 'd') goto yy3;
+       }
+yy1526:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1527;
+       if (yych != 'a') goto yy56;
+yy1527:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1528;
+       if (yych != 'y') goto yy56;
+yy1528:
+       ++YYCURSOR;
+yy1529:
+       {
+               DEBUG_OUTPUT("yesterday");
+               TIMELIB_INIT;
+               TIMELIB_HAVE_RELATIVE();
+               TIMELIB_UNHAVE_TIME();
+
+               s->time->relative.d = -1;
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+yy1530:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'S') goto yy1522;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+                               if (yych <= 's') goto yy1531;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+yy1531:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy167;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'T') goto yy1523;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 's') {
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+                               if (yych <= 't') goto yy1532;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+yy1532:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy168;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'E') goto yy1524;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'd') {
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+                               if (yych <= 'e') goto yy1533;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+yy1533:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych <= '-') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych == '/') goto yy172;
+                       if (yych <= '@') goto yy3;
+                       goto yy169;
+               }
+       } else {
+               if (yych <= '_') {
+                       if (yych <= 'R') goto yy1525;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= 'q') {
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+                               if (yych <= 'r') goto yy1534;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+yy1534:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+                       if (yych == '.') goto yy3;
+                       if (yych <= '/') goto yy172;
+                       goto yy3;
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'D') goto yy1526;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+                       if (yych == 'd') goto yy1535;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+yy1535:
+       yych = *++YYCURSOR;
+       if (yych == 'A') goto yy1527;
+       if (yych != 'a') goto yy179;
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy1528;
+       if (yych != 'y') goto yy179;
+       yyaccept = 33;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yybm[0+yych] & 16) {
+               goto yy178;
+       }
+       if (yych <= '.') {
+               if (yych == '-') goto yy172;
+               goto yy1529;
+       } else {
+               if (yych <= '/') goto yy172;
+               if (yych == '_') goto yy172;
+               goto yy1529;
+       }
+}
+
+}
+
+#define YYMAXFILL 33
+
+timelib_time* timelib_strtotime(char *s, size_t len, struct timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper)
+{
+       Scanner in;
+       int t;
+       char *e = s + len - 1;
+
+       memset(&in, 0, sizeof(in));
+       in.errors = timelib_malloc(sizeof(struct timelib_error_container));
+       in.errors->warning_count = 0;
+       in.errors->warning_messages = NULL;
+       in.errors->error_count = 0;
+       in.errors->error_messages = NULL;
+
+       if (len > 0) {
+               while (isspace(*s) && s < e) {
+                       s++;
+               }
+               while (isspace(*e) && e > s) {
+                       e--;
+               }
+       }
+       if (e - s < 0) {
+               in.time = timelib_time_ctor();
+               add_error(&in, "Empty string");
+               if (errors) {
+                       *errors = in.errors;
+               } else {
+                       timelib_error_container_dtor(in.errors);
+               }
+               in.time->y = in.time->d = in.time->m = in.time->h = in.time->i = in.time->s = in.time->f = in.time->dst = in.time->z = TIMELIB_UNSET;
+               in.time->is_localtime = in.time->zone_type = 0;
+               return in.time;
+       }
+       e++;
+
+       in.str = timelib_malloc((e - s) + YYMAXFILL);
+       memset(in.str, 0, (e - s) + YYMAXFILL);
+       memcpy(in.str, s, (e - s));
+       in.lim = in.str + (e - s) + YYMAXFILL;
+       in.cur = in.str;
+       in.time = timelib_time_ctor();
+       in.time->y = TIMELIB_UNSET;
+       in.time->d = TIMELIB_UNSET;
+       in.time->m = TIMELIB_UNSET;
+       in.time->h = TIMELIB_UNSET;
+       in.time->i = TIMELIB_UNSET;
+       in.time->s = TIMELIB_UNSET;
+       in.time->f = TIMELIB_UNSET;
+       in.time->z = TIMELIB_UNSET;
+       in.time->dst = TIMELIB_UNSET;
+       in.tzdb = tzdb;
+       in.time->is_localtime = 0;
+       in.time->zone_type = 0;
+       in.time->relative.days = TIMELIB_UNSET;
+
+       do {
+               t = scan(&in, tz_get_wrapper);
+#ifdef DEBUG_PARSER
+               printf("%d\n", t);
+#endif
+       } while(t != EOI);
+
+       /* do funky checking whether the parsed time was valid time */
+       if (in.time->have_time && !timelib_valid_time( in.time->h, in.time->i, in.time->s)) {
+               add_warning(&in, "The parsed time was invalid");
+       }
+       /* do funky checking whether the parsed date was valid date */
+       if (in.time->have_date && !timelib_valid_date( in.time->y, in.time->m, in.time->d)) {
+               add_warning(&in, "The parsed date was invalid");
+       }
+
+       timelib_free(in.str);
+       if (errors) {
+               *errors = in.errors;
+       } else {
+               timelib_error_container_dtor(in.errors);
+       }
+       return in.time;
+}
+
+#define TIMELIB_CHECK_NUMBER                                           \
+               if (strchr("0123456789", *ptr) == NULL)                        \
+               {                                                              \
+                       add_pbf_error(s, "Unexpected data found.", string, begin); \
+               }
+#define TIMELIB_CHECK_SIGNED_NUMBER                                    \
+               if (strchr("-0123456789", *ptr) == NULL)                       \
+               {                                                              \
+                       add_pbf_error(s, "Unexpected data found.", string, begin); \
+               }
+
+static void timelib_time_reset_fields(timelib_time *time)
+{
+       assert(time != NULL);
+
+       time->y = 1970;
+       time->m = 1;
+       time->d = 1;
+       time->h = time->i = time->s = 0;
+       time->f = 0.0;
+       time->tz_info = NULL;
+}
+
+static void timelib_time_reset_unset_fields(timelib_time *time)
+{
+       assert(time != NULL);
+
+       if (time->y == TIMELIB_UNSET ) time->y = 1970;
+       if (time->m == TIMELIB_UNSET ) time->m = 1;
+       if (time->d == TIMELIB_UNSET ) time->d = 1;
+       if (time->h == TIMELIB_UNSET ) time->h = 0;
+       if (time->i == TIMELIB_UNSET ) time->i = 0;
+       if (time->s == TIMELIB_UNSET ) time->s = 0;
+       if (time->f == TIMELIB_UNSET ) time->f = 0.0;
+}
+
+timelib_time *timelib_parse_from_format(char *format, char *string, size_t len, timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper)
+{
+       char       *fptr = format;
+       char       *ptr = string;
+       char       *begin;
+       timelib_sll tmp;
+       Scanner in;
+       Scanner *s = &in;
+       int allow_extra = 0;
+
+       memset(&in, 0, sizeof(in));
+       in.errors = timelib_malloc(sizeof(struct timelib_error_container));
+       in.errors->warning_count = 0;
+       in.errors->warning_messages = NULL;
+       in.errors->error_count = 0;
+       in.errors->error_messages = NULL;
+
+       in.time = timelib_time_ctor();
+       in.time->y = TIMELIB_UNSET;
+       in.time->d = TIMELIB_UNSET;
+       in.time->m = TIMELIB_UNSET;
+       in.time->h = TIMELIB_UNSET;
+       in.time->i = TIMELIB_UNSET;
+       in.time->s = TIMELIB_UNSET;
+       in.time->f = TIMELIB_UNSET;
+       in.time->z = TIMELIB_UNSET;
+       in.time->dst = TIMELIB_UNSET;
+       in.tzdb = tzdb;
+       in.time->is_localtime = 0;
+       in.time->zone_type = 0;
+
+       /* Loop over the format string */
+       while (*fptr && *ptr) {
+               begin = ptr;
+               switch (*fptr) {
+                       case 'D': /* three letter day */
+                       case 'l': /* full day */
+                               {
+                                       const timelib_relunit* tmprel = 0;
+
+                                       tmprel = timelib_lookup_relunit((char **) &ptr);
+                                       if (!tmprel) {
+                                               add_pbf_error(s, "A textual day could not be found", string, begin);
+                                               break;
+                                       } else {
+                                               in.time->have_relative = 1;
+                                               in.time->relative.have_weekday_relative = 1;
+                                               in.time->relative.weekday = tmprel->multiplier;
+                                               in.time->relative.weekday_behavior = 1;
+                                       }
+                               }
+                               break;
+                       case 'd': /* two digit day, with leading zero */
+                       case 'j': /* two digit day, without leading zero */
+                               TIMELIB_CHECK_NUMBER;
+                               if ((s->time->d = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
+                                       add_pbf_error(s, "A two digit day could not be found", string, begin);
+                               }
+                               break;
+                       case 'S': /* day suffix, ignored, nor checked */
+                               timelib_skip_day_suffix((char **) &ptr);
+                               break;
+                       case 'z': /* day of year - resets month (0 based) - also initializes everything else to !TIMELIB_UNSET */
+                               TIMELIB_CHECK_NUMBER;
+                               if ((tmp = timelib_get_nr((char **) &ptr, 3)) == TIMELIB_UNSET) {
+                                       add_pbf_error(s, "A three digit day-of-year could not be found", string, begin);
+                               } else {
+                                       s->time->m = 1;
+                                       s->time->d = tmp + 1;
+                                       timelib_do_normalize(s->time);
+                               }
+                               break;
+
+                       case 'm': /* two digit month, with leading zero */
+                       case 'n': /* two digit month, without leading zero */
+                               TIMELIB_CHECK_NUMBER;
+                               if ((s->time->m = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
+                                       add_pbf_error(s, "A two digit month could not be found", string, begin);
+                               }
+                               break;
+                       case 'M': /* three letter month */
+                       case 'F': /* full month */
+                               tmp = timelib_lookup_month((char **) &ptr);
+                               if (!tmp) {
+                                       add_pbf_error(s, "A textual month could not be found", string, begin);
+                               } else {
+                                       s->time->m = tmp;
+                               }
+                               break;
+                       case 'y': /* two digit year */
+                               {
+                                       int length = 0;
+                                       TIMELIB_CHECK_NUMBER;
+                                       if ((s->time->y = timelib_get_nr_ex((char **) &ptr, 2, &length)) == TIMELIB_UNSET) {
+                                               add_pbf_error(s, "A two digit year could not be found", string, begin);
+                                       }
+                                       TIMELIB_PROCESS_YEAR(s->time->y, length);
+                               }
+                               break;
+                       case 'Y': /* four digit year */
+                               TIMELIB_CHECK_NUMBER;
+                               if ((s->time->y = timelib_get_nr((char **) &ptr, 4)) == TIMELIB_UNSET) {
+                                       add_pbf_error(s, "A four digit year could not be found", string, begin);
+                               }
+                               break;
+                       case 'g': /* two digit hour, with leading zero */
+                       case 'h': /* two digit hour, without leading zero */
+                               TIMELIB_CHECK_NUMBER;
+                               if ((s->time->h = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
+                                       add_pbf_error(s, "A two digit hour could not be found", string, begin);
+                               }
+                               if (s->time->h > 12) {
+                                       add_pbf_error(s, "Hour can not be higher than 12", string, begin);
+                               }
+                               break;
+                       case 'G': /* two digit hour, with leading zero */
+                       case 'H': /* two digit hour, without leading zero */
+                               TIMELIB_CHECK_NUMBER;
+                               if ((s->time->h = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
+                                       add_pbf_error(s, "A two digit hour could not be found", string, begin);
+                               }
+                               break;
+                       case 'a': /* am/pm/a.m./p.m. */
+                       case 'A': /* AM/PM/A.M./P.M. */
+                               if (s->time->h == TIMELIB_UNSET) {
+                                       add_pbf_error(s, "Meridian can only come after an hour has been found", string, begin);
+                               } else if ((tmp = timelib_meridian_with_check((char **) &ptr, s->time->h)) == TIMELIB_UNSET) {
+                                       add_pbf_error(s, "A meridian could not be found", string, begin);
+                               } else {
+                                       s->time->h += tmp;
+                               }
+                               break;
+                       case 'i': /* two digit minute, with leading zero */
+                               {
+                                       int length;
+                                       timelib_sll min;
+
+                                       TIMELIB_CHECK_NUMBER;
+                                       min = timelib_get_nr_ex((char **) &ptr, 2, &length);
+                                       if (min == TIMELIB_UNSET || length != 2) {
+                                               add_pbf_error(s, "A two digit minute could not be found", string, begin);
+                                       } else {
+                                               s->time->i = min;
+                                       }
+                               }
+                               break;
+                       case 's': /* two digit second, with leading zero */
+                               {
+                                       int length;
+                                       timelib_sll sec;
+
+                                       TIMELIB_CHECK_NUMBER;
+                                       sec = timelib_get_nr_ex((char **) &ptr, 2, &length);
+                                       if (sec == TIMELIB_UNSET || length != 2) {
+                                               add_pbf_error(s, "A two digit second could not be found", string, begin);
+                                       } else {
+                                               s->time->s = sec;
+                                       }
+                               }
+                               break;
+                       case 'u': /* up to six digit millisecond */
+                               {
+                                       double f;
+                                       char *tptr;
+
+                                       TIMELIB_CHECK_NUMBER;
+                                       tptr = ptr;
+                                       if ((f = timelib_get_nr((char **) &ptr, 6)) == TIMELIB_UNSET || (ptr - tptr < 1)) {
+                                               add_pbf_error(s, "A six digit millisecond could not be found", string, begin);
+                                       } else {
+                                               s->time->f = (f / pow(10, (ptr - tptr)));
+                                       }
+                               }
+                               break;
+                       case ' ': /* any sort of whitespace (' ' and \t) */
+                               timelib_eat_spaces((char **) &ptr);
+                               break;
+                       case 'U': /* epoch seconds */
+                               TIMELIB_CHECK_SIGNED_NUMBER;
+                               TIMELIB_HAVE_RELATIVE();
+                               tmp = timelib_get_unsigned_nr((char **) &ptr, 24);
+                               s->time->y = 1970;
+                               s->time->m = 1;
+                               s->time->d = 1;
+                               s->time->h = s->time->i = s->time->s = 0;
+                               s->time->relative.s += tmp;
+                               s->time->is_localtime = 1;
+                               s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
+                               s->time->z = 0;
+                               s->time->dst = 0;
+                               break;
+
+                       case 'e': /* timezone */
+                       case 'P': /* timezone */
+                       case 'T': /* timezone */
+                       case 'O': /* timezone */
+                               {
+                                       int tz_not_found;
+                                       s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
+                                       if (tz_not_found) {
+                                               add_pbf_error(s, "The timezone could not be found in the database", string, begin);
+                                       }
+                               }
+                               break;
+
+                       case '#': /* separation symbol */
+                               if (*ptr == ';' || *ptr == ':' || *ptr == '/' || *ptr == '.' || *ptr == ',' || *ptr == '-' || *ptr == '(' || *ptr == ')') {
+                                       ++ptr;
+                               } else {
+                                       add_pbf_error(s, "The separation symbol ([;:/.,-]) could not be found", string, begin);
+                               }
+                               break;
+
+                       case ';':
+                       case ':':
+                       case '/':
+                       case '.':
+                       case ',':
+                       case '-':
+                       case '(':
+                       case ')':
+                               if (*ptr == *fptr) {
+                                       ++ptr;
+                               } else {
+                                       add_pbf_error(s, "The separation symbol could not be found", string, begin);
+                               }
+                               break;
+
+                       case '!': /* reset all fields to default */
+                               timelib_time_reset_fields(s->time);
+                               break; /* break intentionally not missing */
+
+                       case '|': /* reset all fields to default when not set */
+                               timelib_time_reset_unset_fields(s->time);
+                               break; /* break intentionally not missing */
+
+                       case '?': /* random char */
+                               ++ptr;
+                               break;
+
+                       case '\\': /* escaped char */
+                               if(!fptr[1]) {
+                                       add_pbf_error(s, "Escaped character expected", string, begin);
+                                       break;
+                               }
+                               fptr++;
+                               if (*ptr == *fptr) {
+                                       ++ptr;
+                               } else {
+                                       add_pbf_error(s, "The escaped character could not be found", string, begin);
+                               }
+                               break;
+
+                       case '*': /* random chars until a separator or number ([ \t.,:;/-0123456789]) */
+                               timelib_eat_until_separator((char **) &ptr);
+                               break;
+
+                       case '+': /* allow extra chars in the format */
+                               allow_extra = 1;
+                               break;
+
+                       default:
+                               if (*fptr != *ptr) {
+                                       add_pbf_error(s, "The format separator does not match", string, begin);
+                               }
+                               ptr++;
+               }
+               fptr++;
+       }
+       if (*ptr) {
+               if (allow_extra) {
+                       add_pbf_warning(s, "Trailing data", string, ptr);
+               } else {
+                       add_pbf_error(s, "Trailing data", string, ptr);
+               }
+       }
+       /* ignore trailing +'s */
+       while (*fptr == '+') {
+               fptr++;
+       }
+       if (*fptr) {
+               /* Trailing | and ! specifiers are valid. */
+               int done = 0;
+               while (*fptr && !done) {
+                       switch (*fptr++) {
+                               case '!': /* reset all fields to default */
+                                       timelib_time_reset_fields(s->time);
+                                       break;
+
+                               case '|': /* reset all fields to default when not set */
+                                       timelib_time_reset_unset_fields(s->time);
+                                       break;
+
+                               default:
+                                       add_pbf_error(s, "Data missing", string, ptr);
+                                       done = 1;
+                       }
+               }
+       }
+
+       /* clean up a bit */
+       if (s->time->h != TIMELIB_UNSET || s->time->i != TIMELIB_UNSET || s->time->s != TIMELIB_UNSET) {
+               if (s->time->h == TIMELIB_UNSET ) {
+                       s->time->h = 0;
+               }
+               if (s->time->i == TIMELIB_UNSET ) {
+                       s->time->i = 0;
+               }
+               if (s->time->s == TIMELIB_UNSET ) {
+                       s->time->s = 0;
+               }
+       }
+
+       /* do funky checking whether the parsed time was valid time */
+       if (s->time->h != TIMELIB_UNSET && s->time->i != TIMELIB_UNSET &&
+               s->time->s != TIMELIB_UNSET &&
+               !timelib_valid_time( s->time->h, s->time->i, s->time->s)) {
+               add_pbf_warning(s, "The parsed time was invalid", string, ptr);
+       }
+       /* do funky checking whether the parsed date was valid date */
+       if (s->time->y != TIMELIB_UNSET && s->time->m != TIMELIB_UNSET &&
+               s->time->d != TIMELIB_UNSET &&
+               !timelib_valid_date( s->time->y, s->time->m, s->time->d)) {
+               add_pbf_warning(s, "The parsed date was invalid", string, ptr);
+       }
+
+       if (errors) {
+               *errors = in.errors;
+       } else {
+               timelib_error_container_dtor(in.errors);
+       }
+       return in.time;
+}
+
+void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options)
+{
+       if (!(options & TIMELIB_OVERRIDE_TIME) && parsed->have_date && !parsed->have_time) {
+               parsed->h = 0;
+               parsed->i = 0;
+               parsed->s = 0;
+               parsed->f = 0;
+       }
+       if (
+               parsed->y != TIMELIB_UNSET || parsed->m != TIMELIB_UNSET || parsed->d != TIMELIB_UNSET ||
+               parsed->h != TIMELIB_UNSET || parsed->i != TIMELIB_UNSET || parsed->s != TIMELIB_UNSET
+       ) {
+               if (parsed->f == TIMELIB_UNSET) parsed->f = 0;
+       } else {
+               if (parsed->f == TIMELIB_UNSET) parsed->f = now->f != TIMELIB_UNSET ? now->f : 0;
+       }
+       if (parsed->y == TIMELIB_UNSET) parsed->y = now->y != TIMELIB_UNSET ? now->y : 0;
+       if (parsed->m == TIMELIB_UNSET) parsed->m = now->m != TIMELIB_UNSET ? now->m : 0;
+       if (parsed->d == TIMELIB_UNSET) parsed->d = now->d != TIMELIB_UNSET ? now->d : 0;
+       if (parsed->h == TIMELIB_UNSET) parsed->h = now->h != TIMELIB_UNSET ? now->h : 0;
+       if (parsed->i == TIMELIB_UNSET) parsed->i = now->i != TIMELIB_UNSET ? now->i : 0;
+       if (parsed->s == TIMELIB_UNSET) parsed->s = now->s != TIMELIB_UNSET ? now->s : 0;
+       if (parsed->z == TIMELIB_UNSET) parsed->z = now->z != TIMELIB_UNSET ? now->z : 0;
+       if (parsed->dst == TIMELIB_UNSET) parsed->dst = now->dst != TIMELIB_UNSET ? now->dst : 0;
+
+       if (!parsed->tz_abbr) {
+               parsed->tz_abbr = now->tz_abbr ? timelib_strdup(now->tz_abbr) : NULL;
+       }
+       if (!parsed->tz_info) {
+               parsed->tz_info = now->tz_info ? (!(options & TIMELIB_NO_CLONE) ? timelib_tzinfo_clone(now->tz_info) : now->tz_info) : NULL;
+       }
+       if (parsed->zone_type == 0 && now->zone_type != 0) {
+               parsed->zone_type = now->zone_type;
+/*             parsed->tz_abbr = now->tz_abbr ? timelib_strdup(now->tz_abbr) : NULL;
+               parsed->tz_info = now->tz_info ? timelib_tzinfo_clone(now->tz_info) : NULL;
+*/             parsed->is_localtime = 1;
+       }
+/*     timelib_dump_date(parsed, 2);
+       timelib_dump_date(now, 2);
+*/
+}
+
+char *timelib_timezone_id_from_abbr(const char *abbr, timelib_long gmtoffset, int isdst)
+{
+       const timelib_tz_lookup_table *tp;
+
+       tp = abbr_search(abbr, gmtoffset, isdst);
+       if (tp) {
+               return (tp->full_tz_name);
+       } else {
+               return NULL;
+       }
+}
+
+const timelib_tz_lookup_table *timelib_timezone_abbreviations_list(void)
+{
+       return timelib_timezone_lookup;
+}
+
+#ifdef DEBUG_PARSER_STUB
+int main(void)
+{
+       timelib_time time = timelib_strtotime("May 12");
+
+       printf ("%04d-%02d-%02d %02d:%02d:%02d.%-5d %+04d %1d",
+               time.y, time.m, time.d, time.h, time.i, time.s, time.f, time.z, time.dst);
+       if (time.have_relative) {
+               printf ("%3dY %3dM %3dD / %3dH %3dM %3dS",
+                       time.relative.y, time.relative.m, time.relative.d, time.relative.h, time.relative.i, time.relative.s);
+       }
+       if (time.have_weekday_relative) {
+               printf (" / %d", time.relative.weekday);
+       }
+       if (time.have_weeknr_day) {
+               printf(" / %dW%d", time.relative.weeknr_day.weeknr, time.relative.weeknr_day.dayofweek);
+       }
+       return 0;
+}
+#endif
+
+/*
+ * vim: syntax=c
+ */
index 74d9ea3a0fb2c832c79c9f7701841018c3f42dc3..033977252b1473219b785543db99ce840cc7000c 100644 (file)
 /* $Id$ */
 
 #include "timelib.h"
+#include "timelib_private.h"
 
-#include <stdio.h>
 #include <ctype.h>
 #include <math.h>
 #include <assert.h>
 
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
 #if defined(_MSC_VER)
 # define strtoll(s, f, b) _atoi64(s)
 #elif !defined(HAVE_STRTOLL)
 # endif
 #endif
 
-#define TIMELIB_UNSET   -99999
-
-#define TIMELIB_SECOND   1
-#define TIMELIB_MINUTE   2
-#define TIMELIB_HOUR     3
-#define TIMELIB_DAY      4
-#define TIMELIB_MONTH    5
-#define TIMELIB_YEAR     6
-#define TIMELIB_WEEKDAY  7
-#define TIMELIB_SPECIAL  8
-#define TIMELIB_MICROSEC 9
-
 #define EOI      257
 #define TIME     258
 #define DATE     259
@@ -113,14 +92,14 @@ typedef unsigned char uchar;
 
 #define timelib_string_free timelib_free
 
-#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; } }
-#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; }
-#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
+#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; } }
+#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->us = 0; }
+#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, TIMELIB_ERR_DOUBLE_DATE, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
 #define TIMELIB_UNHAVE_DATE() { s->time->have_date = 0; s->time->d = 0; s->time->m = 0; s->time->y = 0; }
 #define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
 #define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_weekday_relative = 1; }
 #define TIMELIB_HAVE_SPECIAL_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_special_relative = 1; }
-#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, "Double timezone specification") : add_warning(s, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
+#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, TIMELIB_ERR_DOUBLE_TZ, "Double timezone specification") : add_warning(s, TIMELIB_WARN_DOUBLE_TZ, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
 
 #define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
 #define TIMELIB_DEINIT timelib_string_free(str)
@@ -146,8 +125,6 @@ typedef unsigned char uchar;
 #define YYDEBUG(s,c)
 #endif
 
-#include "timelib_structs.h"
-
 typedef struct timelib_elems {
        unsigned int   c; /* Number of elements */
        char         **v; /* Values */
@@ -176,17 +153,17 @@ typedef struct _timelib_relunit {
 } timelib_relunit;
 
 /* The timezone table. */
-const static timelib_tz_lookup_table timelib_timezone_lookup[] = {
+static const timelib_tz_lookup_table timelib_timezone_lookup[] = {
 #include "timezonemap.h"
        { NULL, 0, 0, NULL },
 };
 
-const static timelib_tz_lookup_table timelib_timezone_fallbackmap[] = {
+static const timelib_tz_lookup_table timelib_timezone_fallbackmap[] = {
 #include "fallbackmap.h"
        { NULL, 0, 0, NULL },
 };
 
-const static timelib_tz_lookup_table timelib_timezone_utc[] = {
+static const timelib_tz_lookup_table timelib_timezone_utc[] = {
        { "utc", 0, 0, "UTC" },
 };
 
@@ -355,37 +332,41 @@ uchar *fill(Scanner *s, uchar *cursor){
 }
 #endif
 
-static void add_warning(Scanner *s, char *error)
+static void add_warning(Scanner *s, int error_code, char *error)
 {
        s->errors->warning_count++;
        s->errors->warning_messages = timelib_realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
+       s->errors->warning_messages[s->errors->warning_count - 1].error_code = error_code;
        s->errors->warning_messages[s->errors->warning_count - 1].position = s->tok ? s->tok - s->str : 0;
        s->errors->warning_messages[s->errors->warning_count - 1].character = s->tok ? *s->tok : 0;
        s->errors->warning_messages[s->errors->warning_count - 1].message = timelib_strdup(error);
 }
 
-static void add_error(Scanner *s, char *error)
+static void add_error(Scanner *s, int error_code, char *error)
 {
        s->errors->error_count++;
        s->errors->error_messages = timelib_realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
+       s->errors->error_messages[s->errors->error_count - 1].error_code = error_code;
        s->errors->error_messages[s->errors->error_count - 1].position = s->tok ? s->tok - s->str : 0;
        s->errors->error_messages[s->errors->error_count - 1].character = s->tok ? *s->tok : 0;
        s->errors->error_messages[s->errors->error_count - 1].message = timelib_strdup(error);
 }
 
-static void add_pbf_warning(Scanner *s, char *error, char *sptr, char *cptr)
+static void add_pbf_warning(Scanner *s, int error_code, char *error, char *sptr, char *cptr)
 {
        s->errors->warning_count++;
        s->errors->warning_messages = timelib_realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
+       s->errors->warning_messages[s->errors->warning_count - 1].error_code = error_code;
        s->errors->warning_messages[s->errors->warning_count - 1].position = cptr - sptr;
        s->errors->warning_messages[s->errors->warning_count - 1].character = *cptr;
        s->errors->warning_messages[s->errors->warning_count - 1].message = timelib_strdup(error);
 }
 
-static void add_pbf_error(Scanner *s, char *error, char *sptr, char *cptr)
+static void add_pbf_error(Scanner *s, int error_code, char *error, char *sptr, char *cptr)
 {
        s->errors->error_count++;
        s->errors->error_messages = timelib_realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
+       s->errors->error_messages[s->errors->error_count - 1].error_code = error_code;
        s->errors->error_messages[s->errors->error_count - 1].position = cptr - sptr;
        s->errors->error_messages[s->errors->error_count - 1].character = *cptr;
        s->errors->error_messages[s->errors->error_count - 1].message = timelib_strdup(error);
@@ -505,7 +486,7 @@ static void timelib_skip_day_suffix(char **ptr)
        }
 }
 
-static double timelib_get_frac_nr(char **ptr, int max_length)
+static timelib_sll timelib_get_frac_nr(char **ptr, int max_length)
 {
        char *begin, *end, *str;
        double tmp_nr = TIMELIB_UNSET;
@@ -523,12 +504,9 @@ static double timelib_get_frac_nr(char **ptr, int max_length)
                ++len;
        }
        end = *ptr;
-       str = timelib_calloc(1, end - begin + 1);
-       memcpy(str, begin, end - begin);
-       if (str[0] == ':') {
-               str[0] = '.';
-       }
-       tmp_nr = strtod(str, NULL);
+       str = timelib_calloc(1, end - begin);
+       memcpy(str, begin + 1, end - begin - 1);
+       tmp_nr = strtod(str, NULL) * pow(10, 7 - (end - begin));
        timelib_free(str);
        return tmp_nr;
 }
@@ -668,7 +646,7 @@ static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, S
        }
 
        switch (relunit->unit) {
-               case TIMELIB_MICROSEC: s->time->relative.f += (((double) amount * (double) relunit->multiplier) / 1000000); break;
+               case TIMELIB_MICROSEC: s->time->relative.us += amount * relunit->multiplier; break;
                case TIMELIB_SECOND:   s->time->relative.s += amount * relunit->multiplier; break;
                case TIMELIB_MINUTE:   s->time->relative.i += amount * relunit->multiplier; break;
                case TIMELIB_HOUR:     s->time->relative.h += amount * relunit->multiplier; break;
@@ -692,7 +670,7 @@ static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, S
        }
 }
 
-const static timelib_tz_lookup_table* abbr_search(const char *word, timelib_long gmtoffset, int isdst)
+static const timelib_tz_lookup_table* abbr_search(const char *word, timelib_long gmtoffset, int isdst)
 {
        int first_found = 0;
        const timelib_tz_lookup_table  *tp, *first_found_elem = NULL;
@@ -723,7 +701,7 @@ const static timelib_tz_lookup_table* abbr_search(const char *word, timelib_long
        /* Still didn't find anything, let's find the zone solely based on
         * offset/isdst then */
        for (fmp = timelib_timezone_fallbackmap; fmp->name; fmp++) {
-               if ((fmp->gmtoffset * 60) == gmtoffset && fmp->type == isdst) {
+               if (fmp->gmtoffset == gmtoffset && fmp->type == isdst) {
                        return fmp;
                }
        }
@@ -745,9 +723,9 @@ static timelib_long timelib_lookup_abbr(char **ptr, int *dst, char **tz_abbr, in
        memcpy(word, begin, end - begin);
 
        if ((tp = abbr_search(word, -1, 0))) {
-               value = -tp->gmtoffset / 60;
+               value = tp->gmtoffset;
                *dst = tp->type;
-               value += tp->type * 60;
+               value -= tp->type * 3600;
                *found = 1;
        } else {
                *found = 0;
@@ -757,6 +735,42 @@ static timelib_long timelib_lookup_abbr(char **ptr, int *dst, char **tz_abbr, in
        return value;
 }
 
+#define sHOUR(a) (int)(a * 3600)
+#define sMIN(a) (int)(a * 60)
+
+static timelib_long timelib_parse_tz_cor(char **ptr)
+{
+       char *begin = *ptr, *end;
+       timelib_long  tmp;
+
+       while (isdigit(**ptr) || **ptr == ':') {
+               ++*ptr;
+       }
+       end = *ptr;
+       switch (end - begin) {
+               case 1: /* H */
+               case 2: /* HH */
+                       return sHOUR(strtol(begin, NULL, 10));
+                       break;
+               case 3: /* H:M */
+               case 4: /* H:MM, HH:M, HHMM */
+                       if (begin[1] == ':') {
+                               tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 2, NULL, 10));
+                               return tmp;
+                       } else if (begin[2] == ':') {
+                               tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 3, NULL, 10));
+                               return tmp;
+                       } else {
+                               tmp = strtol(begin, NULL, 10);
+                               return sHOUR(tmp / 100) + sMIN(tmp % 100);
+                       }
+               case 5: /* HH:MM */
+                       tmp = sHOUR(strtol(begin, NULL, 10)) + sMIN(strtol(begin + 3, NULL, 10));
+                       return tmp;
+       }
+       return 0;
+}
+
 timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_wrapper)
 {
        timelib_tzinfo *res;
@@ -777,7 +791,7 @@ timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_n
                *tz_not_found = 0;
                t->dst = 0;
 
-               retval = -1 * timelib_parse_tz_cor(ptr);
+               retval = timelib_parse_tz_cor(ptr);
        } else if (**ptr == '-') {
                ++*ptr;
                t->is_localtime = 1;
@@ -785,7 +799,7 @@ timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_n
                *tz_not_found = 0;
                t->dst = 0;
 
-               retval = timelib_parse_tz_cor(ptr);
+               retval = -1 * timelib_parse_tz_cor(ptr);
        } else {
                int found = 0;
                timelib_long offset = 0;
@@ -802,7 +816,9 @@ timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_n
 
                /* Otherwise, we look if we have a TimeZone identifier */
                if (!found || strcmp("UTC", tz_abbr) == 0) {
-                       if ((res = tz_wrapper(tz_abbr, tzdb)) != NULL) {
+                       int dummy_error_code;
+
+                       if ((res = tz_wrapper(tz_abbr, tzdb, &dummy_error_code)) != NULL) {
                                t->tz_info = res;
                                t->zone_type = TIMELIB_ZONETYPE_ID;
                                found++;
@@ -931,8 +947,8 @@ isoweek          = year4 "-"? "W" weekofyear;
 exif             = year4 ":" monthlz ":" daylz " " hour24lz ":" minutelz ":" secondlz;
 firstdayof       = 'first day of';
 lastdayof        = 'last day of';
-backof           = 'back of ' hour24 space? meridian?;
-frontof          = 'front of ' hour24 space? meridian?;
+backof           = 'back of ' hour24 (space? meridian)?;
+frontof          = 'front of ' hour24 (space? meridian)?;
 
 /* Common Log Format: 10/Oct/2000:13:55:36 -0700 */
 clf              = day "/" monthabbr "/" year4 ":" hour24lz ":" minutelz ":" secondlz space tzcorrection;
@@ -1036,7 +1052,7 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
                s->time->m = 1;
                s->time->d = 1;
                s->time->h = s->time->i = s->time->s = 0;
-               s->time->f = 0.0;
+               s->time->us = 0;
                s->time->relative.s += i;
                s->time->is_localtime = 1;
                s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
@@ -1049,7 +1065,7 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
 
        timestampms
        {
-               timelib_ull i, ms;
+               timelib_ull i, us;
 
                TIMELIB_INIT;
                TIMELIB_HAVE_RELATIVE();
@@ -1058,14 +1074,14 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
                TIMELIB_HAVE_TZ();
 
                i = timelib_get_unsigned_nr((char **) &ptr, 24);
-               ms = timelib_get_unsigned_nr((char **) &ptr, 24);
+               us = timelib_get_unsigned_nr((char **) &ptr, 24);
                s->time->y = 1970;
                s->time->m = 1;
                s->time->d = 1;
                s->time->h = s->time->i = s->time->s = 0;
-               s->time->f = 0.0;
+               s->time->us = 0;
                s->time->relative.s += i;
-               s->time->relative.f = ((double) ms) / 1000000.0;
+               s->time->relative.us = us;
                s->time->is_localtime = 1;
                s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
                s->time->z = 0;
@@ -1165,7 +1181,7 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
                        s->time->s = timelib_get_nr((char **) &ptr, 2);
 
                        if (*ptr == ':' || *ptr == '.') {
-                               s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
+                               s->time->us = timelib_get_frac_nr((char **) &ptr, 8);
                        }
                }
                timelib_eat_spaces((char **) &ptr);
@@ -1186,14 +1202,14 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
                        s->time->s = timelib_get_nr((char **) &ptr, 2);
 
                        if (*ptr == '.') {
-                               s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
+                               s->time->us = timelib_get_frac_nr((char **) &ptr, 8);
                        }
                }
 
                if (*ptr != '\0') {
                        s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                        if (tz_not_found) {
-                               add_error(s, "The timezone could not be found in the database");
+                               add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
                        }
                }
                TIMELIB_DEINIT;
@@ -1215,7 +1231,7 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
                                break;
                        default:
                                TIMELIB_DEINIT;
-                               add_error(s, "Double time specification");
+                               add_error(s, TIMELIB_ERR_DOUBLE_TIME, "Double time specification");
                                return TIMELIB_ERROR;
                }
                s->time->have_time++;
@@ -1259,7 +1275,7 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
                if (*ptr != '\0') {
                        s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                        if (tz_not_found) {
-                               add_error(s, "The timezone could not be found in the database");
+                               add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
                        }
                }
                TIMELIB_DEINIT;
@@ -1457,11 +1473,11 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
                s->time->i = timelib_get_nr((char **) &ptr, 2);
                s->time->s = timelib_get_nr((char **) &ptr, 2);
                if (*ptr == '.') {
-                       s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
+                       s->time->us = timelib_get_frac_nr((char **) &ptr, 9);
                        if (*ptr) { /* timezone is optional */
                                s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                                if (tz_not_found) {
-                                       add_error(s, "The timezone could not be found in the database");
+                                       add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
                                }
                        }
                }
@@ -1564,7 +1580,7 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
                s->time->s = timelib_get_nr((char **) &ptr, 2);
                s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                if (tz_not_found) {
-                       add_error(s, "The timezone could not be found in the database");
+                       add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
                }
                TIMELIB_DEINIT;
                return TIMELIB_CLF;
@@ -1677,7 +1693,7 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
                TIMELIB_HAVE_TZ();
                s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                if (tz_not_found) {
-                       add_error(s, "The timezone could not be found in the database");
+                       add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
                }
                TIMELIB_DEINIT;
                return TIMELIB_TIMEZONE;
@@ -1698,7 +1714,7 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
                        s->time->s = timelib_get_nr((char **) &ptr, 2);
 
                        if (*ptr == '.') {
-                               s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
+                               s->time->us = timelib_get_frac_nr((char **) &ptr, 8);
                        }
                }
 
@@ -1723,14 +1739,14 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
                        s->time->s = timelib_get_nr((char **) &ptr, 2);
 
                        if (*ptr == '.') {
-                               s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
+                               s->time->us = timelib_get_frac_nr((char **) &ptr, 8);
                        }
                }
 
                if (*ptr != '\0') {
                        s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                        if (tz_not_found) {
-                               add_error(s, "The timezone could not be found in the database");
+                               add_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database");
                        }
                }
                TIMELIB_DEINIT;
@@ -1766,7 +1782,7 @@ weekdayof        = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
 
        any
        {
-               add_error(s, "Unexpected character");
+               add_error(s, TIMELIB_ERR_UNEXPECTED_CHARACTER, "Unexpected character");
                goto std;
        }
 */
@@ -1797,13 +1813,13 @@ timelib_time* timelib_strtotime(char *s, size_t len, struct timelib_error_contai
        }
        if (e - s < 0) {
                in.time = timelib_time_ctor();
-               add_error(&in, "Empty string");
+               add_error(&in, TIMELIB_ERR_EMPTY_STRING, "Empty string");
                if (errors) {
                        *errors = in.errors;
                } else {
                        timelib_error_container_dtor(in.errors);
                }
-               in.time->y = in.time->d = in.time->m = in.time->h = in.time->i = in.time->s = in.time->f = in.time->dst = in.time->z = TIMELIB_UNSET;
+               in.time->y = in.time->d = in.time->m = in.time->h = in.time->i = in.time->s = in.time->us = in.time->dst = in.time->z = TIMELIB_UNSET;
                in.time->is_localtime = in.time->zone_type = 0;
                return in.time;
        }
@@ -1821,7 +1837,7 @@ timelib_time* timelib_strtotime(char *s, size_t len, struct timelib_error_contai
        in.time->h = TIMELIB_UNSET;
        in.time->i = TIMELIB_UNSET;
        in.time->s = TIMELIB_UNSET;
-       in.time->f = TIMELIB_UNSET;
+       in.time->us = TIMELIB_UNSET;
        in.time->z = TIMELIB_UNSET;
        in.time->dst = TIMELIB_UNSET;
        in.tzdb = tzdb;
@@ -1838,11 +1854,11 @@ timelib_time* timelib_strtotime(char *s, size_t len, struct timelib_error_contai
 
        /* do funky checking whether the parsed time was valid time */
        if (in.time->have_time && !timelib_valid_time( in.time->h, in.time->i, in.time->s)) {
-               add_warning(&in, "The parsed time was invalid");
+               add_warning(&in, TIMELIB_WARN_INVALID_TIME, "The parsed time was invalid");
        }
        /* do funky checking whether the parsed date was valid date */
        if (in.time->have_date && !timelib_valid_date( in.time->y, in.time->m, in.time->d)) {
-               add_warning(&in, "The parsed date was invalid");
+               add_warning(&in, TIMELIB_WARN_INVALID_DATE, "The parsed date was invalid");
        }
 
        timelib_free(in.str);
@@ -1857,12 +1873,12 @@ timelib_time* timelib_strtotime(char *s, size_t len, struct timelib_error_contai
 #define TIMELIB_CHECK_NUMBER                                           \
                if (strchr("0123456789", *ptr) == NULL)                        \
                {                                                              \
-                       add_pbf_error(s, "Unexpected data found.", string, begin); \
+                       add_pbf_error(s, TIMELIB_ERR_UNEXPECTED_DATA, "Unexpected data found.", string, begin); \
                }
 #define TIMELIB_CHECK_SIGNED_NUMBER                                    \
                if (strchr("-0123456789", *ptr) == NULL)                       \
                {                                                              \
-                       add_pbf_error(s, "Unexpected data found.", string, begin); \
+                       add_pbf_error(s, TIMELIB_ERR_UNEXPECTED_DATA, "Unexpected data found.", string, begin); \
                }
 
 static void timelib_time_reset_fields(timelib_time *time)
@@ -1873,7 +1889,7 @@ static void timelib_time_reset_fields(timelib_time *time)
        time->m = 1;
        time->d = 1;
        time->h = time->i = time->s = 0;
-       time->f = 0.0;
+       time->us = 0;
        time->tz_info = NULL;
 }
 
@@ -1887,7 +1903,7 @@ static void timelib_time_reset_unset_fields(timelib_time *time)
        if (time->h == TIMELIB_UNSET ) time->h = 0;
        if (time->i == TIMELIB_UNSET ) time->i = 0;
        if (time->s == TIMELIB_UNSET ) time->s = 0;
-       if (time->f == TIMELIB_UNSET ) time->f = 0.0;
+       if (time->us == TIMELIB_UNSET ) time->us = 0;
 }
 
 timelib_time *timelib_parse_from_format(char *format, char *string, size_t len, timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper)
@@ -1914,7 +1930,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
        in.time->h = TIMELIB_UNSET;
        in.time->i = TIMELIB_UNSET;
        in.time->s = TIMELIB_UNSET;
-       in.time->f = TIMELIB_UNSET;
+       in.time->us = TIMELIB_UNSET;
        in.time->z = TIMELIB_UNSET;
        in.time->dst = TIMELIB_UNSET;
        in.tzdb = tzdb;
@@ -1932,7 +1948,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
 
                                        tmprel = timelib_lookup_relunit((char **) &ptr);
                                        if (!tmprel) {
-                                               add_pbf_error(s, "A textual day could not be found", string, begin);
+                                               add_pbf_error(s, TIMELIB_ERR_NO_TEXTUAL_DAY, "A textual day could not be found", string, begin);
                                                break;
                                        } else {
                                                in.time->have_relative = 1;
@@ -1946,7 +1962,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                        case 'j': /* two digit day, without leading zero */
                                TIMELIB_CHECK_NUMBER;
                                if ((s->time->d = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A two digit day could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_DAY, "A two digit day could not be found", string, begin);
                                }
                                break;
                        case 'S': /* day suffix, ignored, nor checked */
@@ -1955,7 +1971,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                        case 'z': /* day of year - resets month (0 based) - also initializes everything else to !TIMELIB_UNSET */
                                TIMELIB_CHECK_NUMBER;
                                if ((tmp = timelib_get_nr((char **) &ptr, 3)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A three digit day-of-year could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_THREE_DIGIT_DAY_OF_YEAR, "A three digit day-of-year could not be found", string, begin);
                                } else {
                                        s->time->m = 1;
                                        s->time->d = tmp + 1;
@@ -1967,14 +1983,14 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                        case 'n': /* two digit month, without leading zero */
                                TIMELIB_CHECK_NUMBER;
                                if ((s->time->m = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A two digit month could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_MONTH, "A two digit month could not be found", string, begin);
                                }
                                break;
                        case 'M': /* three letter month */
                        case 'F': /* full month */
                                tmp = timelib_lookup_month((char **) &ptr);
                                if (!tmp) {
-                                       add_pbf_error(s, "A textual month could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_TEXTUAL_MONTH, "A textual month could not be found", string, begin);
                                } else {
                                        s->time->m = tmp;
                                }
@@ -1984,7 +2000,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                        int length = 0;
                                        TIMELIB_CHECK_NUMBER;
                                        if ((s->time->y = timelib_get_nr_ex((char **) &ptr, 2, &length)) == TIMELIB_UNSET) {
-                                               add_pbf_error(s, "A two digit year could not be found", string, begin);
+                                               add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_YEAR, "A two digit year could not be found", string, begin);
                                        }
                                        TIMELIB_PROCESS_YEAR(s->time->y, length);
                                }
@@ -1992,32 +2008,32 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                        case 'Y': /* four digit year */
                                TIMELIB_CHECK_NUMBER;
                                if ((s->time->y = timelib_get_nr((char **) &ptr, 4)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A four digit year could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_FOUR_DIGIT_YEAR, "A four digit year could not be found", string, begin);
                                }
                                break;
                        case 'g': /* two digit hour, with leading zero */
                        case 'h': /* two digit hour, without leading zero */
                                TIMELIB_CHECK_NUMBER;
                                if ((s->time->h = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A two digit hour could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_HOUR, "A two digit hour could not be found", string, begin);
                                }
                                if (s->time->h > 12) {
-                                       add_pbf_error(s, "Hour can not be higher than 12", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_HOUR_LARGER_THAN_12, "Hour can not be higher than 12", string, begin);
                                }
                                break;
                        case 'G': /* two digit hour, with leading zero */
                        case 'H': /* two digit hour, without leading zero */
                                TIMELIB_CHECK_NUMBER;
                                if ((s->time->h = timelib_get_nr((char **) &ptr, 2)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A two digit hour could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_HOUR, "A two digit hour could not be found", string, begin);
                                }
                                break;
                        case 'a': /* am/pm/a.m./p.m. */
                        case 'A': /* AM/PM/A.M./P.M. */
                                if (s->time->h == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "Meridian can only come after an hour has been found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_MERIDIAN_BEFORE_HOUR, "Meridian can only come after an hour has been found", string, begin);
                                } else if ((tmp = timelib_meridian_with_check((char **) &ptr, s->time->h)) == TIMELIB_UNSET) {
-                                       add_pbf_error(s, "A meridian could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_MERIDIAN, "A meridian could not be found", string, begin);
                                } else {
                                        s->time->h += tmp;
                                }
@@ -2030,7 +2046,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                        TIMELIB_CHECK_NUMBER;
                                        min = timelib_get_nr_ex((char **) &ptr, 2, &length);
                                        if (min == TIMELIB_UNSET || length != 2) {
-                                               add_pbf_error(s, "A two digit minute could not be found", string, begin);
+                                               add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_MINUTE, "A two digit minute could not be found", string, begin);
                                        } else {
                                                s->time->i = min;
                                        }
@@ -2044,13 +2060,13 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                        TIMELIB_CHECK_NUMBER;
                                        sec = timelib_get_nr_ex((char **) &ptr, 2, &length);
                                        if (sec == TIMELIB_UNSET || length != 2) {
-                                               add_pbf_error(s, "A two digit second could not be found", string, begin);
+                                               add_pbf_error(s, TIMELIB_ERR_NO_TWO_DIGIT_SECOND, "A two digit second could not be found", string, begin);
                                        } else {
                                                s->time->s = sec;
                                        }
                                }
                                break;
-                       case 'u': /* up to six digit millisecond */
+                       case 'u': /* up to six digit microsecond */
                                {
                                        double f;
                                        char *tptr;
@@ -2058,9 +2074,9 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                        TIMELIB_CHECK_NUMBER;
                                        tptr = ptr;
                                        if ((f = timelib_get_nr((char **) &ptr, 6)) == TIMELIB_UNSET || (ptr - tptr < 1)) {
-                                               add_pbf_error(s, "A six digit millisecond could not be found", string, begin);
+                                               add_pbf_error(s, TIMELIB_ERR_NO_SIX_DIGIT_MICROSECOND, "A six digit microsecond could not be found", string, begin);
                                        } else {
-                                               s->time->f = (f / pow(10, (ptr - tptr)));
+                                               s->time->us = (f * pow(10, 6 - (ptr - tptr)));
                                        }
                                }
                                break;
@@ -2090,7 +2106,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                        int tz_not_found;
                                        s->time->z = timelib_parse_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
                                        if (tz_not_found) {
-                                               add_pbf_error(s, "The timezone could not be found in the database", string, begin);
+                                               add_pbf_error(s, TIMELIB_ERR_TZID_NOT_FOUND, "The timezone could not be found in the database", string, begin);
                                        }
                                }
                                break;
@@ -2099,7 +2115,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                if (*ptr == ';' || *ptr == ':' || *ptr == '/' || *ptr == '.' || *ptr == ',' || *ptr == '-' || *ptr == '(' || *ptr == ')') {
                                        ++ptr;
                                } else {
-                                       add_pbf_error(s, "The separation symbol ([;:/.,-]) could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_SEP_SYMBOL, "The separation symbol ([;:/.,-]) could not be found", string, begin);
                                }
                                break;
 
@@ -2114,7 +2130,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                if (*ptr == *fptr) {
                                        ++ptr;
                                } else {
-                                       add_pbf_error(s, "The separation symbol could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_SEP_SYMBOL, "The separation symbol could not be found", string, begin);
                                }
                                break;
 
@@ -2132,14 +2148,14 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
 
                        case '\\': /* escaped char */
                                if(!fptr[1]) {
-                                       add_pbf_error(s, "Escaped character expected", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_EXPECTED_ESCAPE_CHAR, "Escaped character expected", string, begin);
                                        break;
                                }
                                fptr++;
                                if (*ptr == *fptr) {
                                        ++ptr;
                                } else {
-                                       add_pbf_error(s, "The escaped character could not be found", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_NO_ESCAPED_CHAR, "The escaped character could not be found", string, begin);
                                }
                                break;
 
@@ -2153,7 +2169,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
 
                        default:
                                if (*fptr != *ptr) {
-                                       add_pbf_error(s, "The format separator does not match", string, begin);
+                                       add_pbf_error(s, TIMELIB_ERR_WRONG_FORMAT_SEP, "The format separator does not match", string, begin);
                                }
                                ptr++;
                }
@@ -2161,9 +2177,9 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
        }
        if (*ptr) {
                if (allow_extra) {
-                       add_pbf_warning(s, "Trailing data", string, ptr);
+                       add_pbf_warning(s, TIMELIB_WARN_TRAILING_DATA, "Trailing data", string, ptr);
                } else {
-                       add_pbf_error(s, "Trailing data", string, ptr);
+                       add_pbf_error(s, TIMELIB_ERR_TRAILING_DATA, "Trailing data", string, ptr);
                }
        }
        /* ignore trailing +'s */
@@ -2184,7 +2200,7 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
                                        break;
 
                                default:
-                                       add_pbf_error(s, "Data missing", string, ptr);
+                                       add_pbf_error(s, TIMELIB_ERR_DATA_MISSING, "Data missing", string, ptr);
                                        done = 1;
                        }
                }
@@ -2207,13 +2223,13 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
        if (s->time->h != TIMELIB_UNSET && s->time->i != TIMELIB_UNSET &&
                s->time->s != TIMELIB_UNSET &&
                !timelib_valid_time( s->time->h, s->time->i, s->time->s)) {
-               add_pbf_warning(s, "The parsed time was invalid", string, ptr);
+               add_pbf_warning(s, TIMELIB_WARN_INVALID_TIME, "The parsed time was invalid", string, ptr);
        }
        /* do funky checking whether the parsed date was valid date */
        if (s->time->y != TIMELIB_UNSET && s->time->m != TIMELIB_UNSET &&
                s->time->d != TIMELIB_UNSET &&
                !timelib_valid_date( s->time->y, s->time->m, s->time->d)) {
-               add_pbf_warning(s, "The parsed date was invalid", string, ptr);
+               add_pbf_warning(s, TIMELIB_WARN_INVALID_DATE, "The parsed date was invalid", string, ptr);
        }
 
        if (errors) {
@@ -2230,15 +2246,15 @@ void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options)
                parsed->h = 0;
                parsed->i = 0;
                parsed->s = 0;
-               parsed->f = 0;
+               parsed->us = 0;
        }
        if (
                parsed->y != TIMELIB_UNSET || parsed->m != TIMELIB_UNSET || parsed->d != TIMELIB_UNSET ||
                parsed->h != TIMELIB_UNSET || parsed->i != TIMELIB_UNSET || parsed->s != TIMELIB_UNSET
        ) {
-               if (parsed->f == TIMELIB_UNSET) parsed->f = 0;
+               if (parsed->us == TIMELIB_UNSET) parsed->us = 0;
        } else {
-               if (parsed->f == TIMELIB_UNSET) parsed->f = now->f != TIMELIB_UNSET ? now->f : 0;
+               if (parsed->us == TIMELIB_UNSET) parsed->us = now->us != TIMELIB_UNSET ? now->us : 0;
        }
        if (parsed->y == TIMELIB_UNSET) parsed->y = now->y != TIMELIB_UNSET ? now->y : 0;
        if (parsed->m == TIMELIB_UNSET) parsed->m = now->m != TIMELIB_UNSET ? now->m : 0;
index 237201623be256c0d8bcdffb00de0c358297cb44..60fb5df0067fc9d513e1f406ec723a1a7da77c64 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Thu Aug 13 10:30:12 2015 */
+/* Generated by re2c 0.15.3 on Tue Aug 15 14:21:00 2017 */
 #line 1 "ext/date/lib/parse_iso_intervals.re"
 /*
  * The MIT License (MIT)
 /* $Id$ */
 
 #include "timelib.h"
+#include "timelib_private.h"
 
-#include <stdio.h>
 #include <ctype.h>
 
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
 #if defined(_MSC_VER)
 # define strtoll(s, f, b) _atoi64(s)
 #elif !defined(HAVE_STRTOLL)
 # endif
 #endif
 
-#define TIMELIB_UNSET   -99999
-
-#define TIMELIB_SECOND  1
-#define TIMELIB_MINUTE  2
-#define TIMELIB_HOUR    3
-#define TIMELIB_DAY     4
-#define TIMELIB_MONTH   5
-#define TIMELIB_YEAR    6
-
 #define EOI      257
 
 #define TIMELIB_PERIOD  260
@@ -90,8 +72,6 @@ typedef unsigned char uchar;
 #define YYDEBUG(s,c)
 #endif
 
-#include "timelib_structs.h"
-
 typedef struct Scanner {
        int           fd;
        uchar        *lim, *str, *ptr, *cur, *tok, *pos;
@@ -110,15 +90,6 @@ typedef struct Scanner {
        int have_end_date;
 } Scanner;
 
-static void add_warning(Scanner *s, char *error)
-{
-       s->errors->warning_count++;
-       s->errors->warning_messages = timelib_realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
-       s->errors->warning_messages[s->errors->warning_count - 1].position = s->tok ? s->tok - s->str : 0;
-       s->errors->warning_messages[s->errors->warning_count - 1].character = s->tok ? *s->tok : 0;
-       s->errors->warning_messages[s->errors->warning_count - 1].message = timelib_strdup(error);
-}
-
 static void add_error(Scanner *s, char *error)
 {
        s->errors->error_count++;
@@ -182,55 +153,6 @@ static timelib_ull timelib_get_unsigned_nr(char **ptr, int max_length)
        return dir * timelib_get_nr(ptr, max_length);
 }
 
-static void timelib_eat_spaces(char **ptr)
-{
-       while (**ptr == ' ' || **ptr == '\t') {
-               ++*ptr;
-       }
-}
-
-static void timelib_eat_until_separator(char **ptr)
-{
-       while (strchr(" \t.,:;/-0123456789", **ptr) == NULL) {
-               ++*ptr;
-       }
-}
-
-static timelib_long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb)
-{
-       timelib_long retval = 0;
-
-       *tz_not_found = 0;
-
-       while (**ptr == ' ' || **ptr == '\t' || **ptr == '(') {
-               ++*ptr;
-       }
-       if ((*ptr)[0] == 'G' && (*ptr)[1] == 'M' && (*ptr)[2] == 'T' && ((*ptr)[3] == '+' || (*ptr)[3] == '-')) {
-               *ptr += 3;
-       }
-       if (**ptr == '+') {
-               ++*ptr;
-               t->is_localtime = 1;
-               t->zone_type = TIMELIB_ZONETYPE_OFFSET;
-               *tz_not_found = 0;
-               t->dst = 0;
-
-               retval = -1 * timelib_parse_tz_cor(ptr);
-       } else if (**ptr == '-') {
-               ++*ptr;
-               t->is_localtime = 1;
-               t->zone_type = TIMELIB_ZONETYPE_OFFSET;
-               *tz_not_found = 0;
-               t->dst = 0;
-
-               retval = timelib_parse_tz_cor(ptr);
-       }
-       while (**ptr == ')') {
-               ++*ptr;
-       }
-       return retval;
-}
-
 #define timelib_split_free(arg) {       \
        int i;                         \
        for (i = 0; i < arg.c; i++) {  \
@@ -254,49 +176,49 @@ static int scan(Scanner *s)
 std:
        s->tok = cursor;
        s->len = 0;
-#line 282 "ext/date/lib/parse_iso_intervals.re"
+#line 204 "ext/date/lib/parse_iso_intervals.re"
 
 
 
-#line 262 "ext/date/lib/parse_iso_intervals.c"
+#line 184 "<stdout>"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
        static const unsigned char yybm[] = {
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-               128, 128, 128, 128, 128, 128, 128, 128,
-               128, 128,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
-                 0,   0,   0,   0,   0,   0,   0,   0,
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
        };
-
+       YYDEBUG(0, *YYCURSOR);
        if ((YYLIMIT - YYCURSOR) < 20) YYFILL(20);
        yych = *YYCURSOR;
        if (yych <= ',') {
@@ -321,30 +243,35 @@ std:
                        if (yych != 'R') goto yy11;
                }
        }
+       YYDEBUG(2, *YYCURSOR);
        ++YYCURSOR;
        if ((yych = *YYCURSOR) <= '/') goto yy3;
        if (yych <= '9') goto yy98;
 yy3:
-#line 395 "ext/date/lib/parse_iso_intervals.re"
+       YYDEBUG(3, *YYCURSOR);
+#line 317 "ext/date/lib/parse_iso_intervals.re"
        {
                add_error(s, "Unexpected character");
                goto std;
        }
-#line 334 "ext/date/lib/parse_iso_intervals.c"
+#line 258 "<stdout>"
 yy4:
+       YYDEBUG(4, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy3;
        if (yych <= '9') goto yy59;
        goto yy3;
 yy5:
+       YYDEBUG(5, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy6;
        if (yych <= '9') goto yy12;
        if (yych == 'T') goto yy14;
 yy6:
-#line 322 "ext/date/lib/parse_iso_intervals.re"
+       YYDEBUG(6, *YYCURSOR);
+#line 244 "ext/date/lib/parse_iso_intervals.re"
        {
                timelib_sll nr;
                int         in_time = 0;
@@ -385,26 +312,32 @@ yy6:
                TIMELIB_DEINIT;
                return TIMELIB_PERIOD;
        }
-#line 389 "ext/date/lib/parse_iso_intervals.c"
+#line 316 "<stdout>"
 yy7:
+       YYDEBUG(7, *YYCURSOR);
        ++YYCURSOR;
-#line 384 "ext/date/lib/parse_iso_intervals.re"
+       YYDEBUG(8, *YYCURSOR);
+#line 306 "ext/date/lib/parse_iso_intervals.re"
        {
                goto std;
        }
-#line 396 "ext/date/lib/parse_iso_intervals.c"
+#line 325 "<stdout>"
 yy9:
+       YYDEBUG(9, *YYCURSOR);
        ++YYCURSOR;
-#line 389 "ext/date/lib/parse_iso_intervals.re"
+       YYDEBUG(10, *YYCURSOR);
+#line 311 "ext/date/lib/parse_iso_intervals.re"
        {
                s->pos = cursor; s->line++;
                goto std;
        }
-#line 404 "ext/date/lib/parse_iso_intervals.c"
+#line 335 "<stdout>"
 yy11:
+       YYDEBUG(11, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy3;
 yy12:
+       YYDEBUG(12, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych <= '9') {
@@ -421,13 +354,15 @@ yy12:
                }
        }
 yy13:
+       YYDEBUG(13, *YYCURSOR);
        YYCURSOR = YYMARKER;
-       if (yyaccept <= 0) {
+       if (yyaccept == 0) {
                goto yy3;
        } else {
                goto yy6;
        }
 yy14:
+       YYDEBUG(14, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 128) {
@@ -435,9 +370,11 @@ yy14:
        }
        goto yy6;
 yy15:
+       YYDEBUG(15, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = *YYCURSOR;
+       YYDEBUG(16, *YYCURSOR);
        if (yybm[0+yych] & 128) {
                goto yy15;
        }
@@ -449,23 +386,28 @@ yy15:
                if (yych != 'S') goto yy13;
        }
 yy17:
+       YYDEBUG(17, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy6;
 yy18:
+       YYDEBUG(18, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy6;
        if (yych <= '9') goto yy22;
        goto yy6;
 yy19:
+       YYDEBUG(19, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy6;
        if (yych >= ':') goto yy6;
 yy20:
+       YYDEBUG(20, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = *YYCURSOR;
+       YYDEBUG(21, *YYCURSOR);
        if (yych <= 'L') {
                if (yych <= '/') goto yy13;
                if (yych <= '9') goto yy20;
@@ -476,18 +418,22 @@ yy20:
                goto yy13;
        }
 yy22:
+       YYDEBUG(22, *YYCURSOR);
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYDEBUG(23, *YYCURSOR);
        if (yych <= '/') goto yy13;
        if (yych <= '9') goto yy22;
        if (yych == 'S') goto yy17;
        goto yy13;
 yy24:
+       YYDEBUG(24, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'T') goto yy14;
        goto yy6;
 yy25:
+       YYDEBUG(25, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych <= '9') {
@@ -507,6 +453,7 @@ yy25:
                }
        }
 yy26:
+       YYDEBUG(26, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy6;
@@ -514,6 +461,7 @@ yy26:
        if (yych == 'T') goto yy14;
        goto yy6;
 yy27:
+       YYDEBUG(27, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy6;
@@ -521,6 +469,7 @@ yy27:
        if (yych == 'T') goto yy14;
        goto yy6;
 yy28:
+       YYDEBUG(28, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy6;
@@ -528,9 +477,11 @@ yy28:
        if (yych == 'T') goto yy14;
        goto yy6;
 yy29:
+       YYDEBUG(29, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
        yych = *YYCURSOR;
+       YYDEBUG(30, *YYCURSOR);
        if (yych <= 'D') {
                if (yych <= '/') goto yy13;
                if (yych <= '9') goto yy29;
@@ -546,9 +497,11 @@ yy29:
                }
        }
 yy31:
+       YYDEBUG(31, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
        yych = *YYCURSOR;
+       YYDEBUG(32, *YYCURSOR);
        if (yych <= 'C') {
                if (yych <= '/') goto yy13;
                if (yych <= '9') goto yy31;
@@ -559,14 +512,17 @@ yy31:
                goto yy13;
        }
 yy33:
+       YYDEBUG(33, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
        yych = *YYCURSOR;
+       YYDEBUG(34, *YYCURSOR);
        if (yych <= '/') goto yy13;
        if (yych <= '9') goto yy33;
        if (yych == 'D') goto yy24;
        goto yy13;
 yy35:
+       YYDEBUG(35, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= 'L') {
                if (yych <= '9') {
@@ -585,18 +541,22 @@ yy35:
                        goto yy13;
                }
        }
+       YYDEBUG(36, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '-') goto yy39;
+       YYDEBUG(37, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '0') goto yy40;
        if (yych <= '1') goto yy41;
        goto yy13;
 yy38:
+       YYDEBUG(38, *YYCURSOR);
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
        yych = *YYCURSOR;
 yy39:
+       YYDEBUG(39, *YYCURSOR);
        if (yych <= 'L') {
                if (yych <= '9') {
                        if (yych <= '/') goto yy13;
@@ -616,17 +576,21 @@ yy39:
                }
        }
 yy40:
+       YYDEBUG(40, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '9') goto yy42;
        goto yy13;
 yy41:
+       YYDEBUG(41, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '3') goto yy13;
 yy42:
+       YYDEBUG(42, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '-') goto yy13;
+       YYDEBUG(43, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '0') goto yy44;
@@ -634,55 +598,70 @@ yy42:
        if (yych <= '3') goto yy46;
        goto yy13;
 yy44:
+       YYDEBUG(44, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '9') goto yy47;
        goto yy13;
 yy45:
+       YYDEBUG(45, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '9') goto yy47;
        goto yy13;
 yy46:
+       YYDEBUG(46, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '2') goto yy13;
 yy47:
+       YYDEBUG(47, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != 'T') goto yy13;
+       YYDEBUG(48, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '1') goto yy49;
        if (yych <= '2') goto yy50;
        goto yy13;
 yy49:
+       YYDEBUG(49, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '9') goto yy51;
        goto yy13;
 yy50:
+       YYDEBUG(50, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '5') goto yy13;
 yy51:
+       YYDEBUG(51, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy13;
+       YYDEBUG(52, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '6') goto yy13;
+       YYDEBUG(53, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= ':') goto yy13;
+       YYDEBUG(54, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy13;
+       YYDEBUG(55, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '6') goto yy13;
+       YYDEBUG(56, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= ':') goto yy13;
+       YYDEBUG(57, *YYCURSOR);
        ++YYCURSOR;
-#line 364 "ext/date/lib/parse_iso_intervals.re"
+       YYDEBUG(58, *YYCURSOR);
+#line 286 "ext/date/lib/parse_iso_intervals.re"
        {
                DEBUG_OUTPUT("combinedrep");
                TIMELIB_INIT;
@@ -701,14 +680,17 @@ yy51:
                TIMELIB_DEINIT;
                return TIMELIB_PERIOD;
        }
-#line 705 "ext/date/lib/parse_iso_intervals.c"
+#line 684 "<stdout>"
 yy59:
+       YYDEBUG(59, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= ':') goto yy13;
+       YYDEBUG(60, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= ':') goto yy13;
+       YYDEBUG(61, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') {
                if (yych == '-') goto yy64;
@@ -719,33 +701,40 @@ yy59:
                goto yy13;
        }
 yy62:
+       YYDEBUG(62, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '0') goto yy13;
        if (yych <= '9') goto yy85;
        goto yy13;
 yy63:
+       YYDEBUG(63, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '2') goto yy85;
        goto yy13;
 yy64:
+       YYDEBUG(64, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '0') goto yy65;
        if (yych <= '1') goto yy66;
        goto yy13;
 yy65:
+       YYDEBUG(65, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '0') goto yy13;
        if (yych <= '9') goto yy67;
        goto yy13;
 yy66:
+       YYDEBUG(66, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '3') goto yy13;
 yy67:
+       YYDEBUG(67, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != '-') goto yy13;
+       YYDEBUG(68, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '0') goto yy69;
@@ -753,58 +742,74 @@ yy67:
        if (yych <= '3') goto yy71;
        goto yy13;
 yy69:
+       YYDEBUG(69, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '0') goto yy13;
        if (yych <= '9') goto yy72;
        goto yy13;
 yy70:
+       YYDEBUG(70, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '9') goto yy72;
        goto yy13;
 yy71:
+       YYDEBUG(71, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '2') goto yy13;
 yy72:
+       YYDEBUG(72, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != 'T') goto yy13;
+       YYDEBUG(73, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '1') goto yy74;
        if (yych <= '2') goto yy75;
        goto yy13;
 yy74:
+       YYDEBUG(74, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '9') goto yy76;
        goto yy13;
 yy75:
+       YYDEBUG(75, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '5') goto yy13;
 yy76:
+       YYDEBUG(76, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy13;
+       YYDEBUG(77, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '6') goto yy13;
+       YYDEBUG(78, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= ':') goto yy13;
+       YYDEBUG(79, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != ':') goto yy13;
+       YYDEBUG(80, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '6') goto yy13;
+       YYDEBUG(81, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= ':') goto yy13;
+       YYDEBUG(82, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != 'Z') goto yy13;
 yy83:
+       YYDEBUG(83, *YYCURSOR);
        ++YYCURSOR;
-#line 298 "ext/date/lib/parse_iso_intervals.re"
+       YYDEBUG(84, *YYCURSOR);
+#line 220 "ext/date/lib/parse_iso_intervals.re"
        {
                timelib_time *current;
 
@@ -827,8 +832,9 @@ yy83:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_DATE;
        }
-#line 831 "ext/date/lib/parse_iso_intervals.c"
+#line 836 "<stdout>"
 yy85:
+       YYDEBUG(85, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '0') goto yy86;
@@ -836,60 +842,75 @@ yy85:
        if (yych <= '3') goto yy88;
        goto yy13;
 yy86:
+       YYDEBUG(86, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '0') goto yy13;
        if (yych <= '9') goto yy89;
        goto yy13;
 yy87:
+       YYDEBUG(87, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '9') goto yy89;
        goto yy13;
 yy88:
+       YYDEBUG(88, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '2') goto yy13;
 yy89:
+       YYDEBUG(89, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych != 'T') goto yy13;
+       YYDEBUG(90, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '1') goto yy91;
        if (yych <= '2') goto yy92;
        goto yy13;
 yy91:
+       YYDEBUG(91, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych <= '9') goto yy93;
        goto yy13;
 yy92:
+       YYDEBUG(92, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '5') goto yy13;
 yy93:
+       YYDEBUG(93, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '6') goto yy13;
+       YYDEBUG(94, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= ':') goto yy13;
+       YYDEBUG(95, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= '6') goto yy13;
+       YYDEBUG(96, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych <= '/') goto yy13;
        if (yych >= ':') goto yy13;
+       YYDEBUG(97, *YYCURSOR);
        yych = *++YYCURSOR;
        if (yych == 'Z') goto yy83;
        goto yy13;
 yy98:
+       YYDEBUG(98, *YYCURSOR);
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       YYDEBUG(99, *YYCURSOR);
        if (yych <= '/') goto yy100;
        if (yych <= '9') goto yy98;
 yy100:
-#line 287 "ext/date/lib/parse_iso_intervals.re"
+       YYDEBUG(100, *YYCURSOR);
+#line 209 "ext/date/lib/parse_iso_intervals.re"
        {
                DEBUG_OUTPUT("recurrences");
                TIMELIB_INIT;
@@ -899,9 +920,9 @@ yy100:
                s->have_recurrences = 1;
                return TIMELIB_PERIOD;
        }
-#line 903 "ext/date/lib/parse_iso_intervals.c"
+#line 924 "<stdout>"
 }
-#line 399 "ext/date/lib/parse_iso_intervals.re"
+#line 321 "ext/date/lib/parse_iso_intervals.re"
 
 }
 #ifdef PHP_WIN32
@@ -960,7 +981,7 @@ void timelib_strtointerval(char *s, size_t len,
        in.begin->h = TIMELIB_UNSET;
        in.begin->i = TIMELIB_UNSET;
        in.begin->s = TIMELIB_UNSET;
-       in.begin->f = 0;
+       in.begin->us = 0;
        in.begin->z = 0;
        in.begin->dst = 0;
        in.begin->is_localtime = 0;
@@ -973,7 +994,7 @@ void timelib_strtointerval(char *s, size_t len,
        in.end->h = TIMELIB_UNSET;
        in.end->i = TIMELIB_UNSET;
        in.end->s = TIMELIB_UNSET;
-       in.end->f = 0;
+       in.end->us = 0;
        in.end->z = 0;
        in.end->dst = 0;
        in.end->is_localtime = 0;
index 6f23bb16f276ddedfc866c2c3e28a25ccaffdf29..7a481c836d1cc6bc80ad7beccc16f64d4ff83c04 100644 (file)
 /* $Id$ */
 
 #include "timelib.h"
+#include "timelib_private.h"
 
-#include <stdio.h>
 #include <ctype.h>
 
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
 #if defined(_MSC_VER)
 # define strtoll(s, f, b) _atoi64(s)
 #elif !defined(HAVE_STRTOLL)
 # endif
 #endif
 
-#define TIMELIB_UNSET   -99999
-
-#define TIMELIB_SECOND  1
-#define TIMELIB_MINUTE  2
-#define TIMELIB_HOUR    3
-#define TIMELIB_DAY     4
-#define TIMELIB_MONTH   5
-#define TIMELIB_YEAR    6
-
 #define EOI      257
 
 #define TIMELIB_PERIOD  260
@@ -88,8 +70,6 @@ typedef unsigned char uchar;
 #define YYDEBUG(s,c)
 #endif
 
-#include "timelib_structs.h"
-
 typedef struct Scanner {
        int           fd;
        uchar        *lim, *str, *ptr, *cur, *tok, *pos;
@@ -108,15 +88,6 @@ typedef struct Scanner {
        int have_end_date;
 } Scanner;
 
-static void add_warning(Scanner *s, char *error)
-{
-       s->errors->warning_count++;
-       s->errors->warning_messages = timelib_realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
-       s->errors->warning_messages[s->errors->warning_count - 1].position = s->tok ? s->tok - s->str : 0;
-       s->errors->warning_messages[s->errors->warning_count - 1].character = s->tok ? *s->tok : 0;
-       s->errors->warning_messages[s->errors->warning_count - 1].message = timelib_strdup(error);
-}
-
 static void add_error(Scanner *s, char *error)
 {
        s->errors->error_count++;
@@ -180,55 +151,6 @@ static timelib_ull timelib_get_unsigned_nr(char **ptr, int max_length)
        return dir * timelib_get_nr(ptr, max_length);
 }
 
-static void timelib_eat_spaces(char **ptr)
-{
-       while (**ptr == ' ' || **ptr == '\t') {
-               ++*ptr;
-       }
-}
-
-static void timelib_eat_until_separator(char **ptr)
-{
-       while (strchr(" \t.,:;/-0123456789", **ptr) == NULL) {
-               ++*ptr;
-       }
-}
-
-static timelib_long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb)
-{
-       timelib_long retval = 0;
-
-       *tz_not_found = 0;
-
-       while (**ptr == ' ' || **ptr == '\t' || **ptr == '(') {
-               ++*ptr;
-       }
-       if ((*ptr)[0] == 'G' && (*ptr)[1] == 'M' && (*ptr)[2] == 'T' && ((*ptr)[3] == '+' || (*ptr)[3] == '-')) {
-               *ptr += 3;
-       }
-       if (**ptr == '+') {
-               ++*ptr;
-               t->is_localtime = 1;
-               t->zone_type = TIMELIB_ZONETYPE_OFFSET;
-               *tz_not_found = 0;
-               t->dst = 0;
-
-               retval = -1 * timelib_parse_tz_cor(ptr);
-       } else if (**ptr == '-') {
-               ++*ptr;
-               t->is_localtime = 1;
-               t->zone_type = TIMELIB_ZONETYPE_OFFSET;
-               *tz_not_found = 0;
-               t->dst = 0;
-
-               retval = timelib_parse_tz_cor(ptr);
-       }
-       while (**ptr == ')') {
-               ++*ptr;
-       }
-       return retval;
-}
-
 #define timelib_split_free(arg) {       \
        int i;                         \
        for (i = 0; i < arg.c; i++) {  \
@@ -454,7 +376,7 @@ void timelib_strtointerval(char *s, size_t len,
        in.begin->h = TIMELIB_UNSET;
        in.begin->i = TIMELIB_UNSET;
        in.begin->s = TIMELIB_UNSET;
-       in.begin->f = 0;
+       in.begin->us = 0;
        in.begin->z = 0;
        in.begin->dst = 0;
        in.begin->is_localtime = 0;
@@ -467,7 +389,7 @@ void timelib_strtointerval(char *s, size_t len,
        in.end->h = TIMELIB_UNSET;
        in.end->i = TIMELIB_UNSET;
        in.end->s = TIMELIB_UNSET;
-       in.end->f = 0;
+       in.end->us = 0;
        in.end->z = 0;
        in.end->dst = 0;
        in.end->is_localtime = 0;
index 20d7eeac1992ec58716c96767a7e479291538b1b..f3e49cb4694582850518d32684c7ede4fa511cf7 100644 (file)
  */
 
 #include "timelib.h"
-
-#include <stdio.h>
-
-#ifdef HAVE_LOCALE_H
-#include <locale.h>
-#endif
-
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
+#include "timelib_private.h"
 
 #define TIMELIB_SUPPORTS_V2DATA
 #include "timezonedb.h"
 # endif
 #endif
 
+#if defined(__s390__)
+# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+#  define WORDS_BIGENDIAN
+# else
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
+
 #ifdef WORDS_BIGENDIAN
-#define timelib_conv_int(l) (l)
+static inline uint32_t timelib_conv_int_unsigned(uint32_t value)
+{
+       return value;
+}
 #else
-#define timelib_conv_int(l) ((l & 0x000000ff) << 24) + ((l & 0x0000ff00) << 8) + ((l & 0x00ff0000) >> 8) + ((l & 0xff000000) >> 24)
+static inline uint32_t timelib_conv_int_unsigned(uint32_t value)
+{
+       return ((value & 0x000000ff) << 24) +
+               ((value & 0x0000ff00) << 8) +
+               ((value & 0x00ff0000) >> 8) +
+               ((value & 0xff000000) >> 24);
+}
 #endif
 
-static int read_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
+#define timelib_conv_int_signed(value) ((int32_t) timelib_conv_int_unsigned((int32_t) value))
+
+static int read_php_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
 {
        uint32_t version;
 
@@ -78,21 +86,67 @@ static int read_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
        return version;
 }
 
+static int read_tzif_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
+{
+       uint32_t version;
+
+       /* read ID */
+       switch ((*tzf)[4]) {
+               case '\0':
+                       version = 0;
+                       break;
+               case '2':
+                       version = 2;
+                       break;
+               case '3':
+                       version = 3;
+                       break;
+               default:
+                       return -1;
+       }
+       *tzf += 5;
+
+       /* set BC flag and country code to default */
+       tz->bc = 0;
+       tz->location.country_code[0] = '?';
+       tz->location.country_code[1] = '?';
+       tz->location.country_code[2] = '\0';
+
+       /* skip rest of preamble */
+       *tzf += 15;
+
+       return version;
+}
+
+static int read_preamble(const unsigned char **tzf, timelib_tzinfo *tz, unsigned int *type)
+{
+       /* read marker (TZif) or (PHP) */
+       if (memcmp(*tzf, "PHP", 3) == 0) {
+               *type = TIMELIB_TZINFO_PHP;
+               return read_php_preamble(tzf, tz);
+       } else if (memcmp(*tzf, "TZif", 4) == 0) {
+               *type = TIMELIB_TZINFO_ZONEINFO;
+               return read_tzif_preamble(tzf, tz);
+       } else {
+               return -1;
+       }
+}
+
 static void read_header(const unsigned char **tzf, timelib_tzinfo *tz)
 {
        uint32_t buffer[6];
 
        memcpy(&buffer, *tzf, sizeof(buffer));
-       tz->bit32.ttisgmtcnt = timelib_conv_int(buffer[0]);
-       tz->bit32.ttisstdcnt = timelib_conv_int(buffer[1]);
-       tz->bit32.leapcnt    = timelib_conv_int(buffer[2]);
-       tz->bit32.timecnt    = timelib_conv_int(buffer[3]);
-       tz->bit32.typecnt    = timelib_conv_int(buffer[4]);
-       tz->bit32.charcnt    = timelib_conv_int(buffer[5]);
+       tz->bit32.ttisgmtcnt = timelib_conv_int_unsigned(buffer[0]);
+       tz->bit32.ttisstdcnt = timelib_conv_int_unsigned(buffer[1]);
+       tz->bit32.leapcnt    = timelib_conv_int_unsigned(buffer[2]);
+       tz->bit32.timecnt    = timelib_conv_int_unsigned(buffer[3]);
+       tz->bit32.typecnt    = timelib_conv_int_unsigned(buffer[4]);
+       tz->bit32.charcnt    = timelib_conv_int_unsigned(buffer[5]);
        *tzf += sizeof(buffer);
 }
 
-static void skip_64bit_transistions(const unsigned char **tzf, timelib_tzinfo *tz)
+static void skip_64bit_transitions(const unsigned char **tzf, timelib_tzinfo *tz)
 {
        if (tz->bit64.timecnt) {
                *tzf += (sizeof(int64_t) * tz->bit64.timecnt);
@@ -100,7 +154,7 @@ static void skip_64bit_transistions(const unsigned char **tzf, timelib_tzinfo *t
        }
 }
 
-static void read_transistions(const unsigned char **tzf, timelib_tzinfo *tz)
+static int read_transitions(const unsigned char **tzf, timelib_tzinfo *tz)
 {
        int32_t *buffer = NULL;
        uint32_t i;
@@ -109,18 +163,22 @@ static void read_transistions(const unsigned char **tzf, timelib_tzinfo *tz)
        if (tz->bit32.timecnt) {
                buffer = (int32_t*) timelib_malloc(tz->bit32.timecnt * sizeof(int32_t));
                if (!buffer) {
-                       return;
+                       return TIMELIB_ERROR_CANNOT_ALLOCATE;
                }
                memcpy(buffer, *tzf, sizeof(int32_t) * tz->bit32.timecnt);
                *tzf += (sizeof(int32_t) * tz->bit32.timecnt);
                for (i = 0; i < tz->bit32.timecnt; i++) {
-                       buffer[i] = timelib_conv_int(buffer[i]);
+                       buffer[i] = timelib_conv_int_signed(buffer[i]);
+                       /* Sanity check to see whether TS is just increasing */
+                       if (i > 0 && !(buffer[i] > buffer[i - 1])) {
+                               return TIMELIB_ERROR_CORRUPT_TRANSITIONS_DONT_INCREASE;
+                       }
                }
 
                cbuffer = (unsigned char*) timelib_malloc(tz->bit32.timecnt * sizeof(unsigned char));
                if (!cbuffer) {
                        timelib_free(buffer);
-                       return;
+                       return TIMELIB_ERROR_CANNOT_ALLOCATE;
                }
                memcpy(cbuffer, *tzf, sizeof(unsigned char) * tz->bit32.timecnt);
                *tzf += sizeof(unsigned char) * tz->bit32.timecnt;
@@ -128,6 +186,8 @@ static void read_transistions(const unsigned char **tzf, timelib_tzinfo *tz)
 
        tz->trans = buffer;
        tz->trans_idx = cbuffer;
+
+       return 0;
 }
 
 static void skip_64bit_types(const unsigned char **tzf, timelib_tzinfo *tz)
@@ -145,7 +205,7 @@ static void skip_64bit_types(const unsigned char **tzf, timelib_tzinfo *tz)
        }
 }
 
-static void read_types(const unsigned char **tzf, timelib_tzinfo *tz)
+static int read_types(const unsigned char **tzf, timelib_tzinfo *tz)
 {
        unsigned char *buffer;
        int32_t *leap_buffer;
@@ -153,7 +213,7 @@ static void read_types(const unsigned char **tzf, timelib_tzinfo *tz)
 
        buffer = (unsigned char*) timelib_malloc(tz->bit32.typecnt * sizeof(unsigned char) * 6);
        if (!buffer) {
-               return;
+               return TIMELIB_ERROR_CANNOT_ALLOCATE;
        }
        memcpy(buffer, *tzf, sizeof(unsigned char) * 6 * tz->bit32.typecnt);
        *tzf += sizeof(unsigned char) * 6 * tz->bit32.typecnt;
@@ -161,12 +221,13 @@ static void read_types(const unsigned char **tzf, timelib_tzinfo *tz)
        tz->type = (ttinfo*) timelib_malloc(tz->bit32.typecnt * sizeof(struct ttinfo));
        if (!tz->type) {
                timelib_free(buffer);
-               return;
+               return TIMELIB_ERROR_CANNOT_ALLOCATE;
        }
 
        for (i = 0; i < tz->bit32.typecnt; i++) {
                j = i * 6;
-               tz->type[i].offset = (buffer[j] * 16777216) + (buffer[j + 1] * 65536) + (buffer[j + 2] * 256) + buffer[j + 3];
+               tz->type[i].offset = 0;
+               tz->type[i].offset += (int32_t) (((uint32_t) buffer[j]) << 24) + (buffer[j + 1] << 16) + (buffer[j + 2] << 8) + tz->type[i].offset + buffer[j + 3];
                tz->type[i].isdst = buffer[j + 4];
                tz->type[i].abbr_idx = buffer[j + 5];
        }
@@ -174,7 +235,7 @@ static void read_types(const unsigned char **tzf, timelib_tzinfo *tz)
 
        tz->timezone_abbr = (char*) timelib_malloc(tz->bit32.charcnt);
        if (!tz->timezone_abbr) {
-               return;
+               return TIMELIB_ERROR_CORRUPT_NO_ABBREVIATION;
        }
        memcpy(tz->timezone_abbr, *tzf, sizeof(char) * tz->bit32.charcnt);
        *tzf += sizeof(char) * tz->bit32.charcnt;
@@ -182,7 +243,7 @@ static void read_types(const unsigned char **tzf, timelib_tzinfo *tz)
        if (tz->bit32.leapcnt) {
                leap_buffer = (int32_t *) timelib_malloc(tz->bit32.leapcnt * 2 * sizeof(int32_t));
                if (!leap_buffer) {
-                       return;
+                       return TIMELIB_ERROR_CANNOT_ALLOCATE;
                }
                memcpy(leap_buffer, *tzf, sizeof(int32_t) * tz->bit32.leapcnt * 2);
                *tzf += sizeof(int32_t) * tz->bit32.leapcnt * 2;
@@ -190,11 +251,11 @@ static void read_types(const unsigned char **tzf, timelib_tzinfo *tz)
                tz->leap_times = (tlinfo*) timelib_malloc(tz->bit32.leapcnt * sizeof(tlinfo));
                if (!tz->leap_times) {
                        timelib_free(leap_buffer);
-                       return;
+                       return TIMELIB_ERROR_CANNOT_ALLOCATE;
                }
                for (i = 0; i < tz->bit32.leapcnt; i++) {
-                       tz->leap_times[i].trans = timelib_conv_int(leap_buffer[i * 2]);
-                       tz->leap_times[i].offset = timelib_conv_int(leap_buffer[i * 2 + 1]);
+                       tz->leap_times[i].trans = timelib_conv_int_signed(leap_buffer[i * 2]);
+                       tz->leap_times[i].offset = timelib_conv_int_signed(leap_buffer[i * 2 + 1]);
                }
                timelib_free(leap_buffer);
        }
@@ -202,7 +263,7 @@ static void read_types(const unsigned char **tzf, timelib_tzinfo *tz)
        if (tz->bit32.ttisstdcnt) {
                buffer = (unsigned char*) timelib_malloc(tz->bit32.ttisstdcnt * sizeof(unsigned char));
                if (!buffer) {
-                       return;
+                       return TIMELIB_ERROR_CANNOT_ALLOCATE;
                }
                memcpy(buffer, *tzf, sizeof(unsigned char) * tz->bit32.ttisstdcnt);
                *tzf += sizeof(unsigned char) * tz->bit32.ttisstdcnt;
@@ -216,7 +277,7 @@ static void read_types(const unsigned char **tzf, timelib_tzinfo *tz)
        if (tz->bit32.ttisgmtcnt) {
                buffer = (unsigned char*) timelib_malloc(tz->bit32.ttisgmtcnt * sizeof(unsigned char));
                if (!buffer) {
-                       return;
+                       return TIMELIB_ERROR_CANNOT_ALLOCATE;
                }
                memcpy(buffer, *tzf, sizeof(unsigned char) * tz->bit32.ttisgmtcnt);
                *tzf += sizeof(unsigned char) * tz->bit32.ttisgmtcnt;
@@ -226,6 +287,8 @@ static void read_types(const unsigned char **tzf, timelib_tzinfo *tz)
                }
                timelib_free(buffer);
        }
+
+       return 0;
 }
 
 static void skip_posix_string(const unsigned char **tzf, timelib_tzinfo *tz)
@@ -246,11 +309,11 @@ static void read_location(const unsigned char **tzf, timelib_tzinfo *tz)
        uint32_t comments_len;
 
        memcpy(&buffer, *tzf, sizeof(buffer));
-       tz->location.latitude = timelib_conv_int(buffer[0]);
+       tz->location.latitude = timelib_conv_int_unsigned(buffer[0]);
        tz->location.latitude = (tz->location.latitude / 100000) - 90;
-       tz->location.longitude = timelib_conv_int(buffer[1]);
+       tz->location.longitude = timelib_conv_int_unsigned(buffer[1]);
        tz->location.longitude = (tz->location.longitude / 100000) - 180;
-       comments_len = timelib_conv_int(buffer[2]);
+       comments_len = timelib_conv_int_unsigned(buffer[2]);
        *tzf += sizeof(buffer);
 
        tz->location.comments = timelib_malloc(comments_len + 1);
@@ -259,6 +322,15 @@ static void read_location(const unsigned char **tzf, timelib_tzinfo *tz)
        *tzf += comments_len;
 }
 
+static void set_default_location_and_comments(const unsigned char **tzf, timelib_tzinfo *tz)
+{
+       tz->location.latitude = 0;
+       tz->location.longitude = 0;
+       tz->location.comments = timelib_malloc(2);
+       tz->location.comments[0] = '?';
+       tz->location.comments[1] = '\0';
+}
+
 void timelib_dump_tzinfo(timelib_tzinfo *tz)
 {
        uint32_t i;
@@ -307,7 +379,13 @@ static int seek_to_tz_position(const unsigned char **tzf, char *timezone, const
        int left = 0, right = tzdb->index_size - 1;
 #ifdef HAVE_SETLOCALE
        char *cur_locale = NULL, *tmp;
+#endif
+
+       if (tzdb->index_size == 0) {
+               return 0;
+       }
 
+#ifdef HAVE_SETLOCALE
        tmp = setlocale(LC_CTYPE, NULL);
        if (tmp) {
                cur_locale = timelib_strdup(tmp);
@@ -346,10 +424,10 @@ const timelib_tzdb *timelib_builtin_db(void)
        return &timezonedb_builtin;
 }
 
-const timelib_tzdb_index_entry *timelib_timezone_builtin_identifiers_list(int *count)
+const timelib_tzdb_index_entry *timelib_timezone_identifiers_list(timelib_tzdb *tzdb, int *count)
 {
-       *count = sizeof(timezonedb_idx_builtin) / sizeof(*timezonedb_idx_builtin);
-       return timezonedb_idx_builtin;
+       *count = tzdb->index_size;
+       return tzdb->index;
 }
 
 int timelib_timezone_id_is_valid(char *timezone, const timelib_tzdb *tzdb)
@@ -358,9 +436,17 @@ int timelib_timezone_id_is_valid(char *timezone, const timelib_tzdb *tzdb)
        return (seek_to_tz_position(&tzf, timezone, tzdb));
 }
 
-static void skip_64bit_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
+static int skip_64bit_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
 {
-       *tzf += 20;
+       if (memcmp(*tzf, "TZif2", 5) == 0) {
+               *tzf += 20;
+               return 1;
+       } else if (memcmp(*tzf, "TZif3", 5) == 0) {
+               *tzf += 20;
+               return 1;
+       } else {
+               return 0;
+       }
 }
 
 static void read_64bit_header(const unsigned char **tzf, timelib_tzinfo *tz)
@@ -368,43 +454,124 @@ static void read_64bit_header(const unsigned char **tzf, timelib_tzinfo *tz)
        uint32_t buffer[6];
 
        memcpy(&buffer, *tzf, sizeof(buffer));
-       tz->bit64.ttisgmtcnt = timelib_conv_int(buffer[0]);
-       tz->bit64.ttisstdcnt = timelib_conv_int(buffer[1]);
-       tz->bit64.leapcnt    = timelib_conv_int(buffer[2]);
-       tz->bit64.timecnt    = timelib_conv_int(buffer[3]);
-       tz->bit64.typecnt    = timelib_conv_int(buffer[4]);
-       tz->bit64.charcnt    = timelib_conv_int(buffer[5]);
+       tz->bit64.ttisgmtcnt = timelib_conv_int_unsigned(buffer[0]);
+       tz->bit64.ttisstdcnt = timelib_conv_int_unsigned(buffer[1]);
+       tz->bit64.leapcnt    = timelib_conv_int_unsigned(buffer[2]);
+       tz->bit64.timecnt    = timelib_conv_int_unsigned(buffer[3]);
+       tz->bit64.typecnt    = timelib_conv_int_unsigned(buffer[4]);
+       tz->bit64.charcnt    = timelib_conv_int_unsigned(buffer[5]);
        *tzf += sizeof(buffer);
 }
 
-timelib_tzinfo *timelib_parse_tzfile(char *timezone, const timelib_tzdb *tzdb)
+static timelib_tzinfo* timelib_tzinfo_ctor(char *name)
+{
+       timelib_tzinfo *t;
+       t = timelib_calloc(1, sizeof(timelib_tzinfo));
+       t->name = timelib_strdup(name);
+
+       return t;
+}
+
+timelib_tzinfo *timelib_parse_tzfile(char *timezone, const timelib_tzdb *tzdb, int *error_code)
 {
        const unsigned char *tzf;
        timelib_tzinfo *tmp;
        int version;
+       int transitions_result, types_result;
+       unsigned int type; /* TIMELIB_TZINFO_PHP or TIMELIB_TZINFO_ZONEINFO */
 
        if (seek_to_tz_position(&tzf, timezone, tzdb)) {
                tmp = timelib_tzinfo_ctor(timezone);
 
-               version = read_preamble(&tzf, tmp);
+               version = read_preamble(&tzf, tmp, &type);
+               if (version == -1) {
+                       *error_code = TIMELIB_ERROR_UNSUPPORTED_VERSION;
+                       timelib_tzinfo_dtor(tmp);
+                       return NULL;
+               }
+//printf("- timezone: %s, version: %0d\n", timezone, version);
+
                read_header(&tzf, tmp);
-               read_transistions(&tzf, tmp);
-               read_types(&tzf, tmp);
-               if (version == 2) {
-                       skip_64bit_preamble(&tzf, tmp);
+               if ((transitions_result = read_transitions(&tzf, tmp)) != 0) {
+                       /* Corrupt file as transitions do not increase */
+                       *error_code = transitions_result;
+                       timelib_tzinfo_dtor(tmp);
+                       return NULL;
+               }
+               if ((types_result = read_types(&tzf, tmp)) != 0) {
+                       *error_code = types_result;
+                       timelib_tzinfo_dtor(tmp);
+                       return NULL;
+               }
+               if (version == 2 || version == 3) {
+                       if (!skip_64bit_preamble(&tzf, tmp)) {
+                               /* 64 bit preamble is not in place */
+                               *error_code = TIMELIB_ERROR_CORRUPT_NO_64BIT_PREAMBLE;
+                               return NULL;
+                       }
                        read_64bit_header(&tzf, tmp);
-                       skip_64bit_transistions(&tzf, tmp);
+                       skip_64bit_transitions(&tzf, tmp);
                        skip_64bit_types(&tzf, tmp);
                        skip_posix_string(&tzf, tmp);
                }
-               read_location(&tzf, tmp);
+
+               if (type == TIMELIB_TZINFO_PHP) {
+                       read_location(&tzf, tmp);
+               } else {
+                       set_default_location_and_comments(&tzf, tmp);
+               }
        } else {
+               *error_code = TIMELIB_ERROR_NO_SUCH_TIMEZONE;
                tmp = NULL;
        }
 
        return tmp;
 }
 
+void timelib_tzinfo_dtor(timelib_tzinfo *tz)
+{
+       TIMELIB_TIME_FREE(tz->name);
+       TIMELIB_TIME_FREE(tz->trans);
+       TIMELIB_TIME_FREE(tz->trans_idx);
+       TIMELIB_TIME_FREE(tz->type);
+       TIMELIB_TIME_FREE(tz->timezone_abbr);
+       TIMELIB_TIME_FREE(tz->leap_times);
+       TIMELIB_TIME_FREE(tz->location.comments);
+       TIMELIB_TIME_FREE(tz);
+       tz = NULL;
+}
+
+timelib_tzinfo *timelib_tzinfo_clone(timelib_tzinfo *tz)
+{
+       timelib_tzinfo *tmp = timelib_tzinfo_ctor(tz->name);
+       tmp->bit32.ttisgmtcnt = tz->bit32.ttisgmtcnt;
+       tmp->bit32.ttisstdcnt = tz->bit32.ttisstdcnt;
+       tmp->bit32.leapcnt = tz->bit32.leapcnt;
+       tmp->bit32.timecnt = tz->bit32.timecnt;
+       tmp->bit32.typecnt = tz->bit32.typecnt;
+       tmp->bit32.charcnt = tz->bit32.charcnt;
+
+       if (tz->bit32.timecnt) {
+               tmp->trans = (int32_t *) timelib_malloc(tz->bit32.timecnt * sizeof(int32_t));
+               tmp->trans_idx = (unsigned char*) timelib_malloc(tz->bit32.timecnt * sizeof(unsigned char));
+               memcpy(tmp->trans, tz->trans, tz->bit32.timecnt * sizeof(int32_t));
+               memcpy(tmp->trans_idx, tz->trans_idx, tz->bit32.timecnt * sizeof(unsigned char));
+       }
+
+       tmp->type = (ttinfo*) timelib_malloc(tz->bit32.typecnt * sizeof(struct ttinfo));
+       memcpy(tmp->type, tz->type, tz->bit32.typecnt * sizeof(struct ttinfo));
+
+       tmp->timezone_abbr = (char*) timelib_malloc(tz->bit32.charcnt);
+       memcpy(tmp->timezone_abbr, tz->timezone_abbr, tz->bit32.charcnt);
+
+       if (tz->bit32.leapcnt) {
+               tmp->leap_times = (tlinfo*) timelib_malloc(tz->bit32.leapcnt * sizeof(tlinfo));
+               memcpy(tmp->leap_times, tz->leap_times, tz->bit32.leapcnt * sizeof(tlinfo));
+       }
+
+       return tmp;
+}
+
 static ttinfo* fetch_timezone_offset(timelib_tzinfo *tz, timelib_sll ts, timelib_sll *transition_time)
 {
        uint32_t i;
@@ -483,18 +650,18 @@ timelib_time_offset *timelib_get_time_zone_info(timelib_sll ts, timelib_tzinfo *
        int32_t offset = 0, leap_secs = 0;
        char *abbr;
        timelib_time_offset *tmp = timelib_time_offset_ctor();
-       timelib_sll                transistion_time;
+       timelib_sll                transition_time;
 
-       if ((to = fetch_timezone_offset(tz, ts, &transistion_time))) {
+       if ((to = fetch_timezone_offset(tz, ts, &transition_time))) {
                offset = to->offset;
                abbr = &(tz->timezone_abbr[to->abbr_idx]);
                tmp->is_dst = to->isdst;
-               tmp->transistion_time = transistion_time;
+               tmp->transition_time = transition_time;
        } else {
                offset = 0;
                abbr = tz->timezone_abbr;
                tmp->is_dst = 0;
-               tmp->transistion_time = 0;
+               tmp->transition_time = 0;
        }
 
        if ((tl = fetch_leaptime_offset(tz, ts))) {
@@ -516,7 +683,7 @@ timelib_sll timelib_get_current_offset(timelib_time *t)
        switch (t->zone_type) {
                case TIMELIB_ZONETYPE_ABBR:
                case TIMELIB_ZONETYPE_OFFSET:
-                       return (t->z + t->dst) * -60;
+                       return t->z + (t->dst * 3600);
 
                case TIMELIB_ZONETYPE_ID:
                        gmt_offset = timelib_get_time_zone_info(t->sse, t->tz_info);
index 84dba3d96964579f9e90f767fa311b932bf1e4ae..ee52de77cbeaf478819cb5f81521bb60ae6672bd 100644 (file)
  */
 
 #include "timelib.h"
+#include "timelib_private.h"
 #include <ctype.h>
 #include <math.h>
 
-#define TIMELIB_TIME_FREE(m)   \
-       if (m) {                \
-               timelib_free(m);        \
-               m = NULL;       \
-       }                       \
-
 #define TIMELIB_LLABS(y) (y < 0 ? (y * -1) : y)
 
-#define HOUR(a) (int)(a * 60)
+const char *timelib_error_messages[8] = {
+       "No error",
+       "Can not allocate buffer for parsing",
+       "Corrupt tzfile: The transitions in the file don't always increase",
+       "Corrupt tzfile: The expected 64-bit preamble is missing",
+       "Corrupt tzfile: No abbreviation could be found for a transition",
+       "The version used in this timezone identifier is unsupported",
+       "No timezone with this name could be found",
+};
+
+const char *timelib_get_error_message(int error_code)
+{
+       int entries = sizeof(timelib_error_messages) / sizeof(char*);
+
+       if (error_code >= 0 && error_code < entries) {
+               return timelib_error_messages[error_code];
+       }
+       return "Unknown error code";
+}
 
 timelib_time* timelib_time_ctor(void)
 {
@@ -44,12 +57,23 @@ timelib_time* timelib_time_ctor(void)
        return t;
 }
 
-timelib_rel_time* timelib_rel_time_ctor(void)
+void timelib_time_dtor(timelib_time* t)
 {
-       timelib_rel_time *t;
-       t = timelib_calloc(1, sizeof(timelib_rel_time));
+       TIMELIB_TIME_FREE(t->tz_abbr);
+       TIMELIB_TIME_FREE(t);
+}
 
-       return t;
+int timelib_time_compare(timelib_time *t1, timelib_time *t2)
+{
+       if (t1->sse == t2->sse) {
+               if (t1->us == t2->us) {
+                       return 0;
+               }
+
+               return (t1->us < t2->us) ? -1 : 1;
+       }
+
+       return (t1->sse < t2->sse) ? -1 : 1;
 }
 
 timelib_time* timelib_time_clone(timelib_time *orig)
@@ -65,21 +89,17 @@ timelib_time* timelib_time_clone(timelib_time *orig)
        return tmp;
 }
 
-int timelib_time_compare(timelib_time *t1, timelib_time *t2)
+timelib_rel_time* timelib_rel_time_ctor(void)
 {
-       if (t1->sse == t2->sse) {
-               if (t1->f == t2->f) {
-                       return 0;
-               }
+       timelib_rel_time *t;
+       t = timelib_calloc(1, sizeof(timelib_rel_time));
 
-               if (t1->sse < 0) {
-                       return (t1->f < t2->f) ? 1 : -1;
-               } else {
-                       return (t1->f < t2->f) ? -1 : 1;
-               }
-       }
+       return t;
+}
 
-       return (t1->sse < t2->sse) ? -1 : 1;
+void timelib_rel_time_dtor(timelib_rel_time* t)
+{
+       TIMELIB_TIME_FREE(t);
 }
 
 timelib_rel_time* timelib_rel_time_clone(timelib_rel_time *rel)
@@ -101,17 +121,6 @@ void timelib_time_tz_abbr_update(timelib_time* tm, char* tz_abbr)
        }
 }
 
-void timelib_time_dtor(timelib_time* t)
-{
-       TIMELIB_TIME_FREE(t->tz_abbr);
-       TIMELIB_TIME_FREE(t);
-}
-
-void timelib_rel_time_dtor(timelib_rel_time* t)
-{
-       TIMELIB_TIME_FREE(t);
-}
-
 timelib_time_offset* timelib_time_offset_ctor(void)
 {
        timelib_time_offset *t;
@@ -126,55 +135,6 @@ void timelib_time_offset_dtor(timelib_time_offset* t)
        TIMELIB_TIME_FREE(t);
 }
 
-timelib_tzinfo* timelib_tzinfo_ctor(char *name)
-{
-       timelib_tzinfo *t;
-       t = timelib_calloc(1, sizeof(timelib_tzinfo));
-       t->name = timelib_strdup(name);
-
-       return t;
-}
-
-timelib_tzinfo *timelib_tzinfo_clone(timelib_tzinfo *tz)
-{
-       timelib_tzinfo *tmp = timelib_tzinfo_ctor(tz->name);
-       tmp->bit32.ttisgmtcnt = tz->bit32.ttisgmtcnt;
-       tmp->bit32.ttisstdcnt = tz->bit32.ttisstdcnt;
-       tmp->bit32.leapcnt = tz->bit32.leapcnt;
-       tmp->bit32.timecnt = tz->bit32.timecnt;
-       tmp->bit32.typecnt = tz->bit32.typecnt;
-       tmp->bit32.charcnt = tz->bit32.charcnt;
-
-       tmp->trans = (int32_t *) timelib_malloc(tz->bit32.timecnt * sizeof(int32_t));
-       tmp->trans_idx = (unsigned char*) timelib_malloc(tz->bit32.timecnt * sizeof(unsigned char));
-       memcpy(tmp->trans, tz->trans, tz->bit32.timecnt * sizeof(int32_t));
-       memcpy(tmp->trans_idx, tz->trans_idx, tz->bit32.timecnt * sizeof(unsigned char));
-
-       tmp->type = (ttinfo*) timelib_malloc(tz->bit32.typecnt * sizeof(struct ttinfo));
-       memcpy(tmp->type, tz->type, tz->bit32.typecnt * sizeof(struct ttinfo));
-
-       tmp->timezone_abbr = (char*) timelib_malloc(tz->bit32.charcnt);
-       memcpy(tmp->timezone_abbr, tz->timezone_abbr, tz->bit32.charcnt);
-
-       tmp->leap_times = (tlinfo*) timelib_malloc(tz->bit32.leapcnt * sizeof(tlinfo));
-       memcpy(tmp->leap_times, tz->leap_times, tz->bit32.leapcnt * sizeof(tlinfo));
-
-       return tmp;
-}
-
-void timelib_tzinfo_dtor(timelib_tzinfo *tz)
-{
-       TIMELIB_TIME_FREE(tz->name);
-       TIMELIB_TIME_FREE(tz->trans);
-       TIMELIB_TIME_FREE(tz->trans_idx);
-       TIMELIB_TIME_FREE(tz->type);
-       TIMELIB_TIME_FREE(tz->timezone_abbr);
-       TIMELIB_TIME_FREE(tz->leap_times);
-       TIMELIB_TIME_FREE(tz->location.comments);
-       TIMELIB_TIME_FREE(tz);
-       tz = NULL;
-}
-
 char *timelib_get_tz_abbr_ptr(timelib_time *t)
 {
        if (!t->sse_uptodate) {
@@ -218,9 +178,24 @@ timelib_long timelib_date_to_int(timelib_time *d, int *error)
 
 void timelib_decimal_hour_to_hms(double h, int *hour, int *min, int *sec)
 {
-       *hour = floor(h);
-       *min =  floor((h - *hour) * 60);
-       *sec =  (h - *hour - ((float) *min / 60)) * 3600;
+       if (h > 0) {
+               *hour = floor(h);
+               *min = floor((h - *hour) * 60);
+               *sec = (h - *hour - ((float) *min / 60)) * 3600;
+       } else {
+               *hour = ceil(h);
+               *min = 0 - ceil((h - *hour) * 60);
+               *sec = 0 - (h - *hour - ((float) *min / -60)) * 3600;
+       }
+}
+
+void timelib_hms_to_decimal_hour(int hour, int min, int sec, double *h)
+{
+       if (hour > 0) {
+               *h = ((double)hour + (double)min / 60 + (double)sec / 3600);
+       } else {
+               *h = ((double)hour - (double)min / 60 - (double)sec / 3600);
+       }
 }
 
 void timelib_dump_date(timelib_time *d, int options)
@@ -230,8 +205,8 @@ void timelib_dump_date(timelib_time *d, int options)
        }
        printf("TS: %lld | %s%04lld-%02lld-%02lld %02lld:%02lld:%02lld",
                d->sse, d->y < 0 ? "-" : "", TIMELIB_LLABS(d->y), d->m, d->d, d->h, d->i, d->s);
-       if (d->f > +0.0) {
-               printf(" %.6f", d->f);
+       if (d->us > 0) {
+               printf(" 0.%06lld", d->us);
        }
 
        if (d->is_localtime) {
@@ -260,8 +235,8 @@ void timelib_dump_date(timelib_time *d, int options)
                if (d->have_relative) {
                        printf("%3lldY %3lldM %3lldD / %3lldH %3lldM %3lldS",
                                d->relative.y, d->relative.m, d->relative.d, d->relative.h, d->relative.i, d->relative.s);
-                       if (d->relative.f) {
-                               printf(" %6f", d->relative.f);
+                       if (d->relative.us) {
+                               printf(" 0.%06lld", d->relative.us);
                        }
                        if (d->relative.first_last_day_of != 0) {
                                switch (d->relative.first_last_day_of) {
@@ -310,36 +285,3 @@ void timelib_dump_rel_time(timelib_rel_time *d)
        }
        printf("\n");
 }
-
-timelib_long timelib_parse_tz_cor(char **ptr)
-{
-       char *begin = *ptr, *end;
-       timelib_long  tmp;
-
-       while (isdigit(**ptr) || **ptr == ':') {
-               ++*ptr;
-       }
-       end = *ptr;
-       switch (end - begin) {
-               case 1: /* H */
-               case 2: /* HH */
-                       return HOUR(strtol(begin, NULL, 10));
-                       break;
-               case 3: /* H:M */
-               case 4: /* H:MM, HH:M, HHMM */
-                       if (begin[1] == ':') {
-                               tmp = HOUR(strtol(begin, NULL, 10)) + strtol(begin + 2, NULL, 10);
-                               return tmp;
-                       } else if (begin[2] == ':') {
-                               tmp = HOUR(strtol(begin, NULL, 10)) + strtol(begin + 3, NULL, 10);
-                               return tmp;
-                       } else {
-                               tmp = strtol(begin, NULL, 10);
-                               return HOUR(tmp / 100) + tmp % 100;
-                       }
-               case 5: /* HH:MM */
-                       tmp = HOUR(strtol(begin, NULL, 10)) + strtol(begin + 3, NULL, 10);
-                       return tmp;
-       }
-       return 0;
-}
index e58a92a5e623fdef6dd6d01391051a132d44c506..a3450f4f9a61462ce635863a8ed2f65573f95e5a 100644 (file)
 #ifndef __TIMELIB_H__
 #define __TIMELIB_H__
 
-#include "timelib_structs.h"
-#if HAVE_LIMITS_H
+#ifdef HAVE_TIMELIB_CONFIG_H
+# include "timelib_config.h"
+#endif
+
+#include <stdlib.h>
 #include <limits.h>
+#include <inttypes.h>
+
+# ifndef HAVE_INT32_T
+#  if SIZEOF_INT == 4
+typedef int int32_t;
+#  elif SIZEOF_LONG == 4
+typedef long int int32_t;
+#  endif
+# endif
+
+# ifndef HAVE_UINT32_T
+#  if SIZEOF_INT == 4
+typedef unsigned int uint32_t;
+#  elif SIZEOF_LONG == 4
+typedef unsigned long int uint32_t;
+#  endif
+# endif
+
+#ifdef _WIN32
+# if _MSC_VER >= 1600
+# include <stdint.h>
+# endif
+# ifndef SIZEOF_INT
+#  define SIZEOF_INT 4
+# endif
+# ifndef SIZEOF_LONG
+#  define SIZEOF_LONG 4
+# endif
+# ifndef int32_t
+typedef __int32           int32_t;
+# endif
+# ifndef uint32_t
+typedef unsigned __int32  uint32_t;
+# endif
+# ifndef int64_t
+typedef __int64           int64_t;
+# endif
+# ifndef uint64_t
+typedef unsigned __int64  uint64_t;
+# endif
+# ifndef PRId32
+#  define PRId32       "I32d"
+# endif
+# ifndef PRIu32
+#  define PRIu32       "I32u"
+# endif
+# ifndef PRId64
+#  define PRId64       "I64d"
+# endif
+# ifndef PRIu64
+#  define PRIu64       "I64u"
+# endif
+# ifndef INT32_MAX
+#define INT32_MAX    _I32_MAX
+# endif
+# ifndef INT32_MIN
+#define INT32_MIN    ((int32_t)_I32_MIN)
+# endif
+# ifndef UINT32_MAX
+#define UINT32_MAX   _UI32_MAX
+# endif
+# ifndef INT64_MIN
+#define INT64_MIN    ((int64_t)_I64_MIN)
+# endif
+# ifndef INT64_MAX
+#define INT64_MAX    _I64_MAX
+# endif
+# ifndef UINT64_MAX
+#define UINT64_MAX   _UI64_MAX
+# endif
+#endif
+
+#if (defined(__x86_64__) || defined(__LP64__) || defined(_LP64) || defined(_WIN64)) && !defined(TIMELIB_FORCE_LONG32)
+typedef int64_t timelib_long;
+typedef uint64_t timelib_ulong;
+# define TIMELIB_LONG_MAX INT64_MAX
+# define TIMELIB_LONG_MIN INT64_MIN
+# define TIMELIB_ULONG_MAX UINT64_MAX
+# define TIMELIB_LONG_FMT "%" PRId64
+# define TIMELIB_ULONG_FMT "%" PRIu64
+#else
+typedef int32_t timelib_long;
+typedef uint32_t timelib_ulong;
+# define TIMELIB_LONG_MAX INT32_MAX
+# define TIMELIB_LONG_MIN INT32_MIN
+# define TIMELIB_ULONG_MAX UINT32_MAX
+# define TIMELIB_LONG_FMT "%" PRId32
+# define TIMELIB_ULONG_FMT "%" PRIu32
 #endif
 
+#if defined(_MSC_VER)
+typedef uint64_t timelib_ull;
+typedef int64_t timelib_sll;
+# define TIMELIB_LL_CONST(n) n ## i64
+#else
+typedef unsigned long long timelib_ull;
+typedef signed long long timelib_sll;
+# define TIMELIB_LL_CONST(n) n ## ll
+#endif
+
+typedef struct ttinfo ttinfo;
+typedef struct tlinfo tlinfo;
+
+typedef struct tlocinfo
+{
+       char country_code[3];
+       double latitude;
+       double longitude;
+       char *comments;
+} tlocinfo;
+
+typedef struct timelib_tzinfo
+{
+       char    *name;
+       struct {
+               uint32_t ttisgmtcnt;
+               uint32_t ttisstdcnt;
+               uint32_t leapcnt;
+               uint32_t timecnt;
+               uint32_t typecnt;
+               uint32_t charcnt;
+       } bit32;
+       struct {
+               uint64_t ttisgmtcnt;
+               uint64_t ttisstdcnt;
+               uint64_t leapcnt;
+               uint64_t timecnt;
+               uint64_t typecnt;
+               uint64_t charcnt;
+       } bit64;
+
+       int32_t *trans;
+       unsigned char *trans_idx;
+
+       ttinfo  *type;
+       char    *timezone_abbr;
+
+       tlinfo  *leap_times;
+       unsigned char bc;
+       tlocinfo location;
+} timelib_tzinfo;
+
+typedef struct timelib_rel_time {
+       timelib_sll y, m, d; /* Years, Months and Days */
+       timelib_sll h, i, s; /* Hours, mInutes and Seconds */
+       timelib_sll us;      /* Microseconds */
+
+       int weekday; /* Stores the day in 'next monday' */
+       int weekday_behavior; /* 0: the current day should *not* be counted when advancing forwards; 1: the current day *should* be counted */
+
+       int first_last_day_of;
+       int invert; /* Whether the difference should be inverted */
+       timelib_sll days; /* Contains the number of *days*, instead of Y-M-D differences */
+
+       struct {
+               unsigned int type;
+               timelib_sll amount;
+       } special;
+
+       unsigned int   have_weekday_relative, have_special_relative;
+} timelib_rel_time;
+
+typedef struct timelib_time_offset {
+       int32_t      offset;
+       unsigned int leap_secs;
+       unsigned int is_dst;
+       char        *abbr;
+       timelib_sll  transition_time;
+} timelib_time_offset;
+
+typedef struct timelib_time {
+       timelib_sll      y, m, d;     /* Year, Month, Day */
+       timelib_sll      h, i, s;     /* Hour, mInute, Second */
+       timelib_sll      us;          /* Microseconds */
+       int              z;           /* UTC offset in seconds */
+       char            *tz_abbr;     /* Timezone abbreviation (display only) */
+       timelib_tzinfo  *tz_info;     /* Timezone structure */
+       signed int       dst;         /* Flag if we were parsing a DST zone */
+       timelib_rel_time relative;
+
+       timelib_sll      sse;         /* Seconds since epoch */
+
+       unsigned int   have_time, have_date, have_zone, have_relative, have_weeknr_day;
+
+       unsigned int   sse_uptodate; /* !0 if the sse member is up to date with the date/time members */
+       unsigned int   tim_uptodate; /* !0 if the date/time members are up to date with the sse member */
+       unsigned int   is_localtime; /*  1 if the current struct represents localtime, 0 if it is in GMT */
+       unsigned int   zone_type;    /*  1 time offset,
+                                     *  3 TimeZone identifier,
+                                     *  2 TimeZone abbreviation */
+} timelib_time;
+
+typedef struct timelib_abbr_info {
+       timelib_sll  utc_offset;
+       char        *abbr;
+       int          dst;
+} timelib_abbr_info;
+
+#define TIMELIB_WARN_MASK                      0x1ff
+#define TIMELIB_ERR_MASK                       0x2ff
+
+#define TIMELIB_WARN_DOUBLE_TZ                 0x101
+#define TIMELIB_WARN_INVALID_TIME              0x102
+#define TIMELIB_WARN_INVALID_DATE              0x103
+#define TIMELIB_WARN_TRAILING_DATA             0x11a
+
+#define TIMELIB_ERR_DOUBLE_TZ                  0x201
+#define TIMELIB_ERR_TZID_NOT_FOUND             0x202
+#define TIMELIB_ERR_DOUBLE_TIME                0x203
+#define TIMELIB_ERR_DOUBLE_DATE                0x204
+#define TIMELIB_ERR_UNEXPECTED_CHARACTER       0x205
+#define TIMELIB_ERR_EMPTY_STRING               0x206
+#define TIMELIB_ERR_UNEXPECTED_DATA            0x207
+#define TIMELIB_ERR_NO_TEXTUAL_DAY             0x208
+#define TIMELIB_ERR_NO_TWO_DIGIT_DAY           0x209
+#define TIMELIB_ERR_NO_THREE_DIGIT_DAY_OF_YEAR 0x20a
+#define TIMELIB_ERR_NO_TWO_DIGIT_MONTH         0x20b
+#define TIMELIB_ERR_NO_TEXTUAL_MONTH           0x20c
+#define TIMELIB_ERR_NO_TWO_DIGIT_YEAR          0x20d
+#define TIMELIB_ERR_NO_FOUR_DIGIT_YEAR         0x20e
+#define TIMELIB_ERR_NO_TWO_DIGIT_HOUR          0x20f
+#define TIMELIB_ERR_HOUR_LARGER_THAN_12        0x210
+#define TIMELIB_ERR_MERIDIAN_BEFORE_HOUR       0x211
+#define TIMELIB_ERR_NO_MERIDIAN                0x212
+#define TIMELIB_ERR_NO_TWO_DIGIT_MINUTE        0x213
+#define TIMELIB_ERR_NO_TWO_DIGIT_SECOND        0x214
+#define TIMELIB_ERR_NO_SIX_DIGIT_MICROSECOND   0x215
+#define TIMELIB_ERR_NO_SEP_SYMBOL              0x216
+#define TIMELIB_ERR_EXPECTED_ESCAPE_CHAR       0x217
+#define TIMELIB_ERR_NO_ESCAPED_CHAR            0x218
+#define TIMELIB_ERR_WRONG_FORMAT_SEP           0x219
+#define TIMELIB_ERR_TRAILING_DATA              0x21a
+#define TIMELIB_ERR_DATA_MISSING               0x21b
+
+#define TIMELIB_ZONETYPE_OFFSET 1
+#define TIMELIB_ZONETYPE_ABBR   2
+#define TIMELIB_ZONETYPE_ID     3
+
+typedef struct timelib_error_message {
+       int         error_code;
+       int         position;
+       char        character;
+       char       *message;
+} timelib_error_message;
+
+typedef struct timelib_error_container {
+       struct timelib_error_message *error_messages;
+       struct timelib_error_message *warning_messages;
+       int                           error_count;
+       int                           warning_count;
+} timelib_error_container;
+
+typedef struct _timelib_tz_lookup_table {
+       char       *name;
+       int         type;
+       float       gmtoffset;
+       char       *full_tz_name;
+} timelib_tz_lookup_table;
+
+typedef struct _timelib_tzdb_index_entry {
+       char *id;
+       unsigned int pos;
+} timelib_tzdb_index_entry;
+
+typedef struct _timelib_tzdb {
+       char                           *version;
+       int                             index_size;
+       const timelib_tzdb_index_entry *index;
+       const unsigned char            *data;
+} timelib_tzdb;
+
 #ifndef timelib_malloc
 # define timelib_malloc  malloc
 # define timelib_realloc realloc
 # define timelib_free    free
 #endif
 
-#define TIMELIB_VERSION 201605
-#define TIMELIB_ASCII_VERSION "2016.05"
+#define TIMELIB_VERSION 201705
+#define TIMELIB_ASCII_VERSION "2017.05beta7"
 
 #define TIMELIB_NONE             0x00
 #define TIMELIB_OVERRIDE_TIME    0x01
 
 #define TIMELIB_UNSET   -99999
 
-#define TIMELIB_SPECIAL_WEEKDAY                   0x01
-#define TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH      0x02
-#define TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH 0x03
-
-#define TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH        0x01
-#define TIMELIB_SPECIAL_LAST_DAY_OF_MONTH         0x02
-
-#ifndef LONG_MAX
-#define LONG_MAX 2147483647L
-#endif
+/* An entry for each of these error codes is also in the
+ * timelib_error_messages array in timelib.c */
+#define TIMELIB_ERROR_NO_ERROR                            0x00
+#define TIMELIB_ERROR_CANNOT_ALLOCATE                     0x01
+#define TIMELIB_ERROR_CORRUPT_TRANSITIONS_DONT_INCREASE   0x02
+#define TIMELIB_ERROR_CORRUPT_NO_64BIT_PREAMBLE           0x03
+#define TIMELIB_ERROR_CORRUPT_NO_ABBREVIATION             0x04
+#define TIMELIB_ERROR_UNSUPPORTED_VERSION                 0x05
+#define TIMELIB_ERROR_NO_SUCH_TIMEZONE                    0x06
 
-#ifndef LONG_MIN
-#define LONG_MIN (- LONG_MAX - 1)
-#endif
-
-#if defined(_MSC_VER) && !defined(strcasecmp)
-#define strcasecmp stricmp
-#endif
-
-#if defined(_MSC_VER) && !defined(strncasecmp)
-#define strncasecmp strnicmp
+#ifdef __cplusplus
+extern "C" {
 #endif
 
 /* Function pointers */
-typedef timelib_tzinfo* (*timelib_tz_get_wrapper)(char *tzname, const timelib_tzdb *tzdb);
+typedef timelib_tzinfo* (*timelib_tz_get_wrapper)(char *tzname, const timelib_tzdb *tzdb, int *error_code);
 
 /* From dow.c */
+/* Calculates the day of the week from y, m, and d. 0=Sunday..6=Saturday */
 timelib_sll timelib_day_of_week(timelib_sll y, timelib_sll m, timelib_sll d);
+
+/* Calculates the day of the ISO week from y, m, and d. 1=Monday, 7=Sunday */
 timelib_sll timelib_iso_day_of_week(timelib_sll y, timelib_sll m, timelib_sll d);
+
+/* Calculates the day of the year according to y-m-d. 0=Jan 1st..364/365=Dec
+ * 31st */
 timelib_sll timelib_day_of_year(timelib_sll y, timelib_sll m, timelib_sll d);
-timelib_sll timelib_daynr_from_weeknr(timelib_sll y, timelib_sll w, timelib_sll d);
+
+/* Calculates the day of the year according to y-w-dow. 0..364/365 */
+timelib_sll timelib_daynr_from_weeknr(timelib_sll iy, timelib_sll iw, timelib_sll id);
+
+/* Calculates the number of days in month m for year y. 28..31 */
 timelib_sll timelib_days_in_month(timelib_sll y, timelib_sll m);
+
+/* Calculates the ISO year and week from y, m, and d, into iw and iy */
 void timelib_isoweek_from_date(timelib_sll y, timelib_sll m, timelib_sll d, timelib_sll *iw, timelib_sll *iy);
+
+/* Calculates the ISO year, week, and day of week from y, m, and d, into iy,
+ * iw, and id */
+void timelib_isodate_from_date(timelib_sll y, timelib_sll m, timelib_sll d, timelib_sll *iy, timelib_sll *iw, timelib_sll *id);
+
+/* Calculates the year, month, and day from iy, iw, and iw, into y, m, and d */
+void timelib_date_from_isodate(timelib_sll iy, timelib_sll iw, timelib_sll id, timelib_sll *y, timelib_sll *m, timelib_sll *d);
+
+/* Returns true if h, i and s fit in the range 00:00:00..23:59:59, false
+ * otherwise */
 int timelib_valid_time(timelib_sll h, timelib_sll i, timelib_sll s);
+
+/* Returns true if m fits in the range 1..12, and d fits in the range
+ * 1..<days-in-month> for year y */
 int timelib_valid_date(timelib_sll y, timelib_sll m, timelib_sll d);
 
 /* From parse_date.re */
+
+/* Parses the date/time string in 's' with length 'len' into the constituent
+ * parts of timelib_time*.
+ *
+ * Depending on the contents of the string 's', not all elements might be
+ * filled. You can check whether a specific element has been parsed by
+ * comparing with the TIMELIB_UNSET define.
+ *
+ * If errors occur, this function keeps already parsed elements in the
+ * returned timelib_time* value.
+ *
+ * If the **errors points to a timelib_error_container variable, warnings
+ * and errors will be recorded. You are responsible for freeing the stored
+ * information with timelib_error_container_dtor(). To see whether errors have
+ * occured, inspect errors->errors_count. To see whether warnings have occured,
+ * inspect errors->warnings_count.
+ *
+ * The returned timelib_time* value is dynamically allocated and should be
+ * freed with timelib_time_dtor().
+ */
 timelib_time *timelib_strtotime(char *s, size_t len, timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper);
+
+/* Parses the date/time string in 's' with length 'len' into the constituent
+ * parts of timelib_time* according to the format in 'format'.
+ *
+ * Depending on the contents of the string 's', not all elements might be
+ * filled. You can check whether a specific element has been parsed by
+ * comparing with the TIMELIB_UNSET define.
+ *
+ * If errors occur, this function keeps already parsed elements in the
+ * returned timelib_time* value.
+ *
+ * If the **errors points to a timelib_error_container variable, warnings
+ * and errors will be recorded. You are responsible for freeing the stored
+ * information with timelib_error_container_dtor(). To see whether errors have
+ * occured, inspect errors->errors_count. To see whether warnings have occured,
+ * inspect errors->warnings_count.
+ *
+ * The returned timelib_time* value is dynamically allocated and should be
+ * freed with timelib_time_dtor().
+ */
 timelib_time *timelib_parse_from_format(char *format, char *s, size_t len, timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper);
+
+/* Fills the gaps in the parsed timelib_time with information from the reference date/time in 'now'
+ *
+ * If any of the 'parsed' y, m, d, h, i or s parameters is unset (TIMELIB_UNSET):
+ * - if microtime (us) is unset, then the us of the parsed time is set to 0.
+ * - else if microtime (us) is unset and 'now'->'us' is set, use it, otherwise use 0.
+ *
+ * For either of the 'parsed' y, m, d, h, i, s, z (utc offset in seconds) or
+ * dst is unset, set it to the corresponding value in 'now' if set, otherwise
+ * set it to 0.
+ *
+ * It duplicates tz_abbr if unset in 'parsed' but set in 'now'.
+ *
+ * It duplicates tz_info if unset in 'parsed', but set in 'now' unless
+ * TIMELIB_NO_CLONE is passed, in which case only the pointer in 'parsed' is
+ * set to 'now'.
+ *
+ * If the option TIMELIB_OVERRIDE_TIME is passed and the parsed date/time has
+ * no time portion, the function will ignore the time aspect in 'now' and
+ * instead fill it with zeros.
+ */
 void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options);
+
+/* Tries to convert a time zone abbreviation, gmtoffset and/or isdst flag
+ * combination to a time zone identifier.
+ *
+ * If 'abbr' is either 'utc' or 'gmt' (case insensitve) then "UTC" is
+ * returned.
+ *
+ * It first uses the data in the timezonemap.h file to find a matching
+ * abbreviation/GMT offset combination. If not found, it uses the data in
+ * fallbackmap.h to match only the GMT offset/isdst flag to try to find a
+ * match. If nothing is found, NULL is returned.
+ *
+ * The returned char* is not duplicated, and should not be freed.
+ */
 char *timelib_timezone_id_from_abbr(const char *abbr, timelib_long gmtoffset, int isdst);
+
+/* Returns an array of known time zone abbreviations
+ *
+ * This file is generated from the time zone database through the
+ * gettzmapping.php scripts, which requires that an up-to-date time zone
+ * database is used with the PHP binary that runs the script.
+ *
+ * Each item in the returned list contains the abbreviation, a flag whether
+ * it's an abbreviation used with DST, the UTC offset in seconds, and the name
+ * of the time zone identifier that this abbreviation belongs to.
+ *
+ * The order for each specific abbreviation is controlled through the
+ * preference list in the gettzmapping.php script. Time zones that match the
+ * pattern Â±\d{2,4} are excluded
+ */
 const timelib_tz_lookup_table *timelib_timezone_abbreviations_list(void);
-timelib_long timelib_parse_tz_cor(char**);
+
+/**
+ * DEPRECATED, but still used by PHP.
+ */
+timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_wrapper);
 
 /* From parse_iso_intervals.re */
+
+/**
+ * Parses a subset of an ISO 8601 intervals specification string into its
+ * constituent parts.
+ *
+ * If the **errors points to a timelib_error_container variable, warnings
+ * and errors will be recorded. You are responsible for freeing the stored
+ * information with timelib_error_container_dtor(). To see whether errors have
+ * occured, inspect errors->errors_count. To see whether warnings have occured,
+ * inspect errors->warnings_count.
+ */
 void timelib_strtointerval(char *s, size_t len,
                            timelib_time **begin, timelib_time **end,
                                                   timelib_rel_time **period, int *recurrences,
@@ -99,67 +492,395 @@ void timelib_strtointerval(char *s, size_t len,
 
 
 /* From tm2unixtime.c */
+
+/**
+ * Uses the y/m/d/h/i/s fields to calculate and store the equivalent timestamp
+ * in the sse field.
+ *
+ * It uses the time zone information associated with 'time' to account for the
+ * right UTC offset and/or DST rules. You can associate time zone information
+ * with the timelib_set_timezone_* functions (see below).
+ *
+ * If the type is 'TIMELIB_ZONETYPE_ID' and there is no associated tzinfo, it
+ * will use the second argument 'tzi' to provide the rules necessary to
+ * calculate the right timestamp.
+ */
 void timelib_update_ts(timelib_time* time, timelib_tzinfo* tzi);
+
+/**
+ * Takes the information from the y/m/d/h/i/s fields and makes sure their
+ * values are in the right range.
+ *
+ * If a value under- or overflows it will adjust the larger measure up (or
+ * down). It also takes into account leap days.
+ */
 void timelib_do_normalize(timelib_time *base);
+
+/**
+ * Takes the information from the y/m/d/h/i/s fields of 'rt' and makes sure
+ * their values are in the right range.
+ *
+ * If a value under- or overflows it will adjust the larger measure up (or
+ * down). As this function operates on a *relative date/time*, it also takes
+ * into account leap days and correctly accounts for the difference depending
+ * on the base date/time in 'base'.
+ */
 void timelib_do_rel_normalize(timelib_time *base, timelib_rel_time *rt);
 
 /* From unixtime2tm.c */
-int timelib_apply_localtime(timelib_time *t, unsigned int localtime);
+
+/**
+ * Takes the unix timestamp in seconds from 'ts' and populates the y/m/d/h/i/s
+ * fields of 'tm' without taking time zones into account
+ */
 void timelib_unixtime2gmt(timelib_time* tm, timelib_sll ts);
+
+/**
+ * Takes the Unix timestamp from 'ts', and calculates the y/m/d/h/i/s fields
+ * according to the time zone information attached to 'tm'.
+ */
 void timelib_unixtime2local(timelib_time *tm, timelib_sll ts);
+
+/**
+ * Takes the Unix timestamp stored in 'tm', and calculates the y/m/d/h/i/s
+ * fields according to the time zone information attached to 'tm'.
+ */
 void timelib_update_from_sse(timelib_time *tm);
+
+/**
+ * Attaches the UTC offset as time zone information to 't'.
+ *
+ * 'utc_offset' is in seconds East of UTC.
+ */
 void timelib_set_timezone_from_offset(timelib_time *t, timelib_sll utc_offset);
+
+/**
+ * Attaches the information from 'abbr_info' as time zone information to 't'.
+ *
+ * The timelib_abbr_info struct contains an abbreviation ('abbr') which string
+ * value is duplicated, as well as a 'utc_offset' and 'dst' flag. It only
+ * supports a 'dst' change over of 1 hour.
+ */
 void timelib_set_timezone_from_abbr(timelib_time *t, timelib_abbr_info abbr_info);
+
+/**
+ * Attaches the time zone information in 'tz' to to 't'.
+ *
+ * It fetches the right UTC offset that is currently stored in the time
+ * stamp field in 't' ('sse'), and assigns that to the 'z' field and 'dst'
+ * field (whether DST is in effect at the time). It also sets the current
+ * abbrevation to the 'tz_addr' field, making sure that if a value was already
+ * set it was freed.
+ *
+ * The time zone information in 'tz' is *not* duplicated into the 't' field so
+ * it should not be freed until all timelib_time* variables have been freed as
+ * well.
+ */
 void timelib_set_timezone(timelib_time *t, timelib_tzinfo *tz);
 
 /* From parse_tz.c */
+
+/**
+ * Returns whether the time zone ID 'timezone' is available in the time zone
+ * database as pointed to be 'tzdb'.
+ */
 int timelib_timezone_id_is_valid(char *timezone, const timelib_tzdb *tzdb);
-timelib_tzinfo *timelib_parse_tzfile(char *timezone, const timelib_tzdb *tzdb);
+
+/**
+ * Converts the binary stored time zone information from 'tzdb' for the time
+ * zone 'timeozne' into a structure the library can use for calculations.
+ *
+ * The function can be used on both timelib_builtin_db as well as a time zone
+ * db as opened by timelib_zoneinfo.
+ * The function will return null upon failure, and also set an error code
+ * through 'error_code'. 'error_code' must not be a null pointer. The error
+ * code is one of the TIMELIB_ERROR_* constants as listed above. These error
+ * constants can be converted into a string by timelib_get_error_message.
+ *
+ * This function allocates memory for the new time zone structure, which must
+ * be freed after use. Although it is recommended that a cache of each used
+ * time zone is kept.
+ */
+timelib_tzinfo *timelib_parse_tzfile(char *timezone, const timelib_tzdb *tzdb, int *error_code);
+
+/**
+ * Frees up the resources allocated by 'timelib_parse_tzfile'.
+ */
+void timelib_tzinfo_dtor(timelib_tzinfo *tz);
+
+/**
+ * Deep-clones a timelib_tzinfo structure.
+ *
+ * This allocates resources that need to be freed with 'timelib_tzinfo_dtor'
+ */
+timelib_tzinfo* timelib_tzinfo_clone(timelib_tzinfo *tz);
+
+/**
+ * Returns whether DST is active with time zone 'tz' for the time stamp 'ts'.
+ *
+ * Returns 0 if DST is not active, 1 if DST is active, or -1 if no transitions
+ * were available through 'tz'.
+ */
 int timelib_timestamp_is_in_dst(timelib_sll ts, timelib_tzinfo *tz);
+
+/**
+ * Returns offset information with time zone 'tz' for the time stamp 'ts'.
+ *
+ * The returned information contains: the offset in seconds East of UTC (in
+ * 'offset'), whether DST is active ('is_dst'), what the current time zone
+ * abbreviation is ('abbr') and the transition time that got to this state (in
+ * 'transistion_time');
+ */
 timelib_time_offset *timelib_get_time_zone_info(timelib_sll ts, timelib_tzinfo *tz);
+
+/**
+ * Returns the UTC offset currently applicable for the information stored in 't'.
+ *
+ * The value returned is the UTC offset in seconds East.
+ */
 timelib_sll timelib_get_current_offset(timelib_time *t);
+
+/**
+ * Displays debugging information about the time zone information in 'tz'.
+ */
 void timelib_dump_tzinfo(timelib_tzinfo *tz);
+
+/**
+ * Returns a pointer to the built-in time zone database.
+ *
+ * You must *not* free the returned pointer as it is part of the text segment.
+ */
 const timelib_tzdb *timelib_builtin_db(void);
-const timelib_tzdb_index_entry *timelib_timezone_builtin_identifiers_list(int *count);
-timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_wrapper);
+
+/**
+ * Returns a pointer to the start of an array containing a list of timezone identifiers.
+ *
+ * The amount of entries in the array is returned through the 'count' OUT parameter.
+ *
+ * Each entry contains the time zone ID ('id' field), and the position within the time zone
+ * information ('pos' field). The pos field should not be used.
+ */
+const timelib_tzdb_index_entry *timelib_timezone_identifiers_list(timelib_tzdb *tzdb, int *count);
+
+/* From parse_zoneinfo.c */
+
+/**
+ * Scans the directory and subdirectories of 'directory' for valid time zone files and builds
+ * a time zone database out of these files.
+ *
+ * Typically, the directory should point to '/usr/share/zoneinfo'.
+ *
+ * Unlike 'timelib_builtin_db', the return value of this function must be freed
+ * with the 'timelib_zoneinfo_dtor' function.
+ */
+timelib_tzdb *timelib_zoneinfo(char *directory);
+
+/**
+ * Frees up the resources as created through 'timelib_zoneinfo'.
+ *
+ * This function must be used to free up all the resources that have been
+ * allocated while calling 'timelib_zoneinfo'.
+ */
+void timelib_zoneinfo_dtor(timelib_tzdb *tzdb);
 
 /* From timelib.c */
-timelib_tzinfo* timelib_tzinfo_ctor(char *name);
-void timelib_time_tz_abbr_update(timelib_time* tm, char* tz_abbr);
-void timelib_time_tz_name_update(timelib_time* tm, char* tz_name);
-void timelib_tzinfo_dtor(timelib_tzinfo *tz);
-timelib_tzinfo* timelib_tzinfo_clone(timelib_tzinfo *tz);
 
+/**
+ * Returns a static string containing an error message belonging to a specific
+ * error code.
+ */
+const char *timelib_get_error_message(int error_code);
+
+/**
+ * Allocates resources for the relative time structure.
+ *
+ * Must be freed with 'timelib_rel_time_dtor'.
+ */
 timelib_rel_time* timelib_rel_time_ctor(void);
+
+/**
+ * Frees up the resources as allocated through 'timelib_rel_time_ctor'.
+ */
 void timelib_rel_time_dtor(timelib_rel_time* t);
+
+/**
+ * Creates a new timelib_rel_time resource and copies over the information
+ * from 'tz'.
+ *
+ * Must be freed with 'timelib_rel_time_dtor'.
+ */
 timelib_rel_time* timelib_rel_time_clone(timelib_rel_time *tz);
 
+/**
+ * Allocates resources for the time structure.
+ *
+ * Must be freed with 'timelib_time_dtor'.
+ */
 timelib_time* timelib_time_ctor(void);
-void timelib_time_set_option(timelib_time* tm, int option, void* option_value);
+
+/**
+ * Frees up the resources as allocated through 'timelib_time_ctor'.
+ */
 void timelib_time_dtor(timelib_time* t);
+
+/**
+ * Creates a new timelib_time resource and copies over the information
+ * from 'orig'.
+ *
+ * Must be freed with 'timelib_time_dtor'.
+ */
 timelib_time* timelib_time_clone(timelib_time* orig);
+
+/**
+ * Compares two timelib_time structures and returns which one is earlier in
+ * time.
+ *
+ * To decide which comes earlier it uses the 'sse' (Seconds Since Epoch) and
+ * 'us' (microseconds) fields.
+ *
+ * Returns -1 if t1 < t2, 0 if t1 == t2, and -1 if t1 > t2.
+ */
 int timelib_time_compare(timelib_time *t1, timelib_time *t2);
-void timelib_set_fraction_from_timeval(timelib_time *t, struct timeval tp);
 
+/**
+ * Allocates resources for the time offset structure.
+ *
+ * Must be freed with 'timelib_time_offset_dtor'.
+ */
 timelib_time_offset* timelib_time_offset_ctor(void);
+
+/**
+ * Frees up the resources as allocated through 'timelib_time_offset_ctor'.
+ */
 void timelib_time_offset_dtor(timelib_time_offset* t);
 
+/**
+ * Frees up the resources allocated while converting strings to timelib_time
+ * structures with the timelib_strtotime and timelib_strtointerval functions.
+ */
 void timelib_error_container_dtor(timelib_error_container *errors);
 
+/**
+ * Converts the 'sse' value of 'd' to a timelib_long type.
+ *
+ * If the value fits in the TIMELIB_LONG_MIN and TIMELIB_LONG_MAX range, the
+ * value is cast to (timelib_long) and returned. If *error is not a NULL
+ * pointer, it will be set to 0.
+ *
+ * If the value does *not* fit in the range, the function returns 0 and if
+ * *error is not a NULL pointer, it will be set to 1.
+ *
+ * timelib_long is a 32 bit signed long integer on 32 bit platforms, and a 64
+ * bit signed long long integer on 64 bit platforms. In other words, it makes
+ * sure that the value in 'sse' (which is always a signed long long 64 bit
+ * integer) can be used safely outside of the library.
+ */
 timelib_long timelib_date_to_int(timelib_time *d, int *error);
+
+/**
+ * Displays debugging information about the date/time information stored in 'd'.
+ *
+ * 'options' is a bit field, where:
+ * - 1 controls whether the relative time portion is shown.
+ * - 2 controls whether the zone type is shown.
+ */
 void timelib_dump_date(timelib_time *d, int options);
+
+/**
+ * Displays debugging information about the relative time information stored
+ * in 'd'.
+ */
 void timelib_dump_rel_time(timelib_rel_time *d);
 
+/**
+ * Converts a decimal hour into hour/min/sec components
+ */
 void timelib_decimal_hour_to_hms(double h, int *hour, int *min, int *sec);
-timelib_long timelib_parse_tz_cor(char **ptr);
+
+/**
+ * Converts hour/min/sec values into a decimal hour
+ */
+void timelib_hms_to_decimal_hour(int hour, int min, int sec, double *h);
 
 /* from astro.c */
-double timelib_ts_to_juliandate(timelib_sll ts);
+
+/**
+ * Converts the Unix Epoch time stamp 'ts' to a Julian Day
+ *
+ * The value returned is the number of whole days since -4714-11-24T12:00:00 UTC
+ * (in the proleptic Gregorian calendar):
+ * https://en.wikipedia.org/wiki/Julian_day
+ */
+double timelib_ts_to_julianday(timelib_sll ts);
+
+/**
+ * Converts the Unix Epoch time stamp 'ts' to the J2000 epoch
+ *
+ * The value returned is the number of whole days since 2000-01-01T12:00:00
+ * UTC: https://en.wikipedia.org/wiki/Epoch_(astronomy)#Julian_years_and_J2000
+ */
+double timelib_ts_to_j2000(timelib_sll ts);
+
+/**
+ * Calculates when the Sun is above a certain latitude.
+ *
+ * Parameters:
+ * - time: A timelib_time time describing that needs to specific midnight for a
+ *         specific day.
+ * - lon: The longitude of the observer (East positive, West negative).
+ * - lat: The latitude of the observer (North positive, South negative).
+ * - altit: The altitude. Set to -35/60 for rise/set, -6 for civil twilight,
+ *          -12 for nautical, and -18 for astronomical twilight.
+ * - upper_limb: set to non-zero for rise/set calculations, and 0 for twilight
+ *               calculations.
+ *
+ * Out Parameters:
+ * - h_rise: The decimal hour when the Sun rises
+ * - h_set: The decimal hour when the Sun sets
+ * - ts_rise: The Unix timestamp of the Sun rising
+ * - ts_set: The Unix timestamp of the Sun setting
+ * - ts_transit: The Unix timestmap of the Sun transitting through South
+ *
+ * Return Values:
+ * - 0: The Sun rises and sets.
+ * - +1: The Sun is always above the horizon. (ts_rise is set to ts_transit -
+ *       (12 * 3600); ts_set is set to ts_transit + (12 * 3600).
+ * - -1: The Sun is awlays below the horizon. (ts_rise and ts_set are set
+ *       to ts_transit)
+ */
 int timelib_astro_rise_set_altitude(timelib_time *time, double lon, double lat, double altit, int upper_limb, double *h_rise, double *h_set, timelib_sll *ts_rise, timelib_sll *ts_set, timelib_sll *ts_transit);
 
 /* from interval.c */
+
+/**
+ * Calculates the difference between two times
+ *
+ * The result is a timelib_rel_time structure that describes how you can
+ * convert from 'one' to 'two' with 'timelib_add'. This does *not* necessarily
+ * mean that you can go from 'two' to 'one' by using 'timelib_sub' due to the
+ * way months and days are calculated.
+ */
 timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two);
+
+/**
+ * Adds the relative time information 'interval' to the base time 't'.
+ *
+ * This can be a relative time as created by 'timelib_diff', but also by more
+ * complex statements such as "next workday".
+ */
 timelib_time *timelib_add(timelib_time *t, timelib_rel_time *interval);
+
+/**
+ * Subtracts the relative time information 'interval' to the base time 't'.
+ *
+ * This can be a relative time as created by 'timelib_diff'. Unlike with
+ * 'timelib_add', this does not support more complex statements such as "next
+ * workday".
+ */
 timelib_time *timelib_sub(timelib_time *t, timelib_rel_time *interval);
 
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
 #endif
index 99bf9fad20bc44fc6593b2d0e09898b090a6ce72..e112380da052758fb000fffe57bb63fc8b211b2a 100644 (file)
@@ -69,11 +69,14 @@ TL_CHECK_INT_TYPE(uint32_t)
 
 dnl Check for headers needed by timelib
 AC_CHECK_HEADERS([ \
+sys/time.h \
 sys/types.h \
-inttypes.h \
 stdint.h \
+dirent.h \
 string.h \
-stdlib.h
+strings.h \
+unistd.h \
+io.h
 ])
 
 dnl Check for strtoll, atoll
diff --git a/ext/date/lib/timelib_private.h b/ext/date/lib/timelib_private.h
new file mode 100644 (file)
index 0000000..cd402e0
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2015 Derick Rethans
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef __TIMELIB_PRIVATE_H__
+#define __TIMELIB_PRIVATE_H__
+
+#ifdef HAVE_SETLOCALE
+# include "locale.h"
+#endif
+
+#ifdef HAVE_TIMELIB_CONFIG_H
+# include "timelib_config.h"
+#endif
+
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+
+#ifdef _WIN32
+# ifdef HAVE_WINSOCK2_H
+#  include <winsock2.h>
+# endif
+#endif
+
+#ifdef HAVE_STRING_H
+# include <string.h>
+#endif
+
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#endif
+
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#if HAVE_IO_H
+# include <io.h>
+#endif
+
+#if HAVE_DIRENT_H
+# include <dirent.h>
+#endif
+
+#include <stdio.h>
+
+#if HAVE_LIMITS_H
+#include <limits.h>
+#endif
+
+#define TIMELIB_SECOND   1
+#define TIMELIB_MINUTE   2
+#define TIMELIB_HOUR     3
+#define TIMELIB_DAY      4
+#define TIMELIB_MONTH    5
+#define TIMELIB_YEAR     6
+#define TIMELIB_WEEKDAY  7
+#define TIMELIB_SPECIAL  8
+#define TIMELIB_MICROSEC 9
+
+#define TIMELIB_SPECIAL_WEEKDAY                   0x01
+#define TIMELIB_SPECIAL_DAY_OF_WEEK_IN_MONTH      0x02
+#define TIMELIB_SPECIAL_LAST_DAY_OF_WEEK_IN_MONTH 0x03
+
+#define TIMELIB_SPECIAL_FIRST_DAY_OF_MONTH        0x01
+#define TIMELIB_SPECIAL_LAST_DAY_OF_MONTH         0x02
+
+#define SECS_PER_ERA   TIMELIB_LL_CONST(12622780800)
+#define SECS_PER_DAY   86400
+#define DAYS_PER_YEAR    365
+#define DAYS_PER_LYEAR   366
+/* 400*365 days + 97 leap days */
+#define DAYS_PER_LYEAR_PERIOD 146097
+#define YEARS_PER_LYEAR_PERIOD 400
+
+#define TIMELIB_TZINFO_PHP       0x01
+#define TIMELIB_TZINFO_ZONEINFO  0x02
+
+#define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
+
+#define TIMELIB_DEBUG(s)  if (0) { s }
+
+#define TIMELIB_TIME_FREE(m)    \
+       if (m) {        \
+               timelib_free(m);    \
+               m = NULL;   \
+       }
+
+typedef struct ttinfo
+{
+       int32_t      offset;
+       int          isdst;
+       unsigned int abbr_idx;
+
+       unsigned int isstdcnt;
+       unsigned int isgmtcnt;
+} ttinfo;
+
+typedef struct tlinfo
+{
+       int32_t  trans;
+       int32_t  offset;
+} tlinfo;
+
+
+#ifndef LONG_MAX
+#define LONG_MAX 2147483647L
+#endif
+
+#ifndef LONG_MIN
+#define LONG_MIN (- LONG_MAX - 1)
+#endif
+
+#if defined(_MSC_VER) && !defined(strcasecmp)
+#define strcasecmp stricmp
+#endif
+
+#if defined(_MSC_VER) && !defined(strncasecmp)
+#define strncasecmp strnicmp
+#endif
+
+/* From unixtime2tm.c */
+int timelib_apply_localtime(timelib_time *t, unsigned int localtime);
+
+/* From parse_tz.c */
+void timelib_time_tz_abbr_update(timelib_time* tm, char* tz_abbr);
+
+
+#endif
diff --git a/ext/date/lib/timelib_structs.h b/ext/date/lib/timelib_structs.h
deleted file mode 100644 (file)
index 4256dd4..0000000
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2015 Derick Rethans
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifndef __TIMELIB_STRUCTS_H__
-#define __TIMELIB_STRUCTS_H__
-
-#ifdef HAVE_TIMELIB_CONFIG_H
-# include "timelib_config.h"
-#endif
-
-#ifndef TIMELIB_OMIT_STDINT
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-#if defined(HAVE_INTTYPES_H)
-#include <inttypes.h>
-#elif defined(HAVE_STDINT_H)
-#include <stdint.h>
-#endif
-
-# ifndef HAVE_INT32_T
-#  if SIZEOF_INT == 4
-typedef int int32_t;
-#  elif SIZEOF_LONG == 4
-typedef long int int32_t;
-#  endif
-# endif
-
-# ifndef HAVE_UINT32_T
-#  if SIZEOF_INT == 4
-typedef unsigned int uint32_t;
-#  elif SIZEOF_LONG == 4
-typedef unsigned long int uint32_t;
-#  endif
-# endif
-
-#ifdef _WIN32
-# if _MSC_VER >= 1600
-# include <stdint.h>
-# endif
-# ifndef SIZEOF_INT
-#  define SIZEOF_INT 4
-# endif
-# ifndef SIZEOF_LONG
-#  define SIZEOF_LONG 4
-# endif
-# ifndef int32_t
-typedef __int32           int32_t;
-# endif
-# ifndef uint32_t
-typedef unsigned __int32  uint32_t;
-# endif
-# ifndef int64_t
-typedef __int64           int64_t;
-# endif
-# ifndef uint64_t
-typedef unsigned __int64  uint64_t;
-# endif
-# ifndef PRId32
-#  define PRId32       "I32d"
-# endif
-# ifndef PRIu32
-#  define PRIu32       "I32u"
-# endif
-# ifndef PRId64
-#  define PRId64       "I64d"
-# endif
-# ifndef PRIu64
-#  define PRIu64       "I64u"
-# endif
-# ifndef INT32_MAX
-#define INT32_MAX    _I32_MAX
-# endif
-# ifndef INT32_MIN
-#define INT32_MIN    ((int32_t)_I32_MIN)
-# endif
-# ifndef UINT32_MAX
-#define UINT32_MAX   _UI32_MAX
-# endif
-# ifndef INT64_MIN
-#define INT64_MIN    ((int64_t)_I64_MIN)
-# endif
-# ifndef INT64_MAX
-#define INT64_MAX    _I64_MAX
-# endif
-# ifndef UINT64_MAX
-#define UINT64_MAX   _UI64_MAX
-# endif
-#endif
-
-#endif /* TIMELIB_OMIT_STDINT */
-
-#include <stdio.h>
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
-#if (defined(__x86_64__) || defined(__LP64__) || defined(_LP64) || defined(_WIN64)) && !defined(TIMELIB_FORCE_LONG32)
-typedef int64_t timelib_long;
-typedef uint64_t timelib_ulong;
-# define TIMELIB_LONG_MAX INT64_MAX
-# define TIMELIB_LONG_MIN INT64_MIN
-# define TIMELIB_ULONG_MAX UINT64_MAX
-# define TIMELIB_LONG_FMT "%" PRId64
-# define TIMELIB_ULONG_FMT "%" PRIu64
-#else
-typedef int32_t timelib_long;
-typedef uint32_t timelib_ulong;
-# define TIMELIB_LONG_MAX INT32_MAX
-# define TIMELIB_LONG_MIN INT32_MIN
-# define TIMELIB_ULONG_MAX UINT32_MAX
-# define TIMELIB_LONG_FMT "%" PRId32
-# define TIMELIB_ULONG_FMT "%" PRIu32
-#endif
-
-#if defined(_MSC_VER)
-typedef uint64_t timelib_ull;
-typedef int64_t timelib_sll;
-# define TIMELIB_LL_CONST(n) n ## i64
-#else
-typedef unsigned long long timelib_ull;
-typedef signed long long timelib_sll;
-# define TIMELIB_LL_CONST(n) n ## ll
-#endif
-
-typedef struct ttinfo
-{
-       int32_t      offset;
-       int          isdst;
-       unsigned int abbr_idx;
-
-       unsigned int isstdcnt;
-       unsigned int isgmtcnt;
-} ttinfo;
-
-typedef struct tlinfo
-{
-       int32_t  trans;
-       int32_t  offset;
-} tlinfo;
-
-typedef struct tlocinfo
-{
-       char country_code[3];
-       double latitude;
-       double longitude;
-       char *comments;
-} tlocinfo;
-
-typedef struct timelib_tzinfo
-{
-       char    *name;
-       struct {
-               uint32_t ttisgmtcnt;
-               uint32_t ttisstdcnt;
-               uint32_t leapcnt;
-               uint32_t timecnt;
-               uint32_t typecnt;
-               uint32_t charcnt;
-       } bit32;
-       struct {
-               uint64_t ttisgmtcnt;
-               uint64_t ttisstdcnt;
-               uint64_t leapcnt;
-               uint64_t timecnt;
-               uint64_t typecnt;
-               uint64_t charcnt;
-       } bit64;
-
-       int32_t *trans;
-       unsigned char *trans_idx;
-
-       ttinfo  *type;
-       char    *timezone_abbr;
-
-       tlinfo  *leap_times;
-       unsigned char bc;
-       tlocinfo location;
-} timelib_tzinfo;
-
-typedef struct timelib_special {
-       unsigned int type;
-       timelib_sll amount;
-} timelib_special;
-
-typedef struct timelib_rel_time {
-       timelib_sll y, m, d; /* Years, Months and Days */
-       timelib_sll h, i, s; /* Hours, mInutes and Seconds */
-       double      f;       /* Fraction */
-
-       int weekday; /* Stores the day in 'next monday' */
-       int weekday_behavior; /* 0: the current day should *not* be counted when advancing forwards; 1: the current day *should* be counted */
-
-       int first_last_day_of;
-       int invert; /* Whether the difference should be inverted */
-       timelib_sll days; /* Contains the number of *days*, instead of Y-M-D differences */
-
-       timelib_special  special;
-       unsigned int   have_weekday_relative, have_special_relative;
-} timelib_rel_time;
-
-typedef struct timelib_time_offset {
-       int32_t      offset;
-       unsigned int leap_secs;
-       unsigned int is_dst;
-       char        *abbr;
-       timelib_sll  transistion_time;
-} timelib_time_offset;
-
-typedef struct timelib_time {
-       timelib_sll      y, m, d;     /* Year, Month, Day */
-       timelib_sll      h, i, s;     /* Hour, mInute, Second */
-       double           f;           /* Fraction */
-       int              z;           /* GMT offset in minutes */
-       char            *tz_abbr;     /* Timezone abbreviation (display only) */
-       timelib_tzinfo  *tz_info;     /* Timezone structure */
-       signed int       dst;         /* Flag if we were parsing a DST zone */
-       timelib_rel_time relative;
-
-       timelib_sll      sse;         /* Seconds since epoch */
-
-       unsigned int   have_time, have_date, have_zone, have_relative, have_weeknr_day;
-
-       unsigned int   sse_uptodate; /* !0 if the sse member is up to date with the date/time members */
-       unsigned int   tim_uptodate; /* !0 if the date/time members are up to date with the sse member */
-       unsigned int   is_localtime; /*  1 if the current struct represents localtime, 0 if it is in GMT */
-       unsigned int   zone_type;    /*  1 time offset,
-                                     *  3 TimeZone identifier,
-                                     *  2 TimeZone abbreviation */
-} timelib_time;
-
-typedef struct timelib_abbr_info {
-       timelib_sll  utc_offset;
-       char        *abbr;
-       int          dst;
-} timelib_abbr_info;
-
-typedef struct timelib_error_message {
-       int         position;
-       char        character;
-       char       *message;
-} timelib_error_message;
-
-typedef struct timelib_error_container {
-       struct timelib_error_message *error_messages;
-       struct timelib_error_message *warning_messages;
-       int                           error_count;
-       int                           warning_count;
-} timelib_error_container;
-
-typedef struct _timelib_tz_lookup_table {
-       char       *name;
-       int         type;
-       float       gmtoffset;
-       char       *full_tz_name;
-} timelib_tz_lookup_table;
-
-typedef struct _timelib_tzdb_index_entry {
-       char *id;
-       unsigned int pos;
-} timelib_tzdb_index_entry;
-
-typedef struct _timelib_tzdb {
-       char                           *version;
-       int                             index_size;
-       const timelib_tzdb_index_entry *index;
-       const unsigned char            *data;
-} timelib_tzdb;
-
-#define TIMELIB_ZONETYPE_OFFSET 1
-#define TIMELIB_ZONETYPE_ABBR   2
-#define TIMELIB_ZONETYPE_ID     3
-
-#define SECS_PER_ERA   TIMELIB_LL_CONST(12622780800)
-#define SECS_PER_DAY   86400
-#define DAYS_PER_YEAR    365
-#define DAYS_PER_LYEAR   366
-/* 400*365 days + 97 leap days */
-#define DAYS_PER_LYEAR_PERIOD 146097
-#define YEARS_PER_LYEAR_PERIOD 400
-
-#define timelib_is_leap(y) ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
-
-#define TIMELIB_DEBUG(s)  if (0) { s }
-
-#endif
index d8898bf33dc76b90b12b0f01d2e1b832d87d68b2..5859d22f66aa0e75c64fd2cb9ea776983465be37 100644 (file)
@@ -4,29 +4,18 @@
        { "acdt",  1,  37800, "Australia/North"               },
        { "acdt",  1,  37800, "Australia/South"               },
        { "acdt",  1,  37800, "Australia/Yancowinna"          },
-       { "acst",  1, -14400, "America/Porto_Acre"            },
        { "acst",  0,  32400, "Australia/Adelaide"            },
        { "acst",  0,  34200, "Australia/Adelaide"            },
-       { "acst",  1, -14400, "America/Eirunepe"              },
-       { "acst",  1, -14400, "America/Rio_Branco"            },
-       { "acst",  1, -14400, "Brazil/Acre"                   },
        { "acst",  0,  32400, "Australia/Broken_Hill"         },
        { "acst",  0,  32400, "Australia/Darwin"              },
        { "acst",  0,  32400, "Australia/North"               },
        { "acst",  0,  32400, "Australia/South"               },
        { "acst",  0,  32400, "Australia/Yancowinna"          },
-       { "acst",  0,  34200, "Asia/Jayapura"                 },
        { "acst",  0,  34200, "Australia/Broken_Hill"         },
        { "acst",  0,  34200, "Australia/Darwin"              },
        { "acst",  0,  34200, "Australia/North"               },
        { "acst",  0,  34200, "Australia/South"               },
        { "acst",  0,  34200, "Australia/Yancowinna"          },
-       { "act",   0, -18000, "America/Porto_Acre"            },
-       { "act",   0, -18000, "America/Eirunepe"              },
-       { "act",   0, -18000, "America/Rio_Branco"            },
-       { "act",   0, -18000, "Brazil/Acre"                   },
-       { "acwdt", 1,  35100, "Australia/Eucla"               },
-       { "acwst", 0,  31500, "Australia/Eucla"               },
        { "addt",  1,  -7200, "America/Goose_Bay"             },
        { "addt",  1,  -7200, "America/Pangnirtung"           },
        { "adt",   1, -10800, "America/Halifax"               },
@@ -40,7 +29,6 @@
        { "adt",   1, -10800, "America/Thule"                 },
        { "adt",   1, -10800, "Atlantic/Bermuda"              },
        { "adt",   1, -10800, "Canada/Atlantic"               },
-       { "adt",   1,  14400, "Asia/Baghdad"                  },
        { "aedt",  1,  39600, "Australia/Melbourne"           },
        { "aedt",  1,  39600, "Antarctica/Macquarie"          },
        { "aedt",  1,  39600, "Australia/ACT"                 },
@@ -69,8 +57,6 @@
        { "aest",  0,  36000, "Australia/Sydney"              },
        { "aest",  0,  36000, "Australia/Tasmania"            },
        { "aest",  0,  36000, "Australia/Victoria"            },
-       { "aft",   0,  16200, "Asia/Kabul"                    },
-       { "aft",   0,  14400, "Asia/Kabul"                    },
        { "ahdt",  1, -32400, "America/Anchorage"             },
        { "ahst",  0, -36000, "America/Anchorage"             },
        { "ahst",  0, -36000, "America/Adak"                  },
        { "akst",  0, -32400, "America/Nome"                  },
        { "akst",  0, -32400, "America/Sitka"                 },
        { "akst",  0, -32400, "America/Yakutat"               },
-       { "amst",  1, -10800, "America/Boa_Vista"             },
-       { "amst",  1, -10800, "America/Campo_Grande"          },
-       { "amst",  1, -10800, "America/Cuiaba"                },
-       { "amst",  1, -10800, "America/Manaus"                },
-       { "amst",  1, -10800, "America/Porto_Velho"           },
-       { "amst",  1, -10800, "America/Santarem"              },
-       { "amst",  1, -10800, "Brazil/West"                   },
        { "amt",   0, -13840, "America/Asuncion"              },
-       { "amt",   0, -14400, "America/Boa_Vista"             },
-       { "amt",   0, -14400, "America/Campo_Grande"          },
-       { "amt",   0, -14400, "America/Cuiaba"                },
-       { "amt",   0, -14400, "America/Eirunepe"              },
-       { "amt",   0, -14400, "America/Manaus"                },
-       { "amt",   0, -14400, "America/Porto_Acre"            },
-       { "amt",   0, -14400, "America/Porto_Velho"           },
-       { "amt",   0, -14400, "America/Rio_Branco"            },
-       { "amt",   0, -14400, "America/Santarem"              },
-       { "amt",   0, -14400, "Brazil/Acre"                   },
-       { "amt",   0, -14400, "Brazil/West"                   },
        { "amt",   0,   1172, "Europe/Amsterdam"              },
        { "amt",   0,   5692, "Europe/Athens"                 },
-       { "ant",   0, -16200, "America/Curacao"               },
-       { "ant",   0, -16200, "America/Aruba"                 },
-       { "ant",   0, -16200, "America/Kralendijk"            },
-       { "ant",   0, -16200, "America/Lower_Princes"         },
        { "apt",   1, -10800, "America/Halifax"               },
        { "apt",   1, -10800, "America/Blanc-Sablon"          },
        { "apt",   1, -10800, "America/Glace_Bay"             },
        { "apt",   1, -10800, "America/Pangnirtung"           },
        { "apt",   1, -10800, "America/Puerto_Rico"           },
        { "apt",   1, -10800, "Canada/Atlantic"               },
-       { "arst",  1,  -7200, "America/Buenos_Aires"          },
-       { "arst",  1, -10800, "America/Buenos_Aires"          },
-       { "arst",  1, -10800, "America/Argentina/Buenos_Aires" },
-       { "arst",  1, -10800, "America/Argentina/Catamarca"   },
-       { "arst",  1, -10800, "America/Argentina/ComodRivadavia" },
-       { "arst",  1, -10800, "America/Argentina/Cordoba"     },
-       { "arst",  1, -10800, "America/Argentina/Jujuy"       },
-       { "arst",  1, -10800, "America/Argentina/La_Rioja"    },
-       { "arst",  1, -10800, "America/Argentina/Mendoza"     },
-       { "arst",  1, -10800, "America/Argentina/Rio_Gallegos" },
-       { "arst",  1, -10800, "America/Argentina/Salta"       },
-       { "arst",  1, -10800, "America/Argentina/San_Juan"    },
-       { "arst",  1, -10800, "America/Argentina/San_Luis"    },
-       { "arst",  1, -10800, "America/Argentina/Tucuman"     },
-       { "arst",  1, -10800, "America/Argentina/Ushuaia"     },
-       { "arst",  1, -10800, "America/Catamarca"             },
-       { "arst",  1, -10800, "America/Cordoba"               },
-       { "arst",  1, -10800, "America/Jujuy"                 },
-       { "arst",  1, -10800, "America/Mendoza"               },
-       { "arst",  1, -10800, "America/Rosario"               },
-       { "arst",  1, -10800, "Antarctica/Palmer"             },
-       { "arst",  1,  -7200, "America/Argentina/Buenos_Aires" },
-       { "arst",  1,  -7200, "America/Argentina/Catamarca"   },
-       { "arst",  1,  -7200, "America/Argentina/ComodRivadavia" },
-       { "arst",  1,  -7200, "America/Argentina/Cordoba"     },
-       { "arst",  1,  -7200, "America/Argentina/Jujuy"       },
-       { "arst",  1,  -7200, "America/Argentina/La_Rioja"    },
-       { "arst",  1,  -7200, "America/Argentina/Mendoza"     },
-       { "arst",  1,  -7200, "America/Argentina/Rio_Gallegos" },
-       { "arst",  1,  -7200, "America/Argentina/Salta"       },
-       { "arst",  1,  -7200, "America/Argentina/San_Juan"    },
-       { "arst",  1,  -7200, "America/Argentina/San_Luis"    },
-       { "arst",  1,  -7200, "America/Argentina/Tucuman"     },
-       { "arst",  1,  -7200, "America/Argentina/Ushuaia"     },
-       { "arst",  1,  -7200, "America/Catamarca"             },
-       { "arst",  1,  -7200, "America/Cordoba"               },
-       { "arst",  1,  -7200, "America/Jujuy"                 },
-       { "arst",  1,  -7200, "America/Mendoza"               },
-       { "arst",  1,  -7200, "America/Rosario"               },
-       { "arst",  1,  -7200, "Antarctica/Palmer"             },
-       { "art",   0, -10800, "America/Buenos_Aires"          },
-       { "art",   0, -14400, "America/Buenos_Aires"          },
-       { "art",   0, -10800, "America/Argentina/Buenos_Aires" },
-       { "art",   0, -10800, "America/Argentina/Catamarca"   },
-       { "art",   0, -10800, "America/Argentina/ComodRivadavia" },
-       { "art",   0, -10800, "America/Argentina/Cordoba"     },
-       { "art",   0, -10800, "America/Argentina/Jujuy"       },
-       { "art",   0, -10800, "America/Argentina/La_Rioja"    },
-       { "art",   0, -10800, "America/Argentina/Mendoza"     },
-       { "art",   0, -10800, "America/Argentina/Rio_Gallegos" },
-       { "art",   0, -10800, "America/Argentina/Salta"       },
-       { "art",   0, -10800, "America/Argentina/San_Juan"    },
-       { "art",   0, -10800, "America/Argentina/San_Luis"    },
-       { "art",   0, -10800, "America/Argentina/Tucuman"     },
-       { "art",   0, -10800, "America/Argentina/Ushuaia"     },
-       { "art",   0, -10800, "America/Catamarca"             },
-       { "art",   0, -10800, "America/Cordoba"               },
-       { "art",   0, -10800, "America/Jujuy"                 },
-       { "art",   0, -10800, "America/Mendoza"               },
-       { "art",   0, -10800, "America/Rosario"               },
-       { "art",   0, -10800, "Antarctica/Palmer"             },
-       { "art",   0, -14400, "America/Argentina/Buenos_Aires" },
-       { "art",   0, -14400, "America/Argentina/Catamarca"   },
-       { "art",   0, -14400, "America/Argentina/ComodRivadavia" },
-       { "art",   0, -14400, "America/Argentina/Cordoba"     },
-       { "art",   0, -14400, "America/Argentina/Jujuy"       },
-       { "art",   0, -14400, "America/Argentina/La_Rioja"    },
-       { "art",   0, -14400, "America/Argentina/Mendoza"     },
-       { "art",   0, -14400, "America/Argentina/Rio_Gallegos" },
-       { "art",   0, -14400, "America/Argentina/Salta"       },
-       { "art",   0, -14400, "America/Argentina/San_Juan"    },
-       { "art",   0, -14400, "America/Argentina/San_Luis"    },
-       { "art",   0, -14400, "America/Argentina/Tucuman"     },
-       { "art",   0, -14400, "America/Argentina/Ushuaia"     },
-       { "art",   0, -14400, "America/Catamarca"             },
-       { "art",   0, -14400, "America/Cordoba"               },
-       { "art",   0, -14400, "America/Jujuy"                 },
-       { "art",   0, -14400, "America/Mendoza"               },
-       { "art",   0, -14400, "America/Rosario"               },
-       { "art",   0, -14400, "Antarctica/Palmer"             },
-       { "ast",   0,  10800, "Asia/Riyadh"                   },
+       { "apt",   1, -32400, "America/Anchorage"             },
        { "ast",   0, -14400, "America/Anguilla"              },
        { "ast",   0, -14400, "America/Antigua"               },
        { "ast",   0, -14400, "America/Aruba"                 },
        { "ast",   0, -14400, "America/Virgin"                },
        { "ast",   0, -14400, "Atlantic/Bermuda"              },
        { "ast",   0, -14400, "Canada/Atlantic"               },
-       { "ast",   0,  10800, "Asia/Aden"                     },
-       { "ast",   0,  10800, "Asia/Baghdad"                  },
-       { "ast",   0,  10800, "Asia/Bahrain"                  },
-       { "ast",   0,  10800, "Asia/Kuwait"                   },
-       { "ast",   0,  10800, "Asia/Qatar"                    },
+       { "ast",   0, -36000, "America/Anchorage"             },
        { "awdt",  1,  32400, "Australia/Perth"               },
        { "awdt",  1,  32400, "Australia/West"                },
        { "awst",  0,  28800, "Australia/Perth"               },
        { "awt",   1, -10800, "America/Pangnirtung"           },
        { "awt",   1, -10800, "America/Puerto_Rico"           },
        { "awt",   1, -10800, "Canada/Atlantic"               },
-       { "azomt", 1,      0, "Atlantic/Azores"               },
-       { "azost", 1,      0, "Atlantic/Azores"               },
-       { "azost", 1,  -3600, "Atlantic/Azores"               },
-       { "azot",  0,  -3600, "Atlantic/Azores"               },
-       { "azot",  0,  -7200, "Atlantic/Azores"               },
+       { "awt",   1, -32400, "America/Anchorage"             },
        { "bdst",  1,   7200, "Europe/London"                 },
-       { "bdst",  1,  25200, "Asia/Dacca"                    },
-       { "bdst",  1,  25200, "Asia/Dhaka"                    },
        { "bdst",  1,   7200, "Europe/Belfast"                },
        { "bdst",  1,   7200, "Europe/Gibraltar"              },
        { "bdst",  1,   7200, "Europe/Guernsey"               },
        { "bdst",  1,   7200, "Europe/Jersey"                 },
        { "bdst",  1,   7200, "GB"                            },
        { "bdt",   1, -36000, "America/Adak"                  },
-       { "bdt",   0,  21600, "Asia/Dacca"                    },
        { "bdt",   1, -36000, "America/Atka"                  },
        { "bdt",   1, -36000, "America/Nome"                  },
-       { "bdt",   0,  21600, "Asia/Dhaka"                    },
-       { "beat",  0,   9000, "Africa/Mogadishu"              },
-       { "beat",  0,   9000, "Africa/Addis_Ababa"            },
-       { "beat",  0,   9000, "Africa/Asmara"                 },
-       { "beat",  0,   9000, "Africa/Asmera"                 },
-       { "beat",  0,   9000, "Africa/Dar_es_Salaam"          },
-       { "beat",  0,   9000, "Africa/Djibouti"               },
-       { "beat",  0,   9000, "Africa/Kampala"                },
-       { "beat",  0,   9000, "Africa/Nairobi"                },
-       { "beat",  0,   9000, "Indian/Antananarivo"           },
-       { "beat",  0,   9000, "Indian/Comoro"                 },
-       { "beat",  0,   9000, "Indian/Mayotte"                },
-       { "beaut", 0,   9900, "Africa/Nairobi"                },
-       { "beaut", 0,   9900, "Africa/Addis_Ababa"            },
-       { "beaut", 0,   9900, "Africa/Asmara"                 },
-       { "beaut", 0,   9900, "Africa/Asmera"                 },
-       { "beaut", 0,   9900, "Africa/Dar_es_Salaam"          },
-       { "beaut", 0,   9900, "Africa/Djibouti"               },
-       { "beaut", 0,   9900, "Africa/Kampala"                },
-       { "beaut", 0,   9900, "Africa/Mogadishu"              },
-       { "beaut", 0,   9900, "Indian/Antananarivo"           },
-       { "beaut", 0,   9900, "Indian/Comoro"                 },
-       { "beaut", 0,   9900, "Indian/Mayotte"                },
        { "bmt",   0, -14309, "America/Barbados"              },
        { "bmt",   0,   6264, "Europe/Tiraspol"               },
        { "bmt",   0, -17776, "America/Bogota"                },
        { "bmt",   0,  25632, "Asia/Jakarta"                  },
        { "bmt",   0,   6264, "Europe/Bucharest"              },
        { "bmt",   0,   6264, "Europe/Chisinau"               },
-       { "bnt",   0,  28800, "Asia/Brunei"                   },
-       { "bnt",   0,  27000, "Asia/Brunei"                   },
-       { "bortst", 1,  30000, "Asia/Kuching"                  },
-       { "bort",  0,  28800, "Asia/Kuching"                  },
-       { "bort",  0,  27000, "Asia/Kuching"                  },
        { "bost",  1, -12756, "America/La_Paz"                },
-       { "bot",   0, -14400, "America/La_Paz"                },
-       { "brst",  1,  -7200, "America/Sao_Paulo"             },
-       { "brst",  1,  -7200, "America/Araguaina"             },
-       { "brst",  1,  -7200, "America/Bahia"                 },
-       { "brst",  1,  -7200, "America/Belem"                 },
-       { "brst",  1,  -7200, "America/Fortaleza"             },
-       { "brst",  1,  -7200, "America/Maceio"                },
-       { "brst",  1,  -7200, "America/Recife"                },
-       { "brst",  1,  -7200, "Brazil/East"                   },
-       { "brt",   0, -10800, "America/Sao_Paulo"             },
-       { "brt",   0, -10800, "America/Araguaina"             },
-       { "brt",   0, -10800, "America/Bahia"                 },
-       { "brt",   0, -10800, "America/Belem"                 },
-       { "brt",   0, -10800, "America/Fortaleza"             },
-       { "brt",   0, -10800, "America/Maceio"                },
-       { "brt",   0, -10800, "America/Recife"                },
-       { "brt",   0, -10800, "America/Santarem"              },
-       { "brt",   0, -10800, "Brazil/East"                   },
        { "bst",   1,   3600, "Europe/London"                 },
        { "bst",   0,   3600, "Europe/London"                 },
        { "bst",   0, -39600, "America/Adak"                  },
        { "bst",   0, -39600, "America/Atka"                  },
        { "bst",   0, -39600, "America/Nome"                  },
-       { "bst",   0, -39600, "Pacific/Midway"                },
-       { "bst",   0, -39600, "Pacific/Pago_Pago"             },
-       { "bst",   0, -39600, "Pacific/Samoa"                 },
        { "bst",   0,   3600, "Europe/Belfast"                },
        { "bst",   0,   3600, "Europe/Guernsey"               },
        { "bst",   0,   3600, "Europe/Isle_of_Man"            },
        { "bst",   1,   3600, "Europe/Isle_of_Man"            },
        { "bst",   1,   3600, "Europe/Jersey"                 },
        { "bst",   1,   3600, "GB"                            },
-       { "bst",   0,  39600, "Pacific/Bougainville"          },
-       { "btt",   0,  21600, "Asia/Thimbu"                   },
-       { "btt",   0,  21600, "Asia/Thimphu"                  },
-       { "burt",  0,  23400, "Asia/Kolkata"                  },
-       { "burt",  0,  23400, "Asia/Calcutta"                 },
-       { "burt",  0,  23400, "Asia/Dacca"                    },
-       { "burt",  0,  23400, "Asia/Dhaka"                    },
-       { "burt",  0,  23400, "Asia/Rangoon"                  },
-       { "burt",  0,  23400, "Asia/Yangon"                   },
-       { "cant",  0,  -3600, "Atlantic/Canary"               },
-       { "capt",  1, -32400, "America/Anchorage"             },
        { "cast",  0,  34200, "Australia/Adelaide"            },
        { "cast",  1,  10800, "Africa/Juba"                   },
        { "cast",  1,  10800, "Africa/Khartoum"               },
-       { "cat",   0, -36000, "America/Anchorage"             },
        { "cat",   0,   7200, "Africa/Khartoum"               },
        { "cat",   0,   7200, "Africa/Blantyre"               },
        { "cat",   0,   7200, "Africa/Bujumbura"              },
        { "cat",   0,   7200, "Africa/Lusaka"                 },
        { "cat",   0,   7200, "Africa/Maputo"                 },
        { "cat",   0,   7200, "Africa/Windhoek"               },
-       { "cawt",  1, -32400, "America/Anchorage"             },
-       { "cct",   0,  23400, "Indian/Cocos"                  },
        { "cddt",  1, -14400, "America/Rankin_Inlet"          },
        { "cddt",  1, -14400, "America/Resolute"              },
        { "cdt",   1, -18000, "America/Chicago"               },
        { "cdt",   1,  32400, "Asia/Chongqing"                },
        { "cdt",   1,  32400, "Asia/Chungking"                },
        { "cdt",   1,  32400, "Asia/Harbin"                   },
+       { "cdt",   1,  32400, "Asia/Macao"                    },
+       { "cdt",   1,  32400, "Asia/Macau"                    },
        { "cdt",   1,  32400, "Asia/Taipei"                   },
        { "cdt",   1,  32400, "PRC"                           },
        { "cdt",   1,  32400, "ROC"                           },
        { "cet",   0,   3600, "Europe/Zagreb"                 },
        { "cet",   0,   3600, "Europe/Zaporozhye"             },
        { "cet",   0,   3600, "Europe/Zurich"                 },
-       { "cgst",  1,  -3600, "America/Scoresbysund"          },
-       { "cgt",   0,  -7200, "America/Scoresbysund"          },
-       { "chadt", 1,  49500, "Pacific/Chatham"               },
-       { "chast", 0,  45900, "Pacific/Chatham"               },
-       { "chast", 0,  44100, "Pacific/Chatham"               },
-       { "chdt",  1, -19800, "America/Belize"                },
-       { "chost", 1,  36000, "Asia/Choibalsan"               },
-       { "chost", 1,  32400, "Asia/Choibalsan"               },
-       { "chot",  0,  32400, "Asia/Choibalsan"               },
-       { "chot",  0,  28800, "Asia/Choibalsan"               },
-       { "chut",  0,  36000, "Pacific/Chuuk"                 },
-       { "chut",  0,  36000, "Pacific/Truk"                  },
-       { "chut",  0,  36000, "Pacific/Yap"                   },
-       { "ckhst", 1, -34200, "Pacific/Rarotonga"             },
-       { "ckt",   0, -36000, "Pacific/Rarotonga"             },
-       { "ckt",   0, -37800, "Pacific/Rarotonga"             },
-       { "clst",  1, -10800, "America/Santiago"              },
-       { "clst",  1, -14400, "America/Santiago"              },
-       { "clst",  1, -10800, "Antarctica/Palmer"             },
-       { "clst",  1, -10800, "Chile/Continental"             },
-       { "clst",  1, -14400, "Chile/Continental"             },
-       { "clt",   0, -14400, "America/Santiago"              },
-       { "clt",   0, -18000, "America/Santiago"              },
-       { "clt",   0, -14400, "Antarctica/Palmer"             },
-       { "clt",   0, -14400, "Chile/Continental"             },
-       { "clt",   0, -18000, "Chile/Continental"             },
        { "cmt",   0, -15408, "America/Argentina/Buenos_Aires" },
        { "cmt",   0, -15408, "America/Argentina/Catamarca"   },
        { "cmt",   0, -15408, "America/Argentina/ComodRivadavia" },
        { "cmt",   0,   3020, "Europe/Copenhagen"             },
        { "cmt",   0,   6900, "Europe/Chisinau"               },
        { "cmt",   0,   6900, "Europe/Tiraspol"               },
-       { "cost",  1, -14400, "America/Bogota"                },
-       { "cot",   0, -18000, "America/Bogota"                },
        { "cpt",   1, -18000, "America/Chicago"               },
        { "cpt",   1, -18000, "America/Atikokan"              },
        { "cpt",   1, -18000, "America/Coral_Harbour"         },
        { "cst",   0,  28800, "Asia/Taipei"                   },
        { "cst",   0,  28800, "PRC"                           },
        { "cst",   0,  28800, "ROC"                           },
-       { "cut",   0,   8400, "Europe/Zaporozhye"             },
-       { "cvst",  1,  -3600, "Atlantic/Cape_Verde"           },
-       { "cvt",   0,  -7200, "Atlantic/Cape_Verde"           },
-       { "cvt",   0,  -3600, "Atlantic/Cape_Verde"           },
        { "cwt",   1, -18000, "America/Chicago"               },
        { "cwt",   1, -18000, "America/Atikokan"              },
        { "cwt",   1, -18000, "America/Coral_Harbour"         },
        { "cwt",   1, -18000, "America/Winnipeg"              },
        { "cwt",   1, -18000, "Canada/Central"                },
        { "cwt",   1, -18000, "Mexico/General"                },
-       { "cxt",   0,  25200, "Indian/Christmas"              },
        { "chst",  0,  36000, "Pacific/Guam"                  },
        { "chst",  0,  36000, "Pacific/Saipan"                },
-       { "dact",  0,  21600, "Asia/Dacca"                    },
-       { "dact",  0,  21600, "Asia/Dhaka"                    },
        { "dmt",   0,  -1521, "Europe/Dublin"                 },
-       { "easst", 1, -21600, "Chile/EasterIsland"            },
-       { "easst", 1, -18000, "Chile/EasterIsland"            },
-       { "easst", 1, -18000, "Pacific/Easter"                },
-       { "easst", 1, -21600, "Pacific/Easter"                },
-       { "east",  0, -21600, "Chile/EasterIsland"            },
-       { "east",  0, -25200, "Chile/EasterIsland"            },
-       { "east",  0, -21600, "Pacific/Easter"                },
-       { "east",  0, -25200, "Pacific/Easter"                },
        { "eat",   0,  10800, "Africa/Khartoum"               },
        { "eat",   0,  10800, "Africa/Addis_Ababa"            },
        { "eat",   0,  10800, "Africa/Asmara"                 },
        { "eat",   0,  10800, "Indian/Antananarivo"           },
        { "eat",   0,  10800, "Indian/Comoro"                 },
        { "eat",   0,  10800, "Indian/Mayotte"                },
-       { "ect",   0, -18000, "America/Guayaquil"             },
-       { "ect",   0, -18000, "Pacific/Galapagos"             },
        { "eddt",  1, -10800, "America/Iqaluit"               },
        { "edt",   1, -14400, "America/New_York"              },
        { "edt",   1, -14400, "America/Cancun"                },
        { "eest",  1,  10800, "Asia/Amman"                    },
        { "eest",  1,  10800, "Asia/Beirut"                   },
        { "eest",  1,  10800, "Asia/Damascus"                 },
+       { "eest",  1,  10800, "Asia/Famagusta"                },
        { "eest",  1,  10800, "Asia/Gaza"                     },
        { "eest",  1,  10800, "Asia/Hebron"                   },
        { "eest",  1,  10800, "Asia/Istanbul"                 },
        { "eest",  1,  10800, "Europe/Warsaw"                 },
        { "eest",  1,  10800, "Europe/Zaporozhye"             },
        { "eet",   0,   7200, "Europe/Helsinki"               },
-       { "eet",   1,  10800, "Asia/Gaza"                     },
-       { "eet",   1,  10800, "Asia/Hebron"                   },
        { "eet",   0,   7200, "Africa/Cairo"                  },
        { "eet",   0,   7200, "Africa/Tripoli"                },
        { "eet",   0,   7200, "Asia/Amman"                    },
        { "eet",   0,   7200, "Asia/Beirut"                   },
        { "eet",   0,   7200, "Asia/Damascus"                 },
+       { "eet",   0,   7200, "Asia/Famagusta"                },
        { "eet",   0,   7200, "Asia/Gaza"                     },
        { "eet",   0,   7200, "Asia/Hebron"                   },
        { "eet",   0,   7200, "Asia/Istanbul"                 },
        { "eet",   0,   7200, "Europe/Vilnius"                },
        { "eet",   0,   7200, "Europe/Warsaw"                 },
        { "eet",   0,   7200, "Europe/Zaporozhye"             },
-       { "egst",  1,      0, "America/Scoresbysund"          },
-       { "egt",   0,  -3600, "America/Scoresbysund"          },
-       { "ehdt",  1, -16200, "America/Santo_Domingo"         },
        { "emt",   0, -26248, "Chile/EasterIsland"            },
        { "emt",   0, -26248, "Pacific/Easter"                },
        { "ept",   1, -14400, "America/New_York"              },
        { "ewt",   1, -14400, "America/Toronto"               },
        { "ewt",   1, -14400, "Canada/Eastern"                },
        { "ffmt",  0, -14660, "America/Martinique"            },
-       { "fjst",  1,  46800, "Pacific/Fiji"                  },
-       { "fjt",   0,  43200, "Pacific/Fiji"                  },
-       { "fkst",  1,  -7200, "Atlantic/Stanley"              },
-       { "fkst",  0, -10800, "Atlantic/Stanley"              },
-       { "fkst",  1, -10800, "Atlantic/Stanley"              },
-       { "fkt",   0, -14400, "Atlantic/Stanley"              },
-       { "fkt",   0, -10800, "Atlantic/Stanley"              },
        { "fmt",   0,  -4056, "Atlantic/Madeira"              },
-       { "fnst",  1,  -3600, "America/Noronha"               },
-       { "fnst",  1,  -3600, "Brazil/DeNoronha"              },
-       { "fnt",   0,  -7200, "America/Noronha"               },
-       { "fnt",   0,  -7200, "Brazil/DeNoronha"              },
-       { "galt",  0, -21600, "Pacific/Galapagos"             },
-       { "gamt",  0, -32400, "Pacific/Gambier"               },
-       { "gbgt",  0, -13500, "America/Guyana"                },
-       { "gft",   0, -14400, "America/Cayenne"               },
-       { "gft",   0, -10800, "America/Cayenne"               },
-       { "ghst",  1,   1200, "Africa/Accra"                  },
-       { "gilt",  0,  43200, "Pacific/Tarawa"                },
        { "gmt",   0,      0, "Africa/Abidjan"                },
        { "gmt",   0,      0, "Africa/Accra"                  },
        { "gmt",   0,      0, "Africa/Bamako"                 },
        { "gmt",   0,      0, "Europe/Jersey"                 },
        { "gmt",   0,      0, "Europe/London"                 },
        { "gmt",   0,      0, "GB"                            },
-       { "gst",   0,  14400, "Asia/Dubai"                    },
-       { "gst",   0,  -7200, "Atlantic/South_Georgia"        },
-       { "gst",   0,  14400, "Asia/Bahrain"                  },
-       { "gst",   0,  14400, "Asia/Muscat"                   },
-       { "gst",   0,  14400, "Asia/Qatar"                    },
        { "gst",   0,  36000, "Pacific/Guam"                  },
        { "gst",   0,  36000, "Pacific/Saipan"                },
-       { "gyt",   0, -14400, "America/Guyana"                },
-       { "gyt",   0, -10800, "America/Guyana"                },
-       { "gyt",   0, -13500, "America/Guyana"                },
        { "hdt",   1, -34200, "Pacific/Honolulu"              },
        { "hdt",   1, -32400, "America/Adak"                  },
        { "hdt",   1, -32400, "America/Atka"                  },
        { "hmt",   0,  21200, "Asia/Kolkata"                  },
        { "hmt",   0,   5989, "Europe/Helsinki"               },
        { "hmt",   0,   5989, "Europe/Mariehamn"              },
-       { "hovst", 1,  28800, "Asia/Hovd"                     },
-       { "hovt",  0,  25200, "Asia/Hovd"                     },
-       { "hovt",  0,  21600, "Asia/Hovd"                     },
        { "hst",   0, -36000, "Pacific/Honolulu"              },
        { "hst",   0, -37800, "Pacific/Honolulu"              },
        { "hst",   0, -36000, "America/Adak"                  },
        { "hst",   0, -36000, "America/Atka"                  },
        { "hst",   0, -36000, "Pacific/Johnston"              },
        { "hst",   0, -37800, "Pacific/Johnston"              },
-       { "ict",   0,  25200, "Asia/Bangkok"                  },
-       { "ict",   0,  25200, "Asia/Ho_Chi_Minh"              },
-       { "ict",   0,  25200, "Asia/Phnom_Penh"               },
-       { "ict",   0,  25200, "Asia/Saigon"                   },
-       { "ict",   0,  25200, "Asia/Vientiane"                },
        { "iddt",  1,  14400, "Asia/Jerusalem"                },
        { "iddt",  1,  14400, "Asia/Tel_Aviv"                 },
        { "idt",   1,  10800, "Asia/Jerusalem"                },
        { "idt",   1,  10800, "Asia/Gaza"                     },
        { "idt",   1,  10800, "Asia/Hebron"                   },
        { "idt",   1,  10800, "Asia/Tel_Aviv"                 },
-       { "idt",   0,  28800, "Asia/Ho_Chi_Minh"              },
-       { "idt",   0,  28800, "Asia/Saigon"                   },
-       { "ihst",  1,  21600, "Asia/Colombo"                  },
        { "imt",   0,  25025, "Asia/Irkutsk"                  },
        { "imt",   0,   7016, "Asia/Istanbul"                 },
        { "imt",   0,   7016, "Europe/Istanbul"               },
        { "imt",   0,   7016, "Europe/Sofia"                  },
-       { "iot",   0,  21600, "Indian/Chagos"                 },
-       { "iot",   0,  18000, "Indian/Chagos"                 },
-       { "irdt",  1,  16200, "Asia/Tehran"                   },
-       { "irdt",  1,  18000, "Asia/Tehran"                   },
-       { "irst",  0,  12600, "Asia/Tehran"                   },
-       { "irst",  0,  14400, "Asia/Tehran"                   },
-       { "isst",  1,      0, "Atlantic/Reykjavik"            },
        { "ist",   0,   7200, "Asia/Jerusalem"                },
-       { "ist",   0,  -3600, "Atlantic/Reykjavik"            },
        { "ist",   0,  19800, "Asia/Calcutta"                 },
-       { "ist",   0,  19800, "Asia/Colombo"                  },
-       { "ist",   0,  19800, "Asia/Dacca"                    },
-       { "ist",   0,  19800, "Asia/Dhaka"                    },
-       { "ist",   0,  19800, "Asia/Karachi"                  },
-       { "ist",   0,  19800, "Asia/Kathmandu"                },
-       { "ist",   0,  19800, "Asia/Katmandu"                 },
        { "ist",   0,  19800, "Asia/Kolkata"                  },
-       { "ist",   0,  19800, "Asia/Thimbu"                   },
-       { "ist",   0,  19800, "Asia/Thimphu"                  },
        { "ist",   1,   2079, "Europe/Dublin"                 },
-       { "ist",   1,  23400, "Asia/Calcutta"                 },
-       { "ist",   1,  23400, "Asia/Colombo"                  },
-       { "ist",   1,  23400, "Asia/Karachi"                  },
-       { "ist",   1,  23400, "Asia/Kolkata"                  },
        { "ist",   0,   3600, "Europe/Dublin"                 },
        { "ist",   1,   3600, "Europe/Dublin"                 },
        { "ist",   0,   7200, "Asia/Gaza"                     },
        { "ist",   0,   7200, "Asia/Hebron"                   },
        { "ist",   0,   7200, "Asia/Tel_Aviv"                 },
-       { "javt",  0,  26400, "Asia/Jakarta"                  },
-       { "jcst",  0,  32400, "Asia/Pyongyang"                },
-       { "jcst",  0,  32400, "Asia/Seoul"                    },
-       { "jcst",  0,  32400, "Asia/Tokyo"                    },
-       { "jcst",  0,  32400, "ROK"                           },
        { "jdt",   1,  36000, "Asia/Tokyo"                    },
        { "jmt",   0,   8440, "Asia/Jerusalem"                },
        { "jmt",   0,   8440, "Asia/Tel_Aviv"                 },
        { "jst",   0,  32400, "Asia/Tokyo"                    },
-       { "jst",   0,  32400, "Asia/Dili"                     },
-       { "jst",   0,  32400, "Asia/Ho_Chi_Minh"              },
        { "jst",   0,  32400, "Asia/Hong_Kong"                },
-       { "jst",   0,  32400, "Asia/Jakarta"                  },
-       { "jst",   0,  32400, "Asia/Kuala_Lumpur"             },
-       { "jst",   0,  32400, "Asia/Kuching"                  },
-       { "jst",   0,  32400, "Asia/Makassar"                 },
-       { "jst",   0,  32400, "Asia/Manila"                   },
-       { "jst",   0,  32400, "Asia/Pontianak"                },
        { "jst",   0,  32400, "Asia/Pyongyang"                },
-       { "jst",   0,  32400, "Asia/Rangoon"                  },
-       { "jst",   0,  32400, "Asia/Saigon"                   },
        { "jst",   0,  32400, "Asia/Seoul"                    },
-       { "jst",   0,  32400, "Asia/Singapore"                },
        { "jst",   0,  32400, "Asia/Taipei"                   },
-       { "jst",   0,  32400, "Asia/Ujung_Pandang"            },
-       { "jst",   0,  32400, "Asia/Yangon"                   },
-       { "jst",   0,  32400, "Pacific/Bougainville"          },
-       { "jst",   0,  32400, "Pacific/Nauru"                 },
        { "jst",   0,  32400, "ROC"                           },
        { "jst",   0,  32400, "ROK"                           },
-       { "jwst",  0,  28800, "Asia/Taipei"                   },
-       { "jwst",  0,  28800, "ROC"                           },
-       { "kart",  0,  18000, "Asia/Karachi"                  },
        { "kdt",   1,  36000, "Asia/Seoul"                    },
        { "kdt",   1,  34200, "Asia/Seoul"                    },
        { "kdt",   1,  34200, "ROK"                           },
        { "kmt",   0, -18431, "America/Grand_Turk"            },
        { "kmt",   0, -18431, "America/Jamaica"               },
        { "kmt",   0,   7324, "Europe/Kiev"                   },
-       { "kost",  0,  43200, "Pacific/Kosrae"                },
-       { "kost",  0,  39600, "Pacific/Kosrae"                },
        { "kst",   0,  30600, "Asia/Seoul"                    },
        { "kst",   0,  32400, "Asia/Pyongyang"                },
        { "kst",   0,  32400, "Asia/Seoul"                    },
        { "kst",   0,  30600, "Asia/Pyongyang"                },
        { "kst",   0,  30600, "ROK"                           },
        { "kst",   0,  32400, "ROK"                           },
-       { "kwat",  0, -43200, "Pacific/Kwajalein"             },
-       { "lhdt",  1,  39600, "Australia/LHI"                 },
-       { "lhdt",  1,  39600, "Australia/Lord_Howe"           },
-       { "lhdt",  1,  41400, "Australia/LHI"                 },
-       { "lhdt",  1,  41400, "Australia/Lord_Howe"           },
-       { "lhst",  0,  37800, "Australia/Lord_Howe"           },
-       { "lhst",  0,  37800, "Australia/LHI"                 },
-       { "lint",  0,  50400, "Pacific/Kiritimati"            },
-       { "lint",  0, -36000, "Pacific/Kiritimati"            },
-       { "lint",  0, -38400, "Pacific/Kiritimati"            },
-       { "lkt",   0,  23400, "Asia/Colombo"                  },
-       { "lkt",   0,  21600, "Asia/Colombo"                  },
-       { "lrt",   0,  -2670, "Africa/Monrovia"               },
        { "lst",   1,   9394, "Europe/Riga"                   },
-       { "madmt", 1,   3600, "Atlantic/Madeira"              },
-       { "madst", 1,      0, "Atlantic/Madeira"              },
-       { "madt",  0,  -3600, "Atlantic/Madeira"              },
-       { "malst", 1,  26400, "Asia/Singapore"                },
-       { "malst", 1,  26400, "Asia/Kuala_Lumpur"             },
-       { "malt",  0,  27000, "Asia/Singapore"                },
-       { "malt",  0,  25200, "Asia/Singapore"                },
-       { "malt",  0,  26400, "Asia/Singapore"                },
-       { "malt",  0,  25200, "Asia/Kuala_Lumpur"             },
-       { "malt",  0,  26400, "Asia/Kuala_Lumpur"             },
-       { "malt",  0,  27000, "Asia/Kuala_Lumpur"             },
-       { "mart",  0, -34200, "Pacific/Marquesas"             },
        { "mddt",  1, -18000, "America/Cambridge_Bay"         },
        { "mddt",  1, -18000, "America/Yellowknife"           },
        { "mdst",  1,  16279, "Europe/Moscow"                 },
        { "mdt",   1, -21600, "Canada/Mountain"               },
        { "mdt",   1, -21600, "Canada/Saskatchewan"           },
        { "mdt",   1, -21600, "Mexico/BajaSur"                },
-       { "mest",  1,   7200, "MET"                           },
-       { "met",   0,   3600, "MET"                           },
-       { "mht",   0,  43200, "Pacific/Kwajalein"             },
-       { "mht",   0,  39600, "Pacific/Kwajalein"             },
-       { "mht",   0,  39600, "Pacific/Majuro"                },
-       { "mht",   0,  43200, "Pacific/Majuro"                },
-       { "mist",  0,  39600, "Antarctica/Macquarie"          },
        { "mmt",   0,   9017, "Europe/Moscow"                 },
        { "mmt",   0,   9079, "Europe/Moscow"                 },
        { "mmt",   0, -13484, "America/Montevideo"            },
        { "mmt",   0, -20712, "America/Managua"               },
        { "mmt",   0,  -2588, "Africa/Monrovia"               },
+       { "mmt",   0,  -2670, "Africa/Monrovia"               },
        { "mmt",   0,  17640, "Indian/Maldives"               },
        { "mmt",   0,  19172, "Asia/Colombo"                  },
-       { "mmt",   0,  23400, "Asia/Rangoon"                  },
-       { "mmt",   0,  23400, "Asia/Yangon"                   },
        { "mmt",   0,  28656, "Asia/Makassar"                 },
        { "mmt",   0,  28656, "Asia/Ujung_Pandang"            },
        { "mmt",   0,   6600, "Europe/Minsk"                  },
-       { "most",  1,  32400, "Asia/Macao"                    },
-       { "most",  1,  32400, "Asia/Macau"                    },
-       { "mot",   0,  28800, "Asia/Macao"                    },
-       { "mot",   0,  28800, "Asia/Macau"                    },
        { "mpt",   1, -21600, "America/Denver"                },
        { "mpt",   1, -21600, "America/Boise"                 },
        { "mpt",   1, -21600, "America/Cambridge_Bay"         },
        { "mst",   0, -25200, "Mexico/BajaSur"                },
        { "mst",   0, -25200, "Mexico/General"                },
        { "mst",   1,  12679, "Europe/Moscow"                 },
-       { "must",  1,  18000, "Indian/Mauritius"              },
-       { "mut",   0,  14400, "Indian/Mauritius"              },
-       { "mvt",   0,  18000, "Indian/Maldives"               },
        { "mwt",   1, -21600, "America/Denver"                },
        { "mwt",   1, -21600, "America/Boise"                 },
        { "mwt",   1, -21600, "America/Cambridge_Bay"         },
        { "mwt",   1, -21600, "Canada/East-Saskatchewan"      },
        { "mwt",   1, -21600, "Canada/Mountain"               },
        { "mwt",   1, -21600, "Canada/Saskatchewan"           },
-       { "myt",   0,  28800, "Asia/Kuala_Lumpur"             },
-       { "myt",   0,  28800, "Asia/Kuching"                  },
-       { "ncst",  1,  43200, "Pacific/Noumea"                },
-       { "nct",   0,  39600, "Pacific/Noumea"                },
        { "nddt",  1,  -5400, "America/St_Johns"              },
        { "nddt",  1,  -5400, "Canada/Newfoundland"           },
        { "ndt",   1,  -9052, "America/St_Johns"              },
        { "ndt",   1,  -9000, "Canada/Newfoundland"           },
        { "ndt",   1,  -9052, "America/Goose_Bay"             },
        { "ndt",   1,  -9052, "Canada/Newfoundland"           },
-       { "negt",  0, -12600, "America/Paramaribo"            },
-       { "nest",  1,   4800, "Europe/Amsterdam"              },
-       { "net",   0,   1200, "Europe/Amsterdam"              },
-       { "nfst",  1,  45000, "Pacific/Norfolk"               },
-       { "nft",   0,  41400, "Pacific/Norfolk"               },
-       { "nft",   0,  39600, "Pacific/Norfolk"               },
-       { "nmt",   0,  40320, "Pacific/Norfolk"               },
        { "npt",   1,  -9000, "America/St_Johns"              },
-       { "npt",   0,  20700, "Asia/Katmandu"                 },
        { "npt",   1, -36000, "America/Adak"                  },
        { "npt",   1, -36000, "America/Atka"                  },
        { "npt",   1, -36000, "America/Nome"                  },
        { "npt",   1,  -9000, "America/Goose_Bay"             },
        { "npt",   1,  -9000, "Canada/Newfoundland"           },
-       { "npt",   0,  20700, "Asia/Kathmandu"                },
-       { "nrt",   0,  43200, "Pacific/Nauru"                 },
-       { "nrt",   0,  41400, "Pacific/Nauru"                 },
        { "nst",   0, -12600, "America/St_Johns"              },
        { "nst",   0, -12652, "America/St_Johns"              },
        { "nst",   1,   4772, "Europe/Amsterdam"              },
        { "nst",   0, -39600, "America/Adak"                  },
        { "nst",   0, -39600, "America/Atka"                  },
        { "nst",   0, -39600, "America/Nome"                  },
-       { "nst",   0, -39600, "Pacific/Midway"                },
-       { "nst",   0, -39600, "Pacific/Pago_Pago"             },
-       { "nst",   0, -39600, "Pacific/Samoa"                 },
-       { "nut",   0, -39600, "Pacific/Niue"                  },
-       { "nut",   0, -40800, "Pacific/Niue"                  },
-       { "nut",   0, -41400, "Pacific/Niue"                  },
        { "nwt",   1,  -9000, "America/St_Johns"              },
        { "nwt",   1, -36000, "America/Adak"                  },
        { "nwt",   1, -36000, "America/Atka"                  },
        { "pdt",   1, -25200, "Canada/Pacific"                },
        { "pdt",   1, -25200, "Canada/Yukon"                  },
        { "pdt",   1, -25200, "Mexico/BajaNorte"              },
-       { "pest",  1, -14400, "America/Lima"                  },
-       { "pet",   0, -18000, "America/Lima"                  },
-       { "pgt",   0,  36000, "Pacific/Bougainville"          },
-       { "pgt",   0,  36000, "Pacific/Port_Moresby"          },
-       { "phot",  0,  46800, "Pacific/Enderbury"             },
-       { "phot",  0, -39600, "Pacific/Enderbury"             },
-       { "phot",  0, -43200, "Pacific/Enderbury"             },
-       { "phst",  1,  32400, "Asia/Manila"                   },
-       { "pht",   0,  28800, "Asia/Manila"                   },
        { "pkst",  1,  21600, "Asia/Karachi"                  },
        { "pkt",   0,  18000, "Asia/Karachi"                  },
        { "plmt",  0,  25590, "Asia/Ho_Chi_Minh"              },
        { "plmt",  0,  25590, "Asia/Saigon"                   },
-       { "pmdt",  1,  -7200, "America/Miquelon"              },
        { "pmmt",  0,  35312, "Pacific/Bougainville"          },
-       { "pmst",  0, -10800, "America/Miquelon"              },
+       { "pmmt",  0,  35312, "Pacific/Port_Moresby"          },
        { "pmt",   0, -13236, "America/Paramaribo"            },
        { "pmt",   0, -13252, "America/Paramaribo"            },
        { "pmt",   0,  13505, "Asia/Yekaterinburg"            },
        { "pmt",   0,    561, "Africa/Tunis"                  },
        { "pmt",   0,    561, "Europe/Monaco"                 },
        { "pmt",   0,    561, "Europe/Paris"                  },
-       { "pnt",   0, -30600, "Pacific/Pitcairn"              },
-       { "pont",  0,  39600, "Pacific/Pohnpei"               },
-       { "pont",  0,  39600, "Pacific/Ponape"                },
        { "ppmt",  0, -17340, "America/Port-au-Prince"        },
        { "ppt",   1, -25200, "America/Los_Angeles"           },
        { "ppt",   1, -25200, "America/Dawson_Creek"          },
        { "pst",   0, -28800, "Canada/Yukon"                  },
        { "pst",   0, -28800, "Mexico/BajaNorte"              },
        { "pst",   0, -28800, "Mexico/BajaSur"                },
-       { "pst",   0, -28800, "Pacific/Pitcairn"              },
        { "pwt",   1, -25200, "America/Los_Angeles"           },
        { "pwt",   1, -25200, "America/Dawson_Creek"          },
        { "pwt",   1, -25200, "America/Ensenada"              },
        { "pwt",   1, -25200, "America/Vancouver"             },
        { "pwt",   1, -25200, "Canada/Pacific"                },
        { "pwt",   1, -25200, "Mexico/BajaNorte"              },
-       { "pwt",   0,  32400, "Pacific/Palau"                 },
-       { "pyst",  1, -10800, "America/Asuncion"              },
-       { "pyt",   0, -14400, "America/Asuncion"              },
-       { "pyt",   0, -10800, "America/Asuncion"              },
        { "qmt",   0, -18840, "America/Guayaquil"             },
-       { "ret",   0,  14400, "Indian/Reunion"                },
        { "rmt",   0,   5794, "Europe/Riga"                   },
        { "rmt",   0,  23080, "Asia/Rangoon"                  },
        { "rmt",   0,  23080, "Asia/Yangon"                   },
        { "sast",  0,   7200, "Africa/Maseru"                 },
        { "sast",  0,   7200, "Africa/Mbabane"                },
        { "sast",  0,   7200, "Africa/Windhoek"               },
-       { "sbt",   0,  39600, "Pacific/Guadalcanal"           },
-       { "sct",   0,  14400, "Indian/Mahe"                   },
        { "sdmt",  0, -16800, "America/Santo_Domingo"         },
-       { "sdt",   1, -36000, "Pacific/Apia"                  },
        { "set",   0,   3614, "Europe/Stockholm"              },
-       { "sgt",   0,  28800, "Asia/Singapore"                },
-       { "sgt",   0,  27000, "Asia/Singapore"                },
        { "sjmt",  0, -20173, "America/Costa_Rica"            },
        { "smt",   0, -13884, "Atlantic/Stanley"              },
+       { "smt",   0, -16966, "America/Punta_Arenas"          },
        { "smt",   0, -16966, "America/Santiago"              },
        { "smt",   0, -16966, "Chile/Continental"             },
        { "smt",   0,  24925, "Asia/Kuala_Lumpur"             },
        { "smt",   0,  24925, "Asia/Singapore"                },
        { "smt",   0,   8160, "Europe/Simferopol"             },
-       { "srt",   0, -10800, "America/Paramaribo"            },
-       { "srt",   0, -12600, "America/Paramaribo"            },
        { "sst",   0, -39600, "Pacific/Samoa"                 },
-       { "sst",   0, -39600, "Pacific/Apia"                  },
        { "sst",   0, -39600, "Pacific/Midway"                },
        { "sst",   0, -39600, "Pacific/Pago_Pago"             },
-       { "swat",  0,   5400, "Africa/Windhoek"               },
-       { "taht",  0, -36000, "Pacific/Tahiti"                },
        { "tbmt",  0,  10751, "Asia/Tbilisi"                  },
-       { "tkt",   0, -39600, "Pacific/Fakaofo"               },
-       { "tkt",   0,  46800, "Pacific/Fakaofo"               },
-       { "tlt",   0,  32400, "Asia/Dili"                     },
-       { "tlt",   0,  28800, "Asia/Dili"                     },
        { "tmt",   0,  12344, "Asia/Tehran"                   },
        { "tmt",   0,   5940, "Europe/Tallinn"                },
-       { "tost",  1,  50400, "Pacific/Tongatapu"             },
-       { "tot",   0,  46800, "Pacific/Tongatapu"             },
-       { "tot",   0,  44400, "Pacific/Tongatapu"             },
-       { "tvt",   0,  43200, "Pacific/Funafuti"              },
        { "uct",   0,      0, "Etc/UCT"                       },
-       { "ulast", 1,  32400, "Asia/Ulaanbaatar"              },
-       { "ulast", 1,  32400, "Asia/Ulan_Bator"               },
-       { "ulat",  0,  28800, "Asia/Ulaanbaatar"              },
-       { "ulat",  0,  25200, "Asia/Ulaanbaatar"              },
-       { "ulat",  0,  25200, "Asia/Choibalsan"               },
-       { "ulat",  0,  25200, "Asia/Ulan_Bator"               },
-       { "ulat",  0,  28800, "Asia/Choibalsan"               },
-       { "ulat",  0,  28800, "Asia/Ulan_Bator"               },
        { "utc",   0,      0, "Etc/Universal"                 },
        { "utc",   0,      0, "Etc/UTC"                       },
        { "utc",   0,      0, "Etc/Zulu"                      },
        { "utc",   0,      0, "UTC"                           },
        { "utc",   0,      0, "UTC"                           },
-       { "uyhst", 1,  -9000, "America/Montevideo"            },
-       { "uyhst", 1, -10800, "America/Montevideo"            },
-       { "uyst",  1,  -7200, "America/Montevideo"            },
-       { "uyt",   0, -10800, "America/Montevideo"            },
-       { "uyt",   0, -12600, "America/Montevideo"            },
-       { "vet",   0, -16200, "America/Caracas"               },
-       { "vet",   0, -14400, "America/Caracas"               },
-       { "vust",  1,  43200, "Pacific/Efate"                 },
-       { "vut",   0,  39600, "Pacific/Efate"                 },
-       { "wakt",  0,  43200, "Pacific/Wake"                  },
-       { "warst", 1, -10800, "America/Mendoza"               },
-       { "warst", 1, -10800, "America/Argentina/Jujuy"       },
-       { "warst", 1, -10800, "America/Argentina/Mendoza"     },
-       { "warst", 1, -10800, "America/Argentina/San_Luis"    },
-       { "warst", 1, -10800, "America/Jujuy"                 },
-       { "wart",  0, -14400, "America/Mendoza"               },
-       { "wart",  0, -14400, "America/Argentina/Catamarca"   },
-       { "wart",  0, -14400, "America/Argentina/ComodRivadavia" },
-       { "wart",  0, -14400, "America/Argentina/Cordoba"     },
-       { "wart",  0, -14400, "America/Argentina/Jujuy"       },
-       { "wart",  0, -14400, "America/Argentina/La_Rioja"    },
-       { "wart",  0, -14400, "America/Argentina/Mendoza"     },
-       { "wart",  0, -14400, "America/Argentina/Rio_Gallegos" },
-       { "wart",  0, -14400, "America/Argentina/Salta"       },
-       { "wart",  0, -14400, "America/Argentina/San_Juan"    },
-       { "wart",  0, -14400, "America/Argentina/San_Luis"    },
-       { "wart",  0, -14400, "America/Argentina/Tucuman"     },
-       { "wart",  0, -14400, "America/Argentina/Ushuaia"     },
-       { "wart",  0, -14400, "America/Catamarca"             },
-       { "wart",  0, -14400, "America/Cordoba"               },
-       { "wart",  0, -14400, "America/Jujuy"                 },
-       { "wart",  0, -14400, "America/Rosario"               },
        { "wast",  1,   7200, "Africa/Windhoek"               },
        { "wast",  1,   7200, "Africa/Ndjamena"               },
        { "wat",   0,   3600, "Africa/Brazzaville"            },
-       { "wat",   0,  -3600, "Africa/Bissau"                 },
-       { "wat",   0,  -3600, "Africa/El_Aaiun"               },
        { "wat",   0,   3600, "Africa/Bangui"                 },
        { "wat",   0,   3600, "Africa/Douala"                 },
        { "wat",   0,   3600, "Africa/Kinshasa"               },
        { "wet",   0,      0, "Europe/Luxembourg"             },
        { "wet",   0,      0, "Europe/Madrid"                 },
        { "wet",   0,      0, "Europe/Monaco"                 },
-       { "wft",   0,  43200, "Pacific/Wallis"                },
-       { "wgst",  1,  -7200, "America/Godthab"               },
-       { "wgst",  1,  -7200, "America/Danmarkshavn"          },
-       { "wgt",   0, -10800, "America/Godthab"               },
-       { "wgt",   0, -10800, "America/Danmarkshavn"          },
        { "wib",   0,  25200, "Asia/Jakarta"                  },
        { "wib",   0,  25200, "Asia/Pontianak"                },
-       { "wib",   0,  27000, "Asia/Jakarta"                  },
-       { "wib",   0,  27000, "Asia/Pontianak"                },
-       { "wib",   0,  28800, "Asia/Jakarta"                  },
-       { "wib",   0,  28800, "Asia/Pontianak"                },
-       { "wita",  0,  28800, "Asia/Dili"                     },
        { "wita",  0,  28800, "Asia/Makassar"                 },
        { "wita",  0,  28800, "Asia/Pontianak"                },
        { "wita",  0,  28800, "Asia/Ujung_Pandang"            },
        { "wit",   0,  32400, "Asia/Jayapura"                 },
        { "wmt",   0,   5040, "Europe/Vilnius"                },
        { "wmt",   0,   5040, "Europe/Warsaw"                 },
-       { "wsdt",  1,  50400, "Pacific/Apia"                  },
-       { "wsst",  0, -41400, "Pacific/Apia"                  },
-       { "wsst",  0,  46800, "Pacific/Apia"                  },
-       { "xjt",   0,  21600, "Asia/Kashgar"                  },
-       { "xjt",   0,  21600, "Asia/Urumqi"                   },
        { "yddt",  1, -25200, "America/Dawson"                },
        { "yddt",  1, -25200, "America/Whitehorse"            },
        { "yddt",  1, -25200, "Canada/Yukon"                  },
index d8597f14f99158666eb4adf05b8307b4d7004c0c..42a59cfaa65538aa30f57a126bdbceee1fe66fe8 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 #include "timelib.h"
+#include "timelib_private.h"
 
 /*                                    jan  feb  mrt  apr  may  jun  jul  aug  sep  oct  nov  dec */
 static int month_tab_leap[12]     = {  -1,  30,  59,  90, 120, 151, 181, 212, 243, 273, 304, 334 };
@@ -32,14 +33,14 @@ static int month_tab[12]          = {   0,  31,  59,  90, 120, 151, 181, 212, 24
 static int days_in_month_leap[13] = {  31,  31,  29,  31,  30,  31,  30,  31,  31,  30,  31,  30,  31 };
 static int days_in_month[13]      = {  31,  31,  28,  31,  30,  31,  30,  31,  31,  30,  31,  30,  31 };
 
-static void do_range_limit_fraction(double *fraction, timelib_sll *seconds)
+static void do_range_limit_fraction(timelib_sll *fraction, timelib_sll *seconds)
 {
        if (*fraction < 0) {
-               *fraction += 1;
+               *fraction += 1000000;
                *seconds -= 1;
        }
-       if (*fraction > 1) {
-               *fraction -= 1;
+       if (*fraction > 1000000) {
+               *fraction -= 1000000;
                *seconds += 1;
        }
 }
@@ -202,14 +203,47 @@ void timelib_do_rel_normalize(timelib_time *base, timelib_rel_time *rt)
        do_range_limit(0, 12, 12, &rt->m, &rt->y);
 }
 
+#define EPOCH_DAY 719468
+
+static void magic_date_calc(timelib_time *time)
+{
+       timelib_sll y, ddd, mi, mm, dd, g;
+
+       /* The algorithm doesn't work before the year 1 */
+       if (time->d < -719498) {
+               return;
+       }
+
+       g = time->d + EPOCH_DAY - 1;
+
+       y = (10000 * g + 14780) / 3652425;
+       ddd = g - ((365*y) + (y/4) - (y/100) + (y/400));
+       if (ddd < 0) {
+               y--;
+               ddd = g - ((365*y) + (y/4) - (y/100) + (y/400));
+       }
+       mi = (100 * ddd + 52) / 3060;
+       mm = ((mi + 2) % 12) + 1;
+       y = y + (mi + 2) / 12;
+       dd = ddd - ((mi * 306 + 5) / 10) + 1;
+       time->y = y;
+       time->m = mm;
+       time->d = dd;
+}
+
 void timelib_do_normalize(timelib_time* time)
 {
-       if (time->f != TIMELIB_UNSET) do_range_limit_fraction(&time->f, &time->s);
+       if (time->us != TIMELIB_UNSET) do_range_limit_fraction(&time->us, &time->s);
        if (time->s != TIMELIB_UNSET) do_range_limit(0, 60, 60, &time->s, &time->i);
        if (time->s != TIMELIB_UNSET) do_range_limit(0, 60, 60, &time->i, &time->h);
        if (time->s != TIMELIB_UNSET) do_range_limit(0, 24, 24, &time->h, &time->d);
        do_range_limit(1, 13, 12, &time->m, &time->y);
 
+       /* Short cut if we're doing things against the Epoch */
+       if (time->y == 1970 && time->m == 1 && time->d != 1) {
+               magic_date_calc(time);
+       }
+
        do {} while (do_range_limit_days(&time->y, &time->m, &time->d));
        do_range_limit(1, 13, 12, &time->m, &time->y);
 }
@@ -222,7 +256,7 @@ static void do_adjust_relative(timelib_time* time)
        timelib_do_normalize(time);
 
        if (time->have_relative) {
-               time->f += time->relative.f;
+               time->us += time->relative.us;
 
                time->s += time->relative.s;
                time->i += time->relative.i;
@@ -399,16 +433,15 @@ static timelib_sll do_adjust_timezone(timelib_time *tz, timelib_tzinfo *tzi)
                case TIMELIB_ZONETYPE_OFFSET:
 
                        tz->is_localtime = 1;
-                       return tz->z * 60;
+                       return -tz->z;
                        break;
 
                case TIMELIB_ZONETYPE_ABBR: {
                        timelib_sll tmp;
 
                        tz->is_localtime = 1;
-                       tmp = tz->z;
-                       tmp -= tz->dst * 60;
-                       tmp *= 60;
+                       tmp = -tz->z;
+                       tmp -= tz->dst * 3600;
                        return tmp;
                        }
                        break;
@@ -422,19 +455,19 @@ static timelib_sll do_adjust_timezone(timelib_time *tz, timelib_tzinfo *tzi)
                        if (tzi) {
                                timelib_time_offset *before, *after;
                                timelib_sll          tmp;
-                               int                  in_transistion;
+                               int                  in_transition;
 
                                tz->is_localtime = 1;
                                before = timelib_get_time_zone_info(tz->sse, tzi);
                                after = timelib_get_time_zone_info(tz->sse - before->offset, tzi);
                                timelib_set_timezone(tz, tzi);
 
-                               in_transistion = (
-                                       ((tz->sse - after->offset) >= (after->transistion_time + (before->offset - after->offset))) &&
-                                       ((tz->sse - after->offset) < after->transistion_time)
+                               in_transition = (
+                                       ((tz->sse - after->offset) >= (after->transition_time + (before->offset - after->offset))) &&
+                                       ((tz->sse - after->offset) < after->transition_time)
                                );
 
-                               if ((before->offset != after->offset) && !in_transistion) {
+                               if ((before->offset != after->offset) && !in_transition) {
                                        tmp = -after->offset;
                                } else {
                                        tmp = -tz->z;
index e46a0af57dcbe3e143ee22167a9e59e090b7a75d..43bfe818f55d7c7943f920cc768ba9622113d89d 100644 (file)
  */
 
 #include "timelib.h"
-
-#include <stdio.h>
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
+#include "timelib_private.h"
 
 static int month_tab_leap[12] = { -1, 30, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
 static int month_tab[12] =      { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
@@ -60,7 +49,7 @@ void timelib_unixtime2gmt(timelib_time* tm, timelib_sll ts)
        if (ts >= 0) {
                tmp_days = days + 1;
 
-               if (tmp_days >= DAYS_PER_LYEAR_PERIOD || tmp_days <= -DAYS_PER_LYEAR_PERIOD) {
+               if (tmp_days > DAYS_PER_LYEAR_PERIOD || tmp_days <= -DAYS_PER_LYEAR_PERIOD) {
                        cur_year += YEARS_PER_LYEAR_PERIOD * (tmp_days / DAYS_PER_LYEAR_PERIOD);
                        tmp_days -= DAYS_PER_LYEAR_PERIOD * (tmp_days / DAYS_PER_LYEAR_PERIOD);
                }
@@ -149,7 +138,7 @@ void timelib_update_from_sse(timelib_time *tm)
        switch (tm->zone_type) {
                case TIMELIB_ZONETYPE_ABBR:
                case TIMELIB_ZONETYPE_OFFSET: {
-                       timelib_unixtime2gmt(tm, tm->sse - (tm->z * 60) + (tm->dst * 3600));
+                       timelib_unixtime2gmt(tm, tm->sse + tm->z + (tm->dst * 3600));
 
                        goto cleanup;
                }
@@ -187,7 +176,7 @@ void timelib_unixtime2local(timelib_time *tm, timelib_sll ts)
                        int z = tm->z;
                        signed int dst = tm->dst;
 
-                       timelib_unixtime2gmt(tm, ts - (tm->z * 60) + (tm->dst * 3600));
+                       timelib_unixtime2gmt(tm, ts + tm->z + (tm->dst * 3600));
 
                        tm->sse = ts;
                        tm->z = z;
@@ -295,10 +284,3 @@ int timelib_apply_localtime(timelib_time *t, unsigned int localtime)
        }
        return 0;
 }
-
-#if HAVE_GETTIMEOFDAY
-void timelib_set_fraction_from_timeval(timelib_time *t, struct timeval tp)
-{
-       t->f = (double) tp.tv_usec / 1000000;
-}
-#endif
index fb98fab893445aebb4932442029e1db1cb3d0090..9188b294703205a7c09f9e43aafe7965a8548062 100644 (file)
@@ -29,6 +29,7 @@
 #include "php_date.h"
 #include "zend_interfaces.h"
 #include "lib/timelib.h"
+#include "lib/timelib_private.h"
 #ifndef PHP_WIN32
 #include <time.h>
 #else
@@ -934,6 +935,7 @@ PHP_MINFO_FUNCTION(date)
 static timelib_tzinfo *php_date_parse_tzfile(char *formal_tzname, const timelib_tzdb *tzdb)
 {
        timelib_tzinfo *tzi;
+       int dummy_error_code;
 
        if(!DATEG(tzcache)) {
                ALLOC_HASHTABLE(DATEG(tzcache));
@@ -944,14 +946,14 @@ static timelib_tzinfo *php_date_parse_tzfile(char *formal_tzname, const timelib_
                return tzi;
        }
 
-       tzi = timelib_parse_tzfile(formal_tzname, tzdb);
+       tzi = timelib_parse_tzfile(formal_tzname, tzdb, &dummy_error_code);
        if (tzi) {
                zend_hash_str_add_ptr(DATEG(tzcache), formal_tzname, strlen(formal_tzname), tzi);
        }
        return tzi;
 }
 
-timelib_tzinfo *php_date_parse_tzfile_wrapper(char *formal_tzname, const timelib_tzdb *tzdb)
+timelib_tzinfo *php_date_parse_tzfile_wrapper(char *formal_tzname, const timelib_tzdb *tzdb, int *dummy_error_code)
 {
        return php_date_parse_tzfile(formal_tzname, tzdb);
 }
@@ -1103,13 +1105,13 @@ static zend_string *date_format(char *format, size_t format_len, timelib_time *t
        if (localtime) {
                if (t->zone_type == TIMELIB_ZONETYPE_ABBR) {
                        offset = timelib_time_offset_ctor();
-                       offset->offset = (t->z - (t->dst * 60)) * -60;
+                       offset->offset = (t->z + (t->dst * 3600));
                        offset->leap_secs = 0;
                        offset->is_dst = t->dst;
                        offset->abbr = timelib_strdup(t->tz_abbr);
                } else if (t->zone_type == TIMELIB_ZONETYPE_OFFSET) {
                        offset = timelib_time_offset_ctor();
-                       offset->offset = (t->z) * -60;
+                       offset->offset = (t->z);
                        offset->leap_secs = 0;
                        offset->is_dst = 0;
                        offset->abbr = timelib_malloc(9); /* GMT±xxxx\0 */
@@ -1174,8 +1176,8 @@ static zend_string *date_format(char *format, size_t format_len, timelib_time *t
                        case 'H': length = slprintf(buffer, 32, "%02d", (int) t->h); break;
                        case 'i': length = slprintf(buffer, 32, "%02d", (int) t->i); break;
                        case 's': length = slprintf(buffer, 32, "%02d", (int) t->s); break;
-                       case 'u': length = slprintf(buffer, 32, "%06d", (int) floor(t->f * 1000000 + 0.5)); break;
-                       case 'v': length = slprintf(buffer, 32, "%03d", (int) floor(t->f * 1000 + 0.5)); break;
+                       case 'u': length = slprintf(buffer, 32, "%06d", (int) floor(t->us)); break;
+                       case 'v': length = slprintf(buffer, 32, "%03d", (int) floor(t->us / 1000)); break;
 
                        /* timezone */
                        case 'I': length = slprintf(buffer, 32, "%d", localtime ? offset->is_dst : 0); break;
@@ -1313,13 +1315,13 @@ PHPAPI int php_idate(char format, time_t ts, int localtime)
        if (!localtime) {
                if (t->zone_type == TIMELIB_ZONETYPE_ABBR) {
                        offset = timelib_time_offset_ctor();
-                       offset->offset = (t->z - (t->dst * 60)) * -60;
+                       offset->offset = (t->z + (t->dst * 3600));
                        offset->leap_secs = 0;
                        offset->is_dst = t->dst;
                        offset->abbr = timelib_strdup(t->tz_abbr);
                } else if (t->zone_type == TIMELIB_ZONETYPE_OFFSET) {
                        offset = timelib_time_offset_ctor();
-                       offset->offset = (t->z - (t->dst * 60)) * -60;
+                       offset->offset = (t->z + (t->dst * 3600));
                        offset->leap_secs = 0;
                        offset->is_dst = t->dst;
                        offset->abbr = timelib_malloc(9); /* GMT±xxxx\0 */
@@ -2267,9 +2269,9 @@ static HashTable *date_object_get_properties(zval *object) /* {{{ */
                                timelib_sll utc_offset = dateobj->time->z;
 
                                ZSTR_LEN(tmpstr) = snprintf(ZSTR_VAL(tmpstr), sizeof("+05:00"), "%c%02d:%02d",
-                                       utc_offset > 0 ? '-' : '+',
-                                       abs(utc_offset / 60),
-                                       abs((utc_offset % 60)));
+                                       utc_offset < 0 ? '-' : '+',
+                                       abs(utc_offset / 3600),
+                                       abs(((utc_offset % 3600) / 60)));
 
                                ZVAL_NEW_STR(&zv, tmpstr);
                                }
@@ -2359,9 +2361,9 @@ static HashTable *date_object_get_properties_timezone(zval *object) /* {{{ */
                        zend_string *tmpstr = zend_string_alloc(sizeof("UTC+05:00")-1, 0);
 
                        ZSTR_LEN(tmpstr) = snprintf(ZSTR_VAL(tmpstr), sizeof("+05:00"), "%c%02d:%02d",
-                       tzobj->tzi.utc_offset > 0 ? '-' : '+',
-                       abs(tzobj->tzi.utc_offset / 60),
-                       abs((tzobj->tzi.utc_offset % 60)));
+                               tzobj->tzi.utc_offset < 0 ? '-' : '+',
+                               abs(tzobj->tzi.utc_offset / 3600),
+                               abs(((tzobj->tzi.utc_offset % 3600) / 60)));
 
                        ZVAL_NEW_STR(&zv, tmpstr);
                        }
@@ -2441,7 +2443,7 @@ static HashTable *date_object_get_properties_interval(zval *object) /* {{{ */
        PHP_DATE_INTERVAL_ADD_PROPERTY("h", h);
        PHP_DATE_INTERVAL_ADD_PROPERTY("i", i);
        PHP_DATE_INTERVAL_ADD_PROPERTY("s", s);
-       ZVAL_DOUBLE(&zv, (double)intervalobj->diff->f);
+       ZVAL_DOUBLE(&zv, (double)intervalobj->diff->us / 1000000.0);
        zend_hash_str_update(props, "f", sizeof("f") - 1, &zv);
        PHP_DATE_INTERVAL_ADD_PROPERTY("weekday", weekday);
        PHP_DATE_INTERVAL_ADD_PROPERTY("weekday_behavior", weekday_behavior);
@@ -2577,7 +2579,7 @@ static void update_errors_warnings(timelib_error_container *last_errors) /* {{{
 
 static void php_date_set_time_fraction(timelib_time *time, int microseconds)
 {
-       time->f = (double) microseconds / 1000000;
+       time->us = microseconds;
 }
 
 static void php_date_get_current_time_with_fraction(time_t *sec, suseconds_t *usec)
@@ -3000,10 +3002,10 @@ void php_date_do_return_parsed_time(INTERNAL_FUNCTION_PARAMETERS, timelib_time *
        PHP_DATE_PARSE_DATE_SET_TIME_ELEMENT(minute,    i);
        PHP_DATE_PARSE_DATE_SET_TIME_ELEMENT(second,    s);
 
-       if (parsed_time->f == -99999) {
+       if (parsed_time->us == -99999) {
                add_assoc_bool(return_value, "fraction", 0);
        } else {
-               add_assoc_double(return_value, "fraction", parsed_time->f);
+               add_assoc_double(return_value, "fraction", (double)parsed_time->us / 1000000.0);
        }
 
        zval_from_error_container(return_value, error);
@@ -3167,8 +3169,8 @@ static int php_date_modify(zval *object, char *modify, size_t modify_len) /* {{{
                }
        }
 
-       if (tmp_time->f != -99999) {
-               dateobj->time->f = tmp_time->f;
+       if (tmp_time->us != -99999) {
+               dateobj->time->us = tmp_time->us;
        }
 
        timelib_time_dtor(tmp_time);
@@ -3457,10 +3459,10 @@ PHP_FUNCTION(date_offset_get)
                                timelib_time_offset_dtor(offset);
                                break;
                        case TIMELIB_ZONETYPE_OFFSET:
-                               RETVAL_LONG(dateobj->time->z * -60);
+                               RETVAL_LONG(dateobj->time->z);
                                break;
                        case TIMELIB_ZONETYPE_ABBR:
-                               RETVAL_LONG((dateobj->time->z - (60 * dateobj->time->dst)) * -60);
+                               RETVAL_LONG((dateobj->time->z + (3600 * dateobj->time->dst)));
                                break;
                }
                return;
@@ -3479,7 +3481,7 @@ static void php_date_time_set(zval *object, zend_long h, zend_long i, zend_long
        dateobj->time->h = h;
        dateobj->time->i = i;
        dateobj->time->s = s;
-       dateobj->time->f = ((double) ms) / 1000000;
+       dateobj->time->us = ms;
        timelib_update_ts(dateobj->time, NULL);
 } /* }}} */
 
@@ -3877,9 +3879,9 @@ PHP_FUNCTION(timezone_name_get)
                        timelib_sll utc_offset = tzobj->tzi.utc_offset;
 
                        ZSTR_LEN(tmpstr) = snprintf(ZSTR_VAL(tmpstr), sizeof("+05:00"), "%c%02d:%02d",
-                               utc_offset > 0 ? '-' : '+',
-                               abs(utc_offset / 60),
-                               abs((utc_offset % 60)));
+                               utc_offset < 0 ? '-' : '+',
+                               abs(utc_offset / 3600),
+                               abs(((utc_offset % 3600) / 60)));
 
                        RETURN_NEW_STR(tmpstr);
                        }
@@ -3940,10 +3942,10 @@ PHP_FUNCTION(timezone_offset_get)
                        timelib_time_offset_dtor(offset);
                        break;
                case TIMELIB_ZONETYPE_OFFSET:
-                       RETURN_LONG(tzobj->tzi.utc_offset * -60);
+                       RETURN_LONG(tzobj->tzi.utc_offset);
                        break;
                case TIMELIB_ZONETYPE_ABBR:
-                       RETURN_LONG((tzobj->tzi.z.utc_offset - (tzobj->tzi.z.dst*60)) * -60);
+                       RETURN_LONG(tzobj->tzi.z.utc_offset + (tzobj->tzi.z.dst * 3600));
                        break;
        }
 }
@@ -4129,7 +4131,7 @@ zval *date_interval_read_property(zval *object, zval *member, int type, void **c
                GET_VALUE_FROM_STRUCT(i, "i");
                GET_VALUE_FROM_STRUCT(s, "s");
                if (strcmp(Z_STRVAL_P(member), "f") == 0) {
-                       fvalue = obj->diff->f;
+                       fvalue = obj->diff->us / 1000000;
                        break;
                }
                GET_VALUE_FROM_STRUCT(invert, "invert");
@@ -4200,7 +4202,7 @@ void date_interval_write_property(zval *object, zval *member, zval *value, void
                SET_VALUE_FROM_STRUCT(i, "i");
                SET_VALUE_FROM_STRUCT(s, "s");
                if (strcmp(Z_STRVAL_P(member), "f") == 0) {
-                       obj->diff->f = zval_get_double(value);
+                       obj->diff->us = zval_get_double(value) * 1000000;
                        break;
                }
                SET_VALUE_FROM_STRUCT(invert, "invert");
@@ -4283,7 +4285,14 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter
        PHP_DATE_INTERVAL_READ_PROPERTY("h", h, timelib_sll, -1)
        PHP_DATE_INTERVAL_READ_PROPERTY("i", i, timelib_sll, -1)
        PHP_DATE_INTERVAL_READ_PROPERTY("s", s, timelib_sll, -1)
-       PHP_DATE_INTERVAL_READ_PROPERTY_DOUBLE("f", f, -1)
+       do {
+               zval *z_arg = zend_hash_str_find(myht, "f", sizeof("f") - 1);
+               if (z_arg) {
+                       (*intobj)->diff->us = ((double)zval_get_double(z_arg) * 1000000);
+               } else {
+                       (*intobj)->diff->us = (double) -1000000;
+               }
+       } while (0);
        PHP_DATE_INTERVAL_READ_PROPERTY("weekday", weekday, int, -1)
        PHP_DATE_INTERVAL_READ_PROPERTY("weekday_behavior", weekday_behavior, int, -1)
        PHP_DATE_INTERVAL_READ_PROPERTY("first_last_day_of", first_last_day_of, int, -1)
@@ -4393,8 +4402,8 @@ static zend_string *date_interval_format(char *format, size_t format_len, timeli
                                case 'S': length = slprintf(buffer, 32, "%02" ZEND_LONG_FMT_SPEC, (zend_long) t->s); break;
                                case 's': length = slprintf(buffer, 32, ZEND_LONG_FMT, (zend_long) t->s); break;
 
-                               case 'F': length = slprintf(buffer, 32, "%06" ZEND_LONG_FMT_SPEC, (zend_long) (t->f * 1000000)); break;
-                               case 'f': length = slprintf(buffer, 32, ZEND_LONG_FMT, (zend_long) (t->f * 1000000)); break;
+                               case 'F': length = slprintf(buffer, 32, "%06" ZEND_LONG_FMT_SPEC, (zend_long) t->us); break;
+                               case 'f': length = slprintf(buffer, 32, ZEND_LONG_FMT, (zend_long) t->us); break;
 
                                case 'a': {
                                        if ((int) t->days != -99999) {
index 2dec10ad57b67d139999abc8c9e47baf2b489c04..011f0460f3a171b7da9fe938d983048aaa2937e6 100644 (file)
@@ -52,13 +52,6 @@ Array
     [comments] => %s
 )
 Array
-(
-    [country_code] => %s
-    [latitude] => %f
-    [longitude] => %f
-    [comments] => 
-)
-Array
 (
     [country_code] => %s
     [latitude] => %f
index 1cbaaef377e17cadd3f831adf5f6ba471c3024d3..5d68abe05f4afc7267788ea0cc6227d921407a53 100644 (file)
@@ -29,17 +29,8 @@ string(5) "array"
 int(%d)
 
 -- Format a sample entry --
-array(17) {
+array(12) {
   [0]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(18) "America/Porto_Acre"
-  }
-  [1]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -48,7 +39,7 @@ array(17) {
     ["timezone_id"]=>
     string(18) "Australia/Adelaide"
   }
-  [2]=>
+  [1]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -57,34 +48,7 @@ array(17) {
     ["timezone_id"]=>
     string(18) "Australia/Adelaide"
   }
-  [3]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(16) "America/Eirunepe"
-  }
-  [4]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(18) "America/Rio_Branco"
-  }
-  [5]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(11) "Brazil/Acre"
-  }
-  [6]=>
+  [2]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -93,7 +57,7 @@ array(17) {
     ["timezone_id"]=>
     string(21) "Australia/Broken_Hill"
   }
-  [7]=>
+  [3]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -102,7 +66,7 @@ array(17) {
     ["timezone_id"]=>
     string(16) "Australia/Darwin"
   }
-  [8]=>
+  [4]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -111,7 +75,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/North"
   }
-  [9]=>
+  [5]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -120,7 +84,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/South"
   }
-  [10]=>
+  [6]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -129,16 +93,7 @@ array(17) {
     ["timezone_id"]=>
     string(20) "Australia/Yancowinna"
   }
-  [11]=>
-  array(3) {
-    ["dst"]=>
-    bool(false)
-    ["offset"]=>
-    int(34200)
-    ["timezone_id"]=>
-    string(13) "Asia/Jayapura"
-  }
-  [12]=>
+  [7]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -147,7 +102,7 @@ array(17) {
     ["timezone_id"]=>
     string(21) "Australia/Broken_Hill"
   }
-  [13]=>
+  [8]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -156,7 +111,7 @@ array(17) {
     ["timezone_id"]=>
     string(16) "Australia/Darwin"
   }
-  [14]=>
+  [9]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -165,7 +120,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/North"
   }
-  [15]=>
+  [10]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -174,7 +129,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/South"
   }
-  [16]=>
+  [11]=>
   array(3) {
     ["dst"]=>
     bool(false)
index 03f5205daa1fcf09a50aa2e84c8a1bc0ce692bdb..84d979cf71e723e4e5ba23e02c11a8da8eb2b1f7 100644 (file)
@@ -42,7 +42,7 @@ array(16) {
   ["zone_type"]=>
   int(2)
   ["zone"]=>
-  int(-60)
+  int(3600)
   ["is_dst"]=>
   bool(false)
   ["tz_abbr"]=>
index 022a1861b49cb845378bbde8606ae2e437bb8f89..076d0e9a24dcdee23a3618f6cbc8296ab5d4c530 100644 (file)
@@ -40,20 +40,20 @@ echo "\n";
 NULL
 NULL
 
-int(-60)
+int(3600)
 string(1) "A"
 
-int(-60)
+int(3600)
 string(1) "A"
 
-int(-60)
+int(3600)
 string(1) "A"
 
-int(-60)
+int(3600)
 string(1) "A"
 
-int(-60)
+int(3600)
 string(1) "A"
 
-int(-60)
+int(3600)
 string(1) "A"
index 20733c686a0b64f6a2af4dc198551f23dac9b9f2..a312b52260cf4196d32e4fd352f9cee5f7fceec5 100644 (file)
@@ -5,7 +5,7 @@ date.timezone=Asia/Singapore
 --FILE--
 <?php
 
-print strtotime('2008-05-23 00:00:00 SGT');
+print strtotime('2008-05-23 00:00:00 +08');
 print "\n";
 print strtotime('2008-05-23 00:00:00');
 
index 93b7715fe523b19505a6e4a8ee8117ff17c426ec..3f0d6953d25bc6c8ebe893c389e94b11f4a90b77 100644 (file)
@@ -7,10 +7,10 @@ date_default_timezone_set('UTC');
 $earlyDate1 = DateTime::createFromFormat('U.u', '1.8642')->modify('-5 seconds');
 $earlyDate2 = DateTime::createFromFormat('U.u', '1.2768')->modify('-5 seconds');
 $earlyDate3 = DateTime::createFromFormat('U.u', '1.2768')->modify('-5 seconds');
-
+// var_dump($earlyDate1, $earlyDate2, $earlyDate3);
 var_dump($earlyDate1 == $earlyDate2);
-var_dump($earlyDate1 < $earlyDate2);
-var_dump($earlyDate2 > $earlyDate1);
+var_dump($earlyDate1 > $earlyDate2);
+var_dump($earlyDate2 < $earlyDate1);
 var_dump($earlyDate2 == $earlyDate3);
 --EXPECT--
 bool(false)
index fd1394c77a68e1cb7e0a16825a2ee952eddc1219..73fe8257238ee948debc0ca59882a9d52abcd77f 100644 (file)
@@ -104,7 +104,7 @@ array(15) {
   ["zone_type"]=>
   int(1)
   ["zone"]=>
-  int(720)
+  int(-43200)
   ["is_dst"]=>
   bool(false)
 }
@@ -228,7 +228,7 @@ array(15) {
   ["zone_type"]=>
   int(1)
   ["zone"]=>
-  int(180)
+  int(-10800)
   ["is_dst"]=>
   bool(false)
 }
index e4f893baafc659d11f8d23b2498b68cd05a4fd89..44b6d112e4d1c80c2fe99e01288f1052310d7e75 100644 (file)
@@ -10,22 +10,22 @@ echo "Done\n";
 --EXPECTF--    
 array(9) {
   ["sunrise"]=>
-  int(1165897782)
+  int(1165897761)
   ["sunset"]=>
-  int(1165934168)
+  int(1165934160)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165896176)
+  int(1165896156)
   ["civil_twilight_end"]=>
-  int(1165935773)
+  int(1165935765)
   ["nautical_twilight_begin"]=>
-  int(1165894353)
+  int(1165894334)
   ["nautical_twilight_end"]=>
-  int(1165937597)
+  int(1165937588)
   ["astronomical_twilight_begin"]=>
-  int(1165892570)
+  int(1165892551)
   ["astronomical_twilight_end"]=>
-  int(1165939380)
+  int(1165939371)
 }
 Done
index 6233392da4e6b73cf99137bf67368ed2f989a031..4df725187decbb0eca64738db542975fc9d2f81d 100644 (file)
@@ -11,13 +11,13 @@ foreach ($sun_info as $key => $elem )
 echo "Done\n";
 ?>
 --EXPECTF--
-2007-04-13 06:12:19 CEST sunrise
-2007-04-13 20:31:50 CEST sunset
-2007-04-13 13:22:05 CEST transit
-2007-04-13 05:28:03 CEST civil_twilight_begin
-2007-04-13 21:16:06 CEST civil_twilight_end
-2007-04-13 04:30:08 CEST nautical_twilight_begin
-2007-04-13 22:14:01 CEST nautical_twilight_end
-2007-04-13 03:14:36 CEST astronomical_twilight_begin
-2007-04-13 23:29:33 CEST astronomical_twilight_end
+2007-04-13 06:13:31 CEST sunrise
+2007-04-13 20:30:51 CEST sunset
+2007-04-13 13:22:11 CEST transit
+2007-04-13 05:29:22 CEST civil_twilight_begin
+2007-04-13 21:15:00 CEST civil_twilight_end
+2007-04-13 04:31:43 CEST nautical_twilight_begin
+2007-04-13 22:12:39 CEST nautical_twilight_end
+2007-04-13 03:17:01 CEST astronomical_twilight_begin
+2007-04-13 23:27:21 CEST astronomical_twilight_end
 Done
index 3ff7a06df1f8912453bccce68c138aa9ad711516..7e18d2da41573f84d2450df39e1a6b8a51f6bf3d 100644 (file)
@@ -22,7 +22,7 @@ echo "Done\n";
 --EXPECTF--
 sunrise: 21:00:00
 sunset: 21:00:00
-transit: 10:04:02
+transit: 10:03:48
 civil_twilight_begin: 21:00:00
 civil_twilight_end: 21:00:00
 nautical_twilight_begin: 21:00:00
@@ -32,11 +32,11 @@ astronomical_twilight_end: 21:00:00
 
 sunrise: 21:00:01
 sunset: 21:00:01
-transit: 08:52:30
+transit: 08:52:44
 civil_twilight_begin: 21:00:01
 civil_twilight_end: 21:00:01
 nautical_twilight_begin: 21:00:01
 nautical_twilight_end: 21:00:01
 astronomical_twilight_begin: 21:00:01
 astronomical_twilight_end: 21:00:01
-Done
\ No newline at end of file
+Done
index 9c056e9dc0d71d9d8263f8e7fbbb99abfd58f3e1..1faafea1d970bc1f441a821c896377adf69e7226 100644 (file)
@@ -84,331 +84,331 @@ foreach($inputs as $input) {
 -- Iteration 1 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 2 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 3 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 4 --
 array(9) {
   ["sunrise"]=>
-  int(-69665)
+  int(-69672)
   ["sunset"]=>
-  int(-33260)
+  int(-33281)
   ["transit"]=>
-  int(-51462)
+  int(-51476)
   ["civil_twilight_begin"]=>
-  int(-71269)
+  int(-71277)
   ["civil_twilight_end"]=>
-  int(-31655)
+  int(-31675)
   ["nautical_twilight_begin"]=>
-  int(-73092)
+  int(-73100)
   ["nautical_twilight_end"]=>
-  int(-29832)
+  int(-29852)
   ["astronomical_twilight_begin"]=>
-  int(-74874)
+  int(-74883)
   ["astronomical_twilight_end"]=>
-  int(-28050)
+  int(-28069)
 }
 
 -- Iteration 5 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 6 --
 array(9) {
   ["sunrise"]=>
-  int(-69665)
+  int(-69672)
   ["sunset"]=>
-  int(-33260)
+  int(-33281)
   ["transit"]=>
-  int(-51462)
+  int(-51476)
   ["civil_twilight_begin"]=>
-  int(-71269)
+  int(-71277)
   ["civil_twilight_end"]=>
-  int(-31655)
+  int(-31675)
   ["nautical_twilight_begin"]=>
-  int(-73092)
+  int(-73100)
   ["nautical_twilight_end"]=>
-  int(-29832)
+  int(-29852)
   ["astronomical_twilight_begin"]=>
-  int(-74874)
+  int(-74883)
   ["astronomical_twilight_end"]=>
-  int(-28050)
+  int(-28069)
 }
 
 -- Iteration 7 --
 array(9) {
   ["sunrise"]=>
-  int(1226363)
+  int(1226368)
   ["sunset"]=>
-  int(1263468)
+  int(1263442)
   ["transit"]=>
-  int(1244916)
+  int(1244905)
   ["civil_twilight_begin"]=>
-  int(1224788)
+  int(1224792)
   ["civil_twilight_end"]=>
-  int(1265044)
+  int(1265019)
   ["nautical_twilight_begin"]=>
-  int(1222993)
+  int(1222996)
   ["nautical_twilight_end"]=>
-  int(1266839)
+  int(1266815)
   ["astronomical_twilight_begin"]=>
-  int(1221233)
+  int(1221234)
   ["astronomical_twilight_end"]=>
-  int(1268599)
+  int(1268576)
 }
 
 -- Iteration 8 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 9 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 10 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 11 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 12 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 13 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 14 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 15 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 16 --
@@ -444,49 +444,49 @@ bool(false)
 -- Iteration 22 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 23 --
 array(9) {
   ["sunrise"]=>
-  int(16748)
+  int(16742)
   ["sunset"]=>
-  int(53182)
+  int(53161)
   ["transit"]=>
-  int(34965)
+  int(34951)
   ["civil_twilight_begin"]=>
-  int(15145)
+  int(15138)
   ["civil_twilight_end"]=>
-  int(54786)
+  int(54765)
   ["nautical_twilight_begin"]=>
-  int(13324)
+  int(13316)
   ["nautical_twilight_end"]=>
-  int(56607)
+  int(56587)
   ["astronomical_twilight_begin"]=>
-  int(11542)
+  int(11534)
   ["astronomical_twilight_end"]=>
-  int(58389)
+  int(58369)
 }
 
 -- Iteration 24 --
 
 Warning: date_sun_info() expects parameter 1 to be integer, resource given in %s on line %d
 bool(false)
-===Done===
\ No newline at end of file
+===Done===
index 61f9b29bf8eb59f7ec142897d85c023d57903f74..8c8267a2342606d95af87d193e4c062148a98e7d 100644 (file)
@@ -84,45 +84,45 @@ foreach($inputs as $input) {
 -- Iteration 1 --
 array(9) {
   ["sunrise"]=>
-  int(1165894152)
+  int(1165894138)
   ["sunset"]=>
-  int(1165937798)
+  int(1165937784)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892809)
+  int(1165892795)
   ["civil_twilight_end"]=>
-  int(1165939141)
+  int(1165939127)
   ["nautical_twilight_begin"]=>
-  int(1165891239)
+  int(1165891226)
   ["nautical_twilight_end"]=>
-  int(1165940710)
+  int(1165940696)
   ["astronomical_twilight_begin"]=>
-  int(1165889663)
+  int(1165889650)
   ["astronomical_twilight_end"]=>
-  int(1165942287)
+  int(1165942271)
 }
 
 -- Iteration 2 --
 array(9) {
   ["sunrise"]=>
-  int(1165894254)
+  int(1165894240)
   ["sunset"]=>
-  int(1165937695)
+  int(1165937681)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892911)
+  int(1165892898)
   ["civil_twilight_end"]=>
-  int(1165939038)
+  int(1165939024)
   ["nautical_twilight_begin"]=>
-  int(1165891344)
+  int(1165891330)
   ["nautical_twilight_end"]=>
-  int(1165940606)
+  int(1165940591)
   ["astronomical_twilight_begin"]=>
-  int(1165889771)
+  int(1165889758)
   ["astronomical_twilight_end"]=>
-  int(1165942179)
+  int(1165942164)
 }
 
 -- Iteration 3 --
@@ -132,283 +132,283 @@ array(9) {
   ["sunset"]=>
   bool(true)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
   bool(true)
   ["civil_twilight_end"]=>
   bool(true)
   ["nautical_twilight_begin"]=>
-  int(1165883331)
+  int(1165883368)
   ["nautical_twilight_end"]=>
-  int(1165948619)
+  int(1165948554)
   ["astronomical_twilight_begin"]=>
-  int(1165890260)
+  int(1165890281)
   ["astronomical_twilight_end"]=>
-  int(1165941690)
+  int(1165941641)
 }
 
 -- Iteration 4 --
 array(9) {
   ["sunrise"]=>
-  int(1165894085)
+  int(1165894072)
   ["sunset"]=>
-  int(1165937865)
+  int(1165937850)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165895431)
+  int(1165895418)
   ["civil_twilight_end"]=>
-  int(1165936519)
+  int(1165936504)
   ["nautical_twilight_begin"]=>
-  int(1165896998)
+  int(1165896984)
   ["nautical_twilight_end"]=>
-  int(1165934952)
+  int(1165934938)
   ["astronomical_twilight_begin"]=>
-  int(1165898564)
+  int(1165898549)
   ["astronomical_twilight_end"]=>
-  int(1165933386)
+  int(1165933372)
 }
 
 -- Iteration 5 --
 array(9) {
   ["sunrise"]=>
-  int(1165895237)
+  int(1165895221)
   ["sunset"]=>
-  int(1165936713)
+  int(1165936701)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165893873)
+  int(1165893858)
   ["civil_twilight_end"]=>
-  int(1165938077)
+  int(1165938064)
   ["nautical_twilight_begin"]=>
-  int(1165892293)
+  int(1165892278)
   ["nautical_twilight_end"]=>
-  int(1165939656)
+  int(1165939643)
   ["astronomical_twilight_begin"]=>
-  int(1165890721)
+  int(1165890706)
   ["astronomical_twilight_end"]=>
-  int(1165941229)
+  int(1165941215)
 }
 
 -- Iteration 6 --
 array(9) {
   ["sunrise"]=>
-  int(1165893058)
+  int(1165893046)
   ["sunset"]=>
-  int(1165938891)
+  int(1165938875)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165891680)
+  int(1165891669)
   ["civil_twilight_end"]=>
-  int(1165940269)
+  int(1165940253)
   ["nautical_twilight_begin"]=>
-  int(1165890055)
+  int(1165890044)
   ["nautical_twilight_end"]=>
-  int(1165941895)
+  int(1165941878)
   ["astronomical_twilight_begin"]=>
-  int(1165888402)
+  int(1165888392)
   ["astronomical_twilight_end"]=>
-  int(1165943548)
+  int(1165943530)
 }
 
 -- Iteration 7 --
 array(9) {
   ["sunrise"]=>
-  int(1165894152)
+  int(1165894138)
   ["sunset"]=>
-  int(1165937798)
+  int(1165937784)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892809)
+  int(1165892795)
   ["civil_twilight_end"]=>
-  int(1165939141)
+  int(1165939127)
   ["nautical_twilight_begin"]=>
-  int(1165891239)
+  int(1165891226)
   ["nautical_twilight_end"]=>
-  int(1165940710)
+  int(1165940696)
   ["astronomical_twilight_begin"]=>
-  int(1165889663)
+  int(1165889650)
   ["astronomical_twilight_end"]=>
-  int(1165942287)
+  int(1165942271)
 }
 
 -- Iteration 8 --
 array(9) {
   ["sunrise"]=>
-  int(1165894152)
+  int(1165894138)
   ["sunset"]=>
-  int(1165937798)
+  int(1165937784)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892809)
+  int(1165892795)
   ["civil_twilight_end"]=>
-  int(1165939141)
+  int(1165939127)
   ["nautical_twilight_begin"]=>
-  int(1165891239)
+  int(1165891226)
   ["nautical_twilight_end"]=>
-  int(1165940710)
+  int(1165940696)
   ["astronomical_twilight_begin"]=>
-  int(1165889663)
+  int(1165889650)
   ["astronomical_twilight_end"]=>
-  int(1165942287)
+  int(1165942271)
 }
 
 -- Iteration 9 --
 array(9) {
   ["sunrise"]=>
-  int(1165894203)
+  int(1165894189)
   ["sunset"]=>
-  int(1165937747)
+  int(1165937733)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892860)
+  int(1165892846)
   ["civil_twilight_end"]=>
-  int(1165939090)
+  int(1165939075)
   ["nautical_twilight_begin"]=>
-  int(1165891292)
+  int(1165891278)
   ["nautical_twilight_end"]=>
-  int(1165940658)
+  int(1165940643)
   ["astronomical_twilight_begin"]=>
-  int(1165889717)
+  int(1165889704)
   ["astronomical_twilight_end"]=>
-  int(1165942233)
+  int(1165942217)
 }
 
 -- Iteration 10 --
 array(9) {
   ["sunrise"]=>
-  int(1165894152)
+  int(1165894138)
   ["sunset"]=>
-  int(1165937798)
+  int(1165937784)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892809)
+  int(1165892795)
   ["civil_twilight_end"]=>
-  int(1165939141)
+  int(1165939127)
   ["nautical_twilight_begin"]=>
-  int(1165891239)
+  int(1165891226)
   ["nautical_twilight_end"]=>
-  int(1165940710)
+  int(1165940696)
   ["astronomical_twilight_begin"]=>
-  int(1165889663)
+  int(1165889650)
   ["astronomical_twilight_end"]=>
-  int(1165942287)
+  int(1165942271)
 }
 
 -- Iteration 11 --
 array(9) {
   ["sunrise"]=>
-  int(1165894152)
+  int(1165894138)
   ["sunset"]=>
-  int(1165937798)
+  int(1165937784)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892809)
+  int(1165892795)
   ["civil_twilight_end"]=>
-  int(1165939141)
+  int(1165939127)
   ["nautical_twilight_begin"]=>
-  int(1165891239)
+  int(1165891226)
   ["nautical_twilight_end"]=>
-  int(1165940710)
+  int(1165940696)
   ["astronomical_twilight_begin"]=>
-  int(1165889663)
+  int(1165889650)
   ["astronomical_twilight_end"]=>
-  int(1165942287)
+  int(1165942271)
 }
 
 -- Iteration 12 --
 array(9) {
   ["sunrise"]=>
-  int(1165894254)
+  int(1165894240)
   ["sunset"]=>
-  int(1165937695)
+  int(1165937681)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892911)
+  int(1165892898)
   ["civil_twilight_end"]=>
-  int(1165939038)
+  int(1165939024)
   ["nautical_twilight_begin"]=>
-  int(1165891344)
+  int(1165891330)
   ["nautical_twilight_end"]=>
-  int(1165940606)
+  int(1165940591)
   ["astronomical_twilight_begin"]=>
-  int(1165889771)
+  int(1165889758)
   ["astronomical_twilight_end"]=>
-  int(1165942179)
+  int(1165942164)
 }
 
 -- Iteration 13 --
 array(9) {
   ["sunrise"]=>
-  int(1165894152)
+  int(1165894138)
   ["sunset"]=>
-  int(1165937798)
+  int(1165937784)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892809)
+  int(1165892795)
   ["civil_twilight_end"]=>
-  int(1165939141)
+  int(1165939127)
   ["nautical_twilight_begin"]=>
-  int(1165891239)
+  int(1165891226)
   ["nautical_twilight_end"]=>
-  int(1165940710)
+  int(1165940696)
   ["astronomical_twilight_begin"]=>
-  int(1165889663)
+  int(1165889650)
   ["astronomical_twilight_end"]=>
-  int(1165942287)
+  int(1165942271)
 }
 
 -- Iteration 14 --
 array(9) {
   ["sunrise"]=>
-  int(1165894254)
+  int(1165894240)
   ["sunset"]=>
-  int(1165937695)
+  int(1165937681)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892911)
+  int(1165892898)
   ["civil_twilight_end"]=>
-  int(1165939038)
+  int(1165939024)
   ["nautical_twilight_begin"]=>
-  int(1165891344)
+  int(1165891330)
   ["nautical_twilight_end"]=>
-  int(1165940606)
+  int(1165940591)
   ["astronomical_twilight_begin"]=>
-  int(1165889771)
+  int(1165889758)
   ["astronomical_twilight_end"]=>
-  int(1165942179)
+  int(1165942164)
 }
 
 -- Iteration 15 --
 array(9) {
   ["sunrise"]=>
-  int(1165894152)
+  int(1165894138)
   ["sunset"]=>
-  int(1165937798)
+  int(1165937784)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892809)
+  int(1165892795)
   ["civil_twilight_end"]=>
-  int(1165939141)
+  int(1165939127)
   ["nautical_twilight_begin"]=>
-  int(1165891239)
+  int(1165891226)
   ["nautical_twilight_end"]=>
-  int(1165940710)
+  int(1165940696)
   ["astronomical_twilight_begin"]=>
-  int(1165889663)
+  int(1165889650)
   ["astronomical_twilight_end"]=>
-  int(1165942287)
+  int(1165942271)
 }
 
 -- Iteration 16 --
@@ -444,45 +444,45 @@ bool(false)
 -- Iteration 22 --
 array(9) {
   ["sunrise"]=>
-  int(1165894152)
+  int(1165894138)
   ["sunset"]=>
-  int(1165937798)
+  int(1165937784)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892809)
+  int(1165892795)
   ["civil_twilight_end"]=>
-  int(1165939141)
+  int(1165939127)
   ["nautical_twilight_begin"]=>
-  int(1165891239)
+  int(1165891226)
   ["nautical_twilight_end"]=>
-  int(1165940710)
+  int(1165940696)
   ["astronomical_twilight_begin"]=>
-  int(1165889663)
+  int(1165889650)
   ["astronomical_twilight_end"]=>
-  int(1165942287)
+  int(1165942271)
 }
 
 -- Iteration 23 --
 array(9) {
   ["sunrise"]=>
-  int(1165894152)
+  int(1165894138)
   ["sunset"]=>
-  int(1165937798)
+  int(1165937784)
   ["transit"]=>
-  int(1165915975)
+  int(1165915961)
   ["civil_twilight_begin"]=>
-  int(1165892809)
+  int(1165892795)
   ["civil_twilight_end"]=>
-  int(1165939141)
+  int(1165939127)
   ["nautical_twilight_begin"]=>
-  int(1165891239)
+  int(1165891226)
   ["nautical_twilight_end"]=>
-  int(1165940710)
+  int(1165940696)
   ["astronomical_twilight_begin"]=>
-  int(1165889663)
+  int(1165889650)
   ["astronomical_twilight_end"]=>
-  int(1165942287)
+  int(1165942271)
 }
 
 -- Iteration 24 --
index 909ecf06fb3a99d27c9c2076f40ed2460b48c370..28af4266235ee0c35bb7060a9b1be7207934cdc7 100644 (file)
@@ -85,331 +85,331 @@ foreach($inputs as $input) {
 -- Iteration 1 --
 array(9) {
   ["sunrise"]=>
-  int(1165906242)
+  int(1165906221)
   ["sunset"]=>
-  int(1165942625)
+  int(1165942618)
   ["transit"]=>
-  int(1165924434)
+  int(1165924420)
   ["civil_twilight_begin"]=>
-  int(1165904636)
+  int(1165904616)
   ["civil_twilight_end"]=>
-  int(1165944231)
+  int(1165944223)
   ["nautical_twilight_begin"]=>
-  int(1165902813)
+  int(1165902793)
   ["nautical_twilight_end"]=>
-  int(1165946054)
+  int(1165946046)
   ["astronomical_twilight_begin"]=>
-  int(1165901030)
+  int(1165901011)
   ["astronomical_twilight_end"]=>
-  int(1165947838)
+  int(1165947828)
 }
 
 -- Iteration 2 --
 array(9) {
   ["sunrise"]=>
-  int(1165906002)
+  int(1165905981)
   ["sunset"]=>
-  int(1165942385)
+  int(1165942378)
   ["transit"]=>
-  int(1165924194)
+  int(1165924179)
   ["civil_twilight_begin"]=>
-  int(1165904396)
+  int(1165904376)
   ["civil_twilight_end"]=>
-  int(1165943991)
+  int(1165943983)
   ["nautical_twilight_begin"]=>
-  int(1165902573)
+  int(1165902553)
   ["nautical_twilight_end"]=>
-  int(1165945814)
+  int(1165945806)
   ["astronomical_twilight_begin"]=>
-  int(1165900789)
+  int(1165900771)
   ["astronomical_twilight_end"]=>
-  int(1165947598)
+  int(1165947588)
 }
 
 -- Iteration 3 --
 array(9) {
   ["sunrise"]=>
-  int(1165879335)
+  int(1165879309)
   ["sunset"]=>
-  int(1165917916)
+  int(1165917937)
   ["transit"]=>
-  int(1165898625)
+  int(1165898623)
   ["civil_twilight_begin"]=>
-  int(1165877811)
+  int(1165877787)
   ["civil_twilight_end"]=>
-  int(1165919440)
+  int(1165919460)
   ["nautical_twilight_begin"]=>
-  int(1165876064)
+  int(1165876041)
   ["nautical_twilight_end"]=>
-  int(1165921187)
+  int(1165921205)
   ["astronomical_twilight_begin"]=>
-  int(1165874341)
+  int(1165874319)
   ["astronomical_twilight_end"]=>
-  int(1165922910)
+  int(1165922928)
 }
 
 -- Iteration 4 --
 array(9) {
   ["sunrise"]=>
-  int(1165864483)
+  int(1165864467)
   ["sunset"]=>
-  int(1165900762)
+  int(1165900749)
   ["transit"]=>
-  int(1165882623)
+  int(1165882608)
   ["civil_twilight_begin"]=>
-  int(1165862873)
+  int(1165862856)
   ["civil_twilight_end"]=>
-  int(1165902372)
+  int(1165902359)
   ["nautical_twilight_begin"]=>
-  int(1165861045)
+  int(1165861029)
   ["nautical_twilight_end"]=>
-  int(1165904200)
+  int(1165904187)
   ["astronomical_twilight_begin"]=>
-  int(1165859259)
+  int(1165859242)
   ["astronomical_twilight_end"]=>
-  int(1165905987)
+  int(1165905973)
 }
 
 -- Iteration 5 --
 array(9) {
   ["sunrise"]=>
-  int(1165903721)
+  int(1165903700)
   ["sunset"]=>
-  int(1165940105)
+  int(1165940097)
   ["transit"]=>
-  int(1165921913)
+  int(1165921899)
   ["civil_twilight_begin"]=>
-  int(1165902115)
+  int(1165902095)
   ["civil_twilight_end"]=>
-  int(1165941711)
+  int(1165941702)
   ["nautical_twilight_begin"]=>
-  int(1165900292)
+  int(1165900272)
   ["nautical_twilight_end"]=>
-  int(1165943534)
+  int(1165943525)
   ["astronomical_twilight_begin"]=>
-  int(1165898508)
+  int(1165898490)
   ["astronomical_twilight_end"]=>
-  int(1165945317)
+  int(1165945308)
 }
 
 -- Iteration 6 --
 array(9) {
   ["sunrise"]=>
-  int(1165908763)
+  int(1165908743)
   ["sunset"]=>
-  int(1165945146)
+  int(1165945138)
   ["transit"]=>
-  int(1165926954)
+  int(1165926940)
   ["civil_twilight_begin"]=>
-  int(1165907157)
+  int(1165907137)
   ["civil_twilight_end"]=>
-  int(1165946752)
+  int(1165946743)
   ["nautical_twilight_begin"]=>
-  int(1165905334)
+  int(1165905315)
   ["nautical_twilight_end"]=>
-  int(1165948575)
+  int(1165948566)
   ["astronomical_twilight_begin"]=>
-  int(1165903551)
+  int(1165903532)
   ["astronomical_twilight_end"]=>
-  int(1165950358)
+  int(1165950349)
 }
 
 -- Iteration 7 --
 array(9) {
   ["sunrise"]=>
-  int(1165919856)
+  int(1165920008)
   ["sunset"]=>
-  int(1165969985)
+  int(1165970177)
   ["transit"]=>
-  int(1165944920)
+  int(1165945092)
   ["civil_twilight_begin"]=>
-  int(1165918203)
+  int(1165918353)
   ["civil_twilight_end"]=>
-  int(1165971638)
+  int(1165971832)
   ["nautical_twilight_begin"]=>
-  int(1165916223)
+  int(1165916371)
   ["nautical_twilight_end"]=>
-  int(1165973617)
+  int(1165973814)
   ["astronomical_twilight_begin"]=>
-  int(1165914116)
+  int(1165914258)
   ["astronomical_twilight_end"]=>
-  int(1165975725)
+  int(1165975927)
 }
 
 -- Iteration 8 --
 array(9) {
   ["sunrise"]=>
-  int(1165906242)
+  int(1165906221)
   ["sunset"]=>
-  int(1165942625)
+  int(1165942618)
   ["transit"]=>
-  int(1165924434)
+  int(1165924420)
   ["civil_twilight_begin"]=>
-  int(1165904636)
+  int(1165904616)
   ["civil_twilight_end"]=>
-  int(1165944231)
+  int(1165944223)
   ["nautical_twilight_begin"]=>
-  int(1165902813)
+  int(1165902793)
   ["nautical_twilight_end"]=>
-  int(1165946054)
+  int(1165946046)
   ["astronomical_twilight_begin"]=>
-  int(1165901030)
+  int(1165901011)
   ["astronomical_twilight_end"]=>
-  int(1165947838)
+  int(1165947828)
 }
 
 -- Iteration 9 --
 array(9) {
   ["sunrise"]=>
-  int(1165906122)
+  int(1165906101)
   ["sunset"]=>
-  int(1165942505)
+  int(1165942498)
   ["transit"]=>
-  int(1165924314)
+  int(1165924300)
   ["civil_twilight_begin"]=>
-  int(1165904516)
+  int(1165904496)
   ["civil_twilight_end"]=>
-  int(1165944111)
+  int(1165944103)
   ["nautical_twilight_begin"]=>
-  int(1165902693)
+  int(1165902673)
   ["nautical_twilight_end"]=>
-  int(1165945934)
+  int(1165945926)
   ["astronomical_twilight_begin"]=>
-  int(1165900910)
+  int(1165900891)
   ["astronomical_twilight_end"]=>
-  int(1165947718)
+  int(1165947708)
 }
 
 -- Iteration 10 --
 array(9) {
   ["sunrise"]=>
-  int(1165906242)
+  int(1165906221)
   ["sunset"]=>
-  int(1165942625)
+  int(1165942618)
   ["transit"]=>
-  int(1165924434)
+  int(1165924420)
   ["civil_twilight_begin"]=>
-  int(1165904636)
+  int(1165904616)
   ["civil_twilight_end"]=>
-  int(1165944231)
+  int(1165944223)
   ["nautical_twilight_begin"]=>
-  int(1165902813)
+  int(1165902793)
   ["nautical_twilight_end"]=>
-  int(1165946054)
+  int(1165946046)
   ["astronomical_twilight_begin"]=>
-  int(1165901030)
+  int(1165901011)
   ["astronomical_twilight_end"]=>
-  int(1165947838)
+  int(1165947828)
 }
 
 -- Iteration 11 --
 array(9) {
   ["sunrise"]=>
-  int(1165906242)
+  int(1165906221)
   ["sunset"]=>
-  int(1165942625)
+  int(1165942618)
   ["transit"]=>
-  int(1165924434)
+  int(1165924420)
   ["civil_twilight_begin"]=>
-  int(1165904636)
+  int(1165904616)
   ["civil_twilight_end"]=>
-  int(1165944231)
+  int(1165944223)
   ["nautical_twilight_begin"]=>
-  int(1165902813)
+  int(1165902793)
   ["nautical_twilight_end"]=>
-  int(1165946054)
+  int(1165946046)
   ["astronomical_twilight_begin"]=>
-  int(1165901030)
+  int(1165901011)
   ["astronomical_twilight_end"]=>
-  int(1165947838)
+  int(1165947828)
 }
 
 -- Iteration 12 --
 array(9) {
   ["sunrise"]=>
-  int(1165906002)
+  int(1165905981)
   ["sunset"]=>
-  int(1165942385)
+  int(1165942378)
   ["transit"]=>
-  int(1165924194)
+  int(1165924179)
   ["civil_twilight_begin"]=>
-  int(1165904396)
+  int(1165904376)
   ["civil_twilight_end"]=>
-  int(1165943991)
+  int(1165943983)
   ["nautical_twilight_begin"]=>
-  int(1165902573)
+  int(1165902553)
   ["nautical_twilight_end"]=>
-  int(1165945814)
+  int(1165945806)
   ["astronomical_twilight_begin"]=>
-  int(1165900789)
+  int(1165900771)
   ["astronomical_twilight_end"]=>
-  int(1165947598)
+  int(1165947588)
 }
 
 -- Iteration 13 --
 array(9) {
   ["sunrise"]=>
-  int(1165906242)
+  int(1165906221)
   ["sunset"]=>
-  int(1165942625)
+  int(1165942618)
   ["transit"]=>
-  int(1165924434)
+  int(1165924420)
   ["civil_twilight_begin"]=>
-  int(1165904636)
+  int(1165904616)
   ["civil_twilight_end"]=>
-  int(1165944231)
+  int(1165944223)
   ["nautical_twilight_begin"]=>
-  int(1165902813)
+  int(1165902793)
   ["nautical_twilight_end"]=>
-  int(1165946054)
+  int(1165946046)
   ["astronomical_twilight_begin"]=>
-  int(1165901030)
+  int(1165901011)
   ["astronomical_twilight_end"]=>
-  int(1165947838)
+  int(1165947828)
 }
 
 -- Iteration 14 --
 array(9) {
   ["sunrise"]=>
-  int(1165906002)
+  int(1165905981)
   ["sunset"]=>
-  int(1165942385)
+  int(1165942378)
   ["transit"]=>
-  int(1165924194)
+  int(1165924179)
   ["civil_twilight_begin"]=>
-  int(1165904396)
+  int(1165904376)
   ["civil_twilight_end"]=>
-  int(1165943991)
+  int(1165943983)
   ["nautical_twilight_begin"]=>
-  int(1165902573)
+  int(1165902553)
   ["nautical_twilight_end"]=>
-  int(1165945814)
+  int(1165945806)
   ["astronomical_twilight_begin"]=>
-  int(1165900789)
+  int(1165900771)
   ["astronomical_twilight_end"]=>
-  int(1165947598)
+  int(1165947588)
 }
 
 -- Iteration 15 --
 array(9) {
   ["sunrise"]=>
-  int(1165906242)
+  int(1165906221)
   ["sunset"]=>
-  int(1165942625)
+  int(1165942618)
   ["transit"]=>
-  int(1165924434)
+  int(1165924420)
   ["civil_twilight_begin"]=>
-  int(1165904636)
+  int(1165904616)
   ["civil_twilight_end"]=>
-  int(1165944231)
+  int(1165944223)
   ["nautical_twilight_begin"]=>
-  int(1165902813)
+  int(1165902793)
   ["nautical_twilight_end"]=>
-  int(1165946054)
+  int(1165946046)
   ["astronomical_twilight_begin"]=>
-  int(1165901030)
+  int(1165901011)
   ["astronomical_twilight_end"]=>
-  int(1165947838)
+  int(1165947828)
 }
 
 -- Iteration 16 --
@@ -445,45 +445,45 @@ bool(false)
 -- Iteration 22 --
 array(9) {
   ["sunrise"]=>
-  int(1165906242)
+  int(1165906221)
   ["sunset"]=>
-  int(1165942625)
+  int(1165942618)
   ["transit"]=>
-  int(1165924434)
+  int(1165924420)
   ["civil_twilight_begin"]=>
-  int(1165904636)
+  int(1165904616)
   ["civil_twilight_end"]=>
-  int(1165944231)
+  int(1165944223)
   ["nautical_twilight_begin"]=>
-  int(1165902813)
+  int(1165902793)
   ["nautical_twilight_end"]=>
-  int(1165946054)
+  int(1165946046)
   ["astronomical_twilight_begin"]=>
-  int(1165901030)
+  int(1165901011)
   ["astronomical_twilight_end"]=>
-  int(1165947838)
+  int(1165947828)
 }
 
 -- Iteration 23 --
 array(9) {
   ["sunrise"]=>
-  int(1165906242)
+  int(1165906221)
   ["sunset"]=>
-  int(1165942625)
+  int(1165942618)
   ["transit"]=>
-  int(1165924434)
+  int(1165924420)
   ["civil_twilight_begin"]=>
-  int(1165904636)
+  int(1165904616)
   ["civil_twilight_end"]=>
-  int(1165944231)
+  int(1165944223)
   ["nautical_twilight_begin"]=>
-  int(1165902813)
+  int(1165902793)
   ["nautical_twilight_end"]=>
-  int(1165946054)
+  int(1165946046)
   ["astronomical_twilight_begin"]=>
-  int(1165901030)
+  int(1165901011)
   ["astronomical_twilight_end"]=>
-  int(1165947838)
+  int(1165947828)
 }
 
 -- Iteration 24 --
index c9b8aa37cac397f6c9ab5241388c0691f9a33d27..ccb0ad83259f0b9f944a329f6827a7e5a14cae1c 100644 (file)
@@ -109,38 +109,38 @@ foreach($inputs as $key =>$value) {
 
 --int 0--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --int 1--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --int 12345--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --int -12345--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --float 10.5--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --float -10.5--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --float .5--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --empty array--
 
@@ -188,33 +188,33 @@ bool(false)
 
 --uppercase NULL--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --lowercase null--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --lowercase true--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --lowercase false--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --uppercase TRUE--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --uppercase FALSE--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --empty string DQ--
 
@@ -306,11 +306,11 @@ bool(false)
 
 --undefined var--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 
 --unset var--
 string(5) "08:56"
-float(8.944%d)
-int(28599)
+float(8.943%d)
+int(28596)
 ===DONE===
index b93c53e9e675fac33204230a9d743fd91b88ef67..537171c24bf434e74da013d3f129e4ef0b4db0f9 100644 (file)
@@ -103,12 +103,12 @@ foreach($inputs as $key =>$value) {
 --int 0--
 string(5) "01:10"
 float(1.174%d)
-int(1218177627)
+int(1218177629)
 
 --int 1--
 string(5) "01:09"
 float(1.155%d)
-int(1218177558)
+int(1218177560)
 
 --int 12345--
 bool(false)
@@ -167,32 +167,32 @@ bool(false)
 --uppercase NULL--
 string(5) "01:10"
 float(1.174%d)
-int(1218177627)
+int(1218177629)
 
 --lowercase null--
 string(5) "01:10"
 float(1.174%d)
-int(1218177627)
+int(1218177629)
 
 --lowercase true--
 string(5) "01:09"
 float(1.155%d)
-int(1218177558)
+int(1218177560)
 
 --lowercase false--
 string(5) "01:10"
 float(1.174%d)
-int(1218177627)
+int(1218177629)
 
 --uppercase TRUE--
 string(5) "01:09"
 float(1.155%d)
-int(1218177558)
+int(1218177560)
 
 --uppercase FALSE--
 string(5) "01:10"
 float(1.174%d)
-int(1218177627)
+int(1218177629)
 
 --empty string DQ--
 
@@ -285,10 +285,10 @@ bool(false)
 --undefined var--
 string(5) "01:10"
 float(1.174%d)
-int(1218177627)
+int(1218177629)
 
 --unset var--
 string(5) "01:10"
 float(1.174%d)
-int(1218177627)
+int(1218177629)
 ===DONE===
index 94c28902727505b06740cb09f228e66f50c79d5d..7909ca110097dcfc77e186dea6b680ad9242caf6 100644 (file)
@@ -103,24 +103,24 @@ foreach($inputs as $key =>$value) {
 *** Testing date_sunrise() : usage variation ***
 
 --int 0--
-string(5) "05:12"
-float(5.200%d)
-int(1218172321)
+string(5) "05:11"
+float(5.196%d)
+int(1218172307)
 
 --int 1--
-string(5) "05:08"
-float(5.133%d)
-int(1218172081)
+string(5) "05:07"
+float(5.129%d)
+int(1218172067)
 
 --int 12345--
 string(5) "21:45"
-float(21.759%d)
-int(1218145534)
+float(21.757%d)
+int(1218145525)
 
 --int -12345--
 string(5) "12:41"
-float(12.698%d)
-int(1218199315)
+float(12.694%d)
+int(1218199301)
 
 --empty array--
 
@@ -167,34 +167,34 @@ Warning: date_sunrise() expects parameter 4 to be float, array given in %s on li
 bool(false)
 
 --uppercase NULL--
-string(5) "05:12"
-float(5.200%d)
-int(1218172321)
+string(5) "05:11"
+float(5.196%d)
+int(1218172307)
 
 --lowercase null--
-string(5) "05:12"
-float(5.200%d)
-int(1218172321)
+string(5) "05:11"
+float(5.196%d)
+int(1218172307)
 
 --lowercase true--
-string(5) "05:08"
-float(5.133%d)
-int(1218172081)
+string(5) "05:07"
+float(5.129%d)
+int(1218172067)
 
 --lowercase false--
-string(5) "05:12"
-float(5.200%d)
-int(1218172321)
+string(5) "05:11"
+float(5.196%d)
+int(1218172307)
 
 --uppercase TRUE--
-string(5) "05:08"
-float(5.133%d)
-int(1218172081)
+string(5) "05:07"
+float(5.129%d)
+int(1218172067)
 
 --uppercase FALSE--
-string(5) "05:12"
-float(5.200%d)
-int(1218172321)
+string(5) "05:11"
+float(5.196%d)
+int(1218172307)
 
 --empty string DQ--
 
@@ -285,12 +285,12 @@ Warning: date_sunrise() expects parameter 4 to be float, object given in %s on l
 bool(false)
 
 --undefined var--
-string(5) "05:12"
-float(5.200%d)
-int(1218172321)
+string(5) "05:11"
+float(5.196%d)
+int(1218172307)
 
 --unset var--
-string(5) "05:12"
-float(5.200%d)
-int(1218172321)
+string(5) "05:11"
+float(5.196%d)
+int(1218172307)
 ===DONE===
index c7925dada361702cb3eea64e403a46d1d303ccfe..9858c890bae41bea11d5985045e309673bcef867 100644 (file)
@@ -113,14 +113,14 @@ bool(false)
 bool(false)
 
 --int 12345--
-string(5) "09:51"
-float(9.855%d)
-int(1218169278)
+string(5) "09:50"
+float(9.849%d)
+int(1218169259)
 
 --int -12345--
 string(5) "09:54"
-float(9.9097820911118)
-int(1218169475)
+float(9.904%d)
+int(1218169455)
 
 --empty array--
 
index 360f756438ad9b73d9de8695d9c1089797336073..4c7a8e762ca60ab536baf0b1e133bd5abf1794dc 100644 (file)
@@ -102,24 +102,24 @@ foreach($inputs as $key =>$value) {
 *** Testing date_sunrise() : usage variation ***
 
 --int 0--
-string(5) "05:48"
-float(5.800%d)
-int(1218174483)
+string(5) "05:47"
+float(5.796%d)
+int(1218174468)
 
 --int 1--
-string(5) "06:48"
-float(6.800%d)
-int(1218174483)
+string(5) "06:47"
+float(6.796%d)
+int(1218174468)
 
 --int 12345--
-string(5) "14:48"
-float(14.800%d)
-int(1218174483)
+string(5) "14:47"
+float(14.796%d)
+int(1218174468)
 
 --int -12345--
-string(5) "12:48"
-float(12.800%d)
-int(1218174483)
+string(5) "12:47"
+float(12.796%d)
+int(1218174468)
 
 --empty array--
 
@@ -166,34 +166,34 @@ Warning: date_sunrise() expects parameter 6 to be float, array given in %s on li
 bool(false)
 
 --uppercase NULL--
-string(5) "05:48"
-float(5.800%d)
-int(1218174483)
+string(5) "05:47"
+float(5.796%d)
+int(1218174468)
 
 --lowercase null--
-string(5) "05:48"
-float(5.800%d)
-int(1218174483)
+string(5) "05:47"
+float(5.796%d)
+int(1218174468)
 
 --lowercase true--
-string(5) "06:48"
-float(6.800%d)
-int(1218174483)
+string(5) "06:47"
+float(6.796%d)
+int(1218174468)
 
 --lowercase false--
-string(5) "05:48"
-float(5.800%d)
-int(1218174483)
+string(5) "05:47"
+float(5.796%d)
+int(1218174468)
 
 --uppercase TRUE--
-string(5) "06:48"
-float(6.800%d)
-int(1218174483)
+string(5) "06:47"
+float(6.796%d)
+int(1218174468)
 
 --uppercase FALSE--
-string(5) "05:48"
-float(5.800%d)
-int(1218174483)
+string(5) "05:47"
+float(5.796%d)
+int(1218174468)
 
 --empty string DQ--
 
@@ -284,12 +284,12 @@ Warning: date_sunrise() expects parameter 6 to be float, object given in %s on l
 bool(false)
 
 --undefined var--
-string(5) "05:48"
-float(5.800%d)
-int(1218174483)
+string(5) "05:47"
+float(5.796%d)
+int(1218174468)
 
 --unset var--
-string(5) "05:48"
-float(5.800%d)
-int(1218174483)
+string(5) "05:47"
+float(5.796%d)
+int(1218174468)
 ===DONE===
index fa5f363a5dce99bbc74ee9c2f9edfb4db8ef6d5e..6e9c2ec83b3e816a16dd5044d2f197cf5095c74d 100644 (file)
@@ -36,15 +36,15 @@ foreach($inputs as $timezone => $value) {
 ===DONE===
 --EXPECTF--
 *** Testing date_sunrise() : usage variation ***
+string(5) "06:42"
 string(5) "06:41"
-string(5) "06:41"
+string(5) "05:07"
 string(5) "05:09"
-string(5) "05:11"
+string(5) "05:58"
 string(5) "05:59"
-string(5) "06:00"
+string(5) "07:31"
 string(5) "07:30"
-string(5) "07:29"
-string(5) "05:53"
+string(5) "05:52"
 string(5) "05:53"
 string(5) "05:59"
 string(5) "06:01"
index 9c7307082fb78e31f5282e5b15bd313ad1dbb15e..99b6230338c39622c15cd0c1cd9c6163fb87dd2c 100644 (file)
@@ -109,38 +109,38 @@ foreach($inputs as $key =>$value) {
 
 --int 0--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --int 1--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --int 12345--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --int -12345--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --float 10.5--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --float -10.5--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --float .5--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --empty array--
 
@@ -188,33 +188,33 @@ bool(false)
 
 --uppercase NULL--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --lowercase null--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --lowercase true--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --lowercase false--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --uppercase TRUE--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --uppercase FALSE--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --empty string DQ--
 
@@ -306,11 +306,11 @@ bool(false)
 
 --undefined var--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 
 --unset var--
 string(5) "18:22"
-float(18.377%d)
-int(62558)
+float(18.373%d)
+int(62545)
 ===DONE===
index 0bc98c148d21bfcc72643828a198349bf981c68e..0a51ac6b171360bf948f53ec590921967a83b93b 100644 (file)
@@ -105,13 +105,13 @@ foreach($inputs as $key =>$value) {
 
 --int 0--
 string(5) "17:43"
-float(17.730%d)
-int(1218197630)
+float(17.731%d)
+int(1218197632)
 
 --int 1--
-string(5) "17:44"
-float(17.749%d)
-int(1218197698)
+string(5) "17:45"
+float(17.750%d)
+int(1218197701)
 
 --int 12345--
 bool(false)
@@ -169,33 +169,33 @@ bool(false)
 
 --uppercase NULL--
 string(5) "17:43"
-float(17.730%d)
-int(1218197630)
+float(17.731%d)
+int(1218197632)
 
 --lowercase null--
 string(5) "17:43"
-float(17.730%d)
-int(1218197630)
+float(17.731%d)
+int(1218197632)
 
 --lowercase true--
-string(5) "17:44"
-float(17.749%d)
-int(1218197698)
+string(5) "17:45"
+float(17.750%d)
+int(1218197701)
 
 --lowercase false--
 string(5) "17:43"
-float(17.730%d)
-int(1218197630)
+float(17.731%d)
+int(1218197632)
 
 --uppercase TRUE--
-string(5) "17:44"
-float(17.749%d)
-int(1218197698)
+string(5) "17:45"
+float(17.750%d)
+int(1218197701)
 
 --uppercase FALSE--
 string(5) "17:43"
-float(17.730%d)
-int(1218197630)
+float(17.731%d)
+int(1218197632)
 
 --empty string DQ--
 
@@ -287,11 +287,11 @@ bool(false)
 
 --undefined var--
 string(5) "17:43"
-float(17.730%d)
-int(1218197630)
+float(17.731%d)
+int(1218197632)
 
 --unset var--
 string(5) "17:43"
-float(17.730%d)
-int(1218197630)
+float(17.731%d)
+int(1218197632)
 ===DONE===
index a9798a6b9fe03db5abfcc5614c606baeebcc0f83..c892f87c099fbd8f09150853560026cdea729c80 100644 (file)
@@ -104,13 +104,13 @@ foreach($inputs as $key =>$value) {
 
 --int 0--
 string(5) "00:03"
-float(0.059%d)
-int(1218220414)
+float(0.062%d)
+int(1218220425)
 
 --int 1--
 string(5) "23:59"
-float(23.992%d)
-int(1218220174)
+float(23.995%d)
+int(1218220185)
 
 --int 12345--
 string(5) "17:15"
@@ -118,9 +118,9 @@ float(17.259%d)
 int(1218195932)
 
 --int -12345--
-string(5) "12:18"
-float(12.316%d)
-int(1218178138)
+string(5) "12:19"
+float(12.319%d)
+int(1218178151)
 
 --empty array--
 
@@ -168,33 +168,33 @@ bool(false)
 
 --uppercase NULL--
 string(5) "00:03"
-float(0.059%d)
-int(1218220414)
+float(0.062%d)
+int(1218220425)
 
 --lowercase null--
 string(5) "00:03"
-float(0.059%d)
-int(1218220414)
+float(0.062%d)
+int(1218220425)
 
 --lowercase true--
 string(5) "23:59"
-float(23.992%d)
-int(1218220174)
+float(23.995%d)
+int(1218220185)
 
 --lowercase false--
 string(5) "00:03"
-float(0.059%d)
-int(1218220414)
+float(0.062%d)
+int(1218220425)
 
 --uppercase TRUE--
 string(5) "23:59"
-float(23.992%d)
-int(1218220174)
+float(23.995%d)
+int(1218220185)
 
 --uppercase FALSE--
 string(5) "00:03"
-float(0.059%d)
-int(1218220414)
+float(0.062%d)
+int(1218220425)
 
 --empty string DQ--
 
@@ -286,11 +286,11 @@ bool(false)
 
 --undefined var--
 string(5) "00:03"
-float(0.059%d)
-int(1218220414)
+float(0.062%d)
+int(1218220425)
 
 --unset var--
 string(5) "00:03"
-float(0.059%d)
-int(1218220414)
+float(0.062%d)
+int(1218220425)
 ===DONE===
index c5c333f3d2d55f06df1fa233025be69c6a43ab77..579e1c8eb01e7714091233660b04819c4dcd24a1 100644 (file)
@@ -114,8 +114,8 @@ bool(false)
 
 --int 12345--
 string(5) "19:20"
-float(19.340%d)
-int(1218203424)
+float(19.343%d)
+int(1218203437)
 
 --int -12345--
 bool(false)
index d34f897bb146d0d1ea85ad6db3935ddb0116e578..29b31f6e95767c7946139557315dc55d989245a1 100644 (file)
@@ -103,24 +103,24 @@ foreach($inputs as $key =>$value) {
 *** Testing date_sunset() : usage variation ***
 
 --int 0--
-string(5) "12:40"
-float(12.681%d)
-int(1218199253)
+string(5) "12:41"
+float(12.684%d)
+int(1218199264)
 
 --int 1--
-string(5) "13:40"
-float(13.681%d)
-int(1218199253)
+string(5) "13:41"
+float(13.684%d)
+int(1218199264)
 
 --int 12345--
-string(5) "21:40"
-float(21.681%d)
-int(1218199253)
+string(5) "21:41"
+float(21.684%d)
+int(1218199264)
 
 --int -12345--
-string(5) "19:40"
-float(19.681%d)
-int(1218199253)
+string(5) "19:41"
+float(19.684%d)
+int(1218199264)
 
 --empty array--
 
@@ -167,34 +167,34 @@ Warning: date_sunset() expects parameter 6 to be float, array given in %s on lin
 bool(false)
 
 --uppercase NULL--
-string(5) "12:40"
-float(12.681%d)
-int(1218199253)
+string(5) "12:41"
+float(12.684%d)
+int(1218199264)
 
 --lowercase null--
-string(5) "12:40"
-float(12.681%d)
-int(1218199253)
+string(5) "12:41"
+float(12.684%d)
+int(1218199264)
 
 --lowercase true--
-string(5) "13:40"
-float(13.681%d)
-int(1218199253)
+string(5) "13:41"
+float(13.684%d)
+int(1218199264)
 
 --lowercase false--
-string(5) "12:40"
-float(12.681%d)
-int(1218199253)
+string(5) "12:41"
+float(12.684%d)
+int(1218199264)
 
 --uppercase TRUE--
-string(5) "13:40"
-float(13.681%d)
-int(1218199253)
+string(5) "13:41"
+float(13.684%d)
+int(1218199264)
 
 --uppercase FALSE--
-string(5) "12:40"
-float(12.681%d)
-int(1218199253)
+string(5) "12:41"
+float(12.684%d)
+int(1218199264)
 
 --empty string DQ--
 
@@ -285,12 +285,12 @@ Warning: date_sunset() expects parameter 6 to be float, object given in %s on li
 bool(false)
 
 --undefined var--
-string(5) "12:40"
-float(12.681%d)
-int(1218199253)
+string(5) "12:41"
+float(12.684%d)
+int(1218199264)
 
 --unset var--
-string(5) "12:40"
-float(12.681%d)
-int(1218199253)
+string(5) "12:41"
+float(12.684%d)
+int(1218199264)
 ===DONE===
index 0c64d969e20f5597196d25a01cdc83cf49925cdc..67bd2f418257c5462b63c7dd17b67572d3ebc576 100644 (file)
@@ -42,24 +42,24 @@ string(5) "18:13"
 string(5) "18:13"
 
 --US/Alaska--
-string(5) "21:00"
-string(5) "20:57"
+string(5) "21:02"
+string(5) "20:59"
 
 --America/Chicago--
+string(5) "19:52"
 string(5) "19:51"
-string(5) "19:50"
 
 --America/Montevideo--
 string(5) "18:08"
-string(5) "18:09"
+string(5) "18:08"
 
 --Africa/Casablanca--
+string(5) "19:18"
 string(5) "19:17"
-string(5) "19:16"
 
 --Europe/Moscow--
-string(5) "21:09"
-string(5) "21:07"
+string(5) "21:10"
+string(5) "21:08"
 
 --Asia/Hong_Kong--
 string(5) "18:55"
index 59acb122c56b83d36a4df63865d5ad888b312041..8309b69c51ee66e85912d2b9037c35f29b19ee4d 100644 (file)
@@ -16,27 +16,27 @@ for($a=1;$a<=12;$a++){
 }
 ?>
 --EXPECTF--
-1041395864 06:37 6.6290131458%d
-1041432452 16:47 16.792451114%d
-1044073855 06:30 6.5154089279%d
-1044112463 17:14 17.239870289%d
-1046491495 06:04 6.0822145033%d
-1046533075 17:37 17.632011035%d
-1049167581 05:26 5.4394438111%d
-1049212774 17:59 17.993035729%d
-1051757532 04:52 4.8701934126%d
-1051806007 18:20 18.335390508%d
-1054434776 04:32 4.5489827182%d
-1054485647 18:40 18.679812949%d
-1057026949 04:35 4.5971956372%d
-1057078197 18:49 18.832563396%d
-1059706409 04:53 4.8916575089%d
-1059755837 18:37 18.621440704%d
-1062385999 05:13 5.2220951121%d
-1062432291 18:04 18.080957168%d
-1064979098 05:31 5.5273199215%d
-1065021952 17:25 17.431339135%d
-1067658845 05:54 5.9016292870%d
-1067698274 16:51 16.853902453%d
-1070252387 06:19 6.3299242689%d
-1070289382 16:36 16.606312600%d
+1041395858 06:37 6.6274307083%d
+1041432434 16:47 16.787476435%d
+1044073871 06:31 6.5198435465%d
+1044112440 17:14 17.233560530%d
+1046491524 06:05 6.0901858662%d
+1046533056 17:37 17.626724279%d
+1049167610 05:26 5.4473483216%d
+1049212759 17:59 17.988854003%d
+1051757554 04:52 4.8761196793%d
+1051805991 18:19 18.330987470%d
+1054434782 04:33 4.5506171719%d
+1054485634 18:40 18.676282498%d
+1057026940 04:35 4.5946862151%d
+1057078197 18:49 18.832651294%d
+1059706395 04:53 4.8875657219%d
+1059755854 18:37 18.626282855%d
+1062385985 05:13 5.2182752537%d
+1062432319 18:05 18.088728929%d
+1064979083 05:31 5.5233314120%d
+1065021981 17:26 17.439368589%d
+1067658825 05:53 5.8959513887%d
+1067698295 16:51 16.859972460%d
+1070252367 06:19 6.3241991396%d
+1070289384 16:36 16.606870705%d
index 7a0dcdee98f065f03a106bf588fae7d95eb81a61..c3510f1e649dd4366498e8aacabdc9964e850f8f 100644 (file)
@@ -26,20 +26,11 @@ var_dump( $abbr["acst"] );
 --EXPECTF--
 *** Testing timezone_abbreviations_list() : basic functionality ***
 string(5) "array"
-int(%d)
+int(142)
 
 -- Format a sample entry --
-array(17) {
+array(12) {
   [0]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(18) "America/Porto_Acre"
-  }
-  [1]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -48,7 +39,7 @@ array(17) {
     ["timezone_id"]=>
     string(18) "Australia/Adelaide"
   }
-  [2]=>
+  [1]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -57,34 +48,7 @@ array(17) {
     ["timezone_id"]=>
     string(18) "Australia/Adelaide"
   }
-  [3]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(16) "America/Eirunepe"
-  }
-  [4]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(18) "America/Rio_Branco"
-  }
-  [5]=>
-  array(3) {
-    ["dst"]=>
-    bool(true)
-    ["offset"]=>
-    int(-14400)
-    ["timezone_id"]=>
-    string(11) "Brazil/Acre"
-  }
-  [6]=>
+  [2]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -93,7 +57,7 @@ array(17) {
     ["timezone_id"]=>
     string(21) "Australia/Broken_Hill"
   }
-  [7]=>
+  [3]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -102,7 +66,7 @@ array(17) {
     ["timezone_id"]=>
     string(16) "Australia/Darwin"
   }
-  [8]=>
+  [4]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -111,7 +75,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/North"
   }
-  [9]=>
+  [5]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -120,7 +84,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/South"
   }
-  [10]=>
+  [6]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -129,16 +93,7 @@ array(17) {
     ["timezone_id"]=>
     string(20) "Australia/Yancowinna"
   }
-  [11]=>
-  array(3) {
-    ["dst"]=>
-    bool(false)
-    ["offset"]=>
-    int(34200)
-    ["timezone_id"]=>
-    string(13) "Asia/Jayapura"
-  }
-  [12]=>
+  [7]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -147,7 +102,7 @@ array(17) {
     ["timezone_id"]=>
     string(21) "Australia/Broken_Hill"
   }
-  [13]=>
+  [8]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -156,7 +111,7 @@ array(17) {
     ["timezone_id"]=>
     string(16) "Australia/Darwin"
   }
-  [14]=>
+  [9]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -165,7 +120,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/North"
   }
-  [15]=>
+  [10]=>
   array(3) {
     ["dst"]=>
     bool(false)
@@ -174,7 +129,7 @@ array(17) {
     ["timezone_id"]=>
     string(15) "Australia/South"
   }
-  [16]=>
+  [11]=>
   array(3) {
     ["dst"]=>
     bool(false)
index 492c623eb190c548cc2fe8fb48351dde25cc1d51..b6a0bd94f7a7ac0d2be8a000b62ce9d6ff62ba31 100644 (file)
@@ -24,7 +24,6 @@ var_dump( timezone_name_from_abbr("EDT") );
 echo "-- Lookup with name and offset--\n"; 
 var_dump( timezone_name_from_abbr("ADT", -10800) );
 var_dump( timezone_name_from_abbr("ADT", 14400) );
-var_dump( timezone_name_from_abbr("AMST", -10800) );
 
 echo "-- Tests without valid name - uses gmtOffset and isdst to find match --\n"; 
 var_dump( timezone_name_from_abbr("", 3600, 1) );
@@ -47,8 +46,7 @@ string(13) "Europe/Berlin"
 string(16) "America/New_York"
 -- Lookup with name and offset--
 string(15) "America/Halifax"
-string(12) "Asia/Baghdad"
-string(17) "America/Boa_Vista"
+string(15) "America/Halifax"
 -- Tests without valid name - uses gmtOffset and isdst to find match --
 string(13) "Europe/London"
 string(17) "America/Sao_Paulo"
index 26c198bc4261d2c285e50e602ad6b401ab6fa9d5..9be98399c55d8e8af8f86a9030ab1196311a2275 100644 (file)
@@ -56,8 +56,8 @@ U_CFUNC TimeZone *timezone_convert_datetimezone(int type,
                        break;
                case TIMELIB_ZONETYPE_OFFSET: {
                        int offset_mins = is_datetime
-                               ? -((php_date_obj*)object)->time->z
-                               : -(int)((php_timezone_obj*)object)->tzi.utc_offset,
+                               ? ((php_date_obj*)object)->time->z / 60
+                               : (int)((php_timezone_obj*)object)->tzi.utc_offset / 60,
                                hours = offset_mins / 60,
                                minutes = offset_mins - hours * 60;
                        minutes *= minutes > 0 ? 1 : -1;
@@ -140,7 +140,7 @@ U_CFUNC int intl_datetime_decompose(zval *z, double *millis, TimeZone **tz,
                }
 
                datetime = Z_PHPDATE_P(z);
-               *millis = U_MILLIS_PER_SECOND * ((double)Z_LVAL(retval) + datetime->time->f);
+               *millis = U_MILLIS_PER_SECOND * (double)Z_LVAL(retval) + (datetime->time->us / 1000);
                zval_ptr_dtor(&zfuncname);
        }
 
index f67e55ae4e5676b68e72f792a3eeef829f2948e9..b036de81cf98641e65e7ba0c44a8f96fd65133b3 100644 (file)
@@ -83,8 +83,8 @@ U_CFUNC zval *timezone_convert_to_datetimezone(const TimeZone *timeZone,
                 * so we must mess with DateTimeZone structure ourselves */
                tzobj->initialized        = 1;
                tzobj->type                       = TIMELIB_ZONETYPE_OFFSET;
-               //convert offset from milliseconds to minutes
-               tzobj->tzi.utc_offset = -1 * timeZone->getRawOffset() / (60 * 1000);
+               //convert offset from milliseconds to seconds
+               tzobj->tzi.utc_offset = timeZone->getRawOffset() / 1000;
        } else {
                zend_string *u8str;
                /* Call the constructor! */