From 5aa5d282eac56a21e74611c1cdbaa97bb5db2dca Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Tue, 8 Feb 2022 02:05:36 +0300 Subject: chore(3p/abseil_cpp): unvendor abseil_cpp we weren't actually using these sources anymore, okay? Change-Id: If701571d9716de308d3512e1eb22c35db0877a66 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5248 Tested-by: BuildkiteCI Reviewed-by: grfn Autosubmit: tazjin --- third_party/abseil_cpp/absl/time/BUILD.bazel | 125 -- third_party/abseil_cpp/absl/time/CMakeLists.txt | 128 -- third_party/abseil_cpp/absl/time/civil_time.cc | 175 -- third_party/abseil_cpp/absl/time/civil_time.h | 538 ------ .../abseil_cpp/absl/time/civil_time_benchmark.cc | 127 -- .../abseil_cpp/absl/time/civil_time_test.cc | 1243 -------------- third_party/abseil_cpp/absl/time/clock.cc | 567 ------ third_party/abseil_cpp/absl/time/clock.h | 74 - .../abseil_cpp/absl/time/clock_benchmark.cc | 74 - third_party/abseil_cpp/absl/time/clock_test.cc | 118 -- third_party/abseil_cpp/absl/time/duration.cc | 954 ----------- .../abseil_cpp/absl/time/duration_benchmark.cc | 428 ----- third_party/abseil_cpp/absl/time/duration_test.cc | 1808 -------------------- third_party/abseil_cpp/absl/time/format.cc | 160 -- .../abseil_cpp/absl/time/format_benchmark.cc | 64 - third_party/abseil_cpp/absl/time/format_test.cc | 441 ----- .../abseil_cpp/absl/time/internal/cctz/BUILD.bazel | 171 -- .../time/internal/cctz/include/cctz/civil_time.h | 332 ---- .../internal/cctz/include/cctz/civil_time_detail.h | 628 ------- .../time/internal/cctz/include/cctz/time_zone.h | 386 ----- .../internal/cctz/include/cctz/zone_info_source.h | 102 -- .../absl/time/internal/cctz/src/cctz_benchmark.cc | 1030 ----------- .../time/internal/cctz/src/civil_time_detail.cc | 94 - .../absl/time/internal/cctz/src/civil_time_test.cc | 1066 ------------ .../absl/time/internal/cctz/src/time_zone_fixed.cc | 140 -- .../absl/time/internal/cctz/src/time_zone_fixed.h | 52 - .../time/internal/cctz/src/time_zone_format.cc | 1029 ----------- .../internal/cctz/src/time_zone_format_test.cc | 1603 ----------------- .../absl/time/internal/cctz/src/time_zone_if.cc | 45 - .../absl/time/internal/cctz/src/time_zone_if.h | 76 - .../absl/time/internal/cctz/src/time_zone_impl.cc | 113 -- .../absl/time/internal/cctz/src/time_zone_impl.h | 93 - .../absl/time/internal/cctz/src/time_zone_info.cc | 965 ----------- .../absl/time/internal/cctz/src/time_zone_info.h | 137 -- .../absl/time/internal/cctz/src/time_zone_libc.cc | 315 ---- .../absl/time/internal/cctz/src/time_zone_libc.h | 55 - .../time/internal/cctz/src/time_zone_lookup.cc | 187 -- .../internal/cctz/src/time_zone_lookup_test.cc | 1442 ---------------- .../absl/time/internal/cctz/src/time_zone_posix.cc | 159 -- .../absl/time/internal/cctz/src/time_zone_posix.h | 132 -- .../absl/time/internal/cctz/src/tzfile.h | 122 -- .../time/internal/cctz/src/zone_info_source.cc | 116 -- .../time/internal/cctz/testdata/README.zoneinfo | 37 - .../absl/time/internal/cctz/testdata/version | 1 - .../internal/cctz/testdata/zoneinfo/Africa/Abidjan | Bin 130 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Accra | Bin 556 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Addis_Ababa | Bin 182 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Algiers | Bin 470 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Asmara | Bin 182 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Asmera | Bin 182 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Bamako | Bin 130 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Bangui | Bin 131 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Banjul | Bin 130 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Bissau | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Blantyre | Bin 131 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Brazzaville | Bin 131 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Bujumbura | Bin 131 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Cairo | Bin 1276 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Casablanca | Bin 1919 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Ceuta | Bin 562 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Conakry | Bin 130 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Dakar | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Dar_es_Salaam | Bin 182 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Djibouti | Bin 182 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Douala | Bin 131 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/El_Aaiun | Bin 1830 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Freetown | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Gaborone | Bin 131 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Harare | Bin 131 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Johannesburg | Bin 190 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Juba | Bin 449 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Kampala | Bin 182 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Khartoum | Bin 458 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Kigali | Bin 131 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Kinshasa | Bin 131 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Lagos | Bin 131 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Libreville | Bin 131 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Lome | Bin 130 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Luanda | Bin 131 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Lubumbashi | Bin 131 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Lusaka | Bin 131 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Malabo | Bin 131 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Maputo | Bin 131 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Maseru | Bin 190 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Mbabane | Bin 190 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Mogadishu | Bin 182 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Monrovia | Bin 164 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Nairobi | Bin 182 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Ndjamena | Bin 160 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Niamey | Bin 131 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Nouakchott | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Ouagadougou | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Porto-Novo | Bin 131 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Sao_Tome | Bin 173 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Timbuktu | Bin 130 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Tripoli | Bin 431 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Africa/Tunis | Bin 449 -> 0 bytes .../cctz/testdata/zoneinfo/Africa/Windhoek | Bin 638 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Adak | Bin 969 -> 0 bytes .../cctz/testdata/zoneinfo/America/Anchorage | Bin 977 -> 0 bytes .../cctz/testdata/zoneinfo/America/Anguilla | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/Antigua | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/Araguaina | Bin 592 -> 0 bytes .../zoneinfo/America/Argentina/Buenos_Aires | Bin 708 -> 0 bytes .../testdata/zoneinfo/America/Argentina/Catamarca | Bin 708 -> 0 bytes .../zoneinfo/America/Argentina/ComodRivadavia | Bin 708 -> 0 bytes .../testdata/zoneinfo/America/Argentina/Cordoba | Bin 708 -> 0 bytes .../cctz/testdata/zoneinfo/America/Argentina/Jujuy | Bin 690 -> 0 bytes .../testdata/zoneinfo/America/Argentina/La_Rioja | Bin 717 -> 0 bytes .../testdata/zoneinfo/America/Argentina/Mendoza | Bin 708 -> 0 bytes .../zoneinfo/America/Argentina/Rio_Gallegos | Bin 708 -> 0 bytes .../cctz/testdata/zoneinfo/America/Argentina/Salta | Bin 690 -> 0 bytes .../testdata/zoneinfo/America/Argentina/San_Juan | Bin 717 -> 0 bytes .../testdata/zoneinfo/America/Argentina/San_Luis | Bin 717 -> 0 bytes .../testdata/zoneinfo/America/Argentina/Tucuman | Bin 726 -> 0 bytes .../testdata/zoneinfo/America/Argentina/Ushuaia | Bin 708 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Aruba | Bin 151 -> 0 bytes .../cctz/testdata/zoneinfo/America/Asuncion | Bin 884 -> 0 bytes .../cctz/testdata/zoneinfo/America/Atikokan | Bin 224 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Atka | Bin 969 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Bahia | Bin 682 -> 0 bytes .../cctz/testdata/zoneinfo/America/Bahia_Banderas | Bin 530 -> 0 bytes .../cctz/testdata/zoneinfo/America/Barbados | Bin 231 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Belem | Bin 394 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Belize | Bin 638 -> 0 bytes .../cctz/testdata/zoneinfo/America/Blanc-Sablon | Bin 205 -> 0 bytes .../cctz/testdata/zoneinfo/America/Boa_Vista | Bin 430 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Bogota | Bin 179 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Boise | Bin 999 -> 0 bytes .../cctz/testdata/zoneinfo/America/Buenos_Aires | Bin 708 -> 0 bytes .../cctz/testdata/zoneinfo/America/Cambridge_Bay | Bin 768 -> 0 bytes .../cctz/testdata/zoneinfo/America/Campo_Grande | Bin 952 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Cancun | Bin 529 -> 0 bytes .../cctz/testdata/zoneinfo/America/Caracas | Bin 190 -> 0 bytes .../cctz/testdata/zoneinfo/America/Catamarca | Bin 708 -> 0 bytes .../cctz/testdata/zoneinfo/America/Cayenne | Bin 151 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Cayman | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/America/Chicago | Bin 1754 -> 0 bytes .../cctz/testdata/zoneinfo/America/Chihuahua | Bin 340 -> 0 bytes .../cctz/testdata/zoneinfo/America/Coral_Harbour | Bin 224 -> 0 bytes .../cctz/testdata/zoneinfo/America/Cordoba | Bin 708 -> 0 bytes .../cctz/testdata/zoneinfo/America/Costa_Rica | Bin 232 -> 0 bytes .../cctz/testdata/zoneinfo/America/Creston | Bin 158 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Cuiaba | Bin 934 -> 0 bytes .../cctz/testdata/zoneinfo/America/Curacao | Bin 151 -> 0 bytes .../cctz/testdata/zoneinfo/America/Danmarkshavn | Bin 447 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Dawson | Bin 1029 -> 0 bytes .../cctz/testdata/zoneinfo/America/Dawson_Creek | Bin 683 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Denver | Bin 1042 -> 0 bytes .../cctz/testdata/zoneinfo/America/Detroit | Bin 899 -> 0 bytes .../cctz/testdata/zoneinfo/America/Dominica | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/Edmonton | Bin 970 -> 0 bytes .../cctz/testdata/zoneinfo/America/Eirunepe | Bin 436 -> 0 bytes .../cctz/testdata/zoneinfo/America/El_Salvador | Bin 176 -> 0 bytes .../cctz/testdata/zoneinfo/America/Ensenada | Bin 1025 -> 0 bytes .../cctz/testdata/zoneinfo/America/Fort_Nelson | Bin 1448 -> 0 bytes .../cctz/testdata/zoneinfo/America/Fort_Wayne | Bin 531 -> 0 bytes .../cctz/testdata/zoneinfo/America/Fortaleza | Bin 484 -> 0 bytes .../cctz/testdata/zoneinfo/America/Glace_Bay | Bin 880 -> 0 bytes .../cctz/testdata/zoneinfo/America/Godthab | Bin 465 -> 0 bytes .../cctz/testdata/zoneinfo/America/Goose_Bay | Bin 1580 -> 0 bytes .../cctz/testdata/zoneinfo/America/Grand_Turk | Bin 862 -> 0 bytes .../cctz/testdata/zoneinfo/America/Grenada | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/Guadeloupe | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/Guatemala | Bin 212 -> 0 bytes .../cctz/testdata/zoneinfo/America/Guayaquil | Bin 179 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Guyana | Bin 172 -> 0 bytes .../cctz/testdata/zoneinfo/America/Halifax | Bin 1672 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Havana | Bin 1117 -> 0 bytes .../cctz/testdata/zoneinfo/America/Hermosillo | Bin 286 -> 0 bytes .../testdata/zoneinfo/America/Indiana/Indianapolis | Bin 531 -> 0 bytes .../cctz/testdata/zoneinfo/America/Indiana/Knox | Bin 1016 -> 0 bytes .../cctz/testdata/zoneinfo/America/Indiana/Marengo | Bin 567 -> 0 bytes .../testdata/zoneinfo/America/Indiana/Petersburg | Bin 683 -> 0 bytes .../testdata/zoneinfo/America/Indiana/Tell_City | Bin 522 -> 0 bytes .../cctz/testdata/zoneinfo/America/Indiana/Vevay | Bin 369 -> 0 bytes .../testdata/zoneinfo/America/Indiana/Vincennes | Bin 558 -> 0 bytes .../cctz/testdata/zoneinfo/America/Indiana/Winamac | Bin 612 -> 0 bytes .../cctz/testdata/zoneinfo/America/Indianapolis | Bin 531 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Inuvik | Bin 701 -> 0 bytes .../cctz/testdata/zoneinfo/America/Iqaluit | Bin 740 -> 0 bytes .../cctz/testdata/zoneinfo/America/Jamaica | Bin 339 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Jujuy | Bin 690 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Juneau | Bin 966 -> 0 bytes .../testdata/zoneinfo/America/Kentucky/Louisville | Bin 1242 -> 0 bytes .../testdata/zoneinfo/America/Kentucky/Monticello | Bin 972 -> 0 bytes .../cctz/testdata/zoneinfo/America/Knox_IN | Bin 1016 -> 0 bytes .../cctz/testdata/zoneinfo/America/Kralendijk | Bin 151 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/La_Paz | Bin 170 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Lima | Bin 283 -> 0 bytes .../cctz/testdata/zoneinfo/America/Los_Angeles | Bin 1294 -> 0 bytes .../cctz/testdata/zoneinfo/America/Louisville | Bin 1242 -> 0 bytes .../cctz/testdata/zoneinfo/America/Lower_Princes | Bin 151 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Maceio | Bin 502 -> 0 bytes .../cctz/testdata/zoneinfo/America/Managua | Bin 295 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Manaus | Bin 412 -> 0 bytes .../cctz/testdata/zoneinfo/America/Marigot | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/Martinique | Bin 178 -> 0 bytes .../cctz/testdata/zoneinfo/America/Matamoros | Bin 437 -> 0 bytes .../cctz/testdata/zoneinfo/America/Mazatlan | Bin 367 -> 0 bytes .../cctz/testdata/zoneinfo/America/Mendoza | Bin 708 -> 0 bytes .../cctz/testdata/zoneinfo/America/Menominee | Bin 917 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Merida | Bin 303 -> 0 bytes .../cctz/testdata/zoneinfo/America/Metlakatla | Bin 595 -> 0 bytes .../cctz/testdata/zoneinfo/America/Mexico_City | Bin 412 -> 0 bytes .../cctz/testdata/zoneinfo/America/Miquelon | Bin 550 -> 0 bytes .../cctz/testdata/zoneinfo/America/Moncton | Bin 1493 -> 0 bytes .../cctz/testdata/zoneinfo/America/Monterrey | Bin 293 -> 0 bytes .../cctz/testdata/zoneinfo/America/Montevideo | Bin 969 -> 0 bytes .../cctz/testdata/zoneinfo/America/Montreal | Bin 1717 -> 0 bytes .../cctz/testdata/zoneinfo/America/Montserrat | Bin 130 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Nassau | Bin 941 -> 0 bytes .../cctz/testdata/zoneinfo/America/New_York | Bin 1744 -> 0 bytes .../cctz/testdata/zoneinfo/America/Nipigon | Bin 835 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Nome | Bin 975 -> 0 bytes .../cctz/testdata/zoneinfo/America/Noronha | Bin 484 -> 0 bytes .../testdata/zoneinfo/America/North_Dakota/Beulah | Bin 1043 -> 0 bytes .../testdata/zoneinfo/America/North_Dakota/Center | Bin 990 -> 0 bytes .../zoneinfo/America/North_Dakota/New_Salem | Bin 990 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Nuuk | Bin 465 -> 0 bytes .../cctz/testdata/zoneinfo/America/Ojinaga | Bin 484 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Panama | Bin 149 -> 0 bytes .../cctz/testdata/zoneinfo/America/Pangnirtung | Bin 769 -> 0 bytes .../cctz/testdata/zoneinfo/America/Paramaribo | Bin 187 -> 0 bytes .../cctz/testdata/zoneinfo/America/Phoenix | Bin 240 -> 0 bytes .../cctz/testdata/zoneinfo/America/Port-au-Prince | Bin 565 -> 0 bytes .../cctz/testdata/zoneinfo/America/Port_of_Spain | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/Porto_Acre | Bin 418 -> 0 bytes .../cctz/testdata/zoneinfo/America/Porto_Velho | Bin 394 -> 0 bytes .../cctz/testdata/zoneinfo/America/Puerto_Rico | Bin 177 -> 0 bytes .../cctz/testdata/zoneinfo/America/Punta_Arenas | Bin 1209 -> 0 bytes .../cctz/testdata/zoneinfo/America/Rainy_River | Bin 835 -> 0 bytes .../cctz/testdata/zoneinfo/America/Rankin_Inlet | Bin 692 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Recife | Bin 484 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Regina | Bin 638 -> 0 bytes .../cctz/testdata/zoneinfo/America/Resolute | Bin 692 -> 0 bytes .../cctz/testdata/zoneinfo/America/Rio_Branco | Bin 418 -> 0 bytes .../cctz/testdata/zoneinfo/America/Rosario | Bin 708 -> 0 bytes .../cctz/testdata/zoneinfo/America/Santa_Isabel | Bin 1025 -> 0 bytes .../cctz/testdata/zoneinfo/America/Santarem | Bin 409 -> 0 bytes .../cctz/testdata/zoneinfo/America/Santiago | Bin 1282 -> 0 bytes .../cctz/testdata/zoneinfo/America/Santo_Domingo | Bin 317 -> 0 bytes .../cctz/testdata/zoneinfo/America/Sao_Paulo | Bin 952 -> 0 bytes .../cctz/testdata/zoneinfo/America/Scoresbysund | Bin 479 -> 0 bytes .../cctz/testdata/zoneinfo/America/Shiprock | Bin 1042 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Sitka | Bin 956 -> 0 bytes .../cctz/testdata/zoneinfo/America/St_Barthelemy | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/St_Johns | Bin 1878 -> 0 bytes .../cctz/testdata/zoneinfo/America/St_Kitts | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/St_Lucia | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/St_Thomas | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/St_Vincent | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/Swift_Current | Bin 368 -> 0 bytes .../cctz/testdata/zoneinfo/America/Tegucigalpa | Bin 194 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Thule | Bin 455 -> 0 bytes .../cctz/testdata/zoneinfo/America/Thunder_Bay | Bin 881 -> 0 bytes .../cctz/testdata/zoneinfo/America/Tijuana | Bin 1025 -> 0 bytes .../cctz/testdata/zoneinfo/America/Toronto | Bin 1717 -> 0 bytes .../cctz/testdata/zoneinfo/America/Tortola | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/Vancouver | Bin 1330 -> 0 bytes .../internal/cctz/testdata/zoneinfo/America/Virgin | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/America/Whitehorse | Bin 1029 -> 0 bytes .../cctz/testdata/zoneinfo/America/Winnipeg | Bin 1294 -> 0 bytes .../cctz/testdata/zoneinfo/America/Yakutat | Bin 946 -> 0 bytes .../cctz/testdata/zoneinfo/America/Yellowknife | Bin 729 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Casey | Bin 243 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Davis | Bin 197 -> 0 bytes .../testdata/zoneinfo/Antarctica/DumontDUrville | Bin 152 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Macquarie | Bin 976 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Mawson | Bin 152 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/McMurdo | Bin 1043 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Palmer | Bin 887 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Rothera | Bin 132 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/South_Pole | Bin 1043 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Syowa | Bin 133 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Troll | Bin 177 -> 0 bytes .../cctz/testdata/zoneinfo/Antarctica/Vostok | Bin 133 -> 0 bytes .../cctz/testdata/zoneinfo/Arctic/Longyearbyen | Bin 676 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Aden | Bin 133 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Almaty | Bin 609 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Amman | Bin 787 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Anadyr | Bin 743 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Aqtau | Bin 606 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Aqtobe | Bin 615 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Ashgabat | Bin 375 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Ashkhabad | Bin 375 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Atyrau | Bin 616 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Baghdad | Bin 630 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Bahrain | Bin 152 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Baku | Bin 744 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Bangkok | Bin 152 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Barnaul | Bin 753 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Beirut | Bin 732 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Bishkek | Bin 618 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Brunei | Bin 154 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Calcutta | Bin 220 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Chita | Bin 750 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Choibalsan | Bin 619 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Chongqing | Bin 393 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Chungking | Bin 393 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Colombo | Bin 247 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dacca | Bin 231 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Damascus | Bin 1047 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dhaka | Bin 231 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Dili | Bin 170 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dubai | Bin 133 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dushanbe | Bin 366 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Famagusta | Bin 940 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Gaza | Bin 1195 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Harbin | Bin 393 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Hebron | Bin 1213 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh | Bin 236 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Hong_Kong | Bin 775 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Hovd | Bin 594 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Irkutsk | Bin 760 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Istanbul | Bin 1200 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Jakarta | Bin 248 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Jayapura | Bin 171 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Jerusalem | Bin 1056 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kabul | Bin 159 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kamchatka | Bin 727 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Karachi | Bin 266 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kashgar | Bin 133 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kathmandu | Bin 161 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Katmandu | Bin 161 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Khandyga | Bin 775 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kolkata | Bin 220 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Krasnoyarsk | Bin 741 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Kuala_Lumpur | Bin 256 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kuching | Bin 320 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Kuwait | Bin 133 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Macao | Bin 791 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Macau | Bin 791 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Magadan | Bin 751 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Makassar | Bin 190 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Manila | Bin 238 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Muscat | Bin 133 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Nicosia | Bin 597 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Novokuznetsk | Bin 726 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Novosibirsk | Bin 753 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Omsk | Bin 741 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Asia/Oral | Bin 625 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Phnom_Penh | Bin 152 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Pontianak | Bin 247 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Pyongyang | Bin 183 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Qatar | Bin 152 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Qostanay | Bin 615 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Qyzylorda | Bin 624 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Rangoon | Bin 187 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Riyadh | Bin 133 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Saigon | Bin 236 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Sakhalin | Bin 755 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Samarkand | Bin 366 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Seoul | Bin 415 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Shanghai | Bin 393 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Singapore | Bin 256 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Srednekolymsk | Bin 742 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Taipei | Bin 511 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tashkent | Bin 366 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tbilisi | Bin 629 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tehran | Bin 2004 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv | Bin 1056 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Thimbu | Bin 154 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Thimphu | Bin 154 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tokyo | Bin 213 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Tomsk | Bin 753 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Ujung_Pandang | Bin 190 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Ulaanbaatar | Bin 594 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Ulan_Bator | Bin 594 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Urumqi | Bin 133 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Ust-Nera | Bin 771 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Vientiane | Bin 152 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Vladivostok | Bin 742 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Yakutsk | Bin 741 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Yangon | Bin 187 -> 0 bytes .../cctz/testdata/zoneinfo/Asia/Yekaterinburg | Bin 760 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Asia/Yerevan | Bin 708 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Azores | Bin 1435 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Bermuda | Bin 761 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Canary | Bin 478 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Cape_Verde | Bin 175 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Faeroe | Bin 441 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Atlantic/Faroe | Bin 441 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Jan_Mayen | Bin 676 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Madeira | Bin 1435 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Reykjavik | Bin 753 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/South_Georgia | Bin 132 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/St_Helena | Bin 130 -> 0 bytes .../cctz/testdata/zoneinfo/Atlantic/Stanley | Bin 789 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Australia/ACT | Bin 904 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Adelaide | Bin 921 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Brisbane | Bin 289 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Broken_Hill | Bin 941 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Canberra | Bin 904 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Currie | Bin 895 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Darwin | Bin 234 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Eucla | Bin 314 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Hobart | Bin 967 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Australia/LHI | Bin 692 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Lindeman | Bin 325 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Lord_Howe | Bin 692 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Melbourne | Bin 904 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Australia/NSW | Bin 904 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/North | Bin 234 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Perth | Bin 306 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Queensland | Bin 289 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/South | Bin 921 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Sydney | Bin 904 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Tasmania | Bin 967 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Victoria | Bin 904 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Australia/West | Bin 306 -> 0 bytes .../cctz/testdata/zoneinfo/Australia/Yancowinna | Bin 941 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Brazil/Acre | Bin 418 -> 0 bytes .../cctz/testdata/zoneinfo/Brazil/DeNoronha | Bin 484 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Brazil/East | Bin 952 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Brazil/West | Bin 412 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/CET | Bin 621 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/CST6CDT | Bin 951 -> 0 bytes .../cctz/testdata/zoneinfo/Canada/Atlantic | Bin 1672 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Canada/Central | Bin 1294 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Canada/Eastern | Bin 1717 -> 0 bytes .../cctz/testdata/zoneinfo/Canada/Mountain | Bin 970 -> 0 bytes .../cctz/testdata/zoneinfo/Canada/Newfoundland | Bin 1878 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Canada/Pacific | Bin 1330 -> 0 bytes .../cctz/testdata/zoneinfo/Canada/Saskatchewan | Bin 638 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Canada/Yukon | Bin 1029 -> 0 bytes .../cctz/testdata/zoneinfo/Chile/Continental | Bin 1282 -> 0 bytes .../cctz/testdata/zoneinfo/Chile/EasterIsland | Bin 1102 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/Cuba | Bin 1117 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/EET | Bin 497 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/EST | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/EST5EDT | Bin 951 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Egypt | Bin 1276 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/Eire | Bin 1496 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 | Bin 113 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+10 | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+11 | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT+12 | Bin 114 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 | Bin 113 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 | Bin 113 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 | Bin 113 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 | Bin 113 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 | Bin 113 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 | Bin 113 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 | Bin 113 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 | Bin 113 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 | Bin 114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-10 | Bin 115 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-11 | Bin 115 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-12 | Bin 115 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-13 | Bin 115 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/GMT-14 | Bin 115 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 | Bin 114 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 | Bin 114 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 | Bin 114 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 | Bin 114 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 | Bin 114 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 | Bin 114 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 | Bin 114 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 | Bin 114 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/GMT0 | Bin 111 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/Greenwich | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/UCT | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/UTC | Bin 111 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Etc/Universal | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Etc/Zulu | Bin 111 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Amsterdam | Bin 1071 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Andorra | Bin 389 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Astrakhan | Bin 726 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Athens | Bin 682 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Belfast | Bin 1599 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Belgrade | Bin 478 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Berlin | Bin 705 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Bratislava | Bin 723 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Brussels | Bin 1103 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Bucharest | Bin 661 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Budapest | Bin 766 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Busingen | Bin 497 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Chisinau | Bin 755 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Copenhagen | Bin 623 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Dublin | Bin 1496 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Gibraltar | Bin 1220 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Guernsey | Bin 1599 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Helsinki | Bin 481 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Isle_of_Man | Bin 1599 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Istanbul | Bin 1200 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Jersey | Bin 1599 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Kaliningrad | Bin 904 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Kiev | Bin 549 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Kirov | Bin 717 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Lisbon | Bin 1436 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Ljubljana | Bin 478 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/London | Bin 1599 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Luxembourg | Bin 1087 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Madrid | Bin 897 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Malta | Bin 928 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Mariehamn | Bin 481 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Minsk | Bin 808 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Monaco | Bin 1114 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Moscow | Bin 908 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Nicosia | Bin 597 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Oslo | Bin 676 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Paris | Bin 1105 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Podgorica | Bin 478 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Prague | Bin 723 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Riga | Bin 694 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Rome | Bin 947 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Samara | Bin 732 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/San_Marino | Bin 947 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Sarajevo | Bin 478 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Saratov | Bin 726 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Simferopol | Bin 865 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Skopje | Bin 478 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Sofia | Bin 592 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Stockholm | Bin 497 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Tallinn | Bin 675 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Tirane | Bin 604 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Tiraspol | Bin 755 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Ulyanovsk | Bin 760 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Uzhgorod | Bin 530 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Vaduz | Bin 497 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Vatican | Bin 947 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Vienna | Bin 658 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Vilnius | Bin 676 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Volgograd | Bin 726 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Warsaw | Bin 923 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Zagreb | Bin 478 -> 0 bytes .../cctz/testdata/zoneinfo/Europe/Zaporozhye | Bin 560 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Europe/Zurich | Bin 497 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Factory | Bin 113 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/GB | Bin 1599 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/GB-Eire | Bin 1599 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/GMT | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/GMT+0 | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/GMT-0 | Bin 111 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/GMT0 | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Greenwich | Bin 111 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/HST | Bin 112 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Hongkong | Bin 775 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Iceland | Bin 753 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Antananarivo | Bin 182 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Indian/Chagos | Bin 152 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Christmas | Bin 133 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Indian/Cocos | Bin 140 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Indian/Comoro | Bin 182 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Kerguelen | Bin 133 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Indian/Mahe | Bin 133 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Maldives | Bin 152 -> 0 bytes .../cctz/testdata/zoneinfo/Indian/Mauritius | Bin 179 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Indian/Mayotte | Bin 182 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Indian/Reunion | Bin 133 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/Iran | Bin 2004 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Israel | Bin 1056 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Jamaica | Bin 339 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Japan | Bin 213 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Kwajalein | Bin 219 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Libya | Bin 431 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/MET | Bin 621 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/MST | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/MST7MDT | Bin 951 -> 0 bytes .../cctz/testdata/zoneinfo/Mexico/BajaNorte | Bin 1025 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Mexico/BajaSur | Bin 367 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Mexico/General | Bin 412 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/NZ | Bin 1043 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/NZ-CHAT | Bin 808 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Navajo | Bin 1042 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/PRC | Bin 393 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/PST8PDT | Bin 951 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Apia | Bin 268 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Auckland | Bin 1043 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Bougainville | Bin 201 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Chatham | Bin 808 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Chuuk | Bin 195 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Easter | Bin 1102 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Efate | Bin 324 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Enderbury | Bin 172 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Fakaofo | Bin 153 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Fiji | Bin 419 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Funafuti | Bin 134 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Galapagos | Bin 175 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Gambier | Bin 132 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Guadalcanal | Bin 134 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Guam | Bin 350 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Honolulu | Bin 221 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Johnston | Bin 221 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Kiritimati | Bin 174 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Kosrae | Bin 242 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Kwajalein | Bin 219 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Majuro | Bin 218 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Marquesas | Bin 139 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Midway | Bin 146 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Nauru | Bin 183 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Niue | Bin 175 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Norfolk | Bin 247 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Noumea | Bin 198 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Pago_Pago | Bin 146 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Palau | Bin 148 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Pitcairn | Bin 153 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Pohnpei | Bin 214 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Ponape | Bin 214 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Port_Moresby | Bin 154 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Rarotonga | Bin 391 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Saipan | Bin 350 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Samoa | Bin 146 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Tahiti | Bin 133 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Tarawa | Bin 134 -> 0 bytes .../cctz/testdata/zoneinfo/Pacific/Tongatapu | Bin 237 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Truk | Bin 195 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Wake | Bin 134 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Wallis | Bin 134 -> 0 bytes .../internal/cctz/testdata/zoneinfo/Pacific/Yap | Bin 195 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Poland | Bin 923 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Portugal | Bin 1436 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/ROC | Bin 511 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/ROK | Bin 415 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Singapore | Bin 256 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Turkey | Bin 1200 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/UCT | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/US/Alaska | Bin 977 -> 0 bytes .../internal/cctz/testdata/zoneinfo/US/Aleutian | Bin 969 -> 0 bytes .../internal/cctz/testdata/zoneinfo/US/Arizona | Bin 240 -> 0 bytes .../internal/cctz/testdata/zoneinfo/US/Central | Bin 1754 -> 0 bytes .../cctz/testdata/zoneinfo/US/East-Indiana | Bin 531 -> 0 bytes .../internal/cctz/testdata/zoneinfo/US/Eastern | Bin 1744 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/US/Hawaii | Bin 221 -> 0 bytes .../cctz/testdata/zoneinfo/US/Indiana-Starke | Bin 1016 -> 0 bytes .../internal/cctz/testdata/zoneinfo/US/Michigan | Bin 899 -> 0 bytes .../internal/cctz/testdata/zoneinfo/US/Mountain | Bin 1042 -> 0 bytes .../internal/cctz/testdata/zoneinfo/US/Pacific | Bin 1294 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/US/Samoa | Bin 146 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/UTC | Bin 111 -> 0 bytes .../time/internal/cctz/testdata/zoneinfo/Universal | Bin 111 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/W-SU | Bin 908 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/WET | Bin 494 -> 0 bytes .../absl/time/internal/cctz/testdata/zoneinfo/Zulu | Bin 111 -> 0 bytes .../internal/cctz/testdata/zoneinfo/iso3166.tab | 274 --- .../time/internal/cctz/testdata/zoneinfo/localtime | Bin 148 -> 0 bytes .../internal/cctz/testdata/zoneinfo/zone1970.tab | 384 ----- .../absl/time/internal/get_current_time_chrono.inc | 31 - .../absl/time/internal/get_current_time_posix.inc | 24 - .../abseil_cpp/absl/time/internal/test_util.cc | 131 -- .../abseil_cpp/absl/time/internal/test_util.h | 33 - .../abseil_cpp/absl/time/internal/zoneinfo.inc | 729 -------- third_party/abseil_cpp/absl/time/time.cc | 500 ------ third_party/abseil_cpp/absl/time/time.h | 1581 ----------------- third_party/abseil_cpp/absl/time/time_benchmark.cc | 316 ---- third_party/abseil_cpp/absl/time/time_test.cc | 1280 -------------- third_party/abseil_cpp/absl/time/time_zone_test.cc | 97 -- 651 files changed, 23032 deletions(-) delete mode 100644 third_party/abseil_cpp/absl/time/BUILD.bazel delete mode 100644 third_party/abseil_cpp/absl/time/CMakeLists.txt delete mode 100644 third_party/abseil_cpp/absl/time/civil_time.cc delete mode 100644 third_party/abseil_cpp/absl/time/civil_time.h delete mode 100644 third_party/abseil_cpp/absl/time/civil_time_benchmark.cc delete mode 100644 third_party/abseil_cpp/absl/time/civil_time_test.cc delete mode 100644 third_party/abseil_cpp/absl/time/clock.cc delete mode 100644 third_party/abseil_cpp/absl/time/clock.h delete mode 100644 third_party/abseil_cpp/absl/time/clock_benchmark.cc delete mode 100644 third_party/abseil_cpp/absl/time/clock_test.cc delete mode 100644 third_party/abseil_cpp/absl/time/duration.cc delete mode 100644 third_party/abseil_cpp/absl/time/duration_benchmark.cc delete mode 100644 third_party/abseil_cpp/absl/time/duration_test.cc delete mode 100644 third_party/abseil_cpp/absl/time/format.cc delete mode 100644 third_party/abseil_cpp/absl/time/format_benchmark.cc delete mode 100644 third_party/abseil_cpp/absl/time/format_test.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/BUILD.bazel delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/include/cctz/civil_time.h delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/include/cctz/time_zone.h delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/cctz_benchmark.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/civil_time_detail.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/civil_time_test.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_fixed.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_fixed.h delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_format.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_format_test.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_if.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_if.h delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_impl.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_impl.h delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_info.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_info.h delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_libc.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_libc.h delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_lookup.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_lookup_test.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_posix.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/time_zone_posix.h delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/tzfile.h delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/src/zone_info_source.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/README.zoneinfo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/version delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bissau delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Sao_Tome delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Adak delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Anchorage delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Atikokan delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Atka delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Belem delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Belize delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Blanc-Sablon delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Boise delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cambridge_Bay delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Chicago delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Coral_Harbour delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Creston delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Danmarkshavn delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson_Creek delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Denver delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Detroit delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Edmonton delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Nelson delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Wayne delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Glace_Bay delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Godthab delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Goose_Bay delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Halifax delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Havana delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Indianapolis delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Knox delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Marengo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Petersburg delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Tell_City delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vevay delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vincennes delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Winamac delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indianapolis delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Iqaluit delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Juneau delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Louisville delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Monticello delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Knox_IN delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Lima delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Los_Angeles delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Louisville delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Managua delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Menominee delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Merida delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Moncton delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Montreal delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/New_York delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nipigon delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nome delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Beulah delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Center delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/New_Salem delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nuuk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Panama delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Pangnirtung delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Puerto_Rico delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Punta_Arenas delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rainy_River delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Recife delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Regina delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santiago delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Scoresbysund delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Shiprock delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Sitka delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Johns delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Swift_Current delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Thule delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Thunder_Bay delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Toronto delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Whitehorse delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Yakutat delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Yellowknife delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Casey delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Davis delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Palmer delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Troll delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Famagusta delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Nicosia delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tokyo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Azores delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Canary delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Cape_Verde delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faeroe delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faroe delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Madeira delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/North delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/South delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/West delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/CET delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Atlantic delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Eastern delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Mountain delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Newfoundland delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Saskatchewan delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Yukon delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Chile/Continental delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Chile/EasterIsland delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Cuba delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/EET delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/EST delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Egypt delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Eire delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Andorra delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Athens delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Busingen delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Gibraltar delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Helsinki delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kiev delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kirov delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Lisbon delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/London delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Malta delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Mariehamn delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Monaco delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Moscow delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Nicosia delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Paris delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Samara delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Saratov delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Stockholm delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tirane delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ulyanovsk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vaduz delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zaporozhye delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zurich delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Factory delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/GB delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT0 delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Greenwich delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/HST delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Hongkong delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Iceland delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Iran delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Israel delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Jamaica delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Japan delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Libya delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/MET delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/MST delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/NZ delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Navajo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/PRC delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Easter delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Honolulu delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Johnston delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Poland delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Portugal delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/ROC delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/ROK delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Singapore delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Turkey delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/UCT delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Alaska delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Aleutian delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Central delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/US/East-Indiana delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Eastern delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Hawaii delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Indiana-Starke delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Michigan delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Mountain delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Pacific delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/UTC delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Universal delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/W-SU delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/WET delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/Zulu delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/localtime delete mode 100644 third_party/abseil_cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab delete mode 100644 third_party/abseil_cpp/absl/time/internal/get_current_time_chrono.inc delete mode 100644 third_party/abseil_cpp/absl/time/internal/get_current_time_posix.inc delete mode 100644 third_party/abseil_cpp/absl/time/internal/test_util.cc delete mode 100644 third_party/abseil_cpp/absl/time/internal/test_util.h delete mode 100644 third_party/abseil_cpp/absl/time/internal/zoneinfo.inc delete mode 100644 third_party/abseil_cpp/absl/time/time.cc delete mode 100644 third_party/abseil_cpp/absl/time/time.h delete mode 100644 third_party/abseil_cpp/absl/time/time_benchmark.cc delete mode 100644 third_party/abseil_cpp/absl/time/time_test.cc delete mode 100644 third_party/abseil_cpp/absl/time/time_zone_test.cc (limited to 'third_party/abseil_cpp/absl/time') diff --git a/third_party/abseil_cpp/absl/time/BUILD.bazel b/third_party/abseil_cpp/absl/time/BUILD.bazel deleted file mode 100644 index 991241a0df5b..000000000000 --- a/third_party/abseil_cpp/absl/time/BUILD.bazel +++ /dev/null @@ -1,125 +0,0 @@ -# -# Copyright 2017 The Abseil Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load( - "//absl:copts/configure_copts.bzl", - "ABSL_DEFAULT_COPTS", - "ABSL_DEFAULT_LINKOPTS", - "ABSL_TEST_COPTS", -) - -package(default_visibility = ["//visibility:public"]) - -licenses(["notice"]) - -cc_library( - name = "time", - srcs = [ - "civil_time.cc", - "clock.cc", - "duration.cc", - "format.cc", - "internal/get_current_time_chrono.inc", - "internal/get_current_time_posix.inc", - "time.cc", - ], - hdrs = [ - "civil_time.h", - "clock.h", - "time.h", - ], - copts = ABSL_DEFAULT_COPTS, - linkopts = ABSL_DEFAULT_LINKOPTS, - deps = [ - "//absl/base", - "//absl/base:core_headers", - "//absl/base:raw_logging_internal", - "//absl/numeric:int128", - "//absl/strings", - "//absl/time/internal/cctz:civil_time", - "//absl/time/internal/cctz:time_zone", - ], -) - -cc_library( - name = "test_util", - testonly = 1, - srcs = [ - "internal/test_util.cc", - "internal/zoneinfo.inc", - ], - hdrs = ["internal/test_util.h"], - copts = ABSL_DEFAULT_COPTS, - linkopts = ABSL_DEFAULT_LINKOPTS, - visibility = [ - "//absl/time:__pkg__", - ], - deps = [ - ":time", - "//absl/base:config", - "//absl/base:raw_logging_internal", - "//absl/time/internal/cctz:time_zone", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "time_test", - srcs = [ - "civil_time_test.cc", - "clock_test.cc", - "duration_test.cc", - "format_test.cc", - "time_test.cc", - "time_zone_test.cc", - ], - copts = ABSL_TEST_COPTS, - linkopts = ABSL_DEFAULT_LINKOPTS, - deps = [ - ":test_util", - ":time", - "//absl/base:config", - "//absl/base:core_headers", - "//absl/numeric:int128", - "//absl/time/internal/cctz:time_zone", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "time_benchmark", - srcs = [ - "civil_time_benchmark.cc", - "clock_benchmark.cc", - "duration_benchmark.cc", - "format_benchmark.cc", - "time_benchmark.cc", - ], - copts = ABSL_TEST_COPTS, - linkopts = ABSL_DEFAULT_LINKOPTS, - tags = [ - "benchmark", - ], - deps = [ - ":test_util", - ":time", - "//absl/base", - "//absl/base:core_headers", - "//absl/hash", - "@com_github_google_benchmark//:benchmark_main", - ], -) diff --git a/third_party/abseil_cpp/absl/time/CMakeLists.txt b/third_party/abseil_cpp/absl/time/CMakeLists.txt deleted file mode 100644 index 00bdd499c1f3..000000000000 --- a/third_party/abseil_cpp/absl/time/CMakeLists.txt +++ /dev/null @@ -1,128 +0,0 @@ -# -# Copyright 2017 The Abseil Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -absl_cc_library( - NAME - time - HDRS - "civil_time.h" - "clock.h" - "time.h" - SRCS - "civil_time.cc" - "clock.cc" - "duration.cc" - "format.cc" - "internal/get_current_time_chrono.inc" - "internal/get_current_time_posix.inc" - "time.cc" - COPTS - ${ABSL_DEFAULT_COPTS} - DEPS - absl::base - absl::civil_time - absl::core_headers - absl::int128 - absl::raw_logging_internal - absl::strings - absl::time_zone - PUBLIC -) - -absl_cc_library( - NAME - civil_time - HDRS - "internal/cctz/include/cctz/civil_time.h" - "internal/cctz/include/cctz/civil_time_detail.h" - SRCS - "internal/cctz/src/civil_time_detail.cc" - COPTS - ${ABSL_DEFAULT_COPTS} -) - -if(APPLE) - find_library(CoreFoundation CoreFoundation) -endif() - -absl_cc_library( - NAME - time_zone - HDRS - "internal/cctz/include/cctz/time_zone.h" - "internal/cctz/include/cctz/zone_info_source.h" - SRCS - "internal/cctz/src/time_zone_fixed.cc" - "internal/cctz/src/time_zone_fixed.h" - "internal/cctz/src/time_zone_format.cc" - "internal/cctz/src/time_zone_if.cc" - "internal/cctz/src/time_zone_if.h" - "internal/cctz/src/time_zone_impl.cc" - "internal/cctz/src/time_zone_impl.h" - "internal/cctz/src/time_zone_info.cc" - "internal/cctz/src/time_zone_info.h" - "internal/cctz/src/time_zone_libc.cc" - "internal/cctz/src/time_zone_libc.h" - "internal/cctz/src/time_zone_lookup.cc" - "internal/cctz/src/time_zone_posix.cc" - "internal/cctz/src/time_zone_posix.h" - "internal/cctz/src/tzfile.h" - "internal/cctz/src/zone_info_source.cc" - COPTS - ${ABSL_DEFAULT_COPTS} - DEPS - $<$:${CoreFoundation}> -) - -absl_cc_library( - NAME - time_internal_test_util - HDRS - "internal/test_util.h" - SRCS - "internal/test_util.cc" - "internal/zoneinfo.inc" - COPTS - ${ABSL_DEFAULT_COPTS} - DEPS - absl::time - absl::config - absl::raw_logging_internal - absl::time_zone - gmock - TESTONLY -) - -absl_cc_test( - NAME - time_test - SRCS - "civil_time_test.cc" - "clock_test.cc" - "duration_test.cc" - "format_test.cc" - "time_test.cc" - "time_zone_test.cc" - COPTS - ${ABSL_TEST_COPTS} - DEPS - absl::time_internal_test_util - absl::time - absl::config - absl::core_headers - absl::time_zone - gmock_main -) diff --git a/third_party/abseil_cpp/absl/time/civil_time.cc b/third_party/abseil_cpp/absl/time/civil_time.cc deleted file mode 100644 index bdfe9ce0efb3..000000000000 --- a/third_party/abseil_cpp/absl/time/civil_time.cc +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright 2018 The Abseil Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "absl/time/civil_time.h" - -#include -#include - -#include "absl/strings/str_cat.h" -#include "absl/time/time.h" - -namespace absl { -ABSL_NAMESPACE_BEGIN - -namespace { - -// Since a civil time has a larger year range than absl::Time (64-bit years vs -// 64-bit seconds, respectively) we normalize years to roughly +/- 400 years -// around the year 2400, which will produce an equivalent year in a range that -// absl::Time can handle. -inline civil_year_t NormalizeYear(civil_year_t year) { - return 2400 + year % 400; -} - -// Formats the given CivilSecond according to the given format. -std::string FormatYearAnd(string_view fmt, CivilSecond cs) { - const CivilSecond ncs(NormalizeYear(cs.year()), cs.month(), cs.day(), - cs.hour(), cs.minute(), cs.second()); - const TimeZone utc = UTCTimeZone(); - // TODO(absl-team): Avoid conversion of fmt string. - return StrCat(cs.year(), - FormatTime(std::string(fmt), FromCivil(ncs, utc), utc)); -} - -template -bool ParseYearAnd(string_view fmt, string_view s, CivilT* c) { - // Civil times support a larger year range than absl::Time, so we need to - // parse the year separately, normalize it, then use absl::ParseTime on the - // normalized string. - const std::string ss = std::string(s); // TODO(absl-team): Avoid conversion. - const char* const np = ss.c_str(); - char* endp; - errno = 0; - const civil_year_t y = - std::strtoll(np, &endp, 10); // NOLINT(runtime/deprecated_fn) - if (endp == np || errno == ERANGE) return false; - const std::string norm = StrCat(NormalizeYear(y), endp); - - const TimeZone utc = UTCTimeZone(); - Time t; - if (ParseTime(StrCat("%Y", fmt), norm, utc, &t, nullptr)) { - const auto cs = ToCivilSecond(t, utc); - *c = CivilT(y, cs.month(), cs.day(), cs.hour(), cs.minute(), cs.second()); - return true; - } - - return false; -} - -// Tries to parse the type as a CivilT1, but then assigns the result to the -// argument of type CivilT2. -template -bool ParseAs(string_view s, CivilT2* c) { - CivilT1 t1; - if (ParseCivilTime(s, &t1)) { - *c = CivilT2(t1); - return true; - } - return false; -} - -template -bool ParseLenient(string_view s, CivilT* c) { - // A fastpath for when the given string data parses exactly into the given - // type T (e.g., s="YYYY-MM-DD" and CivilT=CivilDay). - if (ParseCivilTime(s, c)) return true; - // Try parsing as each of the 6 types, trying the most common types first - // (based on csearch results). - if (ParseAs(s, c)) return true; - if (ParseAs(s, c)) return true; - if (ParseAs(s, c)) return true; - if (ParseAs(s, c)) return true; - if (ParseAs(s, c)) return true; - if (ParseAs(s, c)) return true; - return false; -} -} // namespace - -std::string FormatCivilTime(CivilSecond c) { - return FormatYearAnd("-%m-%d%ET%H:%M:%S", c); -} -std::string FormatCivilTime(CivilMinute c) { - return FormatYearAnd("-%m-%d%ET%H:%M", c); -} -std::string FormatCivilTime(CivilHour c) { - return FormatYearAnd("-%m-%d%ET%H", c); -} -std::string FormatCivilTime(CivilDay c) { return FormatYearAnd("-%m-%d", c); } -std::string FormatCivilTime(CivilMonth c) { return FormatYearAnd("-%m", c); } -std::string FormatCivilTime(CivilYear c) { return FormatYearAnd("", c); } - -bool ParseCivilTime(string_view s, CivilSecond* c) { - return ParseYearAnd("-%m-%d%ET%H:%M:%S", s, c); -} -bool ParseCivilTime(string_view s, CivilMinute* c) { - return ParseYearAnd("-%m-%d%ET%H:%M", s, c); -} -bool ParseCivilTime(string_view s, CivilHour* c) { - return ParseYearAnd("-%m-%d%ET%H", s, c); -} -bool ParseCivilTime(string_view s, CivilDay* c) { - return ParseYearAnd("-%m-%d", s, c); -} -bool ParseCivilTime(string_view s, CivilMonth* c) { - return ParseYearAnd("-%m", s, c); -} -bool ParseCivilTime(string_view s, CivilYear* c) { - return ParseYearAnd("", s, c); -} - -bool ParseLenientCivilTime(string_view s, CivilSecond* c) { - return ParseLenient(s, c); -} -bool ParseLenientCivilTime(string_view s, CivilMinute* c) { - return ParseLenient(s, c); -} -bool ParseLenientCivilTime(string_view s, CivilHour* c) { - return ParseLenient(s, c); -} -bool ParseLenientCivilTime(string_view s, CivilDay* c) { - return ParseLenient(s, c); -} -bool ParseLenientCivilTime(string_view s, CivilMonth* c) { - return ParseLenient(s, c); -} -bool ParseLenientCivilTime(string_view s, CivilYear* c) { - return ParseLenient(s, c); -} - -namespace time_internal { - -std::ostream& operator<<(std::ostream& os, CivilYear y) { - return os << FormatCivilTime(y); -} -std::ostream& operator<<(std::ostream& os, CivilMonth m) { - return os << FormatCivilTime(m); -} -std::ostream& operator<<(std::ostream& os, CivilDay d) { - return os << FormatCivilTime(d); -} -std::ostream& operator<<(std::ostream& os, CivilHour h) { - return os << FormatCivilTime(h); -} -std::ostream& operator<<(std::ostream& os, CivilMinute m) { - return os << FormatCivilTime(m); -} -std::ostream& operator<<(std::ostream& os, CivilSecond s) { - return os << FormatCivilTime(s); -} - -} // namespace time_internal - -ABSL_NAMESPACE_END -} // namespace absl diff --git a/third_party/abseil_cpp/absl/time/civil_time.h b/third_party/abseil_cpp/absl/time/civil_time.h deleted file mode 100644 index bb4600443445..000000000000 --- a/third_party/abseil_cpp/absl/time/civil_time.h +++ /dev/null @@ -1,538 +0,0 @@ -// Copyright 2018 The Abseil Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// ----------------------------------------------------------------------------- -// File: civil_time.h -// ----------------------------------------------------------------------------- -// -// This header file defines abstractions for computing with "civil time". -// The term "civil time" refers to the legally recognized human-scale time -// that is represented by the six fields `YYYY-MM-DD hh:mm:ss`. A "date" -// is perhaps the most common example of a civil time (represented here as -// an `absl::CivilDay`). -// -// Modern-day civil time follows the Gregorian Calendar and is a -// time-zone-independent concept: a civil time of "2015-06-01 12:00:00", for -// example, is not tied to a time zone. Put another way, a civil time does not -// map to a unique point in time; a civil time must be mapped to an absolute -// time *through* a time zone. -// -// Because a civil time is what most people think of as "time," it is common to -// map absolute times to civil times to present to users. -// -// Time zones define the relationship between absolute and civil times. Given an -// absolute or civil time and a time zone, you can compute the other time: -// -// Civil Time = F(Absolute Time, Time Zone) -// Absolute Time = G(Civil Time, Time Zone) -// -// The Abseil time library allows you to construct such civil times from -// absolute times; consult time.h for such functionality. -// -// This library provides six classes for constructing civil-time objects, and -// provides several helper functions for rounding, iterating, and performing -// arithmetic on civil-time objects, while avoiding complications like -// daylight-saving time (DST): -// -// * `absl::CivilSecond` -// * `absl::CivilMinute` -// * `absl::CivilHour` -// * `absl::CivilDay` -// * `absl::CivilMonth` -// * `absl::CivilYear` -// -// Example: -// -// // Construct a civil-time object for a specific day -// const absl::CivilDay cd(1969, 07, 20); -// -// // Construct a civil-time object for a specific second -// const absl::CivilSecond cd(2018, 8, 1, 12, 0, 1); -// -// Note: In C++14 and later, this library is usable in a constexpr context. -// -// Example: -// -// // Valid in C++14 -// constexpr absl::CivilDay cd(1969, 07, 20); - -#ifndef ABSL_TIME_CIVIL_TIME_H_ -#define ABSL_TIME_CIVIL_TIME_H_ - -#include - -#include "absl/strings/string_view.h" -#include "absl/time/internal/cctz/include/cctz/civil_time.h" - -namespace absl { -ABSL_NAMESPACE_BEGIN - -namespace time_internal { -struct second_tag : cctz::detail::second_tag {}; -struct minute_tag : second_tag, cctz::detail::minute_tag {}; -struct hour_tag : minute_tag, cctz::detail::hour_tag {}; -struct day_tag : hour_tag, cctz::detail::day_tag {}; -struct month_tag : day_tag, cctz::detail::month_tag {}; -struct year_tag : month_tag, cctz::detail::year_tag {}; -} // namespace time_internal - -// ----------------------------------------------------------------------------- -// CivilSecond, CivilMinute, CivilHour, CivilDay, CivilMonth, CivilYear -// ----------------------------------------------------------------------------- -// -// Each of these civil-time types is a simple value type with the same -// interface for construction and the same six accessors for each of the civil -// time fields (year, month, day, hour, minute, and second, aka YMDHMS). These -// classes differ only in their alignment, which is indicated by the type name -// and specifies the field on which arithmetic operates. -// -// CONSTRUCTION -// -// Each of the civil-time types can be constructed in two ways: by directly -// passing to the constructor up to six integers representing the YMDHMS fields, -// or by copying the YMDHMS fields from a differently aligned civil-time type. -// Omitted fields are assigned their minimum valid value. Hours, minutes, and -// seconds will be set to 0, month and day will be set to 1. Since there is no -// minimum year, the default is 1970. -// -// Examples: -// -// absl::CivilDay default_value; // 1970-01-01 00:00:00 -// -// absl::CivilDay a(2015, 2, 3); // 2015-02-03 00:00:00 -// absl::CivilDay b(2015, 2, 3, 4, 5, 6); // 2015-02-03 00:00:00 -// absl::CivilDay c(2015); // 2015-01-01 00:00:00 -// -// absl::CivilSecond ss(2015, 2, 3, 4, 5, 6); // 2015-02-03 04:05:06 -// absl::CivilMinute mm(ss); // 2015-02-03 04:05:00 -// absl::CivilHour hh(mm); // 2015-02-03 04:00:00 -// absl::CivilDay d(hh); // 2015-02-03 00:00:00 -// absl::CivilMonth m(d); // 2015-02-01 00:00:00 -// absl::CivilYear y(m); // 2015-01-01 00:00:00 -// -// m = absl::CivilMonth(y); // 2015-01-01 00:00:00 -// d = absl::CivilDay(m); // 2015-01-01 00:00:00 -// hh = absl::CivilHour(d); // 2015-01-01 00:00:00 -// mm = absl::CivilMinute(hh); // 2015-01-01 00:00:00 -// ss = absl::CivilSecond(mm); // 2015-01-01 00:00:00 -// -// Each civil-time class is aligned to the civil-time field indicated in the -// class's name after normalization. Alignment is performed by setting all the -// inferior fields to their minimum valid value (as described above). The -// following are examples of how each of the six types would align the fields -// representing November 22, 2015 at 12:34:56 in the afternoon. (Note: the -// string format used here is not important; it's just a shorthand way of -// showing the six YMDHMS fields.) -// -// absl::CivilSecond : 2015-11-22 12:34:56 -// absl::CivilMinute : 2015-11-22 12:34:00 -// absl::CivilHour : 2015-11-22 12:00:00 -// absl::CivilDay : 2015-11-22 00:00:00 -// absl::CivilMonth : 2015-11-01 00:00:00 -// absl::CivilYear : 2015-01-01 00:00:00 -// -// Each civil-time type performs arithmetic on the field to which it is -// aligned. This means that adding 1 to an absl::CivilDay increments the day -// field (normalizing as necessary), and subtracting 7 from an absl::CivilMonth -// operates on the month field (normalizing as necessary). All arithmetic -// produces a valid civil time. Difference requires two similarly aligned -// civil-time objects and returns the scalar answer in units of the objects' -// alignment. For example, the difference between two absl::CivilHour objects -// will give an answer in units of civil hours. -// -// ALIGNMENT CONVERSION -// -// The alignment of a civil-time object cannot change, but the object may be -// used to construct a new object with a different alignment. This is referred -// to as "realigning". When realigning to a type with the same or more -// precision (e.g., absl::CivilDay -> absl::CivilSecond), the conversion may be -// performed implicitly since no information is lost. However, if information -// could be discarded (e.g., CivilSecond -> CivilDay), the conversion must -// be explicit at the call site. -// -// Examples: -// -// void UseDay(absl::CivilDay day); -// -// absl::CivilSecond cs; -// UseDay(cs); // Won't compile because data may be discarded -// UseDay(absl::CivilDay(cs)); // OK: explicit conversion -// -// absl::CivilDay cd; -// UseDay(cd); // OK: no conversion needed -// -// absl::CivilMonth cm; -// UseDay(cm); // OK: implicit conversion to absl::CivilDay -// -// NORMALIZATION -// -// Normalization takes invalid values and adjusts them to produce valid values. -// Within the civil-time library, integer arguments passed to the Civil* -// constructors may be out-of-range, in which case they are normalized by -// carrying overflow into a field of courser granularity to produce valid -// civil-time objects. This normalization enables natural arithmetic on -// constructor arguments without worrying about the field's range. -// -// Examples: -// -// // Out-of-range; normalized to 2016-11-01 -// absl::CivilDay d(2016, 10, 32); -// // Out-of-range, negative: normalized to 2016-10-30T23 -// absl::CivilHour h1(2016, 10, 31, -1); -// // Normalization is cumulative: normalized to 2016-10-30T23 -// absl::CivilHour h2(2016, 10, 32, -25); -// -// Note: If normalization is undesired, you can signal an error by comparing -// the constructor arguments to the normalized values returned by the YMDHMS -// properties. -// -// COMPARISON -// -// Comparison between civil-time objects considers all six YMDHMS fields, -// regardless of the type's alignment. Comparison between differently aligned -// civil-time types is allowed. -// -// Examples: -// -// absl::CivilDay feb_3(2015, 2, 3); // 2015-02-03 00:00:00 -// absl::CivilDay mar_4(2015, 3, 4); // 2015-03-04 00:00:00 -// // feb_3 < mar_4 -// // absl::CivilYear(feb_3) == absl::CivilYear(mar_4) -// -// absl::CivilSecond feb_3_noon(2015, 2, 3, 12, 0, 0); // 2015-02-03 12:00:00 -// // feb_3 < feb_3_noon -// // feb_3 == absl::CivilDay(feb_3_noon) -// -// // Iterates all the days of February 2015. -// for (absl::CivilDay d(2015, 2, 1); d < absl::CivilMonth(2015, 3); ++d) { -// // ... -// } -// -// ARITHMETIC -// -// Civil-time types support natural arithmetic operators such as addition, -// subtraction, and difference. Arithmetic operates on the civil-time field -// indicated in the type's name. Difference operators require arguments with -// the same alignment and return the answer in units of the alignment. -// -// Example: -// -// absl::CivilDay a(2015, 2, 3); -// ++a; // 2015-02-04 00:00:00 -// --a; // 2015-02-03 00:00:00 -// absl::CivilDay b = a + 1; // 2015-02-04 00:00:00 -// absl::CivilDay c = 1 + b; // 2015-02-05 00:00:00 -// int n = c - a; // n = 2 (civil days) -// int m = c - absl::CivilMonth(c); // Won't compile: different types. -// -// ACCESSORS -// -// Each civil-time type has accessors for all six of the civil-time fields: -// year, month, day, hour, minute, and second. -// -// civil_year_t year() -// int month() -// int day() -// int hour() -// int minute() -// int second() -// -// Recall that fields inferior to the type's alignment will be set to their -// minimum valid value. -// -// Example: -// -// absl::CivilDay d(2015, 6, 28); -// // d.year() == 2015 -// // d.month() == 6 -// // d.day() == 28 -// // d.hour() == 0 -// // d.minute() == 0 -// // d.second() == 0 -// -// CASE STUDY: Adding a month to January 31. -// -// One of the classic questions that arises when considering a civil time -// library (or a date library or a date/time library) is this: -// "What is the result of adding a month to January 31?" -// This is an interesting question because it is unclear what is meant by a -// "month", and several different answers are possible, depending on context: -// -// 1. March 3 (or 2 if a leap year), if "add a month" means to add a month to -// the current month, and adjust the date to overflow the extra days into -// March. In this case the result of "February 31" would be normalized as -// within the civil-time library. -// 2. February 28 (or 29 if a leap year), if "add a month" means to add a -// month, and adjust the date while holding the resulting month constant. -// In this case, the result of "February 31" would be truncated to the last -// day in February. -// 3. An error. The caller may get some error, an exception, an invalid date -// object, or perhaps return `false`. This may make sense because there is -// no single unambiguously correct answer to the question. -// -// Practically speaking, any answer that is not what the programmer intended -// is the wrong answer. -// -// The Abseil time library avoids this problem by making it impossible to -// ask ambiguous questions. All civil-time objects are aligned to a particular -// civil-field boundary (such as aligned to a year, month, day, hour, minute, -// or second), and arithmetic operates on the field to which the object is -// aligned. This means that in order to "add a month" the object must first be -// aligned to a month boundary, which is equivalent to the first day of that -// month. -// -// Of course, there are ways to compute an answer the question at hand using -// this Abseil time library, but they require the programmer to be explicit -// about the answer they expect. To illustrate, let's see how to compute all -// three of the above possible answers to the question of "Jan 31 plus 1 -// month": -// -// Example: -// -// const absl::CivilDay d(2015, 1, 31); -// -// // Answer 1: -// // Add 1 to the month field in the constructor, and rely on normalization. -// const auto normalized = absl::CivilDay(d.year(), d.month() + 1, d.day()); -// // normalized == 2015-03-03 (aka Feb 31) -// -// // Answer 2: -// // Add 1 to month field, capping to the end of next month. -// const auto next_month = absl::CivilMonth(d) + 1; -// const auto last_day_of_next_month = absl::CivilDay(next_month + 1) - 1; -// const auto capped = std::min(normalized, last_day_of_next_month); -// // capped == 2015-02-28 -// -// // Answer 3: -// // Signal an error if the normalized answer is not in next month. -// if (absl::CivilMonth(normalized) != next_month) { -// // error, month overflow -// } -// -using CivilSecond = - time_internal::cctz::detail::civil_time; -using CivilMinute = - time_internal::cctz::detail::civil_time; -using CivilHour = - time_internal::cctz::detail::civil_time; -using CivilDay = - time_internal::cctz::detail::civil_time; -using CivilMonth = - time_internal::cctz::detail::civil_time; -using CivilYear = - time_internal::cctz::detail::civil_time; - -// civil_year_t -// -// Type alias of a civil-time year value. This type is guaranteed to (at least) -// support any year value supported by `time_t`. -// -// Example: -// -// absl::CivilSecond cs = ...; -// absl::civil_year_t y = cs.year(); -// cs = absl::CivilSecond(y, 1, 1, 0, 0, 0); // CivilSecond(CivilYear(cs)) -// -using civil_year_t = time_internal::cctz::year_t; - -// civil_diff_t -// -// Type alias of the difference between two civil-time values. -// This type is used to indicate arguments that are not -// normalized (such as parameters to the civil-time constructors), the results -// of civil-time subtraction, or the operand to civil-time addition. -// -// Example: -// -// absl::civil_diff_t n_sec = cs1 - cs2; // cs1 == cs2 + n_sec; -// -using civil_diff_t = time_internal::cctz::diff_t; - -// Weekday::monday, Weekday::tuesday, Weekday::wednesday, Weekday::thursday, -// Weekday::friday, Weekday::saturday, Weekday::sunday -// -// The Weekday enum class represents the civil-time concept of a "weekday" with -// members for all days of the week. -// -// absl::Weekday wd = absl::Weekday::thursday; -// -using Weekday = time_internal::cctz::weekday; - -// GetWeekday() -// -// Returns the absl::Weekday for the given (realigned) civil-time value. -// -// Example: -// -// absl::CivilDay a(2015, 8, 13); -// absl::Weekday wd = absl::GetWeekday(a); // wd == absl::Weekday::thursday -// -inline Weekday GetWeekday(CivilSecond cs) { - return time_internal::cctz::get_weekday(cs); -} - -// NextWeekday() -// PrevWeekday() -// -// Returns the absl::CivilDay that strictly follows or precedes a given -// absl::CivilDay, and that falls on the given absl::Weekday. -// -// Example, given the following month: -// -// August 2015 -// Su Mo Tu We Th Fr Sa -// 1 -// 2 3 4 5 6 7 8 -// 9 10 11 12 13 14 15 -// 16 17 18 19 20 21 22 -// 23 24 25 26 27 28 29 -// 30 31 -// -// absl::CivilDay a(2015, 8, 13); -// // absl::GetWeekday(a) == absl::Weekday::thursday -// absl::CivilDay b = absl::NextWeekday(a, absl::Weekday::thursday); -// // b = 2015-08-20 -// absl::CivilDay c = absl::PrevWeekday(a, absl::Weekday::thursday); -// // c = 2015-08-06 -// -// absl::CivilDay d = ... -// // Gets the following Thursday if d is not already Thursday -// absl::CivilDay thurs1 = absl::NextWeekday(d - 1, absl::Weekday::thursday); -// // Gets the previous Thursday if d is not already Thursday -// absl::CivilDay thurs2 = absl::PrevWeekday(d + 1, absl::Weekday::thursday); -// -inline CivilDay NextWeekday(CivilDay cd, Weekday wd) { - return CivilDay(time_internal::cctz::next_weekday(cd, wd)); -} -inline CivilDay PrevWeekday(CivilDay cd, Weekday wd) { - return CivilDay(time_internal::cctz::prev_weekday(cd, wd)); -} - -// GetYearDay() -// -// Returns the day-of-year for the given (realigned) civil-time value. -// -// Example: -// -// absl::CivilDay a(2015, 1, 1); -// int yd_jan_1 = absl::GetYearDay(a); // yd_jan_1 = 1 -// absl::CivilDay b(2015, 12, 31); -// int yd_dec_31 = absl::GetYearDay(b); // yd_dec_31 = 365 -// -inline int GetYearDay(CivilSecond cs) { - return time_internal::cctz::get_yearday(cs); -} - -// FormatCivilTime() -// -// Formats the given civil-time value into a string value of the following -// format: -// -// Type | Format -// --------------------------------- -// CivilSecond | YYYY-MM-DDTHH:MM:SS -// CivilMinute | YYYY-MM-DDTHH:MM -// CivilHour | YYYY-MM-DDTHH -// CivilDay | YYYY-MM-DD -// CivilMonth | YYYY-MM -// CivilYear | YYYY -// -// Example: -// -// absl::CivilDay d = absl::CivilDay(1969, 7, 20); -// std::string day_string = absl::FormatCivilTime(d); // "1969-07-20" -// -std::string FormatCivilTime(CivilSecond c); -std::string FormatCivilTime(CivilMinute c); -std::string FormatCivilTime(CivilHour c); -std::string FormatCivilTime(CivilDay c); -std::string FormatCivilTime(CivilMonth c); -std::string FormatCivilTime(CivilYear c); - -// absl::ParseCivilTime() -// -// Parses a civil-time value from the specified `absl::string_view` into the -// passed output parameter. Returns `true` upon successful parsing. -// -// The expected form of the input string is as follows: -// -// Type | Format -// --------------------------------- -// CivilSecond | YYYY-MM-DDTHH:MM:SS -// CivilMinute | YYYY-MM-DDTHH:MM -// CivilHour | YYYY-MM-DDTHH -// CivilDay | YYYY-MM-DD -// CivilMonth | YYYY-MM -// CivilYear | YYYY -// -// Example: -// -// absl::CivilDay d; -// bool ok = absl::ParseCivilTime("2018-01-02", &d); // OK -// -// Note that parsing will fail if the string's format does not match the -// expected type exactly. `ParseLenientCivilTime()` below is more lenient. -// -bool ParseCivilTime(absl::string_view s, CivilSecond* c); -bool ParseCivilTime(absl::string_view s, CivilMinute* c); -bool ParseCivilTime(absl::string_view s, CivilHour* c); -bool ParseCivilTime(absl::string_view s, CivilDay* c); -bool ParseCivilTime(absl::string_view s, CivilMonth* c); -bool ParseCivilTime(absl::string_view s, CivilYear* c); - -// ParseLenientCivilTime() -// -// Parses any of the formats accepted by `absl::ParseCivilTime()`, but is more -// lenient if the format of the string does not exactly match the associated -// type. -// -// Example: -// -// absl::CivilDay d; -// bool ok = absl::ParseLenientCivilTime("1969-07-20", &d); // OK -// ok = absl::ParseLenientCivilTime("1969-07-20T10", &d); // OK: T10 floored -// ok = absl::ParseLenientCivilTime("1969-07", &d); // OK: day defaults to 1 -// -bool ParseLenientCivilTime(absl::string_view s, CivilSecond* c); -bool ParseLenientCivilTime(absl::string_view s, CivilMinute* c); -bool ParseLenientCivilTime(absl::string_view s, CivilHour* c); -bool ParseLenientCivilTime(absl::string_view s, CivilDay* c); -bool ParseLenientCivilTime(absl::string_view s, CivilMonth* c); -bool ParseLenientCivilTime(absl::string_view s, CivilYear* c); - -namespace time_internal { // For functions found via ADL on civil-time tags. - -// Streaming Operators -// -// Each civil-time type may be sent to an output stream using operator<<(). -// The result matches the string produced by `FormatCivilTime()`. -// -// Example: -// -// absl::CivilDay d = absl::CivilDay(1969, 7, 20); -// std::cout << "Date is: " << d << "\n"; -// -std::ostream& operator<<(std::ostream& os, CivilYear y); -std::ostream& operator<<(std::ostream& os, CivilMonth m); -std::ostream& operator<<(std::ostream& os, CivilDay d); -std::ostream& operator<<(std::ostream& os, CivilHour h); -std::ostream& operator<<(std::ostream& os, CivilMinute m); -std::ostream& operator<<(std::ostream& os, CivilSecond s); - -} // namespace time_internal - -ABSL_NAMESPACE_END -} // namespace absl - -#endif // ABSL_TIME_CIVIL_TIME_H_ diff --git a/third_party/abseil_cpp/absl/time/civil_time_benchmark.cc b/third_party/abseil_cpp/absl/time/civil_time_benchmark.cc deleted file mode 100644 index f04dbe200ed2..000000000000 --- a/third_party/abseil_cpp/absl/time/civil_time_benchmark.cc +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2018 The Abseil Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "absl/time/civil_time.h" - -#include -#include - -#include "absl/hash/hash.h" -#include "benchmark/benchmark.h" - -namespace { - -// Run on (12 X 3492 MHz CPUs); 2018-11-05T13:44:29.814239103-08:00 -// CPU: Intel Haswell with HyperThreading (6 cores) dL1:32KB dL2:256KB dL3:15MB -// Benchmark Time(ns) CPU(ns) Iterations -// ---------------------------------------------------------------- -// BM_Difference_Days 14.5 14.5 48531105 -// BM_Step_Days 12.6 12.6 54876006 -// BM_Format 587 587 1000000 -// BM_Parse 692 692 1000000 -// BM_RoundTripFormatParse 1309 1309 532075 -// BM_CivilYearAbslHash 0.710 0.710 976400000 -// BM_CivilMonthAbslHash 1.13 1.13 619500000 -// BM_CivilDayAbslHash 1.70 1.70 426000000 -// BM_CivilHourAbslHash 2.45 2.45 287600000 -// BM_CivilMinuteAbslHash 3.21 3.21 226200000 -// BM_CivilSecondAbslHash 4.10 4.10 171800000 - -void BM_Difference_Days(benchmark::State& state) { - const absl::CivilDay c(2014, 8, 22); - const absl::CivilDay epoch(1970, 1, 1); - while (state.KeepRunning()) { - const absl::civil_diff_t n = c - epoch; - benchmark::DoNotOptimize(n); - } -} -BENCHMARK(BM_Difference_Days); - -void BM_Step_Days(benchmark::State& state) { - const absl::CivilDay kStart(2014, 8, 22); - absl::CivilDay c = kStart; - while (state.KeepRunning()) { - benchmark::DoNotOptimize(++c); - } -} -BENCHMARK(BM_Step_Days); - -void BM_Format(benchmark::State& state) { - const absl::CivilSecond c(2014, 1, 2, 3, 4, 5); - while (state.KeepRunning()) { - const std::string s = absl::FormatCivilTime(c); - benchmark::DoNotOptimize(s); - } -} -BENCHMARK(BM_Format); - -void BM_Parse(benchmark::State& state) { - const std::string f = "2014-01-02T03:04:05"; - absl::CivilSecond c; - while (state.KeepRunning()) { - const bool b = absl::ParseCivilTime(f, &c); - benchmark::DoNotOptimize(b); - } -} -BENCHMARK(BM_Parse); - -void BM_RoundTripFormatParse(benchmark::State& state) { - const absl::CivilSecond c(2014, 1, 2, 3, 4, 5); - absl::CivilSecond out; - while (state.KeepRunning()) { - const bool b = absl::ParseCivilTime(absl::FormatCivilTime(c), &out); - benchmark::DoNotOptimize(b); - } -} -BENCHMARK(BM_RoundTripFormatParse); - -template -void BM_CivilTimeAbslHash(benchmark::State& state) { - const int kSize = 100000; - std::vector civil_times(kSize); - std::iota(civil_times.begin(), civil_times.end(), T(2018)); - - absl::Hash absl_hasher; - while (state.KeepRunningBatch(kSize)) { - for (const T civil_time : civil_times) { - benchmark::DoNotOptimize(absl_hasher(civil_time)); - } - } -} -void BM_CivilYearAbslHash(benchmark::State& state) { - BM_CivilTimeAbslHash(state); -} -void BM_CivilMonthAbslHash(benchmark::State& state) { - BM_CivilTimeAbslHash(state); -} -void BM_CivilDayAbslHash(benchmark::State& state) { - BM_CivilTimeAbslHash(state); -} -void BM_CivilHourAbslHash(benchmark::State& state) { - BM_CivilTimeAbslHash(state); -} -void BM_CivilMinuteAbslHash(benchmark::State& state) { - BM_CivilTimeAbslHash(state); -} -void BM_CivilSecondAbslHash(benchmark::State& state) { - BM_CivilTimeAbslHash(state); -} -BENCHMARK(BM_CivilYearAbslHash); -BENCHMARK(BM_CivilMonthAbslHash); -BENCHMARK(BM_CivilDayAbslHash); -BENCHMARK(BM_CivilHourAbslHash); -BENCHMARK(BM_CivilMinuteAbslHash); -BENCHMARK(BM_CivilSecondAbslHash); - -} // namespace diff --git a/third_party/abseil_cpp/absl/time/civil_time_test.cc b/third_party/abseil_cpp/absl/time/civil_time_test.cc deleted file mode 100644 index 0ebd97adbc56..000000000000 --- a/third_party/abseil_cpp/absl/time/civil_time_test.cc +++ /dev/null @@ -1,1243 +0,0 @@ -// Copyright 2018 The Abseil Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "absl/time/civil_time.h" - -#include -#include -#include - -#include "absl/base/macros.h" -#include "gtest/gtest.h" - -namespace { - -TEST(CivilTime, DefaultConstruction) { - absl::CivilSecond ss; - EXPECT_EQ("1970-01-01T00:00:00", absl::FormatCivilTime(ss)); - - absl::CivilMinute mm; - EXPECT_EQ("1970-01-01T00:00", absl::FormatCivilTime(mm)); - - absl::CivilHour hh; - EXPECT_EQ("1970-01-01T00", absl::FormatCivilTime(hh)); - - absl::CivilDay d; - EXPECT_EQ("1970-01-01", absl::FormatCivilTime(d)); - - absl::CivilMonth m; - EXPECT_EQ("1970-01", absl::FormatCivilTime(m)); - - absl::CivilYear y; - EXPECT_EQ("1970", absl::FormatCivilTime(y)); -} - -TEST(CivilTime, StructMember) { - struct S { - absl::CivilDay day; - }; - S s = {}; - EXPECT_EQ(absl::CivilDay{}, s.day); -} - -TEST(CivilTime, FieldsConstruction) { - EXPECT_EQ("2015-01-02T03:04:05", - absl::FormatCivilTime(absl::CivilSecond(2015, 1, 2, 3, 4, 5))); - EXPECT_EQ("2015-01-02T03:04:00", - absl::FormatCivilTime(absl::CivilSecond(2015, 1, 2, 3, 4))); - EXPECT_EQ("2015-01-02T03:00:00", - absl::FormatCivilTime(absl::CivilSecond(2015, 1, 2, 3))); - EXPECT_EQ("2015-01-02T00:00:00", - absl::FormatCivilTime(absl::CivilSecond(2015, 1, 2))); - EXPECT_EQ("2015-01-01T00:00:00", - absl::FormatCivilTime(absl::CivilSecond(2015, 1))); - EXPECT_EQ("2015-01-01T00:00:00", - absl::FormatCivilTime(absl::CivilSecond(2015))); - - EXPECT_EQ("2015-01-02T03:04", - absl::FormatCivilTime(absl::CivilMinute(2015, 1, 2, 3, 4, 5))); - EXPECT_EQ("2015-01-02T03:04", - absl::FormatCivilTime(absl::CivilMinute(2015, 1, 2, 3, 4))); - EXPECT_EQ("2015-01-02T03:00", - absl::FormatCivilTime(absl::CivilMinute(2015, 1, 2, 3))); - EXPECT_EQ("2015-01-02T00:00", - absl::FormatCivilTime(absl::CivilMinute(2015, 1, 2))); - EXPECT_EQ("2015-01-01T00:00", - absl::FormatCivilTime(absl::CivilMinute(2015, 1))); - EXPECT_EQ("2015-01-01T00:00", - absl::FormatCivilTime(absl::CivilMinute(2015))); - - EXPECT_EQ("2015-01-02T03", - absl::FormatCivilTime(absl::CivilHour(2015, 1, 2, 3, 4, 5))); - EXPECT_EQ("2015-01-02T03", - absl::FormatCivilTime(absl::CivilHour(2015, 1, 2, 3, 4))); - EXPECT_EQ("2015-01-02T03", - absl::FormatCivilTime(absl::CivilHour(2015, 1, 2, 3))); - EXPECT_EQ("2015-01-02T00", - absl::FormatCivilTime(absl::CivilHour(2015, 1, 2))); - EXPECT_EQ("2015-01-01T00", - absl::FormatCivilTime(absl::CivilHour(2015, 1))); - EXPECT_EQ("2015-01-01T00", - absl::FormatCivilTime(absl::CivilHour(2015))); - - EXPECT_EQ("2015-01-02", - absl::FormatCivilTime(absl::CivilDay(2015, 1, 2, 3, 4, 5))); - EXPECT_EQ("2015-01-02", - absl::FormatCivilTime(absl::CivilDay(2015, 1, 2, 3, 4))); - EXPECT_EQ("2015-01-02", - absl::FormatCivilTime(absl::CivilDay(2015, 1, 2, 3))); - EXPECT_EQ("2015-01-02", - absl::FormatCivilTime(absl::CivilDay(2015, 1, 2))); - EXPECT_EQ("2015-01-01", - absl::FormatCivilTime(absl::CivilDay(2015, 1))); - EXPECT_EQ("2015-01-01", - absl::FormatCivilTime(absl::CivilDay(2015))); - - EXPECT_EQ("2015-01", - absl::FormatCivilTime(absl::CivilMonth(2015, 1, 2, 3, 4, 5))); - EXPECT_EQ("2015-01", - absl::FormatCivilTime(absl::CivilMonth(2015, 1, 2, 3, 4))); - EXPECT_EQ("2015-01", - absl::FormatCivilTime(absl::CivilMonth(2015, 1, 2, 3))); - EXPECT_EQ("2015-01", - absl::FormatCivilTime(absl::CivilMonth(2015, 1, 2))); - EXPECT_EQ("2015-01", - absl::FormatCivilTime(absl::CivilMonth(2015, 1))); - EXPECT_EQ("2015-01", - absl::FormatCivilTime(absl::CivilMonth(2015))); - - EXPECT_EQ("2015", - absl::FormatCivilTime(absl::CivilYear(2015, 1, 2, 3, 4, 5))); - EXPECT_EQ("2015", - absl::FormatCivilTime(absl::CivilYear(2015, 1, 2, 3, 4))); - EXPECT_EQ("2015", - absl::FormatCivilTime(absl::CivilYear(2015, 1, 2, 3))); - EXPECT_EQ("2015", - absl::FormatCivilTime(absl::CivilYear(2015, 1, 2))); - EXPECT_EQ("2015", - absl::FormatCivilTime(absl::CivilYear(2015, 1))); - EXPECT_EQ("2015", - absl::FormatCivilTime(absl::CivilYear(2015))); -} - -TEST(CivilTime, FieldsConstructionLimits) { - const int kIntMax = std::numeric_limits::max(); - EXPECT_EQ("2038-01-19T03:14:07", - absl::FormatCivilTime(absl::CivilSecond( - 1970, 1, 1, 0, 0, kIntMax))); - EXPECT_EQ("6121-02-11T05:21:07", - absl::FormatCivilTime(absl::CivilSecond( - 1970, 1, 1, 0, kIntMax, kIntMax))); - EXPECT_EQ("251104-11-20T12:21:07", - absl::FormatCivilTime(absl::CivilSecond( - 1970, 1, 1, kIntMax, kIntMax, kIntMax))); - EXPECT_EQ("6130715-05-30T12:21:07", - absl::FormatCivilTime(absl::CivilSecond( - 1970, 1, kIntMax, kIntMax, kIntMax, kIntMax))); - EXPECT_EQ("185087685-11-26T12:21:07", - absl::FormatCivilTime(absl::CivilSecond( - 1970, kIntMax, kIntMax, kIntMax, kIntMax, kIntMax))); - - const int kIntMin = std::numeric_limits::min(); - EXPECT_EQ("1901-12-13T20:45:52", - absl::FormatCivilTime(absl::CivilSecond( - 1970, 1, 1, 0, 0, kIntMin))); - EXPECT_EQ("-2182-11-20T18:37:52", - absl::FormatCivilTime(absl::CivilSecond( - 1970, 1, 1, 0, kIntMin, kIntMin))); - EXPECT_EQ("-247165-02-11T10:37:52", - absl::FormatCivilTime(absl::CivilSecond( - 1970, 1, 1, kIntMin, kIntMin, kIntMin))); - EXPECT_EQ("-6126776-08-01T10:37:52", - absl::FormatCivilTime(absl::CivilSecond( - 1970, 1, kIntMin, kIntMin, kIntMin, kIntMin))); - EXPECT_EQ("-185083747-10-31T10:37:52", - absl::FormatCivilTime(absl::CivilSecond( - 1970, kIntMin, kIntMin, kIntMin, kIntMin, kIntMin))); -} - -TEST(CivilTime, RangeLimits) { - const absl::civil_year_t kYearMax = - std::numeric_limits::max(); - EXPECT_EQ(absl::CivilYear(kYearMax), - absl::CivilYear::max()); - EXPECT_EQ(absl::CivilMonth(kYearMax, 12), - absl::CivilMonth::max()); - EXPECT_EQ(absl::CivilDay(kYearMax, 12, 31), - absl::CivilDay::max()); - EXPECT_EQ(absl::CivilHour(kYearMax, 12, 31, 23), - absl::CivilHour::max()); - EXPECT_EQ(absl::CivilMinute(kYearMax, 12, 31, 23, 59), - absl::CivilMinute::max()); - EXPECT_EQ(absl::CivilSecond(kYearMax, 12, 31, 23, 59, 59), - absl::CivilSecond::max()); - - const absl::civil_year_t kYearMin = - std::numeric_limits::min(); - EXPECT_EQ(absl::CivilYear(kYearMin), - absl::CivilYear::min()); - EXPECT_EQ(absl::CivilMonth(kYearMin, 1), - absl::CivilMonth::min()); - EXPECT_EQ(absl::CivilDay(kYearMin, 1, 1), - absl::CivilDay::min()); - EXPECT_EQ(absl::CivilHour(kYearMin, 1, 1, 0), - absl::CivilHour::min()); - EXPECT_EQ(absl::CivilMinute(kYearMin, 1, 1, 0, 0), - absl::CivilMinute::min()); - EXPECT_EQ(absl::CivilSecond(kYearMin, 1, 1, 0, 0, 0), - absl::CivilSecond::min()); -} - -TEST(CivilTime, ImplicitCrossAlignment) { - absl::CivilYear year(2015); - absl::CivilMonth month = year; - absl::CivilDay day = month; - absl::CivilHour hour = day; - absl::CivilMinute minute = hour; - absl::CivilSecond second = minute; - - second = year; - EXPECT_EQ(second, year); - second = month; - EXPECT_EQ(second, month); - second = day; - EXPECT_EQ(second, day); - second = hour; - EXPECT_EQ(second, hour); - second = minute; - EXPECT_EQ(second, minute); - - minute = year; - EXPECT_EQ(minute, year); - minute = month; - EXPECT_EQ(minute, month); - minute = day; - EXPECT_EQ(minute, day); - minute = hour; - EXPECT_EQ(minute, hour); - - hour = year; - EXPECT_EQ(hour, year); - hour = month; - EXPECT_EQ(hour, month); - hour = day; - EXPECT_EQ(hour, day); - - day = year; - EXPECT_EQ(day, year); - day = month; - EXPECT_EQ(day, month); - - month = year; - EXPECT_EQ(month, year); - - // Ensures unsafe conversions are not allowed. - EXPECT_FALSE( - (std::is_convertible::value)); - EXPECT_FALSE( - (std::is_convertible::value)); - EXPECT_FALSE( - (std::is_convertible::value)); - EXPECT_FALSE( - (std::is_convertible::value)); - EXPECT_FALSE( - (std::is_convertible::value)); - - EXPECT_FALSE( - (std::is_convertible::value)); - EXPECT_FALSE( - (std::is_convertible::value)); - EXPECT_FALSE( - (std::is_convertible::value)); - EXPECT_FALSE( - (std::is_convertible::value)); - - EXPECT_FALSE( - (std::is_convertible::value)); - EXPECT_FALSE( - (std::is_convertible::value)); - EXPECT_FALSE( - (std::is_convertible::value)); - - EXPECT_FALSE( - (std::is_convertible::value)); - EXPECT_FALSE( - (std::is_convertible::value)); - - EXPECT_FALSE( - (std::is_convertible::value)); -} - -TEST(CivilTime, ExplicitCrossAlignment) { - // - // Assign from smaller units -> larger units - // - - absl::CivilSecond second(2015, 1, 2, 3, 4, 5); - EXPECT_EQ("2015-01-02T03:04:05", absl::FormatCivilTime(second)); - - absl::CivilMinute minute(second); - EXPECT_EQ("2015-01-02T03:04", absl::FormatCivilTime(minute)); - - absl::CivilHour hour(minute); - EXPECT_EQ("2015-01-02T03", absl::FormatCivilTime(hour)); - - absl::CivilDay day(hour); - EXPECT_EQ("2015-01-02", absl::FormatCivilTime(day)); - - absl::CivilMonth month(day); - EXPECT_EQ("2015-01", absl::FormatCivilTime(month)); - - absl::CivilYear year(month); - EXPECT_EQ("2015", absl::FormatCivilTime(year)); - - // - // Now assign from larger units -> smaller units - // - - month = absl::CivilMonth(year); - EXPECT_EQ("2015-01", absl::FormatCivilTime(month)); - - day = absl::CivilDay(month); - EXPECT_EQ("2015-01-01", absl::FormatCivilTime(day)); - - hour = absl::CivilHour(day); - EXPECT_EQ("2015-01-01T00", absl::FormatCivilTime(hour)); - - minute = absl::CivilMinute(hour); - EXPECT_EQ("2015-01-01T00:00", absl::FormatCivilTime(minute)); - - second = absl::CivilSecond(minute); - EXPECT_EQ("2015-01-01T00:00:00", absl::FormatCivilTime(second)); -} - -// Metafunction to test whether difference is allowed between two types. -template -struct HasDiff { - template - static std::false_type test(...); - template - static std::true_type test(decltype(std::declval() - std::declval())); - static constexpr bool value = decltype(test(0))::value; -}; - -TEST(CivilTime, DisallowCrossAlignedDifference) { - // Difference is allowed between types with the same alignment. - static_assert(HasDiff::value, ""); - static_assert(HasDiff::value, ""); - static_assert(HasDiff::value, ""); - static_assert(HasDiff::value, ""); - static_assert(HasDiff::value, ""); - static_assert(HasDiff::value, ""); - - // Difference is disallowed between types with different alignments. - static_assert(!HasDiff::value, ""); - static_assert(!HasDiff::value, ""); - static_assert(!HasDiff::value, ""); - static_assert(!HasDiff::value, ""); - static_assert(!HasDiff::value, ""); - - static_assert(!HasDiff::value, ""); - static_assert(!HasDiff::value, ""); - static_assert(!HasDiff::value, ""); - static_assert(!HasDiff::value, ""); - - static_assert(!HasDiff::value, ""); - static_assert(!HasDiff::value, ""); - static_assert(!HasDiff::value, ""); - - static_assert(!HasDiff::value, ""); - static_assert(!HasDiff::value, ""); - - static_assert(!HasDiff::value, ""); -} - -TEST(CivilTime, ValueSemantics) { - const absl::CivilHour a(2015, 1, 2, 3); - const absl::CivilHour b = a; - const absl::CivilHour c(b); - absl::CivilHour d; - d = c; - EXPECT_EQ("2015-01-02T03", absl::FormatCivilTime(d)); -} - -TEST(CivilTime, Relational) { - // Tests that the alignment unit is ignored in comparison. - const absl::CivilYear year(2014); - const absl::CivilMonth month(year); - EXPECT_EQ(year, month); - -#define TEST_RELATIONAL(OLDER, YOUNGER) \ - do { \ - EXPECT_FALSE(OLDER < OLDER); \ - EXPECT_FALSE(OLDER > OLDER); \ - EXPECT_TRUE(OLDER >= OLDER); \ - EXPECT_TRUE(OLDER <= OLDER); \ - EXPECT_FALSE(YOUNGER < YOUNGER); \ - EXPECT_FALSE(YOUNGER > YOUNGER); \ - EXPECT_TRUE(YOUNGER >= YOUNGER); \ - EXPECT_TRUE(YOUNGER <= YOUNGER); \ - EXPECT_EQ(OLDER, OLDER); \ - EXPECT_NE(OLDER, YOUNGER); \ - EXPECT_LT(OLDER, YOUNGER); \ - EXPECT_LE(OLDER, YOUNGER); \ - EXPECT_GT(YOUNGER, OLDER); \ - EXPECT_GE(YOUNGER, OLDER); \ - } while (0) - - // Alignment is ignored in comparison (verified above), so CivilSecond is - // used to test comparison in all field positions. - TEST_RELATIONAL(absl::CivilSecond(2014, 1, 1, 0, 0, 0), - absl::CivilSecond(2015, 1, 1, 0, 0, 0)); - TEST_RELATIONAL(absl::CivilSecond(2014, 1, 1, 0, 0, 0), - absl::CivilSecond(2014, 2, 1, 0, 0, 0)); - TEST_RELATIONAL(absl::CivilSecond(2014, 1, 1, 0, 0, 0), - absl::CivilSecond(2014, 1, 2, 0, 0, 0)); - TEST_RELATIONAL(absl::CivilSecond(2014, 1, 1, 0, 0, 0), - absl::CivilSecond(2014, 1, 1, 1, 0, 0)); - TEST_RELATIONAL(absl::CivilSecond(2014, 1, 1, 1, 0, 0), - absl::CivilSecond(2014, 1, 1, 1, 1, 0)); - TEST_RELATIONAL(absl::CivilSecond(2014, 1, 1, 1, 1, 0), - absl::CivilSecond(2014, 1, 1, 1, 1, 1)); - - // Tests the relational operators of two different civil-time types. - TEST_RELATIONAL(absl::CivilDay(2014, 1, 1), - absl::CivilMinute(2014, 1, 1, 1, 1)); - TEST_RELATIONAL(absl::CivilDay(2014, 1, 1), - absl::CivilMonth(2014, 2)); - -#undef TEST_RELATIONAL -} - -TEST(CivilTime, Arithmetic) { - absl::CivilSecond second(2015, 1, 2, 3, 4, 5); - EXPECT_EQ("2015-01-02T03:04:06", absl::FormatCivilTime(second += 1)); - EXPECT_EQ("2015-01-02T03:04:07", absl::FormatCivilTime(second + 1)); - EXPECT_EQ("2015-01-02T03:04:08", absl::FormatCivilTime(2 + second)); - EXPECT_EQ("2015-01-02T03:04:05", absl::FormatCivilTime(second - 1)); - EXPECT_EQ("2015-01-02T03:04:05", absl::FormatCivilTime(second -= 1)); - EXPECT_EQ("2015-01-02T03:04:05", absl::FormatCivilTime(second++)); - EXPECT_EQ("2015-01-02T03:04:07", absl::FormatCivilTime(++second)); - EXPECT_EQ("2015-01-02T03:04:07", absl::FormatCivilTime(second--)); - EXPECT_EQ("2015-01-02T03:04:05", absl::FormatCivilTime(--second)); - - absl::CivilMinute minute(2015, 1, 2, 3, 4); - EXPECT_EQ("2015-01-02T03:05", absl::FormatCivilTime(minute += 1)); - EXPECT_EQ("2015-01-02T03:06", absl::FormatCivilTime(minute + 1)); - EXPECT_EQ("2015-01-02T03:07", absl::FormatCivilTime(2 + minute)); - EXPECT_EQ("2015-01-02T03:04", absl::FormatCivilTime(minute - 1)); - EXPECT_EQ("2015-01-02T03:04", absl::FormatCivilTime(minute -= 1)); - EXPECT_EQ("2015-01-02T03:04", absl::FormatCivilTime(minute++)); - EXPECT_EQ("2015-01-02T03:06", absl::FormatCivilTime(++minute)); - EXPECT_EQ("2015-01-02T03:06", absl::FormatCivilTime(minute--)); - EXPECT_EQ("2015-01-02T03:04", absl::FormatCivilTime(--minute)); - - absl::CivilHour hour(2015, 1, 2, 3); - EXPECT_EQ("2015-01-02T04", absl::FormatCivilTime(hour += 1)); - EXPECT_EQ("2015-01-02T05", absl::FormatCivilTime(hour + 1)); - EXPECT_EQ("2015-01-02T06", absl::FormatCivilTime(2 + hour)); - EXPECT_EQ("2015-01-02T03", absl::FormatCivilTime(hour - 1)); - EXPECT_EQ("2015-01-02T03", absl::FormatCivilTime(hour -= 1)); - EXPECT_EQ("2015-01-02T03", absl::FormatCivilTime(hour++)); - EXPECT_EQ("2015-01-02T05", absl::FormatCivilTime(++hour)); - EXPECT_EQ("2015-01-02T05", absl::FormatCivilTime(hour--)); - EXPECT_EQ("2015-01-02T03", absl::FormatCivilTime(--hour)); - - absl::CivilDay day(2015, 1, 2); - EXPECT_EQ("2015-01-03", absl::FormatCivilTime(day += 1)); - EXPECT_EQ("2015-01-04", absl::FormatCivilTime(day + 1)); - EXPECT_EQ("2015-01-05", absl::FormatCivilTime(2 + day)); - EXPECT_EQ("2015-01-02", absl::FormatCivilTime(day - 1)); - EXPECT_EQ("2015-01-02", absl::FormatCivilTime(day -= 1)); - EXPECT_EQ("2015-01-02", absl::FormatCivilTime(day++)); - EXPECT_EQ("2015-01-04", absl::FormatCivilTime(++day)); - EXPECT_EQ("2015-01-04", absl::FormatCivilTime(day--)); - EXPECT_EQ("2015-01-02", absl::FormatCivilTime(--day)); - - absl::CivilMonth month(2015, 1); - EXPECT_EQ("2015-02", absl::FormatCivilTime(month += 1)); - EXPECT_EQ("2015-03", absl::FormatCivilTime(month + 1)); - EXPECT_EQ("2015-04", absl::FormatCivilTime(2 + month)); - EXPECT_EQ("2015-01", absl::FormatCivilTime(month - 1)); - EXPECT_EQ("2015-01", absl::FormatCivilTime(month -= 1)); - EXPECT_EQ("2015-01", absl::FormatCivilTime(month++)); - EXPECT_EQ("2015-03", absl::FormatCivilTime(++month)); - EXPECT_EQ("2015-03", absl::FormatCivilTime(month--)); - EXPECT_EQ("2015-01", absl::FormatCivilTime(--month)); - - absl::CivilYear year(2015); - EXPECT_EQ("2016", absl::FormatCivilTime(year += 1)); - EXPECT_EQ("2017", absl::FormatCivilTime(year + 1)); - EXPECT_EQ("2018", absl::FormatCivilTime(2 + year)); - EXPECT_EQ("2015", absl::FormatCivilTime(year - 1)); - EXPECT_EQ("2015", absl::FormatCivilTime(year -= 1)); - EXPECT_EQ("2015", absl::FormatCivilTime(year++)); - EXPECT_EQ("2017", absl::FormatCivilTime(++year)); - EXPECT_EQ("2017", absl::FormatCivilTime(year--)); - EXPECT_EQ("2015", absl::FormatCivilTime(--year)); -} - -TEST(CivilTime, ArithmeticLimits) { - const int kIntMax = std::numeric_limits::max(); - const int kIntMin = std::numeric_limits::min(); - - absl::CivilSecond second(1970, 1, 1, 0, 0, 0); - second += kIntMax; - EXPECT_EQ("2038-01-19T03:14:07", absl::FormatCivilTime(second)); - second -= kIntMax; - EXPECT_EQ("1970-01-01T00:00:00", absl::FormatCivilTime(second)); - second += kIntMin; - EXPECT_EQ("1901-12-13T20:45:52", absl::FormatCivilTime(second)); - second -= kIntMin; - EXPECT_EQ("1970-01-01T00:00:00", absl::FormatCivilTime(second)); - - absl::CivilMinute minute(1970, 1, 1, 0, 0); - minute += kIntMax; - EXPECT_EQ("6053-01-23T02:07", absl::FormatCivilTime(minute)); - minute -= kIntMax; - EXPECT_EQ("1970-01-01T00:00", absl::FormatCivilTime(minute)); - minute += kIntMin; - EXPECT_EQ("-2114-12-08T21:52", absl::FormatCivilTime(minute)); - minute -= kIntMin; - EXPECT_EQ("1970-01-01T00:00", absl::FormatCivilTime(minute)); - - absl::CivilHour hour(1970, 1, 1, 0); - hour += kIntMax; - EXPECT_EQ("246953-10-09T07", absl::FormatCivilTime(hour)); - hour -= kIntMax; - EXPECT_EQ("1970-01-01T00", absl::FormatCivilTime(hour)); - hour += kIntMin; - EXPECT_EQ("-243014-03-24T16", absl::FormatCivilTime(hour)); - hour -= kIntMin; - EXPECT_EQ("1970-01-01T00", absl::FormatCivilTime(hour)); - - absl::CivilDay day(1970, 1, 1); - day += kIntMax; - EXPECT_EQ("5881580-07-11", absl::FormatCivilTime(day)); - day -= kIntMax; - EXPECT_EQ("1970-01-01", absl::FormatCivilTime(day)); - day += kIntMin; - EXPECT_EQ("-5877641-06-23", absl::FormatCivilTime(day)); - day -= kIntMin; - EXPECT_EQ("1970-01-01", absl::FormatCivilTime(day)); - - absl::CivilMonth month(1970, 1); - month += kIntMax; - EXPECT_EQ("178958940-08", absl::FormatCivilTime(month)); - month -= kIntMax; - EXPECT_EQ("1970-01", absl::FormatCivilTime(month)); - month += kIntMin; - EXPECT_EQ("-178955001-05", absl::FormatCivilTime(month)); - month -= kIntMin; - EXPECT_EQ("1970-01", absl::FormatCivilTime(month)); - - absl::CivilYear year(0); - year += kIntMax; - EXPECT_EQ("2147483647", absl::FormatCivilTime(year)); - year -= kIntMax; - EXPECT_EQ("0", absl::FormatCivilTime(year)); - year += kIntMin; - EXPECT_EQ("-2147483648", absl::FormatCivilTime(year)); - year -= kIntMin; - EXPECT_EQ("0", absl::FormatCivilTime(year)); -} - -TEST(CivilTime, Difference) { - absl::CivilSecond second(2015, 1, 2, 3, 4, 5); - EXPECT_EQ(0, second - second); - EXPECT_EQ(10, (second + 10) - second); - EXPECT_EQ(-10, (second - 10) - second); - - absl::CivilMinute minute(2015, 1, 2, 3, 4); - EXPECT_EQ(0, minute - minute); - EXPECT_EQ(10, (minute + 10) - minute); - EXPECT_EQ(-10, (minute - 10) - minute); - - absl::CivilHour hour(2015, 1, 2, 3); - EXPECT_EQ(0, hour - hour); - EXPECT_EQ(10, (hour + 10) - hour); - EXPECT_EQ(-10, (hour - 10) - hour); - - absl::CivilDay day(2015, 1, 2); - EXPECT_EQ(0, day - day); - EXPECT_EQ(10, (day + 10) - day); - EXPECT_EQ(-10, (day - 10) - day); - - absl::CivilMonth month(2015, 1); - EXPECT_EQ(0, month - month); - EXPECT_EQ(10, (month + 10) - month); - EXPECT_EQ(-10, (month - 10) - month); - - absl::CivilYear year(2015); - EXPECT_EQ(0, year - year); - EXPECT_EQ(10, (year + 10) - year); - EXPECT_EQ(-10, (year - 10) - year); -} - -TEST(CivilTime, DifferenceLimits) { - const absl::civil_diff_t kDiffMax = - std::numeric_limits::max(); - const absl::civil_diff_t kDiffMin = - std::numeric_limits::min(); - - // Check day arithmetic at the end of the year range. - const absl::CivilDay max_day(kDiffMax, 12, 31); - EXPECT_EQ(1, max_day - (max_day - 1)); - EXPECT_EQ(-1, (max_day - 1) - max_day); - - // Check day arithmetic at the start of the year range. - const absl::CivilDay min_day(kDiffMin, 1, 1); - EXPECT_EQ(1, (min_day + 1) - min_day); - EXPECT_EQ(-1, min_day - (min_day + 1)); - - // Check the limits of the return value. - const absl::CivilDay d1(1970, 1, 1); - const absl::CivilDay d2(25252734927768524, 7, 27); - EXPECT_EQ(kDiffMax, d2 - d1); - EXPECT_EQ(kDiffMin, d1 - (d2 + 1)); -} - -TEST(CivilTime, Properties) { - absl::CivilSecond ss(2015, 2, 3, 4, 5, 6); - EXPECT_EQ(2015, ss.year()); - EXPECT_EQ(2, ss.month()); - EXPECT_EQ(3, ss.day()); - EXPECT_EQ(4, ss.hour()); - EXPECT_EQ(5, ss.minute()); - EXPECT_EQ(6, ss.second()); - EXPECT_EQ(absl::Weekday::tuesday, absl::GetWeekday(ss)); - EXPECT_EQ(34, absl::GetYearDay(ss)); - - absl::CivilMinute mm(2015, 2, 3, 4, 5, 6); - EXPECT_EQ(2015, mm.year()); - EXPECT_EQ(2, mm.month()); - EXPECT_EQ(3, mm.day()); - EXPECT_EQ(4, mm.hour()); - EXPECT_EQ(5, mm.minute()); - EXPECT_EQ(0, mm.second()); - EXPECT_EQ(absl::Weekday::tuesday, absl::GetWeekday(mm)); - EXPECT_EQ(34, absl::GetYearDay(mm)); - - absl::CivilHour hh(2015, 2, 3, 4, 5, 6); - EXPECT_EQ(2015, hh.year()); - EXPECT_EQ(2, hh.month()); - EXPECT_EQ(3, hh.day()); - EXPECT_EQ(4, hh.hour()); - EXPECT_EQ(0, hh.minute()); - EXPECT_EQ(0, hh.second()); - EXPECT_EQ(absl::Weekday::tuesday, absl::GetWeekday(hh)); - EXPECT_EQ(34, absl::GetYearDay(hh)); - - absl::CivilDay d(2015, 2, 3, 4, 5, 6); - EXPECT_EQ(2015, d.year()); - EXPECT_EQ(2, d.month()); - EXPECT_EQ(3, d.day()); - EXPECT_EQ(0, d.hour()); - EXPECT_EQ(0, d.minute()); - EXPECT_EQ(0, d.second()); - EXPECT_EQ(absl::Weekday::tuesday, absl::GetWeekday(d)); - EXPECT_EQ(34, absl::GetYearDay(d)); - - absl::CivilMonth m(2015, 2, 3, 4, 5, 6); - EXPECT_EQ(2015, m.year()); - EXPECT_EQ(2, m.month()); - EXPECT_EQ(1, m.day()); - EXPECT_EQ(0, m.hour()); - EXPECT_EQ(0, m.minute()); - EXPECT_EQ(0, m.second()); - EXPECT_EQ(absl::Weekday::sunday, absl::GetWeekday(m)); - EXPECT_EQ(32, absl::GetYearDay(m)); - - absl::CivilYear y(2015, 2, 3, 4, 5, 6); - EXPECT_EQ(2015, y.year()); - EXPECT_EQ(1, y.month()); - EXPECT_EQ(1, y.day()); - EXPECT_EQ(0, y.hour()); - EXPECT_EQ(0, y.minute()); - EXPECT_EQ(0, y.second()); - EXPECT_EQ(absl::Weekday::thursday, absl::GetWeekday(y)); - EXPECT_EQ(1, absl::GetYearDay(y)); -} - -TEST(CivilTime, Format) { - absl::CivilSecond ss; - EXPECT_EQ("1970-01-01T00:00:00", absl::FormatCivilTime(ss)); - - absl::CivilMinute mm; - EXPECT_EQ("1970-01-01T00:00", absl::FormatCivilTime(mm)); - - absl::CivilHour hh; - EXPECT_EQ("1970-01-01T00", absl::FormatCivilTime(hh)); - - absl::CivilDay d; - EXPECT_EQ("1970-01-01", absl::FormatCivilTime(d)); - - absl::CivilMonth m; - EXPECT_EQ("1970-01", absl::FormatCivilTime(m)); - - absl::CivilYear y; - EXPECT_EQ("1970", absl::FormatCivilTime(y)); -} - -TEST(CivilTime, Parse) { - absl::CivilSecond ss; - absl::CivilMinute mm; - absl::CivilHour hh; - absl::CivilDay d; - absl::CivilMonth m; - absl::CivilYear y; - - // CivilSecond OK; others fail - EXPECT_TRUE(absl::ParseCivilTime("2015-01-02T03:04:05", &ss)); - EXPECT_EQ("2015-01-02T03:04:05", absl::FormatCivilTime(ss)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03:04:05", &mm)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03:04:05", &hh)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03:04:05", &d)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03:04:05", &m)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03:04:05", &y)); - - // CivilMinute OK; others fail - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03:04", &ss)); - EXPECT_TRUE(absl::ParseCivilTime("2015-01-02T03:04", &mm)); - EXPECT_EQ("2015-01-02T03:04", absl::FormatCivilTime(mm)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03:04", &hh)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03:04", &d)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03:04", &m)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03:04", &y)); - - // CivilHour OK; others fail - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03", &ss)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03", &mm)); - EXPECT_TRUE(absl::ParseCivilTime("2015-01-02T03", &hh)); - EXPECT_EQ("2015-01-02T03", absl::FormatCivilTime(hh)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03", &d)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03", &m)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02T03", &y)); - - // CivilDay OK; others fail - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02", &ss)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02", &mm)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02", &hh)); - EXPECT_TRUE(absl::ParseCivilTime("2015-01-02", &d)); - EXPECT_EQ("2015-01-02", absl::FormatCivilTime(d)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02", &m)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01-02", &y)); - - // CivilMonth OK; others fail - EXPECT_FALSE(absl::ParseCivilTime("2015-01", &ss)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01", &mm)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01", &hh)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01", &d)); - EXPECT_TRUE(absl::ParseCivilTime("2015-01", &m)); - EXPECT_EQ("2015-01", absl::FormatCivilTime(m)); - EXPECT_FALSE(absl::ParseCivilTime("2015-01", &y)); - - // CivilYear OK; others fail - EXPECT_FALSE(absl::ParseCivilTime("2015", &ss)); - EXPECT_FALSE(absl::ParseCivilTime("2015", &mm)); - EXPECT_FALSE(absl::ParseCivilTime("2015", &hh)); - EXPECT_FALSE(absl::ParseCivilTime("2015", &d)); - EXPECT_FALSE(absl::ParseCivilTime("2015", &m)); - EXPECT_TRUE(absl::ParseCivilTime("2015", &y)); - EXPECT_EQ("2015", absl::FormatCivilTime(y)); -} - -TEST(CivilTime, FormatAndParseLenient) { - absl::CivilSecond ss; - EXPECT_EQ("1970-01-01T00:00:00", absl::FormatCivilTime(ss)); - - absl::CivilMinute mm; - EXPECT_EQ("1970-01-01T00:00", absl::FormatCivilTime(mm)); - - absl::CivilHour hh; - EXPECT_EQ("1970-01-01T00", absl::FormatCivilTime(hh)); - - absl::CivilDay d; - EXPECT_EQ("1970-01-01", absl::FormatCivilTime(d)); - - absl::CivilMonth m; - EXPECT_EQ("1970-01", absl::FormatCivilTime(m)); - - absl::CivilYear y; - EXPECT_EQ("1970", absl::FormatCivilTime(y)); - - EXPECT_TRUE(absl::ParseLenientCivilTime("2015-01-02T03:04:05", &ss)); - EXPECT_EQ("2015-01-02T03:04:05", absl::FormatCivilTime(ss)); - - EXPECT_TRUE(absl::ParseLenientCivilTime("2015-01-02T03:04:05", &mm)); - EXPECT_EQ("2015-01-02T03:04", absl::FormatCivilTime(mm)); - - EXPECT_TRUE(absl::ParseLenientCivilTime("2015-01-02T03:04:05", &hh)); - EXPECT_EQ("2015-01-02T03", absl::FormatCivilTime(hh)); - - EXPECT_TRUE(absl::ParseLenientCivilTime("2015-01-02T03:04:05", &d)); - EXPECT_EQ("2015-01-02", absl::FormatCivilTime(d)); - - EXPECT_TRUE(absl::ParseLenientCivilTime("2015-01-02T03:04:05", &m)); - EXPECT_EQ("2015-01", absl::FormatCivilTime(m)); - - EXPECT_TRUE(absl::ParseLenientCivilTime("2015-01-02T03:04:05", &y)); - EXPECT_EQ("2015", absl::FormatCivilTime(y)); -} - -TEST(CivilTime, ParseEdgeCases) { - absl::CivilSecond ss; - EXPECT_TRUE( - absl::ParseLenientCivilTime("9223372036854775807-12-31T23:59:59", &ss)); - EXPECT_EQ("9223372036854775807-12-31T23:59:59", absl::FormatCivilTime(ss)); - EXPECT_TRUE( - absl::ParseLenientCivilTime("-9223372036854775808-01-01T00:00:00", &ss)); - EXPECT_EQ("-9223372036854775808-01-01T00:00:00", absl::FormatCivilTime(ss)); - - absl::CivilMinute mm; - EXPECT_TRUE( - absl::ParseLenientCivilTime("9223372036854775807-12-31T23:59", &mm)); - EXPECT_EQ("9223372036854775807-12-31T23:59", absl::FormatCivilTime(mm)); - EXPECT_TRUE( - absl::ParseLenientCivilTime("-9223372036854775808-01-01T00:00", &mm)); - EXPECT_EQ("-9223372036854775808-01-01T00:00", absl::FormatCivilTime(mm)); - - absl::CivilHour hh; - EXPECT_TRUE( - absl::ParseLenientCivilTime("9223372036854775807-12-31T23", &hh)); - EXPECT_EQ("9223372036854775807-12-31T23", absl::FormatCivilTime(hh)); - EXPECT_TRUE( - absl::ParseLenientCivilTime("-9223372036854775808-01-01T00", &hh)); - EXPECT_EQ("-9223372036854775808-01-01T00", absl::FormatCivilTime(hh)); - - absl::CivilDay d; - EXPECT_TRUE(absl::ParseLenientCivilTime("9223372036854775807-12-31", &d)); - EXPECT_EQ("9223372036854775807-12-31", absl::FormatCivilTime(d)); - EXPECT_TRUE(absl::ParseLenientCivilTime("-9223372036854775808-01-01", &d)); - EXPECT_EQ("-9223372036854775808-01-01", absl::FormatCivilTime(d)); - - absl::CivilMonth m; - EXPECT_TRUE(absl::ParseLenientCivilTime("9223372036854775807-12", &m)); - EXPECT_EQ("9223372036854775807-12", absl::FormatCivilTime(m)); - EXPECT_TRUE(absl::ParseLenientCivilTime("-9223372036854775808-01", &m)); - EXPECT_EQ("-9223372036854775808-01", absl::FormatCivilTime(m)); - - absl::CivilYear y; - EXPECT_TRUE(absl::ParseLenientCivilTime("9223372036854775807", &y)); - EXPECT_EQ("9223372036854775807", absl::FormatCivilTime(y)); - EXPECT_TRUE(absl::ParseLenientCivilTime("-9223372036854775808", &y)); - EXPECT_EQ("-9223372036854775808", absl::FormatCivilTime(y)); - - // Tests some valid, but interesting, cases - EXPECT_TRUE(absl::ParseLenientCivilTime("0", &ss)) << ss; - EXPECT_EQ(absl::CivilYear(0), ss); - EXPECT_TRUE(absl::ParseLenientCivilTime("0-1", &ss)) << ss; - EXPECT_EQ(absl::CivilMonth(0, 1), ss); - EXPECT_TRUE(absl::ParseLenientCivilTime(" 2015 ", &ss)) << ss; - EXPECT_EQ(absl::CivilYear(2015), ss); - EXPECT_TRUE(absl::ParseLenientCivilTime(" 2015-6 ", &ss)) << ss; - EXPECT_EQ(absl::CivilMonth(2015, 6), ss); - EXPECT_TRUE(absl::ParseLenientCivilTime("2015-6-7", &ss)) << ss; - EXPECT_EQ(absl::CivilDay(2015, 6, 7), ss); - EXPECT_TRUE(absl::ParseLenientCivilTime(" 2015-6-7 ", &ss)) << ss; - EXPECT_EQ(absl::CivilDay(2015, 6, 7), ss); - EXPECT_TRUE(absl::ParseLenientCivilTime("2015-06-07T10:11:12 ", &ss)) << ss; - EXPECT_EQ(absl::CivilSecond(2015, 6, 7, 10, 11, 12), ss); - EXPECT_TRUE(absl::ParseLenientCivilTime(" 2015-06-07T10:11:12 ", &ss)) << ss; - EXPECT_EQ(absl::CivilSecond(2015, 6, 7, 10, 11, 12), ss); - EXPECT_TRUE(absl::ParseLenientCivilTime("-01-01", &ss)) << ss; - EXPECT_EQ(absl::CivilMonth(-1, 1), ss); - - // Tests some invalid cases - EXPECT_FALSE(absl::ParseLenientCivilTime("01-01-2015", &ss)) << ss; - EXPECT_FALSE(absl::ParseLenientCivilTime("2015-", &ss)) << ss; - EXPECT_FALSE(absl::ParseLenientCivilTime("0xff-01", &ss)) << ss; - EXPECT_FALSE(absl::ParseLenientCivilTime("2015-02-30T04:05:06", &ss)) << ss; - EXPECT_FALSE(absl::ParseLenientCivilTime("2015-02-03T04:05:96", &ss)) << ss; - EXPECT_FALSE(absl::ParseLenientCivilTime("X2015-02-03T04:05:06", &ss)) << ss; - EXPECT_FALSE(absl::ParseLenientCivilTime("2015-02-03T04:05:003", &ss)) << ss; - EXPECT_FALSE(absl::ParseLenientCivilTime("2015 -02-03T04:05:06", &ss)) << ss; - EXPECT_FALSE(absl::ParseLenientCivilTime("2015-02-03-04:05:06", &ss)) << ss; - EXPECT_FALSE(absl::ParseLenientCivilTime("2015:02:03T04-05-06", &ss)) << ss; - EXPECT_FALSE(absl::ParseLenientCivilTime("9223372036854775808", &y)) << y; -} - -TEST(CivilTime, OutputStream) { - absl::CivilSecond cs(2016, 2, 3, 4, 5, 6); - { - std::stringstream ss; - ss << std::left << std::setfill('.'); - ss << std::setw(3) << 'X'; - ss << std::setw(21) << absl::CivilYear(cs); - ss << std::setw(3) << 'X'; - EXPECT_EQ("X..2016.................X..", ss.str()); - } - { - std::stringstream ss; - ss << std::left << std::setfill('.'); - ss << std::setw(3) << 'X'; - ss << std::setw(21) << absl::CivilMonth(cs); - ss << std::setw(3) << 'X'; - EXPECT_EQ("X..2016-02..............X..", ss.str()); - } - { - std::stringstream ss; - ss << std::left << std::setfill('.'); - ss << std::setw(3) << 'X'; - ss << std::setw(21) << absl::CivilDay(cs); - ss << std::setw(3) << 'X'; - EXPECT_EQ("X..2016-02-03...........X..", ss.str()); - } - { - std::stringstream ss; - ss << std::left << std::setfill('.'); - ss << std::setw(3) << 'X'; - ss << std::setw(21) << absl::CivilHour(cs); - ss << std::setw(3) << 'X'; - EXPECT_EQ("X..2016-02-03T04........X..", ss.str()); - } - { - std::stringstream ss; - ss << std::left << std::setfill('.'); - ss << std::setw(3) << 'X'; - ss << std::setw(21) << absl::CivilMinute(cs); - ss << std::setw(3) << 'X'; - EXPECT_EQ("X..2016-02-03T04:05.....X..", ss.str()); - } - { - std::stringstream ss; - ss << std::left << std::setfill('.'); - ss << std::setw(3) << 'X'; - ss << std::setw(21) << absl::CivilSecond(cs); - ss << std::setw(3) << 'X'; - EXPECT_EQ("X..2016-02-03T04:05:06..X..", ss.str()); - } - { - std::stringstream ss; - ss << std::left << std::setfill('.'); - ss << std::setw(3) << 'X'; - ss << std::setw(21) << absl::Weekday::wednesday; - ss << std::setw(3) << 'X'; - EXPECT_EQ("X..Wednesday............X..", ss.str()); - } -} - -TEST(CivilTime, Weekday) { - absl::CivilDay d(1970, 1, 1); - EXPECT_EQ(absl::Weekday::thursday, absl::GetWeekday(d)) << d; - - // We used to get this wrong for years < -30. - d = absl::CivilDay(-31, 12, 24); - EXPECT_EQ(absl::Weekday::wednesday, absl::GetWeekday(d)) << d; -} - -TEST(CivilTime, NextPrevWeekday) { - // Jan 1, 1970 was a Thursday. - const absl::CivilDay thursday(1970, 1, 1); - - // Thursday -> Thursday - absl::CivilDay d = absl::NextWeekday(thursday, absl::Weekday::thursday); - EXPECT_EQ(7, d - thursday) << d; - EXPECT_EQ(d - 14, absl::PrevWeekday(thursday, absl::Weekday::thursday)); - - // Thursday -> Friday - d = absl::NextWeekday(thursday, absl::Weekday::friday); - EXPECT_EQ(1, d - thursday) << d; - EXPECT_EQ(d - 7, absl::PrevWeekday(thursday, absl::Weekday::friday)); - - // Thursday -> Saturday - d = absl::NextWeekday(thursday, absl::Weekday::saturday); - EXPECT_EQ(2, d - thursday) << d; - EXPECT_EQ(d - 7, absl::PrevWeekday(thursday, absl::Weekday::saturday)); - - // Thursday -> Sunday - d = absl::NextWeekday(thursday, absl::Weekday::sunday); - EXPECT_EQ(3, d - thursday) << d; - EXPECT_EQ(d - 7, absl::PrevWeekday(thursday, absl::Weekday::sunday)); - - // Thursday -> Monday - d = absl::NextWeekday(thursday, absl::Weekday::monday); - EXPECT_EQ(4, d - thursday) << d; - EXPECT_EQ(d - 7, absl::PrevWeekday(thursday, absl::Weekday::monday)); - - // Thursday -> Tuesday - d = absl::NextWeekday(thursday, absl::Weekday::tuesday); - EXPECT_EQ(5, d - thursday) << d; - EXPECT_EQ(d - 7, absl::PrevWeekday(thursday, absl::Weekday::tuesday)); - - // Thursday -> Wednesday - d = absl::NextWeekday(thursday, absl::Weekday::wednesday); - EXPECT_EQ(6, d - thursday) << d; - EXPECT_EQ(d - 7, absl::PrevWeekday(thursday, absl::Weekday::wednesday)); -} - -// NOTE: Run this with --copt=-ftrapv to detect overflow problems. -TEST(CivilTime, DifferenceWithHugeYear) { - absl::CivilDay d1(9223372036854775807, 1, 1); - absl::CivilDay d2(9223372036854775807, 12, 31); - EXPECT_EQ(364, d2 - d1); - - d1 = absl::CivilDay(-9223372036854775807 - 1, 1, 1); - d2 = absl::CivilDay(-9223372036854775807 - 1, 12, 31); - EXPECT_EQ(365, d2 - d1); - - // Check the limits of the return value at the end of the year range. - d1 = absl::CivilDay(9223372036854775807, 1, 1); - d2 = absl::CivilDay(9198119301927009252, 6, 6); - EXPECT_EQ(9223372036854775807, d1 - d2); - d2 = d2 - 1; - EXPECT_EQ(-9223372036854775807 - 1, d2 - d1); - - // Check the limits of the return value at the start of the year range. - d1 = absl::CivilDay(-9223372036854775807 - 1, 1, 1); - d2 = absl::CivilDay(-9198119301927009254, 7, 28); - EXPECT_EQ(9223372036854775807, d2 - d1); - d2 = d2 + 1; - EXPECT_EQ(-9223372036854775807 - 1, d1 - d2); - - // Check the limits of the return value from either side of year 0. - d1 = absl::CivilDay(-12626367463883278, 9, 3); - d2 = absl::CivilDay(12626367463883277, 3, 28); - EXPECT_EQ(9223372036854775807, d2 - d1); - d2 = d2 + 1; - EXPECT_EQ(-9223372036854775807 - 1, d1 - d2); -} - -// NOTE: Run this with --copt=-ftrapv to detect overflow problems. -TEST(CivilTime, DifferenceNoIntermediateOverflow) { - // The difference up to the minute field would be below the minimum - // int64_t, but the 52 extra seconds brings us back to the minimum. - absl::CivilSecond s1(-292277022657, 1, 27, 8, 29 - 1, 52); - absl::CivilSecond s2(1970, 1, 1, 0, 0 - 1, 0); - EXPECT_EQ(-9223372036854775807 - 1, s1 - s2); - - // The difference up to the minute field would be above the maximum - // int64_t, but the -53 extra seconds brings us back to the maximum. - s1 = absl::CivilSecond(292277026596, 12, 4, 15, 30, 7 - 7); - s2 = absl::CivilSecond(1970, 1, 1, 0, 0, 0 - 7); - EXPECT_EQ(9223372036854775807, s1 - s2); -} - -TEST(CivilTime, NormalizeSimpleOverflow) { - absl::CivilSecond cs; - cs = absl::CivilSecond(2013, 11, 15, 16, 32, 59 + 1); - EXPECT_EQ("2013-11-15T16:33:00", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 15, 16, 59 + 1, 14); - EXPECT_EQ("2013-11-15T17:00:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 15, 23 + 1, 32, 14); - EXPECT_EQ("2013-11-16T00:32:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 30 + 1, 16, 32, 14); - EXPECT_EQ("2013-12-01T16:32:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 12 + 1, 15, 16, 32, 14); - EXPECT_EQ("2014-01-15T16:32:14", absl::FormatCivilTime(cs)); -} - -TEST(CivilTime, NormalizeSimpleUnderflow) { - absl::CivilSecond cs; - cs = absl::CivilSecond(2013, 11, 15, 16, 32, 0 - 1); - EXPECT_EQ("2013-11-15T16:31:59", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 15, 16, 0 - 1, 14); - EXPECT_EQ("2013-11-15T15:59:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 15, 0 - 1, 32, 14); - EXPECT_EQ("2013-11-14T23:32:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 1 - 1, 16, 32, 14); - EXPECT_EQ("2013-10-31T16:32:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 1 - 1, 15, 16, 32, 14); - EXPECT_EQ("2012-12-15T16:32:14", absl::FormatCivilTime(cs)); -} - -TEST(CivilTime, NormalizeMultipleOverflow) { - absl::CivilSecond cs(2013, 12, 31, 23, 59, 59 + 1); - EXPECT_EQ("2014-01-01T00:00:00", absl::FormatCivilTime(cs)); -} - -TEST(CivilTime, NormalizeMultipleUnderflow) { - absl::CivilSecond cs(2014, 1, 1, 0, 0, 0 - 1); - EXPECT_EQ("2013-12-31T23:59:59", absl::FormatCivilTime(cs)); -} - -TEST(CivilTime, NormalizeOverflowLimits) { - absl::CivilSecond cs; - - const int kintmax = std::numeric_limits::max(); - cs = absl::CivilSecond(0, kintmax, kintmax, kintmax, kintmax, kintmax); - EXPECT_EQ("185085715-11-27T12:21:07", absl::FormatCivilTime(cs)); - - const int kintmin = std::numeric_limits::min(); - cs = absl::CivilSecond(0, kintmin, kintmin, kintmin, kintmin, kintmin); - EXPECT_EQ("-185085717-10-31T10:37:52", absl::FormatCivilTime(cs)); -} - -TEST(CivilTime, NormalizeComplexOverflow) { - absl::CivilSecond cs; - cs = absl::CivilSecond(2013, 11, 15, 16, 32, 14 + 123456789); - EXPECT_EQ("2017-10-14T14:05:23", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 15, 16, 32 + 1234567, 14); - EXPECT_EQ("2016-03-22T00:39:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 15, 16 + 123456, 32, 14); - EXPECT_EQ("2027-12-16T16:32:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 15 + 1234, 16, 32, 14); - EXPECT_EQ("2017-04-02T16:32:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11 + 123, 15, 16, 32, 14); - EXPECT_EQ("2024-02-15T16:32:14", absl::FormatCivilTime(cs)); -} - -TEST(CivilTime, NormalizeComplexUnderflow) { - absl::CivilSecond cs; - cs = absl::CivilSecond(1999, 3, 0, 0, 0, 0); // year 400 - EXPECT_EQ("1999-02-28T00:00:00", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 15, 16, 32, 14 - 123456789); - EXPECT_EQ("2009-12-17T18:59:05", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 15, 16, 32 - 1234567, 14); - EXPECT_EQ("2011-07-12T08:25:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 15, 16 - 123456, 32, 14); - EXPECT_EQ("1999-10-16T16:32:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11, 15 - 1234, 16, 32, 14); - EXPECT_EQ("2010-06-30T16:32:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11 - 123, 15, 16, 32, 14); - EXPECT_EQ("2003-08-15T16:32:14", absl::FormatCivilTime(cs)); -} - -TEST(CivilTime, NormalizeMishmash) { - absl::CivilSecond cs; - cs = absl::CivilSecond(2013, 11 - 123, 15 + 1234, 16 - 123456, 32 + 1234567, - 14 - 123456789); - EXPECT_EQ("1991-05-09T03:06:05", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11 + 123, 15 - 1234, 16 + 123456, 32 - 1234567, - 14 + 123456789); - EXPECT_EQ("2036-05-24T05:58:23", absl::FormatCivilTime(cs)); - - cs = absl::CivilSecond(2013, 11, -146097 + 1, 16, 32, 14); - EXPECT_EQ("1613-11-01T16:32:14", absl::FormatCivilTime(cs)); - cs = absl::CivilSecond(2013, 11 + 400 * 12, -146097 + 1, 16, 32, 14); - EXPECT_EQ("2013-11-01T16:32:14", absl::FormatCivilTime(cs)); -} - -// Convert all the days from 1970-1-1 to 1970-1-146097 (aka 2369-12-31) -// and check that they normalize to the expected time. 146097 days span -// the 400-year Gregorian cycle used during normalization. -TEST(CivilTime, NormalizeAllTheDays) { - absl::CivilDay expected(1970, 1, 1); - for (int day = 1; day <= 146097; ++day) { - absl::CivilSecond cs(1970, 1, day, 0, 0, 0); - EXPECT_EQ(expected, cs); - ++expected; - } -} - -TEST(CivilTime, NormalizeWithHugeYear) { - absl::CivilMonth c(9223372036854775807, 1); - EXPECT_EQ("9223372036854775807-01", absl::FormatCivilTime(c)); - c = c - 1; // Causes normalization - EXPECT_EQ("9223372036854775806-12", absl::FormatCivilTime(c)); - - c = absl::CivilMonth(-9223372036854775807 - 1, 1); - EXPECT_EQ("-9223372036854775808-01", absl::FormatCivilTime(c)); - c = c + 12; // Causes normalization - EXPECT_EQ("-9223372036854775807-01", absl::FormatCivilTime(c)); -} - -TEST(CivilTime, LeapYears) { - const absl::CivilSecond s1(2013, 2, 28 + 1, 0, 0, 0); - EXPECT_EQ("2013-03-01T00:00:00", absl::FormatCivilTime(s1)); - - const absl::CivilSecond s2(2012, 2, 28 + 1, 0, 0, 0); - EXPECT_EQ("2012-02-29T00:00:00", absl::FormatCivilTime(s2)); - - const absl::CivilSecond s3(1900, 2, 28 + 1, 0, 0, 0); - EXPECT_EQ("1900-03-01T00:00:00", absl::FormatCivilTime(s3)); - - const struct { - int year; - int days; - struct { - int month; - int day; - } leap_day; // The date of the day after Feb 28. - } kLeapYearTable[]{ - {1900, 365, {3, 1}}, - {1999, 365, {3, 1}}, - {2000, 366, {2, 29}}, // leap year - {2001, 365, {3, 1}}, - {2002, 365, {3, 1}}, - {2003, 365, {3, 1}}, - {2004, 366, {2, 29}}, // leap year - {2005, 365, {3, 1}}, - {2006, 365, {3, 1}}, - {2007, 365, {3, 1}}, - {2008, 366, {2, 29}}, // leap year - {2009, 365, {3, 1}}, - {2100, 365, {3, 1}}, - }; - - for (int i = 0; i < ABSL_ARRAYSIZE(kLeapYearTable); ++i) { - const int y = kLeapYearTable[i].year; - const int m = kLeapYearTable[i].leap_day.month; - const int d = kLeapYearTable[i].leap_day.day; - const int n = kLeapYearTable[i].days; - - // Tests incrementing through the leap day. - const absl::CivilDay feb28(y, 2, 28); - const absl::CivilDay next_day = feb28 + 1; - EXPECT_EQ(m, next_day.month()); - EXPECT_EQ(d, next_day.day()); - - // Tests difference in days of leap years. - const absl::CivilYear year(feb28); - const absl::CivilYear next_year = year + 1; - EXPECT_EQ(n, absl::CivilDay(next_year) - absl::CivilDay(year)); - } -} - -TEST(CivilTime, FirstThursdayInMonth) { - const absl::CivilDay nov1(2014, 11, 1); - const absl::CivilDay thursday = - absl::NextWeekday(nov1 - 1, absl::Weekday::thursday); - EXPECT_EQ("2014-11-06", absl::FormatCivilTime(thursday)); - - // Bonus: Date of Thanksgiving in the United States - // Rule: Fourth Thursday of November - const absl::CivilDay thanksgiving = thursday + 7 * 3; - EXPECT_EQ("2014-11-27", absl::FormatCivilTime(thanksgiving)); -} - -TEST(CivilTime, DocumentationExample) { - absl::CivilSecond second(2015, 6, 28, 1, 2, 3); // 2015-06-28 01:02:03 - absl::CivilMinute minute(second); // 2015-06-28 01:02:00 - absl::CivilDay day(minute); // 2015-06-28 00:00:00 - - second -= 1; // 2015-06-28 01:02:02 - --second; // 2015-06-28 01:02:01 - EXPECT_EQ(minute, second - 1); // Comparison between types - EXPECT_LT(minute, second); - - // int diff = second - minute; // ERROR: Mixed types, won't compile - - absl::CivilDay june_1(2015, 6, 1); // Pass fields to c'tor. - int diff = day - june_1; // Num days between 'day' and June 1 - EXPECT_EQ(27, diff); - - // Fields smaller than alignment are floored to their minimum value. - absl::CivilDay day_floor(2015, 1, 2, 9, 9, 9); - EXPECT_EQ(0, day_floor.hour()); // 09:09:09 is floored - EXPECT_EQ(absl::CivilDay(2015, 1, 2), day_floor); - - // Unspecified fields default to their minium value - absl::CivilDay day_default(2015); // Defaults to Jan 1 - EXPECT_EQ(absl::CivilDay(2015, 1, 1), day_default); - - // Iterates all the days of June. - absl::CivilMonth june(day); // CivilDay -> CivilMonth - absl::CivilMonth july = june + 1; - for (absl::CivilDay day = june_1; day < july; ++day) { - // ... - } -} - -} // namespace diff --git a/third_party/abseil_cpp/absl/time/clock.cc b/third_party/abseil_cpp/absl/time/clock.cc deleted file mode 100644 index 6862e011be1f..000000000000 --- a/third_party/abseil_cpp/absl/time/clock.cc +++ /dev/null @@ -1,567 +0,0 @@ -// Copyright 2017 The Abseil Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "absl/time/clock.h" - -#include "absl/base/attributes.h" - -#ifdef _WIN32 -#include -#endif - -#include -#include -#include -#include -#include -#include - -#include "absl/base/internal/spinlock.h" -#include "absl/base/internal/unscaledcycleclock.h" -#include "absl/base/macros.h" -#include "absl/base/port.h" -#include "absl/base/thread_annotations.h" - -namespace absl { -ABSL_NAMESPACE_BEGIN -Time Now() { - // TODO(bww): Get a timespec instead so we don't have to divide. - int64_t n = absl::GetCurrentTimeNanos(); - if (n >= 0) { - return time_internal::FromUnixDuration( - time_internal::MakeDuration(n / 1000000000, n % 1000000000 * 4)); - } - return time_internal::FromUnixDuration(absl::Nanoseconds(n)); -} -ABSL_NAMESPACE_END -} // namespace absl - -// Decide if we should use the fast GetCurrentTimeNanos() algorithm -// based on the cyclecounter, otherwise just get the time directly -// from the OS on every call. This can be chosen at compile-time via -// -DABSL_USE_CYCLECLOCK_FOR_GET_CURRENT_TIME_NANOS=[0|1] -#ifndef ABSL_USE_CYCLECLOCK_FOR_GET_CURRENT_TIME_NANOS -#if ABSL_USE_UNSCALED_CYCLECLOCK -#define ABSL_USE_CYCLECLOCK_FOR_GET_CURRENT_TIME_NANOS 1 -#else -#define ABSL_USE_CYCLECLOCK_FOR_GET_CURRENT_TIME_NANOS 0 -#endif -#endif - -#if defined(__APPLE__) || defined(_WIN32) -#include "absl/time/internal/get_current_time_chrono.inc" -#else -#include "absl/time/internal/get_current_time_posix.inc" -#endif - -// Allows override by test. -#ifndef GET_CURRENT_TIME_NANOS_FROM_SYSTEM -#define GET_CURRENT_TIME_NANOS_FROM_SYSTEM() \ - ::absl::time_internal::GetCurrentTimeNanosFromSystem() -#endif - -#if !ABSL_USE_CYCLECLOCK_FOR_GET_CURRENT_TIME_NANOS -namespace absl { -ABSL_NAMESPACE_BEGIN -int64_t GetCurrentTimeNanos() { return GET_CURRENT_TIME_NANOS_FROM_SYSTEM(); } -ABSL_NAMESPACE_END -} // namespace absl -#else // Use the cyclecounter-based implementation below. - -// Allows override by test. -#ifndef GET_CURRENT_TIME_NANOS_CYCLECLOCK_NOW -#define GET_CURRENT_TIME_NANOS_CYCLECLOCK_NOW() \ - ::absl::time_internal::UnscaledCycleClockWrapperForGetCurrentTime::Now() -#endif - -// The following counters are used only by the test code. -static int64_t stats_initializations; -static int64_t stats_reinitializations; -static int64_t stats_calibrations; -static int64_t stats_slow_paths; -static int64_t stats_fast_slow_paths; - -namespace absl { -ABSL_NAMESPACE_BEGIN -namespace time_internal { -// This is a friend wrapper around UnscaledCycleClock::Now() -// (needed to access UnscaledCycleClock). -class UnscaledCycleClockWrapperForGetCurrentTime { - public: - static int64_t Now() { return base_internal::UnscaledCycleClock::Now(); } -}; -} // namespace time_internal - -// uint64_t is used in this module to provide an extra bit in multiplications - -// Return the time in ns as told by the kernel interface. Place in *cycleclock -// the value of the cycleclock at about the time of the syscall. -// This call represents the time base that this module synchronizes to. -// Ensures that *cycleclock does not step back by up to (1 << 16) from -// last_cycleclock, to discard small backward counter steps. (Larger steps are -// assumed to be complete resyncs, which shouldn't happen. If they do, a full -// reinitialization of the outer algorithm should occur.) -static int64_t GetCurrentTimeNanosFromKernel(uint64_t last_cycleclock, - uint64_t *cycleclock) { - // We try to read clock values at about the same time as the kernel clock. - // This value gets adjusted up or down as estimate of how long that should - // take, so we can reject attempts that take unusually long. - static std::atomic approx_syscall_time_in_cycles{10 * 1000}; - - uint64_t local_approx_syscall_time_in_cycles = // local copy - approx_syscall_time_in_cycles.load(std::memory_order_relaxed); - - int64_t current_time_nanos_from_system; - uint64_t before_cycles; - uint64_t after_cycles; - uint64_t elapsed_cycles; - int loops = 0; - do { - before_cycles = GET_CURRENT_TIME_NANOS_CYCLECLOCK_NOW(); - current_time_nanos_from_system = GET_CURRENT_TIME_NANOS_FROM_SYSTEM(); - after_cycles = GET_CURRENT_TIME_NANOS_CYCLECLOCK_NOW(); - // elapsed_cycles is unsigned, so is large on overflow - elapsed_cycles = after_cycles - before_cycles; - if (elapsed_cycles >= local_approx_syscall_time_in_cycles && - ++loops == 20) { // clock changed frequencies? Back off. - loops = 0; - if (local_approx_syscall_time_in_cycles < 1000 * 1000) { - local_approx_syscall_time_in_cycles = - (local_approx_syscall_time_in_cycles + 1) << 1; - } - approx_syscall_time_in_cycles.store( - local_approx_syscall_time_in_cycles, - std::memory_order_relaxed); - } - } while (elapsed_cycles >= local_approx_syscall_time_in_cycles || - last_cycleclock - after_cycles < (static_cast(1) << 16)); - - // Number of times in a row we've seen a kernel time call take substantially - // less than approx_syscall_time_in_cycles. - static std::atomic seen_smaller{ 0 }; - - // Adjust approx_syscall_time_in_cycles to be within a factor of 2 - // of the typical time to execute one iteration of the loop above. - if ((local_approx_syscall_time_in_cycles >> 1) < elapsed_cycles) { - // measured time is no smaller than half current approximation - seen_smaller.store(0, std::memory_order_relaxed); - } else if (seen_smaller.fetch_add(1, std::memory_order_relaxed) >= 3) { - // smaller delays several times in a row; reduce approximation by 12.5% - const uint64_t new_approximation = - local_approx_syscall_time_in_cycles - - (local_approx_syscall_time_in_cycles >> 3); - approx_syscall_time_in_cycles.store(new_approximation, - std::memory_order_relaxed); - seen_smaller.store(0, std::memory_order_relaxed); - } - - *cycleclock = after_cycles; - return current_time_nanos_from_system; -} - - -// --------------------------------------------------------------------- -// An implementation of reader-write locks that use no atomic ops in the read -// case. This is a generalization of Lamport's method for reading a multiword -// clock. Increment a word on each write acquisition, using the low-order bit -// as a spinlock; the word is the high word of the "clock". Readers read the -// high word, then all other data, then the high word again, and repeat the -// read if the reads of the high words yields different answers, or an odd -// value (either case suggests possible interference from a writer). -// Here we use a spinlock to ensure only one writer at a time, rather than -// spinning on the bottom bit of the word to benefit from SpinLock -// spin-delay tuning. - -// Acquire seqlock (*seq) and return the value to be written to unlock. -static inline uint64_t SeqAcquire(std::atomic *seq) { - uint64_t x = seq->fetch_add(1, std::memory_order_relaxed); - - // We put a release fence between update to *seq and writes to shared data. - // Thus all stores to shared data are effectively release operations and - // update to *seq above cannot be re-ordered past any of them. Note that - // this barrier is not for the fetch_add above. A release barrier for the - // fetch_add would be before it, not after. - std::atomic_thread_fence(std::memory_order_release); - - return x + 2; // original word plus 2 -} - -// Release seqlock (*seq) by writing x to it---a value previously returned by -// SeqAcquire. -static inline void SeqRelease(std::atomic *seq, uint64_t x) { - // The unlock store to *seq must have release ordering so that all - // updates to shared data must finish before this store. - seq->store(x, std::memory_order_release); // release lock for readers -} - -// --------------------------------------------------------------------- - -// "nsscaled" is unit of time equal to a (2**kScale)th of a nanosecond. -enum { kScale = 30 }; - -// The minimum interval between samples of the time base. -// We pick enough time to amortize the cost of the sample, -// to get a reasonably accurate cycle counter rate reading, -// and not so much that calculations will overflow 64-bits. -static const uint64_t kMinNSBetweenSamples = 2000 << 20; - -// We require that kMinNSBetweenSamples shifted by kScale -// have at least a bit left over for 64-bit calculations. -static_assert(((kMinNSBetweenSamples << (kScale + 1)) >> (kScale + 1)) == - kMinNSBetweenSamples, - "cannot represent kMaxBetweenSamplesNSScaled"); - -// A reader-writer lock protecting the static locations below. -// See SeqAcquire() and SeqRelease() above. -ABSL_CONST_INIT static absl::base_internal::SpinLock lock( - absl::kConstInit, base_internal::SCHEDULE_KERNEL_ONLY); -ABSL_CONST_INIT static std::atomic seq(0); - -// data from a sample of the kernel's time value -struct TimeSampleAtomic { - std::atomic raw_ns; // raw kernel time - std::atomic base_ns; // our estimate of time - std::atomic base_cycles; // cycle counter reading - std::atomic nsscaled_per_cycle; // cycle period - // cycles before we'll sample again (a scaled reciprocal of the period, - // to avoid a division on the fast path). - std::atomic min_cycles_per_sample; -}; -// Same again, but with non-atomic types -struct TimeSample { - uint64_t raw_ns; // raw kernel time - uint64_t base_ns; // our estimate of time - uint64_t base_cycles; // cycle counter reading - uint64_t nsscaled_per_cycle; // cycle period - uint64_t min_cycles_per_sample; // approx cycles before next sample -}; - -static struct TimeSampleAtomic last_sample; // the last sample; under seq - -static int64_t GetCurrentTimeNanosSlowPath() ABSL_ATTRIBUTE_COLD; - -// Read the contents of *atomic into *sample. -// Each field is read atomically, but to maintain atomicity between fields, -// the access must be done under a lock. -static void ReadTimeSampleAtomic(const struct TimeSampleAtomic *atomic, - struct TimeSample *sample) { - sample->base_ns = atomic->base_ns.load(std::memory_order_relaxed); - sample->base_cycles = atomic->base_cycles.load(std::memory_order_relaxed); - sample->nsscaled_per_cycle = - atomic->nsscaled_per_cycle.load(std::memory_order_relaxed); - sample->min_cycles_per_sample = - atomic->min_cycles_per_sample.load(std::memory_order_relaxed); - sample->raw_ns = atomic->raw_ns.load(std::memory_order_relaxed); -} - -// Public routine. -// Algorithm: We wish to compute real time from a cycle counter. In normal -// operation, we construct a piecewise linear approximation to the kernel time -// source, using the cycle counter value. The start of each line segment is at -// the same point as the end of the last, but may have a different slope (that -// is, a different idea of the cycle counter frequency). Every couple of -// seconds, the kernel time source is sampled and compared with the current -// approximation. A new slope is chosen that, if followed for another couple -// of seconds, will correct the error at the current position. The information -// for a sample is in the "last_sample" struct. The linear approximation is -// estimated_time = last_sample.base_ns + -// last_sample.ns_per_cycle * (counter_reading - last_sample.base_cycles) -// (ns_per_cycle is actually stored in different units and scaled, to avoid -// overflow). The base_ns of the next linear approximation is the -// estimated_time using the last approximation; the base_cycles is the cycle -// counter value at that time; the ns_per_cycle is the number of ns per cycle -// measured since the last sample, but adjusted so that most of the difference -// between the estimated_time and the kernel time will be corrected by the -// estimated time to the next sample. In normal operation, this algorithm -// relies on: -// - the cycle counter and kernel time rates not changing a lot in a few -// seconds. -// - the client calling into the code often compared to a couple of seconds, so -// the time to the next correction can be estimated. -// Any time ns_per_cycle is not known, a major error is detected, or the -// assumption about frequent calls is violated, the implementation returns the -// kernel time. It records sufficient data that a linear approximation can -// resume a little later. - -int64_t GetCurrentTimeNanos() { - // read the data from the "last_sample" struct (but don't need raw_ns yet) - // The reads of "seq" and test of the values emulate a reader lock. - uint64_t base_ns; - uint64_t base_cycles; - uint64_t nsscaled_per_cycle; - uint64_t min_cycles_per_sample; - uint64_t seq_read0; - uint64_t seq_read1; - - // If we have enough information to interpolate, the value returned will be - // derived from this cycleclock-derived time estimate. On some platforms - // (POWER) the function to retrieve this value has enough complexity to - // contribute to register pressure - reading it early before initializing - // the other pieces of the calculation minimizes spill/restore instructions, - // minimizing icache cost. - uint64_t now_cycles = GET_CURRENT_TIME_NANOS_CYCLECLOCK_NOW(); - - // Acquire pairs with the barrier in SeqRelease - if this load sees that - // store, the shared-data reads necessarily see that SeqRelease's updates - // to the same shared data. - seq_read0 = seq.load(std::memory_order_acquire); - - base_ns = last_sample.base_ns.load(std::memory_order_relaxed); - base_cycles = last_sample.base_cycles.load(std::memory_order_relaxed); - nsscaled_per_cycle = - last_sample.nsscaled_per_cycle.load(std::memory_order_relaxed); - min_cycles_per_sample = - last_sample.min_cycles_per_sample.load(std::memory_order_relaxed); - - // This acquire fence pairs with the release fence in SeqAcquire. Since it - // is sequenced between reads of shared data and seq_read1, the reads of - // shared data are effectively acquiring. - std::atomic_thread_fence(std::memory_order_acquire); - - // The shared-data reads are effectively acquire ordered, and the - // shared-data writes are effectively release ordered. Therefore if our - // shared-data reads see any of a particular update's shared-data writes, - // seq_read1 is guaranteed to see that update's SeqAcquire. - seq_read1 = seq.load(std::memory_order_relaxed); - - // Fast path. Return if min_cycles_per_sample has not yet elapsed since the - // last sample, and we read a consistent sample. The fast path activates - // only when min_cycles_per_sample is non-zero, which happens when we get an - // estimate for the cycle time. The predicate will fail if now_cycles < - // base_cycles, or if some other thread is in the slow path. - // - // Since we now read now_cycles before base_ns, it is possible for now_cycles - // to be less than base_cycles (if we were interrupted between those loads and - // last_sample was updated). This is harmless, because delta_cycles will wrap - // and report a time much much bigger than min_cycles_per_sample. In that case - // we will take the slow path. - uint64_t delta_cycles = now_cycles - base_cycles; - if (seq_read0 == seq_read1 && (seq_read0 & 1) == 0 && - delta_cycles < min_cycles_per_sample) { - return base_ns + ((delta_cycles * nsscaled_per_cycle) >> kScale); - } - return GetCurrentTimeNanosSlowPath(); -} - -// Return (a << kScale)/b. -// Zero is returned if b==0. Scaling is performed internally to -// preserve precision without overflow. -static uint64_t SafeDivideAndScale(uint64_t a, uint64_t b) { - // Find maximum safe_shift so that - // 0 <= safe_shift <= kScale and (a << safe_shift) does not overflow. - int safe_shift = kScale; - while (((a << safe_shift) >> safe_shift) != a) { - safe_shift--; - } - uint64_t scaled_b = b >> (kScale - safe_shift); - uint64_t quotient = 0; - if (scaled_b != 0) { - quotient = (a << safe_shift) / scaled_b; - } - return quotient; -} - -static uint64_t UpdateLastSample( - uint64_t now_cycles, uint64_t now_ns, uint64_t delta_cycles, - const struct TimeSample *sample) ABSL_ATTRIBUTE_COLD; - -// The slow path of GetCurrentTimeNanos(). This is taken while gathering -// initial samples, when enough time has elapsed since the last sample, and if -// any other thread is writing to last_sample. -// -// Manually mark this 'noinline' to minimize stack frame size of the fast -// path. Without this, sometimes a compiler may inline this big block of code -// into the fast path. That causes lots of register spills and reloads that -// are unnecessary unless the slow path is taken. -// -// TODO(absl-team): Remove this attribute when our compiler is smart enough -// to do the right thing. -ABSL_ATTRIBUTE_NOINLINE -static int64_t GetCurrentTimeNanosSlowPath() ABSL_LOCKS_EXCLUDED(lock) { - // Serialize access to slow-path. Fast-path readers are not blocked yet, and - // code below must not modify last_sample until the seqlock is acquired. - lock.Lock(); - - // Sample the kernel time base. This is the definition of - // "now" if we take the slow path. - static uint64_t last_now_cycles; // protected by lock - uint64_t now_cycles; - uint64_t now_ns = GetCurrentTimeNanosFromKernel(last_now_cycles, &now_cycles); - last_now_cycles = now_cycles; - - uint64_t estimated_base_ns; - - // ---------- - // Read the "last_sample" values again; this time holding the write lock. - struct TimeSample sample; - ReadTimeSampleAtomic(&last_sample, &sample); - - // ---------- - // Try running the fast path again; another thread may have updated the - // sample between our run of the fast path and the sample we just read. - uint64_t delta_cycles = now_cycles - sample.base_cycles; - if (delta_cycles < sample.min_cycles_per_sample) { - // Another thread updated the sample. This path does not take the seqlock - // so that blocked readers can make progress without blocking new readers. - estimated_base_ns = sample.base_ns + - ((delta_cycles * sample.nsscaled_per_cycle) >> kScale); - stats_fast_slow_paths++; - } else { - estimated_base_ns = - UpdateLastSample(now_cycles, now_ns, delta_cycles, &sample); - } - - lock.Unlock(); - - return estimated_base_ns; -} - -// Main part of the algorithm. Locks out readers, updates the approximation -// using the new sample from the kernel, and stores the result in last_sample -// for readers. Returns the new estimated time. -static uint64_t UpdateLastSample(uint64_t now_cycles, uint64_t now_ns, - uint64_t delta_cycles, - const struct TimeSample *sample) - ABSL_EXCLUSIVE_LOCKS_REQUIRED(lock) { - uint64_t estimated_base_ns = now_ns; - uint64_t lock_value = SeqAcquire(&seq); // acquire seqlock to block readers - - // The 5s in the next if-statement limits the time for which we will trust - // the cycle counter and our last sample to give a reasonable result. - // Errors in the rate of the source clock can be multiplied by the ratio - // between this limit and kMinNSBetweenSamples. - if (sample->raw_ns == 0 || // no recent sample, or clock went backwards - sample->raw_ns + static_cast(5) * 1000 * 1000 * 1000 < now_ns || - now_ns < sample->raw_ns || now_cycles < sample->base_cycles) { - // record this sample, and forget any previously known slope. - last_sample.raw_ns.store(now_ns, std::memory_order_relaxed); - last_sample.base_ns.store(estimated_base_ns, std::memory_order_relaxed); - last_sample.base_cycles.store(now_cycles, std::memory_order_relaxed); - last_sample.nsscaled_per_cycle.store(0, std::memory_order_relaxed); - last_sample.min_cycles_per_sample.store(0, std::memory_order_relaxed); - stats_initializations++; - } else if (sample->raw_ns + 500 * 1000 * 1000 < now_ns && - sample->base_cycles + 50 < now_cycles) { - // Enough time has passed to compute the cycle time. - if (sample->nsscaled_per_cycle != 0) { // Have a cycle time estimate. - // Compute time from counter reading, but avoiding overflow - // delta_cycles may be larger than on the fast path. - uint64_t estimated_scaled_ns; - int s = -1; - do { - s++; - estimated_scaled_ns = (delta_cycles >> s) * sample->nsscaled_per_cycle; - } while (estimated_scaled_ns / sample->nsscaled_per_cycle != - (delta_cycles >> s)); - estimated_base_ns = sample->base_ns + - (estimated_scaled_ns >> (kScale - s)); - } - - // Compute the assumed cycle time kMinNSBetweenSamples ns into the future - // assuming the cycle counter rate stays the same as the last interval. - uint64_t ns = now_ns - sample->raw_ns; - uint64_t measured_nsscaled_per_cycle = SafeDivideAndScale(ns, delta_cycles); - - uint64_t assumed_next_sample_delta_cycles = - SafeDivideAndScale(kMinNSBetweenSamples, measured_nsscaled_per_cycle); - - int64_t diff_ns = now_ns - estimated_base_ns; // estimate low by this much - - // We want to set nsscaled_per_cycle so that our estimate of the ns time - // at the assumed cycle time is the assumed ns time. - // That is, we want to set nsscaled_per_cycle so: - // kMinNSBetweenSamples + diff_ns == - // (assumed_next_sample_delta_cycles * nsscaled_per_cycle) >> kScale - // But we wish to damp oscillations, so instead correct only most - // of our current error, by solving: - // kMinNSBetweenSamples + diff_ns - (diff_ns / 16) == - // (assumed_next_sample_delta_cycles * nsscaled_per_cycle) >> kScale - ns = kMinNSBetweenSamples + diff_ns - (diff_ns / 16); - uint64_t new_nsscaled_per_cycle = - SafeDivideAndScale(ns, assumed_next_sample_delta_cycles); - if (new_nsscaled_per_cycle != 0 && - diff_ns < 100 * 1000 * 1000 && -diff_ns < 100 * 1000 * 1000) { - // record the cycle time measurement - last_sample.nsscaled_per_cycle.store( - new_nsscaled_per_cycle, std::memory_order_relaxed); - uint64_t new_min_cycles_per_sample = - SafeDivideAndScale(kMinNSBetweenSamples, new_nsscaled_per_cycle); - last_sample.min_cycles_per_sample.store( - new_min_cycles_per_sample, std::memory_order_relaxed); - stats_calibrations++; - } else { // something went wrong; forget the slope - last_sample.nsscaled_per_cycle.store(0, std::memory_order_relaxed); - last_sample.min_cycles_per_sample.store(0, std::memory_order_relaxed); - estimated_base_ns = now_ns; - stats_reinitializations++; - } - last_sample.raw_ns.store(now_ns, std::memory_order_relaxed); - last_sample.base_ns.store(estimated_base_ns, std::memory_order_relaxed); - last_sample.base_cycles.store(now_cycles, std::memory_order_relaxed); - } else { - // have a sample, but no slope; waiting for enough time for a calibration - stats_slow_paths++; - } - - SeqRelease(&seq, lock_value); // release the readers - - return estimated_base_ns; -} -ABSL_NAMESPACE_END -} // namespace absl -#endif // ABSL_USE_CYCLECLOCK_FOR_GET_CURRENT_TIME_NANOS - -namespace absl { -ABSL_NAMESPACE_BEGIN -namespace { - -// Returns the maximum duration that SleepOnce() can sleep for. -constexpr absl::Duration MaxSleep() { -#ifdef _WIN32 - // Windows Sleep() takes unsigned long argument in milliseconds. - return absl::Milliseconds( - std::numeric_limits::max()); // NOLINT(runtime/int) -#else - return absl::Seconds(std::numeric_limits::max()); -#endif -} - -// Sleeps for the given duration. -// REQUIRES: to_sleep <= MaxSleep(). -void SleepOnce(absl::Duration to_sleep) { -#ifdef _WIN32 - Sleep(to_sleep / absl::Milliseconds(1)); -#else - struct timespec sleep_time = absl::ToTimespec(to_sleep); - while (nanosleep(&sleep_time, &sleep_time) != 0 && errno == EINTR) { - // Ignore signals and wait for the full interval to elapse. - } -#endif -} - -} // namespace -ABSL_NAMESPACE_END -} // namespace absl - -extern "C" { - -ABSL_ATTRIBUTE_WEAK void AbslInternalSleepFor(absl::Duration duration) { - while (duration > absl::ZeroDuration()) { - absl::Duration to_sleep = std::min(duration, absl::MaxSleep()); - absl::SleepOnce(to_sleep); - duration -= to_sleep; - } -} - -} // extern "C" diff --git a/third_party/abseil_cpp/absl/time/clock.h b/third_party/abseil_cpp/absl/time/clock.h deleted file mode 100644 index 27764a922d5e..000000000000 --- a/third_party/abseil_cpp/absl/time/clock.h +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2017 The Abseil Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// ----------------------------------------------------------------------------- -// File: clock.h -// ----------------------------------------------------------------------------- -// -// This header file contains utility functions for working with the system-wide -// realtime clock. For descriptions of the main time abstractions used within -// this header file, consult the time.h header file. -#ifndef ABSL_TIME_CLOCK_H_ -#define ABSL_TIME_CLOCK_H_ - -#include "absl/base/macros.h" -#include "absl/time/time.h" - -namespace absl { -ABSL_NAMESPACE_BEGIN - -// Now() -// -// Returns the current time, expressed as an `absl::Time` absolute time value. -absl::Time Now(); - -// GetCurrentTimeNanos() -// -// Returns the current time, expressed as a count of nanoseconds since the Unix -// Epoch (https://en.wikipedia.org/wiki/Unix_time). Prefer `absl::Now()` instead -// for all but the most performance-sensitive cases (i.e. when you are calling -// this function hundreds of thousands of times per second). -int64_t GetCurrentTimeNanos(); - -// SleepFor() -// -// Sleeps for the specified duration, expressed as an `absl::Duration`. -// -// Notes: -// * Signal interruptions will not reduce the sleep duration. -// * Returns immediately when passed a nonpositive duration. -void SleepFor(absl::Duration duration); - -ABSL_NAMESPACE_END -} // namespace absl - -// ----------------------------------------------------------------------------- -// Implementation Details -// ----------------------------------------------------------------------------- - -// In some build configurations we pass --detect-odr-violations to the -// gold linker. This causes it to flag weak symbol overrides as ODR -// violations. Because ODR only applies to C++ and not C, -// --detect-odr-violations ignores symbols not mangled with C++ names. -// By changing our extension points to be extern "C", we dodge this -// check. -extern "C" { -void AbslInternalSleepFor(absl::Duration duration); -} // extern "C" - -inline void absl::SleepFor(absl::Duration duration) { - AbslInternalSleepFor(duration); -} - -#endif // ABSL_TIME_CLOCK_H_ diff --git a/third_party/abseil_cpp/absl/time/clock_benchmark.cc b/third_party/abseil_cpp/absl/time/clock_benchmark.cc deleted file mode 100644 index c5c795ecbd23..000000000000 --- a/third_party/abseil_cpp/absl/time/clock_benchmark.cc +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2018 The Abseil Authors. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "absl/time/clock.h" - -#if !defined(_WIN32) -#include -#else -#include -#endif // _WIN32 -#include - -#include "absl/base/internal/cycleclock.h" -#include "benchmark/benchmark.h" - -namespace { - -void BM_Clock_Now_AbslTime(benchmark::State& state) { - while (state.KeepRunning()) { - benchmark::DoNotOptimize(absl::Now()); - } -} -BENCHMARK(BM_Clock_Now_AbslTime); - -void BM_Clock_Now_GetCurrentTimeNanos(benchmark::State& state) { - while (state.KeepRunning()) { - benchmark::DoNotOptimize(absl::GetCurrentTimeNanos()); - } -} -BENCHMARK(BM_Clock_Now_GetCurrentTimeNanos); - -void BM_Clock_Now_AbslTime_ToUnixNanos(benchmark::State& state) { - while (state.KeepRunning()) { - benchmark::DoNotOptimize(absl::ToUnixNanos(absl::Now())); - } -} -BENCHMARK(BM_Clock_Now_AbslTime_ToUnixNanos); - -void BM_Clock_Now_CycleClock(benchmark::State& state) { - while (state.KeepRunning()) { - benchmark::DoNotOptimize(absl::base_internal::CycleClock::Now()); - } -} -BENCHMARK(BM_Clock_Now_CycleClock); - -#if !defined(_WIN32) -static void BM_Clock_Now_gettimeofday(benchmark::State& state) { - struct timeval tv; - while (state.KeepRunning()) { - benchmark::DoNotOptimize(gettimeofday(&tv, nullptr)); - } -} -BENCHMARK(BM_Clock_Now_gettimeofday); - -static void BM_Clock_Now_clock_gettime(benchmark::State& state) { - struct timespec ts; - while (state.KeepRunning()) { - benchmark::DoNotOptimize(clock_gettime(CLOCK_REALTIME, &ts)); - } -} -BENCHMARK(BM_Clock_Now_clock_gettime); -#endif // _WIN32 - -} // namespace diff --git a/third_party/abseil_cpp/absl/time/clock_test.cc b/third_party/abseil_cpp/absl/time/clock_test.cc deleted file mode 100644 index 4bcfc6bc7272..000000000000 --- a/third_party/abseil_cpp/absl/time/clock_test.cc +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2017 The Abseil Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "absl/time/clock.h" - -#include "absl/base/config.h" -#if defined(ABSL_HAVE_ALARM) -#include -#include -#elif defined(__linux__) || defined(__APPLE__) -#error all known Linux and Apple targets have alarm -#endif - -#include "gtest/gtest.h" -#include "absl/time/time.h" - -namespace { - -TEST(Time, Now) { - const absl::Time before = absl::FromUnixNanos(absl::GetCurrentTimeNanos()); - const absl::Time now = absl::Now(); - const absl::Time after = absl::FromUnixNanos(absl::GetCurrentTimeNanos()); - EXPECT_GE(now, before); - EXPECT_GE(after, now); -} - -enum class AlarmPolicy { kWithoutAlarm, kWithAlarm }; - -#if defined(ABSL_HAVE_ALARM) -bool alarm_handler_invoked = false; - -void AlarmHandler(int signo) { - ASSERT_EQ(signo, SIGALRM); - alarm_handler_invoked = true; -} -#endif - -// Does SleepFor(d) take between lower_bound and upper_bound at least -// once between now and (now + timeout)? If requested (and supported), -// add an alarm for the middle of the sleep period and expect it to fire. -bool SleepForBounded(absl::Duration d, absl::Duration lower_bound, - absl::Duration upper_bound, absl::Duration timeout, - AlarmPolicy alarm_policy, int* attempts) { - const absl::Time deadline = absl::Now() + timeout; - while (absl::Now() < deadline) { -#if defined(ABSL_HAVE_ALARM) - sig_t old_alarm = SIG_DFL; - if (alarm_policy == AlarmPolicy::kWithAlarm) { - alarm_handler_invoked = false; - old_alarm = signal(SIGALRM, AlarmHandler); - alarm(absl::ToInt64Seconds(d / 2)); - } -#else - EXPECT_EQ(alarm_policy, AlarmPolicy::kWithoutAlarm); -#endif - ++*attempts; - absl::Time start = absl::Now(); - absl::SleepFor(d); - absl::Duration actual = absl::Now() - start; -#if defined(ABSL_HAVE_ALARM) - if (alarm_policy == AlarmPolicy::kWithAlarm) { - signal(SIGALRM, old_alarm); - if (!alarm_handler_invoked) continue; - } -#endif - if (lower_bound <= actual && actual <= upper_bound) { - return true; // yes, the SleepFor() was correctly bounded - } - } - return false; -} - -testing::AssertionResult AssertSleepForBounded(absl::Duration d, - absl::Duration early, - absl::Duration late, - absl::Duration timeout, - AlarmPolicy alarm_policy) { - const absl::Duration lower_bound = d - early; - const absl::Duration upper_bound = d + late; - int attempts = 0; - if (SleepForBounded(d, lower_bound, upper_bound, timeout, alarm_policy, - &attempts)) { - return testing::AssertionSuccess(); - } - return testing::AssertionFailure() - << "SleepFor(" << d << ") did not return within [" << lower_bound - << ":" << upper_bound << "] in " << attempts << " attempt" - << (attempts == 1 ? "" : "s") << " over " << timeout - << (alarm_policy == AlarmPolicy::kWithAlarm ? " with" : " without") - << " an alarm"; -} - -// Tests that SleepFor() returns neither too early nor too late. -TEST(SleepFor, Bounded) { - const absl::Duration d = absl::Milliseconds(2500); - const absl::Duration early = absl::Milliseconds(100); - const absl::Duration late = absl::Milliseconds(300); - const absl::Duration timeout = 48 * d; - EXPECT_TRUE(AssertSleepForBounded(d, early, late, timeout, - AlarmPolicy::kWithoutAlarm)); -#if defined(ABSL_HAVE_ALARM) - EXPECT_TRUE(AssertSleepForBounded(d, early, late, timeout, - AlarmPolicy::kWithAlarm)); -#endif -} - -} // namespace diff --git a/third_party/abseil_cpp/absl/time/duration.cc b/third_party/abseil_cpp/absl/time/duration.cc deleted file mode 100644 index 4443109a5121..000000000000 --- a/third_party/abseil_cpp/absl/time/duration.cc +++ /dev/null @@ -1,954 +0,0 @@ -// Copyright 2017 The Abseil Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// The implementation of the absl::Duration class, which is declared in -// //absl/time.h. This class behaves like a numeric type; it has no public -// methods and is used only through the operators defined here. -// -// Implementation notes: -// -// An absl::Duration is represented as -// -// rep_hi_ : (int64_t) Whole seconds -// rep_lo_ : (uint32_t) Fractions of a second -// -// The seconds value (rep_hi_) may be positive or negative as appropriate. -// The fractional seconds (rep_lo_) is always a positive offset from rep_hi_. -// The API for Duration guarantees at least nanosecond resolution, which -// means rep_lo_ could have a max value of 1B - 1 if it stored nanoseconds. -// However, to utilize more of the available 32 bits of space in rep_lo_, -// we instead store quarters of a nanosecond in rep_lo_ resulting in a max -// value of 4B - 1. This allows us to correctly handle calculations like -// 0.5 nanos + 0.5 nanos = 1 nano. The following example shows the actual -// Duration rep using quarters of a nanosecond. -// -// 2.5 sec = {rep_hi_=2, rep_lo_=2000000000} // lo = 4 * 500000000 -// -2.5 sec = {rep_hi_=-3, rep_lo_=2000000000} -// -// Infinite durations are represented as Durations with the rep_lo_ field set -// to all 1s. -// -// +InfiniteDuration: -// rep_hi_ : kint64max -// rep_lo_ : ~0U -// -// -InfiniteDuration: -// rep_hi_ : kint64min -// rep_lo_ : ~0U -// -// Arithmetic overflows/underflows to +/- infinity and saturates. - -#if defined(_MSC_VER) -#include // for timeval -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "absl/base/casts.h" -#include "absl/base/macros.h" -#include "absl/numeric/int128.h" -#include "absl/strings/string_view.h" -#include "absl/strings/strip.h" -#include "absl/time/time.h" - -namespace absl { -ABSL_NAMESPACE_BEGIN - -namespace { - -using time_internal::kTicksPerNanosecond; -using time_internal::kTicksPerSecond; - -constexpr int64_t kint64max = std::numeric_limits::max(); -constexpr int64_t kint64min = std::numeric_limits::min(); - -// Can't use std::isinfinite() because it doesn't exist on windows. -inline bool IsFinite(double d) { - if (std::isnan(d)) return false; - return d != std::numeric_limits::infinity() && - d != -std::numeric_limits::infinity(); -} - -inline bool IsValidDivisor(double d) { - if (std::isnan(d)) return false; - return d != 0.0; -} - -// Can't use std::round() because it is only available in C++11. -// Note that we ignore the possibility of floating-point over/underflow. -template -inline double Round(Double d) { - return d < 0 ? std::ceil(d - 0.5) : std::floor(d + 0.5); -} - -// *sec may be positive or negative. *ticks must be in the range -// -kTicksPerSecond < *ticks < kTicksPerSecond. If *ticks is negative it -// will be normalized to a positive value by adjusting *sec accordingly. -inline void NormalizeTicks(int64_t* sec, int64_t* ticks) { - if (*ticks < 0) { - --*sec; - *ticks += kTicksPerSecond; - } -} - -// Makes a uint128 from the absolute value of the given scalar. -inline uint128 MakeU128(int64_t a) { - uint128 u128 = 0; - if (a < 0) { - ++u128; - ++a; // Makes it safe to negate 'a' - a = -a; - } - u128 += static_cast(a); - return u128; -} - -// Makes a uint128 count of ticks out of the absolute value of the Duration. -inline uint128 MakeU128Ticks(Duration d) { - int64_t rep_hi = time_internal::GetRepHi(d); - uint32_t rep_lo = time_internal::GetRepLo(d); - if (rep_hi < 0) { - ++rep_hi; - rep_hi = -rep_hi; - rep_lo = kTicksPerSecond - rep_lo; - } - uint128 u128 = static_cast(rep_hi); - u128 *= static_cast(kTicksPerSecond); - u128 += rep_lo; - return u128; -} - -// Breaks a uint128 of ticks into a Duration. -inline Duration MakeDurationFromU128(uint128 u128, bool is_neg) { - int64_t rep_hi; - uint32_t rep_lo; - const uint64_t h64 = Uint128High64(u128); - const uint64_t l64 = Uint128Low64(u128); - if (h64 == 0) { // fastpath - const uint64_t hi = l64 / kTicksPerSecond; - rep_hi = static_cast(hi); - rep_lo = static_cast(l64 - hi * kTicksPerSecond); - } else { - // kMaxRepHi64 is the high 64 bits of (2^63 * kTicksPerSecond). - // Any positive tick count whose high 64 bits are >= kMaxRepHi64 - // is not representable as a Duration. A negative tick count can - // have its high 64 bits == kMaxRepHi64 but only when the low 64 - // bits are all zero, otherwise it is not representable either. - const uint64_t kMaxRepHi64 = 0x77359400UL; - if (h64 >= kMaxRepHi64) { - if (is_neg && h64 == kMaxRepHi64 && l64 == 0) { - // Avoid trying to represent -kint64min below. - return time_internal::MakeDuration(kint64min); - } - return is_neg ? -InfiniteDuration() : InfiniteDuration(); - } - const uint128 kTicksPerSecond128 = static_cast(kTicksPerSecond); - const uint128 hi = u128 / kTicksPerSecond128; - rep_hi = static_cast(Uint128Low64(hi)); - rep_lo = - static_cast(Uint128Low64(u128 - hi * kTicksPerSecond128)); - } - if (is_neg) { - rep_hi = -rep_hi; - if (rep_lo != 0) { - --rep_hi; - rep_lo = kTicksPerSecond - rep_lo; - } - } - return time_internal::MakeDuration(rep_hi, rep_lo); -} - -// Convert between int64_t and uint64_t, preserving representation. This -// allows us to do arithmetic in the unsigned domain, where overflow has -// well-defined behavior. See operator+=() and operator-=(). -// -// C99 7.20.1.1.1, as referenced by C++11 18.4.1.2, says, "The typedef -// name intN_t designates a signed integer type with width N, no padding -// bits, and a two's complement representation." So, we can convert to -// and from the corresponding uint64_t value using a bit cast. -inline uint64_t EncodeTwosComp(int64_t v) { - return absl::bit_cast(v); -} -inline int64_t DecodeTwosComp(uint64_t v) { return absl::bit_cast(v); } - -// Note: The overflow detection in this function is done using greater/less *or -// equal* because kint64max/min is too large to be represented exactly in a -// double (which only has 53 bits of precision). In order to avoid assigning to -// rep->hi a double value that is too large for an int64_t (and therefore is -// undefined), we must consider computations that equal kint64max/min as a -// double as overflow cases. -inline bool SafeAddRepHi(double a_hi, double b_hi, Duration* d) { - double c = a_hi + b_hi; - if (c >= static_cast(kint64max)) { - *d = InfiniteDuration(); - return false; - } - if (c <= static_cast(kint64min)) { - *d = -InfiniteDuration(); - return false; - } - *d = time_internal::MakeDuration(c, time_internal::GetRepLo(*d)); - return true; -} - -// A functor that's similar to std::multiplies, except this returns the max -// T value instead of overflowing. This is only defined for uint128. -template -struct SafeMultiply { - uint128 operator()(uint128 a, uint128 b) const { - // b hi is always zero because it originated as an int64_t. - assert(Uint128High64(b) == 0); - // Fastpath to avoid the expensive overflow check with division. - if (Uint128High64(a) == 0) { - return (((Uint128Low64(a) | Uint128Low64(b)) >> 32) == 0) - ? static_cast(Uint128Low64(a) * Uint128Low64(b)) - : a * b; - } - return b == 0 ? b : (a > kuint128max / b) ? kuint128max : a * b; - } -}; - -// Scales (i.e., multiplies or divides, depending on the Operation template) -// the Duration d by the int64_t r. -template