diff options
author | George Wang <gwang@php.net> | 2015-06-22 23:39:53 -0400 |
---|---|---|
committer | George Wang <gwang@php.net> | 2015-06-22 23:39:53 -0400 |
commit | b0954ebb79faf53176e528dd9a3038d2a16ab1ef (patch) | |
tree | 76f9dacf00a2fe17215e355979ec0357384914d1 | |
parent | 8877feaeec7442c459eb923a00ad6ce68edf186a (diff) | |
parent | 5fe078abba7dc87ecc05fa3b9bf544867e947567 (diff) | |
download | php-git-b0954ebb79faf53176e528dd9a3038d2a16ab1ef.tar.gz |
Merge branch 'PHP-5.5' of git.php.net:php-src into PHP-5.5
30 files changed, 1870 insertions, 1025 deletions
@@ -1,6 +1,44 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -?? ??? 2015, PHP 5.5.26 +?? ??? 2015, PHP 5.5.27 + +- Core: + . Fixed bug #69703 (Use __builtin_clzl on PowerPC). + (dja at axtens dot net, Kalle) + . Fixed bug #69732 (can induce segmentation fault with basic php code). + (Dmitry) + . Fixed bug #69642 (Windows 10 reported as Windows 8). + (Christian Wenz, Anatol Belski) + . Fixed bug #69551 (parse_ini_file() and parse_ini_string() segmentation + fault). (Christoph M. Becker) + . Fixed bug #69781 (phpinfo() reports Professional Editions of Windows + 7/8/8.1/10 as "Business"). (Christian Wenz) + . Fixed bug #69835 (phpinfo() does not report many Windows SKUs). + (Christian Wenz) + . Fixed bug #69892 (Different arrays compare indentical due to integer key + truncation). (Nikita) + +- GD: + . Fixed bug #61221 (imagegammacorrect function loses alpha channel). (cmb) + +- PDO_pgsql: + . Fixed bug #69752 (PDOStatement::execute() leaks memory with DML + Statements when closeCuror() is u). (Philip Hofstetter) + . Fixed bug #69362 (PDO-pgsql fails to connect if password contains a + leading single quote). (Matteo) + . Fixed bug #69344 (PDO PgSQL Incorrect binding numeric array with gaps). + (Matteo) + +- SimpleXML: + . Refactored the fix for bug #66084 (simplexml_load_string() mangles empty + node name). (Christoph Michael Becker) + +- SPL: + . Fixed bug #69737 (Segfault when SplMinHeap::compare produces fatal error). + (Stas) + . Fixed bug #67805 (SplFileObject setMaxLineLength). (Willian Gustavo Veiga). + +11 Jun 2015, PHP 5.5.26 - Core: . Fixed bug #69566 (Conditional jump or move depends on uninitialised value @@ -9,12 +47,11 @@ (Julien) . Fixed bug #69628 (complex GLOB_BRACE fails on Windows). (Christoph M. Becker) - . Fixed bug #69703 (Use __builtin_clzl on PowerPC). - (dja at axtens dot net, Kalle) - . Fixed bug #69732 (can induce segmentation fault with basic php code). - (Dmitry) - . Fixed #69642 (Windows 10 reported as Windows 8). - (Christian Wenz, Anatol Belski) + . Improved fix for bug #69545 (Integer overflow in ftp_genlist() resulting in + heap overflow). (CVE-2015-4643) (Max Spelsberg) + . Fixed bug #69646 (OS command injection vulnerability in escapeshellarg). + (CVE-2015-4642) (Anatol Belski) + . Fixed bug #69719 (Incorrect handling of paths with NULs). (Stas) - GD: . Fixed bug #69479 (GD fails to build with newer libvpx). (Remi) @@ -22,6 +59,13 @@ - Iconv: . Fixed bug #48147 (iconv with //IGNORE cuts the string). (Stas) +- Litespeed SAPI: + . Fixed bug #68812 (Unchecked return value). (George Wang) + +- Mail: + . Fixed bug #68776 (mail() does not have mail header injection prevention for + additional headers). (Yasuo) + - MCrypt: . Added file descriptor caching to mcrypt_create_iv() (Leigh) @@ -33,21 +77,12 @@ (Matteo Bernardini, Remi) - Postgres: - . Fixed bug #69667 (segfault in php_pgsql_meta_data). (Remi) + . Fixed bug #69667 (segfault in php_pgsql_meta_data). (CVE-2015-4644) (Remi) - Opcache . Fixed bug #69549 (Memory leak with opcache.optimization_level=0xFFFFFFFF). (Laruence, Dmitry) -- SimpleXML: - . Refactored the fix for bug #66084 (simplexml_load_string() mangles empty - node name). (Christoph Michael Becker) - -- SPL: - . Fixed bug #69737 (Segfault when SplMinHeap::compare produces fatal error). - (Stas) - . Fixed bug #67805 (SplFileObject setMaxLineLength). (Willian Gustavo Veiga). - - Sqlite3: . Upgrade bundled sqlite to 3.8.10.2. (CVE-2015-3414, CVE-2015-3415, CVE-2015-3416) (Kaplan) diff --git a/Zend/tests/bug69551.phpt b/Zend/tests/bug69551.phpt new file mode 100644 index 0000000000..096852a2fa --- /dev/null +++ b/Zend/tests/bug69551.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #69551 - parse_ini_file() and parse_ini_string() segmentation fault +--FILE-- +<?php +$ini = <<<INI +[Network.eth0] +SubnetMask = " +" +INI; +$settings = parse_ini_string($ini, false, INI_SCANNER_RAW); +var_dump($settings); +?> +--EXPECTF-- +Warning: syntax error, unexpected '"' in Unknown on line %d + in %s on line %d +bool(false) diff --git a/Zend/tests/bug69892.phpt b/Zend/tests/bug69892.phpt new file mode 100644 index 0000000000..d14f85fa52 --- /dev/null +++ b/Zend/tests/bug69892.phpt @@ -0,0 +1,10 @@ +--TEST-- +Bug #69892: Different arrays compare indentical due to integer key truncation +--SKIPIF-- +<?php if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platforms only"); ?> +--FILE-- +<?php +var_dump([0 => 0] === [0x100000000 => 0]); +?> +--EXPECT-- +bool(false) diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index b18fd59da8..065172c12a 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -1534,11 +1534,10 @@ ZEND_API int zend_hash_compare(HashTable *ht1, HashTable *ht2, compare_func_t co } if (ordered) { if (p1->nKeyLength==0 && p2->nKeyLength==0) { /* numeric indices */ - result = p1->h - p2->h; - if (result!=0) { + if (p1->h != p2->h) { HASH_UNPROTECT_RECURSION(ht1); HASH_UNPROTECT_RECURSION(ht2); - return result; + return p1->h > p2->h ? 1 : -1; } } else { /* string indices */ result = p1->nKeyLength - p2->nKeyLength; diff --git a/Zend/zend_ini_scanner.c b/Zend/zend_ini_scanner.c index 8f6f7035b2..b31410295e 100644 --- a/Zend/zend_ini_scanner.c +++ b/Zend/zend_ini_scanner.c @@ -1926,7 +1926,7 @@ end_raw_value_chars: } /* Eat leading and trailing double quotes */ - if (yytext[0] == '"' && yytext[yyleng - 1] == '"') { + if (yyleng > 1 && yytext[0] == '"' && yytext[yyleng - 1] == '"') { SCNG(yy_text)++; yyleng = yyleng - 2; } else if (sc) { diff --git a/Zend/zend_ini_scanner.l b/Zend/zend_ini_scanner.l index a0a4df7d49..6019bf2fbc 100644 --- a/Zend/zend_ini_scanner.l +++ b/Zend/zend_ini_scanner.l @@ -472,7 +472,7 @@ end_raw_value_chars: } /* Eat leading and trailing double quotes */ - if (yytext[0] == '"' && yytext[yyleng - 1] == '"') { + if (yyleng > 1 && yytext[0] == '"' && yytext[yyleng - 1] == '"') { SCNG(yy_text)++; yyleng = yyleng - 2; } else if (sc) { diff --git a/configure.in b/configure.in index ba1ecb7609..cc36598bfd 100644 --- a/configure.in +++ b/configure.in @@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const char *format, ...); PHP_MAJOR_VERSION=5 PHP_MINOR_VERSION=5 -PHP_RELEASE_VERSION=26 +PHP_RELEASE_VERSION=27 PHP_EXTRA_VERSION="-dev" PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION" PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION` diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h index ff6c1724c0..b8d61e052b 100644 --- a/ext/date/lib/timezonedb.h +++ b/ext/date/lib/timezonedb.h @@ -14,577 +14,577 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[583] = { { "Africa/Bujumbura" , 0x000EF0 }, { "Africa/Cairo" , 0x000FA7 }, { "Africa/Casablanca" , 0x001767 }, - { "Africa/Ceuta" , 0x001DEC }, - { "Africa/Conakry" , 0x002622 }, - { "Africa/Dakar" , 0x0026D8 }, - { "Africa/Dar_es_Salaam" , 0x00278E }, - { "Africa/Djibouti" , 0x0028B5 }, - { "Africa/Douala" , 0x0029DC }, - { "Africa/El_Aaiun" , 0x002A93 }, - { "Africa/Freetown" , 0x00306E }, - { "Africa/Gaborone" , 0x003124 }, - { "Africa/Harare" , 0x0031DB }, - { "Africa/Johannesburg" , 0x003292 }, - { "Africa/Juba" , 0x0033AD }, - { "Africa/Kampala" , 0x003664 }, - { "Africa/Khartoum" , 0x00378B }, - { "Africa/Kigali" , 0x003A42 }, - { "Africa/Kinshasa" , 0x003AF9 }, - { "Africa/Lagos" , 0x003BC7 }, - { "Africa/Libreville" , 0x003C7E }, - { "Africa/Lome" , 0x003D35 }, - { "Africa/Luanda" , 0x003DEB }, - { "Africa/Lubumbashi" , 0x003EA2 }, - { "Africa/Lusaka" , 0x003F70 }, - { "Africa/Malabo" , 0x004027 }, - { "Africa/Maputo" , 0x0040DE }, - { "Africa/Maseru" , 0x004195 }, - { "Africa/Mbabane" , 0x0042B0 }, - { "Africa/Mogadishu" , 0x0043CB }, - { "Africa/Monrovia" , 0x0044F2 }, - { "Africa/Nairobi" , 0x0045EF }, - { "Africa/Ndjamena" , 0x004716 }, - { "Africa/Niamey" , 0x004803 }, - { "Africa/Nouakchott" , 0x0048BA }, - { "Africa/Ouagadougou" , 0x004970 }, - { "Africa/Porto-Novo" , 0x004A26 }, - { "Africa/Sao_Tome" , 0x004ADD }, - { "Africa/Timbuktu" , 0x004B93 }, - { "Africa/Tripoli" , 0x004C49 }, - { "Africa/Tunis" , 0x004EE4 }, - { "Africa/Windhoek" , 0x0051B6 }, - { "America/Adak" , 0x0057F0 }, - { "America/Anchorage" , 0x006149 }, - { "America/Anguilla" , 0x006AB0 }, - { "America/Antigua" , 0x006B66 }, - { "America/Araguaina" , 0x006C1C }, - { "America/Argentina/Buenos_Aires" , 0x006FB1 }, - { "America/Argentina/Catamarca" , 0x007411 }, - { "America/Argentina/ComodRivadavia" , 0x0078A1 }, - { "America/Argentina/Cordoba" , 0x007D16 }, - { "America/Argentina/Jujuy" , 0x0081BA }, - { "America/Argentina/La_Rioja" , 0x008649 }, - { "America/Argentina/Mendoza" , 0x008AD9 }, - { "America/Argentina/Rio_Gallegos" , 0x008F86 }, - { "America/Argentina/Salta" , 0x00940A }, - { "America/Argentina/San_Juan" , 0x009873 }, - { "America/Argentina/San_Luis" , 0x009D03 }, - { "America/Argentina/Tucuman" , 0x00A1AF }, - { "America/Argentina/Ushuaia" , 0x00A64C }, - { "America/Aruba" , 0x00AAD6 }, - { "America/Asuncion" , 0x00ABB2 }, - { "America/Atikokan" , 0x00B3CC }, - { "America/Atka" , 0x00B575 }, - { "America/Bahia" , 0x00BEBE }, - { "America/Bahia_Banderas" , 0x00C2DB }, - { "America/Barbados" , 0x00C943 }, - { "America/Belem" , 0x00CAA7 }, - { "America/Belize" , 0x00CD0C }, - { "America/Blanc-Sablon" , 0x00D0E8 }, - { "America/Boa_Vista" , 0x00D25A }, - { "America/Bogota" , 0x00D4F1 }, - { "America/Boise" , 0x00D5FE }, - { "America/Buenos_Aires" , 0x00DF96 }, - { "America/Cambridge_Bay" , 0x00E3E1 }, - { "America/Campo_Grande" , 0x00EC3B }, - { "America/Cancun" , 0x00F438 }, - { "America/Caracas" , 0x00F798 }, - { "America/Catamarca" , 0x00F8AE }, - { "America/Cayenne" , 0x00FD23 }, - { "America/Cayman" , 0x00FDF7 }, - { "America/Chicago" , 0x00FECE }, - { "America/Chihuahua" , 0x010CE7 }, - { "America/Coral_Harbour" , 0x01131A }, - { "America/Cordoba" , 0x01147F }, - { "America/Costa_Rica" , 0x0118F4 }, - { "America/Creston" , 0x011A55 }, - { "America/Cuiaba" , 0x011B7C }, - { "America/Curacao" , 0x012356 }, - { "America/Danmarkshavn" , 0x012432 }, - { "America/Dawson" , 0x012729 }, - { "America/Dawson_Creek" , 0x012F7C }, - { "America/Denver" , 0x0133F4 }, - { "America/Detroit" , 0x013DA2 }, - { "America/Dominica" , 0x01467E }, - { "America/Edmonton" , 0x014734 }, - { "America/Eirunepe" , 0x0150E4 }, - { "America/El_Salvador" , 0x0153A6 }, - { "America/Ensenada" , 0x0154AC }, - { "America/Fort_Wayne" , 0x0160EE }, - { "America/Fortaleza" , 0x015DEC }, - { "America/Glace_Bay" , 0x016785 }, - { "America/Godthab" , 0x017076 }, - { "America/Goose_Bay" , 0x0177E5 }, - { "America/Grand_Turk" , 0x0184AD }, - { "America/Grenada" , 0x0189C0 }, - { "America/Guadeloupe" , 0x018A76 }, - { "America/Guatemala" , 0x018B2C }, - { "America/Guayaquil" , 0x018C6A }, - { "America/Guyana" , 0x018D49 }, - { "America/Halifax" , 0x018E63 }, - { "America/Havana" , 0x019C0B }, - { "America/Hermosillo" , 0x01A59C }, - { "America/Indiana/Indianapolis" , 0x01A78D }, - { "America/Indiana/Knox" , 0x01AE4B }, - { "America/Indiana/Marengo" , 0x01B802 }, - { "America/Indiana/Petersburg" , 0x01BEF9 }, - { "America/Indiana/Tell_City" , 0x01CD39 }, - { "America/Indiana/Vevay" , 0x01D431 }, - { "America/Indiana/Vincennes" , 0x01D9F7 }, - { "America/Indiana/Winamac" , 0x01E0EA }, - { "America/Indianapolis" , 0x01C6A2 }, - { "America/Inuvik" , 0x01E818 }, - { "America/Iqaluit" , 0x01EFD6 }, - { "America/Jamaica" , 0x01F80C }, - { "America/Jujuy" , 0x01FA13 }, - { "America/Juneau" , 0x01FE98 }, - { "America/Kentucky/Louisville" , 0x0207FC }, - { "America/Kentucky/Monticello" , 0x02130E }, - { "America/Knox_IN" , 0x021C79 }, - { "America/Kralendijk" , 0x02260A }, - { "America/La_Paz" , 0x0226E6 }, - { "America/Lima" , 0x0227E5 }, - { "America/Los_Angeles" , 0x022992 }, - { "America/Louisville" , 0x0234C7 }, - { "America/Lower_Princes" , 0x023FB0 }, - { "America/Maceio" , 0x02408C }, - { "America/Managua" , 0x02439C }, - { "America/Manaus" , 0x024577 }, - { "America/Marigot" , 0x0247F5 }, - { "America/Martinique" , 0x0248AB }, - { "America/Matamoros" , 0x0249B8 }, - { "America/Mazatlan" , 0x024F96 }, - { "America/Mendoza" , 0x0255E6 }, - { "America/Menominee" , 0x025A87 }, - { "America/Merida" , 0x0263C5 }, - { "America/Metlakatla" , 0x0269A1 }, - { "America/Mexico_City" , 0x026CA7 }, - { "America/Miquelon" , 0x027322 }, - { "America/Moncton" , 0x0279C2 }, - { "America/Monterrey" , 0x028646 }, - { "America/Montevideo" , 0x028C2E }, - { "America/Montreal" , 0x0294AA }, - { "America/Montserrat" , 0x02A265 }, - { "America/Nassau" , 0x02A31B }, - { "America/New_York" , 0x02AC13 }, - { "America/Nipigon" , 0x02BA04 }, - { "America/Nome" , 0x02C2AE }, - { "America/Noronha" , 0x02CC1B }, - { "America/North_Dakota/Beulah" , 0x02CF0F }, - { "America/North_Dakota/Center" , 0x02D89B }, - { "America/North_Dakota/New_Salem" , 0x02E227 }, - { "America/Ojinaga" , 0x02EBC8 }, - { "America/Panama" , 0x02F1F1 }, - { "America/Pangnirtung" , 0x02F2C8 }, - { "America/Paramaribo" , 0x02FB33 }, - { "America/Phoenix" , 0x02FC73 }, - { "America/Port-au-Prince" , 0x02FE10 }, - { "America/Port_of_Spain" , 0x030683 }, - { "America/Porto_Acre" , 0x0303E7 }, - { "America/Porto_Velho" , 0x030739 }, - { "America/Puerto_Rico" , 0x030999 }, - { "America/Rainy_River" , 0x030AA4 }, - { "America/Rankin_Inlet" , 0x031335 }, - { "America/Recife" , 0x031AE9 }, - { "America/Regina" , 0x031DD7 }, - { "America/Resolute" , 0x0321FA }, - { "America/Rio_Branco" , 0x0329B0 }, - { "America/Rosario" , 0x032C50 }, - { "America/Santa_Isabel" , 0x0330C5 }, - { "America/Santarem" , 0x033A3F }, - { "America/Santiago" , 0x033CC3 }, - { "America/Santo_Domingo" , 0x03444E }, - { "America/Sao_Paulo" , 0x034643 }, - { "America/Scoresbysund" , 0x034E60 }, - { "America/Shiprock" , 0x035610 }, - { "America/Sitka" , 0x035FB1 }, - { "America/St_Barthelemy" , 0x036913 }, - { "America/St_Johns" , 0x0369C9 }, - { "America/St_Kitts" , 0x03784D }, - { "America/St_Lucia" , 0x037903 }, - { "America/St_Thomas" , 0x0379B9 }, - { "America/St_Vincent" , 0x037A6F }, - { "America/Swift_Current" , 0x037B25 }, - { "America/Tegucigalpa" , 0x037D9D }, - { "America/Thule" , 0x037EBF }, - { "America/Thunder_Bay" , 0x0384D3 }, - { "America/Tijuana" , 0x038DA5 }, - { "America/Toronto" , 0x039715 }, - { "America/Tortola" , 0x03A500 }, - { "America/Vancouver" , 0x03A5B6 }, - { "America/Virgin" , 0x03B13B }, - { "America/Whitehorse" , 0x03B1F1 }, - { "America/Winnipeg" , 0x03BA44 }, - { "America/Yakutat" , 0x03C5C1 }, - { "America/Yellowknife" , 0x03CEFA }, - { "Antarctica/Casey" , 0x03D6EF }, - { "Antarctica/Davis" , 0x03D82A }, - { "Antarctica/DumontDUrville" , 0x03D975 }, - { "Antarctica/Macquarie" , 0x03DA89 }, - { "Antarctica/Mawson" , 0x03E09F }, - { "Antarctica/McMurdo" , 0x03E190 }, - { "Antarctica/Palmer" , 0x03EB65 }, - { "Antarctica/Rothera" , 0x03F116 }, - { "Antarctica/South_Pole" , 0x03F1EF }, - { "Antarctica/Syowa" , 0x03FB97 }, - { "Antarctica/Troll" , 0x03FC69 }, - { "Antarctica/Vostok" , 0x04011C }, - { "Arctic/Longyearbyen" , 0x0401F1 }, - { "Asia/Aden" , 0x040AC8 }, - { "Asia/Almaty" , 0x040B7F }, - { "Asia/Amman" , 0x040F41 }, - { "Asia/Anadyr" , 0x0416A2 }, - { "Asia/Aqtau" , 0x041B8E }, - { "Asia/Aqtobe" , 0x042041 }, - { "Asia/Ashgabat" , 0x042478 }, - { "Asia/Ashkhabad" , 0x042723 }, - { "Asia/Baghdad" , 0x0429CE }, - { "Asia/Bahrain" , 0x042DB6 }, - { "Asia/Baku" , 0x042E93 }, - { "Asia/Bangkok" , 0x043643 }, - { "Asia/Beirut" , 0x04371B }, - { "Asia/Bishkek" , 0x043FA6 }, - { "Asia/Brunei" , 0x0443D7 }, - { "Asia/Calcutta" , 0x0444AC }, - { "Asia/Chita" , 0x0445DB }, - { "Asia/Choibalsan" , 0x044AEF }, - { "Asia/Chongqing" , 0x04513E }, - { "Asia/Chungking" , 0x0452E8 }, - { "Asia/Colombo" , 0x045492 }, - { "Asia/Dacca" , 0x045623 }, - { "Asia/Damascus" , 0x0457B5 }, - { "Asia/Dhaka" , 0x0460D1 }, - { "Asia/Dili" , 0x046263 }, - { "Asia/Dubai" , 0x0463A4 }, - { "Asia/Dushanbe" , 0x04645B }, - { "Asia/Gaza" , 0x0466CA }, - { "Asia/Harbin" , 0x046FEA }, - { "Asia/Hebron" , 0x047194 }, - { "Asia/Ho_Chi_Minh" , 0x047ACF }, - { "Asia/Hong_Kong" , 0x047C50 }, - { "Asia/Hovd" , 0x048101 }, - { "Asia/Irkutsk" , 0x048721 }, - { "Asia/Istanbul" , 0x048C2F }, - { "Asia/Jakarta" , 0x0496F6 }, - { "Asia/Jayapura" , 0x049882 }, - { "Asia/Jerusalem" , 0x0499B0 }, - { "Asia/Kabul" , 0x04A295 }, - { "Asia/Kamchatka" , 0x04A368 }, - { "Asia/Karachi" , 0x04A843 }, - { "Asia/Kashgar" , 0x04A9E2 }, - { "Asia/Kathmandu" , 0x04AA99 }, - { "Asia/Katmandu" , 0x04AB79 }, - { "Asia/Khandyga" , 0x04AC59 }, - { "Asia/Kolkata" , 0x04B1B2 }, - { "Asia/Krasnoyarsk" , 0x04B2E1 }, - { "Asia/Kuala_Lumpur" , 0x04B7D0 }, - { "Asia/Kuching" , 0x04B97D }, - { "Asia/Kuwait" , 0x04BB9F }, - { "Asia/Macao" , 0x04BC56 }, - { "Asia/Macau" , 0x04BF7D }, - { "Asia/Magadan" , 0x04C2A4 }, - { "Asia/Makassar" , 0x04C7AB }, - { "Asia/Manila" , 0x04C917 }, - { "Asia/Muscat" , 0x04CA8C }, - { "Asia/Nicosia" , 0x04CB43 }, - { "Asia/Novokuznetsk" , 0x04D32F }, - { "Asia/Novosibirsk" , 0x04D84C }, - { "Asia/Omsk" , 0x04DD27 }, - { "Asia/Oral" , 0x04E215 }, - { "Asia/Phnom_Penh" , 0x04E67C }, - { "Asia/Pontianak" , 0x04E754 }, - { "Asia/Pyongyang" , 0x04E8EC }, - { "Asia/Qatar" , 0x04EA0F }, - { "Asia/Qyzylorda" , 0x04EAEC }, - { "Asia/Rangoon" , 0x04EF52 }, - { "Asia/Riyadh" , 0x04F07B }, - { "Asia/Saigon" , 0x04F132 }, - { "Asia/Sakhalin" , 0x04F2B3 }, - { "Asia/Samarkand" , 0x04F7A5 }, - { "Asia/Seoul" , 0x04FA73 }, - { "Asia/Shanghai" , 0x04FCBA }, - { "Asia/Singapore" , 0x04FE70 }, - { "Asia/Srednekolymsk" , 0x050028 }, - { "Asia/Taipei" , 0x050528 }, - { "Asia/Tashkent" , 0x050854 }, - { "Asia/Tbilisi" , 0x050B18 }, - { "Asia/Tehran" , 0x050F9A }, - { "Asia/Tel_Aviv" , 0x051623 }, - { "Asia/Thimbu" , 0x051F08 }, - { "Asia/Thimphu" , 0x051FE5 }, - { "Asia/Tokyo" , 0x0520C2 }, - { "Asia/Ujung_Pandang" , 0x052231 }, - { "Asia/Ulaanbaatar" , 0x052355 }, - { "Asia/Ulan_Bator" , 0x052958 }, - { "Asia/Urumqi" , 0x052F4D }, - { "Asia/Ust-Nera" , 0x053011 }, - { "Asia/Vientiane" , 0x053541 }, - { "Asia/Vladivostok" , 0x053619 }, - { "Asia/Yakutsk" , 0x053B06 }, - { "Asia/Yekaterinburg" , 0x053FF2 }, - { "Asia/Yerevan" , 0x054545 }, - { "Atlantic/Azores" , 0x054A4E }, - { "Atlantic/Bermuda" , 0x055800 }, - { "Atlantic/Canary" , 0x055FE0 }, - { "Atlantic/Cape_Verde" , 0x056773 }, - { "Atlantic/Faeroe" , 0x05687D }, - { "Atlantic/Faroe" , 0x056FAE }, - { "Atlantic/Jan_Mayen" , 0x0576DF }, - { "Atlantic/Madeira" , 0x057FB6 }, - { "Atlantic/Reykjavik" , 0x058D67 }, - { "Atlantic/South_Georgia" , 0x059219 }, - { "Atlantic/St_Helena" , 0x0597A3 }, - { "Atlantic/Stanley" , 0x0592B9 }, - { "Australia/ACT" , 0x059859 }, - { "Australia/Adelaide" , 0x05A114 }, - { "Australia/Brisbane" , 0x05A9ED }, - { "Australia/Broken_Hill" , 0x05ABD8 }, - { "Australia/Canberra" , 0x05B4E2 }, - { "Australia/Currie" , 0x05BD9D }, - { "Australia/Darwin" , 0x05C66E }, - { "Australia/Eucla" , 0x05C7CF }, - { "Australia/Hobart" , 0x05C9E0 }, - { "Australia/LHI" , 0x05D324 }, - { "Australia/Lindeman" , 0x05DA73 }, - { "Australia/Lord_Howe" , 0x05DCA5 }, - { "Australia/Melbourne" , 0x05E404 }, - { "Australia/North" , 0x05ECC7 }, - { "Australia/NSW" , 0x05EE16 }, - { "Australia/Perth" , 0x05F6D1 }, - { "Australia/Queensland" , 0x05F8DE }, - { "Australia/South" , 0x05FAAE }, - { "Australia/Sydney" , 0x060378 }, - { "Australia/Tasmania" , 0x060C53 }, - { "Australia/Victoria" , 0x06157E }, - { "Australia/West" , 0x061E39 }, - { "Australia/Yancowinna" , 0x062024 }, - { "Brazil/Acre" , 0x062912 }, - { "Brazil/DeNoronha" , 0x062BAE }, - { "Brazil/East" , 0x062E92 }, - { "Brazil/West" , 0x06367D }, - { "Canada/Atlantic" , 0x0638F1 }, - { "Canada/Central" , 0x06466B }, - { "Canada/East-Saskatchewan" , 0x065F7D }, - { "Canada/Eastern" , 0x0651C2 }, - { "Canada/Mountain" , 0x06636B }, - { "Canada/Newfoundland" , 0x066CD9 }, - { "Canada/Pacific" , 0x067B35 }, - { "Canada/Saskatchewan" , 0x068696 }, - { "Canada/Yukon" , 0x068A84 }, - { "CET" , 0x0692BD }, - { "Chile/Continental" , 0x069AFF }, - { "Chile/EasterIsland" , 0x06A27C }, - { "CST6CDT" , 0x06A8D6 }, - { "Cuba" , 0x06B1D8 }, - { "EET" , 0x06BB69 }, - { "Egypt" , 0x06C2C9 }, - { "Eire" , 0x06CA89 }, - { "EST" , 0x06D87C }, - { "EST5EDT" , 0x06D907 }, - { "Etc/GMT" , 0x06E209 }, - { "Etc/GMT+0" , 0x06E3AA }, - { "Etc/GMT+1" , 0x06E4C9 }, - { "Etc/GMT+10" , 0x06E5F4 }, - { "Etc/GMT+11" , 0x06E723 }, - { "Etc/GMT+12" , 0x06E852 }, - { "Etc/GMT+2" , 0x06EAAD }, - { "Etc/GMT+3" , 0x06EBD4 }, - { "Etc/GMT+4" , 0x06ECFB }, - { "Etc/GMT+5" , 0x06EE22 }, - { "Etc/GMT+6" , 0x06EF49 }, - { "Etc/GMT+7" , 0x06F070 }, - { "Etc/GMT+8" , 0x06F197 }, - { "Etc/GMT+9" , 0x06F2BE }, - { "Etc/GMT-0" , 0x06E31F }, - { "Etc/GMT-1" , 0x06E435 }, - { "Etc/GMT-10" , 0x06E55C }, - { "Etc/GMT-11" , 0x06E68B }, - { "Etc/GMT-12" , 0x06E7BA }, - { "Etc/GMT-13" , 0x06E8E9 }, - { "Etc/GMT-14" , 0x06E981 }, - { "Etc/GMT-2" , 0x06EA19 }, - { "Etc/GMT-3" , 0x06EB40 }, - { "Etc/GMT-4" , 0x06EC67 }, - { "Etc/GMT-5" , 0x06ED8E }, - { "Etc/GMT-6" , 0x06EEB5 }, - { "Etc/GMT-7" , 0x06EFDC }, - { "Etc/GMT-8" , 0x06F103 }, - { "Etc/GMT-9" , 0x06F22A }, - { "Etc/GMT0" , 0x06E294 }, - { "Etc/Greenwich" , 0x06F351 }, - { "Etc/UCT" , 0x06F3DC }, - { "Etc/Universal" , 0x06F467 }, - { "Etc/UTC" , 0x06F4F2 }, - { "Etc/Zulu" , 0x06F57D }, - { "Europe/Amsterdam" , 0x06F608 }, - { "Europe/Andorra" , 0x070193 }, - { "Europe/Athens" , 0x070876 }, - { "Europe/Belfast" , 0x071161 }, - { "Europe/Belgrade" , 0x071FD4 }, - { "Europe/Berlin" , 0x072785 }, - { "Europe/Bratislava" , 0x0730BE }, - { "Europe/Brussels" , 0x0739AA }, - { "Europe/Bucharest" , 0x074550 }, - { "Europe/Budapest" , 0x074E09 }, - { "Europe/Busingen" , 0x07577A }, - { "Europe/Chisinau" , 0x075F0C }, - { "Europe/Copenhagen" , 0x076899 }, - { "Europe/Dublin" , 0x077115 }, - { "Europe/Gibraltar" , 0x077F08 }, - { "Europe/Guernsey" , 0x078B09 }, - { "Europe/Helsinki" , 0x07997C }, - { "Europe/Isle_of_Man" , 0x07A0FD }, - { "Europe/Istanbul" , 0x07AF70 }, - { "Europe/Jersey" , 0x07BA37 }, - { "Europe/Kaliningrad" , 0x07C8AA }, - { "Europe/Kiev" , 0x07CEDB }, - { "Europe/Lisbon" , 0x07D726 }, - { "Europe/Ljubljana" , 0x07E4B7 }, - { "Europe/London" , 0x07EC68 }, - { "Europe/Luxembourg" , 0x07FADB }, - { "Europe/Madrid" , 0x080685 }, - { "Europe/Malta" , 0x0810D4 }, - { "Europe/Mariehamn" , 0x081B25 }, - { "Europe/Minsk" , 0x0822A6 }, - { "Europe/Monaco" , 0x08280A }, - { "Europe/Moscow" , 0x08339F }, - { "Europe/Nicosia" , 0x0839BA }, - { "Europe/Oslo" , 0x0841A6 }, - { "Europe/Paris" , 0x084A7D }, - { "Europe/Podgorica" , 0x085624 }, - { "Europe/Prague" , 0x085DD5 }, - { "Europe/Riga" , 0x0866C1 }, - { "Europe/Rome" , 0x086F88 }, - { "Europe/Samara" , 0x087A0A }, - { "Europe/San_Marino" , 0x087FC1 }, - { "Europe/Sarajevo" , 0x088A43 }, - { "Europe/Simferopol" , 0x0891F4 }, - { "Europe/Skopje" , 0x0897F2 }, - { "Europe/Sofia" , 0x089FA3 }, - { "Europe/Stockholm" , 0x08A801 }, - { "Europe/Tallinn" , 0x08AF8B }, - { "Europe/Tirane" , 0x08B830 }, - { "Europe/Tiraspol" , 0x08C06E }, - { "Europe/Uzhgorod" , 0x08C9FB }, - { "Europe/Vaduz" , 0x08D246 }, - { "Europe/Vatican" , 0x08D9D0 }, - { "Europe/Vienna" , 0x08E452 }, - { "Europe/Vilnius" , 0x08ED1B }, - { "Europe/Volgograd" , 0x08F5BE }, - { "Europe/Warsaw" , 0x08FB0E }, - { "Europe/Zagreb" , 0x0905AB }, - { "Europe/Zaporozhye" , 0x090D5C }, - { "Europe/Zurich" , 0x0915D5 }, - { "Factory" , 0x091D5F }, - { "GB" , 0x091E73 }, - { "GB-Eire" , 0x092CE6 }, - { "GMT" , 0x093B59 }, - { "GMT+0" , 0x093CFA }, - { "GMT-0" , 0x093C6F }, - { "GMT0" , 0x093BE4 }, - { "Greenwich" , 0x093D85 }, - { "Hongkong" , 0x093E10 }, - { "HST" , 0x0942C1 }, - { "Iceland" , 0x09434D }, - { "Indian/Antananarivo" , 0x0947FF }, - { "Indian/Chagos" , 0x094926 }, - { "Indian/Christmas" , 0x0949FB }, - { "Indian/Cocos" , 0x094A9C }, - { "Indian/Comoro" , 0x094B40 }, - { "Indian/Kerguelen" , 0x094C67 }, - { "Indian/Mahe" , 0x094D1E }, - { "Indian/Maldives" , 0x094DD5 }, - { "Indian/Mauritius" , 0x094EAD }, - { "Indian/Mayotte" , 0x094FB6 }, - { "Indian/Reunion" , 0x0950DD }, - { "Iran" , 0x095194 }, - { "Israel" , 0x09581D }, - { "Jamaica" , 0x096102 }, - { "Japan" , 0x096309 }, - { "Kwajalein" , 0x096478 }, - { "Libya" , 0x096571 }, - { "MET" , 0x09680C }, - { "Mexico/BajaNorte" , 0x09704E }, - { "Mexico/BajaSur" , 0x09798E }, - { "Mexico/General" , 0x097FB6 }, - { "MST" , 0x098614 }, - { "MST7MDT" , 0x09869F }, - { "Navajo" , 0x098FA1 }, - { "NZ" , 0x099942 }, - { "NZ-CHAT" , 0x09A2EA }, - { "Pacific/Apia" , 0x09AAFF }, - { "Pacific/Auckland" , 0x09AF59 }, - { "Pacific/Bougainville" , 0x09B90F }, - { "Pacific/Chatham" , 0x09BA3F }, - { "Pacific/Chuuk" , 0x09C263 }, - { "Pacific/Easter" , 0x09C31C }, - { "Pacific/Efate" , 0x09C983 }, - { "Pacific/Enderbury" , 0x09CB6D }, - { "Pacific/Fakaofo" , 0x09CC6E }, - { "Pacific/Fiji" , 0x09CD3F }, - { "Pacific/Funafuti" , 0x09D17D }, - { "Pacific/Galapagos" , 0x09D21F }, - { "Pacific/Gambier" , 0x09D30F }, - { "Pacific/Guadalcanal" , 0x09D3D7 }, - { "Pacific/Guam" , 0x09D48F }, - { "Pacific/Honolulu" , 0x09D57C }, - { "Pacific/Johnston" , 0x09D6A2 }, - { "Pacific/Kiritimati" , 0x09D7D0 }, - { "Pacific/Kosrae" , 0x09D8CE }, - { "Pacific/Kwajalein" , 0x09D9C6 }, - { "Pacific/Majuro" , 0x09DAC8 }, - { "Pacific/Marquesas" , 0x09DBA7 }, - { "Pacific/Midway" , 0x09DC74 }, - { "Pacific/Nauru" , 0x09DD9E }, - { "Pacific/Niue" , 0x09DEA8 }, - { "Pacific/Norfolk" , 0x09DF96 }, - { "Pacific/Noumea" , 0x09E072 }, - { "Pacific/Pago_Pago" , 0x09E1B8 }, - { "Pacific/Palau" , 0x09E2D4 }, - { "Pacific/Pitcairn" , 0x09E375 }, - { "Pacific/Pohnpei" , 0x09E44C }, - { "Pacific/Ponape" , 0x09E501 }, - { "Pacific/Port_Moresby" , 0x09E5A6 }, - { "Pacific/Rarotonga" , 0x09E66C }, - { "Pacific/Saipan" , 0x09E8B6 }, - { "Pacific/Samoa" , 0x09E9A3 }, - { "Pacific/Tahiti" , 0x09EABF }, - { "Pacific/Tarawa" , 0x09EB88 }, - { "Pacific/Tongatapu" , 0x09EC3C }, - { "Pacific/Truk" , 0x09ED9B }, - { "Pacific/Wake" , 0x09EE40 }, - { "Pacific/Wallis" , 0x09EEF0 }, - { "Pacific/Yap" , 0x09EF92 }, - { "Poland" , 0x09F037 }, - { "Portugal" , 0x09FAD4 }, - { "PRC" , 0x0A085D }, - { "PST8PDT" , 0x0A0A07 }, - { "ROC" , 0x0A1309 }, - { "ROK" , 0x0A1635 }, - { "Singapore" , 0x0A187C }, - { "Turkey" , 0x0A1A34 }, - { "UCT" , 0x0A24FB }, - { "Universal" , 0x0A2586 }, - { "US/Alaska" , 0x0A2611 }, - { "US/Aleutian" , 0x0A2F6D }, - { "US/Arizona" , 0x0A38B6 }, - { "US/Central" , 0x0A3A23 }, - { "US/East-Indiana" , 0x0A5615 }, - { "US/Eastern" , 0x0A4830 }, - { "US/Hawaii" , 0x0A5CAC }, - { "US/Indiana-Starke" , 0x0A5DCC }, - { "US/Michigan" , 0x0A675D }, - { "US/Mountain" , 0x0A7011 }, - { "US/Pacific" , 0x0A79B2 }, - { "US/Pacific-New" , 0x0A84DB }, - { "US/Samoa" , 0x0A9004 }, - { "UTC" , 0x0A9120 }, - { "W-SU" , 0x0A9908 }, - { "WET" , 0x0A91AB }, - { "Zulu" , 0x0A9F0C }, + { "Africa/Ceuta" , 0x001DD0 }, + { "Africa/Conakry" , 0x002606 }, + { "Africa/Dakar" , 0x0026BC }, + { "Africa/Dar_es_Salaam" , 0x002772 }, + { "Africa/Djibouti" , 0x002899 }, + { "Africa/Douala" , 0x0029C0 }, + { "Africa/El_Aaiun" , 0x002A77 }, + { "Africa/Freetown" , 0x003036 }, + { "Africa/Gaborone" , 0x0030EC }, + { "Africa/Harare" , 0x0031A3 }, + { "Africa/Johannesburg" , 0x00325A }, + { "Africa/Juba" , 0x003375 }, + { "Africa/Kampala" , 0x00362C }, + { "Africa/Khartoum" , 0x003753 }, + { "Africa/Kigali" , 0x003A0A }, + { "Africa/Kinshasa" , 0x003AC1 }, + { "Africa/Lagos" , 0x003B8F }, + { "Africa/Libreville" , 0x003C46 }, + { "Africa/Lome" , 0x003CFD }, + { "Africa/Luanda" , 0x003DB3 }, + { "Africa/Lubumbashi" , 0x003E6A }, + { "Africa/Lusaka" , 0x003F38 }, + { "Africa/Malabo" , 0x003FEF }, + { "Africa/Maputo" , 0x0040A6 }, + { "Africa/Maseru" , 0x00415D }, + { "Africa/Mbabane" , 0x004278 }, + { "Africa/Mogadishu" , 0x004393 }, + { "Africa/Monrovia" , 0x0044BA }, + { "Africa/Nairobi" , 0x0045B7 }, + { "Africa/Ndjamena" , 0x0046DE }, + { "Africa/Niamey" , 0x0047CB }, + { "Africa/Nouakchott" , 0x004882 }, + { "Africa/Ouagadougou" , 0x004938 }, + { "Africa/Porto-Novo" , 0x0049EE }, + { "Africa/Sao_Tome" , 0x004AA5 }, + { "Africa/Timbuktu" , 0x004B5B }, + { "Africa/Tripoli" , 0x004C11 }, + { "Africa/Tunis" , 0x004EAC }, + { "Africa/Windhoek" , 0x00517E }, + { "America/Adak" , 0x0057B8 }, + { "America/Anchorage" , 0x006111 }, + { "America/Anguilla" , 0x006A78 }, + { "America/Antigua" , 0x006B2E }, + { "America/Araguaina" , 0x006BE4 }, + { "America/Argentina/Buenos_Aires" , 0x006F79 }, + { "America/Argentina/Catamarca" , 0x0073D9 }, + { "America/Argentina/ComodRivadavia" , 0x007869 }, + { "America/Argentina/Cordoba" , 0x007CDE }, + { "America/Argentina/Jujuy" , 0x008182 }, + { "America/Argentina/La_Rioja" , 0x008611 }, + { "America/Argentina/Mendoza" , 0x008AA1 }, + { "America/Argentina/Rio_Gallegos" , 0x008F4E }, + { "America/Argentina/Salta" , 0x0093D2 }, + { "America/Argentina/San_Juan" , 0x00983B }, + { "America/Argentina/San_Luis" , 0x009CCB }, + { "America/Argentina/Tucuman" , 0x00A177 }, + { "America/Argentina/Ushuaia" , 0x00A614 }, + { "America/Aruba" , 0x00AA9E }, + { "America/Asuncion" , 0x00AB7A }, + { "America/Atikokan" , 0x00B394 }, + { "America/Atka" , 0x00B53D }, + { "America/Bahia" , 0x00BE86 }, + { "America/Bahia_Banderas" , 0x00C2A3 }, + { "America/Barbados" , 0x00C90B }, + { "America/Belem" , 0x00CA6F }, + { "America/Belize" , 0x00CCD4 }, + { "America/Blanc-Sablon" , 0x00D0B0 }, + { "America/Boa_Vista" , 0x00D222 }, + { "America/Bogota" , 0x00D4B9 }, + { "America/Boise" , 0x00D5C6 }, + { "America/Buenos_Aires" , 0x00DF5E }, + { "America/Cambridge_Bay" , 0x00E3A9 }, + { "America/Campo_Grande" , 0x00EC03 }, + { "America/Cancun" , 0x00F400 }, + { "America/Caracas" , 0x00F760 }, + { "America/Catamarca" , 0x00F876 }, + { "America/Cayenne" , 0x00FCEB }, + { "America/Cayman" , 0x00FDBF }, + { "America/Chicago" , 0x010128 }, + { "America/Chihuahua" , 0x010F41 }, + { "America/Coral_Harbour" , 0x011574 }, + { "America/Cordoba" , 0x0116D9 }, + { "America/Costa_Rica" , 0x011B4E }, + { "America/Creston" , 0x011CAF }, + { "America/Cuiaba" , 0x011DD6 }, + { "America/Curacao" , 0x0125B0 }, + { "America/Danmarkshavn" , 0x01268C }, + { "America/Dawson" , 0x012983 }, + { "America/Dawson_Creek" , 0x0131D6 }, + { "America/Denver" , 0x01364E }, + { "America/Detroit" , 0x013FFC }, + { "America/Dominica" , 0x0148D8 }, + { "America/Edmonton" , 0x01498E }, + { "America/Eirunepe" , 0x01533E }, + { "America/El_Salvador" , 0x015600 }, + { "America/Ensenada" , 0x015706 }, + { "America/Fort_Wayne" , 0x016348 }, + { "America/Fortaleza" , 0x016046 }, + { "America/Glace_Bay" , 0x0169DF }, + { "America/Godthab" , 0x0172D0 }, + { "America/Goose_Bay" , 0x017A3F }, + { "America/Grand_Turk" , 0x018707 }, + { "America/Grenada" , 0x018C1A }, + { "America/Guadeloupe" , 0x018CD0 }, + { "America/Guatemala" , 0x018D86 }, + { "America/Guayaquil" , 0x018EC4 }, + { "America/Guyana" , 0x018FA3 }, + { "America/Halifax" , 0x0190BD }, + { "America/Havana" , 0x019E65 }, + { "America/Hermosillo" , 0x01A7F6 }, + { "America/Indiana/Indianapolis" , 0x01A9E7 }, + { "America/Indiana/Knox" , 0x01B0A5 }, + { "America/Indiana/Marengo" , 0x01BA5C }, + { "America/Indiana/Petersburg" , 0x01C153 }, + { "America/Indiana/Tell_City" , 0x01CF93 }, + { "America/Indiana/Vevay" , 0x01D68B }, + { "America/Indiana/Vincennes" , 0x01DC51 }, + { "America/Indiana/Winamac" , 0x01E344 }, + { "America/Indianapolis" , 0x01C8FC }, + { "America/Inuvik" , 0x01EA72 }, + { "America/Iqaluit" , 0x01F230 }, + { "America/Jamaica" , 0x01FA66 }, + { "America/Jujuy" , 0x01FC6D }, + { "America/Juneau" , 0x0200F2 }, + { "America/Kentucky/Louisville" , 0x020A56 }, + { "America/Kentucky/Monticello" , 0x021568 }, + { "America/Knox_IN" , 0x021ED3 }, + { "America/Kralendijk" , 0x022864 }, + { "America/La_Paz" , 0x022940 }, + { "America/Lima" , 0x022A3F }, + { "America/Los_Angeles" , 0x022BEC }, + { "America/Louisville" , 0x023721 }, + { "America/Lower_Princes" , 0x02420A }, + { "America/Maceio" , 0x0242E6 }, + { "America/Managua" , 0x0245F6 }, + { "America/Manaus" , 0x0247D1 }, + { "America/Marigot" , 0x024A4F }, + { "America/Martinique" , 0x024B05 }, + { "America/Matamoros" , 0x024C12 }, + { "America/Mazatlan" , 0x0251F0 }, + { "America/Mendoza" , 0x025840 }, + { "America/Menominee" , 0x025CE1 }, + { "America/Merida" , 0x02661F }, + { "America/Metlakatla" , 0x026BFB }, + { "America/Mexico_City" , 0x026F01 }, + { "America/Miquelon" , 0x02757C }, + { "America/Moncton" , 0x027C1C }, + { "America/Monterrey" , 0x0288A0 }, + { "America/Montevideo" , 0x028E88 }, + { "America/Montreal" , 0x029704 }, + { "America/Montserrat" , 0x02A4BF }, + { "America/Nassau" , 0x02A575 }, + { "America/New_York" , 0x02AE6D }, + { "America/Nipigon" , 0x02BC5E }, + { "America/Nome" , 0x02C508 }, + { "America/Noronha" , 0x02CE75 }, + { "America/North_Dakota/Beulah" , 0x02D169 }, + { "America/North_Dakota/Center" , 0x02DAF5 }, + { "America/North_Dakota/New_Salem" , 0x02E481 }, + { "America/Ojinaga" , 0x02EE22 }, + { "America/Panama" , 0x02F44B }, + { "America/Pangnirtung" , 0x02F522 }, + { "America/Paramaribo" , 0x02FD8D }, + { "America/Phoenix" , 0x02FECD }, + { "America/Port-au-Prince" , 0x03006A }, + { "America/Port_of_Spain" , 0x0308DD }, + { "America/Porto_Acre" , 0x030641 }, + { "America/Porto_Velho" , 0x030993 }, + { "America/Puerto_Rico" , 0x030BF3 }, + { "America/Rainy_River" , 0x030CFE }, + { "America/Rankin_Inlet" , 0x03158F }, + { "America/Recife" , 0x031D43 }, + { "America/Regina" , 0x032031 }, + { "America/Resolute" , 0x032454 }, + { "America/Rio_Branco" , 0x032C0A }, + { "America/Rosario" , 0x032EAA }, + { "America/Santa_Isabel" , 0x03331F }, + { "America/Santarem" , 0x033C99 }, + { "America/Santiago" , 0x033F1D }, + { "America/Santo_Domingo" , 0x0346A8 }, + { "America/Sao_Paulo" , 0x03489D }, + { "America/Scoresbysund" , 0x0350BA }, + { "America/Shiprock" , 0x03586A }, + { "America/Sitka" , 0x03620B }, + { "America/St_Barthelemy" , 0x036B6D }, + { "America/St_Johns" , 0x036C23 }, + { "America/St_Kitts" , 0x037AA7 }, + { "America/St_Lucia" , 0x037B5D }, + { "America/St_Thomas" , 0x037C13 }, + { "America/St_Vincent" , 0x037CC9 }, + { "America/Swift_Current" , 0x037D7F }, + { "America/Tegucigalpa" , 0x037FF7 }, + { "America/Thule" , 0x038119 }, + { "America/Thunder_Bay" , 0x03872D }, + { "America/Tijuana" , 0x038FFF }, + { "America/Toronto" , 0x03996F }, + { "America/Tortola" , 0x03A75A }, + { "America/Vancouver" , 0x03A810 }, + { "America/Virgin" , 0x03B395 }, + { "America/Whitehorse" , 0x03B44B }, + { "America/Winnipeg" , 0x03BC9E }, + { "America/Yakutat" , 0x03C81B }, + { "America/Yellowknife" , 0x03D154 }, + { "Antarctica/Casey" , 0x03D949 }, + { "Antarctica/Davis" , 0x03DA84 }, + { "Antarctica/DumontDUrville" , 0x03DBCF }, + { "Antarctica/Macquarie" , 0x03DCE3 }, + { "Antarctica/Mawson" , 0x03E2F9 }, + { "Antarctica/McMurdo" , 0x03E3EA }, + { "Antarctica/Palmer" , 0x03EDBF }, + { "Antarctica/Rothera" , 0x03F370 }, + { "Antarctica/South_Pole" , 0x03F449 }, + { "Antarctica/Syowa" , 0x03FDF1 }, + { "Antarctica/Troll" , 0x03FEC3 }, + { "Antarctica/Vostok" , 0x040376 }, + { "Arctic/Longyearbyen" , 0x04044B }, + { "Asia/Aden" , 0x040D22 }, + { "Asia/Almaty" , 0x040DD9 }, + { "Asia/Amman" , 0x04119B }, + { "Asia/Anadyr" , 0x0418FC }, + { "Asia/Aqtau" , 0x041DE8 }, + { "Asia/Aqtobe" , 0x04229B }, + { "Asia/Ashgabat" , 0x0426D2 }, + { "Asia/Ashkhabad" , 0x04297D }, + { "Asia/Baghdad" , 0x042C28 }, + { "Asia/Bahrain" , 0x043010 }, + { "Asia/Baku" , 0x0430ED }, + { "Asia/Bangkok" , 0x04389D }, + { "Asia/Beirut" , 0x043975 }, + { "Asia/Bishkek" , 0x044200 }, + { "Asia/Brunei" , 0x044631 }, + { "Asia/Calcutta" , 0x044706 }, + { "Asia/Chita" , 0x044835 }, + { "Asia/Choibalsan" , 0x044D49 }, + { "Asia/Chongqing" , 0x045398 }, + { "Asia/Chungking" , 0x045542 }, + { "Asia/Colombo" , 0x0456EC }, + { "Asia/Dacca" , 0x04587D }, + { "Asia/Damascus" , 0x045A0F }, + { "Asia/Dhaka" , 0x04632B }, + { "Asia/Dili" , 0x0464BD }, + { "Asia/Dubai" , 0x0465FE }, + { "Asia/Dushanbe" , 0x0466B5 }, + { "Asia/Gaza" , 0x046924 }, + { "Asia/Harbin" , 0x047244 }, + { "Asia/Hebron" , 0x0473EE }, + { "Asia/Ho_Chi_Minh" , 0x047D29 }, + { "Asia/Hong_Kong" , 0x047EAA }, + { "Asia/Hovd" , 0x04835B }, + { "Asia/Irkutsk" , 0x04897B }, + { "Asia/Istanbul" , 0x048E89 }, + { "Asia/Jakarta" , 0x049950 }, + { "Asia/Jayapura" , 0x049ADC }, + { "Asia/Jerusalem" , 0x049C0A }, + { "Asia/Kabul" , 0x04A4EF }, + { "Asia/Kamchatka" , 0x04A5C2 }, + { "Asia/Karachi" , 0x04AA9D }, + { "Asia/Kashgar" , 0x04AC3C }, + { "Asia/Kathmandu" , 0x04ACF3 }, + { "Asia/Katmandu" , 0x04ADD3 }, + { "Asia/Khandyga" , 0x04AEB3 }, + { "Asia/Kolkata" , 0x04B40C }, + { "Asia/Krasnoyarsk" , 0x04B53B }, + { "Asia/Kuala_Lumpur" , 0x04BA2A }, + { "Asia/Kuching" , 0x04BBD7 }, + { "Asia/Kuwait" , 0x04BDF9 }, + { "Asia/Macao" , 0x04BEB0 }, + { "Asia/Macau" , 0x04C1D7 }, + { "Asia/Magadan" , 0x04C4FE }, + { "Asia/Makassar" , 0x04CA05 }, + { "Asia/Manila" , 0x04CB71 }, + { "Asia/Muscat" , 0x04CCE6 }, + { "Asia/Nicosia" , 0x04CD9D }, + { "Asia/Novokuznetsk" , 0x04D589 }, + { "Asia/Novosibirsk" , 0x04DAA6 }, + { "Asia/Omsk" , 0x04DF81 }, + { "Asia/Oral" , 0x04E46F }, + { "Asia/Phnom_Penh" , 0x04E8D6 }, + { "Asia/Pontianak" , 0x04E9AE }, + { "Asia/Pyongyang" , 0x04EB46 }, + { "Asia/Qatar" , 0x04EC69 }, + { "Asia/Qyzylorda" , 0x04ED46 }, + { "Asia/Rangoon" , 0x04F1AC }, + { "Asia/Riyadh" , 0x04F2D5 }, + { "Asia/Saigon" , 0x04F38C }, + { "Asia/Sakhalin" , 0x04F50D }, + { "Asia/Samarkand" , 0x04F9FF }, + { "Asia/Seoul" , 0x04FCCD }, + { "Asia/Shanghai" , 0x04FF14 }, + { "Asia/Singapore" , 0x0500CA }, + { "Asia/Srednekolymsk" , 0x050282 }, + { "Asia/Taipei" , 0x050782 }, + { "Asia/Tashkent" , 0x050AAE }, + { "Asia/Tbilisi" , 0x050D72 }, + { "Asia/Tehran" , 0x0511F4 }, + { "Asia/Tel_Aviv" , 0x05187D }, + { "Asia/Thimbu" , 0x052162 }, + { "Asia/Thimphu" , 0x05223F }, + { "Asia/Tokyo" , 0x05231C }, + { "Asia/Ujung_Pandang" , 0x05248B }, + { "Asia/Ulaanbaatar" , 0x0525AF }, + { "Asia/Ulan_Bator" , 0x052BB2 }, + { "Asia/Urumqi" , 0x0531A7 }, + { "Asia/Ust-Nera" , 0x05326B }, + { "Asia/Vientiane" , 0x05379B }, + { "Asia/Vladivostok" , 0x053873 }, + { "Asia/Yakutsk" , 0x053D60 }, + { "Asia/Yekaterinburg" , 0x05424C }, + { "Asia/Yerevan" , 0x05479F }, + { "Atlantic/Azores" , 0x054CA8 }, + { "Atlantic/Bermuda" , 0x055A5A }, + { "Atlantic/Canary" , 0x05623A }, + { "Atlantic/Cape_Verde" , 0x0569CD }, + { "Atlantic/Faeroe" , 0x056AD7 }, + { "Atlantic/Faroe" , 0x057208 }, + { "Atlantic/Jan_Mayen" , 0x057939 }, + { "Atlantic/Madeira" , 0x058210 }, + { "Atlantic/Reykjavik" , 0x058FC1 }, + { "Atlantic/South_Georgia" , 0x059473 }, + { "Atlantic/St_Helena" , 0x0599FD }, + { "Atlantic/Stanley" , 0x059513 }, + { "Australia/ACT" , 0x059AB3 }, + { "Australia/Adelaide" , 0x05A36E }, + { "Australia/Brisbane" , 0x05AC47 }, + { "Australia/Broken_Hill" , 0x05AE32 }, + { "Australia/Canberra" , 0x05B73C }, + { "Australia/Currie" , 0x05BFF7 }, + { "Australia/Darwin" , 0x05C8C8 }, + { "Australia/Eucla" , 0x05CA29 }, + { "Australia/Hobart" , 0x05CC3A }, + { "Australia/LHI" , 0x05D57E }, + { "Australia/Lindeman" , 0x05DCCD }, + { "Australia/Lord_Howe" , 0x05DEFF }, + { "Australia/Melbourne" , 0x05E65E }, + { "Australia/North" , 0x05EF21 }, + { "Australia/NSW" , 0x05F070 }, + { "Australia/Perth" , 0x05F92B }, + { "Australia/Queensland" , 0x05FB38 }, + { "Australia/South" , 0x05FD08 }, + { "Australia/Sydney" , 0x0605D2 }, + { "Australia/Tasmania" , 0x060EAD }, + { "Australia/Victoria" , 0x0617D8 }, + { "Australia/West" , 0x062093 }, + { "Australia/Yancowinna" , 0x06227E }, + { "Brazil/Acre" , 0x062B6C }, + { "Brazil/DeNoronha" , 0x062E08 }, + { "Brazil/East" , 0x0630EC }, + { "Brazil/West" , 0x0638D7 }, + { "Canada/Atlantic" , 0x063B4B }, + { "Canada/Central" , 0x0648C5 }, + { "Canada/East-Saskatchewan" , 0x0661D7 }, + { "Canada/Eastern" , 0x06541C }, + { "Canada/Mountain" , 0x0665C5 }, + { "Canada/Newfoundland" , 0x066F33 }, + { "Canada/Pacific" , 0x067D8F }, + { "Canada/Saskatchewan" , 0x0688F0 }, + { "Canada/Yukon" , 0x068CDE }, + { "CET" , 0x069517 }, + { "Chile/Continental" , 0x069D59 }, + { "Chile/EasterIsland" , 0x06A4D6 }, + { "CST6CDT" , 0x06AB30 }, + { "Cuba" , 0x06B432 }, + { "EET" , 0x06BDC3 }, + { "Egypt" , 0x06C523 }, + { "Eire" , 0x06CCE3 }, + { "EST" , 0x06DAD6 }, + { "EST5EDT" , 0x06DB61 }, + { "Etc/GMT" , 0x06E463 }, + { "Etc/GMT+0" , 0x06E604 }, + { "Etc/GMT+1" , 0x06E723 }, + { "Etc/GMT+10" , 0x06E84E }, + { "Etc/GMT+11" , 0x06E97D }, + { "Etc/GMT+12" , 0x06EAAC }, + { "Etc/GMT+2" , 0x06ED07 }, + { "Etc/GMT+3" , 0x06EE2E }, + { "Etc/GMT+4" , 0x06EF55 }, + { "Etc/GMT+5" , 0x06F07C }, + { "Etc/GMT+6" , 0x06F1A3 }, + { "Etc/GMT+7" , 0x06F2CA }, + { "Etc/GMT+8" , 0x06F3F1 }, + { "Etc/GMT+9" , 0x06F518 }, + { "Etc/GMT-0" , 0x06E579 }, + { "Etc/GMT-1" , 0x06E68F }, + { "Etc/GMT-10" , 0x06E7B6 }, + { "Etc/GMT-11" , 0x06E8E5 }, + { "Etc/GMT-12" , 0x06EA14 }, + { "Etc/GMT-13" , 0x06EB43 }, + { "Etc/GMT-14" , 0x06EBDB }, + { "Etc/GMT-2" , 0x06EC73 }, + { "Etc/GMT-3" , 0x06ED9A }, + { "Etc/GMT-4" , 0x06EEC1 }, + { "Etc/GMT-5" , 0x06EFE8 }, + { "Etc/GMT-6" , 0x06F10F }, + { "Etc/GMT-7" , 0x06F236 }, + { "Etc/GMT-8" , 0x06F35D }, + { "Etc/GMT-9" , 0x06F484 }, + { "Etc/GMT0" , 0x06E4EE }, + { "Etc/Greenwich" , 0x06F5AB }, + { "Etc/UCT" , 0x06F636 }, + { "Etc/Universal" , 0x06F6C1 }, + { "Etc/UTC" , 0x06F74C }, + { "Etc/Zulu" , 0x06F7D7 }, + { "Europe/Amsterdam" , 0x06F862 }, + { "Europe/Andorra" , 0x0703ED }, + { "Europe/Athens" , 0x070AD0 }, + { "Europe/Belfast" , 0x0713BB }, + { "Europe/Belgrade" , 0x07222E }, + { "Europe/Berlin" , 0x0729DF }, + { "Europe/Bratislava" , 0x073318 }, + { "Europe/Brussels" , 0x073C04 }, + { "Europe/Bucharest" , 0x0747AA }, + { "Europe/Budapest" , 0x075063 }, + { "Europe/Busingen" , 0x0759D4 }, + { "Europe/Chisinau" , 0x076166 }, + { "Europe/Copenhagen" , 0x076AF3 }, + { "Europe/Dublin" , 0x07736F }, + { "Europe/Gibraltar" , 0x078162 }, + { "Europe/Guernsey" , 0x078D63 }, + { "Europe/Helsinki" , 0x079BD6 }, + { "Europe/Isle_of_Man" , 0x07A357 }, + { "Europe/Istanbul" , 0x07B1CA }, + { "Europe/Jersey" , 0x07BC91 }, + { "Europe/Kaliningrad" , 0x07CB04 }, + { "Europe/Kiev" , 0x07D135 }, + { "Europe/Lisbon" , 0x07D980 }, + { "Europe/Ljubljana" , 0x07E711 }, + { "Europe/London" , 0x07EEC2 }, + { "Europe/Luxembourg" , 0x07FD35 }, + { "Europe/Madrid" , 0x0808DF }, + { "Europe/Malta" , 0x08132E }, + { "Europe/Mariehamn" , 0x081D7F }, + { "Europe/Minsk" , 0x082500 }, + { "Europe/Monaco" , 0x082A64 }, + { "Europe/Moscow" , 0x0835F9 }, + { "Europe/Nicosia" , 0x083C14 }, + { "Europe/Oslo" , 0x084400 }, + { "Europe/Paris" , 0x084CD7 }, + { "Europe/Podgorica" , 0x08587E }, + { "Europe/Prague" , 0x08602F }, + { "Europe/Riga" , 0x08691B }, + { "Europe/Rome" , 0x0871E2 }, + { "Europe/Samara" , 0x087C64 }, + { "Europe/San_Marino" , 0x08821B }, + { "Europe/Sarajevo" , 0x088C9D }, + { "Europe/Simferopol" , 0x08944E }, + { "Europe/Skopje" , 0x089A4C }, + { "Europe/Sofia" , 0x08A1FD }, + { "Europe/Stockholm" , 0x08AA5B }, + { "Europe/Tallinn" , 0x08B1E5 }, + { "Europe/Tirane" , 0x08BA8A }, + { "Europe/Tiraspol" , 0x08C2C8 }, + { "Europe/Uzhgorod" , 0x08CC55 }, + { "Europe/Vaduz" , 0x08D4A0 }, + { "Europe/Vatican" , 0x08DC2A }, + { "Europe/Vienna" , 0x08E6AC }, + { "Europe/Vilnius" , 0x08EF75 }, + { "Europe/Volgograd" , 0x08F818 }, + { "Europe/Warsaw" , 0x08FD68 }, + { "Europe/Zagreb" , 0x090805 }, + { "Europe/Zaporozhye" , 0x090FB6 }, + { "Europe/Zurich" , 0x09182F }, + { "Factory" , 0x091FB9 }, + { "GB" , 0x0920CD }, + { "GB-Eire" , 0x092F40 }, + { "GMT" , 0x093DB3 }, + { "GMT+0" , 0x093F54 }, + { "GMT-0" , 0x093EC9 }, + { "GMT0" , 0x093E3E }, + { "Greenwich" , 0x093FDF }, + { "Hongkong" , 0x09406A }, + { "HST" , 0x09451B }, + { "Iceland" , 0x0945A7 }, + { "Indian/Antananarivo" , 0x094A59 }, + { "Indian/Chagos" , 0x094B80 }, + { "Indian/Christmas" , 0x094C55 }, + { "Indian/Cocos" , 0x094CF6 }, + { "Indian/Comoro" , 0x094D9A }, + { "Indian/Kerguelen" , 0x094EC1 }, + { "Indian/Mahe" , 0x094F78 }, + { "Indian/Maldives" , 0x09502F }, + { "Indian/Mauritius" , 0x095107 }, + { "Indian/Mayotte" , 0x095210 }, + { "Indian/Reunion" , 0x095337 }, + { "Iran" , 0x0953EE }, + { "Israel" , 0x095A77 }, + { "Jamaica" , 0x09635C }, + { "Japan" , 0x096563 }, + { "Kwajalein" , 0x0966D2 }, + { "Libya" , 0x0967CB }, + { "MET" , 0x096A66 }, + { "Mexico/BajaNorte" , 0x0972A8 }, + { "Mexico/BajaSur" , 0x097BE8 }, + { "Mexico/General" , 0x098210 }, + { "MST" , 0x09886E }, + { "MST7MDT" , 0x0988F9 }, + { "Navajo" , 0x0991FB }, + { "NZ" , 0x099B9C }, + { "NZ-CHAT" , 0x09A544 }, + { "Pacific/Apia" , 0x09AD59 }, + { "Pacific/Auckland" , 0x09B1B3 }, + { "Pacific/Bougainville" , 0x09BB69 }, + { "Pacific/Chatham" , 0x09BC99 }, + { "Pacific/Chuuk" , 0x09C4BD }, + { "Pacific/Easter" , 0x09C576 }, + { "Pacific/Efate" , 0x09CBDD }, + { "Pacific/Enderbury" , 0x09CDC7 }, + { "Pacific/Fakaofo" , 0x09CEC8 }, + { "Pacific/Fiji" , 0x09CF99 }, + { "Pacific/Funafuti" , 0x09D3D7 }, + { "Pacific/Galapagos" , 0x09D479 }, + { "Pacific/Gambier" , 0x09D569 }, + { "Pacific/Guadalcanal" , 0x09D631 }, + { "Pacific/Guam" , 0x09D6E9 }, + { "Pacific/Honolulu" , 0x09D7D6 }, + { "Pacific/Johnston" , 0x09D8FC }, + { "Pacific/Kiritimati" , 0x09DA2A }, + { "Pacific/Kosrae" , 0x09DB28 }, + { "Pacific/Kwajalein" , 0x09DC20 }, + { "Pacific/Majuro" , 0x09DD22 }, + { "Pacific/Marquesas" , 0x09DE01 }, + { "Pacific/Midway" , 0x09DECE }, + { "Pacific/Nauru" , 0x09DFF8 }, + { "Pacific/Niue" , 0x09E102 }, + { "Pacific/Norfolk" , 0x09E1F0 }, + { "Pacific/Noumea" , 0x09E2CC }, + { "Pacific/Pago_Pago" , 0x09E412 }, + { "Pacific/Palau" , 0x09E52E }, + { "Pacific/Pitcairn" , 0x09E5CF }, + { "Pacific/Pohnpei" , 0x09E6A6 }, + { "Pacific/Ponape" , 0x09E75B }, + { "Pacific/Port_Moresby" , 0x09E800 }, + { "Pacific/Rarotonga" , 0x09E8C6 }, + { "Pacific/Saipan" , 0x09EB10 }, + { "Pacific/Samoa" , 0x09EBFD }, + { "Pacific/Tahiti" , 0x09ED19 }, + { "Pacific/Tarawa" , 0x09EDE2 }, + { "Pacific/Tongatapu" , 0x09EE96 }, + { "Pacific/Truk" , 0x09EFF5 }, + { "Pacific/Wake" , 0x09F09A }, + { "Pacific/Wallis" , 0x09F14A }, + { "Pacific/Yap" , 0x09F1EC }, + { "Poland" , 0x09F291 }, + { "Portugal" , 0x09FD2E }, + { "PRC" , 0x0A0AB7 }, + { "PST8PDT" , 0x0A0C61 }, + { "ROC" , 0x0A1563 }, + { "ROK" , 0x0A188F }, + { "Singapore" , 0x0A1AD6 }, + { "Turkey" , 0x0A1C8E }, + { "UCT" , 0x0A2755 }, + { "Universal" , 0x0A27E0 }, + { "US/Alaska" , 0x0A286B }, + { "US/Aleutian" , 0x0A31C7 }, + { "US/Arizona" , 0x0A3B10 }, + { "US/Central" , 0x0A3C7D }, + { "US/East-Indiana" , 0x0A586F }, + { "US/Eastern" , 0x0A4A8A }, + { "US/Hawaii" , 0x0A5F06 }, + { "US/Indiana-Starke" , 0x0A6026 }, + { "US/Michigan" , 0x0A69B7 }, + { "US/Mountain" , 0x0A726B }, + { "US/Pacific" , 0x0A7C0C }, + { "US/Pacific-New" , 0x0A8735 }, + { "US/Samoa" , 0x0A925E }, + { "UTC" , 0x0A937A }, + { "W-SU" , 0x0A9B62 }, + { "WET" , 0x0A9405 }, + { "Zulu" , 0x0AA166 }, }; /* This is a generated file, do not modify */ -const unsigned char timelib_timezone_db_data_builtin[696215] = { +const unsigned char timelib_timezone_db_data_builtin[696817] = { /* Africa/Abidjan */ @@ -1001,7 +1001,7 @@ const unsigned char timelib_timezone_db_data_builtin[696215] = { /* Africa/Casablanca */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x41, 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, 0x66, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x96, 0x51, 0xF9, 0x9C, 0xC6, 0xFF, 0x14, 0x80, 0xC7, 0x58, 0xAC, 0x70, 0xC7, 0xD9, 0xED, 0x80, 0xD2, 0xA1, 0x32, 0xF0, 0xDB, 0x35, 0xA4, 0x00, 0xDB, 0xEE, 0x27, 0xF0, 0xFB, 0x25, 0x72, 0x40, 0xFB, 0xC2, 0xEF, 0x70, 0x08, 0x6B, 0x84, 0x80, 0x08, 0xC6, 0x6D, 0xF0, 0x0B, 0xE8, 0x0C, 0x00, @@ -1012,98 +1012,96 @@ const unsigned char timelib_timezone_db_data_builtin[696215] = { 0x50, 0x08, 0xBB, 0xA0, 0x50, 0x31, 0x9A, 0x20, 0x50, 0x67, 0xA7, 0xA0, 0x51, 0x7C, 0x82, 0xA0, 0x51, 0xD8, 0xCB, 0xA0, 0x52, 0x05, 0x9E, 0xA0, 0x52, 0x6C, 0x73, 0xA0, 0x53, 0x37, 0x7A, 0xA0, 0x53, 0xAE, 0x21, 0xA0, 0x53, 0xDC, 0x46, 0x20, 0x54, 0x4C, 0x55, 0xA0, 0x55, 0x17, 0x5C, 0xA0, -0x55, 0x7B, 0x8E, 0xA0, 0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0, -0x57, 0x52, 0x36, 0x20, 0x57, 0x80, 0x5A, 0xA0, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0, -0x59, 0x1F, 0xA3, 0x20, 0x59, 0x57, 0x02, 0x20, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0, -0x5A, 0xF6, 0x4A, 0xA0, 0x5B, 0x24, 0x6F, 0x20, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20, -0x5C, 0xCC, 0xF2, 0x20, 0x5C, 0xFB, 0x16, 0xA0, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20, -0x5E, 0x9A, 0x5F, 0x20, 0x5E, 0xD1, 0xBE, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20, -0x60, 0x71, 0x06, 0xA0, 0x60, 0x9F, 0x2B, 0x20, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x3F, 0xC5, 0x20, -0x62, 0x47, 0xAE, 0x20, 0x62, 0x75, 0xD2, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x43, 0x3F, 0xA0, -0x65, 0x3D, 0xBC, 0xA0, 0x66, 0x19, 0xE7, 0x20, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xF0, 0x8E, 0xA0, -0x68, 0xFD, 0x80, 0xA0, 0x69, 0xC8, 0x87, 0xA0, 0x6A, 0xDD, 0x62, 0xA0, 0x6B, 0xA8, 0x69, 0xA0, -0x6C, 0xC6, 0x7F, 0x20, 0x6D, 0x88, 0x4B, 0xA0, 0x6E, 0xA6, 0x61, 0x20, 0x6F, 0x68, 0x2D, 0xA0, -0x70, 0x86, 0x43, 0x20, 0x71, 0x51, 0x4A, 0x20, 0x72, 0x66, 0x25, 0x20, 0x73, 0x31, 0x2C, 0x20, -0x74, 0x46, 0x07, 0x20, 0x75, 0x11, 0x0E, 0x20, 0x76, 0x2F, 0x23, 0xA0, 0x76, 0xF0, 0xF0, 0x20, -0x78, 0x0F, 0x05, 0xA0, 0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20, -0x7B, 0xCD, 0x78, 0x20, 0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA4, 0x1F, 0xA0, 0x7E, 0x79, 0xB2, 0xA0, -0x7F, 0x7A, 0xC7, 0x20, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 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, 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, 0xF8, 0xE4, 0x00, 0x00, -0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, -0x00, 0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 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, 0x66, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xF8, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0x51, 0xF9, 0x9C, 0xFF, -0xFF, 0xFF, 0xFF, 0xC6, 0xFF, 0x14, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xAC, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xC7, 0xD9, 0xED, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xA1, 0x32, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xDB, 0x35, 0xA4, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xEE, 0x27, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFB, 0x25, 0x72, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xC2, 0xEF, 0x70, 0x00, -0x00, 0x00, 0x00, 0x08, 0x6B, 0x84, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0xC6, 0x6D, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x61, 0x47, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x8E, 0xF2, 0x70, 0x00, -0x00, 0x00, 0x00, 0x0F, 0xD3, 0x51, 0x80, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0xA3, 0x70, 0x00, -0x00, 0x00, 0x00, 0x1A, 0xB7, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x18, 0x6F, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x48, 0x41, 0xE6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x48, 0xBB, 0x22, 0x70, 0x00, -0x00, 0x00, 0x00, 0x4A, 0x23, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x00, -0x00, 0x00, 0x00, 0x4B, 0xDC, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x5D, 0xE5, 0x70, 0x00, -0x00, 0x00, 0x00, 0x4D, 0x97, 0xB8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x34, 0x8C, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x4F, 0x9C, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x08, 0xBB, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x50, 0x31, 0x9A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x50, 0x67, 0xA7, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x51, 0x7C, 0x82, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, 0xD8, 0xCB, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x52, 0x05, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x73, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x53, 0x37, 0x7A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0xAE, 0x21, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x53, 0xDC, 0x46, 0x20, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x55, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x55, 0x17, 0x5C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x7B, 0x8E, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x55, 0xA9, 0xB3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x37, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x56, 0xF7, 0x3E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x57, 0x52, 0x36, 0x20, 0x00, -0x00, 0x00, 0x00, 0x57, 0x80, 0x5A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x54, 0x20, 0x00, -0x00, 0x00, 0x00, 0x58, 0xD7, 0x20, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x1F, 0xA3, 0x20, 0x00, -0x00, 0x00, 0x00, 0x59, 0x57, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x36, 0x20, 0x00, -0x00, 0x00, 0x00, 0x5A, 0xB7, 0x02, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xF6, 0x4A, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x5B, 0x24, 0x6F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x18, 0x20, 0x00, -0x00, 0x00, 0x00, 0x5C, 0xA0, 0x1F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xCC, 0xF2, 0x20, 0x00, -0x00, 0x00, 0x00, 0x5C, 0xFB, 0x16, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xFA, 0x20, 0x00, -0x00, 0x00, 0x00, 0x5E, 0x80, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x9A, 0x5F, 0x20, 0x00, -0x00, 0x00, 0x00, 0x5E, 0xD1, 0xBE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xDC, 0x20, 0x00, -0x00, 0x00, 0x00, 0x60, 0x5F, 0xE3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x71, 0x06, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x60, 0x9F, 0x2B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xF8, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x62, 0x3F, 0xC5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x62, 0x47, 0xAE, 0x20, 0x00, -0x00, 0x00, 0x00, 0x62, 0x75, 0xD2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xDA, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x64, 0x43, 0x3F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xBC, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x66, 0x19, 0xE7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x9E, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x67, 0xF0, 0x8E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x80, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x69, 0xC8, 0x87, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x62, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x6B, 0xA8, 0x69, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x7F, 0x20, 0x00, -0x00, 0x00, 0x00, 0x6D, 0x88, 0x4B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x61, 0x20, 0x00, -0x00, 0x00, 0x00, 0x6F, 0x68, 0x2D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x43, 0x20, 0x00, -0x00, 0x00, 0x00, 0x71, 0x51, 0x4A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x25, 0x20, 0x00, -0x00, 0x00, 0x00, 0x73, 0x31, 0x2C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x74, 0x46, 0x07, 0x20, 0x00, -0x00, 0x00, 0x00, 0x75, 0x11, 0x0E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x23, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x76, 0xF0, 0xF0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x05, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x78, 0xD0, 0xD2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xE7, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x7A, 0xB0, 0xB4, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCD, 0x78, 0x20, 0x00, -0x00, 0x00, 0x00, 0x7C, 0x99, 0xD0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xA4, 0x1F, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x7E, 0x79, 0xB2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7A, 0xC7, 0x20, 0x00, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x03, 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, 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, 0xF8, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, -0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x00, -0x00, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, -0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x57, -0x45, 0x54, 0x30, 0x57, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, -0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0xBC, 0xAC, 0xC8, 0x01, 0x07, 0x16, -0x42, 0x00, 0x00, 0x00, 0x00, +0x55, 0x7C, 0xE0, 0x20, 0x55, 0xAB, 0x04, 0xA0, 0x56, 0x2C, 0x37, 0xA0, 0x56, 0xF7, 0x3E, 0xA0, +0x57, 0x53, 0x87, 0xA0, 0x57, 0x81, 0xAC, 0x20, 0x58, 0x15, 0x54, 0x20, 0x58, 0xD7, 0x20, 0xA0, +0x59, 0x20, 0xF4, 0xA0, 0x59, 0x58, 0x53, 0xA0, 0x59, 0xF5, 0x36, 0x20, 0x5A, 0xB7, 0x02, 0xA0, +0x5A, 0xF7, 0x9C, 0x20, 0x5B, 0x25, 0xC0, 0xA0, 0x5B, 0xD5, 0x18, 0x20, 0x5C, 0xA0, 0x1F, 0x20, +0x5C, 0xCE, 0x43, 0xA0, 0x5C, 0xFC, 0x68, 0x20, 0x5D, 0xB4, 0xFA, 0x20, 0x5E, 0x80, 0x01, 0x20, +0x5E, 0x9B, 0xB0, 0xA0, 0x5E, 0xC9, 0xD5, 0x20, 0x5F, 0x94, 0xDC, 0x20, 0x60, 0x5F, 0xE3, 0x20, +0x60, 0x72, 0x58, 0x20, 0x60, 0xA0, 0x7C, 0xA0, 0x61, 0x7D, 0xF8, 0xA0, 0x62, 0x77, 0x24, 0x20, +0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x44, 0x91, 0x20, 0x65, 0x3D, 0xBC, 0xA0, 0x66, 0x1B, 0x38, 0xA0, +0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xF1, 0xE0, 0x20, 0x68, 0xFD, 0x80, 0xA0, 0x69, 0xC8, 0x87, 0xA0, +0x6A, 0xDD, 0x62, 0xA0, 0x6B, 0xA8, 0x69, 0xA0, 0x6C, 0xC6, 0x7F, 0x20, 0x6D, 0x88, 0x4B, 0xA0, +0x6E, 0xA6, 0x61, 0x20, 0x6F, 0x68, 0x2D, 0xA0, 0x70, 0x86, 0x43, 0x20, 0x71, 0x51, 0x4A, 0x20, +0x72, 0x66, 0x25, 0x20, 0x73, 0x31, 0x2C, 0x20, 0x74, 0x46, 0x07, 0x20, 0x75, 0x11, 0x0E, 0x20, +0x76, 0x2F, 0x23, 0xA0, 0x76, 0xF0, 0xF0, 0x20, 0x78, 0x0F, 0x05, 0xA0, 0x78, 0xD0, 0xD2, 0x20, +0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20, 0x7B, 0xCE, 0xC9, 0xA0, 0x7C, 0x99, 0xD0, 0xA0, +0x7D, 0xA5, 0x71, 0x20, 0x7E, 0x79, 0xB2, 0xA0, 0x7F, 0x72, 0xDE, 0x20, 0x00, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 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, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4C, 0x4D, +0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, +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, 0x64, 0x00, 0x00, 0x00, +0x05, 0x00, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0xFF, 0x96, 0x51, 0xF9, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xFF, 0x14, 0x80, 0xFF, 0xFF, 0xFF, +0xFF, 0xC7, 0x58, 0xAC, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xD9, 0xED, 0x80, 0xFF, 0xFF, 0xFF, +0xFF, 0xD2, 0xA1, 0x32, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x35, 0xA4, 0x00, 0xFF, 0xFF, 0xFF, +0xFF, 0xDB, 0xEE, 0x27, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x25, 0x72, 0x40, 0xFF, 0xFF, 0xFF, +0xFF, 0xFB, 0xC2, 0xEF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x08, 0x6B, 0x84, 0x80, 0x00, 0x00, 0x00, +0x00, 0x08, 0xC6, 0x6D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0C, 0x61, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80, 0x00, 0x00, 0x00, +0x00, 0x0E, 0x8E, 0xF2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xD3, 0x51, 0x80, 0x00, 0x00, 0x00, +0x00, 0x10, 0x27, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xB7, 0xA6, 0x00, 0x00, 0x00, 0x00, +0x00, 0x1E, 0x18, 0x6F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0xE6, 0x80, 0x00, 0x00, 0x00, +0x00, 0x48, 0xBB, 0x22, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x23, 0x1A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xDC, 0xC0, 0x80, 0x00, 0x00, 0x00, +0x00, 0x4C, 0x5D, 0xE5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0xB8, 0x80, 0x00, 0x00, 0x00, +0x00, 0x4E, 0x34, 0x8C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x9C, 0xA0, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x50, 0x08, 0xBB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x31, 0x9A, 0x20, 0x00, 0x00, 0x00, +0x00, 0x50, 0x67, 0xA7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x7C, 0x82, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x51, 0xD8, 0xCB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x05, 0x9E, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x52, 0x6C, 0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x7A, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x53, 0xAE, 0x21, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0xDC, 0x46, 0x20, 0x00, 0x00, 0x00, +0x00, 0x54, 0x4C, 0x55, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x5C, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x55, 0x7C, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x55, 0xAB, 0x04, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x56, 0x2C, 0x37, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x3E, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x57, 0x53, 0x87, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x57, 0x81, 0xAC, 0x20, 0x00, 0x00, 0x00, +0x00, 0x58, 0x15, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x20, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x59, 0x20, 0xF4, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x58, 0x53, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x59, 0xF5, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB7, 0x02, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x5A, 0xF7, 0x9C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x25, 0xC0, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x5B, 0xD5, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x1F, 0x20, 0x00, 0x00, 0x00, +0x00, 0x5C, 0xCE, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xFC, 0x68, 0x20, 0x00, 0x00, 0x00, +0x00, 0x5D, 0xB4, 0xFA, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x80, 0x01, 0x20, 0x00, 0x00, 0x00, +0x00, 0x5E, 0x9B, 0xB0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xC9, 0xD5, 0x20, 0x00, 0x00, 0x00, +0x00, 0x5F, 0x94, 0xDC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xE3, 0x20, 0x00, 0x00, 0x00, +0x00, 0x60, 0x72, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0xA0, 0x7C, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x61, 0x7D, 0xF8, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x77, 0x24, 0x20, 0x00, 0x00, 0x00, +0x00, 0x63, 0x5D, 0xDA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x64, 0x44, 0x91, 0x20, 0x00, 0x00, 0x00, +0x00, 0x65, 0x3D, 0xBC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x66, 0x1B, 0x38, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x67, 0x1D, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0xE0, 0x20, 0x00, 0x00, 0x00, +0x00, 0x68, 0xFD, 0x80, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x87, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x6A, 0xDD, 0x62, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x69, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x6C, 0xC6, 0x7F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x4B, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x6E, 0xA6, 0x61, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x2D, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x70, 0x86, 0x43, 0x20, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x4A, 0x20, 0x00, 0x00, 0x00, +0x00, 0x72, 0x66, 0x25, 0x20, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x2C, 0x20, 0x00, 0x00, 0x00, +0x00, 0x74, 0x46, 0x07, 0x20, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x0E, 0x20, 0x00, 0x00, 0x00, +0x00, 0x76, 0x2F, 0x23, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xF0, 0x20, 0x00, 0x00, 0x00, +0x00, 0x78, 0x0F, 0x05, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xD2, 0x20, 0x00, 0x00, 0x00, +0x00, 0x79, 0xEE, 0xE7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xB4, 0x20, 0x00, 0x00, 0x00, +0x00, 0x7B, 0xCE, 0xC9, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xD0, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x7D, 0xA5, 0x71, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xB2, 0xA0, 0x00, 0x00, 0x00, +0x00, 0x7F, 0x72, 0xDE, 0x20, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 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, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xF8, 0xE4, 0x00, 0x00, 0x00, +0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, +0x57, 0x45, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0A, 0x57, 0x45, 0x54, 0x30, 0x57, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, +0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0xBC, 0xAC, +0xC8, 0x01, 0x07, 0x16, 0x42, 0x00, 0x00, 0x00, 0x00, /* Africa/Ceuta */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x45, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1326,7 +1324,7 @@ const unsigned char timelib_timezone_db_data_builtin[696215] = { /* Africa/El_Aaiun */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x45, 0x48, 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, 0x5B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0xBC, 0x48, 0xF0, 0xE0, 0x0B, 0xD1, 0xB0, 0x90, 0x0B, 0xE8, 0x0C, 0x00, 0x0C, 0x61, 0x47, 0xF0, 0x0D, 0xC9, 0x3F, 0x80, 0x0E, 0x8E, 0xF2, 0x70, 0x0F, 0xD3, 0x51, 0x80, 0x10, 0x27, 0xA3, 0x70, 0x48, 0x41, 0xE6, 0x80, 0x48, 0xBB, 0x22, 0x70, 0x4A, 0x23, 0x1A, 0x00, 0x4A, 0x8D, 0xD5, 0x70, @@ -1334,90 +1332,88 @@ const unsigned char timelib_timezone_db_data_builtin[696215] = { 0x4F, 0x9C, 0xA0, 0xA0, 0x50, 0x08, 0xBB, 0xA0, 0x50, 0x31, 0x9A, 0x20, 0x50, 0x67, 0xA7, 0xA0, 0x51, 0x7C, 0x82, 0xA0, 0x51, 0xD8, 0xCB, 0xA0, 0x52, 0x05, 0x9E, 0xA0, 0x52, 0x6C, 0x73, 0xA0, 0x53, 0x37, 0x7A, 0xA0, 0x53, 0xAE, 0x21, 0xA0, 0x53, 0xDC, 0x46, 0x20, 0x54, 0x4C, 0x55, 0xA0, -0x55, 0x17, 0x5C, 0xA0, 0x55, 0x7B, 0x8E, 0xA0, 0x55, 0xA9, 0xB3, 0x20, 0x56, 0x2C, 0x37, 0xA0, -0x56, 0xF7, 0x3E, 0xA0, 0x57, 0x52, 0x36, 0x20, 0x57, 0x80, 0x5A, 0xA0, 0x58, 0x15, 0x54, 0x20, -0x58, 0xD7, 0x20, 0xA0, 0x59, 0x1F, 0xA3, 0x20, 0x59, 0x57, 0x02, 0x20, 0x59, 0xF5, 0x36, 0x20, -0x5A, 0xB7, 0x02, 0xA0, 0x5A, 0xF6, 0x4A, 0xA0, 0x5B, 0x24, 0x6F, 0x20, 0x5B, 0xD5, 0x18, 0x20, -0x5C, 0xA0, 0x1F, 0x20, 0x5C, 0xCC, 0xF2, 0x20, 0x5C, 0xFB, 0x16, 0xA0, 0x5D, 0xB4, 0xFA, 0x20, -0x5E, 0x80, 0x01, 0x20, 0x5E, 0x9A, 0x5F, 0x20, 0x5E, 0xD1, 0xBE, 0x20, 0x5F, 0x94, 0xDC, 0x20, -0x60, 0x5F, 0xE3, 0x20, 0x60, 0x71, 0x06, 0xA0, 0x60, 0x9F, 0x2B, 0x20, 0x61, 0x7D, 0xF8, 0xA0, -0x62, 0x3F, 0xC5, 0x20, 0x62, 0x47, 0xAE, 0x20, 0x62, 0x75, 0xD2, 0xA0, 0x63, 0x5D, 0xDA, 0xA0, -0x64, 0x43, 0x3F, 0xA0, 0x65, 0x3D, 0xBC, 0xA0, 0x66, 0x19, 0xE7, 0x20, 0x67, 0x1D, 0x9E, 0xA0, -0x67, 0xF0, 0x8E, 0xA0, 0x68, 0xFD, 0x80, 0xA0, 0x69, 0xC8, 0x87, 0xA0, 0x6A, 0xDD, 0x62, 0xA0, -0x6B, 0xA8, 0x69, 0xA0, 0x6C, 0xC6, 0x7F, 0x20, 0x6D, 0x88, 0x4B, 0xA0, 0x6E, 0xA6, 0x61, 0x20, -0x6F, 0x68, 0x2D, 0xA0, 0x70, 0x86, 0x43, 0x20, 0x71, 0x51, 0x4A, 0x20, 0x72, 0x66, 0x25, 0x20, -0x73, 0x31, 0x2C, 0x20, 0x74, 0x46, 0x07, 0x20, 0x75, 0x11, 0x0E, 0x20, 0x76, 0x2F, 0x23, 0xA0, -0x76, 0xF0, 0xF0, 0x20, 0x78, 0x0F, 0x05, 0xA0, 0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, -0x7A, 0xB0, 0xB4, 0x20, 0x7B, 0xCD, 0x78, 0x20, 0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA4, 0x1F, 0xA0, -0x7E, 0x79, 0xB2, 0xA0, 0x7F, 0x7A, 0xC7, 0x20, 0x00, 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, 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, 0x03, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, -0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x57, -0x41, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 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, 0x5B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, -0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x48, 0xF0, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x0B, 0xD1, 0xB0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00, -0x00, 0x00, 0x00, 0x00, 0x0C, 0x61, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80, -0x00, 0x00, 0x00, 0x00, 0x0E, 0x8E, 0xF2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xD3, 0x51, 0x80, -0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0xE6, 0x80, -0x00, 0x00, 0x00, 0x00, 0x48, 0xBB, 0x22, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x23, 0x1A, 0x00, -0x00, 0x00, 0x00, 0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xDC, 0xC0, 0x80, -0x00, 0x00, 0x00, 0x00, 0x4C, 0x5D, 0xE5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0xB8, 0x80, -0x00, 0x00, 0x00, 0x00, 0x4E, 0x34, 0x8C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x9C, 0xA0, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x50, 0x08, 0xBB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x31, 0x9A, 0x20, -0x00, 0x00, 0x00, 0x00, 0x50, 0x67, 0xA7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x7C, 0x82, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x51, 0xD8, 0xCB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x05, 0x9E, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x7A, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x53, 0xAE, 0x21, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0xDC, 0x46, 0x20, -0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x55, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x5C, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x55, 0x7B, 0x8E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0xA9, 0xB3, 0x20, -0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x37, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x3E, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x57, 0x52, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x57, 0x80, 0x5A, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x20, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x59, 0x1F, 0xA3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x59, 0x57, 0x02, 0x20, -0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB7, 0x02, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x5A, 0xF6, 0x4A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x24, 0x6F, 0x20, -0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x1F, 0x20, -0x00, 0x00, 0x00, 0x00, 0x5C, 0xCC, 0xF2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xFB, 0x16, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xFA, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x80, 0x01, 0x20, -0x00, 0x00, 0x00, 0x00, 0x5E, 0x9A, 0x5F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xD1, 0xBE, 0x20, -0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xDC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xE3, 0x20, -0x00, 0x00, 0x00, 0x00, 0x60, 0x71, 0x06, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x9F, 0x2B, 0x20, -0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xF8, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xC5, 0x20, -0x00, 0x00, 0x00, 0x00, 0x62, 0x47, 0xAE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x62, 0x75, 0xD2, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xDA, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x64, 0x43, 0x3F, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xBC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x66, 0x19, 0xE7, 0x20, -0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF0, 0x8E, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x80, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x87, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x62, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x69, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x7F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x4B, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x61, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x2D, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x43, 0x20, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x4A, 0x20, -0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x25, 0x20, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x2C, 0x20, -0x00, 0x00, 0x00, 0x00, 0x74, 0x46, 0x07, 0x20, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x0E, 0x20, -0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x23, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xF0, 0x20, -0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x05, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xD2, 0x20, -0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xE7, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xB4, 0x20, -0x00, 0x00, 0x00, 0x00, 0x7B, 0xCD, 0x78, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xD0, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x7D, 0xA4, 0x1F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xB2, 0xA0, -0x00, 0x00, 0x00, 0x00, 0x7F, 0x7A, 0xC7, 0x20, 0x00, 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, 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, 0x03, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, -0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x57, -0x41, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x0A, 0x57, 0x45, 0x54, 0x30, 0x57, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, -0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, -0xB2, 0xC1, 0xB8, 0x00, 0xFE, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00, +0x55, 0x17, 0x5C, 0xA0, 0x55, 0x7C, 0xE0, 0x20, 0x55, 0xAB, 0x04, 0xA0, 0x56, 0x2C, 0x37, 0xA0, +0x56, 0xF7, 0x3E, 0xA0, 0x57, 0x53, 0x87, 0xA0, 0x57, 0x81, 0xAC, 0x20, 0x58, 0x15, 0x54, 0x20, +0x58, 0xD7, 0x20, 0xA0, 0x59, 0x20, 0xF4, 0xA0, 0x59, 0x58, 0x53, 0xA0, 0x59, 0xF5, 0x36, 0x20, +0x5A, 0xB7, 0x02, 0xA0, 0x5A, 0xF7, 0x9C, 0x20, 0x5B, 0x25, 0xC0, 0xA0, 0x5B, 0xD5, 0x18, 0x20, +0x5C, 0xA0, 0x1F, 0x20, 0x5C, 0xCE, 0x43, 0xA0, 0x5C, 0xFC, 0x68, 0x20, 0x5D, 0xB4, 0xFA, 0x20, +0x5E, 0x80, 0x01, 0x20, 0x5E, 0x9B, 0xB0, 0xA0, 0x5E, 0xC9, 0xD5, 0x20, 0x5F, 0x94, 0xDC, 0x20, +0x60, 0x5F, 0xE3, 0x20, 0x60, 0x72, 0x58, 0x20, 0x60, 0xA0, 0x7C, 0xA0, 0x61, 0x7D, 0xF8, 0xA0, +0x62, 0x77, 0x24, 0x20, 0x63, 0x5D, 0xDA, 0xA0, 0x64, 0x44, 0x91, 0x20, 0x65, 0x3D, 0xBC, 0xA0, +0x66, 0x1B, 0x38, 0xA0, 0x67, 0x1D, 0x9E, 0xA0, 0x67, 0xF1, 0xE0, 0x20, 0x68, 0xFD, 0x80, 0xA0, +0x69, 0xC8, 0x87, 0xA0, 0x6A, 0xDD, 0x62, 0xA0, 0x6B, 0xA8, 0x69, 0xA0, 0x6C, 0xC6, 0x7F, 0x20, +0x6D, 0x88, 0x4B, 0xA0, 0x6E, 0xA6, 0x61, 0x20, 0x6F, 0x68, 0x2D, 0xA0, 0x70, 0x86, 0x43, 0x20, +0x71, 0x51, 0x4A, 0x20, 0x72, 0x66, 0x25, 0x20, 0x73, 0x31, 0x2C, 0x20, 0x74, 0x46, 0x07, 0x20, +0x75, 0x11, 0x0E, 0x20, 0x76, 0x2F, 0x23, 0xA0, 0x76, 0xF0, 0xF0, 0x20, 0x78, 0x0F, 0x05, 0xA0, +0x78, 0xD0, 0xD2, 0x20, 0x79, 0xEE, 0xE7, 0xA0, 0x7A, 0xB0, 0xB4, 0x20, 0x7B, 0xCE, 0xC9, 0xA0, +0x7C, 0x99, 0xD0, 0xA0, 0x7D, 0xA5, 0x71, 0x20, 0x7E, 0x79, 0xB2, 0xA0, 0x7F, 0x72, 0xDE, 0x20, +0x00, 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, 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, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, +0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, +0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 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, 0x59, 0x00, 0x00, +0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, +0xFF, 0xFF, 0xBC, 0x48, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xD1, 0xB0, 0x90, 0x00, 0x00, +0x00, 0x00, 0x0B, 0xE8, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x61, 0x47, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x0D, 0xC9, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x8E, 0xF2, 0x70, 0x00, 0x00, +0x00, 0x00, 0x0F, 0xD3, 0x51, 0x80, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0xA3, 0x70, 0x00, 0x00, +0x00, 0x00, 0x48, 0x41, 0xE6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x48, 0xBB, 0x22, 0x70, 0x00, 0x00, +0x00, 0x00, 0x4A, 0x23, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x8D, 0xD5, 0x70, 0x00, 0x00, +0x00, 0x00, 0x4B, 0xDC, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x5D, 0xE5, 0x70, 0x00, 0x00, +0x00, 0x00, 0x4D, 0x97, 0xB8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x34, 0x8C, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x4F, 0x9C, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x08, 0xBB, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x50, 0x31, 0x9A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x50, 0x67, 0xA7, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x51, 0x7C, 0x82, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x51, 0xD8, 0xCB, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x52, 0x05, 0x9E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x73, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x53, 0x37, 0x7A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x53, 0xAE, 0x21, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x53, 0xDC, 0x46, 0x20, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x55, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x55, 0x17, 0x5C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x7C, 0xE0, 0x20, 0x00, 0x00, +0x00, 0x00, 0x55, 0xAB, 0x04, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x37, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x56, 0xF7, 0x3E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x57, 0x53, 0x87, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x57, 0x81, 0xAC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x54, 0x20, 0x00, 0x00, +0x00, 0x00, 0x58, 0xD7, 0x20, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0xF4, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x59, 0x58, 0x53, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x36, 0x20, 0x00, 0x00, +0x00, 0x00, 0x5A, 0xB7, 0x02, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xF7, 0x9C, 0x20, 0x00, 0x00, +0x00, 0x00, 0x5B, 0x25, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x18, 0x20, 0x00, 0x00, +0x00, 0x00, 0x5C, 0xA0, 0x1F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xCE, 0x43, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x5C, 0xFC, 0x68, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xFA, 0x20, 0x00, 0x00, +0x00, 0x00, 0x5E, 0x80, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x9B, 0xB0, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x5E, 0xC9, 0xD5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xDC, 0x20, 0x00, 0x00, +0x00, 0x00, 0x60, 0x5F, 0xE3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x72, 0x58, 0x20, 0x00, 0x00, +0x00, 0x00, 0x60, 0xA0, 0x7C, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xF8, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x62, 0x77, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xDA, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x64, 0x44, 0x91, 0x20, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xBC, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x66, 0x1B, 0x38, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x9E, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x67, 0xF1, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x80, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x69, 0xC8, 0x87, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x62, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x6B, 0xA8, 0x69, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x7F, 0x20, 0x00, 0x00, +0x00, 0x00, 0x6D, 0x88, 0x4B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x61, 0x20, 0x00, 0x00, +0x00, 0x00, 0x6F, 0x68, 0x2D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x43, 0x20, 0x00, 0x00, +0x00, 0x00, 0x71, 0x51, 0x4A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x25, 0x20, 0x00, 0x00, +0x00, 0x00, 0x73, 0x31, 0x2C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x74, 0x46, 0x07, 0x20, 0x00, 0x00, +0x00, 0x00, 0x75, 0x11, 0x0E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x23, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x76, 0xF0, 0xF0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x05, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x78, 0xD0, 0xD2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xE7, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x7A, 0xB0, 0xB4, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xC9, 0xA0, 0x00, 0x00, +0x00, 0x00, 0x7C, 0x99, 0xD0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xA5, 0x71, 0x20, 0x00, 0x00, +0x00, 0x00, 0x7E, 0x79, 0xB2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x72, 0xDE, 0x20, 0x00, 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, 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, 0xFF, 0xFF, 0xF3, 0xA0, 0x00, 0x00, 0xFF, 0xFF, 0xF1, +0xF0, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x4C, +0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x57, 0x45, 0x54, 0x30, 0x57, 0x45, 0x53, +0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, +0x2F, 0x33, 0x0A, 0x00, 0xB2, 0xC1, 0xB8, 0x00, 0xFE, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00, /* Africa/Freetown */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -4886,19 +4882,60 @@ const unsigned char timelib_timezone_db_data_builtin[696215] = { /* America/Cayman */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4B, 0x59, 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, 0x80, 0x00, 0x00, 0x00, -0x8B, 0xF4, 0x61, 0xE8, 0x01, 0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, -0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, -0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, -0x00, 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, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, -0xFF, 0xFF, 0x69, 0x87, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xF4, 0x61, 0xE8, 0x00, 0x01, -0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, 0x00, 0x04, 0xFF, 0xFF, 0xB9, -0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0xA6, 0xC7, 0x50, 0x00, -0x96, 0x7A, 0x22, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, +0x93, 0x0F, 0xB4, 0xFF, 0x56, 0xE5, 0x0F, 0xF0, 0x58, 0x1E, 0xC6, 0xE0, 0x58, 0xC4, 0xF1, 0xF0, +0x59, 0xFE, 0xA8, 0xE0, 0x5A, 0xA4, 0xD3, 0xF0, 0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0, +0x5D, 0xBE, 0x6C, 0xE0, 0x5E, 0x64, 0x97, 0xF0, 0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70, +0x61, 0x87, 0x6B, 0x60, 0x62, 0x2D, 0x96, 0x70, 0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70, +0x65, 0x47, 0x2F, 0x60, 0x65, 0xED, 0x5A, 0x70, 0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70, +0x69, 0x06, 0xF3, 0x60, 0x69, 0xAD, 0x1E, 0x70, 0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0, +0x6C, 0xCF, 0xF1, 0xE0, 0x6D, 0x76, 0x1C, 0xF0, 0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0, +0x70, 0x8F, 0xB5, 0xE0, 0x71, 0x35, 0xE0, 0xF0, 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0, +0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70, +0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70, +0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70, 0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, +0x7F, 0x98, 0x00, 0x60, 0x01, 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, 0xFF, 0xFF, 0xB3, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x01, 0x00, 0x04, 0xFF, 0xFF, +0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, +0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 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, 0x2F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xF8, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x27, 0xCC, 0xFF, 0xFF, +0xFF, 0xFF, 0x93, 0x0F, 0xB4, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x0F, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x58, 0x1E, 0xC6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC4, 0xF1, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x59, 0xFE, 0xA8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xD3, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x5B, 0xDE, 0x8A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xB5, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x5D, 0xBE, 0x6C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0x97, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x5F, 0x9E, 0x4E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xB4, 0x70, 0x00, 0x00, +0x00, 0x00, 0x61, 0x87, 0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0x96, 0x70, 0x00, 0x00, +0x00, 0x00, 0x63, 0x67, 0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x78, 0x70, 0x00, 0x00, +0x00, 0x00, 0x65, 0x47, 0x2F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x5A, 0x70, 0x00, 0x00, +0x00, 0x00, 0x67, 0x27, 0x11, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x3C, 0x70, 0x00, 0x00, +0x00, 0x00, 0x69, 0x06, 0xF3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x1E, 0x70, 0x00, 0x00, +0x00, 0x00, 0x6A, 0xE6, 0xD5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x3A, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x6C, 0xCF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x1C, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x6E, 0xAF, 0xD3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x55, 0xFE, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x70, 0x8F, 0xB5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xE0, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x72, 0x6F, 0x97, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xC2, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x74, 0x4F, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xDF, 0x70, 0x00, 0x00, +0x00, 0x00, 0x76, 0x38, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xC1, 0x70, 0x00, 0x00, +0x00, 0x00, 0x78, 0x18, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xA3, 0x70, 0x00, 0x00, +0x00, 0x00, 0x79, 0xF8, 0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x85, 0x70, 0x00, 0x00, +0x00, 0x00, 0x7B, 0xD8, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67, 0x70, 0x00, 0x00, +0x00, 0x00, 0x7D, 0xB8, 0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x49, 0x70, 0x00, 0x00, +0x00, 0x00, 0x7F, 0x98, 0x00, 0x60, 0x00, 0x01, 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, 0xFF, 0xFF, 0xB3, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x01, 0x00, +0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, +0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, +0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xA6, 0xC7, +0x50, 0x00, 0x96, 0x7A, 0x22, 0x00, 0x00, 0x00, 0x00, /* America/Chicago */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -45591,4 +45628,4 @@ const unsigned char timelib_timezone_db_data_builtin[696215] = { 0x00, 0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, 0x0A, 0x55, 0x54, 0x43, 0x30, 0x0A, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,}; -const timelib_tzdb timezonedb_builtin = { "2015.4", 583, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2015.5", 583, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; diff --git a/ext/dom/document.c b/ext/dom/document.c index 8b62e92a19..d82ca92096 100644 --- a/ext/dom/document.c +++ b/ext/dom/document.c @@ -1761,7 +1761,7 @@ PHP_FUNCTION(dom_document_save) char *file; long options = 0; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l", &id, dom_document_class_entry, &file, &file_len, &options) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Op|l", &id, dom_document_class_entry, &file, &file_len, &options) == FAILURE) { return; } @@ -1991,7 +1991,7 @@ static void _dom_document_schema_validate(INTERNAL_FUNCTION_PARAMETERS, int type int is_valid; char resolved_path[MAXPATHLEN + 1]; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Op|l", &id, dom_document_class_entry, &source, &source_len, &flags) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l", &id, dom_document_class_entry, &source, &source_len, &flags) == FAILURE) { return; } @@ -2004,6 +2004,10 @@ static void _dom_document_schema_validate(INTERNAL_FUNCTION_PARAMETERS, int type switch (type) { case DOM_LOAD_FILE: + if (CHECK_NULL_PATH(source, source_len)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Schema file source"); + RETURN_FALSE; + } valid_file = _dom_get_valid_file_path(source, resolved_path, MAXPATHLEN TSRMLS_CC); if (!valid_file) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Schema file source"); @@ -2087,7 +2091,7 @@ static void _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAMETERS, int typ int is_valid; char resolved_path[MAXPATHLEN + 1]; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Op", &id, dom_document_class_entry, &source, &source_len) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_document_class_entry, &source, &source_len) == FAILURE) { return; } @@ -2100,6 +2104,10 @@ static void _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAMETERS, int typ switch (type) { case DOM_LOAD_FILE: + if (CHECK_NULL_PATH(source, source_len)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid RelaxNG file source"); + RETURN_FALSE; + } valid_file = _dom_get_valid_file_path(source, resolved_path, MAXPATHLEN TSRMLS_CC); if (!valid_file) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid RelaxNG file source"); @@ -2180,7 +2188,7 @@ static void dom_load_html(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ */ id = getThis(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|l", &source, &source_len, &options) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &source, &source_len, &options) == FAILURE) { return; } @@ -2190,6 +2198,10 @@ static void dom_load_html(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ */ } if (mode == DOM_LOAD_FILE) { + if (CHECK_NULL_PATH(source, source_len)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid file source"); + RETURN_FALSE; + } ctxt = htmlCreateFileParserCtxt(source, NULL); } else { source_len = xmlStrlen(source); @@ -2278,7 +2290,7 @@ PHP_FUNCTION(dom_document_save_html_file) char *file; const char *encoding; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_document_class_entry, &file, &file_len) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Op", &id, dom_document_class_entry, &file, &file_len) == FAILURE) { return; } diff --git a/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt b/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt index 75004e2a74..e0d0923642 100644 --- a/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt +++ b/ext/dom/tests/DOMDocument_loadHTMLfile_error2.phpt @@ -15,9 +15,9 @@ $result = $doc->loadHTMLFile(""); assert('$result === false'); $doc = new DOMDocument(); $result = $doc->loadHTMLFile("text.html\0something"); -assert('$result === null'); +assert('$result === false'); ?> --EXPECTF-- %r(PHP ){0,1}%rWarning: DOMDocument::loadHTMLFile(): Empty string supplied as input %s -%r(PHP ){0,1}%rWarning: DOMDocument::loadHTMLFile() expects parameter 1 to be a valid path, string given %s +%r(PHP ){0,1}%rWarning: DOMDocument::loadHTMLFile(): Invalid file source %s diff --git a/ext/gd/gd.c b/ext/gd/gd.c index 322325e47b..405229e4ee 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -1735,7 +1735,7 @@ PHP_FUNCTION(imagefilledarc) long cx, cy, w, h, ST, E, col, style; gdImagePtr im; int e, st; - + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rllllllll", &IM, &cx, &cy, &w, &h, &ST, &E, &col, &style) == FAILURE) { return; } @@ -1976,7 +1976,7 @@ PHP_FUNCTION(imagegrabwindow) if ( handle == 0 ) { goto clean; } - pPrintWindow = (tPrintWindow) GetProcAddress(handle, "PrintWindow"); + pPrintWindow = (tPrintWindow) GetProcAddress(handle, "PrintWindow"); if ( pPrintWindow ) { pPrintWindow(window, memDC, (UINT) client_area); @@ -3045,10 +3045,11 @@ PHP_FUNCTION(imagegammacorrect) for (x = 0; x < gdImageSX(im); x++) { c = gdImageGetPixel(im, x, y); gdImageSetPixel(im, x, y, - gdTrueColor( + gdTrueColorAlpha( (int) ((pow((pow((gdTrueColorGetRed(c) / 255.0), input)), 1.0 / output) * 255) + .5), (int) ((pow((pow((gdTrueColorGetGreen(c) / 255.0), input)), 1.0 / output) * 255) + .5), - (int) ((pow((pow((gdTrueColorGetBlue(c) / 255.0), input)), 1.0 / output) * 255) + .5) + (int) ((pow((pow((gdTrueColorGetBlue(c) / 255.0), input)), 1.0 / output) * 255) + .5), + gdTrueColorGetAlpha(c) ) ); } @@ -3845,7 +3846,7 @@ static void php_imagettftext_common(INTERNAL_FUNCTION_PARAMETERS, int mode, int if (zend_hash_get_current_data_ex(HASH_OF(EXT), (void **) &item, &pos) == FAILURE) { continue; } - + if (strcmp("linespacing", key) == 0) { convert_to_double_ex(item); strex.flags |= gdFTEX_LINESPACE; @@ -3924,7 +3925,7 @@ PHP_FUNCTION(imagepsloadfont) struct stat st; #endif - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &file, &file_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p", &file, &file_len) == FAILURE) { return; } @@ -4264,11 +4265,11 @@ PHP_FUNCTION(imagepsbbox) if (argc != 3 && argc != 6) { ZEND_WRONG_PARAM_COUNT(); } - + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "srl|lld", &str, &str_len, &fnt, &sz, &sp, &wd, &angle) == FAILURE) { return; } - + if (argc == 6) { space = sp; add_width = wd; diff --git a/ext/gd/tests/bug61221.phpt b/ext/gd/tests/bug61221.phpt new file mode 100644 index 0000000000..42365da71f --- /dev/null +++ b/ext/gd/tests/bug61221.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #61221 - imagegammacorrect function loses alpha channel +--SKIPIF-- +<?php +if (!extension_loaded('gd')) die('skip gd extension not available'); +?> +--FILE-- +<?php +$imagew = 50; +$imageh = 50; +$img = imagecreatetruecolor($imagew, $imageh); +$blacktransparent = imagecolorallocatealpha($img, 0, 0, 0, 127); +$redsolid = imagecolorallocate($img, 255, 0, 0); +imagefill($img, 0, 0, $blacktransparent); +imageline($img, $imagew / 2, 0, $imagew / 2, $imageh - 1, $redsolid); +imageline($img, 0, $imageh / 2, $imagew - 1, $imageh / 2, $redsolid); +imagegammacorrect($img, 1, 1); +$color = imagecolorat($img, 0, 0); +var_dump($color === $blacktransparent); +imagedestroy($img); +?> +--EXPECT-- +bool(true) diff --git a/ext/iconv/config.m4 b/ext/iconv/config.m4 index fce59931b9..a6d50cfd9d 100644 --- a/ext/iconv/config.m4 +++ b/ext/iconv/config.m4 @@ -186,8 +186,8 @@ int main() { AC_DEFINE([ICONV_BROKEN_IGNORE],1,[Whether iconv supports IGNORE]) ],[ AC_MSG_RESULT(no, cross-compiling) - PHP_DEFINE([ICONV_SUPPORTS_ERRNO],0,[ext/iconv]) - AC_DEFINE([ICONV_SUPPORTS_ERRNO],0,[Whether iconv supports IGNORE]) + PHP_DEFINE([ICONV_BROKEN_IGNORE],0,[ext/iconv]) + AC_DEFINE([ICONV_BROKEN_IGNORE],0,[Whether iconv supports IGNORE]) ]) AC_MSG_CHECKING([if your cpp allows macro usage in include lines]) diff --git a/ext/pcre/pcrelib/pcre.h b/ext/pcre/pcrelib/pcre.h index 9216d55b0a..58ed46a2a3 100644 --- a/ext/pcre/pcrelib/pcre.h +++ b/ext/pcre/pcrelib/pcre.h @@ -42,9 +42,9 @@ POSSIBILITY OF SUCH DAMAGE. /* The current PCRE version information. */ #define PCRE_MAJOR 8 -#define PCRE_MINOR 36 +#define PCRE_MINOR 37 #define PCRE_PRERELEASE -#define PCRE_DATE 2014-09-26 +#define PCRE_DATE 2015-04-28 /* When an application links to a PCRE DLL in Windows, the symbols that are imported have to be identified as such. When building PCRE, the appropriate diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index a5c2d18ac9..b2c6189ee3 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -27,6 +27,7 @@ #include "php.h" #include "php_ini.h" #include "ext/standard/info.h" +#include "ext/standard/php_string.h" #include "pdo/php_pdo.h" #include "pdo/php_pdo_driver.h" #include "ext/standard/file.h" @@ -60,6 +61,17 @@ static char * _pdo_pgsql_trim_message(const char *message, int persistent) return tmp; } +static char * _pdo_pgsql_escape_credentials(char *str TSRMLS_DC) +{ + int len; + + if (str) { + return php_addcslashes(str, strlen(str), &len, 0, "\\'", sizeof("\\'") TSRMLS_CC); + } + + return NULL; +} + int _pdo_pgsql_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, int errcode, const char *sqlstate, const char *file, int line TSRMLS_DC) /* {{{ */ { pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data; @@ -1055,7 +1067,7 @@ static int pdo_pgsql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_ pdo_pgsql_db_handle *H; int ret = 0; char *conn_str, *p, *e; - char *tmp_pass; + char *tmp_user, *tmp_pass; long connect_timeout = 30; H = pecalloc(1, sizeof(pdo_pgsql_db_handle), dbh->is_persistent); @@ -1063,7 +1075,7 @@ static int pdo_pgsql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_ H->einfo.errcode = 0; H->einfo.errmsg = NULL; - + /* PostgreSQL wants params in the connect string to be separated by spaces, * if the PDO standard semicolons are used, we convert them to spaces */ @@ -1077,42 +1089,27 @@ static int pdo_pgsql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_ connect_timeout = pdo_attr_lval(driver_options, PDO_ATTR_TIMEOUT, 30 TSRMLS_CC); } - if (dbh->password) { - if (dbh->password[0] != '\'' && dbh->password[strlen(dbh->password) - 1] != '\'') { - char *pwd = dbh->password; - int pos = 1; - - tmp_pass = safe_emalloc(2, strlen(dbh->password), 3); - tmp_pass[0] = '\''; - - while (*pwd != '\0') { - if (*pwd == '\\' || *pwd == '\'') { - tmp_pass[pos++] = '\\'; - } - - tmp_pass[pos++] = *pwd++; - } - - tmp_pass[pos++] = '\''; - tmp_pass[pos] = '\0'; - } else { - tmp_pass = dbh->password; - } - } + /* escape username and password, if provided */ + tmp_user = _pdo_pgsql_escape_credentials(dbh->username TSRMLS_CC); + tmp_pass = _pdo_pgsql_escape_credentials(dbh->password TSRMLS_CC); /* support both full connection string & connection string + login and/or password */ - if (dbh->username && dbh->password) { - spprintf(&conn_str, 0, "%s user=%s password=%s connect_timeout=%ld", dbh->data_source, dbh->username, tmp_pass, connect_timeout); - } else if (dbh->username) { - spprintf(&conn_str, 0, "%s user=%s connect_timeout=%ld", dbh->data_source, dbh->username, connect_timeout); - } else if (dbh->password) { - spprintf(&conn_str, 0, "%s password=%s connect_timeout=%ld", dbh->data_source, tmp_pass, connect_timeout); + if (tmp_user && tmp_pass) { + spprintf(&conn_str, 0, "%s user='%s' password='%s' connect_timeout=%ld", dbh->data_source, tmp_user, tmp_pass, connect_timeout); + } else if (tmp_user) { + spprintf(&conn_str, 0, "%s user='%s' connect_timeout=%ld", dbh->data_source, tmp_user, connect_timeout); + } else if (tmp_pass) { + spprintf(&conn_str, 0, "%s password='%s' connect_timeout=%ld", dbh->data_source, tmp_pass, connect_timeout); } else { spprintf(&conn_str, 0, "%s connect_timeout=%ld", (char *) dbh->data_source, connect_timeout); } H->server = PQconnectdb(conn_str); - if (dbh->password && tmp_pass != dbh->password) { + + if (tmp_user) { + efree(tmp_user); + } + if (tmp_pass) { efree(tmp_pass); } diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index f541c86259..51402c3e53 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -220,7 +220,7 @@ stmt_retry: return 0; } - if (!stmt->executed && !stmt->column_count) { + if (!stmt->executed && (!stmt->column_count || S->cols == NULL)) { stmt->column_count = (int) PQnfields(S->result); S->cols = ecalloc(stmt->column_count, sizeof(pdo_pgsql_column)); } @@ -294,8 +294,8 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data * sizeof(Oid)); } if (param->paramno >= 0) { - if (param->paramno >= zend_hash_num_elements(stmt->bound_param_map)) { - pdo_pgsql_error_stmt(stmt, PGRES_FATAL_ERROR, "HY105"); + if (param->paramno >= zend_hash_num_elements(stmt->bound_params)) { + pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "parameter was not defined" TSRMLS_CC); return 0; } @@ -614,6 +614,12 @@ done: static int pdo_pgsql_stmt_cursor_closer(pdo_stmt_t *stmt TSRMLS_DC) { + pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data; + + if (S->cols != NULL){ + efree(S->cols); + S->cols = NULL; + } return 1; } diff --git a/ext/pdo_pgsql/tests/bug69344.phpt b/ext/pdo_pgsql/tests/bug69344.phpt new file mode 100644 index 0000000000..d274e0608c --- /dev/null +++ b/ext/pdo_pgsql/tests/bug69344.phpt @@ -0,0 +1,44 @@ +--TEST-- +PDO PgSQL Bug #69344 (PDO PgSQL Incorrect binding numeric array with gaps) +--SKIPIF-- +<?php +if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded'); +require dirname(__FILE__) . '/config.inc'; +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +PDOTest::skip(); +?> +--FILE-- +<?php + +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +$pdo = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); +$pdo->setAttribute (\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); +$pdo->setAttribute (\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC); + +$test = function () use ($pdo) { + $arr = [ + 0 => "a", + 2 => "b", + ]; + + $stmt = $pdo->prepare("SELECT (?)::text AS a, (?)::text AS b"); + + try { + $stmt->execute($arr); + var_dump($stmt->fetch()); + } catch (\Exception $e) { + echo $e->getMessage()."\n"; + } +}; + +$test(); + +$pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, true); + +$test(); + +?> +--EXPECT-- +SQLSTATE[HY093]: Invalid parameter number: parameter was not defined +SQLSTATE[HY093]: Invalid parameter number: parameter was not defined + diff --git a/ext/pdo_pgsql/tests/bug69362.phpt b/ext/pdo_pgsql/tests/bug69362.phpt new file mode 100644 index 0000000000..33212a8863 --- /dev/null +++ b/ext/pdo_pgsql/tests/bug69362.phpt @@ -0,0 +1,63 @@ +--TEST-- +PDO PgSQL Bug #69362 (PDO-pgsql fails to connect if password contains a leading single quote) +--SKIPIF-- +<?php +if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded'); +require dirname(__FILE__) . '/config.inc'; +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +PDOTest::skip(); + +$dsn = getenv('PDOTEST_DSN'); +if (empty($dsn)) die('skip no dsn found in env'); + +$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); +$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + +$user = 'pdo_test_'.rand(5, 400); +$pass = 'testpass'; + +// Assume that if we can't create or drop a user, this test needs to be skipped +try { + $db->exec("DROP USER IF EXISTS $user"); + $db->exec("CREATE USER $user WITH PASSWORD '$pass'"); +} catch (PDOException $e) { + die("skip You need CREATEUSER permissions to run the test"); +} + +// Peer authentication might prevent the test from properly running +try { + $testConn = new PDO($dsn, $user, $pass); +} catch (PDOException $e) { + echo "skip ".$e->getMessage(); +} + +$db->exec("DROP USER $user"); + +?> +--FILE-- +<?php +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +$pdo = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); +$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); +$rand = rand(5, 400); +$user = "pdo_test_$rand"; +$template = "CREATE USER $user WITH PASSWORD '%s'"; +$dropUser = "DROP USER $user"; +$testQuery = 'SELECT 1 as verification'; + +// Create temp user with leading single quote +$sql = sprintf($template, "''mypassword"); +$pdo->query($sql); +$testConn = new PDO($conf['ENV']['PDOTEST_DSN'], $user, "'mypassword"); +$result = $testConn->query($testQuery)->fetch(); +$check = $result[0]; +var_dump($check); + +// Remove the user +$pdo->query($dropUser); + +?> +--EXPECT-- +int(1) + diff --git a/ext/pdo_pgsql/tests/bug69752.phpt b/ext/pdo_pgsql/tests/bug69752.phpt new file mode 100644 index 0000000000..bb7e5e87e7 --- /dev/null +++ b/ext/pdo_pgsql/tests/bug69752.phpt @@ -0,0 +1,55 @@ +--TEST-- +PDO PgSQL Bug #69752 (memory leak with closeCursor) +--SKIPIF-- +<?php +if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded'); +require dirname(__FILE__) . '/config.inc'; +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +PDOTest::skip(); +?> +--FILE-- +<?php +require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc'; +$pdo = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); + +$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); + +$pdo->beginTransaction(); + +$pdo->exec(" + create table foo ( + id bigserial not null primary key, + field1 text not null, + field2 text not null, + field3 text not null, + field4 int4 not null + ) +"); +$stmt = $pdo->prepare("insert into foo (field1, field2, field3, field4) values (:field1, :field2, :field3, :field4)"); +$max = 1000; +$first_time_usage = null; + +for($i = 0; $i < $max; $i++) { + $data = array( + 'field1' => "field1: $i", + 'field2' => "field2: $i", + 'field3' => "field3: $i", + 'field4' => $i + ); + $stmt->execute($data); + $stmt->closeCursor(); + $usage = intval(floor(memory_get_usage() / 1024)); + + if ($first_time_usage === null) $first_time_usage = $usage; + + /* Use delta instead of direct comparison here */ + if (abs($first_time_usage - $usage) > 3){ + printf("Memory Leak Detected: %d != %d\n", $usage, $first_time_usage); + break; + } +} +$pdo->rollBack(); +echo "done\n" +?> +--EXPECTF-- +done diff --git a/ext/pgsql/tests/pg_insert_002.phpt b/ext/pgsql/tests/pg_insert_002.phpt index 87d87b8475..329f525b27 100644 --- a/ext/pgsql/tests/pg_insert_002.phpt +++ b/ext/pgsql/tests/pg_insert_002.phpt @@ -1,5 +1,5 @@ --TEST-- -PostgreSQL pg_select() - basic test using schema +PostgreSQL pg_insert() - test for CVE-2015-1532 --SKIPIF-- <?php include("skipif.inc"); ?> --FILE-- diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c index d81484521d..30e895d97b 100644 --- a/ext/sockets/conversions.c +++ b/ext/sockets/conversions.c @@ -910,8 +910,8 @@ static void from_zval_write_control(const zval *arr, if (space_left < req_space) { *control_buf = safe_erealloc(*control_buf, 2, req_space, *control_len); *control_len += 2 * req_space; - memset(*control_buf, '\0', *control_len - *offset); - memcpy(&alloc->data, *control_buf, sizeof *control_buf); + memset(*control_buf + *offset, '\0', *control_len - *offset); + memcpy(&alloc->data, control_buf, sizeof *control_buf); } cmsghdr = (struct cmsghdr*)(((char*)*control_buf) + *offset); diff --git a/ext/standard/exec.c b/ext/standard/exec.c index 683878877b..06c068399d 100644 --- a/ext/standard/exec.c +++ b/ext/standard/exec.c @@ -380,6 +380,14 @@ PHPAPI char *php_escape_shell_arg(char *str) } } #ifdef PHP_WIN32 + if (y > 0 && '\\' == cmd[y - 1]) { + int k = 0, n = y - 1; + for (; n >= 0 && '\\' == cmd[n]; n--, k++); + if (k % 2) { + cmd[y++] = '\\'; + } + } + cmd[y++] = '"'; #else cmd[y++] = '\''; diff --git a/ext/standard/info.c b/ext/standard/info.c index 82b6bf8b48..3e3eeeffdc 100644 --- a/ext/standard/info.c +++ b/ext/standard/info.c @@ -394,53 +394,242 @@ char* php_get_windows_name() case PRODUCT_ULTIMATE: sub = "Ultimate Edition"; break; - case PRODUCT_HOME_PREMIUM: - sub = "Home Premium Edition"; - break; case PRODUCT_HOME_BASIC: sub = "Home Basic Edition"; break; + case PRODUCT_HOME_PREMIUM: + sub = "Home Premium Edition"; + break; case PRODUCT_ENTERPRISE: sub = "Enterprise Edition"; break; - case PRODUCT_BUSINESS: - sub = "Business Edition"; + case PRODUCT_HOME_BASIC_N: + sub = "Home Basic N Edition"; break; - case PRODUCT_STARTER: - sub = "Starter Edition"; + case PRODUCT_BUSINESS: + if ((osvi.dwMajorVersion > 6) || (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion > 0)) { + sub = "Professional Edition"; + } else { + sub = "Business Edition"; + } break; - case PRODUCT_CLUSTER_SERVER: - sub = "Cluster Server Edition"; + case PRODUCT_STANDARD_SERVER: + sub = "Standard Edition"; break; case PRODUCT_DATACENTER_SERVER: sub = "Datacenter Edition"; break; - case PRODUCT_DATACENTER_SERVER_CORE: - sub = "Datacenter Edition (core installation)"; + case PRODUCT_SMALLBUSINESS_SERVER: + sub = "Small Business Server"; break; case PRODUCT_ENTERPRISE_SERVER: sub = "Enterprise Edition"; break; + case PRODUCT_STARTER: + if ((osvi.dwMajorVersion > 6) || (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion > 0)) { + sub = "Starter N Edition"; + } else { + sub = "Starter Edition"; + } + break; + case PRODUCT_DATACENTER_SERVER_CORE: + sub = "Datacenter Edition (core installation)"; + break; + case PRODUCT_STANDARD_SERVER_CORE: + sub = "Standard Edition (core installation)"; + break; case PRODUCT_ENTERPRISE_SERVER_CORE: sub = "Enterprise Edition (core installation)"; break; case PRODUCT_ENTERPRISE_SERVER_IA64: sub = "Enterprise Edition for Itanium-based Systems"; break; - case PRODUCT_SMALLBUSINESS_SERVER: - sub = "Small Business Server"; + case PRODUCT_BUSINESS_N: + if ((osvi.dwMajorVersion > 6) || (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion > 0)) { + sub = "Professional N Edition"; + } else { + sub = "Business N Edition"; + } + break; + case PRODUCT_WEB_SERVER: + sub = "Web Server Edition"; + break; + case PRODUCT_CLUSTER_SERVER: + sub = "HPC Edition"; + break; + case PRODUCT_HOME_SERVER: + sub = "Storage Server Essentials Edition"; + break; + case PRODUCT_STORAGE_EXPRESS_SERVER: + sub = "Storage Server Express Edition"; + break; + case PRODUCT_STORAGE_STANDARD_SERVER: + sub = "Storage Server Standard Edition"; + break; + case PRODUCT_STORAGE_WORKGROUP_SERVER: + sub = "Storage Server Workgroup Edition"; + break; + case PRODUCT_STORAGE_ENTERPRISE_SERVER: + sub = "Storage Server Enterprise Edition"; + break; + case PRODUCT_SERVER_FOR_SMALLBUSINESS: + sub = "Essential Server Solutions Edition"; break; case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM: sub = "Small Business Server Premium Edition"; break; - case PRODUCT_STANDARD_SERVER: - sub = "Standard Edition"; + case PRODUCT_HOME_PREMIUM_N: + sub = "Home Premium N Edition"; break; - case PRODUCT_STANDARD_SERVER_CORE: - sub = "Standard Edition (core installation)"; + case PRODUCT_ENTERPRISE_N: + sub = "Enterprise N Edition"; break; - case PRODUCT_WEB_SERVER: - sub = "Web Server Edition"; + case PRODUCT_ULTIMATE_N: + sub = "Ultimate N Edition"; + break; + case PRODUCT_WEB_SERVER_CORE: + sub = "Web Server Edition (core installation)"; + break; + case PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT: + sub = "Essential Business Server Management Server Edition"; + break; + case PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY: + sub = "Essential Business Server Management Security Edition"; + break; + case PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING: + sub = "Essential Business Server Management Messaging Edition"; + break; + case PRODUCT_SERVER_FOUNDATION: + sub = "Foundation Edition"; + break; + case PRODUCT_HOME_PREMIUM_SERVER: + sub = "Home Server 2011 Edition"; + break; + case PRODUCT_SERVER_FOR_SMALLBUSINESS_V: + sub = "Essential Server Solutions Edition (without Hyper-V)"; + break; + case PRODUCT_STANDARD_SERVER_V: + sub = "Standard Edition (without Hyper-V)"; + break; + case PRODUCT_DATACENTER_SERVER_V: + sub = "Datacenter Edition (without Hyper-V)"; + break; + case PRODUCT_ENTERPRISE_SERVER_V: + sub = "Enterprise Edition (without Hyper-V)"; + break; + case PRODUCT_DATACENTER_SERVER_CORE_V: + sub = "Datacenter Edition (core installation, without Hyper-V)"; + break; + case PRODUCT_STANDARD_SERVER_CORE_V: + sub = "Standard Edition (core installation, without Hyper-V)"; + break; + case PRODUCT_ENTERPRISE_SERVER_CORE_V: + sub = "Enterprise Edition (core installation, without Hyper-V)"; + break; + case PRODUCT_HYPERV: + sub = "Hyper-V Server"; + break; + case PRODUCT_STORAGE_EXPRESS_SERVER_CORE: + sub = "Storage Server Express Edition (core installation)"; + break; + case PRODUCT_STORAGE_STANDARD_SERVER_CORE: + sub = "Storage Server Standard Edition (core installation)"; + break; + case PRODUCT_STORAGE_WORKGROUP_SERVER_CORE: + sub = "Storage Server Workgroup Edition (core installation)"; + break; + case PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE: + sub = "Storage Server Enterprise Edition (core installation)"; + break; + case PRODUCT_STARTER_N: + sub = "Starter N Edition"; + break; + case PRODUCT_PROFESSIONAL: + sub = "Professional Edition"; + break; + case PRODUCT_PROFESSIONAL_N: + sub = "Professional N Edition"; + break; + case PRODUCT_SB_SOLUTION_SERVER: + sub = "Small Business Server 2011 Essentials Edition"; + break; + case PRODUCT_SERVER_FOR_SB_SOLUTIONS: + sub = "Server For SB Solutions Edition"; + break; + case PRODUCT_STANDARD_SERVER_SOLUTIONS: + sub = "Solutions Premium Edition"; + break; + case PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE: + sub = "Solutions Premium Edition (core installation)"; + break; + case PRODUCT_SB_SOLUTION_SERVER_EM: + sub = "Server For SB Solutions EM Edition"; + break; + case PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM: + sub = "Server For SB Solutions EM Edition"; + break; + case PRODUCT_SOLUTION_EMBEDDEDSERVER: + sub = "MultiPoint Server Edition"; + break; + case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT: + sub = "Essential Server Solution Management Edition"; + break; + case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL: + sub = "Essential Server Solution Additional Edition"; + break; + case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC: + sub = "Essential Server Solution Management SVC Edition"; + break; + case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC: + sub = "Essential Server Solution Additional SVC Edition"; + break; + case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE: + sub = "Small Business Server Premium Edition (core installation)"; + break; + case PRODUCT_CLUSTER_SERVER_V: + sub = "Hyper Core V Edition"; + break; + case PRODUCT_STARTER_E: + sub = "Hyper Core V Edition"; + break; + case PRODUCT_ENTERPRISE_EVALUATION: + sub = "Enterprise Edition (evaluation installation)"; + break; + case PRODUCT_MULTIPOINT_STANDARD_SERVER: + sub = "MultiPoint Server Standard Edition (full installation)"; + break; + case PRODUCT_MULTIPOINT_PREMIUM_SERVER: + sub = "MultiPoint Server Premium Edition (full installation)"; + break; + case PRODUCT_STANDARD_EVALUATION_SERVER: + sub = "Standard Edition (evaluation installation)"; + break; + case PRODUCT_DATACENTER_EVALUATION_SERVER: + sub = "Datacenter Edition (evaluation installation)"; + break; + case PRODUCT_ENTERPRISE_N_EVALUATION: + sub = "Enterprise N Edition (evaluation installation)"; + break; + case PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER: + sub = "Storage Server Workgroup Edition (evaluation installation)"; + break; + case PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER: + sub = "Storage Server Standard Edition (evaluation installation)"; + break; + case PRODUCT_CORE_N: + sub = "Windows 8 N Edition"; + break; + case PRODUCT_CORE_COUNTRYSPECIFIC: + sub = "Windows 8 China Edition"; + break; + case PRODUCT_CORE_SINGLELANGUAGE: + sub = "Windows 8 Single Language Edition"; + break; + case PRODUCT_CORE: + sub = "Windows 8 Edition"; + break; + case PRODUCT_PROFESSIONAL_WMC: + sub = "Professional with Media Center Edition"; break; } } diff --git a/ext/standard/mail.c b/ext/standard/mail.c index 4a20671af2..09e0a5546b 100644 --- a/ext/standard/mail.c +++ b/ext/standard/mail.c @@ -223,6 +223,43 @@ void php_mail_log_to_file(char *filename, char *message, size_t message_size TSR } +static int php_mail_detect_multiple_crlf(char *hdr) { + /* This function detects multiple/malformed multiple newlines. */ + + if (!hdr) { + return 0; + } + + /* Should not have any newlines at the beginning. */ + /* RFC 2822 2.2. Header Fields */ + if (*hdr < 33 || *hdr > 126 || *hdr == ':') { + return 1; + } + + while(*hdr) { + if (*hdr == '\r') { + if (*(hdr+1) == '\0' || *(hdr+1) == '\r' || (*(hdr+1) == '\n' && (*(hdr+2) == '\0' || *(hdr+2) == '\n' || *(hdr+2) == '\r'))) { + /* Malformed or multiple newlines. */ + return 1; + } else { + hdr += 2; + } + } else if (*hdr == '\n') { + if (*(hdr+1) == '\0' || *(hdr+1) == '\r' || *(hdr+1) == '\n') { + /* Malformed or multiple newlines. */ + return 1; + } else { + hdr += 2; + } + } else { + hdr++; + } + } + + return 0; +} + + /* {{{ php_mail */ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd TSRMLS_DC) @@ -276,6 +313,7 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char efree(tmp); } + if (PG(mail_x_header)) { const char *tmp = zend_get_executed_filename(TSRMLS_C); char *f; @@ -291,6 +329,11 @@ PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char efree(f); } + if (hdr && php_mail_detect_multiple_crlf(hdr)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Multiple or malformed newlines found in additional_header"); + MAIL_RET(0); + } + if (!sendmail_path) { #if (defined PHP_WIN32 || defined NETWARE) /* handle old style win smtp sending */ diff --git a/ext/standard/tests/general_functions/bug69646.phpt b/ext/standard/tests/general_functions/bug69646.phpt new file mode 100644 index 0000000000..b077c67319 --- /dev/null +++ b/ext/standard/tests/general_functions/bug69646.phpt @@ -0,0 +1,47 @@ +--TEST-- +Bug #69646 OS command injection vulnerability in escapeshellarg() +--SKIPIF-- +<?php +if( substr(PHP_OS, 0, 3) != "WIN" ) + die("skip.. Windows only"); +?> +--FILE-- +<?php + +$a = 'a\\'; +$b = 'b -c d\\'; +var_dump( $a, escapeshellarg($a) ); +var_dump( $b, escapeshellarg($b) ); + +$helper_script = <<<SCRIPT +<?php + +print( "--- ARG INFO ---\n" ); +var_dump( \$argv ); + +SCRIPT; + +$script = dirname(__FILE__) . DIRECTORY_SEPARATOR . "arginfo.php"; +file_put_contents($script, $helper_script); + +$cmd = PHP_BINARY . " " . $script . " " . escapeshellarg($a) . " " . escapeshellarg($b); + +system($cmd); + +unlink($script); +?> +--EXPECTF-- +string(2) "a\" +string(5) ""a\\"" +string(7) "b -c d\" +string(10) ""b -c d\\"" +--- ARG INFO --- +array(3) { + [0]=> + string(%d) "%sarginfo.php" + [1]=> + string(2) "a\" + [2]=> + string(7) "b -c d\" +} + diff --git a/ext/standard/tests/mail/mail_basic6.phpt b/ext/standard/tests/mail/mail_basic6.phpt new file mode 100644 index 0000000000..d0d45b78f3 --- /dev/null +++ b/ext/standard/tests/mail/mail_basic6.phpt @@ -0,0 +1,329 @@ +--TEST-- +Test mail() function : basic functionality +--INI-- +sendmail_path=tee mailBasic.out >/dev/null +mail.add_x_header = Off +--SKIPIF-- +<?php +if(substr(PHP_OS, 0, 3) == "WIN") + die("skip Won't run on Windows"); +?> +--FILE-- +<?php +/* Prototype : int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]]) + * Description: Send an email message with invalid addtional_headers + * Source code: ext/standard/mail.c + * Alias to functions: + */ + +echo "*** Testing mail() : basic functionality ***\n"; + + +// Valid header +$to = 'user@example.com'; +$subject = 'Test Subject'; +$message = 'A Message'; +$additional_headers = "HEAD1: a\r\nHEAD2: b\r\n"; +$outFile = "mailBasic.out"; +@unlink($outFile); + +echo "-- Valid Header --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo file_get_contents($outFile); +unlink($outFile); + +// Valid header +$additional_headers = "HEAD1: a\nHEAD2: b\n"; +@unlink($outFile); + +echo "-- Valid Header --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Valid header +// \r is accepted as valid. This may be changed to invalid. +$additional_headers = "HEAD1: a\rHEAD2: b\r"; +@unlink($outFile); + +echo "-- Valid Header --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +//=============================================================================== +// Invalid header +$additional_headers = "\nHEAD1: a\nHEAD2: b\n"; +@unlink($outFile); + +echo "-- Invalid Header - preceeding newline--\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +$additional_headers = "\rHEAD1: a\nHEAD2: b\r"; +@unlink($outFile); + +echo "-- Invalid Header - preceeding newline--\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +$additional_headers = "\r\nHEAD1: a\r\nHEAD2: b\r\n"; +@unlink($outFile); + +echo "-- Invalid Header - preceeding newline--\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +$additional_headers = "\r\n\r\nHEAD1: a\r\nHEAD2: b\r\n"; +@unlink($outFile); + +echo "-- Invalid Header - preceeding newline--\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +$additional_headers = "\n\nHEAD1: a\r\nHEAD2: b\r\n"; +@unlink($outFile); + +echo "-- Invalid Header - preceeding newline--\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +$additional_headers = "\r\rHEAD1: a\r\nHEAD2: b\r\n"; +@unlink($outFile); + +echo "-- Invalid Header - preceeding newline--\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +$additional_headers = "HEAD1: a\r\n\r\nHEAD2: b\r\n"; +@unlink($outFile); + +echo "-- Invalid Header - multiple newlines in the middle --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +$additional_headers = "HEAD1: a\r\n\nHEAD2: b\r\n"; +@unlink($outFile); + +echo "-- Invalid Header - multiple newlines in the middle --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +$additional_headers = "HEAD1: a\n\nHEAD2: b\r\n"; +@unlink($outFile); + +echo "-- Invalid Header - multiple newlines in the middle --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +$additional_headers = "HEAD1: a\r\rHEAD2: b\r\n"; +@unlink($outFile); + +echo "-- Invalid Header - multiple newlines in the middle --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +$additional_headers = "HEAD1: a\n\rHEAD2: b\r\n"; +@unlink($outFile); + +echo "-- Invalid Header - multiple newlines in the middle --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +$additional_headers = "HEAD1: a\n\r\nHEAD2: b\r\n"; +@unlink($outFile); + +echo "-- Invalid Header - multiple newlines in the middle --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +// Invalid, but PHP_FUNCTION(mail) trims newlines +$additional_headers = "HEAD1: a\r\nHEAD2: b\r\n\n"; +@unlink($outFile); + +echo "-- Invalid Header - trailing newlines --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +// Invalid, but PHP_FUNCTION(mail) trims newlines +$additional_headers = "HEAD1: a\r\nHEAD2: b\n\n"; +@unlink($outFile); + +echo "-- Invalid Header - trailing newlines --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +// Invalid, but PHP_FUNCTION(mail) trims newlines +$additional_headers = "HEAD1: a\r\nHEAD2: b\n"; +@unlink($outFile); + +echo "-- Invalid Header - trailing newlines --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +// Invalid header +// Invalid, but PHP_FUNCTION(mail) trims newlines +$additional_headers = "HEAD1: a\r\nHEAD2: b\r"; +@unlink($outFile); + +echo "-- Invalid Header - trailing newlines --\n"; +// Calling mail() with all additional headers +var_dump( mail($to, $subject, $message, $additional_headers) ); +echo @file_get_contents($outFile); +@unlink($outFile); + +?> +===DONE=== +--EXPECTF-- +*** Testing mail() : basic functionality *** +-- Valid Header -- +bool(true) +To: user@example.com +Subject: Test Subject +HEAD1: a +HEAD2: b + +A Message +-- Valid Header -- +bool(true) +To: user@example.com +Subject: Test Subject +HEAD1: a +HEAD2: b + +A Message +-- Valid Header -- +bool(true) +To: user@example.com +Subject: Test Subject +HEAD1: a
HEAD2: b + +A Message +-- Invalid Header - preceeding newline-- + +Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d +bool(false) +-- Invalid Header - preceeding newline-- + +Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d +bool(false) +-- Invalid Header - preceeding newline-- + +Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d +bool(false) +-- Invalid Header - preceeding newline-- + +Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d +bool(false) +-- Invalid Header - preceeding newline-- + +Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d +bool(false) +-- Invalid Header - preceeding newline-- + +Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d +bool(false) +-- Invalid Header - multiple newlines in the middle -- + +Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d +bool(false) +-- Invalid Header - multiple newlines in the middle -- + +Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d +bool(false) +-- Invalid Header - multiple newlines in the middle -- + +Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d +bool(false) +-- Invalid Header - multiple newlines in the middle -- + +Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d +bool(false) +-- Invalid Header - multiple newlines in the middle -- + +Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d +bool(false) +-- Invalid Header - multiple newlines in the middle -- + +Warning: mail(): Multiple or malformed newlines found in additional_header in %s/mail_basic6.php on line %d +bool(false) +-- Invalid Header - trailing newlines -- +bool(true) +To: user@example.com +Subject: Test Subject +HEAD1: a +HEAD2: b + +A Message +-- Invalid Header - trailing newlines -- +bool(true) +To: user@example.com +Subject: Test Subject +HEAD1: a +HEAD2: b + +A Message +-- Invalid Header - trailing newlines -- +bool(true) +To: user@example.com +Subject: Test Subject +HEAD1: a +HEAD2: b + +A Message +-- Invalid Header - trailing newlines -- +bool(true) +To: user@example.com +Subject: Test Subject +HEAD1: a +HEAD2: b + +A Message +===DONE=== diff --git a/ext/standard/winver.h b/ext/standard/winver.h index 7152d60811..ba46c90a7c 100644 --- a/ext/standard/winver.h +++ b/ext/standard/winver.h @@ -18,32 +18,82 @@ #endif #ifndef PRODUCT_ULTIMATE -#define PRODUCT_UNDEFINED 0x00000000 -#define PRODUCT_ULTIMATE 0x00000001 -#define PRODUCT_HOME_BASIC 0x00000002 -#define PRODUCT_HOME_PREMIUM 0x00000003 -#define PRODUCT_ENTERPRISE 0x00000004 -#define PRODUCT_HOME_BASIC_N 0x00000005 -#define PRODUCT_BUSINESS 0x00000006 -#define PRODUCT_STANDARD_SERVER 0x00000007 -#define PRODUCT_DATACENTER_SERVER 0x00000008 -#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009 -#define PRODUCT_ENTERPRISE_SERVER 0x0000000A -#define PRODUCT_STARTER 0x0000000B -#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C -#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D -#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E -#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F -#define PRODUCT_BUSINESS_N 0x00000010 -#define PRODUCT_WEB_SERVER 0x00000011 -#define PRODUCT_CLUSTER_SERVER 0x00000012 -#define PRODUCT_HOME_SERVER 0x00000013 -#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014 -#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015 -#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016 -#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017 -#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018 -#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019 +#define PRODUCT_UNDEFINED 0x00000000 +#define PRODUCT_ULTIMATE 0x00000001 +#define PRODUCT_HOME_BASIC 0x00000002 +#define PRODUCT_HOME_PREMIUM 0x00000003 +#define PRODUCT_ENTERPRISE 0x00000004 +#define PRODUCT_HOME_BASIC_N 0x00000005 +#define PRODUCT_BUSINESS 0x00000006 +#define PRODUCT_STANDARD_SERVER 0x00000007 +#define PRODUCT_DATACENTER_SERVER 0x00000008 +#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009 +#define PRODUCT_ENTERPRISE_SERVER 0x0000000A +#define PRODUCT_STARTER 0x0000000B +#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C +#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D +#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E +#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F +#define PRODUCT_BUSINESS_N 0x00000010 +#define PRODUCT_WEB_SERVER 0x00000011 +#define PRODUCT_CLUSTER_SERVER 0x00000012 +#define PRODUCT_HOME_SERVER 0x00000013 +#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014 +#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015 +#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016 +#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017 +#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018 +#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019 +#define PRODUCT_HOME_PREMIUM_N 0x0000001A +#define PRODUCT_ENTERPRISE_N 0x0000001B +#define PRODUCT_ULTIMATE_N 0x0000001C +#define PRODUCT_WEB_SERVER_CORE 0x0000001D +#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x0000001E +#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x0000001F +#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x00000020 +#define PRODUCT_SERVER_FOUNDATION 0x00000021 +#define PRODUCT_HOME_PREMIUM_SERVER 0x00000022 +#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x00000023 +#define PRODUCT_STANDARD_SERVER_V 0x00000024 +#define PRODUCT_DATACENTER_SERVER_V 0x00000025 +#define PRODUCT_ENTERPRISE_SERVER_V 0x00000026 +#define PRODUCT_DATACENTER_SERVER_CORE_V 0x00000027 +#define PRODUCT_STANDARD_SERVER_CORE_V 0x00000028 +#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x00000029 +#define PRODUCT_HYPERV 0x0000002A +#define PRODUCT_STORAGE_EXPRESS_SERVER_CORE 0x0000002B +#define PRODUCT_STORAGE_STANDARD_SERVER_CORE 0x0000002C +#define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE 0x0000002D +#define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE 0x0000002E +#define PRODUCT_STARTER_N 0x0000002F +#define PRODUCT_PROFESSIONAL 0x00000030 +#define PRODUCT_PROFESSIONAL_N 0x00000031 +#define PRODUCT_SB_SOLUTION_SERVER 0x00000032 +#define PRODUCT_SERVER_FOR_SB_SOLUTIONS 0x00000033 +#define PRODUCT_STANDARD_SERVER_SOLUTIONS 0x00000034 +#define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE 0x00000035 +#define PRODUCT_SB_SOLUTION_SERVER_EM 0x00000036 +#define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM 0x00000037 +#define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x00000038 +#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT 0x0000003B +#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL 0x0000003C +#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC 0x0000003D +#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC 0x0000003E +#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE 0x0000003F +#define PRODUCT_CLUSTER_SERVER_V 0x00000040 +#define PRODUCT_ENTERPRISE_EVALUATION 0x00000048 +#define PRODUCT_MULTIPOINT_STANDARD_SERVER 0x0000004C +#define PRODUCT_MULTIPOINT_PREMIUM_SERVER 0x0000004D +#define PRODUCT_STANDARD_EVALUATION_SERVER 0x0000004F +#define PRODUCT_DATACENTER_EVALUATION_SERVER 0x00000050 +#define PRODUCT_ENTERPRISE_N_EVALUATION 0x00000054 +#define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER 0x0000005F +#define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER 0x00000060 +#define PRODUCT_CORE_N 0x00000062 +#define PRODUCT_CORE_COUNTRYSPECIFIC 0x00000063 +#define PRODUCT_CORE_SINGLELANGUAGE 0x00000064 +#define PRODUCT_CORE 0x00000065 +#define PRODUCT_PROFESSIONAL_WMC 0x00000067 #endif #ifndef VER_NT_WORKSTATION @@ -1,6 +1,15 @@ #! /bin/sh -STD='make -f Makefile.frag RE2C="re2c" RE2C_FLAGS="-i" YACC="bison -y -l" srcdir=Zend builddir=Zend top_srcdir=.' +if [ -z $YACC ]; then + YACC="bison" +fi +YACC="$YACC -y -l" + +if [ -z $RE2C ]; then + RE2C="re2c" +fi + +STD="make -f Makefile.frag RE2C='$RE2C' RE2C_FLAGS='-i' YACC='$YACC' srcdir=Zend builddir=Zend top_srcdir=." (eval "$STD Zend/zend_language_parser.c Zend/zend_language_scanner.c Zend/zend_ini_parser.c Zend/zend_ini_scanner.c") diff --git a/main/php_version.h b/main/php_version.h index 2aa246653a..4ebff7f9ac 100644 --- a/main/php_version.h +++ b/main/php_version.h @@ -2,7 +2,7 @@ /* edit configure.in to change version number */ #define PHP_MAJOR_VERSION 5 #define PHP_MINOR_VERSION 5 -#define PHP_RELEASE_VERSION 26 +#define PHP_RELEASE_VERSION 27 #define PHP_EXTRA_VERSION "-dev" -#define PHP_VERSION "5.5.26-dev" -#define PHP_VERSION_ID 50526 +#define PHP_VERSION "5.5.27-dev" +#define PHP_VERSION_ID 50527 diff --git a/win32/install.txt b/win32/install.txt index b240ad2723..10478f6ffb 100644 --- a/win32/install.txt +++ b/win32/install.txt @@ -6,7 +6,6 @@ Installing PHP 1. General Installation Considerations 2. Installation on Windows systems - Windows Installer Manual Installation Steps ActiveScript Microsoft IIS @@ -107,9 +106,6 @@ Chapter 2. Installation on Windows systems refer to the supported Windows platforms as Win32. Windows 95 is no longer supported as of PHP 4.3.0. - There are two main ways to install PHP for Windows: either manually or - by using the installer. - If you have Microsoft Visual Studio, you can also build PHP from the original source code. @@ -124,129 +120,6 @@ Chapter 2. Installation on Windows systems optimised. __________________________________________________________________ -Windows Installer (PHP 5.2 and later) - - The Windows PHP installer for later versions of PHP is built using MSI - technology using the Wix Toolkit (http://wix.sourceforge.net/). It will - install and configure PHP and all the built-in and PECL extensions, as - well as configure many of the popular web servers such as IIS, Apache, - and Xitami. - - First, install your selected HTTP (web) server on your system, and make - sure that it works. Then proceed with one of the following install - types. - __________________________________________________________________ - -Normal Install - - Run the MSI installer and follow the instructions provided by the - installation wizard. You will be prompted to select the Web Server you - wish to configure first, along with any configuration details needed. - - You will then be prompted to select which features and extensions you - wish to install and enable. By selecting "Will be installed on local - hard drive" in the drop-down menu for each item you can trigger whether - to install the feature or not. By selecting "Entire feature will be - installed on local hard drive", you will be able to install all - sub-features of the included feature ( for example by selecting this - options for the feature "PDO" you will install all PDO Drivers ). - - Warning - - It is not recommended to install all extensions by default, since many - other them require dependencies from outside PHP in order to function - properly. Instead, use the Installation Repair Mode that can be - triggered thru the 'Add/Remove Programs' control panel to enable or - disable extensions and features after installation. - - The installer then sets up PHP to be used in Windows and the php.ini - file, and configures certain web servers to use PHP. The installer will - currently configure IIS (CGI mode only), Apache, Xitami, and Sambar - Server; if you are using a different web server you'll need to - configure it manually. - __________________________________________________________________ - -Silent Install - - The installer also supports a silent mode, which is helpful for Systems - Administrators to deploy PHP easily. To use silent mode: - msiexec.exe /i php-VERSION-win32-install.msi /q - - You can control the install directory by passing it as a parameter to - the install. For example, to install to e:\php: - msiexec.exe /i php-VERSION-win32-install.msi /q INSTALLDIR=e:\php - - You can also use the same syntax to specify the Apache Configuration - Directory (APACHEDIR), the Sambar Server directory (SAMBARDIR), and the - Xitami Server directory (XITAMIDIR). - - You can also specify what features to install. For example, to install - the mysqli extension and the CGI executable: - msiexec.exe /i php-VERSION-win32-install.msi /q ADDLOCAL=cgi,ext_php_mysqli - - The current list of Features to install is as follows: -MainExecutable - php.exe executable -ScriptExecutable - php-win.exe executable -ext_php_* - the various extensions ( for example: ext_php_mysql for MySQL ) -apache13 - Apache 1.3 module -apache20 - Apache 2.0 module -apache22 - Apache 2,2 module -apacheCGI - Apache CGI executable -iis4ISAPI - IIS ISAPI module -iis4CGI - IIS CGI executable -NSAPI - Sun/iPlanet/Netscape server module -Xitami - Xitami CGI executable -Sambar - Sambar Server ISAPI module -CGI - php-cgi.exe executable -PEAR - PEAR installer -Manual - PHP Manual in CHM Format - - For more information on installing MSI installers from the command - line, visit - http://msdn.microsoft.com/library/en-us/msi/setup/command_line_options. - asp - __________________________________________________________________ - -Windows Installer (PHP 5.1.0 and earlier) - - The Windows PHP installer is available from the downloads page at - http://www.php.net/downloads.php. This installs the CGI version of PHP - and for IIS and Xitami, it configures the web server as well. The - installer does not include any extra external PHP extensions - (php_*.dll) as you'll only find those in the Windows Zip Package and - PECL downloads. - - Note: While the Windows installer is an easy way to make PHP work, - it is restricted in many aspects as, for example, the automatic - setup of extensions is not supported. Use of the installer isn't the - preferred method for installing PHP. - - First, install your selected HTTP (web) server on your system, and make - sure that it works. - - Run the executable installer and follow the instructions provided by - the installation wizard. Two types of installation are supported - - standard, which provides sensible defaults for all the settings it can, - and advanced, which asks questions as it goes along. - - The installation wizard gathers enough information to set up the - php.ini file, and configure certain web servers to use PHP. One of the - web servers the PHP installer does not configure for is Apache, so - you'll need to configure it manually. - - Once the installation has completed, the installer will inform you if - you need to restart your system, restart the server, or just start - using PHP. - - Warning - - Be aware, that this setup of PHP is not secure. If you would like to - have a secure PHP setup, you'd better go on the manual way, and set - every option carefully. This automatically working setup gives you an - instantly working PHP installation, but it is not meant to be used on - online servers. - __________________________________________________________________ - Manual Installation Steps This install guide will help you manually install and configure PHP @@ -254,11 +127,10 @@ Manual Installation Steps download the zip binary distribution from the downloads page at http://www.php.net/downloads.php. - Although there are many all-in-one installation kits, and we also - distribute a PHP installer for Microsoft Windows, we recommend you take - the time to setup PHP yourself as this will provide you with a better - understanding of the system, and enables you to install PHP extensions - easily when needed. + Although there are many all-in-one installation kits, we recommend you + take the time to setup PHP yourself as this will provide you with a + better understanding of the system, and enables you to install PHP + extensions easily when needed. Upgrading from a previous PHP version: Previous editions of the manual suggest moving various ini and DLL files into your SYSTEM @@ -533,10 +405,10 @@ General considerations for all installations of PHP with IIS extensions_dir value is "c:\php\ext" and an example IIS doc_root value is "c:\Inetpub\wwwroot". * PHP extension DLL files, such as php_mysql.dll and php_curl.dll, - are found in the zip package of the PHP download (not the PHP - installer). In PHP 5, many extensions are part of PECL and can be - downloaded in the "Collection of PECL modules" package. Files such - as php_zip.dll and php_ssh2.dll. Download PHP files here. + are found in the zip package of the PHP download. In PHP 5, many + extensions are part of PECL and can be downloaded in the + "Collection of PECL modules" package. Files such as php_zip.dll and + php_ssh2.dll. Download PHP files here. * When defining the executable, the 'check that file exists' box may also be checked. For a small performance penalty, the IIS will check that the script file exists and sort out authentication |