diff options
170 files changed, 16461 insertions, 15163 deletions
@@ -7,12 +7,17 @@ PHP NEWS (Adam) . Update the MIME type list from the one shipped by Apache HTTPD. (Adam) +- Core: + . Added PHP_INT_MIN constant. (Andrea) + - DBA: . Fixed bug #62490 (dba_delete returns true on missing item (inifile)). (Mike) - Standard: . Removed call_user_method() and call_user_method_array() functions. (Kalle) . Fix user session handlers (See rfc:session.user.return-value). (Sara) + . Added intdiv() function. (Andrea) + . Improved precision of log() function for base 2 and 10. (Marc Bennewitz) - XSL: . Fixed bug #64776 (The XSLT extension is not thread safe). (Mike) diff --git a/README.GIT-RULES b/README.GIT-RULES index 3df9d17bcd..d966093f25 100644 --- a/README.GIT-RULES +++ b/README.GIT-RULES @@ -51,9 +51,7 @@ Currently we have the following branches in use:: PHP-5.4 Is used to release the PHP 5.4.x series. This is a current stable version and is open for bugfixes only. - PHP-5.3 Is used to release the PHP 5.3.x series. This is currently - in extended support and open forsecurity fixes only. Triaged - via security@php.net + PHP-5.3 This branch is closed. PHP-5.2 This branch is closed. @@ -63,7 +61,7 @@ Currently we have the following branches in use:: The next few rules are more of a technical nature:: - 1. All changes should first go to the lowest branch (i.e. 5.3) and then + 1. All changes should first go to the lowest branch (i.e. 5.4) and then get merged up to all other branches. If a change is not needed for later branches (i.e. fixes for features which where dropped from later branches) an empty merge should be done. diff --git a/README.SUBMITTING_PATCH b/README.SUBMITTING_PATCH index 50a1664a71..bdd46a22f8 100644 --- a/README.SUBMITTING_PATCH +++ b/README.SUBMITTING_PATCH @@ -17,7 +17,7 @@ Online Forums ------------- There are several IRC channels where PHP developers are often available to discuss questions. They include #php.pecl and #php.doc -on the EFNet network and #php-dev-win on FreeNode. +on the EFNet network and #winphp-dev on FreeNode. PHP Patches @@ -33,27 +33,17 @@ and discuss it on the development mail list internals@lists.php.net. RFC Wiki accounts can be requested on http://wiki.php.net/start?do=register. PHP extension maintainers can be found in the EXTENSIONS file in the PHP source. Mail list -subscription is explained on http://www.php.net/mailing-lists.php. +subscription is explained on http://php.net/mailing-lists.php. Information on PHP internal C functions is at -http://www.php.net/internals, though this is considered incomplete. -Various external resources can be found on the web. A standard +http://php.net/internals, though this is considered incomplete. +Various external resources can be found on the web. See +https://wiki.php.net/internals for some references. A standard printed reference is the book "Extending and Embedding PHP" by Sara Golemon. -Attach the patch to the PHP bug and consider sending a notification -email about the change to internals@lists.php.net. Also CC the -extension maintainer. Explain what has been changed by your patch. -Test scripts should be included. - -Please make the mail subject prefix "[PATCH]". If attaching a patch, -ensure it has a file extension of ".txt". This is because only MIME -attachments of type 'text/*' are accepted. - The preferred way to propose PHP patch is sending pull request from -github. - -https://github.com/php/php-src +GitHub: https://github.com/php/php-src Fork the official PHP repository and send a pull request. A notification will be sent to the pull request mailing list. Sending a @@ -61,6 +51,17 @@ note to PHP Internals list (internals@lists.php.net) may help getting more feedback and quicker turnaround. You can also add pull requests to bug reports at http://bugs.php.net/. +If you are not using GitHub, attach your patch to a PHP bug and +consider sending a notification email about the change to +internals@lists.php.net. If the bug is for an extension, also CC the +extension maintainer. Explain what has been changed by your patch. +Test scripts should be included. + +Please make the mail subject prefix "[PATCH]". If attaching a patch, +ensure it has a file extension of ".txt". This is because only MIME +attachments of type 'text/*' are accepted. + + PHP Documentation Patches ------------------------- @@ -71,7 +72,7 @@ the PHP mail archives. If your change is large, then first discuss it with the mail list phpdoc@lists.php.net. Subscription is explained on -http://www.php.net/mailing-lists.php. +http://php.net/mailing-lists.php. Information on contributing to PHP documentation is at http://php.net/dochowto and http://wiki.php.net/doc/howto @@ -28,6 +28,8 @@ PHP X.Y UPGRADE NOTES 2. New Features ======================================== +- Standard + . intdiv() function for integer division added. ======================================== 3. Changes in SAPI modules @@ -68,6 +70,8 @@ PHP X.Y UPGRADE NOTES 10. New Global Constants ======================================== +- Core + . PHP_INT_MIN added. ======================================== 11. Changes to INI File Handling diff --git a/Zend/tests/constant_expressions_arrays.phpt b/Zend/tests/constant_expressions_arrays.phpt index 061fcc6a92..2ab03453de 100644 --- a/Zend/tests/constant_expressions_arrays.phpt +++ b/Zend/tests/constant_expressions_arrays.phpt @@ -22,7 +22,7 @@ class foo { var_dump(foo::bar); -var_dump(a); // Eventually allow that later with array dereferencing of constants +var_dump(a, a[0], a[2], a[2][1], a[3]); ?> --EXPECTF-- @@ -32,4 +32,35 @@ int(1) int(4) int(1) -Fatal error: Arrays are not allowed in constants at run-time in %s on line %d +Notice: Undefined offset: 3 in %s on line %d +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + array(2) { + [0]=> + int(3) + [1]=> + array(1) { + [0]=> + int(4) + } + } +} +int(1) +array(2) { + [0]=> + int(3) + [1]=> + array(1) { + [0]=> + int(4) + } +} +array(1) { + [0]=> + int(4) +} +NULL diff --git a/Zend/tests/constant_expressions_self_referencing_array.phpt b/Zend/tests/constant_expressions_self_referencing_array.phpt index 09f862e048..ae76a08602 100644 --- a/Zend/tests/constant_expressions_self_referencing_array.phpt +++ b/Zend/tests/constant_expressions_self_referencing_array.phpt @@ -1,7 +1,5 @@ --TEST-- Self-referencing constant expression (part of a constant AST) ---XFAIL-- -Not yet fixed, to be fixed for PHP 5.6 --FILE-- <?php class A { diff --git a/Zend/tests/errmsg_040.phpt b/Zend/tests/errmsg_040.phpt index f3d0afcf0a..d5d2bf38d3 100644 --- a/Zend/tests/errmsg_040.phpt +++ b/Zend/tests/errmsg_040.phpt @@ -6,8 +6,16 @@ errmsg: arrays are not allowed in class constants class test { const TEST = array(1,2,3); } - +var_dump(test::TEST); echo "Done\n"; ?> --EXPECTF-- -Fatal error: Arrays are not allowed in class constants in %s on line %d +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} +Done diff --git a/Zend/tests/gc_029.phpt b/Zend/tests/gc_029.phpt index 18fef3c7d7..3873d8becd 100644 --- a/Zend/tests/gc_029.phpt +++ b/Zend/tests/gc_029.phpt @@ -33,5 +33,5 @@ unset($foo); unset($bar); var_dump(gc_collect_cycles()); ?> ---EXPECT-- -int(3) +--EXPECTREGEX-- +int\([23]\) diff --git a/Zend/tests/ns_059.phpt b/Zend/tests/ns_059.phpt index ea66037b43..301a6fc830 100644 --- a/Zend/tests/ns_059.phpt +++ b/Zend/tests/ns_059.phpt @@ -3,6 +3,7 @@ --FILE-- <?php const C = array(); +var_dump(C); --EXPECTF-- -Fatal error: Arrays are not allowed as constants in %sns_059.php on line 2 - +array(0) { +} diff --git a/Zend/zend.c b/Zend/zend.c index 5ab8ee3eb4..8bcdbd82c2 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -212,7 +212,7 @@ static void print_flat_hash(HashTable *ht TSRMLS_DC) /* {{{ */ } /* }}} */ -ZEND_API int zend_make_printable_zval(zval *expr, zval *expr_copy) /* {{{ */ +ZEND_API int zend_make_printable_zval(zval *expr, zval *expr_copy TSRMLS_DC) /* {{{ */ { if (Z_TYPE_P(expr) == IS_STRING) { return 0; @@ -221,15 +221,16 @@ ZEND_API int zend_make_printable_zval(zval *expr, zval *expr_copy) /* {{{ */ again: switch (Z_TYPE_P(expr)) { case IS_NULL: - case IS_FALSE: { - TSRMLS_FETCH(); + case IS_FALSE: ZVAL_EMPTY_STRING(expr_copy); - break; - } + break; case IS_TRUE: - // TODO: use interned string ??? - ZVAL_NEW_STR(expr_copy, STR_INIT("1", 1, 0)); - break; + if (CG(one_char_string)['1']) { + ZVAL_INT_STR(expr_copy, CG(one_char_string)['1']); + } else { + ZVAL_NEW_STR(expr_copy, STR_INIT("1", 1, 0)); + } + break; case IS_RESOURCE: { char buf[sizeof("Resource id #") + MAX_LENGTH_OF_LONG]; int len; @@ -244,35 +245,31 @@ again: ZVAL_NEW_STR(expr_copy, STR_INIT("Array", sizeof("Array") - 1, 0)); break; case IS_OBJECT: - { - TSRMLS_FETCH(); - - if (Z_OBJ_HANDLER_P(expr, cast_object)) { - Z_ADDREF_P(expr); - if (Z_OBJ_HANDLER_P(expr, cast_object)(expr, expr_copy, IS_STRING TSRMLS_CC) == SUCCESS) { - zval_ptr_dtor(expr); - break; - } + if (Z_OBJ_HANDLER_P(expr, cast_object)) { + Z_ADDREF_P(expr); + if (Z_OBJ_HANDLER_P(expr, cast_object)(expr, expr_copy, IS_STRING TSRMLS_CC) == SUCCESS) { zval_ptr_dtor(expr); + break; } - if (!Z_OBJ_HANDLER_P(expr, cast_object) && Z_OBJ_HANDLER_P(expr, get)) { - zval rv; - zval *z = Z_OBJ_HANDLER_P(expr, get)(expr, &rv TSRMLS_CC); - - Z_ADDREF_P(z); - if (Z_TYPE_P(z) != IS_OBJECT) { - if (zend_make_printable_zval(z, expr_copy)) { - zval_ptr_dtor(z); - } else { - ZVAL_ZVAL(expr_copy, z, 0, 1); - } - return 1; + zval_ptr_dtor(expr); + } + if (!Z_OBJ_HANDLER_P(expr, cast_object) && Z_OBJ_HANDLER_P(expr, get)) { + zval rv; + zval *z = Z_OBJ_HANDLER_P(expr, get)(expr, &rv TSRMLS_CC); + + Z_ADDREF_P(z); + if (Z_TYPE_P(z) != IS_OBJECT) { + if (zend_make_printable_zval(z, expr_copy TSRMLS_CC)) { + zval_ptr_dtor(z); + } else { + ZVAL_ZVAL(expr_copy, z, 0, 1); } - zval_ptr_dtor(z); + return 1; } - zend_error(EG(exception) ? E_ERROR : E_RECOVERABLE_ERROR, "Object of class %s could not be converted to string", Z_OBJCE_P(expr)->name->val); - ZVAL_EMPTY_STRING(expr_copy); + zval_ptr_dtor(z); } + zend_error(EG(exception) ? E_ERROR : E_RECOVERABLE_ERROR, "Object of class %s could not be converted to string", Z_OBJCE_P(expr)->name->val); + ZVAL_EMPTY_STRING(expr_copy); break; case IS_DOUBLE: ZVAL_DUP(expr_copy, expr); @@ -540,7 +537,7 @@ static void compiler_globals_dtor(zend_compiler_globals *compiler_globals TSRMLS free(compiler_globals->static_members_table); } if (compiler_globals->script_encoding_list) { - pefree(compiler_globals->script_encoding_list, 1); + pefree((char*)compiler_globals->script_encoding_list, 1); } compiler_globals->last_static_member = 0; } diff --git a/Zend/zend.h b/Zend/zend.h index 5548c7be1b..0520d4dda1 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -609,7 +609,7 @@ END_EXTERN_C() BEGIN_EXTERN_C() ZEND_API char *get_zend_version(void); -ZEND_API int zend_make_printable_zval(zval *expr, zval *expr_copy); +ZEND_API int zend_make_printable_zval(zval *expr, zval *expr_copy TSRMLS_DC); ZEND_API int zend_print_zval(zval *expr, int indent TSRMLS_DC); ZEND_API int zend_print_zval_ex(zend_write_func_t write_func, zval *expr, int indent TSRMLS_DC); ZEND_API void zend_print_zval_r(zval *expr, int indent TSRMLS_DC); diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 5baa26ea54..9881740c06 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -249,7 +249,7 @@ static int parse_arg_object_to_string(zval *arg, char **p, int *pl, int type TSR if(Z_TYPE_P(z) != IS_OBJECT) { zval_dtor(arg); ZVAL_NULL(arg); - if (!zend_make_printable_zval(z, arg)) { + if (!zend_make_printable_zval(z, arg TSRMLS_CC)) { ZVAL_ZVAL(arg, z, 1, 1); } *pl = Z_STRLEN_P(arg); @@ -288,7 +288,7 @@ ZEND_API int parse_arg_object_to_str(zval *arg, zend_string **str, int type TSRM if(Z_TYPE_P(z) != IS_OBJECT) { zval_dtor(arg); ZVAL_NULL(arg); - if (!zend_make_printable_zval(z, arg)) { + if (!zend_make_printable_zval(z, arg TSRMLS_CC)) { ZVAL_ZVAL(arg, z, 1, 1); } *str = Z_STR_P(arg); diff --git a/Zend/zend_API.h b/Zend/zend_API.h index 3a242c249e..b40afc162f 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -248,7 +248,7 @@ ZEND_API int zend_copy_parameters_array(int param_count, zval *argument_array TS /* Parameter parsing API -- andrei */ -#define ZEND_PARSE_PARAMS_QUIET 1<<1 +#define ZEND_PARSE_PARAMS_QUIET (1<<1) ZEND_API int zend_parse_parameters(int num_args TSRMLS_DC, const char *type_spec, ...); ZEND_API int zend_parse_parameters_ex(int flags, int num_args TSRMLS_DC, const char *type_spec, ...); ZEND_API char *zend_zval_type_name(const zval *arg); @@ -646,6 +646,7 @@ END_EXTERN_C() } \ } while (0) #else // attempt to support calls to parent::__construct() ??? + // see: ext/date/tests/bug67118.phpt #define ZEND_CTOR_MAKE_NULL() do { \ if (EG(current_execute_data)->return_value) { \ zval_ptr_dtor(EG(current_execute_data)->return_value); \ @@ -716,53 +717,61 @@ ZEND_API void zend_wrong_paramer_class_error(int num, char *name, zval *arg TSRM ZEND_API void zend_wrong_callback_error(int severity, int num, char *error TSRMLS_DC); ZEND_API int _z_param_class(zval *arg, zend_class_entry **pce, int num, int check_null TSRMLS_DC); +#define ZPP_ERROR_OK 0 +#define ZPP_ERROR_FAILURE 1 +#define ZPP_ERROR_WRONG_CALLBACK 2 +#define ZPP_ERROR_WRONG_CLASS 3 +#define ZPP_ERROR_WRONG_ARG 4 +#define ZPP_ERROR_WRONG_COUNT 5 + #define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \ const int _flags = (flags); \ int _min_num_args = (min_num_args); \ int _max_num_args = (max_num_args); \ int _num_args = EG(current_execute_data)->num_args; \ int _i; \ - zval *_real_arg, *_arg; \ - zend_expected_type _expected_type; \ - char *_error; \ + zval *_real_arg, *_arg = NULL; \ + zend_expected_type _expected_type = IS_UNDEF; \ + char *_error = NULL; \ zend_bool _dummy; \ + zend_bool _optional = 0; \ + int error_code = ZPP_ERROR_OK; \ ((void)_i); \ ((void)_real_arg); \ ((void)_arg); \ ((void)_expected_type); \ ((void)_error); \ ((void)_dummy); \ - if (UNEXPECTED(_num_args < _min_num_args) || \ - (UNEXPECTED(_num_args > _max_num_args) && \ - EXPECTED(_max_num_args >= 0))) { \ - if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \ - zend_wrong_paramers_count_error(_num_args, _min_num_args, _max_num_args TSRMLS_CC); \ + ((void)_optional); \ + \ + do { \ + if (UNEXPECTED(_num_args < _min_num_args) || \ + (UNEXPECTED(_num_args > _max_num_args) && \ + EXPECTED(_max_num_args >= 0))) { \ + if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \ + zend_wrong_paramers_count_error(_num_args, _min_num_args, _max_num_args TSRMLS_CC); \ + } \ + error_code = ZPP_ERROR_FAILURE; \ + break; \ } \ - goto zend_parse_params_failure; \ - } \ - _i = 0; \ - _real_arg = ZEND_CALL_ARG(EG(current_execute_data), 0); + _i = 0; \ + _real_arg = ZEND_CALL_ARG(EG(current_execute_data), 0); #define ZEND_PARSE_PARAMETERS_START(min_num_args, max_num_args) \ ZEND_PARSE_PARAMETERS_START_EX(0, min_num_args, max_num_args) #define ZEND_PARSE_PARAMETERS_END_EX(failure) \ - if (0) { \ -zend_parse_params_wrong_callback: ZEND_ATTRIBUTE_UNUSED_LABEL \ - if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \ - zend_wrong_callback_error(E_WARNING, _i, _error TSRMLS_CC); \ - } \ - goto zend_parse_params_failure; \ -zend_parse_params_wrong_class: ZEND_ATTRIBUTE_UNUSED_LABEL \ - if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \ - zend_wrong_paramer_class_error(_i, _error, _arg TSRMLS_CC); \ - } \ - goto zend_parse_params_failure; \ -zend_parse_params_wrong_arg: ZEND_ATTRIBUTE_UNUSED_LABEL \ + } while (0); \ + if (UNEXPECTED(error_code != ZPP_ERROR_OK)) { \ if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \ - zend_wrong_paramer_type_error(_i, _expected_type, _arg TSRMLS_CC); \ + if (error_code == ZPP_ERROR_WRONG_CALLBACK) { \ + zend_wrong_callback_error(E_WARNING, _i, _error TSRMLS_CC); \ + } else if (error_code == ZPP_ERROR_WRONG_CLASS) { \ + zend_wrong_paramer_class_error(_i, _error, _arg TSRMLS_CC); \ + } else if (error_code == ZPP_ERROR_WRONG_ARG) { \ + zend_wrong_paramer_type_error(_i, _expected_type, _arg TSRMLS_CC); \ + } \ } \ -zend_parse_params_failure: ZEND_ATTRIBUTE_UNUSED_LABEL \ failure; \ } \ } while (0) @@ -771,7 +780,10 @@ zend_parse_params_failure: ZEND_ATTRIBUTE_UNUSED_LABEL \ ZEND_PARSE_PARAMETERS_END_EX(return) #define Z_PARAM_PROLOGUE(separate) \ - if (UNEXPECTED(++_i >_num_args)) break; \ + ++_i; \ + if (_optional) { \ + if (UNEXPECTED(_i >_num_args)) break; \ + } \ _real_arg++; \ _arg = _real_arg; \ ZVAL_DEREF(_arg); \ @@ -780,224 +792,227 @@ zend_parse_params_failure: ZEND_ATTRIBUTE_UNUSED_LABEL \ } /* old "|" */ -#define Z_PARAM_OPTIONAL +#define Z_PARAM_OPTIONAL \ + _optional = 1; /* old "a" */ -#define Z_PARAM_ARRAY_EX(dest, check_null, separate) do { \ +#define Z_PARAM_ARRAY_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_array(_arg, &dest, check_null, 0)) { \ + if (UNEXPECTED(!_z_param_array(_arg, &dest, check_null, 0))) { \ _expected_type = Z_EXPECTED_ARRAY; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_ARRAY(dest) \ Z_PARAM_ARRAY_EX(dest, 0, 0) /* old "A" */ -#define Z_PARAM_ARRAY_OR_OBJECT_EX(dest, check_null, separate) do { \ +#define Z_PARAM_ARRAY_OR_OBJECT_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_array(_arg, &dest, check_null, 1)) { \ + if (UNEXPECTED(!_z_param_array(_arg, &dest, check_null, 1))) { \ _expected_type = Z_EXPECTED_ARRAY; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_ARRAY_OR_OBJECT(dest, check_null, separate) \ Z_PARAM_ARRAY_OR_OBJECT_EX(dest, 0, 0) /* old "b" */ -#define Z_PARAM_BOOL_EX(dest, is_null, check_null, separate) do { \ +#define Z_PARAM_BOOL_EX(dest, is_null, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_bool(_arg, &dest, &is_null, check_null TSRMLS_CC)) { \ + if (UNEXPECTED(!_z_param_bool(_arg, &dest, &is_null, check_null TSRMLS_CC))) { \ _expected_type = Z_EXPECTED_BOOL; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_BOOL(dest) \ Z_PARAM_BOOL_EX(dest, _dummy, 0, 0) /* old "C" */ -#define Z_PARAM_CLASS_EX(dest, check_null, separate) do { \ +#define Z_PARAM_CLASS_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_class(_arg, &dest, _i, check_null TSRMLS_CC)) { \ - goto zend_parse_params_failure; \ - } \ - } while (0); + if (UNEXPECTED(!_z_param_class(_arg, &dest, _i, check_null TSRMLS_CC))) { \ + error_code = ZPP_ERROR_FAILURE; \ + break; \ + } #define Z_PARAM_CLASS(dest) \ Z_PARAM_CLASS_EX(dest, 0, 0) /* old "d" */ -#define Z_PARAM_DOUBLE_EX(dest, is_null, check_null, separate) do { \ +#define Z_PARAM_DOUBLE_EX(dest, is_null, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_double(_arg, &dest, &is_null, check_null)) { \ + if (UNEXPECTED(!_z_param_double(_arg, &dest, &is_null, check_null))) { \ _expected_type = Z_EXPECTED_DOUBLE; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_DOUBLE(dest) \ Z_PARAM_DOUBLE_EX(dest, _dummy, 0, 0) /* old "f" */ -#define Z_PARAM_FUNC_EX(dest_fci, dest_fcc, check_null, separate) do { \ +#define Z_PARAM_FUNC_EX(dest_fci, dest_fcc, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_func(_arg, &dest_fci, &dest_fcc, check_null, &_error TSRMLS_CC)) { \ + if (UNEXPECTED(!_z_param_func(_arg, &dest_fci, &dest_fcc, check_null, &_error TSRMLS_CC))) { \ if (!_error) { \ _expected_type = Z_EXPECTED_FUNC; \ - goto zend_parse_params_wrong_arg; \ + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ } else { \ - goto zend_parse_params_wrong_callback; \ + error_code = ZPP_ERROR_WRONG_CALLBACK; \ + break; \ } \ - } else if (_error) { \ + } else if (UNEXPECTED(_error != NULL)) { \ zend_wrong_callback_error(E_STRICT, _i, _error TSRMLS_CC); \ - } \ - } while (0); + } #define Z_PARAM_FUNC(dest_fci, dest_fcc) \ Z_PARAM_FUNC_EX(dest_fci, dest_fcc, 0, 0) /* old "h" */ -#define Z_PARAM_ARRAY_HT_EX(dest, check_null, separate) do { \ +#define Z_PARAM_ARRAY_HT_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_array_ht(_arg, &dest, check_null, 0 TSRMLS_CC)) { \ + if (UNEXPECTED(!_z_param_array_ht(_arg, &dest, check_null, 0 TSRMLS_CC))) { \ _expected_type = Z_EXPECTED_ARRAY; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_ARRAY_HT(dest) \ Z_PARAM_ARRAY_HT_EX(dest, 0, 0) /* old "H" */ -#define Z_PARAM_ARRAY_OR_OBJECT_HT_EX(dest, check_null, separate) do { \ +#define Z_PARAM_ARRAY_OR_OBJECT_HT_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_array_ht(_arg, &dest, check_null, 1 TSRMLS_CC)) { \ + if (UNEXPECTED(!_z_param_array_ht(_arg, &dest, check_null, 1 TSRMLS_CC))) { \ _expected_type = Z_EXPECTED_ARRAY; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_ARRAY_OR_OBJECT_HT(dest) \ Z_PARAM_ARRAY_OR_OBJECT_HT_EX(dest, 0, 0) /* old "l" */ -#define Z_PARAM_LONG_EX(dest, is_null, check_null, separate) do { \ +#define Z_PARAM_LONG_EX(dest, is_null, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_long(_arg, &dest, &is_null, check_null, 0)) { \ + if (UNEXPECTED(!_z_param_long(_arg, &dest, &is_null, check_null, 0))) { \ _expected_type = Z_EXPECTED_LONG; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_LONG(dest) \ Z_PARAM_LONG_EX(dest, _dummy, 0, 0) /* old "L" */ -#define Z_PARAM_STRICT_LONG_EX(dest, is_null, check_null, separate) do { \ +#define Z_PARAM_STRICT_LONG_EX(dest, is_null, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_long(_arg, &dest, &is_null, check_null, 1)) { \ + if (UNEXPECTED(!_z_param_long(_arg, &dest, &is_null, check_null, 1))) { \ _expected_type = Z_EXPECTED_LONG; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_STRICT_LONG(dest) \ Z_PARAM_STRICT_LONG_EX(dest, _dummy, 0, 0) /* old "o" */ -#define Z_PARAM_OBJECT_EX(dest, check_null, separate) do { \ +#define Z_PARAM_OBJECT_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_object(_arg, &dest, NULL, check_null TSRMLS_CC)) { \ + if (UNEXPECTED(!_z_param_object(_arg, &dest, NULL, check_null TSRMLS_CC))) { \ _expected_type = Z_EXPECTED_OBJECT; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_OBJECT(dest) \ Z_PARAM_OBJECT_EX(dest, 0, 0) /* old "O" */ -#define Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, check_null, separate) do { \ +#define Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_object(_arg, &dest, _ce, check_null TSRMLS_CC)) { \ + if (UNEXPECTED(!_z_param_object(_arg, &dest, _ce, check_null TSRMLS_CC))) { \ if (_ce) { \ _error = (_ce)->name->val; \ - goto zend_parse_params_wrong_class; \ + error_code = ZPP_ERROR_WRONG_CLASS; \ + break; \ } else { \ _expected_type = Z_EXPECTED_OBJECT; \ - goto zend_parse_params_wrong_arg; \ + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ } \ - } \ - } while (0); + } #define Z_PARAM_OBJECT_OF_CLASS(dest, _ce) \ Z_PARAM_OBJECT_OF_CLASS_EX(dest, _ce, 0, 0) /* old "p" */ -#define Z_PARAM_PATH_EX(dest, dest_len, check_null, separate) do { \ +#define Z_PARAM_PATH_EX(dest, dest_len, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_path(_arg, &dest, &dest_len, check_null TSRMLS_CC)) { \ + if (UNEXPECTED(!_z_param_path(_arg, &dest, &dest_len, check_null TSRMLS_CC))) { \ _expected_type = Z_EXPECTED_PATH; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_PATH(dest, dest_len) \ Z_PARAM_PATH_EX(dest, dest_len, 0, 0) /* old "P" */ -#define Z_PARAM_PATH_STR_EX(dest, check_null, separate) do { \ +#define Z_PARAM_PATH_STR_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_path_str(_arg, &dest, check_null TSRMLS_CC)) { \ + if (UNEXPECTED(!_z_param_path_str(_arg, &dest, check_null TSRMLS_CC))) { \ _expected_type = Z_EXPECTED_PATH; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_PATH_STR(dest) \ Z_PARAM_PATH_STR_EX(dest, 0, 0) /* old "r" */ -#define Z_PARAM_RESOURCE_EX(dest, check_null, separate) do { \ +#define Z_PARAM_RESOURCE_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_resource(_arg, &dest, check_null)) { \ + if (UNEXPECTED(!_z_param_resource(_arg, &dest, check_null))) { \ _expected_type = Z_EXPECTED_RESOURCE; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_RESOURCE(dest) \ Z_PARAM_RESOURCE_EX(dest, 0, 0) /* old "s" */ -#define Z_PARAM_STRING_EX(dest, dest_len, check_null, separate) do { \ +#define Z_PARAM_STRING_EX(dest, dest_len, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_string(_arg, &dest, &dest_len, check_null TSRMLS_CC)) { \ + if (UNEXPECTED(!_z_param_string(_arg, &dest, &dest_len, check_null TSRMLS_CC))) { \ _expected_type = Z_EXPECTED_STRING; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_STRING(dest, dest_len) \ Z_PARAM_STRING_EX(dest, dest_len, 0, 0) /* old "S" */ -#define Z_PARAM_STR_EX(dest, check_null, separate) do { \ +#define Z_PARAM_STR_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (!_z_param_str(_arg, &dest, check_null TSRMLS_CC)) { \ + if (UNEXPECTED(!_z_param_str(_arg, &dest, check_null TSRMLS_CC))) { \ _expected_type = Z_EXPECTED_STRING; \ - goto zend_parse_params_wrong_arg; \ - } \ - } while (0); + error_code = ZPP_ERROR_WRONG_ARG; \ + break; \ + } #define Z_PARAM_STR(dest) \ Z_PARAM_STR_EX(dest, 0, 0) /* old "z" */ -#define Z_PARAM_ZVAL_EX(dest, check_null, separate) do { \ +#define Z_PARAM_ZVAL_EX(dest, check_null, separate) \ if (separate) { \ Z_PARAM_PROLOGUE(separate); \ _z_param_zval_deref(_arg, &dest, check_null); \ @@ -1005,17 +1020,15 @@ zend_parse_params_failure: ZEND_ATTRIBUTE_UNUSED_LABEL \ if (UNEXPECTED(++_i >_num_args)) break; \ _real_arg++; \ _z_param_zval(_real_arg, &dest, check_null); \ - } \ - } while (0); + } #define Z_PARAM_ZVAL(dest) \ Z_PARAM_ZVAL_EX(dest, 0, 0) /* old "z" (with dereference) */ -#define Z_PARAM_ZVAL_DEREF_EX(dest, check_null, separate) do { \ +#define Z_PARAM_ZVAL_DEREF_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - _z_param_zval_deref(_arg, &dest, check_null); \ - } while (0); + _z_param_zval_deref(_arg, &dest, check_null); #define Z_PARAM_ZVAL_DEREF(dest) \ Z_PARAM_ZVAL_DEREF_EX(dest, 0, 0) @@ -1023,7 +1036,7 @@ zend_parse_params_failure: ZEND_ATTRIBUTE_UNUSED_LABEL \ /* old "+" and "*" */ #define Z_PARAM_VARIADIC_EX(spec, dest, dest_num, post_varargs) do { \ int _num_varargs = _num_args - _i - (post_varargs); \ - if (_num_varargs > 0) { \ + if (EXPECTED(_num_varargs > 0)) { \ dest = _real_arg + 1; \ dest_num = _num_varargs; \ _i += _num_varargs; \ diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c index 2dd5b16f44..8e1d970c41 100644 --- a/Zend/zend_ast.c +++ b/Zend/zend_ast.c @@ -173,7 +173,6 @@ static void zend_ast_add_array_element(zval *result, zval *offset, zval *expr TS break; case IS_STRING: zend_symtable_update(Z_ARRVAL_P(result), Z_STR_P(offset), expr); -//??? zval_dtor(offset); break; case IS_NULL: @@ -234,11 +233,22 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast *ast, zend_class_entry *s break; } case ZEND_AST_ZVAL: - ZVAL_DUP(result, zend_ast_get_zval(ast)); - if (Z_OPT_CONSTANT_P(result)) { - zval_update_constant_ex(result, 1, scope TSRMLS_CC); + { + zval *zv = zend_ast_get_zval(ast); + if (scope) { + /* class constants may be updated in-place */ + if (Z_OPT_CONSTANT_P(zv)) { + zval_update_constant_ex(zv, 1, scope TSRMLS_CC); + } + ZVAL_DUP(result, zv); + } else { + ZVAL_DUP(result, zv); + if (Z_OPT_CONSTANT_P(result)) { + zval_update_constant_ex(result, 1, scope TSRMLS_CC); + } } break; + } case ZEND_AST_AND: zend_ast_evaluate(&op1, ast->child[0], scope TSRMLS_CC); if (zend_is_true(&op1 TSRMLS_CC)) { @@ -304,20 +314,17 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast *ast, zend_class_entry *s } } break; -//??? -#if 0 case ZEND_FETCH_DIM_R: - zend_ast_evaluate(&op1, (&ast->u.child)[0], scope TSRMLS_CC); - zend_ast_evaluate(&op2, (&ast->u.child)[1], scope TSRMLS_CC); + zend_ast_evaluate(&op1, ast->child[0], scope TSRMLS_CC); + zend_ast_evaluate(&op2, ast->child[1], scope TSRMLS_CC); { - zval *tmp; + zval tmp; zend_fetch_dimension_by_zval(&tmp, &op1, &op2 TSRMLS_CC); - ZVAL_ZVAL(result, tmp, 1, 1); + ZVAL_ZVAL(result, &tmp, 1, 1); } zval_dtor(&op1); zval_dtor(&op2); break; -#endif default: zend_error(E_ERROR, "Unsupported constant expression"); } diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 5a3359efa7..5e0ed6cf7b 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -3149,44 +3149,6 @@ void zend_do_end_compilation(TSRMLS_D) /* {{{ */ } /* }}} */ -ZEND_API void zend_make_immutable_array(zval *zv TSRMLS_DC) /* {{{ */ -{ - zend_constant *c; - - if (Z_IMMUTABLE_P(zv)) { - return; - } - - Z_TYPE_FLAGS_P(zv) = IS_TYPE_IMMUTABLE; - GC_REFCOUNT(Z_COUNTED_P(zv)) = 2; - Z_ARRVAL_P(zv)->u.flags &= ~HASH_FLAG_APPLY_PROTECTION; - - /* store as an anonymous constant */ - c = emalloc(sizeof(zend_constant)); - ZVAL_COPY_VALUE(&c->value, zv); - c->flags = 0; - c->name = NULL; - c->module_number = PHP_USER_CONSTANT; - zend_hash_next_index_insert_ptr(EG(zend_constants), c); -} -/* }}} */ - -void zend_make_immutable_array_r(zval *zv TSRMLS_DC) /* {{{ */ -{ - zval *el; - - if (Z_IMMUTABLE_P(zv)) { - return; - } - zend_make_immutable_array(zv TSRMLS_CC); - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(zv), el) { - if (Z_TYPE_P(el) == IS_ARRAY) { - zend_make_immutable_array_r(el TSRMLS_CC); - } - } ZEND_HASH_FOREACH_END(); -} -/* }}} */ - /* {{{ zend_dirname Returns directory name component of path */ ZEND_API size_t zend_dirname(char *path, size_t len) @@ -6542,7 +6504,6 @@ static zend_bool zend_try_ct_eval_array(zval *result, zend_ast *ast TSRMLS_DC) { } } - zend_make_immutable_array(result TSRMLS_CC); return 1; } diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index d3d81d04d0..0d343f0b39 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -450,7 +450,6 @@ typedef int (*unary_op_type)(zval *, zval * TSRMLS_DC); typedef int (*binary_op_type)(zval *, zval *, zval * TSRMLS_DC); ZEND_API unary_op_type get_unary_op(int opcode); ZEND_API binary_op_type get_binary_op(int opcode); -ZEND_API void zend_make_immutable_array(zval *zv TSRMLS_DC); void zend_stop_lexing(TSRMLS_D); void zend_emit_final_return(zval *zv TSRMLS_DC); @@ -562,12 +561,10 @@ int zend_add_literal(zend_op_array *op_array, zval *zv TSRMLS_DC); #define ZEND_FETCH_CLASS_DEFAULT 0 #define ZEND_FETCH_CLASS_SELF 1 #define ZEND_FETCH_CLASS_PARENT 2 -#define ZEND_FETCH_CLASS_MAIN 3 /* unused ??? */ -#define ZEND_FETCH_CLASS_GLOBAL 4 /* unused ??? */ -#define ZEND_FETCH_CLASS_AUTO 5 -#define ZEND_FETCH_CLASS_INTERFACE 6 -#define ZEND_FETCH_CLASS_STATIC 7 -#define ZEND_FETCH_CLASS_TRAIT 14 +#define ZEND_FETCH_CLASS_STATIC 3 +#define ZEND_FETCH_CLASS_AUTO 4 +#define ZEND_FETCH_CLASS_INTERFACE 5 +#define ZEND_FETCH_CLASS_TRAIT 6 #define ZEND_FETCH_CLASS_MASK 0x0f #define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80 #define ZEND_FETCH_CLASS_SILENT 0x0100 diff --git a/Zend/zend_constants.c b/Zend/zend_constants.c index 650a566159..64ea7060fa 100644 --- a/Zend/zend_constants.c +++ b/Zend/zend_constants.c @@ -32,9 +32,7 @@ void free_zend_constant(zval *zv) zend_constant *c = Z_PTR_P(zv); if (!(c->flags & CONST_PERSISTENT)) { - if (Z_REFCOUNTED(c->value) || Z_IMMUTABLE(c->value)) { - _zval_dtor_func(Z_COUNTED(c->value) ZEND_FILE_LINE_CC); - } + zval_dtor(&c->value); } else { zval_internal_dtor(&c->value); } @@ -398,7 +396,7 @@ ZEND_API zval *zend_get_constant_ex(zend_string *cname, zend_class_entry *scope, ret_constant = Z_REFVAL_P(ret_constant); } } - STR_FREE(class_name); + STR_RELEASE(class_name); STR_FREE(constant_name); if (ret_constant && Z_CONSTANT_P(ret_constant)) { zval_update_constant_ex(ret_constant, 1, ce TSRMLS_CC); diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 7fca796137..f3e97d71d0 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -133,8 +133,7 @@ static const zend_internal_function zend_pass_function = { /* End of zend_execute_locks.h */ -// TODO: avoid global variable usage ??? -#define CV_DEF_OF(i) (EG(current_execute_data)->func->op_array.vars[i]) +#define CV_DEF_OF(i) (EX(func)->op_array.vars[i]) #define CTOR_CALL_BIT 0x1 #define CTOR_USED_BIT 0x2 @@ -182,7 +181,7 @@ static zend_always_inline zval *_get_zval_ptr_var_deref(zend_uint var, const zen return ret; } -static zend_never_inline zval *_get_zval_cv_lookup(zval *ptr, zend_uint var, int type TSRMLS_DC) +static zend_never_inline zval *_get_zval_cv_lookup(zval *ptr, zend_uint var, int type, const zend_execute_data *execute_data TSRMLS_DC) { zend_string *cv; @@ -206,7 +205,7 @@ static zend_never_inline zval *_get_zval_cv_lookup(zval *ptr, zend_uint var, int return ptr; } -static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_R(zval *ptr, zend_uint var TSRMLS_DC) +static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_R(zval *ptr, zend_uint var, const zend_execute_data *execute_data TSRMLS_DC) { zend_string *cv = CV_DEF_OF(EX_VAR_TO_NUM(var)); @@ -214,7 +213,7 @@ static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_R(zval *ptr, zend_uin return &EG(uninitialized_zval); } -static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_UNSET(zval *ptr, zend_uint var TSRMLS_DC) +static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_UNSET(zval *ptr, zend_uint var, const zend_execute_data *execute_data TSRMLS_DC) { zend_string *cv = CV_DEF_OF(EX_VAR_TO_NUM(var)); @@ -222,12 +221,12 @@ static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_UNSET(zval *ptr, zend return &EG(uninitialized_zval); } -static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_IS(zval *ptr, zend_uint var TSRMLS_DC) +static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_IS(zval *ptr, zend_uint var, const zend_execute_data *execute_data TSRMLS_DC) { return &EG(uninitialized_zval); } -static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_RW(zval *ptr, zend_uint var TSRMLS_DC) +static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_RW(zval *ptr, zend_uint var, const zend_execute_data *execute_data TSRMLS_DC) { zend_string *cv = CV_DEF_OF(EX_VAR_TO_NUM(var)); @@ -236,7 +235,7 @@ static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_RW(zval *ptr, zend_ui return ptr; } -static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_W(zval *ptr, zend_uint var TSRMLS_DC) +static zend_always_inline zval *_get_zval_cv_lookup_BP_VAR_W(zval *ptr, zend_uint var, const zend_execute_data *execute_data TSRMLS_DC) { ZVAL_NULL(ptr); return ptr; @@ -247,7 +246,7 @@ static zend_always_inline zval *_get_zval_ptr_cv(const zend_execute_data *execut zval *ret = EX_VAR(var); if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) { - return _get_zval_cv_lookup(ret, var, type TSRMLS_CC); + return _get_zval_cv_lookup(ret, var, type, execute_data TSRMLS_CC); } return ret; } @@ -257,7 +256,7 @@ static zend_always_inline zval *_get_zval_ptr_cv_deref(const zend_execute_data * zval *ret = EX_VAR(var); if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) { - return _get_zval_cv_lookup(ret, var, type TSRMLS_CC); + return _get_zval_cv_lookup(ret, var, type, execute_data TSRMLS_CC); } ZVAL_DEREF(ret); return ret; @@ -268,7 +267,7 @@ static zend_always_inline zval *_get_zval_ptr_cv_BP_VAR_R(const zend_execute_dat zval *ret = EX_VAR(var); if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) { - return _get_zval_cv_lookup_BP_VAR_R(ret, var TSRMLS_CC); + return _get_zval_cv_lookup_BP_VAR_R(ret, var, execute_data TSRMLS_CC); } return ret; } @@ -278,7 +277,7 @@ static zend_always_inline zval *_get_zval_ptr_cv_deref_BP_VAR_R(const zend_execu zval *ret = EX_VAR(var); if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) { - return _get_zval_cv_lookup_BP_VAR_R(ret, var TSRMLS_CC); + return _get_zval_cv_lookup_BP_VAR_R(ret, var, execute_data TSRMLS_CC); } ZVAL_DEREF(ret); return ret; @@ -289,7 +288,7 @@ static zend_always_inline zval *_get_zval_ptr_cv_BP_VAR_UNSET(const zend_execute zval *ret = EX_VAR(var); if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) { - return _get_zval_cv_lookup_BP_VAR_UNSET(ret, var TSRMLS_CC); + return _get_zval_cv_lookup_BP_VAR_UNSET(ret, var, execute_data TSRMLS_CC); } return ret; } @@ -299,7 +298,7 @@ static zend_always_inline zval *_get_zval_ptr_cv_deref_BP_VAR_UNSET(const zend_e zval *ret = EX_VAR(var); if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) { - return _get_zval_cv_lookup_BP_VAR_UNSET(ret, var TSRMLS_CC); + return _get_zval_cv_lookup_BP_VAR_UNSET(ret, var, execute_data TSRMLS_CC); } ZVAL_DEREF(ret); return ret; @@ -310,7 +309,7 @@ static zend_always_inline zval *_get_zval_ptr_cv_BP_VAR_IS(const zend_execute_da zval *ret = EX_VAR(var); if (Z_TYPE_P(ret) == IS_UNDEF) { - return _get_zval_cv_lookup_BP_VAR_IS(ret, var TSRMLS_CC); + return _get_zval_cv_lookup_BP_VAR_IS(ret, var, execute_data TSRMLS_CC); } return ret; } @@ -320,7 +319,7 @@ static zend_always_inline zval *_get_zval_ptr_cv_deref_BP_VAR_IS(const zend_exec zval *ret = EX_VAR(var); if (Z_TYPE_P(ret) == IS_UNDEF) { - return _get_zval_cv_lookup_BP_VAR_IS(ret, var TSRMLS_CC); + return _get_zval_cv_lookup_BP_VAR_IS(ret, var, execute_data TSRMLS_CC); } ZVAL_DEREF(ret); return ret; @@ -331,7 +330,7 @@ static zend_always_inline zval *_get_zval_ptr_cv_BP_VAR_RW(const zend_execute_da zval *ret = EX_VAR(var); if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) { - return _get_zval_cv_lookup_BP_VAR_RW(ret, var TSRMLS_CC); + return _get_zval_cv_lookup_BP_VAR_RW(ret, var, execute_data TSRMLS_CC); } return ret; } @@ -341,7 +340,7 @@ static zend_always_inline zval *_get_zval_ptr_cv_deref_BP_VAR_RW(const zend_exec zval *ret = EX_VAR(var); if (UNEXPECTED(Z_TYPE_P(ret) == IS_UNDEF)) { - return _get_zval_cv_lookup_BP_VAR_RW(ret, var TSRMLS_CC); + return _get_zval_cv_lookup_BP_VAR_RW(ret, var, execute_data TSRMLS_CC); } ZVAL_DEREF(ret); return ret; @@ -352,7 +351,7 @@ static zend_always_inline zval *_get_zval_ptr_cv_BP_VAR_W(const zend_execute_dat zval *ret = EX_VAR(var); if (Z_TYPE_P(ret) == IS_UNDEF) { - return _get_zval_cv_lookup_BP_VAR_W(ret, var TSRMLS_CC); + return _get_zval_cv_lookup_BP_VAR_W(ret, var, execute_data TSRMLS_CC); } return ret; } @@ -367,7 +366,7 @@ static zend_always_inline zval *_get_zval_ptr_cv_deref_BP_VAR_W(const zend_execu zval *ret = EX_VAR(var); if (Z_TYPE_P(ret) == IS_UNDEF) { - return _get_zval_cv_lookup_BP_VAR_W(ret, var TSRMLS_CC); + return _get_zval_cv_lookup_BP_VAR_W(ret, var, execute_data TSRMLS_CC); } ZVAL_DEREF(ret); return ret; @@ -697,34 +696,23 @@ static inline void zend_assign_to_object(zval *retval, zval *object_ptr, zval *p if (Z_TYPE_P(object) == IS_NULL || Z_TYPE_P(object) == IS_FALSE || (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0)) { -//??? The following block may handle only non-interned empty string, -//??? but it doesn't work anyway -//??? see: Zend/tests/bug54265.phpt -#if 0 - if (Z_REFCOUNTED_P(object)) { - if (!Z_ISREF_P(object_ptr)) { - SEPARATE_ZVAL(object); - } - Z_ADDREF_P(object); - zend_error(E_WARNING, "Creating default object from empty value"); - if (Z_REFCOUNT_P(object) == 1) { - /* object was removed by error handler, nothing to assign to */ - zval_ptr_dtor(object); - if (retval) { - ZVAL_NULL(retval); - } - FREE_OP(free_value); - return; + zend_object *obj; + + zval_ptr_dtor(object); + object_init(object); + Z_ADDREF_P(object); + obj = Z_OBJ_P(object); + zend_error(E_WARNING, "Creating default object from empty value"); + if (GC_REFCOUNT(obj) == 1) { + /* the enclosing container was deleted, obj is unreferenced */ + if (retval) { + ZVAL_NULL(retval); } - Z_DELREF_P(object); - } else { - zend_error(E_WARNING, "Creating default object from empty value"); + FREE_OP(free_value); + OBJ_RELEASE(obj); + return; } -#else - zend_error(E_WARNING, "Creating default object from empty value"); -#endif - zval_dtor(object); - object_init(object); + Z_DELREF_P(object); } else { zend_error(E_WARNING, "Attempt to assign property of non-object"); if (retval) { @@ -945,6 +933,9 @@ static inline zval* zend_assign_to_variable(zval *variable_ptr, zval *value TSRM value = Z_REFVAL_P(value); } if (Z_REFCOUNTED_P(value)) { + if (UNEXPECTED(variable_ptr == value)) { + return variable_ptr; + } Z_ADDREF_P(value); } } @@ -1364,6 +1355,11 @@ static zend_never_inline void zend_fetch_dimension_address_read_IS(zval *result, zend_fetch_dimension_address_read(result, container, dim, dim_type, BP_VAR_IS TSRMLS_CC); } +ZEND_API void zend_fetch_dimension_by_zval(zval *result, zval *container, zval *dim TSRMLS_DC) +{ + zend_fetch_dimension_address_read_R(result, container, dim, IS_TMP_VAR TSRMLS_CC); +} + static void zend_fetch_property_address(zval *result, zval *container_ptr, zval *prop_ptr, void **cache_slot, int type, int is_ref TSRMLS_DC) { zval *container = container_ptr; diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h index 812d4141b4..cb7ca70ef3 100644 --- a/Zend/zend_execute.h +++ b/Zend/zend_execute.h @@ -115,9 +115,6 @@ again: result = Z_TYPE(tmp) == IS_TRUE; break; } - - // TODO: do we really need this warning ??? - // Nikita, add your comments here. zend_error(E_RECOVERABLE_ERROR, "Object of class %s could not be converted to boolean", Z_OBJ_P(op)->ce->name->val); } else if (Z_OBJ_HT_P(op)->get) { zval rv; @@ -289,6 +286,8 @@ ZEND_API zend_class_entry *zend_fetch_class(zend_string *class_name, int fetch_t ZEND_API zend_class_entry *zend_fetch_class_by_name(zend_string *class_name, const zval *key, int fetch_type TSRMLS_DC); void zend_verify_abstract_class(zend_class_entry *ce TSRMLS_DC); +ZEND_API void zend_fetch_dimension_by_zval(zval *result, zval *container, zval *dim TSRMLS_DC); + #ifdef ZEND_WIN32 void zend_init_timeout_thread(void); void zend_shutdown_timeout_thread(void); diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index bdf87bd440..947d051ddd 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -859,6 +859,7 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS EG(scope) = func->common.scope; } call->prev_execute_data = EG(current_execute_data); + call->return_value = NULL; /* this is not a constructor call */ EG(current_execute_data) = call; if (EXPECTED(zend_execute_internal == NULL)) { /* saves one function call if zend_execute_internal is not used */ diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c index eea4de8653..adc02a3eb0 100644 --- a/Zend/zend_gc.c +++ b/Zend/zend_gc.c @@ -472,7 +472,7 @@ static int gc_collect_white(zend_refcounted *ref TSRMLS_DC) Bucket *p; tail_call: - if (GC_INFO(ref) == GC_WHITE) { + if (GC_GET_COLOR(GC_INFO(ref)) == GC_WHITE) { ht = NULL; GC_SET_BLACK(GC_INFO(ref)); @@ -481,6 +481,30 @@ tail_call: count++; } +#if 1 + if ((GC_TYPE(ref) == IS_OBJECT || GC_TYPE(ref) == IS_ARRAY) && + !GC_ADDRESS(GC_INFO(ref))) { + /* add garbage into list */ + gc_root_buffer *buf = GC_G(unused); + + if (buf) { + GC_G(unused) = buf->prev; + } else if (GC_G(first_unused) != GC_G(last_unused)) { + buf = GC_G(first_unused); + GC_G(first_unused)++; + } + /* TODO: what should we do if we don't have room ??? */ + if (buf) { + buf->ref = ref; + buf->next = GC_G(roots).next; + buf->prev = &GC_G(roots); + GC_G(roots).next->prev = buf; + GC_G(roots).next = buf; + GC_SET_ADDRESS(GC_INFO(ref), buf - GC_G(buf)); + } + } +#endif + if (GC_TYPE(ref) == IS_OBJECT && EG(objects_store).object_buckets) { zend_object_get_gc_t get_gc; zend_object *obj = (zend_object*)ref; @@ -568,16 +592,23 @@ static int gc_collect_roots(TSRMLS_D) int count = 0; gc_root_buffer *current = GC_G(roots).next; + /* remove non-garbage from the list */ while (current != &GC_G(roots)) { - GC_SET_ADDRESS(GC_INFO(current->ref), 0); - if (GC_INFO(current->ref) == GC_WHITE) { - count += gc_collect_white(current->ref TSRMLS_CC); - GC_SET_ADDRESS(GC_INFO(current->ref), current - GC_G(buf)); - } else { + if (GC_GET_COLOR(GC_INFO(current->ref)) != GC_WHITE) { + GC_SET_ADDRESS(GC_INFO(current->ref), 0); GC_REMOVE_FROM_ROOTS(current); } current = current->next; } + + current = GC_G(roots).next; + while (current != &GC_G(roots)) { + if (GC_GET_COLOR(GC_INFO(current->ref)) == GC_WHITE) { + GC_REFCOUNT(current->ref)++; + count += gc_collect_white(current->ref TSRMLS_CC); + } + current = current->next; + } /* relink remaining roots into list to free */ if (GC_G(roots).next != &GC_G(roots)) { if (GC_G(to_free).next == &GC_G(to_free)) { @@ -600,6 +631,73 @@ static int gc_collect_roots(TSRMLS_D) return count; } +static void gc_remove_nested_data_from_buffer(zend_refcounted *ref TSRMLS_DC) +{ + HashTable *ht; + uint idx; + Bucket *p; + +tail_call: + if (GC_ADDRESS(GC_INFO(ref)) != 0) { + GC_REMOVE_FROM_BUFFER(ref); + + if (GC_TYPE(ref) == IS_OBJECT && EG(objects_store).object_buckets) { + zend_object_get_gc_t get_gc; + zend_object *obj = (zend_object*)ref; + + if (EXPECTED(IS_OBJ_VALID(EG(objects_store).object_buckets[obj->handle]) && + (get_gc = obj->handlers->get_gc) != NULL)) { + int i, n; + zval *table; + zval tmp; + HashTable *props; + + ZVAL_OBJ(&tmp, obj); + props = get_gc(&tmp, &table, &n TSRMLS_CC); + + while (n > 0 && !Z_REFCOUNTED(table[n-1])) n--; + for (i = 0; i < n; i++) { + if (Z_REFCOUNTED(table[i])) { + ref = Z_COUNTED(table[i]); + if (!props && i == n - 1) { + goto tail_call; + } else { + gc_remove_nested_data_from_buffer(ref TSRMLS_CC); + } + } + } + if (!props) { + return; + } + ht = props; + } + } else if (GC_TYPE(ref) == IS_ARRAY) { + ht = &((zend_array*)ref)->ht; + } else if (GC_TYPE(ref) == IS_REFERENCE) { + if (Z_REFCOUNTED(((zend_reference*)ref)->val)) { + if (UNEXPECTED(!EG(objects_store).object_buckets) && + Z_TYPE(((zend_reference*)ref)->val) == IS_OBJECT) { + return; + } + ref = Z_COUNTED(((zend_reference*)ref)->val); + goto tail_call; + } + return; + } + if (!ht) return; + for (idx = 0; idx < ht->nNumUsed; idx++) { + p = ht->arData + idx; + if (!Z_REFCOUNTED(p->val)) continue; + ref = Z_COUNTED(p->val); + if (idx == ht->nNumUsed-1) { + goto tail_call; + } else { + gc_remove_nested_data_from_buffer(ref TSRMLS_CC); + } + } + } +} + ZEND_API int gc_collect_cycles(TSRMLS_D) { int count = 0; @@ -636,7 +734,14 @@ ZEND_API int gc_collect_cycles(TSRMLS_D) orig_next_to_free = GC_G(next_to_free); - /* First call destructors */ + /* Remember reference counters before calling destructors */ + current = to_free.next; + while (current != &to_free) { + current->refcount = GC_REFCOUNT(current->ref); + current = current->next; + } + + /* Call destructors */ current = to_free.next; while (current != &to_free) { p = current->ref; @@ -659,6 +764,16 @@ ZEND_API int gc_collect_cycles(TSRMLS_D) current = GC_G(next_to_free); } + /* Remove values captured in destructors */ + current = to_free.next; + while (current != &to_free) { + GC_G(next_to_free) = current->next; + if (GC_REFCOUNT(current->ref) > current->refcount) { + gc_remove_nested_data_from_buffer(current->ref TSRMLS_CC); + } + current = GC_G(next_to_free); + } + /* Destroy zvals */ current = to_free.next; while (current != &to_free) { diff --git a/Zend/zend_gc.h b/Zend/zend_gc.h index d060fae9dd..8d619f2e5e 100644 --- a/Zend/zend_gc.h +++ b/Zend/zend_gc.h @@ -74,9 +74,10 @@ GC_SET_PURPLE(Z_GC_INFO_P(v)) typedef struct _gc_root_buffer { - struct _gc_root_buffer *prev; /* double-linked list */ - struct _gc_root_buffer *next; zend_refcounted *ref; + struct _gc_root_buffer *next; /* double-linked list */ + struct _gc_root_buffer *prev; + zend_uint refcount; } gc_root_buffer; typedef struct _zend_gc_globals { diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index e7aa255d78..78b38f7ea2 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -214,6 +214,7 @@ static zend_always_inline Bucket *zend_hash_str_find_bucket(const HashTable *ht, nIndex = h & ht->nTableMask; idx = ht->arHash[nIndex]; while (idx != INVALID_IDX) { + ZEND_ASSERT(idx < ht->nTableSize); p = ht->arData + idx; if ((p->h == h) && p->key @@ -235,6 +236,7 @@ static zend_always_inline Bucket *zend_hash_index_find_bucket(const HashTable *h nIndex = h & ht->nTableMask; idx = ht->arHash[nIndex]; while (idx != INVALID_IDX) { + ZEND_ASSERT(idx < ht->nTableSize); p = ht->arData + idx; if (p->h == h && !p->key) { return p; @@ -579,6 +581,9 @@ ZEND_API int zend_hash_rehash(HashTable *ht) IS_CONSISTENT(ht); if (UNEXPECTED(ht->nNumOfElements == 0)) { + if (ht->nTableMask) { + memset(ht->arHash, INVALID_IDX, ht->nTableSize * sizeof(zend_uint)); + } return SUCCESS; } diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h index c196134657..d7b419225e 100644 --- a/Zend/zend_hash.h +++ b/Zend/zend_hash.h @@ -628,6 +628,17 @@ static inline void *zend_hash_index_find_ptr(const HashTable *ht, ulong h) return zv ? Z_PTR_P(zv) : NULL; } +static inline void *zend_symtable_str_find_ptr(HashTable *ht, const char *str, int len) +{ + ulong idx; + + if (ZEND_HANDLE_NUMERIC_STR(str, len, idx)) { + return zend_hash_index_find_ptr(ht, idx); + } else { + return zend_hash_str_find_ptr(ht, str, len); + } +} + static inline void *zend_hash_get_current_data_ptr_ex(HashTable *ht, HashPosition *pos) { zval *zv; diff --git a/Zend/zend_ini.c b/Zend/zend_ini.c index 6232b8e2f1..c3a02d53a3 100644 --- a/Zend/zend_ini.c +++ b/Zend/zend_ini.c @@ -231,9 +231,11 @@ ZEND_API void zend_unregister_ini_entries(int module_number TSRMLS_DC) /* {{{ */ /* }}} */ #ifdef ZTS -static int zend_ini_refresh_cache(zval *el, int stage TSRMLS_DC) /* {{{ */ +static int zend_ini_refresh_cache(zval *el, void *arg TSRMLS_DC) /* {{{ */ { zend_ini_entry *p = (zend_ini_entry *)Z_PTR_P(el); + int stage = (int)(zend_intptr_t)arg; + if (p->on_modify) { p->on_modify(p, p->value, p->value_length, p->mh_arg1, p->mh_arg2, p->mh_arg3, stage TSRMLS_CC); } diff --git a/Zend/zend_multibyte.c b/Zend/zend_multibyte.c index 08251dfa5e..49056cfad4 100644 --- a/Zend/zend_multibyte.c +++ b/Zend/zend_multibyte.c @@ -168,7 +168,7 @@ ZEND_API const zend_encoding *zend_multibyte_get_script_encoding(TSRMLS_D) ZEND_API int zend_multibyte_set_script_encoding(const zend_encoding **encoding_list, size_t encoding_list_size TSRMLS_DC) { if (CG(script_encoding_list)) { - free(CG(script_encoding_list)); + free((char*)CG(script_encoding_list)); } CG(script_encoding_list) = encoding_list; CG(script_encoding_list_size) = encoding_list_size; @@ -195,7 +195,7 @@ ZEND_API int zend_multibyte_set_script_encoding_by_string(const char *new_value, } if (size == 0) { - pefree(list, 1); + pefree((void*)list, 1); return FAILURE; } diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index 30794a3054..d7d8bf0a52 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -593,11 +593,25 @@ found: ZVAL_COPY_VALUE(&garbage, Z_REFVAL_P(variable_ptr)); /* old value should be destroyed */ /* To check: can't *variable_ptr be some system variable like error_zval here? */ - ZVAL_COPY_VALUE(Z_REFVAL_P(variable_ptr), value); - if (Z_REFCOUNTED_P(value) && Z_REFCOUNT_P(value) > 0) { - zval_copy_ctor(Z_REFVAL_P(variable_ptr)); + if (UNEXPECTED(Z_REFCOUNTED_P(value))) { + if (EXPECTED(!Z_ISREF_P(value))) { + Z_ADDREF_P(value); + } else { + if (Z_REFCOUNT_P(value) == 1) { + ZVAL_UNREF(value); + } else { + value = Z_REFVAL_P(value); + } + if (Z_REFCOUNTED_P(value)) { + if (UNEXPECTED(Z_REFVAL_P(variable_ptr) == value)) { + goto exit; + } + Z_ADDREF_P(value); + } + } } - zval_dtor(&garbage); + ZVAL_COPY_VALUE(Z_REFVAL_P(variable_ptr), value); + zval_ptr_dtor(&garbage); } else { zval garbage; @@ -1455,6 +1469,7 @@ static int zend_std_has_property(zval *object, zval *member, int has_set_exists, found: switch (has_set_exists) { case 0: + ZVAL_DEREF(value); result = (Z_TYPE_P(value) != IS_NULL); break; default: diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index dc2756fe09..921d71b685 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -819,6 +819,7 @@ try_again: goto try_again; EMPTY_SWITCH_DEFAULT_CASE() } + return 0; } /* }}} */ @@ -859,6 +860,7 @@ try_again: goto try_again; EMPTY_SWITCH_DEFAULT_CASE() } + return 0.0; } /* }}} */ @@ -912,6 +914,7 @@ try_again: goto try_again; EMPTY_SWITCH_DEFAULT_CASE() } + return NULL; } /* }}} */ @@ -1552,10 +1555,10 @@ ZEND_API int concat_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{ ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_CONCAT); if (Z_TYPE_P(op1) != IS_STRING) { - use_copy1 = zend_make_printable_zval(op1, &op1_copy); + use_copy1 = zend_make_printable_zval(op1, &op1_copy TSRMLS_CC); } if (Z_TYPE_P(op2) != IS_STRING) { - use_copy2 = zend_make_printable_zval(op2, &op2_copy); + use_copy2 = zend_make_printable_zval(op2, &op2_copy TSRMLS_CC); } } @@ -1783,6 +1786,14 @@ ZEND_API int compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* { return SUCCESS; default: + if (Z_ISREF_P(op1)) { + op1 = Z_REFVAL_P(op1); + continue; + } else if (Z_ISREF_P(op2)) { + op2 = Z_REFVAL_P(op2); + continue; + } + if (Z_TYPE_P(op1) == IS_OBJECT && Z_OBJ_HANDLER_P(op1, compare)) { return Z_OBJ_HANDLER_P(op1, compare)(result, op1, op2 TSRMLS_CC); } else if (Z_TYPE_P(op2) == IS_OBJECT && Z_OBJ_HANDLER_P(op2, compare)) { @@ -1841,11 +1852,7 @@ ZEND_API int compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* { return SUCCESS; } } - if (Z_ISREF_P(op1)) { - op1 = Z_REFVAL_P(op1); - } else if (Z_ISREF_P(op2)) { - op2 = Z_REFVAL_P(op2); - } else if (!converted) { + if (!converted) { if (Z_TYPE_P(op1) == IS_NULL || Z_TYPE_P(op1) == IS_FALSE) { zendi_convert_to_boolean(op2, op2_copy, result); ZVAL_LONG(result, (Z_TYPE_P(op2) == IS_TRUE) ? -1 : 0); @@ -1888,10 +1895,9 @@ ZEND_API int compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* { } /* }}} */ -static int hash_zval_identical_function(zval *z1, zval *z2) /* {{{ */ +static int hash_zval_identical_function(zval *z1, zval *z2 TSRMLS_DC) /* {{{ */ { zval result; - TSRMLS_FETCH(); /* is_identical_function() returns 1 in case of identity and 0 in case * of a difference; diff --git a/Zend/zend_ts_hash.c b/Zend/zend_ts_hash.c index 92cd62128e..f6523574ae 100644 --- a/Zend/zend_ts_hash.c +++ b/Zend/zend_ts_hash.c @@ -333,6 +333,39 @@ ZEND_API int zend_ts_hash_rehash(TsHashTable *ht) return retval; } +ZEND_API zval *zend_ts_hash_str_find(TsHashTable *ht, const char *key, int len) +{ + zval *retval; + + begin_read(ht); + retval = zend_hash_str_find(TS_HASH(ht), key, len); + end_read(ht); + + return retval; +} + +ZEND_API zval *_zend_ts_hash_str_update(TsHashTable *ht, const char *key, int len, zval *pData ZEND_FILE_LINE_DC) +{ + zval *retval; + + begin_write(ht); + retval = zend_hash_str_update(TS_HASH(ht), key, len, pData); + end_write(ht); + + return retval; +} + +ZEND_API zval *_zend_ts_hash_str_add(TsHashTable *ht, const char *key, int len, zval *pData ZEND_FILE_LINE_DC) +{ + zval *retval; + + begin_write(ht); + retval = zend_hash_str_add(TS_HASH(ht), key, len, pData); + end_write(ht); + + return retval; +} + /* * Local variables: * tab-width: 4 diff --git a/Zend/zend_ts_hash.h b/Zend/zend_ts_hash.h index 4b0a507368..fcf8c3cda1 100644 --- a/Zend/zend_ts_hash.h +++ b/Zend/zend_ts_hash.h @@ -102,6 +102,41 @@ void zend_ts_hash_display_pListTail(TsHashTable *ht); void zend_ts_hash_display(TsHashTable *ht); #endif +ZEND_API zval *zend_ts_hash_str_find(TsHashTable *ht, const char *key, int len); +ZEND_API zval *_zend_ts_hash_str_update(TsHashTable *ht, const char *key, int len, zval *pData ZEND_FILE_LINE_DC); +ZEND_API zval *_zend_ts_hash_str_add(TsHashTable *ht, const char *key, int len, zval *pData ZEND_FILE_LINE_DC); + +#define zend_ts_hash_str_update(ht, key, len, pData) \ + _zend_ts_hash_str_update(ht, key, len, pData ZEND_FILE_LINE_CC) +#define zend_ts_hash_str_add(ht, key, len, pData) \ + _zend_ts_hash_str_add(ht, key, len, pData ZEND_FILE_LINE_CC) + +static inline void *zend_ts_hash_str_find_ptr(TsHashTable *ht, const char *str, int len) +{ + zval *zv; + + zv = zend_ts_hash_str_find(ht, str, len); + return zv ? Z_PTR_P(zv) : NULL; +} + +static inline void *zend_ts_hash_str_update_ptr(TsHashTable *ht, const char *str, int len, void *pData) +{ + zval tmp, *zv; + + ZVAL_PTR(&tmp, pData); + zv = zend_ts_hash_str_update(ht, str, len, &tmp); + return zv ? Z_PTR_P(zv) : NULL; +} + +static inline void *zend_ts_hash_str_add_ptr(TsHashTable *ht, const char *str, int len, void *pData) +{ + zval tmp, *zv; + + ZVAL_PTR(&tmp, pData); + zv = zend_ts_hash_str_add(ht, str, len, &tmp); + return zv ? Z_PTR_P(zv) : NULL; +} + END_EXTERN_C() #define ZEND_TS_INIT_SYMTABLE(ht) \ diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index f45882e52f..3122119998 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1203,6 +1203,9 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMP|VAR|CV, UNUSED|CONST| ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -2127,7 +2130,7 @@ ZEND_VM_HANDLER(56, ZEND_ADD_VAR, TMP|UNUSED, TMP|VAR|CV) if (Z_TYPE_P(var) != IS_STRING) { ZVAL_DEREF(var); if (Z_TYPE_P(var) != IS_STRING) { - use_copy = zend_make_printable_zval(var, &var_copy); + use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC); if (use_copy) { var = &var_copy; @@ -3477,7 +3480,7 @@ ZEND_VM_HANDLER(120, ZEND_SEND_USER, VAR|CV, ANY) // This solution breaks the following test (emit warning message) ??? // ext/pdo_sqlite/tests/pdo_005.phpt #endif - (!Z_ISREF_P(arg) && Z_REFCOUNT_P(arg) > 1)) { + (!Z_ISREF_P(arg) /*&& Z_REFCOUNT_P(arg) > 1???*/)) { if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) { @@ -3841,7 +3844,7 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST) retval = EX_VAR(opline->result.var); ZVAL_COPY_VALUE(retval, &c->value); if (Z_OPT_COPYABLE_P(retval) || Z_OPT_REFCOUNTED_P(retval)) { - if (Z_OPT_COPYABLE_P(retval) && (c->flags & CONST_PERSISTENT)) { + if (Z_OPT_COPYABLE_P(retval)) { zval_copy_ctor_func(retval); } else { Z_ADDREF_P(retval); @@ -4484,6 +4487,8 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY) } } else if (Z_IMMUTABLE_P(array_ptr)) { zval_copy_ctor(array_ptr); + } else { + SEPARATE_ZVAL_NOREF(array_ptr); } if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref); } else if (Z_TYPE_P(array_ptr) == IS_OBJECT) { @@ -4845,8 +4850,9 @@ ZEND_VM_HANDLER(114, ZEND_ISSET_ISEMPTY_VAR, CONST|TMP|VAR|CV, UNUSED|CONST|VAR) FREE_OP1(); } - if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (opline->extended_value & ZEND_ISSET) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -4924,7 +4930,8 @@ ZEND_VM_C_LABEL(num_index_prop): if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -4943,6 +4950,9 @@ ZEND_VM_C_LABEL(num_index_prop): result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (OP1_TYPE == IS_CV || OP1_TYPE == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 263f729962..8605333d05 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -3093,6 +3093,8 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A } } else if (Z_IMMUTABLE_P(array_ptr)) { zval_copy_ctor(array_ptr); + } else { + SEPARATE_ZVAL_NOREF(array_ptr); } if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref); } else if (Z_TYPE_P(array_ptr) == IS_OBJECT) { @@ -3844,6 +3846,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_CONST(int type ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -4286,7 +4291,7 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO retval = EX_VAR(opline->result.var); ZVAL_COPY_VALUE(retval, &c->value); if (Z_OPT_COPYABLE_P(retval) || Z_OPT_REFCOUNTED_P(retval)) { - if (Z_OPT_COPYABLE_P(retval) && (c->flags & CONST_PERSISTENT)) { + if (Z_OPT_COPYABLE_P(retval)) { zval_copy_ctor_func(retval); } else { Z_ADDREF_P(retval); @@ -4603,7 +4608,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_CONST_HANDLER(ZEND_O } if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -6343,6 +6349,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_VAR(int type, ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -6987,7 +6996,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_VAR_HANDLER(ZEND_OPC } if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -7395,6 +7405,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int typ ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -7846,7 +7859,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_ } if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -9807,6 +9821,8 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG } } else if (Z_IMMUTABLE_P(array_ptr)) { zval_copy_ctor(array_ptr); + } else { + SEPARATE_ZVAL_NOREF(array_ptr); } if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref); } else if (Z_TYPE_P(array_ptr) == IS_OBJECT) { @@ -10587,6 +10603,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_CONST(int type, ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -11200,7 +11219,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_CONST_HANDLER(ZEND_OPC } if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -11968,7 +11988,7 @@ static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ if (Z_TYPE_P(var) != IS_STRING) { ZVAL_DEREF(var); if (Z_TYPE_P(var) != IS_STRING) { - use_copy = zend_make_printable_zval(var, &var_copy); + use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC); if (use_copy) { var = &var_copy; @@ -12864,6 +12884,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_VAR(int type, ZE ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -13101,7 +13124,7 @@ static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ if (Z_TYPE_P(var) != IS_STRING) { ZVAL_DEREF(var); if (Z_TYPE_P(var) != IS_STRING) { - use_copy = zend_make_printable_zval(var, &var_copy); + use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC); if (use_copy) { var = &var_copy; @@ -13465,7 +13488,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_VAR_HANDLER(ZEND_OPCOD } if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -13873,6 +13897,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_UNUSED(int type, ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -14208,7 +14235,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_TMP_UNUSED_HANDLER(ZEND_OP } if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -14818,7 +14846,7 @@ static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_A if (Z_TYPE_P(var) != IS_STRING) { ZVAL_DEREF(var); if (Z_TYPE_P(var) != IS_STRING) { - use_copy = zend_make_printable_zval(var, &var_copy); + use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC); if (use_copy) { var = &var_copy; @@ -16048,7 +16076,7 @@ static int ZEND_FASTCALL ZEND_SEND_USER_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_AR // This solution breaks the following test (emit warning message) ??? // ext/pdo_sqlite/tests/pdo_005.phpt #endif - (!Z_ISREF_P(arg) && Z_REFCOUNT_P(arg) > 1)) { + (!Z_ISREF_P(arg) /*&& Z_REFCOUNT_P(arg) > 1???*/)) { if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) { @@ -16444,6 +16472,8 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG } } else if (Z_IMMUTABLE_P(array_ptr)) { zval_copy_ctor(array_ptr); + } else { + SEPARATE_ZVAL_NOREF(array_ptr); } if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref); } else if (Z_TYPE_P(array_ptr) == IS_OBJECT) { @@ -17875,6 +17905,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_CONST(int type, ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -18593,7 +18626,7 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE retval = EX_VAR(opline->result.var); ZVAL_COPY_VALUE(retval, &c->value); if (Z_OPT_COPYABLE_P(retval) || Z_OPT_REFCOUNTED_P(retval)) { - if (Z_OPT_COPYABLE_P(retval) && (c->flags & CONST_PERSISTENT)) { + if (Z_OPT_COPYABLE_P(retval)) { zval_copy_ctor_func(retval); } else { Z_ADDREF_P(retval); @@ -19038,7 +19071,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_VAR_CONST_HANDLER(ZEND_OPC } if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -19116,7 +19150,8 @@ num_index_prop: if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -19135,6 +19170,9 @@ num_index_prop: result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { @@ -21105,7 +21143,8 @@ num_index_prop: if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -21124,6 +21163,9 @@ num_index_prop: result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { @@ -22248,6 +22290,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_VAR(int type, ZE ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -23383,7 +23428,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_VAR_VAR_HANDLER(ZEND_OPCOD } if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -23461,7 +23507,8 @@ num_index_prop: if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -23480,6 +23527,9 @@ num_index_prop: result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { @@ -24148,6 +24198,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_UNUSED(int type, ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -24710,7 +24763,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_VAR_UNUSED_HANDLER(ZEND_OP } if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -26693,7 +26747,8 @@ num_index_prop: if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -26712,6 +26767,9 @@ num_index_prop: result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (IS_VAR == IS_CV || IS_VAR == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { @@ -27869,7 +27927,7 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC retval = EX_VAR(opline->result.var); ZVAL_COPY_VALUE(retval, &c->value); if (Z_OPT_COPYABLE_P(retval) || Z_OPT_REFCOUNTED_P(retval)) { - if (Z_OPT_COPYABLE_P(retval) && (c->flags & CONST_PERSISTENT)) { + if (Z_OPT_COPYABLE_P(retval)) { zval_copy_ctor_func(retval); } else { Z_ADDREF_P(retval); @@ -28153,7 +28211,8 @@ num_index_prop: if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -28172,6 +28231,9 @@ num_index_prop: result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (IS_UNUSED == IS_CV || IS_UNUSED == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { @@ -29117,7 +29179,7 @@ static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDL if (Z_TYPE_P(var) != IS_STRING) { ZVAL_DEREF(var); if (Z_TYPE_P(var) != IS_STRING) { - use_copy = zend_make_printable_zval(var, &var_copy); + use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC); if (use_copy) { var = &var_copy; @@ -29432,7 +29494,8 @@ num_index_prop: if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -29451,6 +29514,9 @@ num_index_prop: result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (IS_UNUSED == IS_CV || IS_UNUSED == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { @@ -30398,7 +30464,7 @@ static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDL if (Z_TYPE_P(var) != IS_STRING) { ZVAL_DEREF(var); if (Z_TYPE_P(var) != IS_STRING) { - use_copy = zend_make_printable_zval(var, &var_copy); + use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC); if (use_copy) { var = &var_copy; @@ -30713,7 +30779,8 @@ num_index_prop: if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -30732,6 +30799,9 @@ num_index_prop: result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (IS_UNUSED == IS_CV || IS_UNUSED == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { @@ -32190,7 +32260,7 @@ static int ZEND_FASTCALL ZEND_ADD_VAR_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLE if (Z_TYPE_P(var) != IS_STRING) { ZVAL_DEREF(var); if (Z_TYPE_P(var) != IS_STRING) { - use_copy = zend_make_printable_zval(var, &var_copy); + use_copy = zend_make_printable_zval(var, &var_copy TSRMLS_CC); if (use_copy) { var = &var_copy; @@ -32503,7 +32573,8 @@ num_index_prop: if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -32522,6 +32593,9 @@ num_index_prop: result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (IS_UNUSED == IS_CV || IS_UNUSED == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { @@ -33414,7 +33488,7 @@ static int ZEND_FASTCALL ZEND_SEND_USER_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG // This solution breaks the following test (emit warning message) ??? // ext/pdo_sqlite/tests/pdo_005.phpt #endif - (!Z_ISREF_P(arg) && Z_REFCOUNT_P(arg) > 1)) { + (!Z_ISREF_P(arg) /*&& Z_REFCOUNT_P(arg) > 1???*/)) { if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, opline->op2.num)) { @@ -33795,6 +33869,8 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS } } else if (Z_IMMUTABLE_P(array_ptr)) { zval_copy_ctor(array_ptr); + } else { + SEPARATE_ZVAL_NOREF(array_ptr); } if (Z_REFCOUNTED_P(array_ref)) Z_ADDREF_P(array_ref); } else if (Z_TYPE_P(array_ptr) == IS_OBJECT) { @@ -35075,6 +35151,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_CONST(int type, Z ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -36024,7 +36103,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_CONST_HANDLER(ZEND_OPCO } if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -36102,7 +36182,8 @@ num_index_prop: if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -36121,6 +36202,9 @@ num_index_prop: result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (IS_CV == IS_CV || IS_CV == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { @@ -38002,7 +38086,8 @@ num_index_prop: if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -38021,6 +38106,9 @@ num_index_prop: result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (IS_CV == IS_CV || IS_CV == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { @@ -39143,6 +39231,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_VAR(int type, ZEN ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -40160,7 +40251,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_VAR_HANDLER(ZEND_OPCODE } if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -40238,7 +40330,8 @@ num_index_prop: if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -40257,6 +40350,9 @@ num_index_prop: result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (IS_CV == IS_CV || IS_CV == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { @@ -40923,6 +41019,9 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_UNUSED(int type, ZEND_ASSERT(retval != NULL); if (type == BP_VAR_R || type == BP_VAR_IS) { + if (/*type == BP_VAR_R &&*/ Z_ISREF_P(retval) && Z_REFCOUNT_P(retval) == 1) { + ZVAL_UNREF(retval); + } ZVAL_COPY(EX_VAR(opline->result.var), retval); } else { if (/*type == BP_VAR_W &&*/ (opline->extended_value & ZEND_FETCH_MAKE_REF)) { @@ -41369,7 +41468,8 @@ static int ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPC } if (opline->extended_value & ZEND_ISSET) { - if (isset && Z_TYPE_P(value) != IS_NULL) { + if (isset && Z_TYPE_P(value) != IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL)) { ZVAL_BOOL(EX_VAR(opline->result.var), 1); } else { ZVAL_BOOL(EX_VAR(opline->result.var), 0); @@ -43214,7 +43314,8 @@ num_index_prop: if (opline->extended_value & ZEND_ISSET) { /* > IS_NULL means not IS_UNDEF and not IS_NULL */ - result = (value != NULL && Z_TYPE_P(value) > IS_NULL); + result = value != NULL && Z_TYPE_P(value) > IS_NULL && + (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL); } else /* if (opline->extended_value & ZEND_ISEMPTY) */ { result = (value == NULL || !i_zend_is_true(value TSRMLS_CC)); } @@ -43233,6 +43334,9 @@ num_index_prop: result = 0; if (UNEXPECTED(Z_TYPE_P(offset) != IS_LONG)) { + if (IS_CV == IS_CV || IS_CV == IS_VAR) { + ZVAL_DEREF(offset); + } if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */ || (Z_TYPE_P(offset) == IS_STRING /* or numeric string */ && IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) { diff --git a/ext/com_dotnet/com_com.c b/ext/com_dotnet/com_com.c index f77779d691..6d3b15876f 100644 --- a/ext/com_dotnet/com_com.c +++ b/ext/com_dotnet/com_com.c @@ -66,50 +66,50 @@ PHP_FUNCTION(com_create_instance) &typelib_name, &typelib_name_len)) { php_com_throw_exception(E_INVALIDARG, "Could not create COM object - invalid arguments!" TSRMLS_CC); - ZVAL_NULL(object); + ZEND_CTOR_MAKE_NULL(); return; } if (server_name) { ctx = CLSCTX_REMOTE_SERVER; } else if (server_params) { - zval **tmp; + zval *tmp; /* decode the data from the array */ - if (SUCCESS == zend_hash_find(HASH_OF(server_params), - "Server", sizeof("Server"), (void**)&tmp)) { + if (NULL != (tmp = zend_hash_str_find(HASH_OF(server_params), + "Server", sizeof("Server")-1))) { convert_to_string_ex(tmp); - server_name = Z_STRVAL_PP(tmp); - server_name_len = Z_STRLEN_PP(tmp); + server_name = Z_STRVAL_P(tmp); + server_name_len = Z_STRLEN_P(tmp); ctx = CLSCTX_REMOTE_SERVER; } - if (SUCCESS == zend_hash_find(HASH_OF(server_params), - "Username", sizeof("Username"), (void**)&tmp)) { + if (NULL != (tmp = zend_hash_str_find(HASH_OF(server_params), + "Username", sizeof("Username")-1))) { convert_to_string_ex(tmp); - user_name = Z_STRVAL_PP(tmp); - user_name_len = Z_STRLEN_PP(tmp); + user_name = Z_STRVAL_P(tmp); + user_name_len = Z_STRLEN_P(tmp); } - if (SUCCESS == zend_hash_find(HASH_OF(server_params), - "Password", sizeof("Password"), (void**)&tmp)) { + if (NULL != (tmp = zend_hash_str_find(HASH_OF(server_params), + "Password", sizeof("Password")-1))) { convert_to_string_ex(tmp); - password = Z_STRVAL_PP(tmp); - password_len = Z_STRLEN_PP(tmp); + password = Z_STRVAL_P(tmp); + password_len = Z_STRLEN_P(tmp); } - if (SUCCESS == zend_hash_find(HASH_OF(server_params), - "Domain", sizeof("Domain"), (void**)&tmp)) { + if (NULL != (tmp = zend_hash_str_find(HASH_OF(server_params), + "Domain", sizeof("Domain")-1))) { convert_to_string_ex(tmp); - domain_name = Z_STRVAL_PP(tmp); - domain_name_len = Z_STRLEN_PP(tmp); + domain_name = Z_STRVAL_P(tmp); + domain_name_len = Z_STRLEN_P(tmp); } - if (SUCCESS == zend_hash_find(HASH_OF(server_params), - "Flags", sizeof("Flags"), (void**)&tmp)) { + if (NULL != (tmp = zend_hash_str_find(HASH_OF(server_params), + "Flags", sizeof("Flags")-1))) { convert_to_long_ex(tmp); - ctx = (CLSCTX)Z_LVAL_PP(tmp); + ctx = (CLSCTX)Z_LVAL_P(tmp); } } @@ -215,8 +215,8 @@ PHP_FUNCTION(com_create_instance) } if (server_name) { - STR_FREE((char*)info.pwszName); - STR_FREE((char*)authid.User); + if (info.pwszName) efree(info.pwszName); + if (authid.User) efree(authid.User); } efree(moniker); @@ -230,7 +230,7 @@ PHP_FUNCTION(com_create_instance) php_com_throw_exception(res, msg TSRMLS_CC); efree(msg); - ZVAL_NULL(object); + ZEND_CTOR_MAKE_NULL(); return; } @@ -263,7 +263,7 @@ PHP_FUNCTION(com_create_instance) if (SUCCEEDED(ITypeLib_GetDocumentation(TL, -1, &name, NULL, NULL, NULL))) { typelib_name = php_com_olestring_to_string(name, &typelib_name_len, obj->code_page TSRMLS_CC); - if (SUCCESS == zend_ts_hash_add(&php_com_typelibraries, typelib_name, typelib_name_len+1, (void*)&TL, sizeof(ITypeLib*), NULL)) { + if (NULL != zend_ts_hash_str_add_ptr(&php_com_typelibraries, typelib_name, typelib_name_len, TL)) { php_com_import_typelib(TL, mode, obj->code_page TSRMLS_CC); /* add a reference for the hash */ @@ -420,14 +420,14 @@ HRESULT php_com_get_id_of_name(php_com_dotnet_object *obj, char *name, { OLECHAR *olename; HRESULT hr; - DISPID *dispid_ptr; + zval *tmp; if (namelen == -1) { namelen = strlen(name); } - if (obj->id_of_name_cache && SUCCESS == zend_hash_find(obj->id_of_name_cache, name, namelen, (void**)&dispid_ptr)) { - *dispid = *dispid_ptr; + if (obj->id_of_name_cache && NULL != (tmp = zend_hash_str_find(obj->id_of_name_cache, name, namelen))) { + *dispid = Z_LVAL_P(tmp); return S_OK; } @@ -449,12 +449,15 @@ HRESULT php_com_get_id_of_name(php_com_dotnet_object *obj, char *name, efree(olename); if (SUCCEEDED(hr)) { + zval tmp; + /* cache the mapping */ if (!obj->id_of_name_cache) { ALLOC_HASHTABLE(obj->id_of_name_cache); zend_hash_init(obj->id_of_name_cache, 2, NULL, NULL, 0); } - zend_hash_update(obj->id_of_name_cache, name, namelen, dispid, sizeof(*dispid), NULL); + ZVAL_LONG(&tmp, *dispid); + zend_hash_str_update(obj->id_of_name_cache, name, namelen, &tmp); } return hr; @@ -462,14 +465,14 @@ HRESULT php_com_get_id_of_name(php_com_dotnet_object *obj, char *name, /* the core of COM */ int php_com_do_invoke_byref(php_com_dotnet_object *obj, char *name, int namelen, - WORD flags, VARIANT *v, int nargs, zval ***args TSRMLS_DC) + WORD flags, VARIANT *v, int nargs, zval *args TSRMLS_DC) { DISPID dispid, altdispid; DISPPARAMS disp_params; HRESULT hr; VARIANT *vargs = NULL, *byref_vals = NULL; int i, byref_count = 0, j; - zend_internal_function *f = (zend_internal_function*)EG(current_execute_data)->function_state.function; + zend_internal_function *f = (zend_internal_function*)EG(current_execute_data)->func; /* assumption: that the active function (f) is the function we generated for the engine */ if (!f || f->arg_info == NULL) { @@ -507,7 +510,7 @@ int php_com_do_invoke_byref(php_com_dotnet_object *obj, char *name, int namelen, for (j = 0, i = 0; i < nargs; i++) { if (f->arg_info[nargs - i - 1].pass_by_reference) { /* put the value into byref_vals instead */ - php_com_variant_from_zval(&byref_vals[j], *args[nargs - i - 1], obj->code_page TSRMLS_CC); + php_com_variant_from_zval(&byref_vals[j], &args[nargs - i - 1], obj->code_page TSRMLS_CC); /* if it is already byref, "move" it into the vargs array, otherwise * make vargs a reference to this value */ @@ -522,14 +525,14 @@ int php_com_do_invoke_byref(php_com_dotnet_object *obj, char *name, int namelen, } j++; } else { - php_com_variant_from_zval(&vargs[i], *args[nargs - i - 1], obj->code_page TSRMLS_CC); + php_com_variant_from_zval(&vargs[i], &args[nargs - i - 1], obj->code_page TSRMLS_CC); } } } else { /* Invoke'd args are in reverse order */ for (i = 0; i < nargs; i++) { - php_com_variant_from_zval(&vargs[i], *args[nargs - i - 1], obj->code_page TSRMLS_CC); + php_com_variant_from_zval(&vargs[i], &args[nargs - i - 1], obj->code_page TSRMLS_CC); } } @@ -552,7 +555,7 @@ int php_com_do_invoke_byref(php_com_dotnet_object *obj, char *name, int namelen, for (i = 0, j = 0; i < nargs; i++) { /* if this was byref, update the zval */ if (f && f->arg_info[nargs - i - 1].pass_by_reference) { - SEPARATE_ZVAL_IF_NOT_REF(args[nargs - i - 1]); + SEPARATE_ZVAL_IF_NOT_REF(&args[nargs - i - 1]); /* if the variant is pointing at the byref_vals, we need to map * the pointee value as a zval; otherwise, the value is pointing @@ -560,13 +563,13 @@ int php_com_do_invoke_byref(php_com_dotnet_object *obj, char *name, int namelen, if (V_VT(&vargs[i]) & VT_BYREF) { if (vargs[i].byref == &V_UINT(&byref_vals[j])) { /* copy that value */ - php_com_zval_from_variant(*args[nargs - i - 1], &byref_vals[j], + php_com_zval_from_variant(&args[nargs - i - 1], &byref_vals[j], obj->code_page TSRMLS_CC); } } else { /* not sure if this can ever happen; the variant we marked as BYREF * is no longer BYREF - copy its value */ - php_com_zval_from_variant(*args[nargs - i - 1], &vargs[i], + php_com_zval_from_variant(&args[nargs - i - 1], &vargs[i], obj->code_page TSRMLS_CC); } VariantClear(&byref_vals[j]); @@ -583,7 +586,7 @@ int php_com_do_invoke_byref(php_com_dotnet_object *obj, char *name, int namelen, int php_com_do_invoke_by_id(php_com_dotnet_object *obj, DISPID dispid, - WORD flags, VARIANT *v, int nargs, zval **args, int silent, int allow_noarg TSRMLS_DC) + WORD flags, VARIANT *v, int nargs, zval *args, int silent, int allow_noarg TSRMLS_DC) { DISPID altdispid; DISPPARAMS disp_params; @@ -597,7 +600,7 @@ int php_com_do_invoke_by_id(php_com_dotnet_object *obj, DISPID dispid, /* Invoke'd args are in reverse order */ for (i = 0; i < nargs; i++) { - php_com_variant_from_zval(&vargs[i], args[nargs - i - 1], obj->code_page TSRMLS_CC); + php_com_variant_from_zval(&vargs[i], &args[nargs - i - 1], obj->code_page TSRMLS_CC); } disp_params.cArgs = nargs; @@ -630,7 +633,7 @@ int php_com_do_invoke_by_id(php_com_dotnet_object *obj, DISPID dispid, } int php_com_do_invoke(php_com_dotnet_object *obj, char *name, int namelen, - WORD flags, VARIANT *v, int nargs, zval **args, int allow_noarg TSRMLS_DC) + WORD flags, VARIANT *v, int nargs, zval *args, int allow_noarg TSRMLS_DC) { DISPID dispid; HRESULT hr; @@ -664,8 +667,13 @@ PHP_FUNCTION(com_create_guid) php_com_initialize(TSRMLS_C); if (CoCreateGuid(&retval) == S_OK && StringFromCLSID(&retval, &guid_string) == S_OK) { - Z_TYPE_P(return_value) = IS_STRING; - Z_STRVAL_P(return_value) = php_com_olestring_to_string(guid_string, &Z_STRLEN_P(return_value), CP_ACP TSRMLS_CC); + int len; + char *str; + + str = php_com_olestring_to_string(guid_string, &len, CP_ACP TSRMLS_CC); + RETVAL_STRINGL(str, len); + // TODO: avoid reallocation ??? + efree(str); CoTaskMemFree(guid_string); } else { @@ -696,12 +704,12 @@ PHP_FUNCTION(com_event_sink) if (sink && Z_TYPE_P(sink) == IS_ARRAY) { /* 0 => typelibname, 1 => dispname */ - zval **tmp; + zval *tmp; - if (zend_hash_index_find(Z_ARRVAL_P(sink), 0, (void**)&tmp) == SUCCESS) - typelibname = Z_STRVAL_PP(tmp); - if (zend_hash_index_find(Z_ARRVAL_P(sink), 1, (void**)&tmp) == SUCCESS) - dispname = Z_STRVAL_PP(tmp); + if ((tmp = zend_hash_index_find(Z_ARRVAL_P(sink), 0)) != NULL && Z_TYPE_P(tmp) == IS_STRING) + typelibname = Z_STRVAL_P(tmp); + if ((tmp = zend_hash_index_find(Z_ARRVAL_P(sink), 1)) != NULL && Z_TYPE_P(tmp) == IS_STRING) + dispname = Z_STRVAL_P(tmp); } else if (sink != NULL) { convert_to_string(sink); dispname = Z_STRVAL_P(sink); diff --git a/ext/com_dotnet/com_dotnet.c b/ext/com_dotnet/com_dotnet.c index 0aa1a2a9c7..9698fb3419 100644 --- a/ext/com_dotnet/com_dotnet.c +++ b/ext/com_dotnet/com_dotnet.c @@ -198,7 +198,8 @@ PHP_FUNCTION(com_dotnet_create_instance) IUnknown *unk = NULL; php_com_initialize(TSRMLS_C); - if (COMG(dotnet_runtime_stuff) == NULL) { + stuff = (struct dotnet_runtime_stuff*)COMG(dotnet_runtime_stuff); + if (stuff == NULL) { hr = dotnet_init(&where TSRMLS_CC); if (FAILED(hr)) { char buf[1024]; @@ -207,12 +208,38 @@ PHP_FUNCTION(com_dotnet_create_instance) if (err) LocalFree(err); php_com_throw_exception(hr, buf TSRMLS_CC); + ZEND_CTOR_MAKE_NULL(); + return; + } + stuff = (struct dotnet_runtime_stuff*)COMG(dotnet_runtime_stuff); + + } else if (stuff->dotnet_domain == NULL) { + where = "ICorRuntimeHost_GetDefaultDomain"; + hr = ICorRuntimeHost_GetDefaultDomain(stuff->dotnet_host, &unk); + if (FAILED(hr)) { + char buf[1024]; + char *err = php_win32_error_to_msg(hr); + snprintf(buf, sizeof(buf), "Failed to re-init .Net domain [%s] %s", where, err); + if (err) + LocalFree(err); + php_com_throw_exception(hr, buf TSRMLS_CC); ZVAL_NULL(object); return; } - } - stuff = (struct dotnet_runtime_stuff*)COMG(dotnet_runtime_stuff); + where = "QI: System._AppDomain"; + hr = IUnknown_QueryInterface(unk, &IID_mscorlib_System_AppDomain, (LPVOID*)&stuff->dotnet_domain); + if (FAILED(hr)) { + char buf[1024]; + char *err = php_win32_error_to_msg(hr); + snprintf(buf, sizeof(buf), "Failed to re-init .Net domain [%s] %s", where, err); + if (err) + LocalFree(err); + php_com_throw_exception(hr, buf TSRMLS_CC); + ZVAL_NULL(object); + return; + } + } obj = CDNO_FETCH(object); @@ -221,7 +248,7 @@ PHP_FUNCTION(com_dotnet_create_instance) &datatype_name, &datatype_name_len, &obj->code_page)) { php_com_throw_exception(E_INVALIDARG, "Could not create .Net object - invalid arguments!" TSRMLS_CC); - ZVAL_NULL(object); + ZEND_CTOR_MAKE_NULL(); return; } @@ -287,7 +314,7 @@ PHP_FUNCTION(com_dotnet_create_instance) LocalFree(err); } php_com_throw_exception(hr, buf TSRMLS_CC); - ZVAL_NULL(object); + ZEND_CTOR_MAKE_NULL(); return; } } diff --git a/ext/com_dotnet/com_handlers.c b/ext/com_dotnet/com_handlers.c index c889c9a06a..0d83a86648 100644 --- a/ext/com_dotnet/com_handlers.c +++ b/ext/com_dotnet/com_handlers.c @@ -29,42 +29,38 @@ #include "php_com_dotnet_internal.h" #include "Zend/zend_exceptions.h" -static zval *com_property_read(zval *object, zval *member, int type, const zend_literal *key TSRMLS_DC) +static zval *com_property_read(zval *object, zval *member, int type, void **cahce_slot, zval *rv TSRMLS_DC) { - zval *return_value; php_com_dotnet_object *obj; VARIANT v; HRESULT res; - MAKE_STD_ZVAL(return_value); - ZVAL_NULL(return_value); - Z_SET_REFCOUNT_P(return_value, 0); - Z_UNSET_ISREF_P(return_value); + ZVAL_NULL(rv); obj = CDNO_FETCH(object); if (V_VT(&obj->v) == VT_DISPATCH) { VariantInit(&v); - convert_to_string_ex(&member); + convert_to_string_ex(member); res = php_com_do_invoke(obj, Z_STRVAL_P(member), Z_STRLEN_P(member), DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 0, NULL, 1 TSRMLS_CC); if (res == SUCCESS) { - php_com_zval_from_variant(return_value, &v, obj->code_page TSRMLS_CC); + php_com_zval_from_variant(rv, &v, obj->code_page TSRMLS_CC); VariantClear(&v); } else if (res == DISP_E_BADPARAMCOUNT) { - php_com_saproxy_create(object, return_value, member TSRMLS_CC); + php_com_saproxy_create(object, rv, member TSRMLS_CC); } } else { php_com_throw_exception(E_INVALIDARG, "this variant has no properties" TSRMLS_CC); } - return return_value; + return rv; } -static void com_property_write(zval *object, zval *member, zval *value, const zend_literal *key TSRMLS_DC) +static void com_property_write(zval *object, zval *member, zval *value, void **cache_slot TSRMLS_DC) { php_com_dotnet_object *obj; VARIANT v; @@ -74,9 +70,9 @@ static void com_property_write(zval *object, zval *member, zval *value, const ze if (V_VT(&obj->v) == VT_DISPATCH) { VariantInit(&v); - convert_to_string_ex(&member); + convert_to_string_ex(member); if (SUCCESS == php_com_do_invoke(obj, Z_STRVAL_P(member), Z_STRLEN_P(member), - DISPATCH_PROPERTYPUT|DISPATCH_PROPERTYPUTREF, &v, 1, &value, 0 TSRMLS_CC)) { + DISPATCH_PROPERTYPUT|DISPATCH_PROPERTYPUTREF, &v, 1, value, 0 TSRMLS_CC)) { VariantClear(&v); } } else { @@ -84,16 +80,12 @@ static void com_property_write(zval *object, zval *member, zval *value, const ze } } -static zval *com_read_dimension(zval *object, zval *offset, int type TSRMLS_DC) +static zval *com_read_dimension(zval *object, zval *offset, int type, zval *rv TSRMLS_DC) { - zval *return_value; php_com_dotnet_object *obj; VARIANT v; - MAKE_STD_ZVAL(return_value); - ZVAL_NULL(return_value); - Z_SET_REFCOUNT_P(return_value, 0); - Z_UNSET_ISREF_P(return_value); + ZVAL_NULL(rv); obj = CDNO_FETCH(object); @@ -101,8 +93,8 @@ static zval *com_read_dimension(zval *object, zval *offset, int type TSRMLS_DC) VariantInit(&v); if (SUCCESS == php_com_do_invoke_by_id(obj, DISPID_VALUE, - DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 1, &offset, 0, 0 TSRMLS_CC)) { - php_com_zval_from_variant(return_value, &v, obj->code_page TSRMLS_CC); + DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 1, offset, 0, 0 TSRMLS_CC)) { + php_com_zval_from_variant(rv, &v, obj->code_page TSRMLS_CC); VariantClear(&v); } } else if (V_ISARRAY(&obj->v)) { @@ -110,32 +102,32 @@ static zval *com_read_dimension(zval *object, zval *offset, int type TSRMLS_DC) if (SafeArrayGetDim(V_ARRAY(&obj->v)) == 1) { if (php_com_safearray_get_elem(&obj->v, &v, Z_LVAL_P(offset) TSRMLS_CC)) { - php_com_wrap_variant(return_value, &v, obj->code_page TSRMLS_CC); + php_com_wrap_variant(rv, &v, obj->code_page TSRMLS_CC); VariantClear(&v); } } else { - php_com_saproxy_create(object, return_value, offset TSRMLS_CC); + php_com_saproxy_create(object, rv, offset TSRMLS_CC); } } else { php_com_throw_exception(E_INVALIDARG, "this variant is not an array type" TSRMLS_CC); } - return return_value; + return rv; } static void com_write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC) { php_com_dotnet_object *obj; - zval *args[2]; + zval args[2]; VARIANT v; HRESULT res; obj = CDNO_FETCH(object); if (V_VT(&obj->v) == VT_DISPATCH) { - args[0] = offset; - args[1] = value; + ZVAL_COPY_VALUE(&args[0], offset); + ZVAL_COPY_VALUE(&args[1], value); VariantInit(&v); @@ -196,7 +188,7 @@ static zval *com_object_get(zval *property TSRMLS_DC) } #endif -static int com_property_exists(zval *object, zval *member, int check_empty, const zend_literal *key TSRMLS_DC) +static int com_property_exists(zval *object, zval *member, int check_empty, void **cache_slot TSRMLS_DC) { DISPID dispid; php_com_dotnet_object *obj; @@ -204,7 +196,7 @@ static int com_property_exists(zval *object, zval *member, int check_empty, cons obj = CDNO_FETCH(object); if (V_VT(&obj->v) == VT_DISPATCH) { - convert_to_string_ex(&member); + convert_to_string_ex(member); if (SUCCEEDED(php_com_get_id_of_name(obj, Z_STRVAL_P(member), Z_STRLEN_P(member), &dispid TSRMLS_CC))) { /* TODO: distinguish between property and method! */ return 1; @@ -222,7 +214,7 @@ static int com_dimension_exists(zval *object, zval *member, int check_empty TSRM return 0; } -static void com_property_delete(zval *object, zval *member, const zend_literal *key TSRMLS_DC) +static void com_property_delete(zval *object, zval *member, void **cache_slot TSRMLS_DC) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot delete properties from a COM object"); } @@ -242,49 +234,50 @@ static HashTable *com_properties_get(zval *object TSRMLS_DC) return NULL; } -static void function_dtor(void *pDest) +static void function_dtor(zval *zv) { - zend_internal_function *f = (zend_internal_function*)pDest; + zend_internal_function *f = (zend_internal_function*)Z_PTR_P(zv); - efree((char*)f->function_name); + STR_RELEASE(f->function_name); if (f->arg_info) { efree(f->arg_info); } + efree(f); } static PHP_FUNCTION(com_method_handler) { - Z_OBJ_HANDLER_P(getThis(), call_method)( - ((zend_internal_function*)EG(current_execute_data)->function_state.function)->function_name, + zval *object = getThis(); + + Z_OBJ_HANDLER_P(object, call_method)( + ((zend_internal_function*)EG(current_execute_data)->func)->function_name, + Z_OBJ_P(object), INTERNAL_FUNCTION_PARAM_PASSTHRU); } -static union _zend_function *com_method_get(zval **object_ptr, char *name, int len, const zend_literal *key TSRMLS_DC) +static union _zend_function *com_method_get(zend_object **object_ptr, zend_string *name, const zval *key TSRMLS_DC) { zend_internal_function f, *fptr = NULL; - php_com_dotnet_object *obj; union _zend_function *func; DISPID dummy; - zval *object = *object_ptr; - - obj = CDNO_FETCH(object); + php_com_dotnet_object *obj = (php_com_dotnet_object*)*object_ptr; if (V_VT(&obj->v) != VT_DISPATCH) { return NULL; } - if (FAILED(php_com_get_id_of_name(obj, name, len, &dummy TSRMLS_CC))) { + if (FAILED(php_com_get_id_of_name(obj, name->val, name->len, &dummy TSRMLS_CC))) { return NULL; } /* check cache */ - if (obj->method_cache == NULL || FAILURE == zend_hash_find(obj->method_cache, name, len, (void**)&fptr)) { + if (obj->method_cache == NULL || NULL == (fptr = zend_hash_find_ptr(obj->method_cache, name))) { f.type = ZEND_OVERLOADED_FUNCTION; f.num_args = 0; f.arg_info = NULL; f.scope = obj->ce; f.fn_flags = ZEND_ACC_CALL_VIA_HANDLER; - f.function_name = estrndup(name, len); + f.function_name = STR_COPY(name); f.handler = PHP_FN(com_method_handler); fptr = &f; @@ -300,7 +293,7 @@ static union _zend_function *com_method_get(zval **object_ptr, char *name, int l int i; if (SUCCEEDED(ITypeInfo_GetTypeComp(obj->typeinfo, &comp))) { - olename = php_com_string_to_olestring(name, len, obj->code_page TSRMLS_CC); + olename = php_com_string_to_olestring(name->val, name->len, obj->code_page TSRMLS_CC); lhash = LHashValOfNameSys(SYS_WIN32, LOCALE_SYSTEM_DEFAULT, olename); if (SUCCEEDED(ITypeComp_Bind(comp, olename, lhash, INVOKE_FUNC, &TI, &kind, &bindptr))) { @@ -348,7 +341,7 @@ static union _zend_function *com_method_get(zval **object_ptr, char *name, int l zend_hash_init(obj->method_cache, 2, NULL, function_dtor, 0); } - zend_hash_update(obj->method_cache, name, len, &f, sizeof(f), (void**)&fptr); + zend_hash_update_mem(obj->method_cache, name, &f, sizeof(f)); } } @@ -364,15 +357,13 @@ static union _zend_function *com_method_get(zval **object_ptr, char *name, int l return NULL; } -static int com_call_method(const char *method, INTERNAL_FUNCTION_PARAMETERS) +static int com_call_method(zend_string *method, zend_object *object, INTERNAL_FUNCTION_PARAMETERS) { - zval ***args = NULL; - php_com_dotnet_object *obj; + zval *args = NULL; + php_com_dotnet_object *obj = (php_com_dotnet_object*)object; int nargs; VARIANT v; int ret = FAILURE; - - obj = CDNO_FETCH(getThis()); if (V_VT(&obj->v) != VT_DISPATCH) { return FAILURE; @@ -381,13 +372,13 @@ static int com_call_method(const char *method, INTERNAL_FUNCTION_PARAMETERS) nargs = ZEND_NUM_ARGS(); if (nargs) { - args = (zval ***)safe_emalloc(sizeof(zval *), nargs, 0); + args = (zval *)safe_emalloc(sizeof(zval), nargs, 0); zend_get_parameters_array_ex(nargs, args); } VariantInit(&v); - if (SUCCESS == php_com_do_invoke_byref(obj, (char*)method, -1, DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, nargs, args TSRMLS_CC)) { + if (SUCCESS == php_com_do_invoke_byref(obj, method->val, method->len, DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, nargs, args TSRMLS_CC)) { php_com_zval_from_variant(return_value, &v, obj->code_page TSRMLS_CC); ret = SUCCESS; VariantClear(&v); @@ -400,16 +391,14 @@ static int com_call_method(const char *method, INTERNAL_FUNCTION_PARAMETERS) return ret; } -static union _zend_function *com_constructor_get(zval *object TSRMLS_DC) +static union _zend_function *com_constructor_get(zend_object *object TSRMLS_DC) { - php_com_dotnet_object *obj; + php_com_dotnet_object *obj = (php_com_dotnet_object *) object; static zend_internal_function c, d, v; - obj = CDNO_FETCH(object); - #define POPULATE_CTOR(f, fn) \ f.type = ZEND_INTERNAL_FUNCTION; \ - f.function_name = (char *) obj->ce->name; \ + f.function_name = obj->ce->name; \ f.scope = obj->ce; \ f.arg_info = NULL; \ f.num_args = 0; \ @@ -417,7 +406,7 @@ static union _zend_function *com_constructor_get(zval *object TSRMLS_DC) f.handler = ZEND_FN(fn); \ return (union _zend_function*)&f; - switch (obj->ce->name[0]) { + switch (obj->ce->name->val[0]) { #if HAVE_MSCOREE_H case 'd': POPULATE_CTOR(d, com_dotnet_create_instance); @@ -434,23 +423,18 @@ static union _zend_function *com_constructor_get(zval *object TSRMLS_DC) } } -static zend_class_entry *com_class_entry_get(const zval *object TSRMLS_DC) +static zend_class_entry *com_class_entry_get(const zend_object *object TSRMLS_DC) { - php_com_dotnet_object *obj; - obj = CDNO_FETCH(object); + php_com_dotnet_object *obj = (php_com_dotnet_object *)object; return obj->ce; } -static int com_class_name_get(const zval *object, const char **class_name, zend_uint *class_name_len, int parent TSRMLS_DC) +static zend_string* com_class_name_get(const zend_object *object, int parent TSRMLS_DC) { - php_com_dotnet_object *obj; - obj = CDNO_FETCH(object); + php_com_dotnet_object *obj = (php_com_dotnet_object *)object; - *class_name = estrndup(obj->ce->name, obj->ce->name_length); - *class_name_len = obj->ce->name_length; - - return 0; + return STR_COPY(obj->ce->name); } /* This compares two variants for equality */ @@ -513,7 +497,8 @@ static int com_object_cast(zval *readobj, zval *writeobj, int type TSRMLS_DC) case IS_DOUBLE: vt = VT_R8; break; - case IS_BOOL: + case IS_FALSE: + case IS_TRUE: vt = VT_BOOL; break; case IS_STRING: @@ -560,7 +545,10 @@ static int com_object_count(zval *object, long *count TSRMLS_DC) } zend_object_handlers php_com_object_handlers = { - ZEND_OBJECTS_STORE_HANDLERS, + 0, + php_com_object_free_storage, + zend_objects_destroy_object, + php_com_object_clone, com_property_read, com_property_write, com_read_dimension, @@ -610,7 +598,7 @@ void php_com_object_enable_event_sink(php_com_dotnet_object *obj, int enable TSR } } -void php_com_object_free_storage(void *object TSRMLS_DC) +void php_com_object_free_storage(zend_object *object TSRMLS_DC) { php_com_dotnet_object *obj = (php_com_dotnet_object*)object; @@ -635,14 +623,13 @@ void php_com_object_free_storage(void *object TSRMLS_DC) zend_hash_destroy(obj->id_of_name_cache); FREE_HASHTABLE(obj->id_of_name_cache); } - efree(obj); } -void php_com_object_clone(void *object, void **clone_ptr TSRMLS_DC) +zend_object* php_com_object_clone(zval *object TSRMLS_DC) { php_com_dotnet_object *cloneobj, *origobject; - origobject = (php_com_dotnet_object*)object; + origobject = (php_com_dotnet_object*)Z_OBJ_P(object); cloneobj = (php_com_dotnet_object*)emalloc(sizeof(php_com_dotnet_object)); memcpy(cloneobj, origobject, sizeof(*cloneobj)); @@ -659,13 +646,12 @@ void php_com_object_clone(void *object, void **clone_ptr TSRMLS_DC) ITypeInfo_AddRef(cloneobj->typeinfo); } - *clone_ptr = cloneobj; + return (zend_object*)cloneobj; } -zend_object_value php_com_object_new(zend_class_entry *ce TSRMLS_DC) +zend_object* php_com_object_new(zend_class_entry *ce TSRMLS_DC) { php_com_dotnet_object *obj; - zend_object_value retval; php_com_initialize(TSRMLS_C); obj = emalloc(sizeof(*obj)); @@ -674,10 +660,9 @@ zend_object_value php_com_object_new(zend_class_entry *ce TSRMLS_DC) VariantInit(&obj->v); obj->code_page = CP_ACP; obj->ce = ce; - obj->zo.ce = ce; - retval.handle = zend_objects_store_put(obj, NULL, php_com_object_free_storage, php_com_object_clone TSRMLS_CC); - retval.handlers = &php_com_object_handlers; + zend_object_std_init(&obj->zo, ce TSRMLS_CC); + obj->zo.handlers = &php_com_object_handlers; - return retval; + return (zend_object*)obj; } diff --git a/ext/com_dotnet/com_iterator.c b/ext/com_dotnet/com_iterator.c index d6f22efcdf..7da10f1b66 100644 --- a/ext/com_dotnet/com_iterator.c +++ b/ext/com_dotnet/com_iterator.c @@ -38,45 +38,42 @@ struct php_com_iterator { VARIANT safe_array; VARTYPE sa_type; LONG sa_max; - zval *zdata; + zval zdata; }; static void com_iter_dtor(zend_object_iterator *iter TSRMLS_DC) { - struct php_com_iterator *I = (struct php_com_iterator*)iter->data; + struct php_com_iterator *I = (struct php_com_iterator*)Z_PTR(iter->data); if (I->ev) { IEnumVARIANT_Release(I->ev); } VariantClear(&I->v); VariantClear(&I->safe_array); - if (I->zdata) { - zval_ptr_dtor((zval**)&I->zdata); - } - efree(I); + zval_ptr_dtor(&I->zdata); } static int com_iter_valid(zend_object_iterator *iter TSRMLS_DC) { - struct php_com_iterator *I = (struct php_com_iterator*)iter->data; + struct php_com_iterator *I = (struct php_com_iterator*)Z_PTR(iter->data); - if (I->zdata) { + if (Z_TYPE(I->zdata) != IS_UNDEF) { return SUCCESS; } return FAILURE; } -static void com_iter_get_data(zend_object_iterator *iter, zval ***data TSRMLS_DC) +static zval* com_iter_get_data(zend_object_iterator *iter TSRMLS_DC) { - struct php_com_iterator *I = (struct php_com_iterator*)iter->data; + struct php_com_iterator *I = (struct php_com_iterator*)Z_PTR(iter->data); - *data = &I->zdata; + return &I->zdata; } static void com_iter_get_key(zend_object_iterator *iter, zval *key TSRMLS_DC) { - struct php_com_iterator *I = (struct php_com_iterator*)iter->data; + struct php_com_iterator *I = (struct php_com_iterator*)Z_PTR(iter->data); if (I->key == (ulong)-1) { ZVAL_NULL(key); @@ -87,16 +84,16 @@ static void com_iter_get_key(zend_object_iterator *iter, zval *key TSRMLS_DC) static int com_iter_move_forwards(zend_object_iterator *iter TSRMLS_DC) { - struct php_com_iterator *I = (struct php_com_iterator*)iter->data; + struct php_com_iterator *I = (struct php_com_iterator*)Z_PTR(iter->data); unsigned long n_fetched; - zval *ptr; + zval ptr; /* release current cached element */ VariantClear(&I->v); - if (I->zdata) { - zval_ptr_dtor((zval**)&I->zdata); - I->zdata = NULL; + if (Z_TYPE(I->zdata) != IS_UNDEF) { + zval_ptr_dtor(&I->zdata); + ZVAL_UNDEF(&I->zdata); } if (I->ev) { @@ -121,10 +118,10 @@ static int com_iter_move_forwards(zend_object_iterator *iter TSRMLS_DC) } } - MAKE_STD_ZVAL(ptr); - php_com_zval_from_variant(ptr, &I->v, I->code_page TSRMLS_CC); + ZVAL_NULL(&ptr); + php_com_zval_from_variant(&ptr, &I->v, I->code_page TSRMLS_CC); /* php_com_wrap_variant(ptr, &I->v, I->code_page TSRMLS_CC); */ - I->zdata = ptr; + ZVAL_COPY_VALUE(&I->zdata, &ptr); return SUCCESS; } @@ -146,7 +143,7 @@ zend_object_iterator *php_com_iter_get(zend_class_entry *ce, zval *object, int b DISPPARAMS dp; VARIANT v; unsigned long n_fetched; - zval *ptr; + zval ptr; if (by_ref) { zend_error(E_ERROR, "An iterator cannot be used with foreach by reference"); @@ -163,10 +160,11 @@ zend_object_iterator *php_com_iter_get(zend_class_entry *ce, zval *object, int b VariantInit(&v); I = (struct php_com_iterator*)ecalloc(1, sizeof(*I)); + zend_iterator_init(&I->iter TSRMLS_CC); I->iter.funcs = &com_iter_funcs; - I->iter.data = I; + Z_PTR(I->iter.data) = I; I->code_page = obj->code_page; - I->zdata = NULL; + ZVAL_UNDEF(&I->zdata); VariantInit(&I->safe_array); VariantInit(&I->v); @@ -193,9 +191,9 @@ zend_object_iterator *php_com_iter_get(zend_class_entry *ce, zval *object, int b /* pre-fetch the element */ if (php_com_safearray_get_elem(&I->safe_array, &I->v, bound TSRMLS_CC)) { I->key = bound; - MAKE_STD_ZVAL(ptr); - php_com_zval_from_variant(ptr, &I->v, I->code_page TSRMLS_CC); - I->zdata = ptr; + ZVAL_NULL(&ptr); + php_com_zval_from_variant(&ptr, &I->v, I->code_page TSRMLS_CC); + ZVAL_COPY_VALUE(&I->zdata, &ptr); } else { I->key = (ulong)-1; } @@ -227,9 +225,9 @@ zend_object_iterator *php_com_iter_get(zend_class_entry *ce, zval *object, int b if (SUCCEEDED(IEnumVARIANT_Next(I->ev, 1, &I->v, &n_fetched)) && n_fetched > 0) { /* indicate that we have element 0 */ I->key = 0; - MAKE_STD_ZVAL(ptr); - php_com_zval_from_variant(ptr, &I->v, I->code_page TSRMLS_CC); - I->zdata = ptr; + ZVAL_NULL(&ptr); + php_com_zval_from_variant(&ptr, &I->v, I->code_page TSRMLS_CC); + ZVAL_COPY_VALUE(&I->zdata, &ptr); } else { /* indicate that there are no more items */ I->key = (ulong)-1; diff --git a/ext/com_dotnet/com_misc.c b/ext/com_dotnet/com_misc.c index b65a6be85d..5cd6808b36 100644 --- a/ext/com_dotnet/com_misc.c +++ b/ext/com_dotnet/com_misc.c @@ -60,9 +60,9 @@ PHP_COM_DOTNET_API void php_com_wrap_dispatch(zval *z, IDispatch *disp, IDispatch_AddRef(V_DISPATCH(&obj->v)); IDispatch_GetTypeInfo(V_DISPATCH(&obj->v), 0, LANG_NEUTRAL, &obj->typeinfo); - Z_TYPE_P(z) = IS_OBJECT; - z->value.obj.handle = zend_objects_store_put(obj, NULL, php_com_object_free_storage, php_com_object_clone TSRMLS_CC); - z->value.obj.handlers = &php_com_object_handlers; + zend_object_std_init(&obj->zo, php_com_variant_class_entry TSRMLS_CC); + obj->zo.handlers = &php_com_object_handlers; + ZVAL_OBJ(z, &obj->zo); } PHP_COM_DOTNET_API void php_com_wrap_variant(zval *z, VARIANT *v, @@ -84,10 +84,9 @@ PHP_COM_DOTNET_API void php_com_wrap_variant(zval *z, VARIANT *v, IDispatch_GetTypeInfo(V_DISPATCH(&obj->v), 0, LANG_NEUTRAL, &obj->typeinfo); } - Z_TYPE_P(z) = IS_OBJECT; - - z->value.obj.handle = zend_objects_store_put(obj, NULL, php_com_object_free_storage, php_com_object_clone TSRMLS_CC); - z->value.obj.handlers = &php_com_object_handlers; + zend_object_std_init(&obj->zo, php_com_variant_class_entry TSRMLS_CC); + obj->zo.handlers = &php_com_object_handlers; + ZVAL_OBJ(z, &obj->zo); } /* this is a convenience function for fetching a particular diff --git a/ext/com_dotnet/com_persist.c b/ext/com_dotnet/com_persist.c index aaddf9ce9a..66e3dec640 100644 --- a/ext/com_dotnet/com_persist.c +++ b/ext/com_dotnet/com_persist.c @@ -41,13 +41,13 @@ typedef struct { DWORD engine_thread; LONG refcount; php_stream *stream; - int id; + zend_resource *res; } php_istream; static int le_istream; static void istream_destructor(php_istream *stm TSRMLS_DC); -static void istream_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) +static void istream_dtor(zend_resource *rsrc TSRMLS_DC) { php_istream *stm = (php_istream *)rsrc->ptr; istream_destructor(stm TSRMLS_CC); @@ -97,8 +97,8 @@ static ULONG STDMETHODCALLTYPE stm_release(IStream *This) ret = InterlockedDecrement(&stm->refcount); if (ret == 0) { /* destroy it */ - if (stm->id) - zend_list_delete(stm->id); + if (stm->res) + zend_list_delete(stm->res); } return ret; } @@ -251,10 +251,10 @@ static struct IStreamVtbl php_istream_vtbl = { static void istream_destructor(php_istream *stm TSRMLS_DC) { - if (stm->id) { - int id = stm->id; - stm->id = 0; - zend_list_delete(id); + if (stm->res) { + zend_resource *res = stm->res; + stm->res = NULL; + zend_list_delete(res); return; } @@ -262,7 +262,7 @@ static void istream_destructor(php_istream *stm TSRMLS_DC) CoDisconnectObject((IUnknown*)stm, 0); } - zend_list_delete(stm->stream->rsrc_id); + zend_list_delete(stm->stream->res); CoTaskMemFree(stm); } @@ -271,6 +271,7 @@ static void istream_destructor(php_istream *stm TSRMLS_DC) PHP_COM_DOTNET_API IStream *php_com_wrapper_export_stream(php_stream *stream TSRMLS_DC) { php_istream *stm = (php_istream*)CoTaskMemAlloc(sizeof(*stm)); + zval *tmp; if (stm == NULL) return NULL; @@ -281,8 +282,9 @@ PHP_COM_DOTNET_API IStream *php_com_wrapper_export_stream(php_stream *stream TSR stm->refcount = 1; stm->stream = stream; - zend_list_addref(stream->rsrc_id); - stm->id = zend_list_insert(stm, le_istream TSRMLS_CC); + GC_REFCOUNT(stream->res)++; + tmp = zend_list_insert(stm, le_istream TSRMLS_CC); + stm->res = Z_RES_P(tmp); return (IStream*)stm; } @@ -291,7 +293,7 @@ PHP_COM_DOTNET_API IStream *php_com_wrapper_export_stream(php_stream *stream TSR #define CPH_SME(fname, arginfo) PHP_ME(com_persist, fname, arginfo, ZEND_ACC_ALLOW_STATIC|ZEND_ACC_PUBLIC) #define CPH_METHOD(fname) static PHP_METHOD(com_persist, fname) -#define CPH_FETCH() php_com_persist_helper *helper = (php_com_persist_helper*)zend_object_store_get_object(getThis() TSRMLS_CC); +#define CPH_FETCH() php_com_persist_helper *helper = (php_com_persist_helper*)Z_OBJ_P(getThis()); #define CPH_NO_OBJ() if (helper->unk == NULL) { php_com_throw_exception(E_INVALIDARG, "No COM object is associated with this helper instance" TSRMLS_CC); return; } @@ -347,9 +349,12 @@ CPH_METHOD(GetCurFileName) res = IPersistFile_GetCurFile(helper->ipf, &olename); if (res == S_OK) { - Z_TYPE_P(return_value) = IS_STRING; - Z_STRVAL_P(return_value) = php_com_olestring_to_string(olename, - &Z_STRLEN_P(return_value), helper->codepage TSRMLS_CC); + int len; + char *str = php_com_olestring_to_string(olename, + &len, helper->codepage TSRMLS_CC); + RETVAL_STRINGL(str, len); + // TODO: avoid reallocarion??? + efree(str); CoTaskMemFree(olename); return; } else if (res == S_FALSE) { @@ -545,7 +550,7 @@ CPH_METHOD(LoadFromStream) return; } - php_stream_from_zval_no_verify(stream, &zstm); + php_stream_from_zval_no_verify(stream, zstm); if (stream == NULL) { php_com_throw_exception(E_INVALIDARG, "expected a stream" TSRMLS_CC); @@ -607,7 +612,7 @@ CPH_METHOD(SaveToStream) return; } - php_stream_from_zval_no_verify(stream, &zstm); + php_stream_from_zval_no_verify(stream, zstm); if (stream == NULL) { php_com_throw_exception(E_INVALIDARG, "expected a stream" TSRMLS_CC); @@ -688,7 +693,7 @@ static const zend_function_entry com_persist_helper_methods[] = { PHP_FE_END }; -static void helper_free_storage(void *obj TSRMLS_DC) +static void helper_free_storage(zend_object *obj TSRMLS_DC) { php_com_persist_helper *object = (php_com_persist_helper*)obj; @@ -705,17 +710,15 @@ static void helper_free_storage(void *obj TSRMLS_DC) IUnknown_Release(object->unk); } zend_object_std_dtor(&object->std TSRMLS_CC); - efree(object); } -static void helper_clone(void *obj, void **clone_ptr TSRMLS_DC) +static zend_object* helper_clone(zval *obj TSRMLS_DC) { - php_com_persist_helper *clone, *object = (php_com_persist_helper*)obj; + php_com_persist_helper *clone, *object = (php_com_persist_helper*)Z_OBJ_P(obj); clone = emalloc(sizeof(*object)); memcpy(clone, object, sizeof(*object)); - *clone_ptr = clone; zend_object_std_init(&clone->std, object->std.ce TSRMLS_CC); @@ -731,22 +734,20 @@ static void helper_clone(void *obj, void **clone_ptr TSRMLS_DC) if (clone->unk) { IUnknown_AddRef(clone->unk); } + return (zend_object*)clone; } -static zend_object_value helper_new(zend_class_entry *ce TSRMLS_DC) +static zend_object* helper_new(zend_class_entry *ce TSRMLS_DC) { php_com_persist_helper *helper; - zend_object_value retval; helper = emalloc(sizeof(*helper)); memset(helper, 0, sizeof(*helper)); zend_object_std_init(&helper->std, helper_ce TSRMLS_CC); - - retval.handle = zend_objects_store_put(helper, NULL, helper_free_storage, helper_clone TSRMLS_CC); - retval.handlers = &helper_handlers; + helper->std.handlers = &helper_handlers; - return retval; + return &helper->std; } int php_com_persist_minit(INIT_FUNC_ARGS) @@ -754,7 +755,8 @@ int php_com_persist_minit(INIT_FUNC_ARGS) zend_class_entry ce; memcpy(&helper_handlers, zend_get_std_object_handlers(), sizeof(helper_handlers)); - helper_handlers.clone_obj = NULL; + helper_handlers.free_obj = helper_free_storage; + helper_handlers.clone_obj = helper_clone; INIT_CLASS_ENTRY(ce, "COMPersistHelper", com_persist_helper_methods); ce.create_object = helper_new; diff --git a/ext/com_dotnet/com_saproxy.c b/ext/com_dotnet/com_saproxy.c index 0d557e60ee..9b3716f43a 100644 --- a/ext/com_dotnet/com_saproxy.c +++ b/ext/com_dotnet/com_saproxy.c @@ -37,6 +37,7 @@ #include "Zend/zend_exceptions.h" typedef struct { + zend_object std; /* the object we a proxying for; we hold a refcount to it */ zval *zobj; php_com_dotnet_object *obj; @@ -45,95 +46,89 @@ typedef struct { LONG dimensions; /* this is an array whose size_is(dimensions) */ - zval **indices; + zval *indices; } php_com_saproxy; typedef struct { zend_object_iterator iter; - zval *proxy_obj; + zval proxy_obj; + zval data; php_com_saproxy *proxy; LONG key; LONG imin, imax; LONG *indices; } php_com_saproxy_iter; -#define SA_FETCH(zv) (php_com_saproxy*)zend_object_store_get_object(zv TSRMLS_CC) +#define SA_FETCH(zv) (php_com_saproxy*)Z_OBJ_P(zv) static inline void clone_indices(php_com_saproxy *dest, php_com_saproxy *src, int ndims) { int i; for (i = 0; i < ndims; i++) { - MAKE_STD_ZVAL(dest->indices[i]); - *dest->indices[i] = *src->indices[i]; - zval_copy_ctor(dest->indices[i]); + ZVAL_DUP(&dest->indices[i], &src->indices[i]); } } -static zval *saproxy_property_read(zval *object, zval *member, int type, const zend_literal *key TSRMLS_DC) +static zval *saproxy_property_read(zval *object, zval *member, int type, void **cahce_slot, zval *rv TSRMLS_DC) { - zval *return_value; - - MAKE_STD_ZVAL(return_value); - ZVAL_NULL(return_value); + ZVAL_NULL(rv); php_com_throw_exception(E_INVALIDARG, "safearray has no properties" TSRMLS_CC); - return return_value; + return rv; } -static void saproxy_property_write(zval *object, zval *member, zval *value, const zend_literal *key TSRMLS_DC) +static void saproxy_property_write(zval *object, zval *member, zval *value, void **cache_slot TSRMLS_DC) { php_com_throw_exception(E_INVALIDARG, "safearray has no properties" TSRMLS_CC); } -static zval *saproxy_read_dimension(zval *object, zval *offset, int type TSRMLS_DC) +static zval *saproxy_read_dimension(zval *object, zval *offset, int type, zval *rv TSRMLS_DC) { php_com_saproxy *proxy = SA_FETCH(object); - zval *return_value; UINT dims, i; SAFEARRAY *sa; LONG ubound, lbound; HRESULT res; - MAKE_STD_ZVAL(return_value); - ZVAL_NULL(return_value); + ZVAL_NULL(rv); if (V_VT(&proxy->obj->v) == VT_DISPATCH) { VARIANT v; - zval **args; + zval *args; /* prop-get using first dimension as the property name, * all subsequent dimensions and the offset as parameters */ - args = safe_emalloc(proxy->dimensions + 1, sizeof(zval *), 0); + args = safe_emalloc(proxy->dimensions + 1, sizeof(zval), 0); for (i = 1; i < (UINT) proxy->dimensions; i++) { args[i-1] = proxy->indices[i]; } - args[i-1] = offset; + ZVAL_COPY_VALUE(&args[i-1], offset); - convert_to_string(proxy->indices[0]); + convert_to_string(&proxy->indices[0]); VariantInit(&v); - res = php_com_do_invoke(proxy->obj, Z_STRVAL_P(proxy->indices[0]), - Z_STRLEN_P(proxy->indices[0]), DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, + res = php_com_do_invoke(proxy->obj, Z_STRVAL(proxy->indices[0]), + Z_STRLEN(proxy->indices[0]), DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, proxy->dimensions, args, 0 TSRMLS_CC); if (res == SUCCESS) { - php_com_zval_from_variant(return_value, &v, proxy->obj->code_page TSRMLS_CC); + php_com_zval_from_variant(rv, &v, proxy->obj->code_page TSRMLS_CC); VariantClear(&v); } else if (res == DISP_E_BADPARAMCOUNT) { /* return another proxy */ - php_com_saproxy_create(object, return_value, offset TSRMLS_CC); + php_com_saproxy_create(object, rv, offset TSRMLS_CC); } - return return_value; + return rv; } else if (!V_ISARRAY(&proxy->obj->v)) { php_com_throw_exception(E_INVALIDARG, "invalid read from com proxy object" TSRMLS_CC); - return return_value; + return rv; } /* the SafeArray case */ @@ -147,7 +142,7 @@ static zval *saproxy_read_dimension(zval *object, zval *offset, int type TSRMLS_ if ((UINT) proxy->dimensions >= dims) { /* too many dimensions */ php_com_throw_exception(E_INVALIDARG, "too many dimensions!" TSRMLS_CC); - return return_value; + return rv; } /* bounds check */ @@ -156,7 +151,7 @@ static zval *saproxy_read_dimension(zval *object, zval *offset, int type TSRMLS_ if (Z_LVAL_P(offset) < lbound || Z_LVAL_P(offset) > ubound) { php_com_throw_exception(DISP_E_BADINDEX, "index out of bounds" TSRMLS_CC); - return return_value; + return rv; } if (dims - 1 == proxy->dimensions) { @@ -171,8 +166,8 @@ static zval *saproxy_read_dimension(zval *object, zval *offset, int type TSRMLS_ /* copy indices from proxy */ for (i = 0; i < dims; i++) { - convert_to_long(proxy->indices[i]); - indices[i] = Z_LVAL_P(proxy->indices[i]); + convert_to_long(&proxy->indices[i]); + indices[i] = Z_LVAL(proxy->indices[i]); } /* add user-supplied index */ @@ -193,7 +188,7 @@ static zval *saproxy_read_dimension(zval *object, zval *offset, int type TSRMLS_ efree(indices); if (SUCCEEDED(res)) { - php_com_wrap_variant(return_value, &v, proxy->obj->code_page TSRMLS_CC); + php_com_wrap_variant(rv, &v, proxy->obj->code_page TSRMLS_CC); } else { php_com_throw_exception(res, NULL TSRMLS_CC); } @@ -202,10 +197,10 @@ static zval *saproxy_read_dimension(zval *object, zval *offset, int type TSRMLS_ } else { /* return another proxy */ - php_com_saproxy_create(object, return_value, offset TSRMLS_CC); + php_com_saproxy_create(object, rv, offset TSRMLS_CC); } - return return_value; + return rv; } static void saproxy_write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC) @@ -219,18 +214,18 @@ static void saproxy_write_dimension(zval *object, zval *offset, zval *value TSRM /* We do a prop-set using the first dimension as the property name, * all subsequent dimensions and offset as parameters, with value as * the final value */ - zval **args = safe_emalloc(proxy->dimensions + 2, sizeof(zval *), 0); + zval *args = safe_emalloc(proxy->dimensions + 2, sizeof(zval), 0); for (i = 1; i < (UINT) proxy->dimensions; i++) { - args[i-1] = proxy->indices[i]; + ZVAL_COPY_VALUE(&args[i-1], &proxy->indices[i]); } - args[i-1] = offset; - args[i] = value; + ZVAL_COPY_VALUE(&args[i-1], offset); + ZVAL_COPY_VALUE(&args[i], value); - convert_to_string(proxy->indices[0]); + convert_to_string(&proxy->indices[0]); VariantInit(&v); - if (SUCCESS == php_com_do_invoke(proxy->obj, Z_STRVAL_P(proxy->indices[0]), - Z_STRLEN_P(proxy->indices[0]), DISPATCH_PROPERTYPUT, &v, proxy->dimensions + 1, + if (SUCCESS == php_com_do_invoke(proxy->obj, Z_STRVAL(proxy->indices[0]), + Z_STRLEN(proxy->indices[0]), DISPATCH_PROPERTYPUT, &v, proxy->dimensions + 1, args, 0 TSRMLS_CC)) { VariantClear(&v); } @@ -245,8 +240,8 @@ static void saproxy_write_dimension(zval *object, zval *offset, zval *value TSRM indices = safe_emalloc(dims, sizeof(LONG), 0); /* copy indices from proxy */ for (i = 0; i < dims; i++) { - convert_to_long(proxy->indices[i]); - indices[i] = Z_LVAL_P(proxy->indices[i]); + convert_to_long(&proxy->indices[i]); + indices[i] = Z_LVAL(proxy->indices[i]); } /* add user-supplied index */ @@ -293,7 +288,7 @@ static zval *saproxy_object_get(zval *property TSRMLS_DC) } #endif -static int saproxy_property_exists(zval *object, zval *member, int check_empty, const zend_literal *key TSRMLS_DC) +static int saproxy_property_exists(zval *object, zval *member, int check_empty, void **cache_slot TSRMLS_DC) { /* no properties */ return 0; @@ -305,7 +300,7 @@ static int saproxy_dimension_exists(zval *object, zval *member, int check_empty return 0; } -static void saproxy_property_delete(zval *object, zval *member, const zend_literal *key TSRMLS_DC) +static void saproxy_property_delete(zval *object, zval *member, void **cache_slot TSRMLS_DC) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot delete properties from a COM object"); } @@ -321,33 +316,31 @@ static HashTable *saproxy_properties_get(zval *object TSRMLS_DC) return NULL; } -static union _zend_function *saproxy_method_get(zval **object, const char *name, int len, const zend_literal *key TSRMLS_DC) +static union _zend_function *saproxy_method_get(zend_object **object, zend_string *name, const zval *key TSRMLS_DC) { /* no methods */ return NULL; } -static int saproxy_call_method(const char *method, INTERNAL_FUNCTION_PARAMETERS) +static int saproxy_call_method(zend_string *method, zend_object *object, INTERNAL_FUNCTION_PARAMETERS) { return FAILURE; } -static union _zend_function *saproxy_constructor_get(zval *object TSRMLS_DC) +static union _zend_function *saproxy_constructor_get(zend_object *object TSRMLS_DC) { /* user cannot instantiate */ return NULL; } -static zend_class_entry *saproxy_class_entry_get(const zval *object TSRMLS_DC) +static zend_class_entry *saproxy_class_entry_get(const zend_object *object TSRMLS_DC) { return php_com_saproxy_class_entry; } -static int saproxy_class_name_get(const zval *object, const char **class_name, zend_uint *class_name_len, int parent TSRMLS_DC) +static zend_string* saproxy_class_name_get(const zend_object *object, int parent TSRMLS_DC) { - *class_name = estrndup(php_com_saproxy_class_entry->name, php_com_saproxy_class_entry->name_length); - *class_name_len = php_com_saproxy_class_entry->name_length; - return 0; + return STR_COPY(php_com_saproxy_class_entry->name); } static int saproxy_objects_compare(zval *object1, zval *object2 TSRMLS_DC) @@ -377,8 +370,41 @@ static int saproxy_count_elements(zval *object, long *count TSRMLS_DC) return SUCCESS; } +static void saproxy_free_storage(zend_object *object TSRMLS_DC) +{ + php_com_saproxy *proxy = (php_com_saproxy *)object; +//??? int i; +//??? +//??? for (i = 0; i < proxy->dimensions; i++) { +//??? if (proxy->indices) { +//??? FREE_ZVAL(proxy->indices[i]); +//??? } +//??? } + + zval_ptr_dtor(proxy->zobj); + efree(proxy->indices); +} + +static zend_object* saproxy_clone(zval *object TSRMLS_DC) +{ + php_com_saproxy *proxy = (php_com_saproxy *)Z_OBJ_P(object); + php_com_saproxy *cloneproxy; + + cloneproxy = emalloc(sizeof(*cloneproxy)); + memcpy(cloneproxy, proxy, sizeof(*cloneproxy)); + + Z_ADDREF_P(cloneproxy->zobj); + cloneproxy->indices = safe_emalloc(cloneproxy->dimensions, sizeof(zval *), 0); + clone_indices(cloneproxy, proxy, proxy->dimensions); + + return &cloneproxy->std; +} + zend_object_handlers php_com_saproxy_handlers = { - ZEND_OBJECTS_STORE_HANDLERS, + 0, + saproxy_free_storage, + zend_objects_destroy_object, + saproxy_clone, saproxy_property_read, saproxy_property_write, saproxy_read_dimension, @@ -401,37 +427,6 @@ zend_object_handlers php_com_saproxy_handlers = { saproxy_count_elements }; -static void saproxy_free_storage(void *object TSRMLS_DC) -{ - php_com_saproxy *proxy = (php_com_saproxy *)object; - int i; - - for (i = 0; i < proxy->dimensions; i++) { - if (proxy->indices) { - FREE_ZVAL(proxy->indices[i]); - } - } - - zval_ptr_dtor(&proxy->zobj); - efree(proxy->indices); - efree(proxy); -} - -static void saproxy_clone(void *object, void **clone_ptr TSRMLS_DC) -{ - php_com_saproxy *proxy = (php_com_saproxy *)object; - php_com_saproxy *cloneproxy; - - cloneproxy = emalloc(sizeof(*cloneproxy)); - memcpy(cloneproxy, proxy, sizeof(*cloneproxy)); - - Z_ADDREF_P(cloneproxy->zobj); - cloneproxy->indices = safe_emalloc(cloneproxy->dimensions, sizeof(zval *), 0); - clone_indices(cloneproxy, proxy, proxy->dimensions); - - *clone_ptr = cloneproxy; -} - int php_com_saproxy_create(zval *com_object, zval *proxy_out, zval *index TSRMLS_DC) { php_com_saproxy *proxy, *rel = NULL; @@ -456,13 +451,11 @@ int php_com_saproxy_create(zval *com_object, zval *proxy_out, zval *index TSRMLS clone_indices(proxy, rel, rel->dimensions); } - MAKE_STD_ZVAL(proxy->indices[proxy->dimensions-1]); - *proxy->indices[proxy->dimensions-1] = *index; - zval_copy_ctor(proxy->indices[proxy->dimensions-1]); + ZVAL_DUP(&proxy->indices[proxy->dimensions-1], index); - Z_TYPE_P(proxy_out) = IS_OBJECT; - Z_OBJ_HANDLE_P(proxy_out) = zend_objects_store_put(proxy, NULL, saproxy_free_storage, saproxy_clone TSRMLS_CC); - Z_OBJ_HT_P(proxy_out) = &php_com_saproxy_handlers; + zend_object_std_init(&proxy->std, php_com_saproxy_class_entry TSRMLS_CC); + proxy->std.handlers = &php_com_saproxy_handlers; + ZVAL_OBJ(proxy_out, &proxy->std); return 1; } @@ -471,7 +464,7 @@ int php_com_saproxy_create(zval *com_object, zval *proxy_out, zval *index TSRMLS static void saproxy_iter_dtor(zend_object_iterator *iter TSRMLS_DC) { - php_com_saproxy_iter *I = (php_com_saproxy_iter*)iter->data; + php_com_saproxy_iter *I = (php_com_saproxy_iter*)Z_PTR(iter->data); zval_ptr_dtor(&I->proxy_obj); @@ -481,17 +474,16 @@ static void saproxy_iter_dtor(zend_object_iterator *iter TSRMLS_DC) static int saproxy_iter_valid(zend_object_iterator *iter TSRMLS_DC) { - php_com_saproxy_iter *I = (php_com_saproxy_iter*)iter->data; + php_com_saproxy_iter *I = (php_com_saproxy_iter*)Z_PTR(iter->data); return (I->key < I->imax) ? SUCCESS : FAILURE; } -static void saproxy_iter_get_data(zend_object_iterator *iter, zval ***data TSRMLS_DC) +static zval* saproxy_iter_get_data(zend_object_iterator *iter TSRMLS_DC) { - php_com_saproxy_iter *I = (php_com_saproxy_iter*)iter->data; + php_com_saproxy_iter *I = (php_com_saproxy_iter*)Z_PTR(iter->data); VARIANT v; VARTYPE vt; - zval *return_value, **ptr_ptr; SAFEARRAY *sa; I->indices[I->proxy->dimensions-1] = I->key; @@ -510,18 +502,16 @@ static void saproxy_iter_get_data(zend_object_iterator *iter, zval ***data TSRML SafeArrayGetElement(sa, I->indices, &v.lVal); } - MAKE_STD_ZVAL(return_value); - php_com_wrap_variant(return_value, &v, I->proxy->obj->code_page TSRMLS_CC); + ZVAL_NULL(&I->data); + php_com_wrap_variant(&I->data, &v, I->proxy->obj->code_page TSRMLS_CC); VariantClear(&v); - ptr_ptr = emalloc(sizeof(*ptr_ptr)); - *ptr_ptr = return_value; - *data = ptr_ptr; + return &I->data; } static void saproxy_iter_get_key(zend_object_iterator *iter, zval *key TSRMLS_DC) { - php_com_saproxy_iter *I = (php_com_saproxy_iter*)iter->data; + php_com_saproxy_iter *I = (php_com_saproxy_iter*)Z_PTR(iter->data); if (I->key == -1) { ZVAL_NULL(key); @@ -532,7 +522,7 @@ static void saproxy_iter_get_key(zend_object_iterator *iter, zval *key TSRMLS_DC static int saproxy_iter_move_forwards(zend_object_iterator *iter TSRMLS_DC) { - php_com_saproxy_iter *I = (php_com_saproxy_iter*)iter->data; + php_com_saproxy_iter *I = (php_com_saproxy_iter*)Z_PTR(iter->data); if (++I->key >= I->imax) { I->key = -1; @@ -563,16 +553,15 @@ zend_object_iterator *php_com_saproxy_iter_get(zend_class_entry *ce, zval *objec I = ecalloc(1, sizeof(*I)); I->iter.funcs = &saproxy_iter_funcs; - I->iter.data = I; + Z_PTR(I->iter.data) = I; I->proxy = proxy; - I->proxy_obj = object; - Z_ADDREF_P(I->proxy_obj); + ZVAL_COPY(&I->proxy_obj, object); I->indices = safe_emalloc(proxy->dimensions + 1, sizeof(LONG), 0); for (i = 0; i < proxy->dimensions; i++) { - convert_to_long(proxy->indices[i]); - I->indices[i] = Z_LVAL_P(proxy->indices[i]); + convert_to_long(&proxy->indices[i]); + I->indices[i] = Z_LVAL(proxy->indices[i]); } SafeArrayGetLBound(V_ARRAY(&proxy->obj->v), proxy->dimensions, &I->imin); diff --git a/ext/com_dotnet/com_typeinfo.c b/ext/com_dotnet/com_typeinfo.c index 4ec448e2e3..46a3cbd5a1 100644 --- a/ext/com_dotnet/com_typeinfo.c +++ b/ext/com_dotnet/com_typeinfo.c @@ -162,8 +162,9 @@ PHP_COM_DOTNET_API int php_com_import_typelib(ITypeLib *TL, int mode, int codepa UINT NameCount; BSTR bstr_ids; zend_constant c; - zval exists, results, value; + zval *exists, results, value; char *const_name; + int len; if (TL == NULL) { return FAILURE; @@ -184,22 +185,23 @@ PHP_COM_DOTNET_API int php_com_import_typelib(ITypeLib *TL, int mode, int codepa continue; } - const_name = php_com_olestring_to_string(bstr_ids, &c.name_len, codepage TSRMLS_CC); - c.name = zend_strndup(const_name, c.name_len); + const_name = php_com_olestring_to_string(bstr_ids, &len, codepage TSRMLS_CC); + c.name = STR_INIT(const_name, len, 1); + // TODO: avoid reallocation??? efree(const_name); if(c.name == NULL) { ITypeInfo_ReleaseVarDesc(TypeInfo, pVarDesc); continue; } - c.name_len++; /* include NUL */ +//??? c.name_len++; /* include NUL */ SysFreeString(bstr_ids); /* sanity check for the case where the constant is already defined */ - if (zend_get_constant(c.name, c.name_len - 1, &exists TSRMLS_CC)) { - if (COMG(autoreg_verbose) && !compare_function(&results, &c.value, &exists TSRMLS_CC)) { + if ((exists = zend_get_constant(c.name TSRMLS_CC)) != NULL) { + if (COMG(autoreg_verbose) && !compare_function(&results, &c.value, exists TSRMLS_CC)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Type library constant %s is already defined", c.name); } - free(c.name); + STR_RELEASE(c.name); ITypeInfo_ReleaseVarDesc(TypeInfo, pVarDesc); continue; } @@ -208,8 +210,7 @@ PHP_COM_DOTNET_API int php_com_import_typelib(ITypeLib *TL, int mode, int codepa php_com_zval_from_variant(&value, pVarDesc->lpvarValue, codepage TSRMLS_CC); if (Z_TYPE(value) == IS_LONG) { c.flags = mode; - c.value.type = IS_LONG; - c.value.value.lval = Z_LVAL(value); + ZVAL_LONG(&c.value, Z_LVAL(value)); c.module_number = 0; zend_register_constant(&c TSRMLS_CC); } @@ -231,19 +232,17 @@ void php_com_typelibrary_dtor(void *pDest) PHP_COM_DOTNET_API ITypeLib *php_com_load_typelib_via_cache(char *search_string, int codepage, int *cached TSRMLS_DC) { - ITypeLib **TLp; ITypeLib *TL; char *name_dup; int l; l = strlen(search_string); - if (zend_ts_hash_find(&php_com_typelibraries, search_string, l+1, - (void**)&TLp) == SUCCESS) { + if ((TL = zend_ts_hash_str_find_ptr(&php_com_typelibraries, search_string, l)) != NULL) { *cached = 1; /* add a reference for the caller */ - ITypeLib_AddRef(*TLp); - return *TLp; + ITypeLib_AddRef(TL); + return TL; } *cached = 0; @@ -252,8 +251,8 @@ PHP_COM_DOTNET_API ITypeLib *php_com_load_typelib_via_cache(char *search_string, efree(name_dup); if (TL) { - if (SUCCESS == zend_ts_hash_update(&php_com_typelibraries, - search_string, l+1, (void*)&TL, sizeof(ITypeLib*), NULL)) { + if (NULL != zend_ts_hash_str_update_ptr(&php_com_typelibraries, + search_string, l, TL)) { /* add a reference for the hash table */ ITypeLib_AddRef(TL); } @@ -472,7 +471,7 @@ int php_com_process_typeinfo(ITypeInfo *typeinfo, HashTable *id_to_name, int pri /* So we've got the dispatch interface; lets list the event methods */ for (i = 0; i < attr->cFuncs; i++) { - zval *tmp; + zval tmp; DISPID lastid = 0; /* for props */ int isprop; @@ -582,9 +581,10 @@ int php_com_process_typeinfo(ITypeInfo *typeinfo, HashTable *id_to_name, int pri if (id_to_name) { zend_str_tolower(ansiname, ansinamelen); - MAKE_STD_ZVAL(tmp); - ZVAL_STRINGL(tmp, ansiname, ansinamelen, 0); - zend_hash_index_update(id_to_name, func->memid, (void*)&tmp, sizeof(zval *), NULL); + ZVAL_STRINGL(&tmp, ansiname, ansinamelen); + zend_hash_index_update(id_to_name, func->memid, &tmp); + // TODO: avoid reallocation??? + efree(ansiname); } } ITypeInfo_ReleaseFuncDesc(typeinfo, func); diff --git a/ext/com_dotnet/com_variant.c b/ext/com_dotnet/com_variant.c index 3cc057127a..f7dbdd5efa 100644 --- a/ext/com_dotnet/com_variant.c +++ b/ext/com_dotnet/com_variant.c @@ -38,18 +38,17 @@ static void safe_array_from_zval(VARIANT *v, zval *z, int codepage TSRMLS_DC) SAFEARRAYBOUND bound; HashPosition pos; int keytype; - char *strindex; - int strindexlen; + zend_string *strindex; long intindex = -1; long max_index = 0; VARIANT *va; - zval **item; + zval *item; /* find the largest array index, and assert that all keys are integers */ zend_hash_internal_pointer_reset_ex(HASH_OF(z), &pos); for (;; zend_hash_move_forward_ex(HASH_OF(z), &pos)) { - keytype = zend_hash_get_current_key_ex(HASH_OF(z), &strindex, &strindexlen, &intindex, 0, &pos); + keytype = zend_hash_get_current_key_ex(HASH_OF(z), &strindex, &intindex, 0, &pos); if (HASH_KEY_IS_STRING == keytype) { goto bogus; @@ -73,11 +72,11 @@ static void safe_array_from_zval(VARIANT *v, zval *z, int codepage TSRMLS_DC) /* now fill it in */ zend_hash_internal_pointer_reset_ex(HASH_OF(z), &pos); for (;; zend_hash_move_forward_ex(HASH_OF(z), &pos)) { - if (FAILURE == zend_hash_get_current_data_ex(HASH_OF(z), (void**)&item, &pos)) { + if (NULL == (item = zend_hash_get_current_data_ex(HASH_OF(z), &pos))) { break; } - zend_hash_get_current_key_ex(HASH_OF(z), &strindex, &strindexlen, &intindex, 0, &pos); - php_com_variant_from_zval(&va[intindex], *item, codepage TSRMLS_CC); + zend_hash_get_current_key_ex(HASH_OF(z), &strindex, &intindex, 0, &pos); + php_com_variant_from_zval(&va[intindex], item, codepage TSRMLS_CC); } /* Unlock it and stuff it into our variant */ @@ -109,9 +108,14 @@ PHP_COM_DOTNET_API void php_com_variant_from_zval(VARIANT *v, zval *z, int codep V_VT(v) = VT_NULL; break; - case IS_BOOL: + case IS_FALSE: V_VT(v) = VT_BOOL; - V_BOOL(v) = Z_BVAL_P(z) ? VARIANT_TRUE : VARIANT_FALSE; + V_BOOL(v) = VARIANT_FALSE; + break; + + case IS_TRUE: + V_VT(v) = VT_BOOL; + V_BOOL(v) = VARIANT_TRUE; break; case IS_OBJECT: @@ -218,9 +222,12 @@ PHP_COM_DOTNET_API int php_com_zval_from_variant(zval *z, VARIANT *v, int codepa case VT_BSTR: olestring = V_BSTR(v); if (olestring) { - Z_TYPE_P(z) = IS_STRING; - Z_STRVAL_P(z) = php_com_olestring_to_string(olestring, - &Z_STRLEN_P(z), codepage TSRMLS_CC); + int len; + char *str = php_com_olestring_to_string(olestring, + &len, codepage TSRMLS_CC); + ZVAL_STRINGL(z, str, len); + // TODO: avoid reallocation??? + efree(str); olestring = NULL; } break; diff --git a/ext/com_dotnet/com_wrapper.c b/ext/com_dotnet/com_wrapper.c index 54b6fb9ae7..a55c767423 100644 --- a/ext/com_dotnet/com_wrapper.c +++ b/ext/com_dotnet/com_wrapper.c @@ -39,7 +39,7 @@ typedef struct { /* now the PHP stuff */ DWORD engine_thread; /* for sanity checking */ - zval *object; /* the object exported */ + zval object; /* the object exported */ LONG refcount; /* COM reference count */ HashTable *dispid_to_name; /* keep track of dispid -> name mappings */ @@ -47,14 +47,14 @@ typedef struct { GUID sinkid; /* iid that we "implement" for event sinking */ - int id; + zend_resource *res; } php_dispatchex; static int le_dispatch; static void disp_destructor(php_dispatchex *disp TSRMLS_DC); -static void dispatch_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) +static void dispatch_dtor(zend_resource *rsrc TSRMLS_DC) { php_dispatchex *disp = (php_dispatchex *)rsrc->ptr; disp_destructor(disp TSRMLS_CC); @@ -90,9 +90,9 @@ static inline void trace(char *fmt, ...) php_dispatchex *disp = (php_dispatchex*)This; \ TSRMLS_FETCH(); \ if (COMG(rshutdown_started)) { \ - trace(" PHP Object:%p (name:unknown) %s\n", disp->object, methname); \ + trace(" PHP Object:%p (name:unknown) %s\n", Z_OBJ(disp->object), methname); \ } else { \ - trace(" PHP Object:%p (name:%s) %s\n", disp->object, Z_OBJCE_P(disp->object)->name, methname); \ + trace(" PHP Object:%p (name:%s) %s\n", Z_OBJ(disp->object), Z_OBJCE(disp->object)->name->val, methname); \ } \ if (GetCurrentThreadId() != disp->engine_thread) { \ return RPC_E_WRONG_THREAD; \ @@ -134,8 +134,8 @@ static ULONG STDMETHODCALLTYPE disp_release(IDispatchEx *This) trace("-- refcount now %d\n", ret); if (ret == 0) { /* destroy it */ - if (disp->id) - zend_list_delete(disp->id); + if (disp->res) + zend_list_delete(disp->res); } return ret; } @@ -177,16 +177,16 @@ static HRESULT STDMETHODCALLTYPE disp_getidsofnames( for (i = 0; i < cNames; i++) { char *name; unsigned int namelen; - zval **tmp; + zval *tmp; name = php_com_olestring_to_string(rgszNames[i], &namelen, COMG(code_page) TSRMLS_CC); /* Lookup the name in the hash */ - if (zend_hash_find(disp->name_to_dispid, name, namelen+1, (void**)&tmp) == FAILURE) { + if ((tmp = zend_hash_str_find(disp->name_to_dispid, name, namelen)) == NULL) { ret = DISP_E_UNKNOWNNAME; rgDispId[i] = 0; } else { - rgDispId[i] = Z_LVAL_PP(tmp); + rgDispId[i] = Z_LVAL_P(tmp); } efree(name); @@ -221,7 +221,7 @@ static HRESULT STDMETHODCALLTYPE disp_getdispid( HRESULT ret = DISP_E_UNKNOWNNAME; char *name; unsigned int namelen; - zval **tmp; + zval *tmp; FETCH_DISP("GetDispID"); name = php_com_olestring_to_string(bstrName, &namelen, COMG(code_page) TSRMLS_CC); @@ -229,9 +229,9 @@ static HRESULT STDMETHODCALLTYPE disp_getdispid( trace("Looking for %s, namelen=%d in %p\n", name, namelen, disp->name_to_dispid); /* Lookup the name in the hash */ - if (zend_hash_find(disp->name_to_dispid, name, namelen+1, (void**)&tmp) == SUCCESS) { + if ((tmp = zend_hash_str_find(disp->name_to_dispid, name, namelen)) != NULL) { trace("found it\n"); - *pid = Z_LVAL_PP(tmp); + *pid = Z_LVAL_P(tmp); ret = S_OK; } @@ -250,34 +250,30 @@ static HRESULT STDMETHODCALLTYPE disp_invokeex( /* [out] */ EXCEPINFO *pei, /* [unique][in] */ IServiceProvider *pspCaller) { - zval **name; + zval *name; UINT i; - zval *retval = NULL; - zval ***params = NULL; + zval rv, *retval = NULL; + zval *params = NULL; HRESULT ret = DISP_E_MEMBERNOTFOUND; FETCH_DISP("InvokeEx"); - if (SUCCESS == zend_hash_index_find(disp->dispid_to_name, id, (void**)&name)) { + if (NULL != (name = zend_hash_index_find(disp->dispid_to_name, id))) { /* TODO: add support for overloaded objects */ - trace("-- Invoke: %d %20s [%d] flags=%08x args=%d\n", id, Z_STRVAL_PP(name), Z_STRLEN_PP(name), wFlags, pdp->cArgs); + trace("-- Invoke: %d %20s [%d] flags=%08x args=%d\n", id, Z_STRVAL_P(name), Z_STRLEN_P(name), wFlags, pdp->cArgs); /* convert args into zvals. * Args are in reverse order */ if (pdp->cArgs) { - params = (zval ***)safe_emalloc(sizeof(zval **), pdp->cArgs, 0); + params = (zval *)safe_emalloc(sizeof(zval), pdp->cArgs, 0); for (i = 0; i < pdp->cArgs; i++) { VARIANT *arg; - zval *zarg; arg = &pdp->rgvarg[ pdp->cArgs - 1 - i]; trace("alloc zval for arg %d VT=%08x\n", i, V_VT(arg)); - ALLOC_INIT_ZVAL(zarg); - php_com_wrap_variant(zarg, arg, COMG(code_page) TSRMLS_CC); - params[i] = (zval**)emalloc(sizeof(zval**)); - *params[i] = zarg; + php_com_wrap_variant(¶ms[i], arg, COMG(code_page) TSRMLS_CC); } } @@ -287,19 +283,20 @@ static HRESULT STDMETHODCALLTYPE disp_invokeex( * and expose it as a COM exception */ if (wFlags & DISPATCH_PROPERTYGET) { - retval = zend_read_property(Z_OBJCE_P(disp->object), disp->object, Z_STRVAL_PP(name), Z_STRLEN_PP(name)+1, 1 TSRMLS_CC); + retval = zend_read_property(Z_OBJCE(disp->object), &disp->object, Z_STRVAL_P(name), Z_STRLEN_P(name)+1, 1 TSRMLS_CC); } else if (wFlags & DISPATCH_PROPERTYPUT) { - zend_update_property(Z_OBJCE_P(disp->object), disp->object, Z_STRVAL_PP(name), Z_STRLEN_PP(name)+1, *params[0] TSRMLS_CC); + zend_update_property(Z_OBJCE(disp->object), &disp->object, Z_STRVAL_P(name), Z_STRLEN_P(name), ¶ms[0] TSRMLS_CC); } else if (wFlags & DISPATCH_METHOD) { zend_try { - if (SUCCESS == call_user_function_ex(EG(function_table), &disp->object, *name, - &retval, pdp->cArgs, params, 1, NULL TSRMLS_CC)) { + retval = &rv; + if (SUCCESS == call_user_function_ex(EG(function_table), &disp->object, name, + retval, pdp->cArgs, params, 1, NULL TSRMLS_CC)) { ret = S_OK; trace("function called ok\n"); /* Copy any modified values to callers copy of variant*/ for (i = 0; i < pdp->cArgs; i++) { - php_com_dotnet_object *obj = CDNO_FETCH(*params[i]); + php_com_dotnet_object *obj = CDNO_FETCH(¶ms[i]); VARIANT *srcvar = &obj->v; VARIANT *dstvar = &pdp->rgvarg[ pdp->cArgs - 1 - i]; if ((V_VT(dstvar) & VT_BYREF) && obj->modified ) { @@ -322,8 +319,7 @@ static HRESULT STDMETHODCALLTYPE disp_invokeex( /* release arguments */ if (params) { for (i = 0; i < pdp->cArgs; i++) { - zval_ptr_dtor(params[i]); - efree(params[i]); + zval_ptr_dtor(¶ms[i]); } efree(params); } @@ -334,7 +330,7 @@ static HRESULT STDMETHODCALLTYPE disp_invokeex( VariantInit(pvarRes); php_com_variant_from_zval(pvarRes, retval, COMG(code_page) TSRMLS_CC); } - zval_ptr_dtor(&retval); + zval_ptr_dtor(retval); } else if (pvarRes) { VariantInit(pvarRes); } @@ -388,7 +384,7 @@ static HRESULT STDMETHODCALLTYPE disp_getmembername( zval *name; FETCH_DISP("GetMemberName"); - if (SUCCESS == zend_hash_index_find(disp->dispid_to_name, id, (void**)&name)) { + if (NULL != (name = zend_hash_index_find(disp->dispid_to_name, id))) { OLECHAR *olestr = php_com_string_to_olestring(Z_STRVAL_P(name), Z_STRLEN_P(name), COMG(code_page) TSRMLS_CC); *pbstrName = SysAllocString(olestr); efree(olestr); @@ -451,9 +447,8 @@ static struct IDispatchExVtbl php_dispatch_vtbl = { static void generate_dispids(php_dispatchex *disp TSRMLS_DC) { HashPosition pos; - char *name = NULL; - zval *tmp; - int namelen; + zend_string *name = NULL; + zval *tmp, tmp2; int keytype; ulong pid; @@ -465,65 +460,71 @@ static void generate_dispids(php_dispatchex *disp TSRMLS_DC) } /* properties */ - if (Z_OBJPROP_P(disp->object)) { - zend_hash_internal_pointer_reset_ex(Z_OBJPROP_P(disp->object), &pos); + if (Z_OBJPROP(disp->object)) { + zend_hash_internal_pointer_reset_ex(Z_OBJPROP(disp->object), &pos); while (HASH_KEY_NON_EXISTENT != (keytype = - zend_hash_get_current_key_ex(Z_OBJPROP_P(disp->object), &name, - &namelen, &pid, 0, &pos))) { + zend_hash_get_current_key_ex(Z_OBJPROP(disp->object), &name, + &pid, 0, &pos))) { char namebuf[32]; if (keytype == HASH_KEY_IS_LONG) { snprintf(namebuf, sizeof(namebuf), "%d", pid); - name = namebuf; - namelen = strlen(namebuf)+1; + name = STR_INIT(namebuf, strlen(namebuf), 0); + } else { + STR_ADDREF(name); } - zend_hash_move_forward_ex(Z_OBJPROP_P(disp->object), &pos); + zend_hash_move_forward_ex(Z_OBJPROP(disp->object), &pos); /* Find the existing id */ - if (zend_hash_find(disp->name_to_dispid, name, namelen, (void**)&tmp) == SUCCESS) + if ((tmp = zend_hash_find(disp->name_to_dispid, name)) != NULL) { + STR_RELEASE(name); continue; + } /* add the mappings */ - MAKE_STD_ZVAL(tmp); - ZVAL_STRINGL(tmp, name, namelen-1, 1); + ZVAL_STR(&tmp2, STR_COPY(name)); pid = zend_hash_next_free_element(disp->dispid_to_name); - zend_hash_index_update(disp->dispid_to_name, pid, (void*)&tmp, sizeof(zval *), NULL); + zend_hash_index_update(disp->dispid_to_name, pid, &tmp2); + + ZVAL_LONG(&tmp2, pid); + zend_hash_update(disp->name_to_dispid, name, &tmp2); - MAKE_STD_ZVAL(tmp); - ZVAL_LONG(tmp, pid); - zend_hash_update(disp->name_to_dispid, name, namelen, (void*)&tmp, sizeof(zval *), NULL); + STR_RELEASE(name); } } /* functions */ - if (Z_OBJCE_P(disp->object)) { - zend_hash_internal_pointer_reset_ex(&Z_OBJCE_P(disp->object)->function_table, &pos); + if (Z_OBJCE(disp->object)) { + zend_hash_internal_pointer_reset_ex(&Z_OBJCE(disp->object)->function_table, &pos); while (HASH_KEY_NON_EXISTENT != (keytype = - zend_hash_get_current_key_ex(&Z_OBJCE_P(disp->object)->function_table, - &name, &namelen, &pid, 0, &pos))) { + zend_hash_get_current_key_ex(&Z_OBJCE(disp->object)->function_table, + &name, &pid, 0, &pos))) { char namebuf[32]; if (keytype == HASH_KEY_IS_LONG) { snprintf(namebuf, sizeof(namebuf), "%d", pid); - name = namebuf; - namelen = strlen(namebuf) + 1; + name = STR_INIT(namebuf, strlen(namebuf), 0); + } else { + STR_ADDREF(name); } - zend_hash_move_forward_ex(Z_OBJPROP_P(disp->object), &pos); + zend_hash_move_forward_ex(&Z_OBJCE(disp->object)->function_table, &pos); /* Find the existing id */ - if (zend_hash_find(disp->name_to_dispid, name, namelen, (void**)&tmp) == SUCCESS) + if ((tmp = zend_hash_find(disp->name_to_dispid, name)) != NULL) { + STR_RELEASE(name); continue; + } /* add the mappings */ - MAKE_STD_ZVAL(tmp); - ZVAL_STRINGL(tmp, name, namelen-1, 1); + ZVAL_STR(&tmp2, STR_COPY(name)); pid = zend_hash_next_free_element(disp->dispid_to_name); - zend_hash_index_update(disp->dispid_to_name, pid, (void*)&tmp, sizeof(zval *), NULL); + zend_hash_index_update(disp->dispid_to_name, pid, &tmp2); + + ZVAL_LONG(&tmp2, pid); + zend_hash_update(disp->name_to_dispid, name, &tmp2); - MAKE_STD_ZVAL(tmp); - ZVAL_LONG(tmp, pid); - zend_hash_update(disp->name_to_dispid, name, namelen, (void*)&tmp, sizeof(zval *), NULL); + STR_RELEASE(name); } } } @@ -531,6 +532,7 @@ static void generate_dispids(php_dispatchex *disp TSRMLS_DC) static php_dispatchex *disp_constructor(zval *object TSRMLS_DC) { php_dispatchex *disp = (php_dispatchex*)CoTaskMemAlloc(sizeof(php_dispatchex)); + zval *tmp; trace("constructing a COM wrapper for PHP object %p (%s)\n", object, Z_OBJCE_P(object)->name); @@ -544,11 +546,14 @@ static php_dispatchex *disp_constructor(zval *object TSRMLS_DC) disp->refcount = 1; - if (object) - Z_ADDREF_P(object); - disp->object = object; + if (object) { + ZVAL_COPY(&disp->object, object); + } else { + ZVAL_UNDEF(&disp->object); + } - disp->id = zend_list_insert(disp, le_dispatch TSRMLS_CC); + tmp = zend_list_insert(disp, le_dispatch TSRMLS_CC); + disp->res = Z_RES_P(tmp); return disp; } @@ -557,12 +562,12 @@ static void disp_destructor(php_dispatchex *disp TSRMLS_DC) { /* Object store not available during request shutdown */ if (COMG(rshutdown_started)) { - trace("destroying COM wrapper for PHP object %p (name:unknown)\n", disp->object); + trace("destroying COM wrapper for PHP object %p (name:unknown)\n", Z_OBJ(disp->object)); } else { - trace("destroying COM wrapper for PHP object %p (name:%s)\n", disp->object, Z_OBJCE_P(disp->object)->name); + trace("destroying COM wrapper for PHP object %p (name:%s)\n", Z_OBJ(disp->object), Z_OBJCE(disp->object)->name->val); } - disp->id = 0; + disp->res = NULL; if (disp->refcount > 0) CoDisconnectObject((IUnknown*)disp, 0); @@ -572,8 +577,7 @@ static void disp_destructor(php_dispatchex *disp TSRMLS_DC) FREE_HASHTABLE(disp->dispid_to_name); FREE_HASHTABLE(disp->name_to_dispid); - if (disp->object) - zval_ptr_dtor(&disp->object); + zval_ptr_dtor(&disp->object); CoTaskMemFree(disp); } @@ -583,9 +587,8 @@ PHP_COM_DOTNET_API IDispatch *php_com_wrapper_export_as_sink(zval *val, GUID *si { php_dispatchex *disp = disp_constructor(val TSRMLS_CC); HashPosition pos; - char *name = NULL; - zval *tmp, **ntmp; - int namelen; + zend_string *name = NULL; + zval tmp, *ntmp; int keytype; ulong pid; @@ -599,16 +602,14 @@ PHP_COM_DOTNET_API IDispatch *php_com_wrapper_export_as_sink(zval *val, GUID *si zend_hash_internal_pointer_reset_ex(id_to_name, &pos); while (HASH_KEY_NON_EXISTENT != (keytype = - zend_hash_get_current_key_ex(id_to_name, &name, &namelen, &pid, 0, &pos))) { + zend_hash_get_current_key_ex(id_to_name, &name, &pid, 0, &pos))) { if (keytype == HASH_KEY_IS_LONG) { - zend_hash_get_current_data_ex(id_to_name, (void**)&ntmp, &pos); + ntmp = zend_hash_get_current_data_ex(id_to_name, &pos); - MAKE_STD_ZVAL(tmp); - ZVAL_LONG(tmp, pid); - zend_hash_update(disp->name_to_dispid, Z_STRVAL_PP(ntmp), - Z_STRLEN_PP(ntmp)+1, (void*)&tmp, sizeof(zval *), NULL); + ZVAL_LONG(&tmp, pid); + zend_hash_update(disp->name_to_dispid, Z_STR_P(ntmp), &tmp); } zend_hash_move_forward_ex(id_to_name, &pos); diff --git a/ext/com_dotnet/php_com_dotnet_internal.h b/ext/com_dotnet/php_com_dotnet_internal.h index 5dabdfb213..d093e3c37b 100644 --- a/ext/com_dotnet/php_com_dotnet_internal.h +++ b/ext/com_dotnet/php_com_dotnet_internal.h @@ -29,6 +29,8 @@ #include <dispex.h> #include "win32/winutil.h" +#include "zend_ts_hash.h" + typedef struct _php_com_dotnet_object { zend_object zo; @@ -54,18 +56,18 @@ typedef struct _php_com_dotnet_object { static inline int php_com_is_valid_object(zval *zv TSRMLS_DC) { zend_class_entry *ce = Z_OBJCE_P(zv); - return strcmp("com", ce->name) == 0 || - strcmp("dotnet", ce->name) == 0 || - strcmp("variant", ce->name) == 0; + return strcmp("com", ce->name->val) == 0 || + strcmp("dotnet", ce->name->val) == 0 || + strcmp("variant", ce->name->val) == 0; } -#define CDNO_FETCH(zv) (php_com_dotnet_object*)zend_object_store_get_object(zv TSRMLS_CC) +#define CDNO_FETCH(zv) (php_com_dotnet_object*)Z_OBJ_P(zv) #define CDNO_FETCH_VERIFY(obj, zv) do { \ if (!php_com_is_valid_object(zv TSRMLS_CC)) { \ php_com_throw_exception(E_UNEXPECTED, "expected a variant object" TSRMLS_CC); \ return; \ } \ - obj = (php_com_dotnet_object*)zend_object_store_get_object(zv TSRMLS_CC); \ + obj = (php_com_dotnet_object*)Z_OBJ_P(zv); \ } while(0) /* com_extension.c */ @@ -73,9 +75,9 @@ TsHashTable php_com_typelibraries; zend_class_entry *php_com_variant_class_entry, *php_com_exception_class_entry, *php_com_saproxy_class_entry; /* com_handlers.c */ -zend_object_value php_com_object_new(zend_class_entry *ce TSRMLS_DC); -void php_com_object_clone(void *object, void **clone_ptr TSRMLS_DC); -void php_com_object_free_storage(void *object TSRMLS_DC); +zend_object* php_com_object_new(zend_class_entry *ce TSRMLS_DC); +zend_object* php_com_object_clone(zval *object TSRMLS_DC); +void php_com_object_free_storage(zend_object *object TSRMLS_DC); zend_object_handlers php_com_object_handlers; void php_com_object_enable_event_sink(php_com_dotnet_object *obj, int enable TSRMLS_DC); @@ -104,11 +106,11 @@ HRESULT php_com_invoke_helper(php_com_dotnet_object *obj, DISPID id_member, HRESULT php_com_get_id_of_name(php_com_dotnet_object *obj, char *name, int namelen, DISPID *dispid TSRMLS_DC); int php_com_do_invoke_by_id(php_com_dotnet_object *obj, DISPID dispid, - WORD flags, VARIANT *v, int nargs, zval **args, int silent, int allow_noarg TSRMLS_DC); + WORD flags, VARIANT *v, int nargs, zval *args, int silent, int allow_noarg TSRMLS_DC); int php_com_do_invoke(php_com_dotnet_object *obj, char *name, int namelen, - WORD flags, VARIANT *v, int nargs, zval **args, int allow_noarg TSRMLS_DC); + WORD flags, VARIANT *v, int nargs, zval *args, int allow_noarg TSRMLS_DC); int php_com_do_invoke_byref(php_com_dotnet_object *obj, char *name, int namelen, - WORD flags, VARIANT *v, int nargs, zval ***args TSRMLS_DC); + WORD flags, VARIANT *v, int nargs, zval *args TSRMLS_DC); /* com_wrapper.c */ int php_com_wrapper_minit(INIT_FUNC_ARGS); diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c index 6174756881..015da88914 100644 --- a/ext/date/lib/parse_date.c +++ b/ext/date/lib/parse_date.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Tue May 13 17:01:57 2014 */ +/* Generated by re2c 0.13.5 on Thu Jul 31 14:33:37 2014 */ #line 1 "ext/date/lib/parse_date.re" /* +----------------------------------------------------------------------+ @@ -889,53 +889,53 @@ std: YYDEBUG(-1, yych); switch (yych) { case 0x00: - case '\n': goto yy52; + case '\n': goto yy51; case '\t': - case ' ': goto yy49; - case '(': goto yy46; + case ' ': goto yy48; + case '(': goto yy45; case '+': - case '-': goto yy31; + case '-': goto yy30; case ',': - case '.': goto yy51; - case '0': goto yy26; - case '1': goto yy27; - case '2': goto yy28; - case '3': goto yy29; + 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 yy30; - case '@': goto yy12; - case 'A': goto yy37; - case 'B': goto yy18; + 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 yy47; - case 'D': goto yy41; - case 'E': goto yy22; - case 'F': goto yy14; - case 'G': goto yy45; - case 'I': goto yy32; - 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 'V': goto yy33; - case 'W': goto yy43; - case 'X': goto yy34; - case 'Y': goto yy3; - case 'a': goto yy38; - case 'b': goto yy19; + 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': @@ -946,63 +946,44 @@ std: case 'u': case 'v': case 'x': - case 'z': goto yy48; - case 'd': goto yy42; - case 'e': goto yy23; - case 'f': goto yy15; - case 'j': goto yy36; - case 'l': goto yy17; - case 'm': goto yy9; - case 'n': goto yy7; - case 'o': goto yy40; - case 'p': goto yy25; - case 's': goto yy21; - case 't': goto yy11; - case 'w': goto yy44; - case 'y': goto yy5; - default: goto yy54; + 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: YYDEBUG(2, *YYCURSOR); -#line 1052 "ext/date/lib/parse_date.re" - { - DEBUG_OUTPUT("firstdayof | lastdayof"); - TIMELIB_INIT; - TIMELIB_HAVE_RELATIVE(); - - /* skip "last day of" or "first day of" */ - if (*ptr == 'l') { - s->time->relative.first_last_day_of = 2; - } else { - s->time->relative.first_last_day_of = 1; - } - - TIMELIB_DEINIT; - return TIMELIB_LF_DAY_OF_MONTH; - } -#line 984 "ext/date/lib/parse_date.c" -yy3: - YYDEBUG(3, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= 'E') { if (yych <= ')') { - if (yych >= ')') goto yy140; + if (yych >= ')') goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; goto yy1523; } } else { if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych >= 'a') goto yy146; + if (yych <= 'Z') goto yy140; + if (yych >= 'a') goto yy145; } else { if (yych <= 'e') goto yy1532; - if (yych <= 'z') goto yy146; + if (yych <= 'z') goto yy145; } } -yy4: - YYDEBUG(4, *YYCURSOR); +yy3: + YYDEBUG(3, *YYCURSOR); #line 1646 "ext/date/lib/parse_date.re" { int tz_not_found; @@ -1016,173 +997,173 @@ yy4: TIMELIB_DEINIT; return TIMELIB_TIMEZONE; } -#line 1020 "ext/date/lib/parse_date.c" -yy5: - YYDEBUG(5, *YYCURSOR); +#line 1001 "ext/date/lib/parse_date.c" +yy4: + YYDEBUG(4, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; goto yy1523; } } else { if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy141; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { if (yych <= 'e') goto yy1523; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= 'z') goto yy140; + goto yy3; } } -yy6: - YYDEBUG(6, *YYCURSOR); +yy5: + YYDEBUG(5, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'D') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy141; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy140; } else { if (yych <= 'H') { if (yych <= 'E') goto yy1494; - goto yy141; + goto yy140; } else { if (yych <= 'I') goto yy1495; - if (yych <= 'N') goto yy141; + if (yych <= 'N') goto yy140; goto yy1493; } } } else { if (yych <= 'h') { if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; + if (yych <= 'Z') goto yy140; + goto yy3; } else { if (yych == 'e') goto yy1510; - goto yy146; + goto yy145; } } else { if (yych <= 'n') { if (yych <= 'i') goto yy1511; - goto yy146; + goto yy145; } else { if (yych <= 'o') goto yy1509; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= 'z') goto yy145; + goto yy3; } } } -yy7: - YYDEBUG(7, *YYCURSOR); +yy6: + YYDEBUG(6, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'D') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy141; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy140; } else { if (yych <= 'H') { if (yych <= 'E') goto yy1494; - goto yy141; + goto yy140; } else { if (yych <= 'I') goto yy1495; - if (yych <= 'N') goto yy141; + if (yych <= 'N') goto yy140; goto yy1493; } } } else { if (yych <= 'h') { if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; + if (yych <= 'Z') goto yy140; + goto yy3; } else { if (yych == 'e') goto yy1494; - goto yy141; + goto yy140; } } else { if (yych <= 'n') { if (yych <= 'i') goto yy1495; - goto yy141; + goto yy140; } else { if (yych <= 'o') goto yy1493; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= 'z') goto yy140; + goto yy3; } } } -yy8: - YYDEBUG(8, *YYCURSOR); +yy7: + YYDEBUG(7, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; goto yy1463; } else { if (yych == 'I') goto yy1464; - if (yych <= 'N') goto yy141; + if (yych <= 'N') goto yy140; goto yy1465; } } else { if (yych <= 'h') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; if (yych <= 'a') goto yy1478; - goto yy146; + goto yy145; } else { if (yych <= 'n') { if (yych <= 'i') goto yy1479; - goto yy146; + goto yy145; } else { if (yych <= 'o') goto yy1480; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= 'z') goto yy145; + goto yy3; } } } -yy9: - YYDEBUG(9, *YYCURSOR); +yy8: + YYDEBUG(8, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; goto yy1463; } else { if (yych == 'I') goto yy1464; - if (yych <= 'N') goto yy141; + if (yych <= 'N') goto yy140; goto yy1465; } } else { if (yych <= 'h') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; if (yych <= 'a') goto yy1463; - goto yy141; + goto yy140; } else { if (yych <= 'n') { if (yych <= 'i') goto yy1464; - goto yy141; + goto yy140; } else { if (yych <= 'o') goto yy1465; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= 'z') goto yy140; + goto yy3; } } } -yy10: - YYDEBUG(10, *YYCURSOR); +yy9: + YYDEBUG(9, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); switch (yych) { - case ')': goto yy140; + case ')': goto yy139; case '0': case '1': goto yy1393; case '2': goto yy1394; @@ -1213,7 +1194,7 @@ yy10: case 'V': case 'X': case 'Y': - case 'Z': goto yy141; + case 'Z': goto yy140; case 'E': goto yy1388; case 'H': goto yy1389; case 'O': goto yy1390; @@ -1239,21 +1220,21 @@ yy10: case 'v': case 'x': case 'y': - case 'z': goto yy146; + case 'z': goto yy145; case 'e': goto yy1431; case 'h': goto yy1432; case 'o': goto yy1433; case 'u': goto yy1434; case 'w': goto yy1435; - default: goto yy4; + default: goto yy3; } -yy11: - YYDEBUG(11, *YYCURSOR); +yy10: + YYDEBUG(10, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); switch (yych) { - case ')': goto yy140; + case ')': goto yy139; case '0': case '1': goto yy1393; case '2': goto yy1394; @@ -1305,7 +1286,7 @@ yy11: case 'v': case 'x': case 'y': - case 'z': goto yy141; + case 'z': goto yy140; case 'E': case 'e': goto yy1388; case 'H': @@ -1316,370 +1297,370 @@ yy11: case 'u': goto yy1391; case 'W': case 'w': goto yy1392; - default: goto yy4; + default: goto yy3; } -yy12: - YYDEBUG(12, *YYCURSOR); +yy11: + YYDEBUG(11, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych == '-') goto yy1384; - if (yych <= '/') goto yy13; + if (yych <= '/') goto yy12; if (yych <= '9') goto yy1385; -yy13: - YYDEBUG(13, *YYCURSOR); +yy12: + YYDEBUG(12, *YYCURSOR); #line 1741 "ext/date/lib/parse_date.re" { add_error(s, "Unexpected character"); goto std; } -#line 1336 "ext/date/lib/parse_date.c" -yy14: - YYDEBUG(14, *YYCURSOR); +#line 1317 "ext/date/lib/parse_date.c" +yy13: + YYDEBUG(13, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; goto yy1320; } } else { if (yych <= 'N') { if (yych == 'I') goto yy1321; - goto yy141; + goto yy140; } else { if (yych <= 'O') goto yy1322; - if (yych <= 'Q') goto yy141; + if (yych <= 'Q') goto yy140; goto yy1323; } } } else { if (yych <= 'i') { if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy146; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy145; } else { if (yych <= 'e') goto yy1361; - if (yych <= 'h') goto yy146; + if (yych <= 'h') goto yy145; goto yy1362; } } else { if (yych <= 'q') { if (yych == 'o') goto yy1363; - goto yy146; + goto yy145; } else { if (yych <= 'r') goto yy1364; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= 'z') goto yy145; + goto yy3; } } } -yy15: - YYDEBUG(15, *YYCURSOR); +yy14: + YYDEBUG(14, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; goto yy1320; } } else { if (yych <= 'N') { if (yych == 'I') goto yy1321; - goto yy141; + goto yy140; } else { if (yych <= 'O') goto yy1322; - if (yych <= 'Q') goto yy141; + if (yych <= 'Q') goto yy140; goto yy1323; } } } else { if (yych <= 'i') { if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy141; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { if (yych <= 'e') goto yy1320; - if (yych <= 'h') goto yy141; + if (yych <= 'h') goto yy140; goto yy1321; } } else { if (yych <= 'q') { if (yych == 'o') goto yy1322; - goto yy141; + goto yy140; } else { if (yych <= 'r') goto yy1323; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= 'z') goto yy140; + goto yy3; } } } -yy16: - YYDEBUG(16, *YYCURSOR); +yy15: + YYDEBUG(15, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy1307; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy1306; } else { if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; + if (yych <= 'Z') goto yy140; + goto yy3; } else { if (yych <= 'a') goto yy1317; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= 'z') goto yy145; + goto yy3; } } -yy17: - YYDEBUG(17, *YYCURSOR); +yy16: + YYDEBUG(16, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy1307; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy1306; } else { if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if (yych <= 'a') goto yy1307; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= 'a') goto yy1306; + if (yych <= 'z') goto yy140; + goto yy3; } } -yy18: - YYDEBUG(18, *YYCURSOR); +yy17: + YYDEBUG(17, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy1287; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy1286; } else { if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if (yych <= 'a') goto yy1304; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= 'a') goto yy1303; + if (yych <= 'z') goto yy145; + goto yy3; } } -yy19: - YYDEBUG(19, *YYCURSOR); +yy18: + YYDEBUG(18, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy1287; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy1286; } else { if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if (yych <= 'a') goto yy1287; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= 'a') goto yy1286; + if (yych <= 'z') goto yy140; + goto yy3; } } -yy20: - YYDEBUG(20, *YYCURSOR); +yy19: + YYDEBUG(19, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'D') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'A') goto yy1230; - goto yy141; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy1229; + goto yy140; } } else { if (yych <= 'H') { - if (yych <= 'E') goto yy1229; - goto yy141; + if (yych <= 'E') goto yy1228; + goto yy140; } else { - if (yych <= 'I') goto yy1231; - if (yych <= 'T') goto yy141; - goto yy1232; + if (yych <= 'I') goto yy1230; + if (yych <= 'T') goto yy140; + goto yy1231; } } } else { if (yych <= 'e') { if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if (yych <= 'a') goto yy1259; - if (yych <= 'd') goto yy146; - goto yy1258; + if (yych <= 'a') goto yy1258; + if (yych <= 'd') goto yy145; + goto yy1257; } } else { if (yych <= 't') { - if (yych == 'i') goto yy1260; - goto yy146; + if (yych == 'i') goto yy1259; + goto yy145; } else { - if (yych <= 'u') goto yy1261; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= 'u') goto yy1260; + if (yych <= 'z') goto yy145; + goto yy3; } } } -yy21: - YYDEBUG(21, *YYCURSOR); +yy20: + YYDEBUG(20, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'D') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'A') goto yy1230; - goto yy141; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy1229; + goto yy140; } } else { if (yych <= 'H') { - if (yych <= 'E') goto yy1229; - goto yy141; + if (yych <= 'E') goto yy1228; + goto yy140; } else { - if (yych <= 'I') goto yy1231; - if (yych <= 'T') goto yy141; - goto yy1232; + if (yych <= 'I') goto yy1230; + if (yych <= 'T') goto yy140; + goto yy1231; } } } else { if (yych <= 'e') { if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if (yych <= 'a') goto yy1230; - if (yych <= 'd') goto yy141; - goto yy1229; + if (yych <= 'a') goto yy1229; + if (yych <= 'd') goto yy140; + goto yy1228; } } else { if (yych <= 't') { - if (yych == 'i') goto yy1231; - goto yy141; + if (yych == 'i') goto yy1230; + goto yy140; } else { - if (yych <= 'u') goto yy1232; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= 'u') goto yy1231; + if (yych <= 'z') goto yy140; + goto yy3; } } } -yy22: - YYDEBUG(22, *YYCURSOR); +yy21: + YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'L') { if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == 'I') goto yy1199; - if (yych <= 'K') goto yy141; - goto yy1200; + if (yych == 'I') goto yy1198; + if (yych <= 'K') goto yy140; + goto yy1199; } } else { if (yych <= 'i') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - if (yych <= 'h') goto yy146; - goto yy1217; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + if (yych <= 'h') goto yy145; + goto yy1216; } else { - if (yych == 'l') goto yy1218; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych == 'l') goto yy1217; + if (yych <= 'z') goto yy145; + goto yy3; } } -yy23: - YYDEBUG(23, *YYCURSOR); +yy22: + YYDEBUG(22, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'L') { if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == 'I') goto yy1199; - if (yych <= 'K') goto yy141; - goto yy1200; + if (yych == 'I') goto yy1198; + if (yych <= 'K') goto yy140; + goto yy1199; } } else { if (yych <= 'i') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - if (yych <= 'h') goto yy141; - goto yy1199; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + if (yych <= 'h') goto yy140; + goto yy1198; } else { - if (yych == 'l') goto yy1200; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych == 'l') goto yy1199; + if (yych <= 'z') goto yy140; + goto yy3; } } -yy24: - YYDEBUG(24, *YYCURSOR); +yy23: + YYDEBUG(23, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy141; - goto yy1098; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy140; + goto yy1097; } } else { if (yych <= 'q') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy146; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy145; } else { - if (yych <= 'r') goto yy1192; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= 'r') goto yy1191; + if (yych <= 'z') goto yy145; + goto yy3; } } -yy25: - YYDEBUG(25, *YYCURSOR); +yy24: + YYDEBUG(24, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy141; - goto yy1098; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy140; + goto yy1097; } } else { if (yych <= 'q') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy141; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if (yych <= 'r') goto yy1098; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= 'r') goto yy1097; + if (yych <= 'z') goto yy140; + goto yy3; } } -yy26: - YYDEBUG(26, *YYCURSOR); +yy25: + YYDEBUG(25, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); switch (yych) { - case '\t': goto yy1052; + case '\t': goto yy1051; case ' ': case 'A': case 'D': @@ -1704,11 +1685,11 @@ yy26: case 'm': case 'o': case 'w': - case 'y': goto yy1054; - case '-': goto yy473; - case '.': goto yy1064; - case '/': goto yy472; - case '0': goto yy1097; + case 'y': goto yy1053; + case '-': goto yy472; + case '.': goto yy1063; + case '/': goto yy471; + case '0': goto yy1096; case '1': case '2': case '3': @@ -1717,21 +1698,21 @@ yy26: case '6': case '7': case '8': - case '9': goto yy1096; - case ':': goto yy1065; - case 'n': goto yy470; - case 'r': goto yy471; - case 's': goto yy464; - case 't': goto yy468; - default: goto yy13; + case '9': goto yy1095; + case ':': goto yy1064; + case 'n': goto yy469; + case 'r': goto yy470; + case 's': goto yy463; + case 't': goto yy467; + default: goto yy12; } -yy27: - YYDEBUG(27, *YYCURSOR); +yy26: + YYDEBUG(26, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); switch (yych) { - case '\t': goto yy460; + case '\t': goto yy459; case ' ': case 'A': case 'D': @@ -1758,34 +1739,34 @@ yy27: case 'o': case 'p': case 'w': - case 'y': goto yy462; - case '-': goto yy473; - case '.': goto yy474; - case '/': goto yy472; + case 'y': goto yy461; + case '-': goto yy472; + case '.': goto yy473; + case '/': goto yy471; case '0': case '1': - case '2': goto yy1096; + case '2': goto yy1095; case '3': case '4': case '5': case '6': case '7': case '8': - case '9': goto yy1063; - case ':': goto yy483; - case 'n': goto yy470; - case 'r': goto yy471; - case 's': goto yy464; - case 't': goto yy468; - default: goto yy13; + case '9': goto yy1062; + case ':': goto yy482; + case 'n': goto yy469; + case 'r': goto yy470; + case 's': goto yy463; + case 't': goto yy467; + default: goto yy12; } -yy28: - YYDEBUG(28, *YYCURSOR); +yy27: + YYDEBUG(27, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); switch (yych) { - case '\t': goto yy460; + case '\t': goto yy459; case ' ': case 'A': case 'D': @@ -1812,34 +1793,34 @@ yy28: case 'o': case 'p': case 'w': - case 'y': goto yy462; - case '-': goto yy473; - case '.': goto yy474; - case '/': goto yy472; + case 'y': goto yy461; + case '-': goto yy472; + case '.': goto yy473; + case '/': goto yy471; case '0': case '1': case '2': case '3': - case '4': goto yy1063; + case '4': goto yy1062; case '5': case '6': case '7': case '8': - case '9': goto yy1050; - case ':': goto yy483; - case 'n': goto yy470; - case 'r': goto yy471; - case 's': goto yy464; - case 't': goto yy468; - default: goto yy13; + case '9': goto yy1049; + case ':': goto yy482; + case 'n': goto yy469; + case 'r': goto yy470; + case 's': goto yy463; + case 't': goto yy467; + default: goto yy12; } -yy29: - YYDEBUG(29, *YYCURSOR); +yy28: + YYDEBUG(28, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); switch (yych) { - case '\t': goto yy460; + case '\t': goto yy459; case ' ': case 'A': case 'D': @@ -1866,12 +1847,12 @@ yy29: case 'o': case 'p': case 'w': - case 'y': goto yy462; - case '-': goto yy473; - case '.': goto yy474; - case '/': goto yy472; + case 'y': goto yy461; + case '-': goto yy472; + case '.': goto yy473; + case '/': goto yy471; case '0': - case '1': goto yy1050; + case '1': goto yy1049; case '2': case '3': case '4': @@ -1879,21 +1860,21 @@ yy29: case '6': case '7': case '8': - case '9': goto yy469; - case ':': goto yy483; - case 'n': goto yy470; - case 'r': goto yy471; - case 's': goto yy464; - case 't': goto yy468; - default: goto yy13; + case '9': goto yy468; + case ':': goto yy482; + case 'n': goto yy469; + case 'r': goto yy470; + case 's': goto yy463; + case 't': goto yy467; + default: goto yy12; } -yy30: - YYDEBUG(30, *YYCURSOR); +yy29: + YYDEBUG(29, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); switch (yych) { - case '\t': goto yy460; + case '\t': goto yy459; case ' ': case 'A': case 'D': @@ -1920,10 +1901,10 @@ yy30: case 'o': case 'p': case 'w': - case 'y': goto yy462; - case '-': goto yy473; - case '.': goto yy474; - case '/': goto yy472; + case 'y': goto yy461; + case '-': goto yy472; + case '.': goto yy473; + case '/': goto yy471; case '0': case '1': case '2': @@ -1933,308 +1914,331 @@ yy30: case '6': case '7': case '8': - case '9': goto yy469; - case ':': goto yy483; - case 'n': goto yy470; - case 'r': goto yy471; - case 's': goto yy464; - case 't': goto yy468; - default: goto yy13; + case '9': goto yy468; + case ':': goto yy482; + case 'n': goto yy469; + case 'r': goto yy470; + case 's': goto yy463; + case 't': goto yy467; + default: goto yy12; } -yy31: - YYDEBUG(31, *YYCURSOR); +yy30: + YYDEBUG(30, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 4) { - goto yy58; + goto yy57; } YYDEBUG(-1, yych); switch (yych) { case '+': - case '-': goto yy440; + case '-': goto yy439; case '0': - case '1': goto yy437; - case '2': goto yy438; + case '1': goto yy436; + case '2': goto yy437; case '3': case '4': case '5': case '6': case '7': case '8': - case '9': goto yy439; - default: goto yy13; + case '9': goto yy438; + default: goto yy12; } -yy32: - YYDEBUG(32, *YYCURSOR); +yy31: + YYDEBUG(31, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy4; - goto yy196; + if (yych <= 0x08) goto yy3; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy4; + if (yych == ' ') goto yy195; + goto yy3; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy4; + if (yych <= ')') goto yy139; + goto yy3; } else { - if (yych == '/') goto yy4; - goto yy196; + if (yych == '/') goto yy3; + goto yy195; } } } else { if (yych <= 'V') { if (yych <= 'H') { - if (yych <= '@') goto yy4; - goto yy141; + if (yych <= '@') goto yy3; + goto yy140; } else { - if (yych <= 'I') goto yy436; - if (yych <= 'U') goto yy141; - goto yy435; + if (yych <= 'I') goto yy435; + if (yych <= 'U') goto yy140; + goto yy434; } } else { if (yych <= 'Z') { - if (yych == 'X') goto yy435; - goto yy141; + if (yych == 'X') goto yy434; + goto yy140; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy145; + goto yy3; } } } -yy33: - YYDEBUG(33, *YYCURSOR); +yy32: + YYDEBUG(32, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy4; - goto yy196; + if (yych == '\t') goto yy195; + if (yych <= 0x1F) goto yy3; + goto yy195; } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy196; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy195; } } else { if (yych <= 'H') { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy4; - goto yy141; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy195; + if (yych <= '@') goto yy3; + goto yy140; } else { if (yych <= 'Z') { - if (yych <= 'I') goto yy432; - goto yy141; + if (yych <= 'I') goto yy431; + goto yy140; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy145; + goto yy3; } } } -yy34: - YYDEBUG(34, *YYCURSOR); +yy33: + YYDEBUG(33, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy4; - goto yy196; + if (yych == '\t') goto yy195; + if (yych <= 0x1F) goto yy3; + goto yy195; } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy196; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy195; } } else { if (yych <= 'H') { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy4; - goto yy141; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy195; + if (yych <= '@') goto yy3; + goto yy140; } else { if (yych <= 'Z') { - if (yych <= 'I') goto yy430; - goto yy141; + if (yych <= 'I') goto yy429; + goto yy140; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy145; + goto yy3; } } } -yy35: - YYDEBUG(35, *YYCURSOR); +yy34: + YYDEBUG(34, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'A') goto yy413; - if (yych <= 'T') goto yy141; - goto yy412; + if (yych <= 'A') goto yy412; + if (yych <= 'T') goto yy140; + goto yy411; } } else { if (yych <= 'a') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy422; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy421; } else { - if (yych == 'u') goto yy421; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych == 'u') goto yy420; + if (yych <= 'z') goto yy145; + goto yy3; } } -yy36: - YYDEBUG(36, *YYCURSOR); +yy35: + YYDEBUG(35, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'A') goto yy413; - if (yych <= 'T') goto yy141; - goto yy412; + if (yych <= 'A') goto yy412; + if (yych <= 'T') goto yy140; + goto yy411; } } else { if (yych <= 'a') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy413; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy412; } else { - if (yych == 'u') goto yy412; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych == 'u') goto yy411; + if (yych <= 'z') goto yy140; + goto yy3; } } -yy37: - YYDEBUG(37, *YYCURSOR); +yy36: + YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'F') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy141; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy140; } else { if (yych <= 'O') { - if (yych <= 'G') goto yy391; - goto yy141; + if (yych <= 'G') goto yy390; + goto yy140; } else { - if (yych <= 'P') goto yy390; - if (yych <= 'T') goto yy141; - goto yy389; + if (yych <= 'P') goto yy389; + if (yych <= 'T') goto yy140; + goto yy388; } } } else { if (yych <= 'o') { if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if (yych == 'g') goto yy403; - goto yy146; + if (yych == 'g') goto yy402; + goto yy145; } } else { if (yych <= 't') { - if (yych <= 'p') goto yy402; - goto yy146; + if (yych <= 'p') goto yy401; + goto yy145; } else { - if (yych <= 'u') goto yy401; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= 'u') goto yy400; + if (yych <= 'z') goto yy145; + goto yy3; } } } -yy38: - YYDEBUG(38, *YYCURSOR); +yy37: + YYDEBUG(37, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'F') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy141; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy140; } else { if (yych <= 'O') { - if (yych <= 'G') goto yy391; - goto yy141; + if (yych <= 'G') goto yy390; + goto yy140; } else { - if (yych <= 'P') goto yy390; - if (yych <= 'T') goto yy141; - goto yy389; + if (yych <= 'P') goto yy389; + if (yych <= 'T') goto yy140; + goto yy388; } } } else { if (yych <= 'o') { if (yych <= '`') { - if (yych <= 'Z') goto yy141; - goto yy4; + if (yych <= 'Z') goto yy140; + goto yy3; } else { - if (yych == 'g') goto yy391; - goto yy141; + if (yych == 'g') goto yy390; + goto yy140; } } else { if (yych <= 't') { - if (yych <= 'p') goto yy390; - goto yy141; + if (yych <= 'p') goto yy389; + goto yy140; } else { - if (yych <= 'u') goto yy389; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= 'u') goto yy388; + if (yych <= 'z') goto yy140; + goto yy3; } } } +yy38: + YYDEBUG(38, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'C') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy139; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy140; + goto yy378; + } + } else { + if (yych <= 'b') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy145; + } else { + if (yych <= 'c') goto yy383; + if (yych <= 'z') goto yy145; + goto yy3; + } + } yy39: YYDEBUG(39, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'C') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'B') goto yy141; - goto yy379; + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy140; + goto yy378; } } else { if (yych <= 'b') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy146; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if (yych <= 'c') goto yy384; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= 'c') goto yy378; + if (yych <= 'z') goto yy140; + goto yy3; } } yy40: YYDEBUG(40, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'C') { + if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'B') goto yy141; - goto yy379; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; + goto yy191; } } else { - if (yych <= 'b') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy141; + if (yych <= 'd') { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy145; } else { - if (yych <= 'c') goto yy379; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= 'e') goto yy369; + if (yych <= 'z') goto yy145; + goto yy3; } } yy41: @@ -2242,22 +2246,22 @@ yy41: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; - goto yy192; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; + goto yy191; } } else { if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy146; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if (yych <= 'e') goto yy370; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= 'e') goto yy191; + if (yych <= 'z') goto yy140; + goto yy3; } } yy42: @@ -2265,22 +2269,22 @@ yy42: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; - goto yy192; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; + goto yy164; } } else { if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy141; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy145; } else { - if (yych <= 'e') goto yy192; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= 'e') goto yy178; + if (yych <= 'z') goto yy145; + goto yy3; } } yy43: @@ -2288,190 +2292,167 @@ yy43: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; - goto yy165; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy140; + goto yy164; } } else { if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy146; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + goto yy140; } else { - if (yych <= 'e') goto yy179; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= 'e') goto yy164; + if (yych <= 'z') goto yy140; + goto yy3; } } yy44: YYDEBUG(44, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy141; - goto yy165; - } + if (yych <= 'L') { + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy140; } else { - if (yych <= 'd') { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - goto yy141; + if (yych <= 'Z') { + if (yych <= 'M') goto yy156; + goto yy140; } else { - if (yych <= 'e') goto yy165; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy145; + goto yy3; } } yy45: YYDEBUG(45, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy141; - } else { - if (yych <= 'Z') { - if (yych <= 'M') goto yy157; - goto yy141; - } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy146; - goto yy4; - } - } + if (yych <= '@') goto yy12; + if (yych <= 'Z') goto yy155; + if (yych <= '`') goto yy12; + if (yych <= 'z') goto yy155; + goto yy12; yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '@') goto yy13; - if (yych <= 'Z') goto yy156; - if (yych <= '`') goto yy13; - if (yych <= 'z') goto yy156; - goto yy13; + if (yych <= '@') { + if (yych == ')') goto yy139; + goto yy3; + } else { + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy145; + goto yy3; + } yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy146; - goto yy4; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy140; + goto yy3; } yy48: YYDEBUG(48, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy141; - goto yy4; - } -yy49: - YYDEBUG(49, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 4) { - goto yy58; + goto yy57; } - if (yych <= '/') goto yy50; - if (yych <= '9') goto yy55; -yy50: - YYDEBUG(50, *YYCURSOR); + if (yych <= '/') goto yy49; + if (yych <= '9') goto yy54; +yy49: + YYDEBUG(49, *YYCURSOR); #line 1730 "ext/date/lib/parse_date.re" { goto std; } -#line 2397 "ext/date/lib/parse_date.c" +#line 2378 "ext/date/lib/parse_date.c" +yy50: + YYDEBUG(50, *YYCURSOR); + yych = *++YYCURSOR; + goto yy49; yy51: YYDEBUG(51, *YYCURSOR); - yych = *++YYCURSOR; - goto yy50; -yy52: - YYDEBUG(52, *YYCURSOR); ++YYCURSOR; - YYDEBUG(53, *YYCURSOR); + YYDEBUG(52, *YYCURSOR); #line 1735 "ext/date/lib/parse_date.re" { s->pos = cursor; s->line++; goto std; } -#line 2411 "ext/date/lib/parse_date.c" +#line 2392 "ext/date/lib/parse_date.c" +yy53: + YYDEBUG(53, *YYCURSOR); + yych = *++YYCURSOR; + goto yy12; yy54: YYDEBUG(54, *YYCURSOR); - yych = *++YYCURSOR; - goto yy13; -yy55: - YYDEBUG(55, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; - YYDEBUG(56, *YYCURSOR); + YYDEBUG(55, *YYCURSOR); if (yybm[0+yych] & 2) { - goto yy55; + goto yy54; } if (yych <= 'W') { if (yych <= 'F') { if (yych <= ' ') { - if (yych == '\t') goto yy60; - if (yych >= ' ') goto yy60; + if (yych == '\t') goto yy59; + if (yych >= ' ') goto yy59; } else { - if (yych == 'D') goto yy65; - if (yych >= 'F') goto yy66; + if (yych == 'D') goto yy64; + if (yych >= 'F') goto yy65; } } else { if (yych <= 'M') { - if (yych == 'H') goto yy64; - if (yych >= 'M') goto yy63; + if (yych == 'H') goto yy63; + if (yych >= 'M') goto yy62; } else { if (yych <= 'S') { - if (yych >= 'S') goto yy62; + if (yych >= 'S') goto yy61; } else { - if (yych <= 'T') goto yy69; - if (yych >= 'W') goto yy68; + if (yych <= 'T') goto yy68; + if (yych >= 'W') goto yy67; } } } } else { if (yych <= 'l') { if (yych <= 'd') { - if (yych == 'Y') goto yy67; - if (yych >= 'd') goto yy65; + if (yych == 'Y') goto yy66; + if (yych >= 'd') goto yy64; } else { if (yych <= 'f') { - if (yych >= 'f') goto yy66; + if (yych >= 'f') goto yy65; } else { - if (yych == 'h') goto yy64; + if (yych == 'h') goto yy63; } } } else { if (yych <= 't') { - if (yych <= 'm') goto yy63; - if (yych <= 'r') goto yy57; - if (yych <= 's') goto yy62; - goto yy69; + if (yych <= 'm') goto yy62; + if (yych <= 'r') goto yy56; + if (yych <= 's') goto yy61; + goto yy68; } else { if (yych <= 'w') { - if (yych >= 'w') goto yy68; + if (yych >= 'w') goto yy67; } else { - if (yych == 'y') goto yy67; + if (yych == 'y') goto yy66; } } } } -yy57: - YYDEBUG(57, *YYCURSOR); +yy56: + YYDEBUG(56, *YYCURSOR); YYCURSOR = YYMARKER; if (yyaccept <= 16) { if (yyaccept <= 8) { @@ -2479,32 +2460,32 @@ yy57: if (yyaccept <= 2) { if (yyaccept <= 1) { if (yyaccept <= 0) { - goto yy4; + goto yy3; } else { - goto yy13; + goto yy12; } } else { - goto yy50; + goto yy49; } } else { if (yyaccept <= 3) { - goto yy73; + goto yy72; } else { - goto yy167; + goto yy166; } } } else { if (yyaccept <= 6) { if (yyaccept <= 5) { - goto yy194; + goto yy193; } else { - goto yy199; + goto yy198; } } else { if (yyaccept <= 7) { - goto yy223; + goto yy222; } else { - goto yy295; + goto yy294; } } } @@ -2512,29 +2493,29 @@ yy57: if (yyaccept <= 12) { if (yyaccept <= 10) { if (yyaccept <= 9) { - goto yy393; + goto yy392; } else { - goto yy476; + goto yy475; } } else { if (yyaccept <= 11) { - goto yy491; + goto yy490; } else { - goto yy612; + goto yy611; } } } else { if (yyaccept <= 14) { if (yyaccept <= 13) { - goto yy657; + goto yy656; } else { - goto yy667; + goto yy666; } } else { if (yyaccept <= 15) { - goto yy764; + goto yy763; } else { - goto yy784; + goto yy783; } } } @@ -2545,32 +2526,32 @@ yy57: if (yyaccept <= 19) { if (yyaccept <= 18) { if (yyaccept <= 17) { - goto yy815; + goto yy814; } else { - goto yy822; + goto yy821; } } else { - goto yy849; + goto yy848; } } else { if (yyaccept <= 20) { - goto yy794; + goto yy793; } else { - goto yy455; + goto yy454; } } } else { if (yyaccept <= 23) { if (yyaccept <= 22) { - goto yy974; + goto yy973; } else { - goto yy843; + goto yy842; } } else { if (yyaccept <= 24) { - goto yy1068; + goto yy1067; } else { - goto yy1076; + goto yy1075; } } } @@ -2578,13 +2559,13 @@ yy57: if (yyaccept <= 29) { if (yyaccept <= 27) { if (yyaccept <= 26) { - goto yy1118; + goto yy1117; } else { - goto yy1142; + goto yy1141; } } else { if (yyaccept <= 28) { - goto yy1295; + goto yy1294; } else { goto yy1417; } @@ -2606,194 +2587,194 @@ yy57: } } } -yy58: - YYDEBUG(58, *YYCURSOR); +yy57: + YYDEBUG(57, *YYCURSOR); ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - YYDEBUG(59, *YYCURSOR); + YYDEBUG(58, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy58; + goto yy57; } - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy55; - goto yy57; -yy60: - YYDEBUG(60, *YYCURSOR); + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy54; + goto yy56; +yy59: + YYDEBUG(59, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; -yy61: - YYDEBUG(61, *YYCURSOR); +yy60: + YYDEBUG(60, *YYCURSOR); if (yych <= 'W') { if (yych <= 'F') { if (yych <= ' ') { - if (yych == '\t') goto yy60; - if (yych <= 0x1F) goto yy57; - goto yy60; + if (yych == '\t') goto yy59; + if (yych <= 0x1F) goto yy56; + goto yy59; } else { - if (yych == 'D') goto yy65; - if (yych <= 'E') goto yy57; - goto yy66; + if (yych == 'D') goto yy64; + if (yych <= 'E') goto yy56; + goto yy65; } } else { if (yych <= 'M') { - if (yych == 'H') goto yy64; - if (yych <= 'L') goto yy57; - goto yy63; + if (yych == 'H') goto yy63; + if (yych <= 'L') goto yy56; + goto yy62; } else { if (yych <= 'S') { - if (yych <= 'R') goto yy57; + if (yych <= 'R') goto yy56; } else { - if (yych <= 'T') goto yy69; - if (yych <= 'V') goto yy57; - goto yy68; + if (yych <= 'T') goto yy68; + if (yych <= 'V') goto yy56; + goto yy67; } } } } else { if (yych <= 'l') { if (yych <= 'd') { - if (yych == 'Y') goto yy67; - if (yych <= 'c') goto yy57; - goto yy65; + if (yych == 'Y') goto yy66; + if (yych <= 'c') goto yy56; + goto yy64; } else { if (yych <= 'f') { - if (yych <= 'e') goto yy57; - goto yy66; + if (yych <= 'e') goto yy56; + goto yy65; } else { - if (yych == 'h') goto yy64; - goto yy57; + if (yych == 'h') goto yy63; + goto yy56; } } } else { if (yych <= 't') { - if (yych <= 'm') goto yy63; - if (yych <= 'r') goto yy57; - if (yych >= 't') goto yy69; + if (yych <= 'm') goto yy62; + if (yych <= 'r') goto yy56; + if (yych >= 't') goto yy68; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy57; - goto yy68; + if (yych <= 'v') goto yy56; + goto yy67; } else { - if (yych == 'y') goto yy67; - goto yy57; + if (yych == 'y') goto yy66; + goto yy56; } } } } -yy62: - YYDEBUG(62, *YYCURSOR); +yy61: + YYDEBUG(61, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'D') { - if (yych == 'A') goto yy127; - goto yy57; + if (yych == 'A') goto yy126; + goto yy56; } else { - if (yych <= 'E') goto yy128; - if (yych <= 'T') goto yy57; - goto yy126; + if (yych <= 'E') goto yy127; + if (yych <= 'T') goto yy56; + goto yy125; } } else { if (yych <= 'd') { - if (yych == 'a') goto yy127; - goto yy57; + if (yych == 'a') goto yy126; + goto yy56; } else { - if (yych <= 'e') goto yy128; - if (yych == 'u') goto yy126; - goto yy57; + if (yych <= 'e') goto yy127; + if (yych == 'u') goto yy125; + goto yy56; } } -yy63: - YYDEBUG(63, *YYCURSOR); +yy62: + YYDEBUG(62, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy118; - if (yych <= 'N') goto yy57; - goto yy117; + if (yych == 'I') goto yy117; + if (yych <= 'N') goto yy56; + goto yy116; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy57; - goto yy118; + if (yych <= 'h') goto yy56; + goto yy117; } else { - if (yych == 'o') goto yy117; - goto yy57; + if (yych == 'o') goto yy116; + goto yy56; } } +yy63: + YYDEBUG(63, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy114; + if (yych == 'o') goto yy114; + goto yy56; yy64: YYDEBUG(64, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy115; - if (yych == 'o') goto yy115; - goto yy57; + if (yych == 'A') goto yy113; + if (yych == 'a') goto yy113; + goto yy56; yy65: YYDEBUG(65, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy114; - if (yych == 'a') goto yy114; - goto yy57; -yy66: - YYDEBUG(66, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'R') { - if (yych == 'O') goto yy99; - if (yych <= 'Q') goto yy57; - goto yy98; + if (yych == 'O') goto yy98; + if (yych <= 'Q') goto yy56; + goto yy97; } else { if (yych <= 'o') { - if (yych <= 'n') goto yy57; - goto yy99; + if (yych <= 'n') goto yy56; + goto yy98; } else { - if (yych == 'r') goto yy98; - goto yy57; + if (yych == 'r') goto yy97; + goto yy56; } } +yy66: + YYDEBUG(66, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy94; + if (yych == 'e') goto yy94; + goto yy56; yy67: YYDEBUG(67, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy95; - if (yych == 'e') goto yy95; - goto yy57; + if (yych == 'E') goto yy82; + if (yych == 'e') goto yy82; + goto yy56; yy68: YYDEBUG(68, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy83; - if (yych == 'e') goto yy83; - goto yy57; -yy69: - YYDEBUG(69, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'H') goto yy70; - if (yych <= 'T') goto yy57; - goto yy71; + if (yych == 'H') goto yy69; + if (yych <= 'T') goto yy56; + goto yy70; } else { if (yych <= 'h') { - if (yych <= 'g') goto yy57; + if (yych <= 'g') goto yy56; } else { - if (yych == 'u') goto yy71; - goto yy57; + if (yych == 'u') goto yy70; + goto yy56; } } +yy69: + YYDEBUG(69, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy77; + if (yych == 'u') goto yy77; + goto yy56; yy70: YYDEBUG(70, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy78; - if (yych == 'u') goto yy78; - goto yy57; + if (yych == 'E') goto yy71; + if (yych != 'e') goto yy56; yy71: YYDEBUG(71, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy72; - if (yych != 'e') goto yy57; -yy72: - YYDEBUG(72, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'S') goto yy74; - if (yych == 's') goto yy74; -yy73: - YYDEBUG(73, *YYCURSOR); + if (yych == 'S') goto yy73; + if (yych == 's') goto yy73; +yy72: + YYDEBUG(72, *YYCURSOR); #line 1714 "ext/date/lib/parse_date.re" { timelib_ull i; @@ -2809,768 +2790,768 @@ yy73: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 2813 "ext/date/lib/parse_date.c" +#line 2794 "ext/date/lib/parse_date.c" +yy73: + YYDEBUG(73, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy74; + if (yych != 'd') goto yy56; yy74: YYDEBUG(74, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy75; - if (yych != 'd') goto yy57; + if (yych == 'A') goto yy75; + if (yych != 'a') goto yy56; yy75: YYDEBUG(75, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy76; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy76; + if (yych != 'y') goto yy56; yy76: YYDEBUG(76, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych != 'y') goto yy57; + goto yy72; yy77: YYDEBUG(77, *YYCURSOR); - yych = *++YYCURSOR; - goto yy73; -yy78: - YYDEBUG(78, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'R') goto yy79; - if (yych != 'r') goto yy73; + if (yych == 'R') goto yy78; + if (yych != 'r') goto yy72; +yy78: + YYDEBUG(78, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy79; + if (yych != 's') goto yy56; yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy80; - if (yych != 's') goto yy57; + if (yych == 'D') goto yy80; + if (yych != 'd') goto yy56; yy80: YYDEBUG(80, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy81; - if (yych != 'd') goto yy57; + if (yych == 'A') goto yy81; + if (yych != 'a') goto yy56; yy81: YYDEBUG(81, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy82; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy76; + if (yych == 'y') goto yy76; + goto yy56; yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych == 'y') goto yy77; - goto yy57; -yy83: - YYDEBUG(83, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'E') { - if (yych <= 'C') goto yy57; - if (yych <= 'D') goto yy85; + if (yych <= 'C') goto yy56; + if (yych <= 'D') goto yy84; } else { - if (yych <= 'c') goto yy57; - if (yych <= 'd') goto yy85; - if (yych >= 'f') goto yy57; + if (yych <= 'c') goto yy56; + if (yych <= 'd') goto yy84; + if (yych >= 'f') goto yy56; } - YYDEBUG(84, *YYCURSOR); + YYDEBUG(83, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy91; - if (yych == 'k') goto yy91; - goto yy57; -yy85: - YYDEBUG(85, *YYCURSOR); + if (yych == 'K') goto yy90; + if (yych == 'k') goto yy90; + goto yy56; +yy84: + YYDEBUG(84, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'N') goto yy86; - if (yych != 'n') goto yy73; + if (yych == 'N') goto yy85; + if (yych != 'n') goto yy72; +yy85: + YYDEBUG(85, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy86; + if (yych != 'e') goto yy56; yy86: YYDEBUG(86, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy87; - if (yych != 'e') goto yy57; + if (yych == 'S') goto yy87; + if (yych != 's') goto yy56; yy87: YYDEBUG(87, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy88; - if (yych != 's') goto yy57; + if (yych == 'D') goto yy88; + if (yych != 'd') goto yy56; yy88: YYDEBUG(88, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy89; - if (yych != 'd') goto yy57; + if (yych == 'A') goto yy89; + if (yych != 'a') goto yy56; yy89: YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy90; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy76; + if (yych == 'y') goto yy76; + goto yy56; yy90: YYDEBUG(90, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych == 'y') goto yy77; - goto yy57; -yy91: - YYDEBUG(91, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { - if (yych == 'D') goto yy92; - if (yych <= 'R') goto yy73; - goto yy77; + if (yych == 'D') goto yy91; + if (yych <= 'R') goto yy72; + goto yy76; } else { if (yych <= 'd') { - if (yych <= 'c') goto yy73; + if (yych <= 'c') goto yy72; } else { - if (yych == 's') goto yy77; - goto yy73; + if (yych == 's') goto yy76; + goto yy72; } } +yy91: + YYDEBUG(91, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy92; + if (yych != 'a') goto yy56; yy92: YYDEBUG(92, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy93; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy93; + if (yych != 'y') goto yy56; yy93: YYDEBUG(93, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy94; - if (yych != 'y') goto yy57; + if (yych == 'S') goto yy76; + if (yych == 's') goto yy76; + goto yy72; yy94: YYDEBUG(94, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy77; - if (yych == 's') goto yy77; - goto yy73; + if (yych == 'A') goto yy95; + if (yych != 'a') goto yy56; yy95: YYDEBUG(95, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy96; - if (yych != 'a') goto yy57; + if (yych == 'R') goto yy96; + if (yych != 'r') goto yy56; yy96: YYDEBUG(96, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy97; - if (yych != 'r') goto yy57; + if (yych == 'S') goto yy76; + if (yych == 's') goto yy76; + goto yy72; yy97: YYDEBUG(97, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy77; - if (yych == 's') goto yy77; - goto yy73; + if (yych == 'I') goto yy110; + if (yych == 'i') goto yy110; + goto yy56; yy98: YYDEBUG(98, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy111; - if (yych == 'i') goto yy111; - goto yy57; + if (yych == 'R') goto yy99; + if (yych != 'r') goto yy56; yy99: YYDEBUG(99, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy100; - if (yych != 'r') goto yy57; + if (yych == 'T') goto yy100; + if (yych != 't') goto yy56; yy100: YYDEBUG(100, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy101; - if (yych != 't') goto yy57; -yy101: - YYDEBUG(101, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'H') goto yy103; - if (yych <= 'M') goto yy57; + if (yych == 'H') goto yy102; + if (yych <= 'M') goto yy56; } else { if (yych <= 'h') { - if (yych <= 'g') goto yy57; - goto yy103; + if (yych <= 'g') goto yy56; + goto yy102; } else { - if (yych != 'n') goto yy57; + if (yych != 'n') goto yy56; } } + YYDEBUG(101, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy107; + if (yych == 'i') goto yy107; + goto yy56; +yy102: YYDEBUG(102, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy108; - if (yych == 'i') goto yy108; - goto yy57; + if (yych == 'N') goto yy103; + if (yych != 'n') goto yy56; yy103: YYDEBUG(103, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy104; - if (yych != 'n') goto yy57; + if (yych == 'I') goto yy104; + if (yych != 'i') goto yy56; yy104: YYDEBUG(104, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy105; - if (yych != 'i') goto yy57; + if (yych == 'G') goto yy105; + if (yych != 'g') goto yy56; yy105: YYDEBUG(105, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy106; - if (yych != 'g') goto yy57; + if (yych == 'H') goto yy106; + if (yych != 'h') goto yy56; yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy107; - if (yych != 'h') goto yy57; + if (yych == 'T') goto yy96; + if (yych == 't') goto yy96; + goto yy56; yy107: YYDEBUG(107, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy97; - if (yych == 't') goto yy97; - goto yy57; + if (yych == 'G') goto yy108; + if (yych != 'g') goto yy56; yy108: YYDEBUG(108, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy109; - if (yych != 'g') goto yy57; + if (yych == 'H') goto yy109; + if (yych != 'h') goto yy56; yy109: YYDEBUG(109, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy110; - if (yych != 'h') goto yy57; + if (yych == 'T') goto yy96; + if (yych == 't') goto yy96; + goto yy56; yy110: YYDEBUG(110, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy97; - if (yych == 't') goto yy97; - goto yy57; -yy111: - YYDEBUG(111, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'D') goto yy112; - if (yych != 'd') goto yy73; + if (yych == 'D') goto yy111; + if (yych != 'd') goto yy72; +yy111: + YYDEBUG(111, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy112; + if (yych != 'a') goto yy56; yy112: YYDEBUG(112, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy113; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy76; + if (yych == 'y') goto yy76; + goto yy56; yy113: YYDEBUG(113, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych == 'y') goto yy77; - goto yy57; + if (yych == 'Y') goto yy96; + if (yych == 'y') goto yy96; + goto yy56; yy114: YYDEBUG(114, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy97; - if (yych == 'y') goto yy97; - goto yy57; + if (yych == 'U') goto yy115; + if (yych != 'u') goto yy56; yy115: YYDEBUG(115, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy116; - if (yych != 'u') goto yy57; + if (yych == 'R') goto yy96; + if (yych == 'r') goto yy96; + goto yy56; yy116: YYDEBUG(116, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy97; - if (yych == 'r') goto yy97; - goto yy57; + if (yych == 'N') goto yy121; + if (yych == 'n') goto yy121; + goto yy56; yy117: YYDEBUG(117, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy122; - if (yych == 'n') goto yy122; - goto yy57; + if (yych == 'N') goto yy118; + if (yych != 'n') goto yy56; yy118: YYDEBUG(118, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy119; - if (yych != 'n') goto yy57; -yy119: - YYDEBUG(119, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'U') { - if (yych == 'S') goto yy77; - if (yych <= 'T') goto yy73; + if (yych == 'S') goto yy76; + if (yych <= 'T') goto yy72; } else { if (yych <= 's') { - if (yych <= 'r') goto yy73; - goto yy77; + if (yych <= 'r') goto yy72; + goto yy76; } else { - if (yych != 'u') goto yy73; + if (yych != 'u') goto yy72; } } + YYDEBUG(119, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy120; + if (yych != 't') goto yy56; +yy120: YYDEBUG(120, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy121; - if (yych != 't') goto yy57; + if (yych == 'E') goto yy96; + if (yych == 'e') goto yy96; + goto yy56; yy121: YYDEBUG(121, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy97; - if (yych == 'e') goto yy97; - goto yy57; -yy122: - YYDEBUG(122, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { - if (yych == 'D') goto yy123; - if (yych <= 'S') goto yy73; - goto yy124; + if (yych == 'D') goto yy122; + if (yych <= 'S') goto yy72; + goto yy123; } else { if (yych <= 'd') { - if (yych <= 'c') goto yy73; + if (yych <= 'c') goto yy72; } else { - if (yych == 't') goto yy124; - goto yy73; + if (yych == 't') goto yy123; + goto yy72; } } +yy122: + YYDEBUG(122, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy124; + if (yych == 'a') goto yy124; + goto yy56; yy123: YYDEBUG(123, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy125; - if (yych == 'a') goto yy125; - goto yy57; + if (yych == 'H') goto yy96; + if (yych == 'h') goto yy96; + goto yy56; yy124: YYDEBUG(124, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy97; - if (yych == 'h') goto yy97; - goto yy57; + if (yych == 'Y') goto yy76; + if (yych == 'y') goto yy76; + goto yy56; yy125: YYDEBUG(125, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych == 'y') goto yy77; - goto yy57; + if (yych == 'N') goto yy136; + if (yych == 'n') goto yy136; + goto yy56; yy126: YYDEBUG(126, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy137; - if (yych == 'n') goto yy137; - goto yy57; + if (yych == 'T') goto yy131; + if (yych == 't') goto yy131; + goto yy56; yy127: YYDEBUG(127, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy132; - if (yych == 't') goto yy132; - goto yy57; + if (yych == 'C') goto yy128; + if (yych != 'c') goto yy56; yy128: YYDEBUG(128, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy129; - if (yych != 'c') goto yy57; -yy129: - YYDEBUG(129, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { - if (yych == 'O') goto yy130; - if (yych <= 'R') goto yy73; - goto yy77; + if (yych == 'O') goto yy129; + if (yych <= 'R') goto yy72; + goto yy76; } else { if (yych <= 'o') { - if (yych <= 'n') goto yy73; + if (yych <= 'n') goto yy72; } else { - if (yych == 's') goto yy77; - goto yy73; + if (yych == 's') goto yy76; + goto yy72; } } +yy129: + YYDEBUG(129, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy130; + if (yych != 'n') goto yy56; yy130: YYDEBUG(130, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy131; - if (yych != 'n') goto yy57; + if (yych == 'D') goto yy96; + if (yych == 'd') goto yy96; + goto yy56; yy131: YYDEBUG(131, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy97; - if (yych == 'd') goto yy97; - goto yy57; -yy132: - YYDEBUG(132, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'U') goto yy133; - if (yych != 'u') goto yy73; + if (yych == 'U') goto yy132; + if (yych != 'u') goto yy72; +yy132: + YYDEBUG(132, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy133; + if (yych != 'r') goto yy56; yy133: YYDEBUG(133, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy134; - if (yych != 'r') goto yy57; + if (yych == 'D') goto yy134; + if (yych != 'd') goto yy56; yy134: YYDEBUG(134, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy135; - if (yych != 'd') goto yy57; + if (yych == 'A') goto yy135; + if (yych != 'a') goto yy56; yy135: YYDEBUG(135, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy136; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy76; + if (yych == 'y') goto yy76; + goto yy56; yy136: YYDEBUG(136, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych == 'y') goto yy77; - goto yy57; -yy137: - YYDEBUG(137, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'D') goto yy138; - if (yych != 'd') goto yy73; + if (yych == 'D') goto yy137; + if (yych != 'd') goto yy72; +yy137: + YYDEBUG(137, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy138; + if (yych != 'a') goto yy56; yy138: YYDEBUG(138, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy139; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy76; + if (yych == 'y') goto yy76; + goto yy56; yy139: YYDEBUG(139, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy77; - if (yych == 'y') goto yy77; - goto yy57; + goto yy3; yy140: YYDEBUG(140, *YYCURSOR); yych = *++YYCURSOR; - goto yy4; + if (yych <= '@') { + if (yych == ')') goto yy139; + goto yy3; + } else { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; + } yy141: YYDEBUG(141, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } yy142: YYDEBUG(142, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } yy143: YYDEBUG(143, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } yy144: YYDEBUG(144, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; - } else { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; - } + if (yych == ')') goto yy139; + goto yy3; yy145: YYDEBUG(145, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == ')') goto yy140; - goto yy4; -yy146: - YYDEBUG(146, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - goto yy148; + if (yych == '.') goto yy3; + goto yy147; } } else { if (yych <= '^') { - if (yych <= '@') goto yy4; - if (yych <= 'Z') goto yy142; - goto yy4; + if (yych <= '@') goto yy3; + if (yych <= 'Z') goto yy141; + goto yy3; } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } } -yy147: - YYDEBUG(147, *YYCURSOR); +yy146: + YYDEBUG(146, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; + if (yych == '.') goto yy3; } } else { if (yych <= '^') { - if (yych <= '@') goto yy4; - if (yych <= 'Z') goto yy143; - goto yy4; + if (yych <= '@') goto yy3; + if (yych <= 'Z') goto yy142; + goto yy3; } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy150; + goto yy3; } } -yy148: - YYDEBUG(148, *YYCURSOR); +yy147: + YYDEBUG(147, *YYCURSOR); ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 8) { - goto yy149; + goto yy148; } - goto yy57; -yy149: - YYDEBUG(149, *YYCURSOR); + goto yy56; +yy148: + YYDEBUG(148, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - YYDEBUG(150, *YYCURSOR); + YYDEBUG(149, *YYCURSOR); if (yybm[0+yych] & 8) { - goto yy149; + goto yy148; } if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy4; + if (yych == '-') goto yy147; + goto yy3; } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= '/') goto yy147; + if (yych == '_') goto yy147; + goto yy3; } -yy151: - YYDEBUG(151, *YYCURSOR); +yy150: + YYDEBUG(150, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - goto yy148; + if (yych == '.') goto yy3; + goto yy147; } } else { if (yych <= '^') { - if (yych <= '@') goto yy4; - if (yych <= 'Z') goto yy144; - goto yy4; + if (yych <= '@') goto yy3; + if (yych <= 'Z') goto yy143; + goto yy3; } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } } -yy152: - YYDEBUG(152, *YYCURSOR); +yy151: + YYDEBUG(151, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - goto yy148; + if (yych == '.') goto yy3; + goto yy147; } } else { if (yych <= '^') { - if (yych <= '@') goto yy4; - if (yych <= 'Z') goto yy145; - goto yy4; + if (yych <= '@') goto yy3; + if (yych <= 'Z') goto yy144; + goto yy3; } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - if (yych >= '{') goto yy4; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy3; + if (yych >= '{') goto yy3; } } -yy153: - YYDEBUG(153, *YYCURSOR); +yy152: + YYDEBUG(152, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { - goto yy154; + goto yy153; } if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { if (yych <= '/') { - if (yych <= '.') goto yy4; - goto yy148; + if (yych <= '.') goto yy3; + goto yy147; } else { - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } } -yy154: - YYDEBUG(154, *YYCURSOR); +yy153: + YYDEBUG(153, *YYCURSOR); ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy155: - YYDEBUG(155, *YYCURSOR); +yy154: + YYDEBUG(154, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy154; + goto yy153; } if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy57; + if (yych == '-') goto yy147; + goto yy56; } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; - goto yy57; + if (yych <= '/') goto yy147; + if (yych == '_') goto yy147; + goto yy56; } -yy156: - YYDEBUG(156, *YYCURSOR); +yy155: + YYDEBUG(155, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'Z') goto yy141; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy141; - goto yy4; + if (yych <= 'Z') goto yy140; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy140; + goto yy3; } -yy157: - YYDEBUG(157, *YYCURSOR); +yy156: + YYDEBUG(156, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy141; } else { if (yych <= 'Z') { - if (yych >= 'U') goto yy142; + if (yych >= 'U') goto yy141; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy141; + goto yy3; } } - YYDEBUG(158, *YYCURSOR); + YYDEBUG(157, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych != '+') goto yy4; + if (yych != '+') goto yy3; } } else { if (yych <= 'Z') { - if (yych <= '-') goto yy159; - if (yych <= '@') goto yy4; - goto yy143; + if (yych <= '-') goto yy158; + if (yych <= '@') goto yy3; + goto yy142; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy142; + goto yy3; } } +yy158: + YYDEBUG(158, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '1') goto yy159; + if (yych <= '2') goto yy160; + if (yych <= '9') goto yy161; + goto yy56; yy159: YYDEBUG(159, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy160; - if (yych <= '2') goto yy161; - if (yych <= '9') goto yy162; - goto yy57; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy161; + if (yych <= ':') goto yy162; + goto yy3; yy160: YYDEBUG(160, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy162; - if (yych <= ':') goto yy163; - goto yy4; -yy161: - YYDEBUG(161, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= '5') { - if (yych <= '/') goto yy4; - if (yych >= '5') goto yy164; + if (yych <= '/') goto yy3; + if (yych >= '5') goto yy163; } else { - if (yych <= '9') goto yy140; - if (yych <= ':') goto yy163; - goto yy4; + if (yych <= '9') goto yy139; + if (yych <= ':') goto yy162; + goto yy3; } +yy161: + YYDEBUG(161, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy3; + if (yych <= '5') goto yy163; + if (yych <= '9') goto yy139; + if (yych >= ';') goto yy3; yy162: YYDEBUG(162, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy4; - if (yych <= '5') goto yy164; - if (yych <= '9') goto yy140; - if (yych >= ';') goto yy4; + if (yych <= '/') goto yy3; + if (yych <= '5') goto yy163; + if (yych <= '9') goto yy139; + goto yy3; yy163: YYDEBUG(163, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy4; - if (yych <= '5') goto yy164; - if (yych <= '9') goto yy140; - goto yy4; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy139; + goto yy3; yy164: YYDEBUG(164, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy140; - goto yy4; -yy165: - YYDEBUG(165, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'C') goto yy142; - if (yych >= 'E') goto yy168; + if (yych <= 'C') goto yy141; + if (yych >= 'E') goto yy167; } } else { if (yych <= 'c') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 'd') goto yy166; - if (yych <= 'e') goto yy168; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'd') goto yy165; + if (yych <= 'e') goto yy167; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy166: - YYDEBUG(166, *YYCURSOR); +yy165: + YYDEBUG(165, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= 'N') { if (yych <= ')') { - if (yych >= ')') goto yy140; + if (yych >= ')') goto yy139; } else { - if (yych <= '@') goto yy167; - if (yych <= 'M') goto yy143; - goto yy174; + if (yych <= '@') goto yy166; + if (yych <= 'M') goto yy142; + goto yy173; } } else { if (yych <= 'm') { - if (yych <= 'Z') goto yy143; - if (yych >= 'a') goto yy143; + if (yych <= 'Z') goto yy142; + if (yych >= 'a') goto yy142; } else { - if (yych <= 'n') goto yy174; - if (yych <= 'z') goto yy143; + if (yych <= 'n') goto yy173; + if (yych <= 'z') goto yy142; } } -yy167: - YYDEBUG(167, *YYCURSOR); +yy166: + YYDEBUG(166, *YYCURSOR); #line 1577 "ext/date/lib/parse_date.re" { const timelib_relunit* relunit; @@ -3588,526 +3569,526 @@ yy167: TIMELIB_DEINIT; return TIMELIB_WEEKDAY; } -#line 3592 "ext/date/lib/parse_date.c" -yy168: - YYDEBUG(168, *YYCURSOR); +#line 3573 "ext/date/lib/parse_date.c" +yy167: + YYDEBUG(167, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'K') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'J') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'J') goto yy142; } } else { if (yych <= 'j') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { - if (yych <= 'k') goto yy169; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'k') goto yy168; + if (yych <= 'z') goto yy142; + goto yy3; } } -yy169: - YYDEBUG(169, *YYCURSOR); +yy168: + YYDEBUG(168, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy143; } } else { if (yych <= 'c') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'd') goto yy170; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'd') goto yy169; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy170: - YYDEBUG(170, *YYCURSOR); +yy169: + YYDEBUG(169, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; } else { if (yych <= '`') { - if (yych <= 'Z') goto yy145; - goto yy4; + if (yych <= 'Z') goto yy144; + goto yy3; } else { - if (yych <= 'a') goto yy171; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'a') goto yy170; + if (yych <= 'z') goto yy144; + goto yy3; } } -yy171: - YYDEBUG(171, *YYCURSOR); +yy170: + YYDEBUG(170, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'X') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'Y') goto yy172; - if (yych != 'y') goto yy4; + if (yych <= 'Y') goto yy171; + if (yych != 'y') goto yy3; } +yy171: + YYDEBUG(171, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy172; + if (yych != 's') goto yy166; yy172: YYDEBUG(172, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy173; - if (yych != 's') goto yy167; + goto yy166; yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; - goto yy167; -yy174: - YYDEBUG(174, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy143; } } else { if (yych <= 'd') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'e') goto yy175; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'e') goto yy174; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy175: - YYDEBUG(175, *YYCURSOR); +yy174: + YYDEBUG(174, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'R') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy144; } } else { if (yych <= 'r') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 's') goto yy176; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 's') goto yy175; + if (yych <= 'z') goto yy144; + goto yy3; } } -yy176: - YYDEBUG(176, *YYCURSOR); +yy175: + YYDEBUG(175, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'D') goto yy177; - if (yych != 'd') goto yy4; + if (yych <= 'D') goto yy176; + if (yych != 'd') goto yy3; } +yy176: + YYDEBUG(176, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy177; + if (yych != 'a') goto yy56; yy177: YYDEBUG(177, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy178; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy172; + if (yych == 'y') goto yy172; + goto yy56; yy178: YYDEBUG(178, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy173; - if (yych == 'y') goto yy173; - goto yy57; -yy179: - YYDEBUG(179, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { if (yych <= '/') { - if (yych <= '.') goto yy4; - goto yy148; + if (yych <= '.') goto yy3; + goto yy147; } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy142; - goto yy166; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; + goto yy165; } } } else { if (yych <= '`') { if (yych <= 'Z') { - if (yych <= 'E') goto yy168; - goto yy142; + if (yych <= 'E') goto yy167; + goto yy141; } else { - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } } else { if (yych <= 'd') { - if (yych <= 'c') goto yy147; + if (yych <= 'c') goto yy146; } else { - if (yych <= 'e') goto yy181; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'e') goto yy180; + if (yych <= 'z') goto yy146; + goto yy3; } } } - YYDEBUG(180, *YYCURSOR); + YYDEBUG(179, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy166; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy166; + goto yy142; } } else { if (yych <= '_') { - if (yych <= 'N') goto yy174; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; + if (yych <= 'N') goto yy173; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy166; + goto yy147; } else { if (yych <= 'm') { - if (yych <= '`') goto yy167; - goto yy151; + if (yych <= '`') goto yy166; + goto yy150; } else { - if (yych <= 'n') goto yy187; - if (yych <= 'z') goto yy151; - goto yy167; + if (yych <= 'n') goto yy186; + if (yych <= 'z') goto yy150; + goto yy166; } } } -yy181: - YYDEBUG(181, *YYCURSOR); +yy180: + YYDEBUG(180, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'J') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { - if (yych <= 'K') goto yy169; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'K') goto yy168; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'j') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { - if (yych <= 'k') goto yy182; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'k') goto yy181; + if (yych <= 'z') goto yy150; + goto yy3; } } } -yy182: - YYDEBUG(182, *YYCURSOR); +yy181: + YYDEBUG(181, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'D') goto yy170; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'D') goto yy169; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'd') goto yy183; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'd') goto yy182; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy183: - YYDEBUG(183, *YYCURSOR); +yy182: + YYDEBUG(182, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '_') { - if (yych <= 'A') goto yy171; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'A') goto yy170; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy184; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy183; + if (yych <= 'z') goto yy152; + goto yy3; } } -yy184: - YYDEBUG(184, *YYCURSOR); +yy183: + YYDEBUG(183, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { - if (yych <= 'Y') goto yy172; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= 'Y') goto yy171; + if (yych == '_') goto yy147; + goto yy3; } else { - if (yych == 'y') goto yy185; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych == 'y') goto yy184; + if (yych <= 'z') goto yy153; + goto yy3; } } -yy185: - YYDEBUG(185, *YYCURSOR); +yy184: + YYDEBUG(184, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy167; + if (yych == '-') goto yy147; + goto yy166; } else { - if (yych <= '/') goto yy148; - if (yych <= 'R') goto yy167; - goto yy173; + if (yych <= '/') goto yy147; + if (yych <= 'R') goto yy166; + goto yy172; } } else { if (yych <= '`') { - if (yych == '_') goto yy148; - goto yy167; + if (yych == '_') goto yy147; + goto yy166; } else { - if (yych == 's') goto yy186; - if (yych <= 'z') goto yy154; - goto yy167; + if (yych == 's') goto yy185; + if (yych <= 'z') goto yy153; + goto yy166; } } -yy186: - YYDEBUG(186, *YYCURSOR); +yy185: + YYDEBUG(185, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { - goto yy154; + goto yy153; } if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy167; + if (yych == '-') goto yy147; + goto yy166; } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; - goto yy167; + if (yych <= '/') goto yy147; + if (yych == '_') goto yy147; + goto yy166; } -yy187: - YYDEBUG(187, *YYCURSOR); +yy186: + YYDEBUG(186, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'E') goto yy175; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'E') goto yy174; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'e') goto yy188; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'e') goto yy187; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy188: - YYDEBUG(188, *YYCURSOR); +yy187: + YYDEBUG(187, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'S') goto yy176; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'S') goto yy175; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'r') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 's') goto yy189; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 's') goto yy188; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy189: - YYDEBUG(189, *YYCURSOR); +yy188: + YYDEBUG(188, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { - if (yych <= 'D') goto yy177; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= 'D') goto yy176; + if (yych == '_') goto yy147; + goto yy3; } else { - if (yych == 'd') goto yy190; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych == 'd') goto yy189; + if (yych <= 'z') goto yy153; + goto yy3; } } -yy190: +yy189: + YYDEBUG(189, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy177; + if (yych != 'a') goto yy154; YYDEBUG(190, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy178; - if (yych != 'a') goto yy155; + if (yych == 'Y') goto yy172; + if (yych == 'y') goto yy185; + goto yy154; +yy191: YYDEBUG(191, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy173; - if (yych == 'y') goto yy186; - goto yy155; -yy192: - YYDEBUG(192, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'C') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'B') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy141; } } else { if (yych <= 'b') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 'c') goto yy193; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'c') goto yy192; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy193: - YYDEBUG(193, *YYCURSOR); +yy192: + YYDEBUG(192, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych >= '\t') goto yy196; + if (yych >= '\t') goto yy195; } else { - if (yych == ' ') goto yy196; + if (yych == ' ') goto yy195; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; + if (yych <= ')') goto yy139; } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; + if (yych <= '-') goto yy196; + if (yych <= '.') goto yy195; } } } else { if (yych <= 'Z') { if (yych <= '@') { - if (yych <= '9') goto yy196; + if (yych <= '9') goto yy195; } else { - if (yych == 'E') goto yy202; - goto yy143; + if (yych == 'E') goto yy201; + goto yy142; } } else { if (yych <= 'd') { - if (yych >= 'a') goto yy143; + if (yych >= 'a') goto yy142; } else { - if (yych <= 'e') goto yy202; - if (yych <= 'z') goto yy143; + if (yych <= 'e') goto yy201; + if (yych <= 'z') goto yy142; } } } -yy194: - YYDEBUG(194, *YYCURSOR); +yy193: + YYDEBUG(193, *YYCURSOR); #line 1636 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("monthtext"); @@ -4117,57 +4098,57 @@ yy194: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 4121 "ext/date/lib/parse_date.c" -yy195: - YYDEBUG(195, *YYCURSOR); +#line 4102 "ext/date/lib/parse_date.c" +yy194: + YYDEBUG(194, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 21) YYFILL(21); yych = *YYCURSOR; -yy196: - YYDEBUG(196, *YYCURSOR); +yy195: + YYDEBUG(195, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy195; + goto yy194; } - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy198; - if (yych <= '3') goto yy200; - if (yych <= '9') goto yy201; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '2') goto yy197; + if (yych <= '3') goto yy199; + if (yych <= '9') goto yy200; + goto yy56; +yy196: + YYDEBUG(196, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy195; + if (yych <= '0') goto yy356; + if (yych <= '2') goto yy357; + if (yych <= '3') goto yy358; + goto yy195; yy197: YYDEBUG(197, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy196; - if (yych <= '0') goto yy357; - if (yych <= '2') goto yy358; - if (yych <= '3') goto yy359; - goto yy196; -yy198: - YYDEBUG(198, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy298; - goto yy299; + if (yych <= '/') goto yy215; + if (yych <= '0') goto yy297; + goto yy298; } else { - if (yych <= '2') goto yy355; - if (yych <= '9') goto yy356; - goto yy216; + if (yych <= '2') goto yy354; + if (yych <= '9') goto yy355; + goto yy215; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy212; - if (yych <= 'q') goto yy216; - goto yy213; + if (yych <= 'n') goto yy211; + if (yych <= 'q') goto yy215; + goto yy212; } else { - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy199: - YYDEBUG(199, *YYCURSOR); +yy198: + YYDEBUG(198, *YYCURSOR); #line 1382 "ext/date/lib/parse_date.re" { int length = 0; @@ -4181,275 +4162,275 @@ yy199: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 4185 "ext/date/lib/parse_date.c" -yy200: - YYDEBUG(200, *YYCURSOR); +#line 4166 "ext/date/lib/parse_date.c" +yy199: + YYDEBUG(199, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy298; - goto yy299; + if (yych <= '/') goto yy215; + if (yych <= '0') goto yy297; + goto yy298; } else { - if (yych <= '2') goto yy209; - if (yych <= '9') goto yy210; - goto yy216; + if (yych <= '2') goto yy208; + if (yych <= '9') goto yy209; + goto yy215; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy212; - if (yych <= 'q') goto yy216; - goto yy213; + if (yych <= 'n') goto yy211; + if (yych <= 'q') goto yy215; + goto yy212; } else { - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy201: - YYDEBUG(201, *YYCURSOR); +yy200: + YYDEBUG(200, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy207; - goto yy208; + if (yych <= '/') goto yy215; + if (yych <= '0') goto yy206; + goto yy207; } else { - if (yych <= '2') goto yy209; - if (yych <= '9') goto yy210; - goto yy216; + if (yych <= '2') goto yy208; + if (yych <= '9') goto yy209; + goto yy215; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy212; - if (yych <= 'q') goto yy216; - goto yy213; + if (yych <= 'n') goto yy211; + if (yych <= 'q') goto yy215; + goto yy212; } else { - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy202: - YYDEBUG(202, *YYCURSOR); +yy201: + YYDEBUG(201, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'M') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'L') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy143; } } else { if (yych <= 'l') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'm') goto yy203; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'm') goto yy202; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy203: - YYDEBUG(203, *YYCURSOR); +yy202: + YYDEBUG(202, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'B') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'A') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy144; } } else { if (yych <= 'a') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 'b') goto yy204; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'b') goto yy203; + if (yych <= 'z') goto yy144; + goto yy3; } } -yy204: - YYDEBUG(204, *YYCURSOR); +yy203: + YYDEBUG(203, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'E') goto yy205; - if (yych != 'e') goto yy4; + if (yych <= 'E') goto yy204; + if (yych != 'e') goto yy3; } +yy204: + YYDEBUG(204, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy205; + if (yych != 'r') goto yy56; yy205: YYDEBUG(205, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy206; - if (yych != 'r') goto yy57; -yy206: - YYDEBUG(206, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy194; - goto yy196; + if (yych == '\t') goto yy195; + if (yych <= 0x1F) goto yy193; + goto yy195; } else { if (yych <= '.') { - if (yych <= ',') goto yy194; - goto yy196; + if (yych <= ',') goto yy193; + goto yy195; } else { - if (yych <= '/') goto yy194; - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '/') goto yy193; + if (yych <= '9') goto yy195; + goto yy193; } } +yy206: + YYDEBUG(206, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy220; + goto yy56; + } else { + if (yych <= '0') goto yy295; + if (yych <= '9') goto yy296; + if (yych <= ':') goto yy220; + goto yy56; + } yy207: YYDEBUG(207, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy57; + if (yych == '.') goto yy263; + goto yy56; } else { - if (yych <= '0') goto yy296; - if (yych <= '9') goto yy297; - if (yych <= ':') goto yy221; - goto yy57; + if (yych <= '2') goto yy296; + if (yych <= '9') goto yy295; + if (yych <= ':') goto yy263; + goto yy56; } yy208: YYDEBUG(208, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; + if (yych == '.') goto yy263; + goto yy56; } else { - if (yych <= '2') goto yy297; - if (yych <= '9') goto yy296; - if (yych <= ':') goto yy264; - goto yy57; + if (yych <= '4') goto yy295; + if (yych <= '9') goto yy292; + if (yych <= ':') goto yy263; + goto yy56; } yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; + if (yych == '.') goto yy263; + goto yy56; } else { - if (yych <= '4') goto yy296; - if (yych <= '9') goto yy293; - if (yych <= ':') goto yy264; - goto yy57; + if (yych <= '9') goto yy292; + if (yych <= ':') goto yy263; + goto yy56; } yy210: YYDEBUG(210, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; - } else { - if (yych <= '9') goto yy293; - if (yych <= ':') goto yy264; - goto yy57; - } + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + goto yy215; yy211: YYDEBUG(211, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); - goto yy216; + goto yy215; yy212: YYDEBUG(212, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); - goto yy216; + goto yy215; yy213: YYDEBUG(213, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); - goto yy216; + goto yy215; yy214: YYDEBUG(214, *YYCURSOR); yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - goto yy216; -yy215: - YYDEBUG(215, *YYCURSOR); - yyaccept = 6; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 18) YYFILL(18); yych = *YYCURSOR; -yy216: - YYDEBUG(216, *YYCURSOR); +yy215: + YYDEBUG(215, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy215; + goto yy214; } if (yych <= '2') { - if (yych <= '/') goto yy199; - if (yych <= '0') goto yy259; - if (yych <= '1') goto yy260; - goto yy261; + if (yych <= '/') goto yy198; + if (yych <= '0') goto yy258; + if (yych <= '1') goto yy259; + goto yy260; } else { - if (yych <= '9') goto yy262; - if (yych != 'T') goto yy199; + if (yych <= '9') goto yy261; + if (yych != 'T') goto yy198; } + YYDEBUG(216, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '1') goto yy217; + if (yych <= '2') goto yy218; + if (yych <= '9') goto yy219; + goto yy56; +yy217: YYDEBUG(217, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy218; - if (yych <= '2') goto yy219; - if (yych <= '9') goto yy220; - goto yy57; + if (yych <= '/') { + if (yych == '.') goto yy220; + goto yy56; + } else { + if (yych <= '9') goto yy219; + if (yych <= ':') goto yy220; + goto yy56; + } yy218: YYDEBUG(218, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy57; + if (yych == '.') goto yy220; + goto yy56; } else { - if (yych <= '9') goto yy220; - if (yych <= ':') goto yy221; - goto yy57; + if (yych <= '4') goto yy219; + if (yych == ':') goto yy220; + goto yy56; } yy219: YYDEBUG(219, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy57; - } else { - if (yych <= '4') goto yy220; - if (yych == ':') goto yy221; - goto yy57; - } + if (yych == '.') goto yy220; + if (yych != ':') goto yy56; yy220: YYDEBUG(220, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '.') goto yy221; - if (yych != ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy221; + if (yych <= '9') goto yy223; + goto yy56; yy221: YYDEBUG(221, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy222; - if (yych <= '9') goto yy224; - goto yy57; -yy222: - YYDEBUG(222, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy225; + if (yych == '.') goto yy224; } else { - if (yych <= '9') goto yy224; - if (yych <= ':') goto yy225; + if (yych <= '9') goto yy223; + if (yych <= ':') goto yy224; } -yy223: - YYDEBUG(223, *YYCURSOR); +yy222: + YYDEBUG(222, *YYCURSOR); #line 1684 "ext/date/lib/parse_date.re" { int tz_not_found; @@ -4479,704 +4460,704 @@ yy223: TIMELIB_DEINIT; return TIMELIB_SHORTDATE_WITH_TIME; } -#line 4483 "ext/date/lib/parse_date.c" -yy224: - YYDEBUG(224, *YYCURSOR); +#line 4464 "ext/date/lib/parse_date.c" +yy223: + YYDEBUG(223, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy225; - if (yych != ':') goto yy223; + if (yych == '.') goto yy224; + if (yych != ':') goto yy222; +yy224: + YYDEBUG(224, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy225; + if (yych <= '6') goto yy226; + if (yych <= '9') goto yy227; + goto yy56; yy225: YYDEBUG(225, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy226; - if (yych <= '6') goto yy227; + if (yych <= '/') goto yy222; if (yych <= '9') goto yy228; - goto yy57; + goto yy222; yy226: YYDEBUG(226, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy223; - if (yych <= '9') goto yy229; - goto yy223; + if (yych == '0') goto yy228; + goto yy222; yy227: YYDEBUG(227, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '0') goto yy229; - goto yy223; + goto yy222; yy228: YYDEBUG(228, *YYCURSOR); - yych = *++YYCURSOR; - goto yy223; -yy229: - YYDEBUG(229, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '*') { if (yych <= 0x1F) { - if (yych == '\t') goto yy231; - goto yy223; + if (yych == '\t') goto yy230; + goto yy222; } else { - if (yych <= ' ') goto yy231; - if (yych == '(') goto yy231; - goto yy223; + if (yych <= ' ') goto yy230; + if (yych == '(') goto yy230; + goto yy222; } } else { if (yych <= '@') { - if (yych == ',') goto yy223; - if (yych <= '-') goto yy231; - goto yy223; + if (yych == ',') goto yy222; + if (yych <= '-') goto yy230; + goto yy222; } else { - if (yych <= 'Z') goto yy231; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy231; - goto yy223; + if (yych <= 'Z') goto yy230; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy230; + goto yy222; } } -yy230: - YYDEBUG(230, *YYCURSOR); +yy229: + YYDEBUG(229, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; -yy231: - YYDEBUG(231, *YYCURSOR); +yy230: + YYDEBUG(230, *YYCURSOR); if (yych <= '+') { if (yych <= ' ') { - if (yych == '\t') goto yy230; - if (yych <= 0x1F) goto yy57; - goto yy230; + if (yych == '\t') goto yy229; + if (yych <= 0x1F) goto yy56; + goto yy229; } else { - if (yych == '(') goto yy234; - if (yych <= '*') goto yy57; - goto yy233; + if (yych == '(') goto yy233; + if (yych <= '*') goto yy56; + goto yy232; } } else { if (yych <= 'F') { - if (yych == '-') goto yy233; - if (yych <= '@') goto yy57; - goto yy235; + if (yych == '-') goto yy232; + if (yych <= '@') goto yy56; + goto yy234; } else { if (yych <= 'Z') { - if (yych >= 'H') goto yy235; + if (yych >= 'H') goto yy234; } else { - if (yych <= '`') goto yy57; - if (yych <= 'z') goto yy236; - goto yy57; + if (yych <= '`') goto yy56; + if (yych <= 'z') goto yy235; + goto yy56; } } } -yy232: - YYDEBUG(232, *YYCURSOR); +yy231: + YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'L') { - if (yych == ')') goto yy228; - if (yych <= '@') goto yy223; - goto yy237; + if (yych == ')') goto yy227; + if (yych <= '@') goto yy222; + goto yy236; } else { if (yych <= 'Z') { - if (yych <= 'M') goto yy257; - goto yy237; + if (yych <= 'M') goto yy256; + goto yy236; } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy242; - goto yy223; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy241; + goto yy222; } } +yy232: + YYDEBUG(232, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '1') goto yy251; + if (yych <= '2') goto yy252; + if (yych <= '9') goto yy253; + goto yy56; yy233: YYDEBUG(233, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy252; - if (yych <= '2') goto yy253; - if (yych <= '9') goto yy254; - goto yy57; + if (yych <= '@') goto yy56; + if (yych <= 'Z') goto yy235; + if (yych <= '`') goto yy56; + if (yych <= 'z') goto yy235; + goto yy56; yy234: YYDEBUG(234, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '@') goto yy57; - if (yych <= 'Z') goto yy236; - if (yych <= '`') goto yy57; - if (yych <= 'z') goto yy236; - goto yy57; + if (yych <= '@') { + if (yych == ')') goto yy227; + goto yy222; + } else { + if (yych <= 'Z') goto yy236; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy241; + goto yy222; + } yy235: YYDEBUG(235, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '@') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { - if (yych <= 'Z') goto yy237; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy242; - goto yy223; + if (yych <= 'Z') goto yy236; + if (yych <= '`') goto yy222; + if (yych >= '{') goto yy222; } yy236: YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '@') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { if (yych <= 'Z') goto yy237; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; + if (yych <= '`') goto yy222; + if (yych >= '{') goto yy222; } yy237: YYDEBUG(237, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '@') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { if (yych <= 'Z') goto yy238; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; + if (yych <= '`') goto yy222; + if (yych >= '{') goto yy222; } yy238: YYDEBUG(238, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '@') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { if (yych <= 'Z') goto yy239; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; + if (yych <= '`') goto yy222; + if (yych >= '{') goto yy222; } yy239: YYDEBUG(239, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '@') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { if (yych <= 'Z') goto yy240; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; + if (yych <= '`') goto yy222; + if (yych >= '{') goto yy222; } yy240: YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy228; - goto yy223; - } else { - if (yych <= 'Z') goto yy241; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; - } + if (yych == ')') goto yy227; + goto yy222; yy241: YYDEBUG(241, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == ')') goto yy228; - goto yy223; -yy242: - YYDEBUG(242, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { - if (yych == '.') goto yy223; - goto yy244; + if (yych == '.') goto yy222; + goto yy243; } } else { if (yych <= '^') { - if (yych <= '@') goto yy223; - if (yych <= 'Z') goto yy238; - goto yy223; + if (yych <= '@') goto yy222; + if (yych <= 'Z') goto yy237; + goto yy222; } else { - if (yych <= '_') goto yy244; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; + if (yych <= '_') goto yy243; + if (yych <= '`') goto yy222; + if (yych >= '{') goto yy222; } } -yy243: - YYDEBUG(243, *YYCURSOR); +yy242: + YYDEBUG(242, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { - if (yych == '.') goto yy223; + if (yych == '.') goto yy222; } } else { if (yych <= '^') { - if (yych <= '@') goto yy223; - if (yych <= 'Z') goto yy239; - goto yy223; + if (yych <= '@') goto yy222; + if (yych <= 'Z') goto yy238; + goto yy222; } else { - if (yych <= '_') goto yy244; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy247; - goto yy223; + if (yych <= '_') goto yy243; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy246; + goto yy222; } } -yy244: - YYDEBUG(244, *YYCURSOR); +yy243: + YYDEBUG(243, *YYCURSOR); ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '@') goto yy57; - if (yych <= 'Z') goto yy245; - if (yych <= '`') goto yy57; - if (yych >= '{') goto yy57; -yy245: - YYDEBUG(245, *YYCURSOR); + if (yych <= '@') goto yy56; + if (yych <= 'Z') goto yy244; + if (yych <= '`') goto yy56; + if (yych >= '{') goto yy56; +yy244: + YYDEBUG(244, *YYCURSOR); yyaccept = 7; YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - YYDEBUG(246, *YYCURSOR); + YYDEBUG(245, *YYCURSOR); if (yych <= '@') { if (yych <= '-') { - if (yych <= ',') goto yy223; - goto yy244; + if (yych <= ',') goto yy222; + goto yy243; } else { - if (yych == '/') goto yy244; - goto yy223; + if (yych == '/') goto yy243; + goto yy222; } } else { if (yych <= '_') { - if (yych <= 'Z') goto yy245; - if (yych <= '^') goto yy223; - goto yy244; + if (yych <= 'Z') goto yy244; + if (yych <= '^') goto yy222; + goto yy243; } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy245; - goto yy223; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy244; + goto yy222; } } -yy247: - YYDEBUG(247, *YYCURSOR); +yy246: + YYDEBUG(246, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { - if (yych == '.') goto yy223; - goto yy244; + if (yych == '.') goto yy222; + goto yy243; } } else { if (yych <= '^') { - if (yych <= '@') goto yy223; - if (yych <= 'Z') goto yy240; - goto yy223; + if (yych <= '@') goto yy222; + if (yych <= 'Z') goto yy239; + goto yy222; } else { - if (yych <= '_') goto yy244; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; + if (yych <= '_') goto yy243; + if (yych <= '`') goto yy222; + if (yych >= '{') goto yy222; } } - YYDEBUG(248, *YYCURSOR); + YYDEBUG(247, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { - if (yych == '.') goto yy223; - goto yy244; + if (yych == '.') goto yy222; + goto yy243; } } else { if (yych <= '^') { - if (yych <= '@') goto yy223; - if (yych <= 'Z') goto yy241; - goto yy223; + if (yych <= '@') goto yy222; + if (yych <= 'Z') goto yy240; + goto yy222; } else { - if (yych <= '_') goto yy244; - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; + if (yych <= '_') goto yy243; + if (yych <= '`') goto yy222; + if (yych >= '{') goto yy222; } } - YYDEBUG(249, *YYCURSOR); + YYDEBUG(248, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= ')') { - if (yych <= '(') goto yy223; - goto yy228; + if (yych <= '(') goto yy222; + goto yy227; } else { - if (yych == '-') goto yy244; - goto yy223; + if (yych == '-') goto yy243; + goto yy222; } } else { if (yych <= '_') { - if (yych <= '/') goto yy244; - if (yych <= '^') goto yy223; - goto yy244; + if (yych <= '/') goto yy243; + if (yych <= '^') goto yy222; + goto yy243; } else { - if (yych <= '`') goto yy223; - if (yych >= '{') goto yy223; + if (yych <= '`') goto yy222; + if (yych >= '{') goto yy222; } } -yy250: - YYDEBUG(250, *YYCURSOR); +yy249: + YYDEBUG(249, *YYCURSOR); ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - YYDEBUG(251, *YYCURSOR); + YYDEBUG(250, *YYCURSOR); if (yych <= '/') { - if (yych == '-') goto yy244; - if (yych <= '.') goto yy57; - goto yy244; + if (yych == '-') goto yy243; + if (yych <= '.') goto yy56; + goto yy243; } else { if (yych <= '_') { - if (yych <= '^') goto yy57; - goto yy244; + if (yych <= '^') goto yy56; + goto yy243; } else { - if (yych <= '`') goto yy57; - if (yych <= 'z') goto yy250; - goto yy57; + if (yych <= '`') goto yy56; + if (yych <= 'z') goto yy249; + goto yy56; } } +yy251: + YYDEBUG(251, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy222; + if (yych <= '9') goto yy253; + if (yych <= ':') goto yy254; + goto yy222; yy252: YYDEBUG(252, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy223; - if (yych <= '9') goto yy254; - if (yych <= ':') goto yy255; - goto yy223; -yy253: - YYDEBUG(253, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= '5') { - if (yych <= '/') goto yy223; - if (yych >= '5') goto yy256; + if (yych <= '/') goto yy222; + if (yych >= '5') goto yy255; } else { - if (yych <= '9') goto yy228; - if (yych <= ':') goto yy255; - goto yy223; + if (yych <= '9') goto yy227; + if (yych <= ':') goto yy254; + goto yy222; } +yy253: + YYDEBUG(253, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy222; + if (yych <= '5') goto yy255; + if (yych <= '9') goto yy227; + if (yych >= ';') goto yy222; yy254: YYDEBUG(254, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy223; - if (yych <= '5') goto yy256; - if (yych <= '9') goto yy228; - if (yych >= ';') goto yy223; + if (yych <= '/') goto yy222; + if (yych <= '5') goto yy255; + if (yych <= '9') goto yy227; + goto yy222; yy255: YYDEBUG(255, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy223; - if (yych <= '5') goto yy256; - if (yych <= '9') goto yy228; - goto yy223; + if (yych <= '/') goto yy222; + if (yych <= '9') goto yy227; + goto yy222; yy256: YYDEBUG(256, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy223; - if (yych <= '9') goto yy228; - goto yy223; -yy257: - YYDEBUG(257, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == ')') goto yy228; - if (yych <= '@') goto yy223; - goto yy238; + if (yych == ')') goto yy227; + if (yych <= '@') goto yy222; + goto yy237; } else { if (yych <= 'Z') { - if (yych >= 'U') goto yy238; + if (yych >= 'U') goto yy237; } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy238; - goto yy223; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy237; + goto yy222; } } - YYDEBUG(258, *YYCURSOR); + YYDEBUG(257, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= ')') { - if (yych <= '(') goto yy223; - goto yy228; + if (yych <= '(') goto yy222; + goto yy227; } else { - if (yych == '+') goto yy233; - goto yy223; + if (yych == '+') goto yy232; + goto yy222; } } else { if (yych <= 'Z') { - if (yych <= '-') goto yy233; - if (yych <= '@') goto yy223; - goto yy239; + if (yych <= '-') goto yy232; + if (yych <= '@') goto yy222; + goto yy238; } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy239; - goto yy223; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy238; + goto yy222; } } +yy258: + YYDEBUG(258, *YYCURSOR); + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy220; + goto yy198; + } else { + if (yych <= '0') goto yy290; + if (yych <= '9') goto yy291; + if (yych <= ':') goto yy220; + goto yy198; + } yy259: YYDEBUG(259, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy199; + if (yych == '.') goto yy263; + goto yy198; } else { - if (yych <= '0') goto yy291; - if (yych <= '9') goto yy292; - if (yych <= ':') goto yy221; - goto yy199; + if (yych <= '2') goto yy291; + if (yych <= '9') goto yy290; + if (yych <= ':') goto yy263; + goto yy198; } yy260: YYDEBUG(260, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy199; + if (yych == '.') goto yy263; + goto yy198; } else { - if (yych <= '2') goto yy292; - if (yych <= '9') goto yy291; - if (yych <= ':') goto yy264; - goto yy199; + if (yych <= '4') goto yy290; + if (yych <= '9') goto yy262; + if (yych <= ':') goto yy263; + goto yy198; } yy261: YYDEBUG(261, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy199; + if (yych == '.') goto yy263; + goto yy198; } else { - if (yych <= '4') goto yy291; - if (yych <= '9') goto yy263; - if (yych <= ':') goto yy264; - goto yy199; + if (yych <= '9') goto yy262; + if (yych <= ':') goto yy263; + goto yy198; } yy262: YYDEBUG(262, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy199; - } else { - if (yych <= '9') goto yy263; - if (yych <= ':') goto yy264; - goto yy199; - } + yych = *++YYCURSOR; + if (yych <= '/') goto yy198; + if (yych <= '9') goto yy288; + goto yy198; yy263: YYDEBUG(263, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy199; - if (yych <= '9') goto yy289; - goto yy199; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy264; + if (yych <= '9') goto yy265; + goto yy56; yy264: YYDEBUG(264, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy265; - if (yych <= '9') goto yy266; - goto yy57; -yy265: - YYDEBUG(265, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy267; - goto yy223; + if (yych == '.') goto yy266; + goto yy222; } else { - if (yych <= '9') goto yy282; - if (yych <= ':') goto yy267; - goto yy223; + if (yych <= '9') goto yy281; + if (yych <= ':') goto yy266; + goto yy222; } -yy266: - YYDEBUG(266, *YYCURSOR); +yy265: + YYDEBUG(265, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy267; - if (yych != ':') goto yy223; + if (yych == '.') goto yy266; + if (yych != ':') goto yy222; +yy266: + YYDEBUG(266, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy267; + if (yych <= '6') goto yy268; + if (yych <= '9') goto yy227; + goto yy56; yy267: YYDEBUG(267, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy268; - if (yych <= '6') goto yy269; - if (yych <= '9') goto yy228; - goto yy57; + if (yych <= '/') goto yy222; + if (yych <= '9') goto yy269; + goto yy222; yy268: YYDEBUG(268, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy223; - if (yych <= '9') goto yy270; - goto yy223; + if (yych != '0') goto yy222; yy269: YYDEBUG(269, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '0') goto yy223; -yy270: - YYDEBUG(270, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '*') { if (yych <= 0x1F) { - if (yych == '\t') goto yy272; - goto yy223; + if (yych == '\t') goto yy271; + goto yy222; } else { - if (yych <= ' ') goto yy272; - if (yych == '(') goto yy272; - goto yy223; + if (yych <= ' ') goto yy271; + if (yych == '(') goto yy271; + goto yy222; } } else { if (yych <= '@') { - if (yych == ',') goto yy223; - if (yych <= '-') goto yy272; - goto yy223; + if (yych == ',') goto yy222; + if (yych <= '-') goto yy271; + goto yy222; } else { - if (yych <= 'Z') goto yy272; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy272; - goto yy223; + if (yych <= 'Z') goto yy271; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy271; + goto yy222; } } -yy271: - YYDEBUG(271, *YYCURSOR); +yy270: + YYDEBUG(270, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; -yy272: - YYDEBUG(272, *YYCURSOR); +yy271: + YYDEBUG(271, *YYCURSOR); if (yych <= '@') { if (yych <= '\'') { if (yych <= '\t') { - if (yych <= 0x08) goto yy57; - goto yy271; + if (yych <= 0x08) goto yy56; + goto yy270; } else { - if (yych == ' ') goto yy271; - goto yy57; + if (yych == ' ') goto yy270; + goto yy56; } } else { if (yych <= '+') { - if (yych <= '(') goto yy234; - if (yych <= '*') goto yy57; - goto yy233; + if (yych <= '(') goto yy233; + if (yych <= '*') goto yy56; + goto yy232; } else { - if (yych == '-') goto yy233; - goto yy57; + if (yych == '-') goto yy232; + goto yy56; } } } else { if (yych <= 'Z') { if (yych <= 'G') { - if (yych <= 'A') goto yy273; - if (yych <= 'F') goto yy235; - goto yy232; + if (yych <= 'A') goto yy272; + if (yych <= 'F') goto yy234; + goto yy231; } else { - if (yych != 'P') goto yy235; + if (yych != 'P') goto yy234; } } else { if (yych <= 'o') { - if (yych <= '`') goto yy57; - if (yych <= 'a') goto yy274; - goto yy236; + if (yych <= '`') goto yy56; + if (yych <= 'a') goto yy273; + goto yy235; } else { - if (yych <= 'p') goto yy274; - if (yych <= 'z') goto yy236; - goto yy57; + if (yych <= 'p') goto yy273; + if (yych <= 'z') goto yy235; + goto yy56; } } } -yy273: - YYDEBUG(273, *YYCURSOR); +yy272: + YYDEBUG(272, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { if (yych <= '-') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { - if (yych <= '.') goto yy275; - if (yych <= '@') goto yy223; - goto yy237; + if (yych <= '.') goto yy274; + if (yych <= '@') goto yy222; + goto yy236; } } else { if (yych <= '`') { - if (yych <= 'M') goto yy276; - if (yych <= 'Z') goto yy237; - goto yy223; + if (yych <= 'M') goto yy275; + if (yych <= 'Z') goto yy236; + goto yy222; } else { - if (yych == 'm') goto yy281; - if (yych <= 'z') goto yy242; - goto yy223; + if (yych == 'm') goto yy280; + if (yych <= 'z') goto yy241; + goto yy222; } } -yy274: - YYDEBUG(274, *YYCURSOR); +yy273: + YYDEBUG(273, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { if (yych <= '-') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { - if (yych <= '.') goto yy275; - if (yych <= '@') goto yy223; - goto yy237; + if (yych <= '.') goto yy274; + if (yych <= '@') goto yy222; + goto yy236; } } else { if (yych <= '`') { - if (yych <= 'M') goto yy276; - if (yych <= 'Z') goto yy237; - goto yy223; + if (yych <= 'M') goto yy275; + if (yych <= 'Z') goto yy236; + goto yy222; } else { - if (yych == 'm') goto yy276; - if (yych <= 'z') goto yy237; - goto yy223; + if (yych == 'm') goto yy275; + if (yych <= 'z') goto yy236; + goto yy222; } } +yy274: + YYDEBUG(274, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy279; + if (yych == 'm') goto yy279; + goto yy56; yy275: YYDEBUG(275, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy280; - if (yych == 'm') goto yy280; - goto yy57; -yy276: - YYDEBUG(276, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ')') { if (yych <= '\t') { - if (yych <= 0x00) goto yy278; - if (yych <= 0x08) goto yy223; - goto yy278; + if (yych <= 0x00) goto yy277; + if (yych <= 0x08) goto yy222; + goto yy277; } else { - if (yych == ' ') goto yy278; - if (yych <= '(') goto yy223; - goto yy228; + if (yych == ' ') goto yy277; + if (yych <= '(') goto yy222; + goto yy227; } } else { if (yych <= '@') { - if (yych != '.') goto yy223; + if (yych != '.') goto yy222; } else { - if (yych <= 'Z') goto yy238; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy238; - goto yy223; + if (yych <= 'Z') goto yy237; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy237; + goto yy222; } } -yy277: - YYDEBUG(277, *YYCURSOR); +yy276: + YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy278; - if (yych <= 0x08) goto yy57; + if (yych <= 0x00) goto yy277; + if (yych <= 0x08) goto yy56; } else { - if (yych != ' ') goto yy57; + if (yych != ' ') goto yy56; } -yy278: - YYDEBUG(278, *YYCURSOR); +yy277: + YYDEBUG(277, *YYCURSOR); ++YYCURSOR; - YYDEBUG(279, *YYCURSOR); + YYDEBUG(278, *YYCURSOR); #line 1660 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12"); @@ -5200,184 +5181,184 @@ yy278: TIMELIB_DEINIT; return TIMELIB_SHORTDATE_WITH_TIME; } -#line 5204 "ext/date/lib/parse_date.c" -yy280: - YYDEBUG(280, *YYCURSOR); +#line 5185 "ext/date/lib/parse_date.c" +yy279: + YYDEBUG(279, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy278; - if (yych == '\t') goto yy278; - goto yy57; + if (yych <= 0x00) goto yy277; + if (yych == '\t') goto yy277; + goto yy56; } else { - if (yych <= ' ') goto yy278; - if (yych == '.') goto yy277; - goto yy57; + if (yych <= ' ') goto yy277; + if (yych == '.') goto yy276; + goto yy56; } -yy281: - YYDEBUG(281, *YYCURSOR); +yy280: + YYDEBUG(280, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= 0x1F) { - if (yych <= 0x00) goto yy278; - if (yych == '\t') goto yy278; - goto yy223; + if (yych <= 0x00) goto yy277; + if (yych == '\t') goto yy277; + goto yy222; } else { if (yych <= '(') { - if (yych <= ' ') goto yy278; - goto yy223; + if (yych <= ' ') goto yy277; + goto yy222; } else { - if (yych <= ')') goto yy228; - if (yych <= ',') goto yy223; - goto yy244; + if (yych <= ')') goto yy227; + if (yych <= ',') goto yy222; + goto yy243; } } } else { if (yych <= 'Z') { - if (yych <= '.') goto yy277; - if (yych <= '/') goto yy244; - if (yych <= '@') goto yy223; - goto yy238; + if (yych <= '.') goto yy276; + if (yych <= '/') goto yy243; + if (yych <= '@') goto yy222; + goto yy237; } else { if (yych <= '_') { - if (yych <= '^') goto yy223; - goto yy244; + if (yych <= '^') goto yy222; + goto yy243; } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy243; - goto yy223; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy242; + goto yy222; } } } -yy282: - YYDEBUG(282, *YYCURSOR); +yy281: + YYDEBUG(281, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy283; - if (yych <= 0x1F) goto yy223; + if (yych == '\t') goto yy282; + if (yych <= 0x1F) goto yy222; } else { - if (yych == '.') goto yy267; - if (yych <= '9') goto yy223; - goto yy267; + if (yych == '.') goto yy266; + if (yych <= '9') goto yy222; + goto yy266; } } else { if (yych <= 'P') { - if (yych == 'A') goto yy285; - if (yych <= 'O') goto yy223; - goto yy285; + if (yych == 'A') goto yy284; + if (yych <= 'O') goto yy222; + goto yy284; } else { if (yych <= 'a') { - if (yych <= '`') goto yy223; - goto yy285; + if (yych <= '`') goto yy222; + goto yy284; } else { - if (yych == 'p') goto yy285; - goto yy223; + if (yych == 'p') goto yy284; + goto yy222; } } } -yy283: - YYDEBUG(283, *YYCURSOR); +yy282: + YYDEBUG(282, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; - YYDEBUG(284, *YYCURSOR); + YYDEBUG(283, *YYCURSOR); if (yych <= 'A') { if (yych <= 0x1F) { - if (yych == '\t') goto yy283; - goto yy57; + if (yych == '\t') goto yy282; + goto yy56; } else { - if (yych <= ' ') goto yy283; - if (yych <= '@') goto yy57; + if (yych <= ' ') goto yy282; + if (yych <= '@') goto yy56; } } else { if (yych <= '`') { - if (yych != 'P') goto yy57; + if (yych != 'P') goto yy56; } else { - if (yych <= 'a') goto yy285; - if (yych != 'p') goto yy57; + if (yych <= 'a') goto yy284; + if (yych != 'p') goto yy56; } } -yy285: - YYDEBUG(285, *YYCURSOR); +yy284: + YYDEBUG(284, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'L') { - if (yych != '.') goto yy57; + if (yych != '.') goto yy56; } else { - if (yych <= 'M') goto yy287; - if (yych == 'm') goto yy287; - goto yy57; + if (yych <= 'M') goto yy286; + if (yych == 'm') goto yy286; + goto yy56; } +yy285: + YYDEBUG(285, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy286; + if (yych != 'm') goto yy56; yy286: YYDEBUG(286, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy287; - if (yych != 'm') goto yy57; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy277; + if (yych == '\t') goto yy277; + goto yy56; + } else { + if (yych <= ' ') goto yy277; + if (yych != '.') goto yy56; + } yy287: YYDEBUG(287, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy278; - if (yych == '\t') goto yy278; - goto yy57; + if (yych <= '\t') { + if (yych <= 0x00) goto yy277; + if (yych <= 0x08) goto yy56; + goto yy277; } else { - if (yych <= ' ') goto yy278; - if (yych != '.') goto yy57; + if (yych == ' ') goto yy277; + goto yy56; } yy288: YYDEBUG(288, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '\t') { - if (yych <= 0x00) goto yy278; - if (yych <= 0x08) goto yy57; - goto yy278; - } else { - if (yych == ' ') goto yy278; - goto yy57; - } -yy289: + if (yych <= '/') goto yy198; + if (yych >= ':') goto yy198; YYDEBUG(289, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy199; - if (yych >= ':') goto yy199; + goto yy198; +yy290: YYDEBUG(290, *YYCURSOR); - yych = *++YYCURSOR; - goto yy199; -yy291: - YYDEBUG(291, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy199; + if (yych == '.') goto yy220; + goto yy198; } else { - if (yych <= '9') goto yy289; - if (yych <= ':') goto yy221; - goto yy199; + if (yych <= '9') goto yy288; + if (yych <= ':') goto yy220; + goto yy198; } -yy292: - YYDEBUG(292, *YYCURSOR); +yy291: + YYDEBUG(291, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy199; + if (yych == '.') goto yy263; + goto yy198; } else { - if (yych <= '9') goto yy289; - if (yych <= ':') goto yy264; - goto yy199; + if (yych <= '9') goto yy288; + if (yych <= ':') goto yy263; + goto yy198; } +yy292: + YYDEBUG(292, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; yy293: YYDEBUG(293, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + ++YYCURSOR; yy294: YYDEBUG(294, *YYCURSOR); - ++YYCURSOR; -yy295: - YYDEBUG(295, *YYCURSOR); #line 1354 "ext/date/lib/parse_date.re" { int length = 0; @@ -5391,1226 +5372,1226 @@ yy295: TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -#line 5395 "ext/date/lib/parse_date.c" -yy296: - YYDEBUG(296, *YYCURSOR); +#line 5376 "ext/date/lib/parse_date.c" +yy295: + YYDEBUG(295, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy57; + if (yych == '.') goto yy220; + goto yy56; } else { - if (yych <= '9') goto yy294; - if (yych <= ':') goto yy221; - goto yy57; + if (yych <= '9') goto yy293; + if (yych <= ':') goto yy220; + goto yy56; } -yy297: - YYDEBUG(297, *YYCURSOR); +yy296: + YYDEBUG(296, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; + if (yych == '.') goto yy263; + goto yy56; } else { - if (yych <= '9') goto yy294; - if (yych <= ':') goto yy264; - goto yy57; + if (yych <= '9') goto yy293; + if (yych <= ':') goto yy263; + goto yy56; } -yy298: - YYDEBUG(298, *YYCURSOR); +yy297: + YYDEBUG(297, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '/') { - if (yych == '.') goto yy331; - goto yy216; + if (yych == '.') goto yy330; + goto yy215; } else { - if (yych <= '0') goto yy332; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; + if (yych <= '0') goto yy331; + if (yych <= '1') goto yy301; + if (yych <= '2') goto yy302; + goto yy296; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy221; - if (yych == 'n') goto yy212; - goto yy216; + if (yych <= ':') goto yy220; + if (yych == 'n') goto yy211; + goto yy215; } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 'r') goto yy212; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy299: - YYDEBUG(299, *YYCURSOR); +yy298: + YYDEBUG(298, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '/') { - if (yych != '.') goto yy216; + if (yych != '.') goto yy215; } else { - if (yych <= '0') goto yy301; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; + if (yych <= '0') goto yy300; + if (yych <= '1') goto yy301; + if (yych <= '2') goto yy302; + goto yy296; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy264; - if (yych == 'n') goto yy212; - goto yy216; + if (yych <= ':') goto yy263; + if (yych == 'n') goto yy211; + goto yy215; } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 'r') goto yy212; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy300: - YYDEBUG(300, *YYCURSOR); +yy299: + YYDEBUG(299, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy306; - goto yy307; + if (yych <= '/') goto yy215; + if (yych <= '0') goto yy305; + goto yy306; + } else { + if (yych <= '2') goto yy307; + if (yych <= '5') goto yy308; + if (yych <= '9') goto yy309; + goto yy215; + } +yy300: + YYDEBUG(300, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy263; + goto yy56; } else { - if (yych <= '2') goto yy308; - if (yych <= '5') goto yy309; - if (yych <= '9') goto yy310; - goto yy216; + if (yych <= '0') goto yy303; + if (yych <= '9') goto yy304; + if (yych <= ':') goto yy263; + goto yy56; } yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; + if (yych == '.') goto yy263; + goto yy56; } else { - if (yych <= '0') goto yy304; - if (yych <= '9') goto yy305; - if (yych <= ':') goto yy264; - goto yy57; + if (yych <= '2') goto yy304; + if (yych <= '9') goto yy303; + if (yych <= ':') goto yy263; + goto yy56; } yy302: YYDEBUG(302, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; + if (yych == '.') goto yy263; + goto yy56; } else { - if (yych <= '2') goto yy305; - if (yych <= '9') goto yy304; - if (yych <= ':') goto yy264; - goto yy57; + if (yych <= '4') goto yy303; + if (yych <= '9') goto yy293; + if (yych <= ':') goto yy263; + goto yy56; } yy303: YYDEBUG(303, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy264; - goto yy57; - } else { - if (yych <= '4') goto yy304; - if (yych <= '9') goto yy294; - if (yych <= ':') goto yy264; - goto yy57; - } + yyaccept = 8; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy220; + if (yych == ':') goto yy220; + goto yy294; yy304: YYDEBUG(304, *YYCURSOR); yyaccept = 8; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy221; - if (yych == ':') goto yy221; - goto yy295; + if (yych == '.') goto yy263; + if (yych == ':') goto yy263; + goto yy294; yy305: YYDEBUG(305, *YYCURSOR); - yyaccept = 8; + yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy264; - if (yych == ':') goto yy264; - goto yy295; + if (yych <= '/') { + if (yych == '.') goto yy325; + goto yy198; + } else { + if (yych <= '0') goto yy324; + if (yych <= '9') goto yy329; + if (yych <= ':') goto yy325; + goto yy198; + } yy306: YYDEBUG(306, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy326; - goto yy199; + if (yych == '.') goto yy310; + goto yy198; } else { - if (yych <= '0') goto yy325; - if (yych <= '9') goto yy330; - if (yych <= ':') goto yy326; - goto yy199; + if (yych <= '2') goto yy329; + if (yych <= '9') goto yy324; + if (yych <= ':') goto yy310; + goto yy198; } yy307: YYDEBUG(307, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy311; - goto yy199; + if (yych == '.') goto yy310; + goto yy198; } else { - if (yych <= '2') goto yy330; - if (yych <= '9') goto yy325; - if (yych <= ':') goto yy311; - goto yy199; + if (yych <= '4') goto yy324; + if (yych <= '9') goto yy323; + if (yych <= ':') goto yy310; + goto yy198; } yy308: YYDEBUG(308, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy311; - goto yy199; + if (yych == '.') goto yy310; + goto yy198; } else { - if (yych <= '4') goto yy325; - if (yych <= '9') goto yy324; - if (yych <= ':') goto yy311; - goto yy199; + if (yych <= '9') goto yy323; + if (yych <= ':') goto yy310; + goto yy198; } yy309: YYDEBUG(309, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy311; - goto yy199; + if (yych != '.') goto yy198; } else { - if (yych <= '9') goto yy324; - if (yych <= ':') goto yy311; - goto yy199; + if (yych <= '9') goto yy262; + if (yych >= ';') goto yy198; } yy310: YYDEBUG(310, *YYCURSOR); - yyaccept = 6; + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy311; + if (yych <= '6') goto yy312; + if (yych <= '9') goto yy265; + goto yy56; +yy311: + YYDEBUG(311, *YYCURSOR); + yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych != '.') goto yy199; + if (yych == '.') goto yy266; + goto yy222; } else { - if (yych <= '9') goto yy263; - if (yych >= ';') goto yy199; + if (yych <= '9') goto yy313; + if (yych <= ':') goto yy266; + goto yy222; } -yy311: - YYDEBUG(311, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy312; - if (yych <= '6') goto yy313; - if (yych <= '9') goto yy266; - goto yy57; yy312: YYDEBUG(312, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy267; - goto yy223; + if (yych == '.') goto yy266; + goto yy222; } else { - if (yych <= '9') goto yy314; - if (yych <= ':') goto yy267; - goto yy223; + if (yych <= '0') goto yy269; + if (yych == ':') goto yy266; + goto yy222; } yy313: YYDEBUG(313, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy267; - goto yy223; - } else { - if (yych <= '0') goto yy270; - if (yych == ':') goto yy267; - goto yy223; - } -yy314: - YYDEBUG(314, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= ' ') { - if (yych == '\t') goto yy316; - if (yych <= 0x1F) goto yy223; - goto yy316; + if (yych == '\t') goto yy315; + if (yych <= 0x1F) goto yy222; + goto yy315; } else { if (yych <= '(') { - if (yych <= '\'') goto yy223; - goto yy316; + if (yych <= '\'') goto yy222; + goto yy315; } else { - if (yych == '+') goto yy316; - goto yy223; + if (yych == '+') goto yy315; + goto yy222; } } } else { if (yych <= ':') { - if (yych <= '-') goto yy316; - if (yych <= '.') goto yy267; - if (yych <= '9') goto yy223; - goto yy267; + if (yych <= '-') goto yy315; + if (yych <= '.') goto yy266; + if (yych <= '9') goto yy222; + goto yy266; } else { if (yych <= 'Z') { - if (yych <= '@') goto yy223; - goto yy316; + if (yych <= '@') goto yy222; + goto yy315; } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy316; - goto yy223; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy315; + goto yy222; } } } -yy315: - YYDEBUG(315, *YYCURSOR); +yy314: + YYDEBUG(314, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; -yy316: - YYDEBUG(316, *YYCURSOR); +yy315: + YYDEBUG(315, *YYCURSOR); if (yych <= '@') { if (yych <= '\'') { if (yych <= '\t') { - if (yych <= 0x08) goto yy57; - goto yy315; + if (yych <= 0x08) goto yy56; + goto yy314; } else { - if (yych == ' ') goto yy315; - goto yy57; + if (yych == ' ') goto yy314; + goto yy56; } } else { if (yych <= '+') { - if (yych <= '(') goto yy234; - if (yych <= '*') goto yy57; - goto yy233; + if (yych <= '(') goto yy233; + if (yych <= '*') goto yy56; + goto yy232; } else { - if (yych == '-') goto yy233; - goto yy57; + if (yych == '-') goto yy232; + goto yy56; } } } else { if (yych <= 'Z') { if (yych <= 'G') { - if (yych <= 'A') goto yy317; - if (yych <= 'F') goto yy235; - goto yy232; + if (yych <= 'A') goto yy316; + if (yych <= 'F') goto yy234; + goto yy231; } else { - if (yych != 'P') goto yy235; + if (yych != 'P') goto yy234; } } else { if (yych <= 'o') { - if (yych <= '`') goto yy57; - if (yych <= 'a') goto yy318; - goto yy236; + if (yych <= '`') goto yy56; + if (yych <= 'a') goto yy317; + goto yy235; } else { - if (yych <= 'p') goto yy318; - if (yych <= 'z') goto yy236; - goto yy57; + if (yych <= 'p') goto yy317; + if (yych <= 'z') goto yy235; + goto yy56; } } } -yy317: - YYDEBUG(317, *YYCURSOR); +yy316: + YYDEBUG(316, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { if (yych <= '-') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { - if (yych <= '.') goto yy320; - if (yych <= '@') goto yy223; - goto yy237; + if (yych <= '.') goto yy319; + if (yych <= '@') goto yy222; + goto yy236; } } else { if (yych <= '`') { - if (yych <= 'M') goto yy319; - if (yych <= 'Z') goto yy237; - goto yy223; + if (yych <= 'M') goto yy318; + if (yych <= 'Z') goto yy236; + goto yy222; } else { - if (yych == 'm') goto yy323; - if (yych <= 'z') goto yy242; - goto yy223; + if (yych == 'm') goto yy322; + if (yych <= 'z') goto yy241; + goto yy222; } } -yy318: - YYDEBUG(318, *YYCURSOR); +yy317: + YYDEBUG(317, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { if (yych <= '-') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { - if (yych <= '.') goto yy320; - if (yych <= '@') goto yy223; - goto yy237; + if (yych <= '.') goto yy319; + if (yych <= '@') goto yy222; + goto yy236; } } else { if (yych <= '`') { - if (yych <= 'M') goto yy319; - if (yych <= 'Z') goto yy237; - goto yy223; + if (yych <= 'M') goto yy318; + if (yych <= 'Z') goto yy236; + goto yy222; } else { - if (yych == 'm') goto yy319; - if (yych <= 'z') goto yy237; - goto yy223; + if (yych == 'm') goto yy318; + if (yych <= 'z') goto yy236; + goto yy222; } } -yy319: - YYDEBUG(319, *YYCURSOR); +yy318: + YYDEBUG(318, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ')') { if (yych <= '\t') { - if (yych <= 0x00) goto yy278; - if (yych <= 0x08) goto yy223; - goto yy278; + if (yych <= 0x00) goto yy277; + if (yych <= 0x08) goto yy222; + goto yy277; } else { - if (yych == ' ') goto yy278; - if (yych <= '(') goto yy223; - goto yy228; + if (yych == ' ') goto yy277; + if (yych <= '(') goto yy222; + goto yy227; } } else { if (yych <= '@') { - if (yych == '.') goto yy322; - goto yy223; + if (yych == '.') goto yy321; + goto yy222; } else { - if (yych <= 'Z') goto yy238; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy238; - goto yy223; + if (yych <= 'Z') goto yy237; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy237; + goto yy222; } } +yy319: + YYDEBUG(319, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy320; + if (yych != 'm') goto yy56; yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy321; - if (yych != 'm') goto yy57; -yy321: - YYDEBUG(321, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy278; - if (yych == '\t') goto yy278; - goto yy57; + if (yych <= 0x00) goto yy277; + if (yych == '\t') goto yy277; + goto yy56; } else { - if (yych <= ' ') goto yy278; - if (yych != '.') goto yy57; + if (yych <= ' ') goto yy277; + if (yych != '.') goto yy56; } -yy322: - YYDEBUG(322, *YYCURSOR); +yy321: + YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy278; - if (yych <= 0x08) goto yy57; - goto yy278; + if (yych <= 0x00) goto yy277; + if (yych <= 0x08) goto yy56; + goto yy277; } else { - if (yych == ' ') goto yy278; - goto yy57; + if (yych == ' ') goto yy277; + goto yy56; } -yy323: - YYDEBUG(323, *YYCURSOR); +yy322: + YYDEBUG(322, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= 0x1F) { - if (yych <= 0x00) goto yy278; - if (yych == '\t') goto yy278; - goto yy223; + if (yych <= 0x00) goto yy277; + if (yych == '\t') goto yy277; + goto yy222; } else { if (yych <= '(') { - if (yych <= ' ') goto yy278; - goto yy223; + if (yych <= ' ') goto yy277; + goto yy222; } else { - if (yych <= ')') goto yy228; - if (yych <= ',') goto yy223; - goto yy244; + if (yych <= ')') goto yy227; + if (yych <= ',') goto yy222; + goto yy243; } } } else { if (yych <= 'Z') { - if (yych <= '.') goto yy322; - if (yych <= '/') goto yy244; - if (yych <= '@') goto yy223; - goto yy238; + if (yych <= '.') goto yy321; + if (yych <= '/') goto yy243; + if (yych <= '@') goto yy222; + goto yy237; } else { if (yych <= '_') { - if (yych <= '^') goto yy223; - goto yy244; + if (yych <= '^') goto yy222; + goto yy243; } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy243; - goto yy223; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy242; + goto yy222; } } } -yy324: - YYDEBUG(324, *YYCURSOR); +yy323: + YYDEBUG(323, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy283; - if (yych <= 0x1F) goto yy199; - goto yy283; + if (yych == '\t') goto yy282; + if (yych <= 0x1F) goto yy198; + goto yy282; } else { if (yych <= '.') { - if (yych <= '-') goto yy199; - goto yy267; + if (yych <= '-') goto yy198; + goto yy266; } else { - if (yych <= '/') goto yy199; - if (yych <= '9') goto yy289; - goto yy267; + if (yych <= '/') goto yy198; + if (yych <= '9') goto yy288; + goto yy266; } } } else { if (yych <= 'P') { - if (yych == 'A') goto yy285; - if (yych <= 'O') goto yy199; - goto yy285; + if (yych == 'A') goto yy284; + if (yych <= 'O') goto yy198; + goto yy284; } else { if (yych <= 'a') { - if (yych <= '`') goto yy199; - goto yy285; + if (yych <= '`') goto yy198; + goto yy284; } else { - if (yych == 'p') goto yy285; - goto yy199; + if (yych == 'p') goto yy284; + goto yy198; } } } -yy325: - YYDEBUG(325, *YYCURSOR); +yy324: + YYDEBUG(324, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy283; - if (yych <= 0x1F) goto yy199; - goto yy283; + if (yych == '\t') goto yy282; + if (yych <= 0x1F) goto yy198; + goto yy282; } else { if (yych <= '.') { - if (yych <= '-') goto yy199; + if (yych <= '-') goto yy198; } else { - if (yych <= '/') goto yy199; - if (yych <= '9') goto yy289; + if (yych <= '/') goto yy198; + if (yych <= '9') goto yy288; } } } else { if (yych <= 'P') { - if (yych == 'A') goto yy285; - if (yych <= 'O') goto yy199; - goto yy285; + if (yych == 'A') goto yy284; + if (yych <= 'O') goto yy198; + goto yy284; } else { if (yych <= 'a') { - if (yych <= '`') goto yy199; - goto yy285; + if (yych <= '`') goto yy198; + goto yy284; } else { - if (yych == 'p') goto yy285; - goto yy199; + if (yych == 'p') goto yy284; + goto yy198; } } } +yy325: + YYDEBUG(325, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy326; + if (yych <= '6') goto yy327; + if (yych <= '9') goto yy223; + goto yy56; yy326: YYDEBUG(326, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy327; - if (yych <= '6') goto yy328; - if (yych <= '9') goto yy224; - goto yy57; -yy327: - YYDEBUG(327, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy225; - goto yy223; + if (yych == '.') goto yy224; + goto yy222; } else { - if (yych <= '9') goto yy329; - if (yych <= ':') goto yy225; - goto yy223; + if (yych <= '9') goto yy328; + if (yych <= ':') goto yy224; + goto yy222; } -yy328: - YYDEBUG(328, *YYCURSOR); +yy327: + YYDEBUG(327, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy225; - goto yy223; + if (yych == '.') goto yy224; + goto yy222; } else { - if (yych <= '0') goto yy270; - if (yych == ':') goto yy225; - goto yy223; + if (yych <= '0') goto yy269; + if (yych == ':') goto yy224; + goto yy222; } -yy329: - YYDEBUG(329, *YYCURSOR); +yy328: + YYDEBUG(328, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= ' ') { - if (yych == '\t') goto yy272; - if (yych <= 0x1F) goto yy223; - goto yy272; + if (yych == '\t') goto yy271; + if (yych <= 0x1F) goto yy222; + goto yy271; } else { if (yych <= '(') { - if (yych <= '\'') goto yy223; - goto yy272; + if (yych <= '\'') goto yy222; + goto yy271; } else { - if (yych == '+') goto yy272; - goto yy223; + if (yych == '+') goto yy271; + goto yy222; } } } else { if (yych <= ':') { - if (yych <= '-') goto yy272; - if (yych <= '.') goto yy225; - if (yych <= '9') goto yy223; - goto yy225; + if (yych <= '-') goto yy271; + if (yych <= '.') goto yy224; + if (yych <= '9') goto yy222; + goto yy224; } else { if (yych <= 'Z') { - if (yych <= '@') goto yy223; - goto yy272; + if (yych <= '@') goto yy222; + goto yy271; } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy272; - goto yy223; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy271; + goto yy222; } } } -yy330: - YYDEBUG(330, *YYCURSOR); +yy329: + YYDEBUG(329, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy283; - if (yych <= 0x1F) goto yy199; - goto yy283; + if (yych == '\t') goto yy282; + if (yych <= 0x1F) goto yy198; + goto yy282; } else { if (yych <= '.') { - if (yych <= '-') goto yy199; - goto yy311; + if (yych <= '-') goto yy198; + goto yy310; } else { - if (yych <= '/') goto yy199; - if (yych <= '9') goto yy289; - goto yy311; + if (yych <= '/') goto yy198; + if (yych <= '9') goto yy288; + goto yy310; } } } else { if (yych <= 'P') { - if (yych == 'A') goto yy285; - if (yych <= 'O') goto yy199; - goto yy285; + if (yych == 'A') goto yy284; + if (yych <= 'O') goto yy198; + goto yy284; } else { if (yych <= 'a') { - if (yych <= '`') goto yy199; - goto yy285; + if (yych <= '`') goto yy198; + goto yy284; } else { - if (yych == 'p') goto yy285; - goto yy199; + if (yych == 'p') goto yy284; + goto yy198; } } } -yy331: - YYDEBUG(331, *YYCURSOR); +yy330: + YYDEBUG(330, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy333; - goto yy334; + if (yych <= '/') goto yy215; + if (yych <= '0') goto yy332; + goto yy333; + } else { + if (yych <= '2') goto yy334; + if (yych <= '5') goto yy335; + if (yych <= '9') goto yy336; + goto yy215; + } +yy331: + YYDEBUG(331, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy220; + goto yy56; } else { - if (yych <= '2') goto yy335; - if (yych <= '5') goto yy336; - if (yych <= '9') goto yy337; - goto yy216; + if (yych <= '0') goto yy303; + if (yych <= '9') goto yy304; + if (yych <= ':') goto yy220; + goto yy56; } yy332: YYDEBUG(332, *YYCURSOR); - yych = *++YYCURSOR; + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy221; - goto yy57; + if (yych == '.') goto yy349; + goto yy198; } else { - if (yych <= '0') goto yy304; - if (yych <= '9') goto yy305; - if (yych <= ':') goto yy221; - goto yy57; + if (yych <= '0') goto yy348; + if (yych <= '9') goto yy353; + if (yych <= ':') goto yy349; + goto yy198; } yy333: YYDEBUG(333, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy350; - goto yy199; + if (yych == '.') goto yy337; + goto yy198; } else { - if (yych <= '0') goto yy349; - if (yych <= '9') goto yy354; - if (yych <= ':') goto yy350; - goto yy199; + if (yych <= '2') goto yy353; + if (yych <= '9') goto yy348; + if (yych <= ':') goto yy337; + goto yy198; } yy334: YYDEBUG(334, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy338; - goto yy199; + if (yych == '.') goto yy337; + goto yy198; } else { - if (yych <= '2') goto yy354; - if (yych <= '9') goto yy349; - if (yych <= ':') goto yy338; - goto yy199; + if (yych <= '4') goto yy348; + if (yych <= '9') goto yy347; + if (yych <= ':') goto yy337; + goto yy198; } yy335: YYDEBUG(335, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy338; - goto yy199; + if (yych == '.') goto yy337; + goto yy198; } else { - if (yych <= '4') goto yy349; - if (yych <= '9') goto yy348; - if (yych <= ':') goto yy338; - goto yy199; + if (yych <= '9') goto yy347; + if (yych <= ':') goto yy337; + goto yy198; } yy336: YYDEBUG(336, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy338; - goto yy199; + if (yych != '.') goto yy198; } else { - if (yych <= '9') goto yy348; - if (yych <= ':') goto yy338; - goto yy199; + if (yych <= '9') goto yy262; + if (yych >= ';') goto yy198; } yy337: YYDEBUG(337, *YYCURSOR); - yyaccept = 6; + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy338; + if (yych <= '6') goto yy339; + if (yych <= '9') goto yy265; + goto yy56; +yy338: + YYDEBUG(338, *YYCURSOR); + yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych != '.') goto yy199; + if (yych == '.') goto yy266; + goto yy222; } else { - if (yych <= '9') goto yy263; - if (yych >= ';') goto yy199; + if (yych <= '9') goto yy340; + if (yych <= ':') goto yy266; + goto yy222; } -yy338: - YYDEBUG(338, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy339; - if (yych <= '6') goto yy340; - if (yych <= '9') goto yy266; - goto yy57; yy339: YYDEBUG(339, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy267; - goto yy223; + if (yych == '.') goto yy266; + goto yy222; } else { - if (yych <= '9') goto yy341; - if (yych <= ':') goto yy267; - goto yy223; + if (yych <= '0') goto yy228; + if (yych == ':') goto yy266; + goto yy222; } yy340: YYDEBUG(340, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy267; - goto yy223; - } else { - if (yych <= '0') goto yy229; - if (yych == ':') goto yy267; - goto yy223; - } -yy341: - YYDEBUG(341, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= ' ') { - if (yych == '\t') goto yy343; - if (yych <= 0x1F) goto yy223; - goto yy343; + if (yych == '\t') goto yy342; + if (yych <= 0x1F) goto yy222; + goto yy342; } else { if (yych <= '(') { - if (yych <= '\'') goto yy223; - goto yy343; + if (yych <= '\'') goto yy222; + goto yy342; } else { - if (yych == '+') goto yy343; - goto yy223; + if (yych == '+') goto yy342; + goto yy222; } } } else { if (yych <= ':') { - if (yych <= '-') goto yy343; - if (yych <= '.') goto yy267; - if (yych <= '9') goto yy223; - goto yy267; + if (yych <= '-') goto yy342; + if (yych <= '.') goto yy266; + if (yych <= '9') goto yy222; + goto yy266; } else { if (yych <= 'Z') { - if (yych <= '@') goto yy223; - goto yy343; + if (yych <= '@') goto yy222; + goto yy342; } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy343; - goto yy223; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy342; + goto yy222; } } } -yy342: - YYDEBUG(342, *YYCURSOR); +yy341: + YYDEBUG(341, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; -yy343: - YYDEBUG(343, *YYCURSOR); +yy342: + YYDEBUG(342, *YYCURSOR); if (yych <= '@') { if (yych <= '\'') { if (yych <= '\t') { - if (yych <= 0x08) goto yy57; - goto yy342; + if (yych <= 0x08) goto yy56; + goto yy341; } else { - if (yych == ' ') goto yy342; - goto yy57; + if (yych == ' ') goto yy341; + goto yy56; } } else { if (yych <= '+') { - if (yych <= '(') goto yy234; - if (yych <= '*') goto yy57; - goto yy233; + if (yych <= '(') goto yy233; + if (yych <= '*') goto yy56; + goto yy232; } else { - if (yych == '-') goto yy233; - goto yy57; + if (yych == '-') goto yy232; + goto yy56; } } } else { if (yych <= 'Z') { if (yych <= 'G') { - if (yych <= 'A') goto yy344; - if (yych <= 'F') goto yy235; - goto yy232; + if (yych <= 'A') goto yy343; + if (yych <= 'F') goto yy234; + goto yy231; } else { - if (yych != 'P') goto yy235; + if (yych != 'P') goto yy234; } } else { if (yych <= 'o') { - if (yych <= '`') goto yy57; - if (yych <= 'a') goto yy345; - goto yy236; + if (yych <= '`') goto yy56; + if (yych <= 'a') goto yy344; + goto yy235; } else { - if (yych <= 'p') goto yy345; - if (yych <= 'z') goto yy236; - goto yy57; + if (yych <= 'p') goto yy344; + if (yych <= 'z') goto yy235; + goto yy56; } } } -yy344: - YYDEBUG(344, *YYCURSOR); +yy343: + YYDEBUG(343, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { if (yych <= '-') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { - if (yych <= '.') goto yy286; - if (yych <= '@') goto yy223; - goto yy237; + if (yych <= '.') goto yy285; + if (yych <= '@') goto yy222; + goto yy236; } } else { if (yych <= '`') { - if (yych <= 'M') goto yy346; - if (yych <= 'Z') goto yy237; - goto yy223; + if (yych <= 'M') goto yy345; + if (yych <= 'Z') goto yy236; + goto yy222; } else { - if (yych == 'm') goto yy347; - if (yych <= 'z') goto yy242; - goto yy223; + if (yych == 'm') goto yy346; + if (yych <= 'z') goto yy241; + goto yy222; } } -yy345: - YYDEBUG(345, *YYCURSOR); +yy344: + YYDEBUG(344, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { if (yych <= '-') { - if (yych == ')') goto yy228; - goto yy223; + if (yych == ')') goto yy227; + goto yy222; } else { - if (yych <= '.') goto yy286; - if (yych <= '@') goto yy223; - goto yy237; + if (yych <= '.') goto yy285; + if (yych <= '@') goto yy222; + goto yy236; } } else { if (yych <= '`') { - if (yych <= 'M') goto yy346; - if (yych <= 'Z') goto yy237; - goto yy223; + if (yych <= 'M') goto yy345; + if (yych <= 'Z') goto yy236; + goto yy222; } else { - if (yych == 'm') goto yy346; - if (yych <= 'z') goto yy237; - goto yy223; + if (yych == 'm') goto yy345; + if (yych <= 'z') goto yy236; + goto yy222; } } -yy346: - YYDEBUG(346, *YYCURSOR); +yy345: + YYDEBUG(345, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ')') { if (yych <= '\t') { - if (yych <= 0x00) goto yy278; - if (yych <= 0x08) goto yy223; - goto yy278; + if (yych <= 0x00) goto yy277; + if (yych <= 0x08) goto yy222; + goto yy277; } else { - if (yych == ' ') goto yy278; - if (yych <= '(') goto yy223; - goto yy228; + if (yych == ' ') goto yy277; + if (yych <= '(') goto yy222; + goto yy227; } } else { if (yych <= '@') { - if (yych == '.') goto yy288; - goto yy223; + if (yych == '.') goto yy287; + goto yy222; } else { - if (yych <= 'Z') goto yy238; - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy238; - goto yy223; + if (yych <= 'Z') goto yy237; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy237; + goto yy222; } } -yy347: - YYDEBUG(347, *YYCURSOR); +yy346: + YYDEBUG(346, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= 0x1F) { - if (yych <= 0x00) goto yy278; - if (yych == '\t') goto yy278; - goto yy223; + if (yych <= 0x00) goto yy277; + if (yych == '\t') goto yy277; + goto yy222; } else { if (yych <= '(') { - if (yych <= ' ') goto yy278; - goto yy223; + if (yych <= ' ') goto yy277; + goto yy222; } else { - if (yych <= ')') goto yy228; - if (yych <= ',') goto yy223; - goto yy244; + if (yych <= ')') goto yy227; + if (yych <= ',') goto yy222; + goto yy243; } } } else { if (yych <= 'Z') { - if (yych <= '.') goto yy288; - if (yych <= '/') goto yy244; - if (yych <= '@') goto yy223; - goto yy238; + if (yych <= '.') goto yy287; + if (yych <= '/') goto yy243; + if (yych <= '@') goto yy222; + goto yy237; } else { if (yych <= '_') { - if (yych <= '^') goto yy223; - goto yy244; + if (yych <= '^') goto yy222; + goto yy243; } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy243; - goto yy223; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy242; + goto yy222; } } } -yy348: - YYDEBUG(348, *YYCURSOR); +yy347: + YYDEBUG(347, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy225; - goto yy199; + if (yych == '.') goto yy224; + goto yy198; } else { - if (yych <= '9') goto yy289; - if (yych <= ':') goto yy225; - goto yy199; + if (yych <= '9') goto yy288; + if (yych <= ':') goto yy224; + goto yy198; } -yy349: - YYDEBUG(349, *YYCURSOR); +yy348: + YYDEBUG(348, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych != '.') goto yy199; + if (yych != '.') goto yy198; } else { - if (yych <= '9') goto yy289; - if (yych >= ';') goto yy199; + if (yych <= '9') goto yy288; + if (yych >= ';') goto yy198; } +yy349: + YYDEBUG(349, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy350; + if (yych <= '6') goto yy351; + if (yych <= '9') goto yy223; + goto yy56; yy350: YYDEBUG(350, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy351; - if (yych <= '6') goto yy352; - if (yych <= '9') goto yy224; - goto yy57; -yy351: - YYDEBUG(351, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy225; - goto yy223; + if (yych == '.') goto yy224; + goto yy222; } else { - if (yych <= '9') goto yy353; - if (yych <= ':') goto yy225; - goto yy223; + if (yych <= '9') goto yy352; + if (yych <= ':') goto yy224; + goto yy222; } -yy352: - YYDEBUG(352, *YYCURSOR); +yy351: + YYDEBUG(351, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy225; - goto yy223; + if (yych == '.') goto yy224; + goto yy222; } else { - if (yych <= '0') goto yy229; - if (yych == ':') goto yy225; - goto yy223; + if (yych <= '0') goto yy228; + if (yych == ':') goto yy224; + goto yy222; } -yy353: - YYDEBUG(353, *YYCURSOR); +yy352: + YYDEBUG(352, *YYCURSOR); yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= ' ') { - if (yych == '\t') goto yy231; - if (yych <= 0x1F) goto yy223; - goto yy231; + if (yych == '\t') goto yy230; + if (yych <= 0x1F) goto yy222; + goto yy230; } else { if (yych <= '(') { - if (yych <= '\'') goto yy223; - goto yy231; + if (yych <= '\'') goto yy222; + goto yy230; } else { - if (yych == '+') goto yy231; - goto yy223; + if (yych == '+') goto yy230; + goto yy222; } } } else { if (yych <= ':') { - if (yych <= '-') goto yy231; - if (yych <= '.') goto yy225; - if (yych <= '9') goto yy223; - goto yy225; + if (yych <= '-') goto yy230; + if (yych <= '.') goto yy224; + if (yych <= '9') goto yy222; + goto yy224; } else { if (yych <= 'Z') { - if (yych <= '@') goto yy223; - goto yy231; + if (yych <= '@') goto yy222; + goto yy230; } else { - if (yych <= '`') goto yy223; - if (yych <= 'z') goto yy231; - goto yy223; + if (yych <= '`') goto yy222; + if (yych <= 'z') goto yy230; + goto yy222; } } } -yy354: - YYDEBUG(354, *YYCURSOR); +yy353: + YYDEBUG(353, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy338; - goto yy199; + if (yych == '.') goto yy337; + goto yy198; } else { - if (yych <= '9') goto yy289; - if (yych <= ':') goto yy338; - goto yy199; + if (yych <= '9') goto yy288; + if (yych <= ':') goto yy337; + goto yy198; } -yy355: - YYDEBUG(355, *YYCURSOR); +yy354: + YYDEBUG(354, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '/') { - if (yych == '.') goto yy300; - goto yy216; + if (yych == '.') goto yy299; + goto yy215; } else { - if (yych <= '0') goto yy332; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; + if (yych <= '0') goto yy331; + if (yych <= '1') goto yy301; + if (yych <= '2') goto yy302; + goto yy296; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy264; - if (yych == 'n') goto yy212; - goto yy216; + if (yych <= ':') goto yy263; + if (yych == 'n') goto yy211; + goto yy215; } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 'r') goto yy212; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy356: - YYDEBUG(356, *YYCURSOR); +yy355: + YYDEBUG(355, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '/') { - if (yych == '.') goto yy300; - goto yy216; + if (yych == '.') goto yy299; + goto yy215; } else { - if (yych <= '0') goto yy332; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; + if (yych <= '0') goto yy331; + if (yych <= '1') goto yy301; + if (yych <= '2') goto yy302; + goto yy296; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy264; - if (yych == 'n') goto yy212; - goto yy216; + if (yych <= ':') goto yy263; + if (yych == 'n') goto yy211; + goto yy215; } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 'r') goto yy212; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy357: - YYDEBUG(357, *YYCURSOR); +yy356: + YYDEBUG(356, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy360; - goto yy361; + if (yych <= '/') goto yy215; + if (yych <= '0') goto yy359; + goto yy360; } else { - if (yych <= '2') goto yy368; - if (yych <= '9') goto yy369; - goto yy216; + if (yych <= '2') goto yy367; + if (yych <= '9') goto yy368; + goto yy215; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy212; - if (yych <= 'q') goto yy216; - goto yy213; + if (yych <= 'n') goto yy211; + if (yych <= 'q') goto yy215; + goto yy212; } else { - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy358: - YYDEBUG(358, *YYCURSOR); +yy357: + YYDEBUG(357, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych <= '0') goto yy360; - goto yy361; + if (yych <= '/') goto yy215; + if (yych <= '0') goto yy359; + goto yy360; } else { - if (yych <= '2') goto yy368; - if (yych <= '9') goto yy369; - goto yy216; + if (yych <= '2') goto yy367; + if (yych <= '9') goto yy368; + goto yy215; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy212; - if (yych <= 'q') goto yy216; - goto yy213; + if (yych <= 'n') goto yy211; + if (yych <= 'q') goto yy215; + goto yy212; } else { - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy359: - YYDEBUG(359, *YYCURSOR); +yy358: + YYDEBUG(358, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '1') { - if (yych <= '/') goto yy216; - if (yych >= '1') goto yy361; + if (yych <= '/') goto yy215; + if (yych >= '1') goto yy360; } else { - if (yych <= '2') goto yy209; - if (yych <= '9') goto yy210; - goto yy216; + if (yych <= '2') goto yy208; + if (yych <= '9') goto yy209; + goto yy215; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy212; - if (yych <= 'q') goto yy216; - goto yy213; + if (yych <= 'n') goto yy211; + if (yych <= 'q') goto yy215; + goto yy212; } else { - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy360: - YYDEBUG(360, *YYCURSOR); +yy359: + YYDEBUG(359, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '/') { - if (yych <= ',') goto yy216; - if (yych <= '-') goto yy362; - if (yych <= '.') goto yy331; - goto yy216; + if (yych <= ',') goto yy215; + if (yych <= '-') goto yy361; + if (yych <= '.') goto yy330; + goto yy215; } else { - if (yych <= '0') goto yy332; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; + if (yych <= '0') goto yy331; + if (yych <= '1') goto yy301; + if (yych <= '2') goto yy302; + goto yy296; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy221; - if (yych == 'n') goto yy212; - goto yy216; + if (yych <= ':') goto yy220; + if (yych == 'n') goto yy211; + goto yy215; } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 'r') goto yy212; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy361: - YYDEBUG(361, *YYCURSOR); +yy360: + YYDEBUG(360, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '/') { - if (yych <= ',') goto yy216; - if (yych <= '-') goto yy362; - if (yych <= '.') goto yy300; - goto yy216; + if (yych <= ',') goto yy215; + if (yych <= '-') goto yy361; + if (yych <= '.') goto yy299; + goto yy215; } else { - if (yych <= '0') goto yy301; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; + if (yych <= '0') goto yy300; + if (yych <= '1') goto yy301; + if (yych <= '2') goto yy302; + goto yy296; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy264; - if (yych == 'n') goto yy212; - goto yy216; + if (yych <= ':') goto yy263; + if (yych == 'n') goto yy211; + goto yy215; } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 'r') goto yy212; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy362: - YYDEBUG(362, *YYCURSOR); +yy361: + YYDEBUG(361, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(363, *YYCURSOR); + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; + YYDEBUG(362, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '/') goto yy364; - if (yych <= '9') goto yy365; -yy364: - YYDEBUG(364, *YYCURSOR); + if ((yych = *YYCURSOR) <= '/') goto yy363; + if (yych <= '9') goto yy364; +yy363: + YYDEBUG(363, *YYCURSOR); #line 1498 "ext/date/lib/parse_date.re" { int length = 0; @@ -6624,644 +6605,644 @@ yy364: TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -#line 6628 "ext/date/lib/parse_date.c" -yy365: +#line 6609 "ext/date/lib/parse_date.c" +yy364: + YYDEBUG(364, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy363; + if (yych >= ':') goto yy363; YYDEBUG(365, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy364; - if (yych >= ':') goto yy364; + if (yych <= '/') goto yy363; + if (yych >= ':') goto yy363; YYDEBUG(366, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy364; - if (yych >= ':') goto yy364; + goto yy363; +yy367: YYDEBUG(367, *YYCURSOR); - yych = *++YYCURSOR; - goto yy364; -yy368: - YYDEBUG(368, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '/') { - if (yych <= ',') goto yy216; - if (yych <= '-') goto yy362; - if (yych <= '.') goto yy300; - goto yy216; + if (yych <= ',') goto yy215; + if (yych <= '-') goto yy361; + if (yych <= '.') goto yy299; + goto yy215; } else { - if (yych <= '0') goto yy332; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; + if (yych <= '0') goto yy331; + if (yych <= '1') goto yy301; + if (yych <= '2') goto yy302; + goto yy296; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy264; - if (yych == 'n') goto yy212; - goto yy216; + if (yych <= ':') goto yy263; + if (yych == 'n') goto yy211; + goto yy215; } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 'r') goto yy212; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy369: - YYDEBUG(369, *YYCURSOR); +yy368: + YYDEBUG(368, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '/') { - if (yych <= ',') goto yy216; - if (yych <= '-') goto yy362; - if (yych <= '.') goto yy300; - goto yy216; + if (yych <= ',') goto yy215; + if (yych <= '-') goto yy361; + if (yych <= '.') goto yy299; + goto yy215; } else { - if (yych <= '0') goto yy332; - if (yych <= '1') goto yy302; - if (yych <= '2') goto yy303; - goto yy297; + if (yych <= '0') goto yy331; + if (yych <= '1') goto yy301; + if (yych <= '2') goto yy302; + goto yy296; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy264; - if (yych == 'n') goto yy212; - goto yy216; + if (yych <= ':') goto yy263; + if (yych == 'n') goto yy211; + goto yy215; } else { - if (yych <= 'r') goto yy213; - if (yych <= 's') goto yy211; - if (yych <= 't') goto yy214; - goto yy216; + if (yych <= 'r') goto yy212; + if (yych <= 's') goto yy210; + if (yych <= 't') goto yy213; + goto yy215; } } -yy370: - YYDEBUG(370, *YYCURSOR); +yy369: + YYDEBUG(369, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'B') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'C') goto yy193; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'C') goto yy192; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'b') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 'c') goto yy371; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'c') goto yy370; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy371: - YYDEBUG(371, *YYCURSOR); +yy370: + YYDEBUG(370, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; } else { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } } } else { if (yych <= '^') { if (yych <= 'D') { - if (yych <= '@') goto yy194; - goto yy143; + if (yych <= '@') goto yy193; + goto yy142; } else { - if (yych <= 'E') goto yy202; - if (yych <= 'Z') goto yy143; - goto yy194; + if (yych <= 'E') goto yy201; + if (yych <= 'Z') goto yy142; + goto yy193; } } else { if (yych <= 'd') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy193; + goto yy150; } else { - if (yych <= 'e') goto yy373; - if (yych <= 'z') goto yy151; - goto yy194; + if (yych <= 'e') goto yy372; + if (yych <= 'z') goto yy150; + goto yy193; } } } -yy372: - YYDEBUG(372, *YYCURSOR); +yy371: + YYDEBUG(371, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 8) { - goto yy149; + goto yy148; } - if (yych <= '/') goto yy196; - if (yych <= '0') goto yy357; - if (yych <= '2') goto yy358; - if (yych <= '3') goto yy359; - goto yy196; -yy373: - YYDEBUG(373, *YYCURSOR); + if (yych <= '/') goto yy195; + if (yych <= '0') goto yy356; + if (yych <= '2') goto yy357; + if (yych <= '3') goto yy358; + goto yy195; +yy372: + YYDEBUG(372, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'M') goto yy203; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'M') goto yy202; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'l') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'm') goto yy374; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'm') goto yy373; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy374: - YYDEBUG(374, *YYCURSOR); +yy373: + YYDEBUG(373, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'A') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'B') goto yy204; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'B') goto yy203; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'a') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'b') goto yy375; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'b') goto yy374; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy375: - YYDEBUG(375, *YYCURSOR); +yy374: + YYDEBUG(374, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { - if (yych <= 'E') goto yy205; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= 'E') goto yy204; + if (yych == '_') goto yy147; + goto yy3; } else { - if (yych == 'e') goto yy376; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych == 'e') goto yy375; + if (yych <= 'z') goto yy153; + goto yy3; } } +yy375: + YYDEBUG(375, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy205; + if (yych != 'r') goto yy154; yy376: YYDEBUG(376, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy206; - if (yych != 'r') goto yy155; -yy377: - YYDEBUG(377, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { - goto yy154; + goto yy153; } if (yych <= '-') { if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy194; + if (yych == '\t') goto yy195; + goto yy193; } else { - if (yych <= ' ') goto yy196; - if (yych <= ',') goto yy194; + if (yych <= ' ') goto yy195; + if (yych <= ',') goto yy193; } } else { if (yych <= '9') { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } else { - if (yych == '_') goto yy148; - goto yy194; + if (yych == '_') goto yy147; + goto yy193; } } -yy378: - YYDEBUG(378, *YYCURSOR); +yy377: + YYDEBUG(377, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 8) { - goto yy149; + goto yy148; } - goto yy196; -yy379: - YYDEBUG(379, *YYCURSOR); + goto yy195; +yy378: + YYDEBUG(378, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 't') goto yy380; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 't') goto yy379; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy380: - YYDEBUG(380, *YYCURSOR); +yy379: + YYDEBUG(379, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; + if (yych <= ')') goto yy139; + goto yy193; } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; + if (yych <= '-') goto yy196; + if (yych <= '.') goto yy195; + goto yy193; } } } else { if (yych <= 'Z') { if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych != 'O') goto yy143; + if (yych != 'O') goto yy142; } } else { if (yych <= 'n') { - if (yych <= '`') goto yy194; - goto yy143; + if (yych <= '`') goto yy193; + goto yy142; } else { - if (yych <= 'o') goto yy381; - if (yych <= 'z') goto yy143; - goto yy194; + if (yych <= 'o') goto yy380; + if (yych <= 'z') goto yy142; + goto yy193; } } } -yy381: - YYDEBUG(381, *YYCURSOR); +yy380: + YYDEBUG(380, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'B') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'A') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy143; } } else { if (yych <= 'a') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'b') goto yy382; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'b') goto yy381; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy382: - YYDEBUG(382, *YYCURSOR); +yy381: + YYDEBUG(381, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy144; } } else { if (yych <= 'd') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 'e') goto yy383; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'e') goto yy382; + if (yych <= 'z') goto yy144; + goto yy3; } } -yy383: - YYDEBUG(383, *YYCURSOR); +yy382: + YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'Q') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'R') goto yy206; - if (yych == 'r') goto yy206; - goto yy4; + if (yych <= 'R') goto yy205; + if (yych == 'r') goto yy205; + goto yy3; } -yy384: - YYDEBUG(384, *YYCURSOR); +yy383: + YYDEBUG(383, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'T') goto yy380; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'T') goto yy379; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 't') goto yy385; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 't') goto yy384; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy385: - YYDEBUG(385, *YYCURSOR); +yy384: + YYDEBUG(384, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy371; } else { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } } } else { if (yych <= '^') { if (yych <= 'N') { - if (yych <= '@') goto yy194; - goto yy143; + if (yych <= '@') goto yy193; + goto yy142; } else { - if (yych <= 'O') goto yy381; - if (yych <= 'Z') goto yy143; - goto yy194; + if (yych <= 'O') goto yy380; + if (yych <= 'Z') goto yy142; + goto yy193; } } else { if (yych <= 'n') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy193; + goto yy150; } else { - if (yych <= 'o') goto yy386; - if (yych <= 'z') goto yy151; - goto yy194; + if (yych <= 'o') goto yy385; + if (yych <= 'z') goto yy150; + goto yy193; } } } -yy386: - YYDEBUG(386, *YYCURSOR); +yy385: + YYDEBUG(385, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'A') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'B') goto yy382; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'B') goto yy381; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'a') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'b') goto yy387; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'b') goto yy386; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy387: - YYDEBUG(387, *YYCURSOR); +yy386: + YYDEBUG(386, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'E') goto yy383; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'E') goto yy382; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'e') goto yy388; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'e') goto yy387; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy388: - YYDEBUG(388, *YYCURSOR); +yy387: + YYDEBUG(387, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { - if (yych <= 'R') goto yy206; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= 'R') goto yy205; + if (yych == '_') goto yy147; + goto yy3; } else { - if (yych == 'r') goto yy377; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych == 'r') goto yy376; + if (yych <= 'z') goto yy153; + goto yy3; } } -yy389: - YYDEBUG(389, *YYCURSOR); +yy388: + YYDEBUG(388, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'G') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'F') goto yy142; - goto yy397; + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy141; + goto yy396; } } else { if (yych <= 'f') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 'g') goto yy397; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'g') goto yy396; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy390: - YYDEBUG(390, *YYCURSOR); +yy389: + YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy142; - goto yy394; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy141; + goto yy393; } } else { if (yych <= 'q') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 'r') goto yy394; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'r') goto yy393; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy391: - YYDEBUG(391, *YYCURSOR); +yy390: + YYDEBUG(390, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'N') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy141; } } else { if (yych <= 'n') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 'o') goto yy392; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'o') goto yy391; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy392: - YYDEBUG(392, *YYCURSOR); +yy391: + YYDEBUG(391, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '@') { - if (yych == ')') goto yy140; + if (yych == ')') goto yy139; } else { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy393; - if (yych <= 'z') goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy392; + if (yych <= 'z') goto yy142; } -yy393: - YYDEBUG(393, *YYCURSOR); +yy392: + YYDEBUG(392, *YYCURSOR); #line 1556 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("ago"); @@ -7282,1756 +7263,1756 @@ yy393: TIMELIB_DEINIT; return TIMELIB_AGO; } -#line 7286 "ext/date/lib/parse_date.c" -yy394: - YYDEBUG(394, *YYCURSOR); +#line 7267 "ext/date/lib/parse_date.c" +yy393: + YYDEBUG(393, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; + if (yych <= ')') goto yy139; + goto yy193; } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; + if (yych <= '-') goto yy196; + if (yych <= '.') goto yy195; + goto yy193; } } } else { if (yych <= 'Z') { if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych != 'I') goto yy143; + if (yych != 'I') goto yy142; } } else { if (yych <= 'h') { - if (yych <= '`') goto yy194; - goto yy143; + if (yych <= '`') goto yy193; + goto yy142; } else { - if (yych <= 'i') goto yy395; - if (yych <= 'z') goto yy143; - goto yy194; + if (yych <= 'i') goto yy394; + if (yych <= 'z') goto yy142; + goto yy193; } } } -yy395: - YYDEBUG(395, *YYCURSOR); +yy394: + YYDEBUG(394, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'L') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'K') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'K') goto yy143; } } else { if (yych <= 'k') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'l') goto yy396; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'l') goto yy395; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy396: - YYDEBUG(396, *YYCURSOR); +yy395: + YYDEBUG(395, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy194; + if (yych == '\t') goto yy195; + goto yy193; } else { - if (yych <= ' ') goto yy196; - if (yych == ')') goto yy140; - goto yy194; + if (yych <= ' ') goto yy195; + if (yych == ')') goto yy139; + goto yy193; } } else { if (yych <= '@') { - if (yych == '/') goto yy194; - if (yych <= '9') goto yy196; - goto yy194; + if (yych == '/') goto yy193; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy145; - goto yy194; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy193; + if (yych <= 'z') goto yy144; + goto yy193; } } -yy397: - YYDEBUG(397, *YYCURSOR); +yy396: + YYDEBUG(396, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; + if (yych <= ')') goto yy139; + goto yy193; } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; + if (yych <= '-') goto yy196; + if (yych <= '.') goto yy195; + goto yy193; } } } else { if (yych <= 'Z') { if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych != 'U') goto yy143; + if (yych != 'U') goto yy142; } } else { if (yych <= 't') { - if (yych <= '`') goto yy194; - goto yy143; + if (yych <= '`') goto yy193; + goto yy142; } else { - if (yych <= 'u') goto yy398; - if (yych <= 'z') goto yy143; - goto yy194; + if (yych <= 'u') goto yy397; + if (yych <= 'z') goto yy142; + goto yy193; } } } -yy398: - YYDEBUG(398, *YYCURSOR); +yy397: + YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'R') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy143; } } else { if (yych <= 'r') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 's') goto yy399; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 's') goto yy398; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy399: - YYDEBUG(399, *YYCURSOR); +yy398: + YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy144; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 't') goto yy400; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 't') goto yy399; + if (yych <= 'z') goto yy144; + goto yy3; } } -yy400: - YYDEBUG(400, *YYCURSOR); +yy399: + YYDEBUG(399, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '.') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy196; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy195; } else { - if (yych <= '/') goto yy194; - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '/') goto yy193; + if (yych <= '9') goto yy195; + goto yy193; } } -yy401: - YYDEBUG(401, *YYCURSOR); +yy400: + YYDEBUG(400, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'F') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'G') goto yy397; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'G') goto yy396; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'f') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 'g') goto yy408; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'g') goto yy407; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy402: - YYDEBUG(402, *YYCURSOR); +yy401: + YYDEBUG(401, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'R') goto yy394; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'R') goto yy393; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 'r') goto yy405; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'r') goto yy404; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy403: - YYDEBUG(403, *YYCURSOR); +yy402: + YYDEBUG(402, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'O') goto yy392; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'O') goto yy391; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'n') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 'o') goto yy404; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'o') goto yy403; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy404: - YYDEBUG(404, *YYCURSOR); +yy403: + YYDEBUG(403, *YYCURSOR); yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy393; + if (yych == ')') goto yy139; + goto yy392; } else { - if (yych == '.') goto yy393; - goto yy148; + if (yych == '.') goto yy392; + goto yy147; } } else { if (yych <= '^') { - if (yych <= '@') goto yy393; - if (yych <= 'Z') goto yy143; - goto yy393; + if (yych <= '@') goto yy392; + if (yych <= 'Z') goto yy142; + goto yy392; } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy393; - if (yych <= 'z') goto yy151; - goto yy393; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy392; + if (yych <= 'z') goto yy150; + goto yy392; } } -yy405: - YYDEBUG(405, *YYCURSOR); +yy404: + YYDEBUG(404, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy371; } else { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } } } else { if (yych <= '^') { if (yych <= 'H') { - if (yych <= '@') goto yy194; - goto yy143; + if (yych <= '@') goto yy193; + goto yy142; } else { - if (yych <= 'I') goto yy395; - if (yych <= 'Z') goto yy143; - goto yy194; + if (yych <= 'I') goto yy394; + if (yych <= 'Z') goto yy142; + goto yy193; } } else { if (yych <= 'h') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy193; + goto yy150; } else { - if (yych <= 'i') goto yy406; - if (yych <= 'z') goto yy151; - goto yy194; + if (yych <= 'i') goto yy405; + if (yych <= 'z') goto yy150; + goto yy193; } } } -yy406: - YYDEBUG(406, *YYCURSOR); +yy405: + YYDEBUG(405, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'K') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'L') goto yy396; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'L') goto yy395; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'k') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'l') goto yy407; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'l') goto yy406; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy407: - YYDEBUG(407, *YYCURSOR); +yy406: + YYDEBUG(406, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy194; - goto yy196; + if (yych == '\t') goto yy195; + if (yych <= 0x1F) goto yy193; + goto yy195; } else { if (yych <= ')') { - if (yych <= '(') goto yy194; - goto yy140; + if (yych <= '(') goto yy193; + goto yy139; } else { - if (yych <= ',') goto yy194; - if (yych <= '-') goto yy378; - goto yy196; + if (yych <= ',') goto yy193; + if (yych <= '-') goto yy377; + goto yy195; } } } else { if (yych <= 'Z') { - if (yych <= '/') goto yy148; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy194; - goto yy145; + if (yych <= '/') goto yy147; + if (yych <= '9') goto yy195; + if (yych <= '@') goto yy193; + goto yy144; } else { if (yych <= '_') { - if (yych <= '^') goto yy194; - goto yy148; + if (yych <= '^') goto yy193; + goto yy147; } else { - if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy153; - goto yy194; + if (yych <= '`') goto yy193; + if (yych <= 'z') goto yy152; + goto yy193; } } } -yy408: - YYDEBUG(408, *YYCURSOR); +yy407: + YYDEBUG(407, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy371; } else { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } } } else { if (yych <= '^') { if (yych <= 'T') { - if (yych <= '@') goto yy194; - goto yy143; + if (yych <= '@') goto yy193; + goto yy142; } else { - if (yych <= 'U') goto yy398; - if (yych <= 'Z') goto yy143; - goto yy194; + if (yych <= 'U') goto yy397; + if (yych <= 'Z') goto yy142; + goto yy193; } } else { if (yych <= 't') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy193; + goto yy150; } else { - if (yych <= 'u') goto yy409; - if (yych <= 'z') goto yy151; - goto yy194; + if (yych <= 'u') goto yy408; + if (yych <= 'z') goto yy150; + goto yy193; } } } -yy409: - YYDEBUG(409, *YYCURSOR); +yy408: + YYDEBUG(408, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'S') goto yy399; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'S') goto yy398; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'r') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 's') goto yy410; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 's') goto yy409; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy410: - YYDEBUG(410, *YYCURSOR); +yy409: + YYDEBUG(409, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'T') goto yy400; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'T') goto yy399; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 't') goto yy411; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 't') goto yy410; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy411: - YYDEBUG(411, *YYCURSOR); +yy410: + YYDEBUG(410, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { - goto yy154; + goto yy153; } if (yych <= ',') { if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy194; + if (yych == '\t') goto yy195; + goto yy193; } else { - if (yych <= ' ') goto yy196; - if (yych == ')') goto yy140; - goto yy194; + if (yych <= ' ') goto yy195; + if (yych == ')') goto yy139; + goto yy193; } } else { if (yych <= '/') { - if (yych <= '-') goto yy378; - if (yych <= '.') goto yy196; - goto yy148; + if (yych <= '-') goto yy377; + if (yych <= '.') goto yy195; + goto yy147; } else { - if (yych <= '9') goto yy196; - if (yych == '_') goto yy148; - goto yy194; + if (yych <= '9') goto yy195; + if (yych == '_') goto yy147; + goto yy193; } } -yy412: - YYDEBUG(412, *YYCURSOR); +yy411: + YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == 'L') goto yy419; - if (yych <= 'M') goto yy142; - goto yy418; + if (yych == 'L') goto yy418; + if (yych <= 'M') goto yy141; + goto yy417; } } else { if (yych <= 'l') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'k') goto yy142; - goto yy419; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + if (yych <= 'k') goto yy141; + goto yy418; } else { - if (yych == 'n') goto yy418; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych == 'n') goto yy417; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy413: - YYDEBUG(413, *YYCURSOR); +yy412: + YYDEBUG(412, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy141; } } else { if (yych <= 'm') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 'n') goto yy414; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'n') goto yy413; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy414: - YYDEBUG(414, *YYCURSOR); +yy413: + YYDEBUG(413, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; + if (yych <= ')') goto yy139; + goto yy193; } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; + if (yych <= '-') goto yy196; + if (yych <= '.') goto yy195; + goto yy193; } } } else { if (yych <= 'Z') { if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych != 'U') goto yy143; + if (yych != 'U') goto yy142; } } else { if (yych <= 't') { - if (yych <= '`') goto yy194; - goto yy143; + if (yych <= '`') goto yy193; + goto yy142; } else { - if (yych <= 'u') goto yy415; - if (yych <= 'z') goto yy143; - goto yy194; + if (yych <= 'u') goto yy414; + if (yych <= 'z') goto yy142; + goto yy193; } } } -yy415: - YYDEBUG(415, *YYCURSOR); +yy414: + YYDEBUG(414, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; } else { if (yych <= '`') { - if (yych <= 'Z') goto yy144; - goto yy4; + if (yych <= 'Z') goto yy143; + goto yy3; } else { - if (yych <= 'a') goto yy416; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'a') goto yy415; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy416: - YYDEBUG(416, *YYCURSOR); +yy415: + YYDEBUG(415, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy144; } } else { if (yych <= 'q') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 'r') goto yy417; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'r') goto yy416; + if (yych <= 'z') goto yy144; + goto yy3; } } -yy417: - YYDEBUG(417, *YYCURSOR); +yy416: + YYDEBUG(416, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'X') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'Y') goto yy206; - if (yych == 'y') goto yy206; - goto yy4; + if (yych <= 'Y') goto yy205; + if (yych == 'y') goto yy205; + goto yy3; } -yy418: - YYDEBUG(418, *YYCURSOR); +yy417: + YYDEBUG(417, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; + if (yych <= ')') goto yy139; + goto yy193; } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; + if (yych <= '-') goto yy196; + if (yych <= '.') goto yy195; + goto yy193; } } } else { if (yych <= 'Z') { if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych == 'E') goto yy420; - goto yy143; + if (yych == 'E') goto yy419; + goto yy142; } } else { if (yych <= 'd') { - if (yych <= '`') goto yy194; - goto yy143; + if (yych <= '`') goto yy193; + goto yy142; } else { - if (yych <= 'e') goto yy420; - if (yych <= 'z') goto yy143; - goto yy194; + if (yych <= 'e') goto yy419; + if (yych <= 'z') goto yy142; + goto yy193; } } } -yy419: - YYDEBUG(419, *YYCURSOR); +yy418: + YYDEBUG(418, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; + if (yych <= ')') goto yy139; + goto yy193; } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; + if (yych <= '-') goto yy196; + if (yych <= '.') goto yy195; + goto yy193; } } } else { if (yych <= 'Z') { if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych != 'Y') goto yy143; + if (yych != 'Y') goto yy142; } } else { if (yych <= 'x') { - if (yych <= '`') goto yy194; - goto yy143; + if (yych <= '`') goto yy193; + goto yy142; } else { - if (yych <= 'y') goto yy420; - if (yych <= 'z') goto yy143; - goto yy194; + if (yych <= 'y') goto yy419; + if (yych <= 'z') goto yy142; + goto yy193; } } } -yy420: - YYDEBUG(420, *YYCURSOR); +yy419: + YYDEBUG(419, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy194; + if (yych == '\t') goto yy195; + goto yy193; } else { - if (yych <= ' ') goto yy196; - if (yych == ')') goto yy140; - goto yy194; + if (yych <= ' ') goto yy195; + if (yych == ')') goto yy139; + goto yy193; } } else { if (yych <= '@') { - if (yych == '/') goto yy194; - if (yych <= '9') goto yy196; - goto yy194; + if (yych == '/') goto yy193; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy144; - goto yy194; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy193; + if (yych <= 'z') goto yy143; + goto yy193; } } -yy421: - YYDEBUG(421, *YYCURSOR); +yy420: + YYDEBUG(420, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '.') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych == '-') goto yy148; - goto yy4; + if (yych == '-') goto yy147; + goto yy3; } } else { if (yych <= '@') { - if (yych <= '/') goto yy148; - goto yy4; + if (yych <= '/') goto yy147; + goto yy3; } else { - if (yych == 'L') goto yy419; - goto yy142; + if (yych == 'L') goto yy418; + goto yy141; } } } else { if (yych <= '`') { if (yych <= 'Z') { - if (yych <= 'N') goto yy418; - goto yy142; + if (yych <= 'N') goto yy417; + goto yy141; } else { - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } } else { if (yych <= 'm') { - if (yych == 'l') goto yy428; - goto yy147; + if (yych == 'l') goto yy427; + goto yy146; } else { - if (yych <= 'n') goto yy427; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'n') goto yy426; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy422: - YYDEBUG(422, *YYCURSOR); +yy421: + YYDEBUG(421, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'N') goto yy414; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'N') goto yy413; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 'n') goto yy423; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'n') goto yy422; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy423: - YYDEBUG(423, *YYCURSOR); +yy422: + YYDEBUG(422, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy371; } else { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } } } else { if (yych <= '^') { if (yych <= 'T') { - if (yych <= '@') goto yy194; - goto yy143; + if (yych <= '@') goto yy193; + goto yy142; } else { - if (yych <= 'U') goto yy415; - if (yych <= 'Z') goto yy143; - goto yy194; + if (yych <= 'U') goto yy414; + if (yych <= 'Z') goto yy142; + goto yy193; } } else { if (yych <= 't') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy193; + goto yy150; } else { - if (yych <= 'u') goto yy424; - if (yych <= 'z') goto yy151; - goto yy194; + if (yych <= 'u') goto yy423; + if (yych <= 'z') goto yy150; + goto yy193; } } } -yy424: - YYDEBUG(424, *YYCURSOR); +yy423: + YYDEBUG(423, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '_') { - if (yych <= 'A') goto yy416; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'A') goto yy415; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy425; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy424; + if (yych <= 'z') goto yy151; + goto yy3; } } -yy425: - YYDEBUG(425, *YYCURSOR); +yy424: + YYDEBUG(424, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'R') goto yy417; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'R') goto yy416; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'r') goto yy426; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'r') goto yy425; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy426: - YYDEBUG(426, *YYCURSOR); +yy425: + YYDEBUG(425, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { - if (yych <= 'Y') goto yy206; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= 'Y') goto yy205; + if (yych == '_') goto yy147; + goto yy3; } else { - if (yych == 'y') goto yy377; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych == 'y') goto yy376; + if (yych <= 'z') goto yy153; + goto yy3; } } -yy427: - YYDEBUG(427, *YYCURSOR); +yy426: + YYDEBUG(426, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy371; } else { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } } } else { if (yych <= '^') { if (yych <= 'D') { - if (yych <= '@') goto yy194; - goto yy143; + if (yych <= '@') goto yy193; + goto yy142; } else { - if (yych <= 'E') goto yy420; - if (yych <= 'Z') goto yy143; - goto yy194; + if (yych <= 'E') goto yy419; + if (yych <= 'Z') goto yy142; + goto yy193; } } else { if (yych <= 'd') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy193; + goto yy150; } else { - if (yych <= 'e') goto yy429; - if (yych <= 'z') goto yy151; - goto yy194; + if (yych <= 'e') goto yy428; + if (yych <= 'z') goto yy150; + goto yy193; } } } -yy428: - YYDEBUG(428, *YYCURSOR); +yy427: + YYDEBUG(427, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy371; } else { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } } } else { if (yych <= '^') { if (yych <= 'X') { - if (yych <= '@') goto yy194; - goto yy143; + if (yych <= '@') goto yy193; + goto yy142; } else { - if (yych <= 'Y') goto yy420; - if (yych <= 'Z') goto yy143; - goto yy194; + if (yych <= 'Y') goto yy419; + if (yych <= 'Z') goto yy142; + goto yy193; } } else { if (yych <= 'x') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy193; + goto yy150; } else { - if (yych <= 'y') goto yy429; - if (yych <= 'z') goto yy151; - goto yy194; + if (yych <= 'y') goto yy428; + if (yych <= 'z') goto yy150; + goto yy193; } } } -yy429: - YYDEBUG(429, *YYCURSOR); +yy428: + YYDEBUG(428, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy194; - goto yy196; + if (yych == '\t') goto yy195; + if (yych <= 0x1F) goto yy193; + goto yy195; } else { if (yych <= ')') { - if (yych <= '(') goto yy194; - goto yy140; + if (yych <= '(') goto yy193; + goto yy139; } else { - if (yych <= ',') goto yy194; - if (yych <= '-') goto yy378; - goto yy196; + if (yych <= ',') goto yy193; + if (yych <= '-') goto yy377; + goto yy195; } } } else { if (yych <= 'Z') { - if (yych <= '/') goto yy148; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy194; - goto yy144; + if (yych <= '/') goto yy147; + if (yych <= '9') goto yy195; + if (yych <= '@') goto yy193; + goto yy143; } else { if (yych <= '_') { - if (yych <= '^') goto yy194; - goto yy148; + if (yych <= '^') goto yy193; + goto yy147; } else { - if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy152; - goto yy194; + if (yych <= '`') goto yy193; + if (yych <= 'z') goto yy151; + goto yy193; } } } -yy430: - YYDEBUG(430, *YYCURSOR); +yy429: + YYDEBUG(429, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy4; - goto yy196; + if (yych == '\t') goto yy195; + if (yych <= 0x1F) goto yy3; + goto yy195; } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy196; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy195; } } else { if (yych <= 'H') { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy4; - goto yy142; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy195; + if (yych <= '@') goto yy3; + goto yy141; } else { if (yych <= 'Z') { - if (yych >= 'J') goto yy142; + if (yych >= 'J') goto yy141; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy141; + goto yy3; } } } -yy431: - YYDEBUG(431, *YYCURSOR); +yy430: + YYDEBUG(430, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy4; + if (yych == '\t') goto yy195; + goto yy3; } else { - if (yych <= ' ') goto yy196; - if (yych == ')') goto yy140; - goto yy4; + if (yych <= ' ') goto yy195; + if (yych == ')') goto yy139; + goto yy3; } } else { if (yych <= '@') { - if (yych == '/') goto yy4; - if (yych <= '9') goto yy196; - goto yy4; + if (yych == '/') goto yy3; + if (yych <= '9') goto yy195; + goto yy3; } else { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy142; + goto yy3; } } -yy432: - YYDEBUG(432, *YYCURSOR); +yy431: + YYDEBUG(431, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy4; - goto yy196; + if (yych == '\t') goto yy195; + if (yych <= 0x1F) goto yy3; + goto yy195; } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy196; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy195; } } else { if (yych <= 'H') { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy4; - goto yy142; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy195; + if (yych <= '@') goto yy3; + goto yy141; } else { if (yych <= 'Z') { - if (yych >= 'J') goto yy142; + if (yych >= 'J') goto yy141; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy141; + goto yy3; } } } - YYDEBUG(433, *YYCURSOR); + YYDEBUG(432, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy4; - goto yy196; + if (yych == '\t') goto yy195; + if (yych <= 0x1F) goto yy3; + goto yy195; } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy196; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy195; } } else { if (yych <= 'H') { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy4; - goto yy143; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy195; + if (yych <= '@') goto yy3; + goto yy142; } else { if (yych <= 'Z') { - if (yych >= 'J') goto yy143; + if (yych >= 'J') goto yy142; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy142; + goto yy3; } } } - YYDEBUG(434, *YYCURSOR); + YYDEBUG(433, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy4; + if (yych == '\t') goto yy195; + goto yy3; } else { - if (yych <= ' ') goto yy196; - if (yych == ')') goto yy140; - goto yy4; + if (yych <= ' ') goto yy195; + if (yych == ')') goto yy139; + goto yy3; } } else { if (yych <= '@') { - if (yych == '/') goto yy4; - if (yych <= '9') goto yy196; - goto yy4; + if (yych == '/') goto yy3; + if (yych <= '9') goto yy195; + goto yy3; } else { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy435: - YYDEBUG(435, *YYCURSOR); +yy434: + YYDEBUG(434, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= 0x1F) { - if (yych == '\t') goto yy196; - goto yy4; + if (yych == '\t') goto yy195; + goto yy3; } else { - if (yych <= ' ') goto yy196; - if (yych == ')') goto yy140; - goto yy4; + if (yych <= ' ') goto yy195; + if (yych == ')') goto yy139; + goto yy3; } } else { if (yych <= '@') { - if (yych == '/') goto yy4; - if (yych <= '9') goto yy196; - goto yy4; + if (yych == '/') goto yy3; + if (yych <= '9') goto yy195; + goto yy3; } else { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy436: - YYDEBUG(436, *YYCURSOR); +yy435: + YYDEBUG(435, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy4; - goto yy196; + if (yych == '\t') goto yy195; + if (yych <= 0x1F) goto yy3; + goto yy195; } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy196; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy195; } } else { if (yych <= 'H') { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy4; - goto yy142; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy195; + if (yych <= '@') goto yy3; + goto yy141; } else { if (yych <= 'Z') { - if (yych <= 'I') goto yy431; - goto yy142; + if (yych <= 'I') goto yy430; + goto yy141; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy141; + goto yy3; } } } -yy437: - YYDEBUG(437, *YYCURSOR); +yy436: + YYDEBUG(436, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy3; + goto yy60; } else { if (yych <= '9') { - if (yych <= '/') goto yy4; - goto yy457; + if (yych <= '/') goto yy3; + goto yy456; } else { - if (yych <= ':') goto yy163; - if (yych <= 'C') goto yy4; - goto yy61; + if (yych <= ':') goto yy162; + if (yych <= 'C') goto yy3; + goto yy60; } } } else { if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy4; - goto yy61; + if (yych == 'F') goto yy60; + if (yych <= 'G') goto yy3; + goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy4; - goto yy61; + if (yych <= 'L') goto yy3; + goto yy60; } else { - if (yych <= 'R') goto yy4; - if (yych <= 'T') goto yy61; - goto yy4; + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy60; + goto yy3; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy4; - if (yych <= 'Y') goto yy61; - goto yy4; + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy60; + goto yy3; } else { if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy4; + if (yych <= 'd') goto yy60; + goto yy3; } else { - if (yych == 'g') goto yy4; - goto yy61; + if (yych == 'g') goto yy3; + goto yy60; } } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; + if (yych == 'm') goto yy60; + if (yych <= 'r') goto yy3; + goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; + if (yych <= 'v') goto yy3; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy4; + if (yych == 'y') goto yy60; + goto yy3; } } } } -yy438: - YYDEBUG(438, *YYCURSOR); +yy437: + YYDEBUG(437, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy3; + goto yy60; } else { if (yych <= '4') { - if (yych <= '/') goto yy4; - goto yy457; + if (yych <= '/') goto yy3; + goto yy456; } else { - if (yych <= '5') goto yy442; - if (yych <= '9') goto yy443; - goto yy163; + if (yych <= '5') goto yy441; + if (yych <= '9') goto yy442; + goto yy162; } } } else { if (yych <= 'G') { if (yych <= 'D') { - if (yych <= 'C') goto yy4; - goto yy61; + if (yych <= 'C') goto yy3; + goto yy60; } else { - if (yych == 'F') goto yy61; - goto yy4; + if (yych == 'F') goto yy60; + goto yy3; } } else { if (yych <= 'L') { - if (yych <= 'H') goto yy61; - goto yy4; + if (yych <= 'H') goto yy60; + goto yy3; } else { - if (yych <= 'M') goto yy61; - if (yych <= 'R') goto yy4; - goto yy61; + if (yych <= 'M') goto yy60; + if (yych <= 'R') goto yy3; + goto yy60; } } } } else { if (yych <= 'g') { if (yych <= 'Y') { - if (yych == 'W') goto yy61; - if (yych <= 'X') goto yy4; - goto yy61; + if (yych == 'W') goto yy60; + if (yych <= 'X') goto yy3; + goto yy60; } else { if (yych <= 'd') { - if (yych <= 'c') goto yy4; - goto yy61; + if (yych <= 'c') goto yy3; + goto yy60; } else { - if (yych == 'f') goto yy61; - goto yy4; + if (yych == 'f') goto yy60; + goto yy3; } } } else { if (yych <= 't') { if (yych <= 'l') { - if (yych <= 'h') goto yy61; - goto yy4; + if (yych <= 'h') goto yy60; + goto yy3; } else { - if (yych <= 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; + if (yych <= 'm') goto yy60; + if (yych <= 'r') goto yy3; + goto yy60; } } else { if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; + if (yych <= 'v') goto yy3; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy4; + if (yych == 'y') goto yy60; + goto yy3; } } } } -yy439: - YYDEBUG(439, *YYCURSOR); +yy438: + YYDEBUG(438, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= 'C') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy3; + goto yy60; } else { if (yych <= '5') { - if (yych <= '/') goto yy4; - goto yy442; + if (yych <= '/') goto yy3; + goto yy441; } else { - if (yych <= '9') goto yy443; - if (yych <= ':') goto yy163; - goto yy4; + if (yych <= '9') goto yy442; + if (yych <= ':') goto yy162; + goto yy3; } } } else { if (yych <= 'G') { - if (yych == 'E') goto yy4; - if (yych <= 'F') goto yy61; - goto yy4; + if (yych == 'E') goto yy3; + if (yych <= 'F') goto yy60; + goto yy3; } else { if (yych <= 'L') { - if (yych <= 'H') goto yy61; - goto yy4; + if (yych <= 'H') goto yy60; + goto yy3; } else { - if (yych <= 'M') goto yy61; - if (yych <= 'R') goto yy4; - goto yy61; + if (yych <= 'M') goto yy60; + if (yych <= 'R') goto yy3; + goto yy60; } } } } else { if (yych <= 'g') { if (yych <= 'Y') { - if (yych == 'W') goto yy61; - if (yych <= 'X') goto yy4; - goto yy61; + if (yych == 'W') goto yy60; + if (yych <= 'X') goto yy3; + goto yy60; } else { if (yych <= 'd') { - if (yych <= 'c') goto yy4; - goto yy61; + if (yych <= 'c') goto yy3; + goto yy60; } else { - if (yych == 'f') goto yy61; - goto yy4; + if (yych == 'f') goto yy60; + goto yy3; } } } else { if (yych <= 't') { if (yych <= 'l') { - if (yych <= 'h') goto yy61; - goto yy4; + if (yych <= 'h') goto yy60; + goto yy3; } else { - if (yych <= 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; + if (yych <= 'm') goto yy60; + if (yych <= 'r') goto yy3; + goto yy60; } } else { if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; + if (yych <= 'v') goto yy3; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy4; + if (yych == 'y') goto yy60; + goto yy3; } } } } -yy440: - YYDEBUG(440, *YYCURSOR); +yy439: + YYDEBUG(439, *YYCURSOR); ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - YYDEBUG(441, *YYCURSOR); + YYDEBUG(440, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy58; + goto yy57; } if (yych <= ',') { - if (yych == '+') goto yy440; - goto yy57; + if (yych == '+') goto yy439; + goto yy56; } else { - if (yych <= '-') goto yy440; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy55; - goto yy57; + if (yych <= '-') goto yy439; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy54; + goto yy56; } -yy442: - YYDEBUG(442, *YYCURSOR); +yy441: + YYDEBUG(441, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy3; + goto yy60; } else { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy456; - if (yych <= 'C') goto yy4; - goto yy61; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy455; + if (yych <= 'C') goto yy3; + goto yy60; } } else { if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy4; - goto yy61; + if (yych == 'F') goto yy60; + if (yych <= 'G') goto yy3; + goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy4; - goto yy61; + if (yych <= 'L') goto yy3; + goto yy60; } else { - if (yych <= 'R') goto yy4; - if (yych <= 'T') goto yy61; - goto yy4; + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy60; + goto yy3; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy4; - if (yych <= 'Y') goto yy61; - goto yy4; + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy60; + goto yy3; } else { if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy4; + if (yych <= 'd') goto yy60; + goto yy3; } else { - if (yych == 'g') goto yy4; - goto yy61; + if (yych == 'g') goto yy3; + goto yy60; } } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; + if (yych == 'm') goto yy60; + if (yych <= 'r') goto yy3; + goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; + if (yych <= 'v') goto yy3; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy4; + if (yych == 'y') goto yy60; + goto yy3; } } } } -yy443: - YYDEBUG(443, *YYCURSOR); +yy442: + YYDEBUG(442, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy3; + goto yy60; } else { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy444; - if (yych <= 'C') goto yy4; - goto yy61; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy443; + if (yych <= 'C') goto yy3; + goto yy60; } } else { if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy4; - goto yy61; + if (yych == 'F') goto yy60; + if (yych <= 'G') goto yy3; + goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy4; - goto yy61; + if (yych <= 'L') goto yy3; + goto yy60; } else { - if (yych <= 'R') goto yy4; - if (yych <= 'T') goto yy61; - goto yy4; + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy60; + goto yy3; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy4; - if (yych <= 'Y') goto yy61; - goto yy4; + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy60; + goto yy3; } else { if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy4; + if (yych <= 'd') goto yy60; + goto yy3; } else { - if (yych == 'g') goto yy4; - goto yy61; + if (yych == 'g') goto yy3; + goto yy60; } } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; + if (yych == 'm') goto yy60; + if (yych <= 'r') goto yy3; + goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; + if (yych <= 'v') goto yy3; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy4; + if (yych == 'y') goto yy60; + goto yy3; } } } } +yy443: + YYDEBUG(443, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy60; + if (yych >= ':') goto yy60; yy444: YYDEBUG(444, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych >= ':') goto yy61; + if (yybm[0+yych] & 2) { + goto yy54; + } + if (yych != '-') goto yy60; yy445: YYDEBUG(445, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 2) { - goto yy55; - } - if (yych != '-') goto yy61; + if (yych <= '/') goto yy56; + if (yych <= '0') goto yy446; + if (yych <= '1') goto yy447; + goto yy56; yy446: YYDEBUG(446, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy447; - if (yych <= '1') goto yy448; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy448; + goto yy56; yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy449; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '3') goto yy56; yy448: YYDEBUG(448, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '3') goto yy57; -yy449: + if (yych != '-') goto yy56; YYDEBUG(449, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '-') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '0') goto yy450; + if (yych <= '2') goto yy451; + if (yych <= '3') goto yy452; + goto yy56; +yy450: YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy451; - if (yych <= '2') goto yy452; - if (yych <= '3') goto yy453; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy453; + goto yy56; yy451: YYDEBUG(451, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy454; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy453; + goto yy56; yy452: YYDEBUG(452, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy454; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '2') goto yy56; yy453: YYDEBUG(453, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '2') goto yy57; + ++YYCURSOR; yy454: YYDEBUG(454, *YYCURSOR); - ++YYCURSOR; -yy455: - YYDEBUG(455, *YYCURSOR); #line 1259 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash"); @@ -9043,505 +9024,505 @@ yy455: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 9047 "ext/date/lib/parse_date.c" -yy456: - YYDEBUG(456, *YYCURSOR); +#line 9028 "ext/date/lib/parse_date.c" +yy455: + YYDEBUG(455, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy3; + goto yy60; } else { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy445; - if (yych <= 'C') goto yy4; - goto yy61; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy444; + if (yych <= 'C') goto yy3; + goto yy60; } } else { if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy4; - goto yy61; + if (yych == 'F') goto yy60; + if (yych <= 'G') goto yy3; + goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy4; - goto yy61; + if (yych <= 'L') goto yy3; + goto yy60; } else { - if (yych <= 'R') goto yy4; - if (yych <= 'T') goto yy61; - goto yy4; + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy60; + goto yy3; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy4; - if (yych <= 'Y') goto yy61; - goto yy4; + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy60; + goto yy3; } else { if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy4; + if (yych <= 'd') goto yy60; + goto yy3; } else { - if (yych == 'g') goto yy4; - goto yy61; + if (yych == 'g') goto yy3; + goto yy60; } } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; + if (yych == 'm') goto yy60; + if (yych <= 'r') goto yy3; + goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; + if (yych <= 'v') goto yy3; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy4; + if (yych == 'y') goto yy60; + goto yy3; } } } } -yy457: - YYDEBUG(457, *YYCURSOR); +yy456: + YYDEBUG(456, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= 'C') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy3; + goto yy60; } else { if (yych <= '5') { - if (yych <= '/') goto yy4; + if (yych <= '/') goto yy3; } else { - if (yych <= '9') goto yy456; - if (yych <= ':') goto yy163; - goto yy4; + if (yych <= '9') goto yy455; + if (yych <= ':') goto yy162; + goto yy3; } } } else { if (yych <= 'G') { - if (yych == 'E') goto yy4; - if (yych <= 'F') goto yy61; - goto yy4; + if (yych == 'E') goto yy3; + if (yych <= 'F') goto yy60; + goto yy3; } else { if (yych <= 'L') { - if (yych <= 'H') goto yy61; - goto yy4; + if (yych <= 'H') goto yy60; + goto yy3; } else { - if (yych <= 'M') goto yy61; - if (yych <= 'R') goto yy4; - goto yy61; + if (yych <= 'M') goto yy60; + if (yych <= 'R') goto yy3; + goto yy60; } } } } else { if (yych <= 'g') { if (yych <= 'Y') { - if (yych == 'W') goto yy61; - if (yych <= 'X') goto yy4; - goto yy61; + if (yych == 'W') goto yy60; + if (yych <= 'X') goto yy3; + goto yy60; } else { if (yych <= 'd') { - if (yych <= 'c') goto yy4; - goto yy61; + if (yych <= 'c') goto yy3; + goto yy60; } else { - if (yych == 'f') goto yy61; - goto yy4; + if (yych == 'f') goto yy60; + goto yy3; } } } else { if (yych <= 't') { if (yych <= 'l') { - if (yych <= 'h') goto yy61; - goto yy4; + if (yych <= 'h') goto yy60; + goto yy3; } else { - if (yych <= 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; + if (yych <= 'm') goto yy60; + if (yych <= 'r') goto yy3; + goto yy60; } } else { if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; + if (yych <= 'v') goto yy3; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy4; + if (yych == 'y') goto yy60; + goto yy3; } } } } - YYDEBUG(458, *YYCURSOR); + YYDEBUG(457, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy3; + goto yy60; } else { - if (yych <= '/') goto yy4; - if (yych <= '9') goto yy459; - if (yych <= 'C') goto yy4; - goto yy61; + if (yych <= '/') goto yy3; + if (yych <= '9') goto yy458; + if (yych <= 'C') goto yy3; + goto yy60; } } else { if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy4; - goto yy61; + if (yych == 'F') goto yy60; + if (yych <= 'G') goto yy3; + goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy4; - goto yy61; + if (yych <= 'L') goto yy3; + goto yy60; } else { - if (yych <= 'R') goto yy4; - if (yych <= 'T') goto yy61; - goto yy4; + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy60; + goto yy3; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy4; - if (yych <= 'Y') goto yy61; - goto yy4; + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy60; + goto yy3; } else { if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy4; + if (yych <= 'd') goto yy60; + goto yy3; } else { - if (yych == 'g') goto yy4; - goto yy61; + if (yych == 'g') goto yy3; + goto yy60; } } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; + if (yych == 'm') goto yy60; + if (yych <= 'r') goto yy3; + goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; + if (yych <= 'v') goto yy3; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy4; + if (yych == 'y') goto yy60; + goto yy3; } } } } -yy459: - YYDEBUG(459, *YYCURSOR); +yy458: + YYDEBUG(458, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 2) { - goto yy55; + goto yy54; } if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy4; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy3; + goto yy60; } else { - if (yych == '-') goto yy446; - if (yych <= 'C') goto yy4; - goto yy61; + if (yych == '-') goto yy445; + if (yych <= 'C') goto yy3; + goto yy60; } } else { if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy4; - goto yy61; + if (yych == 'F') goto yy60; + if (yych <= 'G') goto yy3; + goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy4; - goto yy61; + if (yych <= 'L') goto yy3; + goto yy60; } else { - if (yych <= 'R') goto yy4; - if (yych <= 'T') goto yy61; - goto yy4; + if (yych <= 'R') goto yy3; + if (yych <= 'T') goto yy60; + goto yy3; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy4; - if (yych <= 'Y') goto yy61; - goto yy4; + if (yych == 'X') goto yy3; + if (yych <= 'Y') goto yy60; + goto yy3; } else { if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy4; + if (yych <= 'd') goto yy60; + goto yy3; } else { - if (yych == 'g') goto yy4; - goto yy61; + if (yych == 'g') goto yy3; + goto yy60; } } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy4; - goto yy61; + if (yych == 'm') goto yy60; + if (yych <= 'r') goto yy3; + goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy4; - goto yy61; + if (yych <= 'v') goto yy3; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy4; + if (yych == 'y') goto yy60; + goto yy3; } } } } +yy459: + YYDEBUG(459, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy461; + if (yych <= '0') goto yy735; + if (yych <= '1') goto yy736; + if (yych <= '9') goto yy737; + goto yy461; yy460: YYDEBUG(460, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy462; - if (yych <= '0') goto yy736; - if (yych <= '1') goto yy737; - if (yych <= '9') goto yy738; - goto yy462; -yy461: - YYDEBUG(461, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); yych = *YYCURSOR; -yy462: - YYDEBUG(462, *YYCURSOR); +yy461: + YYDEBUG(461, *YYCURSOR); YYDEBUG(-1, yych); switch (yych) { case '\t': - case ' ': goto yy461; + case ' ': goto yy460; case '-': - case '.': goto yy577; + case '.': goto yy576; case 'A': - case 'a': goto yy480; + case 'a': goto yy479; case 'D': - case 'd': goto yy466; + case 'd': goto yy465; case 'F': - case 'f': goto yy467; + case 'f': goto yy466; case 'H': - case 'h': goto yy64; - case 'I': goto yy475; + case 'h': goto yy63; + case 'I': goto yy474; case 'J': - case 'j': goto yy479; + case 'j': goto yy478; case 'M': - case 'm': goto yy465; + case 'm': goto yy464; case 'N': - case 'n': goto yy482; + case 'n': goto yy481; case 'O': - case 'o': goto yy481; + case 'o': goto yy480; case 'P': - case 'p': goto yy484; + case 'p': goto yy483; case 'S': - case 's': goto yy463; + case 's': goto yy462; case 'T': - case 't': goto yy69; - case 'V': goto yy477; + case 't': goto yy68; + case 'V': goto yy476; case 'W': - case 'w': goto yy68; - case 'X': goto yy478; + case 'w': goto yy67; + case 'X': goto yy477; case 'Y': - case 'y': goto yy67; - default: goto yy57; + case 'y': goto yy66; + default: goto yy56; } -yy463: - YYDEBUG(463, *YYCURSOR); +yy462: + YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'D') { - if (yych == 'A') goto yy127; - goto yy57; + if (yych == 'A') goto yy126; + goto yy56; } else { - if (yych <= 'E') goto yy1049; - if (yych <= 'T') goto yy57; - goto yy126; + if (yych <= 'E') goto yy1048; + if (yych <= 'T') goto yy56; + goto yy125; } } else { if (yych <= 'd') { - if (yych == 'a') goto yy127; - goto yy57; + if (yych == 'a') goto yy126; + goto yy56; } else { - if (yych <= 'e') goto yy1049; - if (yych == 'u') goto yy126; - goto yy57; + if (yych <= 'e') goto yy1048; + if (yych == 'u') goto yy125; + goto yy56; } } -yy464: - YYDEBUG(464, *YYCURSOR); +yy463: + YYDEBUG(463, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '`') { if (yych <= 'D') { - if (yych == 'A') goto yy127; - goto yy57; + if (yych == 'A') goto yy126; + goto yy56; } else { - if (yych <= 'E') goto yy1049; - if (yych == 'U') goto yy126; - goto yy57; + if (yych <= 'E') goto yy1048; + if (yych == 'U') goto yy125; + goto yy56; } } else { if (yych <= 'e') { - if (yych <= 'a') goto yy127; - if (yych <= 'd') goto yy57; - goto yy1049; + if (yych <= 'a') goto yy126; + if (yych <= 'd') goto yy56; + goto yy1048; } else { - if (yych <= 's') goto yy57; - if (yych <= 't') goto yy729; - if (yych <= 'u') goto yy126; - goto yy57; + if (yych <= 's') goto yy56; + if (yych <= 't') goto yy728; + if (yych <= 'u') goto yy125; + goto yy56; } } -yy465: - YYDEBUG(465, *YYCURSOR); +yy464: + YYDEBUG(464, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'H') { - if (yych == 'A') goto yy592; - goto yy57; + if (yych == 'A') goto yy591; + goto yy56; } else { - if (yych <= 'I') goto yy118; - if (yych <= 'N') goto yy57; - goto yy117; + if (yych <= 'I') goto yy117; + if (yych <= 'N') goto yy56; + goto yy116; } } else { if (yych <= 'h') { - if (yych == 'a') goto yy592; - goto yy57; + if (yych == 'a') goto yy591; + goto yy56; } else { - if (yych <= 'i') goto yy118; - if (yych == 'o') goto yy117; - goto yy57; + if (yych <= 'i') goto yy117; + if (yych == 'o') goto yy116; + goto yy56; } } -yy466: - YYDEBUG(466, *YYCURSOR); +yy465: + YYDEBUG(465, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { - if (yych == 'A') goto yy114; - if (yych <= 'D') goto yy57; - goto yy579; + if (yych == 'A') goto yy113; + if (yych <= 'D') goto yy56; + goto yy578; } else { if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy114; + if (yych <= '`') goto yy56; + goto yy113; } else { - if (yych == 'e') goto yy579; - goto yy57; + if (yych == 'e') goto yy578; + goto yy56; } } -yy467: - YYDEBUG(467, *YYCURSOR); +yy466: + YYDEBUG(466, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= 'N') { - if (yych == 'E') goto yy595; - goto yy57; + if (yych == 'E') goto yy594; + goto yy56; } else { - if (yych <= 'O') goto yy99; - if (yych <= 'Q') goto yy57; - goto yy98; + if (yych <= 'O') goto yy98; + if (yych <= 'Q') goto yy56; + goto yy97; } } else { if (yych <= 'n') { - if (yych == 'e') goto yy595; - goto yy57; + if (yych == 'e') goto yy594; + goto yy56; } else { - if (yych <= 'o') goto yy99; - if (yych == 'r') goto yy98; - goto yy57; + if (yych <= 'o') goto yy98; + if (yych == 'r') goto yy97; + goto yy56; } } -yy468: - YYDEBUG(468, *YYCURSOR); +yy467: + YYDEBUG(467, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'H') goto yy70; - if (yych <= 'T') goto yy57; - goto yy71; + if (yych == 'H') goto yy69; + if (yych <= 'T') goto yy56; + goto yy70; } else { if (yych <= 'h') { - if (yych <= 'g') goto yy57; - goto yy1048; + if (yych <= 'g') goto yy56; + goto yy1047; } else { - if (yych == 'u') goto yy71; - goto yy57; + if (yych == 'u') goto yy70; + goto yy56; } } +yy468: + YYDEBUG(468, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy741; + if (yych <= '/') goto yy60; + if (yych <= '9') goto yy740; + goto yy60; yy469: YYDEBUG(469, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '-') goto yy742; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy741; - goto yy61; -yy470: - YYDEBUG(470, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'c') { - if (yych == 'O') goto yy530; - goto yy57; + if (yych == 'O') goto yy529; + goto yy56; } else { - if (yych <= 'd') goto yy729; - if (yych == 'o') goto yy530; - goto yy57; + if (yych <= 'd') goto yy728; + if (yych == 'o') goto yy529; + goto yy56; } +yy470: + YYDEBUG(470, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'd') goto yy728; + goto yy56; yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'd') goto yy729; - goto yy57; -yy472: - YYDEBUG(472, *YYCURSOR); - yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { case '0': case '1': - case '2': goto yy666; - case '3': goto yy668; + case '2': goto yy665; + case '3': goto yy667; case '4': case '5': case '6': case '7': case '8': - case '9': goto yy669; + case '9': goto yy668; case 'A': - case 'a': goto yy673; + case 'a': goto yy672; case 'D': - case 'd': goto yy677; + case 'd': goto yy676; case 'F': - case 'f': goto yy671; + case 'f': goto yy670; case 'J': - case 'j': goto yy670; + case 'j': goto yy669; case 'M': - case 'm': goto yy672; + case 'm': goto yy671; case 'N': - case 'n': goto yy676; + case 'n': goto yy675; case 'O': - case 'o': goto yy675; + case 'o': goto yy674; case 'S': - case 's': goto yy674; - default: goto yy57; + case 's': goto yy673; + default: goto yy56; } -yy473: - YYDEBUG(473, *YYCURSOR); +yy472: + YYDEBUG(472, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { - case '0': goto yy616; - case '1': goto yy617; + case '0': goto yy615; + case '1': goto yy616; case '2': case '3': case '4': @@ -9549,60 +9530,60 @@ yy473: case '6': case '7': case '8': - case '9': goto yy618; + case '9': goto yy617; case 'A': - case 'a': goto yy622; + case 'a': goto yy621; case 'D': - case 'd': goto yy626; + case 'd': goto yy625; case 'F': - case 'f': goto yy620; + case 'f': goto yy619; case 'J': - case 'j': goto yy619; + case 'j': goto yy618; case 'M': - case 'm': goto yy621; + case 'm': goto yy620; case 'N': - case 'n': goto yy625; + case 'n': goto yy624; case 'O': - case 'o': goto yy624; + case 'o': goto yy623; case 'S': - case 's': goto yy623; - default: goto yy578; + case 's': goto yy622; + default: goto yy577; } -yy474: - YYDEBUG(474, *YYCURSOR); +yy473: + YYDEBUG(473, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '1') { - if (yych <= '/') goto yy578; - if (yych <= '0') goto yy568; - goto yy569; + if (yych <= '/') goto yy577; + if (yych <= '0') goto yy567; + goto yy568; } else { - if (yych <= '5') goto yy570; - if (yych <= '9') goto yy571; - goto yy578; + if (yych <= '5') goto yy569; + if (yych <= '9') goto yy570; + goto yy577; } -yy475: - YYDEBUG(475, *YYCURSOR); +yy474: + YYDEBUG(474, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; + if (yych == '\t') goto yy531; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '.') goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych <= '.') goto yy531; } } else { if (yych <= 'U') { - if (yych <= '9') goto yy534; - if (yych == 'I') goto yy567; + if (yych <= '9') goto yy533; + if (yych == 'I') goto yy566; } else { - if (yych == 'W') goto yy476; - if (yych <= 'X') goto yy540; + if (yych == 'W') goto yy475; + if (yych <= 'X') goto yy539; } } -yy476: - YYDEBUG(476, *YYCURSOR); +yy475: + YYDEBUG(475, *YYCURSOR); #line 1396 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("datenoyearrev"); @@ -9614,147 +9595,147 @@ yy476: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 9618 "ext/date/lib/parse_date.c" -yy477: - YYDEBUG(477, *YYCURSOR); +#line 9599 "ext/date/lib/parse_date.c" +yy476: + YYDEBUG(476, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; + if (yych <= 0x08) goto yy475; + goto yy531; } else { - if (yych == ' ') goto yy532; - goto yy476; + if (yych == ' ') goto yy531; + goto yy475; } } else { if (yych <= '9') { - if (yych <= '.') goto yy532; - if (yych <= '/') goto yy476; - goto yy534; + if (yych <= '.') goto yy531; + if (yych <= '/') goto yy475; + goto yy533; } else { - if (yych == 'I') goto yy565; - goto yy476; + if (yych == 'I') goto yy564; + goto yy475; } } -yy478: - YYDEBUG(478, *YYCURSOR); +yy477: + YYDEBUG(477, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; + if (yych <= 0x08) goto yy475; + goto yy531; } else { - if (yych == ' ') goto yy532; - goto yy476; + if (yych == ' ') goto yy531; + goto yy475; } } else { if (yych <= '9') { - if (yych <= '.') goto yy532; - if (yych <= '/') goto yy476; - goto yy534; + if (yych <= '.') goto yy531; + if (yych <= '/') goto yy475; + goto yy533; } else { - if (yych == 'I') goto yy564; - goto yy476; + if (yych == 'I') goto yy563; + goto yy475; } } -yy479: - YYDEBUG(479, *YYCURSOR); +yy478: + YYDEBUG(478, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'A') goto yy557; - if (yych <= 'T') goto yy57; - goto yy556; + if (yych == 'A') goto yy556; + if (yych <= 'T') goto yy56; + goto yy555; } else { if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy557; + if (yych <= '`') goto yy56; + goto yy556; } else { - if (yych == 'u') goto yy556; - goto yy57; + if (yych == 'u') goto yy555; + goto yy56; } } -yy480: - YYDEBUG(480, *YYCURSOR); +yy479: + YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= 'L') { - if (yych == '.') goto yy485; - goto yy57; + if (yych == '.') goto yy484; + goto yy56; } else { - if (yych <= 'M') goto yy486; - if (yych == 'P') goto yy550; - goto yy57; + if (yych <= 'M') goto yy485; + if (yych == 'P') goto yy549; + goto yy56; } } else { if (yych <= 'o') { - if (yych <= 'U') goto yy549; - if (yych == 'm') goto yy486; - goto yy57; + if (yych <= 'U') goto yy548; + if (yych == 'm') goto yy485; + goto yy56; } else { - if (yych <= 'p') goto yy550; - if (yych == 'u') goto yy549; - goto yy57; + if (yych <= 'p') goto yy549; + if (yych == 'u') goto yy548; + goto yy56; } } +yy480: + YYDEBUG(480, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy543; + if (yych == 'c') goto yy543; + goto yy56; yy481: YYDEBUG(481, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy544; - if (yych == 'c') goto yy544; - goto yy57; + if (yych == 'O') goto yy529; + if (yych == 'o') goto yy529; + goto yy56; yy482: YYDEBUG(482, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy530; - if (yych == 'o') goto yy530; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy489; + if (yych <= '9') goto yy491; + goto yy56; yy483: YYDEBUG(483, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy490; - if (yych <= '9') goto yy492; - goto yy57; -yy484: - YYDEBUG(484, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'L') { - if (yych != '.') goto yy57; + if (yych != '.') goto yy56; } else { - if (yych <= 'M') goto yy486; - if (yych == 'm') goto yy486; - goto yy57; + if (yych <= 'M') goto yy485; + if (yych == 'm') goto yy485; + goto yy56; } +yy484: + YYDEBUG(484, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy485; + if (yych != 'm') goto yy56; yy485: YYDEBUG(485, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy486; - if (yych != 'm') goto yy57; -yy486: - YYDEBUG(486, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy488; - if (yych == '\t') goto yy488; - goto yy57; + if (yych <= 0x00) goto yy487; + if (yych == '\t') goto yy487; + goto yy56; } else { - if (yych <= ' ') goto yy488; - if (yych != '.') goto yy57; + if (yych <= ' ') goto yy487; + if (yych != '.') goto yy56; } - YYDEBUG(487, *YYCURSOR); + YYDEBUG(486, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy488; - if (yych <= 0x08) goto yy57; + if (yych <= 0x00) goto yy487; + if (yych <= 0x08) goto yy56; } else { - if (yych != ' ') goto yy57; + if (yych != ' ') goto yy56; } -yy488: - YYDEBUG(488, *YYCURSOR); +yy487: + YYDEBUG(487, *YYCURSOR); ++YYCURSOR; - YYDEBUG(489, *YYCURSOR); + YYDEBUG(488, *YYCURSOR); #line 1114 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12"); @@ -9771,19 +9752,19 @@ yy488: TIMELIB_DEINIT; return TIMELIB_TIME12; } -#line 9775 "ext/date/lib/parse_date.c" -yy490: - YYDEBUG(490, *YYCURSOR); +#line 9756 "ext/date/lib/parse_date.c" +yy489: + YYDEBUG(489, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy493; + if (yych == '.') goto yy492; } else { - if (yych <= '9') goto yy507; - if (yych <= ':') goto yy493; + if (yych <= '9') goto yy506; + if (yych <= ':') goto yy492; } -yy491: - YYDEBUG(491, *YYCURSOR); +yy490: + YYDEBUG(490, *YYCURSOR); #line 1151 "ext/date/lib/parse_date.re" { int tz_not_found; @@ -9809,316 +9790,316 @@ yy491: TIMELIB_DEINIT; return TIMELIB_TIME24_WITH_ZONE; } -#line 9813 "ext/date/lib/parse_date.c" -yy492: - YYDEBUG(492, *YYCURSOR); +#line 9794 "ext/date/lib/parse_date.c" +yy491: + YYDEBUG(491, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy493; - if (yych != ':') goto yy491; + if (yych == '.') goto yy492; + if (yych != ':') goto yy490; +yy492: + YYDEBUG(492, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy493; + if (yych <= '6') goto yy494; + if (yych <= '9') goto yy495; + goto yy56; yy493: YYDEBUG(493, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy494; - if (yych <= '6') goto yy495; - if (yych <= '9') goto yy496; - goto yy57; + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy496; + if (yych <= '/') goto yy490; + if (yych <= '9') goto yy499; + goto yy490; yy494: YYDEBUG(494, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy500; - goto yy491; + if (yych == '.') goto yy496; + if (yych == '0') goto yy499; + goto yy490; yy495: YYDEBUG(495, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych == '0') goto yy500; - goto yy491; + if (yych != '.') goto yy490; yy496: YYDEBUG(496, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych != '.') goto yy491; + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; yy497: YYDEBUG(497, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy498: - YYDEBUG(498, *YYCURSOR); ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; + YYDEBUG(498, *YYCURSOR); + if (yych <= '/') goto yy490; + if (yych <= '9') goto yy497; + goto yy490; +yy499: YYDEBUG(499, *YYCURSOR); - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy498; - goto yy491; -yy500: - YYDEBUG(500, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= 0x1F) { - if (yych != '\t') goto yy491; + if (yych != '\t') goto yy490; } else { - if (yych <= ' ') goto yy501; - if (yych == '.') goto yy497; - goto yy491; + if (yych <= ' ') goto yy500; + if (yych == '.') goto yy496; + goto yy490; } } else { if (yych <= '`') { - if (yych <= 'A') goto yy503; - if (yych == 'P') goto yy503; - goto yy491; + if (yych <= 'A') goto yy502; + if (yych == 'P') goto yy502; + goto yy490; } else { - if (yych <= 'a') goto yy503; - if (yych == 'p') goto yy503; - goto yy491; + if (yych <= 'a') goto yy502; + if (yych == 'p') goto yy502; + goto yy490; } } -yy501: - YYDEBUG(501, *YYCURSOR); +yy500: + YYDEBUG(500, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; - YYDEBUG(502, *YYCURSOR); + YYDEBUG(501, *YYCURSOR); if (yych <= 'A') { if (yych <= 0x1F) { - if (yych == '\t') goto yy501; - goto yy57; + if (yych == '\t') goto yy500; + goto yy56; } else { - if (yych <= ' ') goto yy501; - if (yych <= '@') goto yy57; + if (yych <= ' ') goto yy500; + if (yych <= '@') goto yy56; } } else { if (yych <= '`') { - if (yych != 'P') goto yy57; + if (yych != 'P') goto yy56; } else { - if (yych <= 'a') goto yy503; - if (yych != 'p') goto yy57; + if (yych <= 'a') goto yy502; + if (yych != 'p') goto yy56; } } -yy503: - YYDEBUG(503, *YYCURSOR); +yy502: + YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'L') { - if (yych != '.') goto yy57; + if (yych != '.') goto yy56; } else { - if (yych <= 'M') goto yy505; - if (yych == 'm') goto yy505; - goto yy57; + if (yych <= 'M') goto yy504; + if (yych == 'm') goto yy504; + goto yy56; } - YYDEBUG(504, *YYCURSOR); + YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy505; - if (yych != 'm') goto yy57; -yy505: - YYDEBUG(505, *YYCURSOR); + if (yych == 'M') goto yy504; + if (yych != 'm') goto yy56; +yy504: + YYDEBUG(504, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy488; - if (yych == '\t') goto yy488; - goto yy57; + if (yych <= 0x00) goto yy487; + if (yych == '\t') goto yy487; + goto yy56; } else { - if (yych <= ' ') goto yy488; - if (yych != '.') goto yy57; + if (yych <= ' ') goto yy487; + if (yych != '.') goto yy56; } - YYDEBUG(506, *YYCURSOR); + YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy488; - if (yych <= 0x08) goto yy57; - goto yy488; + if (yych <= 0x00) goto yy487; + if (yych <= 0x08) goto yy56; + goto yy487; } else { - if (yych == ' ') goto yy488; - goto yy57; + if (yych == ' ') goto yy487; + goto yy56; } -yy507: - YYDEBUG(507, *YYCURSOR); +yy506: + YYDEBUG(506, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy508; - if (yych <= 0x1F) goto yy491; + if (yych == '\t') goto yy507; + if (yych <= 0x1F) goto yy490; } else { - if (yych == '.') goto yy493; - if (yych <= '9') goto yy491; - goto yy511; + if (yych == '.') goto yy492; + if (yych <= '9') goto yy490; + goto yy510; } } else { if (yych <= 'P') { - if (yych == 'A') goto yy510; - if (yych <= 'O') goto yy491; - goto yy510; + if (yych == 'A') goto yy509; + if (yych <= 'O') goto yy490; + goto yy509; } else { if (yych <= 'a') { - if (yych <= '`') goto yy491; - goto yy510; + if (yych <= '`') goto yy490; + goto yy509; } else { - if (yych == 'p') goto yy510; - goto yy491; + if (yych == 'p') goto yy509; + goto yy490; } } } -yy508: - YYDEBUG(508, *YYCURSOR); +yy507: + YYDEBUG(507, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; - YYDEBUG(509, *YYCURSOR); + YYDEBUG(508, *YYCURSOR); if (yych <= 'A') { if (yych <= 0x1F) { - if (yych == '\t') goto yy508; - goto yy57; + if (yych == '\t') goto yy507; + goto yy56; } else { - if (yych <= ' ') goto yy508; - if (yych <= '@') goto yy57; + if (yych <= ' ') goto yy507; + if (yych <= '@') goto yy56; } } else { if (yych <= '`') { - if (yych != 'P') goto yy57; + if (yych != 'P') goto yy56; } else { - if (yych <= 'a') goto yy510; - if (yych != 'p') goto yy57; + if (yych <= 'a') goto yy509; + if (yych != 'p') goto yy56; } } -yy510: - YYDEBUG(510, *YYCURSOR); +yy509: + YYDEBUG(509, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'L') { - if (yych == '.') goto yy527; - goto yy57; + if (yych == '.') goto yy526; + goto yy56; } else { - if (yych <= 'M') goto yy528; - if (yych == 'm') goto yy528; - goto yy57; + if (yych <= 'M') goto yy527; + if (yych == 'm') goto yy527; + goto yy56; } +yy510: + YYDEBUG(510, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy511; + if (yych <= '6') goto yy512; + if (yych <= '9') goto yy495; + goto yy56; yy511: YYDEBUG(511, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy512; - if (yych <= '6') goto yy513; - if (yych <= '9') goto yy496; - goto yy57; + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy496; + if (yych <= '/') goto yy490; + if (yych <= '9') goto yy513; + goto yy490; yy512: YYDEBUG(512, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy514; - goto yy491; + if (yych == '.') goto yy496; + if (yych != '0') goto yy490; yy513: YYDEBUG(513, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych != '0') goto yy491; -yy514: - YYDEBUG(514, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy501; - if (yych <= 0x1F) goto yy491; - goto yy501; + if (yych == '\t') goto yy500; + if (yych <= 0x1F) goto yy490; + goto yy500; } else { - if (yych == '.') goto yy515; - if (yych <= '9') goto yy491; - goto yy516; + if (yych == '.') goto yy514; + if (yych <= '9') goto yy490; + goto yy515; } } else { if (yych <= 'P') { - if (yych == 'A') goto yy503; - if (yych <= 'O') goto yy491; - goto yy503; + if (yych == 'A') goto yy502; + if (yych <= 'O') goto yy490; + goto yy502; } else { if (yych <= 'a') { - if (yych <= '`') goto yy491; - goto yy503; + if (yych <= '`') goto yy490; + goto yy502; } else { - if (yych == 'p') goto yy503; - goto yy491; + if (yych == 'p') goto yy502; + goto yy490; } } } +yy514: + YYDEBUG(514, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy524; + goto yy56; yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy525; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; yy516: YYDEBUG(516, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy517: - YYDEBUG(517, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; - YYDEBUG(518, *YYCURSOR); + YYDEBUG(517, *YYCURSOR); if (yych <= 'O') { if (yych <= '9') { - if (yych <= '/') goto yy57; - goto yy517; + if (yych <= '/') goto yy56; + goto yy516; } else { - if (yych != 'A') goto yy57; + if (yych != 'A') goto yy56; } } else { if (yych <= 'a') { - if (yych <= 'P') goto yy519; - if (yych <= '`') goto yy57; + if (yych <= 'P') goto yy518; + if (yych <= '`') goto yy56; } else { - if (yych != 'p') goto yy57; + if (yych != 'p') goto yy56; } } -yy519: - YYDEBUG(519, *YYCURSOR); +yy518: + YYDEBUG(518, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'L') { - if (yych != '.') goto yy57; + if (yych != '.') goto yy56; } else { - if (yych <= 'M') goto yy521; - if (yych == 'm') goto yy521; - goto yy57; + if (yych <= 'M') goto yy520; + if (yych == 'm') goto yy520; + goto yy56; } - YYDEBUG(520, *YYCURSOR); + YYDEBUG(519, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy521; - if (yych != 'm') goto yy57; -yy521: - YYDEBUG(521, *YYCURSOR); + if (yych == 'M') goto yy520; + if (yych != 'm') goto yy56; +yy520: + YYDEBUG(520, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy523; - if (yych == '\t') goto yy523; - goto yy57; + if (yych <= 0x00) goto yy522; + if (yych == '\t') goto yy522; + goto yy56; } else { - if (yych <= ' ') goto yy523; - if (yych != '.') goto yy57; + if (yych <= ' ') goto yy522; + if (yych != '.') goto yy56; } - YYDEBUG(522, *YYCURSOR); + YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy523; - if (yych <= 0x08) goto yy57; + if (yych <= 0x00) goto yy522; + if (yych <= 0x08) goto yy56; } else { - if (yych != ' ') goto yy57; + if (yych != ' ') goto yy56; } -yy523: - YYDEBUG(523, *YYCURSOR); +yy522: + YYDEBUG(522, *YYCURSOR); ++YYCURSOR; - YYDEBUG(524, *YYCURSOR); + YYDEBUG(523, *YYCURSOR); #line 1131 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("mssqltime"); @@ -10138,112 +10119,112 @@ yy523: TIMELIB_DEINIT; return TIMELIB_TIME24_WITH_ZONE; } -#line 10142 "ext/date/lib/parse_date.c" -yy525: - YYDEBUG(525, *YYCURSOR); +#line 10123 "ext/date/lib/parse_date.c" +yy524: + YYDEBUG(524, *YYCURSOR); yyaccept = 11; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; - YYDEBUG(526, *YYCURSOR); + YYDEBUG(525, *YYCURSOR); if (yych <= 'O') { if (yych <= '9') { - if (yych <= '/') goto yy491; - goto yy525; + if (yych <= '/') goto yy490; + goto yy524; } else { - if (yych == 'A') goto yy519; - goto yy491; + if (yych == 'A') goto yy518; + goto yy490; } } else { if (yych <= 'a') { - if (yych <= 'P') goto yy519; - if (yych <= '`') goto yy491; - goto yy519; + if (yych <= 'P') goto yy518; + if (yych <= '`') goto yy490; + goto yy518; } else { - if (yych == 'p') goto yy519; - goto yy491; + if (yych == 'p') goto yy518; + goto yy490; } } +yy526: + YYDEBUG(526, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy527; + if (yych != 'm') goto yy56; yy527: YYDEBUG(527, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy528; - if (yych != 'm') goto yy57; -yy528: - YYDEBUG(528, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy488; - if (yych == '\t') goto yy488; - goto yy57; + if (yych <= 0x00) goto yy487; + if (yych == '\t') goto yy487; + goto yy56; } else { - if (yych <= ' ') goto yy488; - if (yych != '.') goto yy57; + if (yych <= ' ') goto yy487; + if (yych != '.') goto yy56; } - YYDEBUG(529, *YYCURSOR); + YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy488; - if (yych <= 0x08) goto yy57; - goto yy488; + if (yych <= 0x00) goto yy487; + if (yych <= 0x08) goto yy56; + goto yy487; } else { - if (yych == ' ') goto yy488; - goto yy57; + if (yych == ' ') goto yy487; + goto yy56; } +yy529: + YYDEBUG(529, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy530; + if (yych != 'v') goto yy56; yy530: YYDEBUG(530, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'V') goto yy531; - if (yych != 'v') goto yy57; -yy531: - YYDEBUG(531, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych != '\t') goto yy476; + if (yych != '\t') goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'E') goto yy536; - if (yych == 'e') goto yy536; - goto yy476; + if (yych <= 'E') goto yy535; + if (yych == 'e') goto yy535; + goto yy475; } } -yy532: - YYDEBUG(532, *YYCURSOR); +yy531: + YYDEBUG(531, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; -yy533: - YYDEBUG(533, *YYCURSOR); +yy532: + YYDEBUG(532, *YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy532; - if (yych <= 0x1F) goto yy57; - goto yy532; + if (yych == '\t') goto yy531; + if (yych <= 0x1F) goto yy56; + goto yy531; } else { if (yych <= '.') { - if (yych <= ',') goto yy57; - goto yy532; + if (yych <= ',') goto yy56; + goto yy531; } else { - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; } } +yy533: + YYDEBUG(533, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '/') goto yy534; + if (yych <= '9') goto yy540; yy534: YYDEBUG(534, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '/') goto yy535; - if (yych <= '9') goto yy541; -yy535: - YYDEBUG(535, *YYCURSOR); #line 1313 "ext/date/lib/parse_date.re" { int length = 0; @@ -10258,743 +10239,743 @@ yy535: TIMELIB_DEINIT; return TIMELIB_DATE_FULL; } -#line 10262 "ext/date/lib/parse_date.c" +#line 10243 "ext/date/lib/parse_date.c" +yy535: + YYDEBUG(535, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy536; + if (yych != 'm') goto yy56; yy536: YYDEBUG(536, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy537; - if (yych != 'm') goto yy57; + if (yych == 'B') goto yy537; + if (yych != 'b') goto yy56; yy537: YYDEBUG(537, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy538; - if (yych != 'b') goto yy57; + if (yych == 'E') goto yy538; + if (yych != 'e') goto yy56; yy538: YYDEBUG(538, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy539; - if (yych != 'e') goto yy57; + if (yych == 'R') goto yy539; + if (yych != 'r') goto yy56; yy539: YYDEBUG(539, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy540; - if (yych != 'r') goto yy57; -yy540: - YYDEBUG(540, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy532; - if (yych <= 0x1F) goto yy476; - goto yy532; + if (yych == '\t') goto yy531; + if (yych <= 0x1F) goto yy475; + goto yy531; } else { if (yych <= '.') { - if (yych <= ',') goto yy476; - goto yy532; + if (yych <= ',') goto yy475; + goto yy531; } else { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } } +yy540: + YYDEBUG(540, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy534; + if (yych >= ':') goto yy534; yy541: YYDEBUG(541, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy535; - if (yych >= ':') goto yy535; -yy542: + if (yych <= '/') goto yy534; + if (yych >= ':') goto yy534; YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy535; - if (yych >= ':') goto yy535; + goto yy534; +yy543: YYDEBUG(543, *YYCURSOR); yych = *++YYCURSOR; - goto yy535; + if (yych == 'T') goto yy544; + if (yych != 't') goto yy56; yy544: YYDEBUG(544, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy545; - if (yych != 't') goto yy57; -yy545: - YYDEBUG(545, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + goto yy531; } } else { if (yych <= 'N') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'O') goto yy546; - if (yych != 'o') goto yy476; + if (yych <= 'O') goto yy545; + if (yych != 'o') goto yy475; } } +yy545: + YYDEBUG(545, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy546; + if (yych != 'b') goto yy56; yy546: YYDEBUG(546, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy547; - if (yych != 'b') goto yy57; + if (yych == 'E') goto yy547; + if (yych != 'e') goto yy56; yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy548; - if (yych != 'e') goto yy57; + if (yych == 'R') goto yy539; + if (yych == 'r') goto yy539; + goto yy56; yy548: YYDEBUG(548, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy540; - if (yych == 'r') goto yy540; - goto yy57; + if (yych == 'G') goto yy552; + if (yych == 'g') goto yy552; + goto yy56; yy549: YYDEBUG(549, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy553; - if (yych == 'g') goto yy553; - goto yy57; + if (yych == 'R') goto yy550; + if (yych != 'r') goto yy56; yy550: YYDEBUG(550, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy551; - if (yych != 'r') goto yy57; -yy551: - YYDEBUG(551, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + goto yy531; } } else { if (yych <= 'H') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'I') goto yy552; - if (yych != 'i') goto yy476; + if (yych <= 'I') goto yy551; + if (yych != 'i') goto yy475; } } +yy551: + YYDEBUG(551, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy539; + if (yych == 'l') goto yy539; + goto yy56; yy552: YYDEBUG(552, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy540; - if (yych == 'l') goto yy540; - goto yy57; -yy553: - YYDEBUG(553, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + goto yy531; } } else { if (yych <= 'T') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'U') goto yy554; - if (yych != 'u') goto yy476; + if (yych <= 'U') goto yy553; + if (yych != 'u') goto yy475; } } +yy553: + YYDEBUG(553, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy554; + if (yych != 's') goto yy56; yy554: YYDEBUG(554, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy555; - if (yych != 's') goto yy57; + if (yych == 'T') goto yy539; + if (yych == 't') goto yy539; + goto yy56; yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy540; - if (yych == 't') goto yy540; - goto yy57; -yy556: - YYDEBUG(556, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'L') goto yy563; - if (yych <= 'M') goto yy57; - goto yy562; + if (yych == 'L') goto yy562; + if (yych <= 'M') goto yy56; + goto yy561; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy57; - goto yy563; + if (yych <= 'k') goto yy56; + goto yy562; } else { - if (yych == 'n') goto yy562; - goto yy57; + if (yych == 'n') goto yy561; + goto yy56; } } +yy556: + YYDEBUG(556, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy557; + if (yych != 'n') goto yy56; yy557: YYDEBUG(557, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy558; - if (yych != 'n') goto yy57; -yy558: - YYDEBUG(558, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + goto yy531; } } else { if (yych <= 'T') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'U') goto yy559; - if (yych != 'u') goto yy476; + if (yych <= 'U') goto yy558; + if (yych != 'u') goto yy475; } } +yy558: + YYDEBUG(558, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy559; + if (yych != 'a') goto yy56; yy559: YYDEBUG(559, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy560; - if (yych != 'a') goto yy57; + if (yych == 'R') goto yy560; + if (yych != 'r') goto yy56; yy560: YYDEBUG(560, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy561; - if (yych != 'r') goto yy57; + if (yych == 'Y') goto yy539; + if (yych == 'y') goto yy539; + goto yy56; yy561: YYDEBUG(561, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy540; - if (yych == 'y') goto yy540; - goto yy57; -yy562: - YYDEBUG(562, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + goto yy531; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'E') goto yy540; - if (yych == 'e') goto yy540; - goto yy476; + if (yych <= 'E') goto yy539; + if (yych == 'e') goto yy539; + goto yy475; } } -yy563: - YYDEBUG(563, *YYCURSOR); +yy562: + YYDEBUG(562, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + goto yy531; } } else { if (yych <= 'X') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'Y') goto yy540; - if (yych == 'y') goto yy540; - goto yy476; + if (yych <= 'Y') goto yy539; + if (yych == 'y') goto yy539; + goto yy475; } } -yy564: - YYDEBUG(564, *YYCURSOR); +yy563: + YYDEBUG(563, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; + if (yych <= 0x08) goto yy475; + goto yy531; } else { - if (yych == ' ') goto yy532; - goto yy476; + if (yych == ' ') goto yy531; + goto yy475; } } else { if (yych <= '9') { - if (yych <= '.') goto yy532; - if (yych <= '/') goto yy476; - goto yy534; + if (yych <= '.') goto yy531; + if (yych <= '/') goto yy475; + goto yy533; } else { - if (yych == 'I') goto yy540; - goto yy476; + if (yych == 'I') goto yy539; + goto yy475; } } -yy565: - YYDEBUG(565, *YYCURSOR); +yy564: + YYDEBUG(564, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; + if (yych <= 0x08) goto yy475; + goto yy531; } else { - if (yych == ' ') goto yy532; - goto yy476; + if (yych == ' ') goto yy531; + goto yy475; } } else { if (yych <= '9') { - if (yych <= '.') goto yy532; - if (yych <= '/') goto yy476; - goto yy534; + if (yych <= '.') goto yy531; + if (yych <= '/') goto yy475; + goto yy533; } else { - if (yych != 'I') goto yy476; + if (yych != 'I') goto yy475; } } - YYDEBUG(566, *YYCURSOR); + YYDEBUG(565, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; + if (yych <= 0x08) goto yy475; + goto yy531; } else { - if (yych == ' ') goto yy532; - goto yy476; + if (yych == ' ') goto yy531; + goto yy475; } } else { if (yych <= '9') { - if (yych <= '.') goto yy532; - if (yych <= '/') goto yy476; - goto yy534; + if (yych <= '.') goto yy531; + if (yych <= '/') goto yy475; + goto yy533; } else { - if (yych == 'I') goto yy540; - goto yy476; + if (yych == 'I') goto yy539; + goto yy475; } } -yy567: - YYDEBUG(567, *YYCURSOR); +yy566: + YYDEBUG(566, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; + if (yych <= 0x08) goto yy475; + goto yy531; } else { - if (yych == ' ') goto yy532; - goto yy476; + if (yych == ' ') goto yy531; + goto yy475; } } else { if (yych <= '9') { - if (yych <= '.') goto yy532; - if (yych <= '/') goto yy476; - goto yy534; + if (yych <= '.') goto yy531; + if (yych <= '/') goto yy475; + goto yy533; } else { - if (yych == 'I') goto yy540; - goto yy476; + if (yych == 'I') goto yy539; + goto yy475; } } +yy567: + YYDEBUG(567, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy490; + if (yych <= '-') goto yy601; + goto yy600; + } else { + if (yych <= '/') goto yy490; + if (yych <= '9') goto yy614; + if (yych <= ':') goto yy492; + goto yy490; + } yy568: YYDEBUG(568, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - goto yy601; + if (yych <= '/') { + if (yych <= ',') goto yy490; + if (yych <= '-') goto yy601; + if (yych <= '.') goto yy600; + goto yy490; } else { - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy615; - if (yych <= ':') goto yy493; - goto yy491; + if (yych <= '2') goto yy614; + if (yych <= '9') goto yy613; + if (yych <= ':') goto yy492; + goto yy490; } yy569: YYDEBUG(569, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - if (yych <= '.') goto yy601; - goto yy491; + if (yych <= '.') { + if (yych <= ',') goto yy490; + if (yych <= '-') goto yy601; + goto yy600; } else { - if (yych <= '2') goto yy615; - if (yych <= '9') goto yy614; - if (yych <= ':') goto yy493; - goto yy491; + if (yych <= '/') goto yy490; + if (yych <= '9') goto yy613; + if (yych <= ':') goto yy492; + goto yy490; } yy570: YYDEBUG(570, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - goto yy601; + if (yych <= ',') goto yy490; + if (yych <= '-') goto yy601; + goto yy600; } else { - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy614; - if (yych <= ':') goto yy493; - goto yy491; + if (yych == ':') goto yy492; + goto yy490; } yy571: YYDEBUG(571, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - goto yy601; - } else { - if (yych == ':') goto yy493; - goto yy491; - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy594; + if (yych == 'e') goto yy594; + goto yy56; yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy595; - if (yych == 'e') goto yy595; - goto yy57; + if (yych == 'A') goto yy591; + if (yych == 'a') goto yy591; + goto yy56; yy573: YYDEBUG(573, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy592; - if (yych == 'a') goto yy592; - goto yy57; -yy574: - YYDEBUG(574, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'P') goto yy550; - if (yych <= 'T') goto yy57; - goto yy549; + if (yych == 'P') goto yy549; + if (yych <= 'T') goto yy56; + goto yy548; } else { if (yych <= 'p') { - if (yych <= 'o') goto yy57; - goto yy550; + if (yych <= 'o') goto yy56; + goto yy549; } else { - if (yych == 'u') goto yy549; - goto yy57; + if (yych == 'u') goto yy548; + goto yy56; } } +yy574: + YYDEBUG(574, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy584; + if (yych == 'e') goto yy584; + goto yy56; yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy585; - if (yych == 'e') goto yy585; - goto yy57; + if (yych == 'E') goto yy578; + if (yych == 'e') goto yy578; + goto yy56; yy576: YYDEBUG(576, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy579; - if (yych == 'e') goto yy579; - goto yy57; -yy577: - YYDEBUG(577, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); yych = *YYCURSOR; -yy578: - YYDEBUG(578, *YYCURSOR); +yy577: + YYDEBUG(577, *YYCURSOR); YYDEBUG(-1, yych); switch (yych) { case '\t': case ' ': case '-': - case '.': goto yy577; + case '.': goto yy576; case 'A': - case 'a': goto yy574; + case 'a': goto yy573; case 'D': - case 'd': goto yy576; + case 'd': goto yy575; case 'F': - case 'f': goto yy572; - case 'I': goto yy475; + case 'f': goto yy571; + case 'I': goto yy474; case 'J': - case 'j': goto yy479; + case 'j': goto yy478; case 'M': - case 'm': goto yy573; + case 'm': goto yy572; case 'N': - case 'n': goto yy482; + case 'n': goto yy481; case 'O': - case 'o': goto yy481; + case 'o': goto yy480; case 'S': - case 's': goto yy575; - case 'V': goto yy477; - case 'X': goto yy478; - default: goto yy57; + case 's': goto yy574; + case 'V': goto yy476; + case 'X': goto yy477; + default: goto yy56; } +yy578: + YYDEBUG(578, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy579; + if (yych != 'c') goto yy56; yy579: YYDEBUG(579, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy580; - if (yych != 'c') goto yy57; -yy580: - YYDEBUG(580, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + goto yy531; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'E') goto yy581; - if (yych != 'e') goto yy476; + if (yych <= 'E') goto yy580; + if (yych != 'e') goto yy475; } } +yy580: + YYDEBUG(580, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy581; + if (yych != 'm') goto yy56; yy581: YYDEBUG(581, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy582; - if (yych != 'm') goto yy57; + if (yych == 'B') goto yy582; + if (yych != 'b') goto yy56; yy582: YYDEBUG(582, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy583; - if (yych != 'b') goto yy57; + if (yych == 'E') goto yy583; + if (yych != 'e') goto yy56; yy583: YYDEBUG(583, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy584; - if (yych != 'e') goto yy57; + if (yych == 'R') goto yy539; + if (yych == 'r') goto yy539; + goto yy56; yy584: YYDEBUG(584, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy540; - if (yych == 'r') goto yy540; - goto yy57; + if (yych == 'P') goto yy585; + if (yych != 'p') goto yy56; yy585: YYDEBUG(585, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy586; - if (yych != 'p') goto yy57; -yy586: - YYDEBUG(586, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + goto yy531; } } else { if (yych <= 'S') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'T') goto yy587; - if (yych != 't') goto yy476; + if (yych <= 'T') goto yy586; + if (yych != 't') goto yy475; } } -yy587: - YYDEBUG(587, *YYCURSOR); +yy586: + YYDEBUG(586, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + goto yy531; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'E') goto yy588; - if (yych != 'e') goto yy476; + if (yych <= 'E') goto yy587; + if (yych != 'e') goto yy475; } } +yy587: + YYDEBUG(587, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy588; + if (yych != 'm') goto yy56; yy588: YYDEBUG(588, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy589; - if (yych != 'm') goto yy57; + if (yych == 'B') goto yy589; + if (yych != 'b') goto yy56; yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy590; - if (yych != 'b') goto yy57; + if (yych == 'E') goto yy590; + if (yych != 'e') goto yy56; yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy591; - if (yych != 'e') goto yy57; + if (yych == 'R') goto yy539; + if (yych == 'r') goto yy539; + goto yy56; yy591: YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy540; - if (yych == 'r') goto yy540; - goto yy57; -yy592: - YYDEBUG(592, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'R') goto yy593; - if (yych <= 'X') goto yy57; - goto yy540; + if (yych == 'R') goto yy592; + if (yych <= 'X') goto yy56; + goto yy539; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy57; + if (yych <= 'q') goto yy56; } else { - if (yych == 'y') goto yy540; - goto yy57; + if (yych == 'y') goto yy539; + goto yy56; } } -yy593: - YYDEBUG(593, *YYCURSOR); +yy592: + YYDEBUG(592, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + goto yy531; } } else { if (yych <= 'B') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'C') goto yy594; - if (yych != 'c') goto yy476; + if (yych <= 'C') goto yy593; + if (yych != 'c') goto yy475; } } +yy593: + YYDEBUG(593, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy539; + if (yych == 'h') goto yy539; + goto yy56; yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy540; - if (yych == 'h') goto yy540; - goto yy57; + if (yych == 'B') goto yy595; + if (yych != 'b') goto yy56; yy595: YYDEBUG(595, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy596; - if (yych != 'b') goto yy57; -yy596: - YYDEBUG(596, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + goto yy531; } } else { if (yych <= 'Q') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'R') goto yy597; - if (yych != 'r') goto yy476; + if (yych <= 'R') goto yy596; + if (yych != 'r') goto yy475; } } +yy596: + YYDEBUG(596, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy597; + if (yych != 'u') goto yy56; yy597: YYDEBUG(597, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy598; - if (yych != 'u') goto yy57; + if (yych == 'A') goto yy598; + if (yych != 'a') goto yy56; yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy599; - if (yych != 'a') goto yy57; + if (yych == 'R') goto yy599; + if (yych != 'r') goto yy56; yy599: YYDEBUG(599, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy600; - if (yych != 'r') goto yy57; + if (yych == 'Y') goto yy539; + if (yych == 'y') goto yy539; + goto yy56; yy600: YYDEBUG(600, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy540; - if (yych == 'y') goto yy540; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy607; + if (yych <= '6') goto yy608; + if (yych <= '9') goto yy609; + goto yy56; yy601: YYDEBUG(601, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy608; - if (yych <= '6') goto yy609; - if (yych <= '9') goto yy610; - goto yy57; -yy602: + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; YYDEBUG(602, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; +yy603: YYDEBUG(603, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; yy604: YYDEBUG(604, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy605: + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; YYDEBUG(605, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; - YYDEBUG(606, *YYCURSOR); ++YYCURSOR; - YYDEBUG(607, *YYCURSOR); + YYDEBUG(606, *YYCURSOR); #line 1328 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("pointed date YYYY"); @@ -11006,42 +10987,42 @@ yy605: TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } -#line 11010 "ext/date/lib/parse_date.c" +#line 10991 "ext/date/lib/parse_date.c" +yy607: + YYDEBUG(607, *YYCURSOR); + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy496; + if (yych <= '/') goto yy490; + if (yych <= '9') goto yy612; + goto yy490; yy608: YYDEBUG(608, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy613; - goto yy491; + if (yych <= '/') { + if (yych == '.') goto yy496; + goto yy490; + } else { + if (yych <= '0') goto yy612; + if (yych <= '9') goto yy610; + goto yy490; + } yy609: YYDEBUG(609, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy497; - goto yy491; - } else { - if (yych <= '0') goto yy613; - if (yych <= '9') goto yy611; - goto yy491; - } + if (yych == '.') goto yy496; + if (yych <= '/') goto yy490; + if (yych >= ':') goto yy490; yy610: YYDEBUG(610, *YYCURSOR); - yyaccept = 11; + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych >= ':') goto yy491; + if (yych <= '/') goto yy611; + if (yych <= '9') goto yy604; yy611: YYDEBUG(611, *YYCURSOR); - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy612; - if (yych <= '9') goto yy605; -yy612: - YYDEBUG(612, *YYCURSOR); #line 1340 "ext/date/lib/parse_date.re" { int length = 0; @@ -11055,647 +11036,647 @@ yy612: TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } -#line 11059 "ext/date/lib/parse_date.c" -yy613: - YYDEBUG(613, *YYCURSOR); +#line 11040 "ext/date/lib/parse_date.c" +yy612: + YYDEBUG(612, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= ' ') { - if (yych == '\t') goto yy501; - if (yych <= 0x1F) goto yy491; - goto yy501; + if (yych == '\t') goto yy500; + if (yych <= 0x1F) goto yy490; + goto yy500; } else { - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - goto yy605; + if (yych == '.') goto yy496; + if (yych <= '/') goto yy490; + goto yy604; } } else { if (yych <= 'P') { - if (yych == 'A') goto yy503; - if (yych <= 'O') goto yy491; - goto yy503; + if (yych == 'A') goto yy502; + if (yych <= 'O') goto yy490; + goto yy502; } else { if (yych <= 'a') { - if (yych <= '`') goto yy491; - goto yy503; + if (yych <= '`') goto yy490; + goto yy502; } else { - if (yych == 'p') goto yy503; - goto yy491; + if (yych == 'p') goto yy502; + goto yy490; } } } -yy614: - YYDEBUG(614, *YYCURSOR); +yy613: + YYDEBUG(613, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy508; - if (yych <= 0x1F) goto yy491; - goto yy508; + if (yych == '\t') goto yy507; + if (yych <= 0x1F) goto yy490; + goto yy507; } else { - if (yych == '.') goto yy493; - if (yych <= '9') goto yy491; - goto yy493; + if (yych == '.') goto yy492; + if (yych <= '9') goto yy490; + goto yy492; } } else { if (yych <= 'P') { - if (yych == 'A') goto yy510; - if (yych <= 'O') goto yy491; - goto yy510; + if (yych == 'A') goto yy509; + if (yych <= 'O') goto yy490; + goto yy509; } else { if (yych <= 'a') { - if (yych <= '`') goto yy491; - goto yy510; + if (yych <= '`') goto yy490; + goto yy509; } else { - if (yych == 'p') goto yy510; - goto yy491; + if (yych == 'p') goto yy509; + goto yy490; } } } -yy615: - YYDEBUG(615, *YYCURSOR); +yy614: + YYDEBUG(614, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy508; - if (yych <= 0x1F) goto yy491; - goto yy508; + if (yych == '\t') goto yy507; + if (yych <= 0x1F) goto yy490; + goto yy507; } else { if (yych <= '-') { - if (yych <= ',') goto yy491; - goto yy602; + if (yych <= ',') goto yy490; + goto yy601; } else { - if (yych <= '.') goto yy601; - if (yych <= '9') goto yy491; - goto yy493; + if (yych <= '.') goto yy600; + if (yych <= '9') goto yy490; + goto yy492; } } } else { if (yych <= 'P') { - if (yych == 'A') goto yy510; - if (yych <= 'O') goto yy491; - goto yy510; + if (yych == 'A') goto yy509; + if (yych <= 'O') goto yy490; + goto yy509; } else { if (yych <= 'a') { - if (yych <= '`') goto yy491; - goto yy510; + if (yych <= '`') goto yy490; + goto yy509; } else { - if (yych == 'p') goto yy510; - goto yy491; + if (yych == 'p') goto yy509; + goto yy490; } } } +yy615: + YYDEBUG(615, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy56; + if (yych <= '-') goto yy654; + goto yy601; + } else { + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy617; + goto yy56; + } yy616: YYDEBUG(616, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '.') { - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy655; - goto yy602; + if (yych <= ',') goto yy56; + if (yych <= '-') goto yy654; + goto yy601; } else { - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy618; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '3') goto yy56; } yy617: YYDEBUG(617, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '.') { - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy655; - goto yy602; - } else { - if (yych <= '/') goto yy57; - if (yych >= '3') goto yy57; - } + if (yych <= ',') goto yy56; + if (yych <= '-') goto yy654; + if (yych <= '.') goto yy601; + goto yy56; yy618: YYDEBUG(618, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy655; - if (yych <= '.') goto yy602; - goto yy57; -yy619: - YYDEBUG(619, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'A') goto yy651; - if (yych <= 'T') goto yy57; - goto yy650; + if (yych == 'A') goto yy650; + if (yych <= 'T') goto yy56; + goto yy649; } else { if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy651; + if (yych <= '`') goto yy56; + goto yy650; } else { - if (yych == 'u') goto yy650; - goto yy57; + if (yych == 'u') goto yy649; + goto yy56; } } +yy619: + YYDEBUG(619, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy647; + if (yych == 'e') goto yy647; + goto yy56; yy620: YYDEBUG(620, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy648; - if (yych == 'e') goto yy648; - goto yy57; + if (yych == 'A') goto yy644; + if (yych == 'a') goto yy644; + goto yy56; yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy645; - if (yych == 'a') goto yy645; - goto yy57; -yy622: - YYDEBUG(622, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'P') goto yy642; - if (yych <= 'T') goto yy57; - goto yy641; + if (yych == 'P') goto yy641; + if (yych <= 'T') goto yy56; + goto yy640; } else { if (yych <= 'p') { - if (yych <= 'o') goto yy57; - goto yy642; + if (yych <= 'o') goto yy56; + goto yy641; } else { - if (yych == 'u') goto yy641; - goto yy57; + if (yych == 'u') goto yy640; + goto yy56; } } +yy622: + YYDEBUG(622, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy637; + if (yych == 'e') goto yy637; + goto yy56; yy623: YYDEBUG(623, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy638; - if (yych == 'e') goto yy638; - goto yy57; + if (yych == 'C') goto yy635; + if (yych == 'c') goto yy635; + goto yy56; yy624: YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy636; - if (yych == 'c') goto yy636; - goto yy57; + if (yych == 'O') goto yy633; + if (yych == 'o') goto yy633; + goto yy56; yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy634; - if (yych == 'o') goto yy634; - goto yy57; + if (yych == 'E') goto yy626; + if (yych != 'e') goto yy56; yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy627; - if (yych != 'e') goto yy57; + if (yych == 'C') goto yy627; + if (yych != 'c') goto yy56; yy627: YYDEBUG(627, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy628; - if (yych != 'c') goto yy57; -yy628: - YYDEBUG(628, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych >= '.') goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych >= '.') goto yy531; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'E') goto yy581; - if (yych == 'e') goto yy581; - goto yy476; + if (yych <= 'E') goto yy580; + if (yych == 'e') goto yy580; + goto yy475; } } +yy628: + YYDEBUG(628, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy532; + if (yych <= '0') goto yy629; + if (yych <= '2') goto yy630; + if (yych <= '3') goto yy631; + goto yy532; yy629: YYDEBUG(629, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy533; - if (yych <= '0') goto yy630; - if (yych <= '2') goto yy631; - if (yych <= '3') goto yy632; - goto yy533; + if (yych <= '/') goto yy534; + if (yych <= '9') goto yy632; + goto yy534; yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy535; - if (yych <= '9') goto yy633; - goto yy535; + if (yych <= '/') goto yy534; + if (yych <= '9') goto yy632; + goto yy534; yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy535; - if (yych <= '9') goto yy633; - goto yy535; + if (yych <= '/') goto yy534; + if (yych <= '1') goto yy632; + if (yych <= '9') goto yy540; + goto yy534; yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy535; - if (yych <= '1') goto yy633; + if (yych <= '/') goto yy534; if (yych <= '9') goto yy541; - goto yy535; + goto yy534; yy633: YYDEBUG(633, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy535; - if (yych <= '9') goto yy542; - goto yy535; + if (yych == 'V') goto yy634; + if (yych != 'v') goto yy56; yy634: YYDEBUG(634, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'V') goto yy635; - if (yych != 'v') goto yy57; -yy635: - YYDEBUG(635, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych <= '-') goto yy628; + goto yy531; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'E') goto yy536; - if (yych == 'e') goto yy536; - goto yy476; + if (yych <= 'E') goto yy535; + if (yych == 'e') goto yy535; + goto yy475; } } +yy635: + YYDEBUG(635, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy636; + if (yych != 't') goto yy56; yy636: YYDEBUG(636, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy637; - if (yych != 't') goto yy57; -yy637: - YYDEBUG(637, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych <= '-') goto yy628; + goto yy531; } } else { if (yych <= 'N') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'O') goto yy546; - if (yych == 'o') goto yy546; - goto yy476; + if (yych <= 'O') goto yy545; + if (yych == 'o') goto yy545; + goto yy475; } } +yy637: + YYDEBUG(637, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy638; + if (yych != 'p') goto yy56; yy638: YYDEBUG(638, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy639; - if (yych != 'p') goto yy57; -yy639: - YYDEBUG(639, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych <= '-') goto yy628; + goto yy531; } } else { if (yych <= 'S') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'T') goto yy640; - if (yych != 't') goto yy476; + if (yych <= 'T') goto yy639; + if (yych != 't') goto yy475; } } -yy640: - YYDEBUG(640, *YYCURSOR); +yy639: + YYDEBUG(639, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych <= '-') goto yy628; + goto yy531; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'E') goto yy588; - if (yych == 'e') goto yy588; - goto yy476; + if (yych <= 'E') goto yy587; + if (yych == 'e') goto yy587; + goto yy475; } } +yy640: + YYDEBUG(640, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy643; + if (yych == 'g') goto yy643; + goto yy56; yy641: YYDEBUG(641, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy644; - if (yych == 'g') goto yy644; - goto yy57; + if (yych == 'R') goto yy642; + if (yych != 'r') goto yy56; yy642: YYDEBUG(642, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy643; - if (yych != 'r') goto yy57; -yy643: - YYDEBUG(643, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych <= '-') goto yy628; + goto yy531; } } else { if (yych <= 'H') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'I') goto yy552; - if (yych == 'i') goto yy552; - goto yy476; + if (yych <= 'I') goto yy551; + if (yych == 'i') goto yy551; + goto yy475; } } -yy644: - YYDEBUG(644, *YYCURSOR); +yy643: + YYDEBUG(643, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych <= '-') goto yy628; + goto yy531; } } else { if (yych <= 'T') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'U') goto yy554; - if (yych == 'u') goto yy554; - goto yy476; + if (yych <= 'U') goto yy553; + if (yych == 'u') goto yy553; + goto yy475; } } -yy645: - YYDEBUG(645, *YYCURSOR); +yy644: + YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'R') goto yy646; - if (yych <= 'X') goto yy57; - goto yy647; + if (yych == 'R') goto yy645; + if (yych <= 'X') goto yy56; + goto yy646; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy57; + if (yych <= 'q') goto yy56; } else { - if (yych == 'y') goto yy647; - goto yy57; + if (yych == 'y') goto yy646; + goto yy56; } } -yy646: - YYDEBUG(646, *YYCURSOR); +yy645: + YYDEBUG(645, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych <= '-') goto yy628; + goto yy531; } } else { if (yych <= 'B') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'C') goto yy594; - if (yych == 'c') goto yy594; - goto yy476; + if (yych <= 'C') goto yy593; + if (yych == 'c') goto yy593; + goto yy475; } } -yy647: - YYDEBUG(647, *YYCURSOR); +yy646: + YYDEBUG(646, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= '\t') { - if (yych <= 0x08) goto yy476; - goto yy532; + if (yych <= 0x08) goto yy475; + goto yy531; } else { - if (yych == ' ') goto yy532; - goto yy476; + if (yych == ' ') goto yy531; + goto yy475; } } else { if (yych <= '.') { - if (yych <= '-') goto yy629; - goto yy532; + if (yych <= '-') goto yy628; + goto yy531; } else { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } } +yy647: + YYDEBUG(647, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy648; + if (yych != 'b') goto yy56; yy648: YYDEBUG(648, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy649; - if (yych != 'b') goto yy57; -yy649: - YYDEBUG(649, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych <= '-') goto yy628; + goto yy531; } } else { if (yych <= 'Q') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'R') goto yy597; - if (yych == 'r') goto yy597; - goto yy476; + if (yych <= 'R') goto yy596; + if (yych == 'r') goto yy596; + goto yy475; } } -yy650: - YYDEBUG(650, *YYCURSOR); +yy649: + YYDEBUG(649, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'L') goto yy654; - if (yych <= 'M') goto yy57; - goto yy653; + if (yych == 'L') goto yy653; + if (yych <= 'M') goto yy56; + goto yy652; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy57; - goto yy654; + if (yych <= 'k') goto yy56; + goto yy653; } else { - if (yych == 'n') goto yy653; - goto yy57; + if (yych == 'n') goto yy652; + goto yy56; } } +yy650: + YYDEBUG(650, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy651; + if (yych != 'n') goto yy56; yy651: YYDEBUG(651, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy652; - if (yych != 'n') goto yy57; -yy652: - YYDEBUG(652, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych <= '-') goto yy628; + goto yy531; } } else { if (yych <= 'T') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'U') goto yy559; - if (yych == 'u') goto yy559; - goto yy476; + if (yych <= 'U') goto yy558; + if (yych == 'u') goto yy558; + goto yy475; } } -yy653: - YYDEBUG(653, *YYCURSOR); +yy652: + YYDEBUG(652, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych <= '-') goto yy628; + goto yy531; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'E') goto yy540; - if (yych == 'e') goto yy540; - goto yy476; + if (yych <= 'E') goto yy539; + if (yych == 'e') goto yy539; + goto yy475; } } -yy654: - YYDEBUG(654, *YYCURSOR); +yy653: + YYDEBUG(653, *YYCURSOR); yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy476; + if (yych == '\t') goto yy531; + goto yy475; } else { - if (yych <= ' ') goto yy532; - if (yych <= ',') goto yy476; - if (yych <= '-') goto yy629; - goto yy532; + if (yych <= ' ') goto yy531; + if (yych <= ',') goto yy475; + if (yych <= '-') goto yy628; + goto yy531; } } else { if (yych <= 'X') { - if (yych <= '/') goto yy476; - if (yych <= '9') goto yy534; - goto yy476; + if (yych <= '/') goto yy475; + if (yych <= '9') goto yy533; + goto yy475; } else { - if (yych <= 'Y') goto yy540; - if (yych == 'y') goto yy540; - goto yy476; + if (yych <= 'Y') goto yy539; + if (yych == 'y') goto yy539; + goto yy475; } } +yy654: + YYDEBUG(654, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '2') goto yy655; + if (yych <= '3') goto yy657; + if (yych <= '9') goto yy658; + goto yy56; yy655: YYDEBUG(655, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy656; - if (yych <= '3') goto yy658; - if (yych <= '9') goto yy659; - goto yy57; -yy656: - YYDEBUG(656, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy665; - if (yych >= 'n') goto yy661; + if (yych <= '/') goto yy656; + if (yych <= '9') goto yy664; + if (yych >= 'n') goto yy660; } else { if (yych <= 'r') { - if (yych >= 'r') goto yy662; + if (yych >= 'r') goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; } } -yy657: - YYDEBUG(657, *YYCURSOR); +yy656: + YYDEBUG(656, *YYCURSOR); #line 1299 "ext/date/lib/parse_date.re" { int length = 0; @@ -11709,112 +11690,112 @@ yy657: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 11713 "ext/date/lib/parse_date.c" -yy658: - YYDEBUG(658, *YYCURSOR); +#line 11694 "ext/date/lib/parse_date.c" +yy657: + YYDEBUG(657, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { if (yych <= '1') { - if (yych <= '/') goto yy657; - goto yy665; + if (yych <= '/') goto yy656; + goto yy664; } else { - if (yych <= '9') goto yy604; - if (yych <= 'm') goto yy657; - goto yy661; + if (yych <= '9') goto yy603; + if (yych <= 'm') goto yy656; + goto yy660; } } else { if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; + if (yych <= 'q') goto yy656; + goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy656; } } -yy659: - YYDEBUG(659, *YYCURSOR); +yy658: + YYDEBUG(658, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy604; - if (yych <= 'm') goto yy657; - goto yy661; + if (yych <= '/') goto yy656; + if (yych <= '9') goto yy603; + if (yych <= 'm') goto yy656; + goto yy660; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; + if (yych <= 'q') goto yy656; + goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy656; } } +yy659: + YYDEBUG(659, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 't') goto yy663; + goto yy56; yy660: YYDEBUG(660, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 't') goto yy664; - goto yy57; + if (yych == 'd') goto yy663; + goto yy56; yy661: YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'd') goto yy664; - goto yy57; + if (yych == 'd') goto yy663; + goto yy56; yy662: YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'd') goto yy664; - goto yy57; + if (yych != 'h') goto yy56; yy663: YYDEBUG(663, *YYCURSOR); yych = *++YYCURSOR; - if (yych != 'h') goto yy57; + goto yy656; yy664: YYDEBUG(664, *YYCURSOR); - yych = *++YYCURSOR; - goto yy657; -yy665: - YYDEBUG(665, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy605; - if (yych <= 'm') goto yy657; - goto yy661; + if (yych <= '/') goto yy656; + if (yych <= '9') goto yy604; + if (yych <= 'm') goto yy656; + goto yy660; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; + if (yych <= 'q') goto yy656; + goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy656; } } -yy666: - YYDEBUG(666, *YYCURSOR); +yy665: + YYDEBUG(665, *YYCURSOR); yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { if (yych <= '/') { - if (yych >= '/') goto yy723; + if (yych >= '/') goto yy722; } else { - if (yych <= '9') goto yy669; - if (yych >= 'n') goto yy720; + if (yych <= '9') goto yy668; + if (yych >= 'n') goto yy719; } } else { if (yych <= 'r') { - if (yych >= 'r') goto yy721; + if (yych >= 'r') goto yy720; } else { - if (yych <= 's') goto yy719; - if (yych <= 't') goto yy722; + if (yych <= 's') goto yy718; + if (yych <= 't') goto yy721; } } -yy667: - YYDEBUG(667, *YYCURSOR); +yy666: + YYDEBUG(666, *YYCURSOR); #line 1243 "ext/date/lib/parse_date.re" { int length = 0; @@ -11830,239 +11811,239 @@ yy667: TIMELIB_DEINIT; return TIMELIB_AMERICAN; } -#line 11834 "ext/date/lib/parse_date.c" -yy668: - YYDEBUG(668, *YYCURSOR); +#line 11815 "ext/date/lib/parse_date.c" +yy667: + YYDEBUG(667, *YYCURSOR); yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { if (yych <= '/') { - if (yych <= '.') goto yy667; - goto yy723; + if (yych <= '.') goto yy666; + goto yy722; } else { - if (yych <= '1') goto yy669; - if (yych <= 'm') goto yy667; - goto yy720; + if (yych <= '1') goto yy668; + if (yych <= 'm') goto yy666; + goto yy719; } } else { if (yych <= 'r') { - if (yych <= 'q') goto yy667; - goto yy721; + if (yych <= 'q') goto yy666; + goto yy720; } else { - if (yych <= 's') goto yy719; - if (yych <= 't') goto yy722; - goto yy667; + if (yych <= 's') goto yy718; + if (yych <= 't') goto yy721; + goto yy666; } } -yy669: - YYDEBUG(669, *YYCURSOR); +yy668: + YYDEBUG(668, *YYCURSOR); yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych == '/') goto yy723; - if (yych <= 'm') goto yy667; - goto yy720; + if (yych == '/') goto yy722; + if (yych <= 'm') goto yy666; + goto yy719; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy667; - goto yy721; + if (yych <= 'q') goto yy666; + goto yy720; } else { - if (yych <= 's') goto yy719; - if (yych <= 't') goto yy722; - goto yy667; + if (yych <= 's') goto yy718; + if (yych <= 't') goto yy721; + goto yy666; } } -yy670: - YYDEBUG(670, *YYCURSOR); +yy669: + YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'A') goto yy718; - if (yych <= 'T') goto yy57; - goto yy717; + if (yych == 'A') goto yy717; + if (yych <= 'T') goto yy56; + goto yy716; } else { if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy718; + if (yych <= '`') goto yy56; + goto yy717; } else { - if (yych == 'u') goto yy717; - goto yy57; + if (yych == 'u') goto yy716; + goto yy56; } } +yy670: + YYDEBUG(670, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy715; + if (yych == 'e') goto yy715; + goto yy56; yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy716; - if (yych == 'e') goto yy716; - goto yy57; + if (yych == 'A') goto yy714; + if (yych == 'a') goto yy714; + goto yy56; yy672: YYDEBUG(672, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy715; - if (yych == 'a') goto yy715; - goto yy57; -yy673: - YYDEBUG(673, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'P') goto yy714; - if (yych <= 'T') goto yy57; - goto yy713; + if (yych == 'P') goto yy713; + if (yych <= 'T') goto yy56; + goto yy712; } else { if (yych <= 'p') { - if (yych <= 'o') goto yy57; - goto yy714; + if (yych <= 'o') goto yy56; + goto yy713; } else { - if (yych == 'u') goto yy713; - goto yy57; + if (yych == 'u') goto yy712; + goto yy56; } } +yy673: + YYDEBUG(673, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy710; + if (yych == 'e') goto yy710; + goto yy56; yy674: YYDEBUG(674, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy711; - if (yych == 'e') goto yy711; - goto yy57; + if (yych == 'C') goto yy709; + if (yych == 'c') goto yy709; + goto yy56; yy675: YYDEBUG(675, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy710; - if (yych == 'c') goto yy710; - goto yy57; + if (yych == 'O') goto yy708; + if (yych == 'o') goto yy708; + goto yy56; yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy709; - if (yych == 'o') goto yy709; - goto yy57; + if (yych == 'E') goto yy677; + if (yych != 'e') goto yy56; yy677: YYDEBUG(677, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy678; - if (yych != 'e') goto yy57; + if (yych == 'C') goto yy678; + if (yych != 'c') goto yy56; yy678: YYDEBUG(678, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy679; - if (yych != 'c') goto yy57; + if (yych != '/') goto yy56; yy679: YYDEBUG(679, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '/') goto yy57; -yy680: + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; YYDEBUG(680, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; YYDEBUG(681, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; YYDEBUG(682, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; YYDEBUG(683, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych != ':') goto yy56; YYDEBUG(684, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '1') goto yy685; + if (yych <= '2') goto yy686; + goto yy56; +yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy686; - if (yych <= '2') goto yy687; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy687; + goto yy56; yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy688; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '5') goto yy56; yy687: YYDEBUG(687, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '5') goto yy57; -yy688: + if (yych != ':') goto yy56; YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '6') goto yy56; YYDEBUG(689, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '6') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; YYDEBUG(690, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych != ':') goto yy56; YYDEBUG(691, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy692; + if (yych <= '6') goto yy693; + goto yy56; +yy692: YYDEBUG(692, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy693; - if (yych <= '6') goto yy694; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy694; + goto yy56; yy693: YYDEBUG(693, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy695; - goto yy57; + if (yych != '0') goto yy56; yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '0') goto yy57; + if (yych == '\t') goto yy695; + if (yych != ' ') goto yy56; yy695: YYDEBUG(695, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\t') goto yy696; - if (yych != ' ') goto yy57; -yy696: - YYDEBUG(696, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; - YYDEBUG(697, *YYCURSOR); + YYDEBUG(696, *YYCURSOR); if (yych <= '*') { if (yych <= '\t') { - if (yych <= 0x08) goto yy57; - goto yy696; + if (yych <= 0x08) goto yy56; + goto yy695; } else { - if (yych == ' ') goto yy696; - goto yy57; + if (yych == ' ') goto yy695; + goto yy56; } } else { if (yych <= '-') { - if (yych == ',') goto yy57; - goto yy699; + if (yych == ',') goto yy56; + goto yy698; } else { - if (yych != 'G') goto yy57; + if (yych != 'G') goto yy56; } } + YYDEBUG(697, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy706; + goto yy56; +yy698: YYDEBUG(698, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy707; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '1') goto yy699; + if (yych <= '2') goto yy701; + if (yych <= '9') goto yy702; + goto yy56; yy699: YYDEBUG(699, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy700; - if (yych <= '2') goto yy702; - if (yych <= '9') goto yy703; - goto yy57; + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '/') goto yy700; + if (yych <= '9') goto yy702; + if (yych <= ':') goto yy703; yy700: YYDEBUG(700, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '/') goto yy701; - if (yych <= '9') goto yy703; - if (yych <= ':') goto yy704; -yy701: - YYDEBUG(701, *YYCURSOR); #line 1526 "ext/date/lib/parse_date.re" { int tz_not_found; @@ -12083,304 +12064,304 @@ yy701: TIMELIB_DEINIT; return TIMELIB_CLF; } -#line 12087 "ext/date/lib/parse_date.c" -yy702: - YYDEBUG(702, *YYCURSOR); +#line 12068 "ext/date/lib/parse_date.c" +yy701: + YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '5') { - if (yych <= '/') goto yy701; - if (yych >= '5') goto yy705; + if (yych <= '/') goto yy700; + if (yych >= '5') goto yy704; } else { - if (yych <= '9') goto yy706; - if (yych <= ':') goto yy704; - goto yy701; + if (yych <= '9') goto yy705; + if (yych <= ':') goto yy703; + goto yy700; } +yy702: + YYDEBUG(702, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy700; + if (yych <= '5') goto yy704; + if (yych <= '9') goto yy705; + if (yych >= ';') goto yy700; yy703: YYDEBUG(703, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy701; - if (yych <= '5') goto yy705; - if (yych <= '9') goto yy706; - if (yych >= ';') goto yy701; + if (yych <= '/') goto yy700; + if (yych <= '5') goto yy704; + if (yych <= '9') goto yy705; + goto yy700; yy704: YYDEBUG(704, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy701; - if (yych <= '5') goto yy705; - if (yych <= '9') goto yy706; - goto yy701; + if (yych <= '/') goto yy700; + if (yych >= ':') goto yy700; yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy701; - if (yych >= ':') goto yy701; + goto yy700; yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; - goto yy701; -yy707: + if (yych != 'T') goto yy56; YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; - if (yych != 'T') goto yy57; + if (yych == '+') goto yy698; + if (yych == '-') goto yy698; + goto yy56; +yy708: YYDEBUG(708, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '+') goto yy699; - if (yych == '-') goto yy699; - goto yy57; + if (yych == 'V') goto yy678; + if (yych == 'v') goto yy678; + goto yy56; yy709: YYDEBUG(709, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'V') goto yy679; - if (yych == 'v') goto yy679; - goto yy57; + if (yych == 'T') goto yy678; + if (yych == 't') goto yy678; + goto yy56; yy710: YYDEBUG(710, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy679; - if (yych == 't') goto yy679; - goto yy57; + if (yych == 'P') goto yy711; + if (yych != 'p') goto yy56; yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy712; - if (yych != 'p') goto yy57; -yy712: - YYDEBUG(712, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == '/') goto yy680; - goto yy57; + if (yych == '/') goto yy679; + goto yy56; } else { - if (yych <= 'T') goto yy679; - if (yych == 't') goto yy679; - goto yy57; + if (yych <= 'T') goto yy678; + if (yych == 't') goto yy678; + goto yy56; } +yy712: + YYDEBUG(712, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy678; + if (yych == 'g') goto yy678; + goto yy56; yy713: YYDEBUG(713, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy679; - if (yych == 'g') goto yy679; - goto yy57; + if (yych == 'R') goto yy678; + if (yych == 'r') goto yy678; + goto yy56; yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy679; - if (yych == 'r') goto yy679; - goto yy57; -yy715: - YYDEBUG(715, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'R') goto yy679; - if (yych <= 'X') goto yy57; - goto yy679; + if (yych == 'R') goto yy678; + if (yych <= 'X') goto yy56; + goto yy678; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy57; - goto yy679; + if (yych <= 'q') goto yy56; + goto yy678; } else { - if (yych == 'y') goto yy679; - goto yy57; + if (yych == 'y') goto yy678; + goto yy56; } } +yy715: + YYDEBUG(715, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy678; + if (yych == 'b') goto yy678; + goto yy56; yy716: YYDEBUG(716, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy679; - if (yych == 'b') goto yy679; - goto yy57; -yy717: - YYDEBUG(717, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'L') goto yy679; - if (yych <= 'M') goto yy57; - goto yy679; + if (yych == 'L') goto yy678; + if (yych <= 'M') goto yy56; + goto yy678; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy57; - goto yy679; + if (yych <= 'k') goto yy56; + goto yy678; } else { - if (yych == 'n') goto yy679; - goto yy57; + if (yych == 'n') goto yy678; + goto yy56; } } +yy717: + YYDEBUG(717, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy678; + if (yych == 'n') goto yy678; + goto yy56; yy718: YYDEBUG(718, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy679; - if (yych == 'n') goto yy679; - goto yy57; + if (yych == 't') goto yy727; + goto yy56; yy719: YYDEBUG(719, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 't') goto yy728; - goto yy57; + if (yych == 'd') goto yy727; + goto yy56; yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'd') goto yy728; - goto yy57; + if (yych == 'd') goto yy727; + goto yy56; yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'd') goto yy728; - goto yy57; + if (yych == 'h') goto yy727; + goto yy56; yy722: YYDEBUG(722, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'h') goto yy728; - goto yy57; -yy723: + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; YYDEBUG(723, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych <= '/') goto yy666; + if (yych >= ':') goto yy666; YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy667; - if (yych >= ':') goto yy667; + if (yych <= '/') goto yy666; + if (yych >= ':') goto yy666; YYDEBUG(725, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy667; - if (yych >= ':') goto yy667; + if (yych <= '/') goto yy666; + if (yych >= ':') goto yy666; YYDEBUG(726, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy667; - if (yych >= ':') goto yy667; + goto yy666; +yy727: YYDEBUG(727, *YYCURSOR); - yych = *++YYCURSOR; - goto yy667; -yy728: - YYDEBUG(728, *YYCURSOR); yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '/') goto yy723; - goto yy667; -yy729: - YYDEBUG(729, *YYCURSOR); + if (yych == '/') goto yy722; + goto yy666; +yy728: + YYDEBUG(728, *YYCURSOR); yych = *++YYCURSOR; if (yych <= ',') { - if (yych == '\t') goto yy731; - goto yy578; + if (yych == '\t') goto yy730; + goto yy577; } else { - if (yych <= '-') goto yy732; - if (yych <= '.') goto yy731; - if (yych >= '0') goto yy578; + if (yych <= '-') goto yy731; + if (yych <= '.') goto yy730; + if (yych >= '0') goto yy577; } -yy730: - YYDEBUG(730, *YYCURSOR); +yy729: + YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { case 'A': - case 'a': goto yy673; + case 'a': goto yy672; case 'D': - case 'd': goto yy677; + case 'd': goto yy676; case 'F': - case 'f': goto yy671; + case 'f': goto yy670; case 'J': - case 'j': goto yy670; + case 'j': goto yy669; case 'M': - case 'm': goto yy672; + case 'm': goto yy671; case 'N': - case 'n': goto yy676; + case 'n': goto yy675; case 'O': - case 'o': goto yy675; + case 'o': goto yy674; case 'S': - case 's': goto yy674; - default: goto yy57; + case 's': goto yy673; + default: goto yy56; } +yy730: + YYDEBUG(730, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy577; + if (yych <= '0') goto yy735; + if (yych <= '1') goto yy736; + if (yych <= '9') goto yy737; + goto yy577; yy731: YYDEBUG(731, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy578; - if (yych <= '0') goto yy736; - if (yych <= '1') goto yy737; - if (yych <= '9') goto yy738; - goto yy578; + if (yych <= '/') goto yy577; + if (yych <= '0') goto yy732; + if (yych <= '1') goto yy733; + if (yych <= '9') goto yy734; + goto yy577; yy732: YYDEBUG(732, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy578; - if (yych <= '0') goto yy733; - if (yych <= '1') goto yy734; - if (yych <= '9') goto yy735; - goto yy578; + if (yych <= ',') goto yy56; + if (yych <= '.') goto yy601; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy734; + goto yy56; yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= ',') goto yy57; - if (yych <= '.') goto yy602; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy735; - goto yy57; + if (yych <= ',') goto yy56; + if (yych <= '.') goto yy601; + if (yych <= '/') goto yy56; + if (yych >= '3') goto yy56; yy734: YYDEBUG(734, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= ',') goto yy57; - if (yych <= '.') goto yy602; - if (yych <= '/') goto yy57; - if (yych >= '3') goto yy57; + if (yych <= ',') goto yy56; + if (yych <= '.') goto yy601; + goto yy56; yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= ',') goto yy57; - if (yych <= '.') goto yy602; - goto yy57; + if (yych <= '.') { + if (yych <= ',') goto yy56; + if (yych <= '-') goto yy601; + goto yy738; + } else { + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy737; + goto yy56; + } yy736: YYDEBUG(736, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '.') { - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy602; - goto yy739; + if (yych <= ',') goto yy56; + if (yych <= '-') goto yy601; + goto yy738; } else { - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy738; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '3') goto yy56; } yy737: YYDEBUG(737, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '.') { - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy602; - goto yy739; - } else { - if (yych <= '/') goto yy57; - if (yych >= '3') goto yy57; - } + if (yych <= ',') goto yy56; + if (yych <= '-') goto yy601; + if (yych >= '/') goto yy56; yy738: YYDEBUG(738, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy602; - if (yych >= '/') goto yy57; -yy739: + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; YYDEBUG(739, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy610; + goto yy56; +yy740: YYDEBUG(740, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy611; - goto yy57; + if (yych == '-') goto yy784; + if (yych <= '/') goto yy60; + if (yych <= '9') goto yy782; + goto yy60; yy741: YYDEBUG(741, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '-') goto yy785; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy783; - goto yy61; -yy742: - YYDEBUG(742, *YYCURSOR); - yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { - case '0': goto yy751; - case '1': goto yy752; + case '0': goto yy750; + case '1': goto yy751; case '2': case '3': case '4': @@ -12388,253 +12369,253 @@ yy742: case '6': case '7': case '8': - case '9': goto yy753; + case '9': goto yy752; case 'A': - case 'a': goto yy746; + case 'a': goto yy745; case 'D': - case 'd': goto yy750; + case 'd': goto yy749; case 'F': - case 'f': goto yy744; + case 'f': goto yy743; case 'J': - case 'j': goto yy743; + case 'j': goto yy742; case 'M': - case 'm': goto yy745; + case 'm': goto yy744; case 'N': - case 'n': goto yy749; + case 'n': goto yy748; case 'O': - case 'o': goto yy748; + case 'o': goto yy747; case 'S': - case 's': goto yy747; - default: goto yy57; + case 's': goto yy746; + default: goto yy56; } -yy743: - YYDEBUG(743, *YYCURSOR); +yy742: + YYDEBUG(742, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'A') goto yy782; - if (yych <= 'T') goto yy57; - goto yy781; + if (yych == 'A') goto yy781; + if (yych <= 'T') goto yy56; + goto yy780; } else { if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy782; + if (yych <= '`') goto yy56; + goto yy781; } else { - if (yych == 'u') goto yy781; - goto yy57; + if (yych == 'u') goto yy780; + goto yy56; } } +yy743: + YYDEBUG(743, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy779; + if (yych == 'e') goto yy779; + goto yy56; yy744: YYDEBUG(744, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy780; - if (yych == 'e') goto yy780; - goto yy57; + if (yych == 'A') goto yy778; + if (yych == 'a') goto yy778; + goto yy56; yy745: YYDEBUG(745, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy779; - if (yych == 'a') goto yy779; - goto yy57; -yy746: - YYDEBUG(746, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'P') goto yy778; - if (yych <= 'T') goto yy57; - goto yy777; + if (yych == 'P') goto yy777; + if (yych <= 'T') goto yy56; + goto yy776; } else { if (yych <= 'p') { - if (yych <= 'o') goto yy57; - goto yy778; + if (yych <= 'o') goto yy56; + goto yy777; } else { - if (yych == 'u') goto yy777; - goto yy57; + if (yych == 'u') goto yy776; + goto yy56; } } +yy746: + YYDEBUG(746, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy774; + if (yych == 'e') goto yy774; + goto yy56; yy747: YYDEBUG(747, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy775; - if (yych == 'e') goto yy775; - goto yy57; + if (yych == 'C') goto yy773; + if (yych == 'c') goto yy773; + goto yy56; yy748: YYDEBUG(748, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy774; - if (yych == 'c') goto yy774; - goto yy57; + if (yych == 'O') goto yy772; + if (yych == 'o') goto yy772; + goto yy56; yy749: YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy773; - if (yych == 'o') goto yy773; - goto yy57; + if (yych == 'E') goto yy764; + if (yych == 'e') goto yy764; + goto yy56; yy750: YYDEBUG(750, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy765; - if (yych == 'e') goto yy765; - goto yy57; + if (yych == '-') goto yy753; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy757; + goto yy56; yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '-') goto yy754; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy758; - goto yy57; + if (yych == '-') goto yy753; + if (yych <= '/') goto yy56; + if (yych <= '2') goto yy757; + goto yy56; yy752: YYDEBUG(752, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '-') goto yy754; - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy758; - goto yy57; + if (yych != '-') goto yy56; yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '-') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '2') goto yy754; + if (yych <= '3') goto yy755; + if (yych <= '9') goto yy756; + goto yy56; yy754: YYDEBUG(754, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy755; - if (yych <= '3') goto yy756; - if (yych <= '9') goto yy757; - goto yy57; -yy755: - YYDEBUG(755, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy757; - if (yych <= 'm') goto yy657; - goto yy661; + if (yych <= '/') goto yy656; + if (yych <= '9') goto yy756; + if (yych <= 'm') goto yy656; + goto yy660; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; + if (yych <= 'q') goto yy656; + goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy656; } } -yy756: - YYDEBUG(756, *YYCURSOR); +yy755: + YYDEBUG(755, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '1') goto yy757; - if (yych <= 'm') goto yy657; - goto yy661; + if (yych <= '/') goto yy656; + if (yych <= '1') goto yy756; + if (yych <= 'm') goto yy656; + goto yy660; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; + if (yych <= 'q') goto yy656; + goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy656; } } -yy757: - YYDEBUG(757, *YYCURSOR); +yy756: + YYDEBUG(756, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'q') { - if (yych == 'n') goto yy661; - goto yy657; + if (yych == 'n') goto yy660; + goto yy656; } else { - if (yych <= 'r') goto yy662; - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; + if (yych <= 'r') goto yy661; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy656; } -yy758: - YYDEBUG(758, *YYCURSOR); +yy757: + YYDEBUG(757, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '-') goto yy57; - YYDEBUG(759, *YYCURSOR); + if (yych != '-') goto yy56; + YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '2') { - if (yych <= '/') goto yy57; - if (yych >= '1') goto yy761; + if (yych <= '/') goto yy56; + if (yych >= '1') goto yy760; } else { - if (yych <= '3') goto yy762; - if (yych <= '9') goto yy757; - goto yy57; + if (yych <= '3') goto yy761; + if (yych <= '9') goto yy756; + goto yy56; } - YYDEBUG(760, *YYCURSOR); + YYDEBUG(759, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy763; - if (yych <= 'm') goto yy657; - goto yy661; + if (yych <= '/') goto yy656; + if (yych <= '9') goto yy762; + if (yych <= 'm') goto yy656; + goto yy660; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; + if (yych <= 'q') goto yy656; + goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy656; } } -yy761: - YYDEBUG(761, *YYCURSOR); +yy760: + YYDEBUG(760, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy763; - if (yych <= 'm') goto yy657; - goto yy661; + if (yych <= '/') goto yy656; + if (yych <= '9') goto yy762; + if (yych <= 'm') goto yy656; + goto yy660; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; + if (yych <= 'q') goto yy656; + goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy656; } } -yy762: - YYDEBUG(762, *YYCURSOR); +yy761: + YYDEBUG(761, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '1') goto yy763; - if (yych <= 'm') goto yy657; - goto yy661; + if (yych <= '/') goto yy656; + if (yych <= '1') goto yy762; + if (yych <= 'm') goto yy656; + goto yy660; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; + if (yych <= 'q') goto yy656; + goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy656; } } -yy763: - YYDEBUG(763, *YYCURSOR); +yy762: + YYDEBUG(762, *YYCURSOR); yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'q') { - if (yych == 'n') goto yy661; + if (yych == 'n') goto yy660; } else { - if (yych <= 'r') goto yy662; - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; + if (yych <= 'r') goto yy661; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; } -yy764: - YYDEBUG(764, *YYCURSOR); +yy763: + YYDEBUG(763, *YYCURSOR); #line 1271 "ext/date/lib/parse_date.re" { int length = 0; @@ -12648,45 +12629,45 @@ yy764: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 12652 "ext/date/lib/parse_date.c" +#line 12633 "ext/date/lib/parse_date.c" +yy764: + YYDEBUG(764, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy765; + if (yych != 'c') goto yy56; yy765: YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy766; - if (yych != 'c') goto yy57; + if (yych != '-') goto yy56; yy766: YYDEBUG(766, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '-') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '0') goto yy767; + if (yych <= '2') goto yy768; + if (yych <= '3') goto yy769; + goto yy56; yy767: YYDEBUG(767, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy768; - if (yych <= '2') goto yy769; - if (yych <= '3') goto yy770; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy770; + goto yy56; yy768: YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy771; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy770; + goto yy56; yy769: YYDEBUG(769, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy771; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '2') goto yy56; yy770: YYDEBUG(770, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '2') goto yy57; -yy771: - YYDEBUG(771, *YYCURSOR); ++YYCURSOR; - YYDEBUG(772, *YYCURSOR); + YYDEBUG(771, *YYCURSOR); #line 1512 "ext/date/lib/parse_date.re" { int length = 0; @@ -12700,93 +12681,93 @@ yy771: TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -#line 12704 "ext/date/lib/parse_date.c" +#line 12685 "ext/date/lib/parse_date.c" +yy772: + YYDEBUG(772, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy765; + if (yych == 'v') goto yy765; + goto yy56; yy773: YYDEBUG(773, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'V') goto yy766; - if (yych == 'v') goto yy766; - goto yy57; + if (yych == 'T') goto yy765; + if (yych == 't') goto yy765; + goto yy56; yy774: YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy766; - if (yych == 't') goto yy766; - goto yy57; + if (yych == 'P') goto yy775; + if (yych != 'p') goto yy56; yy775: YYDEBUG(775, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy776; - if (yych != 'p') goto yy57; -yy776: - YYDEBUG(776, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == '-') goto yy767; - goto yy57; + if (yych == '-') goto yy766; + goto yy56; } else { - if (yych <= 'T') goto yy766; - if (yych == 't') goto yy766; - goto yy57; + if (yych <= 'T') goto yy765; + if (yych == 't') goto yy765; + goto yy56; } +yy776: + YYDEBUG(776, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy765; + if (yych == 'g') goto yy765; + goto yy56; yy777: YYDEBUG(777, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy766; - if (yych == 'g') goto yy766; - goto yy57; + if (yych == 'R') goto yy765; + if (yych == 'r') goto yy765; + goto yy56; yy778: YYDEBUG(778, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy766; - if (yych == 'r') goto yy766; - goto yy57; -yy779: - YYDEBUG(779, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'R') goto yy766; - if (yych <= 'X') goto yy57; - goto yy766; + if (yych == 'R') goto yy765; + if (yych <= 'X') goto yy56; + goto yy765; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy57; - goto yy766; + if (yych <= 'q') goto yy56; + goto yy765; } else { - if (yych == 'y') goto yy766; - goto yy57; + if (yych == 'y') goto yy765; + goto yy56; } } +yy779: + YYDEBUG(779, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy765; + if (yych == 'b') goto yy765; + goto yy56; yy780: YYDEBUG(780, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy766; - if (yych == 'b') goto yy766; - goto yy57; -yy781: - YYDEBUG(781, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'L') goto yy766; - if (yych <= 'M') goto yy57; - goto yy766; + if (yych == 'L') goto yy765; + if (yych <= 'M') goto yy56; + goto yy765; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy57; - goto yy766; + if (yych <= 'k') goto yy56; + goto yy765; } else { - if (yych == 'n') goto yy766; - goto yy57; + if (yych == 'n') goto yy765; + goto yy56; } } +yy781: + YYDEBUG(781, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy765; + if (yych == 'n') goto yy765; + goto yy56; yy782: YYDEBUG(782, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy766; - if (yych == 'n') goto yy766; - goto yy57; -yy783: - YYDEBUG(783, *YYCURSOR); yyaccept = 16; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); @@ -12818,26 +12799,26 @@ yy783: case 's': case 't': case 'w': - case 'y': goto yy791; - case '-': goto yy788; - case '.': goto yy792; - case '/': goto yy789; - case '0': goto yy805; - case '1': goto yy806; - case '2': goto yy808; - case '3': goto yy809; + case 'y': goto yy790; + case '-': goto yy787; + case '.': goto yy791; + case '/': goto yy788; + case '0': goto yy804; + case '1': goto yy805; + case '2': goto yy807; + case '3': goto yy808; case '4': case '5': case '6': case '7': case '8': - case '9': goto yy55; - case ':': goto yy807; - case 'W': goto yy810; - default: goto yy784; + case '9': goto yy54; + case ':': goto yy806; + case 'W': goto yy809; + default: goto yy783; } -yy784: - YYDEBUG(784, *YYCURSOR); +yy783: + YYDEBUG(783, *YYCURSOR); #line 1547 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("year4"); @@ -12846,14 +12827,14 @@ yy784: TIMELIB_DEINIT; return TIMELIB_CLF; } -#line 12850 "ext/date/lib/parse_date.c" -yy785: - YYDEBUG(785, *YYCURSOR); +#line 12831 "ext/date/lib/parse_date.c" +yy784: + YYDEBUG(784, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { - case '0': goto yy786; - case '1': goto yy787; + case '0': goto yy785; + case '1': goto yy786; case '2': case '3': case '4': @@ -12861,46 +12842,46 @@ yy785: case '6': case '7': case '8': - case '9': goto yy753; + case '9': goto yy752; case 'A': - case 'a': goto yy746; + case 'a': goto yy745; case 'D': - case 'd': goto yy750; + case 'd': goto yy749; case 'F': - case 'f': goto yy744; + case 'f': goto yy743; case 'J': - case 'j': goto yy743; + case 'j': goto yy742; case 'M': - case 'm': goto yy745; + case 'm': goto yy744; case 'N': - case 'n': goto yy749; + case 'n': goto yy748; case 'O': - case 'o': goto yy748; + case 'o': goto yy747; case 'S': - case 's': goto yy747; - default: goto yy57; + case 's': goto yy746; + default: goto yy56; } +yy785: + YYDEBUG(785, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '-') goto yy753; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy752; + goto yy56; yy786: YYDEBUG(786, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '-') goto yy754; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy753; - goto yy57; + if (yych == '-') goto yy753; + if (yych <= '/') goto yy56; + if (yych <= '2') goto yy752; + goto yy56; yy787: YYDEBUG(787, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '-') goto yy754; - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy753; - goto yy57; -yy788: - YYDEBUG(788, *YYCURSOR); - yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { - case '0': goto yy973; - case '1': goto yy975; + case '0': goto yy972; + case '1': goto yy974; case '2': case '3': case '4': @@ -12908,95 +12889,95 @@ yy788: case '6': case '7': case '8': - case '9': goto yy976; + case '9': goto yy975; case 'A': - case 'a': goto yy967; + case 'a': goto yy966; case 'D': - case 'd': goto yy971; + case 'd': goto yy970; case 'F': - case 'f': goto yy965; + case 'f': goto yy964; case 'J': - case 'j': goto yy964; + case 'j': goto yy963; case 'M': - case 'm': goto yy966; + case 'm': goto yy965; case 'N': - case 'n': goto yy970; + case 'n': goto yy969; case 'O': - case 'o': goto yy969; + case 'o': goto yy968; case 'S': - case 's': goto yy968; - case 'W': goto yy972; - default: goto yy939; + case 's': goto yy967; + case 'W': goto yy971; + default: goto yy938; } +yy788: + YYDEBUG(788, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '0') goto yy946; + if (yych <= '1') goto yy947; + if (yych <= '9') goto yy948; + goto yy56; yy789: YYDEBUG(789, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy947; - if (yych <= '1') goto yy948; - if (yych <= '9') goto yy949; - goto yy57; -yy790: - YYDEBUG(790, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; -yy791: - YYDEBUG(791, *YYCURSOR); +yy790: + YYDEBUG(790, *YYCURSOR); YYDEBUG(-1, yych); switch (yych) { case '\t': - case ' ': goto yy790; + case ' ': goto yy789; case '-': - case '.': goto yy938; + case '.': goto yy937; case 'A': - case 'a': goto yy800; + case 'a': goto yy799; case 'D': - case 'd': goto yy804; + case 'd': goto yy803; case 'F': - case 'f': goto yy798; + case 'f': goto yy797; case 'H': - case 'h': goto yy64; - case 'I': goto yy793; + case 'h': goto yy63; + case 'I': goto yy792; case 'J': - case 'j': goto yy797; + case 'j': goto yy796; case 'M': - case 'm': goto yy799; + case 'm': goto yy798; case 'N': - case 'n': goto yy803; + case 'n': goto yy802; case 'O': - case 'o': goto yy802; + case 'o': goto yy801; case 'S': - case 's': goto yy801; + case 's': goto yy800; case 'T': - case 't': goto yy69; - case 'V': goto yy795; + case 't': goto yy68; + case 'V': goto yy794; case 'W': - case 'w': goto yy68; - case 'X': goto yy796; + case 'w': goto yy67; + case 'X': goto yy795; case 'Y': - case 'y': goto yy67; - default: goto yy57; + case 'y': goto yy66; + default: goto yy56; } +yy791: + YYDEBUG(791, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy938; + if (yych <= '0') goto yy930; + if (yych <= '2') goto yy931; + if (yych <= '3') goto yy932; + goto yy938; yy792: YYDEBUG(792, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy939; - if (yych <= '0') goto yy931; - if (yych <= '2') goto yy932; - if (yych <= '3') goto yy933; - goto yy939; -yy793: - YYDEBUG(793, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= 'U') { - if (yych == 'I') goto yy930; + if (yych == 'I') goto yy929; } else { - if (yych == 'W') goto yy794; - if (yych <= 'X') goto yy884; + if (yych == 'W') goto yy793; + if (yych <= 'X') goto yy883; } -yy794: - YYDEBUG(794, *YYCURSOR); +yy793: + YYDEBUG(793, *YYCURSOR); #line 1368 "ext/date/lib/parse_date.re" { int length = 0; @@ -13010,221 +12991,221 @@ yy794: TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -#line 13014 "ext/date/lib/parse_date.c" +#line 12995 "ext/date/lib/parse_date.c" +yy794: + YYDEBUG(794, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy927; + goto yy793; yy795: YYDEBUG(795, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy928; - goto yy794; + if (yych == 'I') goto yy926; + goto yy793; yy796: YYDEBUG(796, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy927; - goto yy794; -yy797: - YYDEBUG(797, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'A') goto yy920; - if (yych <= 'T') goto yy57; - goto yy919; + if (yych == 'A') goto yy919; + if (yych <= 'T') goto yy56; + goto yy918; } else { if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy920; + if (yych <= '`') goto yy56; + goto yy919; } else { - if (yych == 'u') goto yy919; - goto yy57; + if (yych == 'u') goto yy918; + goto yy56; } } -yy798: - YYDEBUG(798, *YYCURSOR); +yy797: + YYDEBUG(797, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= 'N') { - if (yych == 'E') goto yy913; - goto yy57; + if (yych == 'E') goto yy912; + goto yy56; } else { - if (yych <= 'O') goto yy99; - if (yych <= 'Q') goto yy57; - goto yy98; + if (yych <= 'O') goto yy98; + if (yych <= 'Q') goto yy56; + goto yy97; } } else { if (yych <= 'n') { - if (yych == 'e') goto yy913; - goto yy57; + if (yych == 'e') goto yy912; + goto yy56; } else { - if (yych <= 'o') goto yy99; - if (yych == 'r') goto yy98; - goto yy57; + if (yych <= 'o') goto yy98; + if (yych == 'r') goto yy97; + goto yy56; } } -yy799: - YYDEBUG(799, *YYCURSOR); +yy798: + YYDEBUG(798, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'H') { - if (yych == 'A') goto yy910; - goto yy57; + if (yych == 'A') goto yy909; + goto yy56; } else { - if (yych <= 'I') goto yy118; - if (yych <= 'N') goto yy57; - goto yy117; + if (yych <= 'I') goto yy117; + if (yych <= 'N') goto yy56; + goto yy116; } } else { if (yych <= 'h') { - if (yych == 'a') goto yy910; - goto yy57; + if (yych == 'a') goto yy909; + goto yy56; } else { - if (yych <= 'i') goto yy118; - if (yych == 'o') goto yy117; - goto yy57; + if (yych <= 'i') goto yy117; + if (yych == 'o') goto yy116; + goto yy56; } } -yy800: - YYDEBUG(800, *YYCURSOR); +yy799: + YYDEBUG(799, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'P') goto yy904; - if (yych <= 'T') goto yy57; - goto yy903; + if (yych == 'P') goto yy903; + if (yych <= 'T') goto yy56; + goto yy902; } else { if (yych <= 'p') { - if (yych <= 'o') goto yy57; - goto yy904; + if (yych <= 'o') goto yy56; + goto yy903; } else { - if (yych == 'u') goto yy903; - goto yy57; + if (yych == 'u') goto yy902; + goto yy56; } } -yy801: - YYDEBUG(801, *YYCURSOR); +yy800: + YYDEBUG(800, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'D') { - if (yych == 'A') goto yy127; - goto yy57; + if (yych == 'A') goto yy126; + goto yy56; } else { - if (yych <= 'E') goto yy896; - if (yych <= 'T') goto yy57; - goto yy126; + if (yych <= 'E') goto yy895; + if (yych <= 'T') goto yy56; + goto yy125; } } else { if (yych <= 'd') { - if (yych == 'a') goto yy127; - goto yy57; + if (yych == 'a') goto yy126; + goto yy56; } else { - if (yych <= 'e') goto yy896; - if (yych == 'u') goto yy126; - goto yy57; + if (yych <= 'e') goto yy895; + if (yych == 'u') goto yy125; + goto yy56; } } +yy801: + YYDEBUG(801, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy890; + if (yych == 'c') goto yy890; + goto yy56; yy802: YYDEBUG(802, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy891; - if (yych == 'c') goto yy891; - goto yy57; + if (yych == 'O') goto yy884; + if (yych == 'o') goto yy884; + goto yy56; yy803: YYDEBUG(803, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy885; - if (yych == 'o') goto yy885; - goto yy57; -yy804: - YYDEBUG(804, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'E') { - if (yych == 'A') goto yy114; - if (yych <= 'D') goto yy57; - goto yy878; + if (yych == 'A') goto yy113; + if (yych <= 'D') goto yy56; + goto yy877; } else { if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy114; + if (yych <= '`') goto yy56; + goto yy113; } else { - if (yych == 'e') goto yy878; - goto yy57; + if (yych == 'e') goto yy877; + goto yy56; } } +yy804: + YYDEBUG(804, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy60; + if (yych <= '0') goto yy874; + if (yych <= '9') goto yy875; + goto yy60; yy805: YYDEBUG(805, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '0') goto yy875; - if (yych <= '9') goto yy876; - goto yy61; + if (yych <= '/') goto yy60; + if (yych <= '2') goto yy843; + if (yych <= '9') goto yy822; + goto yy60; yy806: YYDEBUG(806, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '2') goto yy844; - if (yych <= '9') goto yy823; - goto yy61; + if (yych <= '/') goto yy56; + if (yych <= '0') goto yy823; + if (yych <= '1') goto yy824; + goto yy56; yy807: YYDEBUG(807, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy824; - if (yych <= '1') goto yy825; - goto yy57; + if (yych <= '/') goto yy60; + if (yych <= '9') goto yy822; + goto yy60; yy808: YYDEBUG(808, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy823; - goto yy61; + if (yych <= '/') goto yy60; + if (yych <= '5') goto yy818; + if (yych <= '6') goto yy819; + if (yych <= '9') goto yy54; + goto yy60; yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '5') goto yy819; - if (yych <= '6') goto yy820; - if (yych <= '9') goto yy55; - goto yy61; -yy810: - YYDEBUG(810, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= '5') { - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy811; - if (yych <= '4') goto yy812; - goto yy813; + if (yych <= '/') goto yy56; + if (yych <= '0') goto yy810; + if (yych <= '4') goto yy811; + goto yy812; } else { if (yych <= 'E') { - if (yych <= 'D') goto yy57; - goto yy83; + if (yych <= 'D') goto yy56; + goto yy82; } else { - if (yych == 'e') goto yy83; - goto yy57; + if (yych == 'e') goto yy82; + goto yy56; } } +yy810: + YYDEBUG(810, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '0') goto yy56; + if (yych <= '9') goto yy813; + goto yy56; yy811: YYDEBUG(811, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '0') goto yy57; - if (yych <= '9') goto yy814; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy813; + goto yy56; yy812: YYDEBUG(812, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy814; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '4') goto yy56; yy813: YYDEBUG(813, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '4') goto yy57; -yy814: - YYDEBUG(814, *YYCURSOR); yyaccept = 17; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy816; - if (yych <= '/') goto yy815; - if (yych <= '7') goto yy817; -yy815: - YYDEBUG(815, *YYCURSOR); + if (yych == '-') goto yy815; + if (yych <= '/') goto yy814; + if (yych <= '7') goto yy816; +yy814: + YYDEBUG(814, *YYCURSOR); #line 1479 "ext/date/lib/parse_date.re" { timelib_sll w, d; @@ -13243,16 +13224,16 @@ yy815: TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -#line 13247 "ext/date/lib/parse_date.c" +#line 13228 "ext/date/lib/parse_date.c" +yy815: + YYDEBUG(815, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych >= '8') goto yy56; yy816: YYDEBUG(816, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '8') goto yy57; -yy817: - YYDEBUG(817, *YYCURSOR); ++YYCURSOR; - YYDEBUG(818, *YYCURSOR); + YYDEBUG(817, *YYCURSOR); #line 1460 "ext/date/lib/parse_date.re" { timelib_sll w, d; @@ -13271,70 +13252,70 @@ yy817: TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -#line 13275 "ext/date/lib/parse_date.c" +#line 13256 "ext/date/lib/parse_date.c" +yy818: + YYDEBUG(818, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy60; + if (yych <= '9') goto yy820; + goto yy60; yy819: YYDEBUG(819, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy821; - goto yy61; + if (yych <= '/') goto yy60; + if (yych <= '6') goto yy820; + if (yych <= '9') goto yy54; + goto yy60; yy820: YYDEBUG(820, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '6') goto yy821; - if (yych <= '9') goto yy55; - goto yy61; -yy821: - YYDEBUG(821, *YYCURSOR); yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 2) { - goto yy55; + goto yy54; } if (yych <= 'W') { if (yych <= 'F') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych >= ' ') goto yy61; + if (yych == '\t') goto yy60; + if (yych >= ' ') goto yy60; } else { - if (yych == 'D') goto yy61; - if (yych >= 'F') goto yy61; + if (yych == 'D') goto yy60; + if (yych >= 'F') goto yy60; } } else { if (yych <= 'M') { - if (yych == 'H') goto yy61; - if (yych >= 'M') goto yy61; + if (yych == 'H') goto yy60; + if (yych >= 'M') goto yy60; } else { - if (yych <= 'R') goto yy822; - if (yych <= 'T') goto yy61; - if (yych >= 'W') goto yy61; + if (yych <= 'R') goto yy821; + if (yych <= 'T') goto yy60; + if (yych >= 'W') goto yy60; } } } else { if (yych <= 'h') { if (yych <= 'd') { - if (yych == 'Y') goto yy61; - if (yych >= 'd') goto yy61; + if (yych == 'Y') goto yy60; + if (yych >= 'd') goto yy60; } else { - if (yych == 'f') goto yy61; - if (yych >= 'h') goto yy61; + if (yych == 'f') goto yy60; + if (yych >= 'h') goto yy60; } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych >= 's') goto yy61; + if (yych == 'm') goto yy60; + if (yych >= 's') goto yy60; } else { if (yych <= 'w') { - if (yych >= 'w') goto yy61; + if (yych >= 'w') goto yy60; } else { - if (yych == 'y') goto yy61; + if (yych == 'y') goto yy60; } } } } -yy822: - YYDEBUG(822, *YYCURSOR); +yy821: + YYDEBUG(821, *YYCURSOR); #line 1446 "ext/date/lib/parse_date.re" { int length = 0; @@ -13348,109 +13329,109 @@ yy822: TIMELIB_DEINIT; return TIMELIB_PG_YEARDAY; } -#line 13352 "ext/date/lib/parse_date.c" +#line 13333 "ext/date/lib/parse_date.c" +yy822: + YYDEBUG(822, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy60; + if (yych <= '9') goto yy820; + goto yy60; yy823: YYDEBUG(823, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy821; - goto yy61; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy825; + goto yy56; yy824: YYDEBUG(824, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy826; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '3') goto yy56; yy825: YYDEBUG(825, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '3') goto yy57; -yy826: + if (yych != ':') goto yy56; YYDEBUG(826, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '0') goto yy827; + if (yych <= '2') goto yy828; + if (yych <= '3') goto yy829; + goto yy56; +yy827: YYDEBUG(827, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy828; - if (yych <= '2') goto yy829; - if (yych <= '3') goto yy830; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy830; + goto yy56; yy828: YYDEBUG(828, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy831; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy830; + goto yy56; yy829: YYDEBUG(829, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy831; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '2') goto yy56; yy830: YYDEBUG(830, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '2') goto yy57; -yy831: + if (yych != ' ') goto yy56; YYDEBUG(831, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ' ') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '1') goto yy832; + if (yych <= '2') goto yy833; + goto yy56; +yy832: YYDEBUG(832, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy833; - if (yych <= '2') goto yy834; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy834; + goto yy56; yy833: YYDEBUG(833, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy835; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '5') goto yy56; yy834: YYDEBUG(834, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '5') goto yy57; -yy835: + if (yych != ':') goto yy56; YYDEBUG(835, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '6') goto yy56; YYDEBUG(836, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '6') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; YYDEBUG(837, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych != ':') goto yy56; YYDEBUG(838, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy839; + if (yych <= '6') goto yy840; + goto yy56; +yy839: YYDEBUG(839, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy840; - if (yych <= '6') goto yy841; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy841; + goto yy56; yy840: YYDEBUG(840, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy842; - goto yy57; + if (yych != '0') goto yy56; yy841: YYDEBUG(841, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '0') goto yy57; + ++YYCURSOR; yy842: YYDEBUG(842, *YYCURSOR); - ++YYCURSOR; -yy843: - YYDEBUG(843, *YYCURSOR); #line 1420 "ext/date/lib/parse_date.re" { int tz_not_found; @@ -13476,268 +13457,268 @@ yy843: TIMELIB_DEINIT; return TIMELIB_XMLRPC_SOAP; } -#line 13480 "ext/date/lib/parse_date.c" -yy844: - YYDEBUG(844, *YYCURSOR); +#line 13461 "ext/date/lib/parse_date.c" +yy843: + YYDEBUG(843, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '2') { - if (yych <= '/') goto yy61; - if (yych >= '1') goto yy846; + if (yych <= '/') goto yy60; + if (yych >= '1') goto yy845; } else { - if (yych <= '3') goto yy847; - if (yych <= '9') goto yy821; - goto yy61; + if (yych <= '3') goto yy846; + if (yych <= '9') goto yy820; + goto yy60; } -yy845: - YYDEBUG(845, *YYCURSOR); +yy844: + YYDEBUG(844, *YYCURSOR); yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy822; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy821; + goto yy60; } else { - if (yych <= '/') goto yy822; - if (yych <= '9') goto yy848; - if (yych <= 'C') goto yy822; - goto yy61; + if (yych <= '/') goto yy821; + if (yych <= '9') goto yy847; + if (yych <= 'C') goto yy821; + goto yy60; } } else { if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy822; - goto yy61; + if (yych == 'F') goto yy60; + if (yych <= 'G') goto yy821; + goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy822; - goto yy61; + if (yych <= 'L') goto yy821; + goto yy60; } else { - if (yych <= 'R') goto yy822; - if (yych <= 'T') goto yy61; - goto yy822; + if (yych <= 'R') goto yy821; + if (yych <= 'T') goto yy60; + goto yy821; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy822; - if (yych <= 'Y') goto yy61; - goto yy822; + if (yych == 'X') goto yy821; + if (yych <= 'Y') goto yy60; + goto yy821; } else { if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy822; + if (yych <= 'd') goto yy60; + goto yy821; } else { - if (yych == 'g') goto yy822; - goto yy61; + if (yych == 'g') goto yy821; + goto yy60; } } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy822; - goto yy61; + if (yych == 'm') goto yy60; + if (yych <= 'r') goto yy821; + goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy822; - goto yy61; + if (yych <= 'v') goto yy821; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy822; + if (yych == 'y') goto yy60; + goto yy821; } } } } -yy846: - YYDEBUG(846, *YYCURSOR); +yy845: + YYDEBUG(845, *YYCURSOR); yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy822; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy821; + goto yy60; } else { - if (yych <= '/') goto yy822; - if (yych <= '9') goto yy848; - if (yych <= 'C') goto yy822; - goto yy61; + if (yych <= '/') goto yy821; + if (yych <= '9') goto yy847; + if (yych <= 'C') goto yy821; + goto yy60; } } else { if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy822; - goto yy61; + if (yych == 'F') goto yy60; + if (yych <= 'G') goto yy821; + goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy822; - goto yy61; + if (yych <= 'L') goto yy821; + goto yy60; } else { - if (yych <= 'R') goto yy822; - if (yych <= 'T') goto yy61; - goto yy822; + if (yych <= 'R') goto yy821; + if (yych <= 'T') goto yy60; + goto yy821; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy822; - if (yych <= 'Y') goto yy61; - goto yy822; + if (yych == 'X') goto yy821; + if (yych <= 'Y') goto yy60; + goto yy821; } else { if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy822; + if (yych <= 'd') goto yy60; + goto yy821; } else { - if (yych == 'g') goto yy822; - goto yy61; + if (yych == 'g') goto yy821; + goto yy60; } } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy822; - goto yy61; + if (yych == 'm') goto yy60; + if (yych <= 'r') goto yy821; + goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy822; - goto yy61; + if (yych <= 'v') goto yy821; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy822; + if (yych == 'y') goto yy60; + goto yy821; } } } } -yy847: - YYDEBUG(847, *YYCURSOR); +yy846: + YYDEBUG(846, *YYCURSOR); yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy822; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy821; + goto yy60; } else { if (yych <= '1') { - if (yych <= '/') goto yy822; + if (yych <= '/') goto yy821; } else { - if (yych <= '9') goto yy55; - if (yych <= 'C') goto yy822; - goto yy61; + if (yych <= '9') goto yy54; + if (yych <= 'C') goto yy821; + goto yy60; } } } else { if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy822; - goto yy61; + if (yych == 'F') goto yy60; + if (yych <= 'G') goto yy821; + goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy822; - goto yy61; + if (yych <= 'L') goto yy821; + goto yy60; } else { - if (yych <= 'R') goto yy822; - if (yych <= 'T') goto yy61; - goto yy822; + if (yych <= 'R') goto yy821; + if (yych <= 'T') goto yy60; + goto yy821; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy822; - if (yych <= 'Y') goto yy61; - goto yy822; + if (yych == 'X') goto yy821; + if (yych <= 'Y') goto yy60; + goto yy821; } else { if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy822; + if (yych <= 'd') goto yy60; + goto yy821; } else { - if (yych == 'g') goto yy822; - goto yy61; + if (yych == 'g') goto yy821; + goto yy60; } } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy822; - goto yy61; + if (yych == 'm') goto yy60; + if (yych <= 'r') goto yy821; + goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy822; - goto yy61; + if (yych <= 'v') goto yy821; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy822; + if (yych == 'y') goto yy60; + goto yy821; } } } } -yy848: - YYDEBUG(848, *YYCURSOR); +yy847: + YYDEBUG(847, *YYCURSOR); yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 2) { - goto yy55; + goto yy54; } if (yych <= 'W') { if (yych <= 'F') { if (yych <= ' ') { - if (yych == '\t') goto yy60; - if (yych >= ' ') goto yy60; + if (yych == '\t') goto yy59; + if (yych >= ' ') goto yy59; } else { - if (yych == 'D') goto yy65; - if (yych >= 'F') goto yy66; + if (yych == 'D') goto yy64; + if (yych >= 'F') goto yy65; } } else { if (yych <= 'M') { - if (yych == 'H') goto yy64; - if (yych >= 'M') goto yy63; + if (yych == 'H') goto yy63; + if (yych >= 'M') goto yy62; } else { if (yych <= 'S') { - if (yych >= 'S') goto yy62; + if (yych >= 'S') goto yy61; } else { - if (yych <= 'T') goto yy850; - if (yych >= 'W') goto yy68; + if (yych <= 'T') goto yy849; + if (yych >= 'W') goto yy67; } } } } else { if (yych <= 'l') { if (yych <= 'd') { - if (yych == 'Y') goto yy67; - if (yych >= 'd') goto yy65; + if (yych == 'Y') goto yy66; + if (yych >= 'd') goto yy64; } else { if (yych <= 'f') { - if (yych >= 'f') goto yy66; + if (yych >= 'f') goto yy65; } else { - if (yych == 'h') goto yy64; + if (yych == 'h') goto yy63; } } } else { if (yych <= 't') { - if (yych <= 'm') goto yy63; - if (yych <= 'r') goto yy849; - if (yych <= 's') goto yy62; - goto yy851; + if (yych <= 'm') goto yy62; + if (yych <= 'r') goto yy848; + if (yych <= 's') goto yy61; + goto yy850; } else { if (yych <= 'w') { - if (yych >= 'w') goto yy68; + if (yych >= 'w') goto yy67; } else { - if (yych == 'y') goto yy67; + if (yych == 'y') goto yy66; } } } } -yy849: - YYDEBUG(849, *YYCURSOR); +yy848: + YYDEBUG(848, *YYCURSOR); #line 1408 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("datenocolon"); @@ -13749,926 +13730,926 @@ yy849: TIMELIB_DEINIT; return TIMELIB_DATE_NOCOLON; } -#line 13753 "ext/date/lib/parse_date.c" -yy850: - YYDEBUG(850, *YYCURSOR); +#line 13734 "ext/date/lib/parse_date.c" +yy849: + YYDEBUG(849, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= '2') { - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy865; - goto yy866; + if (yych <= '/') goto yy56; + if (yych <= '1') goto yy864; + goto yy865; } else { - if (yych <= '9') goto yy867; - if (yych <= 'G') goto yy57; - goto yy70; + if (yych <= '9') goto yy866; + if (yych <= 'G') goto yy56; + goto yy69; } } else { if (yych <= 'g') { - if (yych == 'U') goto yy71; - goto yy57; + if (yych == 'U') goto yy70; + goto yy56; } else { - if (yych <= 'h') goto yy70; - if (yych == 'u') goto yy71; - goto yy57; + if (yych <= 'h') goto yy69; + if (yych == 'u') goto yy70; + goto yy56; } } -yy851: - YYDEBUG(851, *YYCURSOR); +yy850: + YYDEBUG(850, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= '2') { - if (yych <= '/') goto yy57; - if (yych >= '2') goto yy853; + if (yych <= '/') goto yy56; + if (yych >= '2') goto yy852; } else { - if (yych <= '9') goto yy854; - if (yych <= 'G') goto yy57; - goto yy70; + if (yych <= '9') goto yy853; + if (yych <= 'G') goto yy56; + goto yy69; } } else { if (yych <= 'g') { - if (yych == 'U') goto yy71; - goto yy57; + if (yych == 'U') goto yy70; + goto yy56; } else { - if (yych <= 'h') goto yy70; - if (yych == 'u') goto yy71; - goto yy57; + if (yych <= 'h') goto yy69; + if (yych == 'u') goto yy70; + goto yy56; } } + YYDEBUG(851, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy858; + if (yych <= '9') goto yy853; + goto yy56; +yy852: YYDEBUG(852, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy859; - if (yych <= '9') goto yy854; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '4') goto yy858; + if (yych <= '5') goto yy854; + goto yy56; yy853: YYDEBUG(853, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '4') goto yy859; - if (yych <= '5') goto yy855; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '6') goto yy56; yy854: YYDEBUG(854, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '6') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; yy855: YYDEBUG(855, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy856; + if (yych <= '6') goto yy857; + goto yy56; yy856: YYDEBUG(856, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy857; - if (yych <= '6') goto yy858; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy841; + goto yy56; yy857: YYDEBUG(857, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy842; - goto yy57; + if (yych == '0') goto yy841; + goto yy56; yy858: YYDEBUG(858, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '0') goto yy842; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy859; + if (yych <= '9') goto yy855; + goto yy56; yy859: YYDEBUG(859, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; + if (yych <= '/') goto yy56; if (yych <= '5') goto yy860; - if (yych <= '9') goto yy856; - goto yy57; + if (yych <= '6') goto yy861; + if (yych <= '9') goto yy855; + goto yy56; yy860: YYDEBUG(860, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy861; - if (yych <= '6') goto yy862; - if (yych <= '9') goto yy856; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy862; + if (yych <= '6') goto yy863; + if (yych <= '9') goto yy841; + goto yy56; yy861: YYDEBUG(861, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy863; - if (yych <= '6') goto yy864; - if (yych <= '9') goto yy842; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '0') goto yy862; + if (yych <= '5') goto yy856; + if (yych <= '6') goto yy857; + goto yy56; yy862: YYDEBUG(862, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy863; - if (yych <= '5') goto yy857; - if (yych <= '6') goto yy858; - goto yy57; + if (yych <= '/') goto yy842; + if (yych <= '9') goto yy841; + goto yy842; yy863: YYDEBUG(863, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '9') goto yy842; - goto yy843; + if (yych == '0') goto yy841; + goto yy842; yy864: YYDEBUG(864, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '0') goto yy842; - goto yy843; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy873; + if (yych <= '9') goto yy866; + if (yych <= ':') goto yy867; + goto yy56; yy865: YYDEBUG(865, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy874; - if (yych <= '9') goto yy867; - if (yych <= ':') goto yy868; - goto yy57; -yy866: - YYDEBUG(866, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= '5') { - if (yych <= '/') goto yy57; - if (yych <= '4') goto yy874; - goto yy855; + if (yych <= '/') goto yy56; + if (yych <= '4') goto yy873; + goto yy854; } else { - if (yych == ':') goto yy868; - goto yy57; + if (yych == ':') goto yy867; + goto yy56; } +yy866: + YYDEBUG(866, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy854; + if (yych != ':') goto yy56; yy867: YYDEBUG(867, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy855; - if (yych != ':') goto yy57; -yy868: + if (yych <= '/') goto yy56; + if (yych >= '6') goto yy56; YYDEBUG(868, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= '6') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; YYDEBUG(869, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych != ':') goto yy56; YYDEBUG(870, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy871; + if (yych <= '6') goto yy872; + goto yy56; +yy871: YYDEBUG(871, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy872; - if (yych <= '6') goto yy873; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy841; + goto yy56; yy872: YYDEBUG(872, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy842; - goto yy57; + if (yych == '0') goto yy841; + goto yy56; yy873: YYDEBUG(873, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '0') goto yy842; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy859; + if (yych <= '9') goto yy855; + if (yych <= ':') goto yy867; + goto yy56; yy874: YYDEBUG(874, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy860; - if (yych <= '9') goto yy856; - if (yych <= ':') goto yy868; - goto yy57; + if (yych <= '2') { + if (yych <= '/') goto yy60; + if (yych <= '0') goto yy876; + goto yy845; + } else { + if (yych <= '3') goto yy846; + if (yych <= '9') goto yy820; + goto yy60; + } yy875: YYDEBUG(875, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '2') { - if (yych <= '/') goto yy61; - if (yych <= '0') goto yy877; - goto yy846; + if (yych <= '/') goto yy60; + if (yych <= '0') goto yy844; + goto yy845; } else { - if (yych <= '3') goto yy847; - if (yych <= '9') goto yy821; - goto yy61; + if (yych <= '3') goto yy846; + if (yych <= '9') goto yy820; + goto yy60; } yy876: YYDEBUG(876, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '2') { - if (yych <= '/') goto yy61; - if (yych <= '0') goto yy845; - goto yy846; - } else { - if (yych <= '3') goto yy847; - if (yych <= '9') goto yy821; - goto yy61; - } + if (yych <= '/') goto yy60; + if (yych <= '9') goto yy847; + goto yy60; yy877: YYDEBUG(877, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy848; - goto yy61; + if (yych == 'C') goto yy878; + if (yych != 'c') goto yy56; yy878: YYDEBUG(878, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy879; - if (yych != 'c') goto yy57; -yy879: - YYDEBUG(879, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy880; - if (yych != 'e') goto yy794; + if (yych == 'E') goto yy879; + if (yych != 'e') goto yy793; +yy879: + YYDEBUG(879, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy880; + if (yych != 'm') goto yy56; yy880: YYDEBUG(880, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy881; - if (yych != 'm') goto yy57; + if (yych == 'B') goto yy881; + if (yych != 'b') goto yy56; yy881: YYDEBUG(881, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy882; - if (yych != 'b') goto yy57; + if (yych == 'E') goto yy882; + if (yych != 'e') goto yy56; yy882: YYDEBUG(882, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy883; - if (yych != 'e') goto yy57; + if (yych == 'R') goto yy883; + if (yych != 'r') goto yy56; yy883: YYDEBUG(883, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy884; - if (yych != 'r') goto yy57; + goto yy793; yy884: YYDEBUG(884, *YYCURSOR); yych = *++YYCURSOR; - goto yy794; + if (yych == 'V') goto yy885; + if (yych != 'v') goto yy56; yy885: YYDEBUG(885, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'V') goto yy886; - if (yych != 'v') goto yy57; -yy886: - YYDEBUG(886, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy887; - if (yych != 'e') goto yy794; + if (yych == 'E') goto yy886; + if (yych != 'e') goto yy793; +yy886: + YYDEBUG(886, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy887; + if (yych != 'm') goto yy56; yy887: YYDEBUG(887, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy888; - if (yych != 'm') goto yy57; + if (yych == 'B') goto yy888; + if (yych != 'b') goto yy56; yy888: YYDEBUG(888, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy889; - if (yych != 'b') goto yy57; + if (yych == 'E') goto yy889; + if (yych != 'e') goto yy56; yy889: YYDEBUG(889, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy890; - if (yych != 'e') goto yy57; + if (yych == 'R') goto yy883; + if (yych == 'r') goto yy883; + goto yy56; yy890: YYDEBUG(890, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy884; - if (yych == 'r') goto yy884; - goto yy57; + if (yych == 'T') goto yy891; + if (yych != 't') goto yy56; yy891: YYDEBUG(891, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy892; - if (yych != 't') goto yy57; -yy892: - YYDEBUG(892, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'O') goto yy893; - if (yych != 'o') goto yy794; + if (yych == 'O') goto yy892; + if (yych != 'o') goto yy793; +yy892: + YYDEBUG(892, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy893; + if (yych != 'b') goto yy56; yy893: YYDEBUG(893, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy894; - if (yych != 'b') goto yy57; + if (yych == 'E') goto yy894; + if (yych != 'e') goto yy56; yy894: YYDEBUG(894, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy895; - if (yych != 'e') goto yy57; + if (yych == 'R') goto yy883; + if (yych == 'r') goto yy883; + goto yy56; yy895: YYDEBUG(895, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy884; - if (yych == 'r') goto yy884; - goto yy57; -yy896: - YYDEBUG(896, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'P') { - if (yych == 'C') goto yy129; - if (yych <= 'O') goto yy57; + if (yych == 'C') goto yy128; + if (yych <= 'O') goto yy56; } else { if (yych <= 'c') { - if (yych <= 'b') goto yy57; - goto yy129; + if (yych <= 'b') goto yy56; + goto yy128; } else { - if (yych != 'p') goto yy57; + if (yych != 'p') goto yy56; } } +yy896: + YYDEBUG(896, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy897; + if (yych != 't') goto yy793; yy897: YYDEBUG(897, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy898; - if (yych != 't') goto yy794; -yy898: - YYDEBUG(898, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy899; - if (yych != 'e') goto yy794; + if (yych == 'E') goto yy898; + if (yych != 'e') goto yy793; +yy898: + YYDEBUG(898, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy899; + if (yych != 'm') goto yy56; yy899: YYDEBUG(899, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy900; - if (yych != 'm') goto yy57; + if (yych == 'B') goto yy900; + if (yych != 'b') goto yy56; yy900: YYDEBUG(900, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy901; - if (yych != 'b') goto yy57; + if (yych == 'E') goto yy901; + if (yych != 'e') goto yy56; yy901: YYDEBUG(901, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy902; - if (yych != 'e') goto yy57; + if (yych == 'R') goto yy883; + if (yych == 'r') goto yy883; + goto yy56; yy902: YYDEBUG(902, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy884; - if (yych == 'r') goto yy884; - goto yy57; + if (yych == 'G') goto yy906; + if (yych == 'g') goto yy906; + goto yy56; yy903: YYDEBUG(903, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy907; - if (yych == 'g') goto yy907; - goto yy57; + if (yych == 'R') goto yy904; + if (yych != 'r') goto yy56; yy904: YYDEBUG(904, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy905; - if (yych != 'r') goto yy57; -yy905: - YYDEBUG(905, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'I') goto yy906; - if (yych != 'i') goto yy794; + if (yych == 'I') goto yy905; + if (yych != 'i') goto yy793; +yy905: + YYDEBUG(905, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy883; + if (yych == 'l') goto yy883; + goto yy56; yy906: YYDEBUG(906, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy884; - if (yych == 'l') goto yy884; - goto yy57; -yy907: - YYDEBUG(907, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'U') goto yy908; - if (yych != 'u') goto yy794; + if (yych == 'U') goto yy907; + if (yych != 'u') goto yy793; +yy907: + YYDEBUG(907, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy908; + if (yych != 's') goto yy56; yy908: YYDEBUG(908, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy909; - if (yych != 's') goto yy57; + if (yych == 'T') goto yy883; + if (yych == 't') goto yy883; + goto yy56; yy909: YYDEBUG(909, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy884; - if (yych == 't') goto yy884; - goto yy57; -yy910: - YYDEBUG(910, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'R') goto yy911; - if (yych <= 'X') goto yy57; - goto yy884; + if (yych == 'R') goto yy910; + if (yych <= 'X') goto yy56; + goto yy883; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy57; + if (yych <= 'q') goto yy56; } else { - if (yych == 'y') goto yy884; - goto yy57; + if (yych == 'y') goto yy883; + goto yy56; } } -yy911: - YYDEBUG(911, *YYCURSOR); +yy910: + YYDEBUG(910, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'C') goto yy912; - if (yych != 'c') goto yy794; + if (yych == 'C') goto yy911; + if (yych != 'c') goto yy793; +yy911: + YYDEBUG(911, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy883; + if (yych == 'h') goto yy883; + goto yy56; yy912: YYDEBUG(912, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy884; - if (yych == 'h') goto yy884; - goto yy57; + if (yych == 'B') goto yy913; + if (yych != 'b') goto yy56; yy913: YYDEBUG(913, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy914; - if (yych != 'b') goto yy57; -yy914: - YYDEBUG(914, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'R') goto yy915; - if (yych != 'r') goto yy794; + if (yych == 'R') goto yy914; + if (yych != 'r') goto yy793; +yy914: + YYDEBUG(914, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy915; + if (yych != 'u') goto yy56; yy915: YYDEBUG(915, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy916; - if (yych != 'u') goto yy57; + if (yych == 'A') goto yy916; + if (yych != 'a') goto yy56; yy916: YYDEBUG(916, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy917; - if (yych != 'a') goto yy57; + if (yych == 'R') goto yy917; + if (yych != 'r') goto yy56; yy917: YYDEBUG(917, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy918; - if (yych != 'r') goto yy57; + if (yych == 'Y') goto yy883; + if (yych == 'y') goto yy883; + goto yy56; yy918: YYDEBUG(918, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy884; - if (yych == 'y') goto yy884; - goto yy57; -yy919: - YYDEBUG(919, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'L') goto yy926; - if (yych <= 'M') goto yy57; - goto yy925; + if (yych == 'L') goto yy925; + if (yych <= 'M') goto yy56; + goto yy924; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy57; - goto yy926; + if (yych <= 'k') goto yy56; + goto yy925; } else { - if (yych == 'n') goto yy925; - goto yy57; + if (yych == 'n') goto yy924; + goto yy56; } } +yy919: + YYDEBUG(919, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy920; + if (yych != 'n') goto yy56; yy920: YYDEBUG(920, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy921; - if (yych != 'n') goto yy57; -yy921: - YYDEBUG(921, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'U') goto yy922; - if (yych != 'u') goto yy794; + if (yych == 'U') goto yy921; + if (yych != 'u') goto yy793; +yy921: + YYDEBUG(921, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy922; + if (yych != 'a') goto yy56; yy922: YYDEBUG(922, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy923; - if (yych != 'a') goto yy57; + if (yych == 'R') goto yy923; + if (yych != 'r') goto yy56; yy923: YYDEBUG(923, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy924; - if (yych != 'r') goto yy57; + if (yych == 'Y') goto yy883; + if (yych == 'y') goto yy883; + goto yy56; yy924: YYDEBUG(924, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy884; - if (yych == 'y') goto yy884; - goto yy57; + if (yych == 'E') goto yy883; + if (yych == 'e') goto yy883; + goto yy793; yy925: YYDEBUG(925, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy884; - if (yych == 'e') goto yy884; - goto yy794; + if (yych == 'Y') goto yy883; + if (yych == 'y') goto yy883; + goto yy793; yy926: YYDEBUG(926, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy884; - if (yych == 'y') goto yy884; - goto yy794; + if (yych == 'I') goto yy883; + goto yy793; yy927: YYDEBUG(927, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy884; - goto yy794; -yy928: + if (yych != 'I') goto yy793; YYDEBUG(928, *YYCURSOR); yych = *++YYCURSOR; - if (yych != 'I') goto yy794; + if (yych == 'I') goto yy883; + goto yy793; +yy929: YYDEBUG(929, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy884; - goto yy794; + if (yych == 'I') goto yy883; + goto yy793; yy930: YYDEBUG(930, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy884; - goto yy794; + if (yych <= '/') goto yy56; + if (yych <= '0') goto yy945; + if (yych <= '9') goto yy944; + goto yy56; yy931: YYDEBUG(931, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy946; - if (yych <= '9') goto yy945; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy943; + goto yy56; yy932: YYDEBUG(932, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy944; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy941; + if (yych <= '6') goto yy940; + goto yy56; yy933: YYDEBUG(933, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy942; - if (yych <= '6') goto yy941; - goto yy57; + if (yych == 'E') goto yy912; + if (yych == 'e') goto yy912; + goto yy56; yy934: YYDEBUG(934, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy913; - if (yych == 'e') goto yy913; - goto yy57; + if (yych == 'A') goto yy909; + if (yych == 'a') goto yy909; + goto yy56; yy935: YYDEBUG(935, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy910; - if (yych == 'a') goto yy910; - goto yy57; + if (yych == 'E') goto yy939; + if (yych == 'e') goto yy939; + goto yy56; yy936: YYDEBUG(936, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy940; - if (yych == 'e') goto yy940; - goto yy57; + if (yych == 'E') goto yy877; + if (yych == 'e') goto yy877; + goto yy56; yy937: YYDEBUG(937, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy878; - if (yych == 'e') goto yy878; - goto yy57; -yy938: - YYDEBUG(938, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; -yy939: - YYDEBUG(939, *YYCURSOR); +yy938: + YYDEBUG(938, *YYCURSOR); YYDEBUG(-1, yych); switch (yych) { case '\t': case ' ': case '-': - case '.': goto yy938; + case '.': goto yy937; case 'A': - case 'a': goto yy800; + case 'a': goto yy799; case 'D': - case 'd': goto yy937; + case 'd': goto yy936; case 'F': - case 'f': goto yy934; - case 'I': goto yy793; + case 'f': goto yy933; + case 'I': goto yy792; case 'J': - case 'j': goto yy797; + case 'j': goto yy796; case 'M': - case 'm': goto yy935; + case 'm': goto yy934; case 'N': - case 'n': goto yy803; + case 'n': goto yy802; case 'O': - case 'o': goto yy802; + case 'o': goto yy801; case 'S': - case 's': goto yy936; - case 'V': goto yy795; - case 'X': goto yy796; - default: goto yy57; + case 's': goto yy935; + case 'V': goto yy794; + case 'X': goto yy795; + default: goto yy56; } +yy939: + YYDEBUG(939, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy896; + if (yych == 'p') goto yy896; + goto yy56; yy940: YYDEBUG(940, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy897; - if (yych == 'p') goto yy897; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '6') goto yy942; + goto yy56; yy941: YYDEBUG(941, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '6') goto yy943; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; yy942: YYDEBUG(942, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + goto yy821; yy943: YYDEBUG(943, *YYCURSOR); yych = *++YYCURSOR; - goto yy822; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy942; + goto yy56; yy944: YYDEBUG(944, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy943; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy942; + goto yy56; yy945: YYDEBUG(945, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy943; - goto yy57; + if (yych <= '0') goto yy56; + if (yych <= '9') goto yy942; + goto yy56; yy946: YYDEBUG(946, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '0') goto yy57; - if (yych <= '9') goto yy943; - goto yy57; + if (yych <= '.') goto yy56; + if (yych <= '/') goto yy949; + if (yych <= '9') goto yy957; + goto yy56; yy947: YYDEBUG(947, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '.') goto yy57; - if (yych <= '/') goto yy950; - if (yych <= '9') goto yy958; - goto yy57; + if (yych <= '.') goto yy56; + if (yych <= '/') goto yy949; + if (yych <= '2') goto yy957; + goto yy56; yy948: YYDEBUG(948, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '.') goto yy57; - if (yych <= '/') goto yy950; - if (yych <= '2') goto yy958; - goto yy57; + if (yych != '/') goto yy56; yy949: YYDEBUG(949, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '/') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '2') goto yy950; + if (yych <= '3') goto yy951; + if (yych <= '9') goto yy952; + goto yy56; yy950: YYDEBUG(950, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy951; - if (yych <= '3') goto yy952; - if (yych <= '9') goto yy953; - goto yy57; -yy951: - YYDEBUG(951, *YYCURSOR); yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy455; - if (yych <= '9') goto yy953; - if (yych <= 'm') goto yy455; - goto yy955; + if (yych <= '/') goto yy454; + if (yych <= '9') goto yy952; + if (yych <= 'm') goto yy454; + goto yy954; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy956; + if (yych <= 'q') goto yy454; + goto yy955; } else { - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; + if (yych <= 's') goto yy953; + if (yych <= 't') goto yy956; + goto yy454; } } -yy952: - YYDEBUG(952, *YYCURSOR); +yy951: + YYDEBUG(951, *YYCURSOR); yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy455; - if (yych <= '1') goto yy953; - if (yych <= 'm') goto yy455; - goto yy955; + if (yych <= '/') goto yy454; + if (yych <= '1') goto yy952; + if (yych <= 'm') goto yy454; + goto yy954; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy956; + if (yych <= 'q') goto yy454; + goto yy955; } else { - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; + if (yych <= 's') goto yy953; + if (yych <= 't') goto yy956; + goto yy454; } } -yy953: - YYDEBUG(953, *YYCURSOR); +yy952: + YYDEBUG(952, *YYCURSOR); yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'q') { - if (yych == 'n') goto yy955; - goto yy455; + if (yych == 'n') goto yy954; + goto yy454; } else { - if (yych <= 'r') goto yy956; - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; + if (yych <= 'r') goto yy955; + if (yych <= 's') goto yy953; + if (yych <= 't') goto yy956; + goto yy454; } +yy953: + YYDEBUG(953, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 't') goto yy453; + goto yy56; yy954: YYDEBUG(954, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 't') goto yy454; - goto yy57; + if (yych == 'd') goto yy453; + goto yy56; yy955: YYDEBUG(955, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'd') goto yy454; - goto yy57; + if (yych == 'd') goto yy453; + goto yy56; yy956: YYDEBUG(956, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'd') goto yy454; - goto yy57; + if (yych == 'h') goto yy453; + goto yy56; yy957: YYDEBUG(957, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'h') goto yy454; - goto yy57; -yy958: + if (yych != '/') goto yy56; YYDEBUG(958, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '/') goto yy57; - YYDEBUG(959, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= '2') { - if (yych <= '/') goto yy57; - if (yych >= '1') goto yy961; + if (yych <= '/') goto yy56; + if (yych >= '1') goto yy960; } else { - if (yych <= '3') goto yy962; - if (yych <= '9') goto yy953; - goto yy57; + if (yych <= '3') goto yy961; + if (yych <= '9') goto yy952; + goto yy56; } - YYDEBUG(960, *YYCURSOR); + YYDEBUG(959, *YYCURSOR); yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy455; - if (yych <= '9') goto yy963; - if (yych <= 'm') goto yy455; - goto yy955; + if (yych <= '/') goto yy454; + if (yych <= '9') goto yy962; + if (yych <= 'm') goto yy454; + goto yy954; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy956; + if (yych <= 'q') goto yy454; + goto yy955; } else { - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; + if (yych <= 's') goto yy953; + if (yych <= 't') goto yy956; + goto yy454; } } -yy961: - YYDEBUG(961, *YYCURSOR); +yy960: + YYDEBUG(960, *YYCURSOR); yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy455; - if (yych <= '9') goto yy963; - if (yych <= 'm') goto yy455; - goto yy955; + if (yych <= '/') goto yy454; + if (yych <= '9') goto yy962; + if (yych <= 'm') goto yy454; + goto yy954; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy956; + if (yych <= 'q') goto yy454; + goto yy955; } else { - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; + if (yych <= 's') goto yy953; + if (yych <= 't') goto yy956; + goto yy454; } } -yy962: - YYDEBUG(962, *YYCURSOR); +yy961: + YYDEBUG(961, *YYCURSOR); yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy455; - if (yych <= '1') goto yy963; - if (yych <= 'm') goto yy455; - goto yy955; + if (yych <= '/') goto yy454; + if (yych <= '1') goto yy962; + if (yych <= 'm') goto yy454; + goto yy954; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy956; + if (yych <= 'q') goto yy454; + goto yy955; } else { - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; + if (yych <= 's') goto yy953; + if (yych <= 't') goto yy956; + goto yy454; } } -yy963: - YYDEBUG(963, *YYCURSOR); +yy962: + YYDEBUG(962, *YYCURSOR); yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych == '/') goto yy454; - if (yych <= 'm') goto yy455; - goto yy955; + if (yych == '/') goto yy453; + if (yych <= 'm') goto yy454; + goto yy954; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy956; + if (yych <= 'q') goto yy454; + goto yy955; } else { - if (yych <= 's') goto yy954; - if (yych <= 't') goto yy957; - goto yy455; + if (yych <= 's') goto yy953; + if (yych <= 't') goto yy956; + goto yy454; } } -yy964: - YYDEBUG(964, *YYCURSOR); +yy963: + YYDEBUG(963, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'A') goto yy1044; - if (yych <= 'T') goto yy57; - goto yy1043; + if (yych == 'A') goto yy1043; + if (yych <= 'T') goto yy56; + goto yy1042; } else { if (yych <= 'a') { - if (yych <= '`') goto yy57; - goto yy1044; + if (yych <= '`') goto yy56; + goto yy1043; } else { - if (yych == 'u') goto yy1043; - goto yy57; + if (yych == 'u') goto yy1042; + goto yy56; } } +yy964: + YYDEBUG(964, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1040; + if (yych == 'e') goto yy1040; + goto yy56; yy965: YYDEBUG(965, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy1041; - if (yych == 'e') goto yy1041; - goto yy57; + if (yych == 'A') goto yy1037; + if (yych == 'a') goto yy1037; + goto yy56; yy966: YYDEBUG(966, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy1038; - if (yych == 'a') goto yy1038; - goto yy57; -yy967: - YYDEBUG(967, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'P') goto yy1035; - if (yych <= 'T') goto yy57; - goto yy1034; + if (yych == 'P') goto yy1034; + if (yych <= 'T') goto yy56; + goto yy1033; } else { if (yych <= 'p') { - if (yych <= 'o') goto yy57; - goto yy1035; + if (yych <= 'o') goto yy56; + goto yy1034; } else { - if (yych == 'u') goto yy1034; - goto yy57; + if (yych == 'u') goto yy1033; + goto yy56; } } +yy967: + YYDEBUG(967, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1030; + if (yych == 'e') goto yy1030; + goto yy56; yy968: YYDEBUG(968, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy1031; - if (yych == 'e') goto yy1031; - goto yy57; + if (yych == 'C') goto yy1028; + if (yych == 'c') goto yy1028; + goto yy56; yy969: YYDEBUG(969, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy1029; - if (yych == 'c') goto yy1029; - goto yy57; + if (yych == 'O') goto yy1026; + if (yych == 'o') goto yy1026; + goto yy56; yy970: YYDEBUG(970, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy1027; - if (yych == 'o') goto yy1027; - goto yy57; + if (yych == 'E') goto yy1024; + if (yych == 'e') goto yy1024; + goto yy56; yy971: YYDEBUG(971, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy1025; - if (yych == 'e') goto yy1025; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '0') goto yy810; + if (yych <= '4') goto yy811; + if (yych <= '5') goto yy812; + goto yy56; yy972: YYDEBUG(972, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '0') goto yy811; - if (yych <= '4') goto yy812; - if (yych <= '5') goto yy813; - goto yy57; -yy973: - YYDEBUG(973, *YYCURSOR); yyaccept = 22; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy977; - if (yych <= '/') goto yy974; - if (yych <= '9') goto yy996; -yy974: - YYDEBUG(974, *YYCURSOR); + if (yych == '-') goto yy976; + if (yych <= '/') goto yy973; + if (yych <= '9') goto yy995; +yy973: + YYDEBUG(973, *YYCURSOR); #line 1285 "ext/date/lib/parse_date.re" { int length = 0; @@ -14682,717 +14663,717 @@ yy974: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 14686 "ext/date/lib/parse_date.c" +#line 14667 "ext/date/lib/parse_date.c" +yy974: + YYDEBUG(974, *YYCURSOR); + yyaccept = 22; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '-') goto yy976; + if (yych <= '/') goto yy973; + if (yych <= '2') goto yy995; + goto yy973; yy975: YYDEBUG(975, *YYCURSOR); yyaccept = 22; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy977; - if (yych <= '/') goto yy974; - if (yych <= '2') goto yy996; - goto yy974; + if (yych != '-') goto yy973; yy976: YYDEBUG(976, *YYCURSOR); - yyaccept = 22; - yych = *(YYMARKER = ++YYCURSOR); - if (yych != '-') goto yy974; + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '2') goto yy977; + if (yych <= '3') goto yy978; + if (yych <= '9') goto yy979; + goto yy56; yy977: YYDEBUG(977, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '2') goto yy978; - if (yych <= '3') goto yy979; - if (yych <= '9') goto yy980; - goto yy57; -yy978: - YYDEBUG(978, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '9') { - if (yych <= '/') goto yy657; - goto yy980; + if (yych <= '/') goto yy656; + goto yy979; } else { - if (yych == 'T') goto yy985; - goto yy657; + if (yych == 'T') goto yy984; + goto yy656; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy982; - if (yych <= 'q') goto yy657; - goto yy983; + if (yych <= 'n') goto yy981; + if (yych <= 'q') goto yy656; + goto yy982; } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy657; + if (yych <= 's') goto yy980; + if (yych <= 't') goto yy983; + goto yy656; } } -yy979: - YYDEBUG(979, *YYCURSOR); +yy978: + YYDEBUG(978, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '1') { - if (yych <= '/') goto yy657; + if (yych <= '/') goto yy656; } else { - if (yych == 'T') goto yy985; - goto yy657; + if (yych == 'T') goto yy984; + goto yy656; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy982; - if (yych <= 'q') goto yy657; - goto yy983; + if (yych <= 'n') goto yy981; + if (yych <= 'q') goto yy656; + goto yy982; } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy657; + if (yych <= 's') goto yy980; + if (yych <= 't') goto yy983; + goto yy656; } } -yy980: - YYDEBUG(980, *YYCURSOR); +yy979: + YYDEBUG(979, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych == 'T') goto yy985; - if (yych <= 'm') goto yy657; - goto yy982; + if (yych == 'T') goto yy984; + if (yych <= 'm') goto yy656; + goto yy981; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy983; + if (yych <= 'q') goto yy656; + goto yy982; } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy657; + if (yych <= 's') goto yy980; + if (yych <= 't') goto yy983; + goto yy656; } } +yy980: + YYDEBUG(980, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 't') goto yy994; + goto yy56; yy981: YYDEBUG(981, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 't') goto yy995; - goto yy57; + if (yych == 'd') goto yy994; + goto yy56; yy982: YYDEBUG(982, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'd') goto yy995; - goto yy57; + if (yych == 'd') goto yy994; + goto yy56; yy983: YYDEBUG(983, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'd') goto yy995; - goto yy57; + if (yych == 'h') goto yy994; + goto yy56; yy984: YYDEBUG(984, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'h') goto yy995; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '1') goto yy985; + if (yych <= '2') goto yy986; + if (yych <= '9') goto yy987; + goto yy56; yy985: YYDEBUG(985, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy986; - if (yych <= '2') goto yy987; - if (yych <= '9') goto yy988; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy987; + if (yych <= ':') goto yy988; + goto yy56; yy986: YYDEBUG(986, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy988; - if (yych <= ':') goto yy989; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '4') goto yy987; + if (yych == ':') goto yy988; + goto yy56; yy987: YYDEBUG(987, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '4') goto yy988; - if (yych == ':') goto yy989; - goto yy57; + if (yych != ':') goto yy56; yy988: YYDEBUG(988, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy989; + if (yych <= '9') goto yy990; + goto yy56; yy989: YYDEBUG(989, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy990; - if (yych <= '9') goto yy991; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy990; + if (yych <= ':') goto yy991; + goto yy56; yy990: YYDEBUG(990, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy991; - if (yych <= ':') goto yy992; - goto yy57; + if (yych != ':') goto yy56; yy991: YYDEBUG(991, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy992; + if (yych <= '6') goto yy993; + if (yych <= '9') goto yy841; + goto yy56; yy992: YYDEBUG(992, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy993; - if (yych <= '6') goto yy994; - if (yych <= '9') goto yy842; - goto yy57; + if (yych <= '/') goto yy842; + if (yych <= '9') goto yy841; + goto yy842; yy993: YYDEBUG(993, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '9') goto yy842; - goto yy843; + if (yych == '0') goto yy841; + goto yy842; yy994: YYDEBUG(994, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '0') goto yy842; - goto yy843; -yy995: - YYDEBUG(995, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'T') goto yy985; - goto yy657; -yy996: - YYDEBUG(996, *YYCURSOR); + if (yych == 'T') goto yy984; + goto yy656; +yy995: + YYDEBUG(995, *YYCURSOR); yyaccept = 22; yych = *(YYMARKER = ++YYCURSOR); - if (yych != '-') goto yy974; - YYDEBUG(997, *YYCURSOR); + if (yych != '-') goto yy973; + YYDEBUG(996, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '2') { - if (yych <= '/') goto yy57; - if (yych >= '1') goto yy999; + if (yych <= '/') goto yy56; + if (yych >= '1') goto yy998; } else { - if (yych <= '3') goto yy1000; - if (yych <= '9') goto yy980; - goto yy57; + if (yych <= '3') goto yy999; + if (yych <= '9') goto yy979; + goto yy56; } - YYDEBUG(998, *YYCURSOR); + YYDEBUG(997, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '9') { - if (yych <= '/') goto yy657; - goto yy1001; + if (yych <= '/') goto yy656; + goto yy1000; } else { - if (yych == 'T') goto yy985; - goto yy657; + if (yych == 'T') goto yy984; + goto yy656; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy982; - if (yych <= 'q') goto yy657; - goto yy983; + if (yych <= 'n') goto yy981; + if (yych <= 'q') goto yy656; + goto yy982; } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy657; + if (yych <= 's') goto yy980; + if (yych <= 't') goto yy983; + goto yy656; } } -yy999: - YYDEBUG(999, *YYCURSOR); +yy998: + YYDEBUG(998, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '9') { - if (yych <= '/') goto yy657; - goto yy1001; + if (yych <= '/') goto yy656; + goto yy1000; } else { - if (yych == 'T') goto yy985; - goto yy657; + if (yych == 'T') goto yy984; + goto yy656; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy982; - if (yych <= 'q') goto yy657; - goto yy983; + if (yych <= 'n') goto yy981; + if (yych <= 'q') goto yy656; + goto yy982; } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy657; + if (yych <= 's') goto yy980; + if (yych <= 't') goto yy983; + goto yy656; } } -yy1000: - YYDEBUG(1000, *YYCURSOR); +yy999: + YYDEBUG(999, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '1') { - if (yych <= '/') goto yy657; + if (yych <= '/') goto yy656; } else { - if (yych == 'T') goto yy985; - goto yy657; + if (yych == 'T') goto yy984; + goto yy656; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy982; - if (yych <= 'q') goto yy657; - goto yy983; + if (yych <= 'n') goto yy981; + if (yych <= 'q') goto yy656; + goto yy982; } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy657; + if (yych <= 's') goto yy980; + if (yych <= 't') goto yy983; + goto yy656; } } -yy1001: - YYDEBUG(1001, *YYCURSOR); +yy1000: + YYDEBUG(1000, *YYCURSOR); yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych == 'T') goto yy1002; - if (yych <= 'm') goto yy455; - goto yy982; + if (yych == 'T') goto yy1001; + if (yych <= 'm') goto yy454; + goto yy981; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy455; - goto yy983; + if (yych <= 'q') goto yy454; + goto yy982; } else { - if (yych <= 's') goto yy981; - if (yych <= 't') goto yy984; - goto yy455; + if (yych <= 's') goto yy980; + if (yych <= 't') goto yy983; + goto yy454; } } +yy1001: + YYDEBUG(1001, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '1') goto yy1002; + if (yych <= '2') goto yy1003; + if (yych <= '9') goto yy987; + goto yy56; yy1002: YYDEBUG(1002, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy1003; - if (yych <= '2') goto yy1004; - if (yych <= '9') goto yy988; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy1004; + if (yych <= ':') goto yy988; + goto yy56; yy1003: YYDEBUG(1003, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy1005; - if (yych <= ':') goto yy989; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '4') goto yy1004; + if (yych == ':') goto yy988; + goto yy56; yy1004: YYDEBUG(1004, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '4') goto yy1005; - if (yych == ':') goto yy989; - goto yy57; -yy1005: + if (yych != ':') goto yy56; YYDEBUG(1005, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy1006; + if (yych <= '9') goto yy990; + goto yy56; +yy1006: YYDEBUG(1006, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy1007; - if (yych <= '9') goto yy991; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy1007; + if (yych <= ':') goto yy991; + goto yy56; yy1007: YYDEBUG(1007, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy1008; - if (yych <= ':') goto yy992; - goto yy57; -yy1008: + if (yych != ':') goto yy56; YYDEBUG(1008, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy1009; + if (yych <= '6') goto yy1010; + if (yych <= '9') goto yy841; + goto yy56; +yy1009: YYDEBUG(1009, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy1010; - if (yych <= '6') goto yy1011; - if (yych <= '9') goto yy842; - goto yy57; + if (yych <= '/') goto yy842; + if (yych <= '9') goto yy1011; + goto yy842; yy1010: YYDEBUG(1010, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '9') goto yy1012; - goto yy843; + if (yych != '0') goto yy842; yy1011: YYDEBUG(1011, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '0') goto yy843; -yy1012: - YYDEBUG(1012, *YYCURSOR); yyaccept = 23; yych = *(YYMARKER = ++YYCURSOR); - if (yych != '.') goto yy843; - YYDEBUG(1013, *YYCURSOR); + if (yych != '.') goto yy842; + YYDEBUG(1012, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; -yy1014: - YYDEBUG(1014, *YYCURSOR); + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; +yy1013: + YYDEBUG(1013, *YYCURSOR); yyaccept = 23; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; - YYDEBUG(1015, *YYCURSOR); + YYDEBUG(1014, *YYCURSOR); if (yych <= '-') { - if (yych == '+') goto yy1017; - if (yych <= ',') goto yy843; - goto yy1017; + if (yych == '+') goto yy1016; + if (yych <= ',') goto yy842; + goto yy1016; } else { if (yych <= '9') { - if (yych <= '/') goto yy843; - goto yy1014; + if (yych <= '/') goto yy842; + goto yy1013; } else { - if (yych != 'G') goto yy843; + if (yych != 'G') goto yy842; } } + YYDEBUG(1015, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy1022; + goto yy56; +yy1016: YYDEBUG(1016, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy1023; - goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '1') goto yy1017; + if (yych <= '2') goto yy1018; + if (yych <= '9') goto yy1019; + goto yy56; yy1017: YYDEBUG(1017, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy1018; - if (yych <= '2') goto yy1019; - if (yych <= '9') goto yy1020; - goto yy57; + if (yych <= '/') goto yy842; + if (yych <= '9') goto yy1019; + if (yych <= ':') goto yy1020; + goto yy842; yy1018: YYDEBUG(1018, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '9') goto yy1020; - if (yych <= ':') goto yy1021; - goto yy843; -yy1019: - YYDEBUG(1019, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= '5') { - if (yych <= '/') goto yy843; - if (yych >= '5') goto yy1022; + if (yych <= '/') goto yy842; + if (yych >= '5') goto yy1021; } else { - if (yych <= '9') goto yy842; - if (yych <= ':') goto yy1021; - goto yy843; + if (yych <= '9') goto yy841; + if (yych <= ':') goto yy1020; + goto yy842; } +yy1019: + YYDEBUG(1019, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy842; + if (yych <= '5') goto yy1021; + if (yych <= '9') goto yy841; + if (yych >= ';') goto yy842; yy1020: YYDEBUG(1020, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '5') goto yy1022; - if (yych <= '9') goto yy842; - if (yych >= ';') goto yy843; + if (yych <= '/') goto yy842; + if (yych <= '5') goto yy1021; + if (yych <= '9') goto yy841; + goto yy842; yy1021: YYDEBUG(1021, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '5') goto yy1022; - if (yych <= '9') goto yy842; - goto yy843; + if (yych <= '/') goto yy842; + if (yych <= '9') goto yy841; + goto yy842; yy1022: YYDEBUG(1022, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy843; - if (yych <= '9') goto yy842; - goto yy843; -yy1023: + if (yych != 'T') goto yy56; YYDEBUG(1023, *YYCURSOR); yych = *++YYCURSOR; - if (yych != 'T') goto yy57; + if (yych == '+') goto yy1016; + if (yych == '-') goto yy1016; + goto yy56; +yy1024: YYDEBUG(1024, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '+') goto yy1017; - if (yych == '-') goto yy1017; - goto yy57; + if (yych == 'C') goto yy1025; + if (yych != 'c') goto yy56; yy1025: YYDEBUG(1025, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy1026; - if (yych != 'c') goto yy57; -yy1026: - YYDEBUG(1026, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; } else { - if (yych <= 'E') goto yy880; - if (yych == 'e') goto yy880; - goto yy794; + if (yych <= 'E') goto yy879; + if (yych == 'e') goto yy879; + goto yy793; } +yy1026: + YYDEBUG(1026, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'V') goto yy1027; + if (yych != 'v') goto yy56; yy1027: YYDEBUG(1027, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'V') goto yy1028; - if (yych != 'v') goto yy57; -yy1028: - YYDEBUG(1028, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; } else { - if (yych <= 'E') goto yy887; - if (yych == 'e') goto yy887; - goto yy794; + if (yych <= 'E') goto yy886; + if (yych == 'e') goto yy886; + goto yy793; } +yy1028: + YYDEBUG(1028, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1029; + if (yych != 't') goto yy56; yy1029: YYDEBUG(1029, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy1030; - if (yych != 't') goto yy57; -yy1030: - YYDEBUG(1030, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; } else { - if (yych <= 'O') goto yy893; - if (yych == 'o') goto yy893; - goto yy794; + if (yych <= 'O') goto yy892; + if (yych == 'o') goto yy892; + goto yy793; } +yy1030: + YYDEBUG(1030, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy1031; + if (yych != 'p') goto yy56; yy1031: YYDEBUG(1031, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy1032; - if (yych != 'p') goto yy57; -yy1032: - YYDEBUG(1032, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; } else { - if (yych <= 'T') goto yy1033; - if (yych != 't') goto yy794; + if (yych <= 'T') goto yy1032; + if (yych != 't') goto yy793; } -yy1033: - YYDEBUG(1033, *YYCURSOR); +yy1032: + YYDEBUG(1032, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; } else { - if (yych <= 'E') goto yy899; - if (yych == 'e') goto yy899; - goto yy794; + if (yych <= 'E') goto yy898; + if (yych == 'e') goto yy898; + goto yy793; } +yy1033: + YYDEBUG(1033, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy1036; + if (yych == 'g') goto yy1036; + goto yy56; yy1034: YYDEBUG(1034, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy1037; - if (yych == 'g') goto yy1037; - goto yy57; + if (yych == 'R') goto yy1035; + if (yych != 'r') goto yy56; yy1035: YYDEBUG(1035, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy1036; - if (yych != 'r') goto yy57; -yy1036: - YYDEBUG(1036, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'H') { - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; } else { - if (yych <= 'I') goto yy906; - if (yych == 'i') goto yy906; - goto yy794; + if (yych <= 'I') goto yy905; + if (yych == 'i') goto yy905; + goto yy793; } -yy1037: - YYDEBUG(1037, *YYCURSOR); +yy1036: + YYDEBUG(1036, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; } else { - if (yych <= 'U') goto yy908; - if (yych == 'u') goto yy908; - goto yy794; + if (yych <= 'U') goto yy907; + if (yych == 'u') goto yy907; + goto yy793; } -yy1038: - YYDEBUG(1038, *YYCURSOR); +yy1037: + YYDEBUG(1037, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'R') goto yy1039; - if (yych <= 'X') goto yy57; - goto yy1040; + if (yych == 'R') goto yy1038; + if (yych <= 'X') goto yy56; + goto yy1039; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy57; + if (yych <= 'q') goto yy56; } else { - if (yych == 'y') goto yy1040; - goto yy57; + if (yych == 'y') goto yy1039; + goto yy56; } } -yy1039: - YYDEBUG(1039, *YYCURSOR); +yy1038: + YYDEBUG(1038, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'B') { - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; } else { - if (yych <= 'C') goto yy912; - if (yych == 'c') goto yy912; - goto yy794; + if (yych <= 'C') goto yy911; + if (yych == 'c') goto yy911; + goto yy793; } -yy1040: - YYDEBUG(1040, *YYCURSOR); +yy1039: + YYDEBUG(1039, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; +yy1040: + YYDEBUG(1040, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy1041; + if (yych != 'b') goto yy56; yy1041: YYDEBUG(1041, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy1042; - if (yych != 'b') goto yy57; -yy1042: - YYDEBUG(1042, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; } else { - if (yych <= 'R') goto yy915; - if (yych == 'r') goto yy915; - goto yy794; + if (yych <= 'R') goto yy914; + if (yych == 'r') goto yy914; + goto yy793; } -yy1043: - YYDEBUG(1043, *YYCURSOR); +yy1042: + YYDEBUG(1042, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'L') goto yy1047; - if (yych <= 'M') goto yy57; - goto yy1046; + if (yych == 'L') goto yy1046; + if (yych <= 'M') goto yy56; + goto yy1045; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy57; - goto yy1047; + if (yych <= 'k') goto yy56; + goto yy1046; } else { - if (yych == 'n') goto yy1046; - goto yy57; + if (yych == 'n') goto yy1045; + goto yy56; } } +yy1043: + YYDEBUG(1043, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy1044; + if (yych != 'n') goto yy56; yy1044: YYDEBUG(1044, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy1045; - if (yych != 'n') goto yy57; -yy1045: - YYDEBUG(1045, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; } else { - if (yych <= 'U') goto yy922; - if (yych == 'u') goto yy922; - goto yy794; + if (yych <= 'U') goto yy921; + if (yych == 'u') goto yy921; + goto yy793; } -yy1046: - YYDEBUG(1046, *YYCURSOR); +yy1045: + YYDEBUG(1045, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; } else { - if (yych <= 'E') goto yy884; - if (yych == 'e') goto yy884; - goto yy794; + if (yych <= 'E') goto yy883; + if (yych == 'e') goto yy883; + goto yy793; } -yy1047: - YYDEBUG(1047, *YYCURSOR); +yy1046: + YYDEBUG(1046, *YYCURSOR); yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { - if (yych == '-') goto yy767; - goto yy794; + if (yych == '-') goto yy766; + goto yy793; } else { - if (yych <= 'Y') goto yy884; - if (yych == 'y') goto yy884; - goto yy794; + if (yych <= 'Y') goto yy883; + if (yych == 'y') goto yy883; + goto yy793; } -yy1048: - YYDEBUG(1048, *YYCURSOR); +yy1047: + YYDEBUG(1047, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '.') { if (yych <= '\t') { - if (yych <= 0x08) goto yy578; - goto yy731; + if (yych <= 0x08) goto yy577; + goto yy730; } else { - if (yych <= ',') goto yy578; - if (yych <= '-') goto yy732; - goto yy731; + if (yych <= ',') goto yy577; + if (yych <= '-') goto yy731; + goto yy730; } } else { if (yych <= 'U') { - if (yych <= '/') goto yy730; - if (yych <= 'T') goto yy578; - goto yy78; + if (yych <= '/') goto yy729; + if (yych <= 'T') goto yy577; + goto yy77; } else { - if (yych == 'u') goto yy78; - goto yy578; + if (yych == 'u') goto yy77; + goto yy577; } } -yy1049: - YYDEBUG(1049, *YYCURSOR); +yy1048: + YYDEBUG(1048, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'P') { - if (yych == 'C') goto yy129; - if (yych <= 'O') goto yy57; - goto yy586; + if (yych == 'C') goto yy128; + if (yych <= 'O') goto yy56; + goto yy585; } else { if (yych <= 'c') { - if (yych <= 'b') goto yy57; - goto yy129; + if (yych <= 'b') goto yy56; + goto yy128; } else { - if (yych == 'p') goto yy586; - goto yy57; + if (yych == 'p') goto yy585; + goto yy56; } } -yy1050: - YYDEBUG(1050, *YYCURSOR); +yy1049: + YYDEBUG(1049, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '9') { if (yych <= ',') { - if (yych == '\t') goto yy1052; - goto yy1054; + if (yych == '\t') goto yy1051; + goto yy1053; } else { - if (yych <= '-') goto yy1051; - if (yych <= '.') goto yy731; - if (yych <= '/') goto yy730; - goto yy741; + if (yych <= '-') goto yy1050; + if (yych <= '.') goto yy730; + if (yych <= '/') goto yy729; + goto yy740; } } else { if (yych <= 'q') { - if (yych == 'n') goto yy470; - goto yy1054; + if (yych == 'n') goto yy469; + goto yy1053; } else { - if (yych <= 'r') goto yy471; - if (yych <= 's') goto yy464; - if (yych <= 't') goto yy468; - goto yy1054; + if (yych <= 'r') goto yy470; + if (yych <= 's') goto yy463; + if (yych <= 't') goto yy467; + goto yy1053; } } -yy1051: - YYDEBUG(1051, *YYCURSOR); +yy1050: + YYDEBUG(1050, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { - case '0': goto yy1055; - case '1': goto yy1056; + case '0': goto yy1054; + case '1': goto yy1055; case '2': case '3': case '4': @@ -15400,246 +15381,246 @@ yy1051: case '6': case '7': case '8': - case '9': goto yy618; + case '9': goto yy617; case 'A': - case 'a': goto yy622; + case 'a': goto yy621; case 'D': - case 'd': goto yy626; + case 'd': goto yy625; case 'F': - case 'f': goto yy620; + case 'f': goto yy619; case 'J': - case 'j': goto yy619; + case 'j': goto yy618; case 'M': - case 'm': goto yy621; + case 'm': goto yy620; case 'N': - case 'n': goto yy625; + case 'n': goto yy624; case 'O': - case 'o': goto yy624; + case 'o': goto yy623; case 'S': - case 's': goto yy623; - default: goto yy578; + case 's': goto yy622; + default: goto yy577; } +yy1051: + YYDEBUG(1051, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy1053; + if (yych <= '0') goto yy735; + if (yych <= '1') goto yy736; + if (yych <= '9') goto yy737; + goto yy1053; yy1052: YYDEBUG(1052, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy1054; - if (yych <= '0') goto yy736; - if (yych <= '1') goto yy737; - if (yych <= '9') goto yy738; - goto yy1054; -yy1053: - YYDEBUG(1053, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); yych = *YYCURSOR; -yy1054: - YYDEBUG(1054, *YYCURSOR); +yy1053: + YYDEBUG(1053, *YYCURSOR); YYDEBUG(-1, yych); switch (yych) { case '\t': - case ' ': goto yy1053; + case ' ': goto yy1052; case '-': - case '.': goto yy577; + case '.': goto yy576; case 'A': - case 'a': goto yy574; + case 'a': goto yy573; case 'D': - case 'd': goto yy466; + case 'd': goto yy465; case 'F': - case 'f': goto yy467; + case 'f': goto yy466; case 'H': - case 'h': goto yy64; - case 'I': goto yy475; + case 'h': goto yy63; + case 'I': goto yy474; case 'J': - case 'j': goto yy479; + case 'j': goto yy478; case 'M': - case 'm': goto yy465; + case 'm': goto yy464; case 'N': - case 'n': goto yy482; + case 'n': goto yy481; case 'O': - case 'o': goto yy481; + case 'o': goto yy480; case 'S': - case 's': goto yy463; + case 's': goto yy462; case 'T': - case 't': goto yy69; - case 'V': goto yy477; + case 't': goto yy68; + case 'V': goto yy476; case 'W': - case 'w': goto yy68; - case 'X': goto yy478; + case 'w': goto yy67; + case 'X': goto yy477; case 'Y': - case 'y': goto yy67; - default: goto yy57; + case 'y': goto yy66; + default: goto yy56; + } +yy1054: + YYDEBUG(1054, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych <= ',') goto yy56; + if (yych <= '-') goto yy654; + goto yy601; + } else { + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy1056; + goto yy56; } yy1055: YYDEBUG(1055, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '.') { - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy655; - goto yy602; + if (yych <= ',') goto yy56; + if (yych <= '-') goto yy654; + goto yy601; } else { - if (yych <= '/') goto yy57; - if (yych <= '9') goto yy1057; - goto yy57; + if (yych <= '/') goto yy56; + if (yych >= '3') goto yy56; } yy1056: YYDEBUG(1056, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '.') { - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy655; - goto yy602; - } else { - if (yych <= '/') goto yy57; - if (yych >= '3') goto yy57; - } + if (yych <= ',') goto yy56; + if (yych <= '-') goto yy1057; + if (yych <= '.') goto yy601; + goto yy56; yy1057: YYDEBUG(1057, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= ',') goto yy57; - if (yych <= '-') goto yy1058; - if (yych <= '.') goto yy602; - goto yy57; -yy1058: - YYDEBUG(1058, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= '2') { - if (yych <= '/') goto yy57; - if (yych >= '1') goto yy1060; + if (yych <= '/') goto yy56; + if (yych >= '1') goto yy1059; } else { - if (yych <= '3') goto yy1061; - if (yych <= '9') goto yy659; - goto yy57; + if (yych <= '3') goto yy1060; + if (yych <= '9') goto yy658; + goto yy56; } - YYDEBUG(1059, *YYCURSOR); + YYDEBUG(1058, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy1062; - if (yych <= 'm') goto yy657; - goto yy661; + if (yych <= '/') goto yy656; + if (yych <= '9') goto yy1061; + if (yych <= 'm') goto yy656; + goto yy660; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; + if (yych <= 'q') goto yy656; + goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy656; } } -yy1060: - YYDEBUG(1060, *YYCURSOR); +yy1059: + YYDEBUG(1059, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy657; - if (yych <= '9') goto yy1062; - if (yych <= 'm') goto yy657; - goto yy661; + if (yych <= '/') goto yy656; + if (yych <= '9') goto yy1061; + if (yych <= 'm') goto yy656; + goto yy660; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; + if (yych <= 'q') goto yy656; + goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy656; } } -yy1061: - YYDEBUG(1061, *YYCURSOR); +yy1060: + YYDEBUG(1060, *YYCURSOR); yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { if (yych <= '1') { - if (yych <= '/') goto yy657; + if (yych <= '/') goto yy656; } else { - if (yych <= '9') goto yy604; - if (yych <= 'm') goto yy657; - goto yy661; + if (yych <= '9') goto yy603; + if (yych <= 'm') goto yy656; + goto yy660; } } else { if (yych <= 'r') { - if (yych <= 'q') goto yy657; - goto yy662; + if (yych <= 'q') goto yy656; + goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy657; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy656; } } -yy1062: - YYDEBUG(1062, *YYCURSOR); +yy1061: + YYDEBUG(1061, *YYCURSOR); yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy764; - if (yych <= '9') goto yy605; - if (yych <= 'm') goto yy764; - goto yy661; + if (yych <= '/') goto yy763; + if (yych <= '9') goto yy604; + if (yych <= 'm') goto yy763; + goto yy660; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy764; - goto yy662; + if (yych <= 'q') goto yy763; + goto yy661; } else { - if (yych <= 's') goto yy660; - if (yych <= 't') goto yy663; - goto yy764; + if (yych <= 's') goto yy659; + if (yych <= 't') goto yy662; + goto yy763; } } -yy1063: - YYDEBUG(1063, *YYCURSOR); +yy1062: + YYDEBUG(1062, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '9') { if (yych <= '-') { - if (yych == '\t') goto yy1052; - if (yych <= ',') goto yy1054; - goto yy1051; + if (yych == '\t') goto yy1051; + if (yych <= ',') goto yy1053; + goto yy1050; } else { - if (yych <= '.') goto yy1064; - if (yych <= '/') goto yy730; - if (yych <= '5') goto yy1066; - goto yy741; + if (yych <= '.') goto yy1063; + if (yych <= '/') goto yy729; + if (yych <= '5') goto yy1065; + goto yy740; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy1065; - if (yych == 'n') goto yy470; - goto yy1054; + if (yych <= ':') goto yy1064; + if (yych == 'n') goto yy469; + goto yy1053; } else { - if (yych <= 'r') goto yy471; - if (yych <= 's') goto yy464; - if (yych <= 't') goto yy468; - goto yy1054; + if (yych <= 'r') goto yy470; + if (yych <= 's') goto yy463; + if (yych <= 't') goto yy467; + goto yy1053; } } -yy1064: - YYDEBUG(1064, *YYCURSOR); +yy1063: + YYDEBUG(1063, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '1') { - if (yych <= '/') goto yy578; - if (yych <= '0') goto yy1088; - goto yy1089; + if (yych <= '/') goto yy577; + if (yych <= '0') goto yy1087; + goto yy1088; } else { - if (yych <= '5') goto yy1090; - if (yych <= '9') goto yy1091; - goto yy578; + if (yych <= '5') goto yy1089; + if (yych <= '9') goto yy1090; + goto yy577; } +yy1064: + YYDEBUG(1064, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy1082; + if (yych <= '9') goto yy1083; + goto yy56; yy1065: YYDEBUG(1065, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy1083; - if (yych <= '9') goto yy1084; - goto yy57; -yy1066: + if (yych == '-') goto yy784; + if (yych <= '/') goto yy60; + if (yych >= ':') goto yy60; YYDEBUG(1066, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '-') goto yy785; - if (yych <= '/') goto yy61; - if (yych >= ':') goto yy61; - YYDEBUG(1067, *YYCURSOR); yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); @@ -15671,26 +15652,26 @@ yy1066: case 's': case 't': case 'w': - case 'y': goto yy791; - case '-': goto yy788; - case '.': goto yy792; - case '/': goto yy789; - case '0': goto yy1069; - case '1': goto yy1070; - case '2': goto yy1071; - case '3': goto yy1072; + case 'y': goto yy790; + case '-': goto yy787; + case '.': goto yy791; + case '/': goto yy788; + case '0': goto yy1068; + case '1': goto yy1069; + case '2': goto yy1070; + case '3': goto yy1071; case '4': - case '5': goto yy1073; - case '6': goto yy1074; + case '5': goto yy1072; + case '6': goto yy1073; case '7': case '8': - case '9': goto yy55; - case ':': goto yy807; - case 'W': goto yy810; - default: goto yy1068; + case '9': goto yy54; + case ':': goto yy806; + case 'W': goto yy809; + default: goto yy1067; } -yy1068: - YYDEBUG(1068, *YYCURSOR); +yy1067: + YYDEBUG(1067, *YYCURSOR); #line 1177 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("gnunocolon"); @@ -15713,98 +15694,98 @@ yy1068: TIMELIB_DEINIT; return TIMELIB_GNU_NOCOLON; } -#line 15717 "ext/date/lib/parse_date.c" +#line 15698 "ext/date/lib/parse_date.c" +yy1068: + YYDEBUG(1068, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy60; + if (yych <= '0') goto yy1080; + if (yych <= '9') goto yy1081; + goto yy60; yy1069: YYDEBUG(1069, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '0') goto yy1081; - if (yych <= '9') goto yy1082; - goto yy61; + if (yych <= '/') goto yy60; + if (yych <= '2') goto yy1079; + if (yych <= '9') goto yy1078; + goto yy60; yy1070: YYDEBUG(1070, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '2') goto yy1080; - if (yych <= '9') goto yy1079; - goto yy61; + if (yych <= '/') goto yy60; + if (yych <= '9') goto yy1078; + goto yy60; yy1071: YYDEBUG(1071, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy1079; - goto yy61; + if (yych <= '/') goto yy60; + if (yych <= '5') goto yy1076; + if (yych <= '6') goto yy1077; + if (yych <= '9') goto yy1074; + goto yy60; yy1072: YYDEBUG(1072, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '5') goto yy1077; - if (yych <= '6') goto yy1078; - if (yych <= '9') goto yy1075; - goto yy61; + if (yych <= '/') goto yy60; + if (yych <= '9') goto yy1074; + goto yy60; yy1073: YYDEBUG(1073, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy1075; - goto yy61; + if (yych <= '/') goto yy60; + if (yych <= '0') goto yy1074; + if (yych <= '9') goto yy54; + goto yy60; yy1074: YYDEBUG(1074, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy61; - if (yych <= '0') goto yy1075; - if (yych <= '9') goto yy55; - goto yy61; -yy1075: - YYDEBUG(1075, *YYCURSOR); yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 2) { - goto yy55; + goto yy54; } if (yych <= 'W') { if (yych <= 'F') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych >= ' ') goto yy61; + if (yych == '\t') goto yy60; + if (yych >= ' ') goto yy60; } else { - if (yych == 'D') goto yy61; - if (yych >= 'F') goto yy61; + if (yych == 'D') goto yy60; + if (yych >= 'F') goto yy60; } } else { if (yych <= 'M') { - if (yych == 'H') goto yy61; - if (yych >= 'M') goto yy61; + if (yych == 'H') goto yy60; + if (yych >= 'M') goto yy60; } else { - if (yych <= 'R') goto yy1076; - if (yych <= 'T') goto yy61; - if (yych >= 'W') goto yy61; + if (yych <= 'R') goto yy1075; + if (yych <= 'T') goto yy60; + if (yych >= 'W') goto yy60; } } } else { if (yych <= 'h') { if (yych <= 'd') { - if (yych == 'Y') goto yy61; - if (yych >= 'd') goto yy61; + if (yych == 'Y') goto yy60; + if (yych >= 'd') goto yy60; } else { - if (yych == 'f') goto yy61; - if (yych >= 'h') goto yy61; + if (yych == 'f') goto yy60; + if (yych >= 'h') goto yy60; } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych >= 's') goto yy61; + if (yych == 'm') goto yy60; + if (yych >= 's') goto yy60; } else { if (yych <= 'w') { - if (yych >= 'w') goto yy61; + if (yych >= 'w') goto yy60; } else { - if (yych == 'y') goto yy61; + if (yych == 'y') goto yy60; } } } } -yy1076: - YYDEBUG(1076, *YYCURSOR); +yy1075: + YYDEBUG(1075, *YYCURSOR); #line 1223 "ext/date/lib/parse_date.re" { int tz_not_found; @@ -15824,904 +15805,904 @@ yy1076: TIMELIB_DEINIT; return TIMELIB_ISO_NOCOLON; } -#line 15828 "ext/date/lib/parse_date.c" -yy1077: - YYDEBUG(1077, *YYCURSOR); +#line 15809 "ext/date/lib/parse_date.c" +yy1076: + YYDEBUG(1076, *YYCURSOR); yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy1076; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy1075; + goto yy60; } else { - if (yych <= '/') goto yy1076; - if (yych <= '9') goto yy821; - if (yych <= 'C') goto yy1076; - goto yy61; + if (yych <= '/') goto yy1075; + if (yych <= '9') goto yy820; + if (yych <= 'C') goto yy1075; + goto yy60; } } else { if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy1076; - goto yy61; + if (yych == 'F') goto yy60; + if (yych <= 'G') goto yy1075; + goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy1076; - goto yy61; + if (yych <= 'L') goto yy1075; + goto yy60; } else { - if (yych <= 'R') goto yy1076; - if (yych <= 'T') goto yy61; - goto yy1076; + if (yych <= 'R') goto yy1075; + if (yych <= 'T') goto yy60; + goto yy1075; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy1076; - if (yych <= 'Y') goto yy61; - goto yy1076; + if (yych == 'X') goto yy1075; + if (yych <= 'Y') goto yy60; + goto yy1075; } else { if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy1076; + if (yych <= 'd') goto yy60; + goto yy1075; } else { - if (yych == 'g') goto yy1076; - goto yy61; + if (yych == 'g') goto yy1075; + goto yy60; } } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy1076; - goto yy61; + if (yych == 'm') goto yy60; + if (yych <= 'r') goto yy1075; + goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy1076; - goto yy61; + if (yych <= 'v') goto yy1075; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy1076; + if (yych == 'y') goto yy60; + goto yy1075; } } } } -yy1078: - YYDEBUG(1078, *YYCURSOR); +yy1077: + YYDEBUG(1077, *YYCURSOR); yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy1076; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy1075; + goto yy60; } else { if (yych <= '6') { - if (yych <= '/') goto yy1076; - goto yy821; + if (yych <= '/') goto yy1075; + goto yy820; } else { - if (yych <= '9') goto yy55; - if (yych <= 'C') goto yy1076; - goto yy61; + if (yych <= '9') goto yy54; + if (yych <= 'C') goto yy1075; + goto yy60; } } } else { if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy1076; - goto yy61; + if (yych == 'F') goto yy60; + if (yych <= 'G') goto yy1075; + goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy1076; - goto yy61; + if (yych <= 'L') goto yy1075; + goto yy60; } else { - if (yych <= 'R') goto yy1076; - if (yych <= 'T') goto yy61; - goto yy1076; + if (yych <= 'R') goto yy1075; + if (yych <= 'T') goto yy60; + goto yy1075; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy1076; - if (yych <= 'Y') goto yy61; - goto yy1076; + if (yych == 'X') goto yy1075; + if (yych <= 'Y') goto yy60; + goto yy1075; } else { if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy1076; + if (yych <= 'd') goto yy60; + goto yy1075; } else { - if (yych == 'g') goto yy1076; - goto yy61; + if (yych == 'g') goto yy1075; + goto yy60; } } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy1076; - goto yy61; + if (yych == 'm') goto yy60; + if (yych <= 'r') goto yy1075; + goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy1076; - goto yy61; + if (yych <= 'v') goto yy1075; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy1076; + if (yych == 'y') goto yy60; + goto yy1075; } } } } -yy1079: - YYDEBUG(1079, *YYCURSOR); +yy1078: + YYDEBUG(1078, *YYCURSOR); yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy1076; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy1075; + goto yy60; } else { - if (yych <= '/') goto yy1076; - if (yych <= '9') goto yy821; - if (yych <= 'C') goto yy1076; - goto yy61; + if (yych <= '/') goto yy1075; + if (yych <= '9') goto yy820; + if (yych <= 'C') goto yy1075; + goto yy60; } } else { if (yych <= 'H') { - if (yych == 'F') goto yy61; - if (yych <= 'G') goto yy1076; - goto yy61; + if (yych == 'F') goto yy60; + if (yych <= 'G') goto yy1075; + goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy1076; - goto yy61; + if (yych <= 'L') goto yy1075; + goto yy60; } else { - if (yych <= 'R') goto yy1076; - if (yych <= 'T') goto yy61; - goto yy1076; + if (yych <= 'R') goto yy1075; + if (yych <= 'T') goto yy60; + goto yy1075; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy1076; - if (yych <= 'Y') goto yy61; - goto yy1076; + if (yych == 'X') goto yy1075; + if (yych <= 'Y') goto yy60; + goto yy1075; } else { if (yych <= 'e') { - if (yych <= 'd') goto yy61; - goto yy1076; + if (yych <= 'd') goto yy60; + goto yy1075; } else { - if (yych == 'g') goto yy1076; - goto yy61; + if (yych == 'g') goto yy1075; + goto yy60; } } } else { if (yych <= 't') { - if (yych == 'm') goto yy61; - if (yych <= 'r') goto yy1076; - goto yy61; + if (yych == 'm') goto yy60; + if (yych <= 'r') goto yy1075; + goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy1076; - goto yy61; + if (yych <= 'v') goto yy1075; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy1076; + if (yych == 'y') goto yy60; + goto yy1075; } } } } -yy1080: - YYDEBUG(1080, *YYCURSOR); +yy1079: + YYDEBUG(1079, *YYCURSOR); yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= '9') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy1076; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy1075; + goto yy60; } else { if (yych <= '0') { - if (yych <= '/') goto yy1076; - goto yy845; + if (yych <= '/') goto yy1075; + goto yy844; } else { - if (yych <= '2') goto yy846; - if (yych <= '3') goto yy847; - goto yy821; + if (yych <= '2') goto yy845; + if (yych <= '3') goto yy846; + goto yy820; } } } else { if (yych <= 'G') { if (yych <= 'D') { - if (yych <= 'C') goto yy1076; - goto yy61; + if (yych <= 'C') goto yy1075; + goto yy60; } else { - if (yych == 'F') goto yy61; - goto yy1076; + if (yych == 'F') goto yy60; + goto yy1075; } } else { if (yych <= 'L') { - if (yych <= 'H') goto yy61; - goto yy1076; + if (yych <= 'H') goto yy60; + goto yy1075; } else { - if (yych <= 'M') goto yy61; - if (yych <= 'R') goto yy1076; - goto yy61; + if (yych <= 'M') goto yy60; + if (yych <= 'R') goto yy1075; + goto yy60; } } } } else { if (yych <= 'g') { if (yych <= 'Y') { - if (yych == 'W') goto yy61; - if (yych <= 'X') goto yy1076; - goto yy61; + if (yych == 'W') goto yy60; + if (yych <= 'X') goto yy1075; + goto yy60; } else { if (yych <= 'd') { - if (yych <= 'c') goto yy1076; - goto yy61; + if (yych <= 'c') goto yy1075; + goto yy60; } else { - if (yych == 'f') goto yy61; - goto yy1076; + if (yych == 'f') goto yy60; + goto yy1075; } } } else { if (yych <= 't') { if (yych <= 'l') { - if (yych <= 'h') goto yy61; - goto yy1076; + if (yych <= 'h') goto yy60; + goto yy1075; } else { - if (yych <= 'm') goto yy61; - if (yych <= 'r') goto yy1076; - goto yy61; + if (yych <= 'm') goto yy60; + if (yych <= 'r') goto yy1075; + goto yy60; } } else { if (yych <= 'w') { - if (yych <= 'v') goto yy1076; - goto yy61; + if (yych <= 'v') goto yy1075; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy1076; + if (yych == 'y') goto yy60; + goto yy1075; } } } } -yy1081: - YYDEBUG(1081, *YYCURSOR); +yy1080: + YYDEBUG(1080, *YYCURSOR); yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= '9') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy1076; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy1075; + goto yy60; } else { if (yych <= '0') { - if (yych <= '/') goto yy1076; - goto yy877; + if (yych <= '/') goto yy1075; + goto yy876; } else { - if (yych <= '2') goto yy846; - if (yych <= '3') goto yy847; - goto yy821; + if (yych <= '2') goto yy845; + if (yych <= '3') goto yy846; + goto yy820; } } } else { if (yych <= 'G') { if (yych <= 'D') { - if (yych <= 'C') goto yy1076; - goto yy61; + if (yych <= 'C') goto yy1075; + goto yy60; } else { - if (yych == 'F') goto yy61; - goto yy1076; + if (yych == 'F') goto yy60; + goto yy1075; } } else { if (yych <= 'L') { - if (yych <= 'H') goto yy61; - goto yy1076; + if (yych <= 'H') goto yy60; + goto yy1075; } else { - if (yych <= 'M') goto yy61; - if (yych <= 'R') goto yy1076; - goto yy61; + if (yych <= 'M') goto yy60; + if (yych <= 'R') goto yy1075; + goto yy60; } } } } else { if (yych <= 'g') { if (yych <= 'Y') { - if (yych == 'W') goto yy61; - if (yych <= 'X') goto yy1076; - goto yy61; + if (yych == 'W') goto yy60; + if (yych <= 'X') goto yy1075; + goto yy60; } else { if (yych <= 'd') { - if (yych <= 'c') goto yy1076; - goto yy61; + if (yych <= 'c') goto yy1075; + goto yy60; } else { - if (yych == 'f') goto yy61; - goto yy1076; + if (yych == 'f') goto yy60; + goto yy1075; } } } else { if (yych <= 't') { if (yych <= 'l') { - if (yych <= 'h') goto yy61; - goto yy1076; + if (yych <= 'h') goto yy60; + goto yy1075; } else { - if (yych <= 'm') goto yy61; - if (yych <= 'r') goto yy1076; - goto yy61; + if (yych <= 'm') goto yy60; + if (yych <= 'r') goto yy1075; + goto yy60; } } else { if (yych <= 'w') { - if (yych <= 'v') goto yy1076; - goto yy61; + if (yych <= 'v') goto yy1075; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy1076; + if (yych == 'y') goto yy60; + goto yy1075; } } } } -yy1082: - YYDEBUG(1082, *YYCURSOR); +yy1081: + YYDEBUG(1081, *YYCURSOR); yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= '9') { if (yych <= ' ') { - if (yych == '\t') goto yy61; - if (yych <= 0x1F) goto yy1076; - goto yy61; + if (yych == '\t') goto yy60; + if (yych <= 0x1F) goto yy1075; + goto yy60; } else { if (yych <= '0') { - if (yych <= '/') goto yy1076; - goto yy845; + if (yych <= '/') goto yy1075; + goto yy844; } else { - if (yych <= '2') goto yy846; - if (yych <= '3') goto yy847; - goto yy821; + if (yych <= '2') goto yy845; + if (yych <= '3') goto yy846; + goto yy820; } } } else { if (yych <= 'G') { if (yych <= 'D') { - if (yych <= 'C') goto yy1076; - goto yy61; + if (yych <= 'C') goto yy1075; + goto yy60; } else { - if (yych == 'F') goto yy61; - goto yy1076; + if (yych == 'F') goto yy60; + goto yy1075; } } else { if (yych <= 'L') { - if (yych <= 'H') goto yy61; - goto yy1076; + if (yych <= 'H') goto yy60; + goto yy1075; } else { - if (yych <= 'M') goto yy61; - if (yych <= 'R') goto yy1076; - goto yy61; + if (yych <= 'M') goto yy60; + if (yych <= 'R') goto yy1075; + goto yy60; } } } } else { if (yych <= 'g') { if (yych <= 'Y') { - if (yych == 'W') goto yy61; - if (yych <= 'X') goto yy1076; - goto yy61; + if (yych == 'W') goto yy60; + if (yych <= 'X') goto yy1075; + goto yy60; } else { if (yych <= 'd') { - if (yych <= 'c') goto yy1076; - goto yy61; + if (yych <= 'c') goto yy1075; + goto yy60; } else { - if (yych == 'f') goto yy61; - goto yy1076; + if (yych == 'f') goto yy60; + goto yy1075; } } } else { if (yych <= 't') { if (yych <= 'l') { - if (yych <= 'h') goto yy61; - goto yy1076; + if (yych <= 'h') goto yy60; + goto yy1075; } else { - if (yych <= 'm') goto yy61; - if (yych <= 'r') goto yy1076; - goto yy61; + if (yych <= 'm') goto yy60; + if (yych <= 'r') goto yy1075; + goto yy60; } } else { if (yych <= 'w') { - if (yych <= 'v') goto yy1076; - goto yy61; + if (yych <= 'v') goto yy1075; + goto yy60; } else { - if (yych == 'y') goto yy61; - goto yy1076; + if (yych == 'y') goto yy60; + goto yy1075; } } } } -yy1083: - YYDEBUG(1083, *YYCURSOR); +yy1082: + YYDEBUG(1082, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy1085; - goto yy491; + if (yych == '.') goto yy1084; + goto yy490; } else { - if (yych <= '9') goto yy1084; - if (yych <= ':') goto yy1085; - goto yy491; + if (yych <= '9') goto yy1083; + if (yych <= ':') goto yy1084; + goto yy490; } -yy1084: - YYDEBUG(1084, *YYCURSOR); +yy1083: + YYDEBUG(1083, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy1085; - if (yych != ':') goto yy491; + if (yych == '.') goto yy1084; + if (yych != ':') goto yy490; +yy1084: + YYDEBUG(1084, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy1085; + if (yych <= '6') goto yy1086; + if (yych <= '9') goto yy495; + goto yy56; yy1085: YYDEBUG(1085, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy1086; - if (yych <= '6') goto yy1087; - if (yych <= '9') goto yy496; - goto yy57; + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy496; + if (yych <= '/') goto yy490; + if (yych <= '9') goto yy495; + goto yy490; yy1086: YYDEBUG(1086, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy496; - goto yy491; + if (yych == '.') goto yy496; + if (yych == '0') goto yy495; + goto yy490; yy1087: YYDEBUG(1087, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych == '0') goto yy496; - goto yy491; + if (yych <= '.') { + if (yych <= ',') goto yy490; + if (yych <= '-') goto yy601; + goto yy1091; + } else { + if (yych <= '/') goto yy490; + if (yych <= '9') goto yy1090; + if (yych <= ':') goto yy1084; + goto yy490; + } yy1088: YYDEBUG(1088, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - goto yy1092; + if (yych <= '/') { + if (yych <= ',') goto yy490; + if (yych <= '-') goto yy601; + if (yych <= '.') goto yy1091; + goto yy490; } else { - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy1091; - if (yych <= ':') goto yy1085; - goto yy491; + if (yych <= '2') goto yy1090; + if (yych <= '9') goto yy1083; + if (yych <= ':') goto yy1084; + goto yy490; } yy1089: YYDEBUG(1089, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - if (yych <= '.') goto yy1092; - goto yy491; + if (yych <= '.') { + if (yych <= ',') goto yy490; + if (yych <= '-') goto yy601; + goto yy1091; } else { - if (yych <= '2') goto yy1091; - if (yych <= '9') goto yy1084; - if (yych <= ':') goto yy1085; - goto yy491; + if (yych <= '/') goto yy490; + if (yych <= '9') goto yy1083; + if (yych <= ':') goto yy1084; + goto yy490; } yy1090: YYDEBUG(1090, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - goto yy1092; + if (yych <= ',') goto yy490; + if (yych <= '-') goto yy601; } else { - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy1084; - if (yych <= ':') goto yy1085; - goto yy491; + if (yych == ':') goto yy1084; + goto yy490; } yy1091: YYDEBUG(1091, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy491; - if (yych <= '-') goto yy602; - } else { - if (yych == ':') goto yy1085; - goto yy491; - } + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy1092; + if (yych <= '6') goto yy1093; + if (yych <= '9') goto yy609; + goto yy56; yy1092: YYDEBUG(1092, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '5') goto yy1093; - if (yych <= '6') goto yy1094; - if (yych <= '9') goto yy610; - goto yy57; + yyaccept = 11; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy496; + if (yych <= '/') goto yy490; + if (yych <= '9') goto yy1094; + goto yy490; yy1093: YYDEBUG(1093, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy1095; - goto yy491; + if (yych <= '/') { + if (yych == '.') goto yy496; + goto yy490; + } else { + if (yych <= '0') goto yy1094; + if (yych <= '9') goto yy610; + goto yy490; + } yy1094: YYDEBUG(1094, *YYCURSOR); yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy497; - goto yy491; - } else { - if (yych <= '0') goto yy1095; - if (yych <= '9') goto yy611; - goto yy491; - } + if (yych == '.') goto yy496; + if (yych <= '/') goto yy490; + if (yych <= '9') goto yy604; + goto yy490; yy1095: YYDEBUG(1095, *YYCURSOR); - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy497; - if (yych <= '/') goto yy491; - if (yych <= '9') goto yy605; - goto yy491; + yych = *++YYCURSOR; + if (yych <= '9') { + if (yych <= '-') { + if (yych == '\t') goto yy459; + if (yych <= ',') goto yy461; + goto yy1050; + } else { + if (yych <= '.') goto yy473; + if (yych <= '/') goto yy471; + if (yych <= '5') goto yy1065; + goto yy740; + } + } else { + if (yych <= 'q') { + if (yych <= ':') goto yy482; + if (yych == 'n') goto yy469; + goto yy461; + } else { + if (yych <= 'r') goto yy470; + if (yych <= 's') goto yy463; + if (yych <= 't') goto yy467; + goto yy461; + } + } yy1096: YYDEBUG(1096, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '9') { if (yych <= '-') { - if (yych == '\t') goto yy460; - if (yych <= ',') goto yy462; - goto yy1051; + if (yych == '\t') goto yy1051; + if (yych <= ',') goto yy1053; + goto yy1050; } else { - if (yych <= '.') goto yy474; - if (yych <= '/') goto yy472; - if (yych <= '5') goto yy1066; - goto yy741; + if (yych <= '.') goto yy1063; + if (yych <= '/') goto yy471; + if (yych <= '5') goto yy1065; + goto yy740; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy483; - if (yych == 'n') goto yy470; - goto yy462; + if (yych <= ':') goto yy1064; + if (yych == 'n') goto yy469; + goto yy1053; } else { - if (yych <= 'r') goto yy471; - if (yych <= 's') goto yy464; - if (yych <= 't') goto yy468; - goto yy462; + if (yych <= 'r') goto yy470; + if (yych <= 's') goto yy463; + if (yych <= 't') goto yy467; + goto yy1053; } } yy1097: YYDEBUG(1097, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '9') { - if (yych <= '-') { - if (yych == '\t') goto yy1052; - if (yych <= ',') goto yy1054; - goto yy1051; + if (yych <= 'E') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '.') goto yy1064; - if (yych <= '/') goto yy472; - if (yych <= '5') goto yy1066; - goto yy741; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy141; } } else { - if (yych <= 'q') { - if (yych <= ':') goto yy1065; - if (yych == 'n') goto yy470; - goto yy1054; + if (yych <= 'd') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 'r') goto yy471; - if (yych <= 's') goto yy464; - if (yych <= 't') goto yy468; - goto yy1054; + if (yych <= 'e') goto yy1098; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1098: YYDEBUG(1098, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'E') { + if (yych <= 'V') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'U') goto yy142; } } else { - if (yych <= 'd') { + if (yych <= 'u') { if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; + if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'e') goto yy1099; + if (yych <= 'v') goto yy1099; if (yych <= 'z') goto yy142; - goto yy4; + goto yy3; } } yy1099: YYDEBUG(1099, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'V') { + if (yych <= 'I') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'U') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy143; } } else { - if (yych <= 'u') { + if (yych <= 'h') { if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; + if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'v') goto yy1100; + if (yych <= 'i') goto yy1100; if (yych <= 'z') goto yy143; - goto yy4; + goto yy3; } } yy1100: YYDEBUG(1100, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'I') { + if (yych <= 'O') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'H') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy144; } } else { - if (yych <= 'h') { + if (yych <= 'n') { if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; + if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'i') goto yy1101; + if (yych <= 'o') goto yy1101; if (yych <= 'z') goto yy144; - goto yy4; + goto yy3; } } yy1101: YYDEBUG(1101, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'N') goto yy145; - } - } else { - if (yych <= 'n') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'o') goto yy1102; - if (yych <= 'z') goto yy145; - goto yy4; - } - } -yy1102: - YYDEBUG(1102, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'U') goto yy1103; - if (yych != 'u') goto yy4; + if (yych <= 'U') goto yy1102; + if (yych != 'u') goto yy3; } +yy1102: + YYDEBUG(1102, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy1103; + if (yych != 's') goto yy56; yy1103: YYDEBUG(1103, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy1104; - if (yych != 's') goto yy57; + if (yych == '\t') goto yy1104; + if (yych != ' ') goto yy56; yy1104: YYDEBUG(1104, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\t') goto yy1105; - if (yych != ' ') goto yy57; -yy1105: - YYDEBUG(1105, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; -yy1106: - YYDEBUG(1106, *YYCURSOR); +yy1105: + YYDEBUG(1105, *YYCURSOR); if (yych <= 'W') { if (yych <= 'F') { if (yych <= ' ') { - if (yych == '\t') goto yy1105; - if (yych <= 0x1F) goto yy57; - goto yy1105; + if (yych == '\t') goto yy1104; + if (yych <= 0x1F) goto yy56; + goto yy1104; } else { - if (yych == 'D') goto yy1110; - if (yych <= 'E') goto yy57; - goto yy1111; + if (yych == 'D') goto yy1109; + if (yych <= 'E') goto yy56; + goto yy1110; } } else { if (yych <= 'M') { - if (yych == 'H') goto yy1109; - if (yych <= 'L') goto yy57; - goto yy1108; + if (yych == 'H') goto yy1108; + if (yych <= 'L') goto yy56; + goto yy1107; } else { if (yych <= 'S') { - if (yych <= 'R') goto yy57; + if (yych <= 'R') goto yy56; } else { - if (yych <= 'T') goto yy1114; - if (yych <= 'V') goto yy57; - goto yy1113; + if (yych <= 'T') goto yy1113; + if (yych <= 'V') goto yy56; + goto yy1112; } } } } else { if (yych <= 'l') { if (yych <= 'd') { - if (yych == 'Y') goto yy1112; - if (yych <= 'c') goto yy57; - goto yy1110; + if (yych == 'Y') goto yy1111; + if (yych <= 'c') goto yy56; + goto yy1109; } else { if (yych <= 'f') { - if (yych <= 'e') goto yy57; - goto yy1111; + if (yych <= 'e') goto yy56; + goto yy1110; } else { - if (yych == 'h') goto yy1109; - goto yy57; + if (yych == 'h') goto yy1108; + goto yy56; } } } else { if (yych <= 't') { - if (yych <= 'm') goto yy1108; - if (yych <= 'r') goto yy57; - if (yych >= 't') goto yy1114; + if (yych <= 'm') goto yy1107; + if (yych <= 'r') goto yy56; + if (yych >= 't') goto yy1113; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy57; - goto yy1113; + if (yych <= 'v') goto yy56; + goto yy1112; } else { - if (yych == 'y') goto yy1112; - goto yy57; + if (yych == 'y') goto yy1111; + goto yy56; } } } } -yy1107: - YYDEBUG(1107, *YYCURSOR); +yy1106: + YYDEBUG(1106, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'D') { - if (yych == 'A') goto yy1179; - goto yy57; + if (yych == 'A') goto yy1178; + goto yy56; } else { - if (yych <= 'E') goto yy1180; - if (yych <= 'T') goto yy57; - goto yy1178; + if (yych <= 'E') goto yy1179; + if (yych <= 'T') goto yy56; + goto yy1177; } } else { if (yych <= 'd') { - if (yych == 'a') goto yy1179; - goto yy57; + if (yych == 'a') goto yy1178; + goto yy56; } else { - if (yych <= 'e') goto yy1180; - if (yych == 'u') goto yy1178; - goto yy57; + if (yych <= 'e') goto yy1179; + if (yych == 'u') goto yy1177; + goto yy56; } } -yy1108: - YYDEBUG(1108, *YYCURSOR); +yy1107: + YYDEBUG(1107, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy1170; - if (yych <= 'N') goto yy57; - goto yy1169; + if (yych == 'I') goto yy1169; + if (yych <= 'N') goto yy56; + goto yy1168; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy57; - goto yy1170; + if (yych <= 'h') goto yy56; + goto yy1169; } else { - if (yych == 'o') goto yy1169; - goto yy57; + if (yych == 'o') goto yy1168; + goto yy56; } } +yy1108: + YYDEBUG(1108, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy1166; + if (yych == 'o') goto yy1166; + goto yy56; yy1109: YYDEBUG(1109, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy1167; - if (yych == 'o') goto yy1167; - goto yy57; + if (yych == 'A') goto yy1165; + if (yych == 'a') goto yy1165; + goto yy56; yy1110: YYDEBUG(1110, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy1166; - if (yych == 'a') goto yy1166; - goto yy57; -yy1111: - YYDEBUG(1111, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'R') { - if (yych == 'O') goto yy1151; - if (yych <= 'Q') goto yy57; - goto yy1150; + if (yych == 'O') goto yy1150; + if (yych <= 'Q') goto yy56; + goto yy1149; } else { if (yych <= 'o') { - if (yych <= 'n') goto yy57; - goto yy1151; + if (yych <= 'n') goto yy56; + goto yy1150; } else { - if (yych == 'r') goto yy1150; - goto yy57; + if (yych == 'r') goto yy1149; + goto yy56; } } +yy1111: + YYDEBUG(1111, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1146; + if (yych == 'e') goto yy1146; + goto yy56; yy1112: YYDEBUG(1112, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy1147; - if (yych == 'e') goto yy1147; - goto yy57; + if (yych == 'E') goto yy1132; + if (yych == 'e') goto yy1132; + goto yy56; yy1113: YYDEBUG(1113, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy1133; - if (yych == 'e') goto yy1133; - goto yy57; -yy1114: - YYDEBUG(1114, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'H') goto yy1115; - if (yych <= 'T') goto yy57; - goto yy1116; + if (yych == 'H') goto yy1114; + if (yych <= 'T') goto yy56; + goto yy1115; } else { if (yych <= 'h') { - if (yych <= 'g') goto yy57; + if (yych <= 'g') goto yy56; } else { - if (yych == 'u') goto yy1116; - goto yy57; + if (yych == 'u') goto yy1115; + goto yy56; } } +yy1114: + YYDEBUG(1114, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy1127; + if (yych == 'u') goto yy1127; + goto yy56; yy1115: YYDEBUG(1115, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy1128; - if (yych == 'u') goto yy1128; - goto yy57; + if (yych == 'E') goto yy1116; + if (yych != 'e') goto yy56; yy1116: YYDEBUG(1116, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy1117; - if (yych != 'e') goto yy57; -yy1117: - YYDEBUG(1117, *YYCURSOR); yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych >= ' ') goto yy1119; + if (yych == '\t') goto yy1118; + if (yych >= ' ') goto yy1118; } else { if (yych <= 'S') { - if (yych >= 'S') goto yy1121; + if (yych >= 'S') goto yy1120; } else { - if (yych == 's') goto yy1121; + if (yych == 's') goto yy1120; } } -yy1118: - YYDEBUG(1118, *YYCURSOR); +yy1117: + YYDEBUG(1117, *YYCURSOR); #line 1619 "ext/date/lib/parse_date.re" { timelib_sll i; @@ -16738,57 +16719,57 @@ yy1118: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 16742 "ext/date/lib/parse_date.c" -yy1119: - YYDEBUG(1119, *YYCURSOR); +#line 16723 "ext/date/lib/parse_date.c" +yy1118: + YYDEBUG(1118, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - YYDEBUG(1120, *YYCURSOR); + YYDEBUG(1119, *YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych <= 0x1F) goto yy57; - goto yy1119; + if (yych == '\t') goto yy1118; + if (yych <= 0x1F) goto yy56; + goto yy1118; } else { if (yych <= 'O') { - if (yych <= 'N') goto yy57; - goto yy1125; + if (yych <= 'N') goto yy56; + goto yy1124; } else { - if (yych == 'o') goto yy1125; - goto yy57; + if (yych == 'o') goto yy1124; + goto yy56; } } +yy1120: + YYDEBUG(1120, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy1121; + if (yych != 'd') goto yy56; yy1121: YYDEBUG(1121, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy1122; - if (yych != 'd') goto yy57; + if (yych == 'A') goto yy1122; + if (yych != 'a') goto yy56; yy1122: YYDEBUG(1122, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy1123; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy1123; + if (yych != 'y') goto yy56; yy1123: YYDEBUG(1123, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych != 'y') goto yy57; -yy1124: - YYDEBUG(1124, *YYCURSOR); yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '\t') goto yy1119; - if (yych == ' ') goto yy1119; - goto yy1118; + if (yych == '\t') goto yy1118; + if (yych == ' ') goto yy1118; + goto yy1117; +yy1124: + YYDEBUG(1124, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy1125; + if (yych != 'f') goto yy56; yy1125: YYDEBUG(1125, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy1126; - if (yych != 'f') goto yy57; -yy1126: - YYDEBUG(1126, *YYCURSOR); ++YYCURSOR; - YYDEBUG(1127, *YYCURSOR); + YYDEBUG(1126, *YYCURSOR); #line 1092 "ext/date/lib/parse_date.re" { timelib_sll i; @@ -16810,114 +16791,114 @@ yy1126: TIMELIB_DEINIT; return TIMELIB_WEEK_DAY_OF_MONTH; } -#line 16814 "ext/date/lib/parse_date.c" -yy1128: - YYDEBUG(1128, *YYCURSOR); +#line 16795 "ext/date/lib/parse_date.c" +yy1127: + YYDEBUG(1127, *YYCURSOR); yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych <= 0x1F) goto yy1118; - goto yy1119; + if (yych == '\t') goto yy1118; + if (yych <= 0x1F) goto yy1117; + goto yy1118; } else { if (yych <= 'R') { - if (yych <= 'Q') goto yy1118; + if (yych <= 'Q') goto yy1117; } else { - if (yych != 'r') goto yy1118; + if (yych != 'r') goto yy1117; } } + YYDEBUG(1128, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy1129; + if (yych != 's') goto yy56; +yy1129: YYDEBUG(1129, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy1130; - if (yych != 's') goto yy57; + if (yych == 'D') goto yy1130; + if (yych != 'd') goto yy56; yy1130: YYDEBUG(1130, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy1131; - if (yych != 'd') goto yy57; + if (yych == 'A') goto yy1131; + if (yych != 'a') goto yy56; yy1131: YYDEBUG(1131, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy1132; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy1123; + if (yych == 'y') goto yy1123; + goto yy56; yy1132: YYDEBUG(1132, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych == 'y') goto yy1124; - goto yy57; -yy1133: - YYDEBUG(1133, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'E') { - if (yych <= 'C') goto yy57; - if (yych <= 'D') goto yy1135; + if (yych <= 'C') goto yy56; + if (yych <= 'D') goto yy1134; } else { - if (yych <= 'c') goto yy57; - if (yych <= 'd') goto yy1135; - if (yych >= 'f') goto yy57; + if (yych <= 'c') goto yy56; + if (yych <= 'd') goto yy1134; + if (yych >= 'f') goto yy56; } - YYDEBUG(1134, *YYCURSOR); + YYDEBUG(1133, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy1141; - if (yych == 'k') goto yy1141; - goto yy57; -yy1135: - YYDEBUG(1135, *YYCURSOR); + if (yych == 'K') goto yy1140; + if (yych == 'k') goto yy1140; + goto yy56; +yy1134: + YYDEBUG(1134, *YYCURSOR); yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych <= 0x1F) goto yy1118; - goto yy1119; + if (yych == '\t') goto yy1118; + if (yych <= 0x1F) goto yy1117; + goto yy1118; } else { if (yych <= 'N') { - if (yych <= 'M') goto yy1118; + if (yych <= 'M') goto yy1117; } else { - if (yych != 'n') goto yy1118; + if (yych != 'n') goto yy1117; } } + YYDEBUG(1135, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1136; + if (yych != 'e') goto yy56; +yy1136: YYDEBUG(1136, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy1137; - if (yych != 'e') goto yy57; + if (yych == 'S') goto yy1137; + if (yych != 's') goto yy56; yy1137: YYDEBUG(1137, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy1138; - if (yych != 's') goto yy57; + if (yych == 'D') goto yy1138; + if (yych != 'd') goto yy56; yy1138: YYDEBUG(1138, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy1139; - if (yych != 'd') goto yy57; + if (yych == 'A') goto yy1139; + if (yych != 'a') goto yy56; yy1139: YYDEBUG(1139, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy1140; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy1123; + if (yych == 'y') goto yy1123; + goto yy56; yy1140: YYDEBUG(1140, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych == 'y') goto yy1124; - goto yy57; -yy1141: - YYDEBUG(1141, *YYCURSOR); yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { - if (yych == 'D') goto yy1144; - if (yych >= 'S') goto yy1143; + if (yych == 'D') goto yy1143; + if (yych >= 'S') goto yy1142; } else { if (yych <= 'd') { - if (yych >= 'd') goto yy1144; + if (yych >= 'd') goto yy1143; } else { - if (yych == 's') goto yy1143; + if (yych == 's') goto yy1142; } } -yy1142: - YYDEBUG(1142, *YYCURSOR); +yy1141: + YYDEBUG(1141, *YYCURSOR); #line 1595 "ext/date/lib/parse_date.re" { timelib_sll i; @@ -16941,2683 +16922,2683 @@ yy1142: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 16945 "ext/date/lib/parse_date.c" +#line 16926 "ext/date/lib/parse_date.c" +yy1142: + YYDEBUG(1142, *YYCURSOR); + yych = *++YYCURSOR; + goto yy1117; yy1143: YYDEBUG(1143, *YYCURSOR); yych = *++YYCURSOR; - goto yy1118; + if (yych == 'A') goto yy1144; + if (yych != 'a') goto yy56; yy1144: YYDEBUG(1144, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy1145; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy1145; + if (yych != 'y') goto yy56; yy1145: YYDEBUG(1145, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy1146; - if (yych != 'y') goto yy57; + if (yych == 'S') goto yy1142; + if (yych == 's') goto yy1142; + goto yy1117; yy1146: YYDEBUG(1146, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy1143; - if (yych == 's') goto yy1143; - goto yy1118; + if (yych == 'A') goto yy1147; + if (yych != 'a') goto yy56; yy1147: YYDEBUG(1147, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy1148; - if (yych != 'a') goto yy57; + if (yych == 'R') goto yy1148; + if (yych != 'r') goto yy56; yy1148: YYDEBUG(1148, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy1149; - if (yych != 'r') goto yy57; + if (yych == 'S') goto yy1142; + if (yych == 's') goto yy1142; + goto yy1117; yy1149: YYDEBUG(1149, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy1143; - if (yych == 's') goto yy1143; - goto yy1118; + if (yych == 'I') goto yy1162; + if (yych == 'i') goto yy1162; + goto yy56; yy1150: YYDEBUG(1150, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy1163; - if (yych == 'i') goto yy1163; - goto yy57; + if (yych == 'R') goto yy1151; + if (yych != 'r') goto yy56; yy1151: YYDEBUG(1151, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy1152; - if (yych != 'r') goto yy57; + if (yych == 'T') goto yy1152; + if (yych != 't') goto yy56; yy1152: YYDEBUG(1152, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy1153; - if (yych != 't') goto yy57; -yy1153: - YYDEBUG(1153, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'H') goto yy1155; - if (yych <= 'M') goto yy57; + if (yych == 'H') goto yy1154; + if (yych <= 'M') goto yy56; } else { if (yych <= 'h') { - if (yych <= 'g') goto yy57; - goto yy1155; + if (yych <= 'g') goto yy56; + goto yy1154; } else { - if (yych != 'n') goto yy57; + if (yych != 'n') goto yy56; } } + YYDEBUG(1153, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy1159; + if (yych == 'i') goto yy1159; + goto yy56; +yy1154: YYDEBUG(1154, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy1160; - if (yych == 'i') goto yy1160; - goto yy57; + if (yych == 'N') goto yy1155; + if (yych != 'n') goto yy56; yy1155: YYDEBUG(1155, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy1156; - if (yych != 'n') goto yy57; + if (yych == 'I') goto yy1156; + if (yych != 'i') goto yy56; yy1156: YYDEBUG(1156, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy1157; - if (yych != 'i') goto yy57; + if (yych == 'G') goto yy1157; + if (yych != 'g') goto yy56; yy1157: YYDEBUG(1157, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy1158; - if (yych != 'g') goto yy57; + if (yych == 'H') goto yy1158; + if (yych != 'h') goto yy56; yy1158: YYDEBUG(1158, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy1159; - if (yych != 'h') goto yy57; + if (yych == 'T') goto yy1148; + if (yych == 't') goto yy1148; + goto yy56; yy1159: YYDEBUG(1159, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy1149; - if (yych == 't') goto yy1149; - goto yy57; + if (yych == 'G') goto yy1160; + if (yych != 'g') goto yy56; yy1160: YYDEBUG(1160, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy1161; - if (yych != 'g') goto yy57; + if (yych == 'H') goto yy1161; + if (yych != 'h') goto yy56; yy1161: YYDEBUG(1161, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy1162; - if (yych != 'h') goto yy57; + if (yych == 'T') goto yy1148; + if (yych == 't') goto yy1148; + goto yy56; yy1162: YYDEBUG(1162, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy1149; - if (yych == 't') goto yy1149; - goto yy57; -yy1163: - YYDEBUG(1163, *YYCURSOR); yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych <= 0x1F) goto yy1118; - goto yy1119; + if (yych == '\t') goto yy1118; + if (yych <= 0x1F) goto yy1117; + goto yy1118; } else { if (yych <= 'D') { - if (yych <= 'C') goto yy1118; + if (yych <= 'C') goto yy1117; } else { - if (yych != 'd') goto yy1118; + if (yych != 'd') goto yy1117; } } + YYDEBUG(1163, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1164; + if (yych != 'a') goto yy56; +yy1164: YYDEBUG(1164, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy1165; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy1123; + if (yych == 'y') goto yy1123; + goto yy56; yy1165: YYDEBUG(1165, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych == 'y') goto yy1124; - goto yy57; + if (yych == 'Y') goto yy1148; + if (yych == 'y') goto yy1148; + goto yy56; yy1166: YYDEBUG(1166, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy1149; - if (yych == 'y') goto yy1149; - goto yy57; + if (yych == 'U') goto yy1167; + if (yych != 'u') goto yy56; yy1167: YYDEBUG(1167, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy1168; - if (yych != 'u') goto yy57; + if (yych == 'R') goto yy1148; + if (yych == 'r') goto yy1148; + goto yy56; yy1168: YYDEBUG(1168, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy1149; - if (yych == 'r') goto yy1149; - goto yy57; + if (yych == 'N') goto yy1173; + if (yych == 'n') goto yy1173; + goto yy56; yy1169: YYDEBUG(1169, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy1174; - if (yych == 'n') goto yy1174; - goto yy57; + if (yych == 'N') goto yy1170; + if (yych != 'n') goto yy56; yy1170: YYDEBUG(1170, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy1171; - if (yych != 'n') goto yy57; -yy1171: - YYDEBUG(1171, *YYCURSOR); yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'U') { - if (yych == 'S') goto yy1143; - if (yych <= 'T') goto yy1118; + if (yych == 'S') goto yy1142; + if (yych <= 'T') goto yy1117; } else { if (yych <= 's') { - if (yych <= 'r') goto yy1118; - goto yy1143; + if (yych <= 'r') goto yy1117; + goto yy1142; } else { - if (yych != 'u') goto yy1118; + if (yych != 'u') goto yy1117; } } + YYDEBUG(1171, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy1172; + if (yych != 't') goto yy56; +yy1172: YYDEBUG(1172, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy1173; - if (yych != 't') goto yy57; + if (yych == 'E') goto yy1148; + if (yych == 'e') goto yy1148; + goto yy56; yy1173: YYDEBUG(1173, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy1149; - if (yych == 'e') goto yy1149; - goto yy57; -yy1174: - YYDEBUG(1174, *YYCURSOR); yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= 0x1F) { - if (yych == '\t') goto yy1119; - goto yy1118; + if (yych == '\t') goto yy1118; + goto yy1117; } else { - if (yych <= ' ') goto yy1119; - if (yych <= 'C') goto yy1118; + if (yych <= ' ') goto yy1118; + if (yych <= 'C') goto yy1117; } } else { if (yych <= 'c') { - if (yych == 'T') goto yy1176; - goto yy1118; + if (yych == 'T') goto yy1175; + goto yy1117; } else { - if (yych <= 'd') goto yy1175; - if (yych == 't') goto yy1176; - goto yy1118; + if (yych <= 'd') goto yy1174; + if (yych == 't') goto yy1175; + goto yy1117; } } +yy1174: + YYDEBUG(1174, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1176; + if (yych == 'a') goto yy1176; + goto yy56; yy1175: YYDEBUG(1175, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy1177; - if (yych == 'a') goto yy1177; - goto yy57; + if (yych == 'H') goto yy1148; + if (yych == 'h') goto yy1148; + goto yy56; yy1176: YYDEBUG(1176, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy1149; - if (yych == 'h') goto yy1149; - goto yy57; + if (yych == 'Y') goto yy1123; + if (yych == 'y') goto yy1123; + goto yy56; yy1177: YYDEBUG(1177, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych == 'y') goto yy1124; - goto yy57; + if (yych == 'N') goto yy1188; + if (yych == 'n') goto yy1188; + goto yy56; yy1178: YYDEBUG(1178, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy1189; - if (yych == 'n') goto yy1189; - goto yy57; + if (yych == 'T') goto yy1183; + if (yych == 't') goto yy1183; + goto yy56; yy1179: YYDEBUG(1179, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy1184; - if (yych == 't') goto yy1184; - goto yy57; + if (yych == 'C') goto yy1180; + if (yych != 'c') goto yy56; yy1180: YYDEBUG(1180, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy1181; - if (yych != 'c') goto yy57; -yy1181: - YYDEBUG(1181, *YYCURSOR); yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { - if (yych == 'O') goto yy1182; - if (yych <= 'R') goto yy1118; - goto yy1143; + if (yych == 'O') goto yy1181; + if (yych <= 'R') goto yy1117; + goto yy1142; } else { if (yych <= 'o') { - if (yych <= 'n') goto yy1118; + if (yych <= 'n') goto yy1117; } else { - if (yych == 's') goto yy1143; - goto yy1118; + if (yych == 's') goto yy1142; + goto yy1117; } } +yy1181: + YYDEBUG(1181, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy1182; + if (yych != 'n') goto yy56; yy1182: YYDEBUG(1182, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy1183; - if (yych != 'n') goto yy57; + if (yych == 'D') goto yy1148; + if (yych == 'd') goto yy1148; + goto yy56; yy1183: YYDEBUG(1183, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy1149; - if (yych == 'd') goto yy1149; - goto yy57; -yy1184: - YYDEBUG(1184, *YYCURSOR); yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych <= 0x1F) goto yy1118; - goto yy1119; + if (yych == '\t') goto yy1118; + if (yych <= 0x1F) goto yy1117; + goto yy1118; } else { if (yych <= 'U') { - if (yych <= 'T') goto yy1118; + if (yych <= 'T') goto yy1117; } else { - if (yych != 'u') goto yy1118; + if (yych != 'u') goto yy1117; } } + YYDEBUG(1184, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy1185; + if (yych != 'r') goto yy56; +yy1185: YYDEBUG(1185, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy1186; - if (yych != 'r') goto yy57; + if (yych == 'D') goto yy1186; + if (yych != 'd') goto yy56; yy1186: YYDEBUG(1186, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy1187; - if (yych != 'd') goto yy57; + if (yych == 'A') goto yy1187; + if (yych != 'a') goto yy56; yy1187: YYDEBUG(1187, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy1188; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy1123; + if (yych == 'y') goto yy1123; + goto yy56; yy1188: YYDEBUG(1188, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych == 'y') goto yy1124; - goto yy57; -yy1189: - YYDEBUG(1189, *YYCURSOR); yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1119; - if (yych <= 0x1F) goto yy1118; - goto yy1119; + if (yych == '\t') goto yy1118; + if (yych <= 0x1F) goto yy1117; + goto yy1118; } else { if (yych <= 'D') { - if (yych <= 'C') goto yy1118; + if (yych <= 'C') goto yy1117; } else { - if (yych != 'd') goto yy1118; + if (yych != 'd') goto yy1117; } } + YYDEBUG(1189, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy1190; + if (yych != 'a') goto yy56; +yy1190: YYDEBUG(1190, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy1191; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy1123; + if (yych == 'y') goto yy1123; + goto yy56; yy1191: YYDEBUG(1191, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1124; - if (yych == 'y') goto yy1124; - goto yy57; -yy1192: - YYDEBUG(1192, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'E') goto yy1099; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'E') goto yy1098; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 'e') goto yy1193; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'e') goto yy1192; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy1193: - YYDEBUG(1193, *YYCURSOR); +yy1192: + YYDEBUG(1192, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'U') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { - if (yych <= 'V') goto yy1100; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'V') goto yy1099; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'u') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { - if (yych <= 'v') goto yy1194; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'v') goto yy1193; + if (yych <= 'z') goto yy150; + goto yy3; } } } -yy1194: - YYDEBUG(1194, *YYCURSOR); +yy1193: + YYDEBUG(1193, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'H') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'I') goto yy1101; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'I') goto yy1100; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'h') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'i') goto yy1195; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'i') goto yy1194; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy1195: - YYDEBUG(1195, *YYCURSOR); +yy1194: + YYDEBUG(1194, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'O') goto yy1102; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'O') goto yy1101; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'n') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'o') goto yy1196; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'o') goto yy1195; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy1196: - YYDEBUG(1196, *YYCURSOR); +yy1195: + YYDEBUG(1195, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { - if (yych <= 'U') goto yy1103; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= 'U') goto yy1102; + if (yych == '_') goto yy147; + goto yy3; } else { - if (yych == 'u') goto yy1197; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych == 'u') goto yy1196; + if (yych <= 'z') goto yy153; + goto yy3; } } -yy1197: - YYDEBUG(1197, *YYCURSOR); +yy1196: + YYDEBUG(1196, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy1104; - if (yych != 's') goto yy155; - YYDEBUG(1198, *YYCURSOR); + if (yych == 'S') goto yy1103; + if (yych != 's') goto yy154; + YYDEBUG(1197, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 16) { - goto yy154; + goto yy153; } if (yych <= ',') { if (yych <= '\t') { - if (yych <= 0x08) goto yy57; - goto yy1105; + if (yych <= 0x08) goto yy56; + goto yy1104; } else { - if (yych == ' ') goto yy1105; - goto yy57; + if (yych == ' ') goto yy1104; + goto yy56; } } else { if (yych <= '/') { - if (yych == '.') goto yy57; - goto yy148; + if (yych == '.') goto yy56; + goto yy147; } else { - if (yych == '_') goto yy148; - goto yy57; + if (yych == '_') goto yy147; + goto yy56; } } -yy1199: - YYDEBUG(1199, *YYCURSOR); +yy1198: + YYDEBUG(1198, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'G') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'F') goto yy142; - goto yy1213; + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy141; + goto yy1212; } } else { if (yych <= 'f') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 'g') goto yy1213; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'g') goto yy1212; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy1200: - YYDEBUG(1200, *YYCURSOR); +yy1199: + YYDEBUG(1199, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy141; } } else { if (yych <= 'd') { + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; + } else { + if (yych <= 'e') goto yy1200; + if (yych <= 'z') goto yy141; + goto yy3; + } + } +yy1200: + YYDEBUG(1200, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'V') { + if (yych <= ')') { + if (yych <= '(') goto yy3; + goto yy139; + } else { + if (yych <= '@') goto yy3; + if (yych <= 'U') goto yy142; + } + } else { + if (yych <= 'u') { if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; + if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'e') goto yy1201; + if (yych <= 'v') goto yy1201; if (yych <= 'z') goto yy142; - goto yy4; + goto yy3; } } yy1201: YYDEBUG(1201, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'V') { + if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'U') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy143; } } else { - if (yych <= 'u') { + if (yych <= 'd') { if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; + if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'v') goto yy1202; + if (yych <= 'e') goto yy1202; if (yych <= 'z') goto yy143; - goto yy4; + goto yy3; } } yy1202: YYDEBUG(1202, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'E') { + if (yych <= 'N') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy144; } } else { - if (yych <= 'd') { + if (yych <= 'm') { if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; + if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'e') goto yy1203; + if (yych <= 'n') goto yy1203; if (yych <= 'z') goto yy144; - goto yy4; + goto yy3; } } yy1203: YYDEBUG(1203, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; - } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy145; - } - } else { - if (yych <= 'm') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; - } else { - if (yych <= 'n') goto yy1204; - if (yych <= 'z') goto yy145; - goto yy4; - } - } -yy1204: - YYDEBUG(1204, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'T') goto yy1205; - if (yych != 't') goto yy4; + if (yych <= 'T') goto yy1204; + if (yych != 't') goto yy3; } +yy1204: + YYDEBUG(1204, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy1205; + if (yych != 'h') goto yy56; yy1205: YYDEBUG(1205, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy1206; - if (yych != 'h') goto yy57; + if (yych == '\t') goto yy1206; + if (yych != ' ') goto yy56; yy1206: YYDEBUG(1206, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\t') goto yy1207; - if (yych != ' ') goto yy57; -yy1207: - YYDEBUG(1207, *YYCURSOR); ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; -yy1208: - YYDEBUG(1208, *YYCURSOR); +yy1207: + YYDEBUG(1207, *YYCURSOR); if (yych <= 'W') { if (yych <= 'F') { if (yych <= ' ') { - if (yych == '\t') goto yy1207; - if (yych <= 0x1F) goto yy57; - goto yy1207; + if (yych == '\t') goto yy1206; + if (yych <= 0x1F) goto yy56; + goto yy1206; } else { - if (yych == 'D') goto yy1110; - if (yych <= 'E') goto yy57; - goto yy1111; + if (yych == 'D') goto yy1109; + if (yych <= 'E') goto yy56; + goto yy1110; } } else { if (yych <= 'M') { - if (yych == 'H') goto yy1109; - if (yych <= 'L') goto yy57; - goto yy1108; + if (yych == 'H') goto yy1108; + if (yych <= 'L') goto yy56; + goto yy1107; } else { if (yych <= 'S') { - if (yych <= 'R') goto yy57; - goto yy1107; + if (yych <= 'R') goto yy56; + goto yy1106; } else { - if (yych <= 'T') goto yy1114; - if (yych <= 'V') goto yy57; + if (yych <= 'T') goto yy1113; + if (yych <= 'V') goto yy56; } } } } else { if (yych <= 'l') { if (yych <= 'd') { - if (yych == 'Y') goto yy1112; - if (yych <= 'c') goto yy57; - goto yy1110; + if (yych == 'Y') goto yy1111; + if (yych <= 'c') goto yy56; + goto yy1109; } else { if (yych <= 'f') { - if (yych <= 'e') goto yy57; - goto yy1111; + if (yych <= 'e') goto yy56; + goto yy1110; } else { - if (yych == 'h') goto yy1109; - goto yy57; + if (yych == 'h') goto yy1108; + goto yy56; } } } else { if (yych <= 't') { - if (yych <= 'm') goto yy1108; - if (yych <= 'r') goto yy57; - if (yych <= 's') goto yy1107; - goto yy1114; + if (yych <= 'm') goto yy1107; + if (yych <= 'r') goto yy56; + if (yych <= 's') goto yy1106; + goto yy1113; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy57; + if (yych <= 'v') goto yy56; } else { - if (yych == 'y') goto yy1112; - goto yy57; + if (yych == 'y') goto yy1111; + goto yy56; } } } } - YYDEBUG(1209, *YYCURSOR); + YYDEBUG(1208, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy1210; - if (yych != 'e') goto yy57; -yy1210: - YYDEBUG(1210, *YYCURSOR); + if (yych == 'E') goto yy1209; + if (yych != 'e') goto yy56; +yy1209: + YYDEBUG(1209, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { - if (yych <= 'C') goto yy57; - if (yych <= 'D') goto yy1135; + if (yych <= 'C') goto yy56; + if (yych <= 'D') goto yy1134; } else { - if (yych <= 'c') goto yy57; - if (yych <= 'd') goto yy1135; - if (yych >= 'f') goto yy57; + if (yych <= 'c') goto yy56; + if (yych <= 'd') goto yy1134; + if (yych >= 'f') goto yy56; } - YYDEBUG(1211, *YYCURSOR); + YYDEBUG(1210, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy1212; - if (yych != 'k') goto yy57; -yy1212: - YYDEBUG(1212, *YYCURSOR); + if (yych == 'K') goto yy1211; + if (yych != 'k') goto yy56; +yy1211: + YYDEBUG(1211, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == 'D') goto yy1144; - if (yych <= 'R') goto yy57; - goto yy1143; + if (yych == 'D') goto yy1143; + if (yych <= 'R') goto yy56; + goto yy1142; } else { if (yych <= 'd') { - if (yych <= 'c') goto yy57; - goto yy1144; + if (yych <= 'c') goto yy56; + goto yy1143; } else { - if (yych == 's') goto yy1143; - goto yy57; + if (yych == 's') goto yy1142; + goto yy56; } } -yy1213: - YYDEBUG(1213, *YYCURSOR); +yy1212: + YYDEBUG(1212, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy142; } } else { if (yych <= 'g') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { - if (yych <= 'h') goto yy1214; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'h') goto yy1213; + if (yych <= 'z') goto yy142; + goto yy3; } } -yy1214: - YYDEBUG(1214, *YYCURSOR); +yy1213: + YYDEBUG(1213, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy143; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 't') goto yy1215; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 't') goto yy1214; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy1215: - YYDEBUG(1215, *YYCURSOR); +yy1214: + YYDEBUG(1214, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= 0x1F) { - if (yych == '\t') goto yy1207; - goto yy4; + if (yych == '\t') goto yy1206; + goto yy3; } else { - if (yych <= ' ') goto yy1207; - if (yych == ')') goto yy140; - goto yy4; + if (yych <= ' ') goto yy1206; + if (yych == ')') goto yy139; + goto yy3; } } else { if (yych <= '`') { - if (yych == 'H') goto yy1216; - if (yych <= 'Z') goto yy145; - goto yy4; + if (yych == 'H') goto yy1215; + if (yych <= 'Z') goto yy144; + goto yy3; } else { - if (yych == 'h') goto yy1216; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych == 'h') goto yy1215; + if (yych <= 'z') goto yy144; + goto yy3; } } -yy1216: - YYDEBUG(1216, *YYCURSOR); +yy1215: + YYDEBUG(1215, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy1207; - goto yy4; + if (yych == '\t') goto yy1206; + goto yy3; } else { - if (yych <= ' ') goto yy1207; - if (yych == ')') goto yy140; - goto yy4; + if (yych <= ' ') goto yy1206; + if (yych == ')') goto yy139; + goto yy3; } -yy1217: - YYDEBUG(1217, *YYCURSOR); +yy1216: + YYDEBUG(1216, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'F') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'G') goto yy1213; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'G') goto yy1212; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'f') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 'g') goto yy1225; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'g') goto yy1224; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy1218: - YYDEBUG(1218, *YYCURSOR); +yy1217: + YYDEBUG(1217, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'E') goto yy1201; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'E') goto yy1200; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 'e') goto yy1219; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'e') goto yy1218; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy1219: - YYDEBUG(1219, *YYCURSOR); +yy1218: + YYDEBUG(1218, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'U') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { - if (yych <= 'V') goto yy1202; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'V') goto yy1201; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'u') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { - if (yych <= 'v') goto yy1220; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'v') goto yy1219; + if (yych <= 'z') goto yy150; + goto yy3; } } } -yy1220: - YYDEBUG(1220, *YYCURSOR); +yy1219: + YYDEBUG(1219, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'E') goto yy1203; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'E') goto yy1202; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'e') goto yy1221; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'e') goto yy1220; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy1221: - YYDEBUG(1221, *YYCURSOR); +yy1220: + YYDEBUG(1220, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1204; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'N') goto yy1203; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'n') goto yy1222; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'n') goto yy1221; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy1222: - YYDEBUG(1222, *YYCURSOR); +yy1221: + YYDEBUG(1221, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { - if (yych <= 'T') goto yy1205; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= 'T') goto yy1204; + if (yych == '_') goto yy147; + goto yy3; } else { - if (yych == 't') goto yy1223; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych == 't') goto yy1222; + if (yych <= 'z') goto yy153; + goto yy3; } } +yy1222: + YYDEBUG(1222, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy1205; + if (yych != 'h') goto yy154; yy1223: YYDEBUG(1223, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy1206; - if (yych != 'h') goto yy155; -yy1224: - YYDEBUG(1224, *YYCURSOR); - yych = *++YYCURSOR; if (yybm[0+yych] & 16) { - goto yy154; + goto yy153; } if (yych <= ',') { if (yych <= '\t') { - if (yych <= 0x08) goto yy57; - goto yy1207; + if (yych <= 0x08) goto yy56; + goto yy1206; } else { - if (yych == ' ') goto yy1207; - goto yy57; + if (yych == ' ') goto yy1206; + goto yy56; } } else { if (yych <= '/') { - if (yych == '.') goto yy57; - goto yy148; + if (yych == '.') goto yy56; + goto yy147; } else { - if (yych == '_') goto yy148; - goto yy57; + if (yych == '_') goto yy147; + goto yy56; } } -yy1225: - YYDEBUG(1225, *YYCURSOR); +yy1224: + YYDEBUG(1224, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { - if (yych <= 'H') goto yy1214; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'H') goto yy1213; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { - if (yych <= 'h') goto yy1226; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'h') goto yy1225; + if (yych <= 'z') goto yy150; + goto yy3; } } } -yy1226: - YYDEBUG(1226, *YYCURSOR); +yy1225: + YYDEBUG(1225, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1215; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'T') goto yy1214; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 't') goto yy1227; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 't') goto yy1226; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy1227: - YYDEBUG(1227, *YYCURSOR); +yy1226: + YYDEBUG(1226, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy4; - goto yy1207; + if (yych <= 0x08) goto yy3; + goto yy1206; } else { - if (yych == ' ') goto yy1207; - goto yy4; + if (yych == ' ') goto yy1206; + goto yy3; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy4; + if (yych <= ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - goto yy148; + if (yych == '.') goto yy3; + goto yy147; } } } else { if (yych <= '^') { if (yych <= 'G') { - if (yych <= '@') goto yy4; - goto yy145; + if (yych <= '@') goto yy3; + goto yy144; } else { - if (yych <= 'H') goto yy1216; - if (yych <= 'Z') goto yy145; - goto yy4; + if (yych <= 'H') goto yy1215; + if (yych <= 'Z') goto yy144; + goto yy3; } } else { if (yych <= 'g') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'h') goto yy1228; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'h') goto yy1227; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy1228: - YYDEBUG(1228, *YYCURSOR); +yy1227: + YYDEBUG(1227, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { - goto yy154; + goto yy153; } if (yych <= ')') { if (yych <= 0x1F) { - if (yych == '\t') goto yy1207; - goto yy4; + if (yych == '\t') goto yy1206; + goto yy3; } else { - if (yych <= ' ') goto yy1207; - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= ' ') goto yy1206; + if (yych <= '(') goto yy3; + goto yy139; } } else { if (yych <= '.') { - if (yych == '-') goto yy148; - goto yy4; + if (yych == '-') goto yy147; + goto yy3; } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= '/') goto yy147; + if (yych == '_') goto yy147; + goto yy3; } } -yy1229: - YYDEBUG(1229, *YYCURSOR); +yy1228: + YYDEBUG(1228, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'V') { if (yych <= 'B') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy141; } else { if (yych <= 'O') { - if (yych <= 'C') goto yy1245; - goto yy142; + if (yych <= 'C') goto yy1244; + goto yy141; } else { - if (yych <= 'P') goto yy1247; - if (yych <= 'U') goto yy142; - goto yy1246; + if (yych <= 'P') goto yy1246; + if (yych <= 'U') goto yy141; + goto yy1245; } } } else { if (yych <= 'o') { if (yych <= '`') { - if (yych <= 'Z') goto yy142; - goto yy4; + if (yych <= 'Z') goto yy141; + goto yy3; } else { - if (yych == 'c') goto yy1245; - goto yy142; + if (yych == 'c') goto yy1244; + goto yy141; } } else { if (yych <= 'u') { - if (yych <= 'p') goto yy1247; - goto yy142; + if (yych <= 'p') goto yy1246; + goto yy141; } else { - if (yych <= 'v') goto yy1246; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'v') goto yy1245; + if (yych <= 'z') goto yy141; + goto yy3; } } } -yy1230: - YYDEBUG(1230, *YYCURSOR); +yy1229: + YYDEBUG(1229, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy142; - goto yy1240; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy141; + goto yy1239; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 't') goto yy1240; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 't') goto yy1239; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy1231: - YYDEBUG(1231, *YYCURSOR); +yy1230: + YYDEBUG(1230, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'X') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'W') goto yy142; - goto yy1237; + if (yych <= '@') goto yy3; + if (yych <= 'W') goto yy141; + goto yy1236; } } else { if (yych <= 'w') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 'x') goto yy1237; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'x') goto yy1236; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy1232: - YYDEBUG(1232, *YYCURSOR); +yy1231: + YYDEBUG(1231, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy141; } } else { if (yych <= 'm') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 'n') goto yy1233; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'n') goto yy1232; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy1233: - YYDEBUG(1233, *YYCURSOR); +yy1232: + YYDEBUG(1232, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { - if (yych <= '(') goto yy167; - goto yy140; + if (yych <= '(') goto yy166; + goto yy139; } else { - if (yych <= '@') goto yy167; - if (yych <= 'C') goto yy143; + if (yych <= '@') goto yy166; + if (yych <= 'C') goto yy142; } } else { if (yych <= 'c') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy167; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy166; + goto yy142; } else { - if (yych <= 'd') goto yy1234; - if (yych <= 'z') goto yy143; - goto yy167; + if (yych <= 'd') goto yy1233; + if (yych <= 'z') goto yy142; + goto yy166; } } -yy1234: - YYDEBUG(1234, *YYCURSOR); +yy1233: + YYDEBUG(1233, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; } else { if (yych <= '`') { - if (yych <= 'Z') goto yy144; - goto yy4; + if (yych <= 'Z') goto yy143; + goto yy3; } else { - if (yych <= 'a') goto yy1235; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'a') goto yy1234; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy1235: - YYDEBUG(1235, *YYCURSOR); +yy1234: + YYDEBUG(1234, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'Y') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'X') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy144; } } else { if (yych <= 'x') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 'y') goto yy1236; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'y') goto yy1235; + if (yych <= 'z') goto yy144; + goto yy3; } } +yy1235: + YYDEBUG(1235, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == ')') goto yy139; + goto yy166; yy1236: YYDEBUG(1236, *YYCURSOR); yych = *++YYCURSOR; - if (yych == ')') goto yy140; - goto yy167; -yy1237: - YYDEBUG(1237, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy142; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { - if (yych <= 't') goto yy1238; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 't') goto yy1237; + if (yych <= 'z') goto yy142; + goto yy3; } } -yy1238: - YYDEBUG(1238, *YYCURSOR); +yy1237: + YYDEBUG(1237, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy143; } } else { if (yych <= 'g') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'h') goto yy1239; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'h') goto yy1238; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy1239: - YYDEBUG(1239, *YYCURSOR); +yy1238: + YYDEBUG(1238, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy4; - goto yy1207; + if (yych <= 0x08) goto yy3; + goto yy1206; } else { - if (yych == ' ') goto yy1207; - goto yy4; + if (yych == ' ') goto yy1206; + goto yy3; } } else { if (yych <= 'Z') { - if (yych <= ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy145; + if (yych <= ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy144; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy144; + goto yy3; } } -yy1240: - YYDEBUG(1240, *YYCURSOR); +yy1239: + YYDEBUG(1239, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= ')') { - if (yych <= '(') goto yy167; - goto yy140; + if (yych <= '(') goto yy166; + goto yy139; } else { - if (yych <= '@') goto yy167; - if (yych <= 'T') goto yy143; + if (yych <= '@') goto yy166; + if (yych <= 'T') goto yy142; } } else { if (yych <= 't') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy167; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy166; + goto yy142; } else { - if (yych <= 'u') goto yy1241; - if (yych <= 'z') goto yy143; - goto yy167; + if (yych <= 'u') goto yy1240; + if (yych <= 'z') goto yy142; + goto yy166; } } -yy1241: - YYDEBUG(1241, *YYCURSOR); +yy1240: + YYDEBUG(1240, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy143; } } else { if (yych <= 'q') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'r') goto yy1242; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'r') goto yy1241; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy1242: - YYDEBUG(1242, *YYCURSOR); +yy1241: + YYDEBUG(1241, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy144; } } else { if (yych <= 'c') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 'd') goto yy1243; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'd') goto yy1242; + if (yych <= 'z') goto yy144; + goto yy3; } } -yy1243: - YYDEBUG(1243, *YYCURSOR); +yy1242: + YYDEBUG(1242, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'A') goto yy1244; - if (yych != 'a') goto yy4; + if (yych <= 'A') goto yy1243; + if (yych != 'a') goto yy3; } +yy1243: + YYDEBUG(1243, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy172; + if (yych == 'y') goto yy172; + goto yy56; yy1244: YYDEBUG(1244, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy173; - if (yych == 'y') goto yy173; - goto yy57; -yy1245: - YYDEBUG(1245, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'N') goto yy143; - goto yy1256; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy142; + goto yy1255; } } else { if (yych <= 'n') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { - if (yych <= 'o') goto yy1256; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'o') goto yy1255; + if (yych <= 'z') goto yy142; + goto yy3; } } -yy1246: - YYDEBUG(1246, *YYCURSOR); +yy1245: + YYDEBUG(1245, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy143; - goto yy1253; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy142; + goto yy1252; } } else { if (yych <= 'd') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { - if (yych <= 'e') goto yy1253; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'e') goto yy1252; + if (yych <= 'z') goto yy142; + goto yy3; } } -yy1247: - YYDEBUG(1247, *YYCURSOR); +yy1246: + YYDEBUG(1246, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; + if (yych <= ')') goto yy139; + goto yy193; } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; + if (yych <= '-') goto yy196; + if (yych <= '.') goto yy195; + goto yy193; } } } else { if (yych <= 'Z') { if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych != 'T') goto yy143; + if (yych != 'T') goto yy142; } } else { if (yych <= 's') { - if (yych <= '`') goto yy194; - goto yy143; + if (yych <= '`') goto yy193; + goto yy142; } else { - if (yych <= 't') goto yy1248; - if (yych <= 'z') goto yy143; - goto yy194; + if (yych <= 't') goto yy1247; + if (yych <= 'z') goto yy142; + goto yy193; } } } -yy1248: - YYDEBUG(1248, *YYCURSOR); +yy1247: + YYDEBUG(1247, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; + if (yych <= ')') goto yy139; + goto yy193; } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; + if (yych <= '-') goto yy196; + if (yych <= '.') goto yy195; + goto yy193; } } } else { if (yych <= 'Z') { if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych != 'E') goto yy144; + if (yych != 'E') goto yy143; } } else { if (yych <= 'd') { - if (yych <= '`') goto yy194; - goto yy144; + if (yych <= '`') goto yy193; + goto yy143; } else { - if (yych <= 'e') goto yy1249; - if (yych <= 'z') goto yy144; - goto yy194; + if (yych <= 'e') goto yy1248; + if (yych <= 'z') goto yy143; + goto yy193; } } } -yy1249: - YYDEBUG(1249, *YYCURSOR); +yy1248: + YYDEBUG(1248, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'M') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'L') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy144; } } else { if (yych <= 'l') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 'm') goto yy1250; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'm') goto yy1249; + if (yych <= 'z') goto yy144; + goto yy3; } } -yy1250: - YYDEBUG(1250, *YYCURSOR); +yy1249: + YYDEBUG(1249, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'A') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'B') goto yy1251; - if (yych != 'b') goto yy4; + if (yych <= 'B') goto yy1250; + if (yych != 'b') goto yy3; } +yy1250: + YYDEBUG(1250, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1251; + if (yych != 'e') goto yy56; yy1251: YYDEBUG(1251, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy1252; - if (yych != 'e') goto yy57; + if (yych == 'R') goto yy205; + if (yych == 'r') goto yy205; + goto yy56; yy1252: YYDEBUG(1252, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy206; - if (yych == 'r') goto yy206; - goto yy57; -yy1253: - YYDEBUG(1253, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy143; } } else { if (yych <= 'm') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'n') goto yy1254; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'n') goto yy1253; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy1254: - YYDEBUG(1254, *YYCURSOR); +yy1253: + YYDEBUG(1253, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy144; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 't') goto yy1255; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 't') goto yy1254; + if (yych <= 'z') goto yy144; + goto yy3; } } -yy1255: - YYDEBUG(1255, *YYCURSOR); +yy1254: + YYDEBUG(1254, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'H') goto yy1206; - if (yych == 'h') goto yy1206; - goto yy4; + if (yych <= 'H') goto yy1205; + if (yych == 'h') goto yy1205; + goto yy3; } -yy1256: - YYDEBUG(1256, *YYCURSOR); +yy1255: + YYDEBUG(1255, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy143; } } else { if (yych <= 'm') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'n') goto yy1257; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'n') goto yy1256; + if (yych <= 'z') goto yy143; + goto yy3; } } -yy1257: - YYDEBUG(1257, *YYCURSOR); +yy1256: + YYDEBUG(1256, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy145; - goto yy1216; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy144; + goto yy1215; } } else { if (yych <= 'c') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 'd') goto yy1216; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'd') goto yy1215; + if (yych <= 'z') goto yy144; + goto yy3; } } -yy1258: - YYDEBUG(1258, *YYCURSOR); +yy1257: + YYDEBUG(1257, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'U') { if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - goto yy148; + if (yych == '.') goto yy3; + goto yy147; } } else { if (yych <= 'C') { - if (yych <= '@') goto yy4; - if (yych <= 'B') goto yy142; - goto yy1245; + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy141; + goto yy1244; } else { - if (yych == 'P') goto yy1247; - goto yy142; + if (yych == 'P') goto yy1246; + goto yy141; } } } else { if (yych <= 'b') { if (yych <= '^') { - if (yych <= 'V') goto yy1246; - if (yych <= 'Z') goto yy142; - goto yy4; + if (yych <= 'V') goto yy1245; + if (yych <= 'Z') goto yy141; + goto yy3; } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } } else { if (yych <= 'p') { - if (yych <= 'c') goto yy1274; - if (yych <= 'o') goto yy147; - goto yy1276; + if (yych <= 'c') goto yy1273; + if (yych <= 'o') goto yy146; + goto yy1275; } else { - if (yych == 'v') goto yy1275; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych == 'v') goto yy1274; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy1259: - YYDEBUG(1259, *YYCURSOR); +yy1258: + YYDEBUG(1258, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1240; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'T') goto yy1239; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 't') goto yy1269; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 't') goto yy1268; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy1260: - YYDEBUG(1260, *YYCURSOR); +yy1259: + YYDEBUG(1259, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'X') goto yy1237; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'X') goto yy1236; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'w') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 'x') goto yy1266; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'x') goto yy1265; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy1261: - YYDEBUG(1261, *YYCURSOR); +yy1260: + YYDEBUG(1260, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1233; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'N') goto yy1232; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 'n') goto yy1262; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'n') goto yy1261; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy1262: - YYDEBUG(1262, *YYCURSOR); +yy1261: + YYDEBUG(1261, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy166; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy166; + goto yy142; } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1234; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; + if (yych <= 'D') goto yy1233; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy166; + goto yy147; } else { if (yych <= 'c') { - if (yych <= '`') goto yy167; - goto yy151; + if (yych <= '`') goto yy166; + goto yy150; } else { - if (yych <= 'd') goto yy1263; - if (yych <= 'z') goto yy151; - goto yy167; + if (yych <= 'd') goto yy1262; + if (yych <= 'z') goto yy150; + goto yy166; } } } -yy1263: - YYDEBUG(1263, *YYCURSOR); +yy1262: + YYDEBUG(1262, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '_') { - if (yych <= 'A') goto yy1235; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'A') goto yy1234; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy1264; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy1263; + if (yych <= 'z') goto yy151; + goto yy3; } } -yy1264: - YYDEBUG(1264, *YYCURSOR); +yy1263: + YYDEBUG(1263, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'Y') goto yy1236; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Y') goto yy1235; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'x') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'y') goto yy1265; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'y') goto yy1264; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy1265: - YYDEBUG(1265, *YYCURSOR); +yy1264: + YYDEBUG(1264, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { - goto yy154; + goto yy153; } if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy166; + goto yy147; } else { if (yych <= '/') { - if (yych <= '.') goto yy167; - goto yy148; + if (yych <= '.') goto yy166; + goto yy147; } else { - if (yych == '_') goto yy148; - goto yy167; + if (yych == '_') goto yy147; + goto yy166; } } -yy1266: - YYDEBUG(1266, *YYCURSOR); +yy1265: + YYDEBUG(1265, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1238; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'T') goto yy1237; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { - if (yych <= 't') goto yy1267; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 't') goto yy1266; + if (yych <= 'z') goto yy150; + goto yy3; } } } -yy1267: - YYDEBUG(1267, *YYCURSOR); +yy1266: + YYDEBUG(1266, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'H') goto yy1239; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'H') goto yy1238; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'h') goto yy1268; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'h') goto yy1267; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy1268: - YYDEBUG(1268, *YYCURSOR); +yy1267: + YYDEBUG(1267, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= ' ') { - if (yych == '\t') goto yy1207; - if (yych <= 0x1F) goto yy4; - goto yy1207; + if (yych == '\t') goto yy1206; + if (yych <= 0x1F) goto yy3; + goto yy1206; } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } } else { if (yych <= 'Z') { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } else { if (yych <= '_') { - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy1269: - YYDEBUG(1269, *YYCURSOR); +yy1268: + YYDEBUG(1268, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy166; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy166; + goto yy142; } } else { if (yych <= '_') { - if (yych <= 'U') goto yy1241; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; + if (yych <= 'U') goto yy1240; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy166; + goto yy147; } else { if (yych <= 't') { - if (yych <= '`') goto yy167; - goto yy151; + if (yych <= '`') goto yy166; + goto yy150; } else { - if (yych <= 'u') goto yy1270; - if (yych <= 'z') goto yy151; - goto yy167; + if (yych <= 'u') goto yy1269; + if (yych <= 'z') goto yy150; + goto yy166; } } } -yy1270: - YYDEBUG(1270, *YYCURSOR); +yy1269: + YYDEBUG(1269, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'R') goto yy1242; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'R') goto yy1241; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'r') goto yy1271; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'r') goto yy1270; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy1271: - YYDEBUG(1271, *YYCURSOR); +yy1270: + YYDEBUG(1270, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1243; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'D') goto yy1242; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'd') goto yy1272; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'd') goto yy1271; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy1272: - YYDEBUG(1272, *YYCURSOR); +yy1271: + YYDEBUG(1271, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '_') { - if (yych <= 'A') goto yy1244; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'A') goto yy1243; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; - if (yych <= 'a') goto yy1273; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'a') goto yy1272; + if (yych <= 'z') goto yy153; + goto yy3; } } +yy1272: + YYDEBUG(1272, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy172; + if (yych == 'y') goto yy185; + goto yy154; yy1273: YYDEBUG(1273, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy173; - if (yych == 'y') goto yy186; - goto yy155; -yy1274: - YYDEBUG(1274, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { - if (yych <= 'O') goto yy1256; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'O') goto yy1255; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'n') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { - if (yych <= 'o') goto yy1285; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'o') goto yy1284; + if (yych <= 'z') goto yy150; + goto yy3; } } } -yy1275: - YYDEBUG(1275, *YYCURSOR); +yy1274: + YYDEBUG(1274, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { - if (yych <= 'E') goto yy1253; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'E') goto yy1252; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { - if (yych <= 'e') goto yy1282; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'e') goto yy1281; + if (yych <= 'z') goto yy150; + goto yy3; } } } -yy1276: - YYDEBUG(1276, *YYCURSOR); +yy1275: + YYDEBUG(1275, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy371; } else { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } } } else { if (yych <= '^') { if (yych <= 'S') { - if (yych <= '@') goto yy194; - goto yy143; + if (yych <= '@') goto yy193; + goto yy142; } else { - if (yych <= 'T') goto yy1248; - if (yych <= 'Z') goto yy143; - goto yy194; + if (yych <= 'T') goto yy1247; + if (yych <= 'Z') goto yy142; + goto yy193; } } else { if (yych <= 's') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy193; + goto yy150; } else { - if (yych <= 't') goto yy1277; - if (yych <= 'z') goto yy151; - goto yy194; + if (yych <= 't') goto yy1276; + if (yych <= 'z') goto yy150; + goto yy193; } } } -yy1277: - YYDEBUG(1277, *YYCURSOR); +yy1276: + YYDEBUG(1276, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy371; } else { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } } } else { if (yych <= '^') { if (yych <= 'D') { - if (yych <= '@') goto yy194; - goto yy144; + if (yych <= '@') goto yy193; + goto yy143; } else { - if (yych <= 'E') goto yy1249; - if (yych <= 'Z') goto yy144; - goto yy194; + if (yych <= 'E') goto yy1248; + if (yych <= 'Z') goto yy143; + goto yy193; } } else { if (yych <= 'd') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy152; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy193; + goto yy151; } else { - if (yych <= 'e') goto yy1278; - if (yych <= 'z') goto yy152; - goto yy194; + if (yych <= 'e') goto yy1277; + if (yych <= 'z') goto yy151; + goto yy193; } } } -yy1278: - YYDEBUG(1278, *YYCURSOR); +yy1277: + YYDEBUG(1277, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'M') goto yy1250; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'M') goto yy1249; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'l') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'm') goto yy1279; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'm') goto yy1278; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy1279: - YYDEBUG(1279, *YYCURSOR); +yy1278: + YYDEBUG(1278, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'A') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { - if (yych <= 'B') goto yy1251; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= 'B') goto yy1250; + if (yych == '_') goto yy147; + goto yy3; } else { - if (yych == 'b') goto yy1280; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych == 'b') goto yy1279; + if (yych <= 'z') goto yy153; + goto yy3; } } -yy1280: +yy1279: + YYDEBUG(1279, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy1251; + if (yych != 'e') goto yy154; YYDEBUG(1280, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy1252; - if (yych != 'e') goto yy155; + if (yych == 'R') goto yy205; + if (yych == 'r') goto yy376; + goto yy154; +yy1281: YYDEBUG(1281, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy206; - if (yych == 'r') goto yy377; - goto yy155; -yy1282: - YYDEBUG(1282, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1254; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'N') goto yy1253; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'n') goto yy1283; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'n') goto yy1282; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy1283: - YYDEBUG(1283, *YYCURSOR); +yy1282: + YYDEBUG(1282, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1255; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'T') goto yy1254; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 't') goto yy1284; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 't') goto yy1283; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy1284: - YYDEBUG(1284, *YYCURSOR); +yy1283: + YYDEBUG(1283, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { - if (yych <= 'H') goto yy1206; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= 'H') goto yy1205; + if (yych == '_') goto yy147; + goto yy3; } else { - if (yych == 'h') goto yy1224; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych == 'h') goto yy1223; + if (yych <= 'z') goto yy153; + goto yy3; } } -yy1285: - YYDEBUG(1285, *YYCURSOR); +yy1284: + YYDEBUG(1284, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1257; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'N') goto yy1256; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'n') goto yy1286; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'n') goto yy1285; + if (yych <= 'z') goto yy151; + goto yy3; } } } -yy1286: - YYDEBUG(1286, *YYCURSOR); +yy1285: + YYDEBUG(1285, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1216; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'D') goto yy1215; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'd') goto yy1228; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'd') goto yy1227; + if (yych <= 'z') goto yy152; + goto yy3; } } } -yy1287: - YYDEBUG(1287, *YYCURSOR); +yy1286: + YYDEBUG(1286, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'C') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'B') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'B') goto yy141; } } else { if (yych <= 'b') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 'c') goto yy1288; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'c') goto yy1287; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy1288: - YYDEBUG(1288, *YYCURSOR); +yy1287: + YYDEBUG(1287, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'K') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'J') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'J') goto yy142; } } else { if (yych <= 'j') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { - if (yych <= 'k') goto yy1289; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'k') goto yy1288; + if (yych <= 'z') goto yy142; + goto yy3; } } -yy1289: - YYDEBUG(1289, *YYCURSOR); +yy1288: + YYDEBUG(1288, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ')') { - if (yych == ' ') goto yy1290; - if (yych <= '(') goto yy4; - goto yy140; + if (yych == ' ') goto yy1289; + if (yych <= '(') goto yy3; + goto yy139; } else { if (yych <= 'Z') { - if (yych <= '@') goto yy4; - goto yy144; + if (yych <= '@') goto yy3; + goto yy143; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy143; + goto yy3; } } +yy1289: + YYDEBUG(1289, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy1290; + if (yych != 'o') goto yy56; yy1290: YYDEBUG(1290, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy1291; - if (yych != 'o') goto yy57; + if (yych == 'F') goto yy1291; + if (yych != 'f') goto yy56; yy1291: YYDEBUG(1291, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy1292; - if (yych != 'f') goto yy57; -yy1292: + if (yych != ' ') goto yy56; YYDEBUG(1292, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ' ') goto yy57; + if (yych <= '/') goto yy56; + if (yych <= '1') goto yy1293; + if (yych <= '2') goto yy1295; + if (yych <= '9') goto yy1296; + goto yy56; +yy1293: YYDEBUG(1293, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych <= '1') goto yy1294; - if (yych <= '2') goto yy1296; - if (yych <= '9') goto yy1297; - goto yy57; -yy1294: - YYDEBUG(1294, *YYCURSOR); yyaccept = 28; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1298; - if (yych <= '9') goto yy1297; - goto yy1298; -yy1295: - YYDEBUG(1295, *YYCURSOR); + if (yych <= '/') goto yy1297; + if (yych <= '9') goto yy1296; + goto yy1297; +yy1294: + YYDEBUG(1294, *YYCURSOR); #line 1069 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("backof | frontof"); @@ -19640,295 +19621,312 @@ yy1295: TIMELIB_DEINIT; return TIMELIB_LF_DAY_OF_MONTH; } -#line 19644 "ext/date/lib/parse_date.c" -yy1296: - YYDEBUG(1296, *YYCURSOR); +#line 19625 "ext/date/lib/parse_date.c" +yy1295: + YYDEBUG(1295, *YYCURSOR); yyaccept = 28; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1298; - if (yych >= '5') goto yy1298; -yy1297: - YYDEBUG(1297, *YYCURSOR); + if (yych <= '/') goto yy1297; + if (yych >= '5') goto yy1297; +yy1296: + YYDEBUG(1296, *YYCURSOR); yyaccept = 28; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; -yy1298: - YYDEBUG(1298, *YYCURSOR); +yy1297: + YYDEBUG(1297, *YYCURSOR); if (yych <= 'A') { if (yych <= 0x1F) { - if (yych == '\t') goto yy1297; - goto yy1295; + if (yych == '\t') goto yy1296; + goto yy1294; } else { - if (yych <= ' ') goto yy1297; - if (yych <= '@') goto yy1295; + if (yych <= ' ') goto yy1296; + if (yych <= '@') goto yy1294; } } else { if (yych <= '`') { - if (yych != 'P') goto yy1295; + if (yych != 'P') goto yy1294; } else { - if (yych <= 'a') goto yy1299; - if (yych != 'p') goto yy1295; + if (yych <= 'a') goto yy1298; + if (yych != 'p') goto yy1294; } } -yy1299: - YYDEBUG(1299, *YYCURSOR); +yy1298: + YYDEBUG(1298, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'L') { - if (yych != '.') goto yy57; + if (yych != '.') goto yy56; } else { - if (yych <= 'M') goto yy1301; - if (yych == 'm') goto yy1301; - goto yy57; + if (yych <= 'M') goto yy1300; + if (yych == 'm') goto yy1300; + goto yy56; } - YYDEBUG(1300, *YYCURSOR); + YYDEBUG(1299, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy1301; - if (yych != 'm') goto yy57; -yy1301: - YYDEBUG(1301, *YYCURSOR); + if (yych == 'M') goto yy1300; + if (yych != 'm') goto yy56; +yy1300: + YYDEBUG(1300, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy1303; - if (yych == '\t') goto yy1303; - goto yy57; + if (yych <= 0x00) goto yy1302; + if (yych == '\t') goto yy1302; + goto yy56; } else { - if (yych <= ' ') goto yy1303; - if (yych != '.') goto yy57; + if (yych <= ' ') goto yy1302; + if (yych != '.') goto yy56; } - YYDEBUG(1302, *YYCURSOR); + YYDEBUG(1301, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy1303; - if (yych <= 0x08) goto yy57; + if (yych <= 0x00) goto yy1302; + if (yych <= 0x08) goto yy56; } else { - if (yych != ' ') goto yy57; + if (yych != ' ') goto yy56; } +yy1302: + YYDEBUG(1302, *YYCURSOR); + yych = *++YYCURSOR; + goto yy1294; yy1303: YYDEBUG(1303, *YYCURSOR); - yych = *++YYCURSOR; - goto yy1295; -yy1304: - YYDEBUG(1304, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'B') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'C') goto yy1288; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'C') goto yy1287; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'b') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { - if (yych <= 'c') goto yy1305; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'c') goto yy1304; + if (yych <= 'z') goto yy146; + goto yy3; } } } -yy1305: - YYDEBUG(1305, *YYCURSOR); +yy1304: + YYDEBUG(1304, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'J') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { - if (yych <= 'K') goto yy1289; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'K') goto yy1288; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'j') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { - if (yych <= 'k') goto yy1306; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'k') goto yy1305; + if (yych <= 'z') goto yy150; + goto yy3; } } } -yy1306: - YYDEBUG(1306, *YYCURSOR); +yy1305: + YYDEBUG(1305, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= '(') { - if (yych == ' ') goto yy1290; - goto yy4; + if (yych == ' ') goto yy1289; + goto yy3; } else { - if (yych <= ')') goto yy140; - if (yych == '-') goto yy148; - goto yy4; + if (yych <= ')') goto yy139; + if (yych == '-') goto yy147; + goto yy3; } } else { if (yych <= '^') { - if (yych <= '/') goto yy148; - if (yych <= '@') goto yy4; - if (yych <= 'Z') goto yy144; - goto yy4; + if (yych <= '/') goto yy147; + if (yych <= '@') goto yy3; + if (yych <= 'Z') goto yy143; + goto yy3; } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy151; + goto yy3; } } -yy1307: - YYDEBUG(1307, *YYCURSOR); +yy1306: + YYDEBUG(1306, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'R') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy141; } } else { if (yych <= 'r') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { - if (yych <= 's') goto yy1308; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 's') goto yy1307; + if (yych <= 'z') goto yy141; + goto yy3; } } -yy1308: - YYDEBUG(1308, *YYCURSOR); +yy1307: + YYDEBUG(1307, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy142; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { - if (yych <= 't') goto yy1309; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 't') goto yy1308; + if (yych <= 'z') goto yy142; + goto yy3; } } -yy1309: - YYDEBUG(1309, *YYCURSOR); +yy1308: + YYDEBUG(1308, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy4; - goto yy1105; + if (yych <= 0x08) goto yy3; + goto yy1104; } else { - if (yych != ' ') goto yy4; + if (yych != ' ') goto yy3; } } else { if (yych <= 'Z') { - if (yych <= ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy144; + if (yych <= ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy143; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy143; + goto yy3; } } +yy1309: + YYDEBUG(1309, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy1310; + if (yych != 'd') goto yy1105; yy1310: YYDEBUG(1310, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy1311; - if (yych != 'd') goto yy1106; + if (yych == 'A') goto yy1311; + if (yych != 'a') goto yy56; yy1311: YYDEBUG(1311, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy1312; - if (yych != 'a') goto yy57; + if (yych == 'Y') goto yy1312; + if (yych != 'y') goto yy56; yy1312: YYDEBUG(1312, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy1313; - if (yych != 'y') goto yy57; -yy1313: - YYDEBUG(1313, *YYCURSOR); yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { - if (yych != ' ') goto yy1118; + if (yych != ' ') goto yy1117; } else { - if (yych <= 'S') goto yy1143; - if (yych == 's') goto yy1143; - goto yy1118; + if (yych <= 'S') goto yy1142; + if (yych == 's') goto yy1142; + goto yy1117; } + YYDEBUG(1313, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy1314; + if (yych != 'o') goto yy56; +yy1314: YYDEBUG(1314, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy1315; - if (yych != 'o') goto yy57; + if (yych == 'F') goto yy1315; + if (yych != 'f') goto yy56; yy1315: YYDEBUG(1315, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy1316; - if (yych != 'f') goto yy57; -yy1316: + ++YYCURSOR; YYDEBUG(1316, *YYCURSOR); - yych = *++YYCURSOR; - goto yy2; +#line 1052 "ext/date/lib/parse_date.re" + { + DEBUG_OUTPUT("firstdayof | lastdayof"); + TIMELIB_INIT; + TIMELIB_HAVE_RELATIVE(); + + /* skip "last day of" or "first day of" */ + if (*ptr == 'l') { + s->time->relative.first_last_day_of = 2; + } else { + s->time->relative.first_last_day_of = 1; + } + + TIMELIB_DEINIT; + return TIMELIB_LF_DAY_OF_MONTH; + } +#line 19902 "ext/date/lib/parse_date.c" yy1317: YYDEBUG(1317, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { - if (yych <= 'S') goto yy1308; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'S') goto yy1307; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'r') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { if (yych <= 's') goto yy1318; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -19938,28 +19936,28 @@ yy1318: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1309; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'T') goto yy1308; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 't') goto yy1319; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -19969,27 +19967,27 @@ yy1319: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= ' ') { - if (yych == '\t') goto yy1105; - if (yych <= 0x1F) goto yy4; - goto yy1310; + if (yych == '\t') goto yy1104; + if (yych <= 0x1F) goto yy3; + goto yy1309; } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } } else { if (yych <= 'Z') { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } else { if (yych <= '_') { - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -19998,22 +19996,22 @@ yy1320: yych = *++YYCURSOR; if (yych <= 'B') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'A') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy141; goto yy1356; } } else { if (yych <= 'a') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { if (yych <= 'b') goto yy1356; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1321: @@ -20021,23 +20019,23 @@ yy1321: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych == 'F') goto yy1346; - if (yych <= 'Q') goto yy142; + if (yych <= 'Q') goto yy141; goto yy1345; } } else { if (yych <= 'f') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'e') goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + if (yych <= 'e') goto yy141; goto yy1346; } else { if (yych == 'r') goto yy1345; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1322: @@ -20045,22 +20043,22 @@ yy1322: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'T') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'T') goto yy141; goto yy1342; } } else { if (yych <= 't') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { if (yych <= 'u') goto yy1342; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1323: @@ -20068,22 +20066,22 @@ yy1323: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych == 'I') goto yy1325; - if (yych <= 'N') goto yy142; + if (yych <= 'N') goto yy141; } } else { if (yych <= 'i') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'h') goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + if (yych <= 'h') goto yy141; goto yy1325; } else { if (yych == 'o') goto yy1324; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1324: @@ -20091,22 +20089,22 @@ yy1324: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy142; goto yy1328; } } else { if (yych <= 'm') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 'n') goto yy1328; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1325: @@ -20114,37 +20112,37 @@ yy1325: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { - if (yych <= '(') goto yy167; - goto yy140; + if (yych <= '(') goto yy166; + goto yy139; } else { - if (yych <= '@') goto yy167; - if (yych <= 'C') goto yy143; + if (yych <= '@') goto yy166; + if (yych <= 'C') goto yy142; } } else { if (yych <= 'c') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy167; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy166; + goto yy142; } else { if (yych <= 'd') goto yy1326; - if (yych <= 'z') goto yy143; - goto yy167; + if (yych <= 'z') goto yy142; + goto yy166; } } yy1326: YYDEBUG(1326, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; } else { if (yych <= '`') { - if (yych <= 'Z') goto yy144; - goto yy4; + if (yych <= 'Z') goto yy143; + goto yy3; } else { if (yych <= 'a') goto yy1327; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1327: @@ -20152,22 +20150,22 @@ yy1327: yych = *++YYCURSOR; if (yych <= 'Y') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'X') goto yy145; - goto yy1236; + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy144; + goto yy1235; } } else { if (yych <= 'x') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 'y') goto yy1236; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'y') goto yy1235; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1328: @@ -20175,21 +20173,21 @@ yy1328: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy143; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { if (yych <= 't') goto yy1329; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1329: @@ -20198,39 +20196,39 @@ yy1329: yych = *(YYMARKER = ++YYCURSOR); if (yych <= ')') { if (yych == ' ') goto yy1330; - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { if (yych <= 'Z') { - if (yych <= '@') goto yy4; - goto yy145; + if (yych <= '@') goto yy3; + goto yy144; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1330: YYDEBUG(1330, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'O') goto yy1331; - if (yych != 'o') goto yy57; + if (yych != 'o') goto yy56; yy1331: YYDEBUG(1331, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'F') goto yy1332; - if (yych != 'f') goto yy57; + if (yych != 'f') goto yy56; yy1332: YYDEBUG(1332, *YYCURSOR); yych = *++YYCURSOR; - if (yych != ' ') goto yy57; + if (yych != ' ') goto yy56; YYDEBUG(1333, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; + if (yych <= '/') goto yy56; if (yych <= '1') goto yy1334; if (yych <= '2') goto yy1335; if (yych <= '9') goto yy1336; - goto yy57; + goto yy56; yy1334: YYDEBUG(1334, *YYCURSOR); yyaccept = 28; @@ -20255,74 +20253,74 @@ yy1337: if (yych <= 'A') { if (yych <= 0x1F) { if (yych == '\t') goto yy1336; - goto yy1295; + goto yy1294; } else { if (yych <= ' ') goto yy1336; - if (yych <= '@') goto yy1295; + if (yych <= '@') goto yy1294; } } else { if (yych <= '`') { - if (yych != 'P') goto yy1295; + if (yych != 'P') goto yy1294; } else { if (yych <= 'a') goto yy1338; - if (yych != 'p') goto yy1295; + if (yych != 'p') goto yy1294; } } yy1338: YYDEBUG(1338, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'L') { - if (yych != '.') goto yy57; + if (yych != '.') goto yy56; } else { if (yych <= 'M') goto yy1340; if (yych == 'm') goto yy1340; - goto yy57; + goto yy56; } YYDEBUG(1339, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'M') goto yy1340; - if (yych != 'm') goto yy57; + if (yych != 'm') goto yy56; yy1340: YYDEBUG(1340, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy1303; - if (yych == '\t') goto yy1303; - goto yy57; + if (yych <= 0x00) goto yy1302; + if (yych == '\t') goto yy1302; + goto yy56; } else { - if (yych <= ' ') goto yy1303; - if (yych != '.') goto yy57; + if (yych <= ' ') goto yy1302; + if (yych != '.') goto yy56; } YYDEBUG(1341, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy1303; - if (yych <= 0x08) goto yy57; - goto yy1303; + if (yych <= 0x00) goto yy1302; + if (yych <= 0x08) goto yy56; + goto yy1302; } else { - if (yych == ' ') goto yy1303; - goto yy57; + if (yych == ' ') goto yy1302; + goto yy56; } yy1342: YYDEBUG(1342, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy142; } } else { if (yych <= 'q') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 'r') goto yy1343; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1343: @@ -20330,21 +20328,21 @@ yy1343: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy143; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { if (yych <= 't') goto yy1344; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1344: @@ -20352,22 +20350,22 @@ yy1344: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy145; - goto yy1216; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy144; + goto yy1215; } } else { if (yych <= 'g') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 'h') goto yy1216; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'h') goto yy1215; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1345: @@ -20375,22 +20373,22 @@ yy1345: yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'R') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy142; goto yy1348; } } else { if (yych <= 'r') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 's') goto yy1348; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1346: @@ -20398,21 +20396,21 @@ yy1346: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy142; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 't') goto yy1347; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1347: @@ -20420,22 +20418,22 @@ yy1347: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy144; - goto yy1239; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy143; + goto yy1238; } } else { if (yych <= 'g') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'h') goto yy1239; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'h') goto yy1238; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1348: @@ -20443,21 +20441,21 @@ yy1348: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy143; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { if (yych <= 't') goto yy1349; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1349: @@ -20466,58 +20464,58 @@ yy1349: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy4; - goto yy1207; + if (yych <= 0x08) goto yy3; + goto yy1206; } else { - if (yych != ' ') goto yy4; + if (yych != ' ') goto yy3; } } else { if (yych <= 'Z') { - if (yych <= ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy145; + if (yych <= ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy144; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1350: YYDEBUG(1350, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'D') goto yy1351; - if (yych != 'd') goto yy1208; + if (yych != 'd') goto yy1207; yy1351: YYDEBUG(1351, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'A') goto yy1352; - if (yych != 'a') goto yy57; + if (yych != 'a') goto yy56; yy1352: YYDEBUG(1352, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'Y') goto yy1353; - if (yych != 'y') goto yy57; + if (yych != 'y') goto yy56; yy1353: YYDEBUG(1353, *YYCURSOR); yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { - if (yych != ' ') goto yy1118; + if (yych != ' ') goto yy1117; } else { - if (yych <= 'S') goto yy1143; - if (yych == 's') goto yy1143; - goto yy1118; + if (yych <= 'S') goto yy1142; + if (yych == 's') goto yy1142; + goto yy1117; } YYDEBUG(1354, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'O') goto yy1355; - if (yych != 'o') goto yy57; + if (yych != 'o') goto yy56; yy1355: YYDEBUG(1355, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy1316; - if (yych == 'f') goto yy1316; - goto yy57; + if (yych == 'F') goto yy1315; + if (yych == 'f') goto yy1315; + goto yy56; yy1356: YYDEBUG(1356, *YYCURSOR); yyaccept = 5; @@ -20525,38 +20523,38 @@ yy1356: if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; + if (yych <= ')') goto yy139; + goto yy193; } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; + if (yych <= '-') goto yy196; + if (yych <= '.') goto yy195; + goto yy193; } } } else { if (yych <= 'Z') { if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych != 'R') goto yy143; + if (yych != 'R') goto yy142; } } else { if (yych <= 'q') { - if (yych <= '`') goto yy194; - goto yy143; + if (yych <= '`') goto yy193; + goto yy142; } else { if (yych <= 'r') goto yy1357; - if (yych <= 'z') goto yy143; - goto yy194; + if (yych <= 'z') goto yy142; + goto yy193; } } } @@ -20565,37 +20563,37 @@ yy1357: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'T') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'T') goto yy143; } } else { if (yych <= 't') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { if (yych <= 'u') goto yy1358; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1358: YYDEBUG(1358, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; } else { if (yych <= '`') { - if (yych <= 'Z') goto yy145; - goto yy4; + if (yych <= 'Z') goto yy144; + goto yy3; } else { if (yych <= 'a') goto yy1359; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1359: @@ -20603,46 +20601,46 @@ yy1359: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych <= 'R') goto yy1360; - if (yych != 'r') goto yy4; + if (yych != 'r') goto yy3; } yy1360: YYDEBUG(1360, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy206; - if (yych == 'y') goto yy206; - goto yy57; + if (yych == 'Y') goto yy205; + if (yych == 'y') goto yy205; + goto yy56; yy1361: YYDEBUG(1361, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'A') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { if (yych <= 'B') goto yy1356; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'a') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { if (yych <= 'b') goto yy1379; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -20653,38 +20651,38 @@ yy1362: if (yych <= 'Q') { if (yych <= '.') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych == '-') goto yy148; - goto yy4; + if (yych == '-') goto yy147; + goto yy3; } } else { if (yych <= '@') { - if (yych <= '/') goto yy148; - goto yy4; + if (yych <= '/') goto yy147; + goto yy3; } else { if (yych == 'F') goto yy1346; - goto yy142; + goto yy141; } } } else { if (yych <= '`') { if (yych <= 'Z') { if (yych <= 'R') goto yy1345; - goto yy142; + goto yy141; } else { - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } } else { if (yych <= 'q') { if (yych == 'f') goto yy1375; - goto yy147; + goto yy146; } else { if (yych <= 'r') goto yy1374; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -20694,28 +20692,28 @@ yy1363: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { if (yych <= 'U') goto yy1342; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 't') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { if (yych <= 'u') goto yy1371; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -20726,38 +20724,38 @@ yy1364: if (yych <= 'N') { if (yych <= '.') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych == '-') goto yy148; - goto yy4; + if (yych == '-') goto yy147; + goto yy3; } } else { if (yych <= '@') { - if (yych <= '/') goto yy148; - goto yy4; + if (yych <= '/') goto yy147; + goto yy3; } else { if (yych == 'I') goto yy1325; - goto yy142; + goto yy141; } } } else { if (yych <= '`') { if (yych <= 'Z') { if (yych <= 'O') goto yy1324; - goto yy142; + goto yy141; } else { - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } } else { if (yych <= 'n') { if (yych == 'i') goto yy1366; - goto yy147; + goto yy146; } else { if (yych <= 'o') goto yy1365; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -20767,28 +20765,28 @@ yy1365: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'N') goto yy1328; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 'n') goto yy1369; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -20798,28 +20796,28 @@ yy1366: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy166; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy166; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'D') goto yy1326; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy166; + goto yy147; } else { if (yych <= 'c') { - if (yych <= '`') goto yy167; - goto yy151; + if (yych <= '`') goto yy166; + goto yy150; } else { if (yych <= 'd') goto yy1367; - if (yych <= 'z') goto yy151; - goto yy167; + if (yych <= 'z') goto yy150; + goto yy166; } } } @@ -20829,24 +20827,24 @@ yy1367: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '_') { if (yych <= 'A') goto yy1327; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; + if (yych <= '`') goto yy3; if (yych <= 'a') goto yy1368; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } yy1368: @@ -20855,28 +20853,28 @@ yy1368: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'Y') goto yy1236; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Y') goto yy1235; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'x') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'y') goto yy1265; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'y') goto yy1264; + if (yych <= 'z') goto yy152; + goto yy3; } } } @@ -20886,28 +20884,28 @@ yy1369: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { if (yych <= 'T') goto yy1329; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { if (yych <= 't') goto yy1370; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -20918,23 +20916,23 @@ yy1370: if (yych <= '.') { if (yych <= '(') { if (yych == ' ') goto yy1330; - goto yy4; + goto yy3; } else { - if (yych <= ')') goto yy140; - if (yych == '-') goto yy148; - goto yy4; + if (yych <= ')') goto yy139; + if (yych == '-') goto yy147; + goto yy3; } } else { if (yych <= '^') { - if (yych <= '/') goto yy148; - if (yych <= '@') goto yy4; - if (yych <= 'Z') goto yy145; - goto yy4; + if (yych <= '/') goto yy147; + if (yych <= '@') goto yy3; + if (yych <= 'Z') goto yy144; + goto yy3; } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy152; + goto yy3; } } yy1371: @@ -20943,28 +20941,28 @@ yy1371: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'R') goto yy1343; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 'r') goto yy1372; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -20974,28 +20972,28 @@ yy1372: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { if (yych <= 'T') goto yy1344; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { if (yych <= 't') goto yy1373; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -21005,28 +21003,28 @@ yy1373: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'H') goto yy1216; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'H') goto yy1215; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'h') goto yy1228; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'h') goto yy1227; + if (yych <= 'z') goto yy152; + goto yy3; } } } @@ -21036,28 +21034,28 @@ yy1374: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'S') goto yy1348; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'r') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 's') goto yy1377; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -21067,28 +21065,28 @@ yy1375: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'T') goto yy1347; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 't') goto yy1376; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -21098,28 +21096,28 @@ yy1376: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'H') goto yy1239; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'H') goto yy1238; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'h') goto yy1268; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'h') goto yy1267; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -21129,28 +21127,28 @@ yy1377: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { if (yych <= 'T') goto yy1349; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { if (yych <= 't') goto yy1378; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -21160,27 +21158,27 @@ yy1378: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= ' ') { - if (yych == '\t') goto yy1207; - if (yych <= 0x1F) goto yy4; + if (yych == '\t') goto yy1206; + if (yych <= 0x1F) goto yy3; goto yy1350; } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } } else { if (yych <= 'Z') { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } else { if (yych <= '_') { - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy152; + goto yy3; } } } @@ -21191,41 +21189,41 @@ yy1379: if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy371; } else { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } } } else { if (yych <= '^') { if (yych <= 'Q') { - if (yych <= '@') goto yy194; - goto yy143; + if (yych <= '@') goto yy193; + goto yy142; } else { if (yych <= 'R') goto yy1357; - if (yych <= 'Z') goto yy143; - goto yy194; + if (yych <= 'Z') goto yy142; + goto yy193; } } else { if (yych <= 'q') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy193; + goto yy150; } else { if (yych <= 'r') goto yy1380; - if (yych <= 'z') goto yy151; - goto yy194; + if (yych <= 'z') goto yy150; + goto yy193; } } } @@ -21235,28 +21233,28 @@ yy1380: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { if (yych <= 'U') goto yy1358; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 't') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { if (yych <= 'u') goto yy1381; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -21266,24 +21264,24 @@ yy1381: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '_') { if (yych <= 'A') goto yy1359; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; + if (yych <= '`') goto yy3; if (yych <= 'a') goto yy1382; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'z') goto yy152; + goto yy3; } } yy1382: @@ -21292,35 +21290,35 @@ yy1382: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { if (yych <= 'R') goto yy1360; - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } else { if (yych == 'r') goto yy1383; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych <= 'z') goto yy153; + goto yy3; } } yy1383: YYDEBUG(1383, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy206; - if (yych == 'y') goto yy377; - goto yy155; + if (yych == 'Y') goto yy205; + if (yych == 'y') goto yy376; + goto yy154; yy1384: YYDEBUG(1384, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; yy1385: YYDEBUG(1385, *YYCURSOR); ++YYCURSOR; @@ -21356,28 +21354,28 @@ yy1387: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 21360 "ext/date/lib/parse_date.c" +#line 21358 "ext/date/lib/parse_date.c" yy1388: YYDEBUG(1388, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy141; goto yy1429; } } else { if (yych <= 'm') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { if (yych <= 'n') goto yy1429; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1389: @@ -21385,23 +21383,23 @@ yy1389: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych == 'I') goto yy1421; - if (yych <= 'T') goto yy142; + if (yych <= 'T') goto yy141; goto yy1422; } } else { if (yych <= 'i') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'h') goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + if (yych <= 'h') goto yy141; goto yy1421; } else { if (yych == 'u') goto yy1422; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1390: @@ -21409,23 +21407,23 @@ yy1390: yych = *++YYCURSOR; if (yych <= 'M') { if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych == 'D') goto yy1410; - if (yych <= 'L') goto yy142; + if (yych <= 'L') goto yy141; goto yy1411; } } else { if (yych <= 'd') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'c') goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + if (yych <= 'c') goto yy141; goto yy1410; } else { if (yych == 'm') goto yy1411; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1391: @@ -21433,22 +21431,22 @@ yy1391: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy141; goto yy1406; } } else { if (yych <= 'd') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { if (yych <= 'e') goto yy1406; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1392: @@ -21456,109 +21454,109 @@ yy1392: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy141; goto yy1402; } } else { if (yych <= 'd') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { if (yych <= 'e') goto yy1402; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1393: YYDEBUG(1393, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy1065; - goto yy57; + if (yych == '.') goto yy1064; + goto yy56; } else { if (yych <= '9') goto yy1396; - if (yych <= ':') goto yy1065; - goto yy57; + if (yych <= ':') goto yy1064; + goto yy56; } yy1394: YYDEBUG(1394, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy1065; - goto yy57; + if (yych == '.') goto yy1064; + goto yy56; } else { if (yych <= '4') goto yy1396; - if (yych == ':') goto yy1065; - goto yy57; + if (yych == ':') goto yy1064; + goto yy56; } yy1395: YYDEBUG(1395, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '.') goto yy1065; - if (yych == ':') goto yy1065; - goto yy57; + if (yych == '.') goto yy1064; + if (yych == ':') goto yy1064; + goto yy56; yy1396: YYDEBUG(1396, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy1065; - goto yy57; + if (yych == '.') goto yy1064; + goto yy56; } else { if (yych <= '5') goto yy1397; - if (yych == ':') goto yy1065; - goto yy57; + if (yych == ':') goto yy1064; + goto yy56; } yy1397: YYDEBUG(1397, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; - if (yych >= ':') goto yy57; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; YYDEBUG(1398, *YYCURSOR); yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1068; + if (yych <= '/') goto yy1067; if (yych <= '5') goto yy1399; if (yych <= '6') goto yy1400; - goto yy1068; + goto yy1067; yy1399: YYDEBUG(1399, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy57; + if (yych <= '/') goto yy56; if (yych <= '9') goto yy1401; - goto yy57; + goto yy56; yy1400: YYDEBUG(1400, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '0') goto yy57; + if (yych != '0') goto yy56; yy1401: YYDEBUG(1401, *YYCURSOR); yych = *++YYCURSOR; - goto yy1076; + goto yy1075; yy1402: YYDEBUG(1402, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'L') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'K') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'K') goto yy142; } } else { if (yych <= 'k') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 'l') goto yy1403; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1403: @@ -21566,21 +21564,21 @@ yy1403: yych = *++YYCURSOR; if (yych <= 'F') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'E') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'E') goto yy143; } } else { if (yych <= 'e') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { if (yych <= 'f') goto yy1404; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1404: @@ -21588,21 +21586,21 @@ yy1404: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy144; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { if (yych <= 't') goto yy1405; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1405: @@ -21610,33 +21608,33 @@ yy1405: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'H') goto yy1206; - if (yych == 'h') goto yy1206; - goto yy4; + if (yych <= 'H') goto yy1205; + if (yych == 'h') goto yy1205; + goto yy3; } yy1406: YYDEBUG(1406, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { - if (yych <= '(') goto yy167; - goto yy140; + if (yych <= '(') goto yy166; + goto yy139; } else { - if (yych <= '@') goto yy167; - if (yych <= 'R') goto yy143; + if (yych <= '@') goto yy166; + if (yych <= 'R') goto yy142; } } else { if (yych <= 'r') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy167; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy166; + goto yy142; } else { if (yych <= 's') goto yy1407; - if (yych <= 'z') goto yy143; - goto yy167; + if (yych <= 'z') goto yy142; + goto yy166; } } yy1407: @@ -21644,65 +21642,65 @@ yy1407: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy143; } } else { if (yych <= 'c') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { if (yych <= 'd') goto yy1408; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1408: YYDEBUG(1408, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; } else { if (yych <= '`') { - if (yych <= 'Z') goto yy145; - goto yy4; + if (yych <= 'Z') goto yy144; + goto yy3; } else { if (yych <= 'a') goto yy1409; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1409: YYDEBUG(1409, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'X') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'Y') goto yy173; - if (yych == 'y') goto yy173; - goto yy4; + if (yych <= 'Y') goto yy172; + if (yych == 'y') goto yy172; + goto yy3; } yy1410: YYDEBUG(1410, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; goto yy1418; } else { if (yych <= '`') { - if (yych <= 'Z') goto yy143; - goto yy4; + if (yych <= 'Z') goto yy142; + goto yy3; } else { if (yych <= 'a') goto yy1418; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1411: @@ -21710,21 +21708,21 @@ yy1411: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'N') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'N') goto yy142; } } else { if (yych <= 'n') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 'o') goto yy1412; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1412: @@ -21732,21 +21730,21 @@ yy1412: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy143; } } else { if (yych <= 'q') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { if (yych <= 'r') goto yy1413; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1413: @@ -21754,21 +21752,21 @@ yy1413: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy144; } } else { if (yych <= 'q') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { if (yych <= 'r') goto yy1414; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1414: @@ -21776,17 +21774,17 @@ yy1414: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych <= 'O') goto yy1415; - if (yych != 'o') goto yy4; + if (yych != 'o') goto yy3; } yy1415: YYDEBUG(1415, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'W') goto yy1416; - if (yych != 'w') goto yy57; + if (yych != 'w') goto yy56; yy1416: YYDEBUG(1416, *YYCURSOR); ++YYCURSOR; @@ -21803,38 +21801,38 @@ yy1417: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 21807 "ext/date/lib/parse_date.c" +#line 21805 "ext/date/lib/parse_date.c" yy1418: YYDEBUG(1418, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'Y') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'X') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy143; } } else { if (yych <= 'x') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { if (yych <= 'y') goto yy1419; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1419: YYDEBUG(1419, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '@') { - if (yych == ')') goto yy140; + if (yych == ')') goto yy139; } else { - if (yych <= 'Z') goto yy145; + if (yych <= 'Z') goto yy144; if (yych <= '`') goto yy1420; - if (yych <= 'z') goto yy145; + if (yych <= 'z') goto yy144; } yy1420: YYDEBUG(1420, *YYCURSOR); @@ -21847,29 +21845,29 @@ yy1420: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 21851 "ext/date/lib/parse_date.c" +#line 21849 "ext/date/lib/parse_date.c" yy1421: YYDEBUG(1421, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych <= 'Q') goto yy143; + if (yych <= 'Q') goto yy142; if (yych <= 'R') goto yy1427; goto yy1428; } } else { if (yych <= 'q') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 'r') goto yy1427; if (yych <= 's') goto yy1428; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1422: @@ -21877,21 +21875,21 @@ yy1422: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { - if (yych <= '(') goto yy167; - goto yy140; + if (yych <= '(') goto yy166; + goto yy139; } else { - if (yych <= '@') goto yy167; - if (yych <= 'Q') goto yy143; + if (yych <= '@') goto yy166; + if (yych <= 'Q') goto yy142; } } else { if (yych <= 'q') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy167; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy166; + goto yy142; } else { if (yych <= 'r') goto yy1423; - if (yych <= 'z') goto yy143; - goto yy167; + if (yych <= 'z') goto yy142; + goto yy166; } } yy1423: @@ -21899,21 +21897,21 @@ yy1423: yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'R') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy143; } } else { if (yych <= 'r') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { if (yych <= 's') goto yy1424; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1424: @@ -21921,21 +21919,21 @@ yy1424: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy144; } } else { if (yych <= 'c') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { if (yych <= 'd') goto yy1425; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1425: @@ -21943,39 +21941,39 @@ yy1425: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych <= 'A') goto yy1426; - if (yych != 'a') goto yy4; + if (yych != 'a') goto yy3; } yy1426: YYDEBUG(1426, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy173; - if (yych == 'y') goto yy173; - goto yy57; + if (yych == 'Y') goto yy172; + if (yych == 'y') goto yy172; + goto yy56; yy1427: YYDEBUG(1427, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy144; - goto yy1239; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy143; + goto yy1238; } } else { if (yych <= 'c') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'd') goto yy1239; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'd') goto yy1238; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1428: @@ -21984,21 +21982,21 @@ yy1428: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy4; - goto yy1105; + if (yych <= 0x08) goto yy3; + goto yy1104; } else { - if (yych == ' ') goto yy1105; - goto yy4; + if (yych == ' ') goto yy1104; + goto yy3; } } else { if (yych <= 'Z') { - if (yych <= ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy144; + if (yych <= ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy143; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1429: @@ -22006,21 +22004,21 @@ yy1429: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy142; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 't') goto yy1430; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1430: @@ -22028,22 +22026,22 @@ yy1430: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy144; - goto yy1239; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy143; + goto yy1238; } } else { if (yych <= 'g') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'h') goto yy1239; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'h') goto yy1238; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1431: @@ -22052,28 +22050,28 @@ yy1431: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { if (yych <= 'N') goto yy1429; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { if (yych <= 'n') goto yy1461; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -22084,38 +22082,38 @@ yy1432: if (yych <= 'T') { if (yych <= '.') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych == '-') goto yy148; - goto yy4; + if (yych == '-') goto yy147; + goto yy3; } } else { if (yych <= '@') { - if (yych <= '/') goto yy148; - goto yy4; + if (yych <= '/') goto yy147; + goto yy3; } else { if (yych == 'I') goto yy1421; - goto yy142; + goto yy141; } } } else { if (yych <= '`') { if (yych <= 'Z') { if (yych <= 'U') goto yy1422; - goto yy142; + goto yy141; } else { - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } } else { if (yych <= 't') { if (yych == 'i') goto yy1453; - goto yy147; + goto yy146; } else { if (yych <= 'u') goto yy1454; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -22126,38 +22124,38 @@ yy1433: if (yych <= 'L') { if (yych <= '.') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych == '-') goto yy148; - goto yy4; + if (yych == '-') goto yy147; + goto yy3; } } else { if (yych <= '@') { - if (yych <= '/') goto yy148; - goto yy4; + if (yych <= '/') goto yy147; + goto yy3; } else { if (yych == 'D') goto yy1410; - goto yy142; + goto yy141; } } } else { if (yych <= '`') { if (yych <= 'Z') { if (yych <= 'M') goto yy1411; - goto yy142; + goto yy141; } else { - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } } else { if (yych <= 'l') { if (yych == 'd') goto yy1444; - goto yy147; + goto yy146; } else { if (yych <= 'm') goto yy1445; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -22167,28 +22165,28 @@ yy1434: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { if (yych <= 'E') goto yy1406; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { if (yych <= 'e') goto yy1440; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -22198,28 +22196,28 @@ yy1435: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { if (yych <= 'E') goto yy1402; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { if (yych <= 'e') goto yy1436; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -22229,28 +22227,28 @@ yy1436: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'K') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'L') goto yy1403; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'k') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 'l') goto yy1437; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -22260,28 +22258,28 @@ yy1437: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'E') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { if (yych <= 'F') goto yy1404; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'e') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { if (yych <= 'f') goto yy1438; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -22291,28 +22289,28 @@ yy1438: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { if (yych <= 'T') goto yy1405; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { if (yych <= 't') goto yy1439; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'z') goto yy152; + goto yy3; } } } @@ -22322,22 +22320,22 @@ yy1439: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { - if (yych <= 'H') goto yy1206; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= 'H') goto yy1205; + if (yych == '_') goto yy147; + goto yy3; } else { - if (yych == 'h') goto yy1224; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych == 'h') goto yy1223; + if (yych <= 'z') goto yy153; + goto yy3; } } yy1440: @@ -22346,28 +22344,28 @@ yy1440: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy166; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy166; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'S') goto yy1407; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy166; + goto yy147; } else { if (yych <= 'r') { - if (yych <= '`') goto yy167; - goto yy151; + if (yych <= '`') goto yy166; + goto yy150; } else { if (yych <= 's') goto yy1441; - if (yych <= 'z') goto yy151; - goto yy167; + if (yych <= 'z') goto yy150; + goto yy166; } } } @@ -22377,28 +22375,28 @@ yy1441: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { if (yych <= 'D') goto yy1408; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { if (yych <= 'd') goto yy1442; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -22408,24 +22406,24 @@ yy1442: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '_') { if (yych <= 'A') goto yy1409; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; + if (yych <= '`') goto yy3; if (yych <= 'a') goto yy1443; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'z') goto yy152; + goto yy3; } } yy1443: @@ -22434,22 +22432,22 @@ yy1443: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { - if (yych <= 'Y') goto yy173; - if (yych == '_') goto yy148; - goto yy4; + if (yych <= 'Y') goto yy172; + if (yych == '_') goto yy147; + goto yy3; } else { - if (yych == 'y') goto yy186; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych == 'y') goto yy185; + if (yych <= 'z') goto yy153; + goto yy3; } } yy1444: @@ -22458,24 +22456,24 @@ yy1444: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '_') { if (yych <= 'A') goto yy1418; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; + if (yych <= '`') goto yy3; if (yych <= 'a') goto yy1451; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } yy1445: @@ -22484,28 +22482,28 @@ yy1445: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'O') goto yy1412; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'n') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 'o') goto yy1446; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -22515,28 +22513,28 @@ yy1446: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { if (yych <= 'R') goto yy1413; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { if (yych <= 'r') goto yy1447; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -22546,28 +22544,28 @@ yy1447: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { if (yych <= 'R') goto yy1414; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { if (yych <= 'r') goto yy1448; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'z') goto yy152; + goto yy3; } } } @@ -22577,41 +22575,41 @@ yy1448: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { if (yych <= 'O') goto yy1415; - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } else { if (yych == 'o') goto yy1449; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych <= 'z') goto yy153; + goto yy3; } } yy1449: YYDEBUG(1449, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'W') goto yy1416; - if (yych != 'w') goto yy155; + if (yych != 'w') goto yy154; YYDEBUG(1450, *YYCURSOR); yyaccept = 29; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { - goto yy154; + goto yy153; } if (yych <= '.') { - if (yych == '-') goto yy148; + if (yych == '-') goto yy147; goto yy1417; } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; + if (yych <= '/') goto yy147; + if (yych == '_') goto yy147; goto yy1417; } yy1451: @@ -22620,28 +22618,28 @@ yy1451: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { if (yych <= 'Y') goto yy1419; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'x') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { if (yych <= 'y') goto yy1452; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -22651,21 +22649,21 @@ yy1452: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy140; + if (yych == ')') goto yy139; goto yy1420; } else { if (yych == '.') goto yy1420; - goto yy148; + goto yy147; } } else { if (yych <= '^') { if (yych <= '@') goto yy1420; - if (yych <= 'Z') goto yy145; + if (yych <= 'Z') goto yy144; goto yy1420; } else { - if (yych <= '_') goto yy148; + if (yych <= '_') goto yy147; if (yych <= '`') goto yy1420; - if (yych <= 'z') goto yy153; + if (yych <= 'z') goto yy152; goto yy1420; } } @@ -22675,16 +22673,16 @@ yy1453: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { if (yych <= '/') { - if (yych <= '.') goto yy4; - goto yy148; + if (yych <= '.') goto yy3; + goto yy147; } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy142; goto yy1427; } } @@ -22692,19 +22690,19 @@ yy1453: if (yych <= '`') { if (yych <= 'Z') { if (yych <= 'S') goto yy1428; - goto yy143; + goto yy142; } else { - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } } else { if (yych <= 'r') { - if (yych <= 'q') goto yy151; + if (yych <= 'q') goto yy150; goto yy1459; } else { if (yych <= 's') goto yy1460; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -22714,28 +22712,28 @@ yy1454: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy166; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy166; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'R') goto yy1423; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy166; + goto yy147; } else { if (yych <= 'q') { - if (yych <= '`') goto yy167; - goto yy151; + if (yych <= '`') goto yy166; + goto yy150; } else { if (yych <= 'r') goto yy1455; - if (yych <= 'z') goto yy151; - goto yy167; + if (yych <= 'z') goto yy150; + goto yy166; } } } @@ -22745,28 +22743,28 @@ yy1455: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { if (yych <= 'S') goto yy1424; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'r') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { if (yych <= 's') goto yy1456; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -22776,28 +22774,28 @@ yy1456: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { if (yych <= 'D') goto yy1425; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { if (yych <= 'd') goto yy1457; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'z') goto yy152; + goto yy3; } } } @@ -22807,59 +22805,59 @@ yy1457: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '_') { if (yych <= 'A') goto yy1426; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; + if (yych <= '`') goto yy3; if (yych <= 'a') goto yy1458; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych <= 'z') goto yy153; + goto yy3; } } yy1458: YYDEBUG(1458, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy173; - if (yych == 'y') goto yy186; - goto yy155; + if (yych == 'Y') goto yy172; + if (yych == 'y') goto yy185; + goto yy154; yy1459: YYDEBUG(1459, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1239; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'D') goto yy1238; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'd') goto yy1268; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'd') goto yy1267; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -22869,27 +22867,27 @@ yy1460: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= ' ') { - if (yych == '\t') goto yy1105; - if (yych <= 0x1F) goto yy4; - goto yy1105; + if (yych == '\t') goto yy1104; + if (yych <= 0x1F) goto yy3; + goto yy1104; } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } } else { if (yych <= 'Z') { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } else { if (yych <= '_') { - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= '`') goto yy3; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -22899,28 +22897,28 @@ yy1461: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'T') goto yy1430; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 't') goto yy1462; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -22930,28 +22928,28 @@ yy1462: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'H') goto yy1239; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'H') goto yy1238; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'h') goto yy1268; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'h') goto yy1267; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -22960,23 +22958,23 @@ yy1463: yych = *++YYCURSOR; if (yych <= 'Y') { if (yych <= '@') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych == 'R') goto yy1475; - if (yych <= 'X') goto yy142; + if (yych <= 'X') goto yy141; goto yy1476; } } else { if (yych <= 'r') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'q') goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + if (yych <= 'q') goto yy141; goto yy1475; } else { if (yych == 'y') goto yy1476; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1464: @@ -22984,22 +22982,22 @@ yy1464: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'C') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'C') goto yy141; goto yy1469; } } else { if (yych <= 'c') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { if (yych <= 'd') goto yy1469; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1465: @@ -23007,21 +23005,21 @@ yy1465: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy141; } } else { if (yych <= 'm') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { if (yych <= 'n') goto yy1466; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1466: @@ -23029,37 +23027,37 @@ yy1466: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { - if (yych <= '(') goto yy167; - goto yy140; + if (yych <= '(') goto yy166; + goto yy139; } else { - if (yych <= '@') goto yy167; - if (yych <= 'C') goto yy143; + if (yych <= '@') goto yy166; + if (yych <= 'C') goto yy142; } } else { if (yych <= 'c') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy167; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy166; + goto yy142; } else { if (yych <= 'd') goto yy1467; - if (yych <= 'z') goto yy143; - goto yy167; + if (yych <= 'z') goto yy142; + goto yy166; } } yy1467: YYDEBUG(1467, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'A') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; } else { if (yych <= '`') { - if (yych <= 'Z') goto yy144; - goto yy4; + if (yych <= 'Z') goto yy143; + goto yy3; } else { if (yych <= 'a') goto yy1468; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1468: @@ -23067,22 +23065,22 @@ yy1468: yych = *++YYCURSOR; if (yych <= 'Y') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'X') goto yy145; - goto yy1236; + if (yych <= '@') goto yy3; + if (yych <= 'X') goto yy144; + goto yy1235; } } else { if (yych <= 'x') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { - if (yych <= 'y') goto yy1236; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'y') goto yy1235; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1469: @@ -23090,21 +23088,21 @@ yy1469: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy142; } } else { if (yych <= 'm') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 'n') goto yy1470; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1470: @@ -23112,21 +23110,21 @@ yy1470: yych = *++YYCURSOR; if (yych <= 'I') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'H') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'H') goto yy143; } } else { if (yych <= 'h') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { if (yych <= 'i') goto yy1471; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1471: @@ -23134,21 +23132,21 @@ yy1471: yych = *++YYCURSOR; if (yych <= 'G') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'F') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'F') goto yy144; } } else { if (yych <= 'f') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { if (yych <= 'g') goto yy1472; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1472: @@ -23156,17 +23154,17 @@ yy1472: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych <= 'H') goto yy1473; - if (yych != 'h') goto yy4; + if (yych != 'h') goto yy3; } yy1473: YYDEBUG(1473, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'T') goto yy1474; - if (yych != 't') goto yy57; + if (yych != 't') goto yy56; yy1474: YYDEBUG(1474, *YYCURSOR); yych = *++YYCURSOR; @@ -23178,39 +23176,39 @@ yy1475: if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; + if (yych <= ')') goto yy139; + goto yy193; } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; + if (yych <= '-') goto yy196; + if (yych <= '.') goto yy195; + goto yy193; } } } else { if (yych <= 'Z') { if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '9') goto yy195; + goto yy193; } else { if (yych == 'C') goto yy1477; - goto yy143; + goto yy142; } } else { if (yych <= 'b') { - if (yych <= '`') goto yy194; - goto yy143; + if (yych <= '`') goto yy193; + goto yy142; } else { if (yych <= 'c') goto yy1477; - if (yych <= 'z') goto yy143; - goto yy194; + if (yych <= 'z') goto yy142; + goto yy193; } } } @@ -23220,24 +23218,24 @@ yy1476: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy194; - goto yy196; + if (yych == '\t') goto yy195; + if (yych <= 0x1F) goto yy193; + goto yy195; } else { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy197; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy196; } } else { if (yych <= '@') { - if (yych == '/') goto yy194; - if (yych <= '9') goto yy196; - goto yy194; + if (yych == '/') goto yy193; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy143; - goto yy194; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy193; + if (yych <= 'z') goto yy142; + goto yy193; } } yy1477: @@ -23245,22 +23243,22 @@ yy1477: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy144; - goto yy396; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy143; + goto yy395; } } else { if (yych <= 'g') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'h') goto yy396; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'h') goto yy395; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1478: @@ -23270,38 +23268,38 @@ yy1478: if (yych <= 'X') { if (yych <= '.') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych == '-') goto yy148; - goto yy4; + if (yych == '-') goto yy147; + goto yy3; } } else { if (yych <= '@') { - if (yych <= '/') goto yy148; - goto yy4; + if (yych <= '/') goto yy147; + goto yy3; } else { if (yych == 'R') goto yy1475; - goto yy142; + goto yy141; } } } else { if (yych <= '`') { if (yych <= 'Z') { if (yych <= 'Y') goto yy1476; - goto yy142; + goto yy141; } else { - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } } else { if (yych <= 'x') { if (yych == 'r') goto yy1490; - goto yy147; + goto yy146; } else { if (yych <= 'y') goto yy1491; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -23311,28 +23309,28 @@ yy1479: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { if (yych <= 'D') goto yy1469; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'c') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { if (yych <= 'd') goto yy1484; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -23342,28 +23340,28 @@ yy1480: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { if (yych <= 'N') goto yy1466; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { if (yych <= 'n') goto yy1481; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -23373,28 +23371,28 @@ yy1481: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy167; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy166; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy167; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy166; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'D') goto yy1467; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy167; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy166; + goto yy147; } else { if (yych <= 'c') { - if (yych <= '`') goto yy167; - goto yy151; + if (yych <= '`') goto yy166; + goto yy150; } else { if (yych <= 'd') goto yy1482; - if (yych <= 'z') goto yy151; - goto yy167; + if (yych <= 'z') goto yy150; + goto yy166; } } } @@ -23404,24 +23402,24 @@ yy1482: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '_') { if (yych <= 'A') goto yy1468; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { - if (yych <= '`') goto yy4; + if (yych <= '`') goto yy3; if (yych <= 'a') goto yy1483; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } yy1483: @@ -23430,28 +23428,28 @@ yy1483: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { - if (yych <= 'Y') goto yy1236; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Y') goto yy1235; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'x') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { - if (yych <= 'y') goto yy1265; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'y') goto yy1264; + if (yych <= 'z') goto yy152; + goto yy3; } } } @@ -23461,28 +23459,28 @@ yy1484: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'N') goto yy1470; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 'n') goto yy1485; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -23492,28 +23490,28 @@ yy1485: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'H') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { if (yych <= 'I') goto yy1471; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'h') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { if (yych <= 'i') goto yy1486; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -23523,28 +23521,28 @@ yy1486: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'F') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { if (yych <= 'G') goto yy1472; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'f') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { if (yych <= 'g') goto yy1487; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'z') goto yy152; + goto yy3; } } } @@ -23554,41 +23552,41 @@ yy1487: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { if (yych <= 'H') goto yy1473; - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } else { if (yych == 'h') goto yy1488; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych <= 'z') goto yy153; + goto yy3; } } yy1488: YYDEBUG(1488, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'T') goto yy1474; - if (yych != 't') goto yy155; + if (yych != 't') goto yy154; YYDEBUG(1489, *YYCURSOR); yyaccept = 30; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { - goto yy154; + goto yy153; } if (yych <= '.') { - if (yych == '-') goto yy148; + if (yych == '-') goto yy147; goto yy1420; } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; + if (yych <= '/') goto yy147; + if (yych == '_') goto yy147; goto yy1420; } yy1490: @@ -23598,41 +23596,41 @@ yy1490: if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy371; } else { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } } } else { if (yych <= '^') { if (yych <= 'B') { - if (yych <= '@') goto yy194; - goto yy143; + if (yych <= '@') goto yy193; + goto yy142; } else { if (yych <= 'C') goto yy1477; - if (yych <= 'Z') goto yy143; - goto yy194; + if (yych <= 'Z') goto yy142; + goto yy193; } } else { if (yych <= 'b') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy193; + goto yy150; } else { if (yych <= 'c') goto yy1492; - if (yych <= 'z') goto yy151; - goto yy194; + if (yych <= 'z') goto yy150; + goto yy193; } } } @@ -23642,33 +23640,33 @@ yy1491: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= ' ') { - if (yych == '\t') goto yy196; - if (yych <= 0x1F) goto yy194; - goto yy196; + if (yych == '\t') goto yy195; + if (yych <= 0x1F) goto yy193; + goto yy195; } else { if (yych <= ')') { - if (yych <= '(') goto yy194; - goto yy140; + if (yych <= '(') goto yy193; + goto yy139; } else { - if (yych <= ',') goto yy194; - if (yych <= '-') goto yy372; - goto yy196; + if (yych <= ',') goto yy193; + if (yych <= '-') goto yy371; + goto yy195; } } } else { if (yych <= 'Z') { - if (yych <= '/') goto yy148; - if (yych <= '9') goto yy196; - if (yych <= '@') goto yy194; - goto yy143; + if (yych <= '/') goto yy147; + if (yych <= '9') goto yy195; + if (yych <= '@') goto yy193; + goto yy142; } else { if (yych <= '_') { - if (yych <= '^') goto yy194; - goto yy148; + if (yych <= '^') goto yy193; + goto yy147; } else { - if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy151; - goto yy194; + if (yych <= '`') goto yy193; + if (yych <= 'z') goto yy150; + goto yy193; } } } @@ -23678,28 +23676,28 @@ yy1492: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'H') goto yy396; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'H') goto yy395; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'h') goto yy407; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'h') goto yy406; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -23708,29 +23706,29 @@ yy1493: yych = *++YYCURSOR; if (yych <= 'W') { if (yych <= 'N') { - if (yych == ')') goto yy140; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == ')') goto yy139; + if (yych <= '@') goto yy3; + goto yy141; } else { if (yych <= 'O') goto yy1501; - if (yych <= 'U') goto yy142; + if (yych <= 'U') goto yy141; if (yych <= 'V') goto yy1502; goto yy1499; } } else { if (yych <= 'o') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - if (yych <= 'n') goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + if (yych <= 'n') goto yy141; goto yy1501; } else { if (yych <= 'v') { - if (yych <= 'u') goto yy142; + if (yych <= 'u') goto yy141; goto yy1502; } else { if (yych <= 'w') goto yy1499; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } } @@ -23739,22 +23737,22 @@ yy1494: yych = *++YYCURSOR; if (yych <= 'X') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'W') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'W') goto yy141; goto yy1498; } } else { if (yych <= 'w') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { if (yych <= 'x') goto yy1498; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1495: @@ -23762,21 +23760,21 @@ yy1495: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy141; } } else { if (yych <= 'm') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { if (yych <= 'n') goto yy1496; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1496: @@ -23784,21 +23782,21 @@ yy1496: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy142; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 't') goto yy1497; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1497: @@ -23806,22 +23804,22 @@ yy1497: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'G') goto yy144; - goto yy1239; + if (yych <= '@') goto yy3; + if (yych <= 'G') goto yy143; + goto yy1238; } } else { if (yych <= 'g') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { - if (yych <= 'h') goto yy1239; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'h') goto yy1238; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1498: @@ -23829,33 +23827,33 @@ yy1498: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy142; goto yy1428; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 't') goto yy1428; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1499: YYDEBUG(1499, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '@') { - if (yych == ')') goto yy140; + if (yych == ')') goto yy139; } else { - if (yych <= 'Z') goto yy143; + if (yych <= 'Z') goto yy142; if (yych <= '`') goto yy1500; - if (yych <= 'z') goto yy143; + if (yych <= 'z') goto yy142; } yy1500: YYDEBUG(1500, *YYCURSOR); @@ -23867,28 +23865,28 @@ yy1500: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 23871 "ext/date/lib/parse_date.c" +#line 23869 "ext/date/lib/parse_date.c" yy1501: YYDEBUG(1501, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'M') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'M') goto yy142; goto yy1507; } } else { if (yych <= 'm') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 'n') goto yy1507; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1502: @@ -23898,38 +23896,38 @@ yy1502: if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= ',') { - if (yych <= ')') goto yy140; - goto yy194; + if (yych <= ')') goto yy139; + goto yy193; } else { - if (yych <= '-') goto yy197; - if (yych <= '.') goto yy196; - goto yy194; + if (yych <= '-') goto yy196; + if (yych <= '.') goto yy195; + goto yy193; } } } else { if (yych <= 'Z') { if (yych <= '@') { - if (yych <= '9') goto yy196; - goto yy194; + if (yych <= '9') goto yy195; + goto yy193; } else { - if (yych != 'E') goto yy143; + if (yych != 'E') goto yy142; } } else { if (yych <= 'd') { - if (yych <= '`') goto yy194; - goto yy143; + if (yych <= '`') goto yy193; + goto yy142; } else { if (yych <= 'e') goto yy1503; - if (yych <= 'z') goto yy143; - goto yy194; + if (yych <= 'z') goto yy142; + goto yy193; } } } @@ -23938,21 +23936,21 @@ yy1503: yych = *++YYCURSOR; if (yych <= 'M') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'L') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'L') goto yy143; } } else { if (yych <= 'l') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { if (yych <= 'm') goto yy1504; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1504: @@ -23960,21 +23958,21 @@ yy1504: yych = *++YYCURSOR; if (yych <= 'B') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'A') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'A') goto yy144; } } else { if (yych <= 'a') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { if (yych <= 'b') goto yy1505; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1505: @@ -23982,27 +23980,27 @@ yy1505: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych <= 'E') goto yy1506; - if (yych != 'e') goto yy4; + if (yych != 'e') goto yy3; } yy1506: YYDEBUG(1506, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy206; - if (yych == 'r') goto yy206; - goto yy57; + if (yych == 'R') goto yy205; + if (yych == 'r') goto yy205; + goto yy56; yy1507: YYDEBUG(1507, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '@') { - if (yych == ')') goto yy140; + if (yych == ')') goto yy139; } else { - if (yych <= 'Z') goto yy144; + if (yych <= 'Z') goto yy143; if (yych <= '`') goto yy1508; - if (yych <= 'z') goto yy144; + if (yych <= 'z') goto yy143; } yy1508: YYDEBUG(1508, *YYCURSOR); @@ -24017,7 +24015,7 @@ yy1508: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 24021 "ext/date/lib/parse_date.c" +#line 24019 "ext/date/lib/parse_date.c" yy1509: YYDEBUG(1509, *YYCURSOR); yyaccept = 0; @@ -24025,20 +24023,20 @@ yy1509: if (yych <= 'V') { if (yych <= '.') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych == '-') goto yy148; - goto yy4; + if (yych == '-') goto yy147; + goto yy3; } } else { if (yych <= 'N') { - if (yych <= '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych <= '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } else { if (yych <= 'O') goto yy1501; - if (yych <= 'U') goto yy142; + if (yych <= 'U') goto yy141; goto yy1502; } } @@ -24046,22 +24044,22 @@ yy1509: if (yych <= 'n') { if (yych <= '^') { if (yych <= 'W') goto yy1499; - if (yych <= 'Z') goto yy142; - goto yy4; + if (yych <= 'Z') goto yy141; + goto yy3; } else { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } } else { if (yych <= 'v') { if (yych <= 'o') goto yy1516; - if (yych <= 'u') goto yy147; + if (yych <= 'u') goto yy146; goto yy1517; } else { if (yych <= 'w') goto yy1515; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -24071,28 +24069,28 @@ yy1510: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { if (yych <= 'X') goto yy1498; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'w') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { if (yych <= 'x') goto yy1514; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -24102,28 +24100,28 @@ yy1511: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { if (yych <= 'N') goto yy1496; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { if (yych <= 'n') goto yy1512; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -24133,28 +24131,28 @@ yy1512: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'T') goto yy1497; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 't') goto yy1513; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -24164,28 +24162,28 @@ yy1513: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { - if (yych <= 'H') goto yy1239; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'H') goto yy1238; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'g') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { - if (yych <= 'h') goto yy1268; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'h') goto yy1267; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -24195,28 +24193,28 @@ yy1514: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'T') goto yy1428; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 't') goto yy1460; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -24226,21 +24224,21 @@ yy1515: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy140; + if (yych == ')') goto yy139; goto yy1500; } else { if (yych == '.') goto yy1500; - goto yy148; + goto yy147; } } else { if (yych <= '^') { if (yych <= '@') goto yy1500; - if (yych <= 'Z') goto yy143; + if (yych <= 'Z') goto yy142; goto yy1500; } else { - if (yych <= '_') goto yy148; + if (yych <= '_') goto yy147; if (yych <= '`') goto yy1500; - if (yych <= 'z') goto yy151; + if (yych <= 'z') goto yy150; goto yy1500; } } @@ -24250,28 +24248,28 @@ yy1516: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'N') goto yy1507; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'm') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 'n') goto yy1522; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -24282,41 +24280,41 @@ yy1517: if (yych <= '9') { if (yych <= '(') { if (yych <= '\t') { - if (yych <= 0x08) goto yy194; - goto yy196; + if (yych <= 0x08) goto yy193; + goto yy195; } else { - if (yych == ' ') goto yy196; - goto yy194; + if (yych == ' ') goto yy195; + goto yy193; } } else { if (yych <= '-') { - if (yych <= ')') goto yy140; - if (yych <= ',') goto yy194; - goto yy372; + if (yych <= ')') goto yy139; + if (yych <= ',') goto yy193; + goto yy371; } else { - if (yych == '/') goto yy148; - goto yy196; + if (yych == '/') goto yy147; + goto yy195; } } } else { if (yych <= '^') { if (yych <= 'D') { - if (yych <= '@') goto yy194; - goto yy143; + if (yych <= '@') goto yy193; + goto yy142; } else { if (yych <= 'E') goto yy1503; - if (yych <= 'Z') goto yy143; - goto yy194; + if (yych <= 'Z') goto yy142; + goto yy193; } } else { if (yych <= 'd') { - if (yych <= '_') goto yy148; - if (yych <= '`') goto yy194; - goto yy151; + if (yych <= '_') goto yy147; + if (yych <= '`') goto yy193; + goto yy150; } else { if (yych <= 'e') goto yy1518; - if (yych <= 'z') goto yy151; - goto yy194; + if (yych <= 'z') goto yy150; + goto yy193; } } } @@ -24326,28 +24324,28 @@ yy1518: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { if (yych <= 'M') goto yy1504; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'l') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { if (yych <= 'm') goto yy1519; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -24357,28 +24355,28 @@ yy1519: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'A') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { if (yych <= 'B') goto yy1505; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'a') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { if (yych <= 'b') goto yy1520; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'z') goto yy152; + goto yy3; } } } @@ -24388,51 +24386,51 @@ yy1520: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { if (yych <= 'E') goto yy1506; - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } else { if (yych == 'e') goto yy1521; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych <= 'z') goto yy153; + goto yy3; } } yy1521: YYDEBUG(1521, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy206; - if (yych == 'r') goto yy377; - goto yy155; + if (yych == 'R') goto yy205; + if (yych == 'r') goto yy376; + goto yy154; yy1522: YYDEBUG(1522, *YYCURSOR); yyaccept = 32; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { - if (yych == ')') goto yy140; + if (yych == ')') goto yy139; goto yy1508; } else { if (yych == '.') goto yy1508; - goto yy148; + goto yy147; } } else { if (yych <= '^') { if (yych <= '@') goto yy1508; - if (yych <= 'Z') goto yy144; + if (yych <= 'Z') goto yy143; goto yy1508; } else { - if (yych <= '_') goto yy148; + if (yych <= '_') goto yy147; if (yych <= '`') goto yy1508; - if (yych <= 'z') goto yy152; + if (yych <= 'z') goto yy151; goto yy1508; } } @@ -24441,21 +24439,21 @@ yy1523: yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'R') goto yy142; + if (yych <= '@') goto yy3; + if (yych <= 'R') goto yy141; } } else { if (yych <= 'r') { - if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy4; - goto yy142; + if (yych <= 'Z') goto yy141; + if (yych <= '`') goto yy3; + goto yy141; } else { if (yych <= 's') goto yy1524; - if (yych <= 'z') goto yy142; - goto yy4; + if (yych <= 'z') goto yy141; + goto yy3; } } yy1524: @@ -24463,21 +24461,21 @@ yy1524: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'S') goto yy143; + if (yych <= '@') goto yy3; + if (yych <= 'S') goto yy142; } } else { if (yych <= 's') { - if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy4; - goto yy143; + if (yych <= 'Z') goto yy142; + if (yych <= '`') goto yy3; + goto yy142; } else { if (yych <= 't') goto yy1525; - if (yych <= 'z') goto yy143; - goto yy4; + if (yych <= 'z') goto yy142; + goto yy3; } } yy1525: @@ -24485,21 +24483,21 @@ yy1525: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'D') goto yy144; + if (yych <= '@') goto yy3; + if (yych <= 'D') goto yy143; } } else { if (yych <= 'd') { - if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy4; - goto yy144; + if (yych <= 'Z') goto yy143; + if (yych <= '`') goto yy3; + goto yy143; } else { if (yych <= 'e') goto yy1526; - if (yych <= 'z') goto yy144; - goto yy4; + if (yych <= 'z') goto yy143; + goto yy3; } } yy1526: @@ -24507,21 +24505,21 @@ yy1526: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { - if (yych <= '(') goto yy4; - goto yy140; + if (yych <= '(') goto yy3; + goto yy139; } else { - if (yych <= '@') goto yy4; - if (yych <= 'Q') goto yy145; + if (yych <= '@') goto yy3; + if (yych <= 'Q') goto yy144; } } else { if (yych <= 'q') { - if (yych <= 'Z') goto yy145; - if (yych <= '`') goto yy4; - goto yy145; + if (yych <= 'Z') goto yy144; + if (yych <= '`') goto yy3; + goto yy144; } else { if (yych <= 'r') goto yy1527; - if (yych <= 'z') goto yy145; - goto yy4; + if (yych <= 'z') goto yy144; + goto yy3; } } yy1527: @@ -24529,22 +24527,22 @@ yy1527: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { if (yych <= 'D') goto yy1528; - if (yych != 'd') goto yy4; + if (yych != 'd') goto yy3; } yy1528: YYDEBUG(1528, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'A') goto yy1529; - if (yych != 'a') goto yy57; + if (yych != 'a') goto yy56; yy1529: YYDEBUG(1529, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'Y') goto yy1530; - if (yych != 'y') goto yy57; + if (yych != 'y') goto yy56; yy1530: YYDEBUG(1530, *YYCURSOR); ++YYCURSOR; @@ -24561,35 +24559,35 @@ yy1531: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 24565 "ext/date/lib/parse_date.c" +#line 24563 "ext/date/lib/parse_date.c" yy1532: YYDEBUG(1532, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy142; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy141; } } else { if (yych <= '_') { if (yych <= 'S') goto yy1524; - if (yych <= 'Z') goto yy142; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy141; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'r') { - if (yych <= '`') goto yy4; - goto yy147; + if (yych <= '`') goto yy3; + goto yy146; } else { if (yych <= 's') goto yy1533; - if (yych <= 'z') goto yy147; - goto yy4; + if (yych <= 'z') goto yy146; + goto yy3; } } } @@ -24599,28 +24597,28 @@ yy1533: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy143; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy142; } } else { if (yych <= '_') { if (yych <= 'T') goto yy1525; - if (yych <= 'Z') goto yy143; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy142; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 's') { - if (yych <= '`') goto yy4; - goto yy151; + if (yych <= '`') goto yy3; + goto yy150; } else { if (yych <= 't') goto yy1534; - if (yych <= 'z') goto yy151; - goto yy4; + if (yych <= 'z') goto yy150; + goto yy3; } } } @@ -24630,28 +24628,28 @@ yy1534: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy144; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy143; } } else { if (yych <= '_') { if (yych <= 'E') goto yy1526; - if (yych <= 'Z') goto yy144; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy143; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'd') { - if (yych <= '`') goto yy4; - goto yy152; + if (yych <= '`') goto yy3; + goto yy151; } else { if (yych <= 'e') goto yy1535; - if (yych <= 'z') goto yy152; - goto yy4; + if (yych <= 'z') goto yy151; + goto yy3; } } } @@ -24661,28 +24659,28 @@ yy1535: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { if (yych <= '-') { - if (yych == ')') goto yy140; - if (yych <= ',') goto yy4; - goto yy148; + if (yych == ')') goto yy139; + if (yych <= ',') goto yy3; + goto yy147; } else { - if (yych == '/') goto yy148; - if (yych <= '@') goto yy4; - goto yy145; + if (yych == '/') goto yy147; + if (yych <= '@') goto yy3; + goto yy144; } } else { if (yych <= '_') { if (yych <= 'R') goto yy1527; - if (yych <= 'Z') goto yy145; - if (yych <= '^') goto yy4; - goto yy148; + if (yych <= 'Z') goto yy144; + if (yych <= '^') goto yy3; + goto yy147; } else { if (yych <= 'q') { - if (yych <= '`') goto yy4; - goto yy153; + if (yych <= '`') goto yy3; + goto yy152; } else { if (yych <= 'r') goto yy1536; - if (yych <= 'z') goto yy153; - goto yy4; + if (yych <= 'z') goto yy152; + goto yy3; } } } @@ -24692,45 +24690,45 @@ yy1536: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych <= ',') { - if (yych == ')') goto yy140; - goto yy4; + if (yych == ')') goto yy139; + goto yy3; } else { - if (yych == '.') goto yy4; - if (yych <= '/') goto yy148; - goto yy4; + if (yych == '.') goto yy3; + if (yych <= '/') goto yy147; + goto yy3; } } else { if (yych <= '`') { if (yych <= 'D') goto yy1528; - if (yych == '_') goto yy148; - goto yy4; + if (yych == '_') goto yy147; + goto yy3; } else { if (yych == 'd') goto yy1537; - if (yych <= 'z') goto yy154; - goto yy4; + if (yych <= 'z') goto yy153; + goto yy3; } } yy1537: YYDEBUG(1537, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'A') goto yy1529; - if (yych != 'a') goto yy155; + if (yych != 'a') goto yy154; YYDEBUG(1538, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'Y') goto yy1530; - if (yych != 'y') goto yy155; + if (yych != 'y') goto yy154; YYDEBUG(1539, *YYCURSOR); yyaccept = 33; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { - goto yy154; + goto yy153; } if (yych <= '.') { - if (yych == '-') goto yy148; + if (yych == '-') goto yy147; goto yy1531; } else { - if (yych <= '/') goto yy148; - if (yych == '_') goto yy148; + if (yych <= '/') goto yy147; + if (yych == '_') goto yy147; goto yy1531; } } diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re index 277935abec..760caea330 100644 --- a/ext/date/lib/parse_date.re +++ b/ext/date/lib/parse_date.re @@ -931,8 +931,8 @@ mssqltime = hour12 ":" minutelz ":" secondlz [:.] [0-9]+ meridian; isoweekday = year4 "-"? "W" weekofyear "-"? [0-7]; isoweek = year4 "-"? "W" weekofyear; exif = year4 ":" monthlz ":" daylz " " hour24lz ":" minutelz ":" secondlz; -firstdayof = 'first day of'?; -lastdayof = 'last day of'?; +firstdayof = 'first day of'; +lastdayof = 'last day of'; backof = 'back of ' hour24 space? meridian?; frontof = 'front of ' hour24 space? meridian?; diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h index c270eeb807..5423a58d26 100644 --- a/ext/date/lib/timezonedb.h +++ b/ext/date/lib/timezonedb.h @@ -1,587 +1,589 @@ -const timelib_tzdb_index_entry timezonedb_idx_builtin[580] = { +const timelib_tzdb_index_entry timezonedb_idx_builtin[582] = { { "Africa/Abidjan" , 0x000000 }, { "Africa/Accra" , 0x000055 }, - { "Africa/Addis_Ababa" , 0x0000FD }, - { "Africa/Algiers" , 0x000153 }, - { "Africa/Asmara" , 0x00027E }, - { "Africa/Asmera" , 0x0002D4 }, - { "Africa/Bamako" , 0x00032A }, - { "Africa/Bangui" , 0x000395 }, - { "Africa/Banjul" , 0x0003EA }, - { "Africa/Bissau" , 0x000461 }, - { "Africa/Blantyre" , 0x0004C7 }, - { "Africa/Brazzaville" , 0x00051C }, - { "Africa/Bujumbura" , 0x000571 }, - { "Africa/Cairo" , 0x0005B5 }, - { "Africa/Casablanca" , 0x00099C }, - { "Africa/Ceuta" , 0x000BFE }, - { "Africa/Conakry" , 0x000F05 }, - { "Africa/Dakar" , 0x000F70 }, - { "Africa/Dar_es_Salaam" , 0x000FD6 }, - { "Africa/Djibouti" , 0x001043 }, - { "Africa/Douala" , 0x001098 }, - { "Africa/El_Aaiun" , 0x0010ED }, - { "Africa/Freetown" , 0x001318 }, - { "Africa/Gaborone" , 0x001427 }, - { "Africa/Harare" , 0x001494 }, - { "Africa/Johannesburg" , 0x0014E9 }, - { "Africa/Juba" , 0x001557 }, - { "Africa/Kampala" , 0x00166A }, - { "Africa/Khartoum" , 0x0016E9 }, - { "Africa/Kigali" , 0x0017FC }, - { "Africa/Kinshasa" , 0x001851 }, - { "Africa/Lagos" , 0x0018AC }, - { "Africa/Libreville" , 0x001901 }, - { "Africa/Lome" , 0x001956 }, - { "Africa/Luanda" , 0x00199A }, - { "Africa/Lubumbashi" , 0x0019EF }, - { "Africa/Lusaka" , 0x001A4A }, - { "Africa/Malabo" , 0x001A9F }, - { "Africa/Maputo" , 0x001B05 }, - { "Africa/Maseru" , 0x001B5A }, - { "Africa/Mbabane" , 0x001BC2 }, - { "Africa/Mogadishu" , 0x001C18 }, - { "Africa/Monrovia" , 0x001C73 }, - { "Africa/Nairobi" , 0x001CD9 }, - { "Africa/Ndjamena" , 0x001D58 }, - { "Africa/Niamey" , 0x001DC4 }, - { "Africa/Nouakchott" , 0x001E37 }, - { "Africa/Ouagadougou" , 0x001EA2 }, - { "Africa/Porto-Novo" , 0x001EF7 }, - { "Africa/Sao_Tome" , 0x001F5D }, - { "Africa/Timbuktu" , 0x001FB2 }, - { "Africa/Tripoli" , 0x00201D }, - { "Africa/Tunis" , 0x002126 }, - { "Africa/Windhoek" , 0x002238 }, - { "America/Adak" , 0x00247F }, - { "America/Anchorage" , 0x0027F5 }, - { "America/Anguilla" , 0x002B69 }, - { "America/Antigua" , 0x002BBE }, - { "America/Araguaina" , 0x002C24 }, - { "America/Argentina/Buenos_Aires" , 0x002D89 }, - { "America/Argentina/Catamarca" , 0x002F37 }, - { "America/Argentina/ComodRivadavia" , 0x0030F8 }, - { "America/Argentina/Cordoba" , 0x00329E }, - { "America/Argentina/Jujuy" , 0x003473 }, - { "America/Argentina/La_Rioja" , 0x003627 }, - { "America/Argentina/Mendoza" , 0x0037DF }, - { "America/Argentina/Rio_Gallegos" , 0x00399F }, - { "America/Argentina/Salta" , 0x003B54 }, - { "America/Argentina/San_Juan" , 0x003D00 }, - { "America/Argentina/San_Luis" , 0x003EB8 }, - { "America/Argentina/Tucuman" , 0x00407E }, - { "America/Argentina/Ushuaia" , 0x00423A }, - { "America/Aruba" , 0x0043F5 }, - { "America/Asuncion" , 0x00445B }, - { "America/Atikokan" , 0x004740 }, - { "America/Atka" , 0x004816 }, - { "America/Bahia" , 0x004B7C }, - { "America/Bahia_Banderas" , 0x004D0F }, - { "America/Barbados" , 0x004F88 }, - { "America/Belem" , 0x005022 }, - { "America/Belize" , 0x00511D }, - { "America/Blanc-Sablon" , 0x005299 }, - { "America/Boa_Vista" , 0x00534D }, - { "America/Bogota" , 0x005456 }, - { "America/Boise" , 0x0054C2 }, - { "America/Buenos_Aires" , 0x005859 }, - { "America/Cambridge_Bay" , 0x0059F2 }, - { "America/Campo_Grande" , 0x005D1A }, - { "America/Cancun" , 0x006009 }, - { "America/Caracas" , 0x00624B }, - { "America/Catamarca" , 0x0062B2 }, - { "America/Cayenne" , 0x006458 }, - { "America/Cayman" , 0x0064BA }, - { "America/Chicago" , 0x00650F }, - { "America/Chihuahua" , 0x006A26 }, - { "America/Coral_Harbour" , 0x006C91 }, - { "America/Cordoba" , 0x006D23 }, - { "America/Costa_Rica" , 0x006EC9 }, - { "America/Creston" , 0x006F53 }, - { "America/Cuiaba" , 0x006FDF }, - { "America/Curacao" , 0x0072BD }, - { "America/Danmarkshavn" , 0x007323 }, - { "America/Dawson" , 0x007467 }, - { "America/Dawson_Creek" , 0x007784 }, - { "America/Denver" , 0x00795E }, - { "America/Detroit" , 0x007CE4 }, - { "America/Dominica" , 0x008043 }, - { "America/Edmonton" , 0x008098 }, - { "America/Eirunepe" , 0x008450 }, - { "America/El_Salvador" , 0x008568 }, - { "America/Ensenada" , 0x0085DD }, - { "America/Fort_Wayne" , 0x008A84 }, - { "America/Fortaleza" , 0x008946 }, - { "America/Glace_Bay" , 0x008CEE }, - { "America/Godthab" , 0x009065 }, - { "America/Goose_Bay" , 0x009329 }, - { "America/Grand_Turk" , 0x0097E6 }, - { "America/Grenada" , 0x009A95 }, - { "America/Guadeloupe" , 0x009AEA }, - { "America/Guatemala" , 0x009B3F }, - { "America/Guayaquil" , 0x009BC8 }, - { "America/Guyana" , 0x009C25 }, - { "America/Halifax" , 0x009CA6 }, - { "America/Havana" , 0x00A1BC }, - { "America/Hermosillo" , 0x00A52F }, - { "America/Indiana/Indianapolis" , 0x00A60D }, - { "America/Indiana/Knox" , 0x00A89E }, - { "America/Indiana/Marengo" , 0x00AC35 }, - { "America/Indiana/Petersburg" , 0x00AEDB }, - { "America/Indiana/Tell_City" , 0x00B428 }, - { "America/Indiana/Vevay" , 0x00B6C1 }, - { "America/Indiana/Vincennes" , 0x00B8FC }, - { "America/Indiana/Winamac" , 0x00BBB0 }, - { "America/Indianapolis" , 0x00B1BE }, - { "America/Inuvik" , 0x00BE69 }, - { "America/Iqaluit" , 0x00C160 }, - { "America/Jamaica" , 0x00C482 }, - { "America/Jujuy" , 0x00C547 }, - { "America/Juneau" , 0x00C6F1 }, - { "America/Kentucky/Louisville" , 0x00CA6F }, - { "America/Kentucky/Monticello" , 0x00CE8D }, - { "America/Knox_IN" , 0x00D212 }, - { "America/Kralendijk" , 0x00D583 }, - { "America/La_Paz" , 0x00D5E9 }, - { "America/Lima" , 0x00D650 }, - { "America/Los_Angeles" , 0x00D6F8 }, - { "America/Louisville" , 0x00DB09 }, - { "America/Lower_Princes" , 0x00DEFE }, - { "America/Maceio" , 0x00DF64 }, - { "America/Managua" , 0x00E09E }, - { "America/Manaus" , 0x00E151 }, - { "America/Marigot" , 0x00E253 }, - { "America/Martinique" , 0x00E2A8 }, - { "America/Matamoros" , 0x00E314 }, - { "America/Mazatlan" , 0x00E56D }, - { "America/Mendoza" , 0x00E7DA }, - { "America/Menominee" , 0x00E98E }, - { "America/Merida" , 0x00ED0F }, - { "America/Metlakatla" , 0x00EF4A }, - { "America/Mexico_City" , 0x00F084 }, - { "America/Miquelon" , 0x00F2FF }, - { "America/Moncton" , 0x00F571 }, - { "America/Monterrey" , 0x00FA08 }, - { "America/Montevideo" , 0x00FC6B }, - { "America/Montreal" , 0x00FF7D }, - { "America/Montserrat" , 0x01046D }, - { "America/Nassau" , 0x0104C2 }, - { "America/New_York" , 0x010807 }, - { "America/Nipigon" , 0x010D12 }, - { "America/Nome" , 0x011063 }, - { "America/Noronha" , 0x0113E1 }, - { "America/North_Dakota/Beulah" , 0x011511 }, - { "America/North_Dakota/Center" , 0x0118A5 }, - { "America/North_Dakota/New_Salem" , 0x011C39 }, - { "America/Ojinaga" , 0x011FE2 }, - { "America/Panama" , 0x012243 }, - { "America/Pangnirtung" , 0x012298 }, - { "America/Paramaribo" , 0x0125CE }, - { "America/Phoenix" , 0x012660 }, - { "America/Port-au-Prince" , 0x01271E }, - { "America/Port_of_Spain" , 0x012A42 }, - { "America/Porto_Acre" , 0x01293E }, - { "America/Porto_Velho" , 0x012A97 }, - { "America/Puerto_Rico" , 0x012B8D }, - { "America/Rainy_River" , 0x012BF8 }, - { "America/Rankin_Inlet" , 0x012F30 }, - { "America/Recife" , 0x013216 }, - { "America/Regina" , 0x013340 }, - { "America/Resolute" , 0x0134FE }, - { "America/Rio_Branco" , 0x0137EF }, - { "America/Rosario" , 0x0138F7 }, - { "America/Santa_Isabel" , 0x013A9D }, - { "America/Santarem" , 0x013E40 }, - { "America/Santiago" , 0x013F45 }, - { "America/Santo_Domingo" , 0x0142EE }, - { "America/Sao_Paulo" , 0x0143B4 }, - { "America/Scoresbysund" , 0x0146C3 }, - { "America/Shiprock" , 0x0149B1 }, - { "America/Sitka" , 0x014D2A }, - { "America/St_Barthelemy" , 0x0150B2 }, - { "America/St_Johns" , 0x015107 }, - { "America/St_Kitts" , 0x01565A }, - { "America/St_Lucia" , 0x0156AF }, - { "America/St_Thomas" , 0x015704 }, - { "America/St_Vincent" , 0x015759 }, - { "America/Swift_Current" , 0x0157AE }, - { "America/Tegucigalpa" , 0x0158CF }, - { "America/Thule" , 0x01594E }, - { "America/Thunder_Bay" , 0x015B95 }, - { "America/Tijuana" , 0x015EDE }, - { "America/Toronto" , 0x016277 }, - { "America/Tortola" , 0x016797 }, - { "America/Vancouver" , 0x0167EC }, - { "America/Virgin" , 0x016C29 }, - { "America/Whitehorse" , 0x016C7E }, - { "America/Winnipeg" , 0x016F9B }, - { "America/Yakutat" , 0x0173DB }, - { "America/Yellowknife" , 0x017746 }, - { "Antarctica/Casey" , 0x017A56 }, - { "Antarctica/Davis" , 0x017AF3 }, - { "Antarctica/DumontDUrville" , 0x017B94 }, - { "Antarctica/Macquarie" , 0x017C26 }, - { "Antarctica/Mawson" , 0x017E6D }, - { "Antarctica/McMurdo" , 0x017EE9 }, - { "Antarctica/Palmer" , 0x018294 }, - { "Antarctica/Rothera" , 0x0185B0 }, - { "Antarctica/South_Pole" , 0x018626 }, - { "Antarctica/Syowa" , 0x0189A4 }, - { "Antarctica/Troll" , 0x018A12 }, - { "Antarctica/Vostok" , 0x018BE4 }, - { "Arctic/Longyearbyen" , 0x018C55 }, - { "Asia/Aden" , 0x018F87 }, - { "Asia/Almaty" , 0x018FDC }, - { "Asia/Amman" , 0x01915B }, - { "Asia/Anadyr" , 0x019411 }, - { "Asia/Aqtau" , 0x0195F6 }, - { "Asia/Aqtobe" , 0x0197F5 }, - { "Asia/Ashgabat" , 0x0199AD }, - { "Asia/Ashkhabad" , 0x019ACA }, - { "Asia/Baghdad" , 0x019BE7 }, - { "Asia/Bahrain" , 0x019D5C }, - { "Asia/Baku" , 0x019DC2 }, - { "Asia/Bangkok" , 0x01A0AA }, - { "Asia/Beirut" , 0x01A0FF }, - { "Asia/Bishkek" , 0x01A40C }, - { "Asia/Brunei" , 0x01A5B8 }, - { "Asia/Calcutta" , 0x01A61A }, - { "Asia/Choibalsan" , 0x01A693 }, - { "Asia/Chongqing" , 0x01A80C }, - { "Asia/Chungking" , 0x01A8FB }, - { "Asia/Colombo" , 0x01A9AA }, - { "Asia/Dacca" , 0x01AA46 }, - { "Asia/Damascus" , 0x01AAEC }, - { "Asia/Dhaka" , 0x01AE3C }, - { "Asia/Dili" , 0x01AEE2 }, - { "Asia/Dubai" , 0x01AF6C }, - { "Asia/Dushanbe" , 0x01AFC1 }, - { "Asia/Gaza" , 0x01B0C4 }, - { "Asia/Harbin" , 0x01B417 }, - { "Asia/Hebron" , 0x01B4FE }, - { "Asia/Ho_Chi_Minh" , 0x01B85A }, - { "Asia/Hong_Kong" , 0x01B8D2 }, - { "Asia/Hovd" , 0x01BA94 }, - { "Asia/Irkutsk" , 0x01BC0C }, - { "Asia/Istanbul" , 0x01BDF2 }, - { "Asia/Jakarta" , 0x01C1DF }, - { "Asia/Jayapura" , 0x01C289 }, - { "Asia/Jerusalem" , 0x01C325 }, - { "Asia/Kabul" , 0x01C654 }, - { "Asia/Kamchatka" , 0x01C6A5 }, - { "Asia/Karachi" , 0x01C881 }, - { "Asia/Kashgar" , 0x01C936 }, - { "Asia/Kathmandu" , 0x01CA07 }, - { "Asia/Katmandu" , 0x01CA6D }, - { "Asia/Khandyga" , 0x01CAD3 }, - { "Asia/Kolkata" , 0x01CCF8 }, - { "Asia/Krasnoyarsk" , 0x01CD71 }, - { "Asia/Kuala_Lumpur" , 0x01CF59 }, - { "Asia/Kuching" , 0x01D016 }, - { "Asia/Kuwait" , 0x01D104 }, - { "Asia/Macao" , 0x01D159 }, - { "Asia/Macau" , 0x01D294 }, - { "Asia/Magadan" , 0x01D3CF }, - { "Asia/Makassar" , 0x01D5B1 }, - { "Asia/Manila" , 0x01D676 }, - { "Asia/Muscat" , 0x01D6FB }, - { "Asia/Nicosia" , 0x01D750 }, - { "Asia/Novokuznetsk" , 0x01DA38 }, - { "Asia/Novosibirsk" , 0x01DC3A }, - { "Asia/Omsk" , 0x01DE25 }, - { "Asia/Oral" , 0x01E00C }, - { "Asia/Phnom_Penh" , 0x01E1DC }, - { "Asia/Pontianak" , 0x01E254 }, - { "Asia/Pyongyang" , 0x01E316 }, - { "Asia/Qatar" , 0x01E383 }, - { "Asia/Qyzylorda" , 0x01E3E9 }, - { "Asia/Rangoon" , 0x01E5BF }, - { "Asia/Riyadh" , 0x01E637 }, - { "Asia/Saigon" , 0x01E68C }, - { "Asia/Sakhalin" , 0x01E704 }, - { "Asia/Samarkand" , 0x01E8FB }, - { "Asia/Seoul" , 0x01EA31 }, - { "Asia/Shanghai" , 0x01EAD5 }, - { "Asia/Singapore" , 0x01EBB5 }, - { "Asia/Taipei" , 0x01EC6C }, - { "Asia/Tashkent" , 0x01ED84 }, - { "Asia/Tbilisi" , 0x01EEB5 }, - { "Asia/Tehran" , 0x01F06F }, - { "Asia/Tel_Aviv" , 0x01F2DD }, - { "Asia/Thimbu" , 0x01F60C }, - { "Asia/Thimphu" , 0x01F672 }, - { "Asia/Tokyo" , 0x01F6D8 }, - { "Asia/Ujung_Pandang" , 0x01F761 }, - { "Asia/Ulaanbaatar" , 0x01F7DE }, - { "Asia/Ulan_Bator" , 0x01F939 }, - { "Asia/Urumqi" , 0x01FA86 }, - { "Asia/Ust-Nera" , 0x01FB4D }, - { "Asia/Vientiane" , 0x01FD52 }, - { "Asia/Vladivostok" , 0x01FDCA }, - { "Asia/Yakutsk" , 0x01FFAF }, - { "Asia/Yekaterinburg" , 0x020194 }, - { "Asia/Yerevan" , 0x02039F }, - { "Atlantic/Azores" , 0x02059F }, - { "Atlantic/Bermuda" , 0x020AA2 }, - { "Atlantic/Canary" , 0x020D83 }, - { "Atlantic/Cape_Verde" , 0x021059 }, - { "Atlantic/Faeroe" , 0x0210D2 }, - { "Atlantic/Faroe" , 0x021376 }, - { "Atlantic/Jan_Mayen" , 0x02161A }, - { "Atlantic/Madeira" , 0x02194C }, - { "Atlantic/Reykjavik" , 0x021E55 }, - { "Atlantic/South_Georgia" , 0x02200E }, - { "Atlantic/St_Helena" , 0x022220 }, - { "Atlantic/Stanley" , 0x022052 }, - { "Australia/ACT" , 0x022275 }, - { "Australia/Adelaide" , 0x022592 }, - { "Australia/Brisbane" , 0x0228BE }, - { "Australia/Broken_Hill" , 0x022985 }, - { "Australia/Canberra" , 0x022CC3 }, - { "Australia/Currie" , 0x022FE0 }, - { "Australia/Darwin" , 0x023313 }, - { "Australia/Eucla" , 0x023399 }, - { "Australia/Hobart" , 0x02346E }, - { "Australia/LHI" , 0x0237CC }, - { "Australia/Lindeman" , 0x023A67 }, - { "Australia/Lord_Howe" , 0x023B48 }, - { "Australia/Melbourne" , 0x023DF3 }, - { "Australia/North" , 0x024118 }, - { "Australia/NSW" , 0x02418C }, - { "Australia/Perth" , 0x0244A9 }, - { "Australia/Queensland" , 0x024581 }, - { "Australia/South" , 0x02462D }, - { "Australia/Sydney" , 0x02494A }, - { "Australia/Tasmania" , 0x024C87 }, - { "Australia/Victoria" , 0x024FCC }, - { "Australia/West" , 0x0252E9 }, - { "Australia/Yancowinna" , 0x02539F }, - { "Brazil/Acre" , 0x0256C1 }, - { "Brazil/DeNoronha" , 0x0257C5 }, - { "Brazil/East" , 0x0258E5 }, - { "Brazil/West" , 0x025BC2 }, - { "Canada/Atlantic" , 0x025CBA }, - { "Canada/Central" , 0x0261A2 }, - { "Canada/East-Saskatchewan" , 0x026AAC }, - { "Canada/Eastern" , 0x0265BC }, - { "Canada/Mountain" , 0x026C35 }, - { "Canada/Newfoundland" , 0x026FAB }, - { "Canada/Pacific" , 0x0274D6 }, - { "Canada/Saskatchewan" , 0x0278EF }, - { "Canada/Yukon" , 0x027A78 }, - { "CET" , 0x027D7B }, - { "Chile/Continental" , 0x028084 }, - { "Chile/EasterIsland" , 0x02841F }, - { "CST6CDT" , 0x028761 }, - { "Cuba" , 0x028AB2 }, - { "EET" , 0x028E25 }, - { "Egypt" , 0x0290D8 }, - { "Eire" , 0x0294BF }, - { "EST" , 0x0299D0 }, - { "EST5EDT" , 0x029A14 }, - { "Etc/GMT" , 0x029D65 }, - { "Etc/GMT+0" , 0x029E31 }, - { "Etc/GMT+1" , 0x029EBB }, - { "Etc/GMT+10" , 0x029F48 }, - { "Etc/GMT+11" , 0x029FD6 }, - { "Etc/GMT+12" , 0x02A064 }, - { "Etc/GMT+2" , 0x02A17F }, - { "Etc/GMT+3" , 0x02A20B }, - { "Etc/GMT+4" , 0x02A297 }, - { "Etc/GMT+5" , 0x02A323 }, - { "Etc/GMT+6" , 0x02A3AF }, - { "Etc/GMT+7" , 0x02A43B }, - { "Etc/GMT+8" , 0x02A4C7 }, - { "Etc/GMT+9" , 0x02A553 }, - { "Etc/GMT-0" , 0x029DED }, - { "Etc/GMT-1" , 0x029E75 }, - { "Etc/GMT-10" , 0x029F01 }, - { "Etc/GMT-11" , 0x029F8F }, - { "Etc/GMT-12" , 0x02A01D }, - { "Etc/GMT-13" , 0x02A0AB }, - { "Etc/GMT-14" , 0x02A0F2 }, - { "Etc/GMT-2" , 0x02A139 }, - { "Etc/GMT-3" , 0x02A1C5 }, - { "Etc/GMT-4" , 0x02A251 }, - { "Etc/GMT-5" , 0x02A2DD }, - { "Etc/GMT-6" , 0x02A369 }, - { "Etc/GMT-7" , 0x02A3F5 }, - { "Etc/GMT-8" , 0x02A481 }, - { "Etc/GMT-9" , 0x02A50D }, - { "Etc/GMT0" , 0x029DA9 }, - { "Etc/Greenwich" , 0x02A599 }, - { "Etc/UCT" , 0x02A5DD }, - { "Etc/Universal" , 0x02A621 }, - { "Etc/UTC" , 0x02A665 }, - { "Etc/Zulu" , 0x02A6A9 }, - { "Europe/Amsterdam" , 0x02A6ED }, - { "Europe/Andorra" , 0x02AB2B }, - { "Europe/Athens" , 0x02ADA7 }, - { "Europe/Belfast" , 0x02B0EA }, - { "Europe/Belgrade" , 0x02B621 }, - { "Europe/Berlin" , 0x02B8EA }, - { "Europe/Bratislava" , 0x02BC4E }, - { "Europe/Brussels" , 0x02BF80 }, - { "Europe/Bucharest" , 0x02C3B7 }, - { "Europe/Budapest" , 0x02C6E1 }, - { "Europe/Busingen" , 0x02CA54 }, - { "Europe/Chisinau" , 0x02CD0B }, - { "Europe/Copenhagen" , 0x02D099 }, - { "Europe/Dublin" , 0x02D3A3 }, - { "Europe/Gibraltar" , 0x02D8B4 }, - { "Europe/Guernsey" , 0x02DD0B }, - { "Europe/Helsinki" , 0x02E242 }, - { "Europe/Isle_of_Man" , 0x02E4F8 }, - { "Europe/Istanbul" , 0x02EA2F }, - { "Europe/Jersey" , 0x02EE1C }, - { "Europe/Kaliningrad" , 0x02F353 }, - { "Europe/Kiev" , 0x02F5B9 }, - { "Europe/Lisbon" , 0x02F8D5 }, - { "Europe/Ljubljana" , 0x02FDD9 }, - { "Europe/London" , 0x0300A2 }, - { "Europe/Luxembourg" , 0x0305D9 }, - { "Europe/Madrid" , 0x030A2F }, - { "Europe/Malta" , 0x030DF5 }, - { "Europe/Mariehamn" , 0x0311AE }, - { "Europe/Minsk" , 0x031464 }, - { "Europe/Monaco" , 0x031672 }, - { "Europe/Moscow" , 0x031AAD }, - { "Europe/Nicosia" , 0x031D02 }, - { "Europe/Oslo" , 0x031FEA }, - { "Europe/Paris" , 0x03231C }, - { "Europe/Podgorica" , 0x032762 }, - { "Europe/Prague" , 0x032A2B }, - { "Europe/Riga" , 0x032D5D }, - { "Europe/Rome" , 0x0330A2 }, - { "Europe/Samara" , 0x033465 }, - { "Europe/San_Marino" , 0x033698 }, - { "Europe/Sarajevo" , 0x033A5B }, - { "Europe/Simferopol" , 0x033D24 }, - { "Europe/Skopje" , 0x033F70 }, - { "Europe/Sofia" , 0x034239 }, - { "Europe/Stockholm" , 0x034541 }, - { "Europe/Tallinn" , 0x0347F0 }, - { "Europe/Tirane" , 0x034B2A }, - { "Europe/Tiraspol" , 0x034E30 }, - { "Europe/Uzhgorod" , 0x0351BE }, - { "Europe/Vaduz" , 0x0354D5 }, - { "Europe/Vatican" , 0x035784 }, - { "Europe/Vienna" , 0x035B47 }, - { "Europe/Vilnius" , 0x035E74 }, - { "Europe/Volgograd" , 0x0361B3 }, - { "Europe/Warsaw" , 0x0363B3 }, - { "Europe/Zagreb" , 0x036794 }, - { "Europe/Zaporozhye" , 0x036A5D }, - { "Europe/Zurich" , 0x036D9E }, - { "Factory" , 0x03704D }, - { "GB" , 0x0370BE }, - { "GB-Eire" , 0x0375F5 }, - { "GMT" , 0x037B2C }, - { "GMT+0" , 0x037BF8 }, - { "GMT-0" , 0x037BB4 }, - { "GMT0" , 0x037B70 }, - { "Greenwich" , 0x037C3C }, - { "Hongkong" , 0x037C80 }, - { "HST" , 0x037E42 }, - { "Iceland" , 0x037E86 }, - { "Indian/Antananarivo" , 0x03803F }, - { "Indian/Chagos" , 0x0380B3 }, - { "Indian/Christmas" , 0x038115 }, - { "Indian/Cocos" , 0x038159 }, - { "Indian/Comoro" , 0x03819D }, - { "Indian/Kerguelen" , 0x0381F2 }, - { "Indian/Mahe" , 0x038247 }, - { "Indian/Maldives" , 0x03829C }, - { "Indian/Mauritius" , 0x0382F1 }, - { "Indian/Mayotte" , 0x038367 }, - { "Indian/Reunion" , 0x0383BC }, - { "Iran" , 0x038411 }, - { "Israel" , 0x03867F }, - { "Jamaica" , 0x0389AE }, - { "Japan" , 0x038A73 }, - { "Kwajalein" , 0x038AFC }, - { "Libya" , 0x038B5F }, - { "MET" , 0x038C68 }, - { "Mexico/BajaNorte" , 0x038F71 }, - { "Mexico/BajaSur" , 0x0392DA }, - { "Mexico/General" , 0x03951F }, - { "MST" , 0x03977D }, - { "MST7MDT" , 0x0397C1 }, - { "Navajo" , 0x039B12 }, - { "NZ" , 0x039E8B }, - { "NZ-CHAT" , 0x03A209 }, - { "Pacific/Apia" , 0x03A4F1 }, - { "Pacific/Auckland" , 0x03A68D }, - { "Pacific/Chatham" , 0x03AA19 }, - { "Pacific/Chuuk" , 0x03AD10 }, - { "Pacific/Easter" , 0x03AD69 }, - { "Pacific/Efate" , 0x03B0C7 }, - { "Pacific/Enderbury" , 0x03B18D }, - { "Pacific/Fakaofo" , 0x03B1FB }, - { "Pacific/Fiji" , 0x03B24C }, - { "Pacific/Funafuti" , 0x03B3DF }, - { "Pacific/Galapagos" , 0x03B423 }, - { "Pacific/Gambier" , 0x03B49B }, - { "Pacific/Guadalcanal" , 0x03B500 }, - { "Pacific/Guam" , 0x03B555 }, - { "Pacific/Honolulu" , 0x03B5AB }, - { "Pacific/Johnston" , 0x03B622 }, - { "Pacific/Kiritimati" , 0x03B6A1 }, - { "Pacific/Kosrae" , 0x03B70C }, - { "Pacific/Kwajalein" , 0x03B769 }, - { "Pacific/Majuro" , 0x03B7D5 }, - { "Pacific/Marquesas" , 0x03B834 }, - { "Pacific/Midway" , 0x03B89B }, - { "Pacific/Nauru" , 0x03B925 }, - { "Pacific/Niue" , 0x03B99D }, - { "Pacific/Norfolk" , 0x03B9FB }, - { "Pacific/Noumea" , 0x03BA50 }, - { "Pacific/Pago_Pago" , 0x03BAE0 }, - { "Pacific/Palau" , 0x03BB69 }, - { "Pacific/Pitcairn" , 0x03BBAD }, - { "Pacific/Pohnpei" , 0x03BC02 }, - { "Pacific/Ponape" , 0x03BC57 }, - { "Pacific/Port_Moresby" , 0x03BC9C }, - { "Pacific/Rarotonga" , 0x03BCE0 }, - { "Pacific/Saipan" , 0x03BDBC }, - { "Pacific/Samoa" , 0x03BE1F }, - { "Pacific/Tahiti" , 0x03BEA8 }, - { "Pacific/Tarawa" , 0x03BF0D }, - { "Pacific/Tongatapu" , 0x03BF61 }, - { "Pacific/Truk" , 0x03BFED }, - { "Pacific/Wake" , 0x03C032 }, - { "Pacific/Wallis" , 0x03C082 }, - { "Pacific/Yap" , 0x03C0C6 }, - { "Poland" , 0x03C10B }, - { "Portugal" , 0x03C4EC }, - { "PRC" , 0x03C9E8 }, - { "PST8PDT" , 0x03CA99 }, - { "ROC" , 0x03CDEA }, - { "ROK" , 0x03CF02 }, - { "Singapore" , 0x03CFA6 }, - { "Turkey" , 0x03D05D }, - { "UCT" , 0x03D44A }, - { "Universal" , 0x03D48E }, - { "US/Alaska" , 0x03D4D2 }, - { "US/Aleutian" , 0x03D83B }, - { "US/Arizona" , 0x03DBA1 }, - { "US/Central" , 0x03DC2F }, - { "US/East-Indiana" , 0x03E639 }, - { "US/Eastern" , 0x03E13A }, - { "US/Hawaii" , 0x03E8A3 }, - { "US/Indiana-Starke" , 0x03E914 }, - { "US/Michigan" , 0x03EC85 }, - { "US/Mountain" , 0x03EFBC }, - { "US/Pacific" , 0x03F335 }, - { "US/Pacific-New" , 0x03F73A }, - { "US/Samoa" , 0x03FB3F }, - { "UTC" , 0x03FBC8 }, - { "W-SU" , 0x03FEBF }, - { "WET" , 0x03FC0C }, - { "Zulu" , 0x0400FD }, + { "Africa/Addis_Ababa" , 0x00019D }, + { "Africa/Algiers" , 0x0001F3 }, + { "Africa/Asmara" , 0x00031E }, + { "Africa/Asmera" , 0x000374 }, + { "Africa/Bamako" , 0x0003CA }, + { "Africa/Bangui" , 0x00041F }, + { "Africa/Banjul" , 0x000474 }, + { "Africa/Bissau" , 0x0004C9 }, + { "Africa/Blantyre" , 0x00052F }, + { "Africa/Brazzaville" , 0x000584 }, + { "Africa/Bujumbura" , 0x0005D9 }, + { "Africa/Cairo" , 0x00061D }, + { "Africa/Casablanca" , 0x000A04 }, + { "Africa/Ceuta" , 0x000C66 }, + { "Africa/Conakry" , 0x000F6D }, + { "Africa/Dakar" , 0x000FC2 }, + { "Africa/Dar_es_Salaam" , 0x001017 }, + { "Africa/Djibouti" , 0x001084 }, + { "Africa/Douala" , 0x0010D9 }, + { "Africa/El_Aaiun" , 0x00112E }, + { "Africa/Freetown" , 0x001359 }, + { "Africa/Gaborone" , 0x0013AE }, + { "Africa/Harare" , 0x00141B }, + { "Africa/Johannesburg" , 0x001470 }, + { "Africa/Juba" , 0x0014DE }, + { "Africa/Kampala" , 0x0015F1 }, + { "Africa/Khartoum" , 0x001670 }, + { "Africa/Kigali" , 0x001783 }, + { "Africa/Kinshasa" , 0x0017D8 }, + { "Africa/Lagos" , 0x001833 }, + { "Africa/Libreville" , 0x001888 }, + { "Africa/Lome" , 0x0018DD }, + { "Africa/Luanda" , 0x001932 }, + { "Africa/Lubumbashi" , 0x001987 }, + { "Africa/Lusaka" , 0x0019E2 }, + { "Africa/Malabo" , 0x001A37 }, + { "Africa/Maputo" , 0x001A9D }, + { "Africa/Maseru" , 0x001AF2 }, + { "Africa/Mbabane" , 0x001B5A }, + { "Africa/Mogadishu" , 0x001BB0 }, + { "Africa/Monrovia" , 0x001C0B }, + { "Africa/Nairobi" , 0x001C71 }, + { "Africa/Ndjamena" , 0x001CF0 }, + { "Africa/Niamey" , 0x001D5C }, + { "Africa/Nouakchott" , 0x001DCF }, + { "Africa/Ouagadougou" , 0x001E24 }, + { "Africa/Porto-Novo" , 0x001E79 }, + { "Africa/Sao_Tome" , 0x001EDF }, + { "Africa/Timbuktu" , 0x001F34 }, + { "Africa/Tripoli" , 0x001F89 }, + { "Africa/Tunis" , 0x002092 }, + { "Africa/Windhoek" , 0x0021A4 }, + { "America/Adak" , 0x0023EB }, + { "America/Anchorage" , 0x002761 }, + { "America/Anguilla" , 0x002AD5 }, + { "America/Antigua" , 0x002B2A }, + { "America/Araguaina" , 0x002B90 }, + { "America/Argentina/Buenos_Aires" , 0x002CF5 }, + { "America/Argentina/Catamarca" , 0x002EA3 }, + { "America/Argentina/ComodRivadavia" , 0x003064 }, + { "America/Argentina/Cordoba" , 0x00320A }, + { "America/Argentina/Jujuy" , 0x0033DF }, + { "America/Argentina/La_Rioja" , 0x003593 }, + { "America/Argentina/Mendoza" , 0x00374B }, + { "America/Argentina/Rio_Gallegos" , 0x00390B }, + { "America/Argentina/Salta" , 0x003AC0 }, + { "America/Argentina/San_Juan" , 0x003C6C }, + { "America/Argentina/San_Luis" , 0x003E24 }, + { "America/Argentina/Tucuman" , 0x003FEA }, + { "America/Argentina/Ushuaia" , 0x0041A6 }, + { "America/Aruba" , 0x004361 }, + { "America/Asuncion" , 0x0043C7 }, + { "America/Atikokan" , 0x0046AC }, + { "America/Atka" , 0x004782 }, + { "America/Bahia" , 0x004AE8 }, + { "America/Bahia_Banderas" , 0x004C7B }, + { "America/Barbados" , 0x004EF4 }, + { "America/Belem" , 0x004F8E }, + { "America/Belize" , 0x005089 }, + { "America/Blanc-Sablon" , 0x005205 }, + { "America/Boa_Vista" , 0x0052B9 }, + { "America/Bogota" , 0x0053C2 }, + { "America/Boise" , 0x00542E }, + { "America/Buenos_Aires" , 0x0057C5 }, + { "America/Cambridge_Bay" , 0x00595E }, + { "America/Campo_Grande" , 0x005C86 }, + { "America/Cancun" , 0x005F75 }, + { "America/Caracas" , 0x0061B7 }, + { "America/Catamarca" , 0x00621E }, + { "America/Cayenne" , 0x0063C4 }, + { "America/Cayman" , 0x006426 }, + { "America/Chicago" , 0x00647B }, + { "America/Chihuahua" , 0x006992 }, + { "America/Coral_Harbour" , 0x006BFD }, + { "America/Cordoba" , 0x006C8F }, + { "America/Costa_Rica" , 0x006E35 }, + { "America/Creston" , 0x006EBF }, + { "America/Cuiaba" , 0x006F4B }, + { "America/Curacao" , 0x007229 }, + { "America/Danmarkshavn" , 0x00728F }, + { "America/Dawson" , 0x0073D3 }, + { "America/Dawson_Creek" , 0x0076F0 }, + { "America/Denver" , 0x0078CA }, + { "America/Detroit" , 0x007C50 }, + { "America/Dominica" , 0x007FAF }, + { "America/Edmonton" , 0x008004 }, + { "America/Eirunepe" , 0x0083BC }, + { "America/El_Salvador" , 0x0084D4 }, + { "America/Ensenada" , 0x008549 }, + { "America/Fort_Wayne" , 0x0089F0 }, + { "America/Fortaleza" , 0x0088B2 }, + { "America/Glace_Bay" , 0x008C5A }, + { "America/Godthab" , 0x008FD1 }, + { "America/Goose_Bay" , 0x009295 }, + { "America/Grand_Turk" , 0x009752 }, + { "America/Grenada" , 0x009A01 }, + { "America/Guadeloupe" , 0x009A56 }, + { "America/Guatemala" , 0x009AAB }, + { "America/Guayaquil" , 0x009B34 }, + { "America/Guyana" , 0x009B91 }, + { "America/Halifax" , 0x009C12 }, + { "America/Havana" , 0x00A128 }, + { "America/Hermosillo" , 0x00A49B }, + { "America/Indiana/Indianapolis" , 0x00A579 }, + { "America/Indiana/Knox" , 0x00A80A }, + { "America/Indiana/Marengo" , 0x00ABA1 }, + { "America/Indiana/Petersburg" , 0x00AE47 }, + { "America/Indiana/Tell_City" , 0x00B394 }, + { "America/Indiana/Vevay" , 0x00B62D }, + { "America/Indiana/Vincennes" , 0x00B868 }, + { "America/Indiana/Winamac" , 0x00BB1C }, + { "America/Indianapolis" , 0x00B12A }, + { "America/Inuvik" , 0x00BDD5 }, + { "America/Iqaluit" , 0x00C0CC }, + { "America/Jamaica" , 0x00C3EE }, + { "America/Jujuy" , 0x00C4B3 }, + { "America/Juneau" , 0x00C65D }, + { "America/Kentucky/Louisville" , 0x00C9DB }, + { "America/Kentucky/Monticello" , 0x00CDF9 }, + { "America/Knox_IN" , 0x00D17E }, + { "America/Kralendijk" , 0x00D4EF }, + { "America/La_Paz" , 0x00D555 }, + { "America/Lima" , 0x00D5BC }, + { "America/Los_Angeles" , 0x00D664 }, + { "America/Louisville" , 0x00DA75 }, + { "America/Lower_Princes" , 0x00DE6A }, + { "America/Maceio" , 0x00DED0 }, + { "America/Managua" , 0x00E00A }, + { "America/Manaus" , 0x00E0BD }, + { "America/Marigot" , 0x00E1BF }, + { "America/Martinique" , 0x00E214 }, + { "America/Matamoros" , 0x00E280 }, + { "America/Mazatlan" , 0x00E4D9 }, + { "America/Mendoza" , 0x00E746 }, + { "America/Menominee" , 0x00E8FA }, + { "America/Merida" , 0x00EC7B }, + { "America/Metlakatla" , 0x00EEB6 }, + { "America/Mexico_City" , 0x00EFF1 }, + { "America/Miquelon" , 0x00F26C }, + { "America/Moncton" , 0x00F4DE }, + { "America/Monterrey" , 0x00F975 }, + { "America/Montevideo" , 0x00FBD8 }, + { "America/Montreal" , 0x00FEEA }, + { "America/Montserrat" , 0x0103DA }, + { "America/Nassau" , 0x01042F }, + { "America/New_York" , 0x010774 }, + { "America/Nipigon" , 0x010C7F }, + { "America/Nome" , 0x010FD0 }, + { "America/Noronha" , 0x01134E }, + { "America/North_Dakota/Beulah" , 0x01147E }, + { "America/North_Dakota/Center" , 0x011812 }, + { "America/North_Dakota/New_Salem" , 0x011BA6 }, + { "America/Ojinaga" , 0x011F4F }, + { "America/Panama" , 0x0121B0 }, + { "America/Pangnirtung" , 0x012205 }, + { "America/Paramaribo" , 0x01253B }, + { "America/Phoenix" , 0x0125CD }, + { "America/Port-au-Prince" , 0x01268B }, + { "America/Port_of_Spain" , 0x0129AF }, + { "America/Porto_Acre" , 0x0128AB }, + { "America/Porto_Velho" , 0x012A04 }, + { "America/Puerto_Rico" , 0x012AFA }, + { "America/Rainy_River" , 0x012B65 }, + { "America/Rankin_Inlet" , 0x012E9D }, + { "America/Recife" , 0x013183 }, + { "America/Regina" , 0x0132AD }, + { "America/Resolute" , 0x01346B }, + { "America/Rio_Branco" , 0x013753 }, + { "America/Rosario" , 0x01385B }, + { "America/Santa_Isabel" , 0x013A01 }, + { "America/Santarem" , 0x013DA4 }, + { "America/Santiago" , 0x013EA9 }, + { "America/Santo_Domingo" , 0x014252 }, + { "America/Sao_Paulo" , 0x014318 }, + { "America/Scoresbysund" , 0x014627 }, + { "America/Shiprock" , 0x014915 }, + { "America/Sitka" , 0x014C8E }, + { "America/St_Barthelemy" , 0x015016 }, + { "America/St_Johns" , 0x01506B }, + { "America/St_Kitts" , 0x0155BE }, + { "America/St_Lucia" , 0x015613 }, + { "America/St_Thomas" , 0x015668 }, + { "America/St_Vincent" , 0x0156BD }, + { "America/Swift_Current" , 0x015712 }, + { "America/Tegucigalpa" , 0x015833 }, + { "America/Thule" , 0x0158B2 }, + { "America/Thunder_Bay" , 0x015AF9 }, + { "America/Tijuana" , 0x015E42 }, + { "America/Toronto" , 0x0161DB }, + { "America/Tortola" , 0x0166FB }, + { "America/Vancouver" , 0x016750 }, + { "America/Virgin" , 0x016B8D }, + { "America/Whitehorse" , 0x016BE2 }, + { "America/Winnipeg" , 0x016EFF }, + { "America/Yakutat" , 0x01733F }, + { "America/Yellowknife" , 0x0176AA }, + { "Antarctica/Casey" , 0x0179BA }, + { "Antarctica/Davis" , 0x017A58 }, + { "Antarctica/DumontDUrville" , 0x017AF9 }, + { "Antarctica/Macquarie" , 0x017B8B }, + { "Antarctica/Mawson" , 0x017DD8 }, + { "Antarctica/McMurdo" , 0x017E54 }, + { "Antarctica/Palmer" , 0x0181FF }, + { "Antarctica/Rothera" , 0x01851B }, + { "Antarctica/South_Pole" , 0x018591 }, + { "Antarctica/Syowa" , 0x01890F }, + { "Antarctica/Troll" , 0x01897D }, + { "Antarctica/Vostok" , 0x018B4F }, + { "Arctic/Longyearbyen" , 0x018BC0 }, + { "Asia/Aden" , 0x018EF2 }, + { "Asia/Almaty" , 0x018F47 }, + { "Asia/Amman" , 0x0190C6 }, + { "Asia/Anadyr" , 0x01937C }, + { "Asia/Aqtau" , 0x01957E }, + { "Asia/Aqtobe" , 0x01977D }, + { "Asia/Ashgabat" , 0x019935 }, + { "Asia/Ashkhabad" , 0x019A52 }, + { "Asia/Baghdad" , 0x019B6F }, + { "Asia/Bahrain" , 0x019CE4 }, + { "Asia/Baku" , 0x019D4A }, + { "Asia/Bangkok" , 0x01A032 }, + { "Asia/Beirut" , 0x01A087 }, + { "Asia/Bishkek" , 0x01A394 }, + { "Asia/Brunei" , 0x01A540 }, + { "Asia/Calcutta" , 0x01A5A2 }, + { "Asia/Chita" , 0x01A61B }, + { "Asia/Choibalsan" , 0x01A830 }, + { "Asia/Chongqing" , 0x01A9A9 }, + { "Asia/Chungking" , 0x01AA49 }, + { "Asia/Colombo" , 0x01AAE9 }, + { "Asia/Dacca" , 0x01AB85 }, + { "Asia/Damascus" , 0x01AC2B }, + { "Asia/Dhaka" , 0x01AF7B }, + { "Asia/Dili" , 0x01B021 }, + { "Asia/Dubai" , 0x01B0AB }, + { "Asia/Dushanbe" , 0x01B100 }, + { "Asia/Gaza" , 0x01B203 }, + { "Asia/Harbin" , 0x01B556 }, + { "Asia/Hebron" , 0x01B5F6 }, + { "Asia/Ho_Chi_Minh" , 0x01B952 }, + { "Asia/Hong_Kong" , 0x01B9CA }, + { "Asia/Hovd" , 0x01BB8C }, + { "Asia/Irkutsk" , 0x01BD04 }, + { "Asia/Istanbul" , 0x01BEEF }, + { "Asia/Jakarta" , 0x01C2DC }, + { "Asia/Jayapura" , 0x01C386 }, + { "Asia/Jerusalem" , 0x01C423 }, + { "Asia/Kabul" , 0x01C752 }, + { "Asia/Kamchatka" , 0x01C7A3 }, + { "Asia/Karachi" , 0x01C99C }, + { "Asia/Kashgar" , 0x01CA51 }, + { "Asia/Kathmandu" , 0x01CAA6 }, + { "Asia/Katmandu" , 0x01CB0C }, + { "Asia/Khandyga" , 0x01CB72 }, + { "Asia/Kolkata" , 0x01CD9C }, + { "Asia/Krasnoyarsk" , 0x01CE15 }, + { "Asia/Kuala_Lumpur" , 0x01D002 }, + { "Asia/Kuching" , 0x01D0BF }, + { "Asia/Kuwait" , 0x01D1AD }, + { "Asia/Macao" , 0x01D202 }, + { "Asia/Macau" , 0x01D33D }, + { "Asia/Magadan" , 0x01D478 }, + { "Asia/Makassar" , 0x01D67C }, + { "Asia/Manila" , 0x01D741 }, + { "Asia/Muscat" , 0x01D7C6 }, + { "Asia/Nicosia" , 0x01D81B }, + { "Asia/Novokuznetsk" , 0x01DB03 }, + { "Asia/Novosibirsk" , 0x01DD23 }, + { "Asia/Omsk" , 0x01DF13 }, + { "Asia/Oral" , 0x01E0FF }, + { "Asia/Phnom_Penh" , 0x01E2CF }, + { "Asia/Pontianak" , 0x01E347 }, + { "Asia/Pyongyang" , 0x01E409 }, + { "Asia/Qatar" , 0x01E499 }, + { "Asia/Qyzylorda" , 0x01E4FF }, + { "Asia/Rangoon" , 0x01E6D5 }, + { "Asia/Riyadh" , 0x01E74D }, + { "Asia/Saigon" , 0x01E7A2 }, + { "Asia/Sakhalin" , 0x01E81A }, + { "Asia/Samarkand" , 0x01EA17 }, + { "Asia/Seoul" , 0x01EB4D }, + { "Asia/Shanghai" , 0x01EC14 }, + { "Asia/Singapore" , 0x01ECC0 }, + { "Asia/Srednekolymsk" , 0x01ED77 }, + { "Asia/Taipei" , 0x01EF77 }, + { "Asia/Tashkent" , 0x01F0A8 }, + { "Asia/Tbilisi" , 0x01F1D9 }, + { "Asia/Tehran" , 0x01F393 }, + { "Asia/Tel_Aviv" , 0x01F601 }, + { "Asia/Thimbu" , 0x01F930 }, + { "Asia/Thimphu" , 0x01F996 }, + { "Asia/Tokyo" , 0x01F9FC }, + { "Asia/Ujung_Pandang" , 0x01FA86 }, + { "Asia/Ulaanbaatar" , 0x01FB03 }, + { "Asia/Ulan_Bator" , 0x01FC5E }, + { "Asia/Urumqi" , 0x01FDAB }, + { "Asia/Ust-Nera" , 0x01FE0D }, + { "Asia/Vientiane" , 0x02001F }, + { "Asia/Vladivostok" , 0x020097 }, + { "Asia/Yakutsk" , 0x020281 }, + { "Asia/Yekaterinburg" , 0x02046B }, + { "Asia/Yerevan" , 0x02067B }, + { "Atlantic/Azores" , 0x02087B }, + { "Atlantic/Bermuda" , 0x020D7E }, + { "Atlantic/Canary" , 0x02105F }, + { "Atlantic/Cape_Verde" , 0x021335 }, + { "Atlantic/Faeroe" , 0x0213AE }, + { "Atlantic/Faroe" , 0x021652 }, + { "Atlantic/Jan_Mayen" , 0x0218F6 }, + { "Atlantic/Madeira" , 0x021C28 }, + { "Atlantic/Reykjavik" , 0x022131 }, + { "Atlantic/South_Georgia" , 0x0222EA }, + { "Atlantic/St_Helena" , 0x0224FC }, + { "Atlantic/Stanley" , 0x02232E }, + { "Australia/ACT" , 0x022551 }, + { "Australia/Adelaide" , 0x022874 }, + { "Australia/Brisbane" , 0x022BA6 }, + { "Australia/Broken_Hill" , 0x022C73 }, + { "Australia/Canberra" , 0x022FB7 }, + { "Australia/Currie" , 0x0232DA }, + { "Australia/Darwin" , 0x023613 }, + { "Australia/Eucla" , 0x02369F }, + { "Australia/Hobart" , 0x02377B }, + { "Australia/LHI" , 0x023ADF }, + { "Australia/Lindeman" , 0x023D80 }, + { "Australia/Lord_Howe" , 0x023E67 }, + { "Australia/Melbourne" , 0x024118 }, + { "Australia/North" , 0x024443 }, + { "Australia/NSW" , 0x0244BD }, + { "Australia/Perth" , 0x0247E0 }, + { "Australia/Queensland" , 0x0248BE }, + { "Australia/South" , 0x024970 }, + { "Australia/Sydney" , 0x024C93 }, + { "Australia/Tasmania" , 0x024FD6 }, + { "Australia/Victoria" , 0x025321 }, + { "Australia/West" , 0x025644 }, + { "Australia/Yancowinna" , 0x025700 }, + { "Brazil/Acre" , 0x025A28 }, + { "Brazil/DeNoronha" , 0x025B2C }, + { "Brazil/East" , 0x025C4C }, + { "Brazil/West" , 0x025F29 }, + { "Canada/Atlantic" , 0x026021 }, + { "Canada/Central" , 0x026509 }, + { "Canada/East-Saskatchewan" , 0x026E13 }, + { "Canada/Eastern" , 0x026923 }, + { "Canada/Mountain" , 0x026F9C }, + { "Canada/Newfoundland" , 0x027312 }, + { "Canada/Pacific" , 0x02783D }, + { "Canada/Saskatchewan" , 0x027C56 }, + { "Canada/Yukon" , 0x027DDF }, + { "CET" , 0x0280E2 }, + { "Chile/Continental" , 0x0283EB }, + { "Chile/EasterIsland" , 0x028786 }, + { "CST6CDT" , 0x028AC8 }, + { "Cuba" , 0x028E19 }, + { "EET" , 0x02918C }, + { "Egypt" , 0x02943F }, + { "Eire" , 0x029826 }, + { "EST" , 0x029D37 }, + { "EST5EDT" , 0x029D7B }, + { "Etc/GMT" , 0x02A0CC }, + { "Etc/GMT+0" , 0x02A198 }, + { "Etc/GMT+1" , 0x02A222 }, + { "Etc/GMT+10" , 0x02A2AF }, + { "Etc/GMT+11" , 0x02A33D }, + { "Etc/GMT+12" , 0x02A3CB }, + { "Etc/GMT+2" , 0x02A4E6 }, + { "Etc/GMT+3" , 0x02A572 }, + { "Etc/GMT+4" , 0x02A5FE }, + { "Etc/GMT+5" , 0x02A68A }, + { "Etc/GMT+6" , 0x02A716 }, + { "Etc/GMT+7" , 0x02A7A2 }, + { "Etc/GMT+8" , 0x02A82E }, + { "Etc/GMT+9" , 0x02A8BA }, + { "Etc/GMT-0" , 0x02A154 }, + { "Etc/GMT-1" , 0x02A1DC }, + { "Etc/GMT-10" , 0x02A268 }, + { "Etc/GMT-11" , 0x02A2F6 }, + { "Etc/GMT-12" , 0x02A384 }, + { "Etc/GMT-13" , 0x02A412 }, + { "Etc/GMT-14" , 0x02A459 }, + { "Etc/GMT-2" , 0x02A4A0 }, + { "Etc/GMT-3" , 0x02A52C }, + { "Etc/GMT-4" , 0x02A5B8 }, + { "Etc/GMT-5" , 0x02A644 }, + { "Etc/GMT-6" , 0x02A6D0 }, + { "Etc/GMT-7" , 0x02A75C }, + { "Etc/GMT-8" , 0x02A7E8 }, + { "Etc/GMT-9" , 0x02A874 }, + { "Etc/GMT0" , 0x02A110 }, + { "Etc/Greenwich" , 0x02A900 }, + { "Etc/UCT" , 0x02A944 }, + { "Etc/Universal" , 0x02A988 }, + { "Etc/UTC" , 0x02A9CC }, + { "Etc/Zulu" , 0x02AA10 }, + { "Europe/Amsterdam" , 0x02AA54 }, + { "Europe/Andorra" , 0x02AE92 }, + { "Europe/Athens" , 0x02B10E }, + { "Europe/Belfast" , 0x02B451 }, + { "Europe/Belgrade" , 0x02B988 }, + { "Europe/Berlin" , 0x02BC51 }, + { "Europe/Bratislava" , 0x02BFB5 }, + { "Europe/Brussels" , 0x02C2E7 }, + { "Europe/Bucharest" , 0x02C71E }, + { "Europe/Budapest" , 0x02CA48 }, + { "Europe/Busingen" , 0x02CDB1 }, + { "Europe/Chisinau" , 0x02D068 }, + { "Europe/Copenhagen" , 0x02D3F6 }, + { "Europe/Dublin" , 0x02D700 }, + { "Europe/Gibraltar" , 0x02DC11 }, + { "Europe/Guernsey" , 0x02E068 }, + { "Europe/Helsinki" , 0x02E59F }, + { "Europe/Isle_of_Man" , 0x02E855 }, + { "Europe/Istanbul" , 0x02ED8C }, + { "Europe/Jersey" , 0x02F179 }, + { "Europe/Kaliningrad" , 0x02F6B0 }, + { "Europe/Kiev" , 0x02F91B }, + { "Europe/Lisbon" , 0x02FC37 }, + { "Europe/Ljubljana" , 0x03013B }, + { "Europe/London" , 0x030404 }, + { "Europe/Luxembourg" , 0x03093B }, + { "Europe/Madrid" , 0x030D91 }, + { "Europe/Malta" , 0x031157 }, + { "Europe/Mariehamn" , 0x031510 }, + { "Europe/Minsk" , 0x0317C6 }, + { "Europe/Monaco" , 0x0319D4 }, + { "Europe/Moscow" , 0x031E0F }, + { "Europe/Nicosia" , 0x032069 }, + { "Europe/Oslo" , 0x032351 }, + { "Europe/Paris" , 0x032683 }, + { "Europe/Podgorica" , 0x032AC9 }, + { "Europe/Prague" , 0x032D92 }, + { "Europe/Riga" , 0x0330C4 }, + { "Europe/Rome" , 0x033409 }, + { "Europe/Samara" , 0x0337CC }, + { "Europe/San_Marino" , 0x033A35 }, + { "Europe/Sarajevo" , 0x033DF8 }, + { "Europe/Simferopol" , 0x0340C1 }, + { "Europe/Skopje" , 0x034312 }, + { "Europe/Sofia" , 0x0345DB }, + { "Europe/Stockholm" , 0x0348E3 }, + { "Europe/Tallinn" , 0x034B92 }, + { "Europe/Tirane" , 0x034ECC }, + { "Europe/Tiraspol" , 0x0351D2 }, + { "Europe/Uzhgorod" , 0x035560 }, + { "Europe/Vaduz" , 0x035877 }, + { "Europe/Vatican" , 0x035B26 }, + { "Europe/Vienna" , 0x035EE9 }, + { "Europe/Vilnius" , 0x036216 }, + { "Europe/Volgograd" , 0x036555 }, + { "Europe/Warsaw" , 0x036776 }, + { "Europe/Zagreb" , 0x036B57 }, + { "Europe/Zaporozhye" , 0x036E20 }, + { "Europe/Zurich" , 0x037161 }, + { "Factory" , 0x037410 }, + { "GB" , 0x037481 }, + { "GB-Eire" , 0x0379B8 }, + { "GMT" , 0x037EEF }, + { "GMT+0" , 0x037FBB }, + { "GMT-0" , 0x037F77 }, + { "GMT0" , 0x037F33 }, + { "Greenwich" , 0x037FFF }, + { "Hongkong" , 0x038043 }, + { "HST" , 0x038205 }, + { "Iceland" , 0x038249 }, + { "Indian/Antananarivo" , 0x038402 }, + { "Indian/Chagos" , 0x038476 }, + { "Indian/Christmas" , 0x0384D8 }, + { "Indian/Cocos" , 0x03851C }, + { "Indian/Comoro" , 0x038560 }, + { "Indian/Kerguelen" , 0x0385B5 }, + { "Indian/Mahe" , 0x03860A }, + { "Indian/Maldives" , 0x03865F }, + { "Indian/Mauritius" , 0x0386B4 }, + { "Indian/Mayotte" , 0x03872A }, + { "Indian/Reunion" , 0x03877F }, + { "Iran" , 0x0387D4 }, + { "Israel" , 0x038A42 }, + { "Jamaica" , 0x038D71 }, + { "Japan" , 0x038E36 }, + { "Kwajalein" , 0x038EC0 }, + { "Libya" , 0x038F23 }, + { "MET" , 0x03902C }, + { "Mexico/BajaNorte" , 0x039335 }, + { "Mexico/BajaSur" , 0x03969E }, + { "Mexico/General" , 0x0398E3 }, + { "MST" , 0x039B41 }, + { "MST7MDT" , 0x039B85 }, + { "Navajo" , 0x039ED6 }, + { "NZ" , 0x03A24F }, + { "NZ-CHAT" , 0x03A5CD }, + { "Pacific/Apia" , 0x03A8B1 }, + { "Pacific/Auckland" , 0x03AA4D }, + { "Pacific/Chatham" , 0x03ADD9 }, + { "Pacific/Chuuk" , 0x03B0CC }, + { "Pacific/Easter" , 0x03B125 }, + { "Pacific/Efate" , 0x03B474 }, + { "Pacific/Enderbury" , 0x03B53A }, + { "Pacific/Fakaofo" , 0x03B5A8 }, + { "Pacific/Fiji" , 0x03B5F9 }, + { "Pacific/Funafuti" , 0x03B78C }, + { "Pacific/Galapagos" , 0x03B7D0 }, + { "Pacific/Gambier" , 0x03B848 }, + { "Pacific/Guadalcanal" , 0x03B8AD }, + { "Pacific/Guam" , 0x03B902 }, + { "Pacific/Honolulu" , 0x03B958 }, + { "Pacific/Johnston" , 0x03B9CF }, + { "Pacific/Kiritimati" , 0x03BA4E }, + { "Pacific/Kosrae" , 0x03BAB9 }, + { "Pacific/Kwajalein" , 0x03BB16 }, + { "Pacific/Majuro" , 0x03BB82 }, + { "Pacific/Marquesas" , 0x03BBE1 }, + { "Pacific/Midway" , 0x03BC48 }, + { "Pacific/Nauru" , 0x03BCD2 }, + { "Pacific/Niue" , 0x03BD4A }, + { "Pacific/Norfolk" , 0x03BDA8 }, + { "Pacific/Noumea" , 0x03BDFD }, + { "Pacific/Pago_Pago" , 0x03BE8D }, + { "Pacific/Palau" , 0x03BF04 }, + { "Pacific/Pitcairn" , 0x03BF48 }, + { "Pacific/Pohnpei" , 0x03BF9D }, + { "Pacific/Ponape" , 0x03BFF2 }, + { "Pacific/Port_Moresby" , 0x03C037 }, + { "Pacific/Rarotonga" , 0x03C07B }, + { "Pacific/Saipan" , 0x03C157 }, + { "Pacific/Samoa" , 0x03C1BA }, + { "Pacific/Tahiti" , 0x03C231 }, + { "Pacific/Tarawa" , 0x03C296 }, + { "Pacific/Tongatapu" , 0x03C2EA }, + { "Pacific/Truk" , 0x03C376 }, + { "Pacific/Wake" , 0x03C3BB }, + { "Pacific/Wallis" , 0x03C40B }, + { "Pacific/Yap" , 0x03C44F }, + { "Poland" , 0x03C494 }, + { "Portugal" , 0x03C875 }, + { "PRC" , 0x03CD71 }, + { "PST8PDT" , 0x03CE11 }, + { "ROC" , 0x03D162 }, + { "ROK" , 0x03D293 }, + { "Singapore" , 0x03D35A }, + { "Turkey" , 0x03D411 }, + { "UCT" , 0x03D7FE }, + { "Universal" , 0x03D842 }, + { "US/Alaska" , 0x03D886 }, + { "US/Aleutian" , 0x03DBEF }, + { "US/Arizona" , 0x03DF55 }, + { "US/Central" , 0x03DFE3 }, + { "US/East-Indiana" , 0x03E9ED }, + { "US/Eastern" , 0x03E4EE }, + { "US/Hawaii" , 0x03EC57 }, + { "US/Indiana-Starke" , 0x03ECC8 }, + { "US/Michigan" , 0x03F039 }, + { "US/Mountain" , 0x03F370 }, + { "US/Pacific" , 0x03F6E9 }, + { "US/Pacific-New" , 0x03FAEE }, + { "US/Samoa" , 0x03FEF3 }, + { "UTC" , 0x03FF6A }, + { "W-SU" , 0x040261 }, + { "WET" , 0x03FFAE }, + { "Zulu" , 0x0404A4 }, }; /* This is a generated file, do not modify */ -const unsigned char timelib_timezone_db_data_builtin[262465] = { +const unsigned char timelib_timezone_db_data_builtin[263400] = { /* Africa/Abidjan */ @@ -595,11 +597,21 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Africa/Accra */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x9E, 0x30, 0x66, 0xB4, +0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x9E, 0x30, 0x66, 0xB4, +0xA3, 0x34, 0x7B, 0x80, 0xA3, 0xD3, 0xFC, 0x50, 0xA5, 0x15, 0xAF, 0x00, 0xA5, 0xB5, 0x2F, 0xD0, +0xA6, 0xF6, 0xE2, 0x80, 0xA7, 0x96, 0x63, 0x50, 0xA8, 0xD8, 0x16, 0x00, 0xA9, 0x77, 0x96, 0xD0, +0xAA, 0xBA, 0x9B, 0x00, 0xAB, 0x5A, 0x1B, 0xD0, 0xAC, 0x9B, 0xCE, 0x80, 0xAD, 0x3B, 0x4F, 0x50, +0xAE, 0x7D, 0x02, 0x00, 0xAF, 0x1C, 0x82, 0xD0, 0xB0, 0x5E, 0x35, 0x80, 0xB0, 0xFD, 0xB6, 0x50, +0xB2, 0x40, 0xBA, 0x80, 0xB2, 0xE0, 0x3B, 0x50, 0xB4, 0x21, 0xEE, 0x00, 0xB4, 0xC1, 0x6E, 0xD0, +0xB6, 0x03, 0x21, 0x80, 0xB6, 0xA2, 0xA2, 0x50, 0xB7, 0xE4, 0x55, 0x00, 0xB8, 0x83, 0xD5, 0xD0, +0xB9, 0xC6, 0xDA, 0x00, 0xBA, 0x66, 0x5A, 0xD0, 0xBB, 0xA8, 0x0D, 0x80, 0xBC, 0x47, 0x8E, 0x50, +0xBD, 0x89, 0x41, 0x00, 0xBE, 0x28, 0xC1, 0xD0, 0xBF, 0x6A, 0x74, 0x80, 0xC0, 0x09, 0xF5, 0x50, 0xC1, 0x4C, 0xF9, 0x80, 0xC1, 0xEC, 0x7A, 0x50, 0xC3, 0x2E, 0x2D, 0x00, 0xC3, 0xCD, 0xAD, 0xD0, 0xC5, 0x0F, 0x60, 0x80, 0xC5, 0xAE, 0xE1, 0x50, 0xC6, 0xF0, 0x94, 0x00, 0xC7, 0x90, 0x14, 0xD0, 0xC8, 0xD3, 0x19, 0x00, 0xC9, 0x72, 0x99, 0xD0, 0xCA, 0xB4, 0x4C, 0x80, 0xCB, 0x53, 0xCD, 0x50, 0xCC, 0x95, 0x80, 0x00, 0xCD, 0x35, 0x00, 0xD0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x04, 0xB0, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x48, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0xCC, 0x38, @@ -652,12 +664,11 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Africa/Bamako */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x96, 0x00, -0xBC, 0x92, 0xB8, 0x80, 0xEE, 0x11, 0x87, 0x10, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF8, 0x80, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x9C, 0xA1, 0xA8, 0x01, 0x06, 0x73, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, +0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xA1, 0xA8, 0x01, 0x06, 0x73, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Bangui */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -669,13 +680,11 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Africa/Banjul */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x92, 0xE6, 0x9E, 0x1C, -0xBE, 0x2A, 0x27, 0x9C, 0xF4, 0xB6, 0x36, 0x10, 0x01, 0x02, 0x03, 0xFF, 0xFF, 0xF0, 0x64, 0x00, -0x00, 0xFF, 0xFF, 0xF0, 0x64, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, -0x00, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xE0, 0xAA, 0x00, -0xF9, 0x40, 0x98, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, +0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xE0, 0xAA, 0x00, 0xF9, 0x40, +0x98, 0x00, 0x00, 0x00, 0x00, /* Africa/Bissau */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -868,21 +877,19 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Africa/Conakry */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x9B, 0x5C, -0xBC, 0x92, 0xB8, 0x80, 0xED, 0x30, 0x16, 0x90, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF3, 0x24, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x97, 0xD9, 0xB2, 0x00, 0xFD, 0xBA, 0x6D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, +0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xD9, 0xB2, 0x00, 0xFD, 0xBA, +0x6D, 0x00, 0x00, 0x00, 0x00, /* Africa/Dakar */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x9E, 0xD8, -0xCA, 0x3B, 0x10, 0x90, 0x01, 0x02, 0xFF, 0xFF, 0xEF, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, -0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, -0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xB5, 0x6A, 0x00, 0xF8, -0x0E, 0x9A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, +0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xB5, 0x6A, 0x00, 0xF8, 0x0E, +0x9A, 0x00, 0x00, 0x00, 0x00, /* Africa/Dar_es_Salaam */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -948,22 +955,11 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Africa/Freetown */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x95, 0x90, 0x32, 0x6C, -0xBE, 0xF1, 0x38, 0x90, 0xBF, 0x92, 0x06, 0x30, 0xC0, 0xD3, 0xBD, 0x90, 0xC1, 0x74, 0x8B, 0x30, -0xC2, 0xB4, 0xF1, 0x10, 0xC3, 0x55, 0xBE, 0xB0, 0xC4, 0x96, 0x24, 0x90, 0xC5, 0x36, 0xF2, 0x30, -0xC6, 0x77, 0x58, 0x10, 0xC7, 0x18, 0x25, 0xB0, 0xC8, 0x59, 0xDD, 0x10, 0xC8, 0xFA, 0xAA, 0xB0, -0xCA, 0x3B, 0x10, 0x90, 0xCA, 0xDB, 0xDE, 0x30, 0xCC, 0x1C, 0x44, 0x10, 0xCC, 0xBD, 0x11, 0xB0, -0xE7, 0x8C, 0x7C, 0x10, 0xE8, 0x53, 0x80, 0x80, 0xE8, 0xCC, 0xBC, 0x70, 0xEA, 0x34, 0xB4, 0x00, -0xEA, 0xAD, 0xEF, 0xF0, 0xEC, 0x15, 0xE7, 0x80, 0xEC, 0x8F, 0x23, 0x70, 0xED, 0xF8, 0x6C, 0x80, -0xEE, 0x71, 0xA8, 0x70, 0xEF, 0xD9, 0xA0, 0x00, 0xF0, 0x52, 0xDB, 0xF0, 0xF1, 0xBA, 0xD3, 0x80, -0xF2, 0x34, 0x0F, 0x70, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, -0x03, 0x04, 0xFF, 0xFF, 0xF3, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0xFB, 0x50, 0x01, 0x04, 0xFF, 0xFF, -0xF1, 0xF0, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, -0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x46, 0x4D, 0x54, 0x00, 0x53, 0x4C, 0x53, 0x54, 0x00, 0x57, -0x41, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x96, 0x4C, 0x90, 0x00, 0xFE, 0x70, 0xB8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, +0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x4C, 0x90, 0x00, 0xFE, 0x70, +0xB8, 0x00, 0x00, 0x00, 0x00, /* Africa/Gaborone */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1075,10 +1071,11 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Africa/Lome */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x92, 0xB0, 0x15, 0x01, 0x14, 0x83, 0xC2, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, +0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xB0, 0x15, 0x01, 0x14, 0x83, +0xC2, 0x00, 0x00, 0x00, 0x00, /* Africa/Luanda */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1186,18 +1183,17 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Africa/Nouakchott */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x9D, 0x74, -0xBC, 0x92, 0xB8, 0x80, 0xEE, 0xE5, 0xC8, 0x90, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF1, 0x0C, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xA4, 0xF2, 0x90, 0x00, 0xFA, 0x52, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, +0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xF2, 0x90, 0x00, 0xFA, 0x52, +0x08, 0x00, 0x00, 0x00, 0x00, /* Africa/Ouagadougou */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x8F, 0xEC, -0x01, 0xFF, 0xFF, 0xFE, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, +0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x32, 0xFA, 0x01, 0x10, 0x58, 0x0D, 0x00, 0x00, 0x00, 0x00, @@ -1213,19 +1209,18 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Africa/Sao_Tome */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x97, 0x10, -0x01, 0xFF, 0xFF, 0xF7, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, +0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xD6, 0x75, 0x01, 0x1C, 0xEE, 0xB5, 0x00, 0x00, 0x00, 0x00, /* Africa/Timbuktu */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x96, 0x00, -0xBC, 0x92, 0xB8, 0x80, 0xEE, 0x11, 0x87, 0x10, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF8, 0x80, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, +0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Tripoli */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -4816,8 +4811,8 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* America/Metlakatla */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xCB, 0x89, 0x1A, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xCB, 0x89, 0x1A, 0xA0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x26, 0x10, 0xFE, 0xB8, 0x47, 0x20, 0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x98, 0x29, 0x20, 0x01, 0x88, 0x0C, 0x10, 0x02, 0x78, 0x0B, 0x20, 0x03, 0x71, 0x28, 0x90, 0x04, 0x61, 0x27, 0xA0, 0x05, 0x51, 0x0A, 0x90, 0x06, 0x41, 0x09, 0xA0, 0x07, 0x30, 0xEC, 0x90, @@ -4828,13 +4823,13 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x17, 0x29, 0x36, 0x20, 0x18, 0x22, 0x53, 0x90, 0x19, 0x09, 0x18, 0x20, 0x1A, 0x02, 0x35, 0x90, 0x01, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, -0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x9D, -0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x10, 0x50, -0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x4D, -0x65, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xDD, -0x72, 0x36, 0x00, 0x49, 0xE3, 0x79, 0x00, 0x00, 0x00, 0x20, 0x4D, 0x65, 0x74, 0x6C, 0x61, 0x6B, -0x61, 0x74, 0x6C, 0x61, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x41, 0x6E, 0x6E, 0x65, -0x74, 0x74, 0x65, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, +0x00, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x9D, +0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, +0x00, 0x50, 0x50, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0xDD, 0x72, 0x36, 0x00, 0x49, 0xE3, 0x79, 0x00, 0x00, 0x00, 0x2E, 0x50, 0x61, 0x63, +0x69, 0x66, 0x69, 0x63, 0x20, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, +0x6D, 0x65, 0x20, 0x2D, 0x20, 0x41, 0x6E, 0x6E, 0x65, 0x74, 0x74, 0x65, 0x20, 0x49, 0x73, 0x6C, +0x61, 0x6E, 0x64, 0x2C, 0x20, 0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61, /* America/Mexico_City */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6053,10 +6048,9 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x09, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0D, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x11, 0x7A, 0x7A, 0x7A, 0x00, 0x43, 0x44, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x4E, 0x33, -0x00, 0x81, 0xF5, 0xDB, 0x00, 0x00, 0x00, 0x29, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, -0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, -0x52, 0x65, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x2C, 0x20, 0x4E, 0x75, 0x6E, 0x61, 0x76, 0x75, -0x74, +0x00, 0x81, 0xF5, 0xDB, 0x00, 0x00, 0x00, 0x20, 0x43, 0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, +0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x52, 0x65, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x2C, +0x20, 0x4E, 0x75, 0x6E, 0x61, 0x76, 0x75, 0x74, /* America/Rio_Branco */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7198,14 +7192,14 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Antarctica/Casey */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0xFE, 0x1E, 0xCC, 0x80, +0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0xFE, 0x1E, 0xCC, 0x80, 0x4A, 0xDA, 0x06, 0x20, 0x4B, 0x8F, 0xCA, 0xF0, 0x4E, 0xA9, 0x9C, 0x20, 0x4F, 0x43, 0xCD, 0x90, 0x01, 0x02, 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, -0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x08, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x7A, 0x7A, 0x7A, -0x00, 0x57, 0x53, 0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x24, 0x30, 0x52, 0x01, 0xBB, 0x4B, 0x12, 0x00, 0x00, 0x00, 0x1F, 0x43, 0x61, -0x73, 0x65, 0x79, 0x20, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x42, 0x61, 0x69, -0x6C, 0x65, 0x79, 0x20, 0x50, 0x65, 0x6E, 0x69, 0x6E, 0x73, 0x75, 0x6C, 0x61, +0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x7A, 0x7A, 0x7A, +0x00, 0x41, 0x57, 0x53, 0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x01, 0x00, 0x24, 0x30, 0x52, 0x01, 0xBB, 0x4B, 0x12, 0x00, 0x00, 0x00, 0x1F, 0x43, +0x61, 0x73, 0x65, 0x79, 0x20, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x42, 0x61, +0x69, 0x6C, 0x65, 0x79, 0x20, 0x50, 0x65, 0x6E, 0x69, 0x6E, 0x73, 0x75, 0x6C, 0x61, /* Antarctica/Davis */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7235,7 +7229,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Antarctica/Macquarie */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0D, 0x9B, 0xD5, 0x78, 0x80, +0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13, 0x9B, 0xD5, 0x78, 0x80, 0x9C, 0xBC, 0x20, 0xF0, 0xA0, 0x87, 0xB4, 0x60, 0xD7, 0x0C, 0x68, 0x00, 0xFB, 0xC2, 0x8D, 0x00, 0xFC, 0xB2, 0x7E, 0x00, 0xFD, 0xC7, 0x59, 0x00, 0xFE, 0x76, 0xB0, 0x80, 0xFF, 0xA7, 0x3B, 0x00, 0x00, 0x56, 0x92, 0x80, 0x01, 0x87, 0x1D, 0x00, 0x02, 0x3F, 0xAF, 0x00, 0x03, 0x70, 0x39, 0x80, @@ -7264,12 +7258,12 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x00, 0x00, -0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, -0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, -0x00, 0x08, 0x45, 0x53, 0x54, 0x00, 0x7A, 0x7A, 0x7A, 0x00, 0x4D, 0x49, 0x53, 0x54, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x2B, 0x30, 0x02, -0x05, 0x32, 0x58, 0x00, 0x00, 0x00, 0x10, 0x4D, 0x61, 0x63, 0x71, 0x75, 0x61, 0x72, 0x69, 0x65, -0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, +0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, +0x00, 0x00, 0x9A, 0xB0, 0x01, 0x05, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, +0x00, 0x0E, 0x41, 0x45, 0x53, 0x54, 0x00, 0x41, 0x45, 0x44, 0x54, 0x00, 0x7A, 0x7A, 0x7A, 0x00, +0x4D, 0x49, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x36, 0x2B, 0x30, 0x02, 0x05, 0x32, 0x58, 0x00, 0x00, 0x00, 0x10, 0x4D, 0x61, 0x63, +0x71, 0x75, 0x61, 0x72, 0x69, 0x65, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, /* Antarctica/Mawson */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7676,9 +7670,11 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x09, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4E, 0x41, 0x54, 0x00, 0x41, 0x4E, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xEC, 0x21, 0x38, 0x02, 0x21, 0x79, 0xED, 0x00, 0x00, 0x00, 0x16, 0x4D, -0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x38, 0x20, 0x2D, 0x20, 0x42, 0x65, 0x72, 0x69, 0x6E, -0x67, 0x20, 0x53, 0x65, 0x61, +0x00, 0x00, 0x00, 0x00, 0xEC, 0x21, 0x38, 0x02, 0x21, 0x79, 0xED, 0x00, 0x00, 0x00, 0x33, 0x4D, +0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x38, 0x20, 0x28, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, +0x2B, 0x30, 0x39, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x32, 0x30, 0x31, 0x34, 0x2D, 0x31, +0x30, 0x2D, 0x32, 0x36, 0x29, 0x20, 0x2D, 0x20, 0x42, 0x65, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x53, +0x65, 0x61, /* Asia/Aqtau */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7975,6 +7971,42 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x00, 0x49, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +/* Asia/Chita */ +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x14, 0xA1, 0xDB, 0xF9, 0xA0, +0xB5, 0xA3, 0xC5, 0x00, 0x15, 0x27, 0x53, 0x70, 0x16, 0x18, 0x87, 0xE0, 0x17, 0x08, 0x86, 0xF0, +0x17, 0xF9, 0xBB, 0x60, 0x18, 0xE9, 0xBA, 0x70, 0x19, 0xDA, 0xEE, 0xE0, 0x1A, 0xCC, 0x3F, 0x70, +0x1B, 0xBC, 0x4C, 0x90, 0x1C, 0xAC, 0x3D, 0x90, 0x1D, 0x9C, 0x2E, 0x90, 0x1E, 0x8C, 0x1F, 0x90, +0x1F, 0x7C, 0x10, 0x90, 0x20, 0x6C, 0x01, 0x90, 0x21, 0x5B, 0xF2, 0x90, 0x22, 0x4B, 0xE3, 0x90, +0x23, 0x3B, 0xD4, 0x90, 0x24, 0x2B, 0xC5, 0x90, 0x25, 0x1B, 0xB6, 0x90, 0x26, 0x0B, 0xA7, 0x90, +0x27, 0x04, 0xD3, 0x10, 0x27, 0xF4, 0xC4, 0x10, 0x28, 0xE4, 0xC3, 0x20, 0x29, 0x78, 0x6B, 0x20, +0x29, 0xD4, 0x7B, 0xE0, 0x2A, 0xC4, 0x5E, 0xD0, 0x2B, 0xB4, 0x88, 0x10, 0x2C, 0xA4, 0x79, 0x10, +0x2D, 0x94, 0x6A, 0x10, 0x2E, 0x84, 0x5B, 0x10, 0x2F, 0x74, 0x4C, 0x10, 0x30, 0x64, 0x3D, 0x10, +0x31, 0x5D, 0x68, 0x90, 0x32, 0x72, 0x43, 0x90, 0x33, 0x3D, 0x4A, 0x90, 0x34, 0x52, 0x25, 0x90, +0x35, 0x1D, 0x2C, 0x90, 0x36, 0x32, 0x07, 0x90, 0x36, 0xFD, 0x0E, 0x90, 0x38, 0x1B, 0x24, 0x10, +0x38, 0xDC, 0xF0, 0x90, 0x39, 0xFB, 0x06, 0x10, 0x3A, 0xBC, 0xD2, 0x90, 0x3B, 0xDA, 0xE8, 0x10, +0x3C, 0xA5, 0xEF, 0x10, 0x3D, 0xBA, 0xCA, 0x10, 0x3E, 0x85, 0xD1, 0x10, 0x3F, 0x9A, 0xAC, 0x10, +0x40, 0x65, 0xB3, 0x10, 0x41, 0x83, 0xC8, 0x90, 0x42, 0x45, 0x95, 0x10, 0x43, 0x63, 0xAA, 0x90, +0x44, 0x25, 0x77, 0x10, 0x45, 0x43, 0x8C, 0x90, 0x46, 0x05, 0x59, 0x10, 0x47, 0x23, 0x6E, 0x90, +0x47, 0xEE, 0x75, 0x90, 0x49, 0x03, 0x50, 0x90, 0x49, 0xCE, 0x57, 0x90, 0x4A, 0xE3, 0x32, 0x90, +0x4B, 0xAE, 0x39, 0x90, 0x4C, 0xCC, 0x4F, 0x10, 0x4D, 0x8E, 0x1B, 0x90, 0x54, 0x4B, 0xC9, 0x00, +0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, +0x09, 0x00, 0x00, 0x6A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x8C, +0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, +0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, +0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0F, 0x4C, 0x4D, 0x54, +0x00, 0x59, 0x41, 0x4B, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x49, 0x52, 0x4B, 0x54, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xC0, 0x48, 0x01, 0xBF, 0xCB, 0x6A, 0x00, 0x00, 0x00, +0x34, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x36, 0x20, 0x28, 0x4D, 0x6F, 0x73, 0x63, +0x6F, 0x77, 0x2B, 0x30, 0x35, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x32, 0x30, 0x31, 0x34, +0x2D, 0x31, 0x30, 0x2D, 0x32, 0x36, 0x29, 0x20, 0x2D, 0x20, 0x5A, 0x61, 0x62, 0x61, 0x79, 0x6B, +0x61, 0x6C, 0x73, 0x6B, 0x79, + /* Asia/Choibalsan */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, @@ -8002,34 +8034,30 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x75, 0x6B, 0x68, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, /* Asia/Chongqing */ -0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xB0, 0xFE, 0xA8, 0x94, -0x13, 0x6D, 0xC9, 0x10, 0x1E, 0xBA, 0x36, 0x00, 0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, -0x21, 0x49, 0x61, 0x70, 0x22, 0x5E, 0x4A, 0x80, 0x23, 0x29, 0x43, 0x70, 0x24, 0x47, 0x67, 0x00, -0x25, 0x12, 0x5F, 0xF0, 0x26, 0x27, 0x49, 0x00, 0x26, 0xF2, 0x41, 0xF0, 0x28, 0x07, 0x2B, 0x00, -0x28, 0xD2, 0x23, 0xF0, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x00, 0x00, 0x63, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, -0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x4C, 0x4F, -0x4E, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xB6, 0x71, 0xBA, 0x01, 0xB5, 0x4A, 0x9D, 0x00, 0x00, 0x00, 0x40, 0x63, -0x65, 0x6E, 0x74, 0x72, 0x61, 0x6C, 0x20, 0x43, 0x68, 0x69, 0x6E, 0x61, 0x20, 0x2D, 0x20, 0x53, -0x69, 0x63, 0x68, 0x75, 0x61, 0x6E, 0x2C, 0x20, 0x59, 0x75, 0x6E, 0x6E, 0x61, 0x6E, 0x2C, 0x20, -0x47, 0x75, 0x61, 0x6E, 0x67, 0x78, 0x69, 0x2C, 0x20, 0x53, 0x68, 0x61, 0x61, 0x6E, 0x78, 0x69, -0x2C, 0x20, 0x47, 0x75, 0x69, 0x7A, 0x68, 0x6F, 0x75, 0x2C, 0x20, 0x65, 0x74, 0x63, 0x2E, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xC8, 0x5C, 0x01, 0x80, +0xC8, 0xFA, 0x27, 0x70, 0xC9, 0xD5, 0x0E, 0x80, 0xCA, 0xDB, 0x5A, 0xF0, 0x1E, 0xBA, 0x36, 0x00, +0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, 0x21, 0x49, 0x61, 0x70, 0x22, 0x5E, 0x4A, 0x80, +0x23, 0x29, 0x43, 0x70, 0x24, 0x47, 0x67, 0x00, 0x25, 0x12, 0x5F, 0xF0, 0x26, 0x27, 0x49, 0x00, +0x26, 0xF2, 0x41, 0xF0, 0x28, 0x07, 0x2B, 0x00, 0x28, 0xD2, 0x23, 0xF0, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x7E, 0x90, +0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, + /* Asia/Chungking */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xB0, 0xFE, 0xA8, 0x94, -0x13, 0x6D, 0xC9, 0x10, 0x1E, 0xBA, 0x36, 0x00, 0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, -0x21, 0x49, 0x61, 0x70, 0x22, 0x5E, 0x4A, 0x80, 0x23, 0x29, 0x43, 0x70, 0x24, 0x47, 0x67, 0x00, -0x25, 0x12, 0x5F, 0xF0, 0x26, 0x27, 0x49, 0x00, 0x26, 0xF2, 0x41, 0xF0, 0x28, 0x07, 0x2B, 0x00, -0x28, 0xD2, 0x23, 0xF0, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x00, 0x00, 0x63, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, -0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x4C, 0x4F, -0x4E, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xC8, 0x5C, 0x01, 0x80, +0xC8, 0xFA, 0x27, 0x70, 0xC9, 0xD5, 0x0E, 0x80, 0xCA, 0xDB, 0x5A, 0xF0, 0x1E, 0xBA, 0x36, 0x00, +0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, 0x21, 0x49, 0x61, 0x70, 0x22, 0x5E, 0x4A, 0x80, +0x23, 0x29, 0x43, 0x70, 0x24, 0x47, 0x67, 0x00, 0x25, 0x12, 0x5F, 0xF0, 0x26, 0x27, 0x49, 0x00, +0x26, 0xF2, 0x41, 0xF0, 0x28, 0x07, 0x2B, 0x00, 0x28, 0xD2, 0x23, 0xF0, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x7E, 0x90, +0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, + /* Asia/Colombo */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8220,21 +8248,17 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x72, 0x69, 0x70, /* Asia/Harbin */ -0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xB0, 0xFE, 0x95, 0xBC, -0xB8, 0xD3, 0xCE, 0x78, 0xC7, 0x90, 0xFA, 0x80, 0xF9, 0x17, 0x95, 0xF0, 0x13, 0x6D, 0xB3, 0xF8, -0x1E, 0xBA, 0x36, 0x00, 0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, 0x21, 0x49, 0x61, 0x70, -0x22, 0x5E, 0x4A, 0x80, 0x23, 0x29, 0x43, 0x70, 0x24, 0x47, 0x67, 0x00, 0x25, 0x12, 0x5F, 0xF0, -0x26, 0x27, 0x49, 0x00, 0x26, 0xF2, 0x41, 0xF0, 0x28, 0x07, 0x2B, 0x00, 0x28, 0xD2, 0x23, 0xF0, -0x01, 0x02, 0x03, 0x01, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, -0x02, 0x00, 0x00, 0x76, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x77, 0x88, 0x00, 0x04, 0x00, 0x00, 0x70, -0x80, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x0D, 0x4C, -0x4D, 0x54, 0x00, 0x43, 0x48, 0x41, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x23, 0x58, 0x01, 0xD3, -0xF6, 0x2D, 0x00, 0x00, 0x00, 0x21, 0x48, 0x65, 0x69, 0x6C, 0x6F, 0x6E, 0x67, 0x6A, 0x69, 0x61, -0x6E, 0x67, 0x20, 0x28, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, 0x4D, 0x6F, 0x68, 0x65, 0x29, -0x2C, 0x20, 0x4A, 0x69, 0x6C, 0x69, 0x6E, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xC8, 0x5C, 0x01, 0x80, +0xC8, 0xFA, 0x27, 0x70, 0xC9, 0xD5, 0x0E, 0x80, 0xCA, 0xDB, 0x5A, 0xF0, 0x1E, 0xBA, 0x36, 0x00, +0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, 0x21, 0x49, 0x61, 0x70, 0x22, 0x5E, 0x4A, 0x80, +0x23, 0x29, 0x43, 0x70, 0x24, 0x47, 0x67, 0x00, 0x25, 0x12, 0x5F, 0xF0, 0x26, 0x27, 0x49, 0x00, +0x26, 0xF2, 0x41, 0xF0, 0x28, 0x07, 0x2B, 0x00, 0x28, 0xD2, 0x23, 0xF0, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x7E, 0x90, +0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, + /* Asia/Hebron */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8362,7 +8386,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Irkutsk */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA2, 0x12, 0x0F, 0xB0, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA2, 0x12, 0x0F, 0xB5, 0xB5, 0xA3, 0xD3, 0x10, 0x15, 0x27, 0x61, 0x80, 0x16, 0x18, 0x95, 0xF0, 0x17, 0x08, 0x95, 0x00, 0x17, 0xF9, 0xC9, 0x70, 0x18, 0xE9, 0xC8, 0x80, 0x19, 0xDA, 0xFC, 0xF0, 0x1A, 0xCC, 0x4D, 0x80, 0x1B, 0xBC, 0x5A, 0xA0, 0x1C, 0xAC, 0x4B, 0xA0, 0x1D, 0x9C, 0x3C, 0xA0, 0x1E, 0x8C, 0x2D, 0xA0, @@ -8378,19 +8402,19 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x40, 0x65, 0xC1, 0x20, 0x41, 0x83, 0xD6, 0xA0, 0x42, 0x45, 0xA3, 0x20, 0x43, 0x63, 0xB8, 0xA0, 0x44, 0x25, 0x85, 0x20, 0x45, 0x43, 0x9A, 0xA0, 0x46, 0x05, 0x67, 0x20, 0x47, 0x23, 0x7C, 0xA0, 0x47, 0xEE, 0x83, 0xA0, 0x49, 0x03, 0x5E, 0xA0, 0x49, 0xCE, 0x65, 0xA0, 0x4A, 0xE3, 0x40, 0xA0, -0x4B, 0xAE, 0x47, 0xA0, 0x4C, 0xCC, 0x5D, 0x20, 0x4D, 0x8E, 0x29, 0xA0, 0x01, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x4B, 0xAE, 0x47, 0xA0, 0x4C, 0xCC, 0x5D, 0x20, 0x4D, 0x8E, 0x29, 0xA0, 0x54, 0x4B, 0xD7, 0x10, +0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x00, 0x00, 0x61, 0xD0, -0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, -0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, -0x00, 0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, -0x00, 0x04, 0x49, 0x4D, 0x54, 0x00, 0x49, 0x52, 0x4B, 0x54, 0x00, 0x49, 0x52, 0x4B, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xD9, 0x14, 0xEA, 0x01, 0xB1, 0xDB, 0xB5, 0x00, 0x00, 0x00, 0x17, 0x4D, -0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x35, 0x20, 0x2D, 0x20, 0x4C, 0x61, 0x6B, 0x65, 0x20, -0x42, 0x61, 0x69, 0x6B, 0x61, 0x6C, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, +0x04, 0x00, 0x00, 0x61, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x7E, +0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, +0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x00, +0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x49, 0x4D, 0x54, 0x00, 0x49, 0x52, 0x4B, 0x54, 0x00, +0x49, 0x52, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD9, 0x14, 0xEA, 0x01, 0xB1, 0xDB, 0xB5, +0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x35, 0x20, 0x2D, 0x20, +0x4C, 0x61, 0x6B, 0x65, 0x20, 0x42, 0x61, 0x69, 0x6B, 0x61, 0x6C, /* Asia/Istanbul */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8473,14 +8497,14 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Jayapura */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xBA, 0x16, 0xC1, 0x98, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xBA, 0x16, 0xC1, 0x98, 0xD0, 0x58, 0xB9, 0xF0, 0xF4, 0xB5, 0xA2, 0x68, 0x01, 0x02, 0x01, 0x00, 0x00, 0x83, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x85, 0x98, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x57, 0x49, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x85, 0x76, 0xAA, 0x01, 0xE9, 0x59, 0x70, 0x00, 0x00, 0x00, 0x31, 0x77, 0x65, 0x73, 0x74, 0x20, -0x4E, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6E, 0x65, 0x61, 0x20, 0x28, 0x49, 0x72, 0x69, 0x61, -0x6E, 0x20, 0x4A, 0x61, 0x79, 0x61, 0x29, 0x20, 0x26, 0x20, 0x4D, 0x61, 0x6C, 0x75, 0x6B, 0x75, -0x73, 0x20, 0x28, 0x4D, 0x6F, 0x6C, 0x75, 0x63, 0x63, 0x61, 0x73, 0x29, +0x00, 0x57, 0x49, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x85, 0x76, 0xAA, 0x01, 0xE9, 0x59, 0x70, 0x00, 0x00, 0x00, 0x31, 0x77, 0x65, 0x73, 0x74, +0x20, 0x4E, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6E, 0x65, 0x61, 0x20, 0x28, 0x49, 0x72, 0x69, +0x61, 0x6E, 0x20, 0x4A, 0x61, 0x79, 0x61, 0x29, 0x20, 0x26, 0x20, 0x4D, 0x61, 0x6C, 0x75, 0x6B, +0x75, 0x73, 0x20, 0x28, 0x4D, 0x6F, 0x6C, 0x75, 0x63, 0x63, 0x61, 0x73, 0x29, /* Asia/Jerusalem */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8572,8 +8596,10 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x09, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x45, 0x54, 0x54, 0x00, 0x50, 0x45, 0x54, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x39, 0xE2, 0x02, -0x04, 0xBD, 0x28, 0x00, 0x00, 0x00, 0x15, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x38, -0x20, 0x2D, 0x20, 0x4B, 0x61, 0x6D, 0x63, 0x68, 0x61, 0x74, 0x6B, 0x61, +0x04, 0xBD, 0x28, 0x00, 0x00, 0x00, 0x32, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x38, +0x20, 0x28, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x39, 0x20, 0x61, 0x66, 0x74, 0x65, +0x72, 0x20, 0x32, 0x30, 0x31, 0x34, 0x2D, 0x31, 0x30, 0x2D, 0x32, 0x36, 0x29, 0x20, 0x2D, 0x20, +0x4B, 0x61, 0x6D, 0x63, 0x68, 0x61, 0x74, 0x6B, 0x61, /* Asia/Karachi */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8590,20 +8616,12 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0xE8, 0x00, 0x00, 0x00, 0x00, /* Asia/Kashgar */ -0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xB0, 0xFE, 0xC5, 0x44, -0xC7, 0x91, 0x1D, 0xA8, 0x13, 0x6D, 0xE5, 0x30, 0x1E, 0xBA, 0x36, 0x00, 0x1F, 0x69, 0x7F, 0x70, -0x20, 0x7E, 0x68, 0x80, 0x21, 0x49, 0x61, 0x70, 0x22, 0x5E, 0x4A, 0x80, 0x23, 0x29, 0x43, 0x70, -0x24, 0x47, 0x67, 0x00, 0x25, 0x12, 0x5F, 0xF0, 0x26, 0x27, 0x49, 0x00, 0x26, 0xF2, 0x41, 0xF0, -0x28, 0x07, 0x2B, 0x00, 0x28, 0xD2, 0x23, 0xF0, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x00, 0x00, 0x47, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x4D, -0x58, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, -0x00, 0x70, 0x80, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x41, 0x53, 0x54, 0x00, 0x43, 0x44, -0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0xC5, 0x93, 0x6D, 0x01, 0x86, 0x99, 0x7D, 0x00, 0x00, 0x00, 0x15, 0x77, 0x65, 0x73, 0x74, -0x20, 0x54, 0x69, 0x62, 0x65, 0x74, 0x20, 0x26, 0x20, 0x58, 0x69, 0x6E, 0x6A, 0x69, 0x61, 0x6E, -0x67, +0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xB0, 0xFE, 0xBA, 0x64, +0x01, 0x00, 0x00, 0x52, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x58, 0x4A, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, +0x80, 0x00, 0x00, 0x00, 0x00, /* Asia/Kathmandu */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8626,7 +8644,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Khandyga */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1A, 0xA1, 0xDB, 0xE4, 0xEB, +0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1A, 0xA1, 0xDB, 0xE4, 0xEB, 0xB5, 0xA3, 0xC5, 0x00, 0x15, 0x27, 0x53, 0x70, 0x16, 0x18, 0x87, 0xE0, 0x17, 0x08, 0x86, 0xF0, 0x17, 0xF9, 0xBB, 0x60, 0x18, 0xE9, 0xBA, 0x70, 0x19, 0xDA, 0xEE, 0xE0, 0x1A, 0xCC, 0x3F, 0x70, 0x1B, 0xBC, 0x4C, 0x90, 0x1C, 0xAC, 0x3D, 0x90, 0x1D, 0x9C, 0x2E, 0x90, 0x1E, 0x8C, 0x1F, 0x90, @@ -8643,22 +8661,22 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x43, 0x63, 0x9C, 0x80, 0x44, 0x25, 0x69, 0x00, 0x45, 0x43, 0x7E, 0x80, 0x46, 0x05, 0x4B, 0x00, 0x47, 0x23, 0x60, 0x80, 0x47, 0xEE, 0x67, 0x80, 0x49, 0x03, 0x42, 0x80, 0x49, 0xCE, 0x49, 0x80, 0x4A, 0xE3, 0x24, 0x80, 0x4B, 0xAE, 0x2B, 0x80, 0x4C, 0xCC, 0x41, 0x00, 0x4D, 0x8E, 0x0D, 0x80, -0x4E, 0x6E, 0x02, 0x50, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x0A, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x08, 0x09, 0x0B, 0x0C, 0x00, 0x00, 0x7F, 0x15, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, -0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, -0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, -0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x0F, 0x00, 0x00, 0x8C, 0xA0, -0x00, 0x15, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x15, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x15, 0x00, 0x00, -0x8C, 0xA0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x54, 0x00, 0x59, 0x41, 0x4B, -0x53, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x53, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xEF, 0x66, 0x01, 0xE1, 0x7F, 0x3C, -0x00, 0x00, 0x00, 0x21, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x36, 0x20, 0x2D, 0x20, -0x54, 0x6F, 0x6D, 0x70, 0x6F, 0x6E, 0x73, 0x6B, 0x79, 0x2C, 0x20, 0x55, 0x73, 0x74, 0x2D, 0x4D, -0x61, 0x79, 0x73, 0x6B, 0x79, +0x4E, 0x6E, 0x02, 0x50, 0x54, 0x4B, 0xC9, 0x00, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, +0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x0A, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, +0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x0B, 0x0C, 0x04, 0x00, 0x00, 0x7F, 0x15, 0x00, +0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, +0x90, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, +0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x01, +0x0F, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x15, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x15, 0x00, 0x00, 0x9A, +0xB0, 0x00, 0x15, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x59, 0x41, 0x4B, +0x54, 0x00, 0x59, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x53, 0x54, 0x00, 0x56, 0x4C, +0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xEF, +0x66, 0x01, 0xE1, 0x7F, 0x3C, 0x00, 0x00, 0x00, 0x21, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, +0x30, 0x36, 0x20, 0x2D, 0x20, 0x54, 0x6F, 0x6D, 0x70, 0x6F, 0x6E, 0x73, 0x6B, 0x79, 0x2C, 0x20, +0x55, 0x73, 0x74, 0x2D, 0x4D, 0x61, 0x79, 0x73, 0x6B, 0x79, /* Asia/Kolkata */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8673,7 +8691,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Krasnoyarsk */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xF9, 0x0D, 0xF8, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xF9, 0x0D, 0xF8, 0xB5, 0xA3, 0xE1, 0x20, 0x15, 0x27, 0x6F, 0x90, 0x16, 0x18, 0xA4, 0x00, 0x17, 0x08, 0xA3, 0x10, 0x17, 0xF9, 0xD7, 0x80, 0x18, 0xE9, 0xD6, 0x90, 0x19, 0xDB, 0x0B, 0x00, 0x1A, 0xCC, 0x5B, 0x90, 0x1B, 0xBC, 0x68, 0xB0, 0x1C, 0xAC, 0x59, 0xB0, 0x1D, 0x9C, 0x4A, 0xB0, 0x1E, 0x8C, 0x3B, 0xB0, @@ -8689,19 +8707,19 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x40, 0x65, 0xCF, 0x30, 0x41, 0x83, 0xE4, 0xB0, 0x42, 0x45, 0xB1, 0x30, 0x43, 0x63, 0xC6, 0xB0, 0x44, 0x25, 0x93, 0x30, 0x45, 0x43, 0xA8, 0xB0, 0x46, 0x05, 0x75, 0x30, 0x47, 0x23, 0x8A, 0xB0, 0x47, 0xEE, 0x91, 0xB0, 0x49, 0x03, 0x6C, 0xB0, 0x49, 0xCE, 0x73, 0xB0, 0x4A, 0xE3, 0x4E, 0xB0, -0x4B, 0xAE, 0x55, 0xB0, 0x4C, 0xCC, 0x6B, 0x30, 0x4D, 0x8E, 0x37, 0xB0, 0x01, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x4B, 0xAE, 0x55, 0xB0, 0x4C, 0xCC, 0x6B, 0x30, 0x4D, 0x8E, 0x37, 0xB0, 0x54, 0x4B, 0xE5, 0x20, +0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x00, 0x00, 0x57, 0x08, -0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, -0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x01, 0x09, -0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, -0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x52, 0x41, 0x54, 0x00, 0x4B, 0x52, 0x41, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xDE, 0xCD, 0xC2, 0x01, 0xA0, 0x4F, 0x85, 0x00, 0x00, 0x00, 0x19, 0x4D, -0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x34, 0x20, 0x2D, 0x20, 0x59, 0x65, 0x6E, 0x69, 0x73, -0x65, 0x69, 0x20, 0x52, 0x69, 0x76, 0x65, 0x72, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, +0x04, 0x00, 0x00, 0x57, 0x08, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x70, +0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, +0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, +0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x52, 0x41, 0x54, 0x00, +0x4B, 0x52, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xCD, 0xC2, 0x01, 0xA0, 0x4F, 0x85, +0x00, 0x00, 0x00, 0x19, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x34, 0x20, 0x2D, 0x20, +0x59, 0x65, 0x6E, 0x69, 0x73, 0x65, 0x69, 0x20, 0x52, 0x69, 0x76, 0x65, 0x72, /* Asia/Kuala_Lumpur */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8789,7 +8807,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Magadan */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xAA, 0x19, 0x36, 0xA0, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xAA, 0x19, 0x36, 0xA0, 0xB5, 0xA3, 0xA8, 0xE0, 0x15, 0x27, 0x37, 0x50, 0x16, 0x18, 0x6B, 0xC0, 0x17, 0x08, 0x6A, 0xD0, 0x17, 0xF9, 0x9F, 0x40, 0x18, 0xE9, 0x9E, 0x50, 0x19, 0xDA, 0xD2, 0xC0, 0x1A, 0xCC, 0x23, 0x50, 0x1B, 0xBC, 0x30, 0x70, 0x1C, 0xAC, 0x21, 0x70, 0x1D, 0x9C, 0x12, 0x70, 0x1E, 0x8C, 0x03, 0x70, @@ -8805,19 +8823,21 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x40, 0x65, 0x96, 0xF0, 0x41, 0x83, 0xAC, 0x70, 0x42, 0x45, 0x78, 0xF0, 0x43, 0x63, 0x8E, 0x70, 0x44, 0x25, 0x5A, 0xF0, 0x45, 0x43, 0x70, 0x70, 0x46, 0x05, 0x3C, 0xF0, 0x47, 0x23, 0x52, 0x70, 0x47, 0xEE, 0x59, 0x70, 0x49, 0x03, 0x34, 0x70, 0x49, 0xCE, 0x3B, 0x70, 0x4A, 0xE3, 0x16, 0x70, -0x4B, 0xAE, 0x1D, 0x70, 0x4C, 0xCC, 0x32, 0xF0, 0x4D, 0x8D, 0xFF, 0x70, 0x01, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x4B, 0xAE, 0x1D, 0x70, 0x4C, 0xCC, 0x32, 0xF0, 0x4D, 0x8D, 0xFF, 0x70, 0x54, 0x4B, 0xAC, 0xE0, +0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x00, 0x00, 0x8D, 0x60, -0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x09, 0x00, 0x00, -0x9A, 0xB0, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x09, -0x00, 0x00, 0x9A, 0xB0, 0x01, 0x09, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0xA8, 0xC0, -0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x41, 0x47, 0x54, 0x00, 0x4D, 0x41, 0x47, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xE4, 0x38, 0x7A, 0x01, 0xF8, 0xC2, 0xC0, 0x00, 0x00, 0x00, 0x13, 0x4D, -0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x38, 0x20, 0x2D, 0x20, 0x4D, 0x61, 0x67, 0x61, 0x64, -0x61, 0x6E, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, +0x07, 0x00, 0x00, 0x8D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0xA8, +0xC0, 0x01, 0x09, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x00, +0x00, 0xA8, 0xC0, 0x01, 0x09, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x09, 0x00, 0x00, 0x8C, 0xA0, 0x00, +0x04, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x41, 0x47, 0x54, 0x00, +0x4D, 0x41, 0x47, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x38, 0x7A, 0x01, 0xF8, 0xC2, 0xC0, +0x00, 0x00, 0x00, 0x30, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x38, 0x20, 0x28, 0x4D, +0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x37, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x32, +0x30, 0x31, 0x34, 0x2D, 0x31, 0x30, 0x2D, 0x32, 0x36, 0x29, 0x20, 0x2D, 0x20, 0x4D, 0x61, 0x67, +0x61, 0x64, 0x61, 0x6E, /* Asia/Makassar */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8905,7 +8925,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Novokuznetsk */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1A, 0xA1, 0xF9, 0x13, 0x40, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1A, 0xA1, 0xF9, 0x13, 0x40, 0xB5, 0xA3, 0xE1, 0x20, 0x15, 0x27, 0x6F, 0x90, 0x16, 0x18, 0xA4, 0x00, 0x17, 0x08, 0xA3, 0x10, 0x17, 0xF9, 0xD7, 0x80, 0x18, 0xE9, 0xD6, 0x90, 0x19, 0xDB, 0x0B, 0x00, 0x1A, 0xCC, 0x5B, 0x90, 0x1B, 0xBC, 0x68, 0xB0, 0x1C, 0xAC, 0x59, 0xB0, 0x1D, 0x9C, 0x4A, 0xB0, 0x1E, 0x8C, 0x3B, 0xB0, @@ -8921,26 +8941,28 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x40, 0x65, 0xCF, 0x30, 0x41, 0x83, 0xE4, 0xB0, 0x42, 0x45, 0xB1, 0x30, 0x43, 0x63, 0xC6, 0xB0, 0x44, 0x25, 0x93, 0x30, 0x45, 0x43, 0xA8, 0xB0, 0x46, 0x05, 0x75, 0x30, 0x47, 0x23, 0x8A, 0xB0, 0x47, 0xEE, 0x91, 0xB0, 0x49, 0x03, 0x6C, 0xB0, 0x49, 0xCE, 0x73, 0xB0, 0x4A, 0xE3, 0x4E, 0xB0, -0x4B, 0xAE, 0x55, 0xB0, 0x4C, 0xCC, 0x79, 0x40, 0x4D, 0x8E, 0x45, 0xC0, 0x01, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x4B, 0xAE, 0x55, 0xB0, 0x4C, 0xCC, 0x79, 0x40, 0x4D, 0x8E, 0x45, 0xC0, 0x54, 0x4B, 0xF3, 0x30, +0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x09, 0x0A, 0x00, 0x00, 0x51, 0xC0, -0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, -0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x01, 0x09, -0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, -0x01, 0x0F, 0x00, 0x00, 0x54, 0x60, 0x00, 0x15, 0x00, 0x00, 0x62, 0x70, 0x00, 0x15, 0x4E, 0x4D, -0x54, 0x00, 0x4B, 0x52, 0x41, 0x54, 0x00, 0x4B, 0x52, 0x41, 0x53, 0x54, 0x00, 0x4E, 0x4F, 0x56, -0x53, 0x54, 0x00, 0x4E, 0x4F, 0x56, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, -0x58, 0x58, 0x01, 0x97, 0x96, 0x72, 0x00, 0x00, 0x00, 0x18, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, -0x2B, 0x30, 0x33, 0x20, 0x2D, 0x20, 0x4E, 0x6F, 0x76, 0x6F, 0x6B, 0x75, 0x7A, 0x6E, 0x65, 0x74, -0x73, 0x6B, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x09, 0x0A, +0x04, 0x00, 0x00, 0x51, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x70, +0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, +0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, +0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x0F, 0x00, 0x00, 0x54, 0x60, 0x00, 0x15, 0x00, 0x00, 0x62, +0x70, 0x00, 0x15, 0x4E, 0x4D, 0x54, 0x00, 0x4B, 0x52, 0x41, 0x54, 0x00, 0x4B, 0x52, 0x41, 0x53, +0x54, 0x00, 0x4E, 0x4F, 0x56, 0x53, 0x54, 0x00, 0x4E, 0x4F, 0x56, 0x54, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xDB, 0x58, 0x58, 0x01, 0x97, 0x96, 0x72, 0x00, 0x00, 0x00, 0x31, 0x4D, +0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x33, 0x20, 0x28, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, +0x2B, 0x30, 0x34, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x32, 0x30, 0x31, 0x34, 0x2D, 0x31, +0x30, 0x2D, 0x32, 0x36, 0x29, 0x20, 0x2D, 0x20, 0x4B, 0x65, 0x6D, 0x65, 0x72, 0x6F, 0x76, 0x6F, + /* Asia/Novosibirsk */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xDB, 0x19, 0x24, +0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xDB, 0x19, 0x24, 0xB5, 0xA3, 0xE1, 0x20, 0x15, 0x27, 0x6F, 0x90, 0x16, 0x18, 0xA4, 0x00, 0x17, 0x08, 0xA3, 0x10, 0x17, 0xF9, 0xD7, 0x80, 0x18, 0xE9, 0xD6, 0x90, 0x19, 0xDB, 0x0B, 0x00, 0x1A, 0xCC, 0x5B, 0x90, 0x1B, 0xBC, 0x68, 0xB0, 0x1C, 0xAC, 0x59, 0xB0, 0x1D, 0x9C, 0x4A, 0xB0, 0x1E, 0x8C, 0x3B, 0xB0, @@ -8957,23 +8979,24 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x43, 0x63, 0xD4, 0xC0, 0x44, 0x25, 0xA1, 0x40, 0x45, 0x43, 0xB6, 0xC0, 0x46, 0x05, 0x83, 0x40, 0x47, 0x23, 0x98, 0xC0, 0x47, 0xEE, 0x9F, 0xC0, 0x49, 0x03, 0x7A, 0xC0, 0x49, 0xCE, 0x81, 0xC0, 0x4A, 0xE3, 0x5C, 0xC0, 0x4B, 0xAE, 0x63, 0xC0, 0x4C, 0xCC, 0x79, 0x40, 0x4D, 0x8E, 0x45, 0xC0, -0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x08, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x54, 0x4B, 0xF3, 0x30, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, +0x08, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x04, 0x00, 0x00, 0x4D, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x70, -0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, -0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, -0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x4F, 0x56, 0x54, 0x00, -0x4E, 0x4F, 0x56, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x4D, 0xA5, 0x01, 0x91, 0x2D, 0xD2, -0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x33, 0x20, 0x2D, 0x20, -0x4E, 0x6F, 0x76, 0x6F, 0x73, 0x69, 0x62, 0x69, 0x72, 0x73, 0x6B, +0x06, 0x07, 0x06, 0x07, 0x04, 0x07, 0x00, 0x00, 0x4D, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, +0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x00, 0x00, +0x62, 0x70, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x01, 0x09, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, +0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x4C, 0x4D, 0x54, 0x00, +0x4E, 0x4F, 0x56, 0x54, 0x00, 0x4E, 0x4F, 0x56, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x4D, +0xA5, 0x01, 0x91, 0x2D, 0xD2, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, +0x30, 0x33, 0x20, 0x2D, 0x20, 0x4E, 0x6F, 0x76, 0x6F, 0x73, 0x69, 0x62, 0x69, 0x72, 0x73, 0x6B, + /* Asia/Omsk */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xB3, 0x40, 0xB0, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xB3, 0x40, 0xB0, 0xB5, 0xA3, 0xEF, 0x30, 0x15, 0x27, 0x7D, 0xA0, 0x16, 0x18, 0xB2, 0x10, 0x17, 0x08, 0xB1, 0x20, 0x17, 0xF9, 0xE5, 0x90, 0x18, 0xE9, 0xE4, 0xA0, 0x19, 0xDB, 0x19, 0x10, 0x1A, 0xCC, 0x69, 0xA0, 0x1B, 0xBC, 0x76, 0xC0, 0x1C, 0xAC, 0x67, 0xC0, 0x1D, 0x9C, 0x58, 0xC0, 0x1E, 0x8C, 0x49, 0xC0, @@ -8989,19 +9012,19 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x40, 0x65, 0xDD, 0x40, 0x41, 0x83, 0xF2, 0xC0, 0x42, 0x45, 0xBF, 0x40, 0x43, 0x63, 0xD4, 0xC0, 0x44, 0x25, 0xA1, 0x40, 0x45, 0x43, 0xB6, 0xC0, 0x46, 0x05, 0x83, 0x40, 0x47, 0x23, 0x98, 0xC0, 0x47, 0xEE, 0x9F, 0xC0, 0x49, 0x03, 0x7A, 0xC0, 0x49, 0xCE, 0x81, 0xC0, 0x4A, 0xE3, 0x5C, 0xC0, -0x4B, 0xAE, 0x63, 0xC0, 0x4C, 0xCC, 0x79, 0x40, 0x4D, 0x8E, 0x45, 0xC0, 0x01, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x4B, 0xAE, 0x63, 0xC0, 0x4C, 0xCC, 0x79, 0x40, 0x4D, 0x8E, 0x45, 0xC0, 0x54, 0x4B, 0xF3, 0x30, +0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x00, 0x00, 0x44, 0xD0, -0x00, 0x00, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, -0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, -0x00, 0x00, 0x54, 0x60, 0x01, 0x09, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, -0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4F, 0x4D, 0x53, 0x54, 0x00, 0x4F, 0x4D, 0x53, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xDD, 0x40, 0xA0, 0x01, 0x82, 0xA8, 0x60, 0x00, 0x00, 0x00, 0x18, 0x4D, -0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x33, 0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, 0x74, 0x20, -0x53, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, +0x04, 0x00, 0x00, 0x44, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x62, +0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, +0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x01, 0x09, 0x00, 0x00, 0x46, 0x50, 0x00, +0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4F, 0x4D, 0x53, 0x54, 0x00, +0x4F, 0x4D, 0x53, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x40, 0xA0, 0x01, 0x82, 0xA8, 0x60, +0x00, 0x00, 0x00, 0x18, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x33, 0x20, 0x2D, 0x20, +0x77, 0x65, 0x73, 0x74, 0x20, 0x53, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, /* Asia/Oral */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9062,12 +9085,15 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Pyongyang */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x85, 0x93, 0x7E, 0x78, -0xB0, 0xFE, 0x8D, 0xF0, 0xB8, 0x84, 0xB4, 0x78, 0xE2, 0x4F, 0x29, 0xF0, 0xF0, 0x35, 0x78, 0x80, -0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x00, 0x77, 0x88, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, -0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0xC4, 0xDD, 0x22, 0x01, 0xD2, 0x89, 0x98, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x85, 0x93, 0x7E, 0x78, +0xB0, 0xFE, 0x8D, 0xF0, 0xB8, 0x84, 0xB4, 0x78, 0xC3, 0x55, 0x3B, 0x70, 0xD2, 0x2F, 0x61, 0x70, +0xE2, 0x4F, 0x29, 0xF0, 0xF0, 0x35, 0x78, 0x80, 0x01, 0x00, 0x01, 0x02, 0x03, 0x04, 0x03, 0x00, +0x00, 0x77, 0x88, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, +0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x4B, 0x53, 0x54, +0x00, 0x4A, 0x43, 0x53, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xDD, 0x22, 0x01, 0xD2, 0x89, 0x98, 0x00, 0x00, 0x00, 0x00, + /* Asia/Qatar */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x51, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9123,7 +9149,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Riyadh */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xDA, 0x61, 0x36, 0xB4, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xD5, 0x1B, 0x36, 0xB4, 0x01, 0x00, 0x00, 0x2B, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xEA, 0xA5, 0x01, 0x59, 0xF1, 0x32, 0x00, 0x00, 0x00, 0x00, @@ -9141,8 +9167,8 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Sakhalin */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x86, 0xF0, 0xCD, 0xB8, -0xC3, 0xCE, 0x85, 0x70, 0xD2, 0x30, 0xB2, 0xF0, 0x15, 0x27, 0x37, 0x50, 0x16, 0x18, 0x6B, 0xC0, +0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x18, 0x86, 0xF0, 0xCD, 0xB8, +0xC3, 0x55, 0x3B, 0x70, 0xD2, 0x30, 0xB2, 0xF0, 0x15, 0x27, 0x37, 0x50, 0x16, 0x18, 0x6B, 0xC0, 0x17, 0x08, 0x6A, 0xD0, 0x17, 0xF9, 0x9F, 0x40, 0x18, 0xE9, 0x9E, 0x50, 0x19, 0xDA, 0xD2, 0xC0, 0x1A, 0xCC, 0x23, 0x50, 0x1B, 0xBC, 0x30, 0x70, 0x1C, 0xAC, 0x21, 0x70, 0x1D, 0x9C, 0x12, 0x70, 0x1E, 0x8C, 0x03, 0x70, 0x1F, 0x7B, 0xF4, 0x70, 0x20, 0x6B, 0xE5, 0x70, 0x21, 0x5B, 0xD6, 0x70, @@ -9158,19 +9184,19 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x43, 0x63, 0x9C, 0x80, 0x44, 0x25, 0x69, 0x00, 0x45, 0x43, 0x7E, 0x80, 0x46, 0x05, 0x4B, 0x00, 0x47, 0x23, 0x60, 0x80, 0x47, 0xEE, 0x67, 0x80, 0x49, 0x03, 0x42, 0x80, 0x49, 0xCE, 0x49, 0x80, 0x4A, 0xE3, 0x24, 0x80, 0x4B, 0xAE, 0x2B, 0x80, 0x4C, 0xCC, 0x41, 0x00, 0x4D, 0x8E, 0x0D, 0x80, -0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x07, 0x08, 0x05, 0x03, 0x04, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, +0x54, 0x4B, 0xBA, 0xF0, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x07, 0x08, 0x05, 0x03, 0x04, +0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, -0x05, 0x00, 0x00, 0x85, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x7E, -0x90, 0x00, 0x08, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x0C, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x12, 0x00, -0x00, 0x9A, 0xB0, 0x00, 0x12, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x0C, 0x00, 0x00, 0x9A, 0xB0, 0x01, -0x0C, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x12, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4A, 0x54, 0x00, 0x4A, -0x53, 0x54, 0x00, 0x53, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x53, 0x41, 0x4B, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0xD0, 0xFE, 0x9A, 0x01, 0xEC, 0x66, 0xB0, 0x00, 0x00, 0x00, 0x1B, 0x4D, 0x6F, 0x73, 0x63, -0x6F, 0x77, 0x2B, 0x30, 0x37, 0x20, 0x2D, 0x20, 0x53, 0x61, 0x6B, 0x68, 0x61, 0x6C, 0x69, 0x6E, -0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, +0x07, 0x08, 0x07, 0x08, 0x05, 0x08, 0x00, 0x00, 0x85, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, +0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x0D, 0x00, 0x00, +0x9A, 0xB0, 0x00, 0x13, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x13, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x0D, +0x00, 0x00, 0x9A, 0xB0, 0x01, 0x0D, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x13, 0x4C, 0x4D, 0x54, 0x00, +0x4A, 0x43, 0x53, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x53, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x53, +0x41, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFE, 0x9A, 0x01, 0xEC, 0x66, 0xB0, 0x00, 0x00, +0x00, 0x1B, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x37, 0x20, 0x2D, 0x20, 0x53, 0x61, +0x6B, 0x68, 0x61, 0x6C, 0x69, 0x6E, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, /* Asia/Samarkand */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9196,33 +9222,31 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Seoul */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4B, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x85, 0x93, 0x7E, 0x78, -0xB0, 0xFE, 0x8D, 0xF0, 0xB8, 0x84, 0xB4, 0x78, 0xE2, 0x4F, 0x29, 0xF0, 0xED, 0xE1, 0x92, 0x80, -0xEE, 0x81, 0x09, 0xF0, 0xF0, 0x35, 0x78, 0x80, 0xFD, 0xA5, 0x0A, 0xF8, 0x20, 0xA3, 0x44, 0x70, -0x21, 0x6E, 0x3D, 0x60, 0x22, 0x83, 0x26, 0x70, 0x23, 0x4E, 0x1F, 0x60, 0x01, 0x00, 0x01, 0x03, -0x02, 0x03, 0x00, 0x01, 0x04, 0x01, 0x04, 0x01, 0x00, 0x00, 0x77, 0x88, 0x00, 0x00, 0x00, 0x00, -0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, -0x00, 0x00, 0x8C, 0xA0, 0x01, 0x04, 0x4B, 0x53, 0x54, 0x00, 0x4B, 0x44, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xA0, 0x38, 0x01, 0xD4, 0x64, 0xDA, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x85, 0x93, 0x7E, 0x78, +0xB0, 0xFE, 0x8D, 0xF0, 0xB8, 0x84, 0xB4, 0x78, 0xC3, 0x55, 0x3B, 0x70, 0xD2, 0x43, 0x27, 0xF0, +0xE2, 0x4F, 0x29, 0xF0, 0xED, 0xE1, 0x92, 0x80, 0xEE, 0x81, 0x09, 0xF0, 0xF0, 0x35, 0x78, 0x80, +0xFD, 0xA5, 0x0A, 0xF8, 0x20, 0xA3, 0x44, 0x70, 0x21, 0x6E, 0x3D, 0x60, 0x22, 0x83, 0x26, 0x70, +0x23, 0x4E, 0x1F, 0x60, 0x01, 0x00, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x00, 0x03, 0x06, 0x03, +0x06, 0x03, 0x00, 0x00, 0x77, 0x88, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, +0x7E, 0x90, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x0D, +0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x0D, 0x4B, 0x53, 0x54, 0x00, +0x4A, 0x43, 0x53, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x4B, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xA0, 0x38, 0x01, +0xD4, 0x64, 0xDA, 0x00, 0x00, 0x00, 0x00, /* Asia/Shanghai */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xB0, 0xFE, 0x9A, 0x9B, -0xC8, 0x5C, 0x01, 0x80, 0xC8, 0xFA, 0x27, 0x70, 0xC9, 0xD5, 0x0E, 0x80, 0xCA, 0xDB, 0x5A, 0xF0, -0x1E, 0xBA, 0x36, 0x00, 0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, 0x21, 0x49, 0x61, 0x70, -0x22, 0x5E, 0x4A, 0x80, 0x23, 0x29, 0x43, 0x70, 0x24, 0x47, 0x67, 0x00, 0x25, 0x12, 0x5F, 0xF0, -0x26, 0x27, 0x49, 0x00, 0x26, 0xF2, 0x41, 0xF0, 0x28, 0x07, 0x2B, 0x00, 0x28, 0xD2, 0x23, 0xF0, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x00, 0x00, 0x71, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x04, 0x00, 0x00, 0x70, -0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFC, 0xC5, 0x01, 0xCC, 0x00, 0x6A, 0x00, 0x00, 0x00, -0x2F, 0x65, 0x61, 0x73, 0x74, 0x20, 0x43, 0x68, 0x69, 0x6E, 0x61, 0x20, 0x2D, 0x20, 0x42, 0x65, -0x69, 0x6A, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x47, 0x75, 0x61, 0x6E, 0x67, 0x64, 0x6F, 0x6E, 0x67, -0x2C, 0x20, 0x53, 0x68, 0x61, 0x6E, 0x67, 0x68, 0x61, 0x69, 0x2C, 0x20, 0x65, 0x74, 0x63, 0x2E, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xC8, 0x5C, 0x01, 0x80, +0xC8, 0xFA, 0x27, 0x70, 0xC9, 0xD5, 0x0E, 0x80, 0xCA, 0xDB, 0x5A, 0xF0, 0x1E, 0xBA, 0x36, 0x00, +0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, 0x21, 0x49, 0x61, 0x70, 0x22, 0x5E, 0x4A, 0x80, +0x23, 0x29, 0x43, 0x70, 0x24, 0x47, 0x67, 0x00, 0x25, 0x12, 0x5F, 0xF0, 0x26, 0x27, 0x49, 0x00, +0x26, 0xF2, 0x41, 0xF0, 0x28, 0x07, 0x2B, 0x00, 0x28, 0xD2, 0x23, 0xF0, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x7E, 0x90, +0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFC, 0xC5, 0x01, 0xCC, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x0C, +0x42, 0x65, 0x69, 0x6A, 0x69, 0x6E, 0x67, 0x20, 0x54, 0x69, 0x6D, 0x65, /* Asia/Singapore */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9238,12 +9262,47 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x49, 0x8D, 0x01, 0xB1, 0x1E, 0xE8, 0x00, 0x00, 0x00, 0x00, +/* Asia/Srednekolymsk */ +0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x14, 0xAA, 0x19, 0x33, 0xE4, +0xB5, 0xA3, 0xA8, 0xE0, 0x15, 0x27, 0x37, 0x50, 0x16, 0x18, 0x6B, 0xC0, 0x17, 0x08, 0x6A, 0xD0, +0x17, 0xF9, 0x9F, 0x40, 0x18, 0xE9, 0x9E, 0x50, 0x19, 0xDA, 0xD2, 0xC0, 0x1A, 0xCC, 0x23, 0x50, +0x1B, 0xBC, 0x30, 0x70, 0x1C, 0xAC, 0x21, 0x70, 0x1D, 0x9C, 0x12, 0x70, 0x1E, 0x8C, 0x03, 0x70, +0x1F, 0x7B, 0xF4, 0x70, 0x20, 0x6B, 0xE5, 0x70, 0x21, 0x5B, 0xD6, 0x70, 0x22, 0x4B, 0xC7, 0x70, +0x23, 0x3B, 0xB8, 0x70, 0x24, 0x2B, 0xA9, 0x70, 0x25, 0x1B, 0x9A, 0x70, 0x26, 0x0B, 0x8B, 0x70, +0x27, 0x04, 0xB6, 0xF0, 0x27, 0xF4, 0xA7, 0xF0, 0x28, 0xE4, 0xA7, 0x00, 0x29, 0x78, 0x4F, 0x00, +0x29, 0xD4, 0x5F, 0xC0, 0x2A, 0xC4, 0x42, 0xB0, 0x2B, 0xB4, 0x6B, 0xF0, 0x2C, 0xA4, 0x5C, 0xF0, +0x2D, 0x94, 0x4D, 0xF0, 0x2E, 0x84, 0x3E, 0xF0, 0x2F, 0x74, 0x2F, 0xF0, 0x30, 0x64, 0x20, 0xF0, +0x31, 0x5D, 0x4C, 0x70, 0x32, 0x72, 0x27, 0x70, 0x33, 0x3D, 0x2E, 0x70, 0x34, 0x52, 0x09, 0x70, +0x35, 0x1D, 0x10, 0x70, 0x36, 0x31, 0xEB, 0x70, 0x36, 0xFC, 0xF2, 0x70, 0x38, 0x1B, 0x07, 0xF0, +0x38, 0xDC, 0xD4, 0x70, 0x39, 0xFA, 0xE9, 0xF0, 0x3A, 0xBC, 0xB6, 0x70, 0x3B, 0xDA, 0xCB, 0xF0, +0x3C, 0xA5, 0xD2, 0xF0, 0x3D, 0xBA, 0xAD, 0xF0, 0x3E, 0x85, 0xB4, 0xF0, 0x3F, 0x9A, 0x8F, 0xF0, +0x40, 0x65, 0x96, 0xF0, 0x41, 0x83, 0xAC, 0x70, 0x42, 0x45, 0x78, 0xF0, 0x43, 0x63, 0x8E, 0x70, +0x44, 0x25, 0x5A, 0xF0, 0x45, 0x43, 0x70, 0x70, 0x46, 0x05, 0x3C, 0xF0, 0x47, 0x23, 0x52, 0x70, +0x47, 0xEE, 0x59, 0x70, 0x49, 0x03, 0x34, 0x70, 0x49, 0xCE, 0x3B, 0x70, 0x4A, 0xE3, 0x16, 0x70, +0x4B, 0xAE, 0x1D, 0x70, 0x4C, 0xCC, 0x32, 0xF0, 0x4D, 0x8D, 0xFF, 0x70, 0x54, 0x4B, 0xAC, 0xE0, +0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, +0x09, 0x00, 0x00, 0x90, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0xA8, +0xC0, 0x01, 0x09, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x00, +0x00, 0xA8, 0xC0, 0x01, 0x09, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x09, 0x00, 0x00, 0x8C, 0xA0, 0x00, +0x04, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x0F, 0x4C, 0x4D, 0x54, +0x00, 0x4D, 0x41, 0x47, 0x54, 0x00, 0x4D, 0x41, 0x47, 0x53, 0x54, 0x00, 0x53, 0x52, 0x45, 0x54, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x46, 0x6A, 0x01, 0xFD, 0x36, 0x12, 0x00, 0x00, 0x00, +0x1F, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x38, 0x20, 0x2D, 0x20, 0x45, 0x20, 0x53, +0x61, 0x6B, 0x68, 0x61, 0x2C, 0x20, 0x4E, 0x20, 0x4B, 0x75, 0x72, 0x69, 0x6C, 0x20, 0x49, 0x73, + + /* Asia/Taipei */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x54, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xD1, 0x97, 0xD3, 0x00, -0xD2, 0x61, 0x7A, 0x70, 0xD3, 0x79, 0x06, 0x80, 0xD4, 0x42, 0xAD, 0xF0, 0xD5, 0x5A, 0x3A, 0x00, -0xD6, 0x23, 0xE1, 0x70, 0xD7, 0x3C, 0xBF, 0x00, 0xD8, 0x06, 0x66, 0x70, 0xD9, 0x1D, 0xF2, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xC3, 0x55, 0x49, 0x80, +0xD2, 0x54, 0x59, 0x80, 0xD3, 0x8B, 0x7B, 0x80, 0xD4, 0x42, 0xAD, 0xF0, 0xD5, 0x45, 0x22, 0x00, +0xD6, 0x4C, 0xBF, 0xF0, 0xD7, 0x3C, 0xBF, 0x00, 0xD8, 0x06, 0x66, 0x70, 0xD9, 0x1D, 0xF2, 0x80, 0xD9, 0xE7, 0x99, 0xF0, 0xDA, 0xFF, 0x26, 0x00, 0xDB, 0xC8, 0xCD, 0x70, 0xDC, 0xE0, 0x59, 0x80, 0xDD, 0xAA, 0x00, 0xF0, 0xDE, 0x72, 0x73, 0x00, 0xDF, 0xB5, 0x64, 0x70, 0xE0, 0x7C, 0x85, 0x00, 0xE1, 0x96, 0x97, 0xF0, 0xE2, 0x5D, 0xB8, 0x80, 0xE3, 0x77, 0xCB, 0x70, 0xE4, 0x3E, 0xEC, 0x00, @@ -9251,17 +9310,19 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0xE8, 0xF3, 0xD8, 0xF0, 0xE9, 0xE3, 0xD8, 0x00, 0xEA, 0xD5, 0x0C, 0x70, 0xEB, 0xC5, 0x0B, 0x80, 0xEC, 0xB6, 0x3F, 0xF0, 0xED, 0xF7, 0xFC, 0x00, 0xEE, 0x98, 0xC4, 0xF0, 0xEF, 0xD9, 0x2F, 0x80, 0xF0, 0x79, 0xF8, 0x70, 0x07, 0xFC, 0x56, 0x00, 0x08, 0xED, 0x8A, 0x70, 0x09, 0xDD, 0x89, 0x80, -0x0A, 0xCE, 0xBD, 0xF0, 0x11, 0xDA, 0x50, 0x00, 0x12, 0x53, 0x8B, 0xF0, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, -0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x8D, 0x68, -0x01, 0xCC, 0x0D, 0x70, 0x00, 0x00, 0x00, 0x00, +0x0A, 0xCE, 0xBD, 0xF0, 0x11, 0xDB, 0xA1, 0x80, 0x12, 0x54, 0xDD, 0x70, 0x01, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x05, +0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x4A, 0x57, 0x53, 0x54, +0x00, 0x4A, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x8D, 0x68, 0x01, 0xCC, 0x0D, 0x70, 0x00, 0x00, 0x00, +0x00, /* Asia/Tashkent */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x18, 0xAA, 0x19, 0x83, 0x08, +0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x18, 0xAA, 0x19, 0x83, 0x09, 0xB5, 0xA3, 0xEF, 0x30, 0x15, 0x27, 0x7D, 0xA0, 0x16, 0x18, 0xB2, 0x10, 0x17, 0x08, 0xB1, 0x20, 0x17, 0xF9, 0xE5, 0x90, 0x18, 0xE9, 0xE4, 0xA0, 0x19, 0xDB, 0x19, 0x10, 0x1A, 0xCC, 0x69, 0xA0, 0x1B, 0xBC, 0x76, 0xC0, 0x1C, 0xAC, 0x67, 0xC0, 0x1D, 0x9C, 0x58, 0xC0, 0x1E, 0x8C, 0x49, 0xC0, @@ -9270,7 +9331,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x27, 0x04, 0xFD, 0x40, 0x27, 0xF4, 0xEE, 0x40, 0x28, 0xBF, 0xD9, 0x20, 0x28, 0xE4, 0xED, 0x50, 0x29, 0x60, 0xBE, 0x30, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x08, 0x07, 0x09, 0x00, 0x00, -0x40, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, +0x40, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x01, 0x09, 0x00, 0x00, 0x54, 0x60, 0x01, 0x09, 0x00, 0x00, 0x46, 0x50, 0x00, 0x0F, 0x00, 0x00, 0x54, 0x60, 0x01, 0x13, 0x00, 0x00, 0x46, 0x50, 0x00, 0x0F, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x41, @@ -9283,7 +9344,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Tbilisi */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x47, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x19, 0xAA, 0x19, 0x99, 0xFC, +0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x19, 0xAA, 0x19, 0x9A, 0x06, 0xE7, 0xDA, 0x0C, 0x50, 0x15, 0x27, 0x99, 0xC0, 0x16, 0x18, 0xCE, 0x30, 0x17, 0x08, 0xCD, 0x40, 0x17, 0xFA, 0x01, 0xB0, 0x18, 0xEA, 0x00, 0xC0, 0x19, 0xDB, 0x35, 0x30, 0x1A, 0xCC, 0x85, 0xC0, 0x1B, 0xBC, 0x92, 0xE0, 0x1C, 0xAC, 0x83, 0xE0, 0x1D, 0x9C, 0x74, 0xE0, 0x1E, 0x8C, 0x65, 0xE0, @@ -9300,7 +9361,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x08, 0x07, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0B, 0x0A, 0x0B, 0x0A, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, -0x0B, 0x0A, 0x08, 0x07, 0x0B, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, +0x0B, 0x0A, 0x08, 0x07, 0x0B, 0x00, 0x00, 0x29, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x05, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0A, 0x00, 0x00, 0x38, 0x40, 0x00, 0x05, 0x00, 0x00, 0x38, 0x40, 0x00, 0x05, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0A, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x10, 0x00, 0x00, 0x38, 0x40, 0x01, 0x14, 0x00, 0x00, 0x2A, 0x30, 0x00, @@ -9425,13 +9486,13 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Tokyo */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4A, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xC3, 0xCE, 0x85, 0x70, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xC3, 0x55, 0x3B, 0x70, 0xD7, 0x3E, 0x1E, 0x90, 0xD7, 0xEC, 0x16, 0x80, 0xD8, 0xF9, 0x16, 0x90, 0xD9, 0xCB, 0xF8, 0x80, 0xDB, 0x07, 0x1D, 0x10, 0xDB, 0xAB, 0xDA, 0x80, 0xDC, 0xE6, 0xFF, 0x10, 0xDD, 0x8B, 0xBC, 0x80, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x00, 0x00, -0x00, 0x8C, 0xA0, 0x01, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x08, 0x43, 0x4A, 0x54, 0x00, 0x4A, -0x44, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xBB, -0xC4, 0x01, 0xE7, 0xE4, 0x48, 0x00, 0x00, 0x00, 0x00, +0x00, 0x8C, 0xA0, 0x01, 0x05, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x09, 0x4A, 0x43, 0x53, 0x54, 0x00, +0x4A, 0x44, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, +0xBB, 0xC4, 0x01, 0xE7, 0xE4, 0x48, 0x00, 0x00, 0x00, 0x00, /* Asia/Ujung_Pandang */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9492,23 +9553,17 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Urumqi */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x43, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xB0, 0xFE, 0xBA, 0x64, -0x13, 0x6D, 0xD7, 0x20, 0x1E, 0xBA, 0x36, 0x00, 0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, -0x21, 0x49, 0x61, 0x70, 0x22, 0x5E, 0x4A, 0x80, 0x23, 0x29, 0x43, 0x70, 0x24, 0x47, 0x67, 0x00, -0x25, 0x12, 0x5F, 0xF0, 0x26, 0x27, 0x49, 0x00, 0x26, 0xF2, 0x41, 0xF0, 0x28, 0x07, 0x2B, 0x00, -0x28, 0xD2, 0x23, 0xF0, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x00, 0x00, 0x52, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x00, 0x00, -0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x55, 0x52, -0x55, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xCC, 0x29, 0xA0, 0x01, 0x98, 0x4C, 0xBD, 0x00, 0x00, 0x00, 0x18, 0x6D, -0x6F, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x54, 0x69, 0x62, 0x65, 0x74, 0x20, 0x26, 0x20, 0x58, -0x69, 0x6E, 0x6A, 0x69, 0x61, 0x6E, 0x67, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xB0, 0xFE, 0xBA, 0x64, +0x01, 0x00, 0x00, 0x52, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x54, 0x60, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x58, 0x4A, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x29, 0xA0, 0x01, 0x98, 0x4C, +0xBD, 0x00, 0x00, 0x00, 0x0D, 0x58, 0x69, 0x6E, 0x6A, 0x69, 0x61, 0x6E, 0x67, 0x20, 0x54, 0x69, +0x6D, 0x65, /* Asia/Ust-Nera */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x19, 0xA1, 0xDB, 0xDD, 0xBA, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x19, 0xA1, 0xDB, 0xDD, 0xBA, 0xB5, 0xA3, 0xC5, 0x00, 0x15, 0x27, 0x53, 0x70, 0x16, 0x18, 0x6B, 0xC0, 0x17, 0x08, 0x6A, 0xD0, 0x17, 0xF9, 0x9F, 0x40, 0x18, 0xE9, 0x9E, 0x50, 0x19, 0xDA, 0xD2, 0xC0, 0x1A, 0xCC, 0x23, 0x50, 0x1B, 0xBC, 0x30, 0x70, 0x1C, 0xAC, 0x21, 0x70, 0x1D, 0x9C, 0x12, 0x70, 0x1E, 0x8C, 0x03, 0x70, @@ -9525,20 +9580,21 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x44, 0x25, 0x5A, 0xF0, 0x45, 0x43, 0x70, 0x70, 0x46, 0x05, 0x3C, 0xF0, 0x47, 0x23, 0x52, 0x70, 0x47, 0xEE, 0x59, 0x70, 0x49, 0x03, 0x34, 0x70, 0x49, 0xCE, 0x3B, 0x70, 0x4A, 0xE3, 0x16, 0x70, 0x4B, 0xAE, 0x1D, 0x70, 0x4C, 0xCC, 0x32, 0xF0, 0x4D, 0x8D, 0xFF, 0x70, 0x4E, 0x6D, 0xF4, 0x40, -0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x07, 0x08, 0x05, 0x04, 0x03, 0x06, 0x05, 0x06, 0x05, 0x06, +0x54, 0x4B, 0xBA, 0xF0, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x05, 0x06, 0x05, +0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x07, 0x08, 0x05, 0x04, 0x03, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x09, -0x0A, 0x00, 0x00, 0x86, 0x46, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, -0x90, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x0E, 0x00, -0x00, 0x9A, 0xB0, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x0E, 0x00, 0x00, 0x9A, 0xB0, 0x01, -0x0E, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x09, 0x00, 0x00, 0x9A, -0xB0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x54, 0x00, 0x4D, 0x41, 0x47, 0x54, -0x00, 0x4D, 0x41, 0x47, 0x53, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xEB, 0xD7, 0x1B, 0x01, 0xED, 0x34, 0x6A, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, -0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x37, 0x20, 0x2D, 0x20, 0x4F, 0x79, 0x6D, 0x79, 0x61, 0x6B, -0x6F, 0x6E, 0x73, 0x6B, 0x79, +0x05, 0x06, 0x05, 0x09, 0x0A, 0x0B, 0x00, 0x00, 0x86, 0x46, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, +0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x09, 0x00, 0x00, +0xA8, 0xC0, 0x01, 0x0E, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x0E, +0x00, 0x00, 0x9A, 0xB0, 0x01, 0x0E, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, +0x00, 0x09, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x14, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x14, 0x4C, 0x4D, +0x54, 0x00, 0x59, 0x41, 0x4B, 0x54, 0x00, 0x4D, 0x41, 0x47, 0x54, 0x00, 0x4D, 0x41, 0x47, 0x53, +0x54, 0x00, 0x56, 0x4C, 0x41, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xEB, 0xD7, 0x1B, 0x01, 0xED, 0x34, 0x6A, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F, +0x77, 0x2B, 0x30, 0x37, 0x20, 0x2D, 0x20, 0x4F, 0x79, 0x6D, 0x79, 0x61, 0x6B, 0x6F, 0x6E, 0x73, +0x6B, 0x79, /* Asia/Vientiane */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9553,7 +9609,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Asia/Vladivostok */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA7, 0x59, 0x47, 0x50, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA7, 0x59, 0x47, 0x5A, 0xB5, 0xA3, 0xB6, 0xF0, 0x15, 0x27, 0x45, 0x60, 0x16, 0x18, 0x79, 0xD0, 0x17, 0x08, 0x78, 0xE0, 0x17, 0xF9, 0xAD, 0x50, 0x18, 0xE9, 0xAC, 0x60, 0x19, 0xDA, 0xE0, 0xD0, 0x1A, 0xCC, 0x31, 0x60, 0x1B, 0xBC, 0x3E, 0x80, 0x1C, 0xAC, 0x2F, 0x80, 0x1D, 0x9C, 0x20, 0x80, 0x1E, 0x8C, 0x11, 0x80, @@ -9569,24 +9625,24 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x40, 0x65, 0xA5, 0x00, 0x41, 0x83, 0xBA, 0x80, 0x42, 0x45, 0x87, 0x00, 0x43, 0x63, 0x9C, 0x80, 0x44, 0x25, 0x69, 0x00, 0x45, 0x43, 0x7E, 0x80, 0x46, 0x05, 0x4B, 0x00, 0x47, 0x23, 0x60, 0x80, 0x47, 0xEE, 0x67, 0x80, 0x49, 0x03, 0x42, 0x80, 0x49, 0xCE, 0x49, 0x80, 0x4A, 0xE3, 0x24, 0x80, -0x4B, 0xAE, 0x2B, 0x80, 0x4C, 0xCC, 0x41, 0x00, 0x4D, 0x8E, 0x0D, 0x80, 0x01, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x4B, 0xAE, 0x2B, 0x80, 0x4C, 0xCC, 0x41, 0x00, 0x4D, 0x8E, 0x0D, 0x80, 0x54, 0x4B, 0xBA, 0xF0, +0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x00, 0x00, 0x7B, 0xB0, -0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x09, 0x00, 0x00, -0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x09, -0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, -0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xCB, 0x32, 0x3A, 0x01, 0xDB, 0xF8, 0xF5, 0x00, 0x00, 0x00, 0x16, 0x4D, -0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x37, 0x20, 0x2D, 0x20, 0x41, 0x6D, 0x75, 0x72, 0x20, -0x52, 0x69, 0x76, 0x65, 0x72, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, +0x04, 0x00, 0x00, 0x7B, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x9A, +0xB0, 0x01, 0x09, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, +0x00, 0x9A, 0xB0, 0x01, 0x09, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, +0x04, 0x00, 0x00, 0x9A, 0xB0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x56, 0x4C, 0x41, 0x54, 0x00, +0x56, 0x4C, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x32, 0x3A, 0x01, 0xDB, 0xF8, 0xF5, +0x00, 0x00, 0x00, 0x16, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x37, 0x20, 0x2D, 0x20, +0x41, 0x6D, 0x75, 0x72, 0x20, 0x52, 0x69, 0x76, 0x65, 0x72, /* Asia/Yakutsk */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xDB, 0xEA, 0x70, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0F, 0xA1, 0xDB, 0xEA, 0x70, 0xB5, 0xA3, 0xC5, 0x00, 0x15, 0x27, 0x53, 0x70, 0x16, 0x18, 0x87, 0xE0, 0x17, 0x08, 0x86, 0xF0, 0x17, 0xF9, 0xBB, 0x60, 0x18, 0xE9, 0xBA, 0x70, 0x19, 0xDA, 0xEE, 0xE0, 0x1A, 0xCC, 0x3F, 0x70, 0x1B, 0xBC, 0x4C, 0x90, 0x1C, 0xAC, 0x3D, 0x90, 0x1D, 0x9C, 0x2E, 0x90, 0x1E, 0x8C, 0x1F, 0x90, @@ -9602,24 +9658,24 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x40, 0x65, 0xB3, 0x10, 0x41, 0x83, 0xC8, 0x90, 0x42, 0x45, 0x95, 0x10, 0x43, 0x63, 0xAA, 0x90, 0x44, 0x25, 0x77, 0x10, 0x45, 0x43, 0x8C, 0x90, 0x46, 0x05, 0x59, 0x10, 0x47, 0x23, 0x6E, 0x90, 0x47, 0xEE, 0x75, 0x90, 0x49, 0x03, 0x50, 0x90, 0x49, 0xCE, 0x57, 0x90, 0x4A, 0xE3, 0x32, 0x90, -0x4B, 0xAE, 0x39, 0x90, 0x4C, 0xCC, 0x4F, 0x10, 0x4D, 0x8E, 0x1B, 0x90, 0x01, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x4B, 0xAE, 0x39, 0x90, 0x4C, 0xCC, 0x4F, 0x10, 0x4D, 0x8E, 0x1B, 0x90, 0x54, 0x4B, 0xC9, 0x00, +0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x00, 0x00, 0x79, 0x90, -0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, -0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, -0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, -0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x53, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xE7, 0xEF, 0x00, 0x01, 0xD8, 0x83, 0x8A, 0x00, 0x00, 0x00, 0x16, 0x4D, -0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x36, 0x20, 0x2D, 0x20, 0x4C, 0x65, 0x6E, 0x61, 0x20, -0x52, 0x69, 0x76, 0x65, 0x72, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, +0x04, 0x00, 0x00, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x8C, +0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, +0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, +0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x54, 0x00, +0x59, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xEF, 0x00, 0x01, 0xD8, 0x83, 0x8A, +0x00, 0x00, 0x00, 0x16, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x36, 0x20, 0x2D, 0x20, +0x4C, 0x65, 0x6E, 0x61, 0x20, 0x52, 0x69, 0x76, 0x65, 0x72, /* Asia/Yekaterinburg */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1A, 0xA1, 0x12, 0xAD, 0xF0, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1A, 0xA1, 0x12, 0xAD, 0xE7, 0xB5, 0xA3, 0xFD, 0x40, 0x15, 0x27, 0x8B, 0xB0, 0x16, 0x18, 0xC0, 0x20, 0x17, 0x08, 0xBF, 0x30, 0x17, 0xF9, 0xF3, 0xA0, 0x18, 0xE9, 0xF2, 0xB0, 0x19, 0xDB, 0x27, 0x20, 0x1A, 0xCC, 0x77, 0xB0, 0x1B, 0xBC, 0x84, 0xD0, 0x1C, 0xAC, 0x75, 0xD0, 0x1D, 0x9C, 0x66, 0xD0, 0x1E, 0x8C, 0x57, 0xD0, @@ -9635,21 +9691,22 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x40, 0x65, 0xEB, 0x50, 0x41, 0x84, 0x00, 0xD0, 0x42, 0x45, 0xCD, 0x50, 0x43, 0x63, 0xE2, 0xD0, 0x44, 0x25, 0xAF, 0x50, 0x45, 0x43, 0xC4, 0xD0, 0x46, 0x05, 0x91, 0x50, 0x47, 0x23, 0xA6, 0xD0, 0x47, 0xEE, 0xAD, 0xD0, 0x49, 0x03, 0x88, 0xD0, 0x49, 0xCE, 0x8F, 0xD0, 0x4A, 0xE3, 0x6A, 0xD0, -0x4B, 0xAE, 0x71, 0xD0, 0x4C, 0xCC, 0x87, 0x50, 0x4D, 0x8E, 0x53, 0xD0, 0x01, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x06, 0x07, 0x0B, 0x08, 0x09, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, +0x4B, 0xAE, 0x71, 0xD0, 0x4C, 0xCC, 0x87, 0x50, 0x4D, 0x8E, 0x53, 0xD0, 0x54, 0x4C, 0x01, 0x40, +0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x0B, 0x08, 0x09, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, -0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0C, 0x00, 0x00, 0x38, 0xD0, -0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x54, 0x60, 0x01, 0x09, 0x00, 0x00, -0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x54, 0x60, 0x01, 0x09, -0x00, 0x00, 0x46, 0x50, 0x01, 0x09, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x54, 0x60, -0x01, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x00, 0x15, 0x00, 0x00, 0x54, 0x60, 0x01, 0x0F, 0x00, 0x00, -0x46, 0x50, 0x00, 0x15, 0x00, 0x00, 0x54, 0x60, 0x00, 0x15, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x56, -0x45, 0x54, 0x00, 0x53, 0x56, 0x45, 0x53, 0x54, 0x00, 0x59, 0x45, 0x4B, 0x53, 0x54, 0x00, 0x59, -0x45, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, -0x13, 0x48, 0x01, 0x6F, 0x20, 0x60, 0x00, 0x00, 0x00, 0x11, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, -0x2B, 0x30, 0x32, 0x20, 0x2D, 0x20, 0x55, 0x72, 0x61, 0x6C, 0x73, +0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0C, +0x0B, 0x00, 0x00, 0x38, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x54, +0x60, 0x01, 0x09, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x00, 0x04, 0x00, +0x00, 0x54, 0x60, 0x01, 0x09, 0x00, 0x00, 0x46, 0x50, 0x01, 0x09, 0x00, 0x00, 0x38, 0x40, 0x00, +0x04, 0x00, 0x00, 0x54, 0x60, 0x01, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x00, 0x15, 0x00, 0x00, 0x54, +0x60, 0x01, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x00, 0x15, 0x00, 0x00, 0x54, 0x60, 0x00, 0x15, 0x4C, +0x4D, 0x54, 0x00, 0x53, 0x56, 0x45, 0x54, 0x00, 0x53, 0x56, 0x45, 0x53, 0x54, 0x00, 0x59, 0x45, +0x4B, 0x53, 0x54, 0x00, 0x59, 0x45, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, +0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xE0, 0x13, 0x48, 0x01, 0x6F, 0x20, 0x60, 0x00, 0x00, 0x00, 0x11, 0x4D, +0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x32, 0x20, 0x2D, 0x20, 0x55, 0x72, 0x61, 0x6C, 0x73, + /* Asia/Yerevan */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10174,15 +10231,15 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Atlantic/St_Helena */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xDC, 0x42, 0x9B, 0x58, -0x01, 0xFF, 0xFF, 0xFA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4A, 0x4D, 0x54, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, +0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x0A, 0xCD, 0x01, 0x09, 0xF5, 0xF0, 0x00, 0x00, 0x00, 0x00, /* Australia/ACT */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, +0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, 0xCD, 0xA7, 0x39, 0x70, 0xCE, 0xA0, 0x73, 0x00, 0xCF, 0x87, 0x1B, 0x70, 0x03, 0x70, 0x39, 0x80, 0x04, 0x0D, 0x1C, 0x00, 0x05, 0x50, 0x1B, 0x80, 0x05, 0xF6, 0x38, 0x80, 0x07, 0x2F, 0xFD, 0x80, @@ -10227,14 +10284,15 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x9A, -0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, -0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x05, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, +0x00, 0x8C, 0xA0, 0x00, 0x05, 0x41, 0x45, 0x44, 0x54, 0x00, 0x41, 0x45, 0x53, 0x54, 0x00, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Australia/Adelaide */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xAD, 0xA4, +0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xAD, 0xA4, 0x9C, 0xBC, 0x27, 0xF8, 0xCB, 0x54, 0xBA, 0x08, 0xCB, 0xC7, 0x5E, 0x78, 0xCC, 0xB7, 0x5D, 0x88, 0xCD, 0xA7, 0x40, 0x78, 0xCE, 0xA0, 0x7A, 0x08, 0xCF, 0x87, 0x22, 0x78, 0x03, 0x70, 0x40, 0x88, 0x04, 0x0D, 0x23, 0x08, 0x05, 0x50, 0x22, 0x88, 0x05, 0xF6, 0x3F, 0x88, 0x07, 0x30, 0x04, 0x88, @@ -10279,30 +10337,31 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x93, -0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, -0x00, 0x85, 0x98, 0x00, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x54, 0x0C, 0xED, 0x01, 0xE6, 0x1E, 0x9D, 0x00, 0x00, 0x00, 0x0F, 0x53, 0x6F, 0x75, -0x74, 0x68, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6C, 0x69, 0x61, +0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x05, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, +0x00, 0x85, 0x98, 0x00, 0x05, 0x41, 0x43, 0x44, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x0C, 0xED, 0x01, 0xE6, 0x1E, 0x9D, 0x00, +0x00, 0x00, 0x0F, 0x53, 0x6F, 0x75, 0x74, 0x68, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6C, +0x69, 0x61, /* Australia/Brisbane */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, 0xCD, 0xA7, 0x39, 0x70, 0xCE, 0xA0, 0x73, 0x00, 0xCF, 0x87, 0x1B, 0x70, 0x03, 0x70, 0x39, 0x80, 0x04, 0x0D, 0x1C, 0x00, 0x25, 0x49, 0xCD, 0x00, 0x25, 0xEF, 0xEA, 0x00, 0x27, 0x29, 0xAF, 0x00, 0x27, 0xCF, 0xCC, 0x00, 0x29, 0x09, 0x91, 0x00, 0x29, 0xAF, 0xAE, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x9A, 0xB0, -0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, -0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x5F, 0x6B, 0x15, 0x01, 0xFC, 0x2B, 0x25, 0x00, 0x00, 0x00, 0x1B, 0x51, 0x75, 0x65, 0x65, -0x6E, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x20, 0x2D, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, -0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, +0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x05, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, +0x8C, 0xA0, 0x00, 0x05, 0x41, 0x45, 0x44, 0x54, 0x00, 0x41, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x6B, 0x15, 0x01, 0xFC, 0x2B, 0x25, 0x00, 0x00, +0x00, 0x1B, 0x51, 0x75, 0x65, 0x65, 0x6E, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x20, 0x2D, 0x20, 0x6D, +0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* Australia/Broken_Hill */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xAD, 0xA4, +0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xAD, 0xA4, 0x9C, 0xBC, 0x27, 0xF8, 0xCB, 0x54, 0xBA, 0x08, 0xCB, 0xC7, 0x5E, 0x78, 0xCC, 0xB7, 0x5D, 0x88, 0xCD, 0xA7, 0x40, 0x78, 0xCE, 0xA0, 0x7A, 0x08, 0xCF, 0x87, 0x22, 0x78, 0x03, 0x70, 0x40, 0x88, 0x04, 0x0D, 0x23, 0x08, 0x05, 0x50, 0x22, 0x88, 0x05, 0xF6, 0x3F, 0x88, 0x07, 0x30, 0x04, 0x88, @@ -10347,16 +10406,17 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, -0x03, 0x02, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x00, 0x00, -0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x93, 0xC8, 0x01, 0xEA, 0x7E, 0x68, 0x00, 0x00, -0x00, 0x1C, 0x4E, 0x65, 0x77, 0x20, 0x53, 0x6F, 0x75, 0x74, 0x68, 0x20, 0x57, 0x61, 0x6C, 0x65, -0x73, 0x20, 0x2D, 0x20, 0x59, 0x61, 0x6E, 0x63, 0x6F, 0x77, 0x69, 0x6E, 0x6E, 0x61, +0x03, 0x02, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x05, 0x00, 0x00, +0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x05, 0x41, 0x43, 0x44, 0x54, 0x00, 0x41, +0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x93, 0xC8, +0x01, 0xEA, 0x7E, 0x68, 0x00, 0x00, 0x00, 0x1C, 0x4E, 0x65, 0x77, 0x20, 0x53, 0x6F, 0x75, 0x74, +0x68, 0x20, 0x57, 0x61, 0x6C, 0x65, 0x73, 0x20, 0x2D, 0x20, 0x59, 0x61, 0x6E, 0x63, 0x6F, 0x77, +0x69, 0x6E, 0x6E, 0x61, /* Australia/Canberra */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, +0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, 0xCD, 0xA7, 0x39, 0x70, 0xCE, 0xA0, 0x73, 0x00, 0xCF, 0x87, 0x1B, 0x70, 0x03, 0x70, 0x39, 0x80, 0x04, 0x0D, 0x1C, 0x00, 0x05, 0x50, 0x1B, 0x80, 0x05, 0xF6, 0x38, 0x80, 0x07, 0x2F, 0xFD, 0x80, @@ -10401,14 +10461,15 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x9A, -0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, -0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x05, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, +0x00, 0x8C, 0xA0, 0x00, 0x05, 0x41, 0x45, 0x44, 0x54, 0x00, 0x41, 0x45, 0x53, 0x54, 0x00, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Australia/Currie */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9B, 0xD5, 0x78, 0x80, +0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9B, 0xD5, 0x78, 0x80, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, 0xCD, 0xA7, 0x39, 0x70, 0xCE, 0xA0, 0x73, 0x00, 0xCF, 0x87, 0x1B, 0x70, 0x03, 0x70, 0x39, 0x80, 0x04, 0x0D, 0x1C, 0x00, 0x05, 0x50, 0x1B, 0x80, 0x05, 0xF6, 0x38, 0x80, 0x07, 0x2F, 0xFD, 0x80, @@ -10453,43 +10514,43 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x8C, -0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, -0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x4C, 0x65, 0x4A, 0x01, 0xEE, 0x2E, 0x6A, 0x00, 0x00, 0x00, 0x16, 0x54, 0x61, 0x73, -0x6D, 0x61, 0x6E, 0x69, 0x61, 0x20, 0x2D, 0x20, 0x4B, 0x69, 0x6E, 0x67, 0x20, 0x49, 0x73, 0x6C, -0x61, 0x6E, 0x64, +0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x05, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x05, 0x00, +0x00, 0x8C, 0xA0, 0x00, 0x00, 0x41, 0x45, 0x53, 0x54, 0x00, 0x41, 0x45, 0x44, 0x54, 0x00, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x65, 0x4A, 0x01, 0xEE, 0x2E, 0x6A, 0x00, +0x00, 0x00, 0x16, 0x54, 0x61, 0x73, 0x6D, 0x61, 0x6E, 0x69, 0x61, 0x20, 0x2D, 0x20, 0x4B, 0x69, +0x6E, 0x67, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, /* Australia/Darwin */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xAD, 0xA4, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xAD, 0xA4, 0x9C, 0xBC, 0x27, 0xF8, 0xCB, 0x54, 0xBA, 0x08, 0xCB, 0xC7, 0x5E, 0x78, 0xCC, 0xB7, 0x5D, 0x88, 0xCD, 0xA7, 0x40, 0x78, 0xCE, 0xA0, 0x7A, 0x08, 0xCF, 0x87, 0x22, 0x78, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, -0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x4E, 0x75, 0x01, 0xDA, 0x4B, 0x45, -0x00, 0x00, 0x00, 0x12, 0x4E, 0x6F, 0x72, 0x74, 0x68, 0x65, 0x72, 0x6E, 0x20, 0x54, 0x65, 0x72, -0x72, 0x69, 0x74, 0x6F, 0x72, 0x79, +0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x05, +0x41, 0x43, 0x44, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, +0x4E, 0x75, 0x01, 0xDA, 0x4B, 0x45, 0x00, 0x00, 0x00, 0x12, 0x4E, 0x6F, 0x72, 0x74, 0x68, 0x65, +0x72, 0x6E, 0x20, 0x54, 0x65, 0x72, 0x72, 0x69, 0x74, 0x6F, 0x72, 0x79, /* Australia/Eucla */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x9C, 0x4E, 0xB8, 0x30, +0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x9C, 0x4E, 0xB8, 0x30, 0x9C, 0xBC, 0x32, 0x84, 0xCB, 0x54, 0xC4, 0x94, 0xCB, 0xC7, 0x69, 0x04, 0xCC, 0xB7, 0x68, 0x14, 0xCD, 0xA7, 0x4B, 0x04, 0x09, 0x0F, 0xF1, 0x14, 0x09, 0xB6, 0x0E, 0x14, 0x1A, 0x01, 0x58, 0x14, 0x1A, 0xA7, 0x75, 0x14, 0x29, 0x25, 0x52, 0x14, 0x29, 0xAF, 0xBF, 0x94, 0x45, 0x71, 0xB4, 0x94, 0x46, 0x05, 0x5C, 0x94, 0x47, 0x23, 0x72, 0x14, 0x47, 0xEE, 0x79, 0x14, 0x49, 0x03, 0x54, 0x14, 0x49, 0xCE, 0x5B, 0x14, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x89, 0x1C, 0x01, 0x00, 0x00, 0x00, 0x7B, 0x0C, -0x00, 0x00, 0x00, 0x00, 0x89, 0x1C, 0x01, 0x00, 0x00, 0x00, 0x7B, 0x0C, 0x00, 0x00, 0x43, 0x57, -0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xEE, 0xED, 0x01, -0xD7, 0x4B, 0x0A, 0x00, 0x00, 0x00, 0x1E, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x41, -0x75, 0x73, 0x74, 0x72, 0x61, 0x6C, 0x69, 0x61, 0x20, 0x2D, 0x20, 0x45, 0x75, 0x63, 0x6C, 0x61, -0x20, 0x61, 0x72, 0x65, 0x61, +0x00, 0x06, 0x00, 0x00, 0x89, 0x1C, 0x01, 0x00, 0x00, 0x00, 0x7B, 0x0C, 0x00, 0x06, 0x41, 0x43, +0x57, 0x44, 0x54, 0x00, 0x41, 0x43, 0x57, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x58, 0xEE, 0xED, 0x01, 0xD7, 0x4B, 0x0A, 0x00, 0x00, 0x00, 0x1E, 0x57, 0x65, +0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6C, 0x69, 0x61, 0x20, +0x2D, 0x20, 0x45, 0x75, 0x63, 0x6C, 0x61, 0x20, 0x61, 0x72, 0x65, 0x61, /* Australia/Hobart */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9B, 0xD5, 0x78, 0x80, +0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9B, 0xD5, 0x78, 0x80, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, 0xCD, 0xA7, 0x39, 0x70, 0xCE, 0xA0, 0x73, 0x00, 0xCF, 0x87, 0x1B, 0x70, 0xFB, 0xC2, 0x8D, 0x00, 0xFC, 0xB2, 0x7E, 0x00, 0xFD, 0xC7, 0x59, 0x00, 0xFE, 0x76, 0xB0, 0x80, 0xFF, 0xA7, 0x3B, 0x00, @@ -10537,15 +10598,16 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, -0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xE4, 0xF2, 0x01, 0xF3, 0x72, -0x12, 0x00, 0x00, 0x00, 0x19, 0x54, 0x61, 0x73, 0x6D, 0x61, 0x6E, 0x69, 0x61, 0x20, 0x2D, 0x20, -0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, +0x05, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x05, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x41, 0x45, 0x53, +0x54, 0x00, 0x41, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x47, 0xE4, 0xF2, 0x01, 0xF3, 0x72, 0x12, 0x00, 0x00, 0x00, 0x19, 0x54, 0x61, 0x73, 0x6D, 0x61, +0x6E, 0x69, 0x61, 0x20, 0x2D, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, +0x69, 0x6F, 0x6E, 0x73, /* Australia/LHI */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x14, 0xFE, 0x66, 0xE0, +0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0F, 0x14, 0xFE, 0x66, 0xE0, 0x16, 0x38, 0x40, 0xF8, 0x16, 0xE7, 0x8A, 0x68, 0x18, 0x21, 0x5D, 0x78, 0x18, 0xC7, 0x6C, 0x68, 0x1A, 0x01, 0x3F, 0x78, 0x1A, 0xA7, 0x4E, 0x68, 0x1B, 0xE1, 0x21, 0x78, 0x1C, 0x87, 0x30, 0x68, 0x1D, 0xC1, 0x03, 0x78, 0x1E, 0x79, 0x8E, 0x70, 0x1F, 0x97, 0xAA, 0xF8, 0x20, 0x59, 0x70, 0x70, @@ -10582,14 +10644,15 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xB8, -0x01, 0x04, 0x00, 0x00, 0x93, 0xA8, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x04, 0x45, 0x53, -0x54, 0x00, 0x4C, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x01, 0x05, 0x00, 0x00, 0x93, 0xA8, 0x00, 0x0A, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x05, 0x41, 0x45, +0x53, 0x54, 0x00, 0x4C, 0x48, 0x44, 0x54, 0x00, 0x4C, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* Australia/Lindeman */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, +0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, 0xCD, 0xA7, 0x39, 0x70, 0xCE, 0xA0, 0x73, 0x00, 0xCF, 0x87, 0x1B, 0x70, 0x03, 0x70, 0x39, 0x80, 0x04, 0x0D, 0x1C, 0x00, 0x25, 0x49, 0xCD, 0x00, 0x25, 0xEF, 0xEA, 0x00, 0x27, 0x29, 0xAF, 0x00, @@ -10597,16 +10660,16 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x2A, 0xE9, 0x73, 0x00, 0x2B, 0x98, 0xCA, 0x80, 0x2C, 0xD2, 0x8F, 0x80, 0x2D, 0x78, 0xAC, 0x80, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x01, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x67, 0x95, 0x01, 0xF6, 0x03, -0xA0, 0x00, 0x00, 0x00, 0x1C, 0x51, 0x75, 0x65, 0x65, 0x6E, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x20, -0x2D, 0x20, 0x48, 0x6F, 0x6C, 0x69, 0x64, 0x61, 0x79, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, -0x73, +0x05, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x05, 0x41, 0x45, 0x44, +0x54, 0x00, 0x41, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x6A, 0x67, 0x95, 0x01, 0xF6, 0x03, 0xA0, 0x00, 0x00, 0x00, 0x1C, 0x51, 0x75, 0x65, 0x65, 0x6E, +0x73, 0x6C, 0x61, 0x6E, 0x64, 0x20, 0x2D, 0x20, 0x48, 0x6F, 0x6C, 0x69, 0x64, 0x61, 0x79, 0x20, +0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, /* Australia/Lord_Howe */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x14, 0xFE, 0x66, 0xE0, +0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0F, 0x14, 0xFE, 0x66, 0xE0, 0x16, 0x38, 0x40, 0xF8, 0x16, 0xE7, 0x8A, 0x68, 0x18, 0x21, 0x5D, 0x78, 0x18, 0xC7, 0x6C, 0x68, 0x1A, 0x01, 0x3F, 0x78, 0x1A, 0xA7, 0x4E, 0x68, 0x1B, 0xE1, 0x21, 0x78, 0x1C, 0x87, 0x30, 0x68, 0x1D, 0xC1, 0x03, 0x78, 0x1E, 0x79, 0x8E, 0x70, 0x1F, 0x97, 0xAA, 0xF8, 0x20, 0x59, 0x70, 0x70, @@ -10643,15 +10706,16 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xB8, -0x01, 0x04, 0x00, 0x00, 0x93, 0xA8, 0x00, 0x04, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x04, 0x45, 0x53, -0x54, 0x00, 0x4C, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x59, 0x30, 0x08, 0x02, 0x05, 0x66, 0x6D, 0x00, 0x00, 0x00, 0x10, 0x4C, 0x6F, 0x72, 0x64, 0x20, -0x48, 0x6F, 0x77, 0x65, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, +0x01, 0x05, 0x00, 0x00, 0x93, 0xA8, 0x00, 0x0A, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x05, 0x41, 0x45, +0x53, 0x54, 0x00, 0x4C, 0x48, 0x44, 0x54, 0x00, 0x4C, 0x48, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x30, 0x08, 0x02, 0x05, 0x66, 0x6D, 0x00, 0x00, 0x00, +0x10, 0x4C, 0x6F, 0x72, 0x64, 0x20, 0x48, 0x6F, 0x77, 0x65, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, +0x64, /* Australia/Melbourne */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, +0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, 0xCD, 0xA7, 0x39, 0x70, 0xCE, 0xA0, 0x73, 0x00, 0xCF, 0x87, 0x1B, 0x70, 0x03, 0x70, 0x39, 0x80, 0x04, 0x0D, 0x1C, 0x00, 0x05, 0x50, 0x1B, 0x80, 0x05, 0xF6, 0x38, 0x80, 0x07, 0x2F, 0xFD, 0x80, @@ -10696,25 +10760,25 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x9A, -0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, -0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x4F, 0xA0, 0x1D, 0x01, 0xEF, 0xDC, 0x1A, 0x00, 0x00, 0x00, 0x08, 0x56, 0x69, 0x63, -0x74, 0x6F, 0x72, 0x69, 0x61, +0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x05, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, +0x00, 0x8C, 0xA0, 0x00, 0x05, 0x41, 0x45, 0x44, 0x54, 0x00, 0x41, 0x45, 0x53, 0x54, 0x00, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xA0, 0x1D, 0x01, 0xEF, 0xDC, 0x1A, 0x00, +0x00, 0x00, 0x08, 0x56, 0x69, 0x63, 0x74, 0x6F, 0x72, 0x69, 0x61, /* Australia/North */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xAD, 0xA4, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xAD, 0xA4, 0x9C, 0xBC, 0x27, 0xF8, 0xCB, 0x54, 0xBA, 0x08, 0xCB, 0xC7, 0x5E, 0x78, 0xCC, 0xB7, 0x5D, 0x88, 0xCD, 0xA7, 0x40, 0x78, 0xCE, 0xA0, 0x7A, 0x08, 0xCF, 0x87, 0x22, 0x78, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, -0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, -0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x05, +0x41, 0x43, 0x44, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/NSW */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, +0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, 0xCD, 0xA7, 0x39, 0x70, 0xCE, 0xA0, 0x73, 0x00, 0xCF, 0x87, 0x1B, 0x70, 0x03, 0x70, 0x39, 0x80, 0x04, 0x0D, 0x1C, 0x00, 0x05, 0x50, 0x1B, 0x80, 0x05, 0xF6, 0x38, 0x80, 0x07, 0x2F, 0xFD, 0x80, @@ -10759,43 +10823,45 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x9A, -0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, -0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x05, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, +0x00, 0x8C, 0xA0, 0x00, 0x05, 0x41, 0x45, 0x44, 0x54, 0x00, 0x41, 0x45, 0x53, 0x54, 0x00, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Australia/Perth */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xC2, 0xBC, +0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xC2, 0xBC, 0x9C, 0xBC, 0x3D, 0x10, 0xCB, 0x54, 0xCF, 0x20, 0xCB, 0xC7, 0x73, 0x90, 0xCC, 0xB7, 0x72, 0xA0, 0xCD, 0xA7, 0x55, 0x90, 0x09, 0x0F, 0xFB, 0xA0, 0x09, 0xB6, 0x18, 0xA0, 0x1A, 0x01, 0x62, 0xA0, 0x1A, 0xA7, 0x7F, 0xA0, 0x29, 0x25, 0x5C, 0xA0, 0x29, 0xAF, 0xCA, 0x20, 0x45, 0x71, 0xBF, 0x20, 0x46, 0x05, 0x67, 0x20, 0x47, 0x23, 0x7C, 0xA0, 0x47, 0xEE, 0x83, 0xA0, 0x49, 0x03, 0x5E, 0xA0, 0x49, 0xCE, 0x65, 0xA0, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, -0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x57, 0x53, -0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x93, 0xC8, 0x01, 0xC3, -0x6E, 0x68, 0x00, 0x00, 0x00, 0x22, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x41, 0x75, -0x73, 0x74, 0x72, 0x61, 0x6C, 0x69, 0x61, 0x20, 0x2D, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, -0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, +0x00, 0x05, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x05, 0x41, 0x57, +0x44, 0x54, 0x00, 0x41, 0x57, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x58, 0x93, 0xC8, 0x01, 0xC3, 0x6E, 0x68, 0x00, 0x00, 0x00, 0x22, 0x57, 0x65, 0x73, 0x74, +0x65, 0x72, 0x6E, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6C, 0x69, 0x61, 0x20, 0x2D, 0x20, +0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, /* Australia/Queensland */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, 0xCD, 0xA7, 0x39, 0x70, 0xCE, 0xA0, 0x73, 0x00, 0xCF, 0x87, 0x1B, 0x70, 0x03, 0x70, 0x39, 0x80, 0x04, 0x0D, 0x1C, 0x00, 0x25, 0x49, 0xCD, 0x00, 0x25, 0xEF, 0xEA, 0x00, 0x27, 0x29, 0xAF, 0x00, 0x27, 0xCF, 0xCC, 0x00, 0x29, 0x09, 0x91, 0x00, 0x29, 0xAF, 0xAE, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x9A, 0xB0, -0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, -0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x05, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, +0x8C, 0xA0, 0x00, 0x05, 0x41, 0x45, 0x44, 0x54, 0x00, 0x41, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, +0x00, 0x00, /* Australia/South */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xAD, 0xA4, +0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xAD, 0xA4, 0x9C, 0xBC, 0x27, 0xF8, 0xCB, 0x54, 0xBA, 0x08, 0xCB, 0xC7, 0x5E, 0x78, 0xCC, 0xB7, 0x5D, 0x88, 0xCD, 0xA7, 0x40, 0x78, 0xCE, 0xA0, 0x7A, 0x08, 0xCF, 0x87, 0x22, 0x78, 0x03, 0x70, 0x40, 0x88, 0x04, 0x0D, 0x23, 0x08, 0x05, 0x50, 0x22, 0x88, 0x05, 0xF6, 0x3F, 0x88, 0x07, 0x30, 0x04, 0x88, @@ -10840,14 +10906,15 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x93, -0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, -0x00, 0x85, 0x98, 0x00, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x05, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, +0x00, 0x85, 0x98, 0x00, 0x05, 0x41, 0x43, 0x44, 0x54, 0x00, 0x41, 0x43, 0x53, 0x54, 0x00, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Australia/Sydney */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, +0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, 0xCD, 0xA7, 0x39, 0x70, 0xCE, 0xA0, 0x73, 0x00, 0xCF, 0x87, 0x1B, 0x70, 0x03, 0x70, 0x39, 0x80, 0x04, 0x0D, 0x1C, 0x00, 0x05, 0x50, 0x1B, 0x80, 0x05, 0xF6, 0x38, 0x80, 0x07, 0x2F, 0xFD, 0x80, @@ -10892,16 +10959,17 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x9A, -0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, -0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x55, 0xA7, 0x15, 0x01, 0xF9, 0x65, 0x82, 0x00, 0x00, 0x00, 0x20, 0x4E, 0x65, 0x77, -0x20, 0x53, 0x6F, 0x75, 0x74, 0x68, 0x20, 0x57, 0x61, 0x6C, 0x65, 0x73, 0x20, 0x2D, 0x20, 0x6D, -0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, +0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x05, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, +0x00, 0x8C, 0xA0, 0x00, 0x05, 0x41, 0x45, 0x44, 0x54, 0x00, 0x41, 0x45, 0x53, 0x54, 0x00, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xA7, 0x15, 0x01, 0xF9, 0x65, 0x82, 0x00, +0x00, 0x00, 0x20, 0x4E, 0x65, 0x77, 0x20, 0x53, 0x6F, 0x75, 0x74, 0x68, 0x20, 0x57, 0x61, 0x6C, +0x65, 0x73, 0x20, 0x2D, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, +0x6F, 0x6E, 0x73, /* Australia/Tasmania */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9B, 0xD5, 0x78, 0x80, +0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9B, 0xD5, 0x78, 0x80, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, 0xCD, 0xA7, 0x39, 0x70, 0xCE, 0xA0, 0x73, 0x00, 0xCF, 0x87, 0x1B, 0x70, 0xFB, 0xC2, 0x8D, 0x00, 0xFC, 0xB2, 0x7E, 0x00, 0xFD, 0xC7, 0x59, 0x00, 0xFE, 0x76, 0xB0, 0x80, 0xFF, 0xA7, 0x3B, 0x00, @@ -10949,14 +11017,14 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, -0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, -0x80, 0x00, 0x00, 0x00, 0x00, +0x05, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x05, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x41, 0x45, 0x53, +0x54, 0x00, 0x41, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/Victoria */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xA6, 0x9C, +0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xA6, 0x9C, 0x9C, 0xBC, 0x20, 0xF0, 0xCB, 0x54, 0xB3, 0x00, 0xCB, 0xC7, 0x57, 0x70, 0xCC, 0xB7, 0x56, 0x80, 0xCD, 0xA7, 0x39, 0x70, 0xCE, 0xA0, 0x73, 0x00, 0xCF, 0x87, 0x1B, 0x70, 0x03, 0x70, 0x39, 0x80, 0x04, 0x0D, 0x1C, 0x00, 0x05, 0x50, 0x1B, 0x80, 0x05, 0xF6, 0x38, 0x80, 0x07, 0x2F, 0xFD, 0x80, @@ -11001,28 +11069,29 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x9A, -0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, -0x00, 0x8C, 0xA0, 0x00, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0xB0, 0x01, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x05, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x00, 0x00, +0x00, 0x8C, 0xA0, 0x00, 0x05, 0x41, 0x45, 0x44, 0x54, 0x00, 0x41, 0x45, 0x53, 0x54, 0x00, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Australia/West */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xC2, 0xBC, +0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xC2, 0xBC, 0x9C, 0xBC, 0x3D, 0x10, 0xCB, 0x54, 0xCF, 0x20, 0xCB, 0xC7, 0x73, 0x90, 0xCC, 0xB7, 0x72, 0xA0, 0xCD, 0xA7, 0x55, 0x90, 0x09, 0x0F, 0xFB, 0xA0, 0x09, 0xB6, 0x18, 0xA0, 0x1A, 0x01, 0x62, 0xA0, 0x1A, 0xA7, 0x7F, 0xA0, 0x29, 0x25, 0x5C, 0xA0, 0x29, 0xAF, 0xCA, 0x20, 0x45, 0x71, 0xBF, 0x20, 0x46, 0x05, 0x67, 0x20, 0x47, 0x23, 0x7C, 0xA0, 0x47, 0xEE, 0x83, 0xA0, 0x49, 0x03, 0x5E, 0xA0, 0x49, 0xCE, 0x65, 0xA0, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, -0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x57, 0x53, -0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, -0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x05, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x05, 0x41, 0x57, +0x44, 0x54, 0x00, 0x41, 0x57, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Australia/Yancowinna */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x9C, 0x4E, 0xAD, 0xA4, +0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x9C, 0x4E, 0xAD, 0xA4, 0x9C, 0xBC, 0x27, 0xF8, 0xCB, 0x54, 0xBA, 0x08, 0xCB, 0xC7, 0x5E, 0x78, 0xCC, 0xB7, 0x5D, 0x88, 0xCD, 0xA7, 0x40, 0x78, 0xCE, 0xA0, 0x7A, 0x08, 0xCF, 0x87, 0x22, 0x78, 0x03, 0x70, 0x40, 0x88, 0x04, 0x0D, 0x23, 0x08, 0x05, 0x50, 0x22, 0x88, 0x05, 0xF6, 0x3F, 0x88, 0x07, 0x30, 0x04, 0x88, @@ -11067,10 +11136,10 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, -0x03, 0x02, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x00, 0x00, -0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, -0x00, 0x00, +0x03, 0x02, 0x00, 0x00, 0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x05, 0x00, 0x00, +0x93, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x85, 0x98, 0x00, 0x05, 0x41, 0x43, 0x44, 0x54, 0x00, 0x41, +0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, +0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Brazil/Acre */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -13045,60 +13114,59 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Europe/Budapest */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x48, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x0C, 0x17, 0x60, +0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xD9, 0xAE, 0x90, 0x9D, 0xA4, 0xB5, 0x90, 0x9E, 0x30, 0x58, 0x70, -0x9E, 0xA7, 0x29, 0xA0, 0x9F, 0x95, 0xBB, 0x10, 0xA0, 0x9A, 0xD2, 0x20, 0xA1, 0x64, 0x79, 0x90, -0xA2, 0x70, 0x28, 0x20, 0xA3, 0x5A, 0xC5, 0x10, 0xC9, 0xF1, 0x3C, 0x90, 0xCC, 0xE7, 0x4B, 0x10, -0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, -0xD0, 0xFA, 0x01, 0x70, 0xD1, 0x99, 0x78, 0xE0, 0xD2, 0x8D, 0x5E, 0x60, 0xD3, 0x50, 0xA6, 0x90, -0xD4, 0x49, 0xD2, 0x10, 0xD5, 0x39, 0xC3, 0x10, 0xD6, 0x29, 0xB4, 0x10, 0xD7, 0x19, 0xA5, 0x10, -0xD8, 0x09, 0x96, 0x10, 0xD9, 0x02, 0xC1, 0x90, 0xD9, 0xE9, 0x78, 0x10, 0xDA, 0xED, 0x2F, 0x90, -0xDB, 0xE6, 0x5B, 0x10, 0xE2, 0xA2, 0xA8, 0xF0, 0xE3, 0x51, 0xF2, 0x60, 0xE4, 0x83, 0xDC, 0x70, -0xE5, 0x33, 0x25, 0xE0, 0xE6, 0x74, 0xE1, 0xF0, 0xE7, 0x11, 0xB6, 0x60, 0xE8, 0x54, 0xD2, 0x00, -0xE8, 0xF1, 0xC2, 0x90, 0x13, 0x4D, 0x36, 0x00, 0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, -0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, 0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, -0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, -0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, -0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, -0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, -0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, -0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, -0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, -0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, -0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, -0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, -0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, -0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, -0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, -0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, -0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, -0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, -0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, -0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, -0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, -0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, -0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, -0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, -0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, -0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, -0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, -0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, -0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, -0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, -0x03, 0x02, 0x03, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x05, 0x04, 0x05, 0x04, +0x9E, 0xA7, 0x29, 0xA0, 0x9F, 0x84, 0x97, 0x90, 0xA0, 0x9A, 0xD2, 0x20, 0xA1, 0xC0, 0xC2, 0x90, +0xC9, 0xF3, 0xC3, 0x70, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, +0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD0, 0xFA, 0x01, 0x70, 0xD1, 0x99, 0x78, 0xE0, +0xD2, 0x8A, 0xBB, 0x60, 0xD3, 0x50, 0xA6, 0x90, 0xD4, 0x49, 0xD2, 0x10, 0xD5, 0x39, 0xC3, 0x10, +0xD6, 0x29, 0xB4, 0x10, 0xD7, 0x19, 0xA5, 0x10, 0xD8, 0x09, 0x96, 0x10, 0xD9, 0x02, 0xC1, 0x90, +0xD9, 0xE9, 0x78, 0x10, 0xDA, 0xED, 0x2F, 0x90, 0xDB, 0xE6, 0x5B, 0x10, 0xE2, 0xA2, 0xA8, 0xF0, +0xE3, 0x51, 0xF2, 0x60, 0xE4, 0x83, 0xDC, 0x70, 0xE5, 0x33, 0x25, 0xE0, 0xE6, 0x74, 0xE1, 0xF0, +0xE7, 0x11, 0xB6, 0x60, 0xE8, 0x54, 0xD2, 0x00, 0xE8, 0xF1, 0xC2, 0x90, 0x13, 0x4D, 0x36, 0x00, +0x14, 0x33, 0xFA, 0x90, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x13, 0xDC, 0x90, 0x17, 0x03, 0xCD, 0x90, +0x17, 0xF3, 0xBE, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, +0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, +0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, +0x23, 0x3C, 0x45, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x1C, 0x27, 0x10, 0x26, 0x0C, 0x18, 0x10, +0x27, 0x05, 0x43, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x28, 0xE5, 0x25, 0x90, 0x29, 0xD5, 0x16, 0x90, +0x2A, 0xC5, 0x07, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xA4, 0xE9, 0x90, 0x2D, 0x94, 0xDA, 0x90, +0x2E, 0x84, 0xCB, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x64, 0xAD, 0x90, 0x31, 0x5D, 0xD9, 0x10, +0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, +0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, +0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, +0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, +0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, +0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, +0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, +0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, +0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, +0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, +0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, +0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, +0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, +0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, +0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, +0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, +0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, +0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, +0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, +0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, +0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, 0x00, 0x01, 0x02, 0x03, +0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x02, 0x03, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, +0x00, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x00, 0x00, -0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, -0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, -0x01, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0xD1, 0xCE, 0xF0, 0x01, 0x2F, 0xC6, 0xED, 0x00, -0x00, 0x00, 0x00, +0x05, 0x04, 0x05, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, +0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x0E, 0x10, +0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, +0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0xD1, 0xCE, +0xF0, 0x01, 0x2F, 0xC6, 0xED, 0x00, 0x00, 0x00, 0x00, /* Europe/Busingen */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x44, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -13501,8 +13569,8 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Europe/Helsinki */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x46, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xA4, 0x73, 0x6F, 0x18, -0xCB, 0xCE, 0x51, 0x60, 0xCC, 0xBF, 0x85, 0xD0, 0x15, 0x23, 0xDD, 0x80, 0x16, 0x13, 0xCE, 0x80, +0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xA4, 0x73, 0x6F, 0x1B, +0xCB, 0xCE, 0x51, 0x60, 0xCC, 0xC0, 0xE5, 0x60, 0x15, 0x23, 0xDD, 0x80, 0x16, 0x13, 0xCE, 0x80, 0x17, 0x03, 0xBF, 0x80, 0x17, 0xF3, 0xB0, 0x80, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, @@ -13538,7 +13606,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x00, 0x00, 0x17, 0x68, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, +0x04, 0x03, 0x04, 0x03, 0x04, 0x00, 0x00, 0x17, 0x65, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x48, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0xE5, 0x22, 0xDA, 0x01, 0x38, @@ -13784,7 +13852,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Europe/Kaliningrad */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x9B, 0x0C, 0x17, 0x60, +0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xDA, 0xF0, 0x9C, 0xD9, 0xAE, 0x90, 0x9D, 0xA4, 0xB5, 0x90, 0x9E, 0xB9, 0x90, 0x90, 0x9F, 0x84, 0x97, 0x90, 0xC8, 0x09, 0x71, 0x90, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD0, 0xFA, 0x01, 0x70, @@ -13804,23 +13872,23 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x43, 0x64, 0x0D, 0x00, 0x44, 0x25, 0xD9, 0x80, 0x45, 0x43, 0xEF, 0x00, 0x46, 0x05, 0xBB, 0x80, 0x47, 0x23, 0xD1, 0x00, 0x47, 0xEE, 0xD8, 0x00, 0x49, 0x03, 0xB3, 0x00, 0x49, 0xCE, 0xBA, 0x00, 0x4A, 0xE3, 0x95, 0x00, 0x4B, 0xAE, 0x9C, 0x00, 0x4C, 0xCC, 0xB1, 0x80, 0x4D, 0x8E, 0x7E, 0x00, -0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x05, 0x04, 0x05, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x09, 0x08, 0x0A, 0x0B, 0x0C, 0x0D, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, +0x54, 0x4C, 0x2B, 0x70, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x05, 0x04, 0x05, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0A, 0x0B, 0x0C, 0x0D, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, -0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0E, 0x00, 0x00, 0x1C, -0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, -0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, -0x05, 0x00, 0x00, 0x38, 0x40, 0x01, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x11, 0x00, -0x00, 0x1C, 0x20, 0x00, 0x16, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, -0x16, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x1A, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, -0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, -0x00, 0x46, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, -0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0xDC, 0xD1, 0xF2, 0x01, 0x31, 0xF0, 0x50, 0x00, 0x00, 0x00, 0x17, 0x4D, -0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2D, 0x30, 0x31, 0x20, 0x2D, 0x20, 0x4B, 0x61, 0x6C, 0x69, 0x6E, -0x69, 0x6E, 0x67, 0x72, 0x61, 0x64, +0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, +0x0E, 0x0B, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, +0x1C, 0x20, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x05, 0x00, 0x00, 0x38, 0x40, 0x01, 0x09, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, 0x09, 0x00, 0x00, +0x2A, 0x30, 0x01, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x16, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x11, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x16, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x1A, 0x43, 0x45, 0x53, 0x54, +0x00, 0x43, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x45, 0x45, 0x53, +0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x46, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, +0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0xD1, 0xF2, 0x01, 0x31, 0xF0, 0x50, +0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2D, 0x30, 0x31, 0x20, 0x2D, 0x20, +0x4B, 0x61, 0x6C, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x72, 0x61, 0x64, /* Europe/Kiev */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -14290,8 +14358,8 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Europe/Mariehamn */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xA4, 0x73, 0x6F, 0x18, -0xCB, 0xCE, 0x51, 0x60, 0xCC, 0xBF, 0x85, 0xD0, 0x15, 0x23, 0xDD, 0x80, 0x16, 0x13, 0xCE, 0x80, +0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xA4, 0x73, 0x6F, 0x1B, +0xCB, 0xCE, 0x51, 0x60, 0xCC, 0xC0, 0xE5, 0x60, 0x15, 0x23, 0xDD, 0x80, 0x16, 0x13, 0xCE, 0x80, 0x17, 0x03, 0xBF, 0x80, 0x17, 0xF3, 0xB0, 0x80, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, @@ -14327,7 +14395,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, -0x04, 0x03, 0x04, 0x03, 0x04, 0x00, 0x00, 0x17, 0x68, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, +0x04, 0x03, 0x04, 0x03, 0x04, 0x00, 0x00, 0x17, 0x65, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x48, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0xE5, 0x08, 0xD0, 0x01, 0x31, @@ -14441,9 +14509,9 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Europe/Moscow */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0x9B, 0x5F, 0x1E, 0xD8, -0x9D, 0x3E, 0xF2, 0x98, 0x9E, 0x2A, 0xEF, 0x18, 0x9E, 0xF7, 0x39, 0x88, 0x9F, 0x84, 0x58, 0x18, -0xA0, 0xD8, 0x6D, 0x08, 0xA1, 0x00, 0x16, 0x28, 0xA1, 0x3C, 0xA6, 0x40, 0xA4, 0x10, 0x6D, 0xC0, +0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0x9B, 0x5F, 0x1E, 0xC7, +0x9D, 0x3E, 0xF2, 0x79, 0x9E, 0x2A, 0xEE, 0xF9, 0x9E, 0xF7, 0x39, 0x69, 0x9F, 0x84, 0x57, 0xF9, +0xA0, 0xD8, 0x6C, 0xE9, 0xA1, 0x00, 0x16, 0x09, 0xA1, 0x3C, 0xA6, 0x40, 0xA4, 0x10, 0x6D, 0xC0, 0xA4, 0x3D, 0x32, 0xB0, 0xA5, 0x15, 0x68, 0xB0, 0xA5, 0x3D, 0x03, 0xC0, 0xA7, 0x1E, 0x45, 0x50, 0xB5, 0xA4, 0x19, 0x60, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, 0x19, 0xDB, 0x43, 0x40, 0x1A, 0xCC, 0x93, 0xD0, @@ -14460,23 +14528,23 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x40, 0x66, 0x07, 0x70, 0x41, 0x84, 0x1C, 0xF0, 0x42, 0x45, 0xE9, 0x70, 0x43, 0x63, 0xFE, 0xF0, 0x44, 0x25, 0xCB, 0x70, 0x45, 0x43, 0xE0, 0xF0, 0x46, 0x05, 0xAD, 0x70, 0x47, 0x23, 0xC2, 0xF0, 0x47, 0xEE, 0xC9, 0xF0, 0x49, 0x03, 0xA4, 0xF0, 0x49, 0xCE, 0xAB, 0xF0, 0x4A, 0xE3, 0x86, 0xF0, -0x4B, 0xAE, 0x8D, 0xF0, 0x4C, 0xCC, 0xA3, 0x70, 0x4D, 0x8E, 0x6F, 0xF0, 0x02, 0x01, 0x02, 0x03, -0x01, 0x03, 0x05, 0x04, 0x05, 0x06, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0A, 0x0B, -0x08, 0x05, 0x04, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, +0x4B, 0xAE, 0x8D, 0xF0, 0x4C, 0xCC, 0xA3, 0x70, 0x4D, 0x8E, 0x6F, 0xF0, 0x54, 0x4C, 0x1D, 0x60, +0x02, 0x01, 0x02, 0x03, 0x01, 0x03, 0x05, 0x04, 0x05, 0x06, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x0A, 0x0B, 0x08, 0x05, 0x04, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0C, 0x00, 0x00, 0x23, 0x28, 0x00, 0x00, 0x00, 0x00, -0x31, 0x68, 0x01, 0x04, 0x00, 0x00, 0x23, 0x58, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x78, 0x01, 0x08, -0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x46, 0x50, -0x01, 0x15, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, -0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19, -0x00, 0x00, 0x38, 0x40, 0x00, 0x0D, 0x4D, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, -0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4D, 0x00, 0x45, -0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xDE, 0x65, 0x98, 0x01, 0x4C, 0x01, 0x7D, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, -0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x77, 0x65, 0x73, 0x74, 0x20, 0x52, -0x75, 0x73, 0x73, 0x69, 0x61, +0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0C, 0x08, 0x00, 0x00, 0x23, +0x39, 0x00, 0x00, 0x00, 0x00, 0x31, 0x87, 0x01, 0x04, 0x00, 0x00, 0x23, 0x77, 0x00, 0x00, 0x00, +0x00, 0x3F, 0x97, 0x01, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, +0x11, 0x00, 0x00, 0x46, 0x50, 0x01, 0x15, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, +0x00, 0x1C, 0x20, 0x00, 0x19, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0D, 0x4D, 0x4D, 0x54, 0x00, 0x4D, +0x53, 0x54, 0x00, 0x4D, 0x44, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x4D, 0x53, 0x4D, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x67, 0xDF, 0x01, 0x4C, 0x0E, 0xF1, 0x00, +0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x77, +0x65, 0x73, 0x74, 0x20, 0x52, 0x75, 0x73, 0x73, 0x69, 0x61, /* Europe/Nicosia */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -14756,8 +14824,8 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Europe/Riga */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4C, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x22, 0x9E, 0xB9, 0x88, 0x08, -0x9F, 0x84, 0x8F, 0x08, 0xA0, 0x88, 0x46, 0x88, 0xA0, 0xCB, 0x83, 0x08, 0xAD, 0xE7, 0xF1, 0xE8, +0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x22, 0x9E, 0xB9, 0x88, 0x04, +0x9F, 0x84, 0x8F, 0x04, 0xA0, 0x88, 0x46, 0x84, 0xA0, 0xCB, 0x83, 0x04, 0xAD, 0xE7, 0xF1, 0xE4, 0xC8, 0xAF, 0x64, 0x60, 0xCA, 0x62, 0x65, 0x50, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD0, 0x90, 0x89, 0x70, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, @@ -14796,8 +14864,8 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, -0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x00, 0x00, 0x16, 0x98, 0x00, 0x00, 0x00, 0x00, 0x24, -0xA8, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, +0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x00, 0x00, 0x16, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x24, +0xAC, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, @@ -14873,8 +14941,8 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Europe/Samara */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1A, 0xA1, 0x00, 0x26, 0x9C, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x2B, 0xA1, 0x00, 0x26, 0x9C, 0xB5, 0xA4, 0x0B, 0x50, 0xBE, 0x4C, 0x26, 0xC0, 0x15, 0x27, 0x99, 0xC0, 0x16, 0x18, 0xCE, 0x30, 0x17, 0x08, 0xCD, 0x40, 0x17, 0xFA, 0x01, 0xB0, 0x18, 0xEA, 0x00, 0xC0, 0x19, 0xDB, 0x35, 0x30, 0x1A, 0xCC, 0x85, 0xC0, 0x1B, 0xBC, 0x92, 0xE0, 0x1C, 0xAC, 0x83, 0xE0, 0x1D, 0x9C, 0x74, 0xE0, @@ -14892,22 +14960,25 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x47, 0x23, 0xB4, 0xE0, 0x47, 0xEE, 0xBB, 0xE0, 0x49, 0x03, 0x96, 0xE0, 0x49, 0xCE, 0x9D, 0xE0, 0x4A, 0xE3, 0x78, 0xE0, 0x4B, 0xAE, 0x7F, 0xE0, 0x4C, 0xCC, 0xA3, 0x70, 0x4D, 0x8E, 0x6F, 0xF0, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x07, 0x08, 0x07, 0x08, 0x09, 0x08, 0x02, 0x0B, 0x02, 0x0C, 0x0D, 0x0C, 0x0D, -0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, -0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0E, 0x0F, -0x0D, 0x00, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x38, +0x05, 0x06, 0x05, 0x07, 0x08, 0x07, 0x08, 0x09, 0x0B, 0x02, 0x0C, 0x02, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0F, 0x10, +0x0E, 0x00, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x46, 0x50, 0x01, 0x09, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0F, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x01, 0x09, 0x00, 0x00, 0x38, 0x40, 0x01, -0x09, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0F, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x09, 0x00, 0x00, 0x1C, -0x20, 0x00, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x01, 0x14, 0x00, 0x00, 0x46, 0x50, 0x01, 0x14, 0x00, -0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x14, 0x00, 0x00, 0x2A, 0x30, 0x00, -0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, 0x00, 0x4B, 0x55, 0x59, 0x53, 0x54, 0x00, -0x4B, 0x55, 0x59, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x81, 0x7F, 0x01, -0x5F, 0x2E, 0x58, 0x00, 0x00, 0x00, 0x1C, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x30, -0x20, 0x2D, 0x20, 0x53, 0x61, 0x6D, 0x61, 0x72, 0x61, 0x2C, 0x20, 0x55, 0x64, 0x6D, 0x75, 0x72, -0x74, 0x69, 0x61, +0x14, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x18, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1C, 0x00, 0x00, 0x1C, +0x20, 0x00, 0x21, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0F, 0x00, 0x00, 0x46, 0x50, 0x01, 0x25, 0x00, +0x00, 0x46, 0x50, 0x01, 0x25, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, +0x25, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, 0x00, +0x4B, 0x55, 0x59, 0x53, 0x54, 0x00, 0x4B, 0x55, 0x59, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, +0x53, 0x4B, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x53, +0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, +0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x81, 0x7F, 0x01, 0x5F, 0x2E, 0x58, 0x00, 0x00, 0x00, 0x39, +0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x30, 0x20, 0x28, 0x4D, 0x6F, 0x73, 0x63, 0x6F, +0x77, 0x2B, 0x30, 0x31, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x32, 0x30, 0x31, 0x34, 0x2D, +0x31, 0x30, 0x2D, 0x32, 0x36, 0x29, 0x20, 0x2D, 0x20, 0x53, 0x61, 0x6D, 0x61, 0x72, 0x61, 0x2C, +0x20, 0x55, 0x64, 0x6D, 0x75, 0x72, 0x74, 0x69, 0x61, /* Europe/San_Marino */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x53, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -15022,7 +15093,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Europe/Simferopol */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0xAA, 0x19, 0xA4, 0x20, +0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1E, 0xAA, 0x19, 0xA4, 0x20, 0xB5, 0xA4, 0x19, 0x60, 0xCB, 0x04, 0x8D, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xCF, 0x9F, 0x38, 0xE0, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, @@ -15041,22 +15112,23 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, -0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x5E, 0x80, 0x01, 0x02, 0x05, 0x03, -0x04, 0x03, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x07, 0x08, 0x07, 0x08, 0x07, -0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x02, 0x01, 0x09, 0x01, 0x09, 0x01, 0x09, 0x06, 0x02, 0x06, -0x02, 0x06, 0x08, 0x07, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, +0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x5E, 0x80, 0x54, 0x4C, 0x1D, 0x60, +0x01, 0x02, 0x05, 0x03, 0x04, 0x03, 0x04, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x02, 0x06, 0x07, +0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x08, 0x07, 0x02, 0x01, 0x09, 0x01, 0x09, 0x01, +0x09, 0x06, 0x02, 0x06, 0x02, 0x06, 0x08, 0x07, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, -0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0C, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x00, 0x00, -0x1C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0C, -0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x38, 0x40, -0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x00, 0x00, 0x38, 0x40, 0x01, 0x15, 0x00, 0x00, -0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, -0x00, 0x00, 0x38, 0x40, 0x00, 0x08, 0x53, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, -0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, -0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0xCD, -0xEA, 0xD7, 0x01, 0x46, 0xB0, 0xD0, 0x00, 0x00, 0x00, 0x12, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, -0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x43, 0x72, 0x69, 0x6D, 0x65, 0x61, +0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0C, 0x07, 0x00, 0x00, 0x1F, +0xE0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x00, +0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, +0x10, 0x00, 0x00, 0x38, 0x40, 0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x00, 0x00, 0x38, +0x40, 0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x19, 0x00, +0x00, 0x1C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x00, 0x08, 0x53, 0x4D, 0x54, 0x00, 0x45, +0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, +0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, +0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0xCD, 0xEA, 0xD7, 0x01, 0x46, 0xB0, 0xD0, 0x00, 0x00, 0x00, 0x12, 0x4D, +0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x43, 0x72, 0x69, 0x6D, 0x65, +0x61, /* Europe/Skopje */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4D, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -15634,8 +15706,8 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Europe/Volgograd */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x19, 0xA1, 0xF5, 0x46, 0xDC, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x1D, 0xA1, 0xF5, 0x46, 0xDC, 0xAB, 0xD8, 0x86, 0x50, 0xB5, 0xA4, 0x0B, 0x50, 0xF0, 0xB0, 0x4C, 0x40, 0x15, 0x27, 0x99, 0xC0, 0x16, 0x18, 0xCE, 0x30, 0x17, 0x08, 0xCD, 0x40, 0x17, 0xFA, 0x01, 0xB0, 0x18, 0xEA, 0x00, 0xC0, 0x19, 0xDB, 0x35, 0x30, 0x1A, 0xCC, 0x85, 0xC0, 0x1B, 0xBC, 0x92, 0xE0, 0x1C, 0xAC, 0x83, 0xE0, @@ -15651,21 +15723,23 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x40, 0x66, 0x07, 0x70, 0x41, 0x84, 0x1C, 0xF0, 0x42, 0x45, 0xE9, 0x70, 0x43, 0x63, 0xFE, 0xF0, 0x44, 0x25, 0xCB, 0x70, 0x45, 0x43, 0xE0, 0xF0, 0x46, 0x05, 0xAD, 0x70, 0x47, 0x23, 0xC2, 0xF0, 0x47, 0xEE, 0xC9, 0xF0, 0x49, 0x03, 0xA4, 0xF0, 0x49, 0xCE, 0xAB, 0xF0, 0x4A, 0xE3, 0x86, 0xF0, -0x4B, 0xAE, 0x8D, 0xF0, 0x4C, 0xCC, 0xA3, 0x70, 0x4D, 0x8E, 0x6F, 0xF0, 0x01, 0x02, 0x03, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x08, 0x09, 0x08, 0x09, 0x06, 0x08, 0x0A, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x06, 0x00, 0x00, 0x29, 0xA4, -0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x09, 0x00, 0x00, -0x38, 0x40, 0x00, 0x09, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x00, 0x14, -0x00, 0x00, 0x38, 0x40, 0x00, 0x14, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0E, 0x00, 0x00, 0x38, 0x40, -0x01, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x14, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x14, 0x4C, 0x4D, -0x54, 0x00, 0x54, 0x53, 0x41, 0x54, 0x00, 0x53, 0x54, 0x41, 0x54, 0x00, 0x56, 0x4F, 0x4C, 0x53, -0x54, 0x00, 0x56, 0x4F, 0x4C, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, -0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xB0, -0xB5, 0x01, 0x56, 0x6E, 0xC2, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, -0x30, 0x30, 0x20, 0x2D, 0x20, 0x43, 0x61, 0x73, 0x70, 0x69, 0x61, 0x6E, 0x20, 0x53, 0x65, 0x61, - +0x4B, 0xAE, 0x8D, 0xF0, 0x4C, 0xCC, 0xA3, 0x70, 0x4D, 0x8E, 0x6F, 0xF0, 0x54, 0x4C, 0x1D, 0x60, +0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x08, 0x09, 0x08, 0x09, 0x06, 0x0B, 0x0A, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, +0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, +0x0C, 0x00, 0x00, 0x29, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x09, 0x00, 0x00, 0x38, 0x40, 0x00, 0x09, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0E, 0x00, +0x00, 0x38, 0x40, 0x00, 0x14, 0x00, 0x00, 0x38, 0x40, 0x00, 0x14, 0x00, 0x00, 0x46, 0x50, 0x01, +0x0E, 0x00, 0x00, 0x38, 0x40, 0x01, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x14, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x19, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x19, 0x00, +0x00, 0x38, 0x40, 0x00, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x53, 0x41, 0x54, 0x00, 0x53, 0x54, +0x41, 0x54, 0x00, 0x56, 0x4F, 0x4C, 0x53, 0x54, 0x00, 0x56, 0x4F, 0x4C, 0x54, 0x00, 0x4D, 0x53, +0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, +0xB0, 0xB5, 0x01, 0x56, 0x6E, 0xC2, 0x00, 0x00, 0x00, 0x17, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, +0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x43, 0x61, 0x73, 0x70, 0x69, 0x61, 0x6E, 0x20, 0x53, 0x65, +0x61, /* Europe/Warsaw */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16367,13 +16441,13 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Japan */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xC3, 0xCE, 0x85, 0x70, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xC3, 0x55, 0x3B, 0x70, 0xD7, 0x3E, 0x1E, 0x90, 0xD7, 0xEC, 0x16, 0x80, 0xD8, 0xF9, 0x16, 0x90, 0xD9, 0xCB, 0xF8, 0x80, 0xDB, 0x07, 0x1D, 0x10, 0xDB, 0xAB, 0xDA, 0x80, 0xDC, 0xE6, 0xFF, 0x10, 0xDD, 0x8B, 0xBC, 0x80, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x00, 0x00, -0x00, 0x8C, 0xA0, 0x01, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x08, 0x43, 0x4A, 0x54, 0x00, 0x4A, -0x44, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, -0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x8C, 0xA0, 0x01, 0x05, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x09, 0x4A, 0x43, 0x53, 0x54, 0x00, +0x4A, 0x44, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, +0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Kwajalein */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16772,7 +16846,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* NZ-CHAT */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xE7, 0x8B, 0xC2, 0x04, +0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0xD2, 0xDA, 0x96, 0xBC, 0x09, 0x18, 0xFD, 0xE0, 0x09, 0xAC, 0xA5, 0xE0, 0x0A, 0xEF, 0xA5, 0x60, 0x0B, 0x9E, 0xFC, 0xE0, 0x0C, 0xD8, 0xC1, 0xE0, 0x0D, 0x7E, 0xDE, 0xE0, 0x0E, 0xB8, 0xA3, 0xE0, 0x0F, 0x5E, 0xC0, 0xE0, 0x10, 0x98, 0x85, 0xE0, 0x11, 0x3E, 0xA2, 0xE0, 0x12, 0x78, 0x67, 0xE0, 0x13, 0x1E, 0x84, 0xE0, @@ -16812,11 +16886,11 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0xAB, 0xFC, -0x00, 0x00, 0x00, 0x00, 0xC1, 0x5C, 0x01, 0x04, 0x00, 0x00, 0xB3, 0x4C, 0x00, 0x0A, 0x00, 0x00, -0xB3, 0x4C, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x48, 0x41, 0x44, 0x54, 0x00, 0x43, 0x48, -0x41, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, -0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0xAC, 0x44, +0x00, 0x00, 0x00, 0x00, 0xC1, 0x5C, 0x01, 0x06, 0x00, 0x00, 0xB3, 0x4C, 0x00, 0x00, 0x00, 0x00, +0xB3, 0x4C, 0x00, 0x00, 0x43, 0x48, 0x41, 0x53, 0x54, 0x00, 0x43, 0x48, 0x41, 0x44, 0x54, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, +0x00, 0x00, 0x00, 0x00, /* Pacific/Apia */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x57, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16836,13 +16910,13 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x74, 0x20, 0x74, 0x60, 0x75, 0x19, 0x9F, 0xE0, 0x76, 0x00, 0x56, 0x60, 0x76, 0xF9, 0x81, 0xE0, 0x77, 0xE0, 0x38, 0x60, 0x78, 0xD9, 0x63, 0xE0, 0x79, 0xC0, 0x1A, 0x60, 0x7A, 0xB9, 0x45, 0xE0, 0x7B, 0xA9, 0x36, 0xE0, 0x7C, 0xA2, 0x62, 0x60, 0x7D, 0x89, 0x18, 0xE0, 0x7E, 0x82, 0x44, 0x60, -0x7F, 0x68, 0xFA, 0xE0, 0x01, 0x02, 0x03, 0x02, 0x03, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0xFF, 0xFF, -0x5F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x48, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x09, -0xFF, 0xFF, 0x73, 0x60, 0x01, 0x0D, 0x00, 0x00, 0xC4, 0xE0, 0x01, 0x0D, 0x00, 0x00, 0xB6, 0xD0, -0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, 0x00, 0x57, 0x53, 0x54, 0x00, 0x57, +0x7F, 0x68, 0xFA, 0xE0, 0x01, 0x03, 0x02, 0x03, 0x02, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0xFF, 0xFF, +0x5F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x48, 0x00, 0x04, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x09, +0xFF, 0xFF, 0x65, 0x50, 0x00, 0x05, 0x00, 0x00, 0xB6, 0xD0, 0x00, 0x04, 0x00, 0x00, 0xC4, 0xE0, +0x01, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x53, 0x53, 0x54, 0x00, 0x53, 0x44, 0x54, 0x00, 0x57, 0x53, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x38, 0x9A, 0x00, 0x0C, 0x9D, 0x2A, 0x00, 0x00, 0x00, 0x00, @@ -16908,7 +16982,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Pacific/Chatham */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x4E, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xE7, 0x8B, 0xC2, 0x04, +0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0xD2, 0xDA, 0x96, 0xBC, 0x09, 0x18, 0xFD, 0xE0, 0x09, 0xAC, 0xA5, 0xE0, 0x0A, 0xEF, 0xA5, 0x60, 0x0B, 0x9E, 0xFC, 0xE0, 0x0C, 0xD8, 0xC1, 0xE0, 0x0D, 0x7E, 0xDE, 0xE0, 0x0E, 0xB8, 0xA3, 0xE0, 0x0F, 0x5E, 0xC0, 0xE0, 0x10, 0x98, 0x85, 0xE0, 0x11, 0x3E, 0xA2, 0xE0, 0x12, 0x78, 0x67, 0xE0, 0x13, 0x1E, 0x84, 0xE0, @@ -16948,12 +17022,12 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0xAB, 0xFC, -0x00, 0x00, 0x00, 0x00, 0xC1, 0x5C, 0x01, 0x04, 0x00, 0x00, 0xB3, 0x4C, 0x00, 0x0A, 0x00, 0x00, -0xB3, 0x4C, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x48, 0x41, 0x44, 0x54, 0x00, 0x43, 0x48, -0x41, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x44, 0x48, -0x00, 0x05, 0x43, 0xA7, 0x00, 0x00, 0x00, 0x0F, 0x43, 0x68, 0x61, 0x74, 0x68, 0x61, 0x6D, 0x20, -0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0xAC, 0x44, +0x00, 0x00, 0x00, 0x00, 0xC1, 0x5C, 0x01, 0x06, 0x00, 0x00, 0xB3, 0x4C, 0x00, 0x00, 0x00, 0x00, +0xB3, 0x4C, 0x00, 0x00, 0x43, 0x48, 0x41, 0x53, 0x54, 0x00, 0x43, 0x48, 0x41, 0x44, 0x54, 0x00, +0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x44, 0x48, 0x00, 0x05, 0x43, 0xA7, +0x00, 0x00, 0x00, 0x0F, 0x43, 0x68, 0x61, 0x74, 0x68, 0x61, 0x6D, 0x20, 0x49, 0x73, 0x6C, 0x61, +0x6E, 0x64, 0x73, /* Pacific/Chuuk */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x46, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -17016,8 +17090,7 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0xFF, 0xAB, 0xA0, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x09, 0x45, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x53, 0x54, 0x00, 0x45, 0x41, 0x53, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x5F, 0xE6, 0xC8, 0x00, 0x6B, 0xAD, 0x1A, 0x00, 0x00, -0x00, 0x1C, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x20, -0x26, 0x20, 0x53, 0x61, 0x6C, 0x61, 0x20, 0x79, 0x20, 0x47, 0x6F, 0x6D, 0x65, 0x7A, +0x00, 0x0D, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, /* Pacific/Efate */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x56, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -17235,14 +17308,13 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Pacific/Pago_Pago */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x41, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0x91, 0x05, 0xFB, 0x08, -0xDA, 0x62, 0x04, 0x38, 0xFA, 0xD2, 0x55, 0xB0, 0x1A, 0x2B, 0x30, 0x30, 0x01, 0x02, 0x03, 0x04, -0xFF, 0xFF, 0x5F, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x48, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50, -0x00, 0x09, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x0D, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x11, 0x4C, 0x4D, -0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x53, -0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x8F, -0x55, 0x00, 0x0E, 0x30, 0xD0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x91, 0x05, 0xFB, 0x08, +0xFA, 0xD2, 0x55, 0xB0, 0x1A, 0x2B, 0x30, 0x30, 0x01, 0x02, 0x03, 0xFF, 0xFF, 0x5F, 0xF8, 0x00, +0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x08, 0xFF, 0xFF, 0x65, +0x50, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x53, +0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x8F, 0x55, 0x00, +0x0E, 0x30, 0xD0, 0x00, 0x00, 0x00, 0x00, /* Pacific/Palau */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -17308,14 +17380,13 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* Pacific/Samoa */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0x91, 0x05, 0xFB, 0x08, -0xDA, 0x62, 0x04, 0x38, 0xFA, 0xD2, 0x55, 0xB0, 0x1A, 0x2B, 0x30, 0x30, 0x01, 0x02, 0x03, 0x04, -0xFF, 0xFF, 0x5F, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x48, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50, -0x00, 0x09, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x0D, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x11, 0x4C, 0x4D, -0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x53, -0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, -0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x91, 0x05, 0xFB, 0x08, +0xFA, 0xD2, 0x55, 0xB0, 0x1A, 0x2B, 0x30, 0x30, 0x01, 0x02, 0x03, 0xFF, 0xFF, 0x5F, 0xF8, 0x00, +0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x08, 0xFF, 0xFF, 0x65, +0x50, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x53, +0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Pacific/Tahiti */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x50, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -17523,17 +17594,16 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* PRC */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xB0, 0xFE, 0x9A, 0x9B, -0xC8, 0x5C, 0x01, 0x80, 0xC8, 0xFA, 0x27, 0x70, 0xC9, 0xD5, 0x0E, 0x80, 0xCA, 0xDB, 0x5A, 0xF0, -0x1E, 0xBA, 0x36, 0x00, 0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, 0x21, 0x49, 0x61, 0x70, -0x22, 0x5E, 0x4A, 0x80, 0x23, 0x29, 0x43, 0x70, 0x24, 0x47, 0x67, 0x00, 0x25, 0x12, 0x5F, 0xF0, -0x26, 0x27, 0x49, 0x00, 0x26, 0xF2, 0x41, 0xF0, 0x28, 0x07, 0x2B, 0x00, 0x28, 0xD2, 0x23, 0xF0, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x00, 0x00, 0x71, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x04, 0x00, 0x00, 0x70, -0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xC8, 0x5C, 0x01, 0x80, +0xC8, 0xFA, 0x27, 0x70, 0xC9, 0xD5, 0x0E, 0x80, 0xCA, 0xDB, 0x5A, 0xF0, 0x1E, 0xBA, 0x36, 0x00, +0x1F, 0x69, 0x7F, 0x70, 0x20, 0x7E, 0x68, 0x80, 0x21, 0x49, 0x61, 0x70, 0x22, 0x5E, 0x4A, 0x80, +0x23, 0x29, 0x43, 0x70, 0x24, 0x47, 0x67, 0x00, 0x25, 0x12, 0x5F, 0xF0, 0x26, 0x27, 0x49, 0x00, +0x26, 0xF2, 0x41, 0xF0, 0x28, 0x07, 0x2B, 0x00, 0x28, 0xD2, 0x23, 0xF0, 0x00, 0x01, 0x00, 0x01, +0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x7E, 0x90, +0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, + /* PST8PDT */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -17593,10 +17663,10 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* ROC */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xD1, 0x97, 0xD3, 0x00, -0xD2, 0x61, 0x7A, 0x70, 0xD3, 0x79, 0x06, 0x80, 0xD4, 0x42, 0xAD, 0xF0, 0xD5, 0x5A, 0x3A, 0x00, -0xD6, 0x23, 0xE1, 0x70, 0xD7, 0x3C, 0xBF, 0x00, 0xD8, 0x06, 0x66, 0x70, 0xD9, 0x1D, 0xF2, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xC3, 0x55, 0x49, 0x80, +0xD2, 0x54, 0x59, 0x80, 0xD3, 0x8B, 0x7B, 0x80, 0xD4, 0x42, 0xAD, 0xF0, 0xD5, 0x45, 0x22, 0x00, +0xD6, 0x4C, 0xBF, 0xF0, 0xD7, 0x3C, 0xBF, 0x00, 0xD8, 0x06, 0x66, 0x70, 0xD9, 0x1D, 0xF2, 0x80, 0xD9, 0xE7, 0x99, 0xF0, 0xDA, 0xFF, 0x26, 0x00, 0xDB, 0xC8, 0xCD, 0x70, 0xDC, 0xE0, 0x59, 0x80, 0xDD, 0xAA, 0x00, 0xF0, 0xDE, 0x72, 0x73, 0x00, 0xDF, 0xB5, 0x64, 0x70, 0xE0, 0x7C, 0x85, 0x00, 0xE1, 0x96, 0x97, 0xF0, 0xE2, 0x5D, 0xB8, 0x80, 0xE3, 0x77, 0xCB, 0x70, 0xE4, 0x3E, 0xEC, 0x00, @@ -17604,25 +17674,29 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0xE8, 0xF3, 0xD8, 0xF0, 0xE9, 0xE3, 0xD8, 0x00, 0xEA, 0xD5, 0x0C, 0x70, 0xEB, 0xC5, 0x0B, 0x80, 0xEC, 0xB6, 0x3F, 0xF0, 0xED, 0xF7, 0xFC, 0x00, 0xEE, 0x98, 0xC4, 0xF0, 0xEF, 0xD9, 0x2F, 0x80, 0xF0, 0x79, 0xF8, 0x70, 0x07, 0xFC, 0x56, 0x00, 0x08, 0xED, 0x8A, 0x70, 0x09, 0xDD, 0x89, 0x80, -0x0A, 0xCE, 0xBD, 0xF0, 0x11, 0xDA, 0x50, 0x00, 0x12, 0x53, 0x8B, 0xF0, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, -0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, -0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x0A, 0xCE, 0xBD, 0xF0, 0x11, 0xDB, 0xA1, 0x80, 0x12, 0x54, 0xDD, 0x70, 0x01, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x05, +0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x4A, 0x57, 0x53, 0x54, +0x00, 0x4A, 0x53, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, +0x00, /* ROK */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x08, 0x85, 0x93, 0x7E, 0x78, -0xB0, 0xFE, 0x8D, 0xF0, 0xB8, 0x84, 0xB4, 0x78, 0xE2, 0x4F, 0x29, 0xF0, 0xED, 0xE1, 0x92, 0x80, -0xEE, 0x81, 0x09, 0xF0, 0xF0, 0x35, 0x78, 0x80, 0xFD, 0xA5, 0x0A, 0xF8, 0x20, 0xA3, 0x44, 0x70, -0x21, 0x6E, 0x3D, 0x60, 0x22, 0x83, 0x26, 0x70, 0x23, 0x4E, 0x1F, 0x60, 0x01, 0x00, 0x01, 0x03, -0x02, 0x03, 0x00, 0x01, 0x04, 0x01, 0x04, 0x01, 0x00, 0x00, 0x77, 0x88, 0x00, 0x00, 0x00, 0x00, -0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, -0x00, 0x00, 0x8C, 0xA0, 0x01, 0x04, 0x4B, 0x53, 0x54, 0x00, 0x4B, 0x44, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x85, 0x93, 0x7E, 0x78, +0xB0, 0xFE, 0x8D, 0xF0, 0xB8, 0x84, 0xB4, 0x78, 0xC3, 0x55, 0x3B, 0x70, 0xD2, 0x43, 0x27, 0xF0, +0xE2, 0x4F, 0x29, 0xF0, 0xED, 0xE1, 0x92, 0x80, 0xEE, 0x81, 0x09, 0xF0, 0xF0, 0x35, 0x78, 0x80, +0xFD, 0xA5, 0x0A, 0xF8, 0x20, 0xA3, 0x44, 0x70, 0x21, 0x6E, 0x3D, 0x60, 0x22, 0x83, 0x26, 0x70, +0x23, 0x4E, 0x1F, 0x60, 0x01, 0x00, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x00, 0x03, 0x06, 0x03, +0x06, 0x03, 0x00, 0x00, 0x77, 0x88, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, +0x7E, 0x90, 0x00, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x0D, +0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x0D, 0x4B, 0x53, 0x54, 0x00, +0x4A, 0x43, 0x53, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x4B, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* Singapore */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -18364,14 +18438,13 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* US/Samoa */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0x91, 0x05, 0xFB, 0x08, -0xDA, 0x62, 0x04, 0x38, 0xFA, 0xD2, 0x55, 0xB0, 0x1A, 0x2B, 0x30, 0x30, 0x01, 0x02, 0x03, 0x04, -0xFF, 0xFF, 0x5F, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x5E, 0x48, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50, -0x00, 0x09, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x0D, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x11, 0x4C, 0x4D, -0x54, 0x00, 0x53, 0x41, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x53, -0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, -0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x91, 0x05, 0xFB, 0x08, +0xFA, 0xD2, 0x55, 0xB0, 0x1A, 0x2B, 0x30, 0x30, 0x01, 0x02, 0x03, 0xFF, 0xFF, 0x5F, 0xF8, 0x00, +0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x08, 0xFF, 0xFF, 0x65, +0x50, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x53, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x53, +0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, +0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, /* UTC */ 0x50, 0x48, 0x50, 0x31, 0x01, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -18429,9 +18502,9 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { /* W-SU */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0x9B, 0x5F, 0x1E, 0xD8, -0x9D, 0x3E, 0xF2, 0x98, 0x9E, 0x2A, 0xEF, 0x18, 0x9E, 0xF7, 0x39, 0x88, 0x9F, 0x84, 0x58, 0x18, -0xA0, 0xD8, 0x6D, 0x08, 0xA1, 0x00, 0x16, 0x28, 0xA1, 0x3C, 0xA6, 0x40, 0xA4, 0x10, 0x6D, 0xC0, +0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x22, 0x9B, 0x5F, 0x1E, 0xC7, +0x9D, 0x3E, 0xF2, 0x79, 0x9E, 0x2A, 0xEE, 0xF9, 0x9E, 0xF7, 0x39, 0x69, 0x9F, 0x84, 0x57, 0xF9, +0xA0, 0xD8, 0x6C, 0xE9, 0xA1, 0x00, 0x16, 0x09, 0xA1, 0x3C, 0xA6, 0x40, 0xA4, 0x10, 0x6D, 0xC0, 0xA4, 0x3D, 0x32, 0xB0, 0xA5, 0x15, 0x68, 0xB0, 0xA5, 0x3D, 0x03, 0xC0, 0xA7, 0x1E, 0x45, 0x50, 0xB5, 0xA4, 0x19, 0x60, 0x15, 0x27, 0xA7, 0xD0, 0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, 0x19, 0xDB, 0x43, 0x40, 0x1A, 0xCC, 0x93, 0xD0, @@ -18448,21 +18521,22 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x40, 0x66, 0x07, 0x70, 0x41, 0x84, 0x1C, 0xF0, 0x42, 0x45, 0xE9, 0x70, 0x43, 0x63, 0xFE, 0xF0, 0x44, 0x25, 0xCB, 0x70, 0x45, 0x43, 0xE0, 0xF0, 0x46, 0x05, 0xAD, 0x70, 0x47, 0x23, 0xC2, 0xF0, 0x47, 0xEE, 0xC9, 0xF0, 0x49, 0x03, 0xA4, 0xF0, 0x49, 0xCE, 0xAB, 0xF0, 0x4A, 0xE3, 0x86, 0xF0, -0x4B, 0xAE, 0x8D, 0xF0, 0x4C, 0xCC, 0xA3, 0x70, 0x4D, 0x8E, 0x6F, 0xF0, 0x02, 0x01, 0x02, 0x03, -0x01, 0x03, 0x05, 0x04, 0x05, 0x06, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0A, 0x0B, -0x08, 0x05, 0x04, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, +0x4B, 0xAE, 0x8D, 0xF0, 0x4C, 0xCC, 0xA3, 0x70, 0x4D, 0x8E, 0x6F, 0xF0, 0x54, 0x4C, 0x1D, 0x60, +0x02, 0x01, 0x02, 0x03, 0x01, 0x03, 0x05, 0x04, 0x05, 0x06, 0x05, 0x04, 0x07, 0x04, 0x05, 0x04, +0x05, 0x04, 0x05, 0x04, 0x05, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x0A, 0x0B, 0x08, 0x05, 0x04, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0C, 0x00, 0x00, 0x23, 0x28, 0x00, 0x00, 0x00, 0x00, -0x31, 0x68, 0x01, 0x04, 0x00, 0x00, 0x23, 0x58, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x78, 0x01, 0x08, -0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x46, 0x50, -0x01, 0x15, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, -0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19, -0x00, 0x00, 0x38, 0x40, 0x00, 0x0D, 0x4D, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x44, -0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x4D, 0x53, 0x4D, 0x00, 0x45, -0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, +0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0C, 0x08, 0x00, 0x00, 0x23, +0x39, 0x00, 0x00, 0x00, 0x00, 0x31, 0x87, 0x01, 0x04, 0x00, 0x00, 0x23, 0x77, 0x00, 0x00, 0x00, +0x00, 0x3F, 0x97, 0x01, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, +0x11, 0x00, 0x00, 0x46, 0x50, 0x01, 0x15, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x19, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x01, 0x11, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, +0x00, 0x1C, 0x20, 0x00, 0x19, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0D, 0x4D, 0x4D, 0x54, 0x00, 0x4D, +0x53, 0x54, 0x00, 0x4D, 0x44, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x4D, 0x53, 0x4D, 0x00, 0x45, 0x45, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, +0x00, 0x00, 0x00, /* Zulu */ 0x50, 0x48, 0x50, 0x31, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -18471,4 +18545,4 @@ const unsigned char timelib_timezone_db_data_builtin[262465] = { 0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00, }; -const timelib_tzdb timezonedb_builtin = { "2014.5", 580, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2014.6", 582, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 78251383e1..6cea2af048 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -2147,8 +2147,6 @@ static zend_object *date_object_clone_date(zval *this_ptr TSRMLS_DC) /* {{{ */ static void date_clone_immutable(zval *object, zval *new_object TSRMLS_DC) /* {{{ */ { ZVAL_OBJ(new_object, date_object_clone_date(object TSRMLS_CC)); -//??? Z_SET_REFCOUNT_P(new_object, 1); -//??? Z_SET_ISREF_P(new_object); } /* }}} */ static int date_object_compare_date(zval *d1, zval *d2 TSRMLS_DC) /* {{{ */ @@ -2416,7 +2414,7 @@ static inline zend_object *date_object_new_period_ex(zend_class_entry *class_typ if (init_props) { object_properties_init(&intern->std, class_type); } -//??? date_object_free_storage_period, NULL TSRMLS_CC); + intern->std.handlers = &date_object_handlers_period; return &intern->std; @@ -2598,16 +2596,18 @@ PHP_FUNCTION(date_create) zval *timezone_object = NULL; char *time_str = NULL; int time_str_len = 0; + zval datetime_object; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sO!", &time_str, &time_str_len, &timezone_object, date_ce_timezone) == FAILURE) { RETURN_FALSE; } - php_date_instantiate(date_ce_date, return_value TSRMLS_CC); - if (!php_date_initialize(Z_PHPDATE_P(return_value), time_str, time_str_len, NULL, timezone_object, 0 TSRMLS_CC)) { - zval_dtor(return_value); + php_date_instantiate(date_ce_date, &datetime_object TSRMLS_CC); + if (!php_date_initialize(Z_PHPDATE_P(&datetime_object), time_str, time_str_len, NULL, timezone_object, 0 TSRMLS_CC)) { + zval_dtor(&datetime_object); RETURN_FALSE; } + RETVAL_ZVAL(&datetime_object, 0, 0); } /* }}} */ @@ -2619,16 +2619,18 @@ PHP_FUNCTION(date_create_immutable) zval *timezone_object = NULL; char *time_str = NULL; int time_str_len = 0; + zval datetime_object; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sO!", &time_str, &time_str_len, &timezone_object, date_ce_timezone) == FAILURE) { RETURN_FALSE; } - php_date_instantiate(date_ce_immutable, return_value TSRMLS_CC); - if (!php_date_initialize(Z_PHPDATE_P(return_value), time_str, time_str_len, NULL, timezone_object, 0 TSRMLS_CC)) { - zval_dtor(return_value); + php_date_instantiate(date_ce_immutable, &datetime_object TSRMLS_CC); + if (!php_date_initialize(Z_PHPDATE_P(&datetime_object), time_str, time_str_len, NULL, timezone_object, 0 TSRMLS_CC)) { + zval_dtor(&datetime_object); RETURN_FALSE; } + RETVAL_ZVAL(&datetime_object, 0, 0); } /* }}} */ @@ -2640,16 +2642,18 @@ PHP_FUNCTION(date_create_from_format) zval *timezone_object = NULL; char *time_str = NULL, *format_str = NULL; int time_str_len = 0, format_str_len = 0; + zval datetime_object; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|O", &format_str, &format_str_len, &time_str, &time_str_len, &timezone_object, date_ce_timezone) == FAILURE) { RETURN_FALSE; } - php_date_instantiate(date_ce_date, return_value TSRMLS_CC); - if (!php_date_initialize(Z_PHPDATE_P(return_value), time_str, time_str_len, format_str, timezone_object, 0 TSRMLS_CC)) { - zval_dtor(return_value); + php_date_instantiate(date_ce_date, &datetime_object TSRMLS_CC); + if (!php_date_initialize(Z_PHPDATE_P(&datetime_object), time_str, time_str_len, format_str, timezone_object, 0 TSRMLS_CC)) { + zval_dtor(&datetime_object); RETURN_FALSE; } + RETVAL_ZVAL(&datetime_object, 0, 0); } /* }}} */ @@ -2661,16 +2665,18 @@ PHP_FUNCTION(date_create_immutable_from_format) zval *timezone_object = NULL; char *time_str = NULL, *format_str = NULL; int time_str_len = 0, format_str_len = 0; + zval datetime_object; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|O", &format_str, &format_str_len, &time_str, &time_str_len, &timezone_object, date_ce_timezone) == FAILURE) { RETURN_FALSE; } - php_date_instantiate(date_ce_immutable, return_value TSRMLS_CC); - if (!php_date_initialize(Z_PHPDATE_P(return_value), time_str, time_str_len, format_str, timezone_object, 0 TSRMLS_CC)) { - zval_dtor(return_value); + php_date_instantiate(date_ce_immutable, &datetime_object TSRMLS_CC); + if (!php_date_initialize(Z_PHPDATE_P(&datetime_object), time_str, time_str_len, format_str, timezone_object, 0 TSRMLS_CC)) { + zval_dtor(&datetime_object); RETURN_FALSE; } + RETVAL_ZVAL(&datetime_object, 0, 0); } /* }}} */ @@ -2740,7 +2746,7 @@ PHP_METHOD(DateTimeImmutable, createFromMutable) } /* }}} */ -static int php_date_initialize_from_hash(zval *return_value, php_date_obj **dateobj, HashTable *myht TSRMLS_DC) /* {{{ */ +static int php_date_initialize_from_hash(php_date_obj **dateobj, HashTable *myht TSRMLS_DC) { zval *z_date; zval *z_timezone; @@ -2812,7 +2818,7 @@ PHP_METHOD(DateTime, __set_state) php_date_instantiate(date_ce_date, return_value TSRMLS_CC); dateobj = Z_PHPDATE_P(return_value); - if (!php_date_initialize_from_hash(return_value, &dateobj, myht TSRMLS_CC)) { + if (!php_date_initialize_from_hash(&dateobj, myht TSRMLS_CC)) { php_error(E_ERROR, "Invalid serialization data for DateTime object"); } } @@ -2834,7 +2840,7 @@ PHP_METHOD(DateTimeImmutable, __set_state) php_date_instantiate(date_ce_immutable, return_value TSRMLS_CC); dateobj = Z_PHPDATE_P(return_value); - if (!php_date_initialize_from_hash(return_value, &dateobj, myht TSRMLS_CC)) { + if (!php_date_initialize_from_hash(&dateobj, myht TSRMLS_CC)) { php_error(E_ERROR, "Invalid serialization data for DateTimeImmutable object"); } } @@ -2852,7 +2858,7 @@ PHP_METHOD(DateTime, __wakeup) myht = Z_OBJPROP_P(object); - if (!php_date_initialize_from_hash(return_value, &dateobj, myht TSRMLS_CC)) { + if (!php_date_initialize_from_hash(&dateobj, myht TSRMLS_CC)) { php_error(E_ERROR, "Invalid serialization data for DateTime object"); } } @@ -3672,7 +3678,7 @@ PHP_METHOD(DateTimeZone, __construct) if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &tz, &tz_len)) { tzobj = Z_PHPTIMEZONE_P(getThis()); if (FAILURE == timezone_initialize(tzobj, tz TSRMLS_CC)) { -//??? ZVAL_NULL(getThis()); + ZEND_CTOR_MAKE_NULL(); } } zend_restore_error_handling(&error_handling TSRMLS_CC); @@ -4096,8 +4102,8 @@ PHP_METHOD(DateInterval, __construct) diobj = Z_PHPINTERVAL_P(getThis()); diobj->diff = reltime; diobj->initialized = 1; -//??? } else { -//??? ZVAL_NULL(getThis()); + } else { + ZEND_CTOR_MAKE_NULL(); } } zend_restore_error_handling(&error_handling TSRMLS_CC); @@ -4556,7 +4562,7 @@ static void php_do_date_sunrise_sunset(INTERNAL_FUNCTION_PARAMETERS, int calc_su int rs; timelib_time *t; timelib_tzinfo *tzi; - char *retstr; + zend_string *retstr; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|ldddd", &time, &retformat, &latitude, &longitude, &zenith, &gmt_offset) == FAILURE) { RETURN_FALSE; @@ -4621,11 +4627,8 @@ static void php_do_date_sunrise_sunset(INTERNAL_FUNCTION_PARAMETERS, int calc_su switch (retformat) { case SUNFUNCS_RET_STRING: - spprintf(&retstr, 0, "%02d:%02d", (int) N, (int) (60 * (N - (int) N))); - // TODO: avoid reallocation ??? - RETVAL_STRINGL(retstr, 5); - efree(retstr); - return; + retstr = strpprintf(0, "%02d:%02d", (int) N, (int) (60 * (N - (int) N))); + RETURN_STR(retstr); break; case SUNFUNCS_RET_DOUBLE: RETURN_DOUBLE(N); diff --git a/ext/date/tests/bug20382-2.phpt b/ext/date/tests/bug20382-2.phpt index 5e075686e3..cc2d967895 100644 --- a/ext/date/tests/bug20382-2.phpt +++ b/ext/date/tests/bug20382-2.phpt @@ -95,18 +95,18 @@ result = Monday 2037-10-05 00:00:00 NZDT wanted = Monday 00:00:00 Australia/Adelaide -ts = Friday 1971-01-01 17:17:17 CST -result = Monday 1971-01-04 00:00:00 CST +ts = Friday 1971-01-01 17:17:17 ACST +result = Monday 1971-01-04 00:00:00 ACST wanted = Monday 00:00:00 Australia/Darwin -ts = Monday 1971-03-29 17:17:17 CST -result = Monday 1971-04-05 00:00:00 CST +ts = Monday 1971-03-29 17:17:17 ACST +result = Monday 1971-04-05 00:00:00 ACST wanted = Monday 00:00:00 Australia/Perth -ts = Friday 1971-01-01 17:17:17 WST -result = Monday 1971-01-04 00:00:00 WST +ts = Friday 1971-01-01 17:17:17 AWST +result = Monday 1971-01-04 00:00:00 AWST wanted = Monday 00:00:00 America/Aruba diff --git a/ext/date/tests/bug33415-2.phpt b/ext/date/tests/bug33415-2.phpt index 424be76fc4..c284f2503e 100644 --- a/ext/date/tests/bug33415-2.phpt +++ b/ext/date/tests/bug33415-2.phpt @@ -233,8 +233,8 @@ result=Saturday 1970-01-03 00:00:00 CAT 0 wanted=Saturday 00:00:00 TZ=Asia/Kashgar - Is it OK for this to be 3 AM? yes -tStamp=Thursday 1980-04-24 17:17:17 KAST 0 -result=Thursday 1980-05-01 03:00:00 CST 0 +tStamp=Thursday 1980-04-24 17:17:17 XJT 0 +result=Thursday 1980-05-01 00:00:00 XJT 0 wanted=Thursday 03:00:00 TZ=Indian/Christmas - Is it OK for this to be 7 AM? Note: does diff --git a/ext/date/tests/bug33532.phpt b/ext/date/tests/bug33532.phpt index 148630855d..5323e8c8db 100644 --- a/ext/date/tests/bug33532.phpt +++ b/ext/date/tests/bug33532.phpt @@ -39,5 +39,5 @@ datestr 10:00:00 AM July 1 2005 UTC Setting TZ input 10:00:00 AM July 1 2005 -strftime 10:00:00 AM July 1 2005 EST +1000 -datestr 10:00:00 AM July 1 2005 EST +strftime 10:00:00 AM July 1 2005 AEST +1000 +datestr 10:00:00 AM July 1 2005 AEST diff --git a/ext/fileinfo/data_file.c b/ext/fileinfo/data_file.c index 8bcd5aa0e1..5b24670a72 100644 --- a/ext/fileinfo/data_file.c +++ b/ext/fileinfo/data_file.c @@ -121057,7 +121057,7 @@ const unsigned char php_magic_database[2803888] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x3D, 0x1B, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x5C, 0x73, 0x7B, 0x30, 0x2C, 0x31, 0x30, 0x30, 0x7D, 0x42, 0x45, 0x47, 0x49, 0x4E, 0x5C, 0x73, 0x7B, 0x30, 0x2C, 0x31, 0x30, 0x30, 0x7D, 0x5B, 0x7B, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/ext/fileinfo/libmagic/cdf.c b/ext/fileinfo/libmagic/cdf.c index ad285cfe18..c86763faa0 100644 --- a/ext/fileinfo/libmagic/cdf.c +++ b/ext/fileinfo/libmagic/cdf.c @@ -823,7 +823,7 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h, q = (const uint8_t *)(const void *) ((const char *)(const void *)p + ofs - 2 * sizeof(uint32_t)); - if (q > e) { + if (q < p || q > e) { DPRINTF(("Ran of the end %p > %p\n", q, e)); goto out; } diff --git a/ext/fileinfo/libmagic/softmagic.c b/ext/fileinfo/libmagic/softmagic.c index 9432d55f21..ef0cbb3891 100644 --- a/ext/fileinfo/libmagic/softmagic.c +++ b/ext/fileinfo/libmagic/softmagic.c @@ -67,7 +67,7 @@ private int32_t mprint(struct magic_set *, struct magic *); private int32_t moffset(struct magic_set *, struct magic *); private void mdebug(uint32_t, const char *, size_t); private int mcopy(struct magic_set *, union VALUETYPE *, int, int, - const unsigned char *, uint32_t, size_t, size_t); + const unsigned char *, uint32_t, size_t, struct magic *); private int mconvert(struct magic_set *, struct magic *, int); private int print_sep(struct magic_set *, int); private int handle_annotation(struct magic_set *, struct magic *); @@ -1041,7 +1041,7 @@ mdebug(uint32_t offset, const char *str, size_t len) private int mcopy(struct magic_set *ms, union VALUETYPE *p, int type, int indir, - const unsigned char *s, uint32_t offset, size_t nbytes, size_t linecnt) + const unsigned char *s, uint32_t offset, size_t nbytes, struct magic *m) { /* * Note: FILE_SEARCH and FILE_REGEX do not actually copy @@ -1061,15 +1061,24 @@ mcopy(struct magic_set *ms, union VALUETYPE *p, int type, int indir, const char *last; /* end of search region */ const char *buf; /* start of search region */ const char *end; - size_t lines; + size_t lines, linecnt, bytecnt; + linecnt = m->str_range; + bytecnt = linecnt * 80; + + if (bytecnt == 0) { + bytecnt = 8192; + } + if (bytecnt > nbytes) { + bytecnt = nbytes; + } if (s == NULL) { ms->search.s_len = 0; ms->search.s = NULL; return 0; } buf = RCAST(const char *, s) + offset; - end = last = RCAST(const char *, s) + nbytes; + end = last = RCAST(const char *, s) + bytecnt; /* mget() guarantees buf <= last */ for (lines = linecnt, b = buf; lines && b < end && ((b = CAST(const char *, @@ -1082,7 +1091,7 @@ mcopy(struct magic_set *ms, union VALUETYPE *p, int type, int indir, b++; } if (lines) - last = RCAST(const char *, s) + nbytes; + last = RCAST(const char *, s) + bytecnt; ms->search.s = buf; ms->search.s_len = last - buf; @@ -1153,7 +1162,6 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m, int *need_separator, int *returnval) { uint32_t soffset, offset = ms->offset; - uint32_t count = m->str_range; int rv, oneed_separator, in_type; char *sbuf, *rbuf; union VALUETYPE *p = &ms->ms_value; @@ -1165,13 +1173,12 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m, } if (mcopy(ms, p, m->type, m->flag & INDIR, s, (uint32_t)(offset + o), - (uint32_t)nbytes, count) == -1) + (uint32_t)nbytes, m) == -1) return -1; if ((ms->flags & MAGIC_DEBUG) != 0) { fprintf(stderr, "mget(type=%d, flag=%x, offset=%u, o=%zu, " - "nbytes=%zu, count=%u)\n", m->type, m->flag, offset, o, - nbytes, count); + "nbytes=%zu)\n", m->type, m->flag, offset, o, nbytes); mdebug(offset, (char *)(void *)p, sizeof(union VALUETYPE)); } @@ -1664,7 +1671,7 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m, if ((ms->flags & MAGIC_DEBUG) != 0) fprintf(stderr, "indirect +offs=%u\n", offset); } - if (mcopy(ms, p, m->type, 0, s, offset, nbytes, count) == -1) + if (mcopy(ms, p, m->type, 0, s, offset, nbytes, m) == -1) return -1; ms->offset = offset; @@ -2092,7 +2099,9 @@ magiccheck(struct magic_set *ms, struct magic *m) zval subpats; char *haystack; + ZVAL_NULL(&retval); ZVAL_NULL(&subpats); + /* Cut the search len from haystack, equals to REG_STARTEND */ haystack = estrndup(ms->search.s, ms->search.s_len); diff --git a/ext/fileinfo/magicdata.patch b/ext/fileinfo/magicdata.patch index fb34c3c533..524d40b567 100644 --- a/ext/fileinfo/magicdata.patch +++ b/ext/fileinfo/magicdata.patch @@ -1,4 +1,58 @@ -Patches applied to file sources tree before generating magic.mgc +Patches applied to file 5.17 sources tree before generating magic.mgc and before running create_data_file.php to create data_file.c. + +From 0b478f445b6b7540b58af5d1fe583fa9e48fd745 Mon Sep 17 00:00:00 2001 +From: Christos Zoulas <christos@zoulas.com> +Date: Wed, 28 May 2014 19:52:36 +0000 +Subject: [PATCH] further optimize awk by not looking for the BEGIN regex until + we found the BEGIN (Jan Kaluza) + +--- + magic/Magdir/commands | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/magic/Magdir/commands b/magic/Magdir/commands +index bfffdef..26b2869 100644 +--- a/magic/Magdir/commands ++++ b/magic/Magdir/commands +@@ -49,7 +49,8 @@ + !:mime text/x-awk + 0 string/wt #!\ /usr/bin/awk awk script text executable + !:mime text/x-awk +-0 regex =^\\s{0,100}BEGIN\\s{0,100}[{] awk script text ++0 search/16384 BEGIN ++>0 regex =^\\s{0,100}BEGIN\\s{0,100}[{] awk script text + + # AT&T Bell Labs' Plan 9 shell + 0 string/wt #!\ /bin/rc Plan 9 rc shell script text executable +-- +2.0.3 + +From 71a8b6c0d758acb0f73e2e51421a711b5e9d6668 Mon Sep 17 00:00:00 2001 +From: Christos Zoulas <christos@zoulas.com> +Date: Fri, 30 May 2014 16:48:44 +0000 +Subject: [PATCH] Limit regex search for BEGIN to the first 4K of the file. + +--- + magic/Magdir/commands | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/magic/Magdir/commands b/magic/Magdir/commands +index 26b2869..bcd0f43 100644 +--- a/magic/Magdir/commands ++++ b/magic/Magdir/commands +@@ -49,8 +49,7 @@ + !:mime text/x-awk + 0 string/wt #!\ /usr/bin/awk awk script text executable + !:mime text/x-awk +-0 search/16384 BEGIN +->0 regex =^\\s{0,100}BEGIN\\s{0,100}[{] awk script text ++0 regex/4096 =^\\s{0,100}BEGIN\\s{0,100}[{] awk script text + + # AT&T Bell Labs' Plan 9 shell + 0 string/wt #!\ /bin/rc Plan 9 rc shell script text executable +-- +2.0.3 + diff --git a/ext/fileinfo/tests/cve-2014-3538.phpt b/ext/fileinfo/tests/cve-2014-3538.phpt new file mode 100644 index 0000000000..d6bc9c68c8 --- /dev/null +++ b/ext/fileinfo/tests/cve-2014-3538.phpt @@ -0,0 +1,35 @@ +--TEST-- +Bug #66731: file: extensive backtraking +--SKIPIF-- +<?php +if (!class_exists('finfo')) + die('skip no fileinfo extension'); +--FILE-- +<?php +$fd = __DIR__.'/cve-2014-3538.data'; + +file_put_contents($fd, + 'try:' . + str_repeat("\n", 1000000)); + +$fi = finfo_open(FILEINFO_NONE); +$t = microtime(true); +var_dump(finfo_file($fi, $fd)); +$t = microtime(true) - $t; +finfo_close($fi); +if ($t < 1) { + echo "Ok\n"; +} else { + printf("Failed, time=%.2f\n", $t); +} + +?> +Done +--CLEAN-- +<?php +@unlink(__DIR__.'/cve-2014-3538.data'); +?> +--EXPECTF-- +string(%d) "%s" +Ok +Done
\ No newline at end of file diff --git a/ext/ftp/ftp.c b/ext/ftp/ftp.c index a6b1c7ad5e..30f8e1d1bb 100644 --- a/ext/ftp/ftp.c +++ b/ext/ftp/ftp.c @@ -136,7 +136,7 @@ ftp_open(const char *host, short port, long timeout_sec TSRMLS_DC) ftp->fd = php_network_connect_socket_to_host(host, (unsigned short) (port ? port : 21), SOCK_STREAM, - 0, &tv, NULL, NULL, NULL, 0 TSRMLS_CC); + 0, &tv, NULL, NULL, NULL, 0, STREAM_SOCKOP_NONE TSRMLS_CC); if (ftp->fd == -1) { goto bail; } diff --git a/ext/gd/libgd/gdxpm.c b/ext/gd/libgd/gdxpm.c index 73f86e5df7..b69414e60d 100644 --- a/ext/gd/libgd/gdxpm.c +++ b/ext/gd/libgd/gdxpm.c @@ -31,12 +31,17 @@ gdImagePtr gdImageCreateFromXpm (char *filename) if (ret != XpmSuccess) { return 0; } + number = image.ncolors; + for(i = 0; i < number; i++) { + if (!image.colorTable[i].c_color) { + goto done; + } + } if (!(im = gdImageCreate(image.width, image.height))) { goto done; } - number = image.ncolors; colors = (int *) safe_emalloc(number, sizeof(int), 0); for (i = 0; i < number; i++) { switch (strlen (image.colorTable[i].c_color)) { diff --git a/ext/hash/hash_md.c b/ext/hash/hash_md.c index f13f594452..ebd357d2f7 100644 --- a/ext/hash/hash_md.c +++ b/ext/hash/hash_md.c @@ -121,10 +121,10 @@ PHP_NAMED_FUNCTION(php_if_md5) PHP_MD5Update(&context, arg, arg_len); PHP_MD5Final(digest, &context); if (raw_output) { - RETURN_STRINGL(digest, 16, 1); + RETURN_STRINGL(digest, 16); } else { make_digest(md5str, digest); - RETVAL_STRING(md5str, 1); + RETVAL_STRING(md5str); } } @@ -168,10 +168,10 @@ PHP_NAMED_FUNCTION(php_if_md5_file) } if (raw_output) { - RETURN_STRINGL(digest, 16, 1); + RETURN_STRINGL(digest, 16); } else { make_digest(md5str, digest); - RETVAL_STRING(md5str, 1); + RETVAL_STRING(md5str); } } /* }}} */ diff --git a/ext/hash/hash_sha.c b/ext/hash/hash_sha.c index a784c102d7..f39567e6dd 100644 --- a/ext/hash/hash_sha.c +++ b/ext/hash/hash_sha.c @@ -104,10 +104,10 @@ PHP_FUNCTION(sha1) PHP_SHA1Update(&context, arg, arg_len); PHP_SHA1Final(digest, &context); if (raw_output) { - RETURN_STRINGL(digest, 20, 1); + RETURN_STRINGL(digest, 20); } else { make_sha1_digest(sha1str, digest); - RETVAL_STRING(sha1str, 1); + RETVAL_STRING(sha1str); } } @@ -152,10 +152,10 @@ PHP_FUNCTION(sha1_file) } if (raw_output) { - RETURN_STRINGL(digest, 20, 1); + RETURN_STRINGL(digest, 20); } else { make_sha1_digest(sha1str, digest); - RETVAL_STRING(sha1str, 1); + RETVAL_STRING(sha1str); } } /* }}} */ diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index fddcad5730..09295a87f3 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -76,8 +76,8 @@ MAILSTREAM DEFAULTPROTO; static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC); static void _php_imap_add_body(zval *arg, BODY *body TSRMLS_DC); -static char* _php_imap_parse_address(ADDRESS *addresslist, zval *paddress TSRMLS_DC); -static char* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC); +static zend_string* _php_imap_parse_address(ADDRESS *addresslist, zval *paddress TSRMLS_DC); +static zend_string* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC); /* the gets we use */ static char *php_mail_gets(readfn_t f, void *stream, unsigned long size, GETS_DATA *md); @@ -1482,7 +1482,7 @@ PHP_FUNCTION(imap_set_quota) ZEND_FETCH_RESOURCE(imap_le_struct, pils *, streamind, -1, "imap", le_imap); - limits.text.data = "STORAGE"; + limits.text.data = (unsigned char*)"STORAGE"; limits.text.size = mailbox_size; limits.next = NIL; @@ -1864,7 +1864,7 @@ PHP_FUNCTION(imap_list) array_init(return_value); cur=IMAPG(imap_folders); while (cur != NIL) { - add_next_index_string(return_value, cur->LTEXT); + add_next_index_string(return_value, (char*)cur->LTEXT); cur=cur->next; } mail_free_stringlist (&IMAPG(imap_folders)); @@ -1905,7 +1905,7 @@ PHP_FUNCTION(imap_list_full) cur=IMAPG(imap_folder_objects); while (cur != NIL) { object_init(&mboxob); - add_property_string(&mboxob, "name", cur->LTEXT); + add_property_string(&mboxob, "name", (char*)cur->LTEXT); add_property_long(&mboxob, "attributes", cur->attributes); #ifdef IMAP41 delim[0] = (char)cur->delimiter; @@ -1948,7 +1948,7 @@ PHP_FUNCTION(imap_listscan) array_init(return_value); cur=IMAPG(imap_folders); while (cur != NIL) { - add_next_index_string(return_value, cur->LTEXT); + add_next_index_string(return_value, (char*)cur->LTEXT); cur=cur->next; } mail_free_stringlist (&IMAPG(imap_folders)); @@ -2170,7 +2170,7 @@ PHP_FUNCTION(imap_lsub) array_init(return_value); cur=IMAPG(imap_sfolders); while (cur != NIL) { - add_next_index_string(return_value, cur->LTEXT); + add_next_index_string(return_value, (char*)cur->LTEXT); cur=cur->next; } mail_free_stringlist (&IMAPG(imap_sfolders)); @@ -2210,7 +2210,7 @@ PHP_FUNCTION(imap_lsub_full) cur=IMAPG(imap_sfolder_objects); while (cur != NIL) { object_init(&mboxob); - add_property_string(&mboxob, "name", cur->LTEXT); + add_property_string(&mboxob, "name", (char*)cur->LTEXT); add_property_long(&mboxob, "attributes", cur->attributes); #ifdef IMAP41 delim[0] = (char)cur->delimiter; @@ -2535,7 +2535,7 @@ PHP_FUNCTION(imap_binary) return; } - decode = rfc822_binary(text, text_len, &newlength); + decode = (char*)rfc822_binary(text, text_len, &newlength); if (decode == NULL) { RETURN_FALSE; @@ -2600,7 +2600,7 @@ PHP_FUNCTION(imap_rfc822_write_address) char *mailbox, *host, *personal; int mailbox_len, host_len, personal_len; ADDRESS *addr; - char *string; + zend_string *string; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss", &mailbox, &mailbox_len, &host, &host_len, &personal, &personal_len) == FAILURE) { return; @@ -2626,8 +2626,7 @@ PHP_FUNCTION(imap_rfc822_write_address) string = _php_rfc822_write_address(addr TSRMLS_CC); if (string) { - RETVAL_STRING(string); - efree(string); + RETVAL_STR(string); } else { RETURN_FALSE; } @@ -2704,7 +2703,7 @@ PHP_FUNCTION(imap_utf8) #else utf8_mime2text(&src, &dest, U8T_DECOMPOSE); #endif - RETVAL_STRINGL(dest.data, dest.size); + RETVAL_STRINGL((char*)dest.data, dest.size); if (dest.data) { free(dest.data); } @@ -2869,7 +2868,7 @@ PHP_FUNCTION(imap_utf7_decode) } #endif - RETURN_STRINGL(out, outlen); + RETURN_STRINGL((char*)out, outlen); } /* }}} */ @@ -2933,7 +2932,7 @@ PHP_FUNCTION(imap_utf7_encode) out = STR_ALLOC(outlen, 0); /* encode input string */ - outp = out->val; + outp = (unsigned char*)out->val; state = ST_NORMAL; endp = (inp = in) + inlen; while (inp < endp || state != ST_NORMAL) { @@ -3283,7 +3282,7 @@ PHP_FUNCTION(imap_bodystruct) object_init(return_value); - body=mail_body(imap_le_struct->imap_stream, msg, section); + body=mail_body(imap_le_struct->imap_stream, msg, (unsigned char*)section); if (body == NULL) { zval_dtor(return_value); RETURN_FALSE; @@ -3378,7 +3377,7 @@ PHP_FUNCTION(imap_fetch_overview) int sequence_len; pils *imap_le_struct; zval myoverview; - char *address; + zend_string *address; long status, flags = 0L; int argc = ZEND_NUM_ARGS(); @@ -3396,8 +3395,8 @@ PHP_FUNCTION(imap_fetch_overview) array_init(return_value); status = (flags & FT_UID) - ? mail_uid_sequence(imap_le_struct->imap_stream, sequence) - : mail_sequence(imap_le_struct->imap_stream, sequence); + ? mail_uid_sequence(imap_le_struct->imap_stream, (unsigned char*)sequence) + : mail_sequence(imap_le_struct->imap_stream, (unsigned char*)sequence); if (status) { MESSAGECACHE *elt; @@ -3415,22 +3414,18 @@ PHP_FUNCTION(imap_fetch_overview) env->from->next=NULL; address =_php_rfc822_write_address(env->from TSRMLS_CC); if (address) { - // TODO: avoid reallocation ??? - add_property_string(&myoverview, "from", address); - efree(address); + add_property_str(&myoverview, "from", address); } } if (env->to) { env->to->next = NULL; address = _php_rfc822_write_address(env->to TSRMLS_CC); if (address) { - // TODO: avoid reallocation ??? - add_property_string(&myoverview, "to", address); - efree(address); + add_property_str(&myoverview, "to", address); } } if (env->date) { - add_property_string(&myoverview, "date", env->date); + add_property_string(&myoverview, "date", (char*)env->date); } if (env->message_id) { add_property_string(&myoverview, "message_id", env->message_id); @@ -3494,7 +3489,7 @@ PHP_FUNCTION(imap_mail_compose) } if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "date", sizeof("date") - 1)) != NULL) { convert_to_string_ex(pvalue); - env->date = cpystr(Z_STRVAL_P(pvalue)); + env->date = (unsigned char*)cpystr(Z_STRVAL_P(pvalue)); } if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(envelope), "from", sizeof("from") - 1)) != NULL) { convert_to_string_ex(pvalue); @@ -3622,11 +3617,11 @@ PHP_FUNCTION(imap_mail_compose) } if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "contents.data", sizeof("contents.data") - 1)) != NULL) { convert_to_string_ex(pvalue); - bod->contents.text.data = (char *) fs_get(Z_STRLEN_P(pvalue) + 1); + bod->contents.text.data = fs_get(Z_STRLEN_P(pvalue) + 1); memcpy(bod->contents.text.data, Z_STRVAL_P(pvalue), Z_STRLEN_P(pvalue)+1); bod->contents.text.size = Z_STRLEN_P(pvalue); } else { - bod->contents.text.data = (char *) fs_get(1); + bod->contents.text.data = fs_get(1); memcpy(bod->contents.text.data, "", 1); bod->contents.text.size = 0; } @@ -3726,11 +3721,11 @@ PHP_FUNCTION(imap_mail_compose) } if ((pvalue = zend_hash_str_find(Z_ARRVAL_P(data), "contents.data", sizeof("contents.data") - 1)) != NULL) { convert_to_string_ex(pvalue); - bod->contents.text.data = (char *) fs_get(Z_STRLEN_P(pvalue) + 1); + bod->contents.text.data = fs_get(Z_STRLEN_P(pvalue) + 1); memcpy(bod->contents.text.data, Z_STRVAL_P(pvalue), Z_STRLEN_P(pvalue) + 1); bod->contents.text.size = Z_STRLEN_P(pvalue); } else { - bod->contents.text.data = (char *) fs_get(1); + bod->contents.text.data = fs_get(1); memcpy(bod->contents.text.data, "", 1); bod->contents.text.size = 0; } @@ -4133,7 +4128,7 @@ PHP_FUNCTION(imap_alerts) cur = IMAPG(imap_alertstack); while (cur != NIL) { - add_next_index_string(return_value, cur->LTEXT); + add_next_index_string(return_value, (char*)cur->LTEXT); cur = cur->next; } mail_free_stringlist(&IMAPG(imap_alertstack)); @@ -4160,7 +4155,7 @@ PHP_FUNCTION(imap_errors) cur = IMAPG(imap_errorstack); while (cur != NIL) { - add_next_index_string(return_value, cur->LTEXT); + add_next_index_string(return_value, (char*)cur->LTEXT); cur = cur->next; } mail_free_errorlist(&IMAPG(imap_errorstack)); @@ -4186,7 +4181,7 @@ PHP_FUNCTION(imap_last_error) cur = IMAPG(imap_errorstack); while (cur != NIL) { if (cur->next == NIL) { - RETURN_STRING(cur->LTEXT); + RETURN_STRING((char*)cur->LTEXT); } cur = cur->next; } @@ -4305,10 +4300,9 @@ static long _php_rfc822_soutr (void *stream, char *string) /* {{{ _php_rfc822_write_address */ -static char* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC) +static zend_string* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC) { char address[MAILTMPLEN]; - char *str; smart_str ret = {0}; RFC822BUFFER buf; @@ -4320,11 +4314,7 @@ static char* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC) rfc822_output_address_list(&buf, addresslist, 0, NULL); rfc822_output_flush(&buf); smart_str_0(&ret); - /* avoide dup? */ - str = estrndup(ret.s->val, ret.s->len); - smart_str_free(&ret); - - return str; + return ret.s; } /* }}} */ @@ -4390,7 +4380,7 @@ static int _php_imap_address_size (ADDRESS *addresslist) /* {{{ _php_rfc822_write_address */ -static char* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC) +static zend_string* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC) { char address[SENDBUFLEN]; @@ -4400,15 +4390,15 @@ static char* _php_rfc822_write_address(ADDRESS *addresslist TSRMLS_DC) } address[0] = 0; rfc822_write_address(address, addresslist); - return estrdup(address); + return STR_INIT(address, strlen(address), 0); } /* }}} */ #endif /* {{{ _php_imap_parse_address */ -static char* _php_imap_parse_address (ADDRESS *addresslist, zval *paddress TSRMLS_DC) +static zend_string* _php_imap_parse_address (ADDRESS *addresslist, zval *paddress TSRMLS_DC) { - char *fulladdress; + zend_string *fulladdress; ADDRESS *addresstmp; zval tmpvals; @@ -4434,13 +4424,13 @@ static char* _php_imap_parse_address (ADDRESS *addresslist, zval *paddress TSRML static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) { zval paddress; - char *fulladdress=NULL; + zend_string *fulladdress=NULL; object_init(myzvalue); if (en->remail) add_property_string(myzvalue, "remail", en->remail); - if (en->date) add_property_string(myzvalue, "date", en->date); - if (en->date) add_property_string(myzvalue, "Date", en->date); + if (en->date) add_property_string(myzvalue, "date", (char*)en->date); + if (en->date) add_property_string(myzvalue, "Date", (char*)en->date); if (en->subject) add_property_string(myzvalue, "subject", en->subject); if (en->subject) add_property_string(myzvalue, "Subject", en->subject); if (en->in_reply_to) add_property_string(myzvalue, "in_reply_to", en->in_reply_to); @@ -4453,9 +4443,7 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) array_init(&paddress); fulladdress = _php_imap_parse_address(en->to, &paddress TSRMLS_CC); if (fulladdress) { - // TODO: avoid reallocation ??? - add_property_string(myzvalue, "toaddress", fulladdress); - efree(fulladdress); + add_property_str(myzvalue, "toaddress", fulladdress); } add_assoc_object(myzvalue, "to", &paddress TSRMLS_CC); } @@ -4464,9 +4452,7 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) array_init(&paddress); fulladdress = _php_imap_parse_address(en->from, &paddress TSRMLS_CC); if (fulladdress) { - // TODO: avoid reallocation ??? - add_property_string(myzvalue, "fromaddress", fulladdress); - efree(fulladdress); + add_property_str(myzvalue, "fromaddress", fulladdress); } add_assoc_object(myzvalue, "from", &paddress TSRMLS_CC); } @@ -4475,9 +4461,7 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) array_init(&paddress); fulladdress = _php_imap_parse_address(en->cc, &paddress TSRMLS_CC); if (fulladdress) { - // TODO: avoid reallocation ??? - add_property_string(myzvalue, "ccaddress", fulladdress); - efree(fulladdress); + add_property_str(myzvalue, "ccaddress", fulladdress); } add_assoc_object(myzvalue, "cc", &paddress TSRMLS_CC); } @@ -4486,9 +4470,7 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) array_init(&paddress); fulladdress = _php_imap_parse_address(en->bcc, &paddress TSRMLS_CC); if (fulladdress) { - // TODO: avoid reallocation ??? - add_property_string(myzvalue, "bccaddress", fulladdress); - efree(fulladdress); + add_property_str(myzvalue, "bccaddress", fulladdress); } add_assoc_object(myzvalue, "bcc", &paddress TSRMLS_CC); } @@ -4497,9 +4479,7 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) array_init(&paddress); fulladdress = _php_imap_parse_address(en->reply_to, &paddress TSRMLS_CC); if (fulladdress) { - // TODO: avoid reallocation ??? - add_property_string(myzvalue, "reply_toaddress", fulladdress); - efree(fulladdress); + add_property_str(myzvalue, "reply_toaddress", fulladdress); } add_assoc_object(myzvalue, "reply_to", &paddress TSRMLS_CC); } @@ -4508,9 +4488,7 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) array_init(&paddress); fulladdress = _php_imap_parse_address(en->sender, &paddress TSRMLS_CC); if (fulladdress) { - // TODO: avoid reallocation ??? - add_property_string(myzvalue, "senderaddress", fulladdress); - efree(fulladdress); + add_property_str(myzvalue, "senderaddress", fulladdress); } add_assoc_object(myzvalue, "sender", &paddress TSRMLS_CC); } @@ -4519,9 +4497,7 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en TSRMLS_DC) array_init(&paddress); fulladdress = _php_imap_parse_address(en->return_path, &paddress TSRMLS_CC); if (fulladdress) { - // TODO: avoid reallocation ??? - add_property_string(myzvalue, "return_pathaddress", fulladdress); - efree(fulladdress); + add_property_str(myzvalue, "return_pathaddress", fulladdress); } add_assoc_object(myzvalue, "return_path", &paddress TSRMLS_CC); } @@ -4873,7 +4849,7 @@ PHP_IMAP_EXPORT void mm_notify(MAILSTREAM *stream, char *str, long errflg) if (strncmp(str, "[ALERT] ", 8) == 0) { if (IMAPG(imap_alertstack) == NIL) { IMAPG(imap_alertstack) = mail_newstringlist(); - IMAPG(imap_alertstack)->LSIZE = strlen(IMAPG(imap_alertstack)->LTEXT = cpystr(str)); + IMAPG(imap_alertstack)->LSIZE = strlen((char*)(IMAPG(imap_alertstack)->LTEXT = (unsigned char*)cpystr(str))); IMAPG(imap_alertstack)->next = NIL; } else { cur = IMAPG(imap_alertstack); @@ -4882,7 +4858,7 @@ PHP_IMAP_EXPORT void mm_notify(MAILSTREAM *stream, char *str, long errflg) } cur->next = mail_newstringlist (); cur = cur->next; - cur->LSIZE = strlen(cur->LTEXT = cpystr(str)); + cur->LSIZE = strlen((char*)(cur->LTEXT = (unsigned char*)cpystr(str))); cur->next = NIL; } } @@ -4899,7 +4875,7 @@ PHP_IMAP_EXPORT void mm_list(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, /* Author: CJH */ if (IMAPG(imap_folder_objects) == NIL) { IMAPG(imap_folder_objects) = mail_newfolderobjectlist(); - IMAPG(imap_folder_objects)->LSIZE=strlen(IMAPG(imap_folder_objects)->LTEXT=cpystr(mailbox)); + IMAPG(imap_folder_objects)->LSIZE=strlen((char*)(IMAPG(imap_folder_objects)->LTEXT = (unsigned char*)cpystr(mailbox))); IMAPG(imap_folder_objects)->delimiter = delimiter; IMAPG(imap_folder_objects)->attributes = attributes; IMAPG(imap_folder_objects)->next = NIL; @@ -4908,7 +4884,7 @@ PHP_IMAP_EXPORT void mm_list(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, ocur=IMAPG(imap_folder_objects_tail); ocur->next=mail_newfolderobjectlist(); ocur=ocur->next; - ocur->LSIZE = strlen(ocur->LTEXT = cpystr(mailbox)); + ocur->LSIZE = strlen((char*)(ocur->LTEXT = (unsigned char*)cpystr(mailbox))); ocur->delimiter = delimiter; ocur->attributes = attributes; ocur->next = NIL; @@ -4920,14 +4896,14 @@ PHP_IMAP_EXPORT void mm_list(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, if (!(attributes & LATT_NOSELECT)) { if (IMAPG(imap_folders) == NIL) { IMAPG(imap_folders)=mail_newstringlist(); - IMAPG(imap_folders)->LSIZE=strlen(IMAPG(imap_folders)->LTEXT=cpystr(mailbox)); + IMAPG(imap_folders)->LSIZE=strlen((char*)(IMAPG(imap_folders)->LTEXT = (unsigned char*)cpystr(mailbox))); IMAPG(imap_folders)->next=NIL; IMAPG(imap_folders_tail) = IMAPG(imap_folders); } else { cur=IMAPG(imap_folders_tail); cur->next=mail_newstringlist (); cur=cur->next; - cur->LSIZE = strlen (cur->LTEXT = cpystr (mailbox)); + cur->LSIZE = strlen((char*)(cur->LTEXT = (unsigned char*)cpystr(mailbox))); cur->next = NIL; IMAPG(imap_folders_tail) = cur; } @@ -4946,7 +4922,7 @@ PHP_IMAP_EXPORT void mm_lsub(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, /* Author: CJH */ if (IMAPG(imap_sfolder_objects) == NIL) { IMAPG(imap_sfolder_objects) = mail_newfolderobjectlist(); - IMAPG(imap_sfolder_objects)->LSIZE=strlen(IMAPG(imap_sfolder_objects)->LTEXT=cpystr(mailbox)); + IMAPG(imap_sfolder_objects)->LSIZE = strlen((char*)(IMAPG(imap_sfolder_objects)->LTEXT = (unsigned char*)cpystr(mailbox))); IMAPG(imap_sfolder_objects)->delimiter = delimiter; IMAPG(imap_sfolder_objects)->attributes = attributes; IMAPG(imap_sfolder_objects)->next = NIL; @@ -4955,7 +4931,7 @@ PHP_IMAP_EXPORT void mm_lsub(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, ocur=IMAPG(imap_sfolder_objects_tail); ocur->next=mail_newfolderobjectlist(); ocur=ocur->next; - ocur->LSIZE=strlen(ocur->LTEXT = cpystr(mailbox)); + ocur->LSIZE=strlen((char*)(ocur->LTEXT = (unsigned char*)cpystr(mailbox))); ocur->delimiter = delimiter; ocur->attributes = attributes; ocur->next = NIL; @@ -4965,14 +4941,14 @@ PHP_IMAP_EXPORT void mm_lsub(MAILSTREAM *stream, DTYPE delimiter, char *mailbox, /* build the old simple array for imap_listsubscribed() */ if (IMAPG(imap_sfolders) == NIL) { IMAPG(imap_sfolders)=mail_newstringlist(); - IMAPG(imap_sfolders)->LSIZE=strlen(IMAPG(imap_sfolders)->LTEXT=cpystr(mailbox)); + IMAPG(imap_sfolders)->LSIZE=strlen((char*)(IMAPG(imap_sfolders)->LTEXT = (unsigned char*)cpystr(mailbox))); IMAPG(imap_sfolders)->next=NIL; IMAPG(imap_sfolders_tail) = IMAPG(imap_sfolders); } else { cur=IMAPG(imap_sfolders_tail); cur->next=mail_newstringlist (); cur=cur->next; - cur->LSIZE = strlen (cur->LTEXT = cpystr (mailbox)); + cur->LSIZE = strlen((char*)(cur->LTEXT = (unsigned char*)cpystr(mailbox))); cur->next = NIL; IMAPG(imap_sfolders_tail) = cur; } @@ -5010,7 +4986,7 @@ PHP_IMAP_EXPORT void mm_log(char *str, long errflg) if (errflg != NIL) { /* CJH: maybe put these into a more comprehensive log for debugging purposes? */ if (IMAPG(imap_errorstack) == NIL) { IMAPG(imap_errorstack) = mail_newerrorlist(); - IMAPG(imap_errorstack)->LSIZE = strlen(IMAPG(imap_errorstack)->LTEXT = cpystr(str)); + IMAPG(imap_errorstack)->LSIZE = strlen((char*)(IMAPG(imap_errorstack)->LTEXT = (unsigned char*)cpystr(str))); IMAPG(imap_errorstack)->errflg = errflg; IMAPG(imap_errorstack)->next = NIL; } else { @@ -5020,7 +4996,7 @@ PHP_IMAP_EXPORT void mm_log(char *str, long errflg) } cur->next = mail_newerrorlist(); cur = cur->next; - cur->LSIZE = strlen(cur->LTEXT = cpystr(str)); + cur->LSIZE = strlen((char*)(cur->LTEXT = (unsigned char*)cpystr(str))); cur->errflg = errflg; cur->next = NIL; } diff --git a/ext/interbase/ibase_blobs.c b/ext/interbase/ibase_blobs.c index 94f32f87ed..8b8d731d7b 100644 --- a/ext/interbase/ibase_blobs.c +++ b/ext/interbase/ibase_blobs.c @@ -32,7 +32,7 @@ static int le_blob; -static void _php_ibase_free_blob(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ +static void _php_ibase_free_blob(zend_resource *rsrc TSRMLS_DC) /* {{{ */ { ibase_blob *ib_blob = (ibase_blob *)rsrc->ptr; @@ -118,26 +118,28 @@ int _php_ibase_blob_get(zval *return_value, ibase_blob *ib_blob, unsigned long m _php_ibase_error(TSRMLS_C); return FAILURE; } - RETVAL_STRINGL(bl_data, cur_len, 0); + // TODO: avoid double reallocation??? + RETVAL_STRINGL(bl_data, cur_len); + efree(bl_data); } else { /* null blob */ - RETVAL_STRING("", 1); /* empty string */ + RETVAL_EMPTY_STRING(); /* empty string */ } return SUCCESS; } /* }}} */ -int _php_ibase_blob_add(zval **string_arg, ibase_blob *ib_blob TSRMLS_DC) /* {{{ */ +int _php_ibase_blob_add(zval *string_arg, ibase_blob *ib_blob TSRMLS_DC) /* {{{ */ { unsigned long put_cnt = 0, rem_cnt; unsigned short chunk_size; convert_to_string_ex(string_arg); - for (rem_cnt = Z_STRLEN_PP(string_arg); rem_cnt > 0; rem_cnt -= chunk_size) { + for (rem_cnt = Z_STRLEN_P(string_arg); rem_cnt > 0; rem_cnt -= chunk_size) { chunk_size = rem_cnt > USHRT_MAX ? USHRT_MAX : (unsigned short)rem_cnt; - if (isc_put_segment(IB_STATUS, &ib_blob->bl_handle, chunk_size, &Z_STRVAL_PP(string_arg)[put_cnt] )) { + if (isc_put_segment(IB_STATUS, &ib_blob->bl_handle, chunk_size, &Z_STRVAL_P(string_arg)[put_cnt] )) { _php_ibase_error(TSRMLS_C); return FAILURE; } @@ -228,6 +230,7 @@ PHP_FUNCTION(ibase_blob_create) } ZEND_REGISTER_RESOURCE(return_value, ib_blob, le_blob); + Z_ADDREF_P(return_value); } /* }}} */ @@ -278,6 +281,7 @@ PHP_FUNCTION(ibase_blob_open) } ZEND_REGISTER_RESOURCE(return_value, ib_blob, le_blob); + Z_ADDREF_P(return_value); return; } while (0); @@ -291,7 +295,7 @@ PHP_FUNCTION(ibase_blob_open) Add data into created blob */ PHP_FUNCTION(ibase_blob_add) { - zval **blob_arg, **string_arg; + zval *blob_arg, *string_arg; ibase_blob *ib_blob; RESET_ERRMSG; @@ -317,7 +321,7 @@ PHP_FUNCTION(ibase_blob_add) Get len bytes data from open blob */ PHP_FUNCTION(ibase_blob_get) { - zval **blob_arg, **len_arg; + zval *blob_arg, *len_arg; ibase_blob *ib_blob; RESET_ERRMSG; @@ -335,7 +339,7 @@ PHP_FUNCTION(ibase_blob_get) convert_to_long_ex(len_arg); - if (_php_ibase_blob_get(return_value, ib_blob, Z_LVAL_PP(len_arg) TSRMLS_CC) != SUCCESS) { + if (_php_ibase_blob_get(return_value, ib_blob, Z_LVAL_P(len_arg) TSRMLS_CC) != SUCCESS) { RETURN_FALSE; } } @@ -343,8 +347,9 @@ PHP_FUNCTION(ibase_blob_get) static void _php_ibase_blob_end(INTERNAL_FUNCTION_PARAMETERS, int bl_end) /* {{{ */ { - zval **blob_arg; + zval *blob_arg; ibase_blob *ib_blob; + char *s; RESET_ERRMSG; @@ -364,7 +369,10 @@ static void _php_ibase_blob_end(INTERNAL_FUNCTION_PARAMETERS, int bl_end) /* {{{ } ib_blob->bl_handle = NULL; - RETVAL_STRINGL(_php_ibase_quad_to_string(ib_blob->bl_qd), BLOB_ID_LEN, 0); + s = _php_ibase_quad_to_string(ib_blob->bl_qd); + // TODO: avoid double reallocation??? + RETVAL_STRINGL(s, BLOB_ID_LEN); + efree(s); } else { /* discard created blob */ if (isc_cancel_blob(IB_STATUS, &ib_blob->bl_handle)) { _php_ibase_error(TSRMLS_C); @@ -373,7 +381,7 @@ static void _php_ibase_blob_end(INTERNAL_FUNCTION_PARAMETERS, int bl_end) /* {{{ ib_blob->bl_handle = NULL; RETVAL_TRUE; } - zend_list_delete(Z_LVAL_PP(blob_arg)); + zend_list_delete(Z_RES_P(blob_arg)); } /* }}} */ @@ -544,6 +552,7 @@ PHP_FUNCTION(ibase_blob_import) ibase_trans *trans = NULL; char bl_data[IBASE_BLOB_SEG]; php_stream *stream; + char *s; RESET_ERRMSG; @@ -554,7 +563,7 @@ PHP_FUNCTION(ibase_blob_import) PHP_IBASE_LINK_TRANS(link, ib_link, trans); - php_stream_from_zval(stream, &file); + php_stream_from_zval(stream, file); do { if (isc_create_blob(IB_STATUS, &ib_link->handle, &trans->handle, &ib_blob.bl_handle, @@ -571,7 +580,11 @@ PHP_FUNCTION(ibase_blob_import) if (isc_close_blob(IB_STATUS, &ib_blob.bl_handle)) { break; } - RETURN_STRINGL( _php_ibase_quad_to_string(ib_blob.bl_qd), BLOB_ID_LEN, 0); + s = _php_ibase_quad_to_string(ib_blob.bl_qd); + // TODO: avoid double reallocation??? + RETVAL_STRINGL(s, BLOB_ID_LEN); + efree(s); + return; } while (0); _php_ibase_error(TSRMLS_C); diff --git a/ext/interbase/ibase_events.c b/ext/interbase/ibase_events.c index ac3c328a0b..ab1a791d37 100644 --- a/ext/interbase/ibase_events.c +++ b/ext/interbase/ibase_events.c @@ -55,10 +55,9 @@ void _php_ibase_free_event(ibase_event *event TSRMLS_DC) /* {{{ */ *node = event->event_next; } - if (event->callback) { - zval_dtor(event->callback); - FREE_ZVAL(event->callback); - event->callback = NULL; + if (Z_TYPE(event->callback) != IS_UNDEF) { + zval_dtor(&event->callback); + ZVAL_UNDEF(&event->callback); _php_ibase_event_free(event->event_buffer,event->result_buffer); @@ -70,7 +69,7 @@ void _php_ibase_free_event(ibase_event *event TSRMLS_DC) /* {{{ */ } /* }}} */ -static void _php_ibase_free_event_rsrc(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ +static void _php_ibase_free_event_rsrc(zend_resource *rsrc TSRMLS_DC) /* {{{ */ { ibase_event *e = (ibase_event *) rsrc->ptr; @@ -124,7 +123,7 @@ static void _php_ibase_event_block(ibase_db_link *ib_link, unsigned short count, Waits for any one of the passed Interbase events to be posted by the database, and returns its name */ PHP_FUNCTION(ibase_wait_event) { - zval ***args; + zval *args; ibase_db_link *ib_link; int num_args; char *event_buffer, *result_buffer, *events[15]; @@ -142,8 +141,8 @@ PHP_FUNCTION(ibase_wait_event) return; } - if (Z_TYPE_PP(args[0]) == IS_RESOURCE) { - if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, args[0], -1, "InterBase link", le_link, le_plink)) { + if (Z_TYPE(args[0]) == IS_RESOURCE) { + if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, &args[0], -1, "InterBase link", le_link, le_plink)) { efree(args); RETURN_FALSE; } @@ -160,8 +159,8 @@ PHP_FUNCTION(ibase_wait_event) } for (; i < ZEND_NUM_ARGS(); ++i) { - convert_to_string_ex(args[i]); - events[event_count++] = Z_STRVAL_PP(args[i]); + convert_to_string_ex(&args[i]); + events[event_count++] = Z_STRVAL(args[i]); } /* fills the required data structure with information about the events */ @@ -179,10 +178,10 @@ PHP_FUNCTION(ibase_wait_event) isc_event_counts(occurred_event, buffer_size, event_buffer, result_buffer); for (i = 0; i < event_count; ++i) { if (occurred_event[i]) { - char *result = estrdup(events[i]); + zend_string *result = STR_INIT(events[i], strlen(events[i]), 0); _php_ibase_event_free(event_buffer,result_buffer); efree(args); - RETURN_STRING(result,0); + RETURN_STR(result); } } @@ -197,6 +196,8 @@ PHP_FUNCTION(ibase_wait_event) static isc_callback _php_ibase_callback(ibase_event *event, /* {{{ */ unsigned short buffer_size, char *result_buf) { + zval *res; + /* this function is called asynchronously by the Interbase client library. */ TSRMLS_FETCH_FROM_CTX(event->thread_ctx); @@ -208,38 +209,35 @@ static isc_callback _php_ibase_callback(ibase_event *event, /* {{{ */ switch (event->state) { unsigned short i; unsigned long occurred_event[15]; - zval event_name, link_id, return_value, *args[2]; + zval return_value, args[2]; default: /* == DEAD */ break; case ACTIVE: - args[0] = &event_name; - args[1] = &link_id; - /* copy the updated results into the result buffer */ memcpy(event->result_buffer, result_buf, buffer_size); - INIT_ZVAL(event_name); - INIT_ZVAL(link_id); - ZVAL_RESOURCE(&link_id, event->link_res_id); + res = zend_hash_index_find(&EG(regular_list), event->link_res_id); + ZVAL_RES(&args[1], Z_RES_P(res)); /* find out which event occurred */ isc_event_counts(occurred_event, buffer_size, event->event_buffer, event->result_buffer); for (i = 0; i < event->event_count; ++i) { if (occurred_event[i]) { - ZVAL_STRING(&event_name,event->events[i],0); + ZVAL_STRING(&args[0], event->events[i]); + efree(event->events[i]); break; } } /* call the callback provided by the user */ if (SUCCESS != call_user_function(EG(function_table), NULL, - event->callback, &return_value, 2, args TSRMLS_CC)) { - _php_ibase_module_error("Error calling callback %s" TSRMLS_CC, Z_STRVAL_P(event->callback)); + &event->callback, &return_value, 2, args TSRMLS_CC)) { + _php_ibase_module_error("Error calling callback %s" TSRMLS_CC, Z_STRVAL(event->callback)); break; } - if (Z_TYPE(return_value) == IS_BOOL && !Z_BVAL(return_value)) { + if (Z_TYPE(return_value) == IS_FALSE) { event->state = DEAD; break; } @@ -265,8 +263,8 @@ PHP_FUNCTION(ibase_set_event_handler) * link resource id (int) as arguments. The value returned from the function is * used to determine if the event handler should remain set. */ - char *cb_name; - zval ***args, **cb_arg; + zend_string *cb_name; + zval *args, *cb_arg; ibase_db_link *ib_link; ibase_event *event; unsigned short i = 1, buffer_size; @@ -284,52 +282,47 @@ PHP_FUNCTION(ibase_set_event_handler) } /* get a working link */ - if (Z_TYPE_PP(args[0]) != IS_STRING) { + if (Z_TYPE(args[0]) != IS_STRING) { /* resource, callback, event_1 [, ... event_15] * No more than 15 events */ if (ZEND_NUM_ARGS() < 3 || ZEND_NUM_ARGS() > 17) { - efree(args); WRONG_PARAM_COUNT; } - cb_arg = args[1]; + cb_arg = &args[1]; i = 2; - if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, args[0], -1, "InterBase link", le_link, le_plink)) { - efree(args); + if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, &args[0], -1, "InterBase link", le_link, le_plink)) { RETURN_FALSE; } - convert_to_long_ex(args[0]); - link_res_id = Z_LVAL_PP(args[0]); + convert_to_long_ex(&args[0]); + link_res_id = Z_LVAL(args[0]); } else { /* callback, event_1 [, ... event_15] * No more than 15 events */ if (ZEND_NUM_ARGS() < 2 || ZEND_NUM_ARGS() > 16) { - efree(args); WRONG_PARAM_COUNT; } - cb_arg = args[0]; + cb_arg = &args[0]; if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, NULL, IBG(default_link), "InterBase link", le_link, le_plink)) { - efree(args); RETURN_FALSE; } link_res_id = IBG(default_link); } /* get the callback */ - if (!zend_is_callable(*cb_arg, 0, &cb_name TSRMLS_CC)) { - _php_ibase_module_error("Callback argument %s is not a callable function" TSRMLS_CC, cb_name); - efree(cb_name); - efree(args); + if (!zend_is_callable(cb_arg, 0, &cb_name TSRMLS_CC)) { + _php_ibase_module_error("Callback argument %s is not a callable function" TSRMLS_CC, cb_name->val); + STR_RELEASE(cb_name); RETURN_FALSE; } - efree(cb_name); + STR_RELEASE(cb_name); /* allocate the event resource */ event = (ibase_event *) safe_emalloc(sizeof(ibase_event), 1, 0); @@ -340,14 +333,11 @@ PHP_FUNCTION(ibase_set_event_handler) event->state = NEW; event->events = (char **) safe_emalloc(sizeof(char *),ZEND_NUM_ARGS()-i,0); - ALLOC_ZVAL(event->callback); - *event->callback = **cb_arg; - INIT_PZVAL(event->callback); - zval_copy_ctor(event->callback); + ZVAL_DUP(&event->callback, cb_arg); for (; i < ZEND_NUM_ARGS(); ++i) { - convert_to_string_ex(args[i]); - event->events[event->event_count++] = estrdup(Z_STRVAL_PP(args[i])); + convert_to_string_ex(&args[i]); + event->events[event->event_count++] = estrdup(Z_STRVAL(args[i])); } /* fills the required data structure with information about the events */ @@ -360,7 +350,6 @@ PHP_FUNCTION(ibase_set_event_handler) _php_ibase_error(TSRMLS_C); efree(event); - efree(args); RETURN_FALSE; } @@ -368,8 +357,7 @@ PHP_FUNCTION(ibase_set_event_handler) ib_link->event_head = event; ZEND_REGISTER_RESOURCE(return_value, event, le_event); - zend_list_addref(Z_LVAL_P(return_value)); - efree(args); + Z_ADDREF_P(return_value); } /* }}} */ @@ -384,11 +372,11 @@ PHP_FUNCTION(ibase_free_event_handler) if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &event_arg)) { ibase_event *event; - ZEND_FETCH_RESOURCE(event, ibase_event *, &event_arg, -1, "Interbase event", le_event); + ZEND_FETCH_RESOURCE(event, ibase_event *, event_arg, -1, "Interbase event", le_event); event->state = DEAD; - zend_list_delete(Z_LVAL_P(event_arg)); + zend_list_delete(Z_RES_P(event_arg)); RETURN_TRUE; } else { RETURN_FALSE; diff --git a/ext/interbase/ibase_query.c b/ext/interbase/ibase_query.c index 4914dcd596..1899e5aae1 100644 --- a/ext/interbase/ibase_query.c +++ b/ext/interbase/ibase_query.c @@ -134,7 +134,7 @@ static void _php_ibase_free_stmt_handle(ibase_db_link *link, isc_stmt_handle stm } /* }}} */ -static void _php_ibase_free_result(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ +static void _php_ibase_free_result(zend_resource *rsrc TSRMLS_DC) /* {{{ */ { ibase_result *ib_result = (ibase_result *) rsrc->ptr; @@ -180,7 +180,7 @@ static void _php_ibase_free_query(ibase_query *ib_query TSRMLS_DC) /* {{{ */ } /* }}} */ -static void php_ibase_free_query_rsrc(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ +static void php_ibase_free_query_rsrc(zend_resource *rsrc TSRMLS_DC) /* {{{ */ { ibase_query *ib_query = (ibase_query *)rsrc->ptr; @@ -443,7 +443,7 @@ static int _php_ibase_bind_array(zval *val, char *buf, unsigned long buf_size, / if (dim < array->ar_desc.array_desc_dimensions) { unsigned long slice_size = buf_size / dim_len; unsigned short i; - zval **subval = &val; + zval *subval = val; if (Z_TYPE_P(val) == IS_ARRAY) { zend_hash_internal_pointer_reset(Z_ARRVAL_P(val)); @@ -452,12 +452,12 @@ static int _php_ibase_bind_array(zval *val, char *buf, unsigned long buf_size, / for (i = 0; i < dim_len; ++i) { if (Z_TYPE_P(val) == IS_ARRAY && - zend_hash_get_current_data(Z_ARRVAL_P(val), (void *) &subval) == FAILURE) + (subval = zend_hash_get_current_data(Z_ARRVAL_P(val))) == NULL) { - subval = &pnull_val; + subval = pnull_val; } - if (_php_ibase_bind_array(*subval, buf, slice_size, array, dim+1 TSRMLS_CC) == FAILURE) + if (_php_ibase_bind_array(subval, buf, slice_size, array, dim+1 TSRMLS_CC) == FAILURE) { return FAILURE; } @@ -634,14 +634,14 @@ static int _php_ibase_bind_array(zval *val, char *buf, unsigned long buf_size, / } /* }}} */ -static int _php_ibase_bind(XSQLDA *sqlda, zval ***b_vars, BIND_BUF *buf, /* {{{ */ +static int _php_ibase_bind(XSQLDA *sqlda, zval *b_vars, BIND_BUF *buf, /* {{{ */ ibase_query *ib_query TSRMLS_DC) { int i, array_cnt = 0, rv = SUCCESS; for (i = 0; i < sqlda->sqld; ++i) { /* bound vars */ - zval *b_var = *b_vars[i]; + zval *b_var = &b_vars[i]; XSQLVAR *var = &sqlda->sqlvar[i]; var->sqlind = &buf[i].sqlind; @@ -745,7 +745,7 @@ static int _php_ibase_bind(XSQLDA *sqlda, zval ***b_vars, BIND_BUF *buf, /* {{{ return FAILURE; } - if (_php_ibase_blob_add(&b_var, &ib_blob TSRMLS_CC) != SUCCESS) { + if (_php_ibase_blob_add(b_var, &ib_blob TSRMLS_CC) != SUCCESS) { return FAILURE; } @@ -860,7 +860,7 @@ static void _php_ibase_alloc_xsqlda(XSQLDA *sqlda) /* {{{ */ /* }}} */ static int _php_ibase_exec(INTERNAL_FUNCTION_PARAMETERS, ibase_result **ib_resultp, /* {{{ */ - ibase_query *ib_query, zval ***args) + ibase_query *ib_query, zval *args) { XSQLDA *in_sqlda = NULL, *out_sqlda = NULL; BIND_BUF *bind_buf = NULL; @@ -873,7 +873,7 @@ static int _php_ibase_exec(INTERNAL_FUNCTION_PARAMETERS, ibase_result **ib_resul RESET_ERRMSG; for (i = 0; i < argc; ++i) { - SEPARATE_ZVAL(args[i]); + SEPARATE_ZVAL(&args[i]); } switch (ib_query->statement_type) { @@ -911,6 +911,7 @@ static int _php_ibase_exec(INTERNAL_FUNCTION_PARAMETERS, ibase_result **ib_resul (*l)->next = NULL; ZEND_REGISTER_RESOURCE(return_value, trans, le_trans); + Z_ADDREF_P(return_value); return SUCCESS; @@ -926,7 +927,8 @@ static int _php_ibase_exec(INTERNAL_FUNCTION_PARAMETERS, ibase_result **ib_resul if (ib_query->trans->handle == NULL && ib_query->trans_res_id != 0) { /* transaction was released by the query and was a registered resource, so we have to release it */ - zend_list_delete(ib_query->trans_res_id); + zval *res = zend_hash_index_find(&EG(regular_list), ib_query->trans_res_id); + zend_list_delete(Z_RES_P(res)); } RETVAL_TRUE; @@ -1058,7 +1060,7 @@ _php_ibase_exec_error: Execute a query */ PHP_FUNCTION(ibase_query) { - zval *zlink, *ztrans, ***bind_args = NULL; + zval *zlink, *ztrans, *bind_args = NULL; char *query; int bind_i, query_len, bind_num; long trans_res_id = 0; @@ -1078,20 +1080,20 @@ PHP_FUNCTION(ibase_query) if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, 3 TSRMLS_CC, "rrs", &zlink, &ztrans, &query, &query_len)) { - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link*, &zlink, -1, LE_LINK, le_link, le_plink); - ZEND_FETCH_RESOURCE(trans, ibase_trans*, &ztrans, -1, LE_TRANS, le_trans); + ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link*, zlink, -1, LE_LINK, le_link, le_plink); + ZEND_FETCH_RESOURCE(trans, ibase_trans*, ztrans, -1, LE_TRANS, le_trans); - trans_res_id = Z_LVAL_P(ztrans); + trans_res_id = Z_RES_P(ztrans)->handle; bind_i = 3; break; } case 2: if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, 2 TSRMLS_CC, "rs", &zlink, &query, &query_len)) { - _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, &zlink, &ib_link, &trans); + _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, zlink, &ib_link, &trans); if (trans != NULL) { - trans_res_id = Z_LVAL_P(zlink); + trans_res_id = Z_RES_P(zlink)->handle; } bind_i = 2; break; @@ -1130,8 +1132,8 @@ PHP_FUNCTION(ibase_query) ib_link->event_head = NULL; ZEND_REGISTER_RESOURCE(return_value, ib_link, le_link); - zend_list_addref(Z_LVAL_P(return_value)); - IBG(default_link) = Z_LVAL_P(return_value); + Z_ADDREF_P(return_value); + IBG(default_link) = Z_RES_P(return_value)->handle; ++IBG(num_links); } return; @@ -1185,14 +1187,12 @@ PHP_FUNCTION(ibase_query) ib_query.stmt = NULL; /* keep stmt when free query */ } ZEND_REGISTER_RESOURCE(return_value, result, le_result); + Z_ADDREF_P(return_value); } } while (0); _php_ibase_free_query(&ib_query TSRMLS_CC); - if (bind_args) { - efree(bind_args); - } } /* }}} */ @@ -1218,9 +1218,9 @@ PHP_FUNCTION(ibase_affected_rows) trans = ib_link->tr_list->trans; } else { /* one id was passed, could be db or trans id */ - _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, &arg, &ib_link, &trans); + _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, arg, &ib_link, &trans); if (trans == NULL) { - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, &arg, -1, LE_LINK, le_link, le_plink); + ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, arg, -1, LE_LINK, le_link, le_plink); if (ib_link->tr_list == NULL || ib_link->tr_list->trans == NULL) { RETURN_FALSE; @@ -1323,7 +1323,7 @@ static int _php_ibase_var_zval(zval *val, void *data, int type, int len, /* {{{ data = ((IBVARY *) data)->vary_string; /* no break */ case SQL_TEXT: - ZVAL_STRINGL(val,(char *) data,len,1); + ZVAL_STRINGL(val, (char*)data, len); break; case SQL_SHORT: n = *(short *) data; @@ -1365,7 +1365,7 @@ static int _php_ibase_var_zval(zval *val, void *data, int type, int len, /* {{{ } else { l = slprintf(string_data, sizeof(string_data), "-0.%0*ld", -scale, -n % f); } - ZVAL_STRINGL(val,string_data,l,1); + ZVAL_STRINGL(val, string_data, l); } break; case SQL_FLOAT: @@ -1414,7 +1414,7 @@ format_date_time: break; } #endif - ZVAL_STRINGL(val,string_data,l,1); + ZVAL_STRINGL(val, string_data, l); break; } } /* switch (type) */ @@ -1440,17 +1440,16 @@ static int _php_ibase_arr_zval(zval *ar_zval, char *data, unsigned long data_siz array_init(ar_zval); for (i = 0; i < dim_len; ++i) { - zval *slice_zval; - ALLOC_INIT_ZVAL(slice_zval); + zval slice_zval; /* recursion here */ - if (FAILURE == _php_ibase_arr_zval(slice_zval, data, slice_size, ib_array, dim + 1, + if (FAILURE == _php_ibase_arr_zval(&slice_zval, data, slice_size, ib_array, dim + 1, flag TSRMLS_CC)) { return FAILURE; } data += slice_size; - add_index_zval(ar_zval,l_bound+i,slice_zval); + add_index_zval(ar_zval, l_bound + i, &slice_zval); } } else { /* data at last */ @@ -1483,7 +1482,7 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) return; } - ZEND_FETCH_RESOURCE(ib_result, ibase_result *, &result_arg, -1, LE_RESULT, le_result); + ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, LE_RESULT, le_result); if (ib_result->out_sqlda == NULL || !ib_result->has_more_rows) { RETURN_FALSE; @@ -1522,8 +1521,8 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) i = 1; base = alias; - while (SUCCESS == zend_symtable_find( - Z_ARRVAL_P(return_value),alias,strlen(alias)+1,&p)) { + while ((p = zend_symtable_str_find_ptr( + Z_ARRVAL_P(return_value), alias, strlen(alias))) != NULL) { case '\0': snprintf(alias = buf, sizeof(buf), "%s_%02d", base, i++); @@ -1532,13 +1531,12 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) } if (((var->sqltype & 1) == 0) || *var->sqlind != -1) { - zval *result; - ALLOC_INIT_ZVAL(result); + zval result; switch (var->sqltype & ~1) { default: - _php_ibase_var_zval(result, var->sqldata, var->sqltype, var->sqllen, + _php_ibase_var_zval(&result, var->sqldata, var->sqltype, var->sqllen, var->sqlscale, flag TSRMLS_CC); break; case SQL_BLOB: @@ -1588,8 +1586,8 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) } if (max_len == 0) { - ZVAL_STRING(result, "", 1); - } else if (SUCCESS != _php_ibase_blob_get(result, &blob_handle, + ZVAL_STRING(&result, ""); + } else if (SUCCESS != _php_ibase_blob_get(&result, &blob_handle, max_len TSRMLS_CC)) { goto _php_ibase_fetch_error; } @@ -1600,8 +1598,11 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) } } else { /* blob id only */ + char *s; ISC_QUAD bl_qd = *(ISC_QUAD *) var->sqldata; - ZVAL_STRINGL(result,_php_ibase_quad_to_string(bl_qd), BLOB_ID_LEN, 0); + s = _php_ibase_quad_to_string(bl_qd); + ZVAL_STRINGL(&result, s, BLOB_ID_LEN); + efree(s); } break; case SQL_ARRAY: @@ -1618,7 +1619,7 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) goto _php_ibase_fetch_error; } - if (FAILURE == _php_ibase_arr_zval(result, ar_data, ib_array->ar_size, ib_array, + if (FAILURE == _php_ibase_arr_zval(&result, ar_data, ib_array->ar_size, ib_array, 0, flag TSRMLS_CC)) { efree(ar_data); goto _php_ibase_fetch_error; @@ -1626,20 +1627,21 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) efree(ar_data); } else { /* blob id only */ + char *s; ISC_QUAD ar_qd = *(ISC_QUAD *) var->sqldata; - ZVAL_STRINGL(result,_php_ibase_quad_to_string(ar_qd), BLOB_ID_LEN, 0); + s = _php_ibase_quad_to_string(ar_qd); + ZVAL_STRINGL(&result, s, BLOB_ID_LEN); } break; _php_ibase_fetch_error: - zval_dtor(result); - FREE_ZVAL(result); + zval_dtor(&result); RETURN_FALSE; } /* switch */ if (fetch_type & FETCH_ROW) { - add_index_zval(return_value, i, result); + add_index_zval(return_value, i, &result); } else { - add_assoc_zval(return_value, alias, result); + add_assoc_zval(return_value, alias, &result); } } else { if (fetch_type & FETCH_ROW) { @@ -1675,7 +1677,7 @@ PHP_FUNCTION(ibase_fetch_object) _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, FETCH_ARRAY); if (Z_TYPE_P(return_value) == IS_ARRAY) { - object_and_properties_init(return_value, ZEND_STANDARD_CLASS_DEF_PTR, Z_ARRVAL_P(return_value)); + convert_to_object(return_value); } } /* }}} */ @@ -1696,7 +1698,7 @@ PHP_FUNCTION(ibase_name_result) return; } - ZEND_FETCH_RESOURCE(ib_result, ibase_result *, &result_arg, -1, LE_RESULT, le_result); + ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, LE_RESULT, le_result); if (isc_dsql_set_cursor_name(IB_STATUS, &ib_result->stmt, name_arg, 0)) { _php_ibase_error(TSRMLS_C); @@ -1720,8 +1722,8 @@ PHP_FUNCTION(ibase_free_result) return; } - ZEND_FETCH_RESOURCE(ib_result, ibase_result *, &result_arg, -1, LE_RESULT, le_result); - zend_list_delete(Z_RESVAL_P(result_arg)); + ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, LE_RESULT, le_result); + zend_list_delete(Z_RES_P(result_arg)); RETURN_TRUE; } /* }}} */ @@ -1748,18 +1750,18 @@ PHP_FUNCTION(ibase_prepare) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &link_arg, &query, &query_len) == FAILURE) { return; } - _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, &link_arg, &ib_link, &trans); + _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, link_arg, &ib_link, &trans); if (trans != NULL) { - trans_res_id = Z_RESVAL_P(link_arg); + trans_res_id = Z_RES_P(link_arg)->handle; } } else { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrs", &link_arg, &trans_arg, &query, &query_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, &link_arg, -1, LE_LINK, le_link, le_plink); - ZEND_FETCH_RESOURCE(trans, ibase_trans *, &trans_arg, -1, LE_TRANS, le_trans); - trans_res_id = Z_RESVAL_P(trans_arg); + ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, link_arg, -1, LE_LINK, le_link, le_plink); + ZEND_FETCH_RESOURCE(trans, ibase_trans *, trans_arg, -1, LE_TRANS, le_trans); + trans_res_id = Z_RES_P(trans_arg)->handle; } if (FAILURE == _php_ibase_def_trans(ib_link, &trans TSRMLS_CC)) { @@ -1773,6 +1775,7 @@ PHP_FUNCTION(ibase_prepare) RETURN_FALSE; } ZEND_REGISTER_RESOURCE(return_value, ib_query, le_query); + Z_ADDREF_P(return_value); } /* }}} */ @@ -1780,24 +1783,23 @@ PHP_FUNCTION(ibase_prepare) Execute a previously prepared query */ PHP_FUNCTION(ibase_execute) { - zval *query, ***args = NULL; + zval *query, *args = NULL; ibase_query *ib_query; ibase_result *result = NULL; - ALLOCA_FLAG(use_heap) + int bind_n = 0; RESET_ERRMSG; RETVAL_FALSE; - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() ? 1 : 0 TSRMLS_CC, "r", &query)) { + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|r*", &query, &args, &bind_n)) { return; } - ZEND_FETCH_RESOURCE(ib_query, ibase_query *, &query, -1, LE_QUERY, le_query); + ZEND_FETCH_RESOURCE(ib_query, ibase_query *, query, -1, LE_QUERY, le_query); do { - int bind_n = ZEND_NUM_ARGS() - 1, - expected_n = ib_query->in_sqlda ? ib_query->in_sqlda->sqld : 0; + int expected_n = ib_query->in_sqlda ? ib_query->in_sqlda->sqld : 0; if (bind_n != expected_n) { php_error_docref(NULL TSRMLS_CC, (bind_n < expected_n) ? E_WARNING : E_NOTICE, @@ -1808,16 +1810,11 @@ PHP_FUNCTION(ibase_execute) } } - /* have variables to bind */ - args = (zval ***) do_alloca((expected_n + 1) * sizeof(zval **), use_heap); - - if (FAILURE == zend_get_parameters_array_ex((expected_n + 1), args)) { - break; - } - /* Have we used this cursor before and it's still open (exec proc has no cursor) ? */ if (ib_query->result_res_id != 0 && ib_query->statement_type != isc_info_sql_stmt_exec_procedure) { + zval *res; + IBDEBUG("Implicitly closing a cursor"); if (isc_dsql_free_statement(IB_STATUS, &ib_query->stmt, DSQL_close)) { @@ -1825,32 +1822,37 @@ PHP_FUNCTION(ibase_execute) break; } /* invalidate previous results returned by this query (not necessary for exec proc) */ - zend_list_delete(ib_query->result_res_id); + res = zend_hash_index_find(&EG(regular_list), ib_query->result_res_id); + if (res) { + zend_list_delete(Z_RES_P(res)); + } } if (FAILURE == _php_ibase_exec(INTERNAL_FUNCTION_PARAM_PASSTHRU, &result, ib_query, - &args[1])) { + args)) { break; } /* free the query if trans handle was released */ if (ib_query->trans->handle == NULL) { - zend_list_delete(Z_LVAL_P(query)); + zend_list_delete(Z_RES_P(query)); } if (result != NULL) { + zval *ret; + result->type = EXECUTE_RESULT; if (ib_query->statement_type == isc_info_sql_stmt_exec_procedure) { result->stmt = NULL; } - ib_query->result_res_id = zend_list_insert(result, le_result TSRMLS_CC); - RETVAL_RESOURCE(ib_query->result_res_id); + + ret = zend_list_insert(result, le_result TSRMLS_CC); + ib_query->result_res_id = Z_RES_HANDLE_P(ret); + ZVAL_COPY_VALUE(return_value, ret); + Z_ADDREF_P(return_value); + Z_ADDREF_P(return_value); } } while (0); - - if (args) { - free_alloca(args, use_heap); - } } /* }}} */ @@ -1867,8 +1869,8 @@ PHP_FUNCTION(ibase_free_query) return; } - ZEND_FETCH_RESOURCE(ib_query, ibase_query *, &query_arg, -1, LE_QUERY, le_query); - zend_list_delete(Z_RESVAL_P(query_arg)); + ZEND_FETCH_RESOURCE(ib_query, ibase_query *, query_arg, -1, LE_QUERY, le_query); + zend_list_close(Z_RES_P(query_arg)); RETURN_TRUE; } /* }}} */ @@ -1887,17 +1889,17 @@ PHP_FUNCTION(ibase_num_fields) return; } - zend_list_find(Z_RESVAL_P(result), &type); + type = Z_RES_P(result)->type; if (type == le_query) { ibase_query *ib_query; - ZEND_FETCH_RESOURCE(ib_query, ibase_query *, &result, -1, LE_QUERY, le_query); + ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result, -1, LE_QUERY, le_query); sqlda = ib_query->out_sqlda; } else { ibase_result *ib_result; - ZEND_FETCH_RESOURCE(ib_result, ibase_result *, &result, -1, LE_RESULT, le_result); + ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result, -1, LE_RESULT, le_result); sqlda = ib_result->out_sqlda; } @@ -2011,17 +2013,17 @@ PHP_FUNCTION(ibase_field_info) return; } - zend_list_find(Z_RESVAL_P(result_arg), &type); + type = Z_RES_P(result_arg)->type; if (type == le_query) { ibase_query *ib_query; - ZEND_FETCH_RESOURCE(ib_query, ibase_query *, &result_arg, -1, LE_QUERY, le_query); + ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result_arg, -1, LE_QUERY, le_query); sqlda = ib_query->out_sqlda; } else { ibase_result *ib_result; - ZEND_FETCH_RESOURCE(ib_result, ibase_result *, &result_arg, -1, LE_RESULT, le_result); + ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, LE_RESULT, le_result); sqlda = ib_result->out_sqlda; } @@ -2050,7 +2052,7 @@ PHP_FUNCTION(ibase_num_params) return; } - ZEND_FETCH_RESOURCE(ib_query, ibase_query *, &result, -1, LE_QUERY, le_query); + ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result, -1, LE_QUERY, le_query); if (ib_query->in_sqlda == NULL) { RETURN_LONG(0); @@ -2074,7 +2076,7 @@ PHP_FUNCTION(ibase_param_info) return; } - ZEND_FETCH_RESOURCE(ib_query, ibase_query *, &result_arg, -1, LE_QUERY, le_query); + ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result_arg, -1, LE_QUERY, le_query); if (ib_query->in_sqlda == NULL) { RETURN_FALSE; diff --git a/ext/interbase/ibase_service.c b/ext/interbase/ibase_service.c index 2de77bc353..95f068e7ff 100644 --- a/ext/interbase/ibase_service.c +++ b/ext/interbase/ibase_service.c @@ -31,12 +31,12 @@ typedef struct { isc_svc_handle handle; char *hostname; char *username; - long res_id; + zend_resource *res; } ibase_service; static int le_service; -static void _php_ibase_free_service(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ +static void _php_ibase_free_service(zend_resource *rsrc TSRMLS_DC) /* {{{ */ { ibase_service *sv = (ibase_service *) rsrc->ptr; @@ -58,7 +58,7 @@ static void _php_ibase_free_service(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ /* the svc api seems to get confused after an error has occurred, so invalidate the handle on errors */ #define IBASE_SVC_ERROR(svm) \ - do { zend_list_delete(svm->res_id); _php_ibase_error(TSRMLS_C); } while (0) + do { zend_list_delete(svm->res); _php_ibase_error(TSRMLS_C); } while (0) void php_ibase_service_minit(INIT_FUNC_ARGS) /* {{{ */ @@ -151,7 +151,7 @@ static void _php_ibase_user(INTERNAL_FUNCTION_PARAMETERS, char operation) /* {{{ RETURN_FALSE; } - ZEND_FETCH_RESOURCE(svm, ibase_service *, &res, -1, "Interbase service manager handle", + ZEND_FETCH_RESOURCE(svm, ibase_service *, res, -1, "Interbase service manager handle", le_service); buf[0] = operation; @@ -246,7 +246,8 @@ PHP_FUNCTION(ibase_service_attach) svm->username = estrdup(user); ZEND_REGISTER_RESOURCE(return_value, svm, le_service); - svm->res_id = Z_LVAL_P(return_value); + Z_ADDREF_P(return_value); + svm->res = Z_RES_P(return_value); } /* }}} */ @@ -262,7 +263,7 @@ PHP_FUNCTION(ibase_service_detach) RETURN_FALSE; } - zend_list_delete(Z_LVAL_P(res)); + zend_list_delete(Z_RES_P(res)); RETURN_TRUE; } @@ -304,7 +305,9 @@ query_loop: if (! (line_len = isc_vax_integer(result, 2))) { /* done */ if (heap_buf) { - RETURN_STRING(heap_buf,0); + RETVAL_STRING(heap_buf); + efree(heap_buf); + return; } else { RETURN_TRUE; } @@ -330,7 +333,7 @@ query_loop: case isc_info_svc_get_env_lock: case isc_info_svc_get_env_msg: case isc_info_svc_user_dbpath: - RETURN_STRINGL(result + 2, isc_vax_integer(result, 2), 1); + RETURN_STRINGL(result + 2, isc_vax_integer(result, 2)); case isc_info_svc_svr_db_info: array_init(return_value); @@ -358,7 +361,7 @@ query_loop: return; case isc_info_svc_get_users: { - zval *user; + zval user; array_init(return_value); while (*result != isc_info_end) { @@ -368,40 +371,39 @@ query_loop: case isc_spb_sec_username: /* it appears that the username is always first */ - ALLOC_INIT_ZVAL(user); - array_init(user); - add_next_index_zval(return_value, user); + array_init(&user); + add_next_index_zval(return_value, &user); len = isc_vax_integer(result,2); - add_assoc_stringl(user, "user_name", result +2, len); + add_assoc_stringl(&user, "user_name", result +2, len); result += len+2; break; case isc_spb_sec_firstname: len = isc_vax_integer(result,2); - add_assoc_stringl(user, "first_name", result +2, len); + add_assoc_stringl(&user, "first_name", result +2, len); result += len+2; break; case isc_spb_sec_middlename: len = isc_vax_integer(result,2); - add_assoc_stringl(user, "middle_name", result +2, len); + add_assoc_stringl(&user, "middle_name", result +2, len); result += len+2; break; case isc_spb_sec_lastname: len = isc_vax_integer(result,2); - add_assoc_stringl(user, "last_name", result +2, len); + add_assoc_stringl(&user, "last_name", result +2, len); result += len+2; break; case isc_spb_sec_userid: - add_assoc_long(user, "user_id", isc_vax_integer(result, 4)); + add_assoc_long(&user, "user_id", isc_vax_integer(result, 4)); result += 4; break; case isc_spb_sec_groupid: - add_assoc_long(user, "group_id", isc_vax_integer(result, 4)); + add_assoc_long(&user, "group_id", isc_vax_integer(result, 4)); result += 4; break; } @@ -435,7 +437,7 @@ static void _php_ibase_backup_restore(INTERNAL_FUNCTION_PARAMETERS, char operati RETURN_FALSE; } - ZEND_FETCH_RESOURCE(svm, ibase_service *, &res, -1, + ZEND_FETCH_RESOURCE(svm, ibase_service *, res, -1, "Interbase service manager handle", le_service); /* fill the param buffer */ @@ -498,7 +500,7 @@ static void _php_ibase_service_action(INTERNAL_FUNCTION_PARAMETERS, char svc_act RETURN_FALSE; } - ZEND_FETCH_RESOURCE(svm, ibase_service *, &res, -1, + ZEND_FETCH_RESOURCE(svm, ibase_service *, res, -1, "Interbase service manager handle", le_service); if (svc_action == isc_action_svc_db_stats) { @@ -604,7 +606,7 @@ PHP_FUNCTION(ibase_server_info) RETURN_FALSE; } - ZEND_FETCH_RESOURCE(svm, ibase_service *, &res, -1, + ZEND_FETCH_RESOURCE(svm, ibase_service *, res, -1, "Interbase service manager handle", le_service); _php_ibase_service_query(INTERNAL_FUNCTION_PARAM_PASSTHRU, svm, (char)action); diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c index 19f061b17f..c6c108f377 100644 --- a/ext/interbase/interbase.c +++ b/ext/interbase/interbase.c @@ -479,7 +479,7 @@ PHP_FUNCTION(ibase_errmsg) } if (IBG(sql_code) != 0) { - RETURN_STRING(IBG(errmsg), 1); + RETURN_STRING(IBG(errmsg)); } RETURN_FALSE; @@ -550,25 +550,21 @@ typedef struct { /* Fill ib_link and trans with the correct database link and transaction. */ void _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAMETERS, /* {{{ */ - zval **link_id, ibase_db_link **ib_link, ibase_trans **trans) + zval *link_id, ibase_db_link **ib_link, ibase_trans **trans) { - int type; - IBDEBUG("Transaction or database link?"); - if (zend_list_find(Z_LVAL_PP(link_id), &type)) { - if (type == le_trans) { - /* Transaction resource: make sure it refers to one link only, then - fetch it; database link is stored in ib_trans->db_link[]. */ - IBDEBUG("Type is le_trans"); - ZEND_FETCH_RESOURCE(*trans, ibase_trans *, link_id, -1, LE_TRANS, le_trans); - if ((*trans)->link_cnt > 1) { - _php_ibase_module_error("Link id is ambiguous: transaction spans multiple connections." - TSRMLS_CC); - return; - } - *ib_link = (*trans)->db_link[0]; + if (Z_RES_P(link_id)->type == le_trans) { + /* Transaction resource: make sure it refers to one link only, then + fetch it; database link is stored in ib_trans->db_link[]. */ + IBDEBUG("Type is le_trans"); + ZEND_FETCH_RESOURCE(*trans, ibase_trans *, link_id, -1, LE_TRANS, le_trans); + if ((*trans)->link_cnt > 1) { + _php_ibase_module_error("Link id is ambiguous: transaction spans multiple connections." + TSRMLS_CC); return; - } + } + *ib_link = (*trans)->db_link[0]; + return; } IBDEBUG("Type is le_[p]link or id not found"); /* Database link resource, use default transaction. */ @@ -627,7 +623,7 @@ static void _php_ibase_commit_link(ibase_db_link *link TSRMLS_DC) /* {{{ */ /* }}} */ -static void php_ibase_commit_link_rsrc(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ +static void php_ibase_commit_link_rsrc(zend_resource *rsrc TSRMLS_DC) /* {{{ */ { ibase_db_link *link = (ibase_db_link *) rsrc->ptr; @@ -635,7 +631,7 @@ static void php_ibase_commit_link_rsrc(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* } /* }}} */ -static void _php_ibase_close_link(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ +static void _php_ibase_close_link(zend_resource *rsrc TSRMLS_DC) /* {{{ */ { ibase_db_link *link = (ibase_db_link *) rsrc->ptr; @@ -649,7 +645,7 @@ static void _php_ibase_close_link(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ * } /* }}} */ -static void _php_ibase_close_plink(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ +static void _php_ibase_close_plink(zend_resource *rsrc TSRMLS_DC) /* {{{ */ { ibase_db_link *link = (ibase_db_link *) rsrc->ptr; @@ -664,7 +660,7 @@ static void _php_ibase_close_plink(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ } /* }}} */ -static void _php_ibase_free_trans(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ */ +static void _php_ibase_free_trans(zend_resource *rsrc TSRMLS_DC) /* {{{ */ { ibase_trans *trans = (ibase_trans *)rsrc->ptr; unsigned short i; @@ -781,8 +777,8 @@ PHP_MSHUTDOWN_FUNCTION(ibase) * be unloaded automatically when the process exits. */ zend_module_entry *ibase_entry; - if (SUCCESS == zend_hash_find(&module_registry, ibase_module_entry.name, - strlen(ibase_module_entry.name) +1, (void*) &ibase_entry)) { + if ((ibase_entry = zend_hash_str_find_ptr(&module_registry, ibase_module_entry.name, + strlen(ibase_module_entry.name))) != NULL) { ibase_entry->handle = NULL; } #endif @@ -890,7 +886,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* int i, len[] = { 0, 0, 0, 0, 0 }; long largs[] = { 0, 0, 0 }; PHP_MD5_CTX hash_context; - zend_rsrc_list_entry new_index_ptr, *le; + zend_resource new_index_ptr, *le; isc_db_handle db_handle = NULL; ibase_db_link *ib_link; @@ -929,48 +925,52 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* for (i = 0; i < sizeof(largs)/sizeof(long); ++i) { PHP_MD5Update(&hash_context,(char*)&largs[i],sizeof(long)); } - PHP_MD5Final(hash, &hash_context); + PHP_MD5Final((unsigned char*)hash, &hash_context); /* try to reuse a connection */ - if (SUCCESS == zend_hash_find(&EG(regular_list), hash, sizeof(hash), (void *) &le)) { - long xlink; - int type; + if ((le = zend_hash_str_find_ptr(&EG(regular_list), hash, sizeof(hash)-1)) != NULL) { + zend_resource *xlink; - if (Z_TYPE_P(le) != le_index_ptr) { + if (le->type != le_index_ptr) { RETURN_FALSE; } - xlink = (long) le->ptr; - if (zend_list_find(xlink, &type) && ((!persistent && type == le_link) || type == le_plink)) { - zend_list_addref(xlink); - RETURN_RESOURCE(IBG(default_link) = xlink); + xlink = (zend_resource*) le->ptr; + if ((!persistent && xlink->type == le_link) || xlink->type == le_plink) { + if (IBG(default_link) > 0) { + zval *link = zend_hash_index_find(&EG(regular_list), IBG(default_link)); + if (link) { + zend_list_delete(Z_RES_P(link)); + } + } + xlink->gc.refcount++; + xlink->gc.refcount++; + IBG(default_link) = xlink->handle; + RETURN_RES(xlink); } else { - zend_hash_del(&EG(regular_list), hash, sizeof(hash)); + zend_hash_str_del(&EG(regular_list), hash, sizeof(hash)-1); } } /* ... or a persistent one */ - switch (zend_hash_find(&EG(persistent_list), hash, sizeof(hash), (void *) &le)) { + do { long l; - static char info[] = { isc_info_base_level, isc_info_end }; char result[8]; ISC_STATUS status[20]; - case SUCCESS: - - if (Z_TYPE_P(le) != le_plink) { - RETURN_FALSE; - } - /* check if connection has timed out */ - ib_link = (ibase_db_link *) le->ptr; - if (!isc_database_info(status, &ib_link->handle, sizeof(info), info, sizeof(result), result)) { - ZEND_REGISTER_RESOURCE(return_value, ib_link, le_plink); - break; + if ((le = zend_hash_str_find_ptr(&EG(persistent_list), hash, sizeof(hash)-1)) != NULL) { + if (le->type != le_plink) { + RETURN_FALSE; + } + /* check if connection has timed out */ + ib_link = (ibase_db_link *) le->ptr; + if (!isc_database_info(status, &ib_link->handle, sizeof(info), info, sizeof(result), result)) { + ZEND_REGISTER_RESOURCE(return_value, ib_link, le_plink); + break; + } + zend_hash_str_del(&EG(persistent_list), hash, sizeof(hash)-1); } - zend_hash_del(&EG(persistent_list), hash, sizeof(hash)); - - default: /* no link found, so we have to open one */ @@ -989,7 +989,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* ib_link = (ibase_db_link *) emalloc(sizeof(ibase_db_link)); ZEND_REGISTER_RESOURCE(return_value, ib_link, le_link); } else { - zend_rsrc_list_entry new_le; + zend_resource new_le; ib_link = (ibase_db_link *) malloc(sizeof(ibase_db_link)); if (!ib_link) { @@ -997,10 +997,10 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* } /* hash it up */ - Z_TYPE(new_le) = le_plink; + new_le.type = le_plink; new_le.ptr = ib_link; - if (FAILURE == zend_hash_update(&EG(persistent_list), hash, sizeof(hash), - (void *) &new_le, sizeof(zend_rsrc_list_entry), NULL)) { + if (zend_hash_str_update_mem(&EG(persistent_list), hash, sizeof(hash)-1, + (void *) &new_le, sizeof(zend_resource)) == NULL) { free(ib_link); RETURN_FALSE; } @@ -1013,16 +1013,24 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* ib_link->event_head = NULL; ++IBG(num_links); - } + } while (0); /* add it to the hash */ - new_index_ptr.ptr = (void *) Z_LVAL_P(return_value); - Z_TYPE(new_index_ptr) = le_index_ptr; - if (FAILURE == zend_hash_update(&EG(regular_list), hash, sizeof(hash), - (void *) &new_index_ptr, sizeof(zend_rsrc_list_entry), NULL)) { + new_index_ptr.ptr = (void *) Z_RES_P(return_value); + new_index_ptr.type = le_index_ptr; + if (zend_hash_str_update_mem(&EG(regular_list), hash, sizeof(hash)-1, + (void *) &new_index_ptr, sizeof(zend_resource)) == NULL) { RETURN_FALSE; } - zend_list_addref(IBG(default_link) = Z_LVAL_P(return_value)); + if (IBG(default_link) > 0) { + zval *link = zend_hash_index_find(&EG(regular_list), IBG(default_link)); + if (link) { + zend_list_delete(Z_RES_P(link)); + } + } + IBG(default_link) = Z_RES_P(return_value)->handle; + Z_ADDREF_P(return_value); + Z_ADDREF_P(return_value); } /* }}} */ @@ -1061,11 +1069,20 @@ PHP_FUNCTION(ibase_close) CHECK_LINK(link_id); IBG(default_link) = -1; } else { - link_id = Z_RESVAL_P(link_arg); + link_id = Z_RES_P(link_arg)->handle; } - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, &link_arg, link_id, LE_LINK, le_link, le_plink); - zend_list_delete(link_id); + ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, link_arg, link_id, LE_LINK, le_link, le_plink); + if (!link_arg) { + link_arg = zend_hash_index_find(&EG(regular_list), link_id); + zend_list_delete(Z_RES_P(link_arg)); + } + /* we have at least 3 additional references to this resource ??? */ + if (GC_REFCOUNT(Z_RES_P(link_arg)) < 4) { + zend_list_close(Z_RES_P(link_arg)); + } else { + zend_list_delete(Z_RES_P(link_arg)); + } RETURN_TRUE; } /* }}} */ @@ -1090,10 +1107,10 @@ PHP_FUNCTION(ibase_drop_db) CHECK_LINK(link_id); IBG(default_link) = -1; } else { - link_id = Z_RESVAL_P(link_arg); + link_id = Z_RES_P(link_arg)->handle; } - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, &link_arg, link_id, LE_LINK, le_link, le_plink); + ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, link_arg, link_id, LE_LINK, le_link, le_plink); if (isc_drop_database(IB_STATUS, &ib_link->handle)) { _php_ibase_error(TSRMLS_C); @@ -1105,7 +1122,11 @@ PHP_FUNCTION(ibase_drop_db) if (l->trans != NULL) l->trans->handle = NULL; } - zend_list_delete(link_id); + if (!link_arg) { + link_arg = zend_hash_index_find(&EG(regular_list), link_id); + zend_list_delete(Z_RES_P(link_arg)); + } + zend_list_delete(Z_RES_P(link_arg)); RETURN_TRUE; } /* }}} */ @@ -1136,10 +1157,9 @@ PHP_FUNCTION(ibase_trans) long trans_argl = 0; char *tpb; ISC_TEB *teb; - zval ***args = NULL; + zval *args = NULL; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+", &args, &argn) == FAILURE) { - efree(args); efree(ib_link); RETURN_FALSE; } @@ -1151,13 +1171,12 @@ PHP_FUNCTION(ibase_trans) specifies modifiers for the link ids that follow it */ for (i = 0; i < argn; ++i) { - if (Z_TYPE_PP(args[i]) == IS_RESOURCE) { + if (Z_TYPE(args[i]) == IS_RESOURCE) { - if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link[link_cnt], ibase_db_link *, args[i], -1, LE_LINK, le_link, le_plink)) { + if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link[link_cnt], ibase_db_link *, &args[i], -1, LE_LINK, le_link, le_plink)) { efree(teb); efree(tpb); efree(ib_link); - efree(args); RETURN_FALSE; } @@ -1175,8 +1194,8 @@ PHP_FUNCTION(ibase_trans) tpb_len = 0; - convert_to_long_ex(args[i]); - trans_argl = Z_LVAL_PP(args[i]); + convert_to_long_ex(&args[i]); + trans_argl = Z_LVAL(args[i]); if (trans_argl != PHP_IBASE_DEFAULT) { last_tpb[tpb_len++] = isc_tpb_version3; @@ -1216,7 +1235,6 @@ PHP_FUNCTION(ibase_trans) result = isc_start_multiple(IB_STATUS, &tr_handle, link_cnt, teb); } - efree(args); efree(tpb); efree(teb); } @@ -1261,6 +1279,7 @@ PHP_FUNCTION(ibase_trans) } efree(ib_link); ZEND_REGISTER_RESOURCE(return_value, ib_trans, le_trans); + Z_ADDREF_P(return_value); } /* }}} */ @@ -1308,7 +1327,6 @@ static void _php_ibase_trans_end(INTERNAL_FUNCTION_PARAMETERS, int commit) /* {{ ISC_STATUS result; ibase_db_link *ib_link; zval *arg = NULL; - int type; RESET_ERRMSG; @@ -1326,11 +1344,11 @@ static void _php_ibase_trans_end(INTERNAL_FUNCTION_PARAMETERS, int commit) /* {{ trans = ib_link->tr_list->trans; } else { /* one id was passed, could be db or trans id */ - if (zend_list_find(Z_RESVAL_P(arg), &type) && type == le_trans) { - ZEND_FETCH_RESOURCE(trans, ibase_trans *, &arg, -1, LE_TRANS, le_trans); - res_id = Z_RESVAL_P(arg); + if (Z_RES_P(arg)->type == le_trans) { + ZEND_FETCH_RESOURCE(trans, ibase_trans *, arg, -1, LE_TRANS, le_trans); + res_id = Z_RES_P(arg)->handle; } else { - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, &arg, -1, LE_LINK, le_link, le_plink); + ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, arg, -1, LE_LINK, le_link, le_plink); if (ib_link->tr_list == NULL || ib_link->tr_list->trans == NULL) { /* this link doesn't have a default transaction */ @@ -1363,7 +1381,7 @@ static void _php_ibase_trans_end(INTERNAL_FUNCTION_PARAMETERS, int commit) /* {{ /* Don't try to destroy implicitly opened transaction from list... */ if ((commit & RETAIN) == 0 && res_id != 0) { - zend_list_delete(res_id); + zend_list_delete(Z_RES_P(arg)); } RETURN_TRUE; } diff --git a/ext/interbase/php_ibase_includes.h b/ext/interbase/php_ibase_includes.h index 6671c9162d..72eb0702a6 100644 --- a/ext/interbase/php_ibase_includes.h +++ b/ext/interbase/php_ibase_includes.h @@ -101,7 +101,7 @@ typedef struct event { unsigned short event_count; char **events; char *event_buffer, *result_buffer; - zval *callback; + zval callback; void **thread_ctx; struct event *event_next; enum event_state { NEW, ACTIVE, DEAD } state; @@ -155,17 +155,17 @@ void _php_ibase_module_error(char * TSRMLS_DC, ...) PHP_ATTRIBUTE_FORMAT(printf,1,PHP_ATTR_FMT_OFFSET +2); /* determine if a resource is a link or transaction handle */ -#define PHP_IBASE_LINK_TRANS(pzval, lh, th) \ - do { if (!pzval) { \ +#define PHP_IBASE_LINK_TRANS(zv, lh, th) \ + do { if (!zv) { \ ZEND_FETCH_RESOURCE2(lh, ibase_db_link *, NULL, IBG(default_link), \ "InterBase link", le_link, le_plink) } \ else \ - _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, &pzval, &lh, &th); \ + _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, zv, &lh, &th); \ if (SUCCESS != _php_ibase_def_trans(lh, &th TSRMLS_CC)) { RETURN_FALSE; } \ } while (0) int _php_ibase_def_trans(ibase_db_link *ib_link, ibase_trans **trans TSRMLS_DC); -void _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAMETERS, zval **link_id, +void _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAMETERS, zval *link_id, ibase_db_link **ib_link, ibase_trans **trans); /* provided by ibase_query.c */ @@ -176,7 +176,7 @@ void php_ibase_blobs_minit(INIT_FUNC_ARGS); int _php_ibase_string_to_quad(char const *id, ISC_QUAD *qd); char *_php_ibase_quad_to_string(ISC_QUAD const qd); int _php_ibase_blob_get(zval *return_value, ibase_blob *ib_blob, unsigned long max_len TSRMLS_DC); -int _php_ibase_blob_add(zval **string_arg, ibase_blob *ib_blob TSRMLS_DC); +int _php_ibase_blob_add(zval *string_arg, ibase_blob *ib_blob TSRMLS_DC); /* provided by ibase_events.c */ void php_ibase_events_minit(INIT_FUNC_ARGS); diff --git a/ext/interbase/php_ibase_udf.c b/ext/interbase/php_ibase_udf.c index e96b734291..5a53df8b6b 100644 --- a/ext/interbase/php_ibase_udf.c +++ b/ext/interbase/php_ibase_udf.c @@ -183,12 +183,11 @@ static ISC_INT64 const scales[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10 static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv) { do { - zval callback, args[4], *argp[4], return_value; + zval callback, args[4], return_value; PARAMVARY *res = (PARAMVARY*)r->dsc_address; int i; - INIT_ZVAL(callback); - ZVAL_STRING(&callback,name,0); + ZVAL_STRING(&callback, name); LOCK(); @@ -202,12 +201,9 @@ static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv) /* create the argument array */ for (i = 0; i < argc; ++i) { - INIT_ZVAL(args[i]); - argp[i] = &args[i]; - /* test arg for null */ if (argv[i]->dsc_flags & DSC_null) { - ZVAL_NULL(argp[i]); + ZVAL_NULL(&args[i]); continue; } @@ -218,32 +214,35 @@ static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv) char d[64]; case dtype_cstring: - ZVAL_STRING(argp[i], (char*)argv[i]->dsc_address,0); +//??? + ZVAL_STRING(&args[i], (char*)argv[i]->dsc_address); break; case dtype_text: - ZVAL_STRINGL(argp[i], (char*)argv[i]->dsc_address, argv[i]->dsc_length,0); +//??? + ZVAL_STRINGL(&args[i], (char*)argv[i]->dsc_address, argv[i]->dsc_length); break; case dtype_varying: - ZVAL_STRINGL(argp[i], ((PARAMVARY*)argv[i]->dsc_address)->vary_string, - ((PARAMVARY*)argv[i]->dsc_address)->vary_length,0); +//??? + ZVAL_STRINGL(&args[i], ((PARAMVARY*)argv[i]->dsc_address)->vary_string, + ((PARAMVARY*)argv[i]->dsc_address)->vary_length); break; case dtype_short: if (argv[i]->dsc_scale == 0) { - ZVAL_LONG(argp[i], *(short*)argv[i]->dsc_address); + ZVAL_LONG(&args[i], *(short*)argv[i]->dsc_address); } else { - ZVAL_DOUBLE(argp[i], + ZVAL_DOUBLE(&args[i], ((double)*(short*)argv[i]->dsc_address)/scales[-argv[i]->dsc_scale]); } break; case dtype_long: if (argv[i]->dsc_scale == 0) { - ZVAL_LONG(argp[i], *(ISC_LONG*)argv[i]->dsc_address); + ZVAL_LONG(&args[i], *(ISC_LONG*)argv[i]->dsc_address); } else { - ZVAL_DOUBLE(argp[i], + ZVAL_DOUBLE(&args[i], ((double)*(ISC_LONG*)argv[i]->dsc_address)/scales[-argv[i]->dsc_scale]); } break; @@ -252,33 +251,33 @@ static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv) l = *(ISC_INT64*)argv[i]->dsc_address; if (argv[i]->dsc_scale == 0 && l <= LONG_MAX && l >= LONG_MIN) { - ZVAL_LONG(argp[i], (long)l); + ZVAL_LONG(&args[i], (long)l); } else { - ZVAL_DOUBLE(argp[i], ((double)l)/scales[-argv[i]->dsc_scale]); + ZVAL_DOUBLE(&args[i], ((double)l)/scales[-argv[i]->dsc_scale]); } break; case dtype_real: - ZVAL_DOUBLE(argp[i], *(float*)argv[i]->dsc_address); + ZVAL_DOUBLE(&args[i], *(float*)argv[i]->dsc_address); break; case dtype_double: - ZVAL_DOUBLE(argp[i], *(double*)argv[i]->dsc_address); + ZVAL_DOUBLE(&args[i], *(double*)argv[i]->dsc_address); break; case dtype_sql_date: isc_decode_sql_date((ISC_DATE*)argv[i]->dsc_address, &t); - ZVAL_STRINGL(argp[i], d, strftime(d, sizeof(d), INI_STR("ibase.dateformat"), &t),1); + ZVAL_STRINGL(&args[i], d, strftime(d, sizeof(d), INI_STR("ibase.dateformat"), &t),1); break; case dtype_sql_time: isc_decode_sql_time((ISC_TIME*)argv[i]->dsc_address, &t); - ZVAL_STRINGL(argp[i], d, strftime(d, sizeof(d), INI_STR("ibase.timeformat"), &t),1); + ZVAL_STRINGL(&args[i], d, strftime(d, sizeof(d), INI_STR("ibase.timeformat"), &t),1); break; case dtype_timestamp: isc_decode_timestamp((ISC_TIMESTAMP*)argv[i]->dsc_address, &t); - ZVAL_STRINGL(argp[i], d, strftime(d, sizeof(d), INI_STR("ibase.timestampformat"), &t),1); + ZVAL_STRINGL(&args[i], d, strftime(d, sizeof(d), INI_STR("ibase.timestampformat"), &t)); break; } } @@ -287,7 +286,7 @@ static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv) /* now call the function */ if (FAILURE == call_user_function(EG(function_table), NULL, - &callback, &return_value, argc, argp TSRMLS_CC)) { + &callback, &return_value, argc, args TSRMLS_CC)) { UNLOCK(); break; } @@ -299,11 +298,12 @@ static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv) case dtype_sql_date: case dtype_sql_time: case dtype_timestamp: - zval_dtor(argp[i]); - + zval_dtor(&args[i]); } } + zval_dtor(&callback); + /* return whatever type we got back from the callback: let DB handle conversion */ switch (Z_TYPE(return_value)) { diff --git a/ext/interbase/tests/ibase_close_001.phpt b/ext/interbase/tests/ibase_close_001.phpt index 6e31916abe..f74d109109 100644 --- a/ext/interbase/tests/ibase_close_001.phpt +++ b/ext/interbase/tests/ibase_close_001.phpt @@ -18,7 +18,7 @@ var_dump(ibase_close('foo')); bool(true) bool(true) -Warning: ibase_close(): %d is not a valid Firebird/InterBase link resource in %s on line %d +Warning: ibase_close(): supplied resource is not a valid Firebird/InterBase link resource in %s on line %d bool(false) Warning: ibase_close() expects parameter 1 to be resource,%string given in %s on line %d diff --git a/ext/interbase/tests/ibase_free_query_001.phpt b/ext/interbase/tests/ibase_free_query_001.phpt index bedec71731..069f0f0424 100644 --- a/ext/interbase/tests/ibase_free_query_001.phpt +++ b/ext/interbase/tests/ibase_free_query_001.phpt @@ -21,7 +21,7 @@ var_dump(ibase_free_query($x)); --EXPECTF-- bool(true) -Warning: ibase_free_query(): 11 is not a valid Firebird/InterBase query resource in %s on line %d +Warning: ibase_free_query(): supplied resource is not a valid Firebird/InterBase query resource in %s on line %d bool(false) Warning: ibase_free_query(): supplied resource is not a valid Firebird/InterBase query resource in %s on line %d diff --git a/ext/intl/collator/collator_convert.c b/ext/intl/collator/collator_convert.c index 3f5dd3ae66..1d8681582c 100644 --- a/ext/intl/collator/collator_convert.c +++ b/ext/intl/collator/collator_convert.c @@ -63,9 +63,11 @@ static void collator_convert_hash_item_from_utf8_to_utf16( return; /* Update current hash item with the converted value. */ - ZVAL_STRINGL( &znew_val, (char*)new_val, UBYTES(new_val_len) ); + ZVAL_STRINGL( &znew_val, (char*)new_val, UBYTES(new_val_len + 1) ); //??? efree(new_val); + /* hack to fix use of initialized value */ + Z_STRLEN(znew_val) = Z_STRLEN(znew_val) - UBYTES(1); if( hashKey) { @@ -390,7 +392,7 @@ zval* collator_convert_string_to_number_if_possible( zval* str, zval *rv ) * * @return zval* UTF16 string. */ -zval* collator_make_printable_zval( zval* arg, zval *rv ) +zval* collator_make_printable_zval( zval* arg, zval *rv) { zval arg_copy; int use_copy = 0; @@ -398,7 +400,9 @@ zval* collator_make_printable_zval( zval* arg, zval *rv ) if( Z_TYPE_P(arg) != IS_STRING ) { - use_copy = zend_make_printable_zval(arg, &arg_copy); + TSRMLS_FETCH(); + + use_copy = zend_make_printable_zval(arg, &arg_copy TSRMLS_CC); if( use_copy ) { diff --git a/ext/intl/collator/collator_sort.c b/ext/intl/collator/collator_sort.c index 8bf5449e14..43140b2f41 100644 --- a/ext/intl/collator/collator_sort.c +++ b/ext/intl/collator/collator_sort.c @@ -498,7 +498,7 @@ PHP_FUNCTION( collator_sort_with_sort_keys ) /* sort it */ zend_qsort( sortKeyIndxBuf, sortKeyCount, sortKeyIndxSize, collator_cmp_sort_keys TSRMLS_CC ); - zval_dtor( array ); + zval_ptr_dtor( array ); /* for resulting hash we'll assign new hash keys rather then reordering */ array_init(array); diff --git a/ext/intl/transliterator/transliterator_methods.c b/ext/intl/transliterator/transliterator_methods.c index 25edd005ef..4403de08aa 100644 --- a/ext/intl/transliterator/transliterator_methods.c +++ b/ext/intl/transliterator/transliterator_methods.c @@ -463,7 +463,7 @@ cleanup: RETVAL_FALSE; } - zval_ptr_dtor( &tmp_object ); + /* zval_ptr_dtor( &tmp_object ); */ } /* }}} */ diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c index 6518f8d36a..f4124d306b 100644 --- a/ext/mysql/php_mysql.c +++ b/ext/mysql/php_mysql.c @@ -641,10 +641,9 @@ PHP_RINIT_FUNCTION(mysql) /* }}} */ #if defined(A0) && defined(MYSQL_USE_MYSQLND) -static int php_mysql_persistent_helper(zval *el;zend_rsrc_list_entry *le TSRMLS_DC) +static int php_mysql_persistent_helper(zval *el TSRMLS_DC) { - //??? - //zend_rsrc_list_entry *le = (zend_rsrc_list_entry*)Z_PTR_P(el); + zend_resource *le = (zend_resource *)Z_PTR_P(el); if (le->type == le_plink) { mysqlnd_end_psession(((php_mysql_conn *) le->ptr)->conn); } @@ -1310,11 +1309,13 @@ PHP_FUNCTION(mysql_stat) { php_mysql_conn *mysql; zval *mysql_link = NULL; +#ifndef MYSQL_USE_MYSQLND char *stat; -#ifdef MYSQL_USE_MYSQLND - uint stat_len; +#else + zend_string *stat; #endif + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|r", &mysql_link) == FAILURE) { return; } @@ -1332,10 +1333,8 @@ PHP_FUNCTION(mysql_stat) if ((stat = (char *)mysql_stat(mysql->conn))) { RETURN_STRING(stat); #else - if (mysqlnd_stat(mysql->conn, &stat, &stat_len) == PASS) { - // TODO: avoid reallocation ??? - RETVAL_STRINGL(stat, stat_len); - efree(stat); + if (mysqlnd_stat(mysql->conn, &stat) == PASS) { + RETURN_STR(stat); #endif } else { RETURN_FALSE; diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 195eb41b5c..19f12417fe 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -2262,9 +2262,10 @@ PHP_FUNCTION(mysqli_stat) { MY_MYSQL *mysql; zval *mysql_link; - char *stat; #if defined(MYSQLI_USE_MYSQLND) - uint stat_len; + zend_string *stat; +#else + char *stat; #endif if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { @@ -2277,10 +2278,9 @@ PHP_FUNCTION(mysqli_stat) { RETURN_STRING(stat); #else - if (mysqlnd_stat(mysql->mysql, &stat, &stat_len) == PASS) + if (mysqlnd_stat(mysql->mysql, &stat) == PASS) { - RETVAL_STRINGL(stat, stat_len); - efree(stat); + RETURN_STR(stat); #endif } else { RETURN_FALSE; diff --git a/ext/mysqli/mysqli_prop.c b/ext/mysqli/mysqli_prop.c index b772511647..cd0639d98f 100644 --- a/ext/mysqli/mysqli_prop.c +++ b/ext/mysqli/mysqli_prop.c @@ -250,14 +250,13 @@ static zval *link_stat_read(mysqli_object *obj, zval *retval TSRMLS_DC) mysql = (MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr; if (mysql) { - char * stat_msg; #if defined(MYSQLI_USE_MYSQLND) - uint stat_msg_len; - if (mysqlnd_stat(mysql->mysql, &stat_msg, &stat_msg_len) == PASS) { - ZVAL_STRINGL(retval, stat_msg, stat_msg_len); - efree(stat_msg); + zend_string * stat_msg; + if (mysqlnd_stat(mysql->mysql, &stat_msg) == PASS) { + ZVAL_STR(retval, stat_msg); } #else + char * stat_msg; if ((stat_msg = (char *)mysql_stat(mysql->mysql))) { ZVAL_STRING(retval, stat_msg); } diff --git a/ext/mysqli/tests/066.phpt b/ext/mysqli/tests/066.phpt index 91dfce5073..a337e038c1 100644 --- a/ext/mysqli/tests/066.phpt +++ b/ext/mysqli/tests/066.phpt @@ -12,6 +12,9 @@ require_once('skipifconnectfailure.inc'); /*** test mysqli_connect 127.0.0.1 ***/ $mysql = new my_mysqli($host, $user, $passwd, $db, $port, $socket); + if (!mysqli_query($mysql, "SET sql_mode=''")) + printf("[002] Cannot set SQL-Mode, [%d] %s\n", mysqli_errno($mysql), mysqli_error($mysql)); + $mysql->query("DROP TABLE IF EXISTS test_warnings"); $mysql->query("CREATE TABLE test_warnings (a int not null) ENGINE=myisam"); diff --git a/ext/mysqli/tests/mysqli_stmt_multires.phpt b/ext/mysqli/tests/mysqli_stmt_multires.phpt new file mode 100644 index 0000000000..28cf5e38f4 --- /dev/null +++ b/ext/mysqli/tests/mysqli_stmt_multires.phpt @@ -0,0 +1,120 @@ +--TEST-- +Multiple result set with PS +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once("connect.inc"); +if (!$IS_MYSQLND) { + die("skip mysqlnd only test"); +} +require_once('skipifconnectfailure.inc'); +?> +--FILE-- +<?php + require_once("connect.inc"); + require('table.inc'); + + $stmt = mysqli_stmt_init($link); + if (!$link->query('DROP PROCEDURE IF EXISTS p123')) { + printf("[001] [%d] %s\n", $link->error, $link->errno); + } + + if (!$link->query("CREATE PROCEDURE p123() BEGIN SELECT id+12, CONCAT_WS('-',label,'ahoi') FROM test ORDER BY id LIMIT 1; SELECT id + 42, CONCAT_WS('---',label, label) FROM test ORDER BY id LIMIT 1; END")) { + printf("[002] [%d] %s\n", $link->error, $link->errno); + } + + if (!($stmt = $link->prepare("CALL p123"))) { + printf("[003] [%d] %s\n", $stmt->error, $stmt->errno); + } + + if (!$stmt->execute()) { + printf("[005] [%d] %s\n", $stmt->error, $stmt->errno); + } + + $c_id = NULL; + $c_label = NULL; + if (!$stmt->bind_result($c_id, $c_label)) { + printf("[004] [%d] %s\n", $stmt->error, $stmt->errno); + } + var_dump("pre:",$c_id, $c_label); + + if (!$stmt->fetch()) { + printf("[006] [%d] %s\n", $stmt->error, $stmt->errno); + } + + var_dump("post:",$c_id, $c_label); + + if ($stmt->fetch()) { + printf("[007] Shouldn't have fetched anything\n"); + var_dump($c_id, $c_label); + } + + if ($stmt->fetch()) { + printf("[008] No more rows expected\n"); + } + + if (!$stmt->more_results()) { + printf("[009] Expected more results\n"); + } else { + var_dump("[009] next_result:", $stmt->next_result()); + } + + if (!$stmt->bind_result($c_id, $c_label)) { + printf("[010] [%d] %s\n", $stmt->error, $stmt->errno); + } + var_dump("pre:",$c_id, $c_label); + + if (!$stmt->fetch()) { + printf("[011] [%d] %s\n", $stmt->error, $stmt->errno); + } + + var_dump("post:",$c_id, $c_label); + + if ($stmt->fetch()) { + printf("[012] No more rows expected\n"); + } + + if (!$stmt->more_results()) { + printf("[013] Expected more results\n"); + } else { + var_dump("[013] next_result:", $stmt->next_result()); + } + + if ($stmt->more_results()) { + printf("[014] No more results expected\n"); + } else { + printf("[014] No result, as expected\n"); + } + + $stmt->close(); + $link->close(); + + + echo "done"; +?> +--CLEAN-- +<?php + require_once("connect.inc"); + if (!$link->query('DROP PROCEDURE IF EXISTS p123')) { + printf("[001] [%d] %s\n", $link->error, $link->errno); + } +?> +--EXPECTF-- +string(4) "pre:" +NULL +NULL +string(5) "post:" +int(13) +string(6) "a-ahoi" +string(18) "[009] next_result:" +bool(true) +string(4) "pre:" +int(13) +string(6) "a-ahoi" +string(5) "post:" +int(43) +string(5) "a---a" +string(18) "[013] next_result:" +bool(true) +[014] No result, as expected +done
\ No newline at end of file diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index e3f52c1d0d..e05d6844bc 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -1727,7 +1727,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, ping)(MYSQLND_CONN_DATA * const conn TSRMLS_DC /* {{{ mysqlnd_conn_data::statistic */ static enum_func_status -MYSQLND_METHOD(mysqlnd_conn_data, statistic)(MYSQLND_CONN_DATA * conn, char **message, unsigned int * message_len TSRMLS_DC) +MYSQLND_METHOD(mysqlnd_conn_data, statistic)(MYSQLND_CONN_DATA * conn, zend_string **message TSRMLS_DC) { size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_data_methods, get_server_statistics); enum_func_status ret = FAIL; @@ -1750,9 +1750,8 @@ MYSQLND_METHOD(mysqlnd_conn_data, statistic)(MYSQLND_CONN_DATA * conn, char **me if (PASS == (ret = PACKET_READ(stats_header, conn))) { /* will be freed by Zend, thus don't use the mnd_ allocator */ - *message = estrndup(stats_header->message, stats_header->message_len); - *message_len = stats_header->message_len; - DBG_INF(*message); + *message = STR_INIT(stats_header->message, stats_header->message_len, 0); + DBG_INF((*message)->val); } PACKET_FREE(stats_header); } while (0); diff --git a/ext/mysqlnd/mysqlnd.h b/ext/mysqlnd/mysqlnd.h index a4e54f2408..94620d9369 100644 --- a/ext/mysqlnd/mysqlnd.h +++ b/ext/mysqlnd/mysqlnd.h @@ -208,7 +208,7 @@ void mysqlnd_local_infile_default(MYSQLND_CONN_DATA * conn); #define mysqlnd_refresh(conn, options) ((conn)->data)->m->refresh_server((conn)->data, (options) TSRMLS_CC) #define mysqlnd_shutdown(conn, level) ((conn)->data)->m->shutdown_server((conn)->data, (level) TSRMLS_CC) #define mysqlnd_set_character_set(conn, cs) ((conn)->data)->m->set_charset((conn)->data, (cs) TSRMLS_CC) -#define mysqlnd_stat(conn, msg, msg_len) ((conn)->data)->m->get_server_statistics(((conn)->data), (msg), (msg_len) TSRMLS_CC) +#define mysqlnd_stat(conn, msg) ((conn)->data)->m->get_server_statistics(((conn)->data), (msg) TSRMLS_CC) #define mysqlnd_options(conn, opt, value) ((conn)->data)->m->set_client_option((conn)->data, (opt), (value) TSRMLS_CC) #define mysqlnd_options4(conn, opt, k, v) ((conn)->data)->m->set_client_option_2d((conn)->data, (opt), (k), (v) TSRMLS_CC) #define mysqlnd_set_server_option(conn, op) ((conn)->data)->m->set_server_option((conn)->data, (op) TSRMLS_CC) diff --git a/ext/mysqlnd/mysqlnd_net.c b/ext/mysqlnd/mysqlnd_net.c index 76e49a5d9d..84757f88c1 100644 --- a/ext/mysqlnd/mysqlnd_net.c +++ b/ext/mysqlnd/mysqlnd_net.c @@ -160,7 +160,7 @@ MYSQLND_METHOD(mysqlnd_net, open_tcp_or_unix)(MYSQLND_NET * const net, const cha unsigned int streams_flags = STREAM_XPORT_CLIENT | STREAM_XPORT_CONNECT; char * hashed_details = NULL; int hashed_details_len = 0; - char * errstr = NULL; + zend_string *errstr = NULL; int errcode = 0; struct timeval tv; dtor_func_t origin_dtor; @@ -190,10 +190,10 @@ MYSQLND_METHOD(mysqlnd_net, open_tcp_or_unix)(MYSQLND_NET * const net, const cha mnd_sprintf_free(hashed_details); } errcode = CR_CONNECTION_ERROR; - SET_CLIENT_ERROR(*error_info, errcode? errcode:CR_CONNECTION_ERROR, UNKNOWN_SQLSTATE, errstr); + SET_CLIENT_ERROR(*error_info, errcode? errcode:CR_CONNECTION_ERROR, UNKNOWN_SQLSTATE, errstr->val); if (errstr) { /* no mnd_ since we don't allocate it */ - efree(errstr); + STR_RELEASE(errstr); } DBG_RETURN(NULL); } diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index adb9578fc8..986a664410 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -43,7 +43,6 @@ enum_func_status mysqlnd_stmt_execute_batch_generate_request(MYSQLND_STMT * cons static void mysqlnd_stmt_separate_result_bind(MYSQLND_STMT * const stmt TSRMLS_DC); static void mysqlnd_stmt_separate_one_result_bind(MYSQLND_STMT * const stmt, unsigned int param_no TSRMLS_DC); - /* {{{ mysqlnd_stmt::store_result */ static MYSQLND_RES * MYSQLND_METHOD(mysqlnd_stmt, store_result)(MYSQLND_STMT * const s TSRMLS_DC) @@ -246,7 +245,7 @@ MYSQLND_METHOD(mysqlnd_stmt, next_result)(MYSQLND_STMT * s TSRMLS_DC) DBG_INF_FMT("server_status=%u cursor=%u", stmt->upsert_status->server_status, stmt->upsert_status->server_status & SERVER_STATUS_CURSOR_EXISTS); /* Free space for next result */ - s->m->free_stmt_content(s TSRMLS_CC); + s->m->free_stmt_result(s TSRMLS_CC); { enum_func_status ret = s->m->parse_execute_response(s TSRMLS_CC); DBG_RETURN(ret); @@ -2069,6 +2068,37 @@ mysqlnd_stmt_separate_one_result_bind(MYSQLND_STMT * const s, unsigned int param /* }}} */ +/* {{{ mysqlnd_stmt::free_stmt_result */ +static void +MYSQLND_METHOD(mysqlnd_stmt, free_stmt_result)(MYSQLND_STMT * const s TSRMLS_DC) +{ + MYSQLND_STMT_DATA * stmt = s? s->data:NULL; + DBG_ENTER("mysqlnd_stmt::free_stmt_result"); + if (!stmt) { + DBG_VOID_RETURN; + } + + /* + First separate the bound variables, which point to the result set, then + destroy the set. + */ + mysqlnd_stmt_separate_result_bind(s TSRMLS_CC); + /* Not every statement has a result set attached */ + if (stmt->result) { + stmt->result->m.free_result_internal(stmt->result TSRMLS_CC); + stmt->result = NULL; + } + if (stmt->error_info->error_list) { + zend_llist_clean(stmt->error_info->error_list); + mnd_pefree(stmt->error_info->error_list, s->persistent); + stmt->error_info->error_list = NULL; + } + + DBG_VOID_RETURN; +} +/* }}} */ + + /* {{{ mysqlnd_stmt::free_stmt_content */ static void MYSQLND_METHOD(mysqlnd_stmt, free_stmt_content)(MYSQLND_STMT * const s TSRMLS_DC) @@ -2099,22 +2129,7 @@ MYSQLND_METHOD(mysqlnd_stmt, free_stmt_content)(MYSQLND_STMT * const s TSRMLS_DC stmt->param_bind = NULL; } - /* - First separate the bound variables, which point to the result set, then - destroy the set. - */ - mysqlnd_stmt_separate_result_bind(s TSRMLS_CC); - /* Not every statement has a result set attached */ - if (stmt->result) { - stmt->result->m.free_result_internal(stmt->result TSRMLS_CC); - stmt->result = NULL; - } - if (stmt->error_info->error_list) { - zend_llist_clean(stmt->error_info->error_list); - mnd_pefree(stmt->error_info->error_list, s->persistent); - stmt->error_info->error_list = NULL; - } - + s->m->free_stmt_result(s TSRMLS_CC); DBG_VOID_RETURN; } /* }}} */ @@ -2333,7 +2348,8 @@ MYSQLND_CLASS_METHODS_START(mysqlnd_stmt) mysqlnd_stmt_execute_generate_request, mysqlnd_stmt_execute_parse_response, MYSQLND_METHOD(mysqlnd_stmt, free_stmt_content), - MYSQLND_METHOD(mysqlnd_stmt, flush) + MYSQLND_METHOD(mysqlnd_stmt, flush), + MYSQLND_METHOD(mysqlnd_stmt, free_stmt_result) MYSQLND_CLASS_METHODS_END; diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h index f8e69986fe..9ec924ead6 100644 --- a/ext/mysqlnd/mysqlnd_structs.h +++ b/ext/mysqlnd/mysqlnd_structs.h @@ -443,7 +443,7 @@ typedef void (*func_mysqlnd_conn_data__get_statistics)(const MYSQLND_CONN_DAT typedef unsigned long (*func_mysqlnd_conn_data__get_server_version)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC); typedef const char * (*func_mysqlnd_conn_data__get_server_information)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC); -typedef enum_func_status (*func_mysqlnd_conn_data__get_server_statistics)(MYSQLND_CONN_DATA * conn, char **message, unsigned int * message_len TSRMLS_DC); +typedef enum_func_status (*func_mysqlnd_conn_data__get_server_statistics)(MYSQLND_CONN_DATA * conn, zend_string **message TSRMLS_DC); typedef const char * (*func_mysqlnd_conn_data__get_host_information)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC); typedef unsigned int (*func_mysqlnd_conn_data__get_protocol_information)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC); typedef const char * (*func_mysqlnd_conn_data__get_last_message)(const MYSQLND_CONN_DATA * const conn TSRMLS_DC); @@ -786,6 +786,7 @@ typedef enum_func_status (*func_mysqlnd_stmt__generate_execute_request)(MYSQLND typedef enum_func_status (*func_mysqlnd_stmt__parse_execute_response)(MYSQLND_STMT * const s TSRMLS_DC); typedef void (*func_mysqlnd_stmt__free_stmt_content)(MYSQLND_STMT * const s TSRMLS_DC); typedef enum_func_status (*func_mysqlnd_stmt__flush)(MYSQLND_STMT * const stmt TSRMLS_DC); +typedef void (*func_mysqlnd_stmt__free_stmt_result)(MYSQLND_STMT * const s TSRMLS_DC); struct st_mysqlnd_stmt_methods { @@ -841,6 +842,8 @@ struct st_mysqlnd_stmt_methods func_mysqlnd_stmt__free_stmt_content free_stmt_content; func_mysqlnd_stmt__flush flush; + + func_mysqlnd_stmt__free_stmt_result free_stmt_result; }; diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c index 35b56cc5e5..2aa7afde0d 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.c +++ b/ext/mysqlnd/mysqlnd_wireprotocol.c @@ -224,7 +224,7 @@ php_mysqlnd_net_store_length_size(uint64_t length) if (length < (uint64_t) L64(16777216)) { return 4; } - return 8; + return 9; } /* }}} */ diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index bc3f4c9520..10384da2ad 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -416,7 +416,7 @@ ZEND_GET_MODULE(odbc) /* {{{ _free_odbc_result */ -static void _free_odbc_result(zend_rsrc_list_entry *rsrc TSRMLS_DC) +static void _free_odbc_result(zend_resource *rsrc TSRMLS_DC) { odbc_result *res = (odbc_result *)rsrc->ptr; int i; @@ -465,24 +465,21 @@ static void safe_odbc_disconnect( void *handle ) /* {{{ _close_odbc_conn */ -static void _close_odbc_conn(zend_rsrc_list_entry *rsrc TSRMLS_DC) +static void _close_odbc_conn(zend_resource *rsrc TSRMLS_DC) { - int i, nument, type; - void *ptr; + zend_resource *p; odbc_result *res; odbc_connection *conn = (odbc_connection *)rsrc->ptr; - nument = zend_hash_next_free_element(&EG(regular_list)); - for(i = 1; i < nument; i++) { - ptr = zend_list_find(i, &type); - if (ptr && (type == le_result)) { - res = (odbc_result *)ptr; + ZEND_HASH_FOREACH_PTR(&EG(regular_list), p) { + if (p->ptr && (p->type == le_result)) { + res = (odbc_result *)p->ptr; if (res->conn_ptr == conn) { - zend_list_delete(i); + zend_list_close(p); } } - } + } ZEND_HASH_FOREACH_END(); safe_odbc_disconnect(conn->hdbc); SQLFreeConnect(conn->hdbc); @@ -494,24 +491,21 @@ static void _close_odbc_conn(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ void _close_odbc_pconn */ -static void _close_odbc_pconn(zend_rsrc_list_entry *rsrc TSRMLS_DC) +static void _close_odbc_pconn(zend_resource *rsrc TSRMLS_DC) { - int i, nument, type; - void *ptr; + zend_resource *p; odbc_result *res; odbc_connection *conn = (odbc_connection *)rsrc->ptr; - nument = zend_hash_next_free_element(&EG(persistent_list)); - for(i = 1; i < nument; i++) { - ptr = zend_list_find(i, &type); - if (ptr && (type == le_result)) { - res = (odbc_result *)ptr; + ZEND_HASH_FOREACH_PTR(&EG(regular_list), p) { + if (p->ptr && (p->type == le_result)) { + res = (odbc_result *)p->ptr; if (res->conn_ptr == conn) { - zend_list_delete(i); + zend_list_close(p); } } - } - + } ZEND_HASH_FOREACH_END(); + safe_odbc_disconnect(conn->hdbc); SQLFreeConnect(conn->hdbc); SQLFreeEnv(conn->henv); @@ -721,7 +715,7 @@ PHP_MINIT_FUNCTION(odbc) le_result = zend_register_list_destructors_ex(_free_odbc_result, NULL, "odbc result", module_number); le_conn = zend_register_list_destructors_ex(_close_odbc_conn, NULL, "odbc link", module_number); le_pconn = zend_register_list_destructors_ex(NULL, _close_odbc_pconn, "odbc link persistent", module_number); - Z_TYPE(odbc_module_entry) = type; + odbc_module_entry.type = type; REGISTER_STRING_CONSTANT("ODBC_TYPE", PHP_ODBC_TYPE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("ODBC_BINMODE_PASSTHRU", 0, CONST_CS | CONST_PERSISTENT); @@ -780,6 +774,9 @@ PHP_MINIT_FUNCTION(odbc) REGISTER_LONG_CONSTANT("SQL_TYPE_DATE", SQL_TYPE_DATE, CONST_PERSISTENT | CONST_CS); REGISTER_LONG_CONSTANT("SQL_TYPE_TIME", SQL_TYPE_TIME, CONST_PERSISTENT | CONST_CS); REGISTER_LONG_CONSTANT("SQL_TYPE_TIMESTAMP", SQL_TYPE_TIMESTAMP, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_WCHAR", SQL_WCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_WVARCHAR", SQL_WVARCHAR, CONST_PERSISTENT | CONST_CS); + REGISTER_LONG_CONSTANT("SQL_WLONGVARCHAR", SQL_WLONGVARCHAR, CONST_PERSISTENT | CONST_CS); /* * SQLSpecialColumns values @@ -921,7 +918,7 @@ void php_odbc_fetch_attribs(INTERNAL_FUNCTION_PARAMETERS, int mode) } if (Z_LVAL_P(pv_res)) { - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (mode) { result->longreadlen = flag; } else { @@ -943,9 +940,13 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) { RETCODE rc; int i; - SQLSMALLINT colnamelen; /* Not used */ - SQLLEN displaysize; + SQLSMALLINT colnamelen; /* Not used */ + SQLLEN displaysize; + SQLUSMALLINT colfieldid; + int charextraalloc; + colfieldid = SQL_COLUMN_DISPLAY_SIZE; + charextraalloc = 0; result->values = (odbc_result_value *) safe_emalloc(sizeof(odbc_result_value), result->numcols, 0); result->longreadlen = ODBCG(defaultlrl); @@ -966,6 +967,9 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) case SQL_VARBINARY: case SQL_LONGVARBINARY: case SQL_LONGVARCHAR: +#if defined(ODBCVER) && (ODBCVER >= 0x0300) + case SQL_WLONGVARCHAR: +#endif result->values[i].value = NULL; break; @@ -976,15 +980,27 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) 27, &result->values[i].vallen); break; #endif /* HAVE_ADABAS */ + case SQL_CHAR: + case SQL_VARCHAR: +#if defined(ODBCVER) && (ODBCVER >= 0x0300) + case SQL_WCHAR: + case SQL_WVARCHAR: + colfieldid = SQL_DESC_OCTET_LENGTH; +#else + charextraalloc = 1; +#endif default: - rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_DISPLAY_SIZE, - NULL, 0, NULL, &displaysize); - displaysize = displaysize <= result->longreadlen ? displaysize : - result->longreadlen; + rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), colfieldid, + NULL, 0, NULL, &displaysize); /* Workaround for Oracle ODBC Driver bug (#50162) when fetching TIMESTAMP column */ if (result->values[i].coltype == SQL_TIMESTAMP) { displaysize += 3; } + + if (charextraalloc) { + /* Since we don't know the exact # of bytes, allocate extra */ + displaysize *= 4; + } result->values[i].value = (char *)emalloc(displaysize + 1); rc = SQLBindCol(result->stmt, (SQLUSMALLINT)(i+1), SQL_C_CHAR, result->values[i].value, displaysize + 1, &result->values[i].vallen); @@ -1006,7 +1022,7 @@ void odbc_transact(INTERNAL_FUNCTION_PARAMETERS, int type) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); rc = SQLTransact(conn->henv, conn->hdbc, (SQLUSMALLINT)((type)?SQL_COMMIT:SQL_ROLLBACK)); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { @@ -1018,10 +1034,10 @@ void odbc_transact(INTERNAL_FUNCTION_PARAMETERS, int type) } /* }}} */ -/* {{{ _close_pconn_with_id */ -static int _close_pconn_with_id(zend_rsrc_list_entry *le, int *id TSRMLS_DC) +/* {{{ _close_pconn_with_res */ +static int _close_pconn_with_res(zend_resource *le, zend_resource *res TSRMLS_DC) { - if(Z_TYPE_P(le) == le_pconn && (((odbc_connection *)(le->ptr))->id == *id)){ + if (le->type == le_pconn && (((odbc_connection *)(le->ptr))->res == res)){ return 1; }else{ return 0; @@ -1051,7 +1067,7 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -1080,41 +1096,32 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) Close all ODBC connections */ PHP_FUNCTION(odbc_close_all) { - void *ptr; - int type; - int i; - int nument; + zend_resource *p; if (zend_parse_parameters_none() == FAILURE) { return; } - nument = zend_hash_next_free_element(&EG(regular_list)); - /* Loop through list and close all statements */ - for(i = 1; i < nument; i++) { - ptr = zend_list_find(i, &type); - if (ptr && (type == le_result)){ - zend_list_delete(i); + ZEND_HASH_FOREACH_PTR(&EG(regular_list), p) { + if (p->ptr && (p->type == le_result)) { + zend_list_close(p); } - } + } ZEND_HASH_FOREACH_END(); /* Second loop through list, now close all connections */ - nument = zend_hash_next_free_element(&EG(regular_list)); - - for(i = 1; i < nument; i++) { - ptr = zend_list_find(i, &type); - if (ptr){ - if(type == le_conn){ - zend_list_delete(i); - }else if(type == le_pconn){ - zend_list_delete(i); + ZEND_HASH_FOREACH_PTR(&EG(regular_list), p) { + if (p->ptr) { + if (p->type == le_conn){ + zend_list_close(p); + } else if (p->type == le_pconn){ + zend_list_close(p); /* Delete the persistent connection */ zend_hash_apply_with_argument(&EG(persistent_list), - (apply_func_arg_t) _close_pconn_with_id, (void *) &i TSRMLS_CC); + (apply_func_arg_t) _close_pconn_with_res, (void *)p TSRMLS_CC); } } - } + } ZEND_HASH_FOREACH_END(); } /* }}} */ @@ -1152,7 +1159,7 @@ PHP_FUNCTION(odbc_prepare) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -1210,7 +1217,7 @@ PHP_FUNCTION(odbc_prepare) } else { result->values = NULL; } - zend_list_addref(conn->id); + Z_ADDREF_P(pv_conn); result->conn_ptr = conn; result->fetched = 0; ZEND_REGISTER_RESOURCE(return_value, result, le_result); @@ -1225,7 +1232,7 @@ PHP_FUNCTION(odbc_prepare) Execute a prepared statement */ PHP_FUNCTION(odbc_execute) { - zval *pv_res, *pv_param_arr, **tmp; + zval *pv_res, *pv_param_arr, *tmp; typedef struct params_t { SQLLEN vallen; int fp; @@ -1246,7 +1253,7 @@ PHP_FUNCTION(odbc_execute) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); /* XXX check for already bound parameters*/ if (result->numparams > 0 && numArgs == 1) { @@ -1267,7 +1274,7 @@ PHP_FUNCTION(odbc_execute) } for(i = 1; i <= result->numparams; i++) { - if (zend_hash_get_current_data(Z_ARRVAL_P(pv_param_arr), (void **) &tmp) == FAILURE) { + if ((tmp = zend_hash_get_current_data(Z_ARRVAL_P(pv_param_arr))) == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error getting parameter"); SQLFreeStmt(result->stmt,SQL_RESET_PARAMS); for (i = 0; i < result->numparams; i++) { @@ -1279,9 +1286,9 @@ PHP_FUNCTION(odbc_execute) RETURN_FALSE; } - otype = (*tmp)->type; + otype = Z_TYPE_P(tmp); convert_to_string_ex(tmp); - if (Z_TYPE_PP(tmp) != IS_STRING) { + if (Z_TYPE_P(tmp) != IS_STRING) { php_error_docref(NULL TSRMLS_CC, E_WARNING,"Error converting parameter"); SQLFreeStmt(result->stmt, SQL_RESET_PARAMS); for (i = 0; i < result->numparams; i++) { @@ -1294,7 +1301,7 @@ PHP_FUNCTION(odbc_execute) } rc = SQLDescribeParam(result->stmt, (SQLUSMALLINT)i, &sqltype, &precision, &scale, &nullable); - params[i-1].vallen = Z_STRLEN_PP(tmp); + params[i-1].vallen = Z_STRLEN_P(tmp); params[i-1].fp = -1; if (rc == SQL_ERROR) { odbc_sql_error(result->conn_ptr, result->stmt, "SQLDescribeParameter"); @@ -1314,14 +1321,14 @@ PHP_FUNCTION(odbc_execute) ctype = SQL_C_CHAR; } - if (Z_STRLEN_PP(tmp) > 2 && - Z_STRVAL_PP(tmp)[0] == '\'' && - Z_STRVAL_PP(tmp)[Z_STRLEN_PP(tmp) - 1] == '\'') { + if (Z_STRLEN_P(tmp) > 2 && + Z_STRVAL_P(tmp)[0] == '\'' && + Z_STRVAL_P(tmp)[Z_STRLEN_P(tmp) - 1] == '\'') { - if (CHECK_ZVAL_NULL_PATH(*tmp)) { + if (CHECK_ZVAL_NULL_PATH(tmp)) { RETURN_FALSE; } - filename = estrndup(&Z_STRVAL_PP(tmp)[1], Z_STRLEN_PP(tmp) - 2); + filename = estrndup(&Z_STRVAL_P(tmp)[1], Z_STRLEN_P(tmp) - 2); filename[strlen(filename)] = '\0'; /* Check the basedir */ @@ -1368,7 +1375,7 @@ PHP_FUNCTION(odbc_execute) rc = SQLBindParameter(result->stmt, (SQLUSMALLINT)i, SQL_PARAM_INPUT, ctype, sqltype, precision, scale, - Z_STRVAL_PP(tmp), 0, + Z_STRVAL_P(tmp), 0, ¶ms[i-1].vallen); } if (rc == SQL_ERROR) { @@ -1464,7 +1471,7 @@ PHP_FUNCTION(odbc_cursor) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); rc = SQLGetInfo(result->conn_ptr->hdbc,SQL_MAX_CURSOR_NAME_LEN, (void *)&max_len,sizeof(max_len),&len); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { @@ -1489,14 +1496,14 @@ PHP_FUNCTION(odbc_cursor) odbc_sql_error(result->conn_ptr, result->stmt, "SQLSetCursorName"); RETVAL_FALSE; } else { - RETVAL_STRING(cursorname,1); + RETVAL_STRING(cursorname); } } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "SQL error: %s, SQL state %s", errormsg, state); RETVAL_FALSE; } } else { - RETVAL_STRING(cursorname,1); + RETVAL_STRING(cursorname); } efree(cursorname); } else { @@ -1528,7 +1535,7 @@ PHP_FUNCTION(odbc_data_source) RETURN_FALSE; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &zv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, zv_conn, -1, "ODBC-Link", le_conn, le_pconn); /* now we have the "connection" lets call the DataSource object */ rc = SQLDataSources(conn->henv, @@ -1582,7 +1589,7 @@ PHP_FUNCTION(odbc_exec) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -1637,7 +1644,7 @@ PHP_FUNCTION(odbc_exec) } else { result->values = NULL; } - zend_list_addref(conn->id); + Z_ADDREF_P(pv_conn); result->conn_ptr = conn; result->fetched = 0; ZEND_REGISTER_RESOURCE(return_value, result, le_result); @@ -1660,7 +1667,7 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) SQLULEN crow; SQLUSMALLINT RowStatus[1]; SQLLEN rownum; - zval *pv_res, *tmp; + zval *pv_res, tmp; long pv_row = -1; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &pv_res, &pv_row) == FAILURE) { @@ -1669,14 +1676,14 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) rownum = pv_row; #else - zval *pv_res, *tmp; + zval *pv_res, tmp; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pv_res) == FAILURE) { return; } #endif - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -1708,9 +1715,6 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) result->fetched++; for(i = 0; i < result->numcols; i++) { - ALLOC_INIT_ZVAL(tmp); - Z_TYPE_P(tmp) = IS_STRING; - Z_STRLEN_P(tmp) = 0; sql_c_type = SQL_C_CHAR; switch(result->values[i].coltype) { @@ -1718,15 +1722,18 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) case SQL_VARBINARY: case SQL_LONGVARBINARY: if (result->binmode <= 0) { - Z_STRVAL_P(tmp) = STR_EMPTY_ALLOC(); + ZVAL_EMPTY_STRING(&tmp); break; } if (result->binmode == 1) { sql_c_type = SQL_C_BINARY; } case SQL_LONGVARCHAR: +#if defined(ODBCVER) && (ODBCVER >= 0x0300) + case SQL_WLONGVARCHAR: +#endif if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) { - Z_STRVAL_P(tmp) = STR_EMPTY_ALLOC(); + ZVAL_EMPTY_STRING(&tmp); break; } if (buf == NULL) { @@ -1742,33 +1749,31 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) } if (rc == SQL_SUCCESS_WITH_INFO) { - Z_STRLEN_P(tmp) = result->longreadlen; + ZVAL_STRINGL(&tmp, buf, result->longreadlen); } else if (result->values[i].vallen == SQL_NULL_DATA) { - ZVAL_NULL(tmp); + ZVAL_NULL(&tmp); break; } else { - Z_STRLEN_P(tmp) = result->values[i].vallen; + ZVAL_STRINGL(&tmp, buf, result->values[i].vallen); } - Z_STRVAL_P(tmp) = estrndup(buf, Z_STRLEN_P(tmp)); break; default: if (result->values[i].vallen == SQL_NULL_DATA) { - ZVAL_NULL(tmp); + ZVAL_NULL(&tmp); break; } - Z_STRLEN_P(tmp) = result->values[i].vallen; - Z_STRVAL_P(tmp) = estrndup(result->values[i].value,Z_STRLEN_P(tmp)); + ZVAL_STRINGL(&tmp, result->values[i].value, result->values[i].vallen); break; } if (result_type & ODBC_NUM) { - zend_hash_index_update(Z_ARRVAL_P(return_value), i, &tmp, sizeof(zval *), NULL); + zend_hash_index_update(Z_ARRVAL_P(return_value), i, &tmp); } else { - if (!*(result->values[i].name) && Z_TYPE_P(tmp) == IS_STRING) { - zend_hash_update(Z_ARRVAL_P(return_value), Z_STRVAL_P(tmp), Z_STRLEN_P(tmp)+1, &tmp, sizeof(zval *), NULL); + if (!*(result->values[i].name) && Z_TYPE(tmp) == IS_STRING) { + zend_hash_update(Z_ARRVAL_P(return_value), Z_STR(tmp), &tmp); } else { - zend_hash_update(Z_ARRVAL_P(return_value), result->values[i].name, strlen(result->values[i].name)+1, &tmp, sizeof(zval *), NULL); + zend_hash_str_update(Z_ARRVAL_P(return_value), result->values[i].name, strlen(result->values[i].name), &tmp); } } } @@ -1808,7 +1813,7 @@ PHP_FUNCTION(odbc_fetch_into) RETCODE rc; SQLSMALLINT sql_c_type; char *buf = NULL; - zval *pv_res, **pv_res_arr, *tmp; + zval *pv_res, *pv_res_arr, tmp; #ifdef HAVE_SQL_EXTENDED_FETCH long pv_row = 0; SQLULEN crow; @@ -1817,26 +1822,26 @@ PHP_FUNCTION(odbc_fetch_into) #endif /* HAVE_SQL_EXTENDED_FETCH */ #ifdef HAVE_SQL_EXTENDED_FETCH - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rZ|l", &pv_res, &pv_res_arr, &pv_row) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz/|l", &pv_res, &pv_res_arr, &pv_row) == FAILURE) { return; } rownum = pv_row; #else - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rZ", &pv_res, &pv_res_arr) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz/", &pv_res, &pv_res_arr) == FAILURE) { return; } #endif /* HAVE_SQL_EXTENDED_FETCH */ - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); RETURN_FALSE; } - if (Z_TYPE_PP(pv_res_arr) != IS_ARRAY) { - array_init(*pv_res_arr); + if (Z_TYPE_P(pv_res_arr) != IS_ARRAY) { + array_init(pv_res_arr); } #ifdef HAVE_SQL_EXTENDED_FETCH @@ -1862,9 +1867,6 @@ PHP_FUNCTION(odbc_fetch_into) result->fetched++; for(i = 0; i < result->numcols; i++) { - MAKE_STD_ZVAL(tmp); - Z_TYPE_P(tmp) = IS_STRING; - Z_STRLEN_P(tmp) = 0; sql_c_type = SQL_C_CHAR; switch(result->values[i].coltype) { @@ -1872,13 +1874,17 @@ PHP_FUNCTION(odbc_fetch_into) case SQL_VARBINARY: case SQL_LONGVARBINARY: if (result->binmode <= 0) { - Z_STRVAL_P(tmp) = STR_EMPTY_ALLOC(); + ZVAL_EMPTY_STRING(&tmp); break; } if (result->binmode == 1) sql_c_type = SQL_C_BINARY; + case SQL_LONGVARCHAR: +#if defined(ODBCVER) && (ODBCVER >= 0x0300) + case SQL_WLONGVARCHAR: +#endif if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) { - Z_STRVAL_P(tmp) = STR_EMPTY_ALLOC(); + ZVAL_EMPTY_STRING(&tmp); break; } @@ -1893,26 +1899,24 @@ PHP_FUNCTION(odbc_fetch_into) RETURN_FALSE; } if (rc == SQL_SUCCESS_WITH_INFO) { - Z_STRLEN_P(tmp) = result->longreadlen; + ZVAL_STRINGL(&tmp, buf, result->longreadlen); } else if (result->values[i].vallen == SQL_NULL_DATA) { - ZVAL_NULL(tmp); + ZVAL_NULL(&tmp); break; } else { - Z_STRLEN_P(tmp) = result->values[i].vallen; + ZVAL_STRINGL(&tmp, buf, result->values[i].vallen); } - Z_STRVAL_P(tmp) = estrndup(buf, Z_STRLEN_P(tmp)); break; default: if (result->values[i].vallen == SQL_NULL_DATA) { - ZVAL_NULL(tmp); + ZVAL_NULL(&tmp); break; } - Z_STRLEN_P(tmp) = result->values[i].vallen; - Z_STRVAL_P(tmp) = estrndup(result->values[i].value,Z_STRLEN_P(tmp)); + ZVAL_STRINGL(&tmp, result->values[i].value, result->values[i].vallen); break; } - zend_hash_index_update(Z_ARRVAL_PP(pv_res_arr), i, &tmp, sizeof(zval *), NULL); + zend_hash_index_update(Z_ARRVAL_P(pv_res_arr), i, &tmp); } if (buf) efree(buf); RETURN_LONG(result->numcols); @@ -1972,7 +1976,7 @@ PHP_FUNCTION(odbc_fetch_row) rownum = pv_row; - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -2015,7 +2019,7 @@ PHP_FUNCTION(odbc_result) int i = 0; RETCODE rc; SQLLEN fieldsize; - zval *pv_res, **pv_field; + zval *pv_res, *pv_field; #ifdef HAVE_SQL_EXTENDED_FETCH SQLULEN crow; SQLUSMALLINT RowStatus[1]; @@ -2024,18 +2028,18 @@ PHP_FUNCTION(odbc_result) field_ind = -1; field = NULL; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rZ", &pv_res, &pv_field) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz", &pv_res, &pv_field) == FAILURE) { return; } - if (Z_TYPE_PP(pv_field) == IS_STRING) { - field = Z_STRVAL_PP(pv_field); + if (Z_TYPE_P(pv_field) == IS_STRING) { + field = Z_STRVAL_P(pv_field); } else { convert_to_long_ex(pv_field); - field_ind = Z_LVAL_PP(pv_field) - 1; + field_ind = Z_LVAL_P(pv_field) - 1; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if ((result->numcols == 0)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -2095,6 +2099,9 @@ PHP_FUNCTION(odbc_result) break; } case SQL_LONGVARCHAR: +#if defined(ODBCVER) && (ODBCVER >= 0x0300) + case SQL_WLONGVARCHAR: +#endif if (IS_SQL_LONG(result->values[field_ind].coltype)) { if (result->longreadlen <= 0) { break; @@ -2132,20 +2139,27 @@ PHP_FUNCTION(odbc_result) } /* Reduce fieldlen by 1 if we have char data. One day we might have binary strings... */ - if (result->values[field_ind].coltype == SQL_LONGVARCHAR) { + if ((result->values[field_ind].coltype == SQL_LONGVARCHAR) +#if defined(ODBCVER) && (ODBCVER >= 0x0300) + || (result->values[field_ind].coltype == SQL_WLONGVARCHAR) +#endif + ) { fieldsize -= 1; } /* Don't duplicate result, saves one emalloc. For SQL_SUCCESS, the length is in vallen. */ - RETURN_STRINGL(field, (rc == SQL_SUCCESS_WITH_INFO) ? fieldsize : result->values[field_ind].vallen, 0); + RETVAL_STRINGL(field, (rc == SQL_SUCCESS_WITH_INFO) ? fieldsize : result->values[field_ind].vallen); + // TODO: avoid dpouble reallocation ??? + efree(field); + return; break; default: if (result->values[field_ind].vallen == SQL_NULL_DATA) { RETURN_NULL(); } else { - RETURN_STRINGL(result->values[field_ind].value, result->values[field_ind].vallen, 1); + RETURN_STRINGL(result->values[field_ind].value, result->values[field_ind].vallen); } break; } @@ -2202,7 +2216,7 @@ PHP_FUNCTION(odbc_result_all) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -2248,6 +2262,9 @@ PHP_FUNCTION(odbc_result_all) } if (result->binmode <= 1) sql_c_type = SQL_C_BINARY; case SQL_LONGVARCHAR: +#if defined(ODBCVER) && (ODBCVER >= 0x0300) + case SQL_WLONGVARCHAR: +#endif if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) { php_printf("<td>Not printable</td>"); @@ -2314,7 +2331,7 @@ PHP_FUNCTION(odbc_free_result) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->values) { for (i = 0; i < result->numcols; i++) { if (result->values[i].value) { @@ -2325,7 +2342,7 @@ PHP_FUNCTION(odbc_free_result) result->values = NULL; } - zend_list_delete(Z_LVAL_P(pv_res)); + zend_list_close(Z_RES_P(pv_res)); RETURN_TRUE; } @@ -2525,11 +2542,11 @@ void odbc_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) try_and_get_another_connection: if (persistent) { - zend_rsrc_list_entry *le; + zend_resource *le; /* the link is not in the persistent list */ - if (zend_hash_find(&EG(persistent_list), hashed_details, hashed_len + 1, (void **) &le) == FAILURE) { - zend_rsrc_list_entry new_le; + if ((le = zend_hash_str_find_ptr(&EG(persistent_list), hashed_details, hashed_len)) == NULL) { + zend_resource new_le; if (ODBCG(max_links) != -1 && ODBCG(num_links) >= ODBCG(max_links)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many open links (%ld)", ODBCG(num_links)); @@ -2547,19 +2564,20 @@ try_and_get_another_connection: RETURN_FALSE; } - Z_TYPE(new_le) = le_pconn; + new_le.type = le_pconn; new_le.ptr = db_conn; - if (zend_hash_update(&EG(persistent_list), hashed_details, hashed_len + 1, &new_le, - sizeof(zend_rsrc_list_entry), NULL) == FAILURE) { + new_le.handle = -1; + if (zend_hash_str_update_mem(&EG(persistent_list), hashed_details, hashed_len, &new_le, + sizeof(zend_resource)) == NULL) { free(db_conn); efree(hashed_details); RETURN_FALSE; } ODBCG(num_persistent)++; ODBCG(num_links)++; - db_conn->id = ZEND_REGISTER_RESOURCE(return_value, db_conn, le_pconn); + db_conn->res = ZEND_REGISTER_RESOURCE(return_value, db_conn, le_pconn); } else { /* found connection */ - if (Z_TYPE_P(le) != le_pconn) { + if (le->type != le_pconn) { RETURN_FALSE; } /* @@ -2580,7 +2598,7 @@ try_and_get_another_connection: d_name, sizeof(d_name), &len); if(ret != SQL_SUCCESS || len == 0) { - zend_hash_del(&EG(persistent_list), hashed_details, hashed_len + 1); + zend_hash_str_del(&EG(persistent_list), hashed_details, hashed_len); /* Commented out to fix a possible double closure error * when working with persistent connections as submitted by * bug #15758 @@ -2592,28 +2610,27 @@ try_and_get_another_connection: } } } - db_conn->id = ZEND_REGISTER_RESOURCE(return_value, db_conn, le_pconn); + db_conn->res = ZEND_REGISTER_RESOURCE(return_value, db_conn, le_pconn); } else { /* non persistent */ - zend_rsrc_list_entry *index_ptr, new_index_ptr; + zend_resource *index_ptr, new_index_ptr; - if (zend_hash_find(&EG(regular_list), hashed_details, hashed_len + 1, (void **) &index_ptr) == SUCCESS) { - int type, conn_id; - void *ptr; + if ((index_ptr = zend_hash_str_find_ptr(&EG(regular_list), hashed_details, hashed_len)) != NULL) { + int conn_id; + zend_resource *p; - if (Z_TYPE_P(index_ptr) != le_index_ptr) { + if (index_ptr->type != le_index_ptr) { RETURN_FALSE; } conn_id = (int)index_ptr->ptr; - ptr = zend_list_find(conn_id, &type); /* check if the connection is still there */ + p = zend_hash_index_find_ptr(&EG(regular_list), conn_id); /* check if the connection is still there */ - if (ptr && (type == le_conn || type == le_pconn)) { - zend_list_addref(conn_id); - Z_LVAL_P(return_value) = conn_id; - Z_TYPE_P(return_value) = IS_RESOURCE; + if (p && p->ptr && (p->type == le_conn || p->type == le_pconn)) { + GC_REFCOUNT(p)++; + RETVAL_RES(p); efree(hashed_details); return; } else { - zend_hash_del(&EG(regular_list), hashed_details, hashed_len + 1); + zend_hash_str_del(&EG(regular_list), hashed_details, hashed_len); } } if (ODBCG(max_links) != -1 && ODBCG(num_links) >= ODBCG(max_links)) { @@ -2626,12 +2643,12 @@ try_and_get_another_connection: efree(hashed_details); RETURN_FALSE; } - db_conn->id = ZEND_REGISTER_RESOURCE(return_value, db_conn, le_conn); - new_index_ptr.ptr = (void *) Z_LVAL_P(return_value); - Z_TYPE(new_index_ptr) = le_index_ptr; + db_conn->res = ZEND_REGISTER_RESOURCE(return_value, db_conn, le_conn); + new_index_ptr.ptr = (void *) Z_RES_HANDLE_P(return_value); + new_index_ptr.type = le_index_ptr; - if (zend_hash_update(&EG(regular_list), hashed_details, hashed_len + 1, (void *) &new_index_ptr, - sizeof(zend_rsrc_list_entry), NULL) == FAILURE) { + if (zend_hash_str_update_mem(&EG(regular_list), hashed_details, hashed_len, (void *) &new_index_ptr, + sizeof(zend_resource)) == NULL) { efree(hashed_details); RETURN_FALSE; /* XXX Free Connection */ @@ -2647,12 +2664,9 @@ try_and_get_another_connection: PHP_FUNCTION(odbc_close) { zval *pv_conn; - void *ptr; + zend_resource *p; odbc_connection *conn; odbc_result *res; - int nument; - int i; - int type; int is_pconn = 0; int found_resource_type = le_conn; @@ -2660,27 +2674,24 @@ PHP_FUNCTION(odbc_close) return; } - conn = (odbc_connection *) zend_fetch_resource(&pv_conn TSRMLS_CC, -1, "ODBC-Link", &found_resource_type, 2, le_conn, le_pconn); + conn = (odbc_connection *) zend_fetch_resource(pv_conn TSRMLS_CC, -1, "ODBC-Link", &found_resource_type, 2, le_conn, le_pconn); if (found_resource_type==le_pconn) { is_pconn = 1; } - nument = zend_hash_next_free_element(&EG(regular_list)); - - for(i = 1; i < nument; i++){ - ptr = zend_list_find(i, &type); - if(ptr && (type == le_result)){ - res = (odbc_result *)ptr; - if(res->conn_ptr == conn){ - zend_list_delete(i); + ZEND_HASH_FOREACH_PTR(&EG(regular_list), p) { + if (p->ptr && (p->type == le_result)) { + res = (odbc_result *)p->ptr; + if (res->conn_ptr == conn) { + zend_list_close(p); } } - } + } ZEND_HASH_FOREACH_END(); - zend_list_delete(Z_LVAL_P(pv_conn)); + zend_list_close(Z_RES_P(pv_conn)); if(is_pconn){ - zend_hash_apply_with_argument(&EG(persistent_list), (apply_func_arg_t) _close_pconn_with_id, (void *) &(Z_LVAL_P(pv_conn)) TSRMLS_CC); + zend_hash_apply_with_argument(&EG(persistent_list), (apply_func_arg_t) _close_pconn_with_res, (void *) Z_RES_P(pv_conn) TSRMLS_CC); } } /* }}} */ @@ -2696,7 +2707,7 @@ PHP_FUNCTION(odbc_num_rows) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pv_res) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); SQLRowCount(result->stmt, &rows); RETURN_LONG(rows); } @@ -2714,7 +2725,7 @@ PHP_FUNCTION(odbc_next_result) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pv_res) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->values) { for(i = 0; i < result->numcols; i++) { @@ -2762,7 +2773,7 @@ PHP_FUNCTION(odbc_num_fields) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &pv_res) == FAILURE) { return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); RETURN_LONG(result->numcols); } /* }}} */ @@ -2779,7 +2790,7 @@ PHP_FUNCTION(odbc_field_name) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -2796,7 +2807,7 @@ PHP_FUNCTION(odbc_field_name) RETURN_FALSE; } - RETURN_STRING(result->values[pv_num - 1].name, 1); + RETURN_STRING(result->values[pv_num - 1].name); } /* }}} */ @@ -2814,7 +2825,7 @@ PHP_FUNCTION(odbc_field_type) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -2832,7 +2843,7 @@ PHP_FUNCTION(odbc_field_type) } SQLColAttributes(result->stmt, (SQLUSMALLINT)pv_num, SQL_COLUMN_TYPE_NAME, tmp, 31, &tmplen, NULL); - RETURN_STRING(tmp,1) + RETURN_STRING(tmp) } /* }}} */ @@ -2865,7 +2876,7 @@ PHP_FUNCTION(odbc_field_num) return; } - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_res, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_res, -1, "ODBC result", le_result); if (result->numcols == 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "No tuples available at this result index"); @@ -2900,7 +2911,7 @@ PHP_FUNCTION(odbc_autocommit) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); if (ZEND_NUM_ARGS() > 1) { rc = SQLSetConnectOption(conn->hdbc, SQL_AUTOCOMMIT, (pv_onoff) ? SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF); @@ -2943,7 +2954,7 @@ static void php_odbc_lasterror(INTERNAL_FUNCTION_PARAMETERS, int mode) { odbc_connection *conn; zval *pv_handle; - char *ptr; + zend_string *ptr; int len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|r", &pv_handle) == FAILURE) { @@ -2957,22 +2968,22 @@ static void php_odbc_lasterror(INTERNAL_FUNCTION_PARAMETERS, int mode) } if (ZEND_NUM_ARGS() == 1) { - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_handle, -1, "ODBC-Link", le_conn, le_pconn); - ptr = ecalloc(len + 1, 1); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_handle, -1, "ODBC-Link", le_conn, le_pconn); + ptr = STR_ALLOC(len + 1, 0); if (mode == 0) { - strlcpy(ptr, conn->laststate, len+1); + strlcpy(ptr->val, conn->laststate, len+1); } else { - strlcpy(ptr, conn->lasterrormsg, len+1); + strlcpy(ptr->val, conn->lasterrormsg, len+1); } } else { - ptr = ecalloc(len + 1, 1); + ptr = STR_ALLOC(len, 0); if (mode == 0) { - strlcpy(ptr, ODBCG(laststate), len+1); + strlcpy(ptr->val, ODBCG(laststate), len+1); } else { - strlcpy(ptr, ODBCG(lasterrormsg), len+1); + strlcpy(ptr->val, ODBCG(lasterrormsg), len+1); } } - RETVAL_STRING(ptr, 0); + RETVAL_STR(ptr); } /* }}} */ @@ -3014,7 +3025,7 @@ PHP_FUNCTION(odbc_setoption) switch (pv_which) { case 1: /* SQLSetConnectOption */ - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_handle, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_handle, -1, "ODBC-Link", le_conn, le_pconn); if (conn->persistent) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to set option for persistent connection"); @@ -3027,7 +3038,7 @@ PHP_FUNCTION(odbc_setoption) } break; case 2: /* SQLSetStmtOption */ - ZEND_FETCH_RESOURCE(result, odbc_result *, &pv_handle, -1, "ODBC result", le_result); + ZEND_FETCH_RESOURCE(result, odbc_result *, pv_handle, -1, "ODBC result", le_result); rc = SQLSetStmtOption(result->stmt, (unsigned short) pv_opt, pv_val); @@ -3066,7 +3077,7 @@ PHP_FUNCTION(odbc_tables) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3133,7 +3144,7 @@ PHP_FUNCTION(odbc_columns) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3203,7 +3214,7 @@ PHP_FUNCTION(odbc_columnprivileges) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3279,7 +3290,7 @@ PHP_FUNCTION(odbc_foreignkeys) EMPTY_TO_NULL(ftable); #endif - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3345,7 +3356,7 @@ PHP_FUNCTION(odbc_gettypeinfo) data_type = (SQLSMALLINT) pv_data_type; - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3402,7 +3413,7 @@ PHP_FUNCTION(odbc_primarykeys) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3468,7 +3479,7 @@ PHP_FUNCTION(odbc_procedurecolumns) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3535,7 +3546,7 @@ PHP_FUNCTION(odbc_procedures) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3603,7 +3614,7 @@ PHP_FUNCTION(odbc_specialcolumns) scope = (SQLUSMALLINT) vscope; nullable = (SQLUSMALLINT) vnullable; - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3672,7 +3683,7 @@ PHP_FUNCTION(odbc_statistics) unique = (SQLUSMALLINT) vunique; reserved = (SQLUSMALLINT) vreserved; - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); @@ -3735,7 +3746,7 @@ PHP_FUNCTION(odbc_tableprivileges) return; } - ZEND_FETCH_RESOURCE2(conn, odbc_connection *, &pv_conn, -1, "ODBC-Link", le_conn, le_pconn); + ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); result = (odbc_result *)ecalloc(1, sizeof(odbc_result)); diff --git a/ext/odbc/php_odbc_includes.h b/ext/odbc/php_odbc_includes.h index a9b0acfa0c..8e9eec0f8f 100644 --- a/ext/odbc/php_odbc_includes.h +++ b/ext/odbc/php_odbc_includes.h @@ -115,6 +115,7 @@ PHP_FUNCTION(solid_fetch_prev); #endif #define ODBC_TYPE "unixODBC" +#undef ODBCVER #include <sql.h> #include <sqlext.h> #define HAVE_SQL_EXTENDED_FETCH 1 @@ -227,7 +228,7 @@ typedef struct odbc_connection { ODBC_SQL_CONN_T hdbc; char laststate[6]; char lasterrormsg[SQL_MAX_MESSAGE_LENGTH]; - int id; + zend_resource *res; int persistent; } odbc_connection; @@ -284,7 +285,11 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC); void odbc_sql_error(ODBC_SQL_ERROR_PARAMS); +#if defined(ODBCVER) && (ODBCVER >= 0x0300) +#define IS_SQL_LONG(x) (x == SQL_LONGVARBINARY || x == SQL_LONGVARCHAR || x == SQL_WLONGVARCHAR) +#else #define IS_SQL_LONG(x) (x == SQL_LONGVARBINARY || x == SQL_LONGVARCHAR) +#endif #define IS_SQL_BINARY(x) (x == SQL_BINARY || x == SQL_VARBINARY || x == SQL_LONGVARBINARY) #ifdef ZTS diff --git a/ext/odbc/tests/bug60616.phpt b/ext/odbc/tests/bug60616.phpt new file mode 100644 index 0000000000..937049a9b8 --- /dev/null +++ b/ext/odbc/tests/bug60616.phpt @@ -0,0 +1,69 @@ +--TEST-- +odbc_exec(): Getting accurate unicode data from query +--SKIPIF-- +<?php include 'skipif.inc'; ?> +--FILE-- +<?php + +// Test strings +mb_internal_encoding("EUC_JP"); +$euc_jp_base64 = 'pdal6aWkpcCl676uyqo='; +$euc_jp = base64_decode($euc_jp_base64); +$ascii = 'abcdefghijklmnopqrstuvwxyz;]=#0123456789'; + +include 'config.inc'; +ini_set("odbc.defaultlrl", 4); // Set artifically low + +$conn = odbc_connect($dsn, $user, $pass); + +odbc_exec($conn, 'CREATE DATABASE odbcTEST ENCODING=\'EUC_JP\''); + +odbc_exec($conn, 'CREATE TABLE FOO (ID INT, CHAR_COL CHAR(200), VARCHAR_COL VARCHAR(200), TEXT_COL TEXT)'); + +odbc_exec($conn, "INSERT INTO FOO(ID, CHAR_COL, VARCHAR_COL, TEXT_COL) VALUES (1, '$euc_jp', '$euc_jp', '$euc_jp')"); +odbc_exec($conn, "INSERT INTO FOO(ID, CHAR_COL, VARCHAR_COL, TEXT_COL) VALUES (2, '$ascii', '$ascii', '$ascii')"); + +$res = odbc_exec($conn, 'SELECT * FROM FOO ORDER BY ID ASC'); + +while(odbc_fetch_row($res)) { + $char_col = odbc_result($res, "CHAR_COL"); + $varchar_col = odbc_result($res, "VARCHAR_COL"); + $id = odbc_result($res, "ID"); + $text_col = ""; + while (($chunk=odbc_result($res, "TEXT_COL")) !== false) { + $text_col .= $chunk; + } + + if ($id == 1) { + $euc_jp_check = $euc_jp . str_repeat(" ", (200 - mb_strlen($euc_jp))); + if (strcmp($char_col, $euc_jp_check) == 0 && strcmp($varchar_col, $euc_jp) == 0 && + strcmp($text_col, $euc_jp) == 0) { + print "EUC-JP matched\n"; + } else { + print "EUC-JP mismatched\n"; + } + } else { + $ascii_check = $ascii . str_repeat(" ", (200 - strlen($ascii))); + if (strcmp($char_col, $ascii_check) == 0 && strcmp($varchar_col, $ascii) == 0 && + strcmp($text_col, $ascii) == 0) { + print "ASCII matched\n"; + } else { + print "ASCII mismatched\n"; + } + } +} + +?> +--EXPECT-- +EUC-JP matched +ASCII matched +--CLEAN-- +<?php +include 'config.inc'; + +$conn = odbc_connect($dsn, $user, $pass); + +odbc_exec($conn, 'DROP TABLE FOO'); +odbc_exec($conn, 'DROP DATABASE odbcTEST'); + +?> diff --git a/ext/odbc/tests/odbc_columns_001.phpt b/ext/odbc/tests/odbc_columns_001.phpt index f6da78e8e7..fbbc3e2e03 100644 --- a/ext/odbc/tests/odbc_columns_001.phpt +++ b/ext/odbc/tests/odbc_columns_001.phpt @@ -24,9 +24,5 @@ resource(%d) of type (odbc result) bool(false) resource(%d) of type (odbc result) bool(false) - -Warning: odbc_columns(): SQL error: Failed to fetch error message, SQL state HY000 in SQLColumns in %s on line %d +resource(%d) of type (odbc result) bool(false) - -Warning: odbc_fetch_row() expects parameter 1 to be resource, boolean given in %s on line %d -NULL diff --git a/ext/odbc/tests/odbc_free_result_001.phpt b/ext/odbc/tests/odbc_free_result_001.phpt index 4fcd5cda2c..812ae7778d 100644 --- a/ext/odbc/tests/odbc_free_result_001.phpt +++ b/ext/odbc/tests/odbc_free_result_001.phpt @@ -12,7 +12,7 @@ $conn = odbc_connect($dsn, $user, $pass); odbc_exec($conn, 'CREATE DATABASE odbcTEST'); odbc_exec($conn, 'CREATE TABLE FOO (TEST INT)'); -odbc_exec($conn, 'ALTER TABLE FOO ADD PRIMARY KEY FOO(TEST)'); +odbc_exec($conn, 'ALTER TABLE FOO ADD PRIMARY KEY (TEST)'); odbc_exec($conn, 'INSERT INTO FOO VALUES (1)'); odbc_exec($conn, 'INSERT INTO FOO VALUES (2)'); @@ -43,8 +43,8 @@ bool(false) Warning: odbc_free_result() expects parameter 1 to be resource, null given in %s on line %d NULL -Warning: odbc_fetch_row(): %d is not a valid ODBC result resource in %s on line %d +Warning: odbc_fetch_row(): supplied resource is not a valid ODBC result resource in %s on line %d bool(false) -Warning: odbc_result(): %d is not a valid ODBC result resource in %s on line %d +Warning: odbc_result(): supplied resource is not a valid ODBC result resource in %s on line %d bool(false) diff --git a/ext/opcache/Optimizer/compact_literals.c b/ext/opcache/Optimizer/compact_literals.c index b97fda9ab1..f13bf50699 100644 --- a/ext/opcache/Optimizer/compact_literals.c +++ b/ext/opcache/Optimizer/compact_literals.c @@ -273,7 +273,7 @@ static void optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_c for (i = 0; i < op_array->last_literal; i++) { zval zv = op_array->literals[i].constant; - use_copy = zend_make_printable_zval(&op_array->literals[i].constant, &zv); + use_copy = zend_make_printable_zval(&op_array->literals[i].constant, &zv TSRMLS_CC); fprintf(stderr, "Literal %d, val (%d):%s\n", i, Z_STRLEN(zv), Z_STRVAL(zv)); if (use_copy) { zval_dtor(&zv); @@ -454,7 +454,7 @@ static void optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_c for (i = 0; i < op_array->last_literal; i++) { zval zv = op_array->literals[i].constant; - use_copy = zend_make_printable_zval(&op_array->literals[i].constant, &zv); + use_copy = zend_make_printable_zval(&op_array->literals[i].constant, &zv TSRMLS_CC); fprintf(stderr, "Literal %d, val (%d):%s\n", i, Z_STRLEN(zv), Z_STRVAL(zv)); if (use_copy) { zval_dtor(&zv); diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index e4e1f74acc..fd711cb9ee 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -110,9 +110,6 @@ int zend_optimizer_add_literal(zend_op_array *op_array, zval *zv TSRMLS_DC) int i = op_array->last_literal; op_array->last_literal++; op_array->literals = (zval*)erealloc(op_array->literals, op_array->last_literal * sizeof(zval)); - if (Z_TYPE_P(zv) == IS_ARRAY) { - zend_make_immutable_array(zv TSRMLS_CC); - } ZVAL_COPY_VALUE(&op_array->literals[i], zv); Z_CACHE_SLOT(op_array->literals[i]) = -1; //??? Z_SET_REFCOUNT(op_array->literals[i].constant, 2); diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index df36b55b62..6228c827c9 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -719,7 +719,7 @@ static accel_time_t zend_get_file_handle_timestamp_win(zend_file_handle *file_ha ftime /= 10000000L; if (size) { - *size = (size_t)(((unsigned __int64)fdata.nFileSizeHigh) << 32 + (unsigned __int64)fdata.nFileSizeLow); + *size = (size_t)((((unsigned __int64)fdata.nFileSizeHigh) << 32) + (unsigned __int64)fdata.nFileSizeLow); } return (accel_time_t)ftime; } @@ -1650,6 +1650,7 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type T /* If script was not found or invalidated by validate_timestamps */ if (!persistent_script) { + zend_uint old_const_num = zend_hash_next_free_element(EG(zend_constants)); zend_op_array *op_array; /* Cache miss.. */ @@ -1674,6 +1675,14 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type T SHM_PROTECT(); return op_array; } + if (from_shared_memory) { + /* Delete immutable arrays moved into SHM */ + zend_uint new_const_num = zend_hash_next_free_element(EG(zend_constants)); + while (new_const_num > old_const_num) { + new_const_num--; + zend_hash_index_del(EG(zend_constants), new_const_num); + } + } } else { #if !ZEND_WIN32 diff --git a/ext/opcache/zend_accelerator_util_funcs.c b/ext/opcache/zend_accelerator_util_funcs.c index 0c3b808c63..7c59d01254 100644 --- a/ext/opcache/zend_accelerator_util_funcs.c +++ b/ext/opcache/zend_accelerator_util_funcs.c @@ -988,7 +988,6 @@ zend_op_array* zend_accel_load_script(zend_persistent_script *persistent_script, if (zend_hash_num_elements(&persistent_script->class_table) > 0) { zend_accel_class_hash_copy(CG(class_table), &persistent_script->class_table, NULL TSRMLS_CC); } - free_persistent_script(persistent_script, 0); /* free only hashes */ } #if ZEND_EXTENSION_API_NO >= PHP_5_3_X_API_NO @@ -1000,6 +999,10 @@ zend_op_array* zend_accel_load_script(zend_persistent_script *persistent_script, } #endif + if (!from_shared_memory) { + free_persistent_script(persistent_script, 0); /* free only hashes */ + } + return op_array; } diff --git a/ext/opcache/zend_persist.c b/ext/opcache/zend_persist.c index 09bca802c6..d703235a5c 100644 --- a/ext/opcache/zend_persist.c +++ b/ext/opcache/zend_persist.c @@ -86,11 +86,18 @@ static void zend_hash_persist(HashTable *ht, zend_persist_func_t pPersistElement return; } if (ht->u.flags & HASH_FLAG_PACKED) { - zend_accel_store(ht->arData, sizeof(Bucket) * ht->nTableSize); + zend_accel_store(ht->arData, sizeof(Bucket) * ht->nNumUsed); ht->arHash = (zend_uint*)&uninitialized_bucket; } else { - zend_accel_store(ht->arData, (sizeof(Bucket) + sizeof(zend_uint)) * ht->nTableSize); - ht->arHash = (zend_uint*)(ht->arData + ht->nTableSize); + Bucket *d = (Bucket*)ZCG(mem); + zend_uint *h = (zend_uint*)(d + ht->nNumUsed); + + ZCG(mem) = (void*)(h + ht->nTableSize); + memcpy(d, ht->arData, sizeof(Bucket) * ht->nNumUsed); + memcpy(h, ht->arHash, sizeof(zend_uint) * ht->nTableSize); + efree(ht->arData); + ht->arData = d; + ht->arHash = h; } for (idx = 0; idx < ht->nNumUsed; idx++) { p = ht->arData + idx; @@ -116,11 +123,17 @@ static void zend_hash_persist_immutable(HashTable *ht TSRMLS_DC) return; } if (ht->u.flags & HASH_FLAG_PACKED) { - ht->arData = zend_accel_memdup(ht->arData, sizeof(Bucket) * ht->nTableSize); + ht->arData = zend_accel_memdup(ht->arData, sizeof(Bucket) * ht->nNumUsed); ht->arHash = (zend_uint*)&uninitialized_bucket; } else { - ht->arData = zend_accel_memdup(ht->arData, (sizeof(Bucket) + sizeof(zend_uint)) * ht->nTableSize); - ht->arHash = (zend_uint*)(ht->arData + ht->nTableSize); + Bucket *d = (Bucket*)ZCG(mem); + zend_uint *h = (zend_uint*)(d + ht->nNumUsed); + + ZCG(mem) = (void*)(h + ht->nTableSize); + memcpy(d, ht->arData, sizeof(Bucket) * ht->nNumUsed); + memcpy(h, ht->arHash, sizeof(zend_uint) * ht->nTableSize); + ht->arData = d; + ht->arHash = h; } for (idx = 0; idx < ht->nNumUsed; idx++) { p = ht->arData + idx; @@ -195,6 +208,7 @@ static void zend_persist_zval(zval *z TSRMLS_DC) new_ptr = zend_shared_alloc_get_xlat_entry(Z_ARR_P(z)); if (new_ptr) { Z_ARR_P(z) = new_ptr; + Z_TYPE_FLAGS_P(z) = IS_TYPE_IMMUTABLE; } else { if (Z_IMMUTABLE_P(z)) { Z_ARR_P(z) = zend_accel_memdup(Z_ARR_P(z), sizeof(zend_array)); @@ -202,6 +216,10 @@ static void zend_persist_zval(zval *z TSRMLS_DC) } else { zend_accel_store(Z_ARR_P(z), sizeof(zend_array)); zend_hash_persist(Z_ARRVAL_P(z), zend_persist_zval TSRMLS_CC); + /* make immutable array */ + Z_TYPE_FLAGS_P(z) = IS_TYPE_IMMUTABLE; + GC_REFCOUNT(Z_COUNTED_P(z)) = 2; + Z_ARRVAL_P(z)->u.flags &= ~HASH_FLAG_APPLY_PROTECTION; } } break; @@ -252,6 +270,7 @@ static void zend_persist_zval_const(zval *z TSRMLS_DC) new_ptr = zend_shared_alloc_get_xlat_entry(Z_ARR_P(z)); if (new_ptr) { Z_ARR_P(z) = new_ptr; + Z_TYPE_FLAGS_P(z) = IS_TYPE_IMMUTABLE; } else { if (Z_IMMUTABLE_P(z)) { Z_ARR_P(z) = zend_accel_memdup(Z_ARR_P(z), sizeof(zend_array)); @@ -259,6 +278,10 @@ static void zend_persist_zval_const(zval *z TSRMLS_DC) } else { zend_accel_store(Z_ARR_P(z), sizeof(zend_array)); zend_hash_persist(Z_ARRVAL_P(z), zend_persist_zval TSRMLS_CC); + /* make immutable array */ + Z_TYPE_FLAGS_P(z) = IS_TYPE_IMMUTABLE; + GC_REFCOUNT(Z_COUNTED_P(z)) = 2; + Z_ARRVAL_P(z)->u.flags &= ~HASH_FLAG_APPLY_PROTECTION; } } break; diff --git a/ext/opcache/zend_persist_calc.c b/ext/opcache/zend_persist_calc.c index dc7f96727c..f26a6fe195 100644 --- a/ext/opcache/zend_persist_calc.c +++ b/ext/opcache/zend_persist_calc.c @@ -63,9 +63,9 @@ static uint zend_hash_persist_calc(HashTable *ht, uint (*pPersistElement)(zval * RETURN_SIZE(); } if (ht->u.flags & HASH_FLAG_PACKED) { - ADD_DUP_SIZE(ht->arData, sizeof(Bucket) * ht->nTableSize); + ADD_SIZE(sizeof(Bucket) * ht->nNumUsed); } else { - ADD_DUP_SIZE(ht->arData, (sizeof(Bucket) + sizeof(zend_uint)) * ht->nTableSize); + ADD_SIZE(sizeof(Bucket) * ht->nNumUsed + sizeof(zend_uint) * ht->nTableSize); } for (idx = 0; idx < ht->nNumUsed; idx++) { diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index ed13bae12c..1d75ff08fc 100755 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -838,13 +838,13 @@ static int add_oid_section(struct php_x509_request * req TSRMLS_DC) /* {{{ */ req->config_filename, req->var, req->req_config TSRMLS_CC) == FAILURE) return FAILURE #define SET_OPTIONAL_STRING_ARG(key, varname, defval) \ - if (optional_args && (item = zend_hash_str_find(Z_ARRVAL_P(optional_args), key, sizeof(key)-1)) != NULL) \ + if (optional_args && (item = zend_hash_str_find(Z_ARRVAL_P(optional_args), key, sizeof(key)-1)) != NULL && Z_TYPE_P(item) == IS_STRING) \ varname = Z_STRVAL_P(item); \ else \ varname = defval #define SET_OPTIONAL_LONG_ARG(key, varname, defval) \ - if (optional_args && (item = zend_hash_str_find(Z_ARRVAL_P(optional_args), key, sizeof(key)-1)) != NULL) \ + if (optional_args && (item = zend_hash_str_find(Z_ARRVAL_P(optional_args), key, sizeof(key)-1)) != NULL && Z_TYPE_P(item) == IS_LONG) \ varname = Z_LVAL_P(item); \ else \ varname = defval @@ -904,7 +904,8 @@ static int php_openssl_parse_config(struct php_x509_request * req, zval * option } } - if (req->priv_key_encrypt && optional_args && (item = zend_hash_str_find(Z_ARRVAL_P(optional_args), "encrypt_key_cipher", sizeof("encrypt_key_cipher")-1)) != NULL) { + if (req->priv_key_encrypt && optional_args && (item = zend_hash_str_find(Z_ARRVAL_P(optional_args), "encrypt_key_cipher", sizeof("encrypt_key_cipher")-1)) != NULL + && Z_TYPE_P(item) == IS_LONG) { long cipher_algo = Z_LVAL_P(item); const EVP_CIPHER* cipher = php_openssl_get_evp_cipher_from_algo(cipher_algo); if (cipher == NULL) { @@ -1759,77 +1760,30 @@ PHP_FUNCTION(openssl_x509_export) } /* }}} */ -static int php_openssl_x509_fingerprint(X509 *peer, const char *method, zend_bool raw, char **out, int *out_len TSRMLS_DC) +zend_string* php_openssl_x509_fingerprint(X509 *peer, const char *method, zend_bool raw TSRMLS_DC) { unsigned char md[EVP_MAX_MD_SIZE]; const EVP_MD *mdtype; unsigned int n; + zend_string *ret; if (!(mdtype = EVP_get_digestbyname(method))) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown signature algorithm"); - return FAILURE; + return NULL; } else if (!X509_digest(peer, mdtype, md, &n)) { php_error_docref(NULL TSRMLS_CC, E_ERROR, "Could not generate signature"); - return FAILURE; + return NULL; } if (raw) { - *out_len = n; - *out = estrndup((char *) md, n); + ret = STR_INIT((char*)md, n, 0); } else { - *out_len = n * 2; - *out = emalloc(*out_len + 1); - - make_digest_ex(*out, md, n); - } - - return SUCCESS; -} - -static int php_x509_fingerprint_cmp(X509 *peer, const char *method, const char *expected TSRMLS_DC) -{ - char *fingerprint; - int fingerprint_len; - int result = -1; - - if (php_openssl_x509_fingerprint(peer, method, 0, &fingerprint, &fingerprint_len TSRMLS_CC) == SUCCESS) { - result = strcmp(expected, fingerprint); - efree(fingerprint); + ret = STR_ALLOC(n * 2, 0); + make_digest_ex(ret->val, md, n); + ret->val[n * 2] = '\0'; } - return result; -} - -zend_bool php_x509_fingerprint_match(X509 *peer, zval *val TSRMLS_DC) -{ - if (Z_TYPE_P(val) == IS_STRING) { - const char *method = NULL; - - switch (Z_STRLEN_P(val)) { - case 32: - method = "md5"; - break; - - case 40: - method = "sha1"; - break; - } - - return method && php_x509_fingerprint_cmp(peer, method, Z_STRVAL_P(val) TSRMLS_CC) == 0; - } else if (Z_TYPE_P(val) == IS_ARRAY) { - zval *current; - zend_string *key; - - ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(val), key, current) { - if (Z_TYPE_P(current) == IS_STRING - && php_x509_fingerprint_cmp(peer, key->val, Z_STRVAL_P(current) TSRMLS_CC) != 0 - ) { - return 0; - } - } ZEND_HASH_FOREACH_END(); - return 1; - } - return 0; + return ret; } PHP_FUNCTION(openssl_x509_fingerprint) @@ -1840,9 +1794,7 @@ PHP_FUNCTION(openssl_x509_fingerprint) zend_bool raw_output = 0; char *method = "sha1"; int method_len; - - char *fingerprint; - int fingerprint_len; + zend_string *fingerprint; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|sb", &zcert, &method, &method_len, &raw_output) == FAILURE) { return; @@ -1854,10 +1806,9 @@ PHP_FUNCTION(openssl_x509_fingerprint) RETURN_FALSE; } - if (php_openssl_x509_fingerprint(cert, method, raw_output, &fingerprint, &fingerprint_len TSRMLS_CC) == SUCCESS) { - // TODO: avoid reallocation ??? - RETVAL_STRINGL(fingerprint, fingerprint_len); - efree(fingerprint); + fingerprint = php_openssl_x509_fingerprint(cert, method, raw_output TSRMLS_CC); + if (fingerprint) { + RETVAL_STR(fingerprint); } else { RETVAL_FALSE; } @@ -2435,7 +2386,7 @@ PHP_FUNCTION(openssl_pkcs12_export_to_file) } /* parse extra config from args array, promote this to an extra function */ - if (args && (item = zend_hash_str_find(Z_ARRVAL_P(args), "friendly_name", sizeof("friendly_name")-1)) != NULL) + if (args && (item = zend_hash_str_find(Z_ARRVAL_P(args), "friendly_name", sizeof("friendly_name")-1)) != NULL && Z_TYPE_P(item) == IS_STRING) friendly_name = Z_STRVAL_P(item); /* certpbe (default RC2-40) keypbe (default 3DES) @@ -2513,7 +2464,7 @@ PHP_FUNCTION(openssl_pkcs12_export) } /* parse extra config from args array, promote this to an extra function */ - if (args && (item = zend_hash_str_find(Z_ARRVAL_P(args), "friendly_name", sizeof("friendly_name")-1)) != NULL) + if (args && (item = zend_hash_str_find(Z_ARRVAL_P(args), "friendly_name", sizeof("friendly_name")-1)) != NULL && Z_TYPE_P(item) == IS_STRING) friendly_name = Z_STRVAL_P(item); if (args && (item = zend_hash_str_find(Z_ARRVAL_P(args), "extracerts", sizeof("extracerts")-1)) != NULL) @@ -3503,12 +3454,10 @@ static int php_openssl_is_private_key(EVP_PKEY* pkey TSRMLS_DC) #define OPENSSL_PKEY_GET_BN(_type, _name) do { \ if (pkey->pkey._type->_name != NULL) { \ int len = BN_num_bytes(pkey->pkey._type->_name); \ - char *str = emalloc(len + 1); \ - BN_bn2bin(pkey->pkey._type->_name, (unsigned char*)str); \ - str[len] = 0; \ - /* TODO: avoid reallocation ??? */ \ - add_assoc_stringl(&_type, #_name, str, len); \ - efree(str); \ + zend_string *str = STR_ALLOC(len, 0); \ + BN_bn2bin(pkey->pkey._type->_name, (unsigned char*)str->val); \ + str->val[len] = 0; \ + add_assoc_str(&_type, #_name, str); \ } \ } while (0) @@ -3922,7 +3871,7 @@ PHP_FUNCTION(openssl_pbkdf2) char *password; int password_len; char *salt; int salt_len; char *method; int method_len = 0; - unsigned char *out_buffer; + zend_string *out_buffer; const EVP_MD *digest; @@ -3949,15 +3898,13 @@ PHP_FUNCTION(openssl_pbkdf2) RETURN_FALSE; } - out_buffer = emalloc(key_length + 1); - out_buffer[key_length] = '\0'; + out_buffer = STR_ALLOC(key_length, 0); - if (PKCS5_PBKDF2_HMAC(password, password_len, (unsigned char *)salt, salt_len, iterations, digest, key_length, out_buffer) == 1) { - // TODO: avoid reallocation ??? - RETVAL_STRINGL((char *)out_buffer, key_length); - efree(out_buffer); + if (PKCS5_PBKDF2_HMAC(password, password_len, (unsigned char *)salt, salt_len, iterations, digest, key_length, (unsigned char*)out_buffer->val) == 1) { + out_buffer->val[key_length] = 0; + RETURN_STR(out_buffer); } else { - efree(out_buffer); + STR_RELEASE(out_buffer); RETURN_FALSE; } } @@ -4381,7 +4328,7 @@ PHP_FUNCTION(openssl_private_encrypt) zval *key, *crypted; EVP_PKEY *pkey; int cryptedlen; - unsigned char *cryptedbuf = NULL; + zend_string *cryptedbuf = NULL; int successful = 0; zend_resource *keyresource = NULL; char * data; @@ -4401,14 +4348,14 @@ PHP_FUNCTION(openssl_private_encrypt) } cryptedlen = EVP_PKEY_size(pkey); - cryptedbuf = emalloc(cryptedlen + 1); + cryptedbuf = STR_ALLOC(cryptedlen, 0); switch (pkey->type) { case EVP_PKEY_RSA: case EVP_PKEY_RSA2: successful = (RSA_private_encrypt(data_len, (unsigned char *)data, - cryptedbuf, + (unsigned char *)cryptedbuf->val, pkey->pkey.rsa, padding) == cryptedlen); break; @@ -4418,15 +4365,13 @@ PHP_FUNCTION(openssl_private_encrypt) if (successful) { zval_dtor(crypted); - cryptedbuf[cryptedlen] = '\0'; - // TODO: avoid reallocation ??? - ZVAL_STRINGL(crypted, (char *)cryptedbuf, cryptedlen); - efree(cryptedbuf); + cryptedbuf->val[cryptedlen] = '\0'; + ZVAL_STR(crypted, cryptedbuf); cryptedbuf = NULL; RETVAL_TRUE; } if (cryptedbuf) { - efree(cryptedbuf); + STR_RELEASE(cryptedbuf); } if (keyresource == NULL) { EVP_PKEY_free(pkey); @@ -4441,7 +4386,7 @@ PHP_FUNCTION(openssl_private_decrypt) zval *key, *crypted; EVP_PKEY *pkey; int cryptedlen; - unsigned char *cryptedbuf = NULL; + zend_string *cryptedbuf = NULL; unsigned char *crypttemp; int successful = 0; long padding = RSA_PKCS1_PADDING; @@ -4472,8 +4417,8 @@ PHP_FUNCTION(openssl_private_decrypt) pkey->pkey.rsa, padding); if (cryptedlen != -1) { - cryptedbuf = emalloc(cryptedlen + 1); - memcpy(cryptedbuf, crypttemp, cryptedlen); + cryptedbuf = STR_ALLOC(cryptedlen, 0); + memcpy(cryptedbuf->val, crypttemp, cryptedlen); successful = 1; } break; @@ -4485,10 +4430,8 @@ PHP_FUNCTION(openssl_private_decrypt) if (successful) { zval_dtor(crypted); - cryptedbuf[cryptedlen] = '\0'; - // TODO: avoid reallocation ??? - ZVAL_STRINGL(crypted, (char *)cryptedbuf, cryptedlen); - efree(cryptedbuf); + cryptedbuf->val[cryptedlen] = '\0'; + ZVAL_STR(crypted, cryptedbuf); cryptedbuf = NULL; RETVAL_TRUE; } @@ -4497,7 +4440,7 @@ PHP_FUNCTION(openssl_private_decrypt) EVP_PKEY_free(pkey); } if (cryptedbuf) { - efree(cryptedbuf); + STR_RELEASE(cryptedbuf); } } /* }}} */ @@ -4509,7 +4452,7 @@ PHP_FUNCTION(openssl_public_encrypt) zval *key, *crypted; EVP_PKEY *pkey; int cryptedlen; - unsigned char *cryptedbuf; + zend_string *cryptedbuf; int successful = 0; zend_resource *keyresource = NULL; long padding = RSA_PKCS1_PADDING; @@ -4527,14 +4470,14 @@ PHP_FUNCTION(openssl_public_encrypt) } cryptedlen = EVP_PKEY_size(pkey); - cryptedbuf = emalloc(cryptedlen + 1); + cryptedbuf = STR_ALLOC(cryptedlen, 0); switch (pkey->type) { case EVP_PKEY_RSA: case EVP_PKEY_RSA2: successful = (RSA_public_encrypt(data_len, (unsigned char *)data, - cryptedbuf, + (unsigned char *)cryptedbuf->val, pkey->pkey.rsa, padding) == cryptedlen); break; @@ -4545,10 +4488,8 @@ PHP_FUNCTION(openssl_public_encrypt) if (successful) { zval_dtor(crypted); - cryptedbuf[cryptedlen] = '\0'; - // TODO: avoid reallocation ??? - ZVAL_STRINGL(crypted, (char *)cryptedbuf, cryptedlen); - efree(cryptedbuf); + cryptedbuf->val[cryptedlen] = '\0'; + ZVAL_STR(crypted, cryptedbuf); cryptedbuf = NULL; RETVAL_TRUE; } @@ -4556,7 +4497,7 @@ PHP_FUNCTION(openssl_public_encrypt) EVP_PKEY_free(pkey); } if (cryptedbuf) { - efree(cryptedbuf); + STR_RELEASE(cryptedbuf); } } /* }}} */ @@ -4568,7 +4509,7 @@ PHP_FUNCTION(openssl_public_decrypt) zval *key, *crypted; EVP_PKEY *pkey; int cryptedlen; - unsigned char *cryptedbuf = NULL; + zend_string *cryptedbuf = NULL; unsigned char *crypttemp; int successful = 0; zend_resource *keyresource = NULL; @@ -4599,8 +4540,8 @@ PHP_FUNCTION(openssl_public_decrypt) pkey->pkey.rsa, padding); if (cryptedlen != -1) { - cryptedbuf = emalloc(cryptedlen + 1); - memcpy(cryptedbuf, crypttemp, cryptedlen); + cryptedbuf = STR_ALLOC(cryptedlen, 0); + memcpy(cryptedbuf->val, crypttemp, cryptedlen); successful = 1; } break; @@ -4614,16 +4555,14 @@ PHP_FUNCTION(openssl_public_decrypt) if (successful) { zval_dtor(crypted); - cryptedbuf[cryptedlen] = '\0'; - // TODO: avoid reallocation ??? - ZVAL_STRINGL(crypted, (char *)cryptedbuf, cryptedlen); - efree(cryptedbuf); + cryptedbuf->val[cryptedlen] = '\0'; + ZVAL_STR(crypted, cryptedbuf); cryptedbuf = NULL; RETVAL_TRUE; } if (cryptedbuf) { - efree(cryptedbuf); + STR_RELEASE(cryptedbuf); } if (keyresource == NULL) { EVP_PKEY_free(pkey); @@ -4657,8 +4596,8 @@ PHP_FUNCTION(openssl_sign) { zval *key, *signature; EVP_PKEY *pkey; - int siglen; - unsigned char *sigbuf; + unsigned int siglen; + zend_string *sigbuf; zend_resource *keyresource = NULL; char * data; int data_len; @@ -4693,16 +4632,15 @@ PHP_FUNCTION(openssl_sign) } siglen = EVP_PKEY_size(pkey); - sigbuf = emalloc(siglen + 1); + sigbuf = STR_ALLOC(siglen, 0); EVP_SignInit(&md_ctx, mdtype); EVP_SignUpdate(&md_ctx, data, data_len); - if (EVP_SignFinal (&md_ctx, sigbuf,(unsigned int *)&siglen, pkey)) { + if (EVP_SignFinal (&md_ctx, (unsigned char*)sigbuf->val, &siglen, pkey)) { zval_dtor(signature); - sigbuf[siglen] = '\0'; - // TODO: avoid reallocation ??? - ZVAL_STRINGL(signature, (char *)sigbuf, siglen); - efree(sigbuf); + sigbuf->val[siglen] = '\0'; + sigbuf->len = siglen; + ZVAL_STR(signature, sigbuf); RETVAL_TRUE; } else { efree(sigbuf); @@ -4867,7 +4805,8 @@ PHP_FUNCTION(openssl_seal) zval_dtor(*ivec); if (ivlen) { iv[ivlen] = '\0'; - ZVAL_STRINGL(*ivec, erealloc(iv, ivlen + 1), ivlen, 0); + ZVAL_STRINGL(*ivec, iv, ivlen); + efree(iv); } else { ZVAL_EMPTY_STRING(*ivec); } @@ -5009,8 +4948,8 @@ PHP_FUNCTION(openssl_digest) int data_len, method_len; const EVP_MD *mdtype; EVP_MD_CTX md_ctx; - int siglen; - unsigned char *sigbuf; + unsigned int siglen; + zend_string *sigbuf; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|b", &data, &data_len, &method, &method_len, &raw_output) == FAILURE) { return; @@ -5022,28 +4961,26 @@ PHP_FUNCTION(openssl_digest) } siglen = EVP_MD_size(mdtype); - sigbuf = emalloc(siglen + 1); + sigbuf = STR_ALLOC(siglen, 0); EVP_DigestInit(&md_ctx, mdtype); EVP_DigestUpdate(&md_ctx, (unsigned char *)data, data_len); - if (EVP_DigestFinal (&md_ctx, (unsigned char *)sigbuf, (unsigned int *)&siglen)) { + if (EVP_DigestFinal (&md_ctx, (unsigned char *)sigbuf->val, &siglen)) { if (raw_output) { - sigbuf[siglen] = '\0'; - // TODO: avoid reallocation ??? - RETVAL_STRINGL((char *)sigbuf, siglen); - efree(sigbuf); + sigbuf->val[siglen] = '\0'; + sigbuf->len = siglen; + RETVAL_STR(sigbuf); } else { int digest_str_len = siglen * 2; - char *digest_str = emalloc(digest_str_len + 1); + zend_string *digest_str = STR_ALLOC(digest_str_len, 0); - make_digest_ex(digest_str, sigbuf, siglen); - efree(sigbuf); - // TODO: avid reallocation ??? - RETVAL_STRINGL(digest_str, digest_str_len); - efree(digest_str); + make_digest_ex(digest_str->val, (unsigned char*)sigbuf->val, siglen); + digest_str->val[digest_str_len] = '\0'; + STR_RELEASE(sigbuf); + RETVAL_STR(digest_str); } } else { - efree(sigbuf); + STR_RELEASE(sigbuf); RETVAL_FALSE; } } @@ -5093,7 +5030,8 @@ PHP_FUNCTION(openssl_encrypt) const EVP_CIPHER *cipher_type; EVP_CIPHER_CTX cipher_ctx; int i=0, outlen, keylen; - unsigned char *outbuf, *key; + zend_string *outbuf; + unsigned char *key; zend_bool free_iv; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss|ls", &data, &data_len, &method, &method_len, &password, &password_len, &options, &iv, &iv_len) == FAILURE) { @@ -5121,7 +5059,7 @@ PHP_FUNCTION(openssl_encrypt) free_iv = php_openssl_validate_iv(&iv, &iv_len, max_iv_len TSRMLS_CC); outlen = data_len + EVP_CIPHER_block_size(cipher_type); - outbuf = emalloc(outlen + 1); + outbuf = STR_ALLOC(outlen, 0); EVP_EncryptInit(&cipher_ctx, cipher_type, NULL, NULL); if (password_len > keylen) { @@ -5132,25 +5070,24 @@ PHP_FUNCTION(openssl_encrypt) EVP_CIPHER_CTX_set_padding(&cipher_ctx, 0); } if (data_len > 0) { - EVP_EncryptUpdate(&cipher_ctx, outbuf, &i, (unsigned char *)data, data_len); + EVP_EncryptUpdate(&cipher_ctx, (unsigned char*)outbuf->val, &i, (unsigned char *)data, data_len); } outlen = i; - if (EVP_EncryptFinal(&cipher_ctx, (unsigned char *)outbuf + i, &i)) { + if (EVP_EncryptFinal(&cipher_ctx, (unsigned char *)outbuf->val + i, &i)) { outlen += i; if (options & OPENSSL_RAW_DATA) { - outbuf[outlen] = '\0'; - // TODO: avoid reallocation ??? - RETVAL_STRINGL((char *)outbuf, outlen); - efree(outbuf); + outbuf->val[outlen] = '\0'; + outbuf->len = outlen; + RETVAL_STR(outbuf); } else { zend_string *base64_str; - base64_str = php_base64_encode(outbuf, outlen); - efree(outbuf); + base64_str = php_base64_encode((unsigned char*)outbuf->val, outlen); + STR_RELEASE(outbuf); RETVAL_STR(base64_str); } } else { - efree(outbuf); + STR_RELEASE(outbuf); RETVAL_FALSE; } if (key != (unsigned char*)password) { @@ -5173,7 +5110,8 @@ PHP_FUNCTION(openssl_decrypt) const EVP_CIPHER *cipher_type; EVP_CIPHER_CTX cipher_ctx; int i, outlen, keylen; - unsigned char *outbuf, *key; + zend_string *outbuf; + unsigned char *key; zend_string *base64_str = NULL; zend_bool free_iv; @@ -5214,7 +5152,7 @@ PHP_FUNCTION(openssl_decrypt) free_iv = php_openssl_validate_iv(&iv, &iv_len, EVP_CIPHER_iv_length(cipher_type) TSRMLS_CC); outlen = data_len + EVP_CIPHER_block_size(cipher_type); - outbuf = emalloc(outlen + 1); + outbuf = STR_ALLOC(outlen, 0); EVP_DecryptInit(&cipher_ctx, cipher_type, NULL, NULL); if (password_len > keylen) { @@ -5224,16 +5162,15 @@ PHP_FUNCTION(openssl_decrypt) if (options & OPENSSL_ZERO_PADDING) { EVP_CIPHER_CTX_set_padding(&cipher_ctx, 0); } - EVP_DecryptUpdate(&cipher_ctx, outbuf, &i, (unsigned char *)data, data_len); + EVP_DecryptUpdate(&cipher_ctx, (unsigned char*)outbuf->val, &i, (unsigned char *)data, data_len); outlen = i; - if (EVP_DecryptFinal(&cipher_ctx, (unsigned char *)outbuf + i, &i)) { + if (EVP_DecryptFinal(&cipher_ctx, (unsigned char *)outbuf->val + i, &i)) { outlen += i; - outbuf[outlen] = '\0'; - // TODO: avoid reallocation ??? - RETVAL_STRINGL((char *)outbuf, outlen); - efree(outbuf); + outbuf->val[outlen] = '\0'; + outbuf->len = outlen; + RETVAL_STR(outbuf); } else { - efree(outbuf); + STR_RELEASE(outbuf); RETVAL_FALSE; } if (key != (unsigned char*)password) { @@ -5285,7 +5222,7 @@ PHP_FUNCTION(openssl_dh_compute_key) int pub_len; EVP_PKEY *pkey; BIGNUM *pub; - char *data; + zend_string *data; int len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sr", &pub_str, &pub_len, &key) == FAILURE) { @@ -5298,16 +5235,15 @@ PHP_FUNCTION(openssl_dh_compute_key) pub = BN_bin2bn((unsigned char*)pub_str, pub_len, NULL); - data = emalloc(DH_size(pkey->pkey.dh) + 1); - len = DH_compute_key((unsigned char*)data, pub, pkey->pkey.dh); + data = STR_ALLOC(DH_size(pkey->pkey.dh), 0); + len = DH_compute_key((unsigned char*)data->val, pub, pkey->pkey.dh); if (len >= 0) { - data[len] = 0; - // TODO: avoid reallocation ??? - RETVAL_STRINGL(data, len); - efree(data); + data->len = len; + data->val[len] = 0; + RETVAL_STR(data); } else { - efree(data); + STR_RELEASE(data); RETVAL_FALSE; } @@ -5320,7 +5256,7 @@ PHP_FUNCTION(openssl_dh_compute_key) PHP_FUNCTION(openssl_random_pseudo_bytes) { long buffer_length; - unsigned char *buffer = NULL; + zend_string *buffer = NULL; zval *zstrong_result_returned = NULL; int strong_result = 0; @@ -5337,21 +5273,21 @@ PHP_FUNCTION(openssl_random_pseudo_bytes) ZVAL_BOOL(zstrong_result_returned, 0); } - buffer = emalloc(buffer_length + 1); + buffer = STR_ALLOC(buffer_length, 0); #ifdef PHP_WIN32 strong_result = 1; /* random/urandom equivalent on Windows */ - if (php_win32_get_random_bytes(buffer, (size_t) buffer_length) == FAILURE){ - efree(buffer); + if (php_win32_get_random_bytes((unsigned char*)buffer->val, (size_t) buffer_length) == FAILURE){ + STR_RELEASE(buffer); if (zstrong_result_returned) { ZVAL_BOOL(zstrong_result_returned, 0); } RETURN_FALSE; } #else - if ((strong_result = RAND_pseudo_bytes(buffer, buffer_length)) < 0) { - efree(buffer); + if ((strong_result = RAND_pseudo_bytes((unsigned char*)buffer->val, buffer_length)) < 0) { + STR_RELEASE(buffer); if (zstrong_result_returned) { ZVAL_BOOL(zstrong_result_returned, 0); } @@ -5359,10 +5295,8 @@ PHP_FUNCTION(openssl_random_pseudo_bytes) } #endif - buffer[buffer_length] = 0; - // TODO: avoid reallocation ??? - RETVAL_STRINGL((char *)buffer, buffer_length); - efree(buffer); + buffer->val[buffer_length] = 0; + RETVAL_STR(buffer); if (zstrong_result_returned) { ZVAL_BOOL(zstrong_result_returned, strong_result); diff --git a/ext/openssl/tests/026.phpt b/ext/openssl/tests/026.phpt new file mode 100644 index 0000000000..38d626d742 --- /dev/null +++ b/ext/openssl/tests/026.phpt @@ -0,0 +1,12 @@ +--TEST-- +Options type checks +--SKIPIF-- +<?php if (!extension_loaded("openssl")) print "skip"; ?> +--FILE-- +<?php +$x = openssl_pkey_new(); +$csr = openssl_csr_new(["countryName" => "DE"], $x, ["x509_extensions" => 0xDEADBEEF]); +?> +DONE +--EXPECT-- +DONE diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c index bf72fed434..f706e0d5a2 100644 --- a/ext/openssl/xp_ssl.c +++ b/ext/openssl/xp_ssl.c @@ -67,7 +67,7 @@ #define STREAM_CRYPTO_METHOD_TLSv1_2 (1<<5) /* Simplify ssl context option retrieval */ -#define GET_VER_OPT(name) (stream->context && (val = php_stream_context_get_option(stream->context, "ssl", name)) != NULL) +#define GET_VER_OPT(name) (PHP_STREAM_CONTEXT(stream) && (val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", name)) != NULL) #define GET_VER_OPT_STRING(name, str) if (GET_VER_OPT(name)) { convert_to_string_ex(val); str = Z_STRVAL_P(val); } #define GET_VER_OPT_LONG(name, num) if (GET_VER_OPT(name)) { convert_to_long_ex(val); num = Z_LVAL_P(val); } @@ -75,7 +75,7 @@ #define PHP_X509_NAME_ENTRY_TO_UTF8(ne, i, out) ASN1_STRING_to_UTF8(&out, X509_NAME_ENTRY_get_data(X509_NAME_get_entry(ne, i))) extern php_stream* php_openssl_get_stream_from_ssl_handle(const SSL *ssl); -extern zend_bool php_x509_fingerprint_match(X509 *peer, zval *val TSRMLS_DC); +extern zend_string* php_openssl_x509_fingerprint(X509 *peer, const char *method, zend_bool raw TSRMLS_DC); extern int php_openssl_get_ssl_stream_data_index(); extern int php_openssl_get_x509_list_id(void); @@ -263,6 +263,52 @@ static int verify_callback(int preverify_ok, X509_STORE_CTX *ctx) /* {{{ */ } /* }}} */ +static int php_x509_fingerprint_cmp(X509 *peer, const char *method, const char *expected TSRMLS_DC) +{ + zend_string *fingerprint; + int result = -1; + + fingerprint = php_openssl_x509_fingerprint(peer, method, 0 TSRMLS_CC); + if (fingerprint) { + result = strcmp(expected, fingerprint->val); + STR_RELEASE(fingerprint); + } + + return result; +} + +static zend_bool php_x509_fingerprint_match(X509 *peer, zval *val TSRMLS_DC) +{ + if (Z_TYPE_P(val) == IS_STRING) { + const char *method = NULL; + + switch (Z_STRLEN_P(val)) { + case 32: + method = "md5"; + break; + + case 40: + method = "sha1"; + break; + } + + return method && php_x509_fingerprint_cmp(peer, method, Z_STRVAL_P(val) TSRMLS_CC) == 0; + } else if (Z_TYPE_P(val) == IS_ARRAY) { + zval *current; + zend_string *key; + + ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(val), key, current) { + if (key && Z_TYPE_P(current) == IS_STRING + && php_x509_fingerprint_cmp(peer, key->val, Z_STRVAL_P(current) TSRMLS_CC) != 0 + ) { + return 0; + } + } ZEND_HASH_FOREACH_END(); + return 1; + } + return 0; +} + static zend_bool matches_wildcard_name(const char *subjectname, const char *certname) /* {{{ */ { char *wildcard = NULL; @@ -272,11 +318,12 @@ static zend_bool matches_wildcard_name(const char *subjectname, const char *cert return 1; } - if (!(wildcard = strchr(certname, '*'))) { + /* wildcard, if present, must only be present in the left-most component */ + if (!(wildcard = strchr(certname, '*')) || memchr(certname, '.', wildcard - certname)) { return 0; } - // 1) prefix, if not empty, must match subject + /* 1) prefix, if not empty, must match subject */ prefix_len = wildcard - certname; if (prefix_len && strncasecmp(subjectname, certname, prefix_len) != 0) { return 0; @@ -319,7 +366,7 @@ static zend_bool matches_san_list(X509 *peer, const char *subject_name TSRMLS_DC if (san_name_len != strlen((const char*)cert_name)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Peer SAN entry is malformed"); } else { - is_match = strcasecmp(subject_name, (const char*)cert_name) == 0; + is_match = matches_wildcard_name(subject_name, (const char *)cert_name); } OPENSSL_free(cert_name); @@ -938,7 +985,7 @@ static void limit_handshake_reneg(const SSL *ssl) /* {{{ */ sslsock->reneg->should_close = 1; - if (stream->context && (val = php_stream_context_get_option(stream->context, + if (PHP_STREAM_CONTEXT(stream) && (val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", "reneg_limit_callback")) != NULL ) { zval param, retval; @@ -981,8 +1028,8 @@ static void init_server_reneg_limit(php_stream *stream, php_openssl_netstream_da long limit = OPENSSL_DEFAULT_RENEG_LIMIT; long window = OPENSSL_DEFAULT_RENEG_WINDOW; - if (stream->context && - NULL != (val = php_stream_context_get_option(stream->context, + if (PHP_STREAM_CONTEXT(stream) && + NULL != (val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", "reneg_limit")) ) { convert_to_long(val); @@ -994,8 +1041,8 @@ static void init_server_reneg_limit(php_stream *stream, php_openssl_netstream_da return; } - if (stream->context && - NULL != (val = php_stream_context_get_option(stream->context, + if (PHP_STREAM_CONTEXT(stream) && + NULL != (val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", "reneg_window")) ) { convert_to_long(val); @@ -1022,7 +1069,7 @@ static int set_server_rsa_key(php_stream *stream, SSL_CTX *ctx TSRMLS_DC) /* {{{ int rsa_key_size; RSA* rsa; - if ((val = php_stream_context_get_option(stream->context, "ssl", "rsa_key_size")) != NULL) { + if ((val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", "rsa_key_size")) != NULL) { rsa_key_size = (int) Z_LVAL_P(val); if ((rsa_key_size != 1) && (rsa_key_size & (rsa_key_size - 1))) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "RSA key size requires a power of 2: %d", rsa_key_size); @@ -1086,7 +1133,7 @@ static int set_server_ecdh_curve(php_stream *stream, SSL_CTX *ctx TSRMLS_DC) /* char *curve_str; EC_KEY *ecdh; - if ((val = php_stream_context_get_option(stream->context, "ssl", "ecdh_curve")) != NULL) { + if ((val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", "ecdh_curve")) != NULL) { convert_to_string_ex(val); curve_str = Z_STRVAL_P(val); curve_nid = OBJ_sn2nid(curve_str); @@ -1124,7 +1171,7 @@ static int set_server_specific_opts(php_stream *stream, SSL_CTX *ctx TSRMLS_DC) return FAILURE; } #else - if (SUCCESS == php_stream_context_get_option(stream->context, "ssl", "ecdh_curve", &val)) { + if (SUCCESS == php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", "ecdh_curve", &val)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "ECDH curve support not compiled into the OpenSSL lib against which PHP is linked"); @@ -1132,7 +1179,7 @@ static int set_server_specific_opts(php_stream *stream, SSL_CTX *ctx TSRMLS_DC) } #endif - if ((val = php_stream_context_get_option(stream->context, "ssl", "dh_param")) != NULL) { + if ((val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", "dh_param")) != NULL) { convert_to_string_ex(val); if (FAILURE == set_server_dh_param(ctx, Z_STRVAL_P(val) TSRMLS_CC)) { return FAILURE; @@ -1144,14 +1191,14 @@ static int set_server_specific_opts(php_stream *stream, SSL_CTX *ctx TSRMLS_DC) } if (NULL != (val = php_stream_context_get_option( - stream->context, "ssl", "honor_cipher_order")) && + PHP_STREAM_CONTEXT(stream), "ssl", "honor_cipher_order")) && zend_is_true(val TSRMLS_CC) ) { ssl_ctx_options |= SSL_OP_CIPHER_SERVER_PREFERENCE; } if (NULL != (val = php_stream_context_get_option( - stream->context, "ssl", "single_dh_use")) && + PHP_STREAM_CONTEXT(stream), "ssl", "single_dh_use")) && zend_is_true(val TSRMLS_CC) ) { ssl_ctx_options |= SSL_OP_SINGLE_DH_USE; @@ -1159,7 +1206,7 @@ static int set_server_specific_opts(php_stream *stream, SSL_CTX *ctx TSRMLS_DC) #ifdef HAVE_ECDH if (NULL != (val = php_stream_context_get_option( - stream->context, "ssl", "single_ecdh_use")) && + PHP_STREAM_CONTEXT(stream), "ssl", "single_ecdh_use")) && zend_is_true(val TSRMLS_CC)) { ssl_ctx_options |= SSL_OP_SINGLE_ECDH_USE; } @@ -1413,7 +1460,7 @@ int php_openssl_setup_crypto(php_stream *stream, SSL_CTX_set_options(sslsock->ctx, ssl_ctx_options); if (sslsock->is_client == 0 && - stream->context && + PHP_STREAM_CONTEXT(stream) && FAILURE == set_server_specific_opts(stream, sslsock->ctx TSRMLS_CC) ) { return FAILURE; @@ -1499,16 +1546,16 @@ static int capture_peer_certs(php_stream *stream, php_openssl_netstream_data_t * zval *val, zcert; int cert_captured = 0; - if (NULL != (val = php_stream_context_get_option(stream->context, + if (NULL != (val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", "capture_peer_cert")) && zend_is_true(val TSRMLS_CC) ) { zend_register_resource(&zcert, peer_cert, php_openssl_get_x509_list_id() TSRMLS_CC); - php_stream_context_set_option(stream->context, "ssl", "peer_certificate", &zcert); + php_stream_context_set_option(PHP_STREAM_CONTEXT(stream), "ssl", "peer_certificate", &zcert); cert_captured = 1; } - if (NULL != (val = php_stream_context_get_option(stream->context, + if (NULL != (val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", "capture_peer_cert_chain")) && zend_is_true(val TSRMLS_CC) ) { @@ -1531,7 +1578,7 @@ static int capture_peer_certs(php_stream *stream, php_openssl_netstream_data_t * ZVAL_NULL(&arr); } - php_stream_context_set_option(stream->context, "ssl", "peer_certificate_chain", &arr); + php_stream_context_set_option(PHP_STREAM_CONTEXT(stream), "ssl", "peer_certificate_chain", &arr); zval_dtor(&arr); } @@ -1639,7 +1686,7 @@ static int php_openssl_enable_crypto(php_stream *stream, if (n == 1) { peer_cert = SSL_get_peer_certificate(sslsock->ssl_handle); - if (peer_cert && stream->context) { + if (peer_cert && PHP_STREAM_CONTEXT(stream)) { cert_captured = capture_peer_certs(stream, sslsock, peer_cert TSRMLS_CC); } @@ -1649,16 +1696,16 @@ static int php_openssl_enable_crypto(php_stream *stream, } else { sslsock->ssl_active = 1; - if (stream->context) { + if (PHP_STREAM_CONTEXT(stream)) { zval *val; - if (NULL != (val = php_stream_context_get_option(stream->context, + if (NULL != (val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", "capture_session_meta")) && zend_is_true(val TSRMLS_CC) ) { zval meta_arr; ZVAL_ARR(&meta_arr, capture_session_meta(sslsock->ssl_handle)); - php_stream_context_set_option(stream->context, "ssl", "session_meta", &meta_arr); + php_stream_context_set_option(PHP_STREAM_CONTEXT(stream), "ssl", "session_meta", &meta_arr); zval_dtor(&meta_arr); } } @@ -1668,7 +1715,7 @@ static int php_openssl_enable_crypto(php_stream *stream, } else { n = -1; peer_cert = SSL_get_peer_certificate(sslsock->ssl_handle); - if (peer_cert && stream->context) { + if (peer_cert && PHP_STREAM_CONTEXT(stream)) { cert_captured = capture_peer_certs(stream, sslsock, peer_cert TSRMLS_CC); } } @@ -1707,7 +1754,7 @@ static size_t php_openssl_sockop_write(php_stream *stream, const char *buf, size } while(retry); if (didwrite > 0) { - php_stream_notify_progress_increment(stream->context, didwrite, 0); + php_stream_notify_progress_increment(PHP_STREAM_CONTEXT(stream), didwrite, 0); } } else { didwrite = php_stream_socket_ops.write(stream, buf, count TSRMLS_CC); @@ -1721,13 +1768,59 @@ static size_t php_openssl_sockop_write(php_stream *stream, const char *buf, size } /* }}} */ +static void php_openssl_stream_wait_for_data(php_netstream_data_t *sock) +{ + int retval; + struct timeval *ptimeout; + + if (sock->socket == -1) { + return; + } + + sock->timeout_event = 0; + + if (sock->timeout.tv_sec == -1) + ptimeout = NULL; + else + ptimeout = &sock->timeout; + + while(1) { + retval = php_pollfd_for(sock->socket, PHP_POLLREADABLE, ptimeout); + + if (retval == 0) + sock->timeout_event = 1; + + if (retval >= 0) + break; + + if (php_socket_errno() != EINTR) + break; + } +} + static size_t php_openssl_sockop_read(php_stream *stream, char *buf, size_t count TSRMLS_DC) /* {{{ */ { php_openssl_netstream_data_t *sslsock = (php_openssl_netstream_data_t*)stream->abstract; + php_netstream_data_t *sock; int nr_bytes = 0; if (sslsock->ssl_active) { int retry = 1; + sock = (php_netstream_data_t*)stream->abstract; + + /* The SSL_read() function will block indefinitely waiting for data on a blocking + socket. If we don't poll for readability first this operation has the potential + to hang forever. To avoid this scenario we poll with a timeout before performing + the actual read. If it times out we're finished. + */ + if (sock->is_blocked) { + php_openssl_stream_wait_for_data(sock); + if (sock->timeout_event) { + stream->eof = 1; + php_error_docref(NULL TSRMLS_CC, E_WARNING, "SSL read operation timed out"); + return nr_bytes; + } + } do { nr_bytes = SSL_read(sslsock->ssl_handle, buf, count); @@ -1749,7 +1842,7 @@ static size_t php_openssl_sockop_read(php_stream *stream, char *buf, size_t coun } while (retry); if (nr_bytes > 0) { - php_stream_notify_progress_increment(stream->context, nr_bytes, 0); + php_stream_notify_progress_increment(PHP_STREAM_CONTEXT(stream), nr_bytes, 0); } } else @@ -1854,7 +1947,6 @@ static inline int php_openssl_tcp_sockop_accept(php_stream *stream, php_openssl_ clisock = php_network_accept_incoming(sock->s.socket, xparam->want_textaddr ? &xparam->outputs.textaddr : NULL, - xparam->want_textaddr ? &xparam->outputs.textaddrlen : NULL, xparam->want_addr ? &xparam->outputs.addr : NULL, xparam->want_addr ? &xparam->outputs.addrlen : NULL, xparam->inputs.timeout, @@ -1879,9 +1971,9 @@ static inline int php_openssl_tcp_sockop_accept(php_stream *stream, php_openssl_ xparam->outputs.client = php_stream_alloc_rel(stream->ops, clisockdata, NULL, "r+"); if (xparam->outputs.client) { - xparam->outputs.client->context = stream->context; - if (stream->context) { - stream->context->res->gc.refcount++; + xparam->outputs.client->ctx = stream->ctx; + if (stream->ctx) { + GC_REFCOUNT(stream->ctx)++; } } } diff --git a/ext/pdo/tests/bug65946.phpt b/ext/pdo/tests/bug65946.phpt index 1c4bd8d6c4..4b63a14bb5 100644 --- a/ext/pdo/tests/bug65946.phpt +++ b/ext/pdo/tests/bug65946.phpt @@ -16,7 +16,12 @@ $db = PDOTest::factory(); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); $db->exec('CREATE TABLE test(id int)'); $db->exec('INSERT INTO test VALUES(1)'); -$stmt = $db->prepare('SELECT * FROM test LIMIT :limit'); +if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'firebird') { + $sql = 'SELECT FIRST :limit * FROM test'; +} else { + $sql = 'SELECT * FROM test LIMIT :limit'; +} +$stmt = $db->prepare($sql); $stmt->bindValue('limit', 1, PDO::PARAM_INT); if(!($res = $stmt->execute())) var_dump($stmt->errorInfo()); if(!($res = $stmt->execute())) var_dump($stmt->errorInfo()); diff --git a/ext/pdo/tests/bug_38253.phpt b/ext/pdo/tests/bug_38253.phpt index 4453c3bb23..e749970a5f 100644 --- a/ext/pdo/tests/bug_38253.phpt +++ b/ext/pdo/tests/bug_38253.phpt @@ -22,11 +22,11 @@ $stmt = $pdo->prepare ("SELECT * FROM test"); $stmt->execute(); var_dump($stmt->fetchAll()); -$pdo = PDOTest::factory(); - if ($pdo->getAttribute(PDO::ATTR_DRIVER_NAME) == 'oci') { $type = "clob"; -} else{ +} else if ($pdo->getAttribute(PDO::ATTR_DRIVER_NAME) == 'firebird') { + $type = 'BLOB SUB_TYPE TEXT'; +} else { $type = "text"; } diff --git a/ext/pdo_firebird/firebird_statement.c b/ext/pdo_firebird/firebird_statement.c index 586960cbf7..d21273366b 100644 --- a/ext/pdo_firebird/firebird_statement.c +++ b/ext/pdo_firebird/firebird_statement.c @@ -437,7 +437,7 @@ static int firebird_bind_blob(pdo_stmt_t *stmt, ISC_QUAD *blob_id, zval *param T put_cnt += chunk_size; } - zval_ptr_dtor(param); + zval_dtor(param); if (isc_close_blob(H->isc_status, &h)) { RECORD_ERROR(stmt); @@ -521,6 +521,19 @@ static int firebird_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_dat } else { parameter = ¶m->parameter; } + + if (Z_TYPE_P(parameter) == IS_RESOURCE) { + php_stream *stm; + + php_stream_from_zval_no_verify(stm, parameter); + if (stm) { + zval_ptr_dtor(parameter); + ZVAL_STR(parameter, php_stream_copy_to_mem(stm, PHP_STREAM_COPY_ALL, 0)); + } else { + pdo_raise_impl_error(stmt->dbh, stmt, "HY105", "Expected a stream resource" TSRMLS_CC); + return 0; + } + } switch (var->sqltype & ~1) { case SQL_ARRAY: @@ -601,6 +614,8 @@ static int firebird_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_dat } else { parameter = ¶m->parameter; } + zval_ptr_dtor(parameter); + ZVAL_NULL(parameter); if (firebird_stmt_get_col(stmt, param->paramno, &value, &value_len, &caller_frees TSRMLS_CC)) { switch (PDO_PARAM_TYPE(param->param_type)) { diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c index d7c993509f..b39fdfaaa2 100644 --- a/ext/pdo_mysql/mysql_driver.c +++ b/ext/pdo_mysql/mysql_driver.c @@ -439,14 +439,13 @@ static int pdo_mysql_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value ZVAL_STRING(return_value, (char *)mysql_get_host_info(H->server)); break; case PDO_ATTR_SERVER_INFO: { - char *tmp; #if defined(PDO_USE_MYSQLND) - unsigned int tmp_len; + zend_string *tmp; - if (mysqlnd_stat(H->server, &tmp, &tmp_len) == PASS) { - ZVAL_STRINGL(return_value, tmp, tmp_len); - efree(tmp); + if (mysqlnd_stat(H->server, &tmp) == PASS) { + ZVAL_STR(return_value, tmp); #else + char *tmp; if ((tmp = (char *)mysql_stat(H->server))) { ZVAL_STRING(return_value, tmp); #endif diff --git a/ext/pdo_odbc/odbc_driver.c b/ext/pdo_odbc/odbc_driver.c index d4bf234689..2828b96e81 100644 --- a/ext/pdo_odbc/odbc_driver.c +++ b/ext/pdo_odbc/odbc_driver.c @@ -36,22 +36,20 @@ static int pdo_odbc_fetch_error_func(pdo_dbh_t *dbh, pdo_stmt_t *stmt, zval *inf pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; pdo_odbc_errinfo *einfo = &H->einfo; pdo_odbc_stmt *S = NULL; - char *message = NULL; + zend_string *message = NULL; if (stmt) { S = (pdo_odbc_stmt*)stmt->driver_data; einfo = &S->einfo; } - spprintf(&message, 0, "%s (%s[%ld] at %s:%d)", + message = strpprintf(0, "%s (%s[%ld] at %s:%d)", einfo->last_err_msg, einfo->what, einfo->last_error, einfo->file, einfo->line); add_next_index_long(info, einfo->last_error); - // TODO: avoid reallocation ??? - add_next_index_string(info, message); - efree(message); + add_next_index_str(info, message); add_next_index_string(info, einfo->last_state); return 1; @@ -358,7 +356,7 @@ static int odbc_handle_get_attr(pdo_dbh_t *dbh, long attr, zval *val TSRMLS_DC) pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; switch (attr) { case PDO_ATTR_CLIENT_VERSION: - ZVAL_STRING(val, "ODBC-" PDO_ODBC_TYPE, 1); + ZVAL_STRING(val, "ODBC-" PDO_ODBC_TYPE); return 1; case PDO_ATTR_SERVER_VERSION: diff --git a/ext/pdo_odbc/odbc_stmt.c b/ext/pdo_odbc/odbc_stmt.c index 1d275cd654..ea5650923c 100644 --- a/ext/pdo_odbc/odbc_stmt.c +++ b/ext/pdo_odbc/odbc_stmt.c @@ -180,20 +180,26 @@ static int odbc_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC) php_stream *stm; int len; pdo_odbc_param *P; + zval *parameter; P = (pdo_odbc_param*)param->driver_data; - if (Z_TYPE_P(param->parameter) != IS_RESOURCE) { + if (Z_ISREF(param->parameter)) { + parameter = Z_REFVAL(param->parameter); + } else { + parameter = ¶m->parameter; + } + if (Z_TYPE_P(parameter) != IS_RESOURCE) { /* they passed in a string */ unsigned long ulen; - convert_to_string(param->parameter); + convert_to_string(parameter); switch (pdo_odbc_utf82ucs2(stmt, P->is_unicode, - Z_STRVAL_P(param->parameter), - Z_STRLEN_P(param->parameter), + Z_STRVAL_P(parameter), + Z_STRLEN_P(parameter), &ulen)) { case PDO_ODBC_CONV_NOT_REQUIRED: - SQLPutData(S->stmt, Z_STRVAL_P(param->parameter), - Z_STRLEN_P(param->parameter)); + SQLPutData(S->stmt, Z_STRVAL_P(parameter), + Z_STRLEN_P(parameter)); break; case PDO_ODBC_CONV_OK: SQLPutData(S->stmt, S->convbuf, ulen); @@ -212,7 +218,7 @@ static int odbc_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC) /* we assume that LOBs are binary and don't need charset * conversion */ - php_stream_from_zval_no_verify(stm, ¶m->parameter); + php_stream_from_zval_no_verify(stm, parameter); if (!stm) { /* shouldn't happen either */ pdo_odbc_stmt_error("input LOB is no longer a stream"); @@ -281,6 +287,7 @@ static int odbc_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *p SWORD sqltype = 0, ctype = 0, scale = 0, nullable = 0; SQLULEN precision = 0; pdo_odbc_param *P; + zval *parameter; /* we're only interested in parameters for prepared SQL right now */ if (param->is_param) { @@ -388,12 +395,18 @@ static int odbc_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *p case PDO_PARAM_EVT_EXEC_PRE: P = param->driver_data; + if (!Z_ISREF(param->parameter)) { + parameter = ¶m->parameter; + } else { + parameter = Z_REFVAL(param->parameter); + } + if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB) { - if (Z_TYPE_P(param->parameter) == IS_RESOURCE) { + if (Z_TYPE_P(parameter) == IS_RESOURCE) { php_stream *stm; php_stream_statbuf sb; - php_stream_from_zval_no_verify(stm, ¶m->parameter); + php_stream_from_zval_no_verify(stm, parameter); if (!stm) { return 0; @@ -432,28 +445,28 @@ static int odbc_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *p } } } else { - convert_to_string(param->parameter); + convert_to_string(parameter); if (P->outbuf) { - P->len = Z_STRLEN_P(param->parameter); - memcpy(P->outbuf, Z_STRVAL_P(param->parameter), P->len); + P->len = Z_STRLEN_P(parameter); + memcpy(P->outbuf, Z_STRVAL_P(parameter), P->len); } else { - P->len = SQL_LEN_DATA_AT_EXEC(Z_STRLEN_P(param->parameter)); + P->len = SQL_LEN_DATA_AT_EXEC(Z_STRLEN_P(parameter)); } } - } else if (Z_TYPE_P(param->parameter) == IS_NULL || PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_NULL) { + } else if (Z_TYPE_P(parameter) == IS_NULL || PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_NULL) { P->len = SQL_NULL_DATA; } else { - convert_to_string(param->parameter); + convert_to_string(parameter); if (P->outbuf) { unsigned long ulen; switch (pdo_odbc_utf82ucs2(stmt, P->is_unicode, - Z_STRVAL_P(param->parameter), - Z_STRLEN_P(param->parameter), + Z_STRVAL_P(parameter), + Z_STRLEN_P(parameter), &ulen)) { case PDO_ODBC_CONV_FAIL: case PDO_ODBC_CONV_NOT_REQUIRED: - P->len = Z_STRLEN_P(param->parameter); - memcpy(P->outbuf, Z_STRVAL_P(param->parameter), P->len); + P->len = Z_STRLEN_P(parameter); + memcpy(P->outbuf, Z_STRVAL_P(parameter), P->len); break; case PDO_ODBC_CONV_OK: P->len = ulen; @@ -461,44 +474,47 @@ static int odbc_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *p break; } } else { - P->len = SQL_LEN_DATA_AT_EXEC(Z_STRLEN_P(param->parameter)); + P->len = SQL_LEN_DATA_AT_EXEC(Z_STRLEN_P(parameter)); } } return 1; case PDO_PARAM_EVT_EXEC_POST: P = param->driver_data; + if (P->outbuf) { - if (P->outbuf) { - unsigned long ulen; - char *srcbuf; - unsigned long srclen = 0; + unsigned long ulen; + char *srcbuf; + unsigned long srclen = 0; - switch (P->len) { - case SQL_NULL_DATA: - zval_dtor(param->parameter); - ZVAL_NULL(param->parameter); - break; - default: - convert_to_string(param->parameter); - switch (pdo_odbc_ucs22utf8(stmt, P->is_unicode, P->outbuf, P->len, &ulen)) { - case PDO_ODBC_CONV_FAIL: - /* something fishy, but allow it to come back as binary */ - case PDO_ODBC_CONV_NOT_REQUIRED: - srcbuf = P->outbuf; - srclen = P->len; - break; - case PDO_ODBC_CONV_OK: - srcbuf = S->convbuf; - srclen = ulen; - break; - } + if (Z_ISREF(param->parameter)) { + parameter = Z_REFVAL(param->parameter); + } else { + parameter = ¶m->parameter; + } + zval_ptr_dtor(parameter); + ZVAL_NULL(parameter); + + switch (P->len) { + case SQL_NULL_DATA: + break; + default: + switch (pdo_odbc_ucs22utf8(stmt, P->is_unicode, P->outbuf, P->len, &ulen)) { + case PDO_ODBC_CONV_FAIL: + /* something fishy, but allow it to come back as binary */ + case PDO_ODBC_CONV_NOT_REQUIRED: + srcbuf = P->outbuf; + srclen = P->len; + break; + case PDO_ODBC_CONV_OK: + srcbuf = S->convbuf; + srclen = ulen; + break; + } - Z_STRVAL_P(param->parameter) = erealloc(Z_STRVAL_P(param->parameter), srclen+1); - memcpy(Z_STRVAL_P(param->parameter), srcbuf, srclen); - Z_STRLEN_P(param->parameter) = srclen; - Z_STRVAL_P(param->parameter)[srclen] = '\0'; - } + ZVAL_NEW_STR(parameter, STR_ALLOC(srclen, 0)); + memcpy(Z_STRVAL_P(parameter), srcbuf, srclen); + Z_STRVAL_P(parameter)[Z_STRLEN_P(parameter)] = '\0'; } } return 1; @@ -779,7 +795,7 @@ static int odbc_stmt_get_attr(pdo_stmt_t *stmt, long attr, zval *val TSRMLS_DC) rc = SQLGetCursorName(S->stmt, buf, sizeof(buf), &len); if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) { - ZVAL_STRINGL(val, buf, len, 1); + ZVAL_STRINGL(val, buf, len); return 1; } pdo_odbc_stmt_error("SQLGetCursorName"); diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index bfe17e6a13..3d403fff57 100644..100755 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -84,17 +84,12 @@ static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char } if (NULL != (stuff = zend_hash_str_find(_SERVER, "PATH_TRANSLATED", sizeof("PATH_TRANSLATED")-1))) { - char *str = NULL; - int len; - - // TODO: avoid reallocation ??? - len = spprintf(&str, 4096, "phar://%s%s", fname, entry); + zend_string *str = strpprintf(4096, "phar://%s%s", fname, entry); ZVAL_STR(&temp, Z_STR_P(stuff)); - ZVAL_STRINGL(stuff, str, len); - efree(str); + ZVAL_STR(stuff, str); - zend_hash_str_update(_SERVER, "PHAR_PATH_TRANSLATED", sizeof("PHAR_PATH_TRANSLATED")-1, (void *) &temp); + zend_hash_str_update(_SERVER, "PHAR_PATH_TRANSLATED", sizeof("PHAR_PATH_TRANSLATED")-1, &temp); } if (!PHAR_GLOBALS->phar_SERVER_mung_list) { @@ -136,15 +131,10 @@ static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_SCRIPT_FILENAME) { if (NULL != (stuff = zend_hash_str_find(_SERVER, "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME")-1))) { - char *str = NULL; - int len; - - // TODO: avoid reallocation ??? - len = spprintf(&str, 4096, "phar://%s%s", fname, entry); + zend_string *str = strpprintf(4096, "phar://%s%s", fname, entry); ZVAL_STR(&temp, Z_STR_P(stuff)); - ZVAL_STRINGL(stuff, str, len); - efree(str); + ZVAL_STR(stuff, str); zend_hash_str_update(_SERVER, "PHAR_SCRIPT_FILENAME", sizeof("PHAR_SCRIPT_FILENAME")-1, &temp); } @@ -3033,8 +3023,7 @@ PHP_METHOD(Phar, getSignature) } if (phar_obj->archive->signature) { - char *unknown; - int unknown_len; + zend_string *unknown; array_init(return_value); add_assoc_stringl(return_value, "hash", phar_obj->archive->signature, phar_obj->archive->sig_len); @@ -3055,10 +3044,8 @@ PHP_METHOD(Phar, getSignature) add_assoc_stringl(return_value, "hash_type", "OpenSSL", 7); break; default: - unknown_len = spprintf(&unknown, 0, "Unknown (%u)", phar_obj->archive->sig_flags); - // TODO: avoid reallocation ??? - add_assoc_stringl(return_value, "hash_type", unknown, unknown_len); - efree(unknown); + unknown = strpprintf(0, "Unknown (%u)", phar_obj->archive->sig_flags); + add_assoc_str(return_value, "hash_type", unknown); break; } } else { @@ -3519,6 +3506,7 @@ PHP_METHOD(Phar, offsetGet) int fname_len; zval zfname; phar_entry_info *entry; + zend_string *sfname; PHAR_ARCHIVE_OBJECT(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &fname, &fname_len) == FAILURE) { @@ -3549,10 +3537,8 @@ PHP_METHOD(Phar, offsetGet) efree(entry); } - fname_len = spprintf(&fname, 0, "phar://%s/%s", phar_obj->archive->fname, fname); - /* TODO: avoid reallocation ??? */ - ZVAL_STRINGL(&zfname, fname, fname_len); - efree(fname); + sfname = strpprintf(0, "phar://%s/%s", phar_obj->archive->fname, fname); + ZVAL_STR(&zfname, sfname); spl_instantiate_arg_ex1(phar_obj->spl.info_class, return_value, &zfname TSRMLS_CC); zval_ptr_dtor(&zfname); } @@ -3837,7 +3823,7 @@ PHP_METHOD(Phar, addFromString) PHP_METHOD(Phar, getStub) { size_t len; - char *buf; + zend_string *buf; php_stream *fp; php_stream_filter *filter = NULL; phar_entry_info *stub; @@ -3903,15 +3889,15 @@ PHP_METHOD(Phar, getStub) php_stream_rewind(fp); carry_on: - buf = safe_emalloc(len, 1, 1); + buf = STR_ALLOC(len, 0); - if (len != php_stream_read(fp, buf, len)) { + if (len != php_stream_read(fp, buf->val, len)) { if (fp != phar_obj->archive->fp) { php_stream_close(fp); } zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Unable to read stub"); - efree(buf); + STR_RELEASE(buf); return; } @@ -3924,10 +3910,9 @@ carry_on: php_stream_close(fp); } - buf[len] = '\0'; - // TODO: avoid reallocation ??? - RETVAL_STRINGL(buf, len); - efree(buf); + buf->val[len] = '\0'; + buf->len = len; + RETVAL_STR(buf); } /* }}}*/ diff --git a/ext/phar/util.c b/ext/phar/util.c index 4d260a4c13..4bac776511 100644 --- a/ext/phar/util.c +++ b/ext/phar/util.c @@ -1510,11 +1510,6 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ pfp = php_stream_open_wrapper(pfile, "rb", 0, NULL); efree(pfile); -//???#if PHP_MAJOR_VERSION > 5 -//??? if (!pfp || !(pubkey_len = php_stream_copy_to_mem(pfp, (void **) &pubkey, PHP_STREAM_COPY_ALL, 0)) || !pubkey) { -//???#else -//??? if (!pfp || !(pubkey_len = php_stream_copy_to_mem(pfp, &pubkey, PHP_STREAM_COPY_ALL, 0)) || !pubkey) { -//???#endif if (!pfp || !(pubkey = php_stream_copy_to_mem(pfp, PHP_STREAM_COPY_ALL, 0)) || !pubkey->len) { if (pfp) { php_stream_close(pfp); diff --git a/ext/readline/readline_cli.c b/ext/readline/readline_cli.c index 84d27ca046..0ca9daf8ff 100644 --- a/ext/readline/readline_cli.c +++ b/ext/readline/readline_cli.c @@ -99,6 +99,9 @@ static size_t readline_shell_write(const char *str, uint str_length TSRMLS_DC) / static int readline_shell_ub_write(const char *str, uint str_length TSRMLS_DC) /* {{{ */ { + /* We just store the last char here and then pass back to the + caller (sapi_cli_single_write in sapi/cli) which will actually + write due to -1 return code */ php_last_char = str[str_length-1]; return -1; } @@ -589,6 +592,7 @@ static int readline_shell_run(TSRMLS_D) /* {{{ */ char *code = emalloc(size); zend_string *prompt = cli_get_prompt("php", '>' TSRMLS_CC); char *history_file; + int history_lines_to_write = 0; if (PG(auto_prepend_file) && PG(auto_prepend_file)[0]) { zend_file_handle *prepend_file_p; @@ -651,6 +655,7 @@ static int readline_shell_run(TSRMLS_D) /* {{{ */ if (*line) { add_history(line); + history_lines_to_write += 1; } free(line); @@ -660,6 +665,15 @@ static int readline_shell_run(TSRMLS_D) /* {{{ */ continue; } + if (history_lines_to_write) { +#if HAVE_LIBEDIT + write_history(history_file); +#else + append_history(history_lines_to_write, history_file); +#endif + history_lines_to_write = 0; + } + zend_try { zend_eval_stringl(code, pos, NULL, "php shell code" TSRMLS_CC); } zend_end_try(); @@ -667,7 +681,7 @@ static int readline_shell_run(TSRMLS_D) /* {{{ */ pos = 0; if (!pager_pipe && php_last_char != '\0' && php_last_char != '\n') { - readline_shell_write("\n", 1 TSRMLS_CC); + php_write("\n", 1 TSRMLS_CC); } if (EG(exception)) { @@ -681,7 +695,6 @@ static int readline_shell_run(TSRMLS_D) /* {{{ */ php_last_char = '\0'; } - write_history(history_file); free(history_file); efree(code); STR_RELEASE(prompt); diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 7247542951..4248de834d 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -722,9 +722,14 @@ static void _parameter_string(string *str, zend_function *fptr, struct _zend_arg zend_op *precv = _get_recv_op((zend_op_array*)fptr, offset); if (precv && precv->opcode == ZEND_RECV_INIT && precv->op2_type != IS_UNUSED) { zval zv; + zend_class_entry *old_scope; + string_write(str, " = ", sizeof(" = ")-1); ZVAL_DUP(&zv, precv->op2.zv); - zval_update_constant_ex(&zv, 1, fptr->common.scope TSRMLS_CC); + old_scope = EG(scope); + EG(scope) = fptr->common.scope; + zval_update_constant_ex(&zv, 1, NULL TSRMLS_CC); + EG(scope) = old_scope; if (Z_TYPE(zv) == IS_TRUE) { string_write(str, "true", sizeof("true")-1); } else if (Z_TYPE(zv) == IS_FALSE) { @@ -1794,8 +1799,7 @@ ZEND_METHOD(reflection_function, getFileName) } GET_REFLECTION_OBJECT_PTR(fptr); if (fptr->type == ZEND_USER_FUNCTION) { -// TODO: we have to duplicate it, becaise it may be in opcache SHM ??? - RETURN_STR(STR_DUP(fptr->op_array.filename, 0)); + RETURN_STR(STR_COPY(fptr->op_array.filename)); } RETURN_FALSE; } @@ -1849,8 +1853,7 @@ ZEND_METHOD(reflection_function, getDocComment) } GET_REFLECTION_OBJECT_PTR(fptr); if (fptr->type == ZEND_USER_FUNCTION && fptr->op_array.doc_comment) { -// TODO: we have to duplicate it, becaise it may be stored in opcache SHM ??? - RETURN_STR(STR_DUP(fptr->op_array.doc_comment, 0)); + RETURN_STR(STR_COPY(fptr->op_array.doc_comment)); } RETURN_FALSE; } @@ -2578,7 +2581,11 @@ ZEND_METHOD(reflection_parameter, getDefaultValue) ZVAL_COPY_VALUE(return_value, precv->op2.zv); if (Z_CONSTANT_P(return_value)) { - zval_update_constant_ex(return_value, 0, param->fptr->common.scope TSRMLS_CC); + zend_class_entry *old_scope = EG(scope); + + EG(scope) = param->fptr->common.scope; + zval_update_constant_ex(return_value, 0, NULL TSRMLS_CC); + EG(scope) = old_scope; } else { zval_copy_ctor(return_value); } @@ -3342,16 +3349,12 @@ ZEND_METHOD(reflection_class, __construct) /* {{{ add_class_vars */ static void add_class_vars(zend_class_entry *ce, int statics, zval *return_value TSRMLS_DC) { - HashPosition pos; zend_property_info *prop_info; zval *prop, prop_copy; zend_string *key; ulong num_index; - zend_hash_internal_pointer_reset_ex(&ce->properties_info, &pos); - while ((prop_info = zend_hash_get_current_data_ptr_ex(&ce->properties_info, &pos)) != NULL) { - zend_hash_get_current_key_ex(&ce->properties_info, &key, &num_index, 0, &pos); - zend_hash_move_forward_ex(&ce->properties_info, &pos); + ZEND_HASH_FOREACH_KEY_PTR(&ce->properties_info, num_index, key, prop_info) { if (((prop_info->flags & ZEND_ACC_SHADOW) && prop_info->ce != ce) || ((prop_info->flags & ZEND_ACC_PROTECTED) && @@ -3373,6 +3376,7 @@ static void add_class_vars(zend_class_entry *ce, int statics, zval *return_value } /* copy: enforce read only access */ + ZVAL_DEREF(prop); ZVAL_DUP(&prop_copy, prop); /* this is necessary to make it able to work with default array @@ -3382,7 +3386,7 @@ static void add_class_vars(zend_class_entry *ce, int statics, zval *return_value } zend_hash_update(Z_ARRVAL_P(return_value), key, &prop_copy); - } + } ZEND_HASH_FOREACH_END(); } /* }}} */ @@ -3445,8 +3449,6 @@ ZEND_METHOD(reflection_class, setStaticPropertyValue) zend_class_entry *ce; zend_string *name; zval *variable_ptr, *value; -//??? int refcount; -//??? zend_uchar is_ref; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Sz", &name, &value) == FAILURE) { return; @@ -3461,13 +3463,8 @@ ZEND_METHOD(reflection_class, setStaticPropertyValue) "Class %s does not have a property named %s", ce->name->val, name->val); return; } -//??? refcount = Z_REFCOUNT_PP(variable_ptr); -//??? is_ref = Z_ISREF_PP(variable_ptr); - zval_dtor(variable_ptr); - ZVAL_DUP(variable_ptr, value); -//??? Z_SET_REFCOUNT_PP(variable_ptr, refcount); -//??? Z_SET_ISREF_TO_PP(variable_ptr, is_ref); - + zval_ptr_dtor(variable_ptr); + ZVAL_COPY(variable_ptr, value); } /* }}} */ @@ -3560,8 +3557,7 @@ ZEND_METHOD(reflection_class, getFileName) } GET_REFLECTION_OBJECT_PTR(ce); if (ce->type == ZEND_USER_CLASS) { -// TODO: we have to duplicate it, becaise it may be stored in opcache SHM ??? - RETURN_STR(STR_DUP(ce->info.user.filename, 0)); + RETURN_STR(STR_COPY(ce->info.user.filename)); } RETURN_FALSE; } @@ -4254,8 +4250,8 @@ ZEND_METHOD(reflection_class, newInstanceWithoutConstructor) METHOD_NOTSTATIC(reflection_class_ptr); GET_REFLECTION_OBJECT_PTR(ce); - if (ce->create_object != NULL) { - zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Class %s is an internal class that cannot be instantiated without invoking its constructor", ce->name->val); + if (ce->create_object != NULL && ce->ce_flags & ZEND_ACC_FINAL_CLASS) { + zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Class %s is an internal class marked as final that cannot be instantiated without invoking its constructor", ce->name->val); } object_init_ex(return_value, ce); diff --git a/ext/reflection/tests/ReflectionClass_newInstanceWithoutConstructor.phpt b/ext/reflection/tests/ReflectionClass_newInstanceWithoutConstructor.phpt index 1932dbfaf1..dfe3e7f8f7 100644 --- a/ext/reflection/tests/ReflectionClass_newInstanceWithoutConstructor.phpt +++ b/ext/reflection/tests/ReflectionClass_newInstanceWithoutConstructor.phpt @@ -20,13 +20,18 @@ var_dump($class->newInstanceWithoutConstructor()); $class = new ReflectionClass('DateTime'); var_dump($class->newInstanceWithoutConstructor()); + +$class = new ReflectionClass('Generator'); +var_dump($class->newInstanceWithoutConstructor()); --EXPECTF-- object(Foo)#%d (0) { } object(stdClass)#%d (0) { } +object(DateTime)#%d (0) { +} -Fatal error: Uncaught exception 'ReflectionException' with message 'Class DateTime is an internal class that cannot be instantiated without invoking its constructor' in %sReflectionClass_newInstanceWithoutConstructor.php:%d +Fatal error: Uncaught exception 'ReflectionException' with message 'Class Generator is an internal class marked as final that cannot be instantiated without invoking its constructor' in %sReflectionClass_newInstanceWithoutConstructor.php:%d Stack trace: #0 %sReflectionClass_newInstanceWithoutConstructor.php(%d): ReflectionClass->newInstanceWithoutConstructor() #1 {main} diff --git a/ext/reflection/tests/bug64007.phpt b/ext/reflection/tests/bug64007.phpt index 32ec6a5610..ae3ec50328 100644 --- a/ext/reflection/tests/bug64007.phpt +++ b/ext/reflection/tests/bug64007.phpt @@ -14,6 +14,6 @@ $generator = $reflection->newInstance(); var_dump($generator); ?> --EXPECTF-- -string(97) "Class Generator is an internal class that cannot be instantiated without invoking its constructor" +string(%d) "Class Generator is an internal class marked as final that cannot be instantiated without invoking its constructor" Catchable fatal error: The "Generator" class is reserved for internal use and cannot be manually instantiated in %sbug64007.php on line %d diff --git a/ext/session/session.c b/ext/session/session.c index ff04462ca4..b03cfaa614 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -298,7 +298,8 @@ PHPAPI zend_string *php_session_create_id(PS_CREATE_SID_ARGS) /* {{{ */ if ((array = zend_hash_str_find(&EG(symbol_table).ht, "_SERVER", sizeof("_SERVER") - 1)) && Z_TYPE_P(array) == IS_ARRAY && - (token = zend_hash_str_find(Z_ARRVAL_P(array), "REMOTE_ADDR", sizeof("REMOTE_ADDR") - 1)) + (token = zend_hash_str_find(Z_ARRVAL_P(array), "REMOTE_ADDR", sizeof("REMOTE_ADDR") - 1)) && + Z_TYPE_P(token) == IS_STRING ) { remote_addr = Z_STRVAL_P(token); } @@ -1934,8 +1935,8 @@ static PHP_FUNCTION(session_id) } if (PS(id)) { - //??? keep compatibility for "\0" characters - //??? see: ext/session/tests/session_id_error3.phpt + /* keep compatibility for "\0" characters ??? + * see: ext/session/tests/session_id_error3.phpt */ int len = strlen(PS(id)->val); if (UNEXPECTED(len != PS(id)->len)) { RETVAL_STR(STR_INIT(PS(id)->val, len, 0)); diff --git a/ext/soap/php_http.c b/ext/soap/php_http.c index 1fa386043d..bb2a6c7a53 100644 --- a/ext/soap/php_http.c +++ b/ext/soap/php_http.c @@ -995,8 +995,7 @@ try_again: add_index_string(&zcookie, 2, phpurl->host); } - // TODO: avoid reallocation ??? - add_assoc_zval_ex(cookies, name.s->val, name.s->len, &zcookie); + zend_symtable_update(Z_ARRVAL_P(cookies), name.s, &zcookie); smart_str_free(&name); } diff --git a/ext/soap/soap.c b/ext/soap/soap.c index 4e5a2b35ea..a1d2ca4f48 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -149,7 +149,9 @@ static void soap_error_handler(int error_num, const char *error_filename, const if ((tmp = zend_hash_str_find(Z_OBJPROP_P(getThis()),"service", sizeof("service")-1)) != NULL) { \ ss = (soapServicePtr)zend_fetch_resource(tmp TSRMLS_CC, -1, "service", NULL, 1, le_service); \ } else { \ - ss = NULL; \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can not fetch service object"); \ + SOAP_SERVER_END_CODE(); \ + return; \ } \ } @@ -926,8 +928,7 @@ PHP_METHOD(SoapFault, SoapFault) PHP_METHOD(SoapFault, __toString) { zval *faultcode, *faultstring, *file, *line, trace; - char *str; - int len; + zend_string *str; zend_fcall_info fci; zval *this_ptr; @@ -955,15 +956,13 @@ PHP_METHOD(SoapFault, __toString) zval_ptr_dtor(&fci.function_name); - len = spprintf(&str, 0, "SoapFault exception: [%s] %s in %s:%ld\nStack trace:\n%s", + str = strpprintf(0, "SoapFault exception: [%s] %s in %s:%ld\nStack trace:\n%s", Z_STRVAL_P(faultcode), Z_STRVAL_P(faultstring), Z_STRVAL_P(file), Z_LVAL_P(line), Z_STRLEN(trace) ? Z_STRVAL(trace) : "#0 {main}\n"); zval_ptr_dtor(&trace); - // TODO: avoid reallocation ??? - RETVAL_STRINGL(str, len); - efree(str); + RETVAL_STR(str); } /* }}} */ diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c index 05b3f9d51a..66d1938f07 100644 --- a/ext/sockets/conversions.c +++ b/ext/sockets/conversions.c @@ -990,7 +990,7 @@ static void to_zval_read_cmsg_data(const char *cmsghdr_c, zval *zv, res_context } len = (size_t)cmsg->cmsg_len; /* use another var because type of cmsg_len varies */ - //????? len_p point to stack value len + if (zend_hash_str_add_ptr(&ctx->params, KEY_CMSG_LEN, sizeof(KEY_CMSG_LEN) - 1, len_p) == NULL) { do_to_zval_err(ctx, "%s", "could not set parameter " KEY_CMSG_LEN); return; diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c index d765d6b754..62cf6ae144 100644 --- a/ext/spl/php_spl.c +++ b/ext/spl/php_spl.c @@ -441,24 +441,11 @@ PHP_FUNCTION(spl_autoload_call) #define HT_MOVE_TAIL_TO_HEAD(ht) \ do { \ - uint first = 0; \ - uint last = (ht)->nNumUsed; \ - while (first < last) { \ - if (Z_TYPE((ht)->arData[first].val) != IS_UNDEF) \ - break; \ - first++; \ - } \ - while (last > first) { \ - last--; \ - if (Z_TYPE((ht)->arData[last].val) != IS_UNDEF) \ - break; \ - } \ - if (first != last) { \ - Bucket tmp = (ht)->arData[first]; \ - (ht)->arData[first] = (ht)->arData[last]; \ - (ht)->arData[last] = tmp; \ - zend_hash_rehash(ht); \ - } \ + Bucket tmp = (ht)->arData[(ht)->nNumUsed-1]; \ + memmove((ht)->arData + 1, (ht)->arData, \ + sizeof(Bucket) * ((ht)->nNumUsed - 1)); \ + (ht)->arData[0] = tmp; \ + zend_hash_rehash(ht); \ } while (0) /* {{{ proto bool spl_autoload_register([mixed autoload_function = "spl_autoload" [, throw = true [, prepend]]]) diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index 9405dafa0d..f9fe83e26d 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -1596,7 +1596,7 @@ SPL_METHOD(GlobIterator, count) return; } - if (php_stream_is(intern->u.dir.dirp ,&php_glob_stream_ops)) { + if (intern->u.dir.dirp && php_stream_is(intern->u.dir.dirp ,&php_glob_stream_ops)) { RETURN_LONG(php_glob_stream_get_count(intern->u.dir.dirp, NULL)); } else { /* should not happen */ @@ -2083,6 +2083,8 @@ static int spl_filesystem_file_call(spl_filesystem_object *intern, zend_function zend_get_parameters_array_ex(pass_num_args, params + (arg2 ? 2 : 1)); + ZVAL_UNDEF(&retval); + fci.size = sizeof(fci); fci.function_table = EG(function_table); fci.object = NULL; @@ -2237,6 +2239,10 @@ static int spl_filesystem_file_read_line(zval * this_ptr, spl_filesystem_object static void spl_filesystem_file_rewind(zval * this_ptr, spl_filesystem_object *intern TSRMLS_DC) /* {{{ */ { + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } if (-1 == php_stream_rewind(intern->u.file.stream)) { zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Cannot rewind file %s", intern->file_name); } else { @@ -2368,6 +2374,11 @@ SPL_METHOD(SplFileObject, eof) return; } + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + RETURN_BOOL(php_stream_eof(intern->u.file.stream)); } /* }}} */ @@ -2384,6 +2395,9 @@ SPL_METHOD(SplFileObject, valid) if (SPL_HAS_FLAG(intern->flags, SPL_FILE_OBJECT_READ_AHEAD)) { RETURN_BOOL(intern->u.file.current_line || !Z_ISUNDEF(intern->u.file.current_zval)); } else { + if(!intern->u.file.stream) { + RETURN_FALSE; + } RETVAL_BOOL(!php_stream_eof(intern->u.file.stream)); } } /* }}} */ @@ -2398,6 +2412,11 @@ SPL_METHOD(SplFileObject, fgets) return; } + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + if (spl_filesystem_file_read(intern, 0 TSRMLS_CC) == FAILURE) { RETURN_FALSE; } @@ -2414,6 +2433,11 @@ SPL_METHOD(SplFileObject, current) return; } + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + if (!intern->u.file.current_line && Z_ISUNDEF(intern->u.file.current_zval)) { spl_filesystem_file_read_line(getThis(), intern, 1 TSRMLS_CC); } @@ -2556,6 +2580,12 @@ SPL_METHOD(SplFileObject, fgetcsv) int d_len = 0, e_len = 0, esc_len = 0; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sss", &delim, &d_len, &enclo, &e_len, &esc, &esc_len) == SUCCESS) { + + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + switch(ZEND_NUM_ARGS()) { case 3: @@ -2697,6 +2727,11 @@ SPL_METHOD(SplFileObject, fflush) { spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(getThis()); + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + RETURN_BOOL(!php_stream_flush(intern->u.file.stream)); } /* }}} */ @@ -2705,7 +2740,14 @@ SPL_METHOD(SplFileObject, fflush) SPL_METHOD(SplFileObject, ftell) { spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(getThis()); - long ret = php_stream_tell(intern->u.file.stream); + long ret; + + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + + ret = php_stream_tell(intern->u.file.stream); if (ret == -1) { RETURN_FALSE; @@ -2725,6 +2767,11 @@ SPL_METHOD(SplFileObject, fseek) return; } + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + spl_filesystem_file_free_line(intern TSRMLS_CC); RETURN_LONG(php_stream_seek(intern->u.file.stream, pos, whence)); } /* }}} */ @@ -2737,6 +2784,11 @@ SPL_METHOD(SplFileObject, fgetc) char buf[2]; int result; + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + spl_filesystem_file_free_line(intern TSRMLS_CC); result = php_stream_getc(intern->u.file.stream); @@ -2761,6 +2813,11 @@ SPL_METHOD(SplFileObject, fgetss) spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(getThis()); zval arg2; + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + if (intern->u.file.max_line_len > 0) { ZVAL_LONG(&arg2, intern->u.file.max_line_len); } else { @@ -2779,6 +2836,11 @@ SPL_METHOD(SplFileObject, fpassthru) { spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(getThis()); + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + RETURN_LONG(php_stream_passthru(intern->u.file.stream)); } /* }}} */ @@ -2788,6 +2850,11 @@ SPL_METHOD(SplFileObject, fscanf) { spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(getThis()); + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + spl_filesystem_file_free_line(intern TSRMLS_CC); intern->u.file.current_line_num++; @@ -2808,6 +2875,11 @@ SPL_METHOD(SplFileObject, fwrite) return; } + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + if (ZEND_NUM_ARGS() > 1) { str_len = MAX(0, MIN(length, str_len)); } @@ -2827,6 +2899,11 @@ SPL_METHOD(SplFileObject, fread) return; } + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + if (length <= 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Length parameter must be greater than 0"); RETURN_FALSE; @@ -2855,6 +2932,11 @@ SPL_METHOD(SplFileObject, ftruncate) return; } + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + if (!php_stream_truncate_supported(intern->u.file.stream)) { zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "Can't truncate file %s", intern->file_name); RETURN_FALSE; @@ -2869,15 +2951,20 @@ SPL_METHOD(SplFileObject, seek) { spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(getThis()); long line_pos; - + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &line_pos) == FAILURE) { return; } + if(!intern->u.file.stream) { + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Object not initialized"); + return; + } + if (line_pos < 0) { zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "Can't seek file %s to negative line %ld", intern->file_name, line_pos); RETURN_FALSE; } - + spl_filesystem_file_rewind(getThis(), intern TSRMLS_CC); while(intern->u.file.current_line_num < line_pos) { diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index ac9b9bef83..e503f9b581 100644 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -145,6 +145,29 @@ static inline spl_recursive_it_object *spl_recursive_it_from_obj(zend_object *ob (var) = it; \ } while (0) +#define SPL_FETCH_SUB_ELEMENT(var, object, element) \ + do { \ + if(!(object)->iterators) { \ + zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, \ + "The object is in an invalid state as the parent constructor was not called"); \ + return; \ + } \ + (var) = (object)->iterators[(object)->level].element; \ + } while (0) + +#define SPL_FETCH_SUB_ELEMENT_ADDR(var, object, element) \ + do { \ + if(!(object)->iterators) { \ + zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, \ + "The object is in an invalid state as the parent constructor was not called"); \ + return; \ + } \ + (var) = &(object)->iterators[(object)->level].element; \ + } while (0) + +#define SPL_FETCH_SUB_ITERATOR(var, object) SPL_FETCH_SUB_ELEMENT(var, object, iterator) + + static void spl_recursive_it_dtor(zend_object_iterator *_iter TSRMLS_DC) { spl_recursive_it_iterator *iter = (spl_recursive_it_iterator*)_iter; @@ -166,8 +189,11 @@ static int spl_recursive_it_valid_ex(spl_recursive_it_object *object, zval *zthi { zend_object_iterator *sub_iter; int level = object->level; - - while (level >= 0) { + + if(!object->iterators) { + return FAILURE; + } + while (level >=0) { sub_iter = object->iterators[level].iterator; if (sub_iter->funcs->valid(sub_iter TSRMLS_CC) == SUCCESS) { return SUCCESS; @@ -215,6 +241,8 @@ static void spl_recursive_it_move_forward_ex(spl_recursive_it_object *object, zv zend_object_iterator *sub_iter; int has_children; + SPL_FETCH_SUB_ITERATOR(iterator, object); + while (!EG(exception)) { next_step: iterator = object->iterators[object->level].iterator; @@ -375,9 +403,7 @@ static void spl_recursive_it_rewind_ex(spl_recursive_it_object *object, zval *zt { zend_object_iterator *sub_iter; - if (!object->iterators) { - php_error_docref(NULL TSRMLS_CC, E_ERROR, "The %s instance wasn't initialized properly", Z_OBJCE_P(zthis)->name->val); - } + SPL_FETCH_SUB_ITERATOR(sub_iter, object); while (object->level) { sub_iter = object->iterators[object->level].iterator; @@ -598,7 +624,7 @@ SPL_METHOD(RecursiveIteratorIterator, rewind) SPL_METHOD(RecursiveIteratorIterator, valid) { spl_recursive_it_object *object = Z_SPLRECURSIVE_IT_P(getThis()); - + if (zend_parse_parameters_none() == FAILURE) { return; } @@ -611,12 +637,14 @@ SPL_METHOD(RecursiveIteratorIterator, valid) SPL_METHOD(RecursiveIteratorIterator, key) { spl_recursive_it_object *object = Z_SPLRECURSIVE_IT_P(getThis()); - zend_object_iterator *iterator = object->iterators[object->level].iterator; - + zend_object_iterator *iterator; + if (zend_parse_parameters_none() == FAILURE) { return; } + SPL_FETCH_SUB_ITERATOR(iterator, object); + if (iterator->funcs->get_current_key) { iterator->funcs->get_current_key(iterator, return_value TSRMLS_CC); } else { @@ -629,13 +657,15 @@ SPL_METHOD(RecursiveIteratorIterator, key) SPL_METHOD(RecursiveIteratorIterator, current) { spl_recursive_it_object *object = Z_SPLRECURSIVE_IT_P(getThis()); - zend_object_iterator *iterator = object->iterators[object->level].iterator; + zend_object_iterator *iterator; zval *data; if (zend_parse_parameters_none() == FAILURE) { return; } + SPL_FETCH_SUB_ITERATOR(iterator, object); + data = iterator->funcs->get_current_data(iterator TSRMLS_CC); if (data) { RETURN_ZVAL(data, 1, 0); @@ -681,6 +711,13 @@ SPL_METHOD(RecursiveIteratorIterator, getSubIterator) if (level < 0 || level > object->level) { RETURN_NULL(); } + + if(!object->iterators) { + zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, + "The object is in an invalid state as the parent constructor was not called"); + return; + } + RETURN_ZVAL(&object->iterators[level].zobject, 1, 0); } /* }}} */ @@ -689,13 +726,15 @@ SPL_METHOD(RecursiveIteratorIterator, getSubIterator) SPL_METHOD(RecursiveIteratorIterator, getInnerIterator) { spl_recursive_it_object *object = Z_SPLRECURSIVE_IT_P(getThis()); - long level = object->level; + zval *zobject; if (zend_parse_parameters_none() == FAILURE) { return; } - - RETURN_ZVAL(&object->iterators[level].zobject, 1, 0); + + SPL_FETCH_SUB_ELEMENT_ADDR(zobject, object, zobject); + + RETURN_ZVAL(zobject, 1, 0); } /* }}} */ /* {{{ proto RecursiveIterator RecursiveIteratorIterator::beginIteration() @@ -723,13 +762,19 @@ SPL_METHOD(RecursiveIteratorIterator, endIteration) SPL_METHOD(RecursiveIteratorIterator, callHasChildren) { spl_recursive_it_object *object = Z_SPLRECURSIVE_IT_P(getThis()); - zend_class_entry *ce = object->iterators[object->level].ce; + zend_class_entry *ce; zval *zobject; if (zend_parse_parameters_none() == FAILURE) { return; } + if (!object->iterators) { + RETURN_NULL(); + } + + SPL_FETCH_SUB_ELEMENT(ce, object, ce); + zobject = &object->iterators[object->level].zobject; if (Z_TYPE_P(zobject) == IS_UNDEF) { RETURN_FALSE; @@ -746,13 +791,15 @@ SPL_METHOD(RecursiveIteratorIterator, callHasChildren) SPL_METHOD(RecursiveIteratorIterator, callGetChildren) { spl_recursive_it_object *object = Z_SPLRECURSIVE_IT_P(getThis()); - zend_class_entry *ce = object->iterators[object->level].ce; + zend_class_entry *ce; zval *zobject; if (zend_parse_parameters_none() == FAILURE) { return; } + SPL_FETCH_SUB_ELEMENT(ce, object, ce); + zobject = &object->iterators[object->level].zobject; if (Z_TYPE_P(zobject) == IS_UNDEF) { return; @@ -1068,7 +1115,13 @@ SPL_METHOD(RecursiveTreeIterator, getPrefix) if (zend_parse_parameters_none() == FAILURE) { return; } - + + if(!object->iterators) { + zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, + "The object is in an invalid state as the parent constructor was not called"); + return; + } + spl_recursive_tree_iterator_get_prefix(object, return_value TSRMLS_CC); } /* }}} */ @@ -1097,6 +1150,12 @@ SPL_METHOD(RecursiveTreeIterator, getEntry) if (zend_parse_parameters_none() == FAILURE) { return; } + + if(!object->iterators) { + zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, + "The object is in an invalid state as the parent constructor was not called"); + return; + } spl_recursive_tree_iterator_get_entry(object, return_value TSRMLS_CC); } /* }}} */ @@ -1110,6 +1169,12 @@ SPL_METHOD(RecursiveTreeIterator, getPostfix) if (zend_parse_parameters_none() == FAILURE) { return; } + + if(!object->iterators) { + zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, + "The object is in an invalid state as the parent constructor was not called"); + return; + } spl_recursive_tree_iterator_get_postfix(object, return_value TSRMLS_CC); } /* }}} */ @@ -1127,10 +1192,17 @@ SPL_METHOD(RecursiveTreeIterator, current) return; } + if(!object->iterators) { + zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, + "The object is in an invalid state as the parent constructor was not called"); + return; + } + if (object->flags & RTIT_BYPASS_CURRENT) { zend_object_iterator *iterator = object->iterators[object->level].iterator; zval *data; + SPL_FETCH_SUB_ITERATOR(iterator, object); data = iterator->funcs->get_current_data(iterator TSRMLS_CC); if (data) { RETURN_ZVAL(data, 1, 0); @@ -1173,7 +1245,7 @@ SPL_METHOD(RecursiveTreeIterator, current) SPL_METHOD(RecursiveTreeIterator, key) { spl_recursive_it_object *object = Z_SPLRECURSIVE_IT_P(getThis()); - zend_object_iterator *iterator = object->iterators[object->level].iterator; + zend_object_iterator *iterator; zval prefix, key, postfix, key_copy; char *ptr; zend_string *str; @@ -1182,6 +1254,8 @@ SPL_METHOD(RecursiveTreeIterator, key) return; } + SPL_FETCH_SUB_ITERATOR(iterator, object); + if (iterator->funcs->get_current_key) { iterator->funcs->get_current_key(iterator, &key TSRMLS_CC); } else { @@ -1196,7 +1270,7 @@ SPL_METHOD(RecursiveTreeIterator, key) } if (Z_TYPE(key) != IS_STRING) { - if (zend_make_printable_zval(&key, &key_copy)) { + if (zend_make_printable_zval(&key, &key_copy TSRMLS_CC)) { key = key_copy; } } @@ -1407,7 +1481,7 @@ static spl_dual_it_object* spl_dual_it_construct(INTERNAL_FUNCTION_PARAMETERS, z return NULL; } if (spl_cit_check_flags(flags) != SUCCESS) { - zend_throw_exception(spl_ce_InvalidArgumentException, "Flags must contain only one of CALL_TOSTRING, TOSTRING_USE_KEY, TOSTRING_USE_CURRENT, TOSTRING_USE_CURRENT", 0 TSRMLS_CC); + zend_throw_exception(spl_ce_InvalidArgumentException, "Flags must contain only one of CALL_TOSTRING, TOSTRING_USE_KEY, TOSTRING_USE_CURRENT, TOSTRING_USE_INNER", 0 TSRMLS_CC); zend_restore_error_handling(&error_handling TSRMLS_CC); return NULL; } @@ -1884,7 +1958,7 @@ SPL_METHOD(RecursiveCallbackFilterIterator, getChildren) return; } - intern = Z_SPLDUAL_IT_P(getThis()); + SPL_FETCH_AND_CHECK_DUAL_IT(intern, getThis()); zend_call_method_with_0_params(&intern->inner.zobject, intern->inner.ce, NULL, "getchildren", &retval); if (!EG(exception) && Z_TYPE(retval) != IS_UNDEF) { @@ -1972,7 +2046,7 @@ SPL_METHOD(RegexIterator, accept) } ZVAL_UNDEF(&subject_copy); - use_copy = zend_make_printable_zval(subject_ptr, &subject_copy); + use_copy = zend_make_printable_zval(subject_ptr, &subject_copy TSRMLS_CC); if (use_copy) { subject = Z_STRVAL(subject_copy); subject_len = Z_STRLEN(subject_copy); @@ -2609,15 +2683,10 @@ static inline void spl_caching_it_next(spl_dual_it_object *intern TSRMLS_DC) } else { ZVAL_COPY_VALUE(&intern->u.caching.zstr, &intern->current.data); } - use_copy = zend_make_printable_zval(&intern->u.caching.zstr, &expr_copy); + use_copy = zend_make_printable_zval(&intern->u.caching.zstr, &expr_copy TSRMLS_CC); if (use_copy) { - ZVAL_COPY(&intern->u.caching.zstr, &expr_copy); -//??? INIT_PZVAL(intern->u.caching.zstr); - //zval_copy_ctor(&intern->u.caching.zstr); - zval_dtor(&expr_copy); + ZVAL_COPY_VALUE(&intern->u.caching.zstr, &expr_copy); } else if (Z_REFCOUNTED(intern->u.caching.zstr)) { -//??? INIT_PZVAL(intern->u.caching.zstr); - //zval_copy_ctor(&intern->u.caching.zstr); Z_ADDREF(intern->u.caching.zstr); } } diff --git a/ext/spl/tests/bug54281.phpt b/ext/spl/tests/bug54281.phpt index d42d9e585d..71792eaa20 100644 --- a/ext/spl/tests/bug54281.phpt +++ b/ext/spl/tests/bug54281.phpt @@ -12,4 +12,8 @@ foreach($it as $k=>$v) { } ?> --EXPECTF-- -Fatal error: RecursiveIteratorIterator::rewind(): The RecursiveArrayIteratorIterator instance wasn't initialized properly in %s on line %d +Fatal error: Uncaught exception 'LogicException' with message 'The object is in an invalid state as the parent constructor was not called' in %s:%d +Stack trace: +#0 %s/bug54281.php(8): RecursiveIteratorIterator->rewind() +#1 {main} + thrown in %s/bug54281.php on line 8 diff --git a/ext/spl/tests/spl_caching_iterator_constructor_flags.phpt b/ext/spl/tests/spl_caching_iterator_constructor_flags.phpt index 499cd67559..dcb4287c45 100644 --- a/ext/spl/tests/spl_caching_iterator_constructor_flags.phpt +++ b/ext/spl/tests/spl_caching_iterator_constructor_flags.phpt @@ -21,5 +21,5 @@ $test = new CachingIterator($arrayIterator, 3); // this throws an exception ?> ===DONE=== --EXPECTF-- -Flags must contain only one of CALL_TOSTRING, TOSTRING_USE_KEY, TOSTRING_USE_CURRENT, TOSTRING_USE_CURRENT +Flags must contain only one of CALL_TOSTRING, TOSTRING_USE_KEY, TOSTRING_USE_CURRENT, TOSTRING_USE_INNER ===DONE=== diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index c31ef3e1c1..54c80972c9 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -54,7 +54,7 @@ static void php_sqlite3_error(php_sqlite3_db_object *db_obj, char *format, ...) vspprintf(&message, 0, format, arg); va_end(arg); - if (db_obj->exception) { + if (db_obj && db_obj->exception) { zend_throw_exception(zend_exception_get_default(TSRMLS_C), message, 0 TSRMLS_CC); } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", message); @@ -67,11 +67,17 @@ static void php_sqlite3_error(php_sqlite3_db_object *db_obj, char *format, ...) /* }}} */ #define SQLITE3_CHECK_INITIALIZED(db_obj, member, class_name) \ - if (!(member)) { \ + if (!(db_obj) || !(member)) { \ php_sqlite3_error(db_obj, "The " #class_name " object has not been correctly initialised"); \ RETURN_FALSE; \ } +#define SQLITE3_CHECK_INITIALIZED_STMT(member, class_name) \ + if (!(member)) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "The " #class_name " object has not been correctly initialised"); \ + RETURN_FALSE; \ + } + /* {{{ PHP_INI */ PHP_INI_BEGIN() @@ -191,12 +197,14 @@ PHP_METHOD(sqlite3, close) } if (db_obj->initialised) { - zend_llist_clean(&(db_obj->free_list)); - errcode = sqlite3_close(db_obj->db); - if (errcode != SQLITE_OK) { - php_sqlite3_error(db_obj, "Unable to close database: %d, %s", errcode, sqlite3_errmsg(db_obj->db)); - RETURN_FALSE; - } + zend_llist_clean(&(db_obj->free_list)); + if(db_obj->db) { + errcode = sqlite3_close(db_obj->db); + if (errcode != SQLITE_OK) { + php_sqlite3_error(db_obj, "Unable to close database: %d, %s", errcode, sqlite3_errmsg(db_obj->db)); + RETURN_FALSE; + } + } db_obj->initialised = 0; } @@ -1242,6 +1250,8 @@ PHP_METHOD(sqlite3stmt, paramCount) return; } + SQLITE3_CHECK_INITIALIZED_STMT(stmt_obj->stmt, SQLite3Stmt); + RETURN_LONG(sqlite3_bind_parameter_count(stmt_obj->stmt)); } /* }}} */ @@ -1258,7 +1268,9 @@ PHP_METHOD(sqlite3stmt, close) return; } - zend_llist_del_element(&(stmt_obj->db_obj->free_list), object, (int (*)(void *, void *)) php_sqlite3_compare_stmt_zval_free); + if(stmt_obj->db_obj) { + zend_llist_del_element(&(stmt_obj->db_obj->free_list), object, (int (*)(void *, void *)) php_sqlite3_compare_stmt_zval_free); + } RETURN_TRUE; } @@ -1276,6 +1288,8 @@ PHP_METHOD(sqlite3stmt, reset) return; } + SQLITE3_CHECK_INITIALIZED_STMT(stmt_obj->stmt, SQLite3Stmt); + if (sqlite3_reset(stmt_obj->stmt) != SQLITE_OK) { php_sqlite3_error(stmt_obj->db_obj, "Unable to reset statement: %s", sqlite3_errmsg(sqlite3_db_handle(stmt_obj->stmt))); RETURN_FALSE; @@ -1296,6 +1310,8 @@ PHP_METHOD(sqlite3stmt, clear) return; } + SQLITE3_CHECK_INITIALIZED_STMT(stmt_obj->stmt, SQLite3Stmt); + if (sqlite3_clear_bindings(stmt_obj->stmt) != SQLITE_OK) { php_sqlite3_error(stmt_obj->db_obj, "Unable to clear statement: %s", sqlite3_errmsg(sqlite3_db_handle(stmt_obj->stmt))); RETURN_FALSE; @@ -1317,6 +1333,8 @@ PHP_METHOD(sqlite3stmt, readOnly) return; } + SQLITE3_CHECK_INITIALIZED_STMT(stmt_obj->stmt, SQLite3Stmt); + #if SQLITE_VERSION_NUMBER >= 3007004 if (sqlite3_stmt_readonly(stmt_obj->stmt)) { RETURN_TRUE; @@ -1390,6 +1408,8 @@ PHP_METHOD(sqlite3stmt, bindParam) } } + SQLITE3_CHECK_INITIALIZED_STMT(stmt_obj->stmt, SQLite3Stmt); + ZVAL_COPY(¶m.parameter, parameter); if (!register_bound_parameter_to_sqlite(¶m, stmt_obj TSRMLS_CC)) { @@ -1422,6 +1442,8 @@ PHP_METHOD(sqlite3stmt, bindValue) } } + SQLITE3_CHECK_INITIALIZED_STMT(stmt_obj->stmt, SQLite3Stmt); + ZVAL_COPY(¶m.parameter, parameter); if (!register_bound_parameter_to_sqlite(¶m, stmt_obj TSRMLS_CC)) { @@ -1980,7 +2002,6 @@ static void php_sqlite3_free_list_dtor(void **item) static int php_sqlite3_compare_stmt_zval_free(php_sqlite3_free_list **free_list, zval *statement ) /* {{{ */ { - //????? return ((*free_list)->stmt_obj->initialised && statement == (*free_list)->stmt_obj_zval); return ((*free_list)->stmt_obj->initialised && Z_PTR_P(statement) == Z_PTR((*free_list)->stmt_obj_zval)); } /* }}} */ diff --git a/ext/standard/array.c b/ext/standard/array.c index 0e01b2ec68..a177ee7e0f 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -332,14 +332,11 @@ PHP_FUNCTION(count) #ifdef HAVE_SPL /* if not and the object implements Countable we call its count() method */ if (Z_OBJ_HT_P(array)->get_class_entry && instanceof_function(Z_OBJCE_P(array), spl_ce_Countable TSRMLS_CC)) { - zval mode_zv; - ZVAL_LONG(&mode_zv, mode); - zend_call_method_with_1_params(array, NULL, NULL, "count", &retval, &mode_zv); + zend_call_method_with_0_params(array, NULL, NULL, "count", &retval); if (Z_TYPE(retval) != IS_UNDEF) { RETVAL_LONG(zval_get_long(&retval)); zval_ptr_dtor(&retval); } - zval_ptr_dtor(&mode_zv); return; } #endif @@ -607,6 +604,7 @@ static int php_array_user_compare(const void *a, const void *b TSRMLS_DC) /* {{{ PHP_FUNCTION(usort) { zval *array; + zend_refcounted *arr; unsigned int refcount; PHP_ARRAY_CMP_FUNC_VARS; @@ -617,30 +615,31 @@ PHP_FUNCTION(usort) return; } - /* Clear the is_ref flag, so the attemts to modify the array in user + /* Increase reference counter, so the attemts to modify the array in user * comparison function will create a copy of array and won't affect the * original array. The fact of modification is detected using refcount * comparison. The result of sorting in such case is undefined and the * function returns FALSE. */ -//??? Z_UNSET_ISREF_P(array); + Z_ADDREF_P(array); refcount = Z_REFCOUNT_P(array); + arr = Z_COUNTED_P(array); if (zend_hash_sort(Z_ARRVAL_P(array), zend_qsort, php_array_user_compare, 1 TSRMLS_CC) == FAILURE) { RETVAL_FALSE; } else { if (refcount > Z_REFCOUNT_P(array)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array was modified by the user comparison function"); + if (--GC_REFCOUNT(arr) <= 0) { + _zval_dtor_func(arr ZEND_FILE_LINE_CC); + } RETVAL_FALSE; } else { + Z_DELREF_P(array); RETVAL_TRUE; } } - if (Z_REFCOUNT_P(array) > 1) { -//??? Z_SET_ISREF_P(array); - } - PHP_ARRAY_CMP_FUNC_RESTORE(); } /* }}} */ @@ -650,6 +649,7 @@ PHP_FUNCTION(usort) PHP_FUNCTION(uasort) { zval *array; + zend_refcounted *arr; unsigned int refcount; PHP_ARRAY_CMP_FUNC_VARS; @@ -660,30 +660,31 @@ PHP_FUNCTION(uasort) return; } - /* Clear the is_ref flag, so the attemts to modify the array in user - * comaprison function will create a copy of array and won't affect the + /* Increase reference counter, so the attemts to modify the array in user + * comparison function will create a copy of array and won't affect the * original array. The fact of modification is detected using refcount * comparison. The result of sorting in such case is undefined and the * function returns FALSE. */ -//??? Z_UNSET_ISREF_P(array); + Z_ADDREF_P(array); refcount = Z_REFCOUNT_P(array); + arr = Z_COUNTED_P(array); if (zend_hash_sort(Z_ARRVAL_P(array), zend_qsort, php_array_user_compare, 0 TSRMLS_CC) == FAILURE) { RETVAL_FALSE; } else { if (refcount > Z_REFCOUNT_P(array)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array was modified by the user comparison function"); + if (--GC_REFCOUNT(arr) <= 0) { + _zval_dtor_func(arr ZEND_FILE_LINE_CC); + } RETVAL_FALSE; } else { + Z_DELREF_P(array); RETVAL_TRUE; } } - if (Z_REFCOUNT_P(array) > 1) { -//??? Z_SET_ISREF_P(array); - } - PHP_ARRAY_CMP_FUNC_RESTORE(); } /* }}} */ @@ -736,6 +737,7 @@ static int php_array_user_key_compare(const void *a, const void *b TSRMLS_DC) /* PHP_FUNCTION(uksort) { zval *array; + zend_refcounted *arr; unsigned int refcount; PHP_ARRAY_CMP_FUNC_VARS; @@ -746,30 +748,31 @@ PHP_FUNCTION(uksort) return; } - /* Clear the is_ref flag, so the attemts to modify the array in user - * comaprison function will create a copy of array and won't affect the + /* Increase reference counter, so the attemts to modify the array in user + * comparison function will create a copy of array and won't affect the * original array. The fact of modification is detected using refcount * comparison. The result of sorting in such case is undefined and the * function returns FALSE. */ -//??? Z_UNSET_ISREF_P(array); + Z_ADDREF_P(array); refcount = Z_REFCOUNT_P(array); + arr = Z_COUNTED_P(array); if (zend_hash_sort(Z_ARRVAL_P(array), zend_qsort, php_array_user_key_compare, 0 TSRMLS_CC) == FAILURE) { RETVAL_FALSE; } else { if (refcount > Z_REFCOUNT_P(array)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array was modified by the user comparison function"); + if (--GC_REFCOUNT(arr) <= 0) { + _zval_dtor_func(arr ZEND_FILE_LINE_CC); + } RETVAL_FALSE; } else { + Z_DELREF_P(array); RETVAL_TRUE; } } - if (Z_REFCOUNT_P(array) > 1) { -//??? Z_SET_ISREF_P(array); - } - PHP_ARRAY_CMP_FUNC_RESTORE(); } /* }}} */ @@ -2079,7 +2082,7 @@ static void _phpi_pop(INTERNAL_FUNCTION_PARAMETERS, int off_the_end) zend_hash_rehash(Z_ARRVAL_P(stack)); } } - } else if (!key && index >= Z_ARRVAL_P(stack)->nNextFreeElement - 1) { + } else if (!key && Z_ARRVAL_P(stack)->nNextFreeElement > 0 && index >= Z_ARRVAL_P(stack)->nNextFreeElement - 1) { Z_ARRVAL_P(stack)->nNextFreeElement = Z_ARRVAL_P(stack)->nNextFreeElement - 1; } diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index d4c4f3962f..17bdae5719 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -1758,6 +1758,11 @@ ZEND_BEGIN_ARG_INFO(arginfo_fmod, 0) ZEND_ARG_INFO(0, x) ZEND_ARG_INFO(0, y) ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO(arginfo_intdiv, 0) + ZEND_ARG_INFO(0, numerator) + ZEND_ARG_INFO(0, divisor) +ZEND_END_ARG_INFO() /* }}} */ /* {{{ md5.c */ ZEND_BEGIN_ARG_INFO_EX(arginfo_md5, 0, 0, 1) @@ -2635,7 +2640,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_serialize, 0) ZEND_ARG_INFO(0, var) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_unserialize, 0, 0, 1) +ZEND_BEGIN_ARG_INFO(arginfo_unserialize, 0) ZEND_ARG_INFO(0, variable_representation) ZEND_END_ARG_INFO() @@ -2894,6 +2899,7 @@ const zend_function_entry basic_functions[] = { /* {{{ */ PHP_FE(base_convert, arginfo_base_convert) PHP_FE(number_format, arginfo_number_format) PHP_FE(fmod, arginfo_fmod) + PHP_FE(intdiv, arginfo_intdiv) #ifdef HAVE_INET_NTOP PHP_RAW_NAMED_FE(inet_ntop, php_inet_ntop, arginfo_inet_ntop) #endif diff --git a/ext/standard/config.m4 b/ext/standard/config.m4 index 3d00d88dda..67952163aa 100644 --- a/ext/standard/config.m4 +++ b/ext/standard/config.m4 @@ -338,7 +338,7 @@ fi dnl dnl Check for available functions dnl -AC_CHECK_FUNCS(getcwd getwd asinh acosh atanh log1p hypot glob strfmon nice fpclass isinf isnan mempcpy strpncpy) +AC_CHECK_FUNCS(getcwd getwd asinh acosh atanh log1p log2 hypot glob strfmon nice fpclass isinf isnan mempcpy strpncpy) AC_FUNC_FNMATCH dnl diff --git a/ext/standard/dl.c b/ext/standard/dl.c index 012592381b..19573d8e42 100644 --- a/ext/standard/dl.c +++ b/ext/standard/dl.c @@ -145,7 +145,7 @@ PHPAPI int php_load_extension(char *filename, int type, int start_now TSRMLS_DC) if (!handle) { #if PHP_WIN32 char *err = GET_DL_ERROR(); - if (err && (*err != "")) { + if (err && (*err != '\0')) { php_error_docref(NULL TSRMLS_CC, error_type, "Unable to load dynamic library '%s' - %s", libpath, err); LocalFree(err); } else { diff --git a/ext/standard/fsock.c b/ext/standard/fsock.c index e11bb84056..300df8c1c0 100644 --- a/ext/standard/fsock.c +++ b/ext/standard/fsock.c @@ -43,7 +43,7 @@ static void php_fsockopen_stream(INTERNAL_FUNCTION_PARAMETERS, int persistent) int err; char *hostname = NULL; long hostname_len; - char *errstr = NULL; + zend_string *errstr = NULL; RETVAL_FALSE; @@ -83,7 +83,7 @@ static void php_fsockopen_stream(INTERNAL_FUNCTION_PARAMETERS, int persistent) efree(hostname); } if (stream == NULL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to connect to %s:%ld (%s)", host, port, errstr == NULL ? "Unknown error" : errstr); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to connect to %s:%ld (%s)", host, port, errstr == NULL ? "Unknown error" : errstr->val); } if (hashkey) { @@ -98,18 +98,16 @@ static void php_fsockopen_stream(INTERNAL_FUNCTION_PARAMETERS, int persistent) if (zerrstr && errstr) { /* no need to dup; we need to efree buf anyway */ zval_dtor(zerrstr); - // TODO: avoid reallocation ??? - ZVAL_STRING(zerrstr, errstr); - efree(errstr); + ZVAL_STR(zerrstr, errstr); } else if (!zerrstr && errstr) { - efree(errstr); + STR_RELEASE(errstr); } RETURN_FALSE; } if (errstr) { - efree(errstr); + STR_RELEASE(errstr); } php_stream_to_zval(stream, return_value); diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c index d8f31960cc..73952dda31 100644 --- a/ext/standard/http_fopen_wrapper.c +++ b/ext/standard/http_fopen_wrapper.c @@ -130,7 +130,8 @@ php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper, char tmp_line[128]; size_t chunk_size = 0, file_size = 0; int eol_detect = 0; - char *transport_string, *errstr = NULL; + char *transport_string; + zend_string *errstr = NULL; int transport_len, have_header = 0, request_fulluri = 0, ignore_errors = 0; char *protocol_version = NULL; int protocol_version_len = 3; /* Default: "1.0" */ @@ -216,8 +217,8 @@ php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper, } if (errstr) { - php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "%s", errstr); - efree(errstr); + php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "%s", errstr->val); + STR_RELEASE(errstr); errstr = NULL; } @@ -229,7 +230,7 @@ php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper, /* Set peer_name or name verification will try to use the proxy server name */ if (!context || (tmpzval = php_stream_context_get_option(context, "ssl", "peer_name")) == NULL) { ZVAL_STRING(&ssl_proxy_peer_name, resource->host); - php_stream_context_set_option(stream->context, "ssl", "peer_name", &ssl_proxy_peer_name); + php_stream_context_set_option(PHP_STREAM_CONTEXT(stream), "ssl", "peer_name", &ssl_proxy_peer_name); } smart_str_appendl(&header, "CONNECT ", sizeof("CONNECT ")-1); diff --git a/ext/standard/info.c b/ext/standard/info.c index 311b2f89e1..47249466b0 100644 --- a/ext/standard/info.c +++ b/ext/standard/info.c @@ -587,6 +587,14 @@ PHPAPI zend_string *php_get_uname(char mode) php_get_windows_cpu(wincpu, sizeof(wincpu)); dwBuild = (DWORD)(HIWORD(dwVersion)); + + /* Windows "version" 6.2 could be Windows 8/Windows Server 2012, but also Windows 8.1/Windows Server 2012 R2 */ + if (dwWindowsMajorVersion == 6 && dwWindowsMinorVersion == 2) { + if (strncmp(winver, "Windows 8.1", 11) == 0 || strncmp(winver, "Windows Server 2012 R2", 22) == 0) { + dwWindowsMinorVersion = 3; + } + } + snprintf(tmp_uname, sizeof(tmp_uname), "%s %s %d.%d build %d (%s) %s", "Windows NT", ComputerName, dwWindowsMajorVersion, dwWindowsMinorVersion, dwBuild, winver?winver:"unknown", wincpu); @@ -847,7 +855,6 @@ PHPAPI void php_print_info(int flag TSRMLS_DC) HashTable sorted_registry; zend_hash_init(&sorted_registry, zend_hash_num_elements(&module_registry), NULL, NULL, 1); -//??? zend_hash_copy(&sorted_registry, &module_registry, NULL, &tmp, sizeof(zend_module_entry)); zend_hash_copy(&sorted_registry, &module_registry, NULL); zend_hash_sort(&sorted_registry, zend_qsort, module_name_cmp, 0 TSRMLS_CC); diff --git a/ext/standard/math.c b/ext/standard/math.c index 06723216c6..a392eb607c 100644 --- a/ext/standard/math.c +++ b/ext/standard/math.c @@ -792,15 +792,27 @@ PHP_FUNCTION(log) if (ZEND_NUM_ARGS() == 1) { RETURN_DOUBLE(log(num)); } - if (base <= 0.0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "base must be greater than 0"); - RETURN_FALSE; + +#ifdef HAVE_LOG2 + if (base == 2.0) { + RETURN_DOUBLE(log2(num)); + } +#endif + + if (base == 10.0) { + RETURN_DOUBLE(log10(num)); } - if (base == 1) { + + if (base == 1.0) { RETURN_DOUBLE(php_get_nan()); - } else { - RETURN_DOUBLE(log(num) / log(base)); } + + if (base <= 0.0) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "base must be greater than 0"); + RETURN_FALSE; + } + + RETURN_DOUBLE(log(num) / log(base)); } /* }}} */ @@ -1406,7 +1418,28 @@ PHP_FUNCTION(fmod) } /* }}} */ - +/* {{{ proto int intdiv(int numerator, int divisor) + Returns the integer division of the numerator by the divisor */ +PHP_FUNCTION(intdiv) +{ + long numerator, divisor; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &numerator, &divisor) == FAILURE) { + return; + } + + if (divisor == 0) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Division by zero"); + RETURN_BOOL(0); + } else if (divisor == -1 && numerator == LONG_MIN) { + /* Prevent overflow error/crash + We don't return a float here as that violates function contract */ + RETURN_LONG(0); + } + + RETURN_LONG(numerator/divisor); +} +/* }}} */ /* * Local variables: diff --git a/ext/standard/php_math.h b/ext/standard/php_math.h index 0334ac40ce..a2dca282c5 100644 --- a/ext/standard/php_math.h +++ b/ext/standard/php_math.h @@ -66,6 +66,7 @@ PHP_FUNCTION(number_format); PHP_FUNCTION(fmod); PHP_FUNCTION(deg2rad); PHP_FUNCTION(rad2deg); +PHP_FUNCTION(intdiv); /* WARNING: these functions are expermental: they could change their names or diff --git a/ext/standard/scanf.c b/ext/standard/scanf.c index ef3fe2969c..f5f97161f2 100644 --- a/ext/standard/scanf.c +++ b/ext/standard/scanf.c @@ -925,7 +925,7 @@ literal: __buf[1] = '\0';; current = args[objIndex++]; zval_dtor(*current); - ZVAL_STRINGL( *current, __buf, 1, 1); + ZVAL_STRINGL( *current, __buf, 1); } else { add_index_stringl(return_value, objIndex++, &sch, 1); } diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index fe51f48d52..652512ce07 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -40,7 +40,7 @@ typedef unsigned long long php_timeout_ull; typedef unsigned __int64 php_timeout_ull; #endif -#define GET_CTX_OPT(stream, wrapper, name, val) (stream->context && NULL != (val = php_stream_context_get_option(stream->context, wrapper, name))) +#define GET_CTX_OPT(stream, wrapper, name, val) (PHP_STREAM_CONTEXT(stream) && NULL != (val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), wrapper, name))) static php_stream_context *decode_context_param(zval *contextresource TSRMLS_DC); @@ -97,7 +97,7 @@ PHP_FUNCTION(stream_socket_client) php_stream *stream = NULL; int err; long flags = PHP_STREAM_CLIENT_CONNECT; - char *errstr = NULL; + zend_string *errstr = NULL; php_stream_context *context = NULL; RETVAL_FALSE; @@ -140,7 +140,7 @@ PHP_FUNCTION(stream_socket_client) /* host might contain binary characters */ zend_string *quoted_host = php_addslashes(host, host_len, 0 TSRMLS_CC); - php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to connect to %s (%s)", quoted_host->val, errstr == NULL ? "Unknown error" : errstr); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to connect to %s (%s)", quoted_host->val, errstr == NULL ? "Unknown error" : errstr->val); STR_RELEASE(quoted_host); } @@ -154,19 +154,16 @@ PHP_FUNCTION(stream_socket_client) ZVAL_LONG(zerrno, err); } if (zerrstr && errstr) { - /* no need to dup; we need to efree buf anyway */ zval_dtor(zerrstr); - // TODO: avoid reallocation ??? - ZVAL_STRING(zerrstr, errstr); - efree(errstr); + ZVAL_STR(zerrstr, errstr); } else if (errstr) { - efree(errstr); + STR_RELEASE(errstr); } RETURN_FALSE; } if (errstr) { - efree(errstr); + STR_RELEASE(errstr); } php_stream_to_zval(stream, return_value); @@ -184,7 +181,7 @@ PHP_FUNCTION(stream_socket_server) php_stream *stream = NULL; int err = 0; long flags = STREAM_XPORT_BIND | STREAM_XPORT_LISTEN; - char *errstr = NULL; + zend_string *errstr = NULL; php_stream_context *context = NULL; RETVAL_FALSE; @@ -213,7 +210,7 @@ PHP_FUNCTION(stream_socket_server) NULL, NULL, context, &errstr, &err); if (stream == NULL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to connect to %s (%s)", host, errstr == NULL ? "Unknown error" : errstr); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to connect to %s (%s)", host, errstr == NULL ? "Unknown error" : errstr->val); } if (stream == NULL) { @@ -222,19 +219,16 @@ PHP_FUNCTION(stream_socket_server) ZVAL_LONG(zerrno, err); } if (zerrstr && errstr) { - /* no need to dup; we need to efree buf anyway */ zval_dtor(zerrstr); - // TODO: avoid reallocation ??? - ZVAL_STRING(zerrstr, errstr); - efree(errstr); + ZVAL_STR(zerrstr, errstr); } else if (errstr) { - efree(errstr); + STR_RELEASE(errstr); } RETURN_FALSE; } if (errstr) { - efree(errstr); + STR_RELEASE(errstr); } php_stream_to_zval(stream, return_value); @@ -247,14 +241,12 @@ PHP_FUNCTION(stream_socket_accept) { double timeout = FG(default_socket_timeout); zval *zpeername = NULL; - char *peername = NULL; - int peername_len; + zend_string *peername = NULL; php_timeout_ull conv; struct timeval tv; php_stream *stream = NULL, *clistream = NULL; zval *zstream; - - char *errstr = NULL; + zend_string *errstr = NULL; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|dz/", &zstream, &timeout, &zpeername) == FAILURE) { RETURN_FALSE; @@ -278,24 +270,21 @@ PHP_FUNCTION(stream_socket_accept) if (0 == php_stream_xport_accept(stream, &clistream, zpeername ? &peername : NULL, - zpeername ? &peername_len : NULL, NULL, NULL, &tv, &errstr TSRMLS_CC) && clistream) { if (peername) { - // TODO: avoid reallocation ??? - ZVAL_STRINGL(zpeername, peername, peername_len); - efree(peername); + ZVAL_STR(zpeername, peername); } php_stream_to_zval(clistream, return_value); } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "accept failed: %s", errstr ? errstr : "Unknown error"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "accept failed: %s", errstr ? errstr->val : "Unknown error"); RETVAL_FALSE; } if (errstr) { - efree(errstr); + STR_RELEASE(errstr); } } /* }}} */ @@ -307,8 +296,7 @@ PHP_FUNCTION(stream_socket_get_name) php_stream *stream; zval *zstream; zend_bool want_peer; - char *name = NULL; - int name_len; + zend_string *name = NULL; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb", &zstream, &want_peer) == FAILURE) { RETURN_FALSE; @@ -318,15 +306,12 @@ PHP_FUNCTION(stream_socket_get_name) if (0 != php_stream_xport_get_name(stream, want_peer, &name, - &name_len, NULL, NULL TSRMLS_CC)) { RETURN_FALSE; } - // TODO: avoid reallocation ??? - RETVAL_STRINGL(name, name_len); - efree(name); + RETVAL_STR(name); } /* }}} */ @@ -365,8 +350,7 @@ PHP_FUNCTION(stream_socket_recvfrom) { php_stream *stream; zval *zstream, *zremote = NULL; - char *remote_addr = NULL; - int remote_addr_len; + zend_string *remote_addr = NULL; long to_read = 0; zend_string *read_buf; long flags = 0; @@ -391,15 +375,12 @@ PHP_FUNCTION(stream_socket_recvfrom) read_buf = STR_ALLOC(to_read, 0); recvd = php_stream_xport_recvfrom(stream, read_buf->val, to_read, flags, NULL, NULL, - zremote ? &remote_addr : NULL, - zremote ? &remote_addr_len : NULL + zremote ? &remote_addr : NULL TSRMLS_CC); if (recvd >= 0) { if (zremote) { - // TODO: avoid reallocation ??? - ZVAL_STRINGL(zremote, remote_addr, remote_addr_len); - efree(remote_addr); + ZVAL_STR(zremote, remote_addr); } read_buf->val[recvd] = '\0'; read_buf->len = recvd; @@ -939,13 +920,14 @@ static php_stream_context *decode_context_param(zval *contextresource TSRMLS_DC) stream = zend_fetch_resource(contextresource TSRMLS_CC, -1, NULL, NULL, 2, php_file_le_stream(), php_file_le_pstream); if (stream) { - context = stream->context; + context = PHP_STREAM_CONTEXT(stream); if (context == NULL) { /* Only way this happens is if file is opened with NO_DEFAULT_CONTEXT param, but then something is called which requires a context. Don't give them the default one though since they already said they didn't want it. */ - context = stream->context = php_stream_context_alloc(TSRMLS_C); + context = php_stream_context_alloc(TSRMLS_C); + stream->ctx = context->res; } } } diff --git a/ext/standard/string.c b/ext/standard/string.c index 5f4f360ca6..82b98eb094 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -146,41 +146,43 @@ static zend_string *php_bin2hex(const unsigned char *old, const size_t oldlen) /* {{{ php_hex2bin */ -static char *php_hex2bin(const unsigned char *old, const size_t oldlen, size_t *newlen) +static zend_string *php_hex2bin(const unsigned char *old, const size_t oldlen) { size_t target_length = oldlen >> 1; - register unsigned char *str = (unsigned char *)safe_emalloc(target_length, sizeof(char), 1); + zend_string *str = STR_ALLOC(target_length, 0); + unsigned char *ret = (unsigned char *)str->val; size_t i, j; + for (i = j = 0; i < target_length; i++) { - char c = old[j++]; + unsigned char c = old[j++]; + unsigned char d; + if (c >= '0' && c <= '9') { - str[i] = (c - '0') << 4; + d = (c - '0') << 4; } else if (c >= 'a' && c <= 'f') { - str[i] = (c - 'a' + 10) << 4; + d = (c - 'a' + 10) << 4; } else if (c >= 'A' && c <= 'F') { - str[i] = (c - 'A' + 10) << 4; + d = (c - 'A' + 10) << 4; } else { - efree(str); + STR_FREE(str); return NULL; } c = old[j++]; if (c >= '0' && c <= '9') { - str[i] |= c - '0'; + d |= c - '0'; } else if (c >= 'a' && c <= 'f') { - str[i] |= c - 'a' + 10; + d |= c - 'a' + 10; } else if (c >= 'A' && c <= 'F') { - str[i] |= c - 'A' + 10; + d |= c - 'A' + 10; } else { - efree(str); + STR_FREE(str); return NULL; } + ret[i] = d; } - str[target_length] = '\0'; - - if (newlen) - *newlen = target_length; + ret[i] = '\0'; - return (char *)str; + return str; } /* }}} */ @@ -256,29 +258,25 @@ PHP_FUNCTION(bin2hex) Converts the hex representation of data to binary */ PHP_FUNCTION(hex2bin) { - char *result, *data; - size_t newlen; - int datalen; + zend_string *result, *data; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &data, &datalen) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &data) == FAILURE) { return; } - if (datalen % 2 != 0) { + if (data->len % 2 != 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Hexadecimal input string must have an even length"); RETURN_FALSE; } - result = php_hex2bin((unsigned char *)data, datalen, &newlen); + result = php_hex2bin((unsigned char *)data->val, data->len); if (!result) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Input string must be hexadecimal string"); RETURN_FALSE; } - // TODO: avoid reallocation ??? - RETVAL_STRINGL(result, newlen); - efree(result); + RETVAL_STR(result); } /* }}} */ @@ -2457,7 +2455,7 @@ PHP_FUNCTION(substr_replace) orig_str = tmp_str; } - /* + /*??? refcount = Z_REFCOUNT_P(orig_str); */ @@ -2528,7 +2526,7 @@ PHP_FUNCTION(substr_replace) } else { repl_str = tmp_repl; } - /* + /*??? if (Z_REFCOUNT_P(orig_str) != refcount) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument was modified while replacing"); if (Z_TYPE_P(tmp_repl) != IS_STRING) { @@ -3375,7 +3373,7 @@ PHPAPI zend_string *php_addcslashes(const char *str, int length, int should_free new_str = STR_REALLOC(new_str, newlen, 0); } if (should_free) { -//??? STR_FREE((char*)str); + efree((char*)str); } return new_str; } @@ -3420,7 +3418,7 @@ PHPAPI zend_string *php_addslashes(char *str, int length, int should_free TSRMLS *target = 0; if (should_free) { -//??? STR_FREE(str); + efree(str); } new_str = STR_REALLOC(new_str, target - new_str->val, 0); diff --git a/ext/standard/tests/array/bug67064.phpt b/ext/standard/tests/array/bug67064.phpt deleted file mode 100644 index 2818516dac..0000000000 --- a/ext/standard/tests/array/bug67064.phpt +++ /dev/null @@ -1,17 +0,0 @@ ---TEST-- -Bug #67064 (Countable interface prevents using 2nd parameter ($mode) of count() function) ---FILE-- -<?php -class Counter implements Countable { - public function count($mode = COUNT_NORMAL) { - var_dump($mode == COUNT_RECURSIVE); - return 1; - } -} - -$counter = new Counter; -var_dump(count($counter, COUNT_RECURSIVE)); -?> ---EXPECTF-- -bool(true) -int(1) diff --git a/ext/standard/tests/array/bug67693.phpt b/ext/standard/tests/array/bug67693.phpt new file mode 100644 index 0000000000..516436c511 --- /dev/null +++ b/ext/standard/tests/array/bug67693.phpt @@ -0,0 +1,25 @@ +--TEST-- +Bug #67693 - incorrect push to empty array +--FILE-- +<?php + +$array = array(-1 => 0); + +array_pop($array); + +array_push($array, 0); +array_push($array, 0); + +var_dump($array); + +echo"\nDone"; +?> +--EXPECT-- +array(2) { + [0]=> + int(0) + [1]=> + int(0) +} + +Done diff --git a/ext/standard/tests/math/intdiv.phpt b/ext/standard/tests/math/intdiv.phpt new file mode 100644 index 0000000000..d37d2e8004 --- /dev/null +++ b/ext/standard/tests/math/intdiv.phpt @@ -0,0 +1,25 @@ +--TEST-- +intdiv functionality +--FILE-- +<?php +var_dump(intdiv(3, 2)); +var_dump(intdiv(-3, 2)); +var_dump(intdiv(3, -2)); +var_dump(intdiv(-3, -2)); +var_dump(intdiv(PHP_INT_MAX, PHP_INT_MAX)); +var_dump(intdiv(-PHP_INT_MAX - 1, -PHP_INT_MAX - 1)); +var_dump(intdiv(-PHP_INT_MAX - 1, -1)); +var_dump(intdiv(1, 0)); + +?> +--EXPECTF-- +int(1) +int(-1) +int(-1) +int(1) +int(1) +int(1) +int(0) + +Warning: intdiv(): Division by zero in %s on line 9 +bool(false) diff --git a/ext/standard/tests/math/intdiv_64bit.phpt b/ext/standard/tests/math/intdiv_64bit.phpt new file mode 100644 index 0000000000..c674dd3b85 --- /dev/null +++ b/ext/standard/tests/math/intdiv_64bit.phpt @@ -0,0 +1,15 @@ +--TEST-- +intdiv functionality +--SKIPIF-- +<?php +if (PHP_INT_SIZE !== 8) { + die("skip this test is for 64-bit platforms only"); +} +?> +--FILE-- +<?php +// (int)(PHP_INT_MAX / 3) gives a different result +var_dump(intdiv(PHP_INT_MAX, 3)); +?> +--EXPECTF-- +int(3074457345618258602)
\ No newline at end of file diff --git a/ext/standard/type.c b/ext/standard/type.c index ab3224628c..2a2988dee5 100644 --- a/ext/standard/type.c +++ b/ext/standard/type.c @@ -66,7 +66,8 @@ PHP_FUNCTION(gettype) res_len = sizeof("object of type ")-1 + Z_OBJCE_P(arg)->name_length; spprintf(&result, 0, "object of type %s", Z_OBJCE_P(arg)->name); - RETVAL_STRINGL(result, res_len, 0); + RETVAL_STRINGL(result, res_len); + efree(result); } */ break; diff --git a/ext/standard/user_filters.c b/ext/standard/user_filters.c index e0b728c882..7dce126ac3 100644 --- a/ext/standard/user_filters.c +++ b/ext/standard/user_filters.c @@ -340,7 +340,6 @@ static php_stream_filter *user_filter_factory_create(const char *filtername, /* create the object */ object_init_ex(&obj, fdat->ce); -//??? Z_SET_ISREF_P(obj); /* filtername */ add_property_string(&obj, "filtername", (char*)filtername); diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c index 0a5cbaa2cb..b6fcd79c2d 100644 --- a/ext/standard/var_unserializer.c +++ b/ext/standard/var_unserializer.c @@ -183,24 +183,24 @@ PHPAPI void var_destroy(php_unserialize_data_t *var_hashx) /* }}} */ -static char *unserialize_str(const unsigned char **p, size_t *len, size_t maxlen) +static zend_string *unserialize_str(const unsigned char **p, size_t len, size_t maxlen) { size_t i, j; - char *str = safe_emalloc(*len, 1, 1); + zend_string *str = STR_ALLOC(len, 0); unsigned char *end = *(unsigned char **)p+maxlen; if (end < *p) { - efree(str); + STR_FREE(str); return NULL; } - for (i = 0; i < *len; i++) { + for (i = 0; i < len; i++) { if (*p >= end) { - efree(str); + STR_FREE(str); return NULL; } if (**p != '\\') { - str[i] = (char)**p; + str->val[i] = (char)**p; } else { unsigned char ch = 0; @@ -213,16 +213,16 @@ static char *unserialize_str(const unsigned char **p, size_t *len, size_t maxlen } else if (**p >= 'A' && **p <= 'F') { ch = (ch << 4) + (**p -'A'+10); } else { - efree(str); + STR_FREE(str); return NULL; } } - str[i] = (char)ch; + str->val[i] = (char)ch; } (*p)++; } - str[i] = 0; - *len = i; + str->val[i] = 0; + str->len = i; return str; } @@ -541,7 +541,7 @@ yy2: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy95; yy3: -#line 829 "ext/standard/var_unserializer.re" +#line 826 "ext/standard/var_unserializer.re" { return 0; } #line 547 "ext/standard/var_unserializer.c" yy4: @@ -586,7 +586,7 @@ yy13: goto yy3; yy14: ++YYCURSOR; -#line 823 "ext/standard/var_unserializer.re" +#line 820 "ext/standard/var_unserializer.re" { /* this is the case where we have less data than planned */ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Unexpected end of serialized data"); @@ -622,7 +622,7 @@ yy20: yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; -#line 684 "ext/standard/var_unserializer.re" +#line 681 "ext/standard/var_unserializer.re" { size_t len, len2, len3, maxlen; long elements; @@ -786,7 +786,7 @@ yy27: yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; -#line 676 "ext/standard/var_unserializer.re" +#line 673 "ext/standard/var_unserializer.re" { //??? INIT_PZVAL(rval); @@ -815,7 +815,7 @@ yy34: yych = *++YYCURSOR; if (yych != '{') goto yy18; ++YYCURSOR; -#line 655 "ext/standard/var_unserializer.re" +#line 652 "ext/standard/var_unserializer.re" { long elements = parse_iv(start + 2); /* use iv() not uiv() in order to check data range */ @@ -857,11 +857,10 @@ yy41: yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; -#line 625 "ext/standard/var_unserializer.re" +#line 624 "ext/standard/var_unserializer.re" { size_t len, maxlen; -//??? TODO: use zend_string* instead of char* - char *str; + zend_string *str; len = parse_uiv(start + 2); maxlen = max - YYCURSOR; @@ -870,12 +869,12 @@ yy41: return 0; } - if ((str = unserialize_str(&YYCURSOR, &len, maxlen)) == NULL) { + if ((str = unserialize_str(&YYCURSOR, len, maxlen)) == NULL) { return 0; } if (*(YYCURSOR) != '"') { - efree(str); + STR_FREE(str); *p = YYCURSOR; return 0; } @@ -883,11 +882,10 @@ yy41: YYCURSOR += 2; *p = YYCURSOR; - ZVAL_STRINGL(rval, str, len); - efree(str); + ZVAL_STR(rval, str); return 1; } -#line 891 "ext/standard/var_unserializer.c" +#line 889 "ext/standard/var_unserializer.c" yy46: yych = *++YYCURSOR; if (yych == '+') goto yy47; @@ -908,7 +906,7 @@ yy48: yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; -#line 598 "ext/standard/var_unserializer.re" +#line 597 "ext/standard/var_unserializer.re" { size_t len, maxlen; char *str; @@ -935,7 +933,7 @@ yy48: ZVAL_STRINGL(rval, str, len); return 1; } -#line 939 "ext/standard/var_unserializer.c" +#line 937 "ext/standard/var_unserializer.c" yy53: yych = *++YYCURSOR; if (yych <= '/') { @@ -1023,7 +1021,7 @@ yy61: } yy63: ++YYCURSOR; -#line 589 "ext/standard/var_unserializer.re" +#line 588 "ext/standard/var_unserializer.re" { #if SIZEOF_LONG == 4 use_double: @@ -1032,7 +1030,7 @@ use_double: ZVAL_DOUBLE(rval, zend_strtod((const char *)start + 2, NULL)); return 1; } -#line 1036 "ext/standard/var_unserializer.c" +#line 1034 "ext/standard/var_unserializer.c" yy65: yych = *++YYCURSOR; if (yych <= ',') { @@ -1091,7 +1089,7 @@ yy73: yych = *++YYCURSOR; if (yych != ';') goto yy18; ++YYCURSOR; -#line 573 "ext/standard/var_unserializer.re" +#line 572 "ext/standard/var_unserializer.re" { *p = YYCURSOR; @@ -1107,7 +1105,7 @@ yy73: return 1; } -#line 1111 "ext/standard/var_unserializer.c" +#line 1109 "ext/standard/var_unserializer.c" yy76: yych = *++YYCURSOR; if (yych == 'N') goto yy73; @@ -1134,7 +1132,7 @@ yy79: if (yych <= '9') goto yy79; if (yych != ';') goto yy18; ++YYCURSOR; -#line 547 "ext/standard/var_unserializer.re" +#line 546 "ext/standard/var_unserializer.re" { #if SIZEOF_LONG == 4 int digits = YYCURSOR - start - 3; @@ -1160,7 +1158,7 @@ yy79: ZVAL_LONG(rval, parse_iv(start + 2)); return 1; } -#line 1164 "ext/standard/var_unserializer.c" +#line 1162 "ext/standard/var_unserializer.c" yy83: yych = *++YYCURSOR; if (yych <= '/') goto yy18; @@ -1168,22 +1166,22 @@ yy83: yych = *++YYCURSOR; if (yych != ';') goto yy18; ++YYCURSOR; -#line 541 "ext/standard/var_unserializer.re" +#line 540 "ext/standard/var_unserializer.re" { *p = YYCURSOR; ZVAL_BOOL(rval, parse_iv(start + 2)); return 1; } -#line 1178 "ext/standard/var_unserializer.c" +#line 1176 "ext/standard/var_unserializer.c" yy87: ++YYCURSOR; -#line 535 "ext/standard/var_unserializer.re" +#line 534 "ext/standard/var_unserializer.re" { *p = YYCURSOR; ZVAL_NULL(rval); return 1; } -#line 1187 "ext/standard/var_unserializer.c" +#line 1185 "ext/standard/var_unserializer.c" yy89: yych = *++YYCURSOR; if (yych <= ',') { @@ -1206,7 +1204,7 @@ yy91: if (yych <= '9') goto yy91; if (yych != ';') goto yy18; ++YYCURSOR; -#line 512 "ext/standard/var_unserializer.re" +#line 511 "ext/standard/var_unserializer.re" { long id; @@ -1229,7 +1227,7 @@ yy91: return 1; } -#line 1233 "ext/standard/var_unserializer.c" +#line 1231 "ext/standard/var_unserializer.c" yy95: yych = *++YYCURSOR; if (yych <= ',') { @@ -1271,13 +1269,12 @@ yy97: ZVAL_NEW_REF(rval_ref, rval_ref); ZVAL_COPY(rval, rval_ref); } -//??? Z_SET_ISREF_PP(rval); return 1; } -#line 1279 "ext/standard/var_unserializer.c" +#line 1276 "ext/standard/var_unserializer.c" } -#line 831 "ext/standard/var_unserializer.re" +#line 828 "ext/standard/var_unserializer.re" return 0; diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re index af9da9c6a8..5636429c8b 100644 --- a/ext/standard/var_unserializer.re +++ b/ext/standard/var_unserializer.re @@ -181,24 +181,24 @@ PHPAPI void var_destroy(php_unserialize_data_t *var_hashx) /* }}} */ -static char *unserialize_str(const unsigned char **p, size_t *len, size_t maxlen) +static zend_string *unserialize_str(const unsigned char **p, size_t len, size_t maxlen) { size_t i, j; - char *str = safe_emalloc(*len, 1, 1); + zend_string *str = STR_ALLOC(len, 0); unsigned char *end = *(unsigned char **)p+maxlen; if (end < *p) { - efree(str); + STR_FREE(str); return NULL; } - for (i = 0; i < *len; i++) { + for (i = 0; i < len; i++) { if (*p >= end) { - efree(str); + STR_FREE(str); return NULL; } if (**p != '\\') { - str[i] = (char)**p; + str->val[i] = (char)**p; } else { unsigned char ch = 0; @@ -211,16 +211,16 @@ static char *unserialize_str(const unsigned char **p, size_t *len, size_t maxlen } else if (**p >= 'A' && **p <= 'F') { ch = (ch << 4) + (**p -'A'+10); } else { - efree(str); + STR_FREE(str); return NULL; } } - str[i] = (char)ch; + str->val[i] = (char)ch; } (*p)++; } - str[i] = 0; - *len = i; + str->val[i] = 0; + str->len = i; return str; } @@ -504,7 +504,6 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER) ZVAL_NEW_REF(rval_ref, rval_ref); ZVAL_COPY(rval, rval_ref); } -//??? Z_SET_ISREF_PP(rval); return 1; } @@ -624,8 +623,7 @@ use_double: "S:" uiv ":" ["] { size_t len, maxlen; -//??? TODO: use zend_string* instead of char* - char *str; + zend_string *str; len = parse_uiv(start + 2); maxlen = max - YYCURSOR; @@ -634,12 +632,12 @@ use_double: return 0; } - if ((str = unserialize_str(&YYCURSOR, &len, maxlen)) == NULL) { + if ((str = unserialize_str(&YYCURSOR, len, maxlen)) == NULL) { return 0; } if (*(YYCURSOR) != '"') { - efree(str); + STR_FREE(str); *p = YYCURSOR; return 0; } @@ -647,8 +645,7 @@ use_double: YYCURSOR += 2; *p = YYCURSOR; - ZVAL_STRINGL(rval, str, len); - efree(str); + ZVAL_STR(rval, str); return 1; } diff --git a/ext/sybase_ct/php_sybase_ct.c b/ext/sybase_ct/php_sybase_ct.c index aaa0c79fae..97aa204892 100644 --- a/ext/sybase_ct/php_sybase_ct.c +++ b/ext/sybase_ct/php_sybase_ct.c @@ -442,7 +442,7 @@ static int _call_message_handler(zval *callback_name, CS_SERVERMSG *srvmsg TSRML zval expr_copy; int use_copy; - use_copy = zend_make_printable_zval(callback_name, &expr_copy); + use_copy = zend_make_printable_zval(callback_name, &expr_copy TSRMLS_CC); php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Cannot call the messagehandler %s", Z_STRVAL(expr_copy)); zval_dtor(&expr_copy); } diff --git a/ext/xml/xml.c b/ext/xml/xml.c index bbceb6dcf2..2886d6c686 100644 --- a/ext/xml/xml.c +++ b/ext/xml/xml.c @@ -290,7 +290,7 @@ static int le_xml_parser; /* {{{ startup, shutdown and info functions */ static PHP_GINIT_FUNCTION(xml) { - xml_globals->default_encoding = "UTF-8"; + xml_globals->default_encoding = (XML_Char*)"UTF-8"; } static void *php_xml_malloc_wrapper(size_t sz) @@ -727,11 +727,13 @@ void _xml_startElementHandler(void *userData, const XML_Char *name, const XML_Ch array_init(&args[2]); while (attributes && *attributes) { + zval tmp; + att = _xml_decode_tag(parser, (const char *)attributes[0]); val = xml_utf8_decode(attributes[1], strlen((char *)attributes[1]), parser->target_encoding); - // TODO: avoid reallocation ??? - add_assoc_str(&args[2], att->val, val); + ZVAL_STR(&tmp, val); + zend_symtable_update(Z_ARRVAL(args[2]), att, &tmp); attributes += 2; @@ -762,11 +764,13 @@ void _xml_startElementHandler(void *userData, const XML_Char *name, const XML_Ch attributes = (const XML_Char **) attrs; while (attributes && *attributes) { + zval tmp; + att = _xml_decode_tag(parser, (const char *)attributes[0]); val = xml_utf8_decode(attributes[1], strlen((char *)attributes[1]), parser->target_encoding); - // TODO: avoid reallocation ??? - add_assoc_str(&atr, att->val, val); + ZVAL_STR(&tmp, val); + zend_symtable_update(Z_ARRVAL(atr), att, &tmp); atcnt++; attributes += 2; @@ -889,7 +893,6 @@ void _xml_characterDataHandler(void *userData, const XML_Char *s, int len) decoded_value->val, decoded_value->len + 1); STR_RELEASE(decoded_value); } else { - // TODO: avoid reallocation ??? add_assoc_str(parser->ctag, "value", decoded_value); } @@ -919,7 +922,6 @@ void _xml_characterDataHandler(void *userData, const XML_Char *s, int len) _xml_add_to_info(parser,parser->ltags[parser->level-1] + parser->toffset); add_assoc_string(&tag, "tag", parser->ltags[parser->level-1] + parser->toffset); - // TODO: avoid reallocation ??? add_assoc_str(&tag, "value", decoded_value); add_assoc_string(&tag, "type", "cdata"); add_assoc_long(&tag, "level", parser->level); @@ -1109,11 +1111,11 @@ static void php_xml_parser_create_impl(INTERNAL_FUNCTION_PARAMETERS, int ns_supp encoding = XML(default_encoding); auto_detect = 1; } else if (strcasecmp(encoding_param, "ISO-8859-1") == 0) { - encoding = "ISO-8859-1"; + encoding = (XML_Char*)"ISO-8859-1"; } else if (strcasecmp(encoding_param, "UTF-8") == 0) { - encoding = "UTF-8"; + encoding = (XML_Char*)"UTF-8"; } else if (strcasecmp(encoding_param, "US-ASCII") == 0) { - encoding = "US-ASCII"; + encoding = (XML_Char*)"US-ASCII"; } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "unsupported source encoding \"%s\"", encoding_param); RETURN_FALSE; @@ -1128,7 +1130,7 @@ static void php_xml_parser_create_impl(INTERNAL_FUNCTION_PARAMETERS, int ns_supp parser = ecalloc(1, sizeof(xml_parser)); parser->parser = XML_ParserCreate_MM((auto_detect ? NULL : encoding), - &php_xml_mem_hdlrs, ns_param); + &php_xml_mem_hdlrs, (XML_Char*)ns_param); parser->target_encoding = encoding; parser->case_folding = 1; @@ -1372,7 +1374,7 @@ PHP_FUNCTION(xml_parse) ZEND_FETCH_RESOURCE(parser, xml_parser *, pind, -1, "XML Parser", le_xml_parser); parser->isparsing = 1; - ret = XML_Parse(parser->parser, data, data_len, isFinal); + ret = XML_Parse(parser->parser, (XML_Char*)data, data_len, isFinal); parser->isparsing = 0; RETVAL_LONG(ret); } @@ -1417,7 +1419,7 @@ PHP_FUNCTION(xml_parse_into_struct) XML_SetCharacterDataHandler(parser->parser, _xml_characterDataHandler); parser->isparsing = 1; - ret = XML_Parse(parser->parser, data, data_len, 1); + ret = XML_Parse(parser->parser, (XML_Char*)data, data_len, 1); parser->isparsing = 0; RETVAL_LONG(ret); @@ -1566,7 +1568,7 @@ PHP_FUNCTION(xml_parser_set_option) case PHP_XML_OPTION_TARGET_ENCODING: { xml_encoding *enc; convert_to_string_ex(val); - enc = xml_get_encoding(Z_STRVAL_P(val)); + enc = xml_get_encoding((XML_Char*)Z_STRVAL_P(val)); if (enc == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unsupported target encoding \"%s\"", Z_STRVAL_P(val)); RETURN_FALSE; @@ -1625,7 +1627,7 @@ PHP_FUNCTION(utf8_encode) return; } - encoded = xml_utf8_encode(arg, arg_len, "ISO-8859-1"); + encoded = xml_utf8_encode(arg, arg_len, (XML_Char*)"ISO-8859-1"); if (encoded == NULL) { RETURN_FALSE; } @@ -1645,7 +1647,7 @@ PHP_FUNCTION(utf8_decode) return; } - decoded = xml_utf8_decode(arg, arg_len, "ISO-8859-1"); + decoded = xml_utf8_decode((XML_Char*)arg, arg_len, (XML_Char*)"ISO-8859-1"); if (decoded == NULL) { RETURN_FALSE; } diff --git a/ext/zlib/tests/bug67724.gz.gz b/ext/zlib/tests/bug67724.gz.gz Binary files differnew file mode 100644 index 0000000000..ab1db9258e --- /dev/null +++ b/ext/zlib/tests/bug67724.gz.gz diff --git a/ext/zlib/tests/bug67724.phpt b/ext/zlib/tests/bug67724.phpt new file mode 100644 index 0000000000..1e5026f650 --- /dev/null +++ b/ext/zlib/tests/bug67724.phpt @@ -0,0 +1,26 @@ +--TEST-- +Bug #67724 (chained zlib filters silently fail with large amounts of data) +--SKIPIF-- +<?php +extension_loaded("zlib") or die("skip need ext/zlib"); +?> +--FILE-- +<?php +echo "Test\n"; + +$f = fopen(__DIR__."/bug67724.gz.gz", "rb") + or die(current(error_get_last())); +stream_filter_append($f, "zlib.inflate", STREAM_FILTER_READ, ["window" => 30]); +stream_filter_append($f, "zlib.inflate", STREAM_FILTER_READ, ["window" => 30]); +for ($i = 0; !feof($f); $i += strlen(fread($f, 0x1000))) + ; +fclose($f); + +var_dump($i); + +?> +DONE +--EXPECT-- +Test +int(25600000) +DONE diff --git a/ext/zlib/zlib_filter.c b/ext/zlib/zlib_filter.c index 17f141b06c..0b91edfb02 100644 --- a/ext/zlib/zlib_filter.c +++ b/ext/zlib/zlib_filter.c @@ -302,7 +302,8 @@ static php_stream_filter *php_zlib_filter_create(const char *filtername, zval *f data->strm.zalloc = (alloc_func) php_zlib_alloc; data->strm.zfree = (free_func) php_zlib_free; - data->strm.avail_out = data->outbuf_len = data->inbuf_len = 2048; + data->strm.avail_out = data->outbuf_len = 0x8000; + data->inbuf_len = 2048; data->strm.next_in = data->inbuf = (Bytef *) pemalloc(data->inbuf_len, persistent); if (!data->inbuf) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed allocating %zd bytes", data->inbuf_len); diff --git a/main/fopen_wrappers.c b/main/fopen_wrappers.c index ad2e8a8d14..981c5c5a15 100644 --- a/main/fopen_wrappers.c +++ b/main/fopen_wrappers.c @@ -433,16 +433,18 @@ PHPAPI int php_fopen_primary_script(zend_file_handle *file_handle TSRMLS_DC) if (!resolved_path) { if (SG(request_info).path_translated != filename) { -//??? STR_FREE(filename); - if (filename) efree(filename); + if (filename) { + efree(filename); + } } /* we have to free SG(request_info).path_translated here because * php_destroy_request_info assumes that it will get * freed when the include_names hash is emptied, but * we're not adding it in this case */ -//??? STR_FREE(SG(request_info).path_translated); - if (SG(request_info).path_translated) efree(SG(request_info).path_translated); - SG(request_info).path_translated = NULL; + if (SG(request_info).path_translated) { + efree(SG(request_info).path_translated); + SG(request_info).path_translated = NULL; + } return FAILURE; } efree(resolved_path); @@ -452,19 +454,22 @@ PHPAPI int php_fopen_primary_script(zend_file_handle *file_handle TSRMLS_DC) if (zend_stream_open(filename, file_handle TSRMLS_CC) == FAILURE) { PG(display_errors) = orig_display_errors; if (SG(request_info).path_translated != filename) { -//??? STR_FREE(filename); - if (filename) efree(filename); + if (filename) { + efree(filename); + } + } + if (SG(request_info).path_translated) { + efree(SG(request_info).path_translated); + SG(request_info).path_translated = NULL; } -//??? STR_FREE(SG(request_info).path_translated); /* for same reason as above */ - if (SG(request_info).path_translated) efree(SG(request_info).path_translated); - SG(request_info).path_translated = NULL; return FAILURE; } PG(display_errors) = orig_display_errors; if (SG(request_info).path_translated != filename) { -//??? STR_FREE(SG(request_info).path_translated); /* for same reason as above */ - if (SG(request_info).path_translated) efree(SG(request_info).path_translated); + if (SG(request_info).path_translated) { + efree(SG(request_info).path_translated); + } SG(request_info).path_translated = filename; } diff --git a/main/main.c b/main/main.c index f4f88d5360..1fd314b582 100644 --- a/main/main.c +++ b/main/main.c @@ -1192,10 +1192,19 @@ static void php_error_cb(int type, const char *error_filename, const uint error_ case E_USER_ERROR: { /* new block to allow variable definition */ /* eval() errors do not affect exit_status or response code */ - zend_bool during_eval = (type == E_PARSE) && (EG(current_execute_data) && - EG(current_execute_data)->opline && - EG(current_execute_data)->opline->opcode == ZEND_INCLUDE_OR_EVAL && - EG(current_execute_data)->opline->extended_value == ZEND_EVAL); + zend_bool during_eval = 0; + + if (type == E_PARSE) { + zend_execute_data *execute_data = EG(current_execute_data); + + while (execute_data && (!execute_data->func || !ZEND_USER_CODE(execute_data->func->common.type))) { + execute_data = execute_data->prev_execute_data; + } + + during_eval = (execute_data && + execute_data->opline->opcode == ZEND_INCLUDE_OR_EVAL && + execute_data->opline->extended_value == ZEND_EVAL); + } if (!during_eval) { EG(exit_status) = 255; } @@ -2201,6 +2210,7 @@ int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_mod REGISTER_MAIN_STRINGL_CONSTANT("PHP_EOL", PHP_EOL, sizeof(PHP_EOL)-1, CONST_PERSISTENT | CONST_CS); REGISTER_MAIN_LONG_CONSTANT("PHP_MAXPATHLEN", MAXPATHLEN, CONST_PERSISTENT | CONST_CS); REGISTER_MAIN_LONG_CONSTANT("PHP_INT_MAX", LONG_MAX, CONST_PERSISTENT | CONST_CS); + REGISTER_MAIN_LONG_CONSTANT("PHP_INT_MIN", LONG_MIN, CONST_PERSISTENT | CONST_CS); REGISTER_MAIN_LONG_CONSTANT("PHP_INT_SIZE", sizeof(long), CONST_PERSISTENT | CONST_CS); #ifdef PHP_WIN32 @@ -2493,7 +2503,7 @@ PHPAPI int php_execute_script(zend_file_handle *primary_file TSRMLS_DC) #ifdef PHP_WIN32 if(primary_file->filename) { - UpdateIniFromRegistry(primary_file->filename TSRMLS_CC); + UpdateIniFromRegistry((char*)primary_file->filename TSRMLS_CC); } #endif @@ -2585,7 +2595,7 @@ PHPAPI int php_execute_simple_script(zend_file_handle *primary_file, zval *ret T zend_try { #ifdef PHP_WIN32 if(primary_file->filename) { - UpdateIniFromRegistry(primary_file->filename TSRMLS_CC); + UpdateIniFromRegistry((char*)primary_file->filename TSRMLS_CC); } #endif diff --git a/main/network.c b/main/network.c index 13ed727923..74855064d7 100644 --- a/main/network.c +++ b/main/network.c @@ -166,7 +166,7 @@ PHPAPI void php_network_freeaddresses(struct sockaddr **sal) /* {{{ php_network_getaddresses * Returns number of addresses, 0 for none/error */ -PHPAPI int php_network_getaddresses(const char *host, int socktype, struct sockaddr ***sal, char **error_string TSRMLS_DC) +PHPAPI int php_network_getaddresses(const char *host, int socktype, struct sockaddr ***sal, zend_string **error_string TSRMLS_DC) { struct sockaddr **sap; int n; @@ -212,16 +212,16 @@ PHPAPI int php_network_getaddresses(const char *host, int socktype, struct socka if ((n = getaddrinfo(host, NULL, &hints, &res))) { if (error_string) { - spprintf(error_string, 0, "php_network_getaddresses: getaddrinfo failed: %s", PHP_GAI_STRERROR(n)); - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", *error_string); + *error_string = strpprintf(0, "php_network_getaddresses: getaddrinfo failed: %s", PHP_GAI_STRERROR(n)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", (*error_string)->val); } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "php_network_getaddresses: getaddrinfo failed: %s", PHP_GAI_STRERROR(n)); } return 0; } else if (res == NULL) { if (error_string) { - spprintf(error_string, 0, "php_network_getaddresses: getaddrinfo failed (null result pointer) errno=%d", errno); - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", *error_string); + *error_string = strpprintf(0, "php_network_getaddresses: getaddrinfo failed (null result pointer) errno=%d", errno); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", (*error_string)->val); } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "php_network_getaddresses: getaddrinfo failed (null result pointer)"); } @@ -249,8 +249,8 @@ PHPAPI int php_network_getaddresses(const char *host, int socktype, struct socka host_info = gethostbyname(host); if (host_info == NULL) { if (error_string) { - spprintf(error_string, 0, "php_network_getaddresses: gethostbyname failed. errno=%d", errno); - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", *error_string); + error_string = strpprintf(0, "php_network_getaddresses: gethostbyname failed. errno=%d", errno); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", (*error_string)->val); } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "php_network_getaddresses: gethostbyname failed"); } @@ -305,7 +305,7 @@ PHPAPI int php_network_connect_socket(php_socket_t sockfd, socklen_t addrlen, int asynchronous, struct timeval *timeout, - char **error_string, + zend_string **error_string, int *error_code) { #if HAVE_NON_BLOCKING_CONNECT @@ -326,7 +326,7 @@ PHPAPI int php_network_connect_socket(php_socket_t sockfd, if (error != EINPROGRESS) { if (error_string) { - *error_string = php_socket_strerror(error, NULL, 0); + *error_string = php_socket_error_str(error); } return -1; @@ -382,7 +382,7 @@ ok: if (error) { ret = -1; if (error_string) { - *error_string = php_socket_strerror(error, NULL, 0); + *error_string = php_socket_error_str(error); } } return ret; @@ -416,13 +416,14 @@ static inline void sub_times(struct timeval a, struct timeval b, struct timeval * */ /* {{{ php_network_bind_socket_to_local_addr */ php_socket_t php_network_bind_socket_to_local_addr(const char *host, unsigned port, - int socktype, char **error_string, int *error_code + int socktype, long sockopts, zend_string **error_string, int *error_code TSRMLS_DC) { int num_addrs, n, err = 0; php_socket_t sock; struct sockaddr **sal, **psal, *sa; socklen_t socklen; + int sockoptval = 1; num_addrs = php_network_getaddresses(host, socktype, &psal, error_string TSRMLS_CC); @@ -464,9 +465,16 @@ php_socket_t php_network_bind_socket_to_local_addr(const char *host, unsigned po /* attempt to bind */ #ifdef SO_REUSEADDR - { - int val = 1; - setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&val, sizeof(val)); + setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&sockoptval, sizeof(sockoptval)); +#endif +#ifdef SO_REUSEPORT + if (sockopts & STREAM_SOCKOP_SO_REUSEPORT) { + setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, (char*)&sockoptval, sizeof(sockoptval)); + } +#endif +#ifdef SO_BROADCAST + if (sockopts & STREAM_SOCKOP_SO_BROADCAST) { + setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char*)&sockoptval, sizeof(sockoptval)); } #endif @@ -487,7 +495,7 @@ php_socket_t php_network_bind_socket_to_local_addr(const char *host, unsigned po *error_code = err; } if (error_string) { - *error_string = php_socket_strerror(err, NULL, 0); + *error_string = php_socket_error_str(err); } bound: @@ -508,7 +516,7 @@ PHPAPI int php_network_parse_network_address_with_port(const char *addr, long ad struct sockaddr_in *in4 = (struct sockaddr_in*)sa; struct sockaddr **psal; int n; - char *errstr = NULL; + zend_string *errstr = NULL; #if HAVE_IPV6 struct sockaddr_in6 *in6 = (struct sockaddr_in6*)sa; #endif @@ -554,9 +562,8 @@ PHPAPI int php_network_parse_network_address_with_port(const char *addr, long ad if (n == 0) { if (errstr) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to resolve `%s': %s", tmp, errstr); -//??? STR_FREE(errstr); - efree(errstr); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to resolve `%s': %s", tmp, errstr->val); + STR_RELEASE(errstr); } goto out; } @@ -582,7 +589,6 @@ PHPAPI int php_network_parse_network_address_with_port(const char *addr, long ad php_network_freeaddresses(psal); out: -//??? STR_FREE(tmp); efree(tmp); return ret; } @@ -592,7 +598,7 @@ PHPAPI void php_network_populate_name_from_sockaddr( /* input address */ struct sockaddr *sa, socklen_t sl, /* output readable address */ - char **textaddr, long *textaddrlen, + zend_string **textaddr, /* output address */ struct sockaddr **addr, socklen_t *addrlen @@ -615,7 +621,7 @@ PHPAPI void php_network_populate_name_from_sockaddr( /* generally not thread safe, but it *is* thread safe under win32 */ buf = inet_ntoa(((struct sockaddr_in*)sa)->sin_addr); if (buf) { - *textaddrlen = spprintf(textaddr, 0, "%s:%d", + *textaddr = strpprintf(0, "%s:%d", buf, ntohs(((struct sockaddr_in*)sa)->sin_port)); } @@ -625,7 +631,7 @@ PHPAPI void php_network_populate_name_from_sockaddr( case AF_INET6: buf = (char*)inet_ntop(sa->sa_family, &((struct sockaddr_in6*)sa)->sin6_addr, (char *)&abuf, sizeof(abuf)); if (buf) { - *textaddrlen = spprintf(textaddr, 0, "%s:%d", + *textaddr = strpprintf(0, "%s:%d", buf, ntohs(((struct sockaddr_in6*)sa)->sin6_port)); } @@ -639,13 +645,10 @@ PHPAPI void php_network_populate_name_from_sockaddr( if (ua->sun_path[0] == '\0') { /* abstract name */ int len = strlen(ua->sun_path + 1) + 1; - *textaddrlen = len; - *textaddr = emalloc(len + 1); - memcpy(*textaddr, ua->sun_path, len); - (*textaddr)[len] = '\0'; + *textaddr = STR_INIT((char*)ua->sun_path, len, 0); } else { - *textaddrlen = strlen(ua->sun_path); - *textaddr = estrndup(ua->sun_path, *textaddrlen); + int len = strlen(ua->sun_path); + *textaddr = STR_INIT((char*)ua->sun_path, len, 0); } } break; @@ -657,7 +660,7 @@ PHPAPI void php_network_populate_name_from_sockaddr( } PHPAPI int php_network_get_peer_name(php_socket_t sock, - char **textaddr, long *textaddrlen, + zend_string **textaddr, struct sockaddr **addr, socklen_t *addrlen TSRMLS_DC) @@ -668,7 +671,7 @@ PHPAPI int php_network_get_peer_name(php_socket_t sock, if (getpeername(sock, (struct sockaddr*)&sa, &sl) == 0) { php_network_populate_name_from_sockaddr((struct sockaddr*)&sa, sl, - textaddr, textaddrlen, + textaddr, addr, addrlen TSRMLS_CC); return 0; @@ -677,7 +680,7 @@ PHPAPI int php_network_get_peer_name(php_socket_t sock, } PHPAPI int php_network_get_sock_name(php_socket_t sock, - char **textaddr, long *textaddrlen, + zend_string **textaddr, struct sockaddr **addr, socklen_t *addrlen TSRMLS_DC) @@ -688,7 +691,7 @@ PHPAPI int php_network_get_sock_name(php_socket_t sock, if (getsockname(sock, (struct sockaddr*)&sa, &sl) == 0) { php_network_populate_name_from_sockaddr((struct sockaddr*)&sa, sl, - textaddr, textaddrlen, + textaddr, addr, addrlen TSRMLS_CC); return 0; @@ -702,17 +705,17 @@ PHPAPI int php_network_get_sock_name(php_socket_t sock, * using an optional timeout. * Returns the peer address in addr/addrlen (it will emalloc * these, so be sure to efree the result). - * If you specify textaddr/textaddrlen, a text-printable + * If you specify textaddr, a text-printable * version of the address will be emalloc'd and returned. * */ /* {{{ php_network_accept_incoming */ PHPAPI php_socket_t php_network_accept_incoming(php_socket_t srvsock, - char **textaddr, long *textaddrlen, + zend_string **textaddr, struct sockaddr **addr, socklen_t *addrlen, struct timeval *timeout, - char **error_string, + zend_string **error_string, int *error_code TSRMLS_DC) { @@ -734,7 +737,7 @@ PHPAPI php_socket_t php_network_accept_incoming(php_socket_t srvsock, if (clisock != SOCK_ERR) { php_network_populate_name_from_sockaddr((struct sockaddr*)&sa, sl, - textaddr, textaddrlen, + textaddr, addr, addrlen TSRMLS_CC); } else { @@ -746,7 +749,7 @@ PHPAPI php_socket_t php_network_accept_incoming(php_socket_t srvsock, *error_code = error; } if (error_string) { - *error_string = php_socket_strerror(error, NULL, 0); + *error_string = php_socket_error_str(error); } return clisock; @@ -763,8 +766,8 @@ PHPAPI php_socket_t php_network_accept_incoming(php_socket_t srvsock, /* {{{ php_network_connect_socket_to_host */ php_socket_t php_network_connect_socket_to_host(const char *host, unsigned short port, - int socktype, int asynchronous, struct timeval *timeout, char **error_string, - int *error_code, char *bindto, unsigned short bindport + int socktype, int asynchronous, struct timeval *timeout, zend_string **error_string, + int *error_code, char *bindto, unsigned short bindport, long sockopts TSRMLS_DC) { int num_addrs, n, fatal = 0; @@ -866,6 +869,7 @@ php_socket_t php_network_connect_socket_to_host(const char *host, unsigned short } } #endif + if (!local_address || bind(sock, local_address, local_address_len)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed to bind to '%s:%d', system said: %s", bindto, bindport, strerror(errno)); } @@ -876,10 +880,18 @@ skip_bind: } /* free error string received during previous iteration (if any) */ if (error_string && *error_string) { - efree(*error_string); + STR_RELEASE(*error_string); *error_string = NULL; } +#ifdef SO_BROADCAST + { + int val = 1; + if (sockopts & STREAM_SOCKOP_SO_BROADCAST) { + setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char*)&val, sizeof(val)); + } + } +#endif n = php_network_connect_socket(sock, sa, socklen, asynchronous, timeout ? &working_timeout : NULL, error_string, error_code); @@ -1029,6 +1041,44 @@ PHPAPI char *php_socket_strerror(long err, char *buf, size_t bufsize) } /* }}} */ +/* {{{ php_socket_error_str */ +PHPAPI zend_string *php_socket_error_str(long err) +{ +#ifndef PHP_WIN32 + char *errstr; + + errstr = strerror(err); + return STR_INIT(errstr, strlen(errstr), 0); +#else + zend_string *ret; + char *sysbuf; + int free_it = 1; + + if (!FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + err, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR)&sysbuf, + 0, + NULL)) { + free_it = 0; + sysbuf = "Unknown Error"; + } + + ret = STR_INIT(sysbuf, strlen(sysbuf), 0); + + if (free_it) { + LocalFree(sysbuf); + } + + return ret; +#endif +} +/* }}} */ + /* deprecated */ PHPAPI php_stream *_php_stream_sock_open_from_socket(php_socket_t socket, const char *persistent_id STREAMS_DC TSRMLS_DC) { diff --git a/main/output.c b/main/output.c index 2531dee2ab..41b2c65cdf 100644 --- a/main/output.c +++ b/main/output.c @@ -55,7 +55,7 @@ static HashTable php_output_handler_reverse_conflicts; static inline int php_output_lock_error(int op TSRMLS_DC); static inline void php_output_op(int op, const char *str, size_t len TSRMLS_DC); -static inline php_output_handler *php_output_handler_init(const char *name, size_t name_len, size_t chunk_size, int flags TSRMLS_DC); +static inline php_output_handler *php_output_handler_init(zend_string *name, size_t chunk_size, int flags TSRMLS_DC); static inline php_output_handler_status_t php_output_handler_op(php_output_handler *handler, php_output_context *context); static inline int php_output_handler_append(php_output_handler *handler, const php_output_buffer *buf TSRMLS_DC); static inline zval *php_output_handler_status(php_output_handler *handler, zval *entry); @@ -508,7 +508,7 @@ PHPAPI php_output_handler *php_output_handler_create_user(zval *output_handler, default: user = ecalloc(1, sizeof(php_output_handler_user_func_t)); if (SUCCESS == zend_fcall_info_init(output_handler, 0, &user->fci, &user->fcc, &handler_name, &error TSRMLS_CC)) { - handler = php_output_handler_init(handler_name->val, handler_name->len, chunk_size, (flags & ~0xf) | PHP_OUTPUT_HANDLER_USER TSRMLS_CC); + handler = php_output_handler_init(handler_name, chunk_size, (flags & ~0xf) | PHP_OUTPUT_HANDLER_USER TSRMLS_CC); ZVAL_COPY(&user->zoh, output_handler); handler->func.user = user; } else { @@ -532,9 +532,11 @@ PHPAPI php_output_handler *php_output_handler_create_user(zval *output_handler, PHPAPI php_output_handler *php_output_handler_create_internal(const char *name, size_t name_len, php_output_handler_context_func_t output_handler, size_t chunk_size, int flags TSRMLS_DC) { php_output_handler *handler; + zend_string *str = STR_INIT(name, name_len, 1); - handler = php_output_handler_init(name, name_len, chunk_size, (flags & ~0xf) | PHP_OUTPUT_HANDLER_INTERNAL TSRMLS_CC); + handler = php_output_handler_init(str, chunk_size, (flags & ~0xf) | PHP_OUTPUT_HANDLER_INTERNAL TSRMLS_CC); handler->func.internal = output_handler; + STR_RELEASE(str); return handler; } @@ -563,17 +565,17 @@ PHPAPI int php_output_handler_start(php_output_handler *handler TSRMLS_DC) if (php_output_lock_error(PHP_OUTPUT_HANDLER_START TSRMLS_CC) || !handler) { return FAILURE; } - if (NULL != (conflict = zend_hash_str_find_ptr(&php_output_handler_conflicts, handler->name, handler->name_len))) { - if (SUCCESS != conflict(handler->name, handler->name_len TSRMLS_CC)) { + if (NULL != (conflict = zend_hash_find_ptr(&php_output_handler_conflicts, handler->name))) { + if (SUCCESS != conflict(handler->name->val, handler->name->len TSRMLS_CC)) { return FAILURE; } } - if (NULL != (rconflicts = zend_hash_str_find_ptr(&php_output_handler_reverse_conflicts, handler->name, handler->name_len))) { + if (NULL != (rconflicts = zend_hash_find_ptr(&php_output_handler_reverse_conflicts, handler->name))) { for (zend_hash_internal_pointer_reset_ex(rconflicts, &pos); (conflict = zend_hash_get_current_data_ptr_ex(rconflicts, &pos)) != NULL; zend_hash_move_forward_ex(rconflicts, &pos) ) { - if (SUCCESS != conflict(handler->name, handler->name_len TSRMLS_CC)) { + if (SUCCESS != conflict(handler->name->val, handler->name->len TSRMLS_CC)) { return FAILURE; } } @@ -596,7 +598,7 @@ PHPAPI int php_output_handler_started(const char *name, size_t name_len TSRMLS_D handlers = (php_output_handler **) zend_stack_base(&OG(handlers)); for (i = 0; i < count; ++i) { - if (name_len == handlers[i]->name_len && !memcmp(handlers[i]->name, name, name_len)) { + if (name_len == handlers[i]->name->len && !memcmp(handlers[i]->name->val, name, name_len)) { return 1; } } @@ -715,10 +717,12 @@ PHPAPI int php_output_handler_hook(php_output_handler_hook_t type, void *arg TSR * Destroy an output handler */ PHPAPI void php_output_handler_dtor(php_output_handler *handler TSRMLS_DC) { -//??? STR_FREE(handler->name); - if (handler->name) efree(handler->name); -//??? STR_FREE(handler->buffer.data); - if (handler->buffer.data) efree(handler->buffer.data); + if (handler->name) { + STR_RELEASE(handler->name); + } + if (handler->buffer.data) { + efree(handler->buffer.data); + } if (handler->flags & PHP_OUTPUT_HANDLER_USER) { zval_ptr_dtor(&handler->func.user->zoh); efree(handler->func.user); @@ -876,13 +880,12 @@ static inline void php_output_context_dtor(php_output_context *context) /* {{{ static php_output_handler *php_output_handler_init(zval *name, size_t chunk_size, int flags TSRMLS_DC) * Allocates and initializes a php_output_handler structure */ -static inline php_output_handler *php_output_handler_init(const char *name, size_t name_len, size_t chunk_size, int flags TSRMLS_DC) +static inline php_output_handler *php_output_handler_init(zend_string *name, size_t chunk_size, int flags TSRMLS_DC) { php_output_handler *handler; handler = ecalloc(1, sizeof(php_output_handler)); - handler->name = estrndup(name, name_len); - handler->name_len = name_len; + handler->name = STR_COPY(name); handler->size = chunk_size; handler->flags = flags; handler->buffer.size = PHP_OUTPUT_HANDLER_INITBUF_SIZE(chunk_size); @@ -992,8 +995,6 @@ static inline php_output_handler_status_t php_output_handler_op(php_output_handl } zend_fcall_info_argn(&handler->func.user->fci TSRMLS_CC, 0); -//??? zval_ptr_dtor(&ob_data); -//??? zval_ptr_dtor(&ob_mode); zval_ptr_dtor(&retval); } else { @@ -1171,7 +1172,7 @@ static int php_output_stack_apply_list(void *h, void *z) php_output_handler *handler = *(php_output_handler **) h; zval *array = (zval *) z; - add_next_index_stringl(array, handler->name, handler->name_len); + add_next_index_str(array, STR_COPY(handler->name)); return 0; } /* }}} */ @@ -1195,7 +1196,7 @@ static inline zval *php_output_handler_status(php_output_handler *handler, zval ZEND_ASSERT(entry != NULL); array_init(entry); - add_assoc_stringl(entry, "name", handler->name, handler->name_len); + add_assoc_str(entry, "name", STR_COPY(handler->name)); add_assoc_long(entry, "type", (long) (handler->flags & 0xf)); add_assoc_long(entry, "flags", (long) handler->flags); add_assoc_long(entry, "level", (long) handler->level); @@ -1221,7 +1222,7 @@ static inline int php_output_stack_pop(int flags TSRMLS_DC) return 0; } else if (!(flags & PHP_OUTPUT_POP_FORCE) && !(orphan->flags & PHP_OUTPUT_HANDLER_REMOVABLE)) { if (!(flags & PHP_OUTPUT_POP_SILENT)) { - php_error_docref("ref.outcontrol" TSRMLS_CC, E_NOTICE, "failed to %s buffer of %s (%d)", (flags&PHP_OUTPUT_POP_DISCARD)?"discard":"send", orphan->name, orphan->level); + php_error_docref("ref.outcontrol" TSRMLS_CC, E_NOTICE, "failed to %s buffer of %s (%d)", (flags&PHP_OUTPUT_POP_DISCARD)?"discard":"send", orphan->name->val, orphan->level); } return 0; } else { @@ -1348,7 +1349,7 @@ PHP_FUNCTION(ob_flush) } if (SUCCESS != php_output_flush(TSRMLS_C)) { - php_error_docref("ref.outcontrol" TSRMLS_CC, E_NOTICE, "failed to flush buffer of %s (%d)", OG(active)->name, OG(active)->level); + php_error_docref("ref.outcontrol" TSRMLS_CC, E_NOTICE, "failed to flush buffer of %s (%d)", OG(active)->name->val, OG(active)->level); RETURN_FALSE; } RETURN_TRUE; @@ -1369,7 +1370,7 @@ PHP_FUNCTION(ob_clean) } if (SUCCESS != php_output_clean(TSRMLS_C)) { - php_error_docref("ref.outcontrol" TSRMLS_CC, E_NOTICE, "failed to delete buffer of %s (%d)", OG(active)->name, OG(active)->level); + php_error_docref("ref.outcontrol" TSRMLS_CC, E_NOTICE, "failed to delete buffer of %s (%d)", OG(active)->name->val, OG(active)->level); RETURN_FALSE; } RETURN_TRUE; @@ -1424,7 +1425,7 @@ PHP_FUNCTION(ob_get_flush) } if (SUCCESS != php_output_end(TSRMLS_C)) { - php_error_docref("ref.outcontrol" TSRMLS_CC, E_NOTICE, "failed to delete buffer of %s (%d)", OG(active)->name, OG(active)->level); + php_error_docref("ref.outcontrol" TSRMLS_CC, E_NOTICE, "failed to delete buffer of %s (%d)", OG(active)->name->val, OG(active)->level); } } /* }}} */ @@ -1447,7 +1448,7 @@ PHP_FUNCTION(ob_get_clean) } if (SUCCESS != php_output_discard(TSRMLS_C)) { - php_error_docref("ref.outcontrol" TSRMLS_CC, E_NOTICE, "failed to delete buffer of %s (%d)", OG(active)->name, OG(active)->level); + php_error_docref("ref.outcontrol" TSRMLS_CC, E_NOTICE, "failed to delete buffer of %s (%d)", OG(active)->name->val, OG(active)->level); } } /* }}} */ diff --git a/main/php_network.h b/main/php_network.h index d69bba308a..3a0062c437 100644 --- a/main/php_network.h +++ b/main/php_network.h @@ -63,6 +63,7 @@ * Also works sensibly for win32 */ BEGIN_EXTERN_C() PHPAPI char *php_socket_strerror(long err, char *buf, size_t bufsize); +PHPAPI zend_string *php_socket_error_str(long err); END_EXTERN_C() #ifdef HAVE_NETINET_IN_H @@ -105,6 +106,11 @@ typedef int php_socket_t; # define SOCK_RECV_ERR -1 #endif +#define STREAM_SOCKOP_NONE 1 << 0 +#define STREAM_SOCKOP_SO_REUSEPORT 1 << 1 +#define STREAM_SOCKOP_SO_BROADCAST 1 << 2 + + /* uncomment this to debug poll(2) emulation on systems that have poll(2) */ /* #define PHP_USE_POLL_2_EMULATION 1 */ @@ -224,12 +230,12 @@ typedef struct { #endif BEGIN_EXTERN_C() -PHPAPI int php_network_getaddresses(const char *host, int socktype, struct sockaddr ***sal, char **error_string TSRMLS_DC); +PHPAPI int php_network_getaddresses(const char *host, int socktype, struct sockaddr ***sal, zend_string **error_string TSRMLS_DC); PHPAPI void php_network_freeaddresses(struct sockaddr **sal); PHPAPI php_socket_t php_network_connect_socket_to_host(const char *host, unsigned short port, - int socktype, int asynchronous, struct timeval *timeout, char **error_string, - int *error_code, char *bindto, unsigned short bindport + int socktype, int asynchronous, struct timeval *timeout, zend_string **error_string, + int *error_code, char *bindto, unsigned short bindport, long sockopts TSRMLS_DC); PHPAPI int php_network_connect_socket(php_socket_t sockfd, @@ -237,33 +243,33 @@ PHPAPI int php_network_connect_socket(php_socket_t sockfd, socklen_t addrlen, int asynchronous, struct timeval *timeout, - char **error_string, + zend_string **error_string, int *error_code); #define php_connect_nonb(sock, addr, addrlen, timeout) \ php_network_connect_socket((sock), (addr), (addrlen), 0, (timeout), NULL, NULL) PHPAPI php_socket_t php_network_bind_socket_to_local_addr(const char *host, unsigned port, - int socktype, char **error_string, int *error_code + int socktype, long sockopts, zend_string **error_string, int *error_code TSRMLS_DC); PHPAPI php_socket_t php_network_accept_incoming(php_socket_t srvsock, - char **textaddr, long *textaddrlen, + zend_string **textaddr, struct sockaddr **addr, socklen_t *addrlen, struct timeval *timeout, - char **error_string, + zend_string **error_string, int *error_code TSRMLS_DC); PHPAPI int php_network_get_sock_name(php_socket_t sock, - char **textaddr, long *textaddrlen, + zend_string **textaddr, struct sockaddr **addr, socklen_t *addrlen TSRMLS_DC); PHPAPI int php_network_get_peer_name(php_socket_t sock, - char **textaddr, long *textaddrlen, + zend_string **textaddr, struct sockaddr **addr, socklen_t *addrlen TSRMLS_DC); @@ -293,7 +299,7 @@ PHPAPI void php_network_populate_name_from_sockaddr( /* input address */ struct sockaddr *sa, socklen_t sl, /* output readable address */ - char **textaddr, long *textaddrlen, + zend_string **textaddr, /* output address */ struct sockaddr **addr, socklen_t *addrlen diff --git a/main/php_output.h b/main/php_output.h index 45af14f6a5..f8b961c7c3 100644 --- a/main/php_output.h +++ b/main/php_output.h @@ -127,8 +127,7 @@ typedef struct _php_output_handler_user_func_t { } php_output_handler_user_func_t; typedef struct _php_output_handler { - char *name; - size_t name_len; + zend_string *name; int flags; int level; size_t size; diff --git a/main/php_streams.h b/main/php_streams.h index 2a142b99c2..38215a67b0 100644 --- a/main/php_streams.h +++ b/main/php_streams.h @@ -202,12 +202,10 @@ struct _php_stream { * PHP_STREAM_FCLOSE_XXX as appropriate */ int fclose_stdiocast; FILE *stdiocast; /* cache this, otherwise we might leak! */ -#if ZEND_DEBUG int __exposed; /* non-zero if exposed as a zval somewhere */ -#endif char *orig_path; - php_stream_context *context; + zend_resource *ctx; int flags; /* PHP_STREAM_FLAG_XXX */ /* buffer */ @@ -230,6 +228,9 @@ struct _php_stream { struct _php_stream *enclosing_stream; /* this is a private stream owned by enclosing_stream */ }; /* php_stream */ +#define PHP_STREAM_CONTEXT(stream) \ + ((php_stream_context*) ((stream)->ctx ? ((stream)->ctx->ptr) : NULL)) + /* state definitions when closing down; these are private to streams.c */ #define PHP_STREAM_FCLOSE_NONE 0 #define PHP_STREAM_FCLOSE_FDOPEN 1 @@ -243,17 +244,12 @@ END_EXTERN_C() #define php_stream_alloc(ops, thisptr, persistent_id, mode) _php_stream_alloc((ops), (thisptr), (persistent_id), (mode) STREAMS_CC TSRMLS_CC) #define php_stream_get_resource_id(stream) ((php_stream *)(stream))->res->handle -#if ZEND_DEBUG /* use this to tell the stream that it is OK if we don't explicitly close it */ -# define php_stream_auto_cleanup(stream) { (stream)->__exposed++; } +#define php_stream_auto_cleanup(stream) { (stream)->__exposed++; } /* use this to assign the stream to a zval and tell the stream that is * has been exported to the engine; it will expect to be closed automatically * when the resources are auto-destructed */ -# define php_stream_to_zval(stream, zval) { ZVAL_RES(zval, (stream)->res); (stream)->__exposed++; } -#else -# define php_stream_auto_cleanup(stream) /* nothing */ -# define php_stream_to_zval(stream, zval) { ZVAL_RES(zval, (stream)->res); } -#endif +#define php_stream_to_zval(stream, zval) { ZVAL_RES(zval, (stream)->res); (stream)->__exposed++; } #define php_stream_from_zval(xstr, pzval) ZEND_FETCH_RESOURCE2((xstr), php_stream *, (pzval), -1, "stream", php_file_le_stream(), php_file_le_pstream()) #define php_stream_from_zval_no_verify(xstr, pzval) (xstr) = (php_stream*)zend_fetch_resource((pzval) TSRMLS_CC, -1, "stream", NULL, 2, php_file_le_stream(), php_file_le_pstream()) diff --git a/main/snprintf.c b/main/snprintf.c index f26206d851..914cac7133 100644 --- a/main/snprintf.c +++ b/main/snprintf.c @@ -781,9 +781,10 @@ static int format_converter(register buffy * odp, const char *fmt, va_list ap) / * It is reset to ' ' by non-numeric formats */ switch (*fmt) { - case 'Z': - zvp = (zval*) va_arg(ap, zval*); - free_zcopy = zend_make_printable_zval(zvp, &zcopy); + case 'Z': { + TSRMLS_FETCH(); + zvp = (zval*) va_arg(ap, zval*); + free_zcopy = zend_make_printable_zval(zvp, &zcopy TSRMLS_CC); if (free_zcopy) { zvp = &zcopy; } @@ -791,8 +792,9 @@ static int format_converter(register buffy * odp, const char *fmt, va_list ap) / s = Z_STRVAL_P(zvp); if (adjust_precision && precision < s_len) { s_len = precision; - } + } break; + } case 'u': switch(modifier) { default: diff --git a/main/spprintf.c b/main/spprintf.c index 12027f756e..079089c0fc 100644 --- a/main/spprintf.c +++ b/main/spprintf.c @@ -389,9 +389,10 @@ static void xbuf_format_converter(void *xbuf, zend_bool is_char, const char *fmt * It is reset to ' ' by non-numeric formats */ switch (*fmt) { - case 'Z': + case 'Z': { + TSRMLS_FETCH(); zvp = (zval*) va_arg(ap, zval*); - free_zcopy = zend_make_printable_zval(zvp, &zcopy); + free_zcopy = zend_make_printable_zval(zvp, &zcopy TSRMLS_CC); if (free_zcopy) { zvp = &zcopy; } @@ -401,6 +402,7 @@ static void xbuf_format_converter(void *xbuf, zend_bool is_char, const char *fmt s_len = precision; } break; + } case 'u': switch(modifier) { default: diff --git a/main/streams/filter.c b/main/streams/filter.c index d2411c928a..a74802eb14 100644 --- a/main/streams/filter.c +++ b/main/streams/filter.c @@ -60,7 +60,6 @@ PHPAPI int php_stream_filter_register_factory_volatile(const char *filterpattern if (!FG(stream_filters)) { ALLOC_HASHTABLE(FG(stream_filters)); zend_hash_init(FG(stream_filters), zend_hash_num_elements(&stream_filters_hash), NULL, NULL, 1); -//??? zend_hash_copy(FG(stream_filters), &stream_filters_hash, NULL, &tmpfactory, sizeof(php_stream_filter_factory)); zend_hash_copy(FG(stream_filters), &stream_filters_hash, NULL); } diff --git a/main/streams/php_stream_transport.h b/main/streams/php_stream_transport.h index dc10eb4e92..a6797ed898 100644 --- a/main/streams/php_stream_transport.h +++ b/main/streams/php_stream_transport.h @@ -50,7 +50,7 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, in int flags, const char *persistent_id, struct timeval *timeout, php_stream_context *context, - char **error_string, + zend_string **error_string, int *error_code STREAMS_DC TSRMLS_DC); @@ -60,7 +60,7 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, in /* Bind the stream to a local address */ PHPAPI int php_stream_xport_bind(php_stream *stream, const char *name, size_t namelen, - char **error_text + zend_string **error_text TSRMLS_DC); /* Connect to a remote address */ @@ -68,28 +68,28 @@ PHPAPI int php_stream_xport_connect(php_stream *stream, const char *name, size_t namelen, int asynchronous, struct timeval *timeout, - char **error_text, + zend_string **error_text, int *error_code TSRMLS_DC); /* Prepare to listen */ PHPAPI int php_stream_xport_listen(php_stream *stream, int backlog, - char **error_text + zend_string **error_text TSRMLS_DC); /* Get the next client and their address as a string, or the underlying address * structure. You must efree either of these if you request them */ PHPAPI int php_stream_xport_accept(php_stream *stream, php_stream **client, - char **textaddr, int *textaddrlen, + zend_string **textaddr, void **addr, socklen_t *addrlen, struct timeval *timeout, - char **error_text + zend_string **error_text TSRMLS_DC); /* Get the name of either the socket or it's peer */ PHPAPI int php_stream_xport_get_name(php_stream *stream, int want_peer, - char **textaddr, int *textaddrlen, + zend_string **textaddr, void **addr, socklen_t *addrlen TSRMLS_DC); @@ -102,7 +102,7 @@ enum php_stream_xport_send_recv_flags { * peeking, optionally retrieving OOB data */ PHPAPI int php_stream_xport_recvfrom(php_stream *stream, char *buf, size_t buflen, long flags, void **addr, socklen_t *addrlen, - char **textaddr, int *textaddrlen TSRMLS_DC); + zend_string **textaddr TSRMLS_DC); /* Similar to send() system call; send data to the stream, optionally * sending it as OOB data */ @@ -155,10 +155,8 @@ typedef struct _php_stream_xport_param { int returncode; struct sockaddr *addr; socklen_t addrlen; - char *textaddr; - long textaddrlen; - - char *error_text; + zend_string *textaddr; + zend_string *error_text; int error_code; } outputs; } php_stream_xport_param; diff --git a/main/streams/streams.c b/main/streams/streams.c index f305fe8044..89537bdaeb 100644 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -91,11 +91,11 @@ fprintf(stderr, "forget_persistent: %s:%p\n", stream->ops->label, stream); stream->res = NULL; - if (stream->context) { + if (PHP_STREAM_CONTEXT(stream)) { zend_hash_apply_with_argument(&EG(regular_list), _php_stream_release_context, - stream->context TSRMLS_CC); - stream->context = NULL; + PHP_STREAM_CONTEXT(stream) TSRMLS_CC); + stream->ctx = NULL; } return 0; @@ -333,7 +333,7 @@ fprintf(stderr, "stream_alloc: %s:%p persistent=%s\n", ops->label, ret, persiste ZVAL_UNDEF(&ret->wrapperdata); ret->stdiocast = NULL; ret->orig_path = NULL; - ret->context = NULL; + ret->ctx = NULL; ret->readbuf = NULL; ret->enclosing_stream = NULL; @@ -387,7 +387,7 @@ PHPAPI int _php_stream_free(php_stream *stream, int close_options TSRMLS_DC) /* * already been freed (if it was created after the stream resource), so * don't reference it */ if (EG(active)) { - context = stream->context; + context = PHP_STREAM_CONTEXT(stream); } if (stream->flags & PHP_STREAM_FLAG_NO_CLOSE) { @@ -466,6 +466,10 @@ fprintf(stderr, "stream_free: %s:%p[%s] preserve_handle=%d release_cast=%d remov //??? while (zend_list_delete(stream->res) == SUCCESS) {} //??? stream->res->gc.refcount = 0; zend_list_close(stream->res); + if (!stream->__exposed) { + zend_list_delete(stream->res); + stream->res = NULL; + } } if (close_options & PHP_STREAM_FREE_CALL_DTOR) { @@ -2163,12 +2167,13 @@ PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mod /* {{{ context API */ PHPAPI php_stream_context *php_stream_context_set(php_stream *stream, php_stream_context *context TSRMLS_DC) { - php_stream_context *oldcontext = stream->context; - - stream->context = context; + php_stream_context *oldcontext = PHP_STREAM_CONTEXT(stream); if (context) { + stream->ctx = context->res; GC_REFCOUNT(context->res)++; + } else { + stream->ctx = NULL; } if (oldcontext) { zend_list_delete(oldcontext->res); diff --git a/main/streams/transports.c b/main/streams/transports.c index 4f4832df2d..7792e24fef 100644 --- a/main/streams/transports.c +++ b/main/streams/transports.c @@ -40,20 +40,20 @@ PHPAPI int php_stream_xport_unregister(const char *protocol TSRMLS_DC) } #define ERR_REPORT(out_err, fmt, arg) \ - if (out_err) { spprintf(out_err, 0, fmt, arg); } \ + if (out_err) { *out_err = strpprintf(0, fmt, arg); } \ else { php_error_docref(NULL TSRMLS_CC, E_WARNING, fmt, arg); } #define ERR_RETURN(out_err, local_err, fmt) \ if (out_err) { *out_err = local_err; } \ - else { php_error_docref(NULL TSRMLS_CC, E_WARNING, fmt, local_err ? local_err : "Unspecified error"); \ - if (local_err) { efree(local_err); local_err = NULL; } \ + else { php_error_docref(NULL TSRMLS_CC, E_WARNING, fmt, local_err ? local_err->val : "Unspecified error"); \ + if (local_err) { STR_RELEASE(local_err); local_err = NULL; } \ } PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, int options, int flags, const char *persistent_id, struct timeval *timeout, php_stream_context *context, - char **error_string, + zend_string **error_string, int *error_code STREAMS_DC TSRMLS_DC) { @@ -61,7 +61,7 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, in php_stream_transport_factory factory = NULL; const char *p, *protocol = NULL; int n = 0, failed = 0; - char *error_text = NULL; + zend_string *error_text = NULL; struct timeval default_timeout = { 0, 0 }; default_timeout.tv_sec = FG(default_socket_timeout); @@ -160,7 +160,7 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, in zval *zbacklog = NULL; int backlog = 32; - if (stream->context && (zbacklog = php_stream_context_get_option(stream->context, "socket", "backlog")) != NULL) { + if (PHP_STREAM_CONTEXT(stream) && (zbacklog = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "socket", "backlog")) != NULL) { zval *ztmp = zbacklog; convert_to_long_ex(ztmp); @@ -195,7 +195,7 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, in /* Bind the stream to a local address */ PHPAPI int php_stream_xport_bind(php_stream *stream, const char *name, size_t namelen, - char **error_text + zend_string **error_text TSRMLS_DC) { php_stream_xport_param param; @@ -225,7 +225,7 @@ PHPAPI int php_stream_xport_connect(php_stream *stream, const char *name, size_t namelen, int asynchronous, struct timeval *timeout, - char **error_text, + zend_string **error_text, int *error_code TSRMLS_DC) { @@ -257,7 +257,7 @@ PHPAPI int php_stream_xport_connect(php_stream *stream, } /* Prepare to listen */ -PHPAPI int php_stream_xport_listen(php_stream *stream, int backlog, char **error_text TSRMLS_DC) +PHPAPI int php_stream_xport_listen(php_stream *stream, int backlog, zend_string **error_text TSRMLS_DC) { php_stream_xport_param param; int ret; @@ -282,10 +282,10 @@ PHPAPI int php_stream_xport_listen(php_stream *stream, int backlog, char **error /* Get the next client and their address (as a string) */ PHPAPI int php_stream_xport_accept(php_stream *stream, php_stream **client, - char **textaddr, int *textaddrlen, + zend_string **textaddr, void **addr, socklen_t *addrlen, struct timeval *timeout, - char **error_text + zend_string **error_text TSRMLS_DC) { php_stream_xport_param param; @@ -309,7 +309,6 @@ PHPAPI int php_stream_xport_accept(php_stream *stream, php_stream **client, } if (textaddr) { *textaddr = param.outputs.textaddr; - *textaddrlen = param.outputs.textaddrlen; } if (error_text) { *error_text = param.outputs.error_text; @@ -321,7 +320,7 @@ PHPAPI int php_stream_xport_accept(php_stream *stream, php_stream **client, } PHPAPI int php_stream_xport_get_name(php_stream *stream, int want_peer, - char **textaddr, int *textaddrlen, + zend_string **textaddr, void **addr, socklen_t *addrlen TSRMLS_DC) { @@ -343,7 +342,6 @@ PHPAPI int php_stream_xport_get_name(php_stream *stream, int want_peer, } if (textaddr) { *textaddr = param.outputs.textaddr; - *textaddrlen = param.outputs.textaddrlen; } return param.outputs.returncode; @@ -395,7 +393,7 @@ PHPAPI int php_stream_xport_crypto_enable(php_stream *stream, int activate TSRML /* Similar to recv() system call; read data from the stream, optionally * peeking, optionally retrieving OOB data */ PHPAPI int php_stream_xport_recvfrom(php_stream *stream, char *buf, size_t buflen, - long flags, void **addr, socklen_t *addrlen, char **textaddr, int *textaddrlen + long flags, void **addr, socklen_t *addrlen, zend_string **textaddr TSRMLS_DC) { php_stream_xport_param param; @@ -455,7 +453,6 @@ PHPAPI int php_stream_xport_recvfrom(php_stream *stream, char *buf, size_t bufle } if (textaddr) { *textaddr = param.outputs.textaddr; - *textaddrlen = param.outputs.textaddrlen; } return recvd_len + param.outputs.returncode; } diff --git a/main/streams/userspace.c b/main/streams/userspace.c index a759f3da24..c41826155c 100644 --- a/main/streams/userspace.c +++ b/main/streams/userspace.c @@ -285,7 +285,6 @@ static void user_stream_create_object(struct php_user_stream_wrapper *uwrap, php { /* create an instance of our class */ object_init_ex(object, uwrap->ce); -//??? Z_SET_ISREF_P(object); if (context) { add_property_resource(object, "context", context->res); @@ -385,8 +384,8 @@ static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, const char * stream = php_stream_alloc_rel(&php_stream_userspace_ops, us, 0, mode); /* if the opened path is set, copy it out */ - if (Z_ISREF(args[4]) && Z_TYPE_P(Z_REFVAL(args[4])) == IS_STRING && opened_path) { - *opened_path = estrndup(Z_STRVAL_P(Z_REFVAL(args[4])), Z_STRLEN_P(Z_REFVAL(args[4]))); + if (Z_ISREF(args[3]) && Z_TYPE_P(Z_REFVAL(args[3])) == IS_STRING && opened_path) { + *opened_path = estrndup(Z_STRVAL_P(Z_REFVAL(args[3])), Z_STRLEN_P(Z_REFVAL(args[3]))); } /* set wrapper data to be a reference to our object */ @@ -1121,7 +1120,6 @@ static int user_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int zval_ptr_dtor(&zretval); zval_ptr_dtor(&zfuncname); - zval_ptr_dtor(&args[1]); zval_ptr_dtor(&args[0]); return ret; diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c index b4799d48a8..dad78beb13 100644 --- a/main/streams/xp_socket.c +++ b/main/streams/xp_socket.c @@ -101,7 +101,7 @@ retry: } if (didwrite > 0) { - php_stream_notify_progress_increment(stream->context, didwrite, 0); + php_stream_notify_progress_increment(PHP_STREAM_CONTEXT(stream), didwrite, 0); } if (didwrite < 0) { @@ -161,7 +161,7 @@ static size_t php_sockop_read(php_stream *stream, char *buf, size_t count TSRMLS stream->eof = (nr_bytes == 0 || (nr_bytes == -1 && php_socket_errno() != EWOULDBLOCK)); if (nr_bytes > 0) { - php_stream_notify_progress_increment(stream->context, nr_bytes, 0); + php_stream_notify_progress_increment(PHP_STREAM_CONTEXT(stream), nr_bytes, 0); } if (nr_bytes < 0) { @@ -247,7 +247,7 @@ static inline int sock_sendto(php_netstream_data_t *sock, const char *buf, size_ } static inline int sock_recvfrom(php_netstream_data_t *sock, char *buf, size_t buflen, int flags, - char **textaddr, long *textaddrlen, + zend_string **textaddr, struct sockaddr **addr, socklen_t *addrlen TSRMLS_DC) { @@ -260,7 +260,7 @@ static inline int sock_recvfrom(php_netstream_data_t *sock, char *buf, size_t bu ret = recvfrom(sock->socket, buf, buflen, flags, (struct sockaddr*)&sa, &sl); ret = (ret == SOCK_CONN_ERR) ? -1 : ret; php_network_populate_name_from_sockaddr((struct sockaddr*)&sa, sl, - textaddr, textaddrlen, addr, addrlen TSRMLS_CC); + textaddr, addr, addrlen TSRMLS_CC); } else { ret = recv(sock->socket, buf, buflen, flags); ret = (ret == SOCK_CONN_ERR) ? -1 : ret; @@ -338,7 +338,6 @@ static int php_sockop_set_option(php_stream *stream, int option, int value, void case STREAM_XPORT_OP_GET_NAME: xparam->outputs.returncode = php_network_get_sock_name(sock->socket, xparam->want_textaddr ? &xparam->outputs.textaddr : NULL, - xparam->want_textaddr ? &xparam->outputs.textaddrlen : NULL, xparam->want_addr ? &xparam->outputs.addr : NULL, xparam->want_addr ? &xparam->outputs.addrlen : NULL TSRMLS_CC); @@ -347,7 +346,6 @@ static int php_sockop_set_option(php_stream *stream, int option, int value, void case STREAM_XPORT_OP_GET_PEER_NAME: xparam->outputs.returncode = php_network_get_peer_name(sock->socket, xparam->want_textaddr ? &xparam->outputs.textaddr : NULL, - xparam->want_textaddr ? &xparam->outputs.textaddrlen : NULL, xparam->want_addr ? &xparam->outputs.addr : NULL, xparam->want_addr ? &xparam->outputs.addrlen : NULL TSRMLS_CC); @@ -383,7 +381,6 @@ static int php_sockop_set_option(php_stream *stream, int option, int value, void xparam->inputs.buf, xparam->inputs.buflen, flags, xparam->want_textaddr ? &xparam->outputs.textaddr : NULL, - xparam->want_textaddr ? &xparam->outputs.textaddrlen : NULL, xparam->want_addr ? &xparam->outputs.addr : NULL, xparam->want_addr ? &xparam->outputs.addrlen : NULL TSRMLS_CC); @@ -533,7 +530,7 @@ static inline int parse_unix_address(php_stream_xport_param *xparam, struct sock } #endif -static inline char *parse_ip_address_ex(const char *str, size_t str_len, int *portno, int get_err, char **err TSRMLS_DC) +static inline char *parse_ip_address_ex(const char *str, size_t str_len, int *portno, int get_err, zend_string **err TSRMLS_DC) { char *colon; char *host = NULL; @@ -546,7 +543,7 @@ static inline char *parse_ip_address_ex(const char *str, size_t str_len, int *po p = memchr(str + 1, ']', str_len - 2); if (!p || *(p + 1) != ':') { if (get_err) { - spprintf(err, 0, "Failed to parse IPv6 address \"%s\"", str); + *err = strpprintf(0, "Failed to parse IPv6 address \"%s\"", str); } return NULL; } @@ -564,7 +561,7 @@ static inline char *parse_ip_address_ex(const char *str, size_t str_len, int *po host = estrndup(str, colon - str); } else { if (get_err) { - spprintf(err, 0, "Failed to parse address \"%s\"", str); + *err = strpprintf(0, "Failed to parse address \"%s\"", str); } return NULL; } @@ -582,6 +579,8 @@ static inline int php_tcp_sockop_bind(php_stream *stream, php_netstream_data_t * { char *host = NULL; int portno, err; + long sockopts = STREAM_SOCKOP_NONE; + zval *tmpzval = NULL; #ifdef AF_UNIX if (stream->ops == &php_stream_unix_socket_ops || stream->ops == &php_stream_unixdg_socket_ops) { @@ -591,7 +590,7 @@ static inline int php_tcp_sockop_bind(php_stream *stream, php_netstream_data_t * if (sock->socket == SOCK_ERR) { if (xparam->want_errortext) { - spprintf(&xparam->outputs.error_text, 0, "Failed to create unix%s socket %s", + xparam->outputs.error_text = strpprintf(0, "Failed to create unix%s socket %s", stream->ops == &php_stream_unix_socket_ops ? "" : "datagram", strerror(errno)); } @@ -611,8 +610,28 @@ static inline int php_tcp_sockop_bind(php_stream *stream, php_netstream_data_t * return -1; } +#ifdef SO_REUSEPORT + if (PHP_STREAM_CONTEXT(stream) + && (tmpzval = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "socket", "so_reuseport")) != NULL + && zend_is_true(tmpzval TSRMLS_CC) + ) { + sockopts |= STREAM_SOCKOP_SO_REUSEPORT; + } +#endif + +#ifdef SO_BROADCAST + if (stream->ops == &php_stream_udp_socket_ops /* SO_BROADCAST is only applicable for UDP */ + && PHP_STREAM_CONTEXT(stream) + && (tmpzval = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "socket", "so_broadcast")) != NULL + && zend_is_true(tmpzval TSRMLS_CC) + ) { + sockopts |= STREAM_SOCKOP_SO_BROADCAST; + } +#endif + sock->socket = php_network_bind_socket_to_local_addr(host, portno, stream->ops == &php_stream_udp_socket_ops ? SOCK_DGRAM : SOCK_STREAM, + sockopts, xparam->want_errortext ? &xparam->outputs.error_text : NULL, &err TSRMLS_CC); @@ -632,6 +651,7 @@ static inline int php_tcp_sockop_connect(php_stream *stream, php_netstream_data_ int err = 0; int ret; zval *tmpzval = NULL; + long sockopts = STREAM_SOCKOP_NONE; #ifdef AF_UNIX if (stream->ops == &php_stream_unix_socket_ops || stream->ops == &php_stream_unixdg_socket_ops) { @@ -641,7 +661,7 @@ static inline int php_tcp_sockop_connect(php_stream *stream, php_netstream_data_ if (sock->socket == SOCK_ERR) { if (xparam->want_errortext) { - spprintf(&xparam->outputs.error_text, 0, "Failed to create unix socket"); + xparam->outputs.error_text = strpprintf(0, "Failed to create unix socket"); } return -1; } @@ -666,10 +686,10 @@ static inline int php_tcp_sockop_connect(php_stream *stream, php_netstream_data_ return -1; } - if (stream->context && (tmpzval = php_stream_context_get_option(stream->context, "socket", "bindto")) != NULL) { + if (PHP_STREAM_CONTEXT(stream) && (tmpzval = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "socket", "bindto")) != NULL) { if (Z_TYPE_P(tmpzval) != IS_STRING) { if (xparam->want_errortext) { - spprintf(&xparam->outputs.error_text, 0, "local_addr context option is not a string."); + xparam->outputs.error_text = strpprintf(0, "local_addr context option is not a string."); } efree(host); return -1; @@ -677,6 +697,16 @@ static inline int php_tcp_sockop_connect(php_stream *stream, php_netstream_data_ bindto = parse_ip_address_ex(Z_STRVAL_P(tmpzval), Z_STRLEN_P(tmpzval), &bindport, xparam->want_errortext, &xparam->outputs.error_text TSRMLS_CC); } +#ifdef SO_BROADCAST + if (stream->ops == &php_stream_udp_socket_ops /* SO_BROADCAST is only applicable for UDP */ + && PHP_STREAM_CONTEXT(stream) + && (tmpzval = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "socket", "so_broadcast")) != NULL + && zend_is_true(tmpzval TSRMLS_CC) + ) { + sockopts |= STREAM_SOCKOP_SO_BROADCAST; + } +#endif + /* Note: the test here for php_stream_udp_socket_ops is important, because we * want the default to be TCP sockets so that the openssl extension can * re-use this code. */ @@ -688,7 +718,8 @@ static inline int php_tcp_sockop_connect(php_stream *stream, php_netstream_data_ xparam->want_errortext ? &xparam->outputs.error_text : NULL, &err, bindto, - bindport + bindport, + sockopts TSRMLS_CC); ret = sock->socket == -1 ? -1 : 0; @@ -722,7 +753,6 @@ static inline int php_tcp_sockop_accept(php_stream *stream, php_netstream_data_t clisock = php_network_accept_incoming(sock->socket, xparam->want_textaddr ? &xparam->outputs.textaddr : NULL, - xparam->want_textaddr ? &xparam->outputs.textaddrlen : NULL, xparam->want_addr ? &xparam->outputs.addr : NULL, xparam->want_addr ? &xparam->outputs.addrlen : NULL, xparam->inputs.timeout, @@ -744,9 +774,9 @@ static inline int php_tcp_sockop_accept(php_stream *stream, php_netstream_data_t xparam->outputs.client = php_stream_alloc_rel(stream->ops, clisockdata, NULL, "r+"); if (xparam->outputs.client) { - xparam->outputs.client->context = stream->context; - if (stream->context) { - GC_REFCOUNT(stream->context->res)++; + xparam->outputs.client->ctx = stream->ctx; + if (stream->ctx) { + GC_REFCOUNT(stream->ctx)++; } } } diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c index 16f11fd40c..ff3889dd6c 100644 --- a/sapi/cgi/cgi_main.c +++ b/sapi/cgi/cgi_main.c @@ -238,7 +238,6 @@ static void print_modules(TSRMLS_D) HashTable sorted_registry; zend_hash_init(&sorted_registry, 64, NULL, NULL, 1); -//??? zend_hash_copy(&sorted_registry, &module_registry, NULL, &tmp, sizeof(zend_module_entry)); zend_hash_copy(&sorted_registry, &module_registry, NULL); zend_hash_sort(&sorted_registry, zend_qsort, module_name_cmp, 0 TSRMLS_CC); zend_hash_apply(&sorted_registry, print_module_info TSRMLS_CC); diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c index 8fe195f6d7..09cfd02ec9 100644 --- a/sapi/cli/php_cli_server.c +++ b/sapi/cli/php_cli_server.c @@ -415,7 +415,7 @@ PHP_FUNCTION(apache_request_headers) /* {{{ */ HashTable *headers; zend_string *key; char *value; - HashPosition pos; + zval tmp; if (zend_parse_parameters_none() == FAILURE) { return; @@ -426,13 +426,10 @@ PHP_FUNCTION(apache_request_headers) /* {{{ */ array_init_size(return_value, zend_hash_num_elements(headers)); - zend_hash_internal_pointer_reset_ex(headers, &pos); - while ((value = zend_hash_get_current_data_ptr_ex(headers, &pos)) != NULL) { - zend_hash_get_current_key_ex(headers, &key, NULL, 0, &pos); -//??? - add_assoc_string_ex(return_value, key->val, key->len, value); - zend_hash_move_forward_ex(headers, &pos); - } + ZEND_HASH_FOREACH_STR_KEY_PTR(headers, key, value) { + ZVAL_STRING(&tmp, value); + zend_symtable_update(Z_ARRVAL_P(return_value), key, &tmp); + } ZEND_HASH_FOREACH_END(); } /* }}} */ @@ -1210,7 +1207,7 @@ static void php_cli_server_logf(const char *format TSRMLS_DC, ...) /* {{{ */ efree(buf); } /* }}} */ -static int php_network_listen_socket(const char *host, int *port, int socktype, int *af, socklen_t *socklen, char **errstr TSRMLS_DC) /* {{{ */ +static int php_network_listen_socket(const char *host, int *port, int socktype, int *af, socklen_t *socklen, zend_string **errstr TSRMLS_DC) /* {{{ */ { int retval = SOCK_ERR; int err = 0; @@ -1325,7 +1322,7 @@ out: closesocket(retval); } if (errstr) { - *errstr = php_socket_strerror(err, NULL, 0); + *errstr = php_socket_error_str(err); } return SOCK_ERR; } @@ -1795,12 +1792,12 @@ static int php_cli_server_client_ctor(php_cli_server_client *client, php_cli_ser client->addr = addr; client->addr_len = addr_len; { - char *addr_str = 0; - long addr_str_len = 0; - php_network_populate_name_from_sockaddr(addr, addr_len, &addr_str, &addr_str_len, NULL, 0 TSRMLS_CC); - client->addr_str = pestrndup(addr_str, addr_str_len, 1); - client->addr_str_len = addr_str_len; - efree(addr_str); + zend_string *addr_str = 0; + + php_network_populate_name_from_sockaddr(addr, addr_len, &addr_str, NULL, 0 TSRMLS_CC); + client->addr_str = pestrndup(addr_str->val, addr_str->len, 1); + client->addr_str_len = addr_str->len; + STR_RELEASE(addr_str); } php_http_parser_init(&client->parser, PHP_HTTP_REQUEST); client->request_read = 0; @@ -2187,7 +2184,7 @@ static int php_cli_server_ctor(php_cli_server *server, const char *addr, const c { int retval = SUCCESS; char *host = NULL; - char *errstr = NULL; + zend_string *errstr = NULL; char *_document_root = NULL; char *_router = NULL; int err = 0; @@ -2234,8 +2231,10 @@ static int php_cli_server_ctor(php_cli_server *server, const char *addr, const c server_sock = php_network_listen_socket(host, &port, SOCK_STREAM, &server->address_family, &server->socklen, &errstr TSRMLS_CC); if (server_sock == SOCK_ERR) { - php_cli_server_logf("Failed to listen on %s:%d (reason: %s)" TSRMLS_CC, host, port, errstr ? errstr: "?"); - efree(errstr); + php_cli_server_logf("Failed to listen on %s:%d (reason: %s)" TSRMLS_CC, host, port, errstr ? errstr->val : "?"); + if (errstr) { + STR_RELEASE(errstr); + } retval = FAILURE; goto out; } diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c index 60f8e465eb..5e9fa89cc8 100644 --- a/sapi/fpm/fpm/fpm_main.c +++ b/sapi/fpm/fpm/fpm_main.c @@ -1137,6 +1137,22 @@ static void init_request_info(TSRMLS_D) TRANSLATE_SLASHES(env_document_root); } + if (!apache_was_here && env_path_translated != NULL && env_redirect_url != NULL && + env_path_translated != script_path_translated && + strcmp(env_path_translated, script_path_translated) != 0) { + /* + * pretty much apache specific. If we have a redirect_url + * then our script_filename and script_name point to the + * php executable + * we don't want to do this for the new mod_proxy_fcgi approach, + * where redirect_url may also exist but the below will break + * with rewrites to PATH_INFO, hence the !apache_was_here check + */ + script_path_translated = env_path_translated; + /* we correct SCRIPT_NAME now in case we don't have PATH_INFO */ + env_script_name = env_redirect_url; + } + #ifdef __riscos__ /* Convert path to unix format*/ __riscosify_control |= __RISCOSIFY_DONT_CHECK_DIR; @@ -1314,6 +1330,18 @@ static void init_request_info(TSRMLS_D) } script_path_translated = _sapi_cgibin_putenv("SCRIPT_FILENAME", script_path_translated TSRMLS_CC); } + if (!apache_was_here && env_redirect_url) { + /* if we used PATH_TRANSLATED to work around Apache mod_fastcgi (but not mod_proxy_fcgi, + * hence !apache_was_here) weirdness, strip info accordingly */ + if (orig_path_info) { + _sapi_cgibin_putenv("ORIG_PATH_INFO", orig_path_info TSRMLS_CC); + _sapi_cgibin_putenv("PATH_INFO", NULL TSRMLS_CC); + } + if (orig_path_translated) { + _sapi_cgibin_putenv("ORIG_PATH_TRANSLATED", orig_path_translated TSRMLS_CC); + _sapi_cgibin_putenv("PATH_TRANSLATED", NULL TSRMLS_CC); + } + } if (env_script_name != orig_script_name) { if (orig_script_name) { _sapi_cgibin_putenv("ORIG_SCRIPT_NAME", orig_script_name TSRMLS_CC); diff --git a/sapi/milter/Makefile.frag b/sapi/milter/Makefile.frag index 26200a196c..f193f56b01 100644 --- a/sapi/milter/Makefile.frag +++ b/sapi/milter/Makefile.frag @@ -1,8 +1,8 @@ milter: $(SAPI_MILTER_PATH) -$(SAPI_MILTER_PATH): $(PHP_GLOBAL_OBJS) $(PHP_BINARY_OBJS) $(PHP_SAPI_OBJS) +$(SAPI_MILTER_PATH): $(PHP_GLOBAL_OBJS) $(PHP_BINARY_OBJS) $(PHP_MILTER_OBJS) $(BUILD_MILTER) install-milter: $(SAPI_MILTER_PATH) - @$(INSTALL) -m 0755 $(SAPI_MILTER_PATH) $(bindir)/php-milter + @$(INSTALL) -m 0755 $(SAPI_MILTER_PATH) $(INSTALL_ROOT)$(bindir)/php-milter diff --git a/sapi/milter/config.m4 b/sapi/milter/config.m4 index 4bcad80bb4..a69ab2e1e7 100644 --- a/sapi/milter/config.m4 +++ b/sapi/milter/config.m4 @@ -22,10 +22,10 @@ if test "$PHP_MILTER" != "no"; then SAPI_MILTER_PATH=sapi/milter/php-milter PHP_BUILD_THREAD_SAFE - PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/sapi/milter/Makefile.frag) + PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/sapi/milter/Makefile.frag,$abs_srcdir/sapi/milter,sapi/milter) PHP_SELECT_SAPI(milter, program, php_milter.c getopt.c,,'$(SAPI_MILTER_PATH)') PHP_ADD_LIBRARY_WITH_PATH(milter, $MILTERPATH,) - BUILD_MILTER="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS) \$(LDFLAGS) \$(PHP_RPATHS) \$(PHP_GLOBAL_OBJS) \$(PHP_BINARY_OBJS) \$(PHP_MILTER_OBJS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_MILTER_PATH)" + BUILD_MILTER="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) \$(PHP_GLOBAL_OBJS) \$(PHP_BINARY_OBJS) \$(PHP_MILTER_OBJS) \$(EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_MILTER_PATH)" PHP_SUBST(SAPI_MILTER_PATH) PHP_SUBST(BUILD_MILTER) fi diff --git a/sapi/milter/php_milter.c b/sapi/milter/php_milter.c index 2f8e8117c2..443fee9dfd 100644 --- a/sapi/milter/php_milter.c +++ b/sapi/milter/php_milter.c @@ -525,6 +525,10 @@ static sfsistat mlfi_close(SMFICTX *ctx) int status; TSRMLS_FETCH(); + if (!SG(sapi_started) && SUCCESS != php_request_startup(TSRMLS_C)) { + return ret; + } + /* call userland */ INIT_ZVAL(function_name); ZVAL_STRING(&function_name, "milter_close", 0); @@ -550,7 +554,7 @@ static sfsistat mlfi_close(SMFICTX *ctx) /* {{{ Milter entry struct */ -struct smfiDesc smfilter = { +static struct smfiDesc smfilter = { "php-milter", /* filter name */ SMFI_VERSION, /* version code -- leave untouched */ 0, /* flags */ @@ -1011,6 +1015,7 @@ int main(int argc, char *argv[]) tsrm_startup(1, 1, 0, NULL); + tsrm_ls = ts_resource(0); sapi_startup(&milter_sapi_module); while ((c=ap_php_getopt(argc, argv, OPTSTRING))!=-1) { @@ -1028,7 +1033,6 @@ int main(int argc, char *argv[]) milter_sapi_module.executable_location = argv[0]; - tsrm_ls = ts_resource(0); sapi_module.startup(&milter_sapi_module); diff --git a/tests/classes/constants_error_002.phpt b/tests/classes/constants_error_002.phpt index be27971b87..63aa22109c 100644 --- a/tests/classes/constants_error_002.phpt +++ b/tests/classes/constants_error_002.phpt @@ -7,6 +7,6 @@ Error case: class constant as an array const myConst = array(); } ?> +===DONE=== --EXPECTF-- - -Fatal error: Arrays are not allowed in class constants in %s on line 4 +===DONE=== diff --git a/tests/lang/constants/PHP_INT_32bit.phpt b/tests/lang/constants/PHP_INT_32bit.phpt new file mode 100644 index 0000000000..0c85d9719b --- /dev/null +++ b/tests/lang/constants/PHP_INT_32bit.phpt @@ -0,0 +1,17 @@ +--TEST-- +Test PHP_INT_MIN, PHP_INT_MAX and PHP_INT_SIZE (32-bit) +--SKIPIF-- +<?php if (PHP_INT_SIZE !== 4) + die("skip this test is for 32-bit platforms only"); ?> +--FILE-- +<?php + +var_dump(PHP_INT_MIN); +var_dump(PHP_INT_MAX); +var_dump(PHP_INT_SIZE); + +?> +--EXPECT-- +int(-2147483648) +int(2147483647) +int(4)
\ No newline at end of file diff --git a/tests/lang/constants/PHP_INT_64bit.phpt b/tests/lang/constants/PHP_INT_64bit.phpt new file mode 100644 index 0000000000..4b7da3a3e9 --- /dev/null +++ b/tests/lang/constants/PHP_INT_64bit.phpt @@ -0,0 +1,17 @@ +--TEST-- +Test PHP_INT_MIN, PHP_INT_MAX and PHP_INT_SIZE (64-bit) +--SKIPIF-- +<?php if (PHP_INT_SIZE !== 8) + die("skip this test is for 64-bit platforms only"); ?> +--FILE-- +<?php + +var_dump(PHP_INT_MIN); +var_dump(PHP_INT_MAX); +var_dump(PHP_INT_SIZE); + +?> +--EXPECT-- +int(-9223372036854775808) +int(9223372036854775807) +int(8)
\ No newline at end of file diff --git a/win32/php_stdint.h b/win32/php_stdint.h index 5df1df4777..0d63615c6b 100644 --- a/win32/php_stdint.h +++ b/win32/php_stdint.h @@ -66,8 +66,12 @@ // 7.18.1 Integer types // 7.18.1.1 Exact-width integer types +#ifndef int8_t typedef __int8 int8_t; +#endif +#ifndef int16_t typedef __int16 int16_t; +#endif #ifndef int32_t typedef __int32 int32_t; #endif diff --git a/win32/sendmail.c b/win32/sendmail.c index ed9736c1dd..c191e0f3aa 100644 --- a/win32/sendmail.c +++ b/win32/sendmail.c @@ -616,9 +616,6 @@ static int SendText(char *RPath, char *Subject, char *mailTo, char *mailCc, char return (res); } -//???PHPAPI zend_string *php_str_to_str(char *haystack, int length, char *needle, -//??? int needle_len, char *str, int str_len); - /* Escape \n. sequences * We use php_str_to_str() and not php_str_replace_in_subject(), since the latter * uses ZVAL as it's parameters */ |