diff options
| author | AlexSm <[email protected]> | 2024-02-12 10:25:32 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-02-12 10:25:32 +0100 |
| commit | 12610a7bf38a4f1215aeb6eeea5e27e271c17e50 (patch) | |
| tree | fce5b3816c5d68d91d7f1f6617c65b04e92f79a9 /contrib/python | |
| parent | b314cf4cbae67afc30e1f9c2f14047de0ad996cb (diff) | |
| parent | 6a0655781d6103303eed0d377c3fb0955e468b5b (diff) | |
Merge pull request #1777 from alexv-smirnov/mergelibs13
Library import 13
Diffstat (limited to 'contrib/python')
157 files changed, 6746 insertions, 5354 deletions
diff --git a/contrib/python/MarkupSafe/py3/.dist-info/METADATA b/contrib/python/MarkupSafe/py3/.dist-info/METADATA index bced1652399..c221b8e50e5 100644 --- a/contrib/python/MarkupSafe/py3/.dist-info/METADATA +++ b/contrib/python/MarkupSafe/py3/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: MarkupSafe -Version: 2.1.3 +Version: 2.1.4 Summary: Safely add untrusted strings to HTML/XML markup. Home-page: https://palletsprojects.com/p/markupsafe/ Maintainer: Pallets diff --git a/contrib/python/MarkupSafe/py3/markupsafe/__init__.py b/contrib/python/MarkupSafe/py3/markupsafe/__init__.py index 21d31960385..2f401a81539 100644 --- a/contrib/python/MarkupSafe/py3/markupsafe/__init__.py +++ b/contrib/python/MarkupSafe/py3/markupsafe/__init__.py @@ -1,5 +1,4 @@ import functools -import re import string import sys import typing as t @@ -14,10 +13,7 @@ if t.TYPE_CHECKING: _P = te.ParamSpec("_P") -__version__ = "2.1.3" - -_strip_comments_re = re.compile(r"<!--.*?-->", re.DOTALL) -_strip_tags_re = re.compile(r"<.*?>", re.DOTALL) +__version__ = "2.1.4" def _simple_escaping_wrapper(func: "t.Callable[_P, str]") -> "t.Callable[_P, Markup]": @@ -162,10 +158,41 @@ class Markup(str): >>> Markup("Main »\t<em>About</em>").striptags() 'Main » About' """ - # Use two regexes to avoid ambiguous matches. - value = _strip_comments_re.sub("", self) - value = _strip_tags_re.sub("", value) - value = " ".join(value.split()) + # collapse spaces + value = " ".join(self.split()) + + # Look for comments then tags separately. Otherwise, a comment that + # contains a tag would end early, leaving some of the comment behind. + + while True: + # keep finding comment start marks + start = value.find("<!--") + + if start == -1: + break + + # find a comment end mark beyond the start, otherwise stop + end = value.find("-->", start) + + if end == -1: + break + + value = f"{value[:start]}{value[end + 3:]}" + + # remove tags using the same method + while True: + start = value.find("<") + + if start == -1: + break + + end = value.find(">", start) + + if end == -1: + break + + value = f"{value[:start]}{value[end + 1:]}" + return self.__class__(value).unescape() @classmethod diff --git a/contrib/python/MarkupSafe/py3/ya.make b/contrib/python/MarkupSafe/py3/ya.make index 453504e5726..3583a8035e2 100644 --- a/contrib/python/MarkupSafe/py3/ya.make +++ b/contrib/python/MarkupSafe/py3/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(2.1.3) +VERSION(2.1.4) LICENSE(BSD-3-Clause) diff --git a/contrib/python/argcomplete/py3/.dist-info/METADATA b/contrib/python/argcomplete/py3/.dist-info/METADATA index c86dfbcaf55..4fe1c2bb9ee 100644 --- a/contrib/python/argcomplete/py3/.dist-info/METADATA +++ b/contrib/python/argcomplete/py3/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: argcomplete -Version: 3.2.1 +Version: 3.2.2 Summary: Bash tab completion for argparse Home-page: https://github.com/kislyuk/argcomplete Author: Andrey Kislyuk diff --git a/contrib/python/argcomplete/py3/argcomplete/bash_completion.d/_python-argcomplete b/contrib/python/argcomplete/py3/argcomplete/bash_completion.d/_python-argcomplete index 3023ff289ed..502bf5effc6 100644 --- a/contrib/python/argcomplete/py3/argcomplete/bash_completion.d/_python-argcomplete +++ b/contrib/python/argcomplete/py3/argcomplete/bash_completion.d/_python-argcomplete @@ -144,6 +144,7 @@ _python_argcomplete_global() { __python_argcomplete_expand_tilde_by_ref executable else executable="${words[1]}" + __python_argcomplete_expand_tilde_by_ref executable req_argv=( "${words[@]:1}" ) fi diff --git a/contrib/python/argcomplete/py3/ya.make b/contrib/python/argcomplete/py3/ya.make index ceca768f4d3..4f82b20e4e8 100644 --- a/contrib/python/argcomplete/py3/ya.make +++ b/contrib/python/argcomplete/py3/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(3.2.1) +VERSION(3.2.2) LICENSE(Apache-2.0) diff --git a/contrib/python/clickhouse-connect/.dist-info/METADATA b/contrib/python/clickhouse-connect/.dist-info/METADATA index 7d7c0d18416..59c9d0db259 100644 --- a/contrib/python/clickhouse-connect/.dist-info/METADATA +++ b/contrib/python/clickhouse-connect/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: clickhouse-connect -Version: 0.6.23 +Version: 0.7.0 Summary: ClickHouse Database Core Driver for Python, Pandas, and Superset Home-page: https://github.com/ClickHouse/clickhouse-connect Author: ClickHouse Inc. @@ -10,12 +10,11 @@ Keywords: clickhouse,superset,sqlalchemy,http,driver Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Apache Software License -Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 -Requires-Python: ~=3.7 +Requires-Python: ~=3.8 Description-Content-Type: text/markdown License-File: LICENSE Requires-Dist: certifi @@ -52,7 +51,7 @@ ClickHouse Connect currently uses the ClickHouse HTTP interface for maximum comp pip install clickhouse-connect ``` -ClickHouse Connect requires Python 3.7 or higher. +ClickHouse Connect requires Python 3.8 or higher. ### Superset Connectivity diff --git a/contrib/python/clickhouse-connect/README.md b/contrib/python/clickhouse-connect/README.md index 4298c161c9c..59f419e3f21 100644 --- a/contrib/python/clickhouse-connect/README.md +++ b/contrib/python/clickhouse-connect/README.md @@ -16,7 +16,7 @@ ClickHouse Connect currently uses the ClickHouse HTTP interface for maximum comp pip install clickhouse-connect ``` -ClickHouse Connect requires Python 3.7 or higher. +ClickHouse Connect requires Python 3.8 or higher. ### Superset Connectivity diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py b/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py index 35ae43369d8..861cc502994 100644 --- a/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py +++ b/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py @@ -1 +1 @@ -version = '0.6.23' +version = '0.7.0' diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/inspector.py b/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/inspector.py index 3ec8f0a1091..d8936e67c23 100644 --- a/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/inspector.py +++ b/contrib/python/clickhouse-connect/clickhouse_connect/cc_sqlalchemy/inspector.py @@ -40,7 +40,7 @@ class ChInspector(Inspector): raise NoResultFound(f'Table {full_table} does not exist') columns = [] for row in result_set: - sqla_type = sqla_type_from_name(row.type) + sqla_type = sqla_type_from_name(row.type.replace('\n', '')) col = {'name': row.name, 'type': sqla_type, 'nullable': sqla_type.nullable, diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py index c8fa9e6116f..7d72b95aa31 100644 --- a/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py +++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py @@ -74,7 +74,7 @@ class HttpClient(Client): """ self.url = f'{interface}://{host}:{port}' self.headers = {} - ch_settings = settings or {} + ch_settings = dict_copy(settings, self.params) self.http = pool_mgr if interface == 'https': if not https_proxy: @@ -113,7 +113,11 @@ class HttpClient(Client): self._read_format = self._write_format = 'Native' self._transform = NativeTransform() - connect_timeout, send_receive_timeout = coerce_int(connect_timeout), coerce_int(send_receive_timeout) + # There is use cases when client need to disable timeouts. + if connect_timeout is not None: + connect_timeout = coerce_int(connect_timeout) + if send_receive_timeout is not None: + send_receive_timeout = coerce_int(send_receive_timeout) self.timeout = Timeout(connect=connect_timeout, read=send_receive_timeout) self.http_retries = 1 self._send_progress = None diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/models.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/models.py index 054c7b686a3..38407d1c63c 100644 --- a/contrib/python/clickhouse-connect/clickhouse_connect/driver/models.py +++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/models.py @@ -16,8 +16,12 @@ class ColumnDef(NamedTuple): ttl_expression: str @property + def type_name(self): + return self.type.replace('\n', '').strip() + + @property def ch_type(self): - return get_from_name(self.type) + return get_from_name(self.type_name) class SettingDef(NamedTuple): diff --git a/contrib/python/clickhouse-connect/ya.make b/contrib/python/clickhouse-connect/ya.make index 5087f8af8a6..7db828de236 100644 --- a/contrib/python/clickhouse-connect/ya.make +++ b/contrib/python/clickhouse-connect/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(0.6.23) +VERSION(0.7.0) LICENSE(Apache-2.0) diff --git a/contrib/python/google-auth/py3/.dist-info/METADATA b/contrib/python/google-auth/py3/.dist-info/METADATA index 2820e8856dd..48bac82c9db 100644 --- a/contrib/python/google-auth/py3/.dist-info/METADATA +++ b/contrib/python/google-auth/py3/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: google-auth -Version: 2.26.2 +Version: 2.27.0 Summary: Google Authentication Library Home-page: https://github.com/googleapis/google-auth-library-python Author: Google Cloud Platform diff --git a/contrib/python/google-auth/py3/google/auth/compute_engine/credentials.py b/contrib/python/google-auth/py3/google/auth/compute_engine/credentials.py index a035c7697af..7541c1d8cfa 100644 --- a/contrib/python/google-auth/py3/google/auth/compute_engine/credentials.py +++ b/contrib/python/google-auth/py3/google/auth/compute_engine/credentials.py @@ -32,7 +32,11 @@ from google.auth.transport import requests as google_auth_requests from google.oauth2 import _client -class Credentials(credentials.Scoped, credentials.CredentialsWithQuotaProject): +class Credentials( + credentials.Scoped, + credentials.CredentialsWithQuotaProject, + credentials.CredentialsWithUniverseDomain, +): """Compute Engine Credentials. These credentials use the Google Compute Engine metadata server to obtain @@ -57,6 +61,7 @@ class Credentials(credentials.Scoped, credentials.CredentialsWithQuotaProject): quota_project_id=None, scopes=None, default_scopes=None, + universe_domain=None, ): """ Args: @@ -68,6 +73,10 @@ class Credentials(credentials.Scoped, credentials.CredentialsWithQuotaProject): scopes (Optional[Sequence[str]]): The list of scopes for the credentials. default_scopes (Optional[Sequence[str]]): Default scopes passed by a Google client library. Use 'scopes' for user-defined scopes. + universe_domain (Optional[str]): The universe domain. If not + provided or None, credential will attempt to fetch the value + from metadata server. If metadata server doesn't have universe + domain endpoint, then the default googleapis.com will be used. """ super(Credentials, self).__init__() self._service_account_email = service_account_email @@ -76,6 +85,9 @@ class Credentials(credentials.Scoped, credentials.CredentialsWithQuotaProject): self._default_scopes = default_scopes self._universe_domain_cached = False self._universe_domain_request = google_auth_requests.Request() + if universe_domain: + self._universe_domain = universe_domain + self._universe_domain_cached = True def _retrieve_info(self, request): """Retrieve information about the service account. @@ -146,23 +158,40 @@ class Credentials(credentials.Scoped, credentials.CredentialsWithQuotaProject): @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) def with_quota_project(self, quota_project_id): - return self.__class__( + creds = self.__class__( service_account_email=self._service_account_email, quota_project_id=quota_project_id, scopes=self._scopes, + default_scopes=self._default_scopes, ) + creds._universe_domain = self._universe_domain + creds._universe_domain_cached = self._universe_domain_cached + return creds @_helpers.copy_docstring(credentials.Scoped) def with_scopes(self, scopes, default_scopes=None): # Compute Engine credentials can not be scoped (the metadata service # ignores the scopes parameter). App Engine, Cloud Run and Flex support # requesting scopes. - return self.__class__( + creds = self.__class__( scopes=scopes, default_scopes=default_scopes, service_account_email=self._service_account_email, quota_project_id=self._quota_project_id, ) + creds._universe_domain = self._universe_domain + creds._universe_domain_cached = self._universe_domain_cached + return creds + + @_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain) + def with_universe_domain(self, universe_domain): + return self.__class__( + scopes=self._scopes, + default_scopes=self._default_scopes, + service_account_email=self._service_account_email, + quota_project_id=self._quota_project_id, + universe_domain=universe_domain, + ) _DEFAULT_TOKEN_LIFETIME_SECS = 3600 # 1 hour in seconds diff --git a/contrib/python/google-auth/py3/google/auth/version.py b/contrib/python/google-auth/py3/google/auth/version.py index 6d53c4c4118..e1fa722c811 100644 --- a/contrib/python/google-auth/py3/google/auth/version.py +++ b/contrib/python/google-auth/py3/google/auth/version.py @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -__version__ = "2.26.2" +__version__ = "2.27.0" diff --git a/contrib/python/google-auth/py3/google/oauth2/credentials.py b/contrib/python/google-auth/py3/google/oauth2/credentials.py index 41f4a05bb6e..c239beed134 100644 --- a/contrib/python/google-auth/py3/google/oauth2/credentials.py +++ b/contrib/python/google-auth/py3/google/oauth2/credentials.py @@ -87,6 +87,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr granted_scopes=None, trust_boundary=None, universe_domain=_DEFAULT_UNIVERSE_DOMAIN, + account=None, ): """ Args: @@ -131,6 +132,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr trust_boundary (str): String representation of trust boundary meta. universe_domain (Optional[str]): The universe domain. The default universe domain is googleapis.com. + account (Optional[str]): The account associated with the credential. """ super(Credentials, self).__init__() self.token = token @@ -149,6 +151,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr self._enable_reauth_refresh = enable_reauth_refresh self._trust_boundary = trust_boundary self._universe_domain = universe_domain or _DEFAULT_UNIVERSE_DOMAIN + self._account = account or "" def __getstate__(self): """A __getstate__ method must exist for the __setstate__ to be called @@ -189,6 +192,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr self._refresh_handler = None self._refresh_worker = None self._use_non_blocking_refresh = d.get("_use_non_blocking_refresh", False) + self._account = d.get("_account", "") @property def refresh_token(self): @@ -268,6 +272,11 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr raise TypeError("The provided refresh_handler is not a callable or None.") self._refresh_handler = value + @property + def account(self): + """str: The user account associated with the credential. If the account is unknown an empty string is returned.""" + return self._account + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) def with_quota_project(self, quota_project_id): @@ -286,6 +295,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr enable_reauth_refresh=self._enable_reauth_refresh, trust_boundary=self._trust_boundary, universe_domain=self._universe_domain, + account=self._account, ) @_helpers.copy_docstring(credentials.CredentialsWithTokenUri) @@ -306,6 +316,35 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr enable_reauth_refresh=self._enable_reauth_refresh, trust_boundary=self._trust_boundary, universe_domain=self._universe_domain, + account=self._account, + ) + + def with_account(self, account): + """Returns a copy of these credentials with a modified account. + + Args: + account (str): The account to set + + Returns: + google.oauth2.credentials.Credentials: A new credentials instance. + """ + + return self.__class__( + self.token, + refresh_token=self.refresh_token, + id_token=self.id_token, + token_uri=self._token_uri, + client_id=self.client_id, + client_secret=self.client_secret, + scopes=self.scopes, + default_scopes=self.default_scopes, + granted_scopes=self.granted_scopes, + quota_project_id=self.quota_project_id, + rapt_token=self.rapt_token, + enable_reauth_refresh=self._enable_reauth_refresh, + trust_boundary=self._trust_boundary, + universe_domain=self._universe_domain, + account=account, ) @_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain) @@ -326,6 +365,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr enable_reauth_refresh=self._enable_reauth_refresh, trust_boundary=self._trust_boundary, universe_domain=universe_domain, + account=self._account, ) def _metric_header_for_usage(self): @@ -474,6 +514,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr rapt_token=info.get("rapt_token"), # may not exist trust_boundary=info.get("trust_boundary"), # may not exist universe_domain=info.get("universe_domain"), # may not exist + account=info.get("account", ""), # may not exist ) @classmethod @@ -518,6 +559,7 @@ class Credentials(credentials.ReadOnlyScoped, credentials.CredentialsWithQuotaPr "scopes": self.scopes, "rapt_token": self.rapt_token, "universe_domain": self._universe_domain, + "account": self._account, } if self.expiry: # flatten expiry timestamp prep["expiry"] = self.expiry.isoformat() + "Z" diff --git a/contrib/python/google-auth/py3/google/oauth2/id_token.py b/contrib/python/google-auth/py3/google/oauth2/id_token.py index 2b1abec2b42..e5dda508da2 100644 --- a/contrib/python/google-auth/py3/google/oauth2/id_token.py +++ b/contrib/python/google-auth/py3/google/oauth2/id_token.py @@ -62,7 +62,6 @@ import os from google.auth import environment_vars from google.auth import exceptions from google.auth import jwt -import google.auth.transport.requests # The URL that provides public certificates for verifying ID tokens issued @@ -282,6 +281,8 @@ def fetch_id_token_credentials(audience, request=None): # Create a request object if not provided. if not request: + import google.auth.transport.requests + request = google.auth.transport.requests.Request() if _metadata.ping(request): diff --git a/contrib/python/google-auth/py3/tests/compute_engine/test_credentials.py b/contrib/python/google-auth/py3/tests/compute_engine/test_credentials.py index 5d6ccdcdec6..f04bb1304a8 100644 --- a/contrib/python/google-auth/py3/tests/compute_engine/test_credentials.py +++ b/contrib/python/google-auth/py3/tests/compute_engine/test_credentials.py @@ -50,13 +50,27 @@ ID_TOKEN_REQUEST_METRICS_HEADER_VALUE = ( "gl-python/3.7 auth/1.1 auth-request-type/it cred-type/mds" ) +FAKE_SERVICE_ACCOUNT_EMAIL = "[email protected]" +FAKE_QUOTA_PROJECT_ID = "fake-quota-project" +FAKE_SCOPES = ["scope1", "scope2"] +FAKE_DEFAULT_SCOPES = ["scope3", "scope4"] +FAKE_UNIVERSE_DOMAIN = "fake-universe-domain" + class TestCredentials(object): credentials = None + credentials_with_all_fields = None @pytest.fixture(autouse=True) def credentials_fixture(self): self.credentials = credentials.Credentials() + self.credentials_with_all_fields = credentials.Credentials( + service_account_email=FAKE_SERVICE_ACCOUNT_EMAIL, + quota_project_id=FAKE_QUOTA_PROJECT_ID, + scopes=FAKE_SCOPES, + default_scopes=FAKE_DEFAULT_SCOPES, + universe_domain=FAKE_UNIVERSE_DOMAIN, + ) def test_default_state(self): assert not self.credentials.valid @@ -68,6 +82,9 @@ class TestCredentials(object): assert self.credentials.service_account_email == "default" # No quota project assert not self.credentials._quota_project_id + # Universe domain is the default and not cached + assert self.credentials._universe_domain == "googleapis.com" + assert not self.credentials._universe_domain_cached @mock.patch( "google.auth._helpers.utcnow", @@ -187,17 +204,35 @@ class TestCredentials(object): assert self.credentials.valid def test_with_quota_project(self): - quota_project_creds = self.credentials.with_quota_project("project-foo") + creds = self.credentials_with_all_fields.with_quota_project("project-foo") - assert quota_project_creds._quota_project_id == "project-foo" + assert creds._quota_project_id == "project-foo" + assert creds._service_account_email == FAKE_SERVICE_ACCOUNT_EMAIL + assert creds._scopes == FAKE_SCOPES + assert creds._default_scopes == FAKE_DEFAULT_SCOPES + assert creds.universe_domain == FAKE_UNIVERSE_DOMAIN + assert creds._universe_domain_cached def test_with_scopes(self): - assert self.credentials._scopes is None - scopes = ["one", "two"] - self.credentials = self.credentials.with_scopes(scopes) + creds = self.credentials_with_all_fields.with_scopes(scopes) - assert self.credentials._scopes == scopes + assert creds._scopes == scopes + assert creds._quota_project_id == FAKE_QUOTA_PROJECT_ID + assert creds._service_account_email == FAKE_SERVICE_ACCOUNT_EMAIL + assert creds._default_scopes is None + assert creds.universe_domain == FAKE_UNIVERSE_DOMAIN + assert creds._universe_domain_cached + + def test_with_universe_domain(self): + creds = self.credentials_with_all_fields.with_universe_domain("universe_domain") + + assert creds._scopes == FAKE_SCOPES + assert creds._quota_project_id == FAKE_QUOTA_PROJECT_ID + assert creds._service_account_email == FAKE_SERVICE_ACCOUNT_EMAIL + assert creds._default_scopes == FAKE_DEFAULT_SCOPES + assert creds.universe_domain == "universe_domain" + assert creds._universe_domain_cached def test_token_usage_metrics(self): self.credentials.token = "token" @@ -213,8 +248,9 @@ class TestCredentials(object): return_value="fake_universe_domain", ) def test_universe_domain(self, get_universe_domain): - self.credentials._universe_domain_cached = False - self.credentials._universe_domain = "googleapis.com" + # Check the default state + assert not self.credentials._universe_domain_cached + assert self.credentials._universe_domain == "googleapis.com" # calling the universe_domain property should trigger a call to # get_universe_domain to fetch the value. The value should be cached. @@ -232,6 +268,15 @@ class TestCredentials(object): self.credentials._universe_domain_request ) + @mock.patch("google.auth.compute_engine._metadata.get_universe_domain") + def test_user_provided_universe_domain(self, get_universe_domain): + assert self.credentials_with_all_fields.universe_domain == FAKE_UNIVERSE_DOMAIN + assert self.credentials_with_all_fields._universe_domain_cached + + # Since user provided universe_domain, we will not call the universe + # domain endpoint. + get_universe_domain.assert_not_called() + class TestIDTokenCredentials(object): credentials = None diff --git a/contrib/python/google-auth/py3/tests/oauth2/test_credentials.py b/contrib/python/google-auth/py3/tests/oauth2/test_credentials.py index 5f1dcf3cbfc..67b6b9c1ad3 100644 --- a/contrib/python/google-auth/py3/tests/oauth2/test_credentials.py +++ b/contrib/python/google-auth/py3/tests/oauth2/test_credentials.py @@ -794,6 +794,12 @@ class TestCredentials(object): new_creds = creds.with_universe_domain("dummy_universe.com") assert new_creds.universe_domain == "dummy_universe.com" + def test_with_account(self): + creds = credentials.Credentials(token="token") + assert creds.account == "" + new_creds = creds.with_account("[email protected]") + assert new_creds.account == "[email protected]" + def test_with_token_uri(self): info = AUTH_USER_INFO.copy() @@ -889,6 +895,7 @@ class TestCredentials(object): assert json_asdict.get("client_secret") == creds.client_secret assert json_asdict.get("expiry") == info["expiry"] assert json_asdict.get("universe_domain") == creds.universe_domain + assert json_asdict.get("account") == creds.account # Test with a `strip` arg json_output = creds.to_json(strip=["client_secret"]) diff --git a/contrib/python/google-auth/py3/ya.make b/contrib/python/google-auth/py3/ya.make index 976b926bffa..5ece69bc982 100644 --- a/contrib/python/google-auth/py3/ya.make +++ b/contrib/python/google-auth/py3/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(2.26.2) +VERSION(2.27.0) LICENSE(Apache-2.0) diff --git a/contrib/python/hypothesis/py3/.dist-info/METADATA b/contrib/python/hypothesis/py3/.dist-info/METADATA index c94200ebd37..135737b7315 100644 --- a/contrib/python/hypothesis/py3/.dist-info/METADATA +++ b/contrib/python/hypothesis/py3/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: hypothesis -Version: 6.94.0 +Version: 6.97.0 Summary: A library for property-based testing Home-page: https://hypothesis.works Author: David R. MacIver and Zac Hatfield-Dodds diff --git a/contrib/python/hypothesis/py3/_hypothesis_globals.py b/contrib/python/hypothesis/py3/_hypothesis_globals.py index e97e0918795..1f3eb6fd6d7 100644 --- a/contrib/python/hypothesis/py3/_hypothesis_globals.py +++ b/contrib/python/hypothesis/py3/_hypothesis_globals.py @@ -16,9 +16,9 @@ depending on either. This file should have no imports outside of stdlib. import os in_initialization = 1 -"""If nonzero, indicates that hypothesis is still initializing (importing or loading +"""If >0, indicates that hypothesis is still initializing (importing or loading the test environment). `import hypothesis` will cause this number to be decremented, -and the pytest plugin increments at load time, then decrements it just before the test +and the pytest plugin increments at load time, then decrements it just before each test session starts. However, this leads to a hole in coverage if another pytest plugin imports hypothesis before our plugin is loaded. HYPOTHESIS_EXTEND_INITIALIZATION may be set to pre-increment the value on behalf of _hypothesis_pytestplugin, plugging the diff --git a/contrib/python/hypothesis/py3/_hypothesis_pytestplugin.py b/contrib/python/hypothesis/py3/_hypothesis_pytestplugin.py index 944304ccdb5..e82b528bb53 100644 --- a/contrib/python/hypothesis/py3/_hypothesis_pytestplugin.py +++ b/contrib/python/hypothesis/py3/_hypothesis_pytestplugin.py @@ -101,7 +101,6 @@ else: # need balanced increment/decrement in configure/sessionstart to support nested # pytest (e.g. runpytest_inprocess), so this early increment in effect replaces # the first one in pytest_configure. - _configured = False if not os.environ.get("HYPOTHESIS_EXTEND_INITIALIZATION"): _hypothesis_globals.in_initialization += 1 if "hypothesis" in sys.modules: @@ -163,12 +162,6 @@ else: return f"hypothesis profile {settings._current_profile!r}{settings_str}" def pytest_configure(config): - global _configured - # skip first increment because we pre-incremented at import time - if _configured: - _hypothesis_globals.in_initialization += 1 - _configured = True - config.addinivalue_line("markers", "hypothesis: Tests which use hypothesis.") if not _any_hypothesis_option(config): return @@ -430,6 +423,7 @@ else: item.add_marker("hypothesis") def pytest_sessionstart(session): + # Note: may be called multiple times, so we can go negative _hypothesis_globals.in_initialization -= 1 # Monkeypatch some internals to prevent applying @pytest.fixture() to a diff --git a/contrib/python/hypothesis/py3/hypothesis/configuration.py b/contrib/python/hypothesis/py3/hypothesis/configuration.py index 2586c729f7d..b7bc8879ceb 100644 --- a/contrib/python/hypothesis/py3/hypothesis/configuration.py +++ b/contrib/python/hypothesis/py3/hypothesis/configuration.py @@ -9,6 +9,7 @@ # obtain one at https://mozilla.org/MPL/2.0/. import os +import sys import warnings from pathlib import Path @@ -45,7 +46,7 @@ _first_postinit_what = None def check_sideeffect_during_initialization( - what: str, *fmt_args: object, extra: str = "" + what: str, *fmt_args: object, is_restart: bool = False ) -> None: """Called from locations that should not be executed during initialization, for example touching disk or materializing lazy/deferred strategies from plugins. If initialization @@ -60,13 +61,29 @@ def check_sideeffect_during_initialization( # notice_initialization_restarted() to be called if in_initialization changes away from zero. if _first_postinit_what is not None: return - elif _hypothesis_globals.in_initialization: + elif _hypothesis_globals.in_initialization > 0: + msg = what.format(*fmt_args) + if is_restart: + when = "between importing hypothesis and loading the hypothesis plugin" + elif "_hypothesis_pytestplugin" in sys.modules or os.getenv( + "HYPOTHESIS_EXTEND_INITIALIZATION" + ): + when = "during pytest plugin or conftest initialization" + else: # pragma: no cover + # This can be triggered by Hypothesis plugins, but is really annoying + # to test automatically - drop st.text().example() in hypothesis.run() + # to manually confirm that we get the warning. + when = "at import time" # Note: -Werror is insufficient under pytest, as doesn't take effect until # test session start. - msg = what.format(*fmt_args) + text = ( + f"Slow code in plugin: avoid {msg} {when}! Set PYTHONWARNINGS=error " + "to get a traceback and show which plugin is responsible." + ) + if is_restart: + text += " Additionally, set HYPOTHESIS_EXTEND_INITIALIZATION=1 to pinpoint the exact location." warnings.warn( - f"Slow code in plugin: avoid {msg} at import time! Set PYTHONWARNINGS=error " - "to get a traceback and show which plugin is responsible." + extra, + text, HypothesisSideeffectWarning, stacklevel=3, ) @@ -87,5 +104,5 @@ def notice_initialization_restarted(*, warn: bool = True) -> None: check_sideeffect_during_initialization( what, *fmt_args, - extra=" Additionally, set HYPOTHESIS_EXTEND_INITIALIZATION=1 to pinpoint the exact location.", + is_restart=True, ) diff --git a/contrib/python/hypothesis/py3/hypothesis/control.py b/contrib/python/hypothesis/py3/hypothesis/control.py index 5b662197a79..92b26069c5a 100644 --- a/contrib/python/hypothesis/py3/hypothesis/control.py +++ b/contrib/python/hypothesis/py3/hypothesis/control.py @@ -23,7 +23,7 @@ from hypothesis.internal.reflection import get_pretty_function_description from hypothesis.internal.validation import check_type from hypothesis.reporting import report, verbose_report from hypothesis.utils.dynamicvariables import DynamicVariable -from hypothesis.vendor.pretty import IDKey +from hypothesis.vendor.pretty import IDKey, pretty def _calling_function_name(frame): @@ -167,9 +167,11 @@ def should_note(): return context.is_final or settings.default.verbosity >= Verbosity.verbose -def note(value: str) -> None: +def note(value: object) -> None: """Report this value for the minimal failing example.""" if should_note(): + if not isinstance(value, str): + value = pretty(value) report(value) diff --git a/contrib/python/hypothesis/py3/hypothesis/core.py b/contrib/python/hypothesis/py3/hypothesis/core.py index 75f1cc70e98..17876c37157 100644 --- a/contrib/python/hypothesis/py3/hypothesis/core.py +++ b/contrib/python/hypothesis/py3/hypothesis/core.py @@ -920,11 +920,11 @@ class StateForActualGivenExecution: except TypeError as e: # If we sampled from a sequence of strategies, AND failed with a # TypeError, *AND that exception mentions SearchStrategy*, add a note: - if "SearchStrategy" in str(e): - try: - add_note(e, data._sampled_from_all_strategies_elements_message) - except AttributeError: - pass + if "SearchStrategy" in str(e) and hasattr( + data, "_sampled_from_all_strategies_elements_message" + ): + msg, format_arg = data._sampled_from_all_strategies_elements_message + add_note(e, msg.format(format_arg)) raise # self.test_runner can include the execute_example method, or setup/teardown diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/compat.py b/contrib/python/hypothesis/py3/hypothesis/internal/compat.py index 41e8ce61d11..24e30b112b9 100644 --- a/contrib/python/hypothesis/py3/hypothesis/internal/compat.py +++ b/contrib/python/hypothesis/py3/hypothesis/internal/compat.py @@ -16,7 +16,7 @@ import platform import sys import typing from functools import partial -from typing import Any, ForwardRef, get_args +from typing import Any, ForwardRef, List, Optional, get_args try: BaseExceptionGroup = BaseExceptionGroup @@ -180,6 +180,25 @@ def ceil(x): return y +def extract_bits(x: int, /, width: Optional[int] = None) -> List[int]: + assert x >= 0 + result = [] + while x: + result.append(x & 1) + x >>= 1 + if width is not None: + result = (result + [0] * width)[:width] + result.reverse() + return result + + +# int.bit_count was added sometime around python 3.9 +try: + bit_count = int.bit_count +except AttributeError: # pragma: no cover + bit_count = lambda self: sum(extract_bits(abs(self))) + + def bad_django_TestCase(runner): if runner is None or "django.test" not in sys.modules: return False diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/data.py b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/data.py index 03f489fa50d..8b8462d24d4 100644 --- a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/data.py +++ b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/data.py @@ -1093,12 +1093,12 @@ class PrimitiveProvider: if clamped != result and not (math.isnan(result) and allow_nan): self._cd.stop_example(discard=True) self._cd.start_example(DRAW_FLOAT_LABEL) - self._write_float(clamped) + self._draw_float(forced=clamped) result = clamped else: result = nasty_floats[i - 1] - self._write_float(result) + self._draw_float(forced=result) self._cd.stop_example() # (DRAW_FLOAT_LABEL) self._cd.stop_example() # (FLOAT_STRATEGY_DO_DRAW_LABEL) @@ -1170,23 +1170,13 @@ class PrimitiveProvider: # sign_aware_lte(forced, -0.0) does not correctly handle the # math.nan case here. forced_sign_bit = math.copysign(1, forced) == -1 - - self._cd.start_example(DRAW_FLOAT_LABEL) - try: - is_negative = self._cd.draw_bits(1, forced=forced_sign_bit) - f = lex_to_float( - self._cd.draw_bits( - 64, forced=None if forced is None else float_to_lex(abs(forced)) - ) + is_negative = self._cd.draw_bits(1, forced=forced_sign_bit) + f = lex_to_float( + self._cd.draw_bits( + 64, forced=None if forced is None else float_to_lex(abs(forced)) ) - return -f if is_negative else f - finally: - self._cd.stop_example() - - def _write_float(self, f: float) -> None: - sign = float_to_int(f) >> 63 - self._cd.draw_bits(1, forced=sign) - self._cd.draw_bits(64, forced=float_to_lex(abs(f))) + ) + return -f if is_negative else f def _draw_unbounded_integer(self, *, forced: Optional[int] = None) -> int: forced_i = None @@ -1487,7 +1477,7 @@ class ConjectureData: assert min_value is not None assert max_value is not None width = max_value - min_value + 1 - assert width <= 1024 # arbitrary practical limit + assert width <= 255 # arbitrary practical limit assert len(weights) == width if forced is not None and (min_value is None or max_value is None): @@ -1558,6 +1548,16 @@ class ConjectureData: return self.provider.draw_bytes(size, forced=forced) def draw_boolean(self, p: float = 0.5, *, forced: Optional[bool] = None) -> bool: + # Internally, we treat probabilities lower than 1 / 2**64 as + # unconditionally false. + # + # Note that even if we lift this 64 bit restriction in the future, p + # cannot be 0 (1) when forced is True (False). + if forced is True: + assert p > 2 ** (-64) + if forced is False: + assert p < (1 - 2 ** (-64)) + return self.provider.draw_boolean(p, forced=forced) def as_result(self) -> Union[ConjectureResult, _Overrun]: diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/floats.py b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/floats.py index 2b82bea07c0..407686a1018 100644 --- a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/floats.py +++ b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/floats.py @@ -99,7 +99,7 @@ del i, b def decode_exponent(e: int) -> int: - """Take draw_bits(11) and turn it into a suitable floating point exponent + """Take an integer and turn it into a suitable floating point exponent such that lexicographically simpler leads to simpler floats.""" assert 0 <= e <= MAX_EXPONENT return ENCODING_TABLE[e] diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/utils.py b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/utils.py index 97b913d79e6..61f9d742bb0 100644 --- a/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/utils.py +++ b/contrib/python/hypothesis/py3/hypothesis/internal/conjecture/utils.py @@ -172,14 +172,24 @@ class Sampler: forced_choice = ( # pragma: no branch # https://github.com/nedbat/coveragepy/issues/1617 None if forced is None - else next((b, a, a_c) for (b, a, a_c) in self.table if forced in (b, a)) + else next( + (base, alternate, alternate_chance) + for (base, alternate, alternate_chance) in self.table + if forced == base or (forced == alternate and alternate_chance > 0) + ) ) base, alternate, alternate_chance = data.choice( self.table, forced=forced_choice ) - use_alternate = data.draw_boolean( - alternate_chance, forced=None if forced is None else forced == alternate - ) + forced_use_alternate = None + if forced is not None: + # we maintain this invariant when picking forced_choice above. + # This song and dance about alternate_chance > 0 is to avoid forcing + # e.g. draw_boolean(p=0, forced=True), which is an error. + forced_use_alternate = forced == alternate and alternate_chance > 0 + assert forced == base or forced_use_alternate + + use_alternate = data.draw_boolean(alternate_chance, forced=forced_use_alternate) data.stop_example() if use_alternate: assert forced is None or alternate == forced, (forced, alternate) diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/intervalsets.py b/contrib/python/hypothesis/py3/hypothesis/internal/intervalsets.py index 4a143c80b82..88162b63323 100644 --- a/contrib/python/hypothesis/py3/hypothesis/internal/intervalsets.py +++ b/contrib/python/hypothesis/py3/hypothesis/internal/intervalsets.py @@ -99,6 +99,9 @@ class IntervalSet: def __and__(self, other): return self.intersection(other) + def __eq__(self, other): + return isinstance(other, IntervalSet) and (other.intervals == self.intervals) + def union(self, other): """Merge two sequences of intervals into a single tuple of intervals. diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/observability.py b/contrib/python/hypothesis/py3/hypothesis/internal/observability.py index 284a2072d75..eb083f8be19 100644 --- a/contrib/python/hypothesis/py3/hypothesis/internal/observability.py +++ b/contrib/python/hypothesis/py3/hypothesis/internal/observability.py @@ -108,6 +108,6 @@ if ( # Remove files more than a week old, to cap the size on disk max_age = (date.today() - timedelta(days=8)).isoformat() - for f in storage_directory("observed").glob("*.jsonl"): + for f in storage_directory("observed", intent_to_write=False).glob("*.jsonl"): if f.stem < max_age: # pragma: no branch f.unlink(missing_ok=True) diff --git a/contrib/python/hypothesis/py3/hypothesis/internal/reflection.py b/contrib/python/hypothesis/py3/hypothesis/internal/reflection.py index d5ea7161f3b..e62ab28f36a 100644 --- a/contrib/python/hypothesis/py3/hypothesis/internal/reflection.py +++ b/contrib/python/hypothesis/py3/hypothesis/internal/reflection.py @@ -19,6 +19,7 @@ import re import sys import textwrap import types +import warnings from functools import partial, wraps from io import StringIO from keyword import iskeyword @@ -27,6 +28,7 @@ from types import ModuleType from typing import TYPE_CHECKING, Any, Callable from unittest.mock import _patch as PatchType +from hypothesis.errors import HypothesisWarning from hypothesis.internal.compat import PYPY, is_typed_named_tuple from hypothesis.utils.conventions import not_set from hypothesis.vendor.pretty import pretty @@ -478,6 +480,15 @@ def repr_call(f, args, kwargs, *, reorder=True): rep = nicerepr(f) if rep.startswith("lambda") and ":" in rep: rep = f"({rep})" + repr_len = len(rep) + sum(len(b) for b in bits) # approx + if repr_len > 30000: + warnings.warn( + "Generating overly large repr. This is an expensive operation, and with " + f"a length of {repr_len//1000} kB is is unlikely to be useful. Use -Wignore " + "to ignore the warning, or -Werror to get a traceback.", + HypothesisWarning, + stacklevel=2, + ) return rep + "(" + ", ".join(bits) + ")" diff --git a/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/core.py b/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/core.py index 028d8405c7e..800a8c4e56e 100644 --- a/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/core.py +++ b/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/core.py @@ -70,6 +70,7 @@ from hypothesis.internal.charmap import ( from hypothesis.internal.compat import ( Concatenate, ParamSpec, + bit_count, ceil, floor, get_type_hints, @@ -202,6 +203,48 @@ def sampled_from( that behaviour, use ``sampled_from(seq) if seq else nothing()``. """ values = check_sample(elements, "sampled_from") + try: + if isinstance(elements, type) and issubclass(elements, enum.Enum): + repr_ = f"sampled_from({elements.__module__}.{elements.__name__})" + else: + repr_ = f"sampled_from({elements!r})" + except Exception: # pragma: no cover + repr_ = None + if isclass(elements) and issubclass(elements, enum.Flag): + # Combinations of enum.Flag members (including empty) are also members. We generate these + # dynamically, because static allocation takes O(2^n) memory. LazyStrategy is used for the + # ease of force_repr. + # Add all named values, both flag bits (== list(elements)) and aliases. The aliases are + # necessary for full coverage for flags that would fail enum.NAMED_FLAGS check, and they + # are also nice values to shrink to. + flags = sorted( + set(elements.__members__.values()), + key=lambda v: (bit_count(v.value), v.value), + ) + # Finally, try to construct the empty state if it is not named. It's placed at the + # end so that we shrink to named values. + flags_with_empty = flags + if not flags or flags[0].value != 0: + try: + flags_with_empty = [*flags, elements(0)] + except TypeError: # pragma: no cover + # Happens on some python versions (at least 3.12) when there are no named values + pass + inner = [ + # Consider one or no named flags set, with shrink-to-named-flag behaviour. + # Special cases (length zero or one) are handled by the inner sampled_from. + sampled_from(flags_with_empty), + ] + if len(flags) > 1: + inner += [ + # Uniform distribution over number of named flags or combinations set. The overlap + # at r=1 is intentional, it may lead to oversampling but gives consistent shrinking + # behaviour. + integers(min_value=1, max_value=len(flags)) + .flatmap(lambda r: sets(sampled_from(flags), min_size=r, max_size=r)) + .map(lambda s: elements(reduce(operator.or_, s))), + ] + return LazyStrategy(one_of, args=inner, kwargs={}, force_repr=repr_) if not values: if ( isinstance(elements, type) @@ -217,21 +260,6 @@ def sampled_from( raise InvalidArgument("Cannot sample from a length-zero sequence.") if len(values) == 1: return just(values[0]) - try: - if isinstance(elements, type) and issubclass(elements, enum.Enum): - repr_ = f"sampled_from({elements.__module__}.{elements.__name__})" - else: - repr_ = f"sampled_from({elements!r})" - except Exception: # pragma: no cover - repr_ = None - if isclass(elements) and issubclass(elements, enum.Flag): - # Combinations of enum.Flag members are also members. We generate - # these dynamically, because static allocation takes O(2^n) memory. - # LazyStrategy is used for the ease of force_repr. - inner = sets(sampled_from(list(values)), min_size=1).map( - lambda s: reduce(operator.or_, s) - ) - return LazyStrategy(lambda: inner, args=[], kwargs={}, force_repr=repr_) return SampledFromStrategy(values, repr_) diff --git a/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/strategies.py b/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/strategies.py index d2b33f2673d..af2fa729370 100644 --- a/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/strategies.py +++ b/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/strategies.py @@ -473,6 +473,8 @@ class SampledFromStrategy(SearchStrategy): non-empty subset of the elements. """ + _MAX_FILTER_CALLS = 10_000 + def __init__(self, elements, repr_=None, transformations=()): super().__init__() self.elements = cu.check_sample(elements, "sampled_from") @@ -531,18 +533,10 @@ class SampledFromStrategy(SearchStrategy): if isinstance(result, SearchStrategy) and all( isinstance(x, SearchStrategy) for x in self.elements ): - max_num_strats = 3 - preamble = ( - f"(first {max_num_strats}) " - if len(self.elements) > max_num_strats - else "" - ) - strat_reprs = ", ".join( - map(get_pretty_function_description, self.elements[:max_num_strats]) - ) data._sampled_from_all_strategies_elements_message = ( "sample_from was given a collection of strategies: " - f"{preamble}{strat_reprs}. Was one_of intended?" + "{!r}. Was one_of intended?", + self.elements, ) if result is filter_not_satisfied: data.mark_invalid(f"Aborted test because unable to satisfy {self!r}") @@ -575,8 +569,7 @@ class SampledFromStrategy(SearchStrategy): # Impose an arbitrary cutoff to prevent us from wasting too much time # on very large element lists. - cutoff = 10000 - max_good_indices = min(max_good_indices, cutoff) + max_good_indices = min(max_good_indices, self._MAX_FILTER_CALLS - 3) # Before building the list of allowed indices, speculatively choose # one of them. We don't yet know how many allowed indices there will be, @@ -588,7 +581,7 @@ class SampledFromStrategy(SearchStrategy): # just use that and return immediately. Note that we also track the # allowed elements, in case of .map(some_stateful_function) allowed = [] - for i in range(min(len(self.elements), cutoff)): + for i in range(min(len(self.elements), self._MAX_FILTER_CALLS - 3)): if i not in known_bad_indices: element = self.get_element(i) if element is not filter_not_satisfied: diff --git a/contrib/python/hypothesis/py3/hypothesis/version.py b/contrib/python/hypothesis/py3/hypothesis/version.py index fd4613cb616..41fe61ff7ef 100644 --- a/contrib/python/hypothesis/py3/hypothesis/version.py +++ b/contrib/python/hypothesis/py3/hypothesis/version.py @@ -8,5 +8,5 @@ # v. 2.0. If a copy of the MPL was not distributed with this file, You can # obtain one at https://mozilla.org/MPL/2.0/. -__version_info__ = (6, 94, 0) +__version_info__ = (6, 97, 0) __version__ = ".".join(map(str, __version_info__)) diff --git a/contrib/python/hypothesis/py3/ya.make b/contrib/python/hypothesis/py3/ya.make index 476e93730ed..8be1df19a1c 100644 --- a/contrib/python/hypothesis/py3/ya.make +++ b/contrib/python/hypothesis/py3/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(6.94.0) +VERSION(6.97.0) LICENSE(MPL-2.0) diff --git a/contrib/python/matplotlib/py3/src/_image_resample.h b/contrib/python/matplotlib/py3/src/_image_resample.h index 10763fb01d3..2c91da40873 100644 --- a/contrib/python/matplotlib/py3/src/_image_resample.h +++ b/contrib/python/matplotlib/py3/src/_image_resample.h @@ -21,6 +21,8 @@ #include "agg_workaround.h" +#include <type_traits> + // Based on: //---------------------------------------------------------------------------- diff --git a/contrib/python/numpy/include/numpy/core/feature_detection_misc.h b/contrib/python/numpy/include/numpy/core/feature_detection_misc.h new file mode 100644 index 00000000000..0e6447fbd11 --- /dev/null +++ b/contrib/python/numpy/include/numpy/core/feature_detection_misc.h @@ -0,0 +1,5 @@ +#ifdef USE_PYTHON3 +#include <contrib/python/numpy/py3/numpy/core/feature_detection_misc.h> +#else +#error #include <contrib/python/numpy/py2/numpy/core/feature_detection_misc.h> +#endif diff --git a/contrib/python/numpy/py3/.dist-info/METADATA b/contrib/python/numpy/py3/.dist-info/METADATA index 5e515025ecf..8246dc4ed3b 100644 --- a/contrib/python/numpy/py3/.dist-info/METADATA +++ b/contrib/python/numpy/py3/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: numpy -Version: 1.26.3 +Version: 1.26.4 Summary: Fundamental package for array computing in Python Home-page: https://numpy.org Author: Travis E. Oliphant et al. @@ -70,11 +70,6 @@ License: Copyright (c) 2005-2023, NumPy Developers. License: Apache 2.0 For license text, see vendored-meson/meson/COPYING - Name: meson-python - Files: vendored-meson/meson-python/* - License: MIT - For license text, see vendored-meson/meson-python/LICENSE - Name: spin Files: .spin/cmds.py License: BSD-3 diff --git a/contrib/python/numpy/py3/LICENSES_bundled.txt b/contrib/python/numpy/py3/LICENSES_bundled.txt index 26faf7ff302..aae0e774fae 100644 --- a/contrib/python/numpy/py3/LICENSES_bundled.txt +++ b/contrib/python/numpy/py3/LICENSES_bundled.txt @@ -30,11 +30,6 @@ Files: vendored-meson/meson/* License: Apache 2.0 For license text, see vendored-meson/meson/COPYING -Name: meson-python -Files: vendored-meson/meson-python/* -License: MIT - For license text, see vendored-meson/meson-python/LICENSE - Name: spin Files: .spin/cmds.py License: BSD-3 diff --git a/contrib/python/numpy/py3/numpy/__config__.py.in b/contrib/python/numpy/py3/numpy/__config__.py.in index 6c6c21cb85d..f3b32c28c10 100644 --- a/contrib/python/numpy/py3/numpy/__config__.py.in +++ b/contrib/python/numpy/py3/numpy/__config__.py.in @@ -32,21 +32,27 @@ CONFIG = _cleanup( "Compilers": { "c": { "name": "@C_COMP@", - "linker": "@C_COMP_LINKER_ID@", + "linker": r"@C_COMP_LINKER_ID@", "version": "@C_COMP_VERSION@", - "commands": "@C_COMP_CMD_ARRAY@", + "commands": r"@C_COMP_CMD_ARRAY@", + "args": r"@C_COMP_ARGS@", + "linker args": r"@C_COMP_LINK_ARGS@", }, "cython": { "name": "@CYTHON_COMP@", - "linker": "@CYTHON_COMP_LINKER_ID@", + "linker": r"@CYTHON_COMP_LINKER_ID@", "version": "@CYTHON_COMP_VERSION@", - "commands": "@CYTHON_COMP_CMD_ARRAY@", + "commands": r"@CYTHON_COMP_CMD_ARRAY@", + "args": r"@CYTHON_COMP_ARGS@", + "linker args": r"@CYTHON_COMP_LINK_ARGS@", }, "c++": { "name": "@CPP_COMP@", - "linker": "@CPP_COMP_LINKER_ID@", + "linker": r"@CPP_COMP_LINKER_ID@", "version": "@CPP_COMP_VERSION@", - "commands": "@CPP_COMP_CMD_ARRAY@", + "commands": r"@CPP_COMP_CMD_ARRAY@", + "args": r"@CPP_COMP_ARGS@", + "linker args": r"@CPP_COMP_LINK_ARGS@", }, }, "Machine Information": { @@ -72,7 +78,7 @@ CONFIG = _cleanup( "detection method": "@BLAS_TYPE_NAME@", "include directory": r"@BLAS_INCLUDEDIR@", "lib directory": r"@BLAS_LIBDIR@", - "openblas configuration": "@BLAS_OPENBLAS_CONFIG@", + "openblas configuration": r"@BLAS_OPENBLAS_CONFIG@", "pc file directory": r"@BLAS_PCFILEDIR@", }, "lapack": { @@ -82,7 +88,7 @@ CONFIG = _cleanup( "detection method": "@LAPACK_TYPE_NAME@", "include directory": r"@LAPACK_INCLUDEDIR@", "lib directory": r"@LAPACK_LIBDIR@", - "openblas configuration": "@LAPACK_OPENBLAS_CONFIG@", + "openblas configuration": r"@LAPACK_OPENBLAS_CONFIG@", "pc file directory": r"@LAPACK_PCFILEDIR@", }, }, diff --git a/contrib/python/numpy/py3/numpy/array_api/__init__.py b/contrib/python/numpy/py3/numpy/array_api/__init__.py index 77f227882e3..edc3205fd5c 100644 --- a/contrib/python/numpy/py3/numpy/array_api/__init__.py +++ b/contrib/python/numpy/py3/numpy/array_api/__init__.py @@ -127,7 +127,7 @@ __all__ = ["__array_api_version__"] from ._constants import e, inf, nan, pi, newaxis -__all__ += ["e", "inf", "nan", "pi"] +__all__ += ["e", "inf", "nan", "pi", "newaxis"] from ._creation_functions import ( asarray, diff --git a/contrib/python/numpy/py3/numpy/array_api/linalg.py b/contrib/python/numpy/py3/numpy/array_api/linalg.py index 09af9dfc3ae..c18360f6e6f 100644 --- a/contrib/python/numpy/py3/numpy/array_api/linalg.py +++ b/contrib/python/numpy/py3/numpy/array_api/linalg.py @@ -9,6 +9,7 @@ from ._dtypes import ( complex128 ) from ._manipulation_functions import reshape +from ._elementwise_functions import conj from ._array_object import Array from ..core.numeric import normalize_axis_tuple @@ -53,7 +54,10 @@ def cholesky(x: Array, /, *, upper: bool = False) -> Array: raise TypeError('Only floating-point dtypes are allowed in cholesky') L = np.linalg.cholesky(x._array) if upper: - return Array._new(L).mT + U = Array._new(L).mT + if U.dtype in [complex64, complex128]: + U = conj(U) + return U return Array._new(L) # Note: cross is the numpy top-level namespace, not np.linalg diff --git a/contrib/python/numpy/py3/numpy/core/code_generators/genapi.py b/contrib/python/numpy/py3/numpy/core/code_generators/genapi.py index 2cdaba52d9e..d9d7862b287 100644 --- a/contrib/python/numpy/py3/numpy/core/code_generators/genapi.py +++ b/contrib/python/numpy/py3/numpy/core/code_generators/genapi.py @@ -304,15 +304,6 @@ def find_functions(filename, tag='API'): fo.close() return functions -def should_rebuild(targets, source_files): - from distutils.dep_util import newer_group - for t in targets: - if not os.path.exists(t): - return True - sources = API_FILES + list(source_files) + [__file__] - if newer_group(sources, targets[0], missing='newer'): - return True - return False def write_file(filename, data): """ diff --git a/contrib/python/numpy/py3/numpy/core/code_generators/generate_numpy_api.py b/contrib/python/numpy/py3/numpy/core/code_generators/generate_numpy_api.py index ae38c4efc2e..640bae9e5ff 100644 --- a/contrib/python/numpy/py3/numpy/core/code_generators/generate_numpy_api.py +++ b/contrib/python/numpy/py3/numpy/core/code_generators/generate_numpy_api.py @@ -148,12 +148,7 @@ def generate_api(output_dir, force=False): targets = (h_file, c_file) sources = numpy_api.multiarray_api - - if (not force and not genapi.should_rebuild(targets, [numpy_api.__file__, __file__])): - return targets - else: - do_generate_api(targets, sources) - + do_generate_api(targets, sources) return targets def do_generate_api(targets, sources): diff --git a/contrib/python/numpy/py3/numpy/core/code_generators/generate_ufunc_api.py b/contrib/python/numpy/py3/numpy/core/code_generators/generate_ufunc_api.py index e03299a52cf..3734cbd6a06 100644 --- a/contrib/python/numpy/py3/numpy/core/code_generators/generate_ufunc_api.py +++ b/contrib/python/numpy/py3/numpy/core/code_generators/generate_ufunc_api.py @@ -125,12 +125,7 @@ def generate_api(output_dir, force=False): targets = (h_file, c_file) sources = ['ufunc_api_order.txt'] - - if (not force and not genapi.should_rebuild(targets, sources + [__file__])): - return targets - else: - do_generate_api(targets, sources) - + do_generate_api(targets, sources) return targets def do_generate_api(targets, sources): diff --git a/contrib/python/numpy/py3/numpy/core/feature_detection_stdio.h b/contrib/python/numpy/py3/numpy/core/feature_detection_stdio.h index bc14d16d04f..d8bbfbd8b23 100644 --- a/contrib/python/numpy/py3/numpy/core/feature_detection_stdio.h +++ b/contrib/python/numpy/py3/numpy/core/feature_detection_stdio.h @@ -1,6 +1,9 @@ +#define _GNU_SOURCE #include <stdio.h> #include <fcntl.h> +#if 0 /* Only for setup_common.py, not the C compiler */ off_t ftello(FILE *stream); int fseeko(FILE *stream, off_t offset, int whence); int fallocate(int, int, off_t, off_t); +#endif diff --git a/contrib/python/numpy/py3/numpy/core/generate_numpy_api.py b/contrib/python/numpy/py3/numpy/core/generate_numpy_api.py new file mode 100644 index 00000000000..640bae9e5ff --- /dev/null +++ b/contrib/python/numpy/py3/numpy/core/generate_numpy_api.py @@ -0,0 +1,251 @@ +#!/usr/bin/env python3 +import os +import argparse + +import genapi +from genapi import \ + TypeApi, GlobalVarApi, FunctionApi, BoolValuesApi + +import numpy_api + +# use annotated api when running under cpychecker +h_template = r""" +#if defined(_MULTIARRAYMODULE) || defined(WITH_CPYCHECKER_STEALS_REFERENCE_TO_ARG_ATTRIBUTE) + +typedef struct { + PyObject_HEAD + npy_bool obval; +} PyBoolScalarObject; + +extern NPY_NO_EXPORT PyTypeObject PyArrayMapIter_Type; +extern NPY_NO_EXPORT PyTypeObject PyArrayNeighborhoodIter_Type; +extern NPY_NO_EXPORT PyBoolScalarObject _PyArrayScalar_BoolValues[2]; + +%s + +#else + +#if defined(PY_ARRAY_UNIQUE_SYMBOL) +#define PyArray_API PY_ARRAY_UNIQUE_SYMBOL +#endif + +#if defined(NO_IMPORT) || defined(NO_IMPORT_ARRAY) +extern void **PyArray_API; +#else +#if defined(PY_ARRAY_UNIQUE_SYMBOL) +void **PyArray_API; +#else +static void **PyArray_API=NULL; +#endif +#endif + +%s + +#if !defined(NO_IMPORT_ARRAY) && !defined(NO_IMPORT) +static int +_import_array(void) +{ + int st; + PyObject *numpy = PyImport_ImportModule("numpy.core._multiarray_umath"); + PyObject *c_api = NULL; + + if (numpy == NULL) { + return -1; + } + c_api = PyObject_GetAttrString(numpy, "_ARRAY_API"); + Py_DECREF(numpy); + if (c_api == NULL) { + return -1; + } + + if (!PyCapsule_CheckExact(c_api)) { + PyErr_SetString(PyExc_RuntimeError, "_ARRAY_API is not PyCapsule object"); + Py_DECREF(c_api); + return -1; + } + PyArray_API = (void **)PyCapsule_GetPointer(c_api, NULL); + Py_DECREF(c_api); + if (PyArray_API == NULL) { + PyErr_SetString(PyExc_RuntimeError, "_ARRAY_API is NULL pointer"); + return -1; + } + + /* Perform runtime check of C API version */ + if (NPY_VERSION != PyArray_GetNDArrayCVersion()) { + PyErr_Format(PyExc_RuntimeError, "module compiled against "\ + "ABI version 0x%%x but this version of numpy is 0x%%x", \ + (int) NPY_VERSION, (int) PyArray_GetNDArrayCVersion()); + return -1; + } + if (NPY_FEATURE_VERSION > PyArray_GetNDArrayCFeatureVersion()) { + PyErr_Format(PyExc_RuntimeError, "module compiled against "\ + "API version 0x%%x but this version of numpy is 0x%%x . "\ + "Check the section C-API incompatibility at the "\ + "Troubleshooting ImportError section at "\ + "https://numpy.org/devdocs/user/troubleshooting-importerror.html"\ + "#c-api-incompatibility "\ + "for indications on how to solve this problem .", \ + (int) NPY_FEATURE_VERSION, (int) PyArray_GetNDArrayCFeatureVersion()); + return -1; + } + + /* + * Perform runtime check of endianness and check it matches the one set by + * the headers (npy_endian.h) as a safeguard + */ + st = PyArray_GetEndianness(); + if (st == NPY_CPU_UNKNOWN_ENDIAN) { + PyErr_SetString(PyExc_RuntimeError, + "FATAL: module compiled as unknown endian"); + return -1; + } +#if NPY_BYTE_ORDER == NPY_BIG_ENDIAN + if (st != NPY_CPU_BIG) { + PyErr_SetString(PyExc_RuntimeError, + "FATAL: module compiled as big endian, but " + "detected different endianness at runtime"); + return -1; + } +#elif NPY_BYTE_ORDER == NPY_LITTLE_ENDIAN + if (st != NPY_CPU_LITTLE) { + PyErr_SetString(PyExc_RuntimeError, + "FATAL: module compiled as little endian, but " + "detected different endianness at runtime"); + return -1; + } +#endif + + return 0; +} + +#define import_array() {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return NULL; } } + +#define import_array1(ret) {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return ret; } } + +#define import_array2(msg, ret) {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, msg); return ret; } } + +#endif + +#endif +""" + + +c_template = r""" +/* These pointers will be stored in the C-object for use in other + extension modules +*/ + +void *PyArray_API[] = { +%s +}; +""" + +def generate_api(output_dir, force=False): + basename = 'multiarray_api' + + h_file = os.path.join(output_dir, '__%s.h' % basename) + c_file = os.path.join(output_dir, '__%s.c' % basename) + targets = (h_file, c_file) + + sources = numpy_api.multiarray_api + do_generate_api(targets, sources) + return targets + +def do_generate_api(targets, sources): + header_file = targets[0] + c_file = targets[1] + + global_vars = sources[0] + scalar_bool_values = sources[1] + types_api = sources[2] + multiarray_funcs = sources[3] + + multiarray_api = sources[:] + + module_list = [] + extension_list = [] + init_list = [] + + # Check multiarray api indexes + multiarray_api_index = genapi.merge_api_dicts(multiarray_api) + genapi.check_api_dict(multiarray_api_index) + + numpyapi_list = genapi.get_api_functions('NUMPY_API', + multiarray_funcs) + + # Create dict name -> *Api instance + api_name = 'PyArray_API' + multiarray_api_dict = {} + for f in numpyapi_list: + name = f.name + index = multiarray_funcs[name][0] + annotations = multiarray_funcs[name][1:] + multiarray_api_dict[f.name] = FunctionApi(f.name, index, annotations, + f.return_type, + f.args, api_name) + + for name, val in global_vars.items(): + index, type = val + multiarray_api_dict[name] = GlobalVarApi(name, index, type, api_name) + + for name, val in scalar_bool_values.items(): + index = val[0] + multiarray_api_dict[name] = BoolValuesApi(name, index, api_name) + + for name, val in types_api.items(): + index = val[0] + internal_type = None if len(val) == 1 else val[1] + multiarray_api_dict[name] = TypeApi( + name, index, 'PyTypeObject', api_name, internal_type) + + if len(multiarray_api_dict) != len(multiarray_api_index): + keys_dict = set(multiarray_api_dict.keys()) + keys_index = set(multiarray_api_index.keys()) + raise AssertionError( + "Multiarray API size mismatch - " + "index has extra keys {}, dict has extra keys {}" + .format(keys_index - keys_dict, keys_dict - keys_index) + ) + + extension_list = [] + for name, index in genapi.order_dict(multiarray_api_index): + api_item = multiarray_api_dict[name] + extension_list.append(api_item.define_from_array_api_string()) + init_list.append(api_item.array_api_define()) + module_list.append(api_item.internal_define()) + + # Write to header + s = h_template % ('\n'.join(module_list), '\n'.join(extension_list)) + genapi.write_file(header_file, s) + + # Write to c-code + s = c_template % ',\n'.join(init_list) + genapi.write_file(c_file, s) + + return targets + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument( + "-o", + "--outdir", + type=str, + help="Path to the output directory" + ) + parser.add_argument( + "-i", + "--ignore", + type=str, + help="An ignored input - may be useful to add a " + "dependency between custom targets" + ) + args = parser.parse_args() + + outdir_abs = os.path.join(os.getcwd(), args.outdir) + + generate_api(outdir_abs) + + +if __name__ == "__main__": + main() diff --git a/contrib/python/numpy/py3/numpy/core/src/common/npy_cpu_features.c b/contrib/python/numpy/py3/numpy/core/src/common/npy_cpu_features.c index 64a85f6fb20..bd149f8b437 100644 --- a/contrib/python/numpy/py3/numpy/core/src/common/npy_cpu_features.c +++ b/contrib/python/numpy/py3/numpy/core/src/common/npy_cpu_features.c @@ -656,7 +656,7 @@ npy__cpu_init_features(void) /***************** ARM ******************/ -#elif defined(__arm__) || defined(__aarch64__) +#elif defined(__arm__) || defined(__aarch64__) || defined(_M_ARM64) static inline void npy__cpu_init_features_arm8(void) @@ -781,7 +781,7 @@ npy__cpu_init_features(void) return; #endif // We have nothing else todo -#if defined(NPY_HAVE_ASIMD) || defined(__aarch64__) || (defined(__ARM_ARCH) && __ARM_ARCH >= 8) +#if defined(NPY_HAVE_ASIMD) || defined(__aarch64__) || (defined(__ARM_ARCH) && __ARM_ARCH >= 8) || defined(_M_ARM64) #if defined(NPY_HAVE_FPHP) || defined(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) npy__cpu_have[NPY_CPU_FEATURE_FPHP] = 1; #endif diff --git a/contrib/python/numpy/py3/numpy/core/src/multiarray/convert.c b/contrib/python/numpy/py3/numpy/core/src/multiarray/convert.c index 60c1a1b9b01..8ec0aeefb7a 100644 --- a/contrib/python/numpy/py3/numpy/core/src/multiarray/convert.c +++ b/contrib/python/numpy/py3/numpy/core/src/multiarray/convert.c @@ -23,8 +23,9 @@ #include "array_coercion.h" #include "refcount.h" -int -fallocate(int fd, int mode, off_t offset, off_t len); +#if defined(HAVE_FALLOCATE) && defined(__linux__) +#include <fcntl.h> +#endif /* * allocate nbytes of diskspace for file fp diff --git a/contrib/python/numpy/py3/numpy/core/src/multiarray/temp_elide.c b/contrib/python/numpy/py3/numpy/core/src/multiarray/temp_elide.c index 15257804bc6..a38f90e76c6 100644 --- a/contrib/python/numpy/py3/numpy/core/src/multiarray/temp_elide.c +++ b/contrib/python/numpy/py3/numpy/core/src/multiarray/temp_elide.c @@ -59,6 +59,9 @@ */ #if defined HAVE_BACKTRACE && defined HAVE_DLFCN_H && ! defined PYPY_VERSION + +#include <feature_detection_misc.h> + /* 1 prints elided operations, 2 prints stacktraces */ #define NPY_ELIDE_DEBUG 0 #define NPY_MAX_STACKSIZE 10 diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c b/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c index 25fae7f711c..0d80a969667 100644 --- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c +++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c @@ -46,8 +46,16 @@ * q = TRUNC((n - (-dsign ) + (-nsign))/d) - (-qsign); ********************************************************************************/ +#if (defined(NPY_HAVE_VSX) && !defined(NPY_HAVE_VSX4)) || defined(NPY_HAVE_NEON) + // Due to integer 128-bit multiplication emulation, SIMD 64-bit division + // may not perform well on both neon and up to VSX3 compared to scalar + // division. + #define SIMD_DISABLE_DIV64_OPT +#endif + #if NPY_SIMD -#line 45 +#line 52 +#if 8 < 64 || (8 == 64 && !defined(SIMD_DISABLE_DIV64_OPT)) static inline void simd_divide_by_scalar_contig_s8(char **args, npy_intp len) { @@ -107,8 +115,10 @@ simd_divide_by_scalar_contig_s8(char **args, npy_intp len) } npyv_cleanup(); } +#endif -#line 45 +#line 52 +#if 16 < 64 || (16 == 64 && !defined(SIMD_DISABLE_DIV64_OPT)) static inline void simd_divide_by_scalar_contig_s16(char **args, npy_intp len) { @@ -168,8 +178,10 @@ simd_divide_by_scalar_contig_s16(char **args, npy_intp len) } npyv_cleanup(); } +#endif -#line 45 +#line 52 +#if 32 < 64 || (32 == 64 && !defined(SIMD_DISABLE_DIV64_OPT)) static inline void simd_divide_by_scalar_contig_s32(char **args, npy_intp len) { @@ -229,8 +241,10 @@ simd_divide_by_scalar_contig_s32(char **args, npy_intp len) } npyv_cleanup(); } +#endif -#line 45 +#line 52 +#if 64 < 64 || (64 == 64 && !defined(SIMD_DISABLE_DIV64_OPT)) static inline void simd_divide_by_scalar_contig_s64(char **args, npy_intp len) { @@ -290,9 +304,11 @@ simd_divide_by_scalar_contig_s64(char **args, npy_intp len) } npyv_cleanup(); } +#endif -#line 111 +#line 120 +#if 8 < 64 || (8 == 64 && !defined(SIMD_DISABLE_DIV64_OPT)) static inline void simd_divide_by_scalar_contig_u8(char **args, npy_intp len) { @@ -314,8 +330,10 @@ simd_divide_by_scalar_contig_u8(char **args, npy_intp len) } npyv_cleanup(); } +#endif -#line 111 +#line 120 +#if 16 < 64 || (16 == 64 && !defined(SIMD_DISABLE_DIV64_OPT)) static inline void simd_divide_by_scalar_contig_u16(char **args, npy_intp len) { @@ -337,8 +355,10 @@ simd_divide_by_scalar_contig_u16(char **args, npy_intp len) } npyv_cleanup(); } +#endif -#line 111 +#line 120 +#if 32 < 64 || (32 == 64 && !defined(SIMD_DISABLE_DIV64_OPT)) static inline void simd_divide_by_scalar_contig_u32(char **args, npy_intp len) { @@ -360,8 +380,10 @@ simd_divide_by_scalar_contig_u32(char **args, npy_intp len) } npyv_cleanup(); } +#endif -#line 111 +#line 120 +#if 64 < 64 || (64 == 64 && !defined(SIMD_DISABLE_DIV64_OPT)) static inline void simd_divide_by_scalar_contig_u64(char **args, npy_intp len) { @@ -383,11 +405,12 @@ simd_divide_by_scalar_contig_u64(char **args, npy_intp len) } npyv_cleanup(); } +#endif #if defined(NPY_HAVE_VSX4) -#line 140 +#line 151 /* * Computes division of 2 8-bit signed/unsigned integer vectors * @@ -452,7 +475,7 @@ vsx4_div_u16(npyv_u16 a, npyv_u16 b) #define vsx4_div_u32 vec_div #define vsx4_div_u64 vec_div -#line 140 +#line 151 /* * Computes division of 2 8-bit signed/unsigned integer vectors * @@ -518,7 +541,7 @@ vsx4_div_s16(npyv_s16 a, npyv_s16 b) #define vsx4_div_s64 vec_div -#line 210 +#line 221 static inline void vsx4_simd_divide_contig_u8(char **args, npy_intp len) { @@ -552,7 +575,7 @@ vsx4_simd_divide_contig_u8(char **args, npy_intp len) npyv_cleanup(); } -#line 210 +#line 221 static inline void vsx4_simd_divide_contig_u16(char **args, npy_intp len) { @@ -586,7 +609,7 @@ vsx4_simd_divide_contig_u16(char **args, npy_intp len) npyv_cleanup(); } -#line 210 +#line 221 static inline void vsx4_simd_divide_contig_u32(char **args, npy_intp len) { @@ -620,7 +643,7 @@ vsx4_simd_divide_contig_u32(char **args, npy_intp len) npyv_cleanup(); } -#line 210 +#line 221 static inline void vsx4_simd_divide_contig_u64(char **args, npy_intp len) { @@ -655,7 +678,7 @@ vsx4_simd_divide_contig_u64(char **args, npy_intp len) } -#line 249 +#line 260 static inline void vsx4_simd_divide_contig_s8(char **args, npy_intp len) { @@ -724,7 +747,7 @@ vsx4_simd_divide_contig_s8(char **args, npy_intp len) npyv_cleanup(); } -#line 249 +#line 260 static inline void vsx4_simd_divide_contig_s16(char **args, npy_intp len) { @@ -793,7 +816,7 @@ vsx4_simd_divide_contig_s16(char **args, npy_intp len) npyv_cleanup(); } -#line 249 +#line 260 static inline void vsx4_simd_divide_contig_s32(char **args, npy_intp len) { @@ -862,7 +885,7 @@ vsx4_simd_divide_contig_s32(char **args, npy_intp len) npyv_cleanup(); } -#line 249 +#line 260 static inline void vsx4_simd_divide_contig_s64(char **args, npy_intp len) { @@ -938,28 +961,27 @@ vsx4_simd_divide_contig_s64(char **args, npy_intp len) ** Defining ufunc inner functions ********************************************************************************/ -#line 329 +#line 340 #undef TO_SIMD_SFX #if 0 -#line 334 +#line 345 #elif NPY_BITSOF_BYTE == 8 #define TO_SIMD_SFX(X) X##_s8 -#line 334 +#line 345 #elif NPY_BITSOF_BYTE == 16 #define TO_SIMD_SFX(X) X##_s16 -#line 334 +#line 345 #elif NPY_BITSOF_BYTE == 32 #define TO_SIMD_SFX(X) X##_s32 -#line 334 +#line 345 #elif NPY_BITSOF_BYTE == 64 #define TO_SIMD_SFX(X) X##_s64 #endif - -#if NPY_BITSOF_BYTE == 64 && !defined(NPY_HAVE_VSX4) && (defined(NPY_HAVE_VSX) || defined(NPY_HAVE_NEON)) +#if NPY_BITSOF_BYTE == 64 && defined(SIMD_DISABLE_DIV64_OPT) #undef TO_SIMD_SFX #endif @@ -1042,28 +1064,27 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_divide_indexed) } -#line 329 +#line 340 #undef TO_SIMD_SFX #if 0 -#line 334 +#line 345 #elif NPY_BITSOF_SHORT == 8 #define TO_SIMD_SFX(X) X##_s8 -#line 334 +#line 345 #elif NPY_BITSOF_SHORT == 16 #define TO_SIMD_SFX(X) X##_s16 -#line 334 +#line 345 #elif NPY_BITSOF_SHORT == 32 #define TO_SIMD_SFX(X) X##_s32 -#line 334 +#line 345 #elif NPY_BITSOF_SHORT == 64 #define TO_SIMD_SFX(X) X##_s64 #endif - -#if NPY_BITSOF_SHORT == 64 && !defined(NPY_HAVE_VSX4) && (defined(NPY_HAVE_VSX) || defined(NPY_HAVE_NEON)) +#if NPY_BITSOF_SHORT == 64 && defined(SIMD_DISABLE_DIV64_OPT) #undef TO_SIMD_SFX #endif @@ -1146,28 +1167,27 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_divide_indexed) } -#line 329 +#line 340 #undef TO_SIMD_SFX #if 0 -#line 334 +#line 345 #elif NPY_BITSOF_INT == 8 #define TO_SIMD_SFX(X) X##_s8 -#line 334 +#line 345 #elif NPY_BITSOF_INT == 16 #define TO_SIMD_SFX(X) X##_s16 -#line 334 +#line 345 #elif NPY_BITSOF_INT == 32 #define TO_SIMD_SFX(X) X##_s32 -#line 334 +#line 345 #elif NPY_BITSOF_INT == 64 #define TO_SIMD_SFX(X) X##_s64 #endif - -#if NPY_BITSOF_INT == 64 && !defined(NPY_HAVE_VSX4) && (defined(NPY_HAVE_VSX) || defined(NPY_HAVE_NEON)) +#if NPY_BITSOF_INT == 64 && defined(SIMD_DISABLE_DIV64_OPT) #undef TO_SIMD_SFX #endif @@ -1250,28 +1270,27 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_divide_indexed) } -#line 329 +#line 340 #undef TO_SIMD_SFX #if 0 -#line 334 +#line 345 #elif NPY_BITSOF_LONG == 8 #define TO_SIMD_SFX(X) X##_s8 -#line 334 +#line 345 #elif NPY_BITSOF_LONG == 16 #define TO_SIMD_SFX(X) X##_s16 -#line 334 +#line 345 #elif NPY_BITSOF_LONG == 32 #define TO_SIMD_SFX(X) X##_s32 -#line 334 +#line 345 #elif NPY_BITSOF_LONG == 64 #define TO_SIMD_SFX(X) X##_s64 #endif - -#if NPY_BITSOF_LONG == 64 && !defined(NPY_HAVE_VSX4) && (defined(NPY_HAVE_VSX) || defined(NPY_HAVE_NEON)) +#if NPY_BITSOF_LONG == 64 && defined(SIMD_DISABLE_DIV64_OPT) #undef TO_SIMD_SFX #endif @@ -1354,28 +1373,27 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_divide_indexed) } -#line 329 +#line 340 #undef TO_SIMD_SFX #if 0 -#line 334 +#line 345 #elif NPY_BITSOF_LONGLONG == 8 #define TO_SIMD_SFX(X) X##_s8 -#line 334 +#line 345 #elif NPY_BITSOF_LONGLONG == 16 #define TO_SIMD_SFX(X) X##_s16 -#line 334 +#line 345 #elif NPY_BITSOF_LONGLONG == 32 #define TO_SIMD_SFX(X) X##_s32 -#line 334 +#line 345 #elif NPY_BITSOF_LONGLONG == 64 #define TO_SIMD_SFX(X) X##_s64 #endif - -#if NPY_BITSOF_LONGLONG == 64 && !defined(NPY_HAVE_VSX4) && (defined(NPY_HAVE_VSX) || defined(NPY_HAVE_NEON)) +#if NPY_BITSOF_LONGLONG == 64 && defined(SIMD_DISABLE_DIV64_OPT) #undef TO_SIMD_SFX #endif @@ -1459,22 +1477,22 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_divide_indexed) -#line 429 +#line 439 #undef TO_SIMD_SFX #if 0 -#line 434 +#line 444 #elif NPY_BITSOF_BYTE == 8 #define TO_SIMD_SFX(X) X##_u8 -#line 434 +#line 444 #elif NPY_BITSOF_BYTE == 16 #define TO_SIMD_SFX(X) X##_u16 -#line 434 +#line 444 #elif NPY_BITSOF_BYTE == 32 #define TO_SIMD_SFX(X) X##_u32 -#line 434 +#line 444 #elif NPY_BITSOF_BYTE == 64 #define TO_SIMD_SFX(X) X##_u64 @@ -1560,22 +1578,22 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_divide_indexed) } -#line 429 +#line 439 #undef TO_SIMD_SFX #if 0 -#line 434 +#line 444 #elif NPY_BITSOF_SHORT == 8 #define TO_SIMD_SFX(X) X##_u8 -#line 434 +#line 444 #elif NPY_BITSOF_SHORT == 16 #define TO_SIMD_SFX(X) X##_u16 -#line 434 +#line 444 #elif NPY_BITSOF_SHORT == 32 #define TO_SIMD_SFX(X) X##_u32 -#line 434 +#line 444 #elif NPY_BITSOF_SHORT == 64 #define TO_SIMD_SFX(X) X##_u64 @@ -1661,22 +1679,22 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_divide_indexed) } -#line 429 +#line 439 #undef TO_SIMD_SFX #if 0 -#line 434 +#line 444 #elif NPY_BITSOF_INT == 8 #define TO_SIMD_SFX(X) X##_u8 -#line 434 +#line 444 #elif NPY_BITSOF_INT == 16 #define TO_SIMD_SFX(X) X##_u16 -#line 434 +#line 444 #elif NPY_BITSOF_INT == 32 #define TO_SIMD_SFX(X) X##_u32 -#line 434 +#line 444 #elif NPY_BITSOF_INT == 64 #define TO_SIMD_SFX(X) X##_u64 @@ -1762,22 +1780,22 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_divide_indexed) } -#line 429 +#line 439 #undef TO_SIMD_SFX #if 0 -#line 434 +#line 444 #elif NPY_BITSOF_LONG == 8 #define TO_SIMD_SFX(X) X##_u8 -#line 434 +#line 444 #elif NPY_BITSOF_LONG == 16 #define TO_SIMD_SFX(X) X##_u16 -#line 434 +#line 444 #elif NPY_BITSOF_LONG == 32 #define TO_SIMD_SFX(X) X##_u32 -#line 434 +#line 444 #elif NPY_BITSOF_LONG == 64 #define TO_SIMD_SFX(X) X##_u64 @@ -1863,22 +1881,22 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_divide_indexed) } -#line 429 +#line 439 #undef TO_SIMD_SFX #if 0 -#line 434 +#line 444 #elif NPY_BITSOF_LONGLONG == 8 #define TO_SIMD_SFX(X) X##_u8 -#line 434 +#line 444 #elif NPY_BITSOF_LONGLONG == 16 #define TO_SIMD_SFX(X) X##_u16 -#line 434 +#line 444 #elif NPY_BITSOF_LONGLONG == 32 #define TO_SIMD_SFX(X) X##_u32 -#line 434 +#line 444 #elif NPY_BITSOF_LONGLONG == 64 #define TO_SIMD_SFX(X) X##_u64 diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c.src b/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c.src index e07bb79808a..d056046e054 100644 --- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c.src +++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_arithmetic.dispatch.c.src @@ -36,12 +36,20 @@ * q = TRUNC((n - (-dsign ) + (-nsign))/d) - (-qsign); ********************************************************************************/ +#if (defined(NPY_HAVE_VSX) && !defined(NPY_HAVE_VSX4)) || defined(NPY_HAVE_NEON) + // Due to integer 128-bit multiplication emulation, SIMD 64-bit division + // may not perform well on both neon and up to VSX3 compared to scalar + // division. + #define SIMD_DISABLE_DIV64_OPT +#endif + #if NPY_SIMD /**begin repeat * Signed types * #sfx = s8, s16, s32, s64# * #len = 8, 16, 32, 64# */ +#if @len@ < 64 || (@len@ == 64 && !defined(SIMD_DISABLE_DIV64_OPT)) static inline void simd_divide_by_scalar_contig_@sfx@(char **args, npy_intp len) { @@ -101,6 +109,7 @@ simd_divide_by_scalar_contig_@sfx@(char **args, npy_intp len) } npyv_cleanup(); } +#endif /**end repeat**/ /**begin repeat @@ -108,6 +117,7 @@ simd_divide_by_scalar_contig_@sfx@(char **args, npy_intp len) * #sfx = u8, u16, u32, u64# * #len = 8, 16, 32, 64# */ +#if @len@ < 64 || (@len@ == 64 && !defined(SIMD_DISABLE_DIV64_OPT)) static inline void simd_divide_by_scalar_contig_@sfx@(char **args, npy_intp len) { @@ -129,6 +139,7 @@ simd_divide_by_scalar_contig_@sfx@(char **args, npy_intp len) } npyv_cleanup(); } +#endif /**end repeat**/ #if defined(NPY_HAVE_VSX4) @@ -335,8 +346,7 @@ vsx4_simd_divide_contig_@sfx@(char **args, npy_intp len) #define TO_SIMD_SFX(X) X##_s@len@ /**end repeat1**/ #endif - -#if NPY_BITSOF_@TYPE@ == 64 && !defined(NPY_HAVE_VSX4) && (defined(NPY_HAVE_VSX) || defined(NPY_HAVE_NEON)) +#if NPY_BITSOF_@TYPE@ == 64 && defined(SIMD_DISABLE_DIV64_OPT) #undef TO_SIMD_SFX #endif diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c b/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c index 5e9827a14cf..8f446c3a8d8 100644 --- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c +++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c @@ -134,18 +134,6 @@ fma_blend(__m256 x, __m256 y, __m256 ymask) } NPY_FINLINE __m256 -fma_invert_mask_ps(__m256 ymask) -{ - return _mm256_andnot_ps(ymask, _mm256_set1_ps(-1.0)); -} - -NPY_FINLINE __m256i -fma_invert_mask_pd(__m256i ymask) -{ - return _mm256_andnot_si256(ymask, _mm256_set1_epi32(0xFFFFFFFF)); -} - -NPY_FINLINE __m256 fma_get_exponent(__m256 x) { /* @@ -321,18 +309,6 @@ avx512_blend(__m512 x, __m512 y, __mmask16 ymask) return _mm512_mask_mov_ps(x, ymask, y); } -NPY_FINLINE __mmask16 -avx512_invert_mask_ps(__mmask16 ymask) -{ - return _mm512_knot(ymask); -} - -NPY_FINLINE __mmask8 -avx512_invert_mask_pd(__mmask8 ymask) -{ - return _mm512_knot(ymask); -} - NPY_FINLINE __m512 avx512_get_exponent(__m512 x) { @@ -384,7 +360,7 @@ avx512_permute_x8var_pd(__m512d t0, __m512d t1, __m512d t2, __m512d t3, /******************************************************************************** ** Defining the SIMD kernels ********************************************************************************/ -#line 396 +#line 372 #ifdef SIMD_AVX2_FMA3 /* * Vectorized Cody-Waite range reduction technique @@ -683,7 +659,7 @@ simd_log_FLOAT(npy_float * op, } #endif // SIMD_AVX2_FMA3 -#line 396 +#line 372 #ifdef SIMD_AVX512F /* * Vectorized Cody-Waite range reduction technique @@ -984,7 +960,7 @@ simd_log_FLOAT(npy_float * op, #if NPY_SIMD && defined(NPY_HAVE_AVX512_SKX) && defined(NPY_CAN_LINK_SVML) -#line 700 +#line 676 static void simd_exp_f64(const npyv_lanetype_f64 *src, npy_intp ssrc, npyv_lanetype_f64 *dst, npy_intp sdst, npy_intp len) @@ -1015,7 +991,7 @@ simd_exp_f64(const npyv_lanetype_f64 *src, npy_intp ssrc, npyv_cleanup(); } -#line 700 +#line 676 static void simd_log_f64(const npyv_lanetype_f64 *src, npy_intp ssrc, npyv_lanetype_f64 *dst, npy_intp sdst, npy_intp len) @@ -1298,49 +1274,49 @@ AVX512F_log_DOUBLE(npy_double * op, __m256i vindex = _mm256_loadu_si256((__m256i*)&indexarr[0]); /* Load lookup table data */ - #line 985 + #line 961 __m512d mLUT_TOP_0 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*0])); __m512d mLUT_TAIL_0 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*0])); -#line 985 +#line 961 __m512d mLUT_TOP_1 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*1])); __m512d mLUT_TAIL_1 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*1])); -#line 985 +#line 961 __m512d mLUT_TOP_2 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*2])); __m512d mLUT_TAIL_2 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*2])); -#line 985 +#line 961 __m512d mLUT_TOP_3 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*3])); __m512d mLUT_TAIL_3 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*3])); -#line 985 +#line 961 __m512d mLUT_TOP_4 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*4])); __m512d mLUT_TAIL_4 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*4])); -#line 985 +#line 961 __m512d mLUT_TOP_5 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*5])); __m512d mLUT_TAIL_5 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*5])); -#line 985 +#line 961 __m512d mLUT_TOP_6 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*6])); __m512d mLUT_TAIL_6 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*6])); -#line 985 +#line 961 __m512d mLUT_TOP_7 = _mm512_loadu_pd(&(LOG_TABLE_TOP[8*7])); __m512d mLUT_TAIL_7 = _mm512_loadu_pd(&(LOG_TABLE_TAIL[8*7])); @@ -1487,7 +1463,7 @@ AVX512F_log_DOUBLE(npy_double * op, #endif // NPY_CAN_LINK_SVML #ifdef SIMD_AVX512_SKX -#line 1149 +#line 1125 static inline void AVX512_SKX_ldexp_FLOAT(char **args, npy_intp const *dimensions, npy_intp const *steps) { @@ -1634,7 +1610,7 @@ AVX512_SKX_frexp_FLOAT(char **args, npy_intp const *dimensions, npy_intp const * } } -#line 1149 +#line 1125 static inline void AVX512_SKX_ldexp_DOUBLE(char **args, npy_intp const *dimensions, npy_intp const *steps) { @@ -1787,7 +1763,7 @@ AVX512_SKX_frexp_DOUBLE(char **args, npy_intp const *dimensions, npy_intp const /******************************************************************************** ** Defining ufunc inner functions ********************************************************************************/ -#line 1305 +#line 1281 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_exp) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data)) { @@ -1816,7 +1792,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_exp) #endif } -#line 1305 +#line 1281 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_log) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data)) { @@ -1846,7 +1822,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_log) } -#line 1338 +#line 1314 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_exp) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data)) { @@ -1879,7 +1855,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_exp) } -#line 1338 +#line 1314 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_log) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data)) { @@ -1913,7 +1889,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_log) -#line 1378 +#line 1354 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_frexp) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -1945,7 +1921,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_ldexp) } } -#line 1378 +#line 1354 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_frexp) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c.src b/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c.src index 1fac3c150c7..85dac9c20dd 100644 --- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c.src +++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_exponent_log.dispatch.c.src @@ -124,18 +124,6 @@ fma_blend(__m256 x, __m256 y, __m256 ymask) } NPY_FINLINE __m256 -fma_invert_mask_ps(__m256 ymask) -{ - return _mm256_andnot_ps(ymask, _mm256_set1_ps(-1.0)); -} - -NPY_FINLINE __m256i -fma_invert_mask_pd(__m256i ymask) -{ - return _mm256_andnot_si256(ymask, _mm256_set1_epi32(0xFFFFFFFF)); -} - -NPY_FINLINE __m256 fma_get_exponent(__m256 x) { /* @@ -311,18 +299,6 @@ avx512_blend(__m512 x, __m512 y, __mmask16 ymask) return _mm512_mask_mov_ps(x, ymask, y); } -NPY_FINLINE __mmask16 -avx512_invert_mask_ps(__mmask16 ymask) -{ - return _mm512_knot(ymask); -} - -NPY_FINLINE __mmask8 -avx512_invert_mask_pd(__mmask8 ymask) -{ - return _mm512_knot(ymask); -} - NPY_FINLINE __m512 avx512_get_exponent(__m512 x) { diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c b/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c index ad8c1ef3978..97a78b0e121 100644 --- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c +++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c @@ -320,7 +320,8 @@ simd_binary_ccc_max_s8(const npyv_lanetype_s8 *ip1, const npyv_lanetype_s8 *ip2, } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_max_s8(const npyv_lanetype_s8 *ip1, npy_intp sip1, const npyv_lanetype_s8 *ip2, npy_intp sip2, @@ -483,7 +484,8 @@ simd_binary_ccc_min_s8(const npyv_lanetype_s8 *ip1, const npyv_lanetype_s8 *ip2, } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_min_s8(const npyv_lanetype_s8 *ip1, npy_intp sip1, const npyv_lanetype_s8 *ip2, npy_intp sip2, @@ -646,7 +648,8 @@ simd_binary_ccc_maxp_s8(const npyv_lanetype_s8 *ip1, const npyv_lanetype_s8 *ip2 } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_maxp_s8(const npyv_lanetype_s8 *ip1, npy_intp sip1, const npyv_lanetype_s8 *ip2, npy_intp sip2, @@ -809,7 +812,8 @@ simd_binary_ccc_minp_s8(const npyv_lanetype_s8 *ip1, const npyv_lanetype_s8 *ip2 } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_minp_s8(const npyv_lanetype_s8 *ip1, npy_intp sip1, const npyv_lanetype_s8 *ip2, npy_intp sip2, @@ -974,7 +978,8 @@ simd_binary_ccc_max_u8(const npyv_lanetype_u8 *ip1, const npyv_lanetype_u8 *ip2, } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_max_u8(const npyv_lanetype_u8 *ip1, npy_intp sip1, const npyv_lanetype_u8 *ip2, npy_intp sip2, @@ -1137,7 +1142,8 @@ simd_binary_ccc_min_u8(const npyv_lanetype_u8 *ip1, const npyv_lanetype_u8 *ip2, } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_min_u8(const npyv_lanetype_u8 *ip1, npy_intp sip1, const npyv_lanetype_u8 *ip2, npy_intp sip2, @@ -1300,7 +1306,8 @@ simd_binary_ccc_maxp_u8(const npyv_lanetype_u8 *ip1, const npyv_lanetype_u8 *ip2 } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_maxp_u8(const npyv_lanetype_u8 *ip1, npy_intp sip1, const npyv_lanetype_u8 *ip2, npy_intp sip2, @@ -1463,7 +1470,8 @@ simd_binary_ccc_minp_u8(const npyv_lanetype_u8 *ip1, const npyv_lanetype_u8 *ip2 } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_minp_u8(const npyv_lanetype_u8 *ip1, npy_intp sip1, const npyv_lanetype_u8 *ip2, npy_intp sip2, @@ -1628,7 +1636,8 @@ simd_binary_ccc_max_s16(const npyv_lanetype_s16 *ip1, const npyv_lanetype_s16 *i } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_max_s16(const npyv_lanetype_s16 *ip1, npy_intp sip1, const npyv_lanetype_s16 *ip2, npy_intp sip2, @@ -1791,7 +1800,8 @@ simd_binary_ccc_min_s16(const npyv_lanetype_s16 *ip1, const npyv_lanetype_s16 *i } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_min_s16(const npyv_lanetype_s16 *ip1, npy_intp sip1, const npyv_lanetype_s16 *ip2, npy_intp sip2, @@ -1954,7 +1964,8 @@ simd_binary_ccc_maxp_s16(const npyv_lanetype_s16 *ip1, const npyv_lanetype_s16 * } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_maxp_s16(const npyv_lanetype_s16 *ip1, npy_intp sip1, const npyv_lanetype_s16 *ip2, npy_intp sip2, @@ -2117,7 +2128,8 @@ simd_binary_ccc_minp_s16(const npyv_lanetype_s16 *ip1, const npyv_lanetype_s16 * } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_minp_s16(const npyv_lanetype_s16 *ip1, npy_intp sip1, const npyv_lanetype_s16 *ip2, npy_intp sip2, @@ -2282,7 +2294,8 @@ simd_binary_ccc_max_u16(const npyv_lanetype_u16 *ip1, const npyv_lanetype_u16 *i } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_max_u16(const npyv_lanetype_u16 *ip1, npy_intp sip1, const npyv_lanetype_u16 *ip2, npy_intp sip2, @@ -2445,7 +2458,8 @@ simd_binary_ccc_min_u16(const npyv_lanetype_u16 *ip1, const npyv_lanetype_u16 *i } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_min_u16(const npyv_lanetype_u16 *ip1, npy_intp sip1, const npyv_lanetype_u16 *ip2, npy_intp sip2, @@ -2608,7 +2622,8 @@ simd_binary_ccc_maxp_u16(const npyv_lanetype_u16 *ip1, const npyv_lanetype_u16 * } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_maxp_u16(const npyv_lanetype_u16 *ip1, npy_intp sip1, const npyv_lanetype_u16 *ip2, npy_intp sip2, @@ -2771,7 +2786,8 @@ simd_binary_ccc_minp_u16(const npyv_lanetype_u16 *ip1, const npyv_lanetype_u16 * } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_minp_u16(const npyv_lanetype_u16 *ip1, npy_intp sip1, const npyv_lanetype_u16 *ip2, npy_intp sip2, @@ -2936,7 +2952,8 @@ simd_binary_ccc_max_s32(const npyv_lanetype_s32 *ip1, const npyv_lanetype_s32 *i } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_max_s32(const npyv_lanetype_s32 *ip1, npy_intp sip1, const npyv_lanetype_s32 *ip2, npy_intp sip2, @@ -3099,7 +3116,8 @@ simd_binary_ccc_min_s32(const npyv_lanetype_s32 *ip1, const npyv_lanetype_s32 *i } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_min_s32(const npyv_lanetype_s32 *ip1, npy_intp sip1, const npyv_lanetype_s32 *ip2, npy_intp sip2, @@ -3262,7 +3280,8 @@ simd_binary_ccc_maxp_s32(const npyv_lanetype_s32 *ip1, const npyv_lanetype_s32 * } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_maxp_s32(const npyv_lanetype_s32 *ip1, npy_intp sip1, const npyv_lanetype_s32 *ip2, npy_intp sip2, @@ -3425,7 +3444,8 @@ simd_binary_ccc_minp_s32(const npyv_lanetype_s32 *ip1, const npyv_lanetype_s32 * } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_minp_s32(const npyv_lanetype_s32 *ip1, npy_intp sip1, const npyv_lanetype_s32 *ip2, npy_intp sip2, @@ -3590,7 +3610,8 @@ simd_binary_ccc_max_u32(const npyv_lanetype_u32 *ip1, const npyv_lanetype_u32 *i } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_max_u32(const npyv_lanetype_u32 *ip1, npy_intp sip1, const npyv_lanetype_u32 *ip2, npy_intp sip2, @@ -3753,7 +3774,8 @@ simd_binary_ccc_min_u32(const npyv_lanetype_u32 *ip1, const npyv_lanetype_u32 *i } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_min_u32(const npyv_lanetype_u32 *ip1, npy_intp sip1, const npyv_lanetype_u32 *ip2, npy_intp sip2, @@ -3916,7 +3938,8 @@ simd_binary_ccc_maxp_u32(const npyv_lanetype_u32 *ip1, const npyv_lanetype_u32 * } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_maxp_u32(const npyv_lanetype_u32 *ip1, npy_intp sip1, const npyv_lanetype_u32 *ip2, npy_intp sip2, @@ -4079,7 +4102,8 @@ simd_binary_ccc_minp_u32(const npyv_lanetype_u32 *ip1, const npyv_lanetype_u32 * } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_minp_u32(const npyv_lanetype_u32 *ip1, npy_intp sip1, const npyv_lanetype_u32 *ip2, npy_intp sip2, @@ -4244,7 +4268,8 @@ simd_binary_ccc_max_s64(const npyv_lanetype_s64 *ip1, const npyv_lanetype_s64 *i } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_max_s64(const npyv_lanetype_s64 *ip1, npy_intp sip1, const npyv_lanetype_s64 *ip2, npy_intp sip2, @@ -4407,7 +4432,8 @@ simd_binary_ccc_min_s64(const npyv_lanetype_s64 *ip1, const npyv_lanetype_s64 *i } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_min_s64(const npyv_lanetype_s64 *ip1, npy_intp sip1, const npyv_lanetype_s64 *ip2, npy_intp sip2, @@ -4570,7 +4596,8 @@ simd_binary_ccc_maxp_s64(const npyv_lanetype_s64 *ip1, const npyv_lanetype_s64 * } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_maxp_s64(const npyv_lanetype_s64 *ip1, npy_intp sip1, const npyv_lanetype_s64 *ip2, npy_intp sip2, @@ -4733,7 +4760,8 @@ simd_binary_ccc_minp_s64(const npyv_lanetype_s64 *ip1, const npyv_lanetype_s64 * } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_minp_s64(const npyv_lanetype_s64 *ip1, npy_intp sip1, const npyv_lanetype_s64 *ip2, npy_intp sip2, @@ -4898,7 +4926,8 @@ simd_binary_ccc_max_u64(const npyv_lanetype_u64 *ip1, const npyv_lanetype_u64 *i } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_max_u64(const npyv_lanetype_u64 *ip1, npy_intp sip1, const npyv_lanetype_u64 *ip2, npy_intp sip2, @@ -5061,7 +5090,8 @@ simd_binary_ccc_min_u64(const npyv_lanetype_u64 *ip1, const npyv_lanetype_u64 *i } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_min_u64(const npyv_lanetype_u64 *ip1, npy_intp sip1, const npyv_lanetype_u64 *ip2, npy_intp sip2, @@ -5224,7 +5254,8 @@ simd_binary_ccc_maxp_u64(const npyv_lanetype_u64 *ip1, const npyv_lanetype_u64 * } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_maxp_u64(const npyv_lanetype_u64 *ip1, npy_intp sip1, const npyv_lanetype_u64 *ip2, npy_intp sip2, @@ -5387,7 +5418,8 @@ simd_binary_ccc_minp_u64(const npyv_lanetype_u64 *ip1, const npyv_lanetype_u64 * } } // non-contiguous for float 32/64-bit memory access -#if 0 +#if 0 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_minp_u64(const npyv_lanetype_u64 *ip1, npy_intp sip1, const npyv_lanetype_u64 *ip2, npy_intp sip2, @@ -5552,7 +5584,8 @@ simd_binary_ccc_max_f32(const npyv_lanetype_f32 *ip1, const npyv_lanetype_f32 *i } } // non-contiguous for float 32/64-bit memory access -#if 1 +#if 1 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_max_f32(const npyv_lanetype_f32 *ip1, npy_intp sip1, const npyv_lanetype_f32 *ip2, npy_intp sip2, @@ -5715,7 +5748,8 @@ simd_binary_ccc_min_f32(const npyv_lanetype_f32 *ip1, const npyv_lanetype_f32 *i } } // non-contiguous for float 32/64-bit memory access -#if 1 +#if 1 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_min_f32(const npyv_lanetype_f32 *ip1, npy_intp sip1, const npyv_lanetype_f32 *ip2, npy_intp sip2, @@ -5878,7 +5912,8 @@ simd_binary_ccc_maxp_f32(const npyv_lanetype_f32 *ip1, const npyv_lanetype_f32 * } } // non-contiguous for float 32/64-bit memory access -#if 1 +#if 1 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_maxp_f32(const npyv_lanetype_f32 *ip1, npy_intp sip1, const npyv_lanetype_f32 *ip2, npy_intp sip2, @@ -6041,7 +6076,8 @@ simd_binary_ccc_minp_f32(const npyv_lanetype_f32 *ip1, const npyv_lanetype_f32 * } } // non-contiguous for float 32/64-bit memory access -#if 1 +#if 1 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_minp_f32(const npyv_lanetype_f32 *ip1, npy_intp sip1, const npyv_lanetype_f32 *ip2, npy_intp sip2, @@ -6206,7 +6242,8 @@ simd_binary_ccc_max_f64(const npyv_lanetype_f64 *ip1, const npyv_lanetype_f64 *i } } // non-contiguous for float 32/64-bit memory access -#if 1 +#if 1 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_max_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1, const npyv_lanetype_f64 *ip2, npy_intp sip2, @@ -6369,7 +6406,8 @@ simd_binary_ccc_min_f64(const npyv_lanetype_f64 *ip1, const npyv_lanetype_f64 *i } } // non-contiguous for float 32/64-bit memory access -#if 1 +#if 1 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_min_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1, const npyv_lanetype_f64 *ip2, npy_intp sip2, @@ -6532,7 +6570,8 @@ simd_binary_ccc_maxp_f64(const npyv_lanetype_f64 *ip1, const npyv_lanetype_f64 * } } // non-contiguous for float 32/64-bit memory access -#if 1 +#if 1 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_maxp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1, const npyv_lanetype_f64 *ip2, npy_intp sip2, @@ -6695,7 +6734,8 @@ simd_binary_ccc_minp_f64(const npyv_lanetype_f64 *ip1, const npyv_lanetype_f64 * } } // non-contiguous for float 32/64-bit memory access -#if 1 +#if 1 && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_minp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1, const npyv_lanetype_f64 *ip2, npy_intp sip2, @@ -6744,10 +6784,10 @@ simd_binary_minp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1, /******************************************************************************* ** Defining ufunc inner functions ******************************************************************************/ -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_BYTE == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -6763,7 +6803,7 @@ simd_binary_minp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1, #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_BYTE == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -6779,7 +6819,7 @@ simd_binary_minp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1, #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_BYTE == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -6795,7 +6835,7 @@ simd_binary_minp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1, #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_BYTE == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -6813,7 +6853,7 @@ simd_binary_minp_f64(const npyv_lanetype_f64 *ip1, npy_intp sip1, #endif -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_max_i @@ -6921,22 +6961,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_ubyte v0 = *((npy_ubyte *)(ip1 + (i + 0) * is1)); npy_ubyte u0 = *((npy_ubyte *)(ip2 + (i + 0) * is2)); *((npy_ubyte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ubyte v1 = *((npy_ubyte *)(ip1 + (i + 1) * is1)); npy_ubyte u1 = *((npy_ubyte *)(ip2 + (i + 1) * is2)); *((npy_ubyte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ubyte v2 = *((npy_ubyte *)(ip1 + (i + 2) * is1)); npy_ubyte u2 = *((npy_ubyte *)(ip2 + (i + 2) * is2)); *((npy_ubyte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ubyte v3 = *((npy_ubyte *)(ip1 + (i + 3) * is1)); npy_ubyte u3 = *((npy_ubyte *)(ip2 + (i + 3) * is2)); *((npy_ubyte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -6988,7 +7028,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_min_i @@ -7096,22 +7136,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_ubyte v0 = *((npy_ubyte *)(ip1 + (i + 0) * is1)); npy_ubyte u0 = *((npy_ubyte *)(ip2 + (i + 0) * is2)); *((npy_ubyte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ubyte v1 = *((npy_ubyte *)(ip1 + (i + 1) * is1)); npy_ubyte u1 = *((npy_ubyte *)(ip2 + (i + 1) * is2)); *((npy_ubyte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ubyte v2 = *((npy_ubyte *)(ip1 + (i + 2) * is1)); npy_ubyte u2 = *((npy_ubyte *)(ip2 + (i + 2) * is2)); *((npy_ubyte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ubyte v3 = *((npy_ubyte *)(ip1 + (i + 3) * is1)); npy_ubyte u3 = *((npy_ubyte *)(ip2 + (i + 3) * is2)); *((npy_ubyte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -7163,7 +7203,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_maxp_i @@ -7271,22 +7311,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_ubyte v0 = *((npy_ubyte *)(ip1 + (i + 0) * is1)); npy_ubyte u0 = *((npy_ubyte *)(ip2 + (i + 0) * is2)); *((npy_ubyte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ubyte v1 = *((npy_ubyte *)(ip1 + (i + 1) * is1)); npy_ubyte u1 = *((npy_ubyte *)(ip2 + (i + 1) * is2)); *((npy_ubyte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ubyte v2 = *((npy_ubyte *)(ip1 + (i + 2) * is1)); npy_ubyte u2 = *((npy_ubyte *)(ip2 + (i + 2) * is2)); *((npy_ubyte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ubyte v3 = *((npy_ubyte *)(ip1 + (i + 3) * is1)); npy_ubyte u3 = *((npy_ubyte *)(ip2 + (i + 3) * is2)); *((npy_ubyte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -7338,7 +7378,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_minp_i @@ -7446,22 +7486,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_ubyte v0 = *((npy_ubyte *)(ip1 + (i + 0) * is1)); npy_ubyte u0 = *((npy_ubyte *)(ip2 + (i + 0) * is2)); *((npy_ubyte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ubyte v1 = *((npy_ubyte *)(ip1 + (i + 1) * is1)); npy_ubyte u1 = *((npy_ubyte *)(ip2 + (i + 1) * is2)); *((npy_ubyte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ubyte v2 = *((npy_ubyte *)(ip1 + (i + 2) * is1)); npy_ubyte u2 = *((npy_ubyte *)(ip2 + (i + 2) * is2)); *((npy_ubyte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ubyte v3 = *((npy_ubyte *)(ip1 + (i + 3) * is1)); npy_ubyte u3 = *((npy_ubyte *)(ip2 + (i + 3) * is2)); *((npy_ubyte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -7514,10 +7554,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_fmin_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_SHORT == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -7533,7 +7573,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_fmin_indexed) #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_SHORT == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -7549,7 +7589,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_fmin_indexed) #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_SHORT == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -7565,7 +7605,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_fmin_indexed) #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_SHORT == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -7583,7 +7623,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UBYTE_fmin_indexed) #endif -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_max_i @@ -7691,22 +7731,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_ushort v0 = *((npy_ushort *)(ip1 + (i + 0) * is1)); npy_ushort u0 = *((npy_ushort *)(ip2 + (i + 0) * is2)); *((npy_ushort *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ushort v1 = *((npy_ushort *)(ip1 + (i + 1) * is1)); npy_ushort u1 = *((npy_ushort *)(ip2 + (i + 1) * is2)); *((npy_ushort *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ushort v2 = *((npy_ushort *)(ip1 + (i + 2) * is1)); npy_ushort u2 = *((npy_ushort *)(ip2 + (i + 2) * is2)); *((npy_ushort *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ushort v3 = *((npy_ushort *)(ip1 + (i + 3) * is1)); npy_ushort u3 = *((npy_ushort *)(ip2 + (i + 3) * is2)); *((npy_ushort *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -7758,7 +7798,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_min_i @@ -7866,22 +7906,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_ushort v0 = *((npy_ushort *)(ip1 + (i + 0) * is1)); npy_ushort u0 = *((npy_ushort *)(ip2 + (i + 0) * is2)); *((npy_ushort *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ushort v1 = *((npy_ushort *)(ip1 + (i + 1) * is1)); npy_ushort u1 = *((npy_ushort *)(ip2 + (i + 1) * is2)); *((npy_ushort *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ushort v2 = *((npy_ushort *)(ip1 + (i + 2) * is1)); npy_ushort u2 = *((npy_ushort *)(ip2 + (i + 2) * is2)); *((npy_ushort *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ushort v3 = *((npy_ushort *)(ip1 + (i + 3) * is1)); npy_ushort u3 = *((npy_ushort *)(ip2 + (i + 3) * is2)); *((npy_ushort *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -7933,7 +7973,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_maxp_i @@ -8041,22 +8081,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_ushort v0 = *((npy_ushort *)(ip1 + (i + 0) * is1)); npy_ushort u0 = *((npy_ushort *)(ip2 + (i + 0) * is2)); *((npy_ushort *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ushort v1 = *((npy_ushort *)(ip1 + (i + 1) * is1)); npy_ushort u1 = *((npy_ushort *)(ip2 + (i + 1) * is2)); *((npy_ushort *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ushort v2 = *((npy_ushort *)(ip1 + (i + 2) * is1)); npy_ushort u2 = *((npy_ushort *)(ip2 + (i + 2) * is2)); *((npy_ushort *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ushort v3 = *((npy_ushort *)(ip1 + (i + 3) * is1)); npy_ushort u3 = *((npy_ushort *)(ip2 + (i + 3) * is2)); *((npy_ushort *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -8108,7 +8148,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_minp_i @@ -8216,22 +8256,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_ushort v0 = *((npy_ushort *)(ip1 + (i + 0) * is1)); npy_ushort u0 = *((npy_ushort *)(ip2 + (i + 0) * is2)); *((npy_ushort *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ushort v1 = *((npy_ushort *)(ip1 + (i + 1) * is1)); npy_ushort u1 = *((npy_ushort *)(ip2 + (i + 1) * is2)); *((npy_ushort *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ushort v2 = *((npy_ushort *)(ip1 + (i + 2) * is1)); npy_ushort u2 = *((npy_ushort *)(ip2 + (i + 2) * is2)); *((npy_ushort *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ushort v3 = *((npy_ushort *)(ip1 + (i + 3) * is1)); npy_ushort u3 = *((npy_ushort *)(ip2 + (i + 3) * is2)); *((npy_ushort *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -8284,10 +8324,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_fmin_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_INT == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -8303,7 +8343,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_INT == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -8319,7 +8359,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_INT == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -8335,7 +8375,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_INT == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -8353,7 +8393,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(USHORT_fmin_indexed) #endif -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_max_i @@ -8461,22 +8501,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_uint v0 = *((npy_uint *)(ip1 + (i + 0) * is1)); npy_uint u0 = *((npy_uint *)(ip2 + (i + 0) * is2)); *((npy_uint *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_uint v1 = *((npy_uint *)(ip1 + (i + 1) * is1)); npy_uint u1 = *((npy_uint *)(ip2 + (i + 1) * is2)); *((npy_uint *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_uint v2 = *((npy_uint *)(ip1 + (i + 2) * is1)); npy_uint u2 = *((npy_uint *)(ip2 + (i + 2) * is2)); *((npy_uint *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_uint v3 = *((npy_uint *)(ip1 + (i + 3) * is1)); npy_uint u3 = *((npy_uint *)(ip2 + (i + 3) * is2)); *((npy_uint *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -8528,7 +8568,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_min_i @@ -8636,22 +8676,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_uint v0 = *((npy_uint *)(ip1 + (i + 0) * is1)); npy_uint u0 = *((npy_uint *)(ip2 + (i + 0) * is2)); *((npy_uint *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_uint v1 = *((npy_uint *)(ip1 + (i + 1) * is1)); npy_uint u1 = *((npy_uint *)(ip2 + (i + 1) * is2)); *((npy_uint *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_uint v2 = *((npy_uint *)(ip1 + (i + 2) * is1)); npy_uint u2 = *((npy_uint *)(ip2 + (i + 2) * is2)); *((npy_uint *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_uint v3 = *((npy_uint *)(ip1 + (i + 3) * is1)); npy_uint u3 = *((npy_uint *)(ip2 + (i + 3) * is2)); *((npy_uint *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -8703,7 +8743,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_maxp_i @@ -8811,22 +8851,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_uint v0 = *((npy_uint *)(ip1 + (i + 0) * is1)); npy_uint u0 = *((npy_uint *)(ip2 + (i + 0) * is2)); *((npy_uint *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_uint v1 = *((npy_uint *)(ip1 + (i + 1) * is1)); npy_uint u1 = *((npy_uint *)(ip2 + (i + 1) * is2)); *((npy_uint *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_uint v2 = *((npy_uint *)(ip1 + (i + 2) * is1)); npy_uint u2 = *((npy_uint *)(ip2 + (i + 2) * is2)); *((npy_uint *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_uint v3 = *((npy_uint *)(ip1 + (i + 3) * is1)); npy_uint u3 = *((npy_uint *)(ip2 + (i + 3) * is2)); *((npy_uint *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -8878,7 +8918,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_minp_i @@ -8986,22 +9026,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_uint v0 = *((npy_uint *)(ip1 + (i + 0) * is1)); npy_uint u0 = *((npy_uint *)(ip2 + (i + 0) * is2)); *((npy_uint *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_uint v1 = *((npy_uint *)(ip1 + (i + 1) * is1)); npy_uint u1 = *((npy_uint *)(ip2 + (i + 1) * is2)); *((npy_uint *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_uint v2 = *((npy_uint *)(ip1 + (i + 2) * is1)); npy_uint u2 = *((npy_uint *)(ip2 + (i + 2) * is2)); *((npy_uint *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_uint v3 = *((npy_uint *)(ip1 + (i + 3) * is1)); npy_uint u3 = *((npy_uint *)(ip2 + (i + 3) * is2)); *((npy_uint *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -9054,10 +9094,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_fmin_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONG == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -9073,7 +9113,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONG == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -9089,7 +9129,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONG == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -9105,7 +9145,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONG == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -9123,7 +9163,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(UINT_fmin_indexed) #endif -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_max_i @@ -9231,22 +9271,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_ulong v0 = *((npy_ulong *)(ip1 + (i + 0) * is1)); npy_ulong u0 = *((npy_ulong *)(ip2 + (i + 0) * is2)); *((npy_ulong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ulong v1 = *((npy_ulong *)(ip1 + (i + 1) * is1)); npy_ulong u1 = *((npy_ulong *)(ip2 + (i + 1) * is2)); *((npy_ulong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ulong v2 = *((npy_ulong *)(ip1 + (i + 2) * is1)); npy_ulong u2 = *((npy_ulong *)(ip2 + (i + 2) * is2)); *((npy_ulong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ulong v3 = *((npy_ulong *)(ip1 + (i + 3) * is1)); npy_ulong u3 = *((npy_ulong *)(ip2 + (i + 3) * is2)); *((npy_ulong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -9298,7 +9338,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_min_i @@ -9406,22 +9446,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_ulong v0 = *((npy_ulong *)(ip1 + (i + 0) * is1)); npy_ulong u0 = *((npy_ulong *)(ip2 + (i + 0) * is2)); *((npy_ulong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ulong v1 = *((npy_ulong *)(ip1 + (i + 1) * is1)); npy_ulong u1 = *((npy_ulong *)(ip2 + (i + 1) * is2)); *((npy_ulong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ulong v2 = *((npy_ulong *)(ip1 + (i + 2) * is1)); npy_ulong u2 = *((npy_ulong *)(ip2 + (i + 2) * is2)); *((npy_ulong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ulong v3 = *((npy_ulong *)(ip1 + (i + 3) * is1)); npy_ulong u3 = *((npy_ulong *)(ip2 + (i + 3) * is2)); *((npy_ulong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -9473,7 +9513,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_maxp_i @@ -9581,22 +9621,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_ulong v0 = *((npy_ulong *)(ip1 + (i + 0) * is1)); npy_ulong u0 = *((npy_ulong *)(ip2 + (i + 0) * is2)); *((npy_ulong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ulong v1 = *((npy_ulong *)(ip1 + (i + 1) * is1)); npy_ulong u1 = *((npy_ulong *)(ip2 + (i + 1) * is2)); *((npy_ulong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ulong v2 = *((npy_ulong *)(ip1 + (i + 2) * is1)); npy_ulong u2 = *((npy_ulong *)(ip2 + (i + 2) * is2)); *((npy_ulong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ulong v3 = *((npy_ulong *)(ip1 + (i + 3) * is1)); npy_ulong u3 = *((npy_ulong *)(ip2 + (i + 3) * is2)); *((npy_ulong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -9648,7 +9688,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_minp_i @@ -9756,22 +9796,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_ulong v0 = *((npy_ulong *)(ip1 + (i + 0) * is1)); npy_ulong u0 = *((npy_ulong *)(ip2 + (i + 0) * is2)); *((npy_ulong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ulong v1 = *((npy_ulong *)(ip1 + (i + 1) * is1)); npy_ulong u1 = *((npy_ulong *)(ip2 + (i + 1) * is2)); *((npy_ulong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ulong v2 = *((npy_ulong *)(ip1 + (i + 2) * is1)); npy_ulong u2 = *((npy_ulong *)(ip2 + (i + 2) * is2)); *((npy_ulong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ulong v3 = *((npy_ulong *)(ip1 + (i + 3) * is1)); npy_ulong u3 = *((npy_ulong *)(ip2 + (i + 3) * is2)); *((npy_ulong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -9824,10 +9864,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_fmin_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -9843,7 +9883,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_fmin_indexed) #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -9859,7 +9899,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_fmin_indexed) #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -9875,7 +9915,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_fmin_indexed) #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -9893,7 +9933,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONG_fmin_indexed) #endif -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_max_i @@ -10001,22 +10041,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_ulonglong v0 = *((npy_ulonglong *)(ip1 + (i + 0) * is1)); npy_ulonglong u0 = *((npy_ulonglong *)(ip2 + (i + 0) * is2)); *((npy_ulonglong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ulonglong v1 = *((npy_ulonglong *)(ip1 + (i + 1) * is1)); npy_ulonglong u1 = *((npy_ulonglong *)(ip2 + (i + 1) * is2)); *((npy_ulonglong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ulonglong v2 = *((npy_ulonglong *)(ip1 + (i + 2) * is1)); npy_ulonglong u2 = *((npy_ulonglong *)(ip2 + (i + 2) * is2)); *((npy_ulonglong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ulonglong v3 = *((npy_ulonglong *)(ip1 + (i + 3) * is1)); npy_ulonglong u3 = *((npy_ulonglong *)(ip2 + (i + 3) * is2)); *((npy_ulonglong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -10068,7 +10108,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_min_i @@ -10176,22 +10216,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_ulonglong v0 = *((npy_ulonglong *)(ip1 + (i + 0) * is1)); npy_ulonglong u0 = *((npy_ulonglong *)(ip2 + (i + 0) * is2)); *((npy_ulonglong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ulonglong v1 = *((npy_ulonglong *)(ip1 + (i + 1) * is1)); npy_ulonglong u1 = *((npy_ulonglong *)(ip2 + (i + 1) * is2)); *((npy_ulonglong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ulonglong v2 = *((npy_ulonglong *)(ip1 + (i + 2) * is1)); npy_ulonglong u2 = *((npy_ulonglong *)(ip2 + (i + 2) * is2)); *((npy_ulonglong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ulonglong v3 = *((npy_ulonglong *)(ip1 + (i + 3) * is1)); npy_ulonglong u3 = *((npy_ulonglong *)(ip2 + (i + 3) * is2)); *((npy_ulonglong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -10243,7 +10283,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_maxp_i @@ -10351,22 +10391,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_ulonglong v0 = *((npy_ulonglong *)(ip1 + (i + 0) * is1)); npy_ulonglong u0 = *((npy_ulonglong *)(ip2 + (i + 0) * is2)); *((npy_ulonglong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ulonglong v1 = *((npy_ulonglong *)(ip1 + (i + 1) * is1)); npy_ulonglong u1 = *((npy_ulonglong *)(ip2 + (i + 1) * is2)); *((npy_ulonglong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ulonglong v2 = *((npy_ulonglong *)(ip1 + (i + 2) * is1)); npy_ulonglong u2 = *((npy_ulonglong *)(ip2 + (i + 2) * is2)); *((npy_ulonglong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ulonglong v3 = *((npy_ulonglong *)(ip1 + (i + 3) * is1)); npy_ulonglong u3 = *((npy_ulonglong *)(ip2 + (i + 3) * is2)); *((npy_ulonglong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -10418,7 +10458,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_minp_i @@ -10526,22 +10566,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_ulonglong v0 = *((npy_ulonglong *)(ip1 + (i + 0) * is1)); npy_ulonglong u0 = *((npy_ulonglong *)(ip2 + (i + 0) * is2)); *((npy_ulonglong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_ulonglong v1 = *((npy_ulonglong *)(ip1 + (i + 1) * is1)); npy_ulonglong u1 = *((npy_ulonglong *)(ip2 + (i + 1) * is2)); *((npy_ulonglong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_ulonglong v2 = *((npy_ulonglong *)(ip1 + (i + 2) * is1)); npy_ulonglong u2 = *((npy_ulonglong *)(ip2 + (i + 2) * is2)); *((npy_ulonglong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_ulonglong v3 = *((npy_ulonglong *)(ip1 + (i + 3) * is1)); npy_ulonglong u3 = *((npy_ulonglong *)(ip2 + (i + 3) * is2)); *((npy_ulonglong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -10594,10 +10634,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmin_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_BYTE == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -10613,7 +10653,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmin_indexed) #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_BYTE == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -10629,7 +10669,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmin_indexed) #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_BYTE == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -10645,7 +10685,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmin_indexed) #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_BYTE == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -10663,7 +10703,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(ULONGLONG_fmin_indexed) #endif -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_max_i @@ -10771,22 +10811,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_byte v0 = *((npy_byte *)(ip1 + (i + 0) * is1)); npy_byte u0 = *((npy_byte *)(ip2 + (i + 0) * is2)); *((npy_byte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_byte v1 = *((npy_byte *)(ip1 + (i + 1) * is1)); npy_byte u1 = *((npy_byte *)(ip2 + (i + 1) * is2)); *((npy_byte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_byte v2 = *((npy_byte *)(ip1 + (i + 2) * is1)); npy_byte u2 = *((npy_byte *)(ip2 + (i + 2) * is2)); *((npy_byte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_byte v3 = *((npy_byte *)(ip1 + (i + 3) * is1)); npy_byte u3 = *((npy_byte *)(ip2 + (i + 3) * is2)); *((npy_byte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -10838,7 +10878,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_min_i @@ -10946,22 +10986,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_byte v0 = *((npy_byte *)(ip1 + (i + 0) * is1)); npy_byte u0 = *((npy_byte *)(ip2 + (i + 0) * is2)); *((npy_byte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_byte v1 = *((npy_byte *)(ip1 + (i + 1) * is1)); npy_byte u1 = *((npy_byte *)(ip2 + (i + 1) * is2)); *((npy_byte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_byte v2 = *((npy_byte *)(ip1 + (i + 2) * is1)); npy_byte u2 = *((npy_byte *)(ip2 + (i + 2) * is2)); *((npy_byte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_byte v3 = *((npy_byte *)(ip1 + (i + 3) * is1)); npy_byte u3 = *((npy_byte *)(ip2 + (i + 3) * is2)); *((npy_byte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -11013,7 +11053,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_maxp_i @@ -11121,22 +11161,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_byte v0 = *((npy_byte *)(ip1 + (i + 0) * is1)); npy_byte u0 = *((npy_byte *)(ip2 + (i + 0) * is2)); *((npy_byte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_byte v1 = *((npy_byte *)(ip1 + (i + 1) * is1)); npy_byte u1 = *((npy_byte *)(ip2 + (i + 1) * is2)); *((npy_byte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_byte v2 = *((npy_byte *)(ip1 + (i + 2) * is1)); npy_byte u2 = *((npy_byte *)(ip2 + (i + 2) * is2)); *((npy_byte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_byte v3 = *((npy_byte *)(ip1 + (i + 3) * is1)); npy_byte u3 = *((npy_byte *)(ip2 + (i + 3) * is2)); *((npy_byte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -11188,7 +11228,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_minp_i @@ -11296,22 +11336,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_byte v0 = *((npy_byte *)(ip1 + (i + 0) * is1)); npy_byte u0 = *((npy_byte *)(ip2 + (i + 0) * is2)); *((npy_byte *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_byte v1 = *((npy_byte *)(ip1 + (i + 1) * is1)); npy_byte u1 = *((npy_byte *)(ip2 + (i + 1) * is2)); *((npy_byte *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_byte v2 = *((npy_byte *)(ip1 + (i + 2) * is1)); npy_byte u2 = *((npy_byte *)(ip2 + (i + 2) * is2)); *((npy_byte *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_byte v3 = *((npy_byte *)(ip1 + (i + 3) * is1)); npy_byte u3 = *((npy_byte *)(ip2 + (i + 3) * is2)); *((npy_byte *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -11364,10 +11404,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_fmin_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_SHORT == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -11383,7 +11423,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_fmin_indexed) #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_SHORT == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -11399,7 +11439,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_fmin_indexed) #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_SHORT == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -11415,7 +11455,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_fmin_indexed) #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_SHORT == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -11433,7 +11473,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(BYTE_fmin_indexed) #endif -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_max_i @@ -11541,22 +11581,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_short v0 = *((npy_short *)(ip1 + (i + 0) * is1)); npy_short u0 = *((npy_short *)(ip2 + (i + 0) * is2)); *((npy_short *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_short v1 = *((npy_short *)(ip1 + (i + 1) * is1)); npy_short u1 = *((npy_short *)(ip2 + (i + 1) * is2)); *((npy_short *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_short v2 = *((npy_short *)(ip1 + (i + 2) * is1)); npy_short u2 = *((npy_short *)(ip2 + (i + 2) * is2)); *((npy_short *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_short v3 = *((npy_short *)(ip1 + (i + 3) * is1)); npy_short u3 = *((npy_short *)(ip2 + (i + 3) * is2)); *((npy_short *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -11608,7 +11648,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_min_i @@ -11716,22 +11756,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_short v0 = *((npy_short *)(ip1 + (i + 0) * is1)); npy_short u0 = *((npy_short *)(ip2 + (i + 0) * is2)); *((npy_short *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_short v1 = *((npy_short *)(ip1 + (i + 1) * is1)); npy_short u1 = *((npy_short *)(ip2 + (i + 1) * is2)); *((npy_short *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_short v2 = *((npy_short *)(ip1 + (i + 2) * is1)); npy_short u2 = *((npy_short *)(ip2 + (i + 2) * is2)); *((npy_short *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_short v3 = *((npy_short *)(ip1 + (i + 3) * is1)); npy_short u3 = *((npy_short *)(ip2 + (i + 3) * is2)); *((npy_short *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -11783,7 +11823,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_maxp_i @@ -11891,22 +11931,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_short v0 = *((npy_short *)(ip1 + (i + 0) * is1)); npy_short u0 = *((npy_short *)(ip2 + (i + 0) * is2)); *((npy_short *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_short v1 = *((npy_short *)(ip1 + (i + 1) * is1)); npy_short u1 = *((npy_short *)(ip2 + (i + 1) * is2)); *((npy_short *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_short v2 = *((npy_short *)(ip1 + (i + 2) * is1)); npy_short u2 = *((npy_short *)(ip2 + (i + 2) * is2)); *((npy_short *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_short v3 = *((npy_short *)(ip1 + (i + 3) * is1)); npy_short u3 = *((npy_short *)(ip2 + (i + 3) * is2)); *((npy_short *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -11958,7 +11998,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_minp_i @@ -12066,22 +12106,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_short v0 = *((npy_short *)(ip1 + (i + 0) * is1)); npy_short u0 = *((npy_short *)(ip2 + (i + 0) * is2)); *((npy_short *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_short v1 = *((npy_short *)(ip1 + (i + 1) * is1)); npy_short u1 = *((npy_short *)(ip2 + (i + 1) * is2)); *((npy_short *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_short v2 = *((npy_short *)(ip1 + (i + 2) * is1)); npy_short u2 = *((npy_short *)(ip2 + (i + 2) * is2)); *((npy_short *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_short v3 = *((npy_short *)(ip1 + (i + 3) * is1)); npy_short u3 = *((npy_short *)(ip2 + (i + 3) * is2)); *((npy_short *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -12134,10 +12174,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_fmin_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_INT == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -12153,7 +12193,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_INT == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -12169,7 +12209,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_INT == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -12185,7 +12225,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_INT == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -12203,7 +12243,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(SHORT_fmin_indexed) #endif -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_max_i @@ -12311,22 +12351,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_int v0 = *((npy_int *)(ip1 + (i + 0) * is1)); npy_int u0 = *((npy_int *)(ip2 + (i + 0) * is2)); *((npy_int *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_int v1 = *((npy_int *)(ip1 + (i + 1) * is1)); npy_int u1 = *((npy_int *)(ip2 + (i + 1) * is2)); *((npy_int *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_int v2 = *((npy_int *)(ip1 + (i + 2) * is1)); npy_int u2 = *((npy_int *)(ip2 + (i + 2) * is2)); *((npy_int *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_int v3 = *((npy_int *)(ip1 + (i + 3) * is1)); npy_int u3 = *((npy_int *)(ip2 + (i + 3) * is2)); *((npy_int *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -12378,7 +12418,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_min_i @@ -12486,22 +12526,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_int v0 = *((npy_int *)(ip1 + (i + 0) * is1)); npy_int u0 = *((npy_int *)(ip2 + (i + 0) * is2)); *((npy_int *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_int v1 = *((npy_int *)(ip1 + (i + 1) * is1)); npy_int u1 = *((npy_int *)(ip2 + (i + 1) * is2)); *((npy_int *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_int v2 = *((npy_int *)(ip1 + (i + 2) * is1)); npy_int u2 = *((npy_int *)(ip2 + (i + 2) * is2)); *((npy_int *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_int v3 = *((npy_int *)(ip1 + (i + 3) * is1)); npy_int u3 = *((npy_int *)(ip2 + (i + 3) * is2)); *((npy_int *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -12553,7 +12593,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_maxp_i @@ -12661,22 +12701,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_int v0 = *((npy_int *)(ip1 + (i + 0) * is1)); npy_int u0 = *((npy_int *)(ip2 + (i + 0) * is2)); *((npy_int *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_int v1 = *((npy_int *)(ip1 + (i + 1) * is1)); npy_int u1 = *((npy_int *)(ip2 + (i + 1) * is2)); *((npy_int *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_int v2 = *((npy_int *)(ip1 + (i + 2) * is1)); npy_int u2 = *((npy_int *)(ip2 + (i + 2) * is2)); *((npy_int *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_int v3 = *((npy_int *)(ip1 + (i + 3) * is1)); npy_int u3 = *((npy_int *)(ip2 + (i + 3) * is2)); *((npy_int *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -12728,7 +12768,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_minp_i @@ -12836,22 +12876,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_int v0 = *((npy_int *)(ip1 + (i + 0) * is1)); npy_int u0 = *((npy_int *)(ip2 + (i + 0) * is2)); *((npy_int *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_int v1 = *((npy_int *)(ip1 + (i + 1) * is1)); npy_int u1 = *((npy_int *)(ip2 + (i + 1) * is2)); *((npy_int *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_int v2 = *((npy_int *)(ip1 + (i + 2) * is1)); npy_int u2 = *((npy_int *)(ip2 + (i + 2) * is2)); *((npy_int *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_int v3 = *((npy_int *)(ip1 + (i + 3) * is1)); npy_int u3 = *((npy_int *)(ip2 + (i + 3) * is2)); *((npy_int *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -12904,10 +12944,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_fmin_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONG == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -12923,7 +12963,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONG == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -12939,7 +12979,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONG == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -12955,7 +12995,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONG == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -12973,7 +13013,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(INT_fmin_indexed) #endif -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_max_i @@ -13081,22 +13121,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_long v0 = *((npy_long *)(ip1 + (i + 0) * is1)); npy_long u0 = *((npy_long *)(ip2 + (i + 0) * is2)); *((npy_long *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_long v1 = *((npy_long *)(ip1 + (i + 1) * is1)); npy_long u1 = *((npy_long *)(ip2 + (i + 1) * is2)); *((npy_long *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_long v2 = *((npy_long *)(ip1 + (i + 2) * is1)); npy_long u2 = *((npy_long *)(ip2 + (i + 2) * is2)); *((npy_long *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_long v3 = *((npy_long *)(ip1 + (i + 3) * is1)); npy_long u3 = *((npy_long *)(ip2 + (i + 3) * is2)); *((npy_long *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -13148,7 +13188,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_min_i @@ -13256,22 +13296,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_long v0 = *((npy_long *)(ip1 + (i + 0) * is1)); npy_long u0 = *((npy_long *)(ip2 + (i + 0) * is2)); *((npy_long *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_long v1 = *((npy_long *)(ip1 + (i + 1) * is1)); npy_long u1 = *((npy_long *)(ip2 + (i + 1) * is2)); *((npy_long *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_long v2 = *((npy_long *)(ip1 + (i + 2) * is1)); npy_long u2 = *((npy_long *)(ip2 + (i + 2) * is2)); *((npy_long *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_long v3 = *((npy_long *)(ip1 + (i + 3) * is1)); npy_long u3 = *((npy_long *)(ip2 + (i + 3) * is2)); *((npy_long *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -13323,7 +13363,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_maxp_i @@ -13431,22 +13471,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_long v0 = *((npy_long *)(ip1 + (i + 0) * is1)); npy_long u0 = *((npy_long *)(ip2 + (i + 0) * is2)); *((npy_long *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_long v1 = *((npy_long *)(ip1 + (i + 1) * is1)); npy_long u1 = *((npy_long *)(ip2 + (i + 1) * is2)); *((npy_long *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_long v2 = *((npy_long *)(ip1 + (i + 2) * is1)); npy_long u2 = *((npy_long *)(ip2 + (i + 2) * is2)); *((npy_long *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_long v3 = *((npy_long *)(ip1 + (i + 3) * is1)); npy_long u3 = *((npy_long *)(ip2 + (i + 3) * is2)); *((npy_long *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -13498,7 +13538,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_minp_i @@ -13606,22 +13646,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_long v0 = *((npy_long *)(ip1 + (i + 0) * is1)); npy_long u0 = *((npy_long *)(ip2 + (i + 0) * is2)); *((npy_long *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_long v1 = *((npy_long *)(ip1 + (i + 1) * is1)); npy_long u1 = *((npy_long *)(ip2 + (i + 1) * is2)); *((npy_long *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_long v2 = *((npy_long *)(ip1 + (i + 2) * is1)); npy_long u2 = *((npy_long *)(ip2 + (i + 2) * is2)); *((npy_long *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_long v3 = *((npy_long *)(ip1 + (i + 3) * is1)); npy_long u3 = *((npy_long *)(ip2 + (i + 3) * is2)); *((npy_long *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -13674,10 +13714,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_fmin_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -13693,7 +13733,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_fmin_indexed) #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -13709,7 +13749,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_fmin_indexed) #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -13725,7 +13765,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_fmin_indexed) #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -13743,7 +13783,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONG_fmin_indexed) #endif -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_max_i @@ -13851,22 +13891,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_longlong v0 = *((npy_longlong *)(ip1 + (i + 0) * is1)); npy_longlong u0 = *((npy_longlong *)(ip2 + (i + 0) * is2)); *((npy_longlong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_longlong v1 = *((npy_longlong *)(ip1 + (i + 1) * is1)); npy_longlong u1 = *((npy_longlong *)(ip2 + (i + 1) * is2)); *((npy_longlong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_longlong v2 = *((npy_longlong *)(ip1 + (i + 2) * is1)); npy_longlong u2 = *((npy_longlong *)(ip2 + (i + 2) * is2)); *((npy_longlong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_longlong v3 = *((npy_longlong *)(ip1 + (i + 3) * is1)); npy_longlong u3 = *((npy_longlong *)(ip2 + (i + 3) * is2)); *((npy_longlong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -13918,7 +13958,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (0 && 0) #define SCALAR_OP scalar_min_i @@ -14026,22 +14066,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_longlong v0 = *((npy_longlong *)(ip1 + (i + 0) * is1)); npy_longlong u0 = *((npy_longlong *)(ip2 + (i + 0) * is2)); *((npy_longlong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_longlong v1 = *((npy_longlong *)(ip1 + (i + 1) * is1)); npy_longlong u1 = *((npy_longlong *)(ip2 + (i + 1) * is2)); *((npy_longlong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_longlong v2 = *((npy_longlong *)(ip1 + (i + 2) * is1)); npy_longlong u2 = *((npy_longlong *)(ip2 + (i + 2) * is2)); *((npy_longlong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_longlong v3 = *((npy_longlong *)(ip1 + (i + 3) * is1)); npy_longlong u3 = *((npy_longlong *)(ip2 + (i + 3) * is2)); *((npy_longlong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -14093,7 +14133,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_maxp_i @@ -14201,22 +14241,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_longlong v0 = *((npy_longlong *)(ip1 + (i + 0) * is1)); npy_longlong u0 = *((npy_longlong *)(ip2 + (i + 0) * is2)); *((npy_longlong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_longlong v1 = *((npy_longlong *)(ip1 + (i + 1) * is1)); npy_longlong u1 = *((npy_longlong *)(ip2 + (i + 1) * is2)); *((npy_longlong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_longlong v2 = *((npy_longlong *)(ip1 + (i + 2) * is1)); npy_longlong u2 = *((npy_longlong *)(ip2 + (i + 2) * is2)); *((npy_longlong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_longlong v3 = *((npy_longlong *)(ip1 + (i + 3) * is1)); npy_longlong u3 = *((npy_longlong *)(ip2 + (i + 3) * is2)); *((npy_longlong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -14268,7 +14308,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (0 && 1) #define SCALAR_OP scalar_minp_i @@ -14376,22 +14416,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_longlong v0 = *((npy_longlong *)(ip1 + (i + 0) * is1)); npy_longlong u0 = *((npy_longlong *)(ip2 + (i + 0) * is2)); *((npy_longlong *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_longlong v1 = *((npy_longlong *)(ip1 + (i + 1) * is1)); npy_longlong u1 = *((npy_longlong *)(ip2 + (i + 1) * is2)); *((npy_longlong *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_longlong v2 = *((npy_longlong *)(ip1 + (i + 2) * is1)); npy_longlong u2 = *((npy_longlong *)(ip2 + (i + 2) * is2)); *((npy_longlong *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_longlong v3 = *((npy_longlong *)(ip1 + (i + 3) * is1)); npy_longlong u3 = *((npy_longlong *)(ip2 + (i + 3) * is2)); *((npy_longlong *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -14444,10 +14484,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_fmin_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_FLOAT == 8 #if 1 #define TO_SIMD_SFX(X) X##_f8 @@ -14463,7 +14503,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_fmin_indexed) #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_FLOAT == 16 #if 1 #define TO_SIMD_SFX(X) X##_f16 @@ -14479,7 +14519,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_fmin_indexed) #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_FLOAT == 32 #if 1 #define TO_SIMD_SFX(X) X##_f32 @@ -14495,7 +14535,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_fmin_indexed) #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_FLOAT == 64 #if 1 #define TO_SIMD_SFX(X) X##_f64 @@ -14513,7 +14553,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGLONG_fmin_indexed) #endif -#line 320 +#line 321 #if !0 || (1 && 0) #define SCALAR_OP scalar_max_f @@ -14621,22 +14661,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_float v0 = *((npy_float *)(ip1 + (i + 0) * is1)); npy_float u0 = *((npy_float *)(ip2 + (i + 0) * is2)); *((npy_float *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_float v1 = *((npy_float *)(ip1 + (i + 1) * is1)); npy_float u1 = *((npy_float *)(ip2 + (i + 1) * is2)); *((npy_float *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_float v2 = *((npy_float *)(ip1 + (i + 2) * is1)); npy_float u2 = *((npy_float *)(ip2 + (i + 2) * is2)); *((npy_float *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_float v3 = *((npy_float *)(ip1 + (i + 3) * is1)); npy_float u3 = *((npy_float *)(ip2 + (i + 3) * is2)); *((npy_float *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -14688,7 +14728,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (1 && 0) #define SCALAR_OP scalar_min_f @@ -14796,22 +14836,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_float v0 = *((npy_float *)(ip1 + (i + 0) * is1)); npy_float u0 = *((npy_float *)(ip2 + (i + 0) * is2)); *((npy_float *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_float v1 = *((npy_float *)(ip1 + (i + 1) * is1)); npy_float u1 = *((npy_float *)(ip2 + (i + 1) * is2)); *((npy_float *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_float v2 = *((npy_float *)(ip1 + (i + 2) * is1)); npy_float u2 = *((npy_float *)(ip2 + (i + 2) * is2)); *((npy_float *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_float v3 = *((npy_float *)(ip1 + (i + 3) * is1)); npy_float u3 = *((npy_float *)(ip2 + (i + 3) * is2)); *((npy_float *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -14863,7 +14903,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (1 && 1) #define SCALAR_OP scalar_maxp_f @@ -14971,22 +15011,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_float v0 = *((npy_float *)(ip1 + (i + 0) * is1)); npy_float u0 = *((npy_float *)(ip2 + (i + 0) * is2)); *((npy_float *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_float v1 = *((npy_float *)(ip1 + (i + 1) * is1)); npy_float u1 = *((npy_float *)(ip2 + (i + 1) * is2)); *((npy_float *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_float v2 = *((npy_float *)(ip1 + (i + 2) * is1)); npy_float u2 = *((npy_float *)(ip2 + (i + 2) * is2)); *((npy_float *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_float v3 = *((npy_float *)(ip1 + (i + 3) * is1)); npy_float u3 = *((npy_float *)(ip2 + (i + 3) * is2)); *((npy_float *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -15038,7 +15078,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (1 && 1) #define SCALAR_OP scalar_minp_f @@ -15146,22 +15186,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_float v0 = *((npy_float *)(ip1 + (i + 0) * is1)); npy_float u0 = *((npy_float *)(ip2 + (i + 0) * is2)); *((npy_float *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_float v1 = *((npy_float *)(ip1 + (i + 1) * is1)); npy_float u1 = *((npy_float *)(ip2 + (i + 1) * is2)); *((npy_float *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_float v2 = *((npy_float *)(ip1 + (i + 2) * is1)); npy_float u2 = *((npy_float *)(ip2 + (i + 2) * is2)); *((npy_float *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_float v3 = *((npy_float *)(ip1 + (i + 3) * is1)); npy_float u3 = *((npy_float *)(ip2 + (i + 3) * is2)); *((npy_float *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -15214,10 +15254,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_fmin_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_DOUBLE == 8 #if 1 #define TO_SIMD_SFX(X) X##_f8 @@ -15233,7 +15273,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_DOUBLE == 16 #if 1 #define TO_SIMD_SFX(X) X##_f16 @@ -15249,7 +15289,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_DOUBLE == 32 #if 1 #define TO_SIMD_SFX(X) X##_f32 @@ -15265,7 +15305,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_fmin_indexed) #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_DOUBLE == 64 #if 1 #define TO_SIMD_SFX(X) X##_f64 @@ -15283,7 +15323,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(FLOAT_fmin_indexed) #endif -#line 320 +#line 321 #if !0 || (1 && 0) #define SCALAR_OP scalar_max_d @@ -15391,22 +15431,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_double v0 = *((npy_double *)(ip1 + (i + 0) * is1)); npy_double u0 = *((npy_double *)(ip2 + (i + 0) * is2)); *((npy_double *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_double v1 = *((npy_double *)(ip1 + (i + 1) * is1)); npy_double u1 = *((npy_double *)(ip2 + (i + 1) * is2)); *((npy_double *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_double v2 = *((npy_double *)(ip1 + (i + 2) * is1)); npy_double u2 = *((npy_double *)(ip2 + (i + 2) * is2)); *((npy_double *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_double v3 = *((npy_double *)(ip1 + (i + 3) * is1)); npy_double u3 = *((npy_double *)(ip2 + (i + 3) * is2)); *((npy_double *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -15458,7 +15498,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (1 && 0) #define SCALAR_OP scalar_min_d @@ -15566,22 +15606,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_double v0 = *((npy_double *)(ip1 + (i + 0) * is1)); npy_double u0 = *((npy_double *)(ip2 + (i + 0) * is2)); *((npy_double *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_double v1 = *((npy_double *)(ip1 + (i + 1) * is1)); npy_double u1 = *((npy_double *)(ip2 + (i + 1) * is2)); *((npy_double *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_double v2 = *((npy_double *)(ip1 + (i + 2) * is1)); npy_double u2 = *((npy_double *)(ip2 + (i + 2) * is2)); *((npy_double *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_double v3 = *((npy_double *)(ip1 + (i + 3) * is1)); npy_double u3 = *((npy_double *)(ip2 + (i + 3) * is2)); *((npy_double *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -15633,7 +15673,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (1 && 1) #define SCALAR_OP scalar_maxp_d @@ -15741,22 +15781,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_double v0 = *((npy_double *)(ip1 + (i + 0) * is1)); npy_double u0 = *((npy_double *)(ip2 + (i + 0) * is2)); *((npy_double *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_double v1 = *((npy_double *)(ip1 + (i + 1) * is1)); npy_double u1 = *((npy_double *)(ip2 + (i + 1) * is2)); *((npy_double *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_double v2 = *((npy_double *)(ip1 + (i + 2) * is1)); npy_double u2 = *((npy_double *)(ip2 + (i + 2) * is2)); *((npy_double *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_double v3 = *((npy_double *)(ip1 + (i + 3) * is1)); npy_double u3 = *((npy_double *)(ip2 + (i + 3) * is2)); *((npy_double *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -15808,7 +15848,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (1 && 1) #define SCALAR_OP scalar_minp_d @@ -15916,22 +15956,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_double v0 = *((npy_double *)(ip1 + (i + 0) * is1)); npy_double u0 = *((npy_double *)(ip2 + (i + 0) * is2)); *((npy_double *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_double v1 = *((npy_double *)(ip1 + (i + 1) * is1)); npy_double u1 = *((npy_double *)(ip2 + (i + 1) * is2)); *((npy_double *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_double v2 = *((npy_double *)(ip1 + (i + 2) * is1)); npy_double u2 = *((npy_double *)(ip2 + (i + 2) * is2)); *((npy_double *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_double v3 = *((npy_double *)(ip1 + (i + 3) * is1)); npy_double u3 = *((npy_double *)(ip2 + (i + 3) * is2)); *((npy_double *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -15984,10 +16024,10 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_fmin_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 293 +#line 294 #undef TO_SIMD_SFX #if 0 -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 8 #if 1 #define TO_SIMD_SFX(X) X##_f8 @@ -16003,7 +16043,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_fmin_indexed) #define TO_SIMD_SFX(X) X##_s8 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 16 #if 1 #define TO_SIMD_SFX(X) X##_f16 @@ -16019,7 +16059,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_fmin_indexed) #define TO_SIMD_SFX(X) X##_s16 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 32 #if 1 #define TO_SIMD_SFX(X) X##_f32 @@ -16035,7 +16075,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_fmin_indexed) #define TO_SIMD_SFX(X) X##_s32 #endif -#line 298 +#line 299 #elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 64 #if 1 #define TO_SIMD_SFX(X) X##_f64 @@ -16053,7 +16093,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(DOUBLE_fmin_indexed) #endif -#line 320 +#line 321 #if !0 || (1 && 0) #define SCALAR_OP scalar_max_l @@ -16161,22 +16201,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_maximum) * result of iteration 1. */ - #line 430 + #line 431 npy_longdouble v0 = *((npy_longdouble *)(ip1 + (i + 0) * is1)); npy_longdouble u0 = *((npy_longdouble *)(ip2 + (i + 0) * is2)); *((npy_longdouble *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_longdouble v1 = *((npy_longdouble *)(ip1 + (i + 1) * is1)); npy_longdouble u1 = *((npy_longdouble *)(ip2 + (i + 1) * is2)); *((npy_longdouble *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_longdouble v2 = *((npy_longdouble *)(ip1 + (i + 2) * is1)); npy_longdouble u2 = *((npy_longdouble *)(ip2 + (i + 2) * is2)); *((npy_longdouble *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_longdouble v3 = *((npy_longdouble *)(ip1 + (i + 3) * is1)); npy_longdouble u3 = *((npy_longdouble *)(ip2 + (i + 3) * is2)); *((npy_longdouble *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -16228,7 +16268,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_maximum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !0 || (1 && 0) #define SCALAR_OP scalar_min_l @@ -16336,22 +16376,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_minimum) * result of iteration 1. */ - #line 430 + #line 431 npy_longdouble v0 = *((npy_longdouble *)(ip1 + (i + 0) * is1)); npy_longdouble u0 = *((npy_longdouble *)(ip2 + (i + 0) * is2)); *((npy_longdouble *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_longdouble v1 = *((npy_longdouble *)(ip1 + (i + 1) * is1)); npy_longdouble u1 = *((npy_longdouble *)(ip2 + (i + 1) * is2)); *((npy_longdouble *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_longdouble v2 = *((npy_longdouble *)(ip1 + (i + 2) * is1)); npy_longdouble u2 = *((npy_longdouble *)(ip2 + (i + 2) * is2)); *((npy_longdouble *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_longdouble v3 = *((npy_longdouble *)(ip1 + (i + 3) * is1)); npy_longdouble u3 = *((npy_longdouble *)(ip2 + (i + 3) * is2)); *((npy_longdouble *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -16403,7 +16443,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_minimum_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (1 && 1) #define SCALAR_OP scalar_maxp_l @@ -16511,22 +16551,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_fmax) * result of iteration 1. */ - #line 430 + #line 431 npy_longdouble v0 = *((npy_longdouble *)(ip1 + (i + 0) * is1)); npy_longdouble u0 = *((npy_longdouble *)(ip2 + (i + 0) * is2)); *((npy_longdouble *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_longdouble v1 = *((npy_longdouble *)(ip1 + (i + 1) * is1)); npy_longdouble u1 = *((npy_longdouble *)(ip2 + (i + 1) * is2)); *((npy_longdouble *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_longdouble v2 = *((npy_longdouble *)(ip1 + (i + 2) * is1)); npy_longdouble u2 = *((npy_longdouble *)(ip2 + (i + 2) * is2)); *((npy_longdouble *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_longdouble v3 = *((npy_longdouble *)(ip1 + (i + 3) * is1)); npy_longdouble u3 = *((npy_longdouble *)(ip2 + (i + 3) * is2)); *((npy_longdouble *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); @@ -16578,7 +16618,7 @@ NPY_NO_EXPORT int NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_fmax_indexed) #endif // !fp_only || (is_fp && fp_only) -#line 320 +#line 321 #if !1 || (1 && 1) #define SCALAR_OP scalar_minp_l @@ -16686,22 +16726,22 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_fmin) * result of iteration 1. */ - #line 430 + #line 431 npy_longdouble v0 = *((npy_longdouble *)(ip1 + (i + 0) * is1)); npy_longdouble u0 = *((npy_longdouble *)(ip2 + (i + 0) * is2)); *((npy_longdouble *)(op1 + (i + 0) * os1)) = SCALAR_OP(v0, u0); -#line 430 +#line 431 npy_longdouble v1 = *((npy_longdouble *)(ip1 + (i + 1) * is1)); npy_longdouble u1 = *((npy_longdouble *)(ip2 + (i + 1) * is2)); *((npy_longdouble *)(op1 + (i + 1) * os1)) = SCALAR_OP(v1, u1); -#line 430 +#line 431 npy_longdouble v2 = *((npy_longdouble *)(ip1 + (i + 2) * is1)); npy_longdouble u2 = *((npy_longdouble *)(ip2 + (i + 2) * is2)); *((npy_longdouble *)(op1 + (i + 2) * os1)) = SCALAR_OP(v2, u2); -#line 430 +#line 431 npy_longdouble v3 = *((npy_longdouble *)(ip1 + (i + 3) * is1)); npy_longdouble u3 = *((npy_longdouble *)(ip2 + (i + 3) * is2)); *((npy_longdouble *)(op1 + (i + 3) * os1)) = SCALAR_OP(v3, u3); diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c.src b/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c.src index 236e2e2eb76..319072c01fb 100644 --- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c.src +++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_minmax.dispatch.c.src @@ -225,7 +225,8 @@ simd_binary_ccc_@intrin@_@sfx@(const npyv_lanetype_@sfx@ *ip1, const npyv_lanety } } // non-contiguous for float 32/64-bit memory access -#if @is_fp@ +#if @is_fp@ && !defined(NPY_HAVE_NEON) +// unroll scalars faster than non-contiguous vector load/store on Arm static inline void simd_binary_@intrin@_@sfx@(const npyv_lanetype_@sfx@ *ip1, npy_intp sip1, const npyv_lanetype_@sfx@ *ip2, npy_intp sip2, diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c b/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c index 9d9bc64a160..30ce938d663 100644 --- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c +++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c @@ -26,8 +26,8 @@ * when there's no native FUSED support instead of fallback to libc */ #if NPY_SIMD_FMA3 // native support -#line 23 -#if NPY_SIMD_F64 +#line 24 +#if NPY_SIMD_F64 && 0 /* * Vectorized Cody-Waite range reduction technique * Performs the reduction step x* = x - y*C in three steps: @@ -46,8 +46,8 @@ simd_range_reduction_f64(npyv_f64 x, npyv_f64 y, npyv_f64 c1, npyv_f64 c2, npyv_ } #endif -#line 23 -#if NPY_SIMD_F32 +#line 24 +#if NPY_SIMD_F32 && 1 /* * Vectorized Cody-Waite range reduction technique * Performs the reduction step x* = x - y*C in three steps: @@ -66,9 +66,11 @@ simd_range_reduction_f32(npyv_f32 x, npyv_f32 y, npyv_f32 c1, npyv_f32 c2, npyv_ } #endif - -#if NPY_SIMD_F64 -#line 47 +/* Disable SIMD code and revert to libm: see + * https://mail.python.org/archives/list/[email protected]/thread/C6EYZZSR4EWGVKHAZXLE7IBILRMNVK7L/ + * for detailed discussion on this*/ +#if 0 // NPY_SIMD_F64 +#line 50 #if defined(NPY_OS_WIN32) || defined(NPY_OS_CYGWIN) NPY_FINLINE npyv_f64 #else @@ -90,7 +92,7 @@ simd_cos_scalar_f64(npyv_f64 out, npy_uint64 cmp_bits) return npyv_loada_f64(out_copy); } -#line 47 +#line 50 #if defined(NPY_OS_WIN32) || defined(NPY_OS_CYGWIN) NPY_FINLINE npyv_f64 #else @@ -208,7 +210,7 @@ simd_sin_poly_f64(npyv_f64 r, npyv_u64 ir, npyv_u64 sign) return npyv_reinterpret_f64_u64(npyv_xor_u64(npyv_xor_u64(npyv_reinterpret_u64_f64(y), sign), odd)); } -#line 167 +#line 170 NPY_FINLINE void simd_cos_f64(const double *src, npy_intp ssrc, double *dst, npy_intp sdst, npy_intp len) { @@ -254,7 +256,7 @@ simd_cos_f64(const double *src, npy_intp ssrc, double *dst, npy_intp sdst, npy_i npyv_cleanup(); } -#line 167 +#line 170 NPY_FINLINE void simd_sin_f64(const double *src, npy_intp ssrc, double *dst, npy_intp sdst, npy_intp len) { @@ -473,7 +475,7 @@ simd_sincos_f32(const float *src, npy_intp ssrc, float *dst, npy_intp sdst, #endif // NPY_SIMD_FP32 #endif // NYP_SIMD_FMA3 -#line 388 +#line 391 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_cos) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data)) { @@ -507,7 +509,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_cos) #endif } -#line 388 +#line 391 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_sin) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data)) { @@ -542,7 +544,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_sin) } -#line 426 +#line 429 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_sin) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data)) { @@ -572,7 +574,7 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_sin) #endif } -#line 426 +#line 429 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_cos) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(data)) { diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c.src b/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c.src index f07cb70f397..31de906098e 100644 --- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c.src +++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_trigonometric.dispatch.c.src @@ -19,8 +19,9 @@ /**begin repeat * #check = F64, F32# * #sfx = f64, f32# + * #enable = 0, 1# */ -#if NPY_SIMD_@check@ +#if NPY_SIMD_@check@ && @enable@ /* * Vectorized Cody-Waite range reduction technique * Performs the reduction step x* = x - y*C in three steps: @@ -39,8 +40,10 @@ simd_range_reduction_@sfx@(npyv_@sfx@ x, npyv_@sfx@ y, npyv_@sfx@ c1, npyv_@sfx@ } #endif /**end repeat**/ - -#if NPY_SIMD_F64 +/* Disable SIMD code and revert to libm: see + * https://mail.python.org/archives/list/[email protected]/thread/C6EYZZSR4EWGVKHAZXLE7IBILRMNVK7L/ + * for detailed discussion on this*/ +#if 0 // NPY_SIMD_F64 /**begin repeat * #op = cos, sin# */ diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c b/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c index 3ea2747d9e4..b2d3b0976ad 100644 --- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c +++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c @@ -604,6 +604,8 @@ simd_unary_nc_negative_s8(const npyv_lanetype_s8 *ip, npy_intp istride, #undef UNROLL #define UNROLL 2 #endif +// X86 does better with unrolled scalar for heavy non-contiguous +#ifndef NPY_HAVE_SSE2 static NPY_INLINE void simd_unary_nn_negative_s8(const npyv_lanetype_s8 *ip, npy_intp istride, npyv_lanetype_s8 *op, npy_intp ostride, @@ -614,112 +616,112 @@ simd_unary_nn_negative_s8(const npyv_lanetype_s8 *ip, npy_intp istride, // unrolled vector loop for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) { - #line 211 + #line 213 #if UNROLL > 0 npyv_s8 v_0 = npyv_loadn_s8(ip + 0 * vstep * istride, istride); npyv_s8 r_0 = npyv_negative_s8(v_0); npyv_storen_s8(op + 0 * vstep * ostride, ostride, r_0); #endif -#line 211 +#line 213 #if UNROLL > 1 npyv_s8 v_1 = npyv_loadn_s8(ip + 1 * vstep * istride, istride); npyv_s8 r_1 = npyv_negative_s8(v_1); npyv_storen_s8(op + 1 * vstep * ostride, ostride, r_1); #endif -#line 211 +#line 213 #if UNROLL > 2 npyv_s8 v_2 = npyv_loadn_s8(ip + 2 * vstep * istride, istride); npyv_s8 r_2 = npyv_negative_s8(v_2); npyv_storen_s8(op + 2 * vstep * ostride, ostride, r_2); #endif -#line 211 +#line 213 #if UNROLL > 3 npyv_s8 v_3 = npyv_loadn_s8(ip + 3 * vstep * istride, istride); npyv_s8 r_3 = npyv_negative_s8(v_3); npyv_storen_s8(op + 3 * vstep * ostride, ostride, r_3); #endif -#line 211 +#line 213 #if UNROLL > 4 npyv_s8 v_4 = npyv_loadn_s8(ip + 4 * vstep * istride, istride); npyv_s8 r_4 = npyv_negative_s8(v_4); npyv_storen_s8(op + 4 * vstep * ostride, ostride, r_4); #endif -#line 211 +#line 213 #if UNROLL > 5 npyv_s8 v_5 = npyv_loadn_s8(ip + 5 * vstep * istride, istride); npyv_s8 r_5 = npyv_negative_s8(v_5); npyv_storen_s8(op + 5 * vstep * ostride, ostride, r_5); #endif -#line 211 +#line 213 #if UNROLL > 6 npyv_s8 v_6 = npyv_loadn_s8(ip + 6 * vstep * istride, istride); npyv_s8 r_6 = npyv_negative_s8(v_6); npyv_storen_s8(op + 6 * vstep * ostride, ostride, r_6); #endif -#line 211 +#line 213 #if UNROLL > 7 npyv_s8 v_7 = npyv_loadn_s8(ip + 7 * vstep * istride, istride); npyv_s8 r_7 = npyv_negative_s8(v_7); npyv_storen_s8(op + 7 * vstep * ostride, ostride, r_7); #endif -#line 211 +#line 213 #if UNROLL > 8 npyv_s8 v_8 = npyv_loadn_s8(ip + 8 * vstep * istride, istride); npyv_s8 r_8 = npyv_negative_s8(v_8); npyv_storen_s8(op + 8 * vstep * ostride, ostride, r_8); #endif -#line 211 +#line 213 #if UNROLL > 9 npyv_s8 v_9 = npyv_loadn_s8(ip + 9 * vstep * istride, istride); npyv_s8 r_9 = npyv_negative_s8(v_9); npyv_storen_s8(op + 9 * vstep * ostride, ostride, r_9); #endif -#line 211 +#line 213 #if UNROLL > 10 npyv_s8 v_10 = npyv_loadn_s8(ip + 10 * vstep * istride, istride); npyv_s8 r_10 = npyv_negative_s8(v_10); npyv_storen_s8(op + 10 * vstep * ostride, ostride, r_10); #endif -#line 211 +#line 213 #if UNROLL > 11 npyv_s8 v_11 = npyv_loadn_s8(ip + 11 * vstep * istride, istride); npyv_s8 r_11 = npyv_negative_s8(v_11); npyv_storen_s8(op + 11 * vstep * ostride, ostride, r_11); #endif -#line 211 +#line 213 #if UNROLL > 12 npyv_s8 v_12 = npyv_loadn_s8(ip + 12 * vstep * istride, istride); npyv_s8 r_12 = npyv_negative_s8(v_12); npyv_storen_s8(op + 12 * vstep * ostride, ostride, r_12); #endif -#line 211 +#line 213 #if UNROLL > 13 npyv_s8 v_13 = npyv_loadn_s8(ip + 13 * vstep * istride, istride); npyv_s8 r_13 = npyv_negative_s8(v_13); npyv_storen_s8(op + 13 * vstep * ostride, ostride, r_13); #endif -#line 211 +#line 213 #if UNROLL > 14 npyv_s8 v_14 = npyv_loadn_s8(ip + 14 * vstep * istride, istride); npyv_s8 r_14 = npyv_negative_s8(v_14); npyv_storen_s8(op + 14 * vstep * ostride, ostride, r_14); #endif -#line 211 +#line 213 #if UNROLL > 15 npyv_s8 v_15 = npyv_loadn_s8(ip + 15 * vstep * istride, istride); npyv_s8 r_15 = npyv_negative_s8(v_15); @@ -738,6 +740,7 @@ simd_unary_nn_negative_s8(const npyv_lanetype_s8 *ip, npy_intp istride, *op = scalar_negative(*ip); } } +#endif // NPY_HAVE_SSE2 #endif // 0 #undef UNROLL #endif // NPY_SIMD @@ -1167,6 +1170,8 @@ simd_unary_nc_negative_u8(const npyv_lanetype_u8 *ip, npy_intp istride, #undef UNROLL #define UNROLL 2 #endif +// X86 does better with unrolled scalar for heavy non-contiguous +#ifndef NPY_HAVE_SSE2 static NPY_INLINE void simd_unary_nn_negative_u8(const npyv_lanetype_u8 *ip, npy_intp istride, npyv_lanetype_u8 *op, npy_intp ostride, @@ -1177,112 +1182,112 @@ simd_unary_nn_negative_u8(const npyv_lanetype_u8 *ip, npy_intp istride, // unrolled vector loop for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) { - #line 211 + #line 213 #if UNROLL > 0 npyv_u8 v_0 = npyv_loadn_u8(ip + 0 * vstep * istride, istride); npyv_u8 r_0 = npyv_negative_u8(v_0); npyv_storen_u8(op + 0 * vstep * ostride, ostride, r_0); #endif -#line 211 +#line 213 #if UNROLL > 1 npyv_u8 v_1 = npyv_loadn_u8(ip + 1 * vstep * istride, istride); npyv_u8 r_1 = npyv_negative_u8(v_1); npyv_storen_u8(op + 1 * vstep * ostride, ostride, r_1); #endif -#line 211 +#line 213 #if UNROLL > 2 npyv_u8 v_2 = npyv_loadn_u8(ip + 2 * vstep * istride, istride); npyv_u8 r_2 = npyv_negative_u8(v_2); npyv_storen_u8(op + 2 * vstep * ostride, ostride, r_2); #endif -#line 211 +#line 213 #if UNROLL > 3 npyv_u8 v_3 = npyv_loadn_u8(ip + 3 * vstep * istride, istride); npyv_u8 r_3 = npyv_negative_u8(v_3); npyv_storen_u8(op + 3 * vstep * ostride, ostride, r_3); #endif -#line 211 +#line 213 #if UNROLL > 4 npyv_u8 v_4 = npyv_loadn_u8(ip + 4 * vstep * istride, istride); npyv_u8 r_4 = npyv_negative_u8(v_4); npyv_storen_u8(op + 4 * vstep * ostride, ostride, r_4); #endif -#line 211 +#line 213 #if UNROLL > 5 npyv_u8 v_5 = npyv_loadn_u8(ip + 5 * vstep * istride, istride); npyv_u8 r_5 = npyv_negative_u8(v_5); npyv_storen_u8(op + 5 * vstep * ostride, ostride, r_5); #endif -#line 211 +#line 213 #if UNROLL > 6 npyv_u8 v_6 = npyv_loadn_u8(ip + 6 * vstep * istride, istride); npyv_u8 r_6 = npyv_negative_u8(v_6); npyv_storen_u8(op + 6 * vstep * ostride, ostride, r_6); #endif -#line 211 +#line 213 #if UNROLL > 7 npyv_u8 v_7 = npyv_loadn_u8(ip + 7 * vstep * istride, istride); npyv_u8 r_7 = npyv_negative_u8(v_7); npyv_storen_u8(op + 7 * vstep * ostride, ostride, r_7); #endif -#line 211 +#line 213 #if UNROLL > 8 npyv_u8 v_8 = npyv_loadn_u8(ip + 8 * vstep * istride, istride); npyv_u8 r_8 = npyv_negative_u8(v_8); npyv_storen_u8(op + 8 * vstep * ostride, ostride, r_8); #endif -#line 211 +#line 213 #if UNROLL > 9 npyv_u8 v_9 = npyv_loadn_u8(ip + 9 * vstep * istride, istride); npyv_u8 r_9 = npyv_negative_u8(v_9); npyv_storen_u8(op + 9 * vstep * ostride, ostride, r_9); #endif -#line 211 +#line 213 #if UNROLL > 10 npyv_u8 v_10 = npyv_loadn_u8(ip + 10 * vstep * istride, istride); npyv_u8 r_10 = npyv_negative_u8(v_10); npyv_storen_u8(op + 10 * vstep * ostride, ostride, r_10); #endif -#line 211 +#line 213 #if UNROLL > 11 npyv_u8 v_11 = npyv_loadn_u8(ip + 11 * vstep * istride, istride); npyv_u8 r_11 = npyv_negative_u8(v_11); npyv_storen_u8(op + 11 * vstep * ostride, ostride, r_11); #endif -#line 211 +#line 213 #if UNROLL > 12 npyv_u8 v_12 = npyv_loadn_u8(ip + 12 * vstep * istride, istride); npyv_u8 r_12 = npyv_negative_u8(v_12); npyv_storen_u8(op + 12 * vstep * ostride, ostride, r_12); #endif -#line 211 +#line 213 #if UNROLL > 13 npyv_u8 v_13 = npyv_loadn_u8(ip + 13 * vstep * istride, istride); npyv_u8 r_13 = npyv_negative_u8(v_13); npyv_storen_u8(op + 13 * vstep * ostride, ostride, r_13); #endif -#line 211 +#line 213 #if UNROLL > 14 npyv_u8 v_14 = npyv_loadn_u8(ip + 14 * vstep * istride, istride); npyv_u8 r_14 = npyv_negative_u8(v_14); npyv_storen_u8(op + 14 * vstep * ostride, ostride, r_14); #endif -#line 211 +#line 213 #if UNROLL > 15 npyv_u8 v_15 = npyv_loadn_u8(ip + 15 * vstep * istride, istride); npyv_u8 r_15 = npyv_negative_u8(v_15); @@ -1301,6 +1306,7 @@ simd_unary_nn_negative_u8(const npyv_lanetype_u8 *ip, npy_intp istride, *op = scalar_negative(*ip); } } +#endif // NPY_HAVE_SSE2 #endif // 0 #undef UNROLL #endif // NPY_SIMD @@ -1730,6 +1736,8 @@ simd_unary_nc_negative_s16(const npyv_lanetype_s16 *ip, npy_intp istride, #undef UNROLL #define UNROLL 2 #endif +// X86 does better with unrolled scalar for heavy non-contiguous +#ifndef NPY_HAVE_SSE2 static NPY_INLINE void simd_unary_nn_negative_s16(const npyv_lanetype_s16 *ip, npy_intp istride, npyv_lanetype_s16 *op, npy_intp ostride, @@ -1740,112 +1748,112 @@ simd_unary_nn_negative_s16(const npyv_lanetype_s16 *ip, npy_intp istride, // unrolled vector loop for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) { - #line 211 + #line 213 #if UNROLL > 0 npyv_s16 v_0 = npyv_loadn_s16(ip + 0 * vstep * istride, istride); npyv_s16 r_0 = npyv_negative_s16(v_0); npyv_storen_s16(op + 0 * vstep * ostride, ostride, r_0); #endif -#line 211 +#line 213 #if UNROLL > 1 npyv_s16 v_1 = npyv_loadn_s16(ip + 1 * vstep * istride, istride); npyv_s16 r_1 = npyv_negative_s16(v_1); npyv_storen_s16(op + 1 * vstep * ostride, ostride, r_1); #endif -#line 211 +#line 213 #if UNROLL > 2 npyv_s16 v_2 = npyv_loadn_s16(ip + 2 * vstep * istride, istride); npyv_s16 r_2 = npyv_negative_s16(v_2); npyv_storen_s16(op + 2 * vstep * ostride, ostride, r_2); #endif -#line 211 +#line 213 #if UNROLL > 3 npyv_s16 v_3 = npyv_loadn_s16(ip + 3 * vstep * istride, istride); npyv_s16 r_3 = npyv_negative_s16(v_3); npyv_storen_s16(op + 3 * vstep * ostride, ostride, r_3); #endif -#line 211 +#line 213 #if UNROLL > 4 npyv_s16 v_4 = npyv_loadn_s16(ip + 4 * vstep * istride, istride); npyv_s16 r_4 = npyv_negative_s16(v_4); npyv_storen_s16(op + 4 * vstep * ostride, ostride, r_4); #endif -#line 211 +#line 213 #if UNROLL > 5 npyv_s16 v_5 = npyv_loadn_s16(ip + 5 * vstep * istride, istride); npyv_s16 r_5 = npyv_negative_s16(v_5); npyv_storen_s16(op + 5 * vstep * ostride, ostride, r_5); #endif -#line 211 +#line 213 #if UNROLL > 6 npyv_s16 v_6 = npyv_loadn_s16(ip + 6 * vstep * istride, istride); npyv_s16 r_6 = npyv_negative_s16(v_6); npyv_storen_s16(op + 6 * vstep * ostride, ostride, r_6); #endif -#line 211 +#line 213 #if UNROLL > 7 npyv_s16 v_7 = npyv_loadn_s16(ip + 7 * vstep * istride, istride); npyv_s16 r_7 = npyv_negative_s16(v_7); npyv_storen_s16(op + 7 * vstep * ostride, ostride, r_7); #endif -#line 211 +#line 213 #if UNROLL > 8 npyv_s16 v_8 = npyv_loadn_s16(ip + 8 * vstep * istride, istride); npyv_s16 r_8 = npyv_negative_s16(v_8); npyv_storen_s16(op + 8 * vstep * ostride, ostride, r_8); #endif -#line 211 +#line 213 #if UNROLL > 9 npyv_s16 v_9 = npyv_loadn_s16(ip + 9 * vstep * istride, istride); npyv_s16 r_9 = npyv_negative_s16(v_9); npyv_storen_s16(op + 9 * vstep * ostride, ostride, r_9); #endif -#line 211 +#line 213 #if UNROLL > 10 npyv_s16 v_10 = npyv_loadn_s16(ip + 10 * vstep * istride, istride); npyv_s16 r_10 = npyv_negative_s16(v_10); npyv_storen_s16(op + 10 * vstep * ostride, ostride, r_10); #endif -#line 211 +#line 213 #if UNROLL > 11 npyv_s16 v_11 = npyv_loadn_s16(ip + 11 * vstep * istride, istride); npyv_s16 r_11 = npyv_negative_s16(v_11); npyv_storen_s16(op + 11 * vstep * ostride, ostride, r_11); #endif -#line 211 +#line 213 #if UNROLL > 12 npyv_s16 v_12 = npyv_loadn_s16(ip + 12 * vstep * istride, istride); npyv_s16 r_12 = npyv_negative_s16(v_12); npyv_storen_s16(op + 12 * vstep * ostride, ostride, r_12); #endif -#line 211 +#line 213 #if UNROLL > 13 npyv_s16 v_13 = npyv_loadn_s16(ip + 13 * vstep * istride, istride); npyv_s16 r_13 = npyv_negative_s16(v_13); npyv_storen_s16(op + 13 * vstep * ostride, ostride, r_13); #endif -#line 211 +#line 213 #if UNROLL > 14 npyv_s16 v_14 = npyv_loadn_s16(ip + 14 * vstep * istride, istride); npyv_s16 r_14 = npyv_negative_s16(v_14); npyv_storen_s16(op + 14 * vstep * ostride, ostride, r_14); #endif -#line 211 +#line 213 #if UNROLL > 15 npyv_s16 v_15 = npyv_loadn_s16(ip + 15 * vstep * istride, istride); npyv_s16 r_15 = npyv_negative_s16(v_15); @@ -1864,6 +1872,7 @@ simd_unary_nn_negative_s16(const npyv_lanetype_s16 *ip, npy_intp istride, *op = scalar_negative(*ip); } } +#endif // NPY_HAVE_SSE2 #endif // 0 #undef UNROLL #endif // NPY_SIMD @@ -2293,6 +2302,8 @@ simd_unary_nc_negative_u16(const npyv_lanetype_u16 *ip, npy_intp istride, #undef UNROLL #define UNROLL 2 #endif +// X86 does better with unrolled scalar for heavy non-contiguous +#ifndef NPY_HAVE_SSE2 static NPY_INLINE void simd_unary_nn_negative_u16(const npyv_lanetype_u16 *ip, npy_intp istride, npyv_lanetype_u16 *op, npy_intp ostride, @@ -2303,112 +2314,112 @@ simd_unary_nn_negative_u16(const npyv_lanetype_u16 *ip, npy_intp istride, // unrolled vector loop for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) { - #line 211 + #line 213 #if UNROLL > 0 npyv_u16 v_0 = npyv_loadn_u16(ip + 0 * vstep * istride, istride); npyv_u16 r_0 = npyv_negative_u16(v_0); npyv_storen_u16(op + 0 * vstep * ostride, ostride, r_0); #endif -#line 211 +#line 213 #if UNROLL > 1 npyv_u16 v_1 = npyv_loadn_u16(ip + 1 * vstep * istride, istride); npyv_u16 r_1 = npyv_negative_u16(v_1); npyv_storen_u16(op + 1 * vstep * ostride, ostride, r_1); #endif -#line 211 +#line 213 #if UNROLL > 2 npyv_u16 v_2 = npyv_loadn_u16(ip + 2 * vstep * istride, istride); npyv_u16 r_2 = npyv_negative_u16(v_2); npyv_storen_u16(op + 2 * vstep * ostride, ostride, r_2); #endif -#line 211 +#line 213 #if UNROLL > 3 npyv_u16 v_3 = npyv_loadn_u16(ip + 3 * vstep * istride, istride); npyv_u16 r_3 = npyv_negative_u16(v_3); npyv_storen_u16(op + 3 * vstep * ostride, ostride, r_3); #endif -#line 211 +#line 213 #if UNROLL > 4 npyv_u16 v_4 = npyv_loadn_u16(ip + 4 * vstep * istride, istride); npyv_u16 r_4 = npyv_negative_u16(v_4); npyv_storen_u16(op + 4 * vstep * ostride, ostride, r_4); #endif -#line 211 +#line 213 #if UNROLL > 5 npyv_u16 v_5 = npyv_loadn_u16(ip + 5 * vstep * istride, istride); npyv_u16 r_5 = npyv_negative_u16(v_5); npyv_storen_u16(op + 5 * vstep * ostride, ostride, r_5); #endif -#line 211 +#line 213 #if UNROLL > 6 npyv_u16 v_6 = npyv_loadn_u16(ip + 6 * vstep * istride, istride); npyv_u16 r_6 = npyv_negative_u16(v_6); npyv_storen_u16(op + 6 * vstep * ostride, ostride, r_6); #endif -#line 211 +#line 213 #if UNROLL > 7 npyv_u16 v_7 = npyv_loadn_u16(ip + 7 * vstep * istride, istride); npyv_u16 r_7 = npyv_negative_u16(v_7); npyv_storen_u16(op + 7 * vstep * ostride, ostride, r_7); #endif -#line 211 +#line 213 #if UNROLL > 8 npyv_u16 v_8 = npyv_loadn_u16(ip + 8 * vstep * istride, istride); npyv_u16 r_8 = npyv_negative_u16(v_8); npyv_storen_u16(op + 8 * vstep * ostride, ostride, r_8); #endif -#line 211 +#line 213 #if UNROLL > 9 npyv_u16 v_9 = npyv_loadn_u16(ip + 9 * vstep * istride, istride); npyv_u16 r_9 = npyv_negative_u16(v_9); npyv_storen_u16(op + 9 * vstep * ostride, ostride, r_9); #endif -#line 211 +#line 213 #if UNROLL > 10 npyv_u16 v_10 = npyv_loadn_u16(ip + 10 * vstep * istride, istride); npyv_u16 r_10 = npyv_negative_u16(v_10); npyv_storen_u16(op + 10 * vstep * ostride, ostride, r_10); #endif -#line 211 +#line 213 #if UNROLL > 11 npyv_u16 v_11 = npyv_loadn_u16(ip + 11 * vstep * istride, istride); npyv_u16 r_11 = npyv_negative_u16(v_11); npyv_storen_u16(op + 11 * vstep * ostride, ostride, r_11); #endif -#line 211 +#line 213 #if UNROLL > 12 npyv_u16 v_12 = npyv_loadn_u16(ip + 12 * vstep * istride, istride); npyv_u16 r_12 = npyv_negative_u16(v_12); npyv_storen_u16(op + 12 * vstep * ostride, ostride, r_12); #endif -#line 211 +#line 213 #if UNROLL > 13 npyv_u16 v_13 = npyv_loadn_u16(ip + 13 * vstep * istride, istride); npyv_u16 r_13 = npyv_negative_u16(v_13); npyv_storen_u16(op + 13 * vstep * ostride, ostride, r_13); #endif -#line 211 +#line 213 #if UNROLL > 14 npyv_u16 v_14 = npyv_loadn_u16(ip + 14 * vstep * istride, istride); npyv_u16 r_14 = npyv_negative_u16(v_14); npyv_storen_u16(op + 14 * vstep * ostride, ostride, r_14); #endif -#line 211 +#line 213 #if UNROLL > 15 npyv_u16 v_15 = npyv_loadn_u16(ip + 15 * vstep * istride, istride); npyv_u16 r_15 = npyv_negative_u16(v_15); @@ -2427,6 +2438,7 @@ simd_unary_nn_negative_u16(const npyv_lanetype_u16 *ip, npy_intp istride, *op = scalar_negative(*ip); } } +#endif // NPY_HAVE_SSE2 #endif // 0 #undef UNROLL #endif // NPY_SIMD @@ -2856,6 +2868,8 @@ simd_unary_nc_negative_s32(const npyv_lanetype_s32 *ip, npy_intp istride, #undef UNROLL #define UNROLL 2 #endif +// X86 does better with unrolled scalar for heavy non-contiguous +#ifndef NPY_HAVE_SSE2 static NPY_INLINE void simd_unary_nn_negative_s32(const npyv_lanetype_s32 *ip, npy_intp istride, npyv_lanetype_s32 *op, npy_intp ostride, @@ -2866,112 +2880,112 @@ simd_unary_nn_negative_s32(const npyv_lanetype_s32 *ip, npy_intp istride, // unrolled vector loop for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) { - #line 211 + #line 213 #if UNROLL > 0 npyv_s32 v_0 = npyv_loadn_s32(ip + 0 * vstep * istride, istride); npyv_s32 r_0 = npyv_negative_s32(v_0); npyv_storen_s32(op + 0 * vstep * ostride, ostride, r_0); #endif -#line 211 +#line 213 #if UNROLL > 1 npyv_s32 v_1 = npyv_loadn_s32(ip + 1 * vstep * istride, istride); npyv_s32 r_1 = npyv_negative_s32(v_1); npyv_storen_s32(op + 1 * vstep * ostride, ostride, r_1); #endif -#line 211 +#line 213 #if UNROLL > 2 npyv_s32 v_2 = npyv_loadn_s32(ip + 2 * vstep * istride, istride); npyv_s32 r_2 = npyv_negative_s32(v_2); npyv_storen_s32(op + 2 * vstep * ostride, ostride, r_2); #endif -#line 211 +#line 213 #if UNROLL > 3 npyv_s32 v_3 = npyv_loadn_s32(ip + 3 * vstep * istride, istride); npyv_s32 r_3 = npyv_negative_s32(v_3); npyv_storen_s32(op + 3 * vstep * ostride, ostride, r_3); #endif -#line 211 +#line 213 #if UNROLL > 4 npyv_s32 v_4 = npyv_loadn_s32(ip + 4 * vstep * istride, istride); npyv_s32 r_4 = npyv_negative_s32(v_4); npyv_storen_s32(op + 4 * vstep * ostride, ostride, r_4); #endif -#line 211 +#line 213 #if UNROLL > 5 npyv_s32 v_5 = npyv_loadn_s32(ip + 5 * vstep * istride, istride); npyv_s32 r_5 = npyv_negative_s32(v_5); npyv_storen_s32(op + 5 * vstep * ostride, ostride, r_5); #endif -#line 211 +#line 213 #if UNROLL > 6 npyv_s32 v_6 = npyv_loadn_s32(ip + 6 * vstep * istride, istride); npyv_s32 r_6 = npyv_negative_s32(v_6); npyv_storen_s32(op + 6 * vstep * ostride, ostride, r_6); #endif -#line 211 +#line 213 #if UNROLL > 7 npyv_s32 v_7 = npyv_loadn_s32(ip + 7 * vstep * istride, istride); npyv_s32 r_7 = npyv_negative_s32(v_7); npyv_storen_s32(op + 7 * vstep * ostride, ostride, r_7); #endif -#line 211 +#line 213 #if UNROLL > 8 npyv_s32 v_8 = npyv_loadn_s32(ip + 8 * vstep * istride, istride); npyv_s32 r_8 = npyv_negative_s32(v_8); npyv_storen_s32(op + 8 * vstep * ostride, ostride, r_8); #endif -#line 211 +#line 213 #if UNROLL > 9 npyv_s32 v_9 = npyv_loadn_s32(ip + 9 * vstep * istride, istride); npyv_s32 r_9 = npyv_negative_s32(v_9); npyv_storen_s32(op + 9 * vstep * ostride, ostride, r_9); #endif -#line 211 +#line 213 #if UNROLL > 10 npyv_s32 v_10 = npyv_loadn_s32(ip + 10 * vstep * istride, istride); npyv_s32 r_10 = npyv_negative_s32(v_10); npyv_storen_s32(op + 10 * vstep * ostride, ostride, r_10); #endif -#line 211 +#line 213 #if UNROLL > 11 npyv_s32 v_11 = npyv_loadn_s32(ip + 11 * vstep * istride, istride); npyv_s32 r_11 = npyv_negative_s32(v_11); npyv_storen_s32(op + 11 * vstep * ostride, ostride, r_11); #endif -#line 211 +#line 213 #if UNROLL > 12 npyv_s32 v_12 = npyv_loadn_s32(ip + 12 * vstep * istride, istride); npyv_s32 r_12 = npyv_negative_s32(v_12); npyv_storen_s32(op + 12 * vstep * ostride, ostride, r_12); #endif -#line 211 +#line 213 #if UNROLL > 13 npyv_s32 v_13 = npyv_loadn_s32(ip + 13 * vstep * istride, istride); npyv_s32 r_13 = npyv_negative_s32(v_13); npyv_storen_s32(op + 13 * vstep * ostride, ostride, r_13); #endif -#line 211 +#line 213 #if UNROLL > 14 npyv_s32 v_14 = npyv_loadn_s32(ip + 14 * vstep * istride, istride); npyv_s32 r_14 = npyv_negative_s32(v_14); npyv_storen_s32(op + 14 * vstep * ostride, ostride, r_14); #endif -#line 211 +#line 213 #if UNROLL > 15 npyv_s32 v_15 = npyv_loadn_s32(ip + 15 * vstep * istride, istride); npyv_s32 r_15 = npyv_negative_s32(v_15); @@ -2990,6 +3004,7 @@ simd_unary_nn_negative_s32(const npyv_lanetype_s32 *ip, npy_intp istride, *op = scalar_negative(*ip); } } +#endif // NPY_HAVE_SSE2 #endif // 1 #undef UNROLL #endif // NPY_SIMD @@ -3419,6 +3434,8 @@ simd_unary_nc_negative_u32(const npyv_lanetype_u32 *ip, npy_intp istride, #undef UNROLL #define UNROLL 2 #endif +// X86 does better with unrolled scalar for heavy non-contiguous +#ifndef NPY_HAVE_SSE2 static NPY_INLINE void simd_unary_nn_negative_u32(const npyv_lanetype_u32 *ip, npy_intp istride, npyv_lanetype_u32 *op, npy_intp ostride, @@ -3429,112 +3446,112 @@ simd_unary_nn_negative_u32(const npyv_lanetype_u32 *ip, npy_intp istride, // unrolled vector loop for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) { - #line 211 + #line 213 #if UNROLL > 0 npyv_u32 v_0 = npyv_loadn_u32(ip + 0 * vstep * istride, istride); npyv_u32 r_0 = npyv_negative_u32(v_0); npyv_storen_u32(op + 0 * vstep * ostride, ostride, r_0); #endif -#line 211 +#line 213 #if UNROLL > 1 npyv_u32 v_1 = npyv_loadn_u32(ip + 1 * vstep * istride, istride); npyv_u32 r_1 = npyv_negative_u32(v_1); npyv_storen_u32(op + 1 * vstep * ostride, ostride, r_1); #endif -#line 211 +#line 213 #if UNROLL > 2 npyv_u32 v_2 = npyv_loadn_u32(ip + 2 * vstep * istride, istride); npyv_u32 r_2 = npyv_negative_u32(v_2); npyv_storen_u32(op + 2 * vstep * ostride, ostride, r_2); #endif -#line 211 +#line 213 #if UNROLL > 3 npyv_u32 v_3 = npyv_loadn_u32(ip + 3 * vstep * istride, istride); npyv_u32 r_3 = npyv_negative_u32(v_3); npyv_storen_u32(op + 3 * vstep * ostride, ostride, r_3); #endif -#line 211 +#line 213 #if UNROLL > 4 npyv_u32 v_4 = npyv_loadn_u32(ip + 4 * vstep * istride, istride); npyv_u32 r_4 = npyv_negative_u32(v_4); npyv_storen_u32(op + 4 * vstep * ostride, ostride, r_4); #endif -#line 211 +#line 213 #if UNROLL > 5 npyv_u32 v_5 = npyv_loadn_u32(ip + 5 * vstep * istride, istride); npyv_u32 r_5 = npyv_negative_u32(v_5); npyv_storen_u32(op + 5 * vstep * ostride, ostride, r_5); #endif -#line 211 +#line 213 #if UNROLL > 6 npyv_u32 v_6 = npyv_loadn_u32(ip + 6 * vstep * istride, istride); npyv_u32 r_6 = npyv_negative_u32(v_6); npyv_storen_u32(op + 6 * vstep * ostride, ostride, r_6); #endif -#line 211 +#line 213 #if UNROLL > 7 npyv_u32 v_7 = npyv_loadn_u32(ip + 7 * vstep * istride, istride); npyv_u32 r_7 = npyv_negative_u32(v_7); npyv_storen_u32(op + 7 * vstep * ostride, ostride, r_7); #endif -#line 211 +#line 213 #if UNROLL > 8 npyv_u32 v_8 = npyv_loadn_u32(ip + 8 * vstep * istride, istride); npyv_u32 r_8 = npyv_negative_u32(v_8); npyv_storen_u32(op + 8 * vstep * ostride, ostride, r_8); #endif -#line 211 +#line 213 #if UNROLL > 9 npyv_u32 v_9 = npyv_loadn_u32(ip + 9 * vstep * istride, istride); npyv_u32 r_9 = npyv_negative_u32(v_9); npyv_storen_u32(op + 9 * vstep * ostride, ostride, r_9); #endif -#line 211 +#line 213 #if UNROLL > 10 npyv_u32 v_10 = npyv_loadn_u32(ip + 10 * vstep * istride, istride); npyv_u32 r_10 = npyv_negative_u32(v_10); npyv_storen_u32(op + 10 * vstep * ostride, ostride, r_10); #endif -#line 211 +#line 213 #if UNROLL > 11 npyv_u32 v_11 = npyv_loadn_u32(ip + 11 * vstep * istride, istride); npyv_u32 r_11 = npyv_negative_u32(v_11); npyv_storen_u32(op + 11 * vstep * ostride, ostride, r_11); #endif -#line 211 +#line 213 #if UNROLL > 12 npyv_u32 v_12 = npyv_loadn_u32(ip + 12 * vstep * istride, istride); npyv_u32 r_12 = npyv_negative_u32(v_12); npyv_storen_u32(op + 12 * vstep * ostride, ostride, r_12); #endif -#line 211 +#line 213 #if UNROLL > 13 npyv_u32 v_13 = npyv_loadn_u32(ip + 13 * vstep * istride, istride); npyv_u32 r_13 = npyv_negative_u32(v_13); npyv_storen_u32(op + 13 * vstep * ostride, ostride, r_13); #endif -#line 211 +#line 213 #if UNROLL > 14 npyv_u32 v_14 = npyv_loadn_u32(ip + 14 * vstep * istride, istride); npyv_u32 r_14 = npyv_negative_u32(v_14); npyv_storen_u32(op + 14 * vstep * ostride, ostride, r_14); #endif -#line 211 +#line 213 #if UNROLL > 15 npyv_u32 v_15 = npyv_loadn_u32(ip + 15 * vstep * istride, istride); npyv_u32 r_15 = npyv_negative_u32(v_15); @@ -3553,6 +3570,7 @@ simd_unary_nn_negative_u32(const npyv_lanetype_u32 *ip, npy_intp istride, *op = scalar_negative(*ip); } } +#endif // NPY_HAVE_SSE2 #endif // 1 #undef UNROLL #endif // NPY_SIMD @@ -3982,6 +4000,8 @@ simd_unary_nc_negative_s64(const npyv_lanetype_s64 *ip, npy_intp istride, #undef UNROLL #define UNROLL 2 #endif +// X86 does better with unrolled scalar for heavy non-contiguous +#ifndef NPY_HAVE_SSE2 static NPY_INLINE void simd_unary_nn_negative_s64(const npyv_lanetype_s64 *ip, npy_intp istride, npyv_lanetype_s64 *op, npy_intp ostride, @@ -3992,112 +4012,112 @@ simd_unary_nn_negative_s64(const npyv_lanetype_s64 *ip, npy_intp istride, // unrolled vector loop for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) { - #line 211 + #line 213 #if UNROLL > 0 npyv_s64 v_0 = npyv_loadn_s64(ip + 0 * vstep * istride, istride); npyv_s64 r_0 = npyv_negative_s64(v_0); npyv_storen_s64(op + 0 * vstep * ostride, ostride, r_0); #endif -#line 211 +#line 213 #if UNROLL > 1 npyv_s64 v_1 = npyv_loadn_s64(ip + 1 * vstep * istride, istride); npyv_s64 r_1 = npyv_negative_s64(v_1); npyv_storen_s64(op + 1 * vstep * ostride, ostride, r_1); #endif -#line 211 +#line 213 #if UNROLL > 2 npyv_s64 v_2 = npyv_loadn_s64(ip + 2 * vstep * istride, istride); npyv_s64 r_2 = npyv_negative_s64(v_2); npyv_storen_s64(op + 2 * vstep * ostride, ostride, r_2); #endif -#line 211 +#line 213 #if UNROLL > 3 npyv_s64 v_3 = npyv_loadn_s64(ip + 3 * vstep * istride, istride); npyv_s64 r_3 = npyv_negative_s64(v_3); npyv_storen_s64(op + 3 * vstep * ostride, ostride, r_3); #endif -#line 211 +#line 213 #if UNROLL > 4 npyv_s64 v_4 = npyv_loadn_s64(ip + 4 * vstep * istride, istride); npyv_s64 r_4 = npyv_negative_s64(v_4); npyv_storen_s64(op + 4 * vstep * ostride, ostride, r_4); #endif -#line 211 +#line 213 #if UNROLL > 5 npyv_s64 v_5 = npyv_loadn_s64(ip + 5 * vstep * istride, istride); npyv_s64 r_5 = npyv_negative_s64(v_5); npyv_storen_s64(op + 5 * vstep * ostride, ostride, r_5); #endif -#line 211 +#line 213 #if UNROLL > 6 npyv_s64 v_6 = npyv_loadn_s64(ip + 6 * vstep * istride, istride); npyv_s64 r_6 = npyv_negative_s64(v_6); npyv_storen_s64(op + 6 * vstep * ostride, ostride, r_6); #endif -#line 211 +#line 213 #if UNROLL > 7 npyv_s64 v_7 = npyv_loadn_s64(ip + 7 * vstep * istride, istride); npyv_s64 r_7 = npyv_negative_s64(v_7); npyv_storen_s64(op + 7 * vstep * ostride, ostride, r_7); #endif -#line 211 +#line 213 #if UNROLL > 8 npyv_s64 v_8 = npyv_loadn_s64(ip + 8 * vstep * istride, istride); npyv_s64 r_8 = npyv_negative_s64(v_8); npyv_storen_s64(op + 8 * vstep * ostride, ostride, r_8); #endif -#line 211 +#line 213 #if UNROLL > 9 npyv_s64 v_9 = npyv_loadn_s64(ip + 9 * vstep * istride, istride); npyv_s64 r_9 = npyv_negative_s64(v_9); npyv_storen_s64(op + 9 * vstep * ostride, ostride, r_9); #endif -#line 211 +#line 213 #if UNROLL > 10 npyv_s64 v_10 = npyv_loadn_s64(ip + 10 * vstep * istride, istride); npyv_s64 r_10 = npyv_negative_s64(v_10); npyv_storen_s64(op + 10 * vstep * ostride, ostride, r_10); #endif -#line 211 +#line 213 #if UNROLL > 11 npyv_s64 v_11 = npyv_loadn_s64(ip + 11 * vstep * istride, istride); npyv_s64 r_11 = npyv_negative_s64(v_11); npyv_storen_s64(op + 11 * vstep * ostride, ostride, r_11); #endif -#line 211 +#line 213 #if UNROLL > 12 npyv_s64 v_12 = npyv_loadn_s64(ip + 12 * vstep * istride, istride); npyv_s64 r_12 = npyv_negative_s64(v_12); npyv_storen_s64(op + 12 * vstep * ostride, ostride, r_12); #endif -#line 211 +#line 213 #if UNROLL > 13 npyv_s64 v_13 = npyv_loadn_s64(ip + 13 * vstep * istride, istride); npyv_s64 r_13 = npyv_negative_s64(v_13); npyv_storen_s64(op + 13 * vstep * ostride, ostride, r_13); #endif -#line 211 +#line 213 #if UNROLL > 14 npyv_s64 v_14 = npyv_loadn_s64(ip + 14 * vstep * istride, istride); npyv_s64 r_14 = npyv_negative_s64(v_14); npyv_storen_s64(op + 14 * vstep * ostride, ostride, r_14); #endif -#line 211 +#line 213 #if UNROLL > 15 npyv_s64 v_15 = npyv_loadn_s64(ip + 15 * vstep * istride, istride); npyv_s64 r_15 = npyv_negative_s64(v_15); @@ -4116,6 +4136,7 @@ simd_unary_nn_negative_s64(const npyv_lanetype_s64 *ip, npy_intp istride, *op = scalar_negative(*ip); } } +#endif // NPY_HAVE_SSE2 #endif // 1 #undef UNROLL #endif // NPY_SIMD @@ -4545,6 +4566,8 @@ simd_unary_nc_negative_u64(const npyv_lanetype_u64 *ip, npy_intp istride, #undef UNROLL #define UNROLL 2 #endif +// X86 does better with unrolled scalar for heavy non-contiguous +#ifndef NPY_HAVE_SSE2 static NPY_INLINE void simd_unary_nn_negative_u64(const npyv_lanetype_u64 *ip, npy_intp istride, npyv_lanetype_u64 *op, npy_intp ostride, @@ -4555,112 +4578,112 @@ simd_unary_nn_negative_u64(const npyv_lanetype_u64 *ip, npy_intp istride, // unrolled vector loop for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) { - #line 211 + #line 213 #if UNROLL > 0 npyv_u64 v_0 = npyv_loadn_u64(ip + 0 * vstep * istride, istride); npyv_u64 r_0 = npyv_negative_u64(v_0); npyv_storen_u64(op + 0 * vstep * ostride, ostride, r_0); #endif -#line 211 +#line 213 #if UNROLL > 1 npyv_u64 v_1 = npyv_loadn_u64(ip + 1 * vstep * istride, istride); npyv_u64 r_1 = npyv_negative_u64(v_1); npyv_storen_u64(op + 1 * vstep * ostride, ostride, r_1); #endif -#line 211 +#line 213 #if UNROLL > 2 npyv_u64 v_2 = npyv_loadn_u64(ip + 2 * vstep * istride, istride); npyv_u64 r_2 = npyv_negative_u64(v_2); npyv_storen_u64(op + 2 * vstep * ostride, ostride, r_2); #endif -#line 211 +#line 213 #if UNROLL > 3 npyv_u64 v_3 = npyv_loadn_u64(ip + 3 * vstep * istride, istride); npyv_u64 r_3 = npyv_negative_u64(v_3); npyv_storen_u64(op + 3 * vstep * ostride, ostride, r_3); #endif -#line 211 +#line 213 #if UNROLL > 4 npyv_u64 v_4 = npyv_loadn_u64(ip + 4 * vstep * istride, istride); npyv_u64 r_4 = npyv_negative_u64(v_4); npyv_storen_u64(op + 4 * vstep * ostride, ostride, r_4); #endif -#line 211 +#line 213 #if UNROLL > 5 npyv_u64 v_5 = npyv_loadn_u64(ip + 5 * vstep * istride, istride); npyv_u64 r_5 = npyv_negative_u64(v_5); npyv_storen_u64(op + 5 * vstep * ostride, ostride, r_5); #endif -#line 211 +#line 213 #if UNROLL > 6 npyv_u64 v_6 = npyv_loadn_u64(ip + 6 * vstep * istride, istride); npyv_u64 r_6 = npyv_negative_u64(v_6); npyv_storen_u64(op + 6 * vstep * ostride, ostride, r_6); #endif -#line 211 +#line 213 #if UNROLL > 7 npyv_u64 v_7 = npyv_loadn_u64(ip + 7 * vstep * istride, istride); npyv_u64 r_7 = npyv_negative_u64(v_7); npyv_storen_u64(op + 7 * vstep * ostride, ostride, r_7); #endif -#line 211 +#line 213 #if UNROLL > 8 npyv_u64 v_8 = npyv_loadn_u64(ip + 8 * vstep * istride, istride); npyv_u64 r_8 = npyv_negative_u64(v_8); npyv_storen_u64(op + 8 * vstep * ostride, ostride, r_8); #endif -#line 211 +#line 213 #if UNROLL > 9 npyv_u64 v_9 = npyv_loadn_u64(ip + 9 * vstep * istride, istride); npyv_u64 r_9 = npyv_negative_u64(v_9); npyv_storen_u64(op + 9 * vstep * ostride, ostride, r_9); #endif -#line 211 +#line 213 #if UNROLL > 10 npyv_u64 v_10 = npyv_loadn_u64(ip + 10 * vstep * istride, istride); npyv_u64 r_10 = npyv_negative_u64(v_10); npyv_storen_u64(op + 10 * vstep * ostride, ostride, r_10); #endif -#line 211 +#line 213 #if UNROLL > 11 npyv_u64 v_11 = npyv_loadn_u64(ip + 11 * vstep * istride, istride); npyv_u64 r_11 = npyv_negative_u64(v_11); npyv_storen_u64(op + 11 * vstep * ostride, ostride, r_11); #endif -#line 211 +#line 213 #if UNROLL > 12 npyv_u64 v_12 = npyv_loadn_u64(ip + 12 * vstep * istride, istride); npyv_u64 r_12 = npyv_negative_u64(v_12); npyv_storen_u64(op + 12 * vstep * ostride, ostride, r_12); #endif -#line 211 +#line 213 #if UNROLL > 13 npyv_u64 v_13 = npyv_loadn_u64(ip + 13 * vstep * istride, istride); npyv_u64 r_13 = npyv_negative_u64(v_13); npyv_storen_u64(op + 13 * vstep * ostride, ostride, r_13); #endif -#line 211 +#line 213 #if UNROLL > 14 npyv_u64 v_14 = npyv_loadn_u64(ip + 14 * vstep * istride, istride); npyv_u64 r_14 = npyv_negative_u64(v_14); npyv_storen_u64(op + 14 * vstep * ostride, ostride, r_14); #endif -#line 211 +#line 213 #if UNROLL > 15 npyv_u64 v_15 = npyv_loadn_u64(ip + 15 * vstep * istride, istride); npyv_u64 r_15 = npyv_negative_u64(v_15); @@ -4679,6 +4702,7 @@ simd_unary_nn_negative_u64(const npyv_lanetype_u64 *ip, npy_intp istride, *op = scalar_negative(*ip); } } +#endif // NPY_HAVE_SSE2 #endif // 1 #undef UNROLL #endif // NPY_SIMD @@ -5108,6 +5132,8 @@ simd_unary_nc_negative_f32(const npyv_lanetype_f32 *ip, npy_intp istride, #undef UNROLL #define UNROLL 2 #endif +// X86 does better with unrolled scalar for heavy non-contiguous +#ifndef NPY_HAVE_SSE2 static NPY_INLINE void simd_unary_nn_negative_f32(const npyv_lanetype_f32 *ip, npy_intp istride, npyv_lanetype_f32 *op, npy_intp ostride, @@ -5118,112 +5144,112 @@ simd_unary_nn_negative_f32(const npyv_lanetype_f32 *ip, npy_intp istride, // unrolled vector loop for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) { - #line 211 + #line 213 #if UNROLL > 0 npyv_f32 v_0 = npyv_loadn_f32(ip + 0 * vstep * istride, istride); npyv_f32 r_0 = npyv_negative_f32(v_0); npyv_storen_f32(op + 0 * vstep * ostride, ostride, r_0); #endif -#line 211 +#line 213 #if UNROLL > 1 npyv_f32 v_1 = npyv_loadn_f32(ip + 1 * vstep * istride, istride); npyv_f32 r_1 = npyv_negative_f32(v_1); npyv_storen_f32(op + 1 * vstep * ostride, ostride, r_1); #endif -#line 211 +#line 213 #if UNROLL > 2 npyv_f32 v_2 = npyv_loadn_f32(ip + 2 * vstep * istride, istride); npyv_f32 r_2 = npyv_negative_f32(v_2); npyv_storen_f32(op + 2 * vstep * ostride, ostride, r_2); #endif -#line 211 +#line 213 #if UNROLL > 3 npyv_f32 v_3 = npyv_loadn_f32(ip + 3 * vstep * istride, istride); npyv_f32 r_3 = npyv_negative_f32(v_3); npyv_storen_f32(op + 3 * vstep * ostride, ostride, r_3); #endif -#line 211 +#line 213 #if UNROLL > 4 npyv_f32 v_4 = npyv_loadn_f32(ip + 4 * vstep * istride, istride); npyv_f32 r_4 = npyv_negative_f32(v_4); npyv_storen_f32(op + 4 * vstep * ostride, ostride, r_4); #endif -#line 211 +#line 213 #if UNROLL > 5 npyv_f32 v_5 = npyv_loadn_f32(ip + 5 * vstep * istride, istride); npyv_f32 r_5 = npyv_negative_f32(v_5); npyv_storen_f32(op + 5 * vstep * ostride, ostride, r_5); #endif -#line 211 +#line 213 #if UNROLL > 6 npyv_f32 v_6 = npyv_loadn_f32(ip + 6 * vstep * istride, istride); npyv_f32 r_6 = npyv_negative_f32(v_6); npyv_storen_f32(op + 6 * vstep * ostride, ostride, r_6); #endif -#line 211 +#line 213 #if UNROLL > 7 npyv_f32 v_7 = npyv_loadn_f32(ip + 7 * vstep * istride, istride); npyv_f32 r_7 = npyv_negative_f32(v_7); npyv_storen_f32(op + 7 * vstep * ostride, ostride, r_7); #endif -#line 211 +#line 213 #if UNROLL > 8 npyv_f32 v_8 = npyv_loadn_f32(ip + 8 * vstep * istride, istride); npyv_f32 r_8 = npyv_negative_f32(v_8); npyv_storen_f32(op + 8 * vstep * ostride, ostride, r_8); #endif -#line 211 +#line 213 #if UNROLL > 9 npyv_f32 v_9 = npyv_loadn_f32(ip + 9 * vstep * istride, istride); npyv_f32 r_9 = npyv_negative_f32(v_9); npyv_storen_f32(op + 9 * vstep * ostride, ostride, r_9); #endif -#line 211 +#line 213 #if UNROLL > 10 npyv_f32 v_10 = npyv_loadn_f32(ip + 10 * vstep * istride, istride); npyv_f32 r_10 = npyv_negative_f32(v_10); npyv_storen_f32(op + 10 * vstep * ostride, ostride, r_10); #endif -#line 211 +#line 213 #if UNROLL > 11 npyv_f32 v_11 = npyv_loadn_f32(ip + 11 * vstep * istride, istride); npyv_f32 r_11 = npyv_negative_f32(v_11); npyv_storen_f32(op + 11 * vstep * ostride, ostride, r_11); #endif -#line 211 +#line 213 #if UNROLL > 12 npyv_f32 v_12 = npyv_loadn_f32(ip + 12 * vstep * istride, istride); npyv_f32 r_12 = npyv_negative_f32(v_12); npyv_storen_f32(op + 12 * vstep * ostride, ostride, r_12); #endif -#line 211 +#line 213 #if UNROLL > 13 npyv_f32 v_13 = npyv_loadn_f32(ip + 13 * vstep * istride, istride); npyv_f32 r_13 = npyv_negative_f32(v_13); npyv_storen_f32(op + 13 * vstep * ostride, ostride, r_13); #endif -#line 211 +#line 213 #if UNROLL > 14 npyv_f32 v_14 = npyv_loadn_f32(ip + 14 * vstep * istride, istride); npyv_f32 r_14 = npyv_negative_f32(v_14); npyv_storen_f32(op + 14 * vstep * ostride, ostride, r_14); #endif -#line 211 +#line 213 #if UNROLL > 15 npyv_f32 v_15 = npyv_loadn_f32(ip + 15 * vstep * istride, istride); npyv_f32 r_15 = npyv_negative_f32(v_15); @@ -5242,6 +5268,7 @@ simd_unary_nn_negative_f32(const npyv_lanetype_f32 *ip, npy_intp istride, *op = scalar_negative(*ip); } } +#endif // NPY_HAVE_SSE2 #endif // 1 #undef UNROLL #endif // NPY_SIMD_F32 @@ -5671,6 +5698,8 @@ simd_unary_nc_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride, #undef UNROLL #define UNROLL 2 #endif +// X86 does better with unrolled scalar for heavy non-contiguous +#ifndef NPY_HAVE_SSE2 static NPY_INLINE void simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride, npyv_lanetype_f64 *op, npy_intp ostride, @@ -5681,112 +5710,112 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride, // unrolled vector loop for (; len >= wstep; len -= wstep, ip += istride*wstep, op += ostride*wstep) { - #line 211 + #line 213 #if UNROLL > 0 npyv_f64 v_0 = npyv_loadn_f64(ip + 0 * vstep * istride, istride); npyv_f64 r_0 = npyv_negative_f64(v_0); npyv_storen_f64(op + 0 * vstep * ostride, ostride, r_0); #endif -#line 211 +#line 213 #if UNROLL > 1 npyv_f64 v_1 = npyv_loadn_f64(ip + 1 * vstep * istride, istride); npyv_f64 r_1 = npyv_negative_f64(v_1); npyv_storen_f64(op + 1 * vstep * ostride, ostride, r_1); #endif -#line 211 +#line 213 #if UNROLL > 2 npyv_f64 v_2 = npyv_loadn_f64(ip + 2 * vstep * istride, istride); npyv_f64 r_2 = npyv_negative_f64(v_2); npyv_storen_f64(op + 2 * vstep * ostride, ostride, r_2); #endif -#line 211 +#line 213 #if UNROLL > 3 npyv_f64 v_3 = npyv_loadn_f64(ip + 3 * vstep * istride, istride); npyv_f64 r_3 = npyv_negative_f64(v_3); npyv_storen_f64(op + 3 * vstep * ostride, ostride, r_3); #endif -#line 211 +#line 213 #if UNROLL > 4 npyv_f64 v_4 = npyv_loadn_f64(ip + 4 * vstep * istride, istride); npyv_f64 r_4 = npyv_negative_f64(v_4); npyv_storen_f64(op + 4 * vstep * ostride, ostride, r_4); #endif -#line 211 +#line 213 #if UNROLL > 5 npyv_f64 v_5 = npyv_loadn_f64(ip + 5 * vstep * istride, istride); npyv_f64 r_5 = npyv_negative_f64(v_5); npyv_storen_f64(op + 5 * vstep * ostride, ostride, r_5); #endif -#line 211 +#line 213 #if UNROLL > 6 npyv_f64 v_6 = npyv_loadn_f64(ip + 6 * vstep * istride, istride); npyv_f64 r_6 = npyv_negative_f64(v_6); npyv_storen_f64(op + 6 * vstep * ostride, ostride, r_6); #endif -#line 211 +#line 213 #if UNROLL > 7 npyv_f64 v_7 = npyv_loadn_f64(ip + 7 * vstep * istride, istride); npyv_f64 r_7 = npyv_negative_f64(v_7); npyv_storen_f64(op + 7 * vstep * ostride, ostride, r_7); #endif -#line 211 +#line 213 #if UNROLL > 8 npyv_f64 v_8 = npyv_loadn_f64(ip + 8 * vstep * istride, istride); npyv_f64 r_8 = npyv_negative_f64(v_8); npyv_storen_f64(op + 8 * vstep * ostride, ostride, r_8); #endif -#line 211 +#line 213 #if UNROLL > 9 npyv_f64 v_9 = npyv_loadn_f64(ip + 9 * vstep * istride, istride); npyv_f64 r_9 = npyv_negative_f64(v_9); npyv_storen_f64(op + 9 * vstep * ostride, ostride, r_9); #endif -#line 211 +#line 213 #if UNROLL > 10 npyv_f64 v_10 = npyv_loadn_f64(ip + 10 * vstep * istride, istride); npyv_f64 r_10 = npyv_negative_f64(v_10); npyv_storen_f64(op + 10 * vstep * ostride, ostride, r_10); #endif -#line 211 +#line 213 #if UNROLL > 11 npyv_f64 v_11 = npyv_loadn_f64(ip + 11 * vstep * istride, istride); npyv_f64 r_11 = npyv_negative_f64(v_11); npyv_storen_f64(op + 11 * vstep * ostride, ostride, r_11); #endif -#line 211 +#line 213 #if UNROLL > 12 npyv_f64 v_12 = npyv_loadn_f64(ip + 12 * vstep * istride, istride); npyv_f64 r_12 = npyv_negative_f64(v_12); npyv_storen_f64(op + 12 * vstep * ostride, ostride, r_12); #endif -#line 211 +#line 213 #if UNROLL > 13 npyv_f64 v_13 = npyv_loadn_f64(ip + 13 * vstep * istride, istride); npyv_f64 r_13 = npyv_negative_f64(v_13); npyv_storen_f64(op + 13 * vstep * ostride, ostride, r_13); #endif -#line 211 +#line 213 #if UNROLL > 14 npyv_f64 v_14 = npyv_loadn_f64(ip + 14 * vstep * istride, istride); npyv_f64 r_14 = npyv_negative_f64(v_14); npyv_storen_f64(op + 14 * vstep * ostride, ostride, r_14); #endif -#line 211 +#line 213 #if UNROLL > 15 npyv_f64 v_15 = npyv_loadn_f64(ip + 15 * vstep * istride, istride); npyv_f64 r_15 = npyv_negative_f64(v_15); @@ -5805,6 +5834,7 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride, *op = scalar_negative(*ip); } } +#endif // NPY_HAVE_SSE2 #endif // 1 #undef UNROLL #endif // NPY_SIMD_F64 @@ -5814,10 +5844,10 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride, /******************************************************************************** ** Defining ufunc inner functions ********************************************************************************/ -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_BYTE == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -5833,7 +5863,7 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride, #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_BYTE == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -5849,7 +5879,7 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride, #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_BYTE == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -5865,7 +5895,7 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride, #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_BYTE == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -5883,7 +5913,7 @@ simd_unary_nn_negative_f64(const npyv_lanetype_f64 *ip, npy_intp istride, #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -5921,8 +5951,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -5945,97 +5975,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UBYTE_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_ubyte in_0 = *((const npy_ubyte *)(ip + 0 * istep)); *((npy_ubyte *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_ubyte in_1 = *((const npy_ubyte *)(ip + 1 * istep)); *((npy_ubyte *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_ubyte in_2 = *((const npy_ubyte *)(ip + 2 * istep)); *((npy_ubyte *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_ubyte in_3 = *((const npy_ubyte *)(ip + 3 * istep)); *((npy_ubyte *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_ubyte in_4 = *((const npy_ubyte *)(ip + 4 * istep)); *((npy_ubyte *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_ubyte in_5 = *((const npy_ubyte *)(ip + 5 * istep)); *((npy_ubyte *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_ubyte in_6 = *((const npy_ubyte *)(ip + 6 * istep)); *((npy_ubyte *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_ubyte in_7 = *((const npy_ubyte *)(ip + 7 * istep)); *((npy_ubyte *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_ubyte in_8 = *((const npy_ubyte *)(ip + 8 * istep)); *((npy_ubyte *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_ubyte in_9 = *((const npy_ubyte *)(ip + 9 * istep)); *((npy_ubyte *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_ubyte in_10 = *((const npy_ubyte *)(ip + 10 * istep)); *((npy_ubyte *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_ubyte in_11 = *((const npy_ubyte *)(ip + 11 * istep)); *((npy_ubyte *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_ubyte in_12 = *((const npy_ubyte *)(ip + 12 * istep)); *((npy_ubyte *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_ubyte in_13 = *((const npy_ubyte *)(ip + 13 * istep)); *((npy_ubyte *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_ubyte in_14 = *((const npy_ubyte *)(ip + 14 * istep)); *((npy_ubyte *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_ubyte in_15 = *((const npy_ubyte *)(ip + 15 * istep)); *((npy_ubyte *)(op + 15 * ostep)) = scalar_negative(in_15); @@ -6055,10 +6085,10 @@ clear: #endif } -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_SHORT == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -6074,7 +6104,7 @@ clear: #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_SHORT == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -6090,7 +6120,7 @@ clear: #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_SHORT == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -6106,7 +6136,7 @@ clear: #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_SHORT == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -6124,7 +6154,7 @@ clear: #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -6162,8 +6192,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -6186,97 +6216,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(USHORT_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_ushort in_0 = *((const npy_ushort *)(ip + 0 * istep)); *((npy_ushort *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_ushort in_1 = *((const npy_ushort *)(ip + 1 * istep)); *((npy_ushort *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_ushort in_2 = *((const npy_ushort *)(ip + 2 * istep)); *((npy_ushort *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_ushort in_3 = *((const npy_ushort *)(ip + 3 * istep)); *((npy_ushort *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_ushort in_4 = *((const npy_ushort *)(ip + 4 * istep)); *((npy_ushort *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_ushort in_5 = *((const npy_ushort *)(ip + 5 * istep)); *((npy_ushort *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_ushort in_6 = *((const npy_ushort *)(ip + 6 * istep)); *((npy_ushort *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_ushort in_7 = *((const npy_ushort *)(ip + 7 * istep)); *((npy_ushort *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_ushort in_8 = *((const npy_ushort *)(ip + 8 * istep)); *((npy_ushort *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_ushort in_9 = *((const npy_ushort *)(ip + 9 * istep)); *((npy_ushort *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_ushort in_10 = *((const npy_ushort *)(ip + 10 * istep)); *((npy_ushort *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_ushort in_11 = *((const npy_ushort *)(ip + 11 * istep)); *((npy_ushort *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_ushort in_12 = *((const npy_ushort *)(ip + 12 * istep)); *((npy_ushort *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_ushort in_13 = *((const npy_ushort *)(ip + 13 * istep)); *((npy_ushort *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_ushort in_14 = *((const npy_ushort *)(ip + 14 * istep)); *((npy_ushort *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_ushort in_15 = *((const npy_ushort *)(ip + 15 * istep)); *((npy_ushort *)(op + 15 * ostep)) = scalar_negative(in_15); @@ -6296,10 +6326,10 @@ clear: #endif } -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_INT == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -6315,7 +6345,7 @@ clear: #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_INT == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -6331,7 +6361,7 @@ clear: #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_INT == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -6347,7 +6377,7 @@ clear: #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_INT == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -6365,7 +6395,7 @@ clear: #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -6403,8 +6433,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -6427,97 +6457,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(UINT_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_uint in_0 = *((const npy_uint *)(ip + 0 * istep)); *((npy_uint *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_uint in_1 = *((const npy_uint *)(ip + 1 * istep)); *((npy_uint *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_uint in_2 = *((const npy_uint *)(ip + 2 * istep)); *((npy_uint *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_uint in_3 = *((const npy_uint *)(ip + 3 * istep)); *((npy_uint *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_uint in_4 = *((const npy_uint *)(ip + 4 * istep)); *((npy_uint *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_uint in_5 = *((const npy_uint *)(ip + 5 * istep)); *((npy_uint *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_uint in_6 = *((const npy_uint *)(ip + 6 * istep)); *((npy_uint *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_uint in_7 = *((const npy_uint *)(ip + 7 * istep)); *((npy_uint *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_uint in_8 = *((const npy_uint *)(ip + 8 * istep)); *((npy_uint *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_uint in_9 = *((const npy_uint *)(ip + 9 * istep)); *((npy_uint *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_uint in_10 = *((const npy_uint *)(ip + 10 * istep)); *((npy_uint *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_uint in_11 = *((const npy_uint *)(ip + 11 * istep)); *((npy_uint *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_uint in_12 = *((const npy_uint *)(ip + 12 * istep)); *((npy_uint *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_uint in_13 = *((const npy_uint *)(ip + 13 * istep)); *((npy_uint *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_uint in_14 = *((const npy_uint *)(ip + 14 * istep)); *((npy_uint *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_uint in_15 = *((const npy_uint *)(ip + 15 * istep)); *((npy_uint *)(op + 15 * ostep)) = scalar_negative(in_15); @@ -6537,10 +6567,10 @@ clear: #endif } -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONG == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -6556,7 +6586,7 @@ clear: #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONG == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -6572,7 +6602,7 @@ clear: #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONG == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -6588,7 +6618,7 @@ clear: #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONG == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -6606,7 +6636,7 @@ clear: #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -6644,8 +6674,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -6668,97 +6698,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONG_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_ulong in_0 = *((const npy_ulong *)(ip + 0 * istep)); *((npy_ulong *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_ulong in_1 = *((const npy_ulong *)(ip + 1 * istep)); *((npy_ulong *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_ulong in_2 = *((const npy_ulong *)(ip + 2 * istep)); *((npy_ulong *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_ulong in_3 = *((const npy_ulong *)(ip + 3 * istep)); *((npy_ulong *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_ulong in_4 = *((const npy_ulong *)(ip + 4 * istep)); *((npy_ulong *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_ulong in_5 = *((const npy_ulong *)(ip + 5 * istep)); *((npy_ulong *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_ulong in_6 = *((const npy_ulong *)(ip + 6 * istep)); *((npy_ulong *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_ulong in_7 = *((const npy_ulong *)(ip + 7 * istep)); *((npy_ulong *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_ulong in_8 = *((const npy_ulong *)(ip + 8 * istep)); *((npy_ulong *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_ulong in_9 = *((const npy_ulong *)(ip + 9 * istep)); *((npy_ulong *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_ulong in_10 = *((const npy_ulong *)(ip + 10 * istep)); *((npy_ulong *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_ulong in_11 = *((const npy_ulong *)(ip + 11 * istep)); *((npy_ulong *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_ulong in_12 = *((const npy_ulong *)(ip + 12 * istep)); *((npy_ulong *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_ulong in_13 = *((const npy_ulong *)(ip + 13 * istep)); *((npy_ulong *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_ulong in_14 = *((const npy_ulong *)(ip + 14 * istep)); *((npy_ulong *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_ulong in_15 = *((const npy_ulong *)(ip + 15 * istep)); *((npy_ulong *)(op + 15 * ostep)) = scalar_negative(in_15); @@ -6778,10 +6808,10 @@ clear: #endif } -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -6797,7 +6827,7 @@ clear: #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -6813,7 +6843,7 @@ clear: #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -6829,7 +6859,7 @@ clear: #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -6847,7 +6877,7 @@ clear: #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -6885,8 +6915,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -6909,97 +6939,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(ULONGLONG_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_ulonglong in_0 = *((const npy_ulonglong *)(ip + 0 * istep)); *((npy_ulonglong *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_ulonglong in_1 = *((const npy_ulonglong *)(ip + 1 * istep)); *((npy_ulonglong *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_ulonglong in_2 = *((const npy_ulonglong *)(ip + 2 * istep)); *((npy_ulonglong *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_ulonglong in_3 = *((const npy_ulonglong *)(ip + 3 * istep)); *((npy_ulonglong *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_ulonglong in_4 = *((const npy_ulonglong *)(ip + 4 * istep)); *((npy_ulonglong *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_ulonglong in_5 = *((const npy_ulonglong *)(ip + 5 * istep)); *((npy_ulonglong *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_ulonglong in_6 = *((const npy_ulonglong *)(ip + 6 * istep)); *((npy_ulonglong *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_ulonglong in_7 = *((const npy_ulonglong *)(ip + 7 * istep)); *((npy_ulonglong *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_ulonglong in_8 = *((const npy_ulonglong *)(ip + 8 * istep)); *((npy_ulonglong *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_ulonglong in_9 = *((const npy_ulonglong *)(ip + 9 * istep)); *((npy_ulonglong *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_ulonglong in_10 = *((const npy_ulonglong *)(ip + 10 * istep)); *((npy_ulonglong *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_ulonglong in_11 = *((const npy_ulonglong *)(ip + 11 * istep)); *((npy_ulonglong *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_ulonglong in_12 = *((const npy_ulonglong *)(ip + 12 * istep)); *((npy_ulonglong *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_ulonglong in_13 = *((const npy_ulonglong *)(ip + 13 * istep)); *((npy_ulonglong *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_ulonglong in_14 = *((const npy_ulonglong *)(ip + 14 * istep)); *((npy_ulonglong *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_ulonglong in_15 = *((const npy_ulonglong *)(ip + 15 * istep)); *((npy_ulonglong *)(op + 15 * ostep)) = scalar_negative(in_15); @@ -7019,10 +7049,10 @@ clear: #endif } -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_BYTE == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -7038,7 +7068,7 @@ clear: #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_BYTE == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -7054,7 +7084,7 @@ clear: #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_BYTE == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -7070,7 +7100,7 @@ clear: #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_BYTE == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -7088,7 +7118,7 @@ clear: #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -7126,8 +7156,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -7150,97 +7180,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(BYTE_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_byte in_0 = *((const npy_byte *)(ip + 0 * istep)); *((npy_byte *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_byte in_1 = *((const npy_byte *)(ip + 1 * istep)); *((npy_byte *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_byte in_2 = *((const npy_byte *)(ip + 2 * istep)); *((npy_byte *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_byte in_3 = *((const npy_byte *)(ip + 3 * istep)); *((npy_byte *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_byte in_4 = *((const npy_byte *)(ip + 4 * istep)); *((npy_byte *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_byte in_5 = *((const npy_byte *)(ip + 5 * istep)); *((npy_byte *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_byte in_6 = *((const npy_byte *)(ip + 6 * istep)); *((npy_byte *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_byte in_7 = *((const npy_byte *)(ip + 7 * istep)); *((npy_byte *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_byte in_8 = *((const npy_byte *)(ip + 8 * istep)); *((npy_byte *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_byte in_9 = *((const npy_byte *)(ip + 9 * istep)); *((npy_byte *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_byte in_10 = *((const npy_byte *)(ip + 10 * istep)); *((npy_byte *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_byte in_11 = *((const npy_byte *)(ip + 11 * istep)); *((npy_byte *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_byte in_12 = *((const npy_byte *)(ip + 12 * istep)); *((npy_byte *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_byte in_13 = *((const npy_byte *)(ip + 13 * istep)); *((npy_byte *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_byte in_14 = *((const npy_byte *)(ip + 14 * istep)); *((npy_byte *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_byte in_15 = *((const npy_byte *)(ip + 15 * istep)); *((npy_byte *)(op + 15 * ostep)) = scalar_negative(in_15); @@ -7260,10 +7290,10 @@ clear: #endif } -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_SHORT == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -7279,7 +7309,7 @@ clear: #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_SHORT == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -7295,7 +7325,7 @@ clear: #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_SHORT == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -7311,7 +7341,7 @@ clear: #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_SHORT == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -7329,7 +7359,7 @@ clear: #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -7367,8 +7397,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -7391,97 +7421,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(SHORT_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_short in_0 = *((const npy_short *)(ip + 0 * istep)); *((npy_short *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_short in_1 = *((const npy_short *)(ip + 1 * istep)); *((npy_short *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_short in_2 = *((const npy_short *)(ip + 2 * istep)); *((npy_short *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_short in_3 = *((const npy_short *)(ip + 3 * istep)); *((npy_short *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_short in_4 = *((const npy_short *)(ip + 4 * istep)); *((npy_short *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_short in_5 = *((const npy_short *)(ip + 5 * istep)); *((npy_short *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_short in_6 = *((const npy_short *)(ip + 6 * istep)); *((npy_short *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_short in_7 = *((const npy_short *)(ip + 7 * istep)); *((npy_short *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_short in_8 = *((const npy_short *)(ip + 8 * istep)); *((npy_short *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_short in_9 = *((const npy_short *)(ip + 9 * istep)); *((npy_short *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_short in_10 = *((const npy_short *)(ip + 10 * istep)); *((npy_short *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_short in_11 = *((const npy_short *)(ip + 11 * istep)); *((npy_short *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_short in_12 = *((const npy_short *)(ip + 12 * istep)); *((npy_short *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_short in_13 = *((const npy_short *)(ip + 13 * istep)); *((npy_short *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_short in_14 = *((const npy_short *)(ip + 14 * istep)); *((npy_short *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_short in_15 = *((const npy_short *)(ip + 15 * istep)); *((npy_short *)(op + 15 * ostep)) = scalar_negative(in_15); @@ -7501,10 +7531,10 @@ clear: #endif } -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_INT == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -7520,7 +7550,7 @@ clear: #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_INT == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -7536,7 +7566,7 @@ clear: #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_INT == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -7552,7 +7582,7 @@ clear: #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_INT == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -7570,7 +7600,7 @@ clear: #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -7608,8 +7638,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -7632,97 +7662,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(INT_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_int in_0 = *((const npy_int *)(ip + 0 * istep)); *((npy_int *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_int in_1 = *((const npy_int *)(ip + 1 * istep)); *((npy_int *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_int in_2 = *((const npy_int *)(ip + 2 * istep)); *((npy_int *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_int in_3 = *((const npy_int *)(ip + 3 * istep)); *((npy_int *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_int in_4 = *((const npy_int *)(ip + 4 * istep)); *((npy_int *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_int in_5 = *((const npy_int *)(ip + 5 * istep)); *((npy_int *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_int in_6 = *((const npy_int *)(ip + 6 * istep)); *((npy_int *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_int in_7 = *((const npy_int *)(ip + 7 * istep)); *((npy_int *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_int in_8 = *((const npy_int *)(ip + 8 * istep)); *((npy_int *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_int in_9 = *((const npy_int *)(ip + 9 * istep)); *((npy_int *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_int in_10 = *((const npy_int *)(ip + 10 * istep)); *((npy_int *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_int in_11 = *((const npy_int *)(ip + 11 * istep)); *((npy_int *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_int in_12 = *((const npy_int *)(ip + 12 * istep)); *((npy_int *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_int in_13 = *((const npy_int *)(ip + 13 * istep)); *((npy_int *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_int in_14 = *((const npy_int *)(ip + 14 * istep)); *((npy_int *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_int in_15 = *((const npy_int *)(ip + 15 * istep)); *((npy_int *)(op + 15 * ostep)) = scalar_negative(in_15); @@ -7742,10 +7772,10 @@ clear: #endif } -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONG == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -7761,7 +7791,7 @@ clear: #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONG == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -7777,7 +7807,7 @@ clear: #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONG == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -7793,7 +7823,7 @@ clear: #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONG == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -7811,7 +7841,7 @@ clear: #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -7849,8 +7879,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -7873,97 +7903,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONG_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_long in_0 = *((const npy_long *)(ip + 0 * istep)); *((npy_long *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_long in_1 = *((const npy_long *)(ip + 1 * istep)); *((npy_long *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_long in_2 = *((const npy_long *)(ip + 2 * istep)); *((npy_long *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_long in_3 = *((const npy_long *)(ip + 3 * istep)); *((npy_long *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_long in_4 = *((const npy_long *)(ip + 4 * istep)); *((npy_long *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_long in_5 = *((const npy_long *)(ip + 5 * istep)); *((npy_long *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_long in_6 = *((const npy_long *)(ip + 6 * istep)); *((npy_long *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_long in_7 = *((const npy_long *)(ip + 7 * istep)); *((npy_long *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_long in_8 = *((const npy_long *)(ip + 8 * istep)); *((npy_long *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_long in_9 = *((const npy_long *)(ip + 9 * istep)); *((npy_long *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_long in_10 = *((const npy_long *)(ip + 10 * istep)); *((npy_long *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_long in_11 = *((const npy_long *)(ip + 11 * istep)); *((npy_long *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_long in_12 = *((const npy_long *)(ip + 12 * istep)); *((npy_long *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_long in_13 = *((const npy_long *)(ip + 13 * istep)); *((npy_long *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_long in_14 = *((const npy_long *)(ip + 14 * istep)); *((npy_long *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_long in_15 = *((const npy_long *)(ip + 15 * istep)); *((npy_long *)(op + 15 * ostep)) = scalar_negative(in_15); @@ -7983,10 +8013,10 @@ clear: #endif } -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 8 #if 0 #define TO_SIMD_SFX(X) X##_f8 @@ -8002,7 +8032,7 @@ clear: #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 16 #if 0 #define TO_SIMD_SFX(X) X##_f16 @@ -8018,7 +8048,7 @@ clear: #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 32 #if 0 #define TO_SIMD_SFX(X) X##_f32 @@ -8034,7 +8064,7 @@ clear: #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONGLONG == 64 #if 0 #define TO_SIMD_SFX(X) X##_f64 @@ -8052,7 +8082,7 @@ clear: #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -8090,8 +8120,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -8114,97 +8144,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGLONG_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_longlong in_0 = *((const npy_longlong *)(ip + 0 * istep)); *((npy_longlong *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_longlong in_1 = *((const npy_longlong *)(ip + 1 * istep)); *((npy_longlong *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_longlong in_2 = *((const npy_longlong *)(ip + 2 * istep)); *((npy_longlong *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_longlong in_3 = *((const npy_longlong *)(ip + 3 * istep)); *((npy_longlong *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_longlong in_4 = *((const npy_longlong *)(ip + 4 * istep)); *((npy_longlong *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_longlong in_5 = *((const npy_longlong *)(ip + 5 * istep)); *((npy_longlong *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_longlong in_6 = *((const npy_longlong *)(ip + 6 * istep)); *((npy_longlong *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_longlong in_7 = *((const npy_longlong *)(ip + 7 * istep)); *((npy_longlong *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_longlong in_8 = *((const npy_longlong *)(ip + 8 * istep)); *((npy_longlong *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_longlong in_9 = *((const npy_longlong *)(ip + 9 * istep)); *((npy_longlong *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_longlong in_10 = *((const npy_longlong *)(ip + 10 * istep)); *((npy_longlong *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_longlong in_11 = *((const npy_longlong *)(ip + 11 * istep)); *((npy_longlong *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_longlong in_12 = *((const npy_longlong *)(ip + 12 * istep)); *((npy_longlong *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_longlong in_13 = *((const npy_longlong *)(ip + 13 * istep)); *((npy_longlong *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_longlong in_14 = *((const npy_longlong *)(ip + 14 * istep)); *((npy_longlong *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_longlong in_15 = *((const npy_longlong *)(ip + 15 * istep)); *((npy_longlong *)(op + 15 * ostep)) = scalar_negative(in_15); @@ -8224,10 +8254,10 @@ clear: #endif } -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_FLOAT == 8 #if 1 #define TO_SIMD_SFX(X) X##_f8 @@ -8243,7 +8273,7 @@ clear: #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_FLOAT == 16 #if 1 #define TO_SIMD_SFX(X) X##_f16 @@ -8259,7 +8289,7 @@ clear: #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_FLOAT == 32 #if 1 #define TO_SIMD_SFX(X) X##_f32 @@ -8275,7 +8305,7 @@ clear: #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_FLOAT == 64 #if 1 #define TO_SIMD_SFX(X) X##_f64 @@ -8293,7 +8323,7 @@ clear: #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -8331,8 +8361,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -8355,97 +8385,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(FLOAT_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_float in_0 = *((const npy_float *)(ip + 0 * istep)); *((npy_float *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_float in_1 = *((const npy_float *)(ip + 1 * istep)); *((npy_float *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_float in_2 = *((const npy_float *)(ip + 2 * istep)); *((npy_float *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_float in_3 = *((const npy_float *)(ip + 3 * istep)); *((npy_float *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_float in_4 = *((const npy_float *)(ip + 4 * istep)); *((npy_float *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_float in_5 = *((const npy_float *)(ip + 5 * istep)); *((npy_float *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_float in_6 = *((const npy_float *)(ip + 6 * istep)); *((npy_float *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_float in_7 = *((const npy_float *)(ip + 7 * istep)); *((npy_float *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_float in_8 = *((const npy_float *)(ip + 8 * istep)); *((npy_float *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_float in_9 = *((const npy_float *)(ip + 9 * istep)); *((npy_float *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_float in_10 = *((const npy_float *)(ip + 10 * istep)); *((npy_float *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_float in_11 = *((const npy_float *)(ip + 11 * istep)); *((npy_float *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_float in_12 = *((const npy_float *)(ip + 12 * istep)); *((npy_float *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_float in_13 = *((const npy_float *)(ip + 13 * istep)); *((npy_float *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_float in_14 = *((const npy_float *)(ip + 14 * istep)); *((npy_float *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_float in_15 = *((const npy_float *)(ip + 15 * istep)); *((npy_float *)(op + 15 * ostep)) = scalar_negative(in_15); @@ -8465,10 +8495,10 @@ clear: #endif } -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_DOUBLE == 8 #if 1 #define TO_SIMD_SFX(X) X##_f8 @@ -8484,7 +8514,7 @@ clear: #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_DOUBLE == 16 #if 1 #define TO_SIMD_SFX(X) X##_f16 @@ -8500,7 +8530,7 @@ clear: #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_DOUBLE == 32 #if 1 #define TO_SIMD_SFX(X) X##_f32 @@ -8516,7 +8546,7 @@ clear: #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_DOUBLE == 64 #if 1 #define TO_SIMD_SFX(X) X##_f64 @@ -8534,7 +8564,7 @@ clear: #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -8572,8 +8602,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -8596,97 +8626,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(DOUBLE_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_double in_0 = *((const npy_double *)(ip + 0 * istep)); *((npy_double *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_double in_1 = *((const npy_double *)(ip + 1 * istep)); *((npy_double *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_double in_2 = *((const npy_double *)(ip + 2 * istep)); *((npy_double *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_double in_3 = *((const npy_double *)(ip + 3 * istep)); *((npy_double *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_double in_4 = *((const npy_double *)(ip + 4 * istep)); *((npy_double *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_double in_5 = *((const npy_double *)(ip + 5 * istep)); *((npy_double *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_double in_6 = *((const npy_double *)(ip + 6 * istep)); *((npy_double *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_double in_7 = *((const npy_double *)(ip + 7 * istep)); *((npy_double *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_double in_8 = *((const npy_double *)(ip + 8 * istep)); *((npy_double *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_double in_9 = *((const npy_double *)(ip + 9 * istep)); *((npy_double *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_double in_10 = *((const npy_double *)(ip + 10 * istep)); *((npy_double *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_double in_11 = *((const npy_double *)(ip + 11 * istep)); *((npy_double *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_double in_12 = *((const npy_double *)(ip + 12 * istep)); *((npy_double *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_double in_13 = *((const npy_double *)(ip + 13 * istep)); *((npy_double *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_double in_14 = *((const npy_double *)(ip + 14 * istep)); *((npy_double *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_double in_15 = *((const npy_double *)(ip + 15 * istep)); *((npy_double *)(op + 15 * ostep)) = scalar_negative(in_15); @@ -8706,10 +8736,10 @@ clear: #endif } -#line 254 +#line 257 #undef TO_SIMD_SFX #if 0 -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 8 #if 1 #define TO_SIMD_SFX(X) X##_f8 @@ -8725,7 +8755,7 @@ clear: #define TO_SIMD_SFX(X) X##_s8 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 16 #if 1 #define TO_SIMD_SFX(X) X##_f16 @@ -8741,7 +8771,7 @@ clear: #define TO_SIMD_SFX(X) X##_s16 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 32 #if 1 #define TO_SIMD_SFX(X) X##_f32 @@ -8757,7 +8787,7 @@ clear: #define TO_SIMD_SFX(X) X##_s32 #endif -#line 259 +#line 262 #elif NPY_SIMD && NPY_BITSOF_LONGDOUBLE == 64 #if 1 #define TO_SIMD_SFX(X) X##_f64 @@ -8775,7 +8805,7 @@ clear: #endif -#line 280 +#line 283 NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_negative) (char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { @@ -8813,8 +8843,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_negative) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_negative)( @@ -8837,97 +8867,97 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(LONGDOUBLE_negative) */ #define UNROLL 8 for (; len >= UNROLL; len -= UNROLL, ip += istep*UNROLL, op += ostep*UNROLL) { - #line 344 + #line 347 #if UNROLL > 0 const npy_longdouble in_0 = *((const npy_longdouble *)(ip + 0 * istep)); *((npy_longdouble *)(op + 0 * ostep)) = scalar_negative(in_0); #endif -#line 344 +#line 347 #if UNROLL > 1 const npy_longdouble in_1 = *((const npy_longdouble *)(ip + 1 * istep)); *((npy_longdouble *)(op + 1 * ostep)) = scalar_negative(in_1); #endif -#line 344 +#line 347 #if UNROLL > 2 const npy_longdouble in_2 = *((const npy_longdouble *)(ip + 2 * istep)); *((npy_longdouble *)(op + 2 * ostep)) = scalar_negative(in_2); #endif -#line 344 +#line 347 #if UNROLL > 3 const npy_longdouble in_3 = *((const npy_longdouble *)(ip + 3 * istep)); *((npy_longdouble *)(op + 3 * ostep)) = scalar_negative(in_3); #endif -#line 344 +#line 347 #if UNROLL > 4 const npy_longdouble in_4 = *((const npy_longdouble *)(ip + 4 * istep)); *((npy_longdouble *)(op + 4 * ostep)) = scalar_negative(in_4); #endif -#line 344 +#line 347 #if UNROLL > 5 const npy_longdouble in_5 = *((const npy_longdouble *)(ip + 5 * istep)); *((npy_longdouble *)(op + 5 * ostep)) = scalar_negative(in_5); #endif -#line 344 +#line 347 #if UNROLL > 6 const npy_longdouble in_6 = *((const npy_longdouble *)(ip + 6 * istep)); *((npy_longdouble *)(op + 6 * ostep)) = scalar_negative(in_6); #endif -#line 344 +#line 347 #if UNROLL > 7 const npy_longdouble in_7 = *((const npy_longdouble *)(ip + 7 * istep)); *((npy_longdouble *)(op + 7 * ostep)) = scalar_negative(in_7); #endif -#line 344 +#line 347 #if UNROLL > 8 const npy_longdouble in_8 = *((const npy_longdouble *)(ip + 8 * istep)); *((npy_longdouble *)(op + 8 * ostep)) = scalar_negative(in_8); #endif -#line 344 +#line 347 #if UNROLL > 9 const npy_longdouble in_9 = *((const npy_longdouble *)(ip + 9 * istep)); *((npy_longdouble *)(op + 9 * ostep)) = scalar_negative(in_9); #endif -#line 344 +#line 347 #if UNROLL > 10 const npy_longdouble in_10 = *((const npy_longdouble *)(ip + 10 * istep)); *((npy_longdouble *)(op + 10 * ostep)) = scalar_negative(in_10); #endif -#line 344 +#line 347 #if UNROLL > 11 const npy_longdouble in_11 = *((const npy_longdouble *)(ip + 11 * istep)); *((npy_longdouble *)(op + 11 * ostep)) = scalar_negative(in_11); #endif -#line 344 +#line 347 #if UNROLL > 12 const npy_longdouble in_12 = *((const npy_longdouble *)(ip + 12 * istep)); *((npy_longdouble *)(op + 12 * ostep)) = scalar_negative(in_12); #endif -#line 344 +#line 347 #if UNROLL > 13 const npy_longdouble in_13 = *((const npy_longdouble *)(ip + 13 * istep)); *((npy_longdouble *)(op + 13 * ostep)) = scalar_negative(in_13); #endif -#line 344 +#line 347 #if UNROLL > 14 const npy_longdouble in_14 = *((const npy_longdouble *)(ip + 14 * istep)); *((npy_longdouble *)(op + 14 * ostep)) = scalar_negative(in_14); #endif -#line 344 +#line 347 #if UNROLL > 15 const npy_longdouble in_15 = *((const npy_longdouble *)(ip + 15 * istep)); *((npy_longdouble *)(op + 15 * ostep)) = scalar_negative(in_15); diff --git a/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c.src b/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c.src index 1e2a81d20b2..bfe4d892d0c 100644 --- a/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c.src +++ b/contrib/python/numpy/py3/numpy/core/src/umath/loops_unary.dispatch.c.src @@ -195,6 +195,8 @@ simd_unary_nc_@intrin@_@sfx@(const npyv_lanetype_@sfx@ *ip, npy_intp istride, #undef UNROLL #define UNROLL 2 #endif +// X86 does better with unrolled scalar for heavy non-contiguous +#ifndef NPY_HAVE_SSE2 static NPY_INLINE void simd_unary_nn_@intrin@_@sfx@(const npyv_lanetype_@sfx@ *ip, npy_intp istride, npyv_lanetype_@sfx@ *op, npy_intp ostride, @@ -226,6 +228,7 @@ simd_unary_nn_@intrin@_@sfx@(const npyv_lanetype_@sfx@ *ip, npy_intp istride, *op = scalar_@intrin@(*ip); } } +#endif // NPY_HAVE_SSE2 #endif // @supports_ncontig@ #undef UNROLL #endif // @simd_chk@ @@ -314,8 +317,8 @@ NPY_NO_EXPORT void NPY_CPU_DISPATCH_CURFX(@TYPE@_@kind@) ); goto clear; } - // SSE2 does better with unrolled scalar for heavy non-contiguous - #if !defined(NPY_HAVE_SSE2) + // X86 does better with unrolled scalar for heavy non-contiguous + #ifndef NPY_HAVE_SSE2 else if (istride != 1 && ostride != 1) { // non-contiguous input and output TO_SIMD_SFX(simd_unary_nn_@intrin@)( diff --git a/contrib/python/numpy/py3/numpy/core/tests/test_numeric.py b/contrib/python/numpy/py3/numpy/core/tests/test_numeric.py index 1bbdde13177..a88189e03ec 100644 --- a/contrib/python/numpy/py3/numpy/core/tests/test_numeric.py +++ b/contrib/python/numpy/py3/numpy/core/tests/test_numeric.py @@ -477,7 +477,14 @@ class TestBoolCmp: self.signd[self.ed] *= -1. self.signf[1::6][self.ef[1::6]] = -np.inf self.signd[1::6][self.ed[1::6]] = -np.inf - self.signf[3::6][self.ef[3::6]] = -np.nan + # On RISC-V, many operations that produce NaNs, such as converting + # a -NaN from f64 to f32, return a canonical NaN. The canonical + # NaNs are always positive. See section 11.3 NaN Generation and + # Propagation of the RISC-V Unprivileged ISA for more details. + # We disable the float32 sign test on riscv64 for -np.nan as the sign + # of the NaN will be lost when it's converted to a float32. + if platform.processor() != 'riscv64': + self.signf[3::6][self.ef[3::6]] = -np.nan self.signd[3::6][self.ed[3::6]] = -np.nan self.signf[4::6][self.ef[4::6]] = -0. self.signd[4::6][self.ed[4::6]] = -0. diff --git a/contrib/python/numpy/py3/numpy/f2py/crackfortran.py b/contrib/python/numpy/py3/numpy/f2py/crackfortran.py index 8d3fc27608b..8d3fc27608b 100755..100644 --- a/contrib/python/numpy/py3/numpy/f2py/crackfortran.py +++ b/contrib/python/numpy/py3/numpy/f2py/crackfortran.py diff --git a/contrib/python/numpy/py3/numpy/f2py/f2py2e.py b/contrib/python/numpy/py3/numpy/f2py/f2py2e.py index ce22b2d8a9e..ce22b2d8a9e 100755..100644 --- a/contrib/python/numpy/py3/numpy/f2py/f2py2e.py +++ b/contrib/python/numpy/py3/numpy/f2py/f2py2e.py diff --git a/contrib/python/numpy/py3/numpy/f2py/rules.py b/contrib/python/numpy/py3/numpy/f2py/rules.py index 009365e0476..009365e0476 100755..100644 --- a/contrib/python/numpy/py3/numpy/f2py/rules.py +++ b/contrib/python/numpy/py3/numpy/f2py/rules.py diff --git a/contrib/python/numpy/py3/numpy/f2py/tests/util.py b/contrib/python/numpy/py3/numpy/f2py/tests/util.py index 75b257cdb82..6ed6c0855fb 100644 --- a/contrib/python/numpy/py3/numpy/f2py/tests/util.py +++ b/contrib/python/numpy/py3/numpy/f2py/tests/util.py @@ -20,6 +20,7 @@ import contextlib import numpy from pathlib import Path +from numpy.compat import asstr from numpy._utils import asunicode from numpy.testing import temppath, IS_WASM from importlib import import_module diff --git a/contrib/python/numpy/py3/numpy/lib/function_base.py b/contrib/python/numpy/py3/numpy/lib/function_base.py index e75aca1e58e..a3dab04d333 100644 --- a/contrib/python/numpy/py3/numpy/lib/function_base.py +++ b/contrib/python/numpy/py3/numpy/lib/function_base.py @@ -4655,7 +4655,8 @@ def _lerp(a, b, t, out=None): diff_b_a = subtract(b, a) # asanyarray is a stop-gap until gh-13105 lerp_interpolation = asanyarray(add(a, diff_b_a * t, out=out)) - subtract(b, diff_b_a * (1 - t), out=lerp_interpolation, where=t >= 0.5) + subtract(b, diff_b_a * (1 - t), out=lerp_interpolation, where=t >= 0.5, + casting='unsafe', dtype=type(lerp_interpolation.dtype)) if lerp_interpolation.ndim == 0 and out is None: lerp_interpolation = lerp_interpolation[()] # unpack 0d arrays return lerp_interpolation diff --git a/contrib/python/numpy/py3/numpy/lib/tests/test_function_base.py b/contrib/python/numpy/py3/numpy/lib/tests/test_function_base.py index 11e44630e79..2bb73b60038 100644 --- a/contrib/python/numpy/py3/numpy/lib/tests/test_function_base.py +++ b/contrib/python/numpy/py3/numpy/lib/tests/test_function_base.py @@ -3606,6 +3606,10 @@ class TestQuantile: assert_equal(q, Fraction(7, 2)) assert_equal(type(q), Fraction) + q = np.quantile(x, .5) + assert_equal(q, 1.75) + assert_equal(type(q), np.float64) + q = np.quantile(x, Fraction(1, 2)) assert_equal(q, Fraction(7, 4)) assert_equal(type(q), Fraction) diff --git a/contrib/python/numpy/py3/numpy/linalg/umath_linalg.cpp b/contrib/python/numpy/py3/numpy/linalg/umath_linalg.cpp index 0c0b35e9c0e..3b5effe14a6 100644 --- a/contrib/python/numpy/py3/numpy/linalg/umath_linalg.cpp +++ b/contrib/python/numpy/py3/numpy/linalg/umath_linalg.cpp @@ -2259,7 +2259,7 @@ process_geev_results(GEEV_PARAMS_t<typ> *params, scalar_trait) } } - +#if 0 static inline fortran_int call_geev(GEEV_PARAMS_t<fortran_complex>* params) { @@ -2275,6 +2275,8 @@ call_geev(GEEV_PARAMS_t<fortran_complex>* params) &rv); return rv; } +#endif + static inline fortran_int call_geev(GEEV_PARAMS_t<fortran_doublecomplex>* params) { diff --git a/contrib/python/numpy/py3/numpy/random/ya.make b/contrib/python/numpy/py3/numpy/random/ya.make index bce5742ba53..6cc93532fb7 100644 --- a/contrib/python/numpy/py3/numpy/random/ya.make +++ b/contrib/python/numpy/py3/numpy/random/ya.make @@ -15,7 +15,6 @@ ADDINCL( CFLAGS( -DHAVE_CBLAS -DHAVE_NPY_CONFIG_H=1 - -DNO_ATLAS_INFO=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 diff --git a/contrib/python/numpy/py3/numpy/testing/print_coercion_tables.py b/contrib/python/numpy/py3/numpy/testing/print_coercion_tables.py index c1d4cdff8fd..c1d4cdff8fd 100755..100644 --- a/contrib/python/numpy/py3/numpy/testing/print_coercion_tables.py +++ b/contrib/python/numpy/py3/numpy/testing/print_coercion_tables.py diff --git a/contrib/python/numpy/py3/numpy/testing/setup.py b/contrib/python/numpy/py3/numpy/testing/setup.py index 6f203e87271..6f203e87271 100755..100644 --- a/contrib/python/numpy/py3/numpy/testing/setup.py +++ b/contrib/python/numpy/py3/numpy/testing/setup.py diff --git a/contrib/python/numpy/py3/numpy/tests/test_public_api.py b/contrib/python/numpy/py3/numpy/tests/test_public_api.py index 3711c2f96b2..5a90650fd81 100644 --- a/contrib/python/numpy/py3/numpy/tests/test_public_api.py +++ b/contrib/python/numpy/py3/numpy/tests/test_public_api.py @@ -185,7 +185,7 @@ PUBLIC_ALIASED_MODULES = [ PRIVATE_BUT_PRESENT_MODULES = ['numpy.' + s for s in [ "compat", "compat.py3k", - #"conftest", + "conftest", "core", "core.arrayprint", "core.defchararray", diff --git a/contrib/python/numpy/py3/numpy/tests/test_warnings.py b/contrib/python/numpy/py3/numpy/tests/test_warnings.py index ee5124c5d51..df90fcef8c5 100644 --- a/contrib/python/numpy/py3/numpy/tests/test_warnings.py +++ b/contrib/python/numpy/py3/numpy/tests/test_warnings.py @@ -5,7 +5,6 @@ all of these occurrences but should catch almost all. import pytest from pathlib import Path -import sys import ast import tokenize import numpy @@ -33,7 +32,7 @@ class FindFuncs(ast.NodeVisitor): ast.NodeVisitor.generic_visit(self, node) if p.ls[-1] == 'simplefilter' or p.ls[-1] == 'filterwarnings': - if node.args[0].s == "ignore": + if node.args[0].value == "ignore": raise AssertionError( "warnings should have an appropriate stacklevel; found in " "{} on line {}".format(self.__filename, node.lineno)) @@ -57,8 +56,6 @@ class FindFuncs(ast.NodeVisitor): @pytest.mark.slow [email protected](sys.version_info >= (3, 12), - reason="Deprecation warning in ast") def test_warning_calls(): # combined "ignore" and stacklevel error base = Path(numpy.__file__).parent diff --git a/contrib/python/numpy/py3/numpy/typing/tests/test_typing.py b/contrib/python/numpy/py3/numpy/typing/tests/test_typing.py index 68c6f5d03fa..6f778e55157 100644 --- a/contrib/python/numpy/py3/numpy/typing/tests/test_typing.py +++ b/contrib/python/numpy/py3/numpy/typing/tests/test_typing.py @@ -86,8 +86,6 @@ def strip_func(match: re.Match[str]) -> str: return match.groups()[1] [email protected](NO_MYPY, reason="Mypy is not installed") @pytest.fixture(scope="module", autouse=True) def run_mypy() -> None: """Clears the cache and run mypy before running any of the typing tests. diff --git a/contrib/python/numpy/py3/numpy/version.py b/contrib/python/numpy/py3/numpy/version.py index 692240a4865..e96055ea6d4 100644 --- a/contrib/python/numpy/py3/numpy/version.py +++ b/contrib/python/numpy/py3/numpy/version.py @@ -1,5 +1,5 @@ -version = "1.26.3" +version = "1.26.4" __version__ = version full_version = version diff --git a/contrib/python/numpy/py3/tests/ya.make b/contrib/python/numpy/py3/tests/ya.make index 0a655a46999..5df3fb04286 100644 --- a/contrib/python/numpy/py3/tests/ya.make +++ b/contrib/python/numpy/py3/tests/ya.make @@ -26,6 +26,11 @@ SRCDIR( contrib/python/numpy/py3 ) +PY_SRCS( + TOP_LEVEL + numpy/conftest.py +) + TEST_SRCS( numpy/array_api/tests/__init__.py numpy/array_api/tests/test_array_object.py @@ -39,7 +44,6 @@ TEST_SRCS( numpy/array_api/tests/test_validation.py numpy/compat/tests/__init__.py numpy/compat/tests/test_compat.py - numpy/conftest.py numpy/core/tests/__init__.py numpy/core/tests/_locales.py numpy/core/tests/test__exceptions.py diff --git a/contrib/python/numpy/py3/ya.make b/contrib/python/numpy/py3/ya.make index 92042220c3d..a6a43be5f15 100644 --- a/contrib/python/numpy/py3/ya.make +++ b/contrib/python/numpy/py3/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() PROVIDES(numpy) -VERSION(1.26.3) +VERSION(1.26.4) LICENSE(BSD-3-Clause) @@ -42,7 +42,6 @@ NO_CHECK_IMPORTS( CFLAGS( -DHAVE_CBLAS -DHAVE_NPY_CONFIG_H=1 - -DNO_ATLAS_INFO=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 diff --git a/contrib/python/pluggy/py3/.dist-info/METADATA b/contrib/python/pluggy/py3/.dist-info/METADATA index 684704f432b..c4c3312518b 100644 --- a/contrib/python/pluggy/py3/.dist-info/METADATA +++ b/contrib/python/pluggy/py3/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pluggy -Version: 1.3.0 +Version: 1.4.0 Summary: plugin and hook calling mechanisms for python Home-page: https://github.com/pytest-dev/pluggy Author: Holger Krekel diff --git a/contrib/python/pluggy/py3/pluggy/__init__.py b/contrib/python/pluggy/py3/pluggy/__init__.py index 9d9e873bd09..2adf9454f80 100644 --- a/contrib/python/pluggy/py3/pluggy/__init__.py +++ b/contrib/python/pluggy/py3/pluggy/__init__.py @@ -18,6 +18,8 @@ __all__ = [ "HookspecMarker", "HookimplMarker", "Result", + "PluggyWarning", + "PluggyTeardownRaisedWarning", ] from ._manager import PluginManager, PluginValidationError @@ -31,3 +33,7 @@ from ._hooks import ( HookimplOpts, HookImpl, ) +from ._warnings import ( + PluggyWarning, + PluggyTeardownRaisedWarning, +) diff --git a/contrib/python/pluggy/py3/pluggy/_callers.py b/contrib/python/pluggy/py3/pluggy/_callers.py index 6498eaed640..787f56bac24 100644 --- a/contrib/python/pluggy/py3/pluggy/_callers.py +++ b/contrib/python/pluggy/py3/pluggy/_callers.py @@ -3,27 +3,52 @@ Call loop machinery """ from __future__ import annotations +import warnings from typing import cast from typing import Generator from typing import Mapping +from typing import NoReturn from typing import Sequence from typing import Tuple from typing import Union from ._hooks import HookImpl -from ._result import _raise_wrapfail from ._result import HookCallError from ._result import Result +from ._warnings import PluggyTeardownRaisedWarning # Need to distinguish between old- and new-style hook wrappers. -# Wrapping one a singleton tuple is the fastest type-safe way I found to do it. +# Wrapping with a tuple is the fastest type-safe way I found to do it. Teardown = Union[ - Tuple[Generator[None, Result[object], None]], + Tuple[Generator[None, Result[object], None], HookImpl], Generator[None, object, object], ] +def _raise_wrapfail( + wrap_controller: ( + Generator[None, Result[object], None] | Generator[None, object, object] + ), + msg: str, +) -> NoReturn: + co = wrap_controller.gi_code + raise RuntimeError( + "wrap_controller at %r %s:%d %s" + % (co.co_name, co.co_filename, co.co_firstlineno, msg) + ) + + +def _warn_teardown_exception( + hook_name: str, hook_impl: HookImpl, e: BaseException +) -> None: + msg = "A plugin raised an exception during an old-style hookwrapper teardown.\n" + msg += f"Plugin: {hook_impl.plugin_name}, Hook: {hook_name}\n" + msg += f"{type(e).__name__}: {e}\n" + msg += "For more information see https://pluggy.readthedocs.io/en/stable/api_reference.html#pluggy.PluggyTeardownRaisedWarning" # noqa: E501 + warnings.warn(PluggyTeardownRaisedWarning(msg), stacklevel=5) + + def _multicall( hook_name: str, hook_impls: Sequence[HookImpl], @@ -60,7 +85,7 @@ def _multicall( res = hook_impl.function(*args) wrapper_gen = cast(Generator[None, Result[object], None], res) next(wrapper_gen) # first yield - teardowns.append((wrapper_gen,)) + teardowns.append((wrapper_gen, hook_impl)) except StopIteration: _raise_wrapfail(wrapper_gen, "did not yield") elif hook_impl.wrapper: @@ -128,9 +153,13 @@ def _multicall( if isinstance(teardown, tuple): try: teardown[0].send(outcome) - _raise_wrapfail(teardown[0], "has second yield") except StopIteration: pass + except BaseException as e: + _warn_teardown_exception(hook_name, teardown[1], e) + raise + else: + _raise_wrapfail(teardown[0], "has second yield") else: try: if outcome._exception is not None: diff --git a/contrib/python/pluggy/py3/pluggy/_hooks.py b/contrib/python/pluggy/py3/pluggy/_hooks.py index 916ca70489c..7c8420f4dea 100644 --- a/contrib/python/pluggy/py3/pluggy/_hooks.py +++ b/contrib/python/pluggy/py3/pluggy/_hooks.py @@ -389,6 +389,13 @@ class HookCaller: #: Name of the hook getting called. self.name: Final = name self._hookexec: Final = hook_execute + # The hookimpls list. The caller iterates it *in reverse*. Format: + # 1. trylast nonwrappers + # 2. nonwrappers + # 3. tryfirst nonwrappers + # 4. trylast wrappers + # 5. wrappers + # 6. tryfirst wrappers self._hookimpls: Final[list[HookImpl]] = [] self._call_history: _CallHistory | None = None # TODO: Document, or make private. @@ -490,7 +497,8 @@ class HookCaller: ), "Cannot directly call a historic hook - use call_historic instead." self._verify_all_args_are_provided(kwargs) firstresult = self.spec.opts.get("firstresult", False) if self.spec else False - return self._hookexec(self.name, self._hookimpls, kwargs, firstresult) + # Copy because plugins may register other plugins during iteration (#438). + return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult) def call_historic( self, @@ -511,7 +519,8 @@ class HookCaller: self._call_history.append((kwargs, result_callback)) # Historizing hooks don't return results. # Remember firstresult isn't compatible with historic. - res = self._hookexec(self.name, self._hookimpls, kwargs, False) + # Copy because plugins may register other plugins during iteration (#438). + res = self._hookexec(self.name, self._hookimpls.copy(), kwargs, False) if result_callback is None: return if isinstance(res, list): @@ -541,10 +550,11 @@ class HookCaller: hookimpl = HookImpl(None, "<temp>", method, opts) # Find last non-tryfirst nonwrapper method. i = len(hookimpls) - 1 - while ( - i >= 0 - and hookimpls[i].tryfirst - and not (hookimpls[i].hookwrapper or hookimpls[i].wrapper) + while i >= 0 and ( + # Skip wrappers. + (hookimpls[i].hookwrapper or hookimpls[i].wrapper) + # Skip tryfirst nonwrappers. + or hookimpls[i].tryfirst ): i -= 1 hookimpls.insert(i + 1, hookimpl) diff --git a/contrib/python/pluggy/py3/pluggy/_manager.py b/contrib/python/pluggy/py3/pluggy/_manager.py index 84717e6eaa7..ce1e107a60c 100644 --- a/contrib/python/pluggy/py3/pluggy/_manager.py +++ b/contrib/python/pluggy/py3/pluggy/_manager.py @@ -1,6 +1,5 @@ from __future__ import annotations -import importlib.metadata import inspect import types import warnings @@ -11,6 +10,7 @@ from typing import Final from typing import Iterable from typing import Mapping from typing import Sequence +from typing import TYPE_CHECKING from . import _tracing from ._callers import _multicall @@ -26,6 +26,10 @@ from ._hooks import HookspecOpts from ._hooks import normalize_hookimpl_opts from ._result import Result +if TYPE_CHECKING: + # importtlib.metadata import is slow, defer it. + import importlib.metadata + _BeforeTrace = Callable[[str, Sequence[HookImpl], Mapping[str, Any]], None] _AfterTrace = Callable[[Result[Any], str, Sequence[HookImpl], Mapping[str, Any]], None] @@ -231,6 +235,16 @@ class PluginManager: """Return whether the given plugin name is blocked.""" return name in self._name2plugin and self._name2plugin[name] is None + def unblock(self, name: str) -> bool: + """Unblocks a name. + + Returns whether the name was actually blocked. + """ + if self._name2plugin.get(name, -1) is None: + del self._name2plugin[name] + return True + return False + def add_hookspecs(self, module_or_class: _Namespace) -> None: """Add new hook specifications defined in the given ``module_or_class``. @@ -384,6 +398,8 @@ class PluginManager: :return: The number of plugins loaded by this call. """ + import importlib.metadata + count = 0 for dist in list(importlib.metadata.distributions()): for ep in dist.entry_points: diff --git a/contrib/python/pluggy/py3/pluggy/_result.py b/contrib/python/pluggy/py3/pluggy/_result.py index 29859eb92dc..aa21fa13805 100644 --- a/contrib/python/pluggy/py3/pluggy/_result.py +++ b/contrib/python/pluggy/py3/pluggy/_result.py @@ -7,9 +7,7 @@ from types import TracebackType from typing import Callable from typing import cast from typing import final -from typing import Generator from typing import Generic -from typing import NoReturn from typing import Optional from typing import Tuple from typing import Type @@ -20,19 +18,6 @@ _ExcInfo = Tuple[Type[BaseException], BaseException, Optional[TracebackType]] ResultType = TypeVar("ResultType") -def _raise_wrapfail( - wrap_controller: ( - Generator[None, Result[ResultType], None] | Generator[None, object, object] - ), - msg: str, -) -> NoReturn: - co = wrap_controller.gi_code - raise RuntimeError( - "wrap_controller at %r %s:%d %s" - % (co.co_name, co.co_filename, co.co_firstlineno, msg) - ) - - class HookCallError(Exception): """Hook was called incorrectly.""" diff --git a/contrib/python/pluggy/py3/pluggy/_version.py b/contrib/python/pluggy/py3/pluggy/_version.py index 4a742d246fc..ee6c4d7d052 100644 --- a/contrib/python/pluggy/py3/pluggy/_version.py +++ b/contrib/python/pluggy/py3/pluggy/_version.py @@ -1,4 +1,16 @@ # file generated by setuptools_scm # don't change, don't track in version control -__version__ = version = '1.3.0' -__version_tuple__ = version_tuple = (1, 3, 0) +TYPE_CHECKING = False +if TYPE_CHECKING: + from typing import Tuple, Union + VERSION_TUPLE = Tuple[Union[int, str], ...] +else: + VERSION_TUPLE = object + +version: str +__version__: str +__version_tuple__: VERSION_TUPLE +version_tuple: VERSION_TUPLE + +__version__ = version = '1.4.0' +__version_tuple__ = version_tuple = (1, 4, 0) diff --git a/contrib/python/pluggy/py3/pluggy/_warnings.py b/contrib/python/pluggy/py3/pluggy/_warnings.py new file mode 100644 index 00000000000..6356c770c7d --- /dev/null +++ b/contrib/python/pluggy/py3/pluggy/_warnings.py @@ -0,0 +1,27 @@ +from typing import final + + +class PluggyWarning(UserWarning): + """Base class for all warnings emitted by pluggy.""" + + __module__ = "pluggy" + + +@final +class PluggyTeardownRaisedWarning(PluggyWarning): + """A plugin raised an exception during an :ref:`old-style hookwrapper + <old_style_hookwrappers>` teardown. + + Such exceptions are not handled by pluggy, and may cause subsequent + teardowns to be executed at unexpected times, or be skipped entirely. + + This is an issue in the plugin implementation. + + If the exception is unintended, fix the underlying cause. + + If the exception is intended, switch to :ref:`new-style hook wrappers + <hookwrappers>`, or use :func:`result.force_exception() + <pluggy.Result.force_exception>` to set the exception instead of raising. + """ + + __module__ = "pluggy" diff --git a/contrib/python/pluggy/py3/ya.make b/contrib/python/pluggy/py3/ya.make index 7302e7c37d5..8dc442cdd17 100644 --- a/contrib/python/pluggy/py3/ya.make +++ b/contrib/python/pluggy/py3/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(1.3.0) +VERSION(1.4.0) LICENSE(MIT) @@ -17,6 +17,7 @@ PY_SRCS( pluggy/_result.py pluggy/_tracing.py pluggy/_version.py + pluggy/_warnings.py ) RESOURCE_FILES( diff --git a/contrib/python/pytz/py2/.dist-info/METADATA b/contrib/python/pytz/py2/.dist-info/METADATA index 9aec2fcc9b4..2cb10460745 100644 --- a/contrib/python/pytz/py2/.dist-info/METADATA +++ b/contrib/python/pytz/py2/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pytz -Version: 2023.3.post1 +Version: 2024.1 Summary: World timezone definitions, modern and historical Home-page: http://pythonhosted.org/pytz Author: Stuart Bishop @@ -36,6 +36,7 @@ Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Topic :: Software Development :: Libraries :: Python Modules +License-File: LICENSE.txt pytz - World Timezone Definitions for Python ============================================ diff --git a/contrib/python/pytz/py2/pytz/__init__.py b/contrib/python/pytz/py2/pytz/__init__.py index f975943bc7a..55c1f965673 100644 --- a/contrib/python/pytz/py2/pytz/__init__.py +++ b/contrib/python/pytz/py2/pytz/__init__.py @@ -22,8 +22,8 @@ from pytz.tzfile import build_tzinfo # The IANA (nee Olson) database is updated several times a year. -OLSON_VERSION = '2023c' -VERSION = '2023.3.post1' # pip compatible version number. +OLSON_VERSION = '2024a' +VERSION = '2024.1' # pip compatible version number. __version__ = VERSION OLSEN_VERSION = OLSON_VERSION # Old releases had this misspelling diff --git a/contrib/python/pytz/py2/pytz/tests/test_tzinfo.py b/contrib/python/pytz/py2/pytz/tests/test_tzinfo.py index 7d74920e135..000daabe86c 100644 --- a/contrib/python/pytz/py2/pytz/tests/test_tzinfo.py +++ b/contrib/python/pytz/py2/pytz/tests/test_tzinfo.py @@ -27,8 +27,8 @@ from pytz.tzinfo import DstTzInfo, StaticTzInfo # noqa # I test for expected version to ensure the correct version of pytz is # actually being tested. -EXPECTED_VERSION = '2023.3.post1' -EXPECTED_OLSON_VERSION = '2023c' +EXPECTED_VERSION = '2024.1' +EXPECTED_OLSON_VERSION = '2024a' fmt = '%Y-%m-%d %H:%M:%S %Z%z' diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Godthab b/contrib/python/pytz/py2/pytz/zoneinfo/America/Godthab Binary files differindex adb7934aadf..29958cf12a9 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Godthab +++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Godthab diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Miquelon b/contrib/python/pytz/py2/pytz/zoneinfo/America/Miquelon Binary files differindex 5eccd861071..f780ea990ff 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Miquelon +++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Miquelon diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Montreal b/contrib/python/pytz/py2/pytz/zoneinfo/America/Montreal Binary files differindex 6752c5b0528..170137333f9 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Montreal +++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Montreal diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Nassau b/contrib/python/pytz/py2/pytz/zoneinfo/America/Nassau Binary files differindex 6752c5b0528..170137333f9 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Nassau +++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Nassau diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Nipigon b/contrib/python/pytz/py2/pytz/zoneinfo/America/Nipigon Binary files differindex 6752c5b0528..170137333f9 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Nipigon +++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Nipigon diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Nuuk b/contrib/python/pytz/py2/pytz/zoneinfo/America/Nuuk Binary files differindex adb7934aadf..29958cf12a9 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Nuuk +++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Nuuk diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Scoresbysund b/contrib/python/pytz/py2/pytz/zoneinfo/America/Scoresbysund Binary files differindex 286d13216eb..9bf411ef5ad 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Scoresbysund +++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Scoresbysund diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Thunder_Bay b/contrib/python/pytz/py2/pytz/zoneinfo/America/Thunder_Bay Binary files differindex 6752c5b0528..170137333f9 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Thunder_Bay +++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Thunder_Bay diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/America/Toronto b/contrib/python/pytz/py2/pytz/zoneinfo/America/Toronto Binary files differindex 6752c5b0528..170137333f9 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/America/Toronto +++ b/contrib/python/pytz/py2/pytz/zoneinfo/America/Toronto diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Casey b/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Casey Binary files differindex 4b98133d7af..586a7653ef2 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Casey +++ b/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Casey diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Vostok b/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Vostok Binary files differindex 62bdcac14db..016e06b1bbc 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Vostok +++ b/contrib/python/pytz/py2/pytz/zoneinfo/Antarctica/Vostok diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Almaty b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Almaty Binary files differindex 91c916a3a5d..855abbd6e3e 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Almaty +++ b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Almaty diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Gaza b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Gaza Binary files differindex c9b2ff90823..dd5781e8ae2 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Gaza +++ b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Gaza diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Hebron b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Hebron Binary files differindex 64194fd85c6..a64fc9e7b25 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Hebron +++ b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Hebron diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Ho_Chi_Minh b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Ho_Chi_Minh Binary files differindex a213d290e1a..9c45ed991a2 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Ho_Chi_Minh +++ b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Ho_Chi_Minh diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Qostanay b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Qostanay Binary files differindex f8baf676496..2ee9ef7e985 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Qostanay +++ b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Qostanay diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Saigon b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Saigon Binary files differindex a213d290e1a..9c45ed991a2 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Saigon +++ b/contrib/python/pytz/py2/pytz/zoneinfo/Asia/Saigon diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/Canada/Eastern b/contrib/python/pytz/py2/pytz/zoneinfo/Canada/Eastern Binary files differindex 6752c5b0528..170137333f9 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/Canada/Eastern +++ b/contrib/python/pytz/py2/pytz/zoneinfo/Canada/Eastern diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/iso3166.tab b/contrib/python/pytz/py2/pytz/zoneinfo/iso3166.tab index be3348d11a7..402c015ec6b 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/iso3166.tab +++ b/contrib/python/pytz/py2/pytz/zoneinfo/iso3166.tab @@ -3,17 +3,22 @@ # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. # -# From Paul Eggert (2022-11-18): +# From Paul Eggert (2023-09-06): # This file contains a table of two-letter country codes. Columns are # separated by a single tab. Lines beginning with '#' are comments. # All text uses UTF-8 encoding. The columns of the table are as follows: # # 1. ISO 3166-1 alpha-2 country code, current as of -# ISO 3166-1 N1087 (2022-09-02). See: Updates on ISO 3166-1 -# https://isotc.iso.org/livelink/livelink/Open/16944257 -# 2. The usual English name for the coded region, -# chosen so that alphabetic sorting of subsets produces helpful lists. -# This is not the same as the English name in the ISO 3166 tables. +# ISO/TC 46 N1108 (2023-04-05). See: ISO/TC 46 Documents +# https://www.iso.org/committee/48750.html?view=documents +# 2. The usual English name for the coded region. This sometimes +# departs from ISO-listed names, sometimes so that sorted subsets +# of names are useful (e.g., "Samoa (American)" and "Samoa +# (western)" rather than "American Samoa" and "Samoa"), +# sometimes to avoid confusion among non-experts (e.g., +# "Czech Republic" and "Turkey" rather than "Czechia" and "Türkiye"), +# and sometimes to omit needless detail or churn (e.g., "Netherlands" +# rather than "Netherlands (the)" or "Netherlands (Kingdom of the)"). # # The table is sorted by country code. # diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/leapseconds b/contrib/python/pytz/py2/pytz/zoneinfo/leapseconds index a6a170aa702..ce150bfe0dc 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/leapseconds +++ b/contrib/python/pytz/py2/pytz/zoneinfo/leapseconds @@ -3,13 +3,10 @@ # This file is in the public domain. # This file is generated automatically from the data in the public-domain -# NIST format leap-seconds.list file, which can be copied from -# <ftp://ftp.nist.gov/pub/time/leap-seconds.list> -# or <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>. -# The NIST file is used instead of its IERS upstream counterpart +# NIST/IERS format leap-seconds.list file, which can be copied from # <https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list> -# because under US law the NIST file is public domain -# whereas the IERS file's copyright and license status is unclear. +# or, in a variant with different comments, from +# <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>. # For more about leap-seconds.list, please see # The NTP Timescale and Leap Seconds # <https://www.eecis.udel.edu/~mills/leap.html>. @@ -72,11 +69,11 @@ Leap 2016 Dec 31 23:59:60 + S # Any additional leap seconds will come after this. # This Expires line is commented out for now, # so that pre-2020a zic implementations do not reject this file. -#Expires 2023 Dec 28 00:00:00 +#Expires 2024 Dec 28 00:00:00 # POSIX timestamps for the data in this file: -#updated 1467936000 (2016-07-08 00:00:00 UTC) -#expires 1703721600 (2023-12-28 00:00:00 UTC) +#updated 1704708379 (2024-01-08 10:06:19 UTC) +#expires 1735344000 (2024-12-28 00:00:00 UTC) -# Updated through IERS Bulletin C65 -# File expires on: 28 December 2023 +# Updated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat) +# File expires on 28 December 2024 diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/tzdata.zi b/contrib/python/pytz/py2/pytz/zoneinfo/tzdata.zi index 23d99be4535..b5a03be786d 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/tzdata.zi +++ b/contrib/python/pytz/py2/pytz/zoneinfo/tzdata.zi @@ -1,4 +1,4 @@ -# version unknown-dirty +# version unknown # This zic input file is in the public domain. R d 1916 o - Jun 14 23s 1 S R d 1916 1919 - O Su>=1 23s 0 - @@ -22,27 +22,6 @@ R d 1978 o - Mar 24 1 1 S R d 1978 o - S 22 3 0 - R d 1980 o - Ap 25 0 1 S R d 1980 o - O 31 2 0 - -Z Africa/Algiers 0:12:12 - LMT 1891 Mar 16 -0:9:21 - PMT 1911 Mar 11 -0 d WE%sT 1940 F 25 2 -1 d CE%sT 1946 O 7 -0 - WET 1956 Ja 29 -1 - CET 1963 Ap 14 -0 d WE%sT 1977 O 21 -1 d CE%sT 1979 O 26 -0 d WE%sT 1981 May -1 - CET -Z Atlantic/Cape_Verde -1:34:4 - LMT 1912 Ja 1 2u --2 - -02 1942 S --2 1 -01 1945 O 15 --2 - -02 1975 N 25 2 --1 - -01 -Z Africa/Ndjamena 1:0:12 - LMT 1912 -1 - WAT 1979 O 14 -1 1 WAST 1980 Mar 8 -1 - WAT -Z Africa/Abidjan -0:16:8 - LMT 1912 -0 - GMT R K 1940 o - Jul 15 0 1 S R K 1940 o - O 1 0 0 - R K 1941 o - Ap 15 0 1 S @@ -77,21 +56,6 @@ R K 2014 o - Jul 31 24 1 S R K 2014 o - S lastTh 24 0 - R K 2023 ma - Ap lastF 0 1 S R K 2023 ma - O lastTh 24 0 - -Z Africa/Cairo 2:5:9 - LMT 1900 O -2 K EE%sT -Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u --1 - -01 1975 -0 - GMT -Z Africa/Nairobi 2:27:16 - LMT 1908 May -2:30 - +0230 1928 Jun 30 24 -3 - EAT 1930 Ja 4 24 -2:30 - +0230 1936 D 31 24 -2:45 - +0245 1942 Jul 31 24 -3 - EAT -Z Africa/Monrovia -0:43:8 - LMT 1882 --0:43:8 - MMT 1919 Mar --0:44:30 - MMT 1972 Ja 7 -0 - GMT R L 1951 o - O 14 2 1 S R L 1952 o - Ja 1 0 0 - R L 1953 o - O 9 2 1 S @@ -109,21 +73,10 @@ R L 1997 o - Ap 4 0 1 S R L 1997 o - O 4 0 0 - R L 2013 o - Mar lastF 1 1 S R L 2013 o - O lastF 2 0 - -Z Africa/Tripoli 0:52:44 - LMT 1920 -1 L CE%sT 1959 -2 - EET 1982 -1 L CE%sT 1990 May 4 -2 - EET 1996 S 30 -1 L CE%sT 1997 O 4 -2 - EET 2012 N 10 2 -1 L CE%sT 2013 O 25 2 -2 - EET R MU 1982 o - O 10 0 1 - R MU 1983 o - Mar 21 0 0 - R MU 2008 o - O lastSu 2 1 - R MU 2009 o - Mar lastSu 2 0 - -Z Indian/Mauritius 3:50 - LMT 1907 -4 MU +04/+05 R M 1939 o - S 12 0 1 - R M 1939 o - N 19 0 0 - R M 1940 o - F 25 0 1 - @@ -307,53 +260,15 @@ R M 2086 o - Ap 14 3 -1 - R M 2086 o - May 19 2 0 - R M 2087 o - Mar 30 3 -1 - R M 2087 o - May 11 2 0 - -Z Africa/Casablanca -0:30:20 - LMT 1913 O 26 -0 M +00/+01 1984 Mar 16 -1 - +01 1986 -0 M +00/+01 2018 O 28 3 -1 M +01/+00 -Z Africa/El_Aaiun -0:52:48 - LMT 1934 --1 - -01 1976 Ap 14 -0 M +00/+01 2018 O 28 3 -1 M +01/+00 -Z Africa/Maputo 2:10:20 - LMT 1903 Mar -2 - CAT R NA 1994 o - Mar 21 0 -1 WAT R NA 1994 2017 - S Su>=1 2 0 CAT R NA 1995 2017 - Ap Su>=1 2 -1 WAT -Z Africa/Windhoek 1:8:24 - LMT 1892 F 8 -1:30 - +0130 1903 Mar -2 - SAST 1942 S 20 2 -2 1 SAST 1943 Mar 21 2 -2 - SAST 1990 Mar 21 -2 NA %s -Z Africa/Lagos 0:13:35 - LMT 1905 Jul -0 - GMT 1908 Jul -0:13:35 - LMT 1914 -0:30 - +0030 1919 S -1 - WAT -Z Africa/Sao_Tome 0:26:56 - LMT 1884 --0:36:45 - LMT 1912 Ja 1 0u -0 - GMT 2018 Ja 1 1 -1 - WAT 2019 Ja 1 2 -0 - GMT R SA 1942 1943 - S Su>=15 2 1 - R SA 1943 1944 - Mar Su>=15 2 0 - -Z Africa/Johannesburg 1:52 - LMT 1892 F 8 -1:30 - SAST 1903 Mar -2 SA SAST R SD 1970 o - May 1 0 1 S R SD 1970 1985 - O 15 0 0 - R SD 1971 o - Ap 30 0 1 S R SD 1972 1985 - Ap lastSu 0 1 S -Z Africa/Khartoum 2:10:8 - LMT 1931 -2 SD CA%sT 2000 Ja 15 12 -3 - EAT 2017 N -2 - CAT -Z Africa/Juba 2:6:28 - LMT 1931 -2 SD CA%sT 2000 Ja 15 12 -3 - EAT 2021 F -2 - CAT R n 1939 o - Ap 15 23s 1 S R n 1939 o - N 18 23s 0 - R n 1940 o - F 25 23s 1 S @@ -379,80 +294,14 @@ R n 2005 o - May 1 0s 1 S R n 2005 o - S 30 1s 0 - R n 2006 2008 - Mar lastSu 2s 1 S R n 2006 2008 - O lastSu 2s 0 - -Z Africa/Tunis 0:40:44 - LMT 1881 May 12 -0:9:21 - PMT 1911 Mar 11 -1 n CE%sT -Z Antarctica/Casey 0 - -00 1969 -8 - +08 2009 O 18 2 -11 - +11 2010 Mar 5 2 -8 - +08 2011 O 28 2 -11 - +11 2012 F 21 17u -8 - +08 2016 O 22 -11 - +11 2018 Mar 11 4 -8 - +08 2018 O 7 4 -11 - +11 2019 Mar 17 3 -8 - +08 2019 O 4 3 -11 - +11 2020 Mar 8 3 -8 - +08 2020 O 4 0:1 -11 - +11 -Z Antarctica/Davis 0 - -00 1957 Ja 13 -7 - +07 1964 N -0 - -00 1969 F -7 - +07 2009 O 18 2 -5 - +05 2010 Mar 10 20u -7 - +07 2011 O 28 2 -5 - +05 2012 F 21 20u -7 - +07 -Z Antarctica/Mawson 0 - -00 1954 F 13 -6 - +06 2009 O 18 2 -5 - +05 R Tr 2005 ma - Mar lastSu 1u 2 +02 R Tr 2004 ma - O lastSu 1u 0 +00 -Z Antarctica/Troll 0 - -00 2005 F 12 -0 Tr %s -Z Antarctica/Rothera 0 - -00 1976 D --3 - -03 -Z Asia/Kabul 4:36:48 - LMT 1890 -4 - +04 1945 -4:30 - +0430 R AM 2011 o - Mar lastSu 2s 1 - R AM 2011 o - O lastSu 2s 0 - -Z Asia/Yerevan 2:58 - LMT 1924 May 2 -3 - +03 1957 Mar -4 R +04/+05 1991 Mar 31 2s -3 R +03/+04 1995 S 24 2s -4 - +04 1997 -4 R +04/+05 2011 -4 AM +04/+05 R AZ 1997 2015 - Mar lastSu 4 1 - R AZ 1997 2015 - O lastSu 5 0 - -Z Asia/Baku 3:19:24 - LMT 1924 May 2 -3 - +03 1957 Mar -4 R +04/+05 1991 Mar 31 2s -3 R +03/+04 1992 S lastSu 2s -4 - +04 1996 -4 E +04/+05 1997 -4 AZ +04/+05 R BD 2009 o - Jun 19 23 1 - R BD 2009 o - D 31 24 0 - -Z Asia/Dhaka 6:1:40 - LMT 1890 -5:53:20 - HMT 1941 O -6:30 - +0630 1942 May 15 -5:30 - +0530 1942 S -6:30 - +0630 1951 S 30 -6 - +06 2009 -6 BD +06/+07 -Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15 -5:30 - +0530 1987 O -6 - +06 -Z Indian/Chagos 4:49:40 - LMT 1907 -5 - +05 1996 -6 - +06 -Z Asia/Yangon 6:24:47 - LMT 1880 -6:24:47 - RMT 1920 -6:30 - +0630 1942 May -9 - +09 1945 May 3 -6:30 - +0630 R Sh 1919 o - Ap 12 24 1 D R Sh 1919 o - S 30 24 0 S R Sh 1940 o - Jun 1 0 1 D @@ -470,11 +319,6 @@ R Sh 1948 1949 - S 30 24 0 S R CN 1986 o - May 4 2 1 D R CN 1986 1991 - S Su>=11 2 0 S R CN 1987 1991 - Ap Su>=11 2 1 D -Z Asia/Shanghai 8:5:43 - LMT 1901 -8 Sh C%sT 1949 May 28 -8 CN C%sT -Z Asia/Urumqi 5:50:20 - LMT 1928 -6 - +06 R HK 1946 o - Ap 21 0 1 S R HK 1946 o - D 1 3:30s 0 - R HK 1947 o - Ap 13 3:30s 1 S @@ -489,12 +333,6 @@ R HK 1965 1976 - O Su>=16 3:30 0 - R HK 1973 o - D 30 3:30 1 S R HK 1979 o - May 13 3:30 1 S R HK 1979 o - O 21 3:30 0 - -Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 29 17u -8 - HKT 1941 Jun 15 3 -8 1 HKST 1941 O 1 4 -8 0:30 HKWT 1941 D 25 -9 - JST 1945 N 18 2 -8 HK HK%sT R f 1946 o - May 15 0 1 D R f 1946 o - O 1 0 0 S R f 1947 o - Ap 15 0 1 D @@ -510,10 +348,6 @@ R f 1974 1975 - Ap 1 0 1 D R f 1974 1975 - O 1 0 0 S R f 1979 o - Jul 1 0 1 D R f 1979 o - O 1 0 0 S -Z Asia/Taipei 8:6 - LMT 1896 -8 - CST 1937 O -9 - JST 1945 S 21 1 -8 f C%sT R _ 1942 1943 - Ap 30 23 1 - R _ 1942 o - N 17 23 0 - R _ 1943 o - S 30 23 0 S @@ -541,10 +375,6 @@ R _ 1973 o - D 30 3:30 1 D R _ 1975 1976 - Ap Su>=16 3:30 1 D R _ 1979 o - May 13 3:30 1 D R _ 1979 o - O Su>=16 3:30 0 S -Z Asia/Macau 7:34:10 - LMT 1904 O 30 -8 - CST 1941 D 21 23 -9 _ +09/+10 1945 S 30 24 -8 _ C%sT R CY 1975 o - Ap 13 0 1 S R CY 1975 o - O 12 0 0 - R CY 1976 o - May 15 0 1 S @@ -554,65 +384,6 @@ R CY 1977 o - S 25 0 0 - R CY 1978 o - O 2 0 0 - R CY 1979 1997 - S lastSu 0 0 - R CY 1981 1998 - Mar lastSu 0 1 S -Z Asia/Nicosia 2:13:28 - LMT 1921 N 14 -2 CY EE%sT 1998 S -2 E EE%sT -Z Asia/Famagusta 2:15:48 - LMT 1921 N 14 -2 CY EE%sT 1998 S -2 E EE%sT 2016 S 8 -3 - +03 2017 O 29 1u -2 E EE%sT -Z Asia/Tbilisi 2:59:11 - LMT 1880 -2:59:11 - TBMT 1924 May 2 -3 - +03 1957 Mar -4 R +04/+05 1991 Mar 31 2s -3 R +03/+04 1992 -3 e +03/+04 1994 S lastSu -4 e +04/+05 1996 O lastSu -4 1 +05 1997 Mar lastSu -4 e +04/+05 2004 Jun 27 -3 R +03/+04 2005 Mar lastSu 2 -4 - +04 -Z Asia/Dili 8:22:20 - LMT 1912 -8 - +08 1942 F 21 23 -9 - +09 1976 May 3 -8 - +08 2000 S 17 -9 - +09 -Z Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 -5:53:20 - HMT 1870 -5:21:10 - MMT 1906 -5:30 - IST 1941 O -5:30 1 +0630 1942 May 15 -5:30 - IST 1942 S -5:30 1 +0630 1945 O 15 -5:30 - IST -Z Asia/Jakarta 7:7:12 - LMT 1867 Au 10 -7:7:12 - BMT 1923 D 31 16:40u -7:20 - +0720 1932 N -7:30 - +0730 1942 Mar 23 -9 - +09 1945 S 23 -7:30 - +0730 1948 May -8 - +08 1950 May -7:30 - +0730 1964 -7 - WIB -Z Asia/Pontianak 7:17:20 - LMT 1908 May -7:17:20 - PMT 1932 N -7:30 - +0730 1942 Ja 29 -9 - +09 1945 S 23 -7:30 - +0730 1948 May -8 - +08 1950 May -7:30 - +0730 1964 -8 - WITA 1988 -7 - WIB -Z Asia/Makassar 7:57:36 - LMT 1920 -7:57:36 - MMT 1932 N -8 - +08 1942 F 9 -9 - +09 1945 S 23 -8 - WITA -Z Asia/Jayapura 9:22:48 - LMT 1932 N -9 - +09 1944 S -9:30 - +0930 1964 -9 - WIT R i 1910 o - Ja 1 0 0 - R i 1977 o - Mar 21 23 1 - R i 1977 o - O 20 24 0 - @@ -653,11 +424,6 @@ R i 2020 o - Mar 20 24 1 - R i 2020 o - S 20 24 0 - R i 2021 2022 - Mar 21 24 1 - R i 2021 2022 - S 21 24 0 - -Z Asia/Tehran 3:25:44 - LMT 1916 -3:25:44 - TMT 1935 Jun 13 -3:30 i +0330/+0430 1977 O 20 24 -4 i +04/+05 1979 -3:30 i +0330/+0430 R IQ 1982 o - May 1 0 1 - R IQ 1982 1984 - O 1 0 0 - R IQ 1983 o - Mar 31 0 1 - @@ -666,10 +432,6 @@ R IQ 1985 1990 - S lastSu 1s 0 - R IQ 1986 1990 - Mar lastSu 1s 1 - R IQ 1991 2007 - Ap 1 3s 1 - R IQ 1991 2007 - O 1 3s 0 - -Z Asia/Baghdad 2:57:40 - LMT 1890 -2:57:36 - BMT 1918 -3 - +03 1982 May -3 IQ +03/+04 R Z 1940 o - May 31 24u 1 D R Z 1940 o - S 30 24u 0 S R Z 1940 o - N 16 24u 1 D @@ -755,15 +517,10 @@ R Z 2011 o - O 2 2 0 S R Z 2012 o - S 23 2 0 S R Z 2013 ma - Mar F>=23 2 1 D R Z 2013 ma - O lastSu 2 0 S -Z Asia/Jerusalem 2:20:54 - LMT 1880 -2:20:40 - JMT 1918 -2 Z I%sT R JP 1948 o - May Sa>=1 24 1 D R JP 1948 1951 - S Sa>=8 25 0 S R JP 1949 o - Ap Sa>=1 24 1 D R JP 1950 1951 - May Sa>=1 24 1 D -Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u -9 JP J%sT R J 1973 o - Jun 6 0 1 S R J 1973 1975 - O 1 0 0 - R J 1974 1977 - May 1 0 1 S @@ -796,83 +553,10 @@ R J 2013 o - D 20 0 0 - R J 2014 2021 - Mar lastTh 24 1 S R J 2014 2022 - O lastF 0s 0 - R J 2022 o - F lastTh 24 1 S -Z Asia/Amman 2:23:44 - LMT 1931 -2 J EE%sT 2022 O 28 0s -3 - +03 -Z Asia/Almaty 5:7:48 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2s -5 R +05/+06 1992 Ja 19 2s -6 R +06/+07 2004 O 31 2s -6 - +06 -Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1991 S 29 2s -5 R +05/+06 1992 Ja 19 2s -6 R +06/+07 1992 Mar 29 2s -5 R +05/+06 2004 O 31 2s -6 - +06 2018 D 21 -5 - +05 -Z Asia/Qostanay 4:14:28 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 2004 O 31 2s -6 - +06 -Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 2004 O 31 2s -5 - +05 -Z Asia/Aqtau 3:21:4 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 1994 S 25 2s -4 R +04/+05 2004 O 31 2s -5 - +05 -Z Asia/Atyrau 3:27:44 - LMT 1924 May 2 -3 - +03 1930 Jun 21 -5 - +05 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 1999 Mar 28 2s -4 R +04/+05 2004 O 31 2s -5 - +05 -Z Asia/Oral 3:25:24 - LMT 1924 May 2 -3 - +03 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1989 Mar 26 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 1992 Mar 29 2s -4 R +04/+05 2004 O 31 2s -5 - +05 R KG 1992 1996 - Ap Su>=7 0s 1 - R KG 1992 1996 - S lastSu 0 0 - R KG 1997 2005 - Mar lastSu 2:30 1 - R KG 1997 2004 - O lastSu 2:30 0 - -Z Asia/Bishkek 4:58:24 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2s -5 R +05/+06 1991 Au 31 2 -5 KG +05/+06 2005 Au 12 -6 - +06 R KR 1948 o - Jun 1 0 1 D R KR 1948 o - S 12 24 0 S R KR 1949 o - Ap 3 0 1 D @@ -887,18 +571,6 @@ R KR 1957 1960 - May Su>=1 0 1 D R KR 1957 1960 - S Sa>=17 24 0 S R KR 1987 1988 - May Su>=8 2 1 D R KR 1987 1988 - O Su>=8 3 0 S -Z Asia/Seoul 8:27:52 - LMT 1908 Ap -8:30 - KST 1912 -9 - JST 1945 S 8 -9 KR K%sT 1954 Mar 21 -8:30 KR K%sT 1961 Au 10 -9 KR K%sT -Z Asia/Pyongyang 8:23 - LMT 1908 Ap -8:30 - KST 1912 -9 - JST 1945 Au 24 -9 - KST 2015 Au 15 -8:30 - KST 2018 May 4 23:30 -9 - KST R l 1920 o - Mar 28 0 1 S R l 1920 o - O 25 0 0 - R l 1921 o - Ap 3 0 1 S @@ -923,18 +595,8 @@ R l 1992 o - O 4 0 0 - R l 1993 ma - Mar lastSu 0 1 S R l 1993 1998 - S lastSu 0 0 - R l 1999 ma - O lastSu 0 0 - -Z Asia/Beirut 2:22 - LMT 1880 -2 l EE%sT R NB 1935 1941 - S 14 0 0:20 - R NB 1935 1941 - D 14 0 0 - -Z Asia/Kuching 7:21:20 - LMT 1926 Mar -7:30 - +0730 1933 -8 NB +08/+0820 1942 F 16 -9 - +09 1945 S 12 -8 - +08 -Z Indian/Maldives 4:54 - LMT 1880 -4:54 - MMT 1960 -5 - +05 R X 1983 1984 - Ap 1 0 1 - R X 1983 o - O 1 0 0 - R X 1985 1998 - Mar lastSu 0 1 - @@ -944,31 +606,11 @@ R X 2001 2006 - S lastSa 2 0 - R X 2002 2006 - Mar lastSa 2 1 - R X 2015 2016 - Mar lastSa 2 1 - R X 2015 2016 - S lastSa 0 0 - -Z Asia/Hovd 6:6:36 - LMT 1905 Au -6 - +06 1978 -7 X +07/+08 -Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au -7 - +07 1978 -8 X +08/+09 -Z Asia/Choibalsan 7:38 - LMT 1905 Au -7 - +07 1978 -8 - +08 1983 Ap -9 X +09/+10 2008 Mar 31 -8 X +08/+09 -Z Asia/Kathmandu 5:41:16 - LMT 1920 -5:30 - +0530 1986 -5:45 - +0545 R PK 2002 o - Ap Su>=2 0 1 S R PK 2002 o - O Su>=2 0 0 - R PK 2008 o - Jun 1 0 1 S R PK 2008 2009 - N 1 0 0 - R PK 2009 o - Ap 15 0 1 S -Z Asia/Karachi 4:28:12 - LMT 1907 -5:30 - +0530 1942 S -5:30 1 +0630 1945 O 15 -5:30 - +0530 1951 S 30 -5 - +05 1971 Mar 26 -5 PK PK%sT R P 1999 2005 - Ap F>=15 0 1 S R P 1999 2003 - O F>=15 0 0 - R P 2004 o - O 1 1 0 - @@ -1001,136 +643,90 @@ R P 2021 o - O 29 1 0 - R P 2022 o - Mar 27 0 1 S R P 2022 2035 - O Sa<=30 2 0 - R P 2023 o - Ap 29 2 1 S -R P 2024 o - Ap 13 2 1 S -R P 2025 o - Ap 5 2 1 S +R P 2024 o - Ap 20 2 1 S +R P 2025 o - Ap 12 2 1 S R P 2026 2054 - Mar Sa<=30 2 1 S R P 2036 o - O 18 2 0 - R P 2037 o - O 10 2 0 - R P 2038 o - S 25 2 0 - R P 2039 o - S 17 2 0 - -R P 2039 o - O 22 2 1 S -R P 2039 2067 - O Sa<=30 2 0 - R P 2040 o - S 1 2 0 - -R P 2040 o - O 13 2 1 S +R P 2040 o - O 20 2 1 S +R P 2040 2067 - O Sa<=30 2 0 - R P 2041 o - Au 24 2 0 - -R P 2041 o - S 28 2 1 S +R P 2041 o - O 5 2 1 S R P 2042 o - Au 16 2 0 - -R P 2042 o - S 20 2 1 S +R P 2042 o - S 27 2 1 S R P 2043 o - Au 1 2 0 - -R P 2043 o - S 12 2 1 S +R P 2043 o - S 19 2 1 S R P 2044 o - Jul 23 2 0 - -R P 2044 o - Au 27 2 1 S +R P 2044 o - S 3 2 1 S R P 2045 o - Jul 15 2 0 - -R P 2045 o - Au 19 2 1 S +R P 2045 o - Au 26 2 1 S R P 2046 o - Jun 30 2 0 - -R P 2046 o - Au 11 2 1 S +R P 2046 o - Au 18 2 1 S R P 2047 o - Jun 22 2 0 - -R P 2047 o - Jul 27 2 1 S +R P 2047 o - Au 3 2 1 S R P 2048 o - Jun 6 2 0 - -R P 2048 o - Jul 18 2 1 S +R P 2048 o - Jul 25 2 1 S R P 2049 o - May 29 2 0 - -R P 2049 o - Jul 3 2 1 S +R P 2049 o - Jul 10 2 1 S R P 2050 o - May 21 2 0 - -R P 2050 o - Jun 25 2 1 S +R P 2050 o - Jul 2 2 1 S R P 2051 o - May 6 2 0 - -R P 2051 o - Jun 17 2 1 S +R P 2051 o - Jun 24 2 1 S R P 2052 o - Ap 27 2 0 - -R P 2052 o - Jun 1 2 1 S +R P 2052 o - Jun 8 2 1 S R P 2053 o - Ap 12 2 0 - -R P 2053 o - May 24 2 1 S +R P 2053 o - May 31 2 1 S R P 2054 o - Ap 4 2 0 - -R P 2054 o - May 16 2 1 S -R P 2055 o - May 1 2 1 S -R P 2056 o - Ap 22 2 1 S -R P 2057 o - Ap 7 2 1 S -R P 2058 ma - Mar Sa<=30 2 1 S +R P 2054 o - May 23 2 1 S +R P 2055 o - May 8 2 1 S +R P 2056 o - Ap 29 2 1 S +R P 2057 o - Ap 14 2 1 S +R P 2058 o - Ap 6 2 1 S +R P 2059 ma - Mar Sa<=30 2 1 S R P 2068 o - O 20 2 0 - R P 2069 o - O 12 2 0 - R P 2070 o - O 4 2 0 - R P 2071 o - S 19 2 0 - R P 2072 o - S 10 2 0 - -R P 2072 o - O 15 2 1 S +R P 2072 o - O 22 2 1 S +R P 2072 ma - O Sa<=30 2 0 - R P 2073 o - S 2 2 0 - -R P 2073 o - O 7 2 1 S +R P 2073 o - O 14 2 1 S R P 2074 o - Au 18 2 0 - -R P 2074 o - S 29 2 1 S +R P 2074 o - O 6 2 1 S R P 2075 o - Au 10 2 0 - -R P 2075 o - S 14 2 1 S -R P 2075 ma - O Sa<=30 2 0 - +R P 2075 o - S 21 2 1 S R P 2076 o - Jul 25 2 0 - -R P 2076 o - S 5 2 1 S +R P 2076 o - S 12 2 1 S R P 2077 o - Jul 17 2 0 - -R P 2077 o - Au 28 2 1 S +R P 2077 o - S 4 2 1 S R P 2078 o - Jul 9 2 0 - -R P 2078 o - Au 13 2 1 S +R P 2078 o - Au 20 2 1 S R P 2079 o - Jun 24 2 0 - -R P 2079 o - Au 5 2 1 S +R P 2079 o - Au 12 2 1 S R P 2080 o - Jun 15 2 0 - -R P 2080 o - Jul 20 2 1 S +R P 2080 o - Jul 27 2 1 S R P 2081 o - Jun 7 2 0 - -R P 2081 o - Jul 12 2 1 S +R P 2081 o - Jul 19 2 1 S R P 2082 o - May 23 2 0 - -R P 2082 o - Jul 4 2 1 S +R P 2082 o - Jul 11 2 1 S R P 2083 o - May 15 2 0 - -R P 2083 o - Jun 19 2 1 S +R P 2083 o - Jun 26 2 1 S R P 2084 o - Ap 29 2 0 - -R P 2084 o - Jun 10 2 1 S +R P 2084 o - Jun 17 2 1 S R P 2085 o - Ap 21 2 0 - -R P 2085 o - Jun 2 2 1 S +R P 2085 o - Jun 9 2 1 S R P 2086 o - Ap 13 2 0 - -R P 2086 o - May 18 2 1 S -Z Asia/Gaza 2:17:52 - LMT 1900 O -2 Z EET/EEST 1948 May 15 -2 K EE%sT 1967 Jun 5 -2 Z I%sT 1996 -2 J EE%sT 1999 -2 P EE%sT 2008 Au 29 -2 - EET 2008 S -2 P EE%sT 2010 -2 - EET 2010 Mar 27 0:1 -2 P EE%sT 2011 Au -2 - EET 2012 -2 P EE%sT -Z Asia/Hebron 2:20:23 - LMT 1900 O -2 Z EET/EEST 1948 May 15 -2 K EE%sT 1967 Jun 5 -2 Z I%sT 1996 -2 J EE%sT 1999 -2 P EE%sT +R P 2086 o - May 25 2 1 S R PH 1936 o - N 1 0 1 D R PH 1937 o - F 1 0 0 S R PH 1954 o - Ap 12 0 1 D R PH 1954 o - Jul 1 0 0 S R PH 1978 o - Mar 22 0 1 D R PH 1978 o - S 21 0 0 S -Z Asia/Manila -15:56 - LMT 1844 D 31 -8:4 - LMT 1899 May 11 -8 PH P%sT 1942 May -9 - JST 1944 N -8 PH P%sT -Z Asia/Qatar 3:26:8 - LMT 1920 -4 - +04 1972 Jun -3 - +03 -Z Asia/Riyadh 3:6:52 - LMT 1947 Mar 14 -3 - +03 -Z Asia/Singapore 6:55:25 - LMT 1901 -6:55:25 - SMT 1905 Jun -7 - +07 1933 -7 0:20 +0720 1936 -7:20 - +0720 1941 S -7:30 - +0730 1942 F 16 -9 - +09 1945 S 12 -7:30 - +0730 1981 D 31 16u -8 - +08 -Z Asia/Colombo 5:19:24 - LMT 1880 -5:19:32 - MMT 1906 -5:30 - +0530 1942 Ja 5 -5:30 0:30 +06 1942 S -5:30 1 +0630 1945 O 16 2 -5:30 - +0530 1996 May 25 -6:30 - +0630 1996 O 26 0:30 -6 - +06 2006 Ap 15 0:30 -5:30 - +0530 R S 1920 1923 - Ap Su>=15 2 1 S R S 1920 1923 - O Su>=1 2 0 - R S 1962 o - Ap 29 2 1 S @@ -1172,46 +768,6 @@ R S 2009 o - Mar lastF 0 1 S R S 2010 2011 - Ap F>=1 0 1 S R S 2012 2022 - Mar lastF 0 1 S R S 2009 2022 - O lastF 0 0 - -Z Asia/Damascus 2:25:12 - LMT 1920 -2 S EE%sT 2022 O 28 -3 - +03 -Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2s -5 1 +06 1991 S 9 2s -5 - +05 -Z Asia/Bangkok 6:42:4 - LMT 1880 -6:42:4 - BMT 1920 Ap -7 - +07 -Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 R +05/+06 1991 Mar 31 2 -4 R +04/+05 1992 Ja 19 2 -5 - +05 -Z Asia/Dubai 3:41:12 - LMT 1920 -4 - +04 -Z Asia/Samarkand 4:27:53 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1992 -5 - +05 -Z Asia/Tashkent 4:37:11 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2 -5 R +05/+06 1992 -5 - +05 -Z Asia/Ho_Chi_Minh 7:6:30 - LMT 1906 Jul -7:6:30 - PLMT 1911 May -7 - +07 1942 D 31 23 -8 - +08 1945 Mar 14 23 -9 - +09 1945 S 2 -7 - +07 1947 Ap -8 - +08 1955 Jul -7 - +07 1959 D 31 23 -8 - +08 1975 Jun 13 -7 - +07 R AU 1917 o - Ja 1 2s 1 D R AU 1917 o - Mar lastSu 2s 0 S R AU 1942 o - Ja 1 2s 1 D @@ -1219,9 +775,6 @@ R AU 1942 o - Mar lastSu 2s 0 S R AU 1942 o - S 27 2s 1 D R AU 1943 1944 - Mar lastSu 2s 0 S R AU 1943 o - O 3 2s 1 D -Z Australia/Darwin 8:43:20 - LMT 1895 F -9 - ACST 1899 May -9:30 AU AC%sT R AW 1974 o - O lastSu 2s 1 D R AW 1975 o - Mar Su>=1 2s 0 S R AW 1983 o - O lastSu 2s 1 D @@ -1231,25 +784,12 @@ R AW 1992 o - Mar Su>=1 2s 0 S R AW 2006 o - D 3 2s 1 D R AW 2007 2009 - Mar lastSu 2s 0 S R AW 2007 2008 - O lastSu 2s 1 D -Z Australia/Perth 7:43:24 - LMT 1895 D -8 AU AW%sT 1943 Jul -8 AW AW%sT -Z Australia/Eucla 8:35:28 - LMT 1895 D -8:45 AU +0845/+0945 1943 Jul -8:45 AW +0845/+0945 R AQ 1971 o - O lastSu 2s 1 D R AQ 1972 o - F lastSu 2s 0 S R AQ 1989 1991 - O lastSu 2s 1 D R AQ 1990 1992 - Mar Su>=1 2s 0 S R Ho 1992 1993 - O lastSu 2s 1 D R Ho 1993 1994 - Mar Su>=1 2s 0 S -Z Australia/Brisbane 10:12:8 - LMT 1895 -10 AU AE%sT 1971 -10 AQ AE%sT -Z Australia/Lindeman 9:55:56 - LMT 1895 -10 AU AE%sT 1971 -10 AQ AE%sT 1992 Jul -10 Ho AE%sT R AS 1971 1985 - O lastSu 2s 1 D R AS 1986 o - O 19 2s 1 D R AS 1987 2007 - O lastSu 2s 1 D @@ -1265,10 +805,6 @@ R AS 2006 o - Ap 2 2s 0 S R AS 2007 o - Mar lastSu 2s 0 S R AS 2008 ma - Ap Su>=1 2s 0 S R AS 2008 ma - O Su>=1 2s 1 D -Z Australia/Adelaide 9:14:20 - LMT 1895 F -9 - ACST 1899 May -9:30 AU AC%sT 1971 -9:30 AS AC%sT R AT 1916 o - O Su>=1 2s 1 D R AT 1917 o - Mar lastSu 2s 0 S R AT 1917 1918 - O Su>=22 2s 1 D @@ -1292,10 +828,6 @@ R AT 2001 ma - O Su>=1 2s 1 D R AT 2006 o - Ap Su>=1 2s 0 S R AT 2007 o - Mar lastSu 2s 0 S R AT 2008 ma - Ap Su>=1 2s 0 S -Z Australia/Hobart 9:49:16 - LMT 1895 S -10 AT AE%sT 1919 O 24 -10 AU AE%sT 1967 -10 AT AE%sT R AV 1971 1985 - O lastSu 2s 1 D R AV 1972 o - F lastSu 2s 0 S R AV 1973 1985 - Mar Su>=1 2s 0 S @@ -1310,9 +842,6 @@ R AV 2006 o - Ap Su>=1 2s 0 S R AV 2007 o - Mar lastSu 2s 0 S R AV 2008 ma - Ap Su>=1 2s 0 S R AV 2008 ma - O Su>=1 2s 1 D -Z Australia/Melbourne 9:39:52 - LMT 1895 F -10 AU AE%sT 1971 -10 AV AE%sT R AN 1971 1985 - O lastSu 2s 1 D R AN 1972 o - F 27 2s 0 S R AN 1973 1981 - Mar Su>=1 2s 0 S @@ -1329,15 +858,6 @@ R AN 2006 o - Ap Su>=1 2s 0 S R AN 2007 o - Mar lastSu 2s 0 S R AN 2008 ma - Ap Su>=1 2s 0 S R AN 2008 ma - O Su>=1 2s 1 D -Z Australia/Sydney 10:4:52 - LMT 1895 F -10 AU AE%sT 1971 -10 AN AE%sT -Z Australia/Broken_Hill 9:25:48 - LMT 1895 F -10 - AEST 1896 Au 23 -9 - ACST 1899 May -9:30 AU AC%sT 1971 -9:30 AN AC%sT 2000 -9:30 AS AC%sT R LH 1981 1984 - O lastSu 2 1 - R LH 1982 1985 - Mar Su>=1 2 0 - R LH 1985 o - O lastSu 2 0:30 - @@ -1352,19 +872,6 @@ R LH 2006 o - Ap Su>=1 2 0 - R LH 2007 o - Mar lastSu 2 0 - R LH 2008 ma - Ap Su>=1 2 0 - R LH 2008 ma - O Su>=1 2 0:30 - -Z Australia/Lord_Howe 10:36:20 - LMT 1895 F -10 - AEST 1981 Mar -10:30 LH +1030/+1130 1985 Jul -10:30 LH +1030/+11 -Z Antarctica/Macquarie 0 - -00 1899 N -10 - AEST 1916 O 1 2 -10 1 AEDT 1917 F -10 AU AE%sT 1919 Ap 1 0s -0 - -00 1948 Mar 25 -10 AU AE%sT 1967 -10 AT AE%sT 2010 -10 1 AEDT 2011 -10 AT AE%sT R FJ 1998 1999 - N Su>=1 2 1 - R FJ 1999 2000 - F lastSu 3 0 - R FJ 2009 o - N 29 2 1 - @@ -1377,14 +884,6 @@ R FJ 2014 2018 - N Su>=1 2 1 - R FJ 2015 2021 - Ja Su>=12 3 0 - R FJ 2019 o - N Su>=8 2 1 - R FJ 2020 o - D 20 2 1 - -Z Pacific/Fiji 11:55:44 - LMT 1915 O 26 -12 FJ +12/+13 -Z Pacific/Gambier -8:59:48 - LMT 1912 O --9 - -09 -Z Pacific/Marquesas -9:18 - LMT 1912 O --9:30 - -0930 -Z Pacific/Tahiti -9:58:16 - LMT 1912 O --10 - -10 R Gu 1959 o - Jun 27 2 1 D R Gu 1961 o - Ja 29 2 0 S R Gu 1967 o - S 1 2 1 D @@ -1399,50 +898,10 @@ R Gu 1976 o - May 26 2 1 D R Gu 1976 o - Au 22 2:1 0 S R Gu 1977 o - Ap 24 2 1 D R Gu 1977 o - Au 28 2 0 S -Z Pacific/Guam -14:21 - LMT 1844 D 31 -9:39 - LMT 1901 -10 - GST 1941 D 10 -9 - +09 1944 Jul 31 -10 Gu G%sT 2000 D 23 -10 - ChST -Z Pacific/Tarawa 11:32:4 - LMT 1901 -12 - +12 -Z Pacific/Kanton 0 - -00 1937 Au 31 --12 - -12 1979 O --11 - -11 1994 D 31 -13 - +13 -Z Pacific/Kiritimati -10:29:20 - LMT 1901 --10:40 - -1040 1979 O --10 - -10 1994 D 31 -14 - +14 -Z Pacific/Kwajalein 11:9:20 - LMT 1901 -11 - +11 1937 -10 - +10 1941 Ap -9 - +09 1944 F 6 -11 - +11 1969 O --12 - -12 1993 Au 20 24 -12 - +12 -Z Pacific/Kosrae -13:8:4 - LMT 1844 D 31 -10:51:56 - LMT 1901 -11 - +11 1914 O -9 - +09 1919 F -11 - +11 1937 -10 - +10 1941 Ap -9 - +09 1945 Au -11 - +11 1969 O -12 - +12 1999 -11 - +11 -Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15 -11:30 - +1130 1942 Au 29 -9 - +09 1945 S 8 -11:30 - +1130 1979 F 10 2 -12 - +12 R NC 1977 1978 - D Su>=1 0 1 - R NC 1978 1979 - F 27 0 0 - R NC 1996 o - D 1 2s 1 - R NC 1997 o - Mar 2 2s 0 - -Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13 -11 NC +11/+12 R NZ 1927 o - N 6 2 1 S R NZ 1928 o - Mar 4 2 0 M R NZ 1928 1933 - O Su>=8 2 0:30 S @@ -1468,80 +927,26 @@ R NZ 2007 ma - S lastSu 2s 1 D R k 2007 ma - S lastSu 2:45s 1 - R NZ 2008 ma - Ap Su>=1 2s 0 S R k 2008 ma - Ap Su>=1 2:45s 0 - -Z Pacific/Auckland 11:39:4 - LMT 1868 N 2 -11:30 NZ NZ%sT 1946 -12 NZ NZ%sT -Z Pacific/Chatham 12:13:48 - LMT 1868 N 2 -12:15 - +1215 1946 -12:45 k +1245/+1345 R CK 1978 o - N 12 0 0:30 - R CK 1979 1991 - Mar Su>=1 0 0 - R CK 1979 1990 - O lastSu 0 0:30 - -Z Pacific/Rarotonga 13:20:56 - LMT 1899 D 26 --10:39:4 - LMT 1952 O 16 --10:30 - -1030 1978 N 12 --10 CK -10/-0930 -Z Pacific/Niue -11:19:40 - LMT 1952 O 16 --11:20 - -1120 1964 Jul --11 - -11 -Z Pacific/Norfolk 11:11:52 - LMT 1901 -11:12 - +1112 1951 -11:30 - +1130 1974 O 27 2s -11:30 1 +1230 1975 Mar 2 2s -11:30 - +1130 2015 O 4 2s -11 - +11 2019 Jul -11 AN +11/+12 -Z Pacific/Palau -15:2:4 - LMT 1844 D 31 -8:57:56 - LMT 1901 -9 - +09 -Z Pacific/Port_Moresby 9:48:40 - LMT 1880 -9:48:32 - PMMT 1895 -10 - +10 -Z Pacific/Bougainville 10:22:16 - LMT 1880 -9:48:32 - PMMT 1895 -10 - +10 1942 Jul -9 - +09 1945 Au 21 -10 - +10 2014 D 28 2 -11 - +11 -Z Pacific/Pitcairn -8:40:20 - LMT 1901 --8:30 - -0830 1998 Ap 27 --8 - -08 -Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5 --11:22:48 - LMT 1911 --11 - SST R WS 2010 o - S lastSu 0 1 - R WS 2011 o - Ap Sa>=1 4 0 - R WS 2011 o - S lastSa 3 1 - R WS 2012 2021 - Ap Su>=1 4 0 - R WS 2012 2020 - S lastSu 3 1 - -Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5 --11:26:56 - LMT 1911 --11:30 - -1130 1950 --11 WS -11/-10 2011 D 29 24 -13 WS +13/+14 -Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O -11 - +11 -Z Pacific/Fakaofo -11:24:56 - LMT 1901 --11 - -11 2011 D 30 -13 - +13 R TO 1999 o - O 7 2s 1 - R TO 2000 o - Mar 19 2s 0 - R TO 2000 2001 - N Su>=1 2 1 - R TO 2001 2002 - Ja lastSu 2 0 - R TO 2016 o - N Su>=1 2 1 - R TO 2017 o - Ja Su>=15 3 0 - -Z Pacific/Tongatapu 12:19:12 - LMT 1945 S 10 -12:20 - +1220 1961 -13 - +13 1999 -13 TO +13/+14 R VU 1973 o - D 22 12u 1 - R VU 1974 o - Mar 30 12u 0 - R VU 1983 1991 - S Sa>=22 24 1 - R VU 1984 1991 - Mar Sa>=22 24 0 - R VU 1992 1993 - Ja Sa>=22 24 0 - R VU 1992 o - O Sa>=22 24 1 - -Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13 -11 VU +11/+12 R G 1916 o - May 21 2s 1 BST R G 1916 o - O 1 2s 0 GMT R G 1917 o - Ap 8 2s 1 BST @@ -1607,11 +1012,6 @@ R G 1972 1980 - O Su>=23 2s 0 GMT R G 1981 1995 - Mar lastSu 1u 1 BST R G 1981 1989 - O Su>=23 1u 0 GMT R G 1990 1995 - O Su>=22 1u 0 GMT -Z Europe/London -0:1:15 - LMT 1847 D -0 G %s 1968 O 27 -1 - BST 1971 O 31 2u -0 G %s 1996 -0 E GMT/BST R IE 1971 o - O 31 2u -1 - R IE 1972 1980 - Mar Su>=16 2u 0 - R IE 1972 1980 - O Su>=23 2u -1 - @@ -1619,17 +1019,6 @@ R IE 1981 ma - Mar lastSu 1u 0 - R IE 1981 1989 - O Su>=23 1u -1 - R IE 1990 1995 - O Su>=22 1u -1 - R IE 1996 ma - O lastSu 1u -1 - -Z Europe/Dublin -0:25:21 - LMT 1880 Au 2 --0:25:21 - DMT 1916 May 21 2s --0:25:21 1 IST 1916 O 1 2s -0 G %s 1921 D 6 -0 G GMT/IST 1940 F 25 2s -0 1 IST 1946 O 6 2s -0 - GMT 1947 Mar 16 2s -0 1 IST 1947 N 2 2s -0 - GMT 1948 Ap 18 2s -0 G GMT/IST 1968 O 27 -1 IE IST/GMT R E 1977 1980 - Ap Su>=1 1u 1 S R E 1977 o - S lastSu 1u 0 - R E 1978 o - O 1 1u 0 - @@ -1681,10 +1070,6 @@ R R 1981 1983 - O 1 0 0 - R R 1984 1995 - S lastSu 2s 0 - R R 1985 2010 - Mar lastSu 2s 1 S R R 1996 2010 - O lastSu 2s 0 - -Z WET 0 E WE%sT -Z CET 1 c CE%sT -Z MET 1 c ME%sT -Z EET 2 E EE%sT R q 1940 o - Jun 16 0 1 S R q 1942 o - N 2 3 0 - R q 1943 o - Mar 29 2 1 S @@ -1710,14 +1095,6 @@ R q 1982 o - O 3 0 0 - R q 1983 o - Ap 18 0 1 S R q 1983 o - O 1 0 0 - R q 1984 o - Ap 1 0 1 S -Z Europe/Tirane 1:19:20 - LMT 1914 -1 - CET 1940 Jun 16 -1 q CE%sT 1984 Jul -1 E CE%sT -Z Europe/Andorra 0:6:4 - LMT 1901 -0 - WET 1946 S 30 -1 - CET 1985 Mar 31 2 -1 E CE%sT R a 1920 o - Ap 5 2s 1 S R a 1920 o - S 13 2s 0 - R a 1946 o - Ap 14 2s 1 S @@ -1727,23 +1104,6 @@ R a 1947 o - Ap 6 2s 1 S R a 1948 o - Ap 18 2s 1 S R a 1980 o - Ap 6 0 1 S R a 1980 o - S 28 0 0 - -Z Europe/Vienna 1:5:21 - LMT 1893 Ap -1 c CE%sT 1920 -1 a CE%sT 1940 Ap 1 2s -1 c CE%sT 1945 Ap 2 2s -1 1 CEST 1945 Ap 12 2s -1 - CET 1946 -1 a CE%sT 1981 -1 E CE%sT -Z Europe/Minsk 1:50:16 - LMT 1880 -1:50 - MMT 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 Jun 28 -1 c CE%sT 1944 Jul 3 -3 R MSK/MSD 1990 -3 - MSK 1991 Mar 31 2s -2 R EE%sT 2011 Mar 27 2s -3 - +03 R b 1918 o - Mar 9 0s 1 S R b 1918 1919 - O Sa>=1 23s 0 - R b 1919 o - Mar 1 23s 1 S @@ -1778,87 +1138,27 @@ R b 1945 o - Ap 2 2s 1 S R b 1945 o - S 16 2s 0 - R b 1946 o - May 19 2s 1 S R b 1946 o - O 7 2s 0 - -Z Europe/Brussels 0:17:30 - LMT 1880 -0:17:30 - BMT 1892 May 1 0:17:30 -0 - WET 1914 N 8 -1 - CET 1916 May -1 c CE%sT 1918 N 11 11u -0 b WE%sT 1940 May 20 2s -1 c CE%sT 1944 S 3 -1 b CE%sT 1977 -1 E CE%sT R BG 1979 o - Mar 31 23 1 S R BG 1979 o - O 1 1 0 - R BG 1980 1982 - Ap Sa>=1 23 1 S R BG 1980 o - S 29 1 0 - R BG 1981 o - S 27 2 0 - -Z Europe/Sofia 1:33:16 - LMT 1880 -1:56:56 - IMT 1894 N 30 -2 - EET 1942 N 2 3 -1 c CE%sT 1945 -1 - CET 1945 Ap 2 3 -2 - EET 1979 Mar 31 23 -2 BG EE%sT 1982 S 26 3 -2 c EE%sT 1991 -2 e EE%sT 1997 -2 E EE%sT R CZ 1945 o - Ap M>=1 2s 1 S R CZ 1945 o - O 1 2s 0 - R CZ 1946 o - May 6 2s 1 S R CZ 1946 1949 - O Su>=1 2s 0 - R CZ 1947 1948 - Ap Su>=15 2s 1 S R CZ 1949 o - Ap 9 2s 1 S -Z Europe/Prague 0:57:44 - LMT 1850 -0:57:44 - PMT 1891 O -1 c CE%sT 1945 May 9 -1 CZ CE%sT 1946 D 1 3 -1 -1 GMT 1947 F 23 2 -1 CZ CE%sT 1979 -1 E CE%sT -Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11 -0 - WET 1981 -0 E WE%sT R Th 1991 1992 - Mar lastSu 2 1 D R Th 1991 1992 - S lastSu 2 0 S R Th 1993 2006 - Ap Su>=1 2 1 D R Th 1993 2006 - O lastSu 2 0 S R Th 2007 ma - Mar Su>=8 2 1 D R Th 2007 ma - N Su>=1 2 0 S -Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28 --3 - -03 1980 Ap 6 2 --3 E -03/-02 1996 -0 - GMT -Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 --2 - -02 1980 Ap 6 2 --2 c -02/-01 1981 Mar 29 --1 E -01/+00 -Z America/Nuuk -3:26:56 - LMT 1916 Jul 28 --3 - -03 1980 Ap 6 2 --3 E -03/-02 2023 O 29 1u --2 E -02/-01 -Z America/Thule -4:35:8 - LMT 1916 Jul 28 --4 Th A%sT -Z Europe/Tallinn 1:39 - LMT 1880 -1:39 - TMT 1918 F -1 c CE%sT 1919 Jul -1:39 - TMT 1921 May -2 - EET 1940 Au 6 -3 - MSK 1941 S 15 -1 c CE%sT 1944 S 22 -3 R MSK/MSD 1989 Mar 26 2s -2 1 EEST 1989 S 24 2s -2 c EE%sT 1998 S 22 -2 E EE%sT 1999 O 31 4 -2 - EET 2002 F 21 -2 E EE%sT R FI 1942 o - Ap 2 24 1 S R FI 1942 o - O 4 1 0 - R FI 1981 1982 - Mar lastSu 2 1 S R FI 1981 1982 - S lastSu 3 0 - -Z Europe/Helsinki 1:39:49 - LMT 1878 May 31 -1:39:49 - HMT 1921 May -2 FI EE%sT 1983 -2 E EE%sT R F 1916 o - Jun 14 23s 1 S R F 1916 1919 - O Su>=1 23s 0 - R F 1917 o - Mar 24 23s 1 S @@ -1901,13 +1201,6 @@ R F 1945 o - Ap 2 2 2 M R F 1945 o - S 16 3 0 - R F 1976 o - Mar 28 1 1 S R F 1976 o - S 26 1 0 - -Z Europe/Paris 0:9:21 - LMT 1891 Mar 16 -0:9:21 - PMT 1911 Mar 11 -0 F WE%sT 1940 Jun 14 23 -1 c CE%sT 1944 Au 25 -0 F WE%sT 1945 S 16 3 -1 F CE%sT 1977 -1 E CE%sT R DE 1946 o - Ap 14 2s 1 S R DE 1946 o - O 7 2s 0 - R DE 1947 1949 - O Su>=1 2s 0 - @@ -1919,15 +1212,6 @@ R DE 1949 o - Ap 10 2s 1 S R So 1945 o - May 24 2 2 M R So 1945 o - S 24 3 1 S R So 1945 o - N 18 2s 0 - -Z Europe/Berlin 0:53:28 - LMT 1893 Ap -1 c CE%sT 1945 May 24 2 -1 So CE%sT 1946 -1 DE CE%sT 1980 -1 E CE%sT -Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2 -0 G %s 1957 Ap 14 2 -1 - CET 1982 -1 E CE%sT R g 1932 o - Jul 7 0 1 S R g 1932 o - S 1 0 0 - R g 1941 o - Ap 7 0 1 S @@ -1947,12 +1231,6 @@ R g 1979 o - Ap 1 9 1 S R g 1979 o - S 29 2 0 - R g 1980 o - Ap 1 0 1 S R g 1980 o - S 28 0 0 - -Z Europe/Athens 1:34:52 - LMT 1895 S 14 -1:34:52 - AMT 1916 Jul 28 0:1 -2 g EE%sT 1941 Ap 30 -1 g CE%sT 1944 Ap 4 -2 g EE%sT 1981 -2 E EE%sT R h 1918 1919 - Ap 15 2 1 S R h 1918 1920 - S M>=15 3 0 - R h 1920 o - Ap 5 2 1 S @@ -1972,12 +1250,6 @@ R h 1980 o - Ap 6 0 1 S R h 1980 o - S 28 1 0 - R h 1981 1983 - Mar lastSu 0 1 S R h 1981 1983 - S lastSu 1 0 - -Z Europe/Budapest 1:16:20 - LMT 1890 N -1 c CE%sT 1918 -1 h CE%sT 1941 Ap 7 23 -1 c CE%sT 1945 -1 h CE%sT 1984 -1 E CE%sT R I 1916 o - Jun 3 24 1 S R I 1916 1917 - S 30 24 0 - R I 1917 o - Mar 31 24 1 S @@ -2019,44 +1291,8 @@ R I 1976 o - May 30 0s 1 S R I 1977 1979 - May Su>=22 0s 1 S R I 1978 o - O 1 0s 0 - R I 1979 o - S 30 0s 0 - -Z Europe/Rome 0:49:56 - LMT 1866 D 12 -0:49:56 - RMT 1893 O 31 23u -1 I CE%sT 1943 S 10 -1 c CE%sT 1944 Jun 4 -1 I CE%sT 1980 -1 E CE%sT R LV 1989 1996 - Mar lastSu 2s 1 S R LV 1989 1996 - S lastSu 2s 0 - -Z Europe/Riga 1:36:34 - LMT 1880 -1:36:34 - RMT 1918 Ap 15 2 -1:36:34 1 LST 1918 S 16 3 -1:36:34 - RMT 1919 Ap 1 2 -1:36:34 1 LST 1919 May 22 3 -1:36:34 - RMT 1926 May 11 -2 - EET 1940 Au 5 -3 - MSK 1941 Jul -1 c CE%sT 1944 O 13 -3 R MSK/MSD 1989 Mar lastSu 2s -2 1 EEST 1989 S lastSu 2s -2 LV EE%sT 1997 Ja 21 -2 E EE%sT 2000 F 29 -2 - EET 2001 Ja 2 -2 E EE%sT -Z Europe/Vilnius 1:41:16 - LMT 1880 -1:24 - WMT 1917 -1:35:36 - KMT 1919 O 10 -1 - CET 1920 Jul 12 -2 - EET 1920 O 9 -1 - CET 1940 Au 3 -3 - MSK 1941 Jun 24 -1 c CE%sT 1944 Au -3 R MSK/MSD 1989 Mar 26 2s -2 R EE%sT 1991 S 29 2s -2 c EE%sT 1998 -2 - EET 1998 Mar 29 1u -1 E CE%sT 1999 O 31 1u -2 - EET 2003 -2 E EE%sT R MT 1973 o - Mar 31 0s 1 S R MT 1973 o - S 29 0s 0 - R MT 1974 o - Ap 21 0s 1 S @@ -2064,22 +1300,8 @@ R MT 1974 o - S 16 0s 0 - R MT 1975 1979 - Ap Su>=15 2 1 S R MT 1975 1980 - S Su>=15 2 0 - R MT 1980 o - Mar 31 2 1 S -Z Europe/Malta 0:58:4 - LMT 1893 N 2 -1 I CE%sT 1973 Mar 31 -1 MT CE%sT 1981 -1 E CE%sT R MD 1997 ma - Mar lastSu 2 1 S R MD 1997 ma - O lastSu 3 0 - -Z Europe/Chisinau 1:55:20 - LMT 1880 -1:55 - CMT 1918 F 15 -1:44:24 - BMT 1931 Jul 24 -2 z EE%sT 1940 Au 15 -2 1 EEST 1941 Jul 17 -1 c CE%sT 1944 Au 24 -3 R MSK/MSD 1990 May 6 2 -2 R EE%sT 1992 -2 e EE%sT 1997 -2 MD EE%sT R O 1918 1919 - S 16 2s 0 - R O 1919 o - Ap 15 2s 1 S R O 1944 o - Ap 3 2s 1 S @@ -2100,15 +1322,6 @@ R O 1959 1961 - O Su>=1 1s 0 - R O 1960 o - Ap 3 1s 1 S R O 1961 1964 - May lastSu 1s 1 S R O 1962 1964 - S lastSu 1s 0 - -Z Europe/Warsaw 1:24 - LMT 1880 -1:24 - WMT 1915 Au 5 -1 c CE%sT 1918 S 16 3 -2 O EE%sT 1922 Jun -1 O CE%sT 1940 Jun 23 2 -1 c CE%sT 1944 O -1 O CE%sT 1977 -1 W- CE%sT 1988 -1 E CE%sT R p 1916 o - Jun 17 23 1 S R p 1916 o - N 1 1 0 - R p 1917 o - F 28 23s 1 S @@ -2157,42 +1370,6 @@ R p 1979 1982 - S lastSu 1s 0 - R p 1980 o - Mar lastSu 0s 1 S R p 1981 1982 - Mar lastSu 1s 1 S R p 1983 o - Mar lastSu 2s 1 S -Z Europe/Lisbon -0:36:45 - LMT 1884 --0:36:45 - LMT 1912 Ja 1 0u -0 p WE%sT 1966 Ap 3 2 -1 - CET 1976 S 26 1 -0 p WE%sT 1983 S 25 1s -0 W- WE%sT 1992 S 27 1s -1 E CE%sT 1996 Mar 31 1u -0 E WE%sT -Z Atlantic/Azores -1:42:40 - LMT 1884 --1:54:32 - HMT 1912 Ja 1 2u --2 p -02/-01 1942 Ap 25 22s --2 p +00 1942 Au 15 22s --2 p -02/-01 1943 Ap 17 22s --2 p +00 1943 Au 28 22s --2 p -02/-01 1944 Ap 22 22s --2 p +00 1944 Au 26 22s --2 p -02/-01 1945 Ap 21 22s --2 p +00 1945 Au 25 22s --2 p -02/-01 1966 Ap 3 2 --1 p -01/+00 1983 S 25 1s --1 W- -01/+00 1992 S 27 1s -0 E WE%sT 1993 Mar 28 1u --1 E -01/+00 -Z Atlantic/Madeira -1:7:36 - LMT 1884 --1:7:36 - FMT 1912 Ja 1 1u --1 p -01/+00 1942 Ap 25 22s --1 p +01 1942 Au 15 22s --1 p -01/+00 1943 Ap 17 22s --1 p +01 1943 Au 28 22s --1 p -01/+00 1944 Ap 22 22s --1 p +01 1944 Au 26 22s --1 p -01/+00 1945 Ap 21 22s --1 p +01 1945 Au 25 22s --1 p -01/+00 1966 Ap 3 2 -0 p WE%sT 1983 S 25 1s -0 E WE%sT R z 1932 o - May 21 0s 1 S R z 1932 1939 - O Su>=1 0s 0 - R z 1933 1939 - Ap Su>=2 0s 1 S @@ -2202,252 +1379,6 @@ R z 1980 o - Ap 5 23 1 S R z 1980 o - S lastSu 1 0 - R z 1991 1993 - Mar lastSu 0s 1 S R z 1991 1993 - S lastSu 0s 0 - -Z Europe/Bucharest 1:44:24 - LMT 1891 O -1:44:24 - BMT 1931 Jul 24 -2 z EE%sT 1981 Mar 29 2s -2 c EE%sT 1991 -2 z EE%sT 1994 -2 e EE%sT 1997 -2 E EE%sT -Z Europe/Kaliningrad 1:22 - LMT 1893 Ap -1 c CE%sT 1945 Ap 10 -2 O EE%sT 1946 Ap 7 -3 R MSK/MSD 1989 Mar 26 2s -2 R EE%sT 2011 Mar 27 2s -3 - +03 2014 O 26 2s -2 - EET -Z Europe/Moscow 2:30:17 - LMT 1880 -2:30:17 - MMT 1916 Jul 3 -2:31:19 R %s 1919 Jul 1 0u -3 R %s 1921 O -3 R MSK/MSD 1922 O -2 - EET 1930 Jun 21 -3 R MSK/MSD 1991 Mar 31 2s -2 R EE%sT 1992 Ja 19 2s -3 R MSK/MSD 2011 Mar 27 2s -4 - MSK 2014 O 26 2s -3 - MSK -Z Europe/Simferopol 2:16:24 - LMT 1880 -2:16 - SMT 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 N -1 c CE%sT 1944 Ap 13 -3 R MSK/MSD 1990 -3 - MSK 1990 Jul 1 2 -2 - EET 1992 Mar 20 -2 c EE%sT 1994 May -3 c MSK/MSD 1996 Mar 31 0s -3 1 MSD 1996 O 27 3s -3 - MSK 1997 Mar lastSu 1u -2 E EE%sT 2014 Mar 30 2 -4 - MSK 2014 O 26 2s -3 - MSK -Z Europe/Astrakhan 3:12:12 - LMT 1924 May -3 - +03 1930 Jun 21 -4 R +04/+05 1989 Mar 26 2s -3 R +03/+04 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 R +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 2016 Mar 27 2s -4 - +04 -Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3 -3 - +03 1930 Jun 21 -4 - +04 1961 N 11 -4 R +04/+05 1988 Mar 27 2s -3 R MSK/MSD 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 R MSK/MSD 2011 Mar 27 2s -4 - MSK 2014 O 26 2s -3 - MSK 2018 O 28 2s -4 - +04 2020 D 27 2s -3 - MSK -Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 R +04/+05 1988 Mar 27 2s -3 R +03/+04 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 R +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 2016 D 4 2s -4 - +04 -Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 R +04/+05 1989 Mar 26 2s -3 R MSK/MSD 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 R MSK/MSD 2011 Mar 27 2s -4 - MSK 2014 O 26 2s -3 - MSK -Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 - +04 1935 Ja 27 -4 R +04/+05 1989 Mar 26 2s -3 R +03/+04 1991 Mar 31 2s -2 R +02/+03 1991 S 29 2s -3 - +03 1991 O 20 3 -4 R +04/+05 2010 Mar 28 2s -3 R +03/+04 2011 Mar 27 2s -4 - +04 -Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 R +04/+05 1989 Mar 26 2s -3 R +03/+04 1991 Mar 31 2s -2 R +02/+03 1992 Ja 19 2s -3 R +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 2016 Mar 27 2s -4 - +04 -Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3 -3:45:5 - PMT 1919 Jul 15 4 -4 - +04 1930 Jun 21 -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 2011 Mar 27 2s -6 - +06 2014 O 26 2s -5 - +05 -Z Asia/Omsk 4:53:30 - LMT 1919 N 14 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2s -5 R +05/+06 1992 Ja 19 2s -6 R +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 -Z Asia/Barnaul 5:35 - LMT 1919 D 10 -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 1995 May 28 -6 R +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 2016 Mar 27 2s -7 - +07 -Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6 -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 1993 May 23 -6 R +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 2016 Jul 24 2s -7 - +07 -Z Asia/Tomsk 5:39:51 - LMT 1919 D 22 -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 2002 May 1 3 -6 R +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 2016 May 29 2s -7 - +07 -Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 2010 Mar 28 2s -6 R +06/+07 2011 Mar 27 2s -7 - +07 -Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6 -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 2011 Mar 27 2s -8 - +08 2014 O 26 2s -7 - +07 -Z Asia/Irkutsk 6:57:5 - LMT 1880 -6:57:5 - IMT 1920 Ja 25 -7 - +07 1930 Jun 21 -8 R +08/+09 1991 Mar 31 2s -7 R +07/+08 1992 Ja 19 2s -8 R +08/+09 2011 Mar 27 2s -9 - +09 2014 O 26 2s -8 - +08 -Z Asia/Chita 7:33:52 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 R +09/+10 1991 Mar 31 2s -8 R +08/+09 1992 Ja 19 2s -9 R +09/+10 2011 Mar 27 2s -10 - +10 2014 O 26 2s -8 - +08 2016 Mar 27 2 -9 - +09 -Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 R +09/+10 1991 Mar 31 2s -8 R +08/+09 1992 Ja 19 2s -9 R +09/+10 2011 Mar 27 2s -10 - +10 2014 O 26 2s -9 - +09 -Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15 -9 - +09 1930 Jun 21 -10 R +10/+11 1991 Mar 31 2s -9 R +09/+10 1992 Ja 19 2s -10 R +10/+11 2011 Mar 27 2s -11 - +11 2014 O 26 2s -10 - +10 -Z Asia/Khandyga 9:2:13 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 R +09/+10 1991 Mar 31 2s -8 R +08/+09 1992 Ja 19 2s -9 R +09/+10 2004 -10 R +10/+11 2011 Mar 27 2s -11 - +11 2011 S 13 0s -10 - +10 2014 O 26 2s -9 - +09 -Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23 -9 - +09 1945 Au 25 -11 R +11/+12 1991 Mar 31 2s -10 R +10/+11 1992 Ja 19 2s -11 R +11/+12 1997 Mar lastSu 2s -10 R +10/+11 2011 Mar 27 2s -11 - +11 2014 O 26 2s -10 - +10 2016 Mar 27 2s -11 - +11 -Z Asia/Magadan 10:3:12 - LMT 1924 May 2 -10 - +10 1930 Jun 21 -11 R +11/+12 1991 Mar 31 2s -10 R +10/+11 1992 Ja 19 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 2014 O 26 2s -10 - +10 2016 Ap 24 2s -11 - +11 -Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2 -10 - +10 1930 Jun 21 -11 R +11/+12 1991 Mar 31 2s -10 R +10/+11 1992 Ja 19 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 2014 O 26 2s -11 - +11 -Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 R +09/+10 1981 Ap -11 R +11/+12 1991 Mar 31 2s -10 R +10/+11 1992 Ja 19 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 2011 S 13 0s -11 - +11 2014 O 26 2s -10 - +10 -Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10 -11 - +11 1930 Jun 21 -12 R +12/+13 1991 Mar 31 2s -11 R +11/+12 1992 Ja 19 2s -12 R +12/+13 2010 Mar 28 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 -Z Asia/Anadyr 11:49:56 - LMT 1924 May 2 -12 - +12 1930 Jun 21 -13 R +13/+14 1982 Ap 1 0s -12 R +12/+13 1991 Mar 31 2s -11 R +11/+12 1992 Ja 19 2s -12 R +12/+13 2010 Mar 28 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 -Z Europe/Belgrade 1:22 - LMT 1884 -1 - CET 1941 Ap 18 23 -1 c CE%sT 1945 -1 - CET 1945 May 8 2s -1 1 CEST 1945 S 16 2s -1 - CET 1982 N 27 -1 E CE%sT R s 1918 o - Ap 15 23 1 S R s 1918 1919 - O 6 24s 0 - R s 1919 o - Ap 6 23 1 S @@ -2487,30 +1418,8 @@ R Sp 1976 o - Au 1 0 0 - R Sp 1977 o - S 28 0 0 - R Sp 1978 o - Jun 1 0 1 S R Sp 1978 o - Au 4 0 0 - -Z Europe/Madrid -0:14:44 - LMT 1901 Ja 1 0u -0 s WE%sT 1940 Mar 16 23 -1 s CE%sT 1979 -1 E CE%sT -Z Africa/Ceuta -0:21:16 - LMT 1901 Ja 1 0u -0 - WET 1918 May 6 23 -0 1 WEST 1918 O 7 23 -0 - WET 1924 -0 s WE%sT 1929 -0 - WET 1967 -0 Sp WE%sT 1984 Mar 16 -1 - CET 1986 -1 E CE%sT -Z Atlantic/Canary -1:1:36 - LMT 1922 Mar --1 - -01 1946 S 30 1 -0 - WET 1980 Ap 6 0s -0 1 WEST 1980 S 28 1u -0 E WE%sT R CH 1941 1942 - May M>=1 1 1 S R CH 1941 1942 - O M>=1 2 0 - -Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16 -0:29:46 - BMT 1894 Jun -1 CH CE%sT 1981 -1 E CE%sT R T 1916 o - May 1 0 1 S R T 1916 o - O 1 0 0 - R T 1920 o - Mar 28 0 1 S @@ -2556,28 +1465,6 @@ R T 1986 1995 - S lastSu 1s 0 - R T 1994 o - Mar 20 1s 1 S R T 1995 2006 - Mar lastSu 1s 1 S R T 1996 2006 - O lastSu 1s 0 - -Z Europe/Istanbul 1:55:52 - LMT 1880 -1:56:56 - IMT 1910 O -2 T EE%sT 1978 Jun 29 -3 T +03/+04 1984 N 1 2 -2 T EE%sT 2007 -2 E EE%sT 2011 Mar 27 1u -2 - EET 2011 Mar 28 1u -2 E EE%sT 2014 Mar 30 1u -2 - EET 2014 Mar 31 1u -2 E EE%sT 2015 O 25 1u -2 1 EEST 2015 N 8 1u -2 E EE%sT 2016 S 7 -3 - +03 -Z Europe/Kyiv 2:2:4 - LMT 1880 -2:2:4 - KMT 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 S 20 -1 c CE%sT 1943 N 6 -3 R MSK/MSD 1990 Jul 1 2 -2 1 EEST 1991 S 29 3 -2 c EE%sT 1996 May 13 -2 E EE%sT R u 1918 1919 - Mar lastSu 2 1 D R u 1918 1919 - O lastSu 2 0 S R u 1942 o - F 9 2 1 W @@ -2591,172 +1478,34 @@ R u 1976 1986 - Ap lastSu 2 1 D R u 1987 2006 - Ap Su>=1 2 1 D R u 2007 ma - Mar Su>=8 2 1 D R u 2007 ma - N Su>=1 2 0 S -Z EST -5 - EST -Z MST -7 - MST -Z HST -10 - HST -Z EST5EDT -5 u E%sT -Z CST6CDT -6 u C%sT -Z MST7MDT -7 u M%sT -Z PST8PDT -8 u P%sT R NY 1920 o - Mar lastSu 2 1 D R NY 1920 o - O lastSu 2 0 S R NY 1921 1966 - Ap lastSu 2 1 D R NY 1921 1954 - S lastSu 2 0 S R NY 1955 1966 - O lastSu 2 0 S -Z America/New_York -4:56:2 - LMT 1883 N 18 17u --5 u E%sT 1920 --5 NY E%sT 1942 --5 u E%sT 1946 --5 NY E%sT 1967 --5 u E%sT R Ch 1920 o - Jun 13 2 1 D R Ch 1920 1921 - O lastSu 2 0 S R Ch 1921 o - Mar lastSu 2 1 D R Ch 1922 1966 - Ap lastSu 2 1 D R Ch 1922 1954 - S lastSu 2 0 S R Ch 1955 1966 - O lastSu 2 0 S -Z America/Chicago -5:50:36 - LMT 1883 N 18 18u --6 u C%sT 1920 --6 Ch C%sT 1936 Mar 1 2 --5 - EST 1936 N 15 2 --6 Ch C%sT 1942 --6 u C%sT 1946 --6 Ch C%sT 1967 --6 u C%sT -Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 19u --7 u M%sT 1992 O 25 2 --6 u C%sT -Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 19u --7 u M%sT 2003 O 26 2 --6 u C%sT -Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 19u --7 u M%sT 2010 N 7 2 --6 u C%sT R De 1920 1921 - Mar lastSu 2 1 D R De 1920 o - O lastSu 2 0 S R De 1921 o - May 22 2 0 S R De 1965 1966 - Ap lastSu 2 1 D R De 1965 1966 - O lastSu 2 0 S -Z America/Denver -6:59:56 - LMT 1883 N 18 19u --7 u M%sT 1920 --7 De M%sT 1942 --7 u M%sT 1946 --7 De M%sT 1967 --7 u M%sT R CA 1948 o - Mar 14 2:1 1 D R CA 1949 o - Ja 1 2 0 S R CA 1950 1966 - Ap lastSu 1 1 D R CA 1950 1961 - S lastSu 2 0 S R CA 1962 1966 - O lastSu 2 0 S -Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 20u --8 u P%sT 1946 --8 CA P%sT 1967 --8 u P%sT -Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32 --8:57:41 - LMT 1900 Au 20 12 --8 - PST 1942 --8 u P%sT 1946 --8 - PST 1969 --8 u P%sT 1980 Ap 27 2 --9 u Y%sT 1980 O 26 2 --8 u P%sT 1983 O 30 2 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30 --9:1:13 - LMT 1900 Au 20 12 --8 - PST 1942 --8 u P%sT 1946 --8 - PST 1969 --8 u P%sT 1983 O 30 2 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55 --8:46:18 - LMT 1900 Au 20 12 --8 - PST 1942 --8 u P%sT 1946 --8 - PST 1969 --8 u P%sT 1983 O 30 2 --8 - PST 2015 N 1 2 --9 u AK%sT 2018 N 4 2 --8 - PST 2019 Ja 20 2 --9 u AK%sT -Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18 --9:18:55 - LMT 1900 Au 20 12 --9 - YST 1942 --9 u Y%sT 1946 --9 - YST 1969 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37 --9:59:36 - LMT 1900 Au 20 12 --10 - AST 1942 --10 u A%sT 1967 Ap --10 - AHST 1969 --10 u AH%sT 1983 O 30 2 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35 --11:1:38 - LMT 1900 Au 20 12 --11 - NST 1942 --11 u N%sT 1946 --11 - NST 1967 Ap --11 - BST 1969 --11 u B%sT 1983 O 30 2 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35 --11:46:38 - LMT 1900 Au 20 12 --11 - NST 1942 --11 u N%sT 1946 --11 - NST 1967 Ap --11 - BST 1969 --11 u B%sT 1983 O 30 2 --10 u AH%sT 1983 N 30 --10 u H%sT -Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12 --10:30 - HST 1933 Ap 30 2 --10:30 1 HDT 1933 May 21 12 --10:30 u H%sT 1947 Jun 8 2 --10 - HST -Z America/Phoenix -7:28:18 - LMT 1883 N 18 19u --7 u M%sT 1944 Ja 1 0:1 --7 - MST 1944 Ap 1 0:1 --7 u M%sT 1944 O 1 0:1 --7 - MST 1967 --7 u M%sT 1968 Mar 21 --7 - MST -Z America/Boise -7:44:49 - LMT 1883 N 18 20u --8 u P%sT 1923 May 13 2 --7 u M%sT 1974 --7 - MST 1974 F 3 2 --7 u M%sT R In 1941 o - Jun 22 2 1 D R In 1941 1954 - S lastSu 2 0 S R In 1946 1954 - Ap lastSu 2 1 D -Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 18u --6 u C%sT 1920 --6 In C%sT 1942 --6 u C%sT 1946 --6 In C%sT 1955 Ap 24 2 --5 - EST 1957 S 29 2 --6 - CST 1958 Ap 27 2 --5 - EST 1969 --5 u E%sT 1971 --5 - EST 2006 --5 u E%sT R Ma 1951 o - Ap lastSu 2 1 D R Ma 1951 o - S lastSu 2 0 S R Ma 1954 1960 - Ap lastSu 2 1 D R Ma 1954 1960 - S lastSu 2 0 S -Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 18u --6 u C%sT 1951 --6 Ma C%sT 1961 Ap 30 2 --5 - EST 1969 --5 u E%sT 1974 Ja 6 2 --6 1 CDT 1974 O 27 2 --5 u E%sT 1976 --5 - EST 2006 --5 u E%sT R V 1946 o - Ap lastSu 2 1 D R V 1946 o - S lastSu 2 0 S R V 1953 1954 - Ap lastSu 2 1 D @@ -2766,68 +1515,23 @@ R V 1956 1963 - Ap lastSu 2 1 D R V 1960 o - O lastSu 2 0 S R V 1961 o - S lastSu 2 0 S R V 1962 1963 - O lastSu 2 0 S -Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 18u --6 u C%sT 1946 --6 V C%sT 1964 Ap 26 2 --5 - EST 1969 --5 u E%sT 1971 --5 - EST 2006 Ap 2 2 --6 u C%sT 2007 N 4 2 --5 u E%sT R Pe 1955 o - May 1 0 1 D R Pe 1955 1960 - S lastSu 2 0 S R Pe 1956 1963 - Ap lastSu 2 1 D R Pe 1961 1963 - O lastSu 2 0 S -Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 18u --6 u C%sT 1946 --6 Pe C%sT 1964 Ap 26 2 --5 - EST 1967 O 29 2 --6 u C%sT 1969 Ap 27 2 --5 u E%sT 1971 --5 - EST 2006 Ap 2 2 --6 u C%sT R Pi 1955 o - May 1 0 1 D R Pi 1955 1960 - S lastSu 2 0 S R Pi 1956 1964 - Ap lastSu 2 1 D R Pi 1961 1964 - O lastSu 2 0 S -Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 18u --6 u C%sT 1955 --6 Pi C%sT 1965 Ap 25 2 --5 - EST 1966 O 30 2 --6 u C%sT 1977 O 30 2 --5 - EST 2006 Ap 2 2 --6 u C%sT 2007 N 4 2 --5 u E%sT R St 1947 1961 - Ap lastSu 2 1 D R St 1947 1954 - S lastSu 2 0 S R St 1955 1956 - O lastSu 2 0 S R St 1957 1958 - S lastSu 2 0 S R St 1959 1961 - O lastSu 2 0 S -Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 18u --6 u C%sT 1947 --6 St C%sT 1962 Ap 29 2 --5 - EST 1963 O 27 2 --6 u C%sT 1991 O 27 2 --5 - EST 2006 Ap 2 2 --6 u C%sT R Pu 1946 1960 - Ap lastSu 2 1 D R Pu 1946 1954 - S lastSu 2 0 S R Pu 1955 1956 - O lastSu 2 0 S R Pu 1957 1960 - S lastSu 2 0 S -Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 18u --6 u C%sT 1946 --6 Pu C%sT 1961 Ap 30 2 --5 - EST 1969 --5 u E%sT 1971 --5 - EST 2006 Ap 2 2 --6 u C%sT 2007 Mar 11 2 --5 u E%sT -Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 18u --6 u C%sT 1954 Ap 25 2 --5 - EST 1969 --5 u E%sT 1973 --5 - EST 2006 --5 u E%sT R v 1921 o - May 1 2 1 D R v 1921 o - S 1 2 0 S R v 1941 o - Ap lastSu 2 1 D @@ -2837,41 +1541,12 @@ R v 1946 o - Jun 2 2 0 S R v 1950 1961 - Ap lastSu 2 1 D R v 1950 1955 - S lastSu 2 0 S R v 1956 1961 - O lastSu 2 0 S -Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 18u --6 u C%sT 1921 --6 v C%sT 1942 --6 u C%sT 1946 --6 v C%sT 1961 Jul 23 2 --5 - EST 1968 --5 u E%sT 1974 Ja 6 2 --6 1 CDT 1974 O 27 2 --5 u E%sT -Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 18u --6 u C%sT 1946 --6 - CST 1968 --6 u C%sT 2000 O 29 2 --5 u E%sT R Dt 1948 o - Ap lastSu 2 1 D R Dt 1948 o - S lastSu 2 0 S -Z America/Detroit -5:32:11 - LMT 1905 --6 - CST 1915 May 15 2 --5 - EST 1942 --5 u E%sT 1946 --5 Dt E%sT 1967 Jun 14 0:1 --5 u E%sT 1969 --5 - EST 1973 --5 u E%sT 1975 --5 - EST 1975 Ap 27 2 --5 u E%sT R Me 1946 o - Ap lastSu 2 1 D R Me 1946 o - S lastSu 2 0 S R Me 1966 o - Ap lastSu 2 1 D R Me 1966 o - O lastSu 2 0 S -Z America/Menominee -5:50:27 - LMT 1885 S 18 12 --6 u C%sT 1946 --6 Me C%sT 1969 Ap 27 2 --5 - EST 1973 Ap 29 2 --6 u C%sT R C 1918 o - Ap 14 2 1 D R C 1918 o - O 27 2 0 S R C 1942 o - F 9 2 1 W @@ -2901,24 +1576,6 @@ R j 1988 o - Ap Su>=1 0:1 2 DD R j 1989 2006 - Ap Su>=1 0:1 1 D R j 2007 2011 - Mar Su>=8 0:1 1 D R j 2007 2010 - N Su>=1 0:1 0 S -Z America/St_Johns -3:30:52 - LMT 1884 --3:30:52 j N%sT 1918 --3:30:52 C N%sT 1919 --3:30:52 j N%sT 1935 Mar 30 --3:30 j N%sT 1942 May 11 --3:30 C N%sT 1946 --3:30 j N%sT 2011 N --3:30 C N%sT -Z America/Goose_Bay -4:1:40 - LMT 1884 --3:30:52 - NST 1918 --3:30:52 C N%sT 1919 --3:30:52 - NST 1935 Mar 30 --3:30 - NST 1936 --3:30 j N%sT 1942 May 11 --3:30 C N%sT 1946 --3:30 j N%sT 1966 Mar 15 2 --4 j A%sT 2011 N --4 C A%sT R H 1916 o - Ap 1 0 1 D R H 1916 o - O 1 0 0 S R H 1920 o - May 9 0 1 D @@ -2960,19 +1617,6 @@ R H 1956 1959 - Ap lastSu 2 1 D R H 1956 1959 - S lastSu 2 0 S R H 1962 1973 - Ap lastSu 2 1 D R H 1962 1973 - O lastSu 2 0 S -Z America/Halifax -4:14:24 - LMT 1902 Jun 15 --4 H A%sT 1918 --4 C A%sT 1919 --4 H A%sT 1942 F 9 2s --4 C A%sT 1946 --4 H A%sT 1974 --4 C A%sT -Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15 --4 C A%sT 1953 --4 H A%sT 1954 --4 - AST 1972 --4 H A%sT 1974 --4 C A%sT R o 1933 1935 - Jun Su>=8 1 1 D R o 1933 1935 - S Su>=8 1 0 S R o 1936 1938 - Jun Su>=1 1 1 D @@ -2986,15 +1630,6 @@ R o 1946 1956 - S lastSu 2 0 S R o 1957 1972 - O lastSu 2 0 S R o 1993 2006 - Ap Su>=1 0:1 1 D R o 1993 2006 - O lastSu 0:1 0 S -Z America/Moncton -4:19:8 - LMT 1883 D 9 --5 - EST 1902 Jun 15 --4 C A%sT 1933 --4 o A%sT 1942 --4 C A%sT 1946 --4 o A%sT 1973 --4 C A%sT 1993 --4 o A%sT 2007 --4 C A%sT R t 1919 o - Mar 30 23:30 1 D R t 1919 o - O 26 0 0 S R t 1920 o - May 2 2 1 D @@ -3008,21 +1643,11 @@ R t 1927 1937 - S Su>=25 2 0 S R t 1928 1937 - Ap Su>=25 2 1 D R t 1938 1940 - Ap lastSu 2 1 D R t 1938 1939 - S lastSu 2 0 S -R t 1945 1946 - S lastSu 2 0 S -R t 1946 o - Ap lastSu 2 1 D -R t 1947 1949 - Ap lastSu 0 1 D -R t 1947 1948 - S lastSu 0 0 S -R t 1949 o - N lastSu 0 0 S -R t 1950 1973 - Ap lastSu 2 1 D -R t 1950 o - N lastSu 2 0 S +R t 1945 1948 - S lastSu 2 0 S +R t 1946 1973 - Ap lastSu 2 1 D +R t 1949 1950 - N lastSu 2 0 S R t 1951 1956 - S lastSu 2 0 S R t 1957 1973 - O lastSu 2 0 S -Z America/Toronto -5:17:32 - LMT 1895 --5 C E%sT 1919 --5 t E%sT 1942 F 9 2s --5 C E%sT 1946 --5 t E%sT 1974 --5 C E%sT R W 1916 o - Ap 23 0 1 D R W 1916 o - S 17 0 0 S R W 1918 o - Ap 14 2 1 D @@ -3047,9 +1672,6 @@ R W 1963 o - S 22 2 0 S R W 1966 1986 - Ap lastSu 2s 1 D R W 1966 2005 - O lastSu 2s 0 S R W 1987 2005 - Ap Su>=1 2s 1 D -Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16 --6 W C%sT 2006 --6 C C%sT R r 1918 o - Ap 14 2 1 D R r 1918 o - O 27 2 0 S R r 1930 1934 - May Su>=1 0 1 D @@ -3072,14 +1694,6 @@ R Sw 1957 o - O lastSu 2 0 S R Sw 1959 1961 - Ap lastSu 2 1 D R Sw 1959 o - O lastSu 2 0 S R Sw 1960 1961 - S lastSu 2 0 S -Z America/Regina -6:58:36 - LMT 1905 S --7 r M%sT 1960 Ap lastSu 2 --6 - CST -Z America/Swift_Current -7:11:20 - LMT 1905 S --7 C M%sT 1946 Ap lastSu 2 --7 r M%sT 1950 --7 Sw M%sT 1972 Ap lastSu 2 --6 - CST R Ed 1918 1919 - Ap Su>=8 2 1 D R Ed 1918 o - O 27 2 0 S R Ed 1919 o - May 27 2 0 S @@ -3093,9 +1707,6 @@ R Ed 1947 o - Ap lastSu 2 1 D R Ed 1947 o - S lastSu 2 0 S R Ed 1972 1986 - Ap lastSu 2 1 D R Ed 1972 2006 - O lastSu 2 0 S -Z America/Edmonton -7:33:52 - LMT 1906 S --7 Ed M%sT 1987 --7 C M%sT R Va 1918 o - Ap 14 2 1 D R Va 1918 o - O 27 2 0 S R Va 1942 o - F 9 2 1 W @@ -3105,19 +1716,6 @@ R Va 1946 1986 - Ap lastSu 2 1 D R Va 1946 o - S 29 2 0 S R Va 1947 1961 - S lastSu 2 0 S R Va 1962 2006 - O lastSu 2 0 S -Z America/Vancouver -8:12:28 - LMT 1884 --8 Va P%sT 1987 --8 C P%sT -Z America/Dawson_Creek -8:0:56 - LMT 1884 --8 C P%sT 1947 --8 Va P%sT 1972 Au 30 2 --7 - MST -Z America/Fort_Nelson -8:10:47 - LMT 1884 --8 Va P%sT 1946 --8 - PST 1947 --8 Va P%sT 1987 --8 C P%sT 2015 Mar 8 2 --7 - MST R Y 1918 o - Ap 14 2 1 D R Y 1918 o - O 27 2 0 S R Y 1919 o - May 25 2 1 D @@ -3130,42 +1728,6 @@ R Y 1972 2006 - O lastSu 2 0 S R Y 1987 2006 - Ap Su>=1 2 1 D R Yu 1965 o - Ap lastSu 0 2 DD R Yu 1965 o - O lastSu 2 0 S -Z America/Iqaluit 0 - -00 1942 Au --5 Y E%sT 1999 O 31 2 --6 C C%sT 2000 O 29 2 --5 C E%sT -Z America/Resolute 0 - -00 1947 Au 31 --6 Y C%sT 2000 O 29 2 --5 - EST 2001 Ap 1 3 --6 C C%sT 2006 O 29 2 --5 - EST 2007 Mar 11 3 --6 C C%sT -Z America/Rankin_Inlet 0 - -00 1957 --6 Y C%sT 2000 O 29 2 --5 - EST 2001 Ap 1 3 --6 C C%sT -Z America/Cambridge_Bay 0 - -00 1920 --7 Y M%sT 1999 O 31 2 --6 C C%sT 2000 O 29 2 --5 - EST 2000 N 5 --6 - CST 2001 Ap 1 3 --7 C M%sT -Z America/Inuvik 0 - -00 1953 --8 Y P%sT 1979 Ap lastSu 2 --7 Y M%sT 1980 --7 C M%sT -Z America/Whitehorse -9:0:12 - LMT 1900 Au 20 --9 Y Y%sT 1965 --9 Yu Y%sT 1966 F 27 --8 - PST 1980 --8 C P%sT 2020 N --7 - MST -Z America/Dawson -9:17:40 - LMT 1900 Au 20 --9 Y Y%sT 1965 --9 Yu Y%sT 1973 O 28 --8 - PST 1980 --8 C P%sT 2020 N --7 - MST R m 1931 o - May 1 23 1 D R m 1931 o - O 1 0 0 S R m 1939 o - F 5 0 1 D @@ -3182,107 +1744,6 @@ R m 2001 o - May Su>=1 2 1 D R m 2001 o - S lastSu 2 0 S R m 2002 2022 - Ap Su>=1 2 1 D R m 2002 2022 - O lastSu 2 0 S -Z America/Cancun -5:47:4 - LMT 1922 Ja 1 6u --6 - CST 1981 D 23 --5 m E%sT 1998 Au 2 2 --6 m C%sT 2015 F 1 2 --5 - EST -Z America/Merida -5:58:28 - LMT 1922 Ja 1 6u --6 - CST 1981 D 23 --5 - EST 1982 D 2 --6 m C%sT -Z America/Matamoros -6:30 - LMT 1922 Ja 1 6u --6 - CST 1988 --6 u C%sT 1989 --6 m C%sT 2010 --6 u C%sT -Z America/Monterrey -6:41:16 - LMT 1922 Ja 1 6u --6 - CST 1988 --6 u C%sT 1989 --6 m C%sT -Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 m C%sT 2001 S 30 2 --6 - CST 2002 F 20 --6 m C%sT -Z America/Ciudad_Juarez -7:5:56 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1996 --6 m C%sT 1998 --6 - CST 1998 Ap Su>=1 3 --7 m M%sT 2010 --7 u M%sT 2022 O 30 2 --6 - CST 2022 N 30 --7 u M%sT -Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1996 --6 m C%sT 1998 --6 - CST 1998 Ap Su>=1 3 --7 m M%sT 2010 --7 u M%sT 2022 O 30 2 --6 - CST 2022 N 30 --6 u C%sT -Z America/Chihuahua -7:4:20 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1996 --6 m C%sT 1998 --6 - CST 1998 Ap Su>=1 3 --7 m M%sT 2022 O 30 2 --6 - CST -Z America/Hermosillo -7:23:52 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1942 Ap 24 --7 - MST 1949 Ja 14 --8 - PST 1970 --7 m M%sT 1999 --7 - MST -Z America/Mazatlan -7:5:40 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1942 Ap 24 --7 - MST 1949 Ja 14 --8 - PST 1970 --7 m M%sT -Z America/Bahia_Banderas -7:1 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1942 Ap 24 --7 - MST 1949 Ja 14 --8 - PST 1970 --7 m M%sT 2010 Ap 4 2 --6 m C%sT -Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u --7 - MST 1924 --8 - PST 1927 Jun 10 23 --7 - MST 1930 N 15 --8 - PST 1931 Ap --8 1 PDT 1931 S 30 --8 - PST 1942 Ap 24 --8 1 PWT 1945 Au 14 23u --8 1 PPT 1945 N 12 --8 - PST 1948 Ap 5 --8 1 PDT 1949 Ja 14 --8 - PST 1954 --8 CA P%sT 1961 --8 - PST 1976 --8 u P%sT 1996 --8 m P%sT 2001 --8 u P%sT 2002 F 20 --8 m P%sT 2010 --8 u P%sT R BB 1942 o - Ap 19 5u 1 D R BB 1942 o - Au 31 6u 0 S R BB 1943 o - May 2 5u 1 D @@ -3294,10 +1755,6 @@ R BB 1977 1978 - O Su>=1 2 0 S R BB 1978 1980 - Ap Su>=15 2 1 D R BB 1979 o - S 30 2 0 S R BB 1980 o - S 25 2 0 S -Z America/Barbados -3:58:29 - LMT 1911 Au 28 --4 BB A%sT 1944 --4 BB AST/-0330 1945 --4 BB A%sT R BZ 1918 1941 - O Sa>=1 24 0:30 -0530 R BZ 1919 1942 - F Sa>=8 24 0 CST R BZ 1942 o - Jun 27 24 1 CWT @@ -3309,8 +1766,6 @@ R BZ 1973 o - D 5 0 1 CDT R BZ 1974 o - F 9 0 0 CST R BZ 1982 o - D 18 0 1 CDT R BZ 1983 o - F 12 0 0 CST -Z America/Belize -5:52:48 - LMT 1912 Ap --6 BZ %s R Be 1917 o - Ap 5 24 1 - R Be 1917 o - S 30 24 0 - R Be 1918 o - Ap 13 24 1 - @@ -3327,19 +1782,11 @@ R Be 1948 1952 - May Su>=22 2 1 D R Be 1948 1952 - S Su>=1 2 0 S R Be 1956 o - May Su>=22 2 1 D R Be 1956 o - O lastSu 2 0 S -Z Atlantic/Bermuda -4:19:18 - LMT 1890 --4:19:18 Be BMT/BST 1930 Ja 1 2 --4 Be A%sT 1974 Ap 28 2 --4 C A%sT 1976 --4 u A%sT R CR 1979 1980 - F lastSu 0 1 D R CR 1979 1980 - Jun Su>=1 0 0 S R CR 1991 1992 - Ja Sa>=15 0 1 D R CR 1991 o - Jul 1 0 0 S R CR 1992 o - Mar 15 0 0 S -Z America/Costa_Rica -5:36:13 - LMT 1890 --5:36:13 - SJMT 1921 Ja 15 --6 CR C%sT R Q 1928 o - Jun 10 0 1 D R Q 1928 o - O 10 0 0 S R Q 1940 1942 - Jun Su>=1 0 1 D @@ -3379,25 +1826,14 @@ R Q 2011 o - N 13 0s 0 S R Q 2012 o - Ap 1 0s 1 D R Q 2012 ma - N Su>=1 0s 0 S R Q 2013 ma - Mar Su>=8 0s 1 D -Z America/Havana -5:29:28 - LMT 1890 --5:29:36 - HMT 1925 Jul 19 12 --5 Q C%sT R DO 1966 o - O 30 0 1 EDT R DO 1967 o - F 28 0 0 EST R DO 1969 1973 - O lastSu 0 0:30 -0430 R DO 1970 o - F 21 0 0 EST R DO 1971 o - Ja 20 0 0 EST R DO 1972 1974 - Ja 21 0 0 EST -Z America/Santo_Domingo -4:39:36 - LMT 1890 --4:40 - SDMT 1933 Ap 1 12 --5 DO %s 1974 O 27 --4 - AST 2000 O 29 2 --5 u E%sT 2000 D 3 1 --4 - AST R SV 1987 1988 - May Su>=1 0 1 D R SV 1987 1988 - S lastSu 0 0 S -Z America/El_Salvador -5:56:48 - LMT 1921 --6 SV C%sT R GT 1973 o - N 25 0 1 D R GT 1974 o - F 24 0 0 S R GT 1983 o - May 21 0 1 D @@ -3406,8 +1842,6 @@ R GT 1991 o - Mar 23 0 1 D R GT 1991 o - S 7 0 0 S R GT 2006 o - Ap 30 0 1 D R GT 2006 o - O 1 0 0 S -Z America/Guatemala -6:2:4 - LMT 1918 O 5 --6 GT C%sT R HT 1983 o - May 8 0 1 D R HT 1984 1987 - Ap lastSu 0 1 D R HT 1983 1987 - O lastSu 0 0 S @@ -3419,57 +1853,16 @@ R HT 2012 2015 - Mar Su>=8 2 1 D R HT 2012 2015 - N Su>=1 2 0 S R HT 2017 ma - Mar Su>=8 2 1 D R HT 2017 ma - N Su>=1 2 0 S -Z America/Port-au-Prince -4:49:20 - LMT 1890 --4:49 - PPMT 1917 Ja 24 12 --5 HT E%sT R HN 1987 1988 - May Su>=1 0 1 D R HN 1987 1988 - S lastSu 0 0 S R HN 2006 o - May Su>=1 0 1 D R HN 2006 o - Au M>=1 0 0 S -Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap --6 HN C%sT -Z America/Jamaica -5:7:10 - LMT 1890 --5:7:10 - KMT 1912 F --5 - EST 1974 --5 u E%sT 1984 --5 - EST -Z America/Martinique -4:4:20 - LMT 1890 --4:4:20 - FFMT 1911 May --4 - AST 1980 Ap 6 --4 1 ADT 1980 S 28 --4 - AST R NI 1979 1980 - Mar Su>=16 0 1 D R NI 1979 1980 - Jun M>=23 0 0 S R NI 2005 o - Ap 10 0 1 D R NI 2005 o - O Su>=1 0 0 S R NI 2006 o - Ap 30 2 1 D R NI 2006 o - O Su>=1 1 0 S -Z America/Managua -5:45:8 - LMT 1890 --5:45:12 - MMT 1934 Jun 23 --6 - CST 1973 May --5 - EST 1975 F 16 --6 NI C%sT 1992 Ja 1 4 --5 - EST 1992 S 24 --6 - CST 1993 --5 - EST 1997 --6 NI C%sT -Z America/Panama -5:18:8 - LMT 1890 --5:19:36 - CMT 1908 Ap 22 --5 - EST -Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12 --4 - AST 1942 May 3 --4 u A%sT 1946 --4 - AST -Z America/Miquelon -3:44:40 - LMT 1911 May 15 --4 - AST 1980 May --3 - -03 1987 --3 C -03/-02 -Z America/Grand_Turk -4:44:32 - LMT 1890 --5:7:10 - KMT 1912 F --5 - EST 1979 --5 u E%sT 2015 Mar 8 2 --4 - AST 2018 Mar 11 3 --5 u E%sT R A 1930 o - D 1 0 1 - R A 1931 o - Ap 1 0 0 - R A 1931 o - O 15 0 1 - @@ -3499,150 +1892,8 @@ R A 2000 o - Mar 3 0 0 - R A 2007 o - D 30 0 1 - R A 2008 2009 - Mar Su>=15 0 0 - R A 2008 o - O Su>=15 0 1 - -Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 A -03/-02 -Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 A -03/-02 -Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 13 --3 A -03/-02 -Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar --4 - -04 1991 May 7 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 20 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar --4 - -04 1991 May 7 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 May 31 --4 - -04 2004 Jul 25 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1990 Mar 4 --4 - -04 1990 O 28 --4 1 -03 1991 Mar 17 --4 - -04 1991 O 6 --3 1 -02 1992 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 20 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1990 Mar 4 --4 - -04 1990 O 15 --4 1 -03 1991 Mar --4 - -04 1991 O 15 --4 1 -03 1992 Mar --4 - -04 1992 O 18 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 May 23 --4 - -04 2004 S 26 --3 A -03/-02 2008 O 18 --3 - -03 R Sa 2008 2009 - Mar Su>=8 0 0 - R Sa 2007 2008 - O Su>=8 0 1 - -Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1990 --3 1 -02 1990 Mar 14 --4 - -04 1990 O 15 --4 1 -03 1991 Mar --4 - -04 1991 Jun --3 - -03 1999 O 3 --4 1 -03 2000 Mar 3 --3 - -03 2004 May 31 --4 - -04 2004 Jul 25 --3 A -03/-02 2008 Ja 21 --4 Sa -04/-03 2009 O 11 --3 - -03 -Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 20 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 May 30 --4 - -04 2004 Jun 20 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/La_Paz -4:32:36 - LMT 1890 --4:32:36 - CMT 1931 O 15 --4:32:36 1 BST 1932 Mar 21 --4 - -04 R B 1931 o - O 3 11 1 - R B 1932 1933 - Ap 1 0 0 - R B 1932 o - O 3 0 1 - @@ -3700,90 +1951,6 @@ R B 2013 2014 - F Su>=15 0 0 - R B 2015 o - F Su>=22 0 0 - R B 2016 2019 - F Su>=15 0 0 - R B 2018 o - N Su>=1 0 1 - -Z America/Noronha -2:9:40 - LMT 1914 --2 B -02/-01 1990 S 17 --2 - -02 1999 S 30 --2 B -02/-01 2000 O 15 --2 - -02 2001 S 13 --2 B -02/-01 2002 O --2 - -02 -Z America/Belem -3:13:56 - LMT 1914 --3 B -03/-02 1988 S 12 --3 - -03 -Z America/Santarem -3:38:48 - LMT 1914 --4 B -04/-03 1988 S 12 --4 - -04 2008 Jun 24 --3 - -03 -Z America/Fortaleza -2:34 - LMT 1914 --3 B -03/-02 1990 S 17 --3 - -03 1999 S 30 --3 B -03/-02 2000 O 22 --3 - -03 2001 S 13 --3 B -03/-02 2002 O --3 - -03 -Z America/Recife -2:19:36 - LMT 1914 --3 B -03/-02 1990 S 17 --3 - -03 1999 S 30 --3 B -03/-02 2000 O 15 --3 - -03 2001 S 13 --3 B -03/-02 2002 O --3 - -03 -Z America/Araguaina -3:12:48 - LMT 1914 --3 B -03/-02 1990 S 17 --3 - -03 1995 S 14 --3 B -03/-02 2003 S 24 --3 - -03 2012 O 21 --3 B -03/-02 2013 S --3 - -03 -Z America/Maceio -2:22:52 - LMT 1914 --3 B -03/-02 1990 S 17 --3 - -03 1995 O 13 --3 B -03/-02 1996 S 4 --3 - -03 1999 S 30 --3 B -03/-02 2000 O 22 --3 - -03 2001 S 13 --3 B -03/-02 2002 O --3 - -03 -Z America/Bahia -2:34:4 - LMT 1914 --3 B -03/-02 2003 S 24 --3 - -03 2011 O 16 --3 B -03/-02 2012 O 21 --3 - -03 -Z America/Sao_Paulo -3:6:28 - LMT 1914 --3 B -03/-02 1963 O 23 --3 1 -02 1964 --3 B -03/-02 -Z America/Campo_Grande -3:38:28 - LMT 1914 --4 B -04/-03 -Z America/Cuiaba -3:44:20 - LMT 1914 --4 B -04/-03 2003 S 24 --4 - -04 2004 O --4 B -04/-03 -Z America/Porto_Velho -4:15:36 - LMT 1914 --4 B -04/-03 1988 S 12 --4 - -04 -Z America/Boa_Vista -4:2:40 - LMT 1914 --4 B -04/-03 1988 S 12 --4 - -04 1999 S 30 --4 B -04/-03 2000 O 15 --4 - -04 -Z America/Manaus -4:0:4 - LMT 1914 --4 B -04/-03 1988 S 12 --4 - -04 1993 S 28 --4 B -04/-03 1994 S 22 --4 - -04 -Z America/Eirunepe -4:39:28 - LMT 1914 --5 B -05/-04 1988 S 12 --5 - -05 1993 S 28 --5 B -05/-04 1994 S 22 --5 - -05 2008 Jun 24 --4 - -04 2013 N 10 --5 - -05 -Z America/Rio_Branco -4:31:12 - LMT 1914 --5 B -05/-04 1988 S 12 --5 - -05 2008 Jun 24 --4 - -04 2013 N 10 --5 - -05 R x 1927 1931 - S 1 0 1 - R x 1928 1932 - Ap 1 0 0 - R x 1968 o - N 3 4u 1 - @@ -3820,56 +1987,10 @@ R x 2019 ma - Ap Su>=2 3u 0 - R x 2019 2021 - S Su>=2 4u 1 - R x 2022 o - S Su>=9 4u 1 - R x 2023 ma - S Su>=2 4u 1 - -Z America/Santiago -4:42:45 - LMT 1890 --4:42:45 - SMT 1910 Ja 10 --5 - -05 1916 Jul --4:42:45 - SMT 1918 S 10 --4 - -04 1919 Jul --4:42:45 - SMT 1927 S --5 x -05/-04 1932 S --4 - -04 1942 Jun --5 - -05 1942 Au --4 - -04 1946 Jul 14 24 --4 1 -03 1946 Au 28 24 --5 1 -04 1947 Mar 31 24 --5 - -05 1947 May 21 23 --4 x -04/-03 -Z America/Punta_Arenas -4:43:40 - LMT 1890 --4:42:45 - SMT 1910 Ja 10 --5 - -05 1916 Jul --4:42:45 - SMT 1918 S 10 --4 - -04 1919 Jul --4:42:45 - SMT 1927 S --5 x -05/-04 1932 S --4 - -04 1942 Jun --5 - -05 1942 Au --4 - -04 1946 Au 28 24 --5 1 -04 1947 Mar 31 24 --5 - -05 1947 May 21 23 --4 x -04/-03 2016 D 4 --3 - -03 -Z Pacific/Easter -7:17:28 - LMT 1890 --7:17:28 - EMT 1932 S --7 x -07/-06 1982 Mar 14 3u --6 x -06/-05 -Z Antarctica/Palmer 0 - -00 1965 --4 A -04/-03 1969 O 5 --3 A -03/-02 1982 May --4 x -04/-03 2016 D 4 --3 - -03 R CO 1992 o - May 3 0 1 - R CO 1993 o - F 6 24 0 - -Z America/Bogota -4:56:16 - LMT 1884 Mar 13 --4:56:16 - BMT 1914 N 23 --5 CO -05/-04 R EC 1992 o - N 28 0 1 - R EC 1993 o - F 5 0 0 - -Z America/Guayaquil -5:19:20 - LMT 1890 --5:14 - QMT 1931 --5 EC -05/-04 -Z Pacific/Galapagos -5:58:24 - LMT 1931 --5 - -05 1986 --6 EC -06/-05 R FK 1937 1938 - S lastSu 0 1 - R FK 1938 1942 - Mar Su>=19 0 0 - R FK 1939 o - O 1 0 1 - @@ -3882,20 +2003,6 @@ R FK 1985 2000 - S Su>=9 0 1 - R FK 1986 2000 - Ap Su>=16 0 0 - R FK 2001 2010 - Ap Su>=15 2 0 - R FK 2001 2010 - S Su>=1 2 1 - -Z Atlantic/Stanley -3:51:24 - LMT 1890 --3:51:24 - SMT 1912 Mar 12 --4 FK -04/-03 1983 May --3 FK -03/-02 1985 S 15 --4 FK -04/-03 2010 S 5 2 --3 - -03 -Z America/Cayenne -3:29:20 - LMT 1911 Jul --4 - -04 1967 O --3 - -03 -Z America/Guyana -3:52:39 - LMT 1911 Au --4 - -04 1915 Mar --3:45 - -0345 1975 Au --3 - -03 1992 Mar 29 1 --4 - -04 R y 1975 1988 - O 1 0 1 - R y 1975 1978 - Mar 1 0 0 - R y 1979 1991 - Ap 1 0 0 - @@ -3918,11 +2025,6 @@ R y 2005 2009 - Mar Su>=8 0 0 - R y 2010 ma - O Su>=1 0 1 - R y 2010 2012 - Ap Su>=8 0 0 - R y 2013 ma - Mar Su>=22 0 0 - -Z America/Asuncion -3:50:40 - LMT 1890 --3:50:40 - AMT 1931 O 10 --4 - -04 1972 O --3 - -03 1974 Ap --4 y -04/-03 R PE 1938 o - Ja 1 0 1 - R PE 1938 o - Ap 1 0 0 - R PE 1938 1939 - S lastSu 0 1 - @@ -3933,16 +2035,6 @@ R PE 1990 o - Ja 1 0 1 - R PE 1990 o - Ap 1 0 0 - R PE 1994 o - Ja 1 0 1 - R PE 1994 o - Ap 1 0 0 - -Z America/Lima -5:8:12 - LMT 1890 --5:8:36 - LMT 1908 Jul 28 --5 PE -05/-04 -Z Atlantic/South_Georgia -2:26:8 - LMT 1890 --2 - -02 -Z America/Paramaribo -3:40:40 - LMT 1911 --3:40:52 - PMT 1935 --3:40:36 - PMT 1945 O --3:30 - -0330 1984 O --3 - -03 R U 1923 1925 - O 1 0 0:30 - R U 1924 1926 - Ap 1 0 0 - R U 1933 1938 - O lastSu 0 0:30 - @@ -3991,6 +2083,659 @@ R U 2005 o - Mar 27 2 0 - R U 2005 o - O 9 2 1 - R U 2006 2015 - Mar Su>=8 2 0 - R U 2006 2014 - O Su>=1 2 1 - +Z Africa/Abidjan -0:16:8 - LMT 1912 +0 - GMT +Z Africa/Algiers 0:12:12 - LMT 1891 Mar 16 +0:9:21 - PMT 1911 Mar 11 +0 d WE%sT 1940 F 25 2 +1 d CE%sT 1946 O 7 +0 - WET 1956 Ja 29 +1 - CET 1963 Ap 14 +0 d WE%sT 1977 O 21 +1 d CE%sT 1979 O 26 +0 d WE%sT 1981 May +1 - CET +Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u +-1 - -01 1975 +0 - GMT +Z Africa/Cairo 2:5:9 - LMT 1900 O +2 K EE%sT +Z Africa/Casablanca -0:30:20 - LMT 1913 O 26 +0 M +00/+01 1984 Mar 16 +1 - +01 1986 +0 M +00/+01 2018 O 28 3 +1 M +01/+00 +Z Africa/Ceuta -0:21:16 - LMT 1901 Ja 1 0u +0 - WET 1918 May 6 23 +0 1 WEST 1918 O 7 23 +0 - WET 1924 +0 s WE%sT 1929 +0 - WET 1967 +0 Sp WE%sT 1984 Mar 16 +1 - CET 1986 +1 E CE%sT +Z Africa/El_Aaiun -0:52:48 - LMT 1934 +-1 - -01 1976 Ap 14 +0 M +00/+01 2018 O 28 3 +1 M +01/+00 +Z Africa/Johannesburg 1:52 - LMT 1892 F 8 +1:30 - SAST 1903 Mar +2 SA SAST +Z Africa/Juba 2:6:28 - LMT 1931 +2 SD CA%sT 2000 Ja 15 12 +3 - EAT 2021 F +2 - CAT +Z Africa/Khartoum 2:10:8 - LMT 1931 +2 SD CA%sT 2000 Ja 15 12 +3 - EAT 2017 N +2 - CAT +Z Africa/Lagos 0:13:35 - LMT 1905 Jul +0 - GMT 1908 Jul +0:13:35 - LMT 1914 +0:30 - +0030 1919 S +1 - WAT +Z Africa/Maputo 2:10:20 - LMT 1903 Mar +2 - CAT +Z Africa/Monrovia -0:43:8 - LMT 1882 +-0:43:8 - MMT 1919 Mar +-0:44:30 - MMT 1972 Ja 7 +0 - GMT +Z Africa/Nairobi 2:27:16 - LMT 1908 May +2:30 - +0230 1928 Jun 30 24 +3 - EAT 1930 Ja 4 24 +2:30 - +0230 1936 D 31 24 +2:45 - +0245 1942 Jul 31 24 +3 - EAT +Z Africa/Ndjamena 1:0:12 - LMT 1912 +1 - WAT 1979 O 14 +1 1 WAST 1980 Mar 8 +1 - WAT +Z Africa/Sao_Tome 0:26:56 - LMT 1884 +-0:36:45 - LMT 1912 Ja 1 0u +0 - GMT 2018 Ja 1 1 +1 - WAT 2019 Ja 1 2 +0 - GMT +Z Africa/Tripoli 0:52:44 - LMT 1920 +1 L CE%sT 1959 +2 - EET 1982 +1 L CE%sT 1990 May 4 +2 - EET 1996 S 30 +1 L CE%sT 1997 O 4 +2 - EET 2012 N 10 2 +1 L CE%sT 2013 O 25 2 +2 - EET +Z Africa/Tunis 0:40:44 - LMT 1881 May 12 +0:9:21 - PMT 1911 Mar 11 +1 n CE%sT +Z Africa/Windhoek 1:8:24 - LMT 1892 F 8 +1:30 - +0130 1903 Mar +2 - SAST 1942 S 20 2 +2 1 SAST 1943 Mar 21 2 +2 - SAST 1990 Mar 21 +2 NA %s +Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35 +-11:46:38 - LMT 1900 Au 20 12 +-11 - NST 1942 +-11 u N%sT 1946 +-11 - NST 1967 Ap +-11 - BST 1969 +-11 u B%sT 1983 O 30 2 +-10 u AH%sT 1983 N 30 +-10 u H%sT +Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37 +-9:59:36 - LMT 1900 Au 20 12 +-10 - AST 1942 +-10 u A%sT 1967 Ap +-10 - AHST 1969 +-10 u AH%sT 1983 O 30 2 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z America/Araguaina -3:12:48 - LMT 1914 +-3 B -03/-02 1990 S 17 +-3 - -03 1995 S 14 +-3 B -03/-02 2003 S 24 +-3 - -03 2012 O 21 +-3 B -03/-02 2013 S +-3 - -03 +Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 A -03/-02 +Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar 3 +-4 - -04 1991 O 20 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 Jun +-4 - -04 2004 Jun 20 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar 3 +-4 - -04 1991 O 20 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 A -03/-02 +Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1990 Mar 4 +-4 - -04 1990 O 28 +-4 1 -03 1991 Mar 17 +-4 - -04 1991 O 6 +-3 1 -02 1992 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar +-4 - -04 1991 May 7 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 Jun +-4 - -04 2004 Jun 20 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1990 Mar 4 +-4 - -04 1990 O 15 +-4 1 -03 1991 Mar +-4 - -04 1991 O 15 +-4 1 -03 1992 Mar +-4 - -04 1992 O 18 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 May 23 +-4 - -04 2004 S 26 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 Jun +-4 - -04 2004 Jun 20 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar 3 +-4 - -04 1991 O 20 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar +-4 - -04 1991 May 7 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 May 31 +-4 - -04 2004 Jul 25 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1990 +-3 1 -02 1990 Mar 14 +-4 - -04 1990 O 15 +-4 1 -03 1991 Mar +-4 - -04 1991 Jun +-3 - -03 1999 O 3 +-4 1 -03 2000 Mar 3 +-3 - -03 2004 May 31 +-4 - -04 2004 Jul 25 +-3 A -03/-02 2008 Ja 21 +-4 Sa -04/-03 2009 O 11 +-3 - -03 +Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar 3 +-4 - -04 1991 O 20 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 Jun +-4 - -04 2004 Jun 13 +-3 A -03/-02 +Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 May 30 +-4 - -04 2004 Jun 20 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Asuncion -3:50:40 - LMT 1890 +-3:50:40 - AMT 1931 O 10 +-4 - -04 1972 O +-3 - -03 1974 Ap +-4 y -04/-03 +Z America/Bahia -2:34:4 - LMT 1914 +-3 B -03/-02 2003 S 24 +-3 - -03 2011 O 16 +-3 B -03/-02 2012 O 21 +-3 - -03 +Z America/Bahia_Banderas -7:1 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1942 Ap 24 +-7 - MST 1949 Ja 14 +-8 - PST 1970 +-7 m M%sT 2010 Ap 4 2 +-6 m C%sT +Z America/Barbados -3:58:29 - LMT 1911 Au 28 +-4 BB A%sT 1944 +-4 BB AST/-0330 1945 +-4 BB A%sT +Z America/Belem -3:13:56 - LMT 1914 +-3 B -03/-02 1988 S 12 +-3 - -03 +Z America/Belize -5:52:48 - LMT 1912 Ap +-6 BZ %s +Z America/Boa_Vista -4:2:40 - LMT 1914 +-4 B -04/-03 1988 S 12 +-4 - -04 1999 S 30 +-4 B -04/-03 2000 O 15 +-4 - -04 +Z America/Bogota -4:56:16 - LMT 1884 Mar 13 +-4:56:16 - BMT 1914 N 23 +-5 CO -05/-04 +Z America/Boise -7:44:49 - LMT 1883 N 18 20u +-8 u P%sT 1923 May 13 2 +-7 u M%sT 1974 +-7 - MST 1974 F 3 2 +-7 u M%sT +Z America/Cambridge_Bay 0 - -00 1920 +-7 Y M%sT 1999 O 31 2 +-6 C C%sT 2000 O 29 2 +-5 - EST 2000 N 5 +-6 - CST 2001 Ap 1 3 +-7 C M%sT +Z America/Campo_Grande -3:38:28 - LMT 1914 +-4 B -04/-03 +Z America/Cancun -5:47:4 - LMT 1922 Ja 1 6u +-6 - CST 1981 D 23 +-5 m E%sT 1998 Au 2 2 +-6 m C%sT 2015 F 1 2 +-5 - EST +Z America/Caracas -4:27:44 - LMT 1890 +-4:27:40 - CMT 1912 F 12 +-4:30 - -0430 1965 +-4 - -04 2007 D 9 3 +-4:30 - -0430 2016 May 1 2:30 +-4 - -04 +Z America/Cayenne -3:29:20 - LMT 1911 Jul +-4 - -04 1967 O +-3 - -03 +Z America/Chicago -5:50:36 - LMT 1883 N 18 18u +-6 u C%sT 1920 +-6 Ch C%sT 1936 Mar 1 2 +-5 - EST 1936 N 15 2 +-6 Ch C%sT 1942 +-6 u C%sT 1946 +-6 Ch C%sT 1967 +-6 u C%sT +Z America/Chihuahua -7:4:20 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1996 +-6 m C%sT 1998 +-6 - CST 1998 Ap Su>=1 3 +-7 m M%sT 2022 O 30 2 +-6 - CST +Z America/Ciudad_Juarez -7:5:56 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1996 +-6 m C%sT 1998 +-6 - CST 1998 Ap Su>=1 3 +-7 m M%sT 2010 +-7 u M%sT 2022 O 30 2 +-6 - CST 2022 N 30 +-7 u M%sT +Z America/Costa_Rica -5:36:13 - LMT 1890 +-5:36:13 - SJMT 1921 Ja 15 +-6 CR C%sT +Z America/Cuiaba -3:44:20 - LMT 1914 +-4 B -04/-03 2003 S 24 +-4 - -04 2004 O +-4 B -04/-03 +Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28 +-3 - -03 1980 Ap 6 2 +-3 E -03/-02 1996 +0 - GMT +Z America/Dawson -9:17:40 - LMT 1900 Au 20 +-9 Y Y%sT 1965 +-9 Yu Y%sT 1973 O 28 +-8 - PST 1980 +-8 C P%sT 2020 N +-7 - MST +Z America/Dawson_Creek -8:0:56 - LMT 1884 +-8 C P%sT 1947 +-8 Va P%sT 1972 Au 30 2 +-7 - MST +Z America/Denver -6:59:56 - LMT 1883 N 18 19u +-7 u M%sT 1920 +-7 De M%sT 1942 +-7 u M%sT 1946 +-7 De M%sT 1967 +-7 u M%sT +Z America/Detroit -5:32:11 - LMT 1905 +-6 - CST 1915 May 15 2 +-5 - EST 1942 +-5 u E%sT 1946 +-5 Dt E%sT 1967 Jun 14 0:1 +-5 u E%sT 1969 +-5 - EST 1973 +-5 u E%sT 1975 +-5 - EST 1975 Ap 27 2 +-5 u E%sT +Z America/Edmonton -7:33:52 - LMT 1906 S +-7 Ed M%sT 1987 +-7 C M%sT +Z America/Eirunepe -4:39:28 - LMT 1914 +-5 B -05/-04 1988 S 12 +-5 - -05 1993 S 28 +-5 B -05/-04 1994 S 22 +-5 - -05 2008 Jun 24 +-4 - -04 2013 N 10 +-5 - -05 +Z America/El_Salvador -5:56:48 - LMT 1921 +-6 SV C%sT +Z America/Fort_Nelson -8:10:47 - LMT 1884 +-8 Va P%sT 1946 +-8 - PST 1947 +-8 Va P%sT 1987 +-8 C P%sT 2015 Mar 8 2 +-7 - MST +Z America/Fortaleza -2:34 - LMT 1914 +-3 B -03/-02 1990 S 17 +-3 - -03 1999 S 30 +-3 B -03/-02 2000 O 22 +-3 - -03 2001 S 13 +-3 B -03/-02 2002 O +-3 - -03 +Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15 +-4 C A%sT 1953 +-4 H A%sT 1954 +-4 - AST 1972 +-4 H A%sT 1974 +-4 C A%sT +Z America/Goose_Bay -4:1:40 - LMT 1884 +-3:30:52 - NST 1918 +-3:30:52 C N%sT 1919 +-3:30:52 - NST 1935 Mar 30 +-3:30 - NST 1936 +-3:30 j N%sT 1942 May 11 +-3:30 C N%sT 1946 +-3:30 j N%sT 1966 Mar 15 2 +-4 j A%sT 2011 N +-4 C A%sT +Z America/Grand_Turk -4:44:32 - LMT 1890 +-5:7:10 - KMT 1912 F +-5 - EST 1979 +-5 u E%sT 2015 Mar 8 2 +-4 - AST 2018 Mar 11 3 +-5 u E%sT +Z America/Guatemala -6:2:4 - LMT 1918 O 5 +-6 GT C%sT +Z America/Guayaquil -5:19:20 - LMT 1890 +-5:14 - QMT 1931 +-5 EC -05/-04 +Z America/Guyana -3:52:39 - LMT 1911 Au +-4 - -04 1915 Mar +-3:45 - -0345 1975 Au +-3 - -03 1992 Mar 29 1 +-4 - -04 +Z America/Halifax -4:14:24 - LMT 1902 Jun 15 +-4 H A%sT 1918 +-4 C A%sT 1919 +-4 H A%sT 1942 F 9 2s +-4 C A%sT 1946 +-4 H A%sT 1974 +-4 C A%sT +Z America/Havana -5:29:28 - LMT 1890 +-5:29:36 - HMT 1925 Jul 19 12 +-5 Q C%sT +Z America/Hermosillo -7:23:52 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1942 Ap 24 +-7 - MST 1949 Ja 14 +-8 - PST 1970 +-7 m M%sT 1999 +-7 - MST +Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 18u +-6 u C%sT 1920 +-6 In C%sT 1942 +-6 u C%sT 1946 +-6 In C%sT 1955 Ap 24 2 +-5 - EST 1957 S 29 2 +-6 - CST 1958 Ap 27 2 +-5 - EST 1969 +-5 u E%sT 1971 +-5 - EST 2006 +-5 u E%sT +Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 18u +-6 u C%sT 1947 +-6 St C%sT 1962 Ap 29 2 +-5 - EST 1963 O 27 2 +-6 u C%sT 1991 O 27 2 +-5 - EST 2006 Ap 2 2 +-6 u C%sT +Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 18u +-6 u C%sT 1951 +-6 Ma C%sT 1961 Ap 30 2 +-5 - EST 1969 +-5 u E%sT 1974 Ja 6 2 +-6 1 CDT 1974 O 27 2 +-5 u E%sT 1976 +-5 - EST 2006 +-5 u E%sT +Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 18u +-6 u C%sT 1955 +-6 Pi C%sT 1965 Ap 25 2 +-5 - EST 1966 O 30 2 +-6 u C%sT 1977 O 30 2 +-5 - EST 2006 Ap 2 2 +-6 u C%sT 2007 N 4 2 +-5 u E%sT +Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 18u +-6 u C%sT 1946 +-6 Pe C%sT 1964 Ap 26 2 +-5 - EST 1967 O 29 2 +-6 u C%sT 1969 Ap 27 2 +-5 u E%sT 1971 +-5 - EST 2006 Ap 2 2 +-6 u C%sT +Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 18u +-6 u C%sT 1954 Ap 25 2 +-5 - EST 1969 +-5 u E%sT 1973 +-5 - EST 2006 +-5 u E%sT +Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 18u +-6 u C%sT 1946 +-6 V C%sT 1964 Ap 26 2 +-5 - EST 1969 +-5 u E%sT 1971 +-5 - EST 2006 Ap 2 2 +-6 u C%sT 2007 N 4 2 +-5 u E%sT +Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 18u +-6 u C%sT 1946 +-6 Pu C%sT 1961 Ap 30 2 +-5 - EST 1969 +-5 u E%sT 1971 +-5 - EST 2006 Ap 2 2 +-6 u C%sT 2007 Mar 11 2 +-5 u E%sT +Z America/Inuvik 0 - -00 1953 +-8 Y P%sT 1979 Ap lastSu 2 +-7 Y M%sT 1980 +-7 C M%sT +Z America/Iqaluit 0 - -00 1942 Au +-5 Y E%sT 1999 O 31 2 +-6 C C%sT 2000 O 29 2 +-5 C E%sT +Z America/Jamaica -5:7:10 - LMT 1890 +-5:7:10 - KMT 1912 F +-5 - EST 1974 +-5 u E%sT 1984 +-5 - EST +Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32 +-8:57:41 - LMT 1900 Au 20 12 +-8 - PST 1942 +-8 u P%sT 1946 +-8 - PST 1969 +-8 u P%sT 1980 Ap 27 2 +-9 u Y%sT 1980 O 26 2 +-8 u P%sT 1983 O 30 2 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 18u +-6 u C%sT 1921 +-6 v C%sT 1942 +-6 u C%sT 1946 +-6 v C%sT 1961 Jul 23 2 +-5 - EST 1968 +-5 u E%sT 1974 Ja 6 2 +-6 1 CDT 1974 O 27 2 +-5 u E%sT +Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 18u +-6 u C%sT 1946 +-6 - CST 1968 +-6 u C%sT 2000 O 29 2 +-5 u E%sT +Z America/La_Paz -4:32:36 - LMT 1890 +-4:32:36 - CMT 1931 O 15 +-4:32:36 1 BST 1932 Mar 21 +-4 - -04 +Z America/Lima -5:8:12 - LMT 1890 +-5:8:36 - LMT 1908 Jul 28 +-5 PE -05/-04 +Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 20u +-8 u P%sT 1946 +-8 CA P%sT 1967 +-8 u P%sT +Z America/Maceio -2:22:52 - LMT 1914 +-3 B -03/-02 1990 S 17 +-3 - -03 1995 O 13 +-3 B -03/-02 1996 S 4 +-3 - -03 1999 S 30 +-3 B -03/-02 2000 O 22 +-3 - -03 2001 S 13 +-3 B -03/-02 2002 O +-3 - -03 +Z America/Managua -5:45:8 - LMT 1890 +-5:45:12 - MMT 1934 Jun 23 +-6 - CST 1973 May +-5 - EST 1975 F 16 +-6 NI C%sT 1992 Ja 1 4 +-5 - EST 1992 S 24 +-6 - CST 1993 +-5 - EST 1997 +-6 NI C%sT +Z America/Manaus -4:0:4 - LMT 1914 +-4 B -04/-03 1988 S 12 +-4 - -04 1993 S 28 +-4 B -04/-03 1994 S 22 +-4 - -04 +Z America/Martinique -4:4:20 - LMT 1890 +-4:4:20 - FFMT 1911 May +-4 - AST 1980 Ap 6 +-4 1 ADT 1980 S 28 +-4 - AST +Z America/Matamoros -6:30 - LMT 1922 Ja 1 6u +-6 - CST 1988 +-6 u C%sT 1989 +-6 m C%sT 2010 +-6 u C%sT +Z America/Mazatlan -7:5:40 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1942 Ap 24 +-7 - MST 1949 Ja 14 +-8 - PST 1970 +-7 m M%sT +Z America/Menominee -5:50:27 - LMT 1885 S 18 12 +-6 u C%sT 1946 +-6 Me C%sT 1969 Ap 27 2 +-5 - EST 1973 Ap 29 2 +-6 u C%sT +Z America/Merida -5:58:28 - LMT 1922 Ja 1 6u +-6 - CST 1981 D 23 +-5 - EST 1982 D 2 +-6 m C%sT +Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55 +-8:46:18 - LMT 1900 Au 20 12 +-8 - PST 1942 +-8 u P%sT 1946 +-8 - PST 1969 +-8 u P%sT 1983 O 30 2 +-8 - PST 2015 N 1 2 +-9 u AK%sT 2018 N 4 2 +-8 - PST 2019 Ja 20 2 +-9 u AK%sT +Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 m C%sT 2001 S 30 2 +-6 - CST 2002 F 20 +-6 m C%sT +Z America/Miquelon -3:44:40 - LMT 1911 Jun 15 +-4 - AST 1980 May +-3 - -03 1987 +-3 C -03/-02 +Z America/Moncton -4:19:8 - LMT 1883 D 9 +-5 - EST 1902 Jun 15 +-4 C A%sT 1933 +-4 o A%sT 1942 +-4 C A%sT 1946 +-4 o A%sT 1973 +-4 C A%sT 1993 +-4 o A%sT 2007 +-4 C A%sT +Z America/Monterrey -6:41:16 - LMT 1922 Ja 1 6u +-6 - CST 1988 +-6 u C%sT 1989 +-6 m C%sT Z America/Montevideo -3:44:51 - LMT 1908 Jun 10 -3:44:51 - MMT 1920 May -4 - -04 1923 O @@ -4002,30 +2747,842 @@ Z America/Montevideo -3:44:51 - LMT 1908 Jun 10 -3 U -03/-0130 1974 Mar 10 -3 U -03/-0230 1974 D 22 -3 U -03/-02 -Z America/Caracas -4:27:44 - LMT 1890 --4:27:40 - CMT 1912 F 12 --4:30 - -0430 1965 --4 - -04 2007 D 9 3 --4:30 - -0430 2016 May 1 2:30 +Z America/New_York -4:56:2 - LMT 1883 N 18 17u +-5 u E%sT 1920 +-5 NY E%sT 1942 +-5 u E%sT 1946 +-5 NY E%sT 1967 +-5 u E%sT +Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35 +-11:1:38 - LMT 1900 Au 20 12 +-11 - NST 1942 +-11 u N%sT 1946 +-11 - NST 1967 Ap +-11 - BST 1969 +-11 u B%sT 1983 O 30 2 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z America/Noronha -2:9:40 - LMT 1914 +-2 B -02/-01 1990 S 17 +-2 - -02 1999 S 30 +-2 B -02/-01 2000 O 15 +-2 - -02 2001 S 13 +-2 B -02/-01 2002 O +-2 - -02 +Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 19u +-7 u M%sT 2010 N 7 2 +-6 u C%sT +Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 19u +-7 u M%sT 1992 O 25 2 +-6 u C%sT +Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 19u +-7 u M%sT 2003 O 26 2 +-6 u C%sT +Z America/Nuuk -3:26:56 - LMT 1916 Jul 28 +-3 - -03 1980 Ap 6 2 +-3 E -03/-02 2023 Mar 26 1u +-2 - -02 2023 O 29 1u +-2 E -02/-01 +Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1996 +-6 m C%sT 1998 +-6 - CST 1998 Ap Su>=1 3 +-7 m M%sT 2010 +-7 u M%sT 2022 O 30 2 +-6 - CST 2022 N 30 +-6 u C%sT +Z America/Panama -5:18:8 - LMT 1890 +-5:19:36 - CMT 1908 Ap 22 +-5 - EST +Z America/Paramaribo -3:40:40 - LMT 1911 +-3:40:52 - PMT 1935 +-3:40:36 - PMT 1945 O +-3:30 - -0330 1984 O +-3 - -03 +Z America/Phoenix -7:28:18 - LMT 1883 N 18 19u +-7 u M%sT 1944 Ja 1 0:1 +-7 - MST 1944 Ap 1 0:1 +-7 u M%sT 1944 O 1 0:1 +-7 - MST 1967 +-7 u M%sT 1968 Mar 21 +-7 - MST +Z America/Port-au-Prince -4:49:20 - LMT 1890 +-4:49 - PPMT 1917 Ja 24 12 +-5 HT E%sT +Z America/Porto_Velho -4:15:36 - LMT 1914 +-4 B -04/-03 1988 S 12 -4 - -04 -Z Etc/UTC 0 - UTC +Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12 +-4 - AST 1942 May 3 +-4 u A%sT 1946 +-4 - AST +Z America/Punta_Arenas -4:43:40 - LMT 1890 +-4:42:45 - SMT 1910 Ja 10 +-5 - -05 1916 Jul +-4:42:45 - SMT 1918 S 10 +-4 - -04 1919 Jul +-4:42:45 - SMT 1927 S +-5 x -05/-04 1932 S +-4 - -04 1942 Jun +-5 - -05 1942 Au +-4 - -04 1946 Au 28 24 +-5 1 -04 1947 Mar 31 24 +-5 - -05 1947 May 21 23 +-4 x -04/-03 2016 D 4 +-3 - -03 +Z America/Rankin_Inlet 0 - -00 1957 +-6 Y C%sT 2000 O 29 2 +-5 - EST 2001 Ap 1 3 +-6 C C%sT +Z America/Recife -2:19:36 - LMT 1914 +-3 B -03/-02 1990 S 17 +-3 - -03 1999 S 30 +-3 B -03/-02 2000 O 15 +-3 - -03 2001 S 13 +-3 B -03/-02 2002 O +-3 - -03 +Z America/Regina -6:58:36 - LMT 1905 S +-7 r M%sT 1960 Ap lastSu 2 +-6 - CST +Z America/Resolute 0 - -00 1947 Au 31 +-6 Y C%sT 2000 O 29 2 +-5 - EST 2001 Ap 1 3 +-6 C C%sT 2006 O 29 2 +-5 - EST 2007 Mar 11 3 +-6 C C%sT +Z America/Rio_Branco -4:31:12 - LMT 1914 +-5 B -05/-04 1988 S 12 +-5 - -05 2008 Jun 24 +-4 - -04 2013 N 10 +-5 - -05 +Z America/Santarem -3:38:48 - LMT 1914 +-4 B -04/-03 1988 S 12 +-4 - -04 2008 Jun 24 +-3 - -03 +Z America/Santiago -4:42:45 - LMT 1890 +-4:42:45 - SMT 1910 Ja 10 +-5 - -05 1916 Jul +-4:42:45 - SMT 1918 S 10 +-4 - -04 1919 Jul +-4:42:45 - SMT 1927 S +-5 x -05/-04 1932 S +-4 - -04 1942 Jun +-5 - -05 1942 Au +-4 - -04 1946 Jul 14 24 +-4 1 -03 1946 Au 28 24 +-5 1 -04 1947 Mar 31 24 +-5 - -05 1947 May 21 23 +-4 x -04/-03 +Z America/Santo_Domingo -4:39:36 - LMT 1890 +-4:40 - SDMT 1933 Ap 1 12 +-5 DO %s 1974 O 27 +-4 - AST 2000 O 29 2 +-5 u E%sT 2000 D 3 1 +-4 - AST +Z America/Sao_Paulo -3:6:28 - LMT 1914 +-3 B -03/-02 1963 O 23 +-3 1 -02 1964 +-3 B -03/-02 +Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 +-2 - -02 1980 Ap 6 2 +-2 c -02/-01 1981 Mar 29 +-1 E -01/+00 2024 Mar 31 +-2 E -02/-01 +Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30 +-9:1:13 - LMT 1900 Au 20 12 +-8 - PST 1942 +-8 u P%sT 1946 +-8 - PST 1969 +-8 u P%sT 1983 O 30 2 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z America/St_Johns -3:30:52 - LMT 1884 +-3:30:52 j N%sT 1918 +-3:30:52 C N%sT 1919 +-3:30:52 j N%sT 1935 Mar 30 +-3:30 j N%sT 1942 May 11 +-3:30 C N%sT 1946 +-3:30 j N%sT 2011 N +-3:30 C N%sT +Z America/Swift_Current -7:11:20 - LMT 1905 S +-7 C M%sT 1946 Ap lastSu 2 +-7 r M%sT 1950 +-7 Sw M%sT 1972 Ap lastSu 2 +-6 - CST +Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap +-6 HN C%sT +Z America/Thule -4:35:8 - LMT 1916 Jul 28 +-4 Th A%sT +Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u +-7 - MST 1924 +-8 - PST 1927 Jun 10 23 +-7 - MST 1930 N 15 +-8 - PST 1931 Ap +-8 1 PDT 1931 S 30 +-8 - PST 1942 Ap 24 +-8 1 PWT 1945 Au 14 23u +-8 1 PPT 1945 N 12 +-8 - PST 1948 Ap 5 +-8 1 PDT 1949 Ja 14 +-8 - PST 1954 +-8 CA P%sT 1961 +-8 - PST 1976 +-8 u P%sT 1996 +-8 m P%sT 2001 +-8 u P%sT 2002 F 20 +-8 m P%sT 2010 +-8 u P%sT +Z America/Toronto -5:17:32 - LMT 1895 +-5 C E%sT 1919 +-5 t E%sT 1942 F 9 2s +-5 C E%sT 1946 +-5 t E%sT 1974 +-5 C E%sT +Z America/Vancouver -8:12:28 - LMT 1884 +-8 Va P%sT 1987 +-8 C P%sT +Z America/Whitehorse -9:0:12 - LMT 1900 Au 20 +-9 Y Y%sT 1965 +-9 Yu Y%sT 1966 F 27 +-8 - PST 1980 +-8 C P%sT 2020 N +-7 - MST +Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16 +-6 W C%sT 2006 +-6 C C%sT +Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18 +-9:18:55 - LMT 1900 Au 20 12 +-9 - YST 1942 +-9 u Y%sT 1946 +-9 - YST 1969 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z Antarctica/Casey 0 - -00 1969 +8 - +08 2009 O 18 2 +11 - +11 2010 Mar 5 2 +8 - +08 2011 O 28 2 +11 - +11 2012 F 21 17u +8 - +08 2016 O 22 +11 - +11 2018 Mar 11 4 +8 - +08 2018 O 7 4 +11 - +11 2019 Mar 17 3 +8 - +08 2019 O 4 3 +11 - +11 2020 Mar 8 3 +8 - +08 2020 O 4 0:1 +11 - +11 2021 Mar 14 +8 - +08 2021 O 3 0:1 +11 - +11 2022 Mar 13 +8 - +08 2022 O 2 0:1 +11 - +11 2023 Mar 9 3 +8 - +08 +Z Antarctica/Davis 0 - -00 1957 Ja 13 +7 - +07 1964 N +0 - -00 1969 F +7 - +07 2009 O 18 2 +5 - +05 2010 Mar 10 20u +7 - +07 2011 O 28 2 +5 - +05 2012 F 21 20u +7 - +07 +Z Antarctica/Macquarie 0 - -00 1899 N +10 - AEST 1916 O 1 2 +10 1 AEDT 1917 F +10 AU AE%sT 1919 Ap 1 0s +0 - -00 1948 Mar 25 +10 AU AE%sT 1967 +10 AT AE%sT 2010 +10 1 AEDT 2011 +10 AT AE%sT +Z Antarctica/Mawson 0 - -00 1954 F 13 +6 - +06 2009 O 18 2 +5 - +05 +Z Antarctica/Palmer 0 - -00 1965 +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1982 May +-4 x -04/-03 2016 D 4 +-3 - -03 +Z Antarctica/Rothera 0 - -00 1976 D +-3 - -03 +Z Antarctica/Troll 0 - -00 2005 F 12 +0 Tr %s +Z Antarctica/Vostok 0 - -00 1957 D 16 +7 - +07 1994 F +0 - -00 1994 N +7 - +07 2023 D 18 2 +5 - +05 +Z Asia/Almaty 5:7:48 - LMT 1924 May 2 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2s +5 R +05/+06 1992 Ja 19 2s +6 R +06/+07 2004 O 31 2s +6 - +06 2024 Mar +5 - +05 +Z Asia/Amman 2:23:44 - LMT 1931 +2 J EE%sT 2022 O 28 0s +3 - +03 +Z Asia/Anadyr 11:49:56 - LMT 1924 May 2 +12 - +12 1930 Jun 21 +13 R +13/+14 1982 Ap 1 0s +12 R +12/+13 1991 Mar 31 2s +11 R +11/+12 1992 Ja 19 2s +12 R +12/+13 2010 Mar 28 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 +Z Asia/Aqtau 3:21:4 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 1994 S 25 2s +4 R +04/+05 2004 O 31 2s +5 - +05 +Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 2004 O 31 2s +5 - +05 +Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 R +05/+06 1991 Mar 31 2 +4 R +04/+05 1992 Ja 19 2 +5 - +05 +Z Asia/Atyrau 3:27:44 - LMT 1924 May 2 +3 - +03 1930 Jun 21 +5 - +05 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 1999 Mar 28 2s +4 R +04/+05 2004 O 31 2s +5 - +05 +Z Asia/Baghdad 2:57:40 - LMT 1890 +2:57:36 - BMT 1918 +3 - +03 1982 May +3 IQ +03/+04 +Z Asia/Baku 3:19:24 - LMT 1924 May 2 +3 - +03 1957 Mar +4 R +04/+05 1991 Mar 31 2s +3 R +03/+04 1992 S lastSu 2s +4 - +04 1996 +4 E +04/+05 1997 +4 AZ +04/+05 +Z Asia/Bangkok 6:42:4 - LMT 1880 +6:42:4 - BMT 1920 Ap +7 - +07 +Z Asia/Barnaul 5:35 - LMT 1919 D 10 +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 1995 May 28 +6 R +06/+07 2011 Mar 27 2s +7 - +07 2014 O 26 2s +6 - +06 2016 Mar 27 2s +7 - +07 +Z Asia/Beirut 2:22 - LMT 1880 +2 l EE%sT +Z Asia/Bishkek 4:58:24 - LMT 1924 May 2 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2s +5 R +05/+06 1991 Au 31 2 +5 KG +05/+06 2005 Au 12 +6 - +06 +Z Asia/Chita 7:33:52 - LMT 1919 D 15 +8 - +08 1930 Jun 21 +9 R +09/+10 1991 Mar 31 2s +8 R +08/+09 1992 Ja 19 2s +9 R +09/+10 2011 Mar 27 2s +10 - +10 2014 O 26 2s +8 - +08 2016 Mar 27 2 +9 - +09 +Z Asia/Choibalsan 7:38 - LMT 1905 Au +7 - +07 1978 +8 - +08 1983 Ap +9 X +09/+10 2008 Mar 31 +8 X +08/+09 +Z Asia/Colombo 5:19:24 - LMT 1880 +5:19:32 - MMT 1906 +5:30 - +0530 1942 Ja 5 +5:30 0:30 +06 1942 S +5:30 1 +0630 1945 O 16 2 +5:30 - +0530 1996 May 25 +6:30 - +0630 1996 O 26 0:30 +6 - +06 2006 Ap 15 0:30 +5:30 - +0530 +Z Asia/Damascus 2:25:12 - LMT 1920 +2 S EE%sT 2022 O 28 +3 - +03 +Z Asia/Dhaka 6:1:40 - LMT 1890 +5:53:20 - HMT 1941 O +6:30 - +0630 1942 May 15 +5:30 - +0530 1942 S +6:30 - +0630 1951 S 30 +6 - +06 2009 +6 BD +06/+07 +Z Asia/Dili 8:22:20 - LMT 1912 +8 - +08 1942 F 21 23 +9 - +09 1976 May 3 +8 - +08 2000 S 17 +9 - +09 +Z Asia/Dubai 3:41:12 - LMT 1920 +4 - +04 +Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2s +5 1 +06 1991 S 9 2s +5 - +05 +Z Asia/Famagusta 2:15:48 - LMT 1921 N 14 +2 CY EE%sT 1998 S +2 E EE%sT 2016 S 8 +3 - +03 2017 O 29 1u +2 E EE%sT +Z Asia/Gaza 2:17:52 - LMT 1900 O +2 Z EET/EEST 1948 May 15 +2 K EE%sT 1967 Jun 5 +2 Z I%sT 1996 +2 J EE%sT 1999 +2 P EE%sT 2008 Au 29 +2 - EET 2008 S +2 P EE%sT 2010 +2 - EET 2010 Mar 27 0:1 +2 P EE%sT 2011 Au +2 - EET 2012 +2 P EE%sT +Z Asia/Hebron 2:20:23 - LMT 1900 O +2 Z EET/EEST 1948 May 15 +2 K EE%sT 1967 Jun 5 +2 Z I%sT 1996 +2 J EE%sT 1999 +2 P EE%sT +Z Asia/Ho_Chi_Minh 7:6:30 - LMT 1906 Jul +7:6:30 - PLMT 1911 May +7 - +07 1942 D 31 23 +8 - +08 1945 Mar 14 23 +9 - +09 1945 S 1 24 +7 - +07 1947 Ap +8 - +08 1955 Jul 1 1 +7 - +07 1959 D 31 23 +8 - +08 1975 Jun 13 +7 - +07 +Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 29 17u +8 - HKT 1941 Jun 15 3 +8 1 HKST 1941 O 1 4 +8 0:30 HKWT 1941 D 25 +9 - JST 1945 N 18 2 +8 HK HK%sT +Z Asia/Hovd 6:6:36 - LMT 1905 Au +6 - +06 1978 +7 X +07/+08 +Z Asia/Irkutsk 6:57:5 - LMT 1880 +6:57:5 - IMT 1920 Ja 25 +7 - +07 1930 Jun 21 +8 R +08/+09 1991 Mar 31 2s +7 R +07/+08 1992 Ja 19 2s +8 R +08/+09 2011 Mar 27 2s +9 - +09 2014 O 26 2s +8 - +08 +Z Asia/Jakarta 7:7:12 - LMT 1867 Au 10 +7:7:12 - BMT 1923 D 31 16:40u +7:20 - +0720 1932 N +7:30 - +0730 1942 Mar 23 +9 - +09 1945 S 23 +7:30 - +0730 1948 May +8 - +08 1950 May +7:30 - +0730 1964 +7 - WIB +Z Asia/Jayapura 9:22:48 - LMT 1932 N +9 - +09 1944 S +9:30 - +0930 1964 +9 - WIT +Z Asia/Jerusalem 2:20:54 - LMT 1880 +2:20:40 - JMT 1918 +2 Z I%sT +Z Asia/Kabul 4:36:48 - LMT 1890 +4 - +04 1945 +4:30 - +0430 +Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10 +11 - +11 1930 Jun 21 +12 R +12/+13 1991 Mar 31 2s +11 R +11/+12 1992 Ja 19 2s +12 R +12/+13 2010 Mar 28 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 +Z Asia/Karachi 4:28:12 - LMT 1907 +5:30 - +0530 1942 S +5:30 1 +0630 1945 O 15 +5:30 - +0530 1951 S 30 +5 - +05 1971 Mar 26 +5 PK PK%sT +Z Asia/Kathmandu 5:41:16 - LMT 1920 +5:30 - +0530 1986 +5:45 - +0545 +Z Asia/Khandyga 9:2:13 - LMT 1919 D 15 +8 - +08 1930 Jun 21 +9 R +09/+10 1991 Mar 31 2s +8 R +08/+09 1992 Ja 19 2s +9 R +09/+10 2004 +10 R +10/+11 2011 Mar 27 2s +11 - +11 2011 S 13 0s +10 - +10 2014 O 26 2s +9 - +09 +Z Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 +5:53:20 - HMT 1870 +5:21:10 - MMT 1906 +5:30 - IST 1941 O +5:30 1 +0630 1942 May 15 +5:30 - IST 1942 S +5:30 1 +0630 1945 O 15 +5:30 - IST +Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6 +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 2011 Mar 27 2s +8 - +08 2014 O 26 2s +7 - +07 +Z Asia/Kuching 7:21:20 - LMT 1926 Mar +7:30 - +0730 1933 +8 NB +08/+0820 1942 F 16 +9 - +09 1945 S 12 +8 - +08 +Z Asia/Macau 7:34:10 - LMT 1904 O 30 +8 - CST 1941 D 21 23 +9 _ +09/+10 1945 S 30 24 +8 _ C%sT +Z Asia/Magadan 10:3:12 - LMT 1924 May 2 +10 - +10 1930 Jun 21 +11 R +11/+12 1991 Mar 31 2s +10 R +10/+11 1992 Ja 19 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 2014 O 26 2s +10 - +10 2016 Ap 24 2s +11 - +11 +Z Asia/Makassar 7:57:36 - LMT 1920 +7:57:36 - MMT 1932 N +8 - +08 1942 F 9 +9 - +09 1945 S 23 +8 - WITA +Z Asia/Manila -15:56 - LMT 1844 D 31 +8:4 - LMT 1899 May 11 +8 PH P%sT 1942 May +9 - JST 1944 N +8 PH P%sT +Z Asia/Nicosia 2:13:28 - LMT 1921 N 14 +2 CY EE%sT 1998 S +2 E EE%sT +Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 2010 Mar 28 2s +6 R +06/+07 2011 Mar 27 2s +7 - +07 +Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6 +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 1993 May 23 +6 R +06/+07 2011 Mar 27 2s +7 - +07 2014 O 26 2s +6 - +06 2016 Jul 24 2s +7 - +07 +Z Asia/Omsk 4:53:30 - LMT 1919 N 14 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2s +5 R +05/+06 1992 Ja 19 2s +6 R +06/+07 2011 Mar 27 2s +7 - +07 2014 O 26 2s +6 - +06 +Z Asia/Oral 3:25:24 - LMT 1924 May 2 +3 - +03 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1989 Mar 26 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 1992 Mar 29 2s +4 R +04/+05 2004 O 31 2s +5 - +05 +Z Asia/Pontianak 7:17:20 - LMT 1908 May +7:17:20 - PMT 1932 N +7:30 - +0730 1942 Ja 29 +9 - +09 1945 S 23 +7:30 - +0730 1948 May +8 - +08 1950 May +7:30 - +0730 1964 +8 - WITA 1988 +7 - WIB +Z Asia/Pyongyang 8:23 - LMT 1908 Ap +8:30 - KST 1912 +9 - JST 1945 Au 24 +9 - KST 2015 Au 15 +8:30 - KST 2018 May 4 23:30 +9 - KST +Z Asia/Qatar 3:26:8 - LMT 1920 +4 - +04 1972 Jun +3 - +03 +Z Asia/Qostanay 4:14:28 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 2004 O 31 2s +6 - +06 2024 Mar +5 - +05 +Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1991 S 29 2s +5 R +05/+06 1992 Ja 19 2s +6 R +06/+07 1992 Mar 29 2s +5 R +05/+06 2004 O 31 2s +6 - +06 2018 D 21 +5 - +05 +Z Asia/Riyadh 3:6:52 - LMT 1947 Mar 14 +3 - +03 +Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23 +9 - +09 1945 Au 25 +11 R +11/+12 1991 Mar 31 2s +10 R +10/+11 1992 Ja 19 2s +11 R +11/+12 1997 Mar lastSu 2s +10 R +10/+11 2011 Mar 27 2s +11 - +11 2014 O 26 2s +10 - +10 2016 Mar 27 2s +11 - +11 +Z Asia/Samarkand 4:27:53 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1992 +5 - +05 +Z Asia/Seoul 8:27:52 - LMT 1908 Ap +8:30 - KST 1912 +9 - JST 1945 S 8 +9 KR K%sT 1954 Mar 21 +8:30 KR K%sT 1961 Au 10 +9 KR K%sT +Z Asia/Shanghai 8:5:43 - LMT 1901 +8 Sh C%sT 1949 May 28 +8 CN C%sT +Z Asia/Singapore 6:55:25 - LMT 1901 +6:55:25 - SMT 1905 Jun +7 - +07 1933 +7 0:20 +0720 1936 +7:20 - +0720 1941 S +7:30 - +0730 1942 F 16 +9 - +09 1945 S 12 +7:30 - +0730 1981 D 31 16u +8 - +08 +Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2 +10 - +10 1930 Jun 21 +11 R +11/+12 1991 Mar 31 2s +10 R +10/+11 1992 Ja 19 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 2014 O 26 2s +11 - +11 +Z Asia/Taipei 8:6 - LMT 1896 +8 - CST 1937 O +9 - JST 1945 S 21 1 +8 f C%sT +Z Asia/Tashkent 4:37:11 - LMT 1924 May 2 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2 +5 R +05/+06 1992 +5 - +05 +Z Asia/Tbilisi 2:59:11 - LMT 1880 +2:59:11 - TBMT 1924 May 2 +3 - +03 1957 Mar +4 R +04/+05 1991 Mar 31 2s +3 R +03/+04 1992 +3 e +03/+04 1994 S lastSu +4 e +04/+05 1996 O lastSu +4 1 +05 1997 Mar lastSu +4 e +04/+05 2004 Jun 27 +3 R +03/+04 2005 Mar lastSu 2 +4 - +04 +Z Asia/Tehran 3:25:44 - LMT 1916 +3:25:44 - TMT 1935 Jun 13 +3:30 i +0330/+0430 1977 O 20 24 +4 i +04/+05 1979 +3:30 i +0330/+0430 +Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15 +5:30 - +0530 1987 O +6 - +06 +Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u +9 JP J%sT +Z Asia/Tomsk 5:39:51 - LMT 1919 D 22 +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 2002 May 1 3 +6 R +06/+07 2011 Mar 27 2s +7 - +07 2014 O 26 2s +6 - +06 2016 May 29 2s +7 - +07 +Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au +7 - +07 1978 +8 X +08/+09 +Z Asia/Urumqi 5:50:20 - LMT 1928 +6 - +06 +Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15 +8 - +08 1930 Jun 21 +9 R +09/+10 1981 Ap +11 R +11/+12 1991 Mar 31 2s +10 R +10/+11 1992 Ja 19 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 2011 S 13 0s +11 - +11 2014 O 26 2s +10 - +10 +Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15 +9 - +09 1930 Jun 21 +10 R +10/+11 1991 Mar 31 2s +9 R +09/+10 1992 Ja 19 2s +10 R +10/+11 2011 Mar 27 2s +11 - +11 2014 O 26 2s +10 - +10 +Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15 +8 - +08 1930 Jun 21 +9 R +09/+10 1991 Mar 31 2s +8 R +08/+09 1992 Ja 19 2s +9 R +09/+10 2011 Mar 27 2s +10 - +10 2014 O 26 2s +9 - +09 +Z Asia/Yangon 6:24:47 - LMT 1880 +6:24:47 - RMT 1920 +6:30 - +0630 1942 May +9 - +09 1945 May 3 +6:30 - +0630 +Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3 +3:45:5 - PMT 1919 Jul 15 4 +4 - +04 1930 Jun 21 +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 2011 Mar 27 2s +6 - +06 2014 O 26 2s +5 - +05 +Z Asia/Yerevan 2:58 - LMT 1924 May 2 +3 - +03 1957 Mar +4 R +04/+05 1991 Mar 31 2s +3 R +03/+04 1995 S 24 2s +4 - +04 1997 +4 R +04/+05 2011 +4 AM +04/+05 +Z Atlantic/Azores -1:42:40 - LMT 1884 +-1:54:32 - HMT 1912 Ja 1 2u +-2 p -02/-01 1942 Ap 25 22s +-2 p +00 1942 Au 15 22s +-2 p -02/-01 1943 Ap 17 22s +-2 p +00 1943 Au 28 22s +-2 p -02/-01 1944 Ap 22 22s +-2 p +00 1944 Au 26 22s +-2 p -02/-01 1945 Ap 21 22s +-2 p +00 1945 Au 25 22s +-2 p -02/-01 1966 Ap 3 2 +-1 p -01/+00 1983 S 25 1s +-1 W- -01/+00 1992 S 27 1s +0 E WE%sT 1993 Mar 28 1u +-1 E -01/+00 +Z Atlantic/Bermuda -4:19:18 - LMT 1890 +-4:19:18 Be BMT/BST 1930 Ja 1 2 +-4 Be A%sT 1974 Ap 28 2 +-4 C A%sT 1976 +-4 u A%sT +Z Atlantic/Canary -1:1:36 - LMT 1922 Mar +-1 - -01 1946 S 30 1 +0 - WET 1980 Ap 6 0s +0 1 WEST 1980 S 28 1u +0 E WE%sT +Z Atlantic/Cape_Verde -1:34:4 - LMT 1912 Ja 1 2u +-2 - -02 1942 S +-2 1 -01 1945 O 15 +-2 - -02 1975 N 25 2 +-1 - -01 +Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11 +0 - WET 1981 +0 E WE%sT +Z Atlantic/Madeira -1:7:36 - LMT 1884 +-1:7:36 - FMT 1912 Ja 1 1u +-1 p -01/+00 1942 Ap 25 22s +-1 p +01 1942 Au 15 22s +-1 p -01/+00 1943 Ap 17 22s +-1 p +01 1943 Au 28 22s +-1 p -01/+00 1944 Ap 22 22s +-1 p +01 1944 Au 26 22s +-1 p -01/+00 1945 Ap 21 22s +-1 p +01 1945 Au 25 22s +-1 p -01/+00 1966 Ap 3 2 +0 p WE%sT 1983 S 25 1s +0 E WE%sT +Z Atlantic/South_Georgia -2:26:8 - LMT 1890 +-2 - -02 +Z Atlantic/Stanley -3:51:24 - LMT 1890 +-3:51:24 - SMT 1912 Mar 12 +-4 FK -04/-03 1983 May +-3 FK -03/-02 1985 S 15 +-4 FK -04/-03 2010 S 5 2 +-3 - -03 +Z Australia/Adelaide 9:14:20 - LMT 1895 F +9 - ACST 1899 May +9:30 AU AC%sT 1971 +9:30 AS AC%sT +Z Australia/Brisbane 10:12:8 - LMT 1895 +10 AU AE%sT 1971 +10 AQ AE%sT +Z Australia/Broken_Hill 9:25:48 - LMT 1895 F +10 - AEST 1896 Au 23 +9 - ACST 1899 May +9:30 AU AC%sT 1971 +9:30 AN AC%sT 2000 +9:30 AS AC%sT +Z Australia/Darwin 8:43:20 - LMT 1895 F +9 - ACST 1899 May +9:30 AU AC%sT +Z Australia/Eucla 8:35:28 - LMT 1895 D +8:45 AU +0845/+0945 1943 Jul +8:45 AW +0845/+0945 +Z Australia/Hobart 9:49:16 - LMT 1895 S +10 AT AE%sT 1919 O 24 +10 AU AE%sT 1967 +10 AT AE%sT +Z Australia/Lindeman 9:55:56 - LMT 1895 +10 AU AE%sT 1971 +10 AQ AE%sT 1992 Jul +10 Ho AE%sT +Z Australia/Lord_Howe 10:36:20 - LMT 1895 F +10 - AEST 1981 Mar +10:30 LH +1030/+1130 1985 Jul +10:30 LH +1030/+11 +Z Australia/Melbourne 9:39:52 - LMT 1895 F +10 AU AE%sT 1971 +10 AV AE%sT +Z Australia/Perth 7:43:24 - LMT 1895 D +8 AU AW%sT 1943 Jul +8 AW AW%sT +Z Australia/Sydney 10:4:52 - LMT 1895 F +10 AU AE%sT 1971 +10 AN AE%sT +Z CET 1 c CE%sT +Z CST6CDT -6 u C%sT +Z EET 2 E EE%sT +Z EST -5 - EST +Z EST5EDT -5 u E%sT Z Etc/GMT 0 - GMT -L Etc/GMT GMT -Z Etc/GMT-14 14 - +14 -Z Etc/GMT-13 13 - +13 -Z Etc/GMT-12 12 - +12 -Z Etc/GMT-11 11 - +11 -Z Etc/GMT-10 10 - +10 -Z Etc/GMT-9 9 - +09 -Z Etc/GMT-8 8 - +08 -Z Etc/GMT-7 7 - +07 -Z Etc/GMT-6 6 - +06 -Z Etc/GMT-5 5 - +05 -Z Etc/GMT-4 4 - +04 -Z Etc/GMT-3 3 - +03 -Z Etc/GMT-2 2 - +02 -Z Etc/GMT-1 1 - +01 Z Etc/GMT+1 -1 - -01 +Z Etc/GMT+10 -10 - -10 +Z Etc/GMT+11 -11 - -11 +Z Etc/GMT+12 -12 - -12 Z Etc/GMT+2 -2 - -02 Z Etc/GMT+3 -3 - -03 Z Etc/GMT+4 -4 - -04 @@ -4034,10 +3591,463 @@ Z Etc/GMT+6 -6 - -06 Z Etc/GMT+7 -7 - -07 Z Etc/GMT+8 -8 - -08 Z Etc/GMT+9 -9 - -09 -Z Etc/GMT+10 -10 - -10 -Z Etc/GMT+11 -11 - -11 -Z Etc/GMT+12 -12 - -12 +Z Etc/GMT-1 1 - +01 +Z Etc/GMT-10 10 - +10 +Z Etc/GMT-11 11 - +11 +Z Etc/GMT-12 12 - +12 +Z Etc/GMT-13 13 - +13 +Z Etc/GMT-14 14 - +14 +Z Etc/GMT-2 2 - +02 +Z Etc/GMT-3 3 - +03 +Z Etc/GMT-4 4 - +04 +Z Etc/GMT-5 5 - +05 +Z Etc/GMT-6 6 - +06 +Z Etc/GMT-7 7 - +07 +Z Etc/GMT-8 8 - +08 +Z Etc/GMT-9 9 - +09 +Z Etc/UTC 0 - UTC +Z Europe/Andorra 0:6:4 - LMT 1901 +0 - WET 1946 S 30 +1 - CET 1985 Mar 31 2 +1 E CE%sT +Z Europe/Astrakhan 3:12:12 - LMT 1924 May +3 - +03 1930 Jun 21 +4 R +04/+05 1989 Mar 26 2s +3 R +03/+04 1991 Mar 31 2s +4 - +04 1992 Mar 29 2s +3 R +03/+04 2011 Mar 27 2s +4 - +04 2014 O 26 2s +3 - +03 2016 Mar 27 2s +4 - +04 +Z Europe/Athens 1:34:52 - LMT 1895 S 14 +1:34:52 - AMT 1916 Jul 28 0:1 +2 g EE%sT 1941 Ap 30 +1 g CE%sT 1944 Ap 4 +2 g EE%sT 1981 +2 E EE%sT +Z Europe/Belgrade 1:22 - LMT 1884 +1 - CET 1941 Ap 18 23 +1 c CE%sT 1945 +1 - CET 1945 May 8 2s +1 1 CEST 1945 S 16 2s +1 - CET 1982 N 27 +1 E CE%sT +Z Europe/Berlin 0:53:28 - LMT 1893 Ap +1 c CE%sT 1945 May 24 2 +1 So CE%sT 1946 +1 DE CE%sT 1980 +1 E CE%sT +Z Europe/Brussels 0:17:30 - LMT 1880 +0:17:30 - BMT 1892 May 1 0:17:30 +0 - WET 1914 N 8 +1 - CET 1916 May +1 c CE%sT 1918 N 11 11u +0 b WE%sT 1940 May 20 2s +1 c CE%sT 1944 S 3 +1 b CE%sT 1977 +1 E CE%sT +Z Europe/Bucharest 1:44:24 - LMT 1891 O +1:44:24 - BMT 1931 Jul 24 +2 z EE%sT 1981 Mar 29 2s +2 c EE%sT 1991 +2 z EE%sT 1994 +2 e EE%sT 1997 +2 E EE%sT +Z Europe/Budapest 1:16:20 - LMT 1890 N +1 c CE%sT 1918 +1 h CE%sT 1941 Ap 7 23 +1 c CE%sT 1945 +1 h CE%sT 1984 +1 E CE%sT +Z Europe/Chisinau 1:55:20 - LMT 1880 +1:55 - CMT 1918 F 15 +1:44:24 - BMT 1931 Jul 24 +2 z EE%sT 1940 Au 15 +2 1 EEST 1941 Jul 17 +1 c CE%sT 1944 Au 24 +3 R MSK/MSD 1990 May 6 2 +2 R EE%sT 1992 +2 e EE%sT 1997 +2 MD EE%sT +Z Europe/Dublin -0:25:21 - LMT 1880 Au 2 +-0:25:21 - DMT 1916 May 21 2s +-0:25:21 1 IST 1916 O 1 2s +0 G %s 1921 D 6 +0 G GMT/IST 1940 F 25 2s +0 1 IST 1946 O 6 2s +0 - GMT 1947 Mar 16 2s +0 1 IST 1947 N 2 2s +0 - GMT 1948 Ap 18 2s +0 G GMT/IST 1968 O 27 +1 IE IST/GMT +Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2 +0 G %s 1957 Ap 14 2 +1 - CET 1982 +1 E CE%sT +Z Europe/Helsinki 1:39:49 - LMT 1878 May 31 +1:39:49 - HMT 1921 May +2 FI EE%sT 1983 +2 E EE%sT +Z Europe/Istanbul 1:55:52 - LMT 1880 +1:56:56 - IMT 1910 O +2 T EE%sT 1978 Jun 29 +3 T +03/+04 1984 N 1 2 +2 T EE%sT 2007 +2 E EE%sT 2011 Mar 27 1u +2 - EET 2011 Mar 28 1u +2 E EE%sT 2014 Mar 30 1u +2 - EET 2014 Mar 31 1u +2 E EE%sT 2015 O 25 1u +2 1 EEST 2015 N 8 1u +2 E EE%sT 2016 S 7 +3 - +03 +Z Europe/Kaliningrad 1:22 - LMT 1893 Ap +1 c CE%sT 1945 Ap 10 +2 O EE%sT 1946 Ap 7 +3 R MSK/MSD 1989 Mar 26 2s +2 R EE%sT 2011 Mar 27 2s +3 - +03 2014 O 26 2s +2 - EET +Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u +3 - +03 1930 Jun 21 +4 R +04/+05 1989 Mar 26 2s +3 R MSK/MSD 1991 Mar 31 2s +4 - +04 1992 Mar 29 2s +3 R MSK/MSD 2011 Mar 27 2s +4 - MSK 2014 O 26 2s +3 - MSK +Z Europe/Kyiv 2:2:4 - LMT 1880 +2:2:4 - KMT 1924 May 2 +2 - EET 1930 Jun 21 +3 - MSK 1941 S 20 +1 c CE%sT 1943 N 6 +3 R MSK/MSD 1990 Jul 1 2 +2 1 EEST 1991 S 29 3 +2 c EE%sT 1996 May 13 +2 E EE%sT +Z Europe/Lisbon -0:36:45 - LMT 1884 +-0:36:45 - LMT 1912 Ja 1 0u +0 p WE%sT 1966 Ap 3 2 +1 - CET 1976 S 26 1 +0 p WE%sT 1983 S 25 1s +0 W- WE%sT 1992 S 27 1s +1 E CE%sT 1996 Mar 31 1u +0 E WE%sT +Z Europe/London -0:1:15 - LMT 1847 D +0 G %s 1968 O 27 +1 - BST 1971 O 31 2u +0 G %s 1996 +0 E GMT/BST +Z Europe/Madrid -0:14:44 - LMT 1901 Ja 1 0u +0 s WE%sT 1940 Mar 16 23 +1 s CE%sT 1979 +1 E CE%sT +Z Europe/Malta 0:58:4 - LMT 1893 N 2 +1 I CE%sT 1973 Mar 31 +1 MT CE%sT 1981 +1 E CE%sT +Z Europe/Minsk 1:50:16 - LMT 1880 +1:50 - MMT 1924 May 2 +2 - EET 1930 Jun 21 +3 - MSK 1941 Jun 28 +1 c CE%sT 1944 Jul 3 +3 R MSK/MSD 1990 +3 - MSK 1991 Mar 31 2s +2 R EE%sT 2011 Mar 27 2s +3 - +03 +Z Europe/Moscow 2:30:17 - LMT 1880 +2:30:17 - MMT 1916 Jul 3 +2:31:19 R %s 1919 Jul 1 0u +3 R %s 1921 O +3 R MSK/MSD 1922 O +2 - EET 1930 Jun 21 +3 R MSK/MSD 1991 Mar 31 2s +2 R EE%sT 1992 Ja 19 2s +3 R MSK/MSD 2011 Mar 27 2s +4 - MSK 2014 O 26 2s +3 - MSK +Z Europe/Paris 0:9:21 - LMT 1891 Mar 16 +0:9:21 - PMT 1911 Mar 11 +0 F WE%sT 1940 Jun 14 23 +1 c CE%sT 1944 Au 25 +0 F WE%sT 1945 S 16 3 +1 F CE%sT 1977 +1 E CE%sT +Z Europe/Prague 0:57:44 - LMT 1850 +0:57:44 - PMT 1891 O +1 c CE%sT 1945 May 9 +1 CZ CE%sT 1946 D 1 3 +1 -1 GMT 1947 F 23 2 +1 CZ CE%sT 1979 +1 E CE%sT +Z Europe/Riga 1:36:34 - LMT 1880 +1:36:34 - RMT 1918 Ap 15 2 +1:36:34 1 LST 1918 S 16 3 +1:36:34 - RMT 1919 Ap 1 2 +1:36:34 1 LST 1919 May 22 3 +1:36:34 - RMT 1926 May 11 +2 - EET 1940 Au 5 +3 - MSK 1941 Jul +1 c CE%sT 1944 O 13 +3 R MSK/MSD 1989 Mar lastSu 2s +2 1 EEST 1989 S lastSu 2s +2 LV EE%sT 1997 Ja 21 +2 E EE%sT 2000 F 29 +2 - EET 2001 Ja 2 +2 E EE%sT +Z Europe/Rome 0:49:56 - LMT 1866 D 12 +0:49:56 - RMT 1893 O 31 23u +1 I CE%sT 1943 S 10 +1 c CE%sT 1944 Jun 4 +1 I CE%sT 1980 +1 E CE%sT +Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u +3 - +03 1930 Jun 21 +4 - +04 1935 Ja 27 +4 R +04/+05 1989 Mar 26 2s +3 R +03/+04 1991 Mar 31 2s +2 R +02/+03 1991 S 29 2s +3 - +03 1991 O 20 3 +4 R +04/+05 2010 Mar 28 2s +3 R +03/+04 2011 Mar 27 2s +4 - +04 +Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u +3 - +03 1930 Jun 21 +4 R +04/+05 1988 Mar 27 2s +3 R +03/+04 1991 Mar 31 2s +4 - +04 1992 Mar 29 2s +3 R +03/+04 2011 Mar 27 2s +4 - +04 2014 O 26 2s +3 - +03 2016 D 4 2s +4 - +04 +Z Europe/Simferopol 2:16:24 - LMT 1880 +2:16 - SMT 1924 May 2 +2 - EET 1930 Jun 21 +3 - MSK 1941 N +1 c CE%sT 1944 Ap 13 +3 R MSK/MSD 1990 +3 - MSK 1990 Jul 1 2 +2 - EET 1992 Mar 20 +2 c EE%sT 1994 May +3 c MSK/MSD 1996 Mar 31 0s +3 1 MSD 1996 O 27 3s +3 - MSK 1997 Mar lastSu 1u +2 E EE%sT 2014 Mar 30 2 +4 - MSK 2014 O 26 2s +3 - MSK +Z Europe/Sofia 1:33:16 - LMT 1880 +1:56:56 - IMT 1894 N 30 +2 - EET 1942 N 2 3 +1 c CE%sT 1945 +1 - CET 1945 Ap 2 3 +2 - EET 1979 Mar 31 23 +2 BG EE%sT 1982 S 26 3 +2 c EE%sT 1991 +2 e EE%sT 1997 +2 E EE%sT +Z Europe/Tallinn 1:39 - LMT 1880 +1:39 - TMT 1918 F +1 c CE%sT 1919 Jul +1:39 - TMT 1921 May +2 - EET 1940 Au 6 +3 - MSK 1941 S 15 +1 c CE%sT 1944 S 22 +3 R MSK/MSD 1989 Mar 26 2s +2 1 EEST 1989 S 24 2s +2 c EE%sT 1998 S 22 +2 E EE%sT 1999 O 31 4 +2 - EET 2002 F 21 +2 E EE%sT +Z Europe/Tirane 1:19:20 - LMT 1914 +1 - CET 1940 Jun 16 +1 q CE%sT 1984 Jul +1 E CE%sT +Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u +3 - +03 1930 Jun 21 +4 R +04/+05 1989 Mar 26 2s +3 R +03/+04 1991 Mar 31 2s +2 R +02/+03 1992 Ja 19 2s +3 R +03/+04 2011 Mar 27 2s +4 - +04 2014 O 26 2s +3 - +03 2016 Mar 27 2s +4 - +04 +Z Europe/Vienna 1:5:21 - LMT 1893 Ap +1 c CE%sT 1920 +1 a CE%sT 1940 Ap 1 2s +1 c CE%sT 1945 Ap 2 2s +1 1 CEST 1945 Ap 12 2s +1 - CET 1946 +1 a CE%sT 1981 +1 E CE%sT +Z Europe/Vilnius 1:41:16 - LMT 1880 +1:24 - WMT 1917 +1:35:36 - KMT 1919 O 10 +1 - CET 1920 Jul 12 +2 - EET 1920 O 9 +1 - CET 1940 Au 3 +3 - MSK 1941 Jun 24 +1 c CE%sT 1944 Au +3 R MSK/MSD 1989 Mar 26 2s +2 R EE%sT 1991 S 29 2s +2 c EE%sT 1998 +2 - EET 1998 Mar 29 1u +1 E CE%sT 1999 O 31 1u +2 - EET 2003 +2 E EE%sT +Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3 +3 - +03 1930 Jun 21 +4 - +04 1961 N 11 +4 R +04/+05 1988 Mar 27 2s +3 R MSK/MSD 1991 Mar 31 2s +4 - +04 1992 Mar 29 2s +3 R MSK/MSD 2011 Mar 27 2s +4 - MSK 2014 O 26 2s +3 - MSK 2018 O 28 2s +4 - +04 2020 D 27 2s +3 - MSK +Z Europe/Warsaw 1:24 - LMT 1880 +1:24 - WMT 1915 Au 5 +1 c CE%sT 1918 S 16 3 +2 O EE%sT 1922 Jun +1 O CE%sT 1940 Jun 23 2 +1 c CE%sT 1944 O +1 O CE%sT 1977 +1 W- CE%sT 1988 +1 E CE%sT +Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16 +0:29:46 - BMT 1894 Jun +1 CH CE%sT 1981 +1 E CE%sT Z Factory 0 - -00 +Z HST -10 - HST +Z Indian/Chagos 4:49:40 - LMT 1907 +5 - +05 1996 +6 - +06 +Z Indian/Maldives 4:54 - LMT 1880 +4:54 - MMT 1960 +5 - +05 +Z Indian/Mauritius 3:50 - LMT 1907 +4 MU +04/+05 +Z MET 1 c ME%sT +Z MST -7 - MST +Z MST7MDT -7 u M%sT +Z PST8PDT -8 u P%sT +Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5 +-11:26:56 - LMT 1911 +-11:30 - -1130 1950 +-11 WS -11/-10 2011 D 29 24 +13 WS +13/+14 +Z Pacific/Auckland 11:39:4 - LMT 1868 N 2 +11:30 NZ NZ%sT 1946 +12 NZ NZ%sT +Z Pacific/Bougainville 10:22:16 - LMT 1880 +9:48:32 - PMMT 1895 +10 - +10 1942 Jul +9 - +09 1945 Au 21 +10 - +10 2014 D 28 2 +11 - +11 +Z Pacific/Chatham 12:13:48 - LMT 1868 N 2 +12:15 - +1215 1946 +12:45 k +1245/+1345 +Z Pacific/Easter -7:17:28 - LMT 1890 +-7:17:28 - EMT 1932 S +-7 x -07/-06 1982 Mar 14 3u +-6 x -06/-05 +Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13 +11 VU +11/+12 +Z Pacific/Fakaofo -11:24:56 - LMT 1901 +-11 - -11 2011 D 30 +13 - +13 +Z Pacific/Fiji 11:55:44 - LMT 1915 O 26 +12 FJ +12/+13 +Z Pacific/Galapagos -5:58:24 - LMT 1931 +-5 - -05 1986 +-6 EC -06/-05 +Z Pacific/Gambier -8:59:48 - LMT 1912 O +-9 - -09 +Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O +11 - +11 +Z Pacific/Guam -14:21 - LMT 1844 D 31 +9:39 - LMT 1901 +10 - GST 1941 D 10 +9 - +09 1944 Jul 31 +10 Gu G%sT 2000 D 23 +10 - ChST +Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12 +-10:30 - HST 1933 Ap 30 2 +-10:30 1 HDT 1933 May 21 12 +-10:30 u H%sT 1947 Jun 8 2 +-10 - HST +Z Pacific/Kanton 0 - -00 1937 Au 31 +-12 - -12 1979 O +-11 - -11 1994 D 31 +13 - +13 +Z Pacific/Kiritimati -10:29:20 - LMT 1901 +-10:40 - -1040 1979 O +-10 - -10 1994 D 31 +14 - +14 +Z Pacific/Kosrae -13:8:4 - LMT 1844 D 31 +10:51:56 - LMT 1901 +11 - +11 1914 O +9 - +09 1919 F +11 - +11 1937 +10 - +10 1941 Ap +9 - +09 1945 Au +11 - +11 1969 O +12 - +12 1999 +11 - +11 +Z Pacific/Kwajalein 11:9:20 - LMT 1901 +11 - +11 1937 +10 - +10 1941 Ap +9 - +09 1944 F 6 +11 - +11 1969 O +-12 - -12 1993 Au 20 24 +12 - +12 +Z Pacific/Marquesas -9:18 - LMT 1912 O +-9:30 - -0930 +Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15 +11:30 - +1130 1942 Au 29 +9 - +09 1945 S 8 +11:30 - +1130 1979 F 10 2 +12 - +12 +Z Pacific/Niue -11:19:40 - LMT 1952 O 16 +-11:20 - -1120 1964 Jul +-11 - -11 +Z Pacific/Norfolk 11:11:52 - LMT 1901 +11:12 - +1112 1951 +11:30 - +1130 1974 O 27 2s +11:30 1 +1230 1975 Mar 2 2s +11:30 - +1130 2015 O 4 2s +11 - +11 2019 Jul +11 AN +11/+12 +Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13 +11 NC +11/+12 +Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5 +-11:22:48 - LMT 1911 +-11 - SST +Z Pacific/Palau -15:2:4 - LMT 1844 D 31 +8:57:56 - LMT 1901 +9 - +09 +Z Pacific/Pitcairn -8:40:20 - LMT 1901 +-8:30 - -0830 1998 Ap 27 +-8 - -08 +Z Pacific/Port_Moresby 9:48:40 - LMT 1880 +9:48:32 - PMMT 1895 +10 - +10 +Z Pacific/Rarotonga 13:20:56 - LMT 1899 D 26 +-10:39:4 - LMT 1952 O 16 +-10:30 - -1030 1978 N 12 +-10 CK -10/-0930 +Z Pacific/Tahiti -9:58:16 - LMT 1912 O +-10 - -10 +Z Pacific/Tarawa 11:32:4 - LMT 1901 +12 - +12 +Z Pacific/Tongatapu 12:19:12 - LMT 1945 S 10 +12:20 - +1220 1961 +13 - +13 1999 +13 TO +13/+14 +Z WET 0 E WE%sT +L Etc/GMT GMT L Australia/Sydney Australia/ACT L Australia/Lord_Howe Australia/LHI L Australia/Sydney Australia/NSW @@ -4185,7 +4195,6 @@ L America/Puerto_Rico America/Tortola L Pacific/Port_Moresby Antarctica/DumontDUrville L Pacific/Auckland Antarctica/McMurdo L Asia/Riyadh Antarctica/Syowa -L Asia/Urumqi Antarctica/Vostok L Europe/Berlin Arctic/Longyearbyen L Asia/Riyadh Asia/Aden L Asia/Qatar Asia/Bahrain diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/zone.tab b/contrib/python/pytz/py2/pytz/zoneinfo/zone.tab index dbcb61793ee..3fa9306afba 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/zone.tab +++ b/contrib/python/pytz/py2/pytz/zoneinfo/zone.tab @@ -48,7 +48,7 @@ AR -3124-06411 America/Argentina/Cordoba Argentina (most areas: CB, CC, CN, ER, AR -2447-06525 America/Argentina/Salta Salta (SA, LP, NQ, RN) AR -2411-06518 America/Argentina/Jujuy Jujuy (JY) AR -2649-06513 America/Argentina/Tucuman Tucuman (TM) -AR -2828-06547 America/Argentina/Catamarca Catamarca (CT); Chubut (CH) +AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH) AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR) AR -3132-06831 America/Argentina/San_Juan San Juan (SJ) AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ) @@ -87,7 +87,7 @@ BN +0456+11455 Asia/Brunei BO -1630-06809 America/La_Paz BQ +120903-0681636 America/Kralendijk BR -0351-03225 America/Noronha Atlantic islands -BR -0127-04829 America/Belem Para (east); Amapa +BR -0127-04829 America/Belem Para (east), Amapa BR -0343-03830 America/Fortaleza Brazil (northeast: MA, PI, CE, RN, PB) BR -0803-03454 America/Recife Pernambuco BR -0712-04812 America/Araguaina Tocantins @@ -107,21 +107,21 @@ BT +2728+08939 Asia/Thimphu BW -2439+02555 Africa/Gaborone BY +5354+02734 Europe/Minsk BZ +1730-08812 America/Belize -CA +4734-05243 America/St_Johns Newfoundland; Labrador (southeast) -CA +4439-06336 America/Halifax Atlantic - NS (most areas); PE +CA +4734-05243 America/St_Johns Newfoundland, Labrador (SE) +CA +4439-06336 America/Halifax Atlantic - NS (most areas), PE CA +4612-05957 America/Glace_Bay Atlantic - NS (Cape Breton) CA +4606-06447 America/Moncton Atlantic - New Brunswick CA +5320-06025 America/Goose_Bay Atlantic - Labrador (most areas) CA +5125-05707 America/Blanc-Sablon AST - QC (Lower North Shore) -CA +4339-07923 America/Toronto Eastern - ON, QC (most areas) +CA +4339-07923 America/Toronto Eastern - ON & QC (most areas) CA +6344-06828 America/Iqaluit Eastern - NU (most areas) -CA +484531-0913718 America/Atikokan EST - ON (Atikokan); NU (Coral H) -CA +4953-09709 America/Winnipeg Central - ON (west); Manitoba +CA +484531-0913718 America/Atikokan EST - ON (Atikokan), NU (Coral H) +CA +4953-09709 America/Winnipeg Central - ON (west), Manitoba CA +744144-0944945 America/Resolute Central - NU (Resolute) CA +624900-0920459 America/Rankin_Inlet Central - NU (central) CA +5024-10439 America/Regina CST - SK (most areas) CA +5017-10750 America/Swift_Current CST - SK (midwest) -CA +5333-11328 America/Edmonton Mountain - AB; BC (E); NT (E); SK (W) +CA +5333-11328 America/Edmonton Mountain - AB, BC(E), NT(E), SK(W) CA +690650-1050310 America/Cambridge_Bay Mountain - NU (west) CA +682059-1334300 America/Inuvik Mountain - NT (west) CA +4906-11631 America/Creston MST - BC (Creston) @@ -207,8 +207,8 @@ HT +1832-07220 America/Port-au-Prince HU +4730+01905 Europe/Budapest ID -0610+10648 Asia/Jakarta Java, Sumatra ID -0002+10920 Asia/Pontianak Borneo (west, central) -ID -0507+11924 Asia/Makassar Borneo (east, south); Sulawesi/Celebes, Bali, Nusa Tengarra; Timor (west) -ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya); Malukus/Moluccas +ID -0507+11924 Asia/Makassar Borneo (east, south), Sulawesi/Celebes, Bali, Nusa Tengarra, Timor (west) +ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya), Malukus/Moluccas IE +5320-00615 Europe/Dublin IL +314650+0351326 Asia/Jerusalem IM +5409-00428 Europe/Isle_of_Man @@ -355,7 +355,7 @@ RU +4310+13156 Asia/Vladivostok MSK+07 - Amur River RU +643337+1431336 Asia/Ust-Nera MSK+07 - Oymyakonsky RU +5934+15048 Asia/Magadan MSK+08 - Magadan RU +4658+14242 Asia/Sakhalin MSK+08 - Sakhalin Island -RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E); N Kuril Is +RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E), N Kuril Is RU +5301+15839 Asia/Kamchatka MSK+09 - Kamchatka RU +6445+17729 Asia/Anadyr MSK+09 - Bering Sea RW -0157+03004 Africa/Kigali @@ -418,7 +418,7 @@ US +470659-1011757 America/North_Dakota/Center Central - ND (Oliver) US +465042-1012439 America/North_Dakota/New_Salem Central - ND (Morton rural) US +471551-1014640 America/North_Dakota/Beulah Central - ND (Mercer) US +394421-1045903 America/Denver Mountain (most areas) -US +433649-1161209 America/Boise Mountain - ID (south); OR (east) +US +433649-1161209 America/Boise Mountain - ID (south), OR (east) US +332654-1120424 America/Phoenix MST - AZ (except Navajo) US +340308-1181434 America/Los_Angeles Pacific US +611305-1495401 America/Anchorage Alaska (most areas) diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/zone1970.tab b/contrib/python/pytz/py2/pytz/zoneinfo/zone1970.tab index 1f1cecb8485..abd9489753f 100644 --- a/contrib/python/pytz/py2/pytz/zoneinfo/zone1970.tab +++ b/contrib/python/pytz/py2/pytz/zoneinfo/zone1970.tab @@ -37,7 +37,7 @@ #country- #codes coordinates TZ comments AD +4230+00131 Europe/Andorra -AE,OM,RE,SC,TF +2518+05518 Asia/Dubai Crozet, Scattered Is +AE,OM,RE,SC,TF +2518+05518 Asia/Dubai Crozet AF +3431+06912 Asia/Kabul AL +4120+01950 Europe/Tirane AM +4011+04430 Asia/Yerevan @@ -47,12 +47,13 @@ AQ -6736+06253 Antarctica/Mawson Mawson AQ -6448-06406 Antarctica/Palmer Palmer AQ -6734-06808 Antarctica/Rothera Rothera AQ -720041+0023206 Antarctica/Troll Troll +AQ -7824+10654 Antarctica/Vostok Vostok AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF) AR -3124-06411 America/Argentina/Cordoba most areas: CB, CC, CN, ER, FM, MN, SE, SF AR -2447-06525 America/Argentina/Salta Salta (SA, LP, NQ, RN) AR -2411-06518 America/Argentina/Jujuy Jujuy (JY) AR -2649-06513 America/Argentina/Tucuman Tucumán (TM) -AR -2828-06547 America/Argentina/Catamarca Catamarca (CT); Chubut (CH) +AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH) AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR) AR -3132-06831 America/Argentina/San_Juan San Juan (SJ) AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ) @@ -81,7 +82,7 @@ BG +4241+02319 Europe/Sofia BM +3217-06446 Atlantic/Bermuda BO -1630-06809 America/La_Paz BR -0351-03225 America/Noronha Atlantic islands -BR -0127-04829 America/Belem Pará (east); Amapá +BR -0127-04829 America/Belem Pará (east), Amapá BR -0343-03830 America/Fortaleza Brazil (northeast: MA, PI, CE, RN, PB) BR -0803-03454 America/Recife Pernambuco BR -0712-04812 America/Araguaina Tocantins @@ -99,19 +100,19 @@ BR -0958-06748 America/Rio_Branco Acre BT +2728+08939 Asia/Thimphu BY +5354+02734 Europe/Minsk BZ +1730-08812 America/Belize -CA +4734-05243 America/St_Johns Newfoundland; Labrador (southeast) -CA +4439-06336 America/Halifax Atlantic - NS (most areas); PE +CA +4734-05243 America/St_Johns Newfoundland, Labrador (SE) +CA +4439-06336 America/Halifax Atlantic - NS (most areas), PE CA +4612-05957 America/Glace_Bay Atlantic - NS (Cape Breton) CA +4606-06447 America/Moncton Atlantic - New Brunswick CA +5320-06025 America/Goose_Bay Atlantic - Labrador (most areas) -CA,BS +4339-07923 America/Toronto Eastern - ON, QC (most areas) +CA,BS +4339-07923 America/Toronto Eastern - ON & QC (most areas) CA +6344-06828 America/Iqaluit Eastern - NU (most areas) -CA +4953-09709 America/Winnipeg Central - ON (west); Manitoba +CA +4953-09709 America/Winnipeg Central - ON (west), Manitoba CA +744144-0944945 America/Resolute Central - NU (Resolute) CA +624900-0920459 America/Rankin_Inlet Central - NU (central) CA +5024-10439 America/Regina CST - SK (most areas) CA +5017-10750 America/Swift_Current CST - SK (midwest) -CA +5333-11328 America/Edmonton Mountain - AB; BC (E); NT (E); SK (W) +CA +5333-11328 America/Edmonton Mountain - AB, BC(E), NT(E), SK(W) CA +690650-1050310 America/Cambridge_Bay Mountain - NU (west) CA +682059-1334300 America/Inuvik Mountain - NT (west) CA +5546-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John) @@ -126,7 +127,7 @@ CL -3327-07040 America/Santiago most of Chile CL -5309-07055 America/Punta_Arenas Region of Magallanes CL -2709-10926 Pacific/Easter Easter Island CN +3114+12128 Asia/Shanghai Beijing Time -CN,AQ +4348+08735 Asia/Urumqi Xinjiang Time, Vostok +CN +4348+08735 Asia/Urumqi Xinjiang Time CO +0436-07405 America/Bogota CR +0956-08405 America/Costa_Rica CU +2308-08222 America/Havana @@ -171,8 +172,8 @@ HT +1832-07220 America/Port-au-Prince HU +4730+01905 Europe/Budapest ID -0610+10648 Asia/Jakarta Java, Sumatra ID -0002+10920 Asia/Pontianak Borneo (west, central) -ID -0507+11924 Asia/Makassar Borneo (east, south); Sulawesi/Celebes, Bali, Nusa Tengarra; Timor (west) -ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya); Malukus/Moluccas +ID -0507+11924 Asia/Makassar Borneo (east, south), Sulawesi/Celebes, Bali, Nusa Tengarra, Timor (west) +ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya), Malukus/Moluccas IE +5320-00615 Europe/Dublin IL +314650+0351326 Asia/Jerusalem IN +2232+08822 Asia/Kolkata @@ -251,7 +252,7 @@ PK +2452+06703 Asia/Karachi PL +5215+02100 Europe/Warsaw PM +4703-05620 America/Miquelon PN -2504-13005 Pacific/Pitcairn -PR,AG,CA,AI,AW,BL,BQ,CW,DM,GD,GP,KN,LC,MF,MS,SX,TT,VC,VG,VI +182806-0660622 America/Puerto_Rico AST +PR,AG,CA,AI,AW,BL,BQ,CW,DM,GD,GP,KN,LC,MF,MS,SX,TT,VC,VG,VI +182806-0660622 America/Puerto_Rico AST - QC (Lower North Shore) PS +3130+03428 Asia/Gaza Gaza Strip PS +313200+0350542 Asia/Hebron West Bank PT +3843-00908 Europe/Lisbon Portugal (mainland) @@ -287,7 +288,7 @@ RU +4310+13156 Asia/Vladivostok MSK+07 - Amur River RU +643337+1431336 Asia/Ust-Nera MSK+07 - Oymyakonsky RU +5934+15048 Asia/Magadan MSK+08 - Magadan RU +4658+14242 Asia/Sakhalin MSK+08 - Sakhalin Island -RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E); N Kuril Is +RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E), N Kuril Is RU +5301+15839 Asia/Kamchatka MSK+09 - Kamchatka RU +6445+17729 Asia/Anadyr MSK+09 - Bering Sea SA,AQ,KW,YE +2438+04643 Asia/Riyadh Syowa @@ -329,7 +330,7 @@ US +470659-1011757 America/North_Dakota/Center Central - ND (Oliver) US +465042-1012439 America/North_Dakota/New_Salem Central - ND (Morton rural) US +471551-1014640 America/North_Dakota/Beulah Central - ND (Mercer) US +394421-1045903 America/Denver Mountain (most areas) -US +433649-1161209 America/Boise Mountain - ID (south); OR (east) +US +433649-1161209 America/Boise Mountain - ID (south), OR (east) US,CA +332654-1120424 America/Phoenix MST - AZ (most areas), Creston BC US +340308-1181434 America/Los_Angeles Pacific US +611305-1495401 America/Anchorage Alaska (most areas) diff --git a/contrib/python/pytz/py2/pytz/zoneinfo/zonenow.tab b/contrib/python/pytz/py2/pytz/zoneinfo/zonenow.tab new file mode 100644 index 00000000000..b6f2910956f --- /dev/null +++ b/contrib/python/pytz/py2/pytz/zoneinfo/zonenow.tab @@ -0,0 +1,303 @@ +# tzdb timezone descriptions, for users who do not care about old timestamps +# +# This file is in the public domain. +# +# From Paul Eggert (2023-12-18): +# This file contains a table where each row stands for a timezone +# where civil timestamps are predicted to agree from now on. +# This file is like zone1970.tab (see zone1970.tab's coments), +# but with the following changes: +# +# 1. Each timezone corresponds to a set of clocks that are planned +# to agree from now on. This is a larger set of clocks than in +# zone1970.tab, where each timezone's clocks must agree from 1970 on. +# 2. The first column is irrelevant and ignored. +# 3. The table is sorted in a different way: +# first by standard time UTC offset; +# then, if DST is used, by daylight saving UTC offset; +# then by time zone abbreviation. +# 4. Every timezone has a nonempty comments column, with wording +# distinguishing the timezone only from other timezones with the +# same UTC offset at some point during the year. +# +# The format of this table is experimental, and may change in future versions. +# +# This table is intended as an aid for users, to help them select timezones +# appropriate for their practical needs. It is not intended to take or +# endorse any position on legal or territorial claims. +# +#XX coordinates TZ comments +# +# -11 - SST +XX -1416-17042 Pacific/Pago_Pago Midway; Samoa ("SST") +# +# -11 +XX -1901-16955 Pacific/Niue Niue +# +# -10 - HST +XX +211825-1575130 Pacific/Honolulu Hawaii ("HST") +# +# -10 +XX -1732-14934 Pacific/Tahiti Tahiti; Cook Islands +# +# -10/-09 - HST / HDT (North America DST) +XX +515248-1763929 America/Adak western Aleutians in Alaska ("HST/HDT") +# +# -09:30 +XX -0900-13930 Pacific/Marquesas Marquesas +# +# -09 +XX -2308-13457 Pacific/Gambier Gambier +# +# -09/-08 - AKST/AKDT (North America DST) +XX +611305-1495401 America/Anchorage most of Alaska ("AKST/AKDT") +# +# -08 +XX -2504-13005 Pacific/Pitcairn Pitcairn +# +# -08/-07 - PST/PDT (North America DST) +XX +340308-1181434 America/Los_Angeles Pacific ("PST/PDT") - US & Canada; Mexico near US border +# +# -07 - MST +XX +332654-1120424 America/Phoenix Mountain Standard ("MST") - Arizona; western Mexico; Yukon +# +# -07/-06 - MST/MDT (North America DST) +XX +394421-1045903 America/Denver Mountain ("MST/MDT") - US & Canada; Mexico near US border +# +# -06 +XX -0054-08936 Pacific/Galapagos Galápagos +# +# -06 - CST +XX +1924-09909 America/Mexico_City Central Standard ("CST") - Saskatchewan; central Mexico; Central America +# +# -06/-05 (Chile DST) +XX -2709-10926 Pacific/Easter Easter Island +# +# -06/-05 - CST/CDT (North America DST) +XX +415100-0873900 America/Chicago Central ("CST/CDT") - US & Canada; Mexico near US border +# +# -05 +XX -1203-07703 America/Lima eastern South America +# +# -05 - EST +XX +175805-0764736 America/Jamaica Eastern Standard ("EST") - Caymans; Jamaica; eastern Mexico; Panama +# +# -05/-04 - CST/CDT (Cuba DST) +XX +2308-08222 America/Havana Cuba +# +# -05/-04 - EST/EDT (North America DST) +XX +404251-0740023 America/New_York Eastern ("EST/EDT") - US & Canada +# +# -04 +XX +1030-06656 America/Caracas western South America +# +# -04 - AST +XX +1828-06954 America/Santo_Domingo Atlantic Standard ("AST") - eastern Caribbean +# +# -04/-03 (Chile DST) +XX -3327-07040 America/Santiago most of Chile +# +# -04/-03 (Paraguay DST) +XX -2516-05740 America/Asuncion Paraguay +# +# -04/-03 - AST/ADT (North America DST) +XX +4439-06336 America/Halifax Atlantic ("AST/ADT") - Canada; Bermuda +# +# -03:30/-02:30 - NST/NDT (North America DST) +XX +4734-05243 America/St_Johns Newfoundland ("NST/NDT") +# +# -03 +XX -2332-04637 America/Sao_Paulo eastern South America +# +# -03/-02 (North America DST) +XX +4703-05620 America/Miquelon St Pierre & Miquelon +# +# -02 +XX -0351-03225 America/Noronha Fernando de Noronha; South Georgia +# +# -02/-01 (EU DST) +XX +6411-05144 America/Nuuk most of Greenland +# +# -01 +XX +1455-02331 Atlantic/Cape_Verde Cape Verde +# +# -01/+00 (EU DST) +XX +3744-02540 Atlantic/Azores Azores +# -01/+00 (EU DST) until 2024-03-31; then -02/-01 (EU DST) +XX +7029-02158 America/Scoresbysund Ittoqqortoormiit +# +# +00 - GMT +XX +0519-00402 Africa/Abidjan far western Africa; Iceland ("GMT") +# +# +00/+01 - GMT/BST (EU DST) +XX +513030-0000731 Europe/London United Kingdom ("GMT/BST") +# +# +00/+01 - WET/WEST (EU DST) +XX +3843-00908 Europe/Lisbon western Europe ("WET/WEST") +# +# +00/+02 - Troll DST +XX -720041+0023206 Antarctica/Troll Troll Station in Antarctica +# +# +01 - CET +XX +3647+00303 Africa/Algiers Algeria, Tunisia ("CET") +# +# +01 - WAT +XX +0627+00324 Africa/Lagos western Africa ("WAT") +# +# +01/+00 - IST/GMT (EU DST in reverse) +XX +5320-00615 Europe/Dublin Ireland ("IST/GMT") +# +# +01/+00 - (Morocco DST) +XX +3339-00735 Africa/Casablanca Morocco +# +# +01/+02 - CET/CEST (EU DST) +XX +4852+00220 Europe/Paris central Europe ("CET/CEST") +# +# +02 - CAT +XX -2558+03235 Africa/Maputo central Africa ("CAT") +# +# +02 - EET +XX +3254+01311 Africa/Tripoli Libya; Kaliningrad ("EET") +# +# +02 - SAST +XX -2615+02800 Africa/Johannesburg southern Africa ("SAST") +# +# +02/+03 - EET/EEST (EU DST) +XX +3758+02343 Europe/Athens eastern Europe ("EET/EEST") +# +# +02/+03 - EET/EEST (Egypt DST) +XX +3003+03115 Africa/Cairo Egypt +# +# +02/+03 - EET/EEST (Lebanon DST) +XX +3353+03530 Asia/Beirut Lebanon +# +# +02/+03 - EET/EEST (Moldova DST) +XX +4700+02850 Europe/Chisinau Moldova +# +# +02/+03 - EET/EEST (Palestine DST) +XX +3130+03428 Asia/Gaza Palestine +# +# +02/+03 - IST/IDT (Israel DST) +XX +314650+0351326 Asia/Jerusalem Israel +# +# +03 +XX +4101+02858 Europe/Istanbul Near East; Belarus +# +# +03 - EAT +XX -0117+03649 Africa/Nairobi eastern Africa ("EAT") +# +# +03 - MSK +XX +554521+0373704 Europe/Moscow Moscow ("MSK") +# +# +03:30 +XX +3540+05126 Asia/Tehran Iran +# +# +04 +XX +2518+05518 Asia/Dubai Russia; Caucasus; Persian Gulf; Seychelles; Réunion +# +# +04:30 +XX +3431+06912 Asia/Kabul Afghanistan +# +# +05 +XX +4120+06918 Asia/Tashkent Russia; west Kazakhstan; Tajikistan; Turkmenistan; Uzbekistan; Maldives +# +# +05 - PKT +XX +2452+06703 Asia/Karachi Pakistan ("PKT") +# +# +05:30 +XX +0656+07951 Asia/Colombo Sri Lanka +# +# +05:30 - IST +XX +2232+08822 Asia/Kolkata India ("IST") +# +# +05:45 +XX +2743+08519 Asia/Kathmandu Nepal +# +# +06 +XX +2343+09025 Asia/Dhaka Russia; Kyrgyzstan; Bhutan; Bangladesh; Chagos +# +06 until 2024-03-01; then +05 +XX +4315+07657 Asia/Almaty Kazakhstan (except western areas) +# +# +06:30 +XX +1647+09610 Asia/Yangon Myanmar; Cocos +# +# +07 +XX +1345+10031 Asia/Bangkok Russia; Indochina; Christmas Island +# +# +07 - WIB +XX -0610+10648 Asia/Jakarta Indonesia ("WIB") +# +# +08 +XX +0117+10351 Asia/Singapore Russia; Brunei; Malaysia; Singapore +# +# +08 - AWST +XX -3157+11551 Australia/Perth Western Australia ("AWST") +# +# +08 - CST +XX +3114+12128 Asia/Shanghai China ("CST") +# +# +08 - HKT +XX +2217+11409 Asia/Hong_Kong Hong Kong ("HKT") +# +# +08 - PHT +XX +1435+12100 Asia/Manila Philippines ("PHT") +# +# +08 - WITA +XX -0507+11924 Asia/Makassar Indonesia ("WITA") +# +# +08:45 +XX -3143+12852 Australia/Eucla Eucla +# +# +09 +XX +5203+11328 Asia/Chita Russia; Palau; East Timor +# +# +09 - JST +XX +353916+1394441 Asia/Tokyo Japan ("JST") +# +# +09 - KST +XX +3733+12658 Asia/Seoul Korea ("KST") +# +# +09 - WIT +XX -0232+14042 Asia/Jayapura Indonesia ("WIT") +# +# +09:30 - ACST +XX -1228+13050 Australia/Darwin Northern Territory ("ACST") +# +# +09:30/+10:30 - ACST/ACDT (Australia DST) +XX -3455+13835 Australia/Adelaide South Australia ("ACST/ACDT") +# +# +10 +XX +4310+13156 Asia/Vladivostok Russia; Yap; Chuuk; Papua New Guinea; Dumont d'Urville +# +# +10 - AEST +XX -2728+15302 Australia/Brisbane Queensland ("AEST") +# +# +10 - ChST +XX +1328+14445 Pacific/Guam Mariana Islands ("ChST") +# +# +10/+11 - AEST/AEDT (Australia DST) +XX -3352+15113 Australia/Sydney southeast Australia ("AEST/AEDT") +# +# +10:30/+11 +XX -3133+15905 Australia/Lord_Howe Lord Howe Island +# +# +11 +XX -0613+15534 Pacific/Bougainville Russia; Kosrae; Bougainville; Solomons +# +# +11/+12 (Australia DST) +XX -2903+16758 Pacific/Norfolk Norfolk Island +# +# +12 +XX +5301+15839 Asia/Kamchatka Russia; Tuvalu; Fiji; etc. +# +# +12/+13 (New Zealand DST) +XX -3652+17446 Pacific/Auckland New Zealand ("NZST/NZDT") +# +# +12:45/+13:45 (Chatham DST) +XX -4357-17633 Pacific/Chatham Chatham Islands +# +# +13 +XX -210800-1751200 Pacific/Tongatapu Kanton; Tokelau; Samoa (western); Tonga +# +# +14 +XX +0152-15720 Pacific/Kiritimati Kiritimati diff --git a/contrib/python/pytz/py2/ya.make b/contrib/python/pytz/py2/ya.make index b34013640c8..d69a643b225 100644 --- a/contrib/python/pytz/py2/ya.make +++ b/contrib/python/pytz/py2/ya.make @@ -2,7 +2,7 @@ PY2_LIBRARY() -VERSION(2023.3.post1) +VERSION(2024.1) LICENSE(MIT) @@ -628,6 +628,7 @@ RESOURCE_FILES( pytz/zoneinfo/tzdata.zi pytz/zoneinfo/zone.tab pytz/zoneinfo/zone1970.tab + pytz/zoneinfo/zonenow.tab ) END() diff --git a/contrib/python/pytz/py3/.dist-info/METADATA b/contrib/python/pytz/py3/.dist-info/METADATA index 9aec2fcc9b4..2cb10460745 100644 --- a/contrib/python/pytz/py3/.dist-info/METADATA +++ b/contrib/python/pytz/py3/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pytz -Version: 2023.3.post1 +Version: 2024.1 Summary: World timezone definitions, modern and historical Home-page: http://pythonhosted.org/pytz Author: Stuart Bishop @@ -36,6 +36,7 @@ Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Topic :: Software Development :: Libraries :: Python Modules +License-File: LICENSE.txt pytz - World Timezone Definitions for Python ============================================ diff --git a/contrib/python/pytz/py3/pytz/__init__.py b/contrib/python/pytz/py3/pytz/__init__.py index f975943bc7a..55c1f965673 100644 --- a/contrib/python/pytz/py3/pytz/__init__.py +++ b/contrib/python/pytz/py3/pytz/__init__.py @@ -22,8 +22,8 @@ from pytz.tzfile import build_tzinfo # The IANA (nee Olson) database is updated several times a year. -OLSON_VERSION = '2023c' -VERSION = '2023.3.post1' # pip compatible version number. +OLSON_VERSION = '2024a' +VERSION = '2024.1' # pip compatible version number. __version__ = VERSION OLSEN_VERSION = OLSON_VERSION # Old releases had this misspelling diff --git a/contrib/python/pytz/py3/pytz/tests/test_tzinfo.py b/contrib/python/pytz/py3/pytz/tests/test_tzinfo.py index 7d74920e135..000daabe86c 100644 --- a/contrib/python/pytz/py3/pytz/tests/test_tzinfo.py +++ b/contrib/python/pytz/py3/pytz/tests/test_tzinfo.py @@ -27,8 +27,8 @@ from pytz.tzinfo import DstTzInfo, StaticTzInfo # noqa # I test for expected version to ensure the correct version of pytz is # actually being tested. -EXPECTED_VERSION = '2023.3.post1' -EXPECTED_OLSON_VERSION = '2023c' +EXPECTED_VERSION = '2024.1' +EXPECTED_OLSON_VERSION = '2024a' fmt = '%Y-%m-%d %H:%M:%S %Z%z' diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Godthab b/contrib/python/pytz/py3/pytz/zoneinfo/America/Godthab Binary files differindex adb7934aadf..29958cf12a9 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Godthab +++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Godthab diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Miquelon b/contrib/python/pytz/py3/pytz/zoneinfo/America/Miquelon Binary files differindex 5eccd861071..f780ea990ff 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Miquelon +++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Miquelon diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Montreal b/contrib/python/pytz/py3/pytz/zoneinfo/America/Montreal Binary files differindex 6752c5b0528..170137333f9 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Montreal +++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Montreal diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Nassau b/contrib/python/pytz/py3/pytz/zoneinfo/America/Nassau Binary files differindex 6752c5b0528..170137333f9 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Nassau +++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Nassau diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Nipigon b/contrib/python/pytz/py3/pytz/zoneinfo/America/Nipigon Binary files differindex 6752c5b0528..170137333f9 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Nipigon +++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Nipigon diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Nuuk b/contrib/python/pytz/py3/pytz/zoneinfo/America/Nuuk Binary files differindex adb7934aadf..29958cf12a9 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Nuuk +++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Nuuk diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Scoresbysund b/contrib/python/pytz/py3/pytz/zoneinfo/America/Scoresbysund Binary files differindex 286d13216eb..9bf411ef5ad 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Scoresbysund +++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Scoresbysund diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Thunder_Bay b/contrib/python/pytz/py3/pytz/zoneinfo/America/Thunder_Bay Binary files differindex 6752c5b0528..170137333f9 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Thunder_Bay +++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Thunder_Bay diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/America/Toronto b/contrib/python/pytz/py3/pytz/zoneinfo/America/Toronto Binary files differindex 6752c5b0528..170137333f9 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/America/Toronto +++ b/contrib/python/pytz/py3/pytz/zoneinfo/America/Toronto diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Casey b/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Casey Binary files differindex 4b98133d7af..586a7653ef2 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Casey +++ b/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Casey diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Vostok b/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Vostok Binary files differindex 62bdcac14db..016e06b1bbc 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Vostok +++ b/contrib/python/pytz/py3/pytz/zoneinfo/Antarctica/Vostok diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Almaty b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Almaty Binary files differindex 91c916a3a5d..855abbd6e3e 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Almaty +++ b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Almaty diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Gaza b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Gaza Binary files differindex c9b2ff90823..dd5781e8ae2 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Gaza +++ b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Gaza diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Hebron b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Hebron Binary files differindex 64194fd85c6..a64fc9e7b25 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Hebron +++ b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Hebron diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Ho_Chi_Minh b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Ho_Chi_Minh Binary files differindex a213d290e1a..9c45ed991a2 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Ho_Chi_Minh +++ b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Ho_Chi_Minh diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Qostanay b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Qostanay Binary files differindex f8baf676496..2ee9ef7e985 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Qostanay +++ b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Qostanay diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Saigon b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Saigon Binary files differindex a213d290e1a..9c45ed991a2 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Saigon +++ b/contrib/python/pytz/py3/pytz/zoneinfo/Asia/Saigon diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/Canada/Eastern b/contrib/python/pytz/py3/pytz/zoneinfo/Canada/Eastern Binary files differindex 6752c5b0528..170137333f9 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/Canada/Eastern +++ b/contrib/python/pytz/py3/pytz/zoneinfo/Canada/Eastern diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/iso3166.tab b/contrib/python/pytz/py3/pytz/zoneinfo/iso3166.tab index be3348d11a7..402c015ec6b 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/iso3166.tab +++ b/contrib/python/pytz/py3/pytz/zoneinfo/iso3166.tab @@ -3,17 +3,22 @@ # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. # -# From Paul Eggert (2022-11-18): +# From Paul Eggert (2023-09-06): # This file contains a table of two-letter country codes. Columns are # separated by a single tab. Lines beginning with '#' are comments. # All text uses UTF-8 encoding. The columns of the table are as follows: # # 1. ISO 3166-1 alpha-2 country code, current as of -# ISO 3166-1 N1087 (2022-09-02). See: Updates on ISO 3166-1 -# https://isotc.iso.org/livelink/livelink/Open/16944257 -# 2. The usual English name for the coded region, -# chosen so that alphabetic sorting of subsets produces helpful lists. -# This is not the same as the English name in the ISO 3166 tables. +# ISO/TC 46 N1108 (2023-04-05). See: ISO/TC 46 Documents +# https://www.iso.org/committee/48750.html?view=documents +# 2. The usual English name for the coded region. This sometimes +# departs from ISO-listed names, sometimes so that sorted subsets +# of names are useful (e.g., "Samoa (American)" and "Samoa +# (western)" rather than "American Samoa" and "Samoa"), +# sometimes to avoid confusion among non-experts (e.g., +# "Czech Republic" and "Turkey" rather than "Czechia" and "Türkiye"), +# and sometimes to omit needless detail or churn (e.g., "Netherlands" +# rather than "Netherlands (the)" or "Netherlands (Kingdom of the)"). # # The table is sorted by country code. # diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/leapseconds b/contrib/python/pytz/py3/pytz/zoneinfo/leapseconds index a6a170aa702..ce150bfe0dc 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/leapseconds +++ b/contrib/python/pytz/py3/pytz/zoneinfo/leapseconds @@ -3,13 +3,10 @@ # This file is in the public domain. # This file is generated automatically from the data in the public-domain -# NIST format leap-seconds.list file, which can be copied from -# <ftp://ftp.nist.gov/pub/time/leap-seconds.list> -# or <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>. -# The NIST file is used instead of its IERS upstream counterpart +# NIST/IERS format leap-seconds.list file, which can be copied from # <https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list> -# because under US law the NIST file is public domain -# whereas the IERS file's copyright and license status is unclear. +# or, in a variant with different comments, from +# <ftp://ftp.boulder.nist.gov/pub/time/leap-seconds.list>. # For more about leap-seconds.list, please see # The NTP Timescale and Leap Seconds # <https://www.eecis.udel.edu/~mills/leap.html>. @@ -72,11 +69,11 @@ Leap 2016 Dec 31 23:59:60 + S # Any additional leap seconds will come after this. # This Expires line is commented out for now, # so that pre-2020a zic implementations do not reject this file. -#Expires 2023 Dec 28 00:00:00 +#Expires 2024 Dec 28 00:00:00 # POSIX timestamps for the data in this file: -#updated 1467936000 (2016-07-08 00:00:00 UTC) -#expires 1703721600 (2023-12-28 00:00:00 UTC) +#updated 1704708379 (2024-01-08 10:06:19 UTC) +#expires 1735344000 (2024-12-28 00:00:00 UTC) -# Updated through IERS Bulletin C65 -# File expires on: 28 December 2023 +# Updated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat) +# File expires on 28 December 2024 diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/tzdata.zi b/contrib/python/pytz/py3/pytz/zoneinfo/tzdata.zi index 23d99be4535..b5a03be786d 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/tzdata.zi +++ b/contrib/python/pytz/py3/pytz/zoneinfo/tzdata.zi @@ -1,4 +1,4 @@ -# version unknown-dirty +# version unknown # This zic input file is in the public domain. R d 1916 o - Jun 14 23s 1 S R d 1916 1919 - O Su>=1 23s 0 - @@ -22,27 +22,6 @@ R d 1978 o - Mar 24 1 1 S R d 1978 o - S 22 3 0 - R d 1980 o - Ap 25 0 1 S R d 1980 o - O 31 2 0 - -Z Africa/Algiers 0:12:12 - LMT 1891 Mar 16 -0:9:21 - PMT 1911 Mar 11 -0 d WE%sT 1940 F 25 2 -1 d CE%sT 1946 O 7 -0 - WET 1956 Ja 29 -1 - CET 1963 Ap 14 -0 d WE%sT 1977 O 21 -1 d CE%sT 1979 O 26 -0 d WE%sT 1981 May -1 - CET -Z Atlantic/Cape_Verde -1:34:4 - LMT 1912 Ja 1 2u --2 - -02 1942 S --2 1 -01 1945 O 15 --2 - -02 1975 N 25 2 --1 - -01 -Z Africa/Ndjamena 1:0:12 - LMT 1912 -1 - WAT 1979 O 14 -1 1 WAST 1980 Mar 8 -1 - WAT -Z Africa/Abidjan -0:16:8 - LMT 1912 -0 - GMT R K 1940 o - Jul 15 0 1 S R K 1940 o - O 1 0 0 - R K 1941 o - Ap 15 0 1 S @@ -77,21 +56,6 @@ R K 2014 o - Jul 31 24 1 S R K 2014 o - S lastTh 24 0 - R K 2023 ma - Ap lastF 0 1 S R K 2023 ma - O lastTh 24 0 - -Z Africa/Cairo 2:5:9 - LMT 1900 O -2 K EE%sT -Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u --1 - -01 1975 -0 - GMT -Z Africa/Nairobi 2:27:16 - LMT 1908 May -2:30 - +0230 1928 Jun 30 24 -3 - EAT 1930 Ja 4 24 -2:30 - +0230 1936 D 31 24 -2:45 - +0245 1942 Jul 31 24 -3 - EAT -Z Africa/Monrovia -0:43:8 - LMT 1882 --0:43:8 - MMT 1919 Mar --0:44:30 - MMT 1972 Ja 7 -0 - GMT R L 1951 o - O 14 2 1 S R L 1952 o - Ja 1 0 0 - R L 1953 o - O 9 2 1 S @@ -109,21 +73,10 @@ R L 1997 o - Ap 4 0 1 S R L 1997 o - O 4 0 0 - R L 2013 o - Mar lastF 1 1 S R L 2013 o - O lastF 2 0 - -Z Africa/Tripoli 0:52:44 - LMT 1920 -1 L CE%sT 1959 -2 - EET 1982 -1 L CE%sT 1990 May 4 -2 - EET 1996 S 30 -1 L CE%sT 1997 O 4 -2 - EET 2012 N 10 2 -1 L CE%sT 2013 O 25 2 -2 - EET R MU 1982 o - O 10 0 1 - R MU 1983 o - Mar 21 0 0 - R MU 2008 o - O lastSu 2 1 - R MU 2009 o - Mar lastSu 2 0 - -Z Indian/Mauritius 3:50 - LMT 1907 -4 MU +04/+05 R M 1939 o - S 12 0 1 - R M 1939 o - N 19 0 0 - R M 1940 o - F 25 0 1 - @@ -307,53 +260,15 @@ R M 2086 o - Ap 14 3 -1 - R M 2086 o - May 19 2 0 - R M 2087 o - Mar 30 3 -1 - R M 2087 o - May 11 2 0 - -Z Africa/Casablanca -0:30:20 - LMT 1913 O 26 -0 M +00/+01 1984 Mar 16 -1 - +01 1986 -0 M +00/+01 2018 O 28 3 -1 M +01/+00 -Z Africa/El_Aaiun -0:52:48 - LMT 1934 --1 - -01 1976 Ap 14 -0 M +00/+01 2018 O 28 3 -1 M +01/+00 -Z Africa/Maputo 2:10:20 - LMT 1903 Mar -2 - CAT R NA 1994 o - Mar 21 0 -1 WAT R NA 1994 2017 - S Su>=1 2 0 CAT R NA 1995 2017 - Ap Su>=1 2 -1 WAT -Z Africa/Windhoek 1:8:24 - LMT 1892 F 8 -1:30 - +0130 1903 Mar -2 - SAST 1942 S 20 2 -2 1 SAST 1943 Mar 21 2 -2 - SAST 1990 Mar 21 -2 NA %s -Z Africa/Lagos 0:13:35 - LMT 1905 Jul -0 - GMT 1908 Jul -0:13:35 - LMT 1914 -0:30 - +0030 1919 S -1 - WAT -Z Africa/Sao_Tome 0:26:56 - LMT 1884 --0:36:45 - LMT 1912 Ja 1 0u -0 - GMT 2018 Ja 1 1 -1 - WAT 2019 Ja 1 2 -0 - GMT R SA 1942 1943 - S Su>=15 2 1 - R SA 1943 1944 - Mar Su>=15 2 0 - -Z Africa/Johannesburg 1:52 - LMT 1892 F 8 -1:30 - SAST 1903 Mar -2 SA SAST R SD 1970 o - May 1 0 1 S R SD 1970 1985 - O 15 0 0 - R SD 1971 o - Ap 30 0 1 S R SD 1972 1985 - Ap lastSu 0 1 S -Z Africa/Khartoum 2:10:8 - LMT 1931 -2 SD CA%sT 2000 Ja 15 12 -3 - EAT 2017 N -2 - CAT -Z Africa/Juba 2:6:28 - LMT 1931 -2 SD CA%sT 2000 Ja 15 12 -3 - EAT 2021 F -2 - CAT R n 1939 o - Ap 15 23s 1 S R n 1939 o - N 18 23s 0 - R n 1940 o - F 25 23s 1 S @@ -379,80 +294,14 @@ R n 2005 o - May 1 0s 1 S R n 2005 o - S 30 1s 0 - R n 2006 2008 - Mar lastSu 2s 1 S R n 2006 2008 - O lastSu 2s 0 - -Z Africa/Tunis 0:40:44 - LMT 1881 May 12 -0:9:21 - PMT 1911 Mar 11 -1 n CE%sT -Z Antarctica/Casey 0 - -00 1969 -8 - +08 2009 O 18 2 -11 - +11 2010 Mar 5 2 -8 - +08 2011 O 28 2 -11 - +11 2012 F 21 17u -8 - +08 2016 O 22 -11 - +11 2018 Mar 11 4 -8 - +08 2018 O 7 4 -11 - +11 2019 Mar 17 3 -8 - +08 2019 O 4 3 -11 - +11 2020 Mar 8 3 -8 - +08 2020 O 4 0:1 -11 - +11 -Z Antarctica/Davis 0 - -00 1957 Ja 13 -7 - +07 1964 N -0 - -00 1969 F -7 - +07 2009 O 18 2 -5 - +05 2010 Mar 10 20u -7 - +07 2011 O 28 2 -5 - +05 2012 F 21 20u -7 - +07 -Z Antarctica/Mawson 0 - -00 1954 F 13 -6 - +06 2009 O 18 2 -5 - +05 R Tr 2005 ma - Mar lastSu 1u 2 +02 R Tr 2004 ma - O lastSu 1u 0 +00 -Z Antarctica/Troll 0 - -00 2005 F 12 -0 Tr %s -Z Antarctica/Rothera 0 - -00 1976 D --3 - -03 -Z Asia/Kabul 4:36:48 - LMT 1890 -4 - +04 1945 -4:30 - +0430 R AM 2011 o - Mar lastSu 2s 1 - R AM 2011 o - O lastSu 2s 0 - -Z Asia/Yerevan 2:58 - LMT 1924 May 2 -3 - +03 1957 Mar -4 R +04/+05 1991 Mar 31 2s -3 R +03/+04 1995 S 24 2s -4 - +04 1997 -4 R +04/+05 2011 -4 AM +04/+05 R AZ 1997 2015 - Mar lastSu 4 1 - R AZ 1997 2015 - O lastSu 5 0 - -Z Asia/Baku 3:19:24 - LMT 1924 May 2 -3 - +03 1957 Mar -4 R +04/+05 1991 Mar 31 2s -3 R +03/+04 1992 S lastSu 2s -4 - +04 1996 -4 E +04/+05 1997 -4 AZ +04/+05 R BD 2009 o - Jun 19 23 1 - R BD 2009 o - D 31 24 0 - -Z Asia/Dhaka 6:1:40 - LMT 1890 -5:53:20 - HMT 1941 O -6:30 - +0630 1942 May 15 -5:30 - +0530 1942 S -6:30 - +0630 1951 S 30 -6 - +06 2009 -6 BD +06/+07 -Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15 -5:30 - +0530 1987 O -6 - +06 -Z Indian/Chagos 4:49:40 - LMT 1907 -5 - +05 1996 -6 - +06 -Z Asia/Yangon 6:24:47 - LMT 1880 -6:24:47 - RMT 1920 -6:30 - +0630 1942 May -9 - +09 1945 May 3 -6:30 - +0630 R Sh 1919 o - Ap 12 24 1 D R Sh 1919 o - S 30 24 0 S R Sh 1940 o - Jun 1 0 1 D @@ -470,11 +319,6 @@ R Sh 1948 1949 - S 30 24 0 S R CN 1986 o - May 4 2 1 D R CN 1986 1991 - S Su>=11 2 0 S R CN 1987 1991 - Ap Su>=11 2 1 D -Z Asia/Shanghai 8:5:43 - LMT 1901 -8 Sh C%sT 1949 May 28 -8 CN C%sT -Z Asia/Urumqi 5:50:20 - LMT 1928 -6 - +06 R HK 1946 o - Ap 21 0 1 S R HK 1946 o - D 1 3:30s 0 - R HK 1947 o - Ap 13 3:30s 1 S @@ -489,12 +333,6 @@ R HK 1965 1976 - O Su>=16 3:30 0 - R HK 1973 o - D 30 3:30 1 S R HK 1979 o - May 13 3:30 1 S R HK 1979 o - O 21 3:30 0 - -Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 29 17u -8 - HKT 1941 Jun 15 3 -8 1 HKST 1941 O 1 4 -8 0:30 HKWT 1941 D 25 -9 - JST 1945 N 18 2 -8 HK HK%sT R f 1946 o - May 15 0 1 D R f 1946 o - O 1 0 0 S R f 1947 o - Ap 15 0 1 D @@ -510,10 +348,6 @@ R f 1974 1975 - Ap 1 0 1 D R f 1974 1975 - O 1 0 0 S R f 1979 o - Jul 1 0 1 D R f 1979 o - O 1 0 0 S -Z Asia/Taipei 8:6 - LMT 1896 -8 - CST 1937 O -9 - JST 1945 S 21 1 -8 f C%sT R _ 1942 1943 - Ap 30 23 1 - R _ 1942 o - N 17 23 0 - R _ 1943 o - S 30 23 0 S @@ -541,10 +375,6 @@ R _ 1973 o - D 30 3:30 1 D R _ 1975 1976 - Ap Su>=16 3:30 1 D R _ 1979 o - May 13 3:30 1 D R _ 1979 o - O Su>=16 3:30 0 S -Z Asia/Macau 7:34:10 - LMT 1904 O 30 -8 - CST 1941 D 21 23 -9 _ +09/+10 1945 S 30 24 -8 _ C%sT R CY 1975 o - Ap 13 0 1 S R CY 1975 o - O 12 0 0 - R CY 1976 o - May 15 0 1 S @@ -554,65 +384,6 @@ R CY 1977 o - S 25 0 0 - R CY 1978 o - O 2 0 0 - R CY 1979 1997 - S lastSu 0 0 - R CY 1981 1998 - Mar lastSu 0 1 S -Z Asia/Nicosia 2:13:28 - LMT 1921 N 14 -2 CY EE%sT 1998 S -2 E EE%sT -Z Asia/Famagusta 2:15:48 - LMT 1921 N 14 -2 CY EE%sT 1998 S -2 E EE%sT 2016 S 8 -3 - +03 2017 O 29 1u -2 E EE%sT -Z Asia/Tbilisi 2:59:11 - LMT 1880 -2:59:11 - TBMT 1924 May 2 -3 - +03 1957 Mar -4 R +04/+05 1991 Mar 31 2s -3 R +03/+04 1992 -3 e +03/+04 1994 S lastSu -4 e +04/+05 1996 O lastSu -4 1 +05 1997 Mar lastSu -4 e +04/+05 2004 Jun 27 -3 R +03/+04 2005 Mar lastSu 2 -4 - +04 -Z Asia/Dili 8:22:20 - LMT 1912 -8 - +08 1942 F 21 23 -9 - +09 1976 May 3 -8 - +08 2000 S 17 -9 - +09 -Z Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 -5:53:20 - HMT 1870 -5:21:10 - MMT 1906 -5:30 - IST 1941 O -5:30 1 +0630 1942 May 15 -5:30 - IST 1942 S -5:30 1 +0630 1945 O 15 -5:30 - IST -Z Asia/Jakarta 7:7:12 - LMT 1867 Au 10 -7:7:12 - BMT 1923 D 31 16:40u -7:20 - +0720 1932 N -7:30 - +0730 1942 Mar 23 -9 - +09 1945 S 23 -7:30 - +0730 1948 May -8 - +08 1950 May -7:30 - +0730 1964 -7 - WIB -Z Asia/Pontianak 7:17:20 - LMT 1908 May -7:17:20 - PMT 1932 N -7:30 - +0730 1942 Ja 29 -9 - +09 1945 S 23 -7:30 - +0730 1948 May -8 - +08 1950 May -7:30 - +0730 1964 -8 - WITA 1988 -7 - WIB -Z Asia/Makassar 7:57:36 - LMT 1920 -7:57:36 - MMT 1932 N -8 - +08 1942 F 9 -9 - +09 1945 S 23 -8 - WITA -Z Asia/Jayapura 9:22:48 - LMT 1932 N -9 - +09 1944 S -9:30 - +0930 1964 -9 - WIT R i 1910 o - Ja 1 0 0 - R i 1977 o - Mar 21 23 1 - R i 1977 o - O 20 24 0 - @@ -653,11 +424,6 @@ R i 2020 o - Mar 20 24 1 - R i 2020 o - S 20 24 0 - R i 2021 2022 - Mar 21 24 1 - R i 2021 2022 - S 21 24 0 - -Z Asia/Tehran 3:25:44 - LMT 1916 -3:25:44 - TMT 1935 Jun 13 -3:30 i +0330/+0430 1977 O 20 24 -4 i +04/+05 1979 -3:30 i +0330/+0430 R IQ 1982 o - May 1 0 1 - R IQ 1982 1984 - O 1 0 0 - R IQ 1983 o - Mar 31 0 1 - @@ -666,10 +432,6 @@ R IQ 1985 1990 - S lastSu 1s 0 - R IQ 1986 1990 - Mar lastSu 1s 1 - R IQ 1991 2007 - Ap 1 3s 1 - R IQ 1991 2007 - O 1 3s 0 - -Z Asia/Baghdad 2:57:40 - LMT 1890 -2:57:36 - BMT 1918 -3 - +03 1982 May -3 IQ +03/+04 R Z 1940 o - May 31 24u 1 D R Z 1940 o - S 30 24u 0 S R Z 1940 o - N 16 24u 1 D @@ -755,15 +517,10 @@ R Z 2011 o - O 2 2 0 S R Z 2012 o - S 23 2 0 S R Z 2013 ma - Mar F>=23 2 1 D R Z 2013 ma - O lastSu 2 0 S -Z Asia/Jerusalem 2:20:54 - LMT 1880 -2:20:40 - JMT 1918 -2 Z I%sT R JP 1948 o - May Sa>=1 24 1 D R JP 1948 1951 - S Sa>=8 25 0 S R JP 1949 o - Ap Sa>=1 24 1 D R JP 1950 1951 - May Sa>=1 24 1 D -Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u -9 JP J%sT R J 1973 o - Jun 6 0 1 S R J 1973 1975 - O 1 0 0 - R J 1974 1977 - May 1 0 1 S @@ -796,83 +553,10 @@ R J 2013 o - D 20 0 0 - R J 2014 2021 - Mar lastTh 24 1 S R J 2014 2022 - O lastF 0s 0 - R J 2022 o - F lastTh 24 1 S -Z Asia/Amman 2:23:44 - LMT 1931 -2 J EE%sT 2022 O 28 0s -3 - +03 -Z Asia/Almaty 5:7:48 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2s -5 R +05/+06 1992 Ja 19 2s -6 R +06/+07 2004 O 31 2s -6 - +06 -Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1991 S 29 2s -5 R +05/+06 1992 Ja 19 2s -6 R +06/+07 1992 Mar 29 2s -5 R +05/+06 2004 O 31 2s -6 - +06 2018 D 21 -5 - +05 -Z Asia/Qostanay 4:14:28 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 2004 O 31 2s -6 - +06 -Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 2004 O 31 2s -5 - +05 -Z Asia/Aqtau 3:21:4 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 1994 S 25 2s -4 R +04/+05 2004 O 31 2s -5 - +05 -Z Asia/Atyrau 3:27:44 - LMT 1924 May 2 -3 - +03 1930 Jun 21 -5 - +05 1981 O -6 - +06 1982 Ap -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 1999 Mar 28 2s -4 R +04/+05 2004 O 31 2s -5 - +05 -Z Asia/Oral 3:25:24 - LMT 1924 May 2 -3 - +03 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1989 Mar 26 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 1992 Mar 29 2s -4 R +04/+05 2004 O 31 2s -5 - +05 R KG 1992 1996 - Ap Su>=7 0s 1 - R KG 1992 1996 - S lastSu 0 0 - R KG 1997 2005 - Mar lastSu 2:30 1 - R KG 1997 2004 - O lastSu 2:30 0 - -Z Asia/Bishkek 4:58:24 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2s -5 R +05/+06 1991 Au 31 2 -5 KG +05/+06 2005 Au 12 -6 - +06 R KR 1948 o - Jun 1 0 1 D R KR 1948 o - S 12 24 0 S R KR 1949 o - Ap 3 0 1 D @@ -887,18 +571,6 @@ R KR 1957 1960 - May Su>=1 0 1 D R KR 1957 1960 - S Sa>=17 24 0 S R KR 1987 1988 - May Su>=8 2 1 D R KR 1987 1988 - O Su>=8 3 0 S -Z Asia/Seoul 8:27:52 - LMT 1908 Ap -8:30 - KST 1912 -9 - JST 1945 S 8 -9 KR K%sT 1954 Mar 21 -8:30 KR K%sT 1961 Au 10 -9 KR K%sT -Z Asia/Pyongyang 8:23 - LMT 1908 Ap -8:30 - KST 1912 -9 - JST 1945 Au 24 -9 - KST 2015 Au 15 -8:30 - KST 2018 May 4 23:30 -9 - KST R l 1920 o - Mar 28 0 1 S R l 1920 o - O 25 0 0 - R l 1921 o - Ap 3 0 1 S @@ -923,18 +595,8 @@ R l 1992 o - O 4 0 0 - R l 1993 ma - Mar lastSu 0 1 S R l 1993 1998 - S lastSu 0 0 - R l 1999 ma - O lastSu 0 0 - -Z Asia/Beirut 2:22 - LMT 1880 -2 l EE%sT R NB 1935 1941 - S 14 0 0:20 - R NB 1935 1941 - D 14 0 0 - -Z Asia/Kuching 7:21:20 - LMT 1926 Mar -7:30 - +0730 1933 -8 NB +08/+0820 1942 F 16 -9 - +09 1945 S 12 -8 - +08 -Z Indian/Maldives 4:54 - LMT 1880 -4:54 - MMT 1960 -5 - +05 R X 1983 1984 - Ap 1 0 1 - R X 1983 o - O 1 0 0 - R X 1985 1998 - Mar lastSu 0 1 - @@ -944,31 +606,11 @@ R X 2001 2006 - S lastSa 2 0 - R X 2002 2006 - Mar lastSa 2 1 - R X 2015 2016 - Mar lastSa 2 1 - R X 2015 2016 - S lastSa 0 0 - -Z Asia/Hovd 6:6:36 - LMT 1905 Au -6 - +06 1978 -7 X +07/+08 -Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au -7 - +07 1978 -8 X +08/+09 -Z Asia/Choibalsan 7:38 - LMT 1905 Au -7 - +07 1978 -8 - +08 1983 Ap -9 X +09/+10 2008 Mar 31 -8 X +08/+09 -Z Asia/Kathmandu 5:41:16 - LMT 1920 -5:30 - +0530 1986 -5:45 - +0545 R PK 2002 o - Ap Su>=2 0 1 S R PK 2002 o - O Su>=2 0 0 - R PK 2008 o - Jun 1 0 1 S R PK 2008 2009 - N 1 0 0 - R PK 2009 o - Ap 15 0 1 S -Z Asia/Karachi 4:28:12 - LMT 1907 -5:30 - +0530 1942 S -5:30 1 +0630 1945 O 15 -5:30 - +0530 1951 S 30 -5 - +05 1971 Mar 26 -5 PK PK%sT R P 1999 2005 - Ap F>=15 0 1 S R P 1999 2003 - O F>=15 0 0 - R P 2004 o - O 1 1 0 - @@ -1001,136 +643,90 @@ R P 2021 o - O 29 1 0 - R P 2022 o - Mar 27 0 1 S R P 2022 2035 - O Sa<=30 2 0 - R P 2023 o - Ap 29 2 1 S -R P 2024 o - Ap 13 2 1 S -R P 2025 o - Ap 5 2 1 S +R P 2024 o - Ap 20 2 1 S +R P 2025 o - Ap 12 2 1 S R P 2026 2054 - Mar Sa<=30 2 1 S R P 2036 o - O 18 2 0 - R P 2037 o - O 10 2 0 - R P 2038 o - S 25 2 0 - R P 2039 o - S 17 2 0 - -R P 2039 o - O 22 2 1 S -R P 2039 2067 - O Sa<=30 2 0 - R P 2040 o - S 1 2 0 - -R P 2040 o - O 13 2 1 S +R P 2040 o - O 20 2 1 S +R P 2040 2067 - O Sa<=30 2 0 - R P 2041 o - Au 24 2 0 - -R P 2041 o - S 28 2 1 S +R P 2041 o - O 5 2 1 S R P 2042 o - Au 16 2 0 - -R P 2042 o - S 20 2 1 S +R P 2042 o - S 27 2 1 S R P 2043 o - Au 1 2 0 - -R P 2043 o - S 12 2 1 S +R P 2043 o - S 19 2 1 S R P 2044 o - Jul 23 2 0 - -R P 2044 o - Au 27 2 1 S +R P 2044 o - S 3 2 1 S R P 2045 o - Jul 15 2 0 - -R P 2045 o - Au 19 2 1 S +R P 2045 o - Au 26 2 1 S R P 2046 o - Jun 30 2 0 - -R P 2046 o - Au 11 2 1 S +R P 2046 o - Au 18 2 1 S R P 2047 o - Jun 22 2 0 - -R P 2047 o - Jul 27 2 1 S +R P 2047 o - Au 3 2 1 S R P 2048 o - Jun 6 2 0 - -R P 2048 o - Jul 18 2 1 S +R P 2048 o - Jul 25 2 1 S R P 2049 o - May 29 2 0 - -R P 2049 o - Jul 3 2 1 S +R P 2049 o - Jul 10 2 1 S R P 2050 o - May 21 2 0 - -R P 2050 o - Jun 25 2 1 S +R P 2050 o - Jul 2 2 1 S R P 2051 o - May 6 2 0 - -R P 2051 o - Jun 17 2 1 S +R P 2051 o - Jun 24 2 1 S R P 2052 o - Ap 27 2 0 - -R P 2052 o - Jun 1 2 1 S +R P 2052 o - Jun 8 2 1 S R P 2053 o - Ap 12 2 0 - -R P 2053 o - May 24 2 1 S +R P 2053 o - May 31 2 1 S R P 2054 o - Ap 4 2 0 - -R P 2054 o - May 16 2 1 S -R P 2055 o - May 1 2 1 S -R P 2056 o - Ap 22 2 1 S -R P 2057 o - Ap 7 2 1 S -R P 2058 ma - Mar Sa<=30 2 1 S +R P 2054 o - May 23 2 1 S +R P 2055 o - May 8 2 1 S +R P 2056 o - Ap 29 2 1 S +R P 2057 o - Ap 14 2 1 S +R P 2058 o - Ap 6 2 1 S +R P 2059 ma - Mar Sa<=30 2 1 S R P 2068 o - O 20 2 0 - R P 2069 o - O 12 2 0 - R P 2070 o - O 4 2 0 - R P 2071 o - S 19 2 0 - R P 2072 o - S 10 2 0 - -R P 2072 o - O 15 2 1 S +R P 2072 o - O 22 2 1 S +R P 2072 ma - O Sa<=30 2 0 - R P 2073 o - S 2 2 0 - -R P 2073 o - O 7 2 1 S +R P 2073 o - O 14 2 1 S R P 2074 o - Au 18 2 0 - -R P 2074 o - S 29 2 1 S +R P 2074 o - O 6 2 1 S R P 2075 o - Au 10 2 0 - -R P 2075 o - S 14 2 1 S -R P 2075 ma - O Sa<=30 2 0 - +R P 2075 o - S 21 2 1 S R P 2076 o - Jul 25 2 0 - -R P 2076 o - S 5 2 1 S +R P 2076 o - S 12 2 1 S R P 2077 o - Jul 17 2 0 - -R P 2077 o - Au 28 2 1 S +R P 2077 o - S 4 2 1 S R P 2078 o - Jul 9 2 0 - -R P 2078 o - Au 13 2 1 S +R P 2078 o - Au 20 2 1 S R P 2079 o - Jun 24 2 0 - -R P 2079 o - Au 5 2 1 S +R P 2079 o - Au 12 2 1 S R P 2080 o - Jun 15 2 0 - -R P 2080 o - Jul 20 2 1 S +R P 2080 o - Jul 27 2 1 S R P 2081 o - Jun 7 2 0 - -R P 2081 o - Jul 12 2 1 S +R P 2081 o - Jul 19 2 1 S R P 2082 o - May 23 2 0 - -R P 2082 o - Jul 4 2 1 S +R P 2082 o - Jul 11 2 1 S R P 2083 o - May 15 2 0 - -R P 2083 o - Jun 19 2 1 S +R P 2083 o - Jun 26 2 1 S R P 2084 o - Ap 29 2 0 - -R P 2084 o - Jun 10 2 1 S +R P 2084 o - Jun 17 2 1 S R P 2085 o - Ap 21 2 0 - -R P 2085 o - Jun 2 2 1 S +R P 2085 o - Jun 9 2 1 S R P 2086 o - Ap 13 2 0 - -R P 2086 o - May 18 2 1 S -Z Asia/Gaza 2:17:52 - LMT 1900 O -2 Z EET/EEST 1948 May 15 -2 K EE%sT 1967 Jun 5 -2 Z I%sT 1996 -2 J EE%sT 1999 -2 P EE%sT 2008 Au 29 -2 - EET 2008 S -2 P EE%sT 2010 -2 - EET 2010 Mar 27 0:1 -2 P EE%sT 2011 Au -2 - EET 2012 -2 P EE%sT -Z Asia/Hebron 2:20:23 - LMT 1900 O -2 Z EET/EEST 1948 May 15 -2 K EE%sT 1967 Jun 5 -2 Z I%sT 1996 -2 J EE%sT 1999 -2 P EE%sT +R P 2086 o - May 25 2 1 S R PH 1936 o - N 1 0 1 D R PH 1937 o - F 1 0 0 S R PH 1954 o - Ap 12 0 1 D R PH 1954 o - Jul 1 0 0 S R PH 1978 o - Mar 22 0 1 D R PH 1978 o - S 21 0 0 S -Z Asia/Manila -15:56 - LMT 1844 D 31 -8:4 - LMT 1899 May 11 -8 PH P%sT 1942 May -9 - JST 1944 N -8 PH P%sT -Z Asia/Qatar 3:26:8 - LMT 1920 -4 - +04 1972 Jun -3 - +03 -Z Asia/Riyadh 3:6:52 - LMT 1947 Mar 14 -3 - +03 -Z Asia/Singapore 6:55:25 - LMT 1901 -6:55:25 - SMT 1905 Jun -7 - +07 1933 -7 0:20 +0720 1936 -7:20 - +0720 1941 S -7:30 - +0730 1942 F 16 -9 - +09 1945 S 12 -7:30 - +0730 1981 D 31 16u -8 - +08 -Z Asia/Colombo 5:19:24 - LMT 1880 -5:19:32 - MMT 1906 -5:30 - +0530 1942 Ja 5 -5:30 0:30 +06 1942 S -5:30 1 +0630 1945 O 16 2 -5:30 - +0530 1996 May 25 -6:30 - +0630 1996 O 26 0:30 -6 - +06 2006 Ap 15 0:30 -5:30 - +0530 R S 1920 1923 - Ap Su>=15 2 1 S R S 1920 1923 - O Su>=1 2 0 - R S 1962 o - Ap 29 2 1 S @@ -1172,46 +768,6 @@ R S 2009 o - Mar lastF 0 1 S R S 2010 2011 - Ap F>=1 0 1 S R S 2012 2022 - Mar lastF 0 1 S R S 2009 2022 - O lastF 0 0 - -Z Asia/Damascus 2:25:12 - LMT 1920 -2 S EE%sT 2022 O 28 -3 - +03 -Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2s -5 1 +06 1991 S 9 2s -5 - +05 -Z Asia/Bangkok 6:42:4 - LMT 1880 -6:42:4 - BMT 1920 Ap -7 - +07 -Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 R +05/+06 1991 Mar 31 2 -4 R +04/+05 1992 Ja 19 2 -5 - +05 -Z Asia/Dubai 3:41:12 - LMT 1920 -4 - +04 -Z Asia/Samarkand 4:27:53 - LMT 1924 May 2 -4 - +04 1930 Jun 21 -5 - +05 1981 Ap -5 1 +06 1981 O -6 - +06 1982 Ap -5 R +05/+06 1992 -5 - +05 -Z Asia/Tashkent 4:37:11 - LMT 1924 May 2 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2 -5 R +05/+06 1992 -5 - +05 -Z Asia/Ho_Chi_Minh 7:6:30 - LMT 1906 Jul -7:6:30 - PLMT 1911 May -7 - +07 1942 D 31 23 -8 - +08 1945 Mar 14 23 -9 - +09 1945 S 2 -7 - +07 1947 Ap -8 - +08 1955 Jul -7 - +07 1959 D 31 23 -8 - +08 1975 Jun 13 -7 - +07 R AU 1917 o - Ja 1 2s 1 D R AU 1917 o - Mar lastSu 2s 0 S R AU 1942 o - Ja 1 2s 1 D @@ -1219,9 +775,6 @@ R AU 1942 o - Mar lastSu 2s 0 S R AU 1942 o - S 27 2s 1 D R AU 1943 1944 - Mar lastSu 2s 0 S R AU 1943 o - O 3 2s 1 D -Z Australia/Darwin 8:43:20 - LMT 1895 F -9 - ACST 1899 May -9:30 AU AC%sT R AW 1974 o - O lastSu 2s 1 D R AW 1975 o - Mar Su>=1 2s 0 S R AW 1983 o - O lastSu 2s 1 D @@ -1231,25 +784,12 @@ R AW 1992 o - Mar Su>=1 2s 0 S R AW 2006 o - D 3 2s 1 D R AW 2007 2009 - Mar lastSu 2s 0 S R AW 2007 2008 - O lastSu 2s 1 D -Z Australia/Perth 7:43:24 - LMT 1895 D -8 AU AW%sT 1943 Jul -8 AW AW%sT -Z Australia/Eucla 8:35:28 - LMT 1895 D -8:45 AU +0845/+0945 1943 Jul -8:45 AW +0845/+0945 R AQ 1971 o - O lastSu 2s 1 D R AQ 1972 o - F lastSu 2s 0 S R AQ 1989 1991 - O lastSu 2s 1 D R AQ 1990 1992 - Mar Su>=1 2s 0 S R Ho 1992 1993 - O lastSu 2s 1 D R Ho 1993 1994 - Mar Su>=1 2s 0 S -Z Australia/Brisbane 10:12:8 - LMT 1895 -10 AU AE%sT 1971 -10 AQ AE%sT -Z Australia/Lindeman 9:55:56 - LMT 1895 -10 AU AE%sT 1971 -10 AQ AE%sT 1992 Jul -10 Ho AE%sT R AS 1971 1985 - O lastSu 2s 1 D R AS 1986 o - O 19 2s 1 D R AS 1987 2007 - O lastSu 2s 1 D @@ -1265,10 +805,6 @@ R AS 2006 o - Ap 2 2s 0 S R AS 2007 o - Mar lastSu 2s 0 S R AS 2008 ma - Ap Su>=1 2s 0 S R AS 2008 ma - O Su>=1 2s 1 D -Z Australia/Adelaide 9:14:20 - LMT 1895 F -9 - ACST 1899 May -9:30 AU AC%sT 1971 -9:30 AS AC%sT R AT 1916 o - O Su>=1 2s 1 D R AT 1917 o - Mar lastSu 2s 0 S R AT 1917 1918 - O Su>=22 2s 1 D @@ -1292,10 +828,6 @@ R AT 2001 ma - O Su>=1 2s 1 D R AT 2006 o - Ap Su>=1 2s 0 S R AT 2007 o - Mar lastSu 2s 0 S R AT 2008 ma - Ap Su>=1 2s 0 S -Z Australia/Hobart 9:49:16 - LMT 1895 S -10 AT AE%sT 1919 O 24 -10 AU AE%sT 1967 -10 AT AE%sT R AV 1971 1985 - O lastSu 2s 1 D R AV 1972 o - F lastSu 2s 0 S R AV 1973 1985 - Mar Su>=1 2s 0 S @@ -1310,9 +842,6 @@ R AV 2006 o - Ap Su>=1 2s 0 S R AV 2007 o - Mar lastSu 2s 0 S R AV 2008 ma - Ap Su>=1 2s 0 S R AV 2008 ma - O Su>=1 2s 1 D -Z Australia/Melbourne 9:39:52 - LMT 1895 F -10 AU AE%sT 1971 -10 AV AE%sT R AN 1971 1985 - O lastSu 2s 1 D R AN 1972 o - F 27 2s 0 S R AN 1973 1981 - Mar Su>=1 2s 0 S @@ -1329,15 +858,6 @@ R AN 2006 o - Ap Su>=1 2s 0 S R AN 2007 o - Mar lastSu 2s 0 S R AN 2008 ma - Ap Su>=1 2s 0 S R AN 2008 ma - O Su>=1 2s 1 D -Z Australia/Sydney 10:4:52 - LMT 1895 F -10 AU AE%sT 1971 -10 AN AE%sT -Z Australia/Broken_Hill 9:25:48 - LMT 1895 F -10 - AEST 1896 Au 23 -9 - ACST 1899 May -9:30 AU AC%sT 1971 -9:30 AN AC%sT 2000 -9:30 AS AC%sT R LH 1981 1984 - O lastSu 2 1 - R LH 1982 1985 - Mar Su>=1 2 0 - R LH 1985 o - O lastSu 2 0:30 - @@ -1352,19 +872,6 @@ R LH 2006 o - Ap Su>=1 2 0 - R LH 2007 o - Mar lastSu 2 0 - R LH 2008 ma - Ap Su>=1 2 0 - R LH 2008 ma - O Su>=1 2 0:30 - -Z Australia/Lord_Howe 10:36:20 - LMT 1895 F -10 - AEST 1981 Mar -10:30 LH +1030/+1130 1985 Jul -10:30 LH +1030/+11 -Z Antarctica/Macquarie 0 - -00 1899 N -10 - AEST 1916 O 1 2 -10 1 AEDT 1917 F -10 AU AE%sT 1919 Ap 1 0s -0 - -00 1948 Mar 25 -10 AU AE%sT 1967 -10 AT AE%sT 2010 -10 1 AEDT 2011 -10 AT AE%sT R FJ 1998 1999 - N Su>=1 2 1 - R FJ 1999 2000 - F lastSu 3 0 - R FJ 2009 o - N 29 2 1 - @@ -1377,14 +884,6 @@ R FJ 2014 2018 - N Su>=1 2 1 - R FJ 2015 2021 - Ja Su>=12 3 0 - R FJ 2019 o - N Su>=8 2 1 - R FJ 2020 o - D 20 2 1 - -Z Pacific/Fiji 11:55:44 - LMT 1915 O 26 -12 FJ +12/+13 -Z Pacific/Gambier -8:59:48 - LMT 1912 O --9 - -09 -Z Pacific/Marquesas -9:18 - LMT 1912 O --9:30 - -0930 -Z Pacific/Tahiti -9:58:16 - LMT 1912 O --10 - -10 R Gu 1959 o - Jun 27 2 1 D R Gu 1961 o - Ja 29 2 0 S R Gu 1967 o - S 1 2 1 D @@ -1399,50 +898,10 @@ R Gu 1976 o - May 26 2 1 D R Gu 1976 o - Au 22 2:1 0 S R Gu 1977 o - Ap 24 2 1 D R Gu 1977 o - Au 28 2 0 S -Z Pacific/Guam -14:21 - LMT 1844 D 31 -9:39 - LMT 1901 -10 - GST 1941 D 10 -9 - +09 1944 Jul 31 -10 Gu G%sT 2000 D 23 -10 - ChST -Z Pacific/Tarawa 11:32:4 - LMT 1901 -12 - +12 -Z Pacific/Kanton 0 - -00 1937 Au 31 --12 - -12 1979 O --11 - -11 1994 D 31 -13 - +13 -Z Pacific/Kiritimati -10:29:20 - LMT 1901 --10:40 - -1040 1979 O --10 - -10 1994 D 31 -14 - +14 -Z Pacific/Kwajalein 11:9:20 - LMT 1901 -11 - +11 1937 -10 - +10 1941 Ap -9 - +09 1944 F 6 -11 - +11 1969 O --12 - -12 1993 Au 20 24 -12 - +12 -Z Pacific/Kosrae -13:8:4 - LMT 1844 D 31 -10:51:56 - LMT 1901 -11 - +11 1914 O -9 - +09 1919 F -11 - +11 1937 -10 - +10 1941 Ap -9 - +09 1945 Au -11 - +11 1969 O -12 - +12 1999 -11 - +11 -Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15 -11:30 - +1130 1942 Au 29 -9 - +09 1945 S 8 -11:30 - +1130 1979 F 10 2 -12 - +12 R NC 1977 1978 - D Su>=1 0 1 - R NC 1978 1979 - F 27 0 0 - R NC 1996 o - D 1 2s 1 - R NC 1997 o - Mar 2 2s 0 - -Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13 -11 NC +11/+12 R NZ 1927 o - N 6 2 1 S R NZ 1928 o - Mar 4 2 0 M R NZ 1928 1933 - O Su>=8 2 0:30 S @@ -1468,80 +927,26 @@ R NZ 2007 ma - S lastSu 2s 1 D R k 2007 ma - S lastSu 2:45s 1 - R NZ 2008 ma - Ap Su>=1 2s 0 S R k 2008 ma - Ap Su>=1 2:45s 0 - -Z Pacific/Auckland 11:39:4 - LMT 1868 N 2 -11:30 NZ NZ%sT 1946 -12 NZ NZ%sT -Z Pacific/Chatham 12:13:48 - LMT 1868 N 2 -12:15 - +1215 1946 -12:45 k +1245/+1345 R CK 1978 o - N 12 0 0:30 - R CK 1979 1991 - Mar Su>=1 0 0 - R CK 1979 1990 - O lastSu 0 0:30 - -Z Pacific/Rarotonga 13:20:56 - LMT 1899 D 26 --10:39:4 - LMT 1952 O 16 --10:30 - -1030 1978 N 12 --10 CK -10/-0930 -Z Pacific/Niue -11:19:40 - LMT 1952 O 16 --11:20 - -1120 1964 Jul --11 - -11 -Z Pacific/Norfolk 11:11:52 - LMT 1901 -11:12 - +1112 1951 -11:30 - +1130 1974 O 27 2s -11:30 1 +1230 1975 Mar 2 2s -11:30 - +1130 2015 O 4 2s -11 - +11 2019 Jul -11 AN +11/+12 -Z Pacific/Palau -15:2:4 - LMT 1844 D 31 -8:57:56 - LMT 1901 -9 - +09 -Z Pacific/Port_Moresby 9:48:40 - LMT 1880 -9:48:32 - PMMT 1895 -10 - +10 -Z Pacific/Bougainville 10:22:16 - LMT 1880 -9:48:32 - PMMT 1895 -10 - +10 1942 Jul -9 - +09 1945 Au 21 -10 - +10 2014 D 28 2 -11 - +11 -Z Pacific/Pitcairn -8:40:20 - LMT 1901 --8:30 - -0830 1998 Ap 27 --8 - -08 -Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5 --11:22:48 - LMT 1911 --11 - SST R WS 2010 o - S lastSu 0 1 - R WS 2011 o - Ap Sa>=1 4 0 - R WS 2011 o - S lastSa 3 1 - R WS 2012 2021 - Ap Su>=1 4 0 - R WS 2012 2020 - S lastSu 3 1 - -Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5 --11:26:56 - LMT 1911 --11:30 - -1130 1950 --11 WS -11/-10 2011 D 29 24 -13 WS +13/+14 -Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O -11 - +11 -Z Pacific/Fakaofo -11:24:56 - LMT 1901 --11 - -11 2011 D 30 -13 - +13 R TO 1999 o - O 7 2s 1 - R TO 2000 o - Mar 19 2s 0 - R TO 2000 2001 - N Su>=1 2 1 - R TO 2001 2002 - Ja lastSu 2 0 - R TO 2016 o - N Su>=1 2 1 - R TO 2017 o - Ja Su>=15 3 0 - -Z Pacific/Tongatapu 12:19:12 - LMT 1945 S 10 -12:20 - +1220 1961 -13 - +13 1999 -13 TO +13/+14 R VU 1973 o - D 22 12u 1 - R VU 1974 o - Mar 30 12u 0 - R VU 1983 1991 - S Sa>=22 24 1 - R VU 1984 1991 - Mar Sa>=22 24 0 - R VU 1992 1993 - Ja Sa>=22 24 0 - R VU 1992 o - O Sa>=22 24 1 - -Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13 -11 VU +11/+12 R G 1916 o - May 21 2s 1 BST R G 1916 o - O 1 2s 0 GMT R G 1917 o - Ap 8 2s 1 BST @@ -1607,11 +1012,6 @@ R G 1972 1980 - O Su>=23 2s 0 GMT R G 1981 1995 - Mar lastSu 1u 1 BST R G 1981 1989 - O Su>=23 1u 0 GMT R G 1990 1995 - O Su>=22 1u 0 GMT -Z Europe/London -0:1:15 - LMT 1847 D -0 G %s 1968 O 27 -1 - BST 1971 O 31 2u -0 G %s 1996 -0 E GMT/BST R IE 1971 o - O 31 2u -1 - R IE 1972 1980 - Mar Su>=16 2u 0 - R IE 1972 1980 - O Su>=23 2u -1 - @@ -1619,17 +1019,6 @@ R IE 1981 ma - Mar lastSu 1u 0 - R IE 1981 1989 - O Su>=23 1u -1 - R IE 1990 1995 - O Su>=22 1u -1 - R IE 1996 ma - O lastSu 1u -1 - -Z Europe/Dublin -0:25:21 - LMT 1880 Au 2 --0:25:21 - DMT 1916 May 21 2s --0:25:21 1 IST 1916 O 1 2s -0 G %s 1921 D 6 -0 G GMT/IST 1940 F 25 2s -0 1 IST 1946 O 6 2s -0 - GMT 1947 Mar 16 2s -0 1 IST 1947 N 2 2s -0 - GMT 1948 Ap 18 2s -0 G GMT/IST 1968 O 27 -1 IE IST/GMT R E 1977 1980 - Ap Su>=1 1u 1 S R E 1977 o - S lastSu 1u 0 - R E 1978 o - O 1 1u 0 - @@ -1681,10 +1070,6 @@ R R 1981 1983 - O 1 0 0 - R R 1984 1995 - S lastSu 2s 0 - R R 1985 2010 - Mar lastSu 2s 1 S R R 1996 2010 - O lastSu 2s 0 - -Z WET 0 E WE%sT -Z CET 1 c CE%sT -Z MET 1 c ME%sT -Z EET 2 E EE%sT R q 1940 o - Jun 16 0 1 S R q 1942 o - N 2 3 0 - R q 1943 o - Mar 29 2 1 S @@ -1710,14 +1095,6 @@ R q 1982 o - O 3 0 0 - R q 1983 o - Ap 18 0 1 S R q 1983 o - O 1 0 0 - R q 1984 o - Ap 1 0 1 S -Z Europe/Tirane 1:19:20 - LMT 1914 -1 - CET 1940 Jun 16 -1 q CE%sT 1984 Jul -1 E CE%sT -Z Europe/Andorra 0:6:4 - LMT 1901 -0 - WET 1946 S 30 -1 - CET 1985 Mar 31 2 -1 E CE%sT R a 1920 o - Ap 5 2s 1 S R a 1920 o - S 13 2s 0 - R a 1946 o - Ap 14 2s 1 S @@ -1727,23 +1104,6 @@ R a 1947 o - Ap 6 2s 1 S R a 1948 o - Ap 18 2s 1 S R a 1980 o - Ap 6 0 1 S R a 1980 o - S 28 0 0 - -Z Europe/Vienna 1:5:21 - LMT 1893 Ap -1 c CE%sT 1920 -1 a CE%sT 1940 Ap 1 2s -1 c CE%sT 1945 Ap 2 2s -1 1 CEST 1945 Ap 12 2s -1 - CET 1946 -1 a CE%sT 1981 -1 E CE%sT -Z Europe/Minsk 1:50:16 - LMT 1880 -1:50 - MMT 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 Jun 28 -1 c CE%sT 1944 Jul 3 -3 R MSK/MSD 1990 -3 - MSK 1991 Mar 31 2s -2 R EE%sT 2011 Mar 27 2s -3 - +03 R b 1918 o - Mar 9 0s 1 S R b 1918 1919 - O Sa>=1 23s 0 - R b 1919 o - Mar 1 23s 1 S @@ -1778,87 +1138,27 @@ R b 1945 o - Ap 2 2s 1 S R b 1945 o - S 16 2s 0 - R b 1946 o - May 19 2s 1 S R b 1946 o - O 7 2s 0 - -Z Europe/Brussels 0:17:30 - LMT 1880 -0:17:30 - BMT 1892 May 1 0:17:30 -0 - WET 1914 N 8 -1 - CET 1916 May -1 c CE%sT 1918 N 11 11u -0 b WE%sT 1940 May 20 2s -1 c CE%sT 1944 S 3 -1 b CE%sT 1977 -1 E CE%sT R BG 1979 o - Mar 31 23 1 S R BG 1979 o - O 1 1 0 - R BG 1980 1982 - Ap Sa>=1 23 1 S R BG 1980 o - S 29 1 0 - R BG 1981 o - S 27 2 0 - -Z Europe/Sofia 1:33:16 - LMT 1880 -1:56:56 - IMT 1894 N 30 -2 - EET 1942 N 2 3 -1 c CE%sT 1945 -1 - CET 1945 Ap 2 3 -2 - EET 1979 Mar 31 23 -2 BG EE%sT 1982 S 26 3 -2 c EE%sT 1991 -2 e EE%sT 1997 -2 E EE%sT R CZ 1945 o - Ap M>=1 2s 1 S R CZ 1945 o - O 1 2s 0 - R CZ 1946 o - May 6 2s 1 S R CZ 1946 1949 - O Su>=1 2s 0 - R CZ 1947 1948 - Ap Su>=15 2s 1 S R CZ 1949 o - Ap 9 2s 1 S -Z Europe/Prague 0:57:44 - LMT 1850 -0:57:44 - PMT 1891 O -1 c CE%sT 1945 May 9 -1 CZ CE%sT 1946 D 1 3 -1 -1 GMT 1947 F 23 2 -1 CZ CE%sT 1979 -1 E CE%sT -Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11 -0 - WET 1981 -0 E WE%sT R Th 1991 1992 - Mar lastSu 2 1 D R Th 1991 1992 - S lastSu 2 0 S R Th 1993 2006 - Ap Su>=1 2 1 D R Th 1993 2006 - O lastSu 2 0 S R Th 2007 ma - Mar Su>=8 2 1 D R Th 2007 ma - N Su>=1 2 0 S -Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28 --3 - -03 1980 Ap 6 2 --3 E -03/-02 1996 -0 - GMT -Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 --2 - -02 1980 Ap 6 2 --2 c -02/-01 1981 Mar 29 --1 E -01/+00 -Z America/Nuuk -3:26:56 - LMT 1916 Jul 28 --3 - -03 1980 Ap 6 2 --3 E -03/-02 2023 O 29 1u --2 E -02/-01 -Z America/Thule -4:35:8 - LMT 1916 Jul 28 --4 Th A%sT -Z Europe/Tallinn 1:39 - LMT 1880 -1:39 - TMT 1918 F -1 c CE%sT 1919 Jul -1:39 - TMT 1921 May -2 - EET 1940 Au 6 -3 - MSK 1941 S 15 -1 c CE%sT 1944 S 22 -3 R MSK/MSD 1989 Mar 26 2s -2 1 EEST 1989 S 24 2s -2 c EE%sT 1998 S 22 -2 E EE%sT 1999 O 31 4 -2 - EET 2002 F 21 -2 E EE%sT R FI 1942 o - Ap 2 24 1 S R FI 1942 o - O 4 1 0 - R FI 1981 1982 - Mar lastSu 2 1 S R FI 1981 1982 - S lastSu 3 0 - -Z Europe/Helsinki 1:39:49 - LMT 1878 May 31 -1:39:49 - HMT 1921 May -2 FI EE%sT 1983 -2 E EE%sT R F 1916 o - Jun 14 23s 1 S R F 1916 1919 - O Su>=1 23s 0 - R F 1917 o - Mar 24 23s 1 S @@ -1901,13 +1201,6 @@ R F 1945 o - Ap 2 2 2 M R F 1945 o - S 16 3 0 - R F 1976 o - Mar 28 1 1 S R F 1976 o - S 26 1 0 - -Z Europe/Paris 0:9:21 - LMT 1891 Mar 16 -0:9:21 - PMT 1911 Mar 11 -0 F WE%sT 1940 Jun 14 23 -1 c CE%sT 1944 Au 25 -0 F WE%sT 1945 S 16 3 -1 F CE%sT 1977 -1 E CE%sT R DE 1946 o - Ap 14 2s 1 S R DE 1946 o - O 7 2s 0 - R DE 1947 1949 - O Su>=1 2s 0 - @@ -1919,15 +1212,6 @@ R DE 1949 o - Ap 10 2s 1 S R So 1945 o - May 24 2 2 M R So 1945 o - S 24 3 1 S R So 1945 o - N 18 2s 0 - -Z Europe/Berlin 0:53:28 - LMT 1893 Ap -1 c CE%sT 1945 May 24 2 -1 So CE%sT 1946 -1 DE CE%sT 1980 -1 E CE%sT -Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2 -0 G %s 1957 Ap 14 2 -1 - CET 1982 -1 E CE%sT R g 1932 o - Jul 7 0 1 S R g 1932 o - S 1 0 0 - R g 1941 o - Ap 7 0 1 S @@ -1947,12 +1231,6 @@ R g 1979 o - Ap 1 9 1 S R g 1979 o - S 29 2 0 - R g 1980 o - Ap 1 0 1 S R g 1980 o - S 28 0 0 - -Z Europe/Athens 1:34:52 - LMT 1895 S 14 -1:34:52 - AMT 1916 Jul 28 0:1 -2 g EE%sT 1941 Ap 30 -1 g CE%sT 1944 Ap 4 -2 g EE%sT 1981 -2 E EE%sT R h 1918 1919 - Ap 15 2 1 S R h 1918 1920 - S M>=15 3 0 - R h 1920 o - Ap 5 2 1 S @@ -1972,12 +1250,6 @@ R h 1980 o - Ap 6 0 1 S R h 1980 o - S 28 1 0 - R h 1981 1983 - Mar lastSu 0 1 S R h 1981 1983 - S lastSu 1 0 - -Z Europe/Budapest 1:16:20 - LMT 1890 N -1 c CE%sT 1918 -1 h CE%sT 1941 Ap 7 23 -1 c CE%sT 1945 -1 h CE%sT 1984 -1 E CE%sT R I 1916 o - Jun 3 24 1 S R I 1916 1917 - S 30 24 0 - R I 1917 o - Mar 31 24 1 S @@ -2019,44 +1291,8 @@ R I 1976 o - May 30 0s 1 S R I 1977 1979 - May Su>=22 0s 1 S R I 1978 o - O 1 0s 0 - R I 1979 o - S 30 0s 0 - -Z Europe/Rome 0:49:56 - LMT 1866 D 12 -0:49:56 - RMT 1893 O 31 23u -1 I CE%sT 1943 S 10 -1 c CE%sT 1944 Jun 4 -1 I CE%sT 1980 -1 E CE%sT R LV 1989 1996 - Mar lastSu 2s 1 S R LV 1989 1996 - S lastSu 2s 0 - -Z Europe/Riga 1:36:34 - LMT 1880 -1:36:34 - RMT 1918 Ap 15 2 -1:36:34 1 LST 1918 S 16 3 -1:36:34 - RMT 1919 Ap 1 2 -1:36:34 1 LST 1919 May 22 3 -1:36:34 - RMT 1926 May 11 -2 - EET 1940 Au 5 -3 - MSK 1941 Jul -1 c CE%sT 1944 O 13 -3 R MSK/MSD 1989 Mar lastSu 2s -2 1 EEST 1989 S lastSu 2s -2 LV EE%sT 1997 Ja 21 -2 E EE%sT 2000 F 29 -2 - EET 2001 Ja 2 -2 E EE%sT -Z Europe/Vilnius 1:41:16 - LMT 1880 -1:24 - WMT 1917 -1:35:36 - KMT 1919 O 10 -1 - CET 1920 Jul 12 -2 - EET 1920 O 9 -1 - CET 1940 Au 3 -3 - MSK 1941 Jun 24 -1 c CE%sT 1944 Au -3 R MSK/MSD 1989 Mar 26 2s -2 R EE%sT 1991 S 29 2s -2 c EE%sT 1998 -2 - EET 1998 Mar 29 1u -1 E CE%sT 1999 O 31 1u -2 - EET 2003 -2 E EE%sT R MT 1973 o - Mar 31 0s 1 S R MT 1973 o - S 29 0s 0 - R MT 1974 o - Ap 21 0s 1 S @@ -2064,22 +1300,8 @@ R MT 1974 o - S 16 0s 0 - R MT 1975 1979 - Ap Su>=15 2 1 S R MT 1975 1980 - S Su>=15 2 0 - R MT 1980 o - Mar 31 2 1 S -Z Europe/Malta 0:58:4 - LMT 1893 N 2 -1 I CE%sT 1973 Mar 31 -1 MT CE%sT 1981 -1 E CE%sT R MD 1997 ma - Mar lastSu 2 1 S R MD 1997 ma - O lastSu 3 0 - -Z Europe/Chisinau 1:55:20 - LMT 1880 -1:55 - CMT 1918 F 15 -1:44:24 - BMT 1931 Jul 24 -2 z EE%sT 1940 Au 15 -2 1 EEST 1941 Jul 17 -1 c CE%sT 1944 Au 24 -3 R MSK/MSD 1990 May 6 2 -2 R EE%sT 1992 -2 e EE%sT 1997 -2 MD EE%sT R O 1918 1919 - S 16 2s 0 - R O 1919 o - Ap 15 2s 1 S R O 1944 o - Ap 3 2s 1 S @@ -2100,15 +1322,6 @@ R O 1959 1961 - O Su>=1 1s 0 - R O 1960 o - Ap 3 1s 1 S R O 1961 1964 - May lastSu 1s 1 S R O 1962 1964 - S lastSu 1s 0 - -Z Europe/Warsaw 1:24 - LMT 1880 -1:24 - WMT 1915 Au 5 -1 c CE%sT 1918 S 16 3 -2 O EE%sT 1922 Jun -1 O CE%sT 1940 Jun 23 2 -1 c CE%sT 1944 O -1 O CE%sT 1977 -1 W- CE%sT 1988 -1 E CE%sT R p 1916 o - Jun 17 23 1 S R p 1916 o - N 1 1 0 - R p 1917 o - F 28 23s 1 S @@ -2157,42 +1370,6 @@ R p 1979 1982 - S lastSu 1s 0 - R p 1980 o - Mar lastSu 0s 1 S R p 1981 1982 - Mar lastSu 1s 1 S R p 1983 o - Mar lastSu 2s 1 S -Z Europe/Lisbon -0:36:45 - LMT 1884 --0:36:45 - LMT 1912 Ja 1 0u -0 p WE%sT 1966 Ap 3 2 -1 - CET 1976 S 26 1 -0 p WE%sT 1983 S 25 1s -0 W- WE%sT 1992 S 27 1s -1 E CE%sT 1996 Mar 31 1u -0 E WE%sT -Z Atlantic/Azores -1:42:40 - LMT 1884 --1:54:32 - HMT 1912 Ja 1 2u --2 p -02/-01 1942 Ap 25 22s --2 p +00 1942 Au 15 22s --2 p -02/-01 1943 Ap 17 22s --2 p +00 1943 Au 28 22s --2 p -02/-01 1944 Ap 22 22s --2 p +00 1944 Au 26 22s --2 p -02/-01 1945 Ap 21 22s --2 p +00 1945 Au 25 22s --2 p -02/-01 1966 Ap 3 2 --1 p -01/+00 1983 S 25 1s --1 W- -01/+00 1992 S 27 1s -0 E WE%sT 1993 Mar 28 1u --1 E -01/+00 -Z Atlantic/Madeira -1:7:36 - LMT 1884 --1:7:36 - FMT 1912 Ja 1 1u --1 p -01/+00 1942 Ap 25 22s --1 p +01 1942 Au 15 22s --1 p -01/+00 1943 Ap 17 22s --1 p +01 1943 Au 28 22s --1 p -01/+00 1944 Ap 22 22s --1 p +01 1944 Au 26 22s --1 p -01/+00 1945 Ap 21 22s --1 p +01 1945 Au 25 22s --1 p -01/+00 1966 Ap 3 2 -0 p WE%sT 1983 S 25 1s -0 E WE%sT R z 1932 o - May 21 0s 1 S R z 1932 1939 - O Su>=1 0s 0 - R z 1933 1939 - Ap Su>=2 0s 1 S @@ -2202,252 +1379,6 @@ R z 1980 o - Ap 5 23 1 S R z 1980 o - S lastSu 1 0 - R z 1991 1993 - Mar lastSu 0s 1 S R z 1991 1993 - S lastSu 0s 0 - -Z Europe/Bucharest 1:44:24 - LMT 1891 O -1:44:24 - BMT 1931 Jul 24 -2 z EE%sT 1981 Mar 29 2s -2 c EE%sT 1991 -2 z EE%sT 1994 -2 e EE%sT 1997 -2 E EE%sT -Z Europe/Kaliningrad 1:22 - LMT 1893 Ap -1 c CE%sT 1945 Ap 10 -2 O EE%sT 1946 Ap 7 -3 R MSK/MSD 1989 Mar 26 2s -2 R EE%sT 2011 Mar 27 2s -3 - +03 2014 O 26 2s -2 - EET -Z Europe/Moscow 2:30:17 - LMT 1880 -2:30:17 - MMT 1916 Jul 3 -2:31:19 R %s 1919 Jul 1 0u -3 R %s 1921 O -3 R MSK/MSD 1922 O -2 - EET 1930 Jun 21 -3 R MSK/MSD 1991 Mar 31 2s -2 R EE%sT 1992 Ja 19 2s -3 R MSK/MSD 2011 Mar 27 2s -4 - MSK 2014 O 26 2s -3 - MSK -Z Europe/Simferopol 2:16:24 - LMT 1880 -2:16 - SMT 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 N -1 c CE%sT 1944 Ap 13 -3 R MSK/MSD 1990 -3 - MSK 1990 Jul 1 2 -2 - EET 1992 Mar 20 -2 c EE%sT 1994 May -3 c MSK/MSD 1996 Mar 31 0s -3 1 MSD 1996 O 27 3s -3 - MSK 1997 Mar lastSu 1u -2 E EE%sT 2014 Mar 30 2 -4 - MSK 2014 O 26 2s -3 - MSK -Z Europe/Astrakhan 3:12:12 - LMT 1924 May -3 - +03 1930 Jun 21 -4 R +04/+05 1989 Mar 26 2s -3 R +03/+04 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 R +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 2016 Mar 27 2s -4 - +04 -Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3 -3 - +03 1930 Jun 21 -4 - +04 1961 N 11 -4 R +04/+05 1988 Mar 27 2s -3 R MSK/MSD 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 R MSK/MSD 2011 Mar 27 2s -4 - MSK 2014 O 26 2s -3 - MSK 2018 O 28 2s -4 - +04 2020 D 27 2s -3 - MSK -Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 R +04/+05 1988 Mar 27 2s -3 R +03/+04 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 R +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 2016 D 4 2s -4 - +04 -Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 R +04/+05 1989 Mar 26 2s -3 R MSK/MSD 1991 Mar 31 2s -4 - +04 1992 Mar 29 2s -3 R MSK/MSD 2011 Mar 27 2s -4 - MSK 2014 O 26 2s -3 - MSK -Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 - +04 1935 Ja 27 -4 R +04/+05 1989 Mar 26 2s -3 R +03/+04 1991 Mar 31 2s -2 R +02/+03 1991 S 29 2s -3 - +03 1991 O 20 3 -4 R +04/+05 2010 Mar 28 2s -3 R +03/+04 2011 Mar 27 2s -4 - +04 -Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u -3 - +03 1930 Jun 21 -4 R +04/+05 1989 Mar 26 2s -3 R +03/+04 1991 Mar 31 2s -2 R +02/+03 1992 Ja 19 2s -3 R +03/+04 2011 Mar 27 2s -4 - +04 2014 O 26 2s -3 - +03 2016 Mar 27 2s -4 - +04 -Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3 -3:45:5 - PMT 1919 Jul 15 4 -4 - +04 1930 Jun 21 -5 R +05/+06 1991 Mar 31 2s -4 R +04/+05 1992 Ja 19 2s -5 R +05/+06 2011 Mar 27 2s -6 - +06 2014 O 26 2s -5 - +05 -Z Asia/Omsk 4:53:30 - LMT 1919 N 14 -5 - +05 1930 Jun 21 -6 R +06/+07 1991 Mar 31 2s -5 R +05/+06 1992 Ja 19 2s -6 R +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 -Z Asia/Barnaul 5:35 - LMT 1919 D 10 -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 1995 May 28 -6 R +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 2016 Mar 27 2s -7 - +07 -Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6 -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 1993 May 23 -6 R +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 2016 Jul 24 2s -7 - +07 -Z Asia/Tomsk 5:39:51 - LMT 1919 D 22 -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 2002 May 1 3 -6 R +06/+07 2011 Mar 27 2s -7 - +07 2014 O 26 2s -6 - +06 2016 May 29 2s -7 - +07 -Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 2010 Mar 28 2s -6 R +06/+07 2011 Mar 27 2s -7 - +07 -Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6 -6 - +06 1930 Jun 21 -7 R +07/+08 1991 Mar 31 2s -6 R +06/+07 1992 Ja 19 2s -7 R +07/+08 2011 Mar 27 2s -8 - +08 2014 O 26 2s -7 - +07 -Z Asia/Irkutsk 6:57:5 - LMT 1880 -6:57:5 - IMT 1920 Ja 25 -7 - +07 1930 Jun 21 -8 R +08/+09 1991 Mar 31 2s -7 R +07/+08 1992 Ja 19 2s -8 R +08/+09 2011 Mar 27 2s -9 - +09 2014 O 26 2s -8 - +08 -Z Asia/Chita 7:33:52 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 R +09/+10 1991 Mar 31 2s -8 R +08/+09 1992 Ja 19 2s -9 R +09/+10 2011 Mar 27 2s -10 - +10 2014 O 26 2s -8 - +08 2016 Mar 27 2 -9 - +09 -Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 R +09/+10 1991 Mar 31 2s -8 R +08/+09 1992 Ja 19 2s -9 R +09/+10 2011 Mar 27 2s -10 - +10 2014 O 26 2s -9 - +09 -Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15 -9 - +09 1930 Jun 21 -10 R +10/+11 1991 Mar 31 2s -9 R +09/+10 1992 Ja 19 2s -10 R +10/+11 2011 Mar 27 2s -11 - +11 2014 O 26 2s -10 - +10 -Z Asia/Khandyga 9:2:13 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 R +09/+10 1991 Mar 31 2s -8 R +08/+09 1992 Ja 19 2s -9 R +09/+10 2004 -10 R +10/+11 2011 Mar 27 2s -11 - +11 2011 S 13 0s -10 - +10 2014 O 26 2s -9 - +09 -Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23 -9 - +09 1945 Au 25 -11 R +11/+12 1991 Mar 31 2s -10 R +10/+11 1992 Ja 19 2s -11 R +11/+12 1997 Mar lastSu 2s -10 R +10/+11 2011 Mar 27 2s -11 - +11 2014 O 26 2s -10 - +10 2016 Mar 27 2s -11 - +11 -Z Asia/Magadan 10:3:12 - LMT 1924 May 2 -10 - +10 1930 Jun 21 -11 R +11/+12 1991 Mar 31 2s -10 R +10/+11 1992 Ja 19 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 2014 O 26 2s -10 - +10 2016 Ap 24 2s -11 - +11 -Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2 -10 - +10 1930 Jun 21 -11 R +11/+12 1991 Mar 31 2s -10 R +10/+11 1992 Ja 19 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 2014 O 26 2s -11 - +11 -Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15 -8 - +08 1930 Jun 21 -9 R +09/+10 1981 Ap -11 R +11/+12 1991 Mar 31 2s -10 R +10/+11 1992 Ja 19 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 2011 S 13 0s -11 - +11 2014 O 26 2s -10 - +10 -Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10 -11 - +11 1930 Jun 21 -12 R +12/+13 1991 Mar 31 2s -11 R +11/+12 1992 Ja 19 2s -12 R +12/+13 2010 Mar 28 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 -Z Asia/Anadyr 11:49:56 - LMT 1924 May 2 -12 - +12 1930 Jun 21 -13 R +13/+14 1982 Ap 1 0s -12 R +12/+13 1991 Mar 31 2s -11 R +11/+12 1992 Ja 19 2s -12 R +12/+13 2010 Mar 28 2s -11 R +11/+12 2011 Mar 27 2s -12 - +12 -Z Europe/Belgrade 1:22 - LMT 1884 -1 - CET 1941 Ap 18 23 -1 c CE%sT 1945 -1 - CET 1945 May 8 2s -1 1 CEST 1945 S 16 2s -1 - CET 1982 N 27 -1 E CE%sT R s 1918 o - Ap 15 23 1 S R s 1918 1919 - O 6 24s 0 - R s 1919 o - Ap 6 23 1 S @@ -2487,30 +1418,8 @@ R Sp 1976 o - Au 1 0 0 - R Sp 1977 o - S 28 0 0 - R Sp 1978 o - Jun 1 0 1 S R Sp 1978 o - Au 4 0 0 - -Z Europe/Madrid -0:14:44 - LMT 1901 Ja 1 0u -0 s WE%sT 1940 Mar 16 23 -1 s CE%sT 1979 -1 E CE%sT -Z Africa/Ceuta -0:21:16 - LMT 1901 Ja 1 0u -0 - WET 1918 May 6 23 -0 1 WEST 1918 O 7 23 -0 - WET 1924 -0 s WE%sT 1929 -0 - WET 1967 -0 Sp WE%sT 1984 Mar 16 -1 - CET 1986 -1 E CE%sT -Z Atlantic/Canary -1:1:36 - LMT 1922 Mar --1 - -01 1946 S 30 1 -0 - WET 1980 Ap 6 0s -0 1 WEST 1980 S 28 1u -0 E WE%sT R CH 1941 1942 - May M>=1 1 1 S R CH 1941 1942 - O M>=1 2 0 - -Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16 -0:29:46 - BMT 1894 Jun -1 CH CE%sT 1981 -1 E CE%sT R T 1916 o - May 1 0 1 S R T 1916 o - O 1 0 0 - R T 1920 o - Mar 28 0 1 S @@ -2556,28 +1465,6 @@ R T 1986 1995 - S lastSu 1s 0 - R T 1994 o - Mar 20 1s 1 S R T 1995 2006 - Mar lastSu 1s 1 S R T 1996 2006 - O lastSu 1s 0 - -Z Europe/Istanbul 1:55:52 - LMT 1880 -1:56:56 - IMT 1910 O -2 T EE%sT 1978 Jun 29 -3 T +03/+04 1984 N 1 2 -2 T EE%sT 2007 -2 E EE%sT 2011 Mar 27 1u -2 - EET 2011 Mar 28 1u -2 E EE%sT 2014 Mar 30 1u -2 - EET 2014 Mar 31 1u -2 E EE%sT 2015 O 25 1u -2 1 EEST 2015 N 8 1u -2 E EE%sT 2016 S 7 -3 - +03 -Z Europe/Kyiv 2:2:4 - LMT 1880 -2:2:4 - KMT 1924 May 2 -2 - EET 1930 Jun 21 -3 - MSK 1941 S 20 -1 c CE%sT 1943 N 6 -3 R MSK/MSD 1990 Jul 1 2 -2 1 EEST 1991 S 29 3 -2 c EE%sT 1996 May 13 -2 E EE%sT R u 1918 1919 - Mar lastSu 2 1 D R u 1918 1919 - O lastSu 2 0 S R u 1942 o - F 9 2 1 W @@ -2591,172 +1478,34 @@ R u 1976 1986 - Ap lastSu 2 1 D R u 1987 2006 - Ap Su>=1 2 1 D R u 2007 ma - Mar Su>=8 2 1 D R u 2007 ma - N Su>=1 2 0 S -Z EST -5 - EST -Z MST -7 - MST -Z HST -10 - HST -Z EST5EDT -5 u E%sT -Z CST6CDT -6 u C%sT -Z MST7MDT -7 u M%sT -Z PST8PDT -8 u P%sT R NY 1920 o - Mar lastSu 2 1 D R NY 1920 o - O lastSu 2 0 S R NY 1921 1966 - Ap lastSu 2 1 D R NY 1921 1954 - S lastSu 2 0 S R NY 1955 1966 - O lastSu 2 0 S -Z America/New_York -4:56:2 - LMT 1883 N 18 17u --5 u E%sT 1920 --5 NY E%sT 1942 --5 u E%sT 1946 --5 NY E%sT 1967 --5 u E%sT R Ch 1920 o - Jun 13 2 1 D R Ch 1920 1921 - O lastSu 2 0 S R Ch 1921 o - Mar lastSu 2 1 D R Ch 1922 1966 - Ap lastSu 2 1 D R Ch 1922 1954 - S lastSu 2 0 S R Ch 1955 1966 - O lastSu 2 0 S -Z America/Chicago -5:50:36 - LMT 1883 N 18 18u --6 u C%sT 1920 --6 Ch C%sT 1936 Mar 1 2 --5 - EST 1936 N 15 2 --6 Ch C%sT 1942 --6 u C%sT 1946 --6 Ch C%sT 1967 --6 u C%sT -Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 19u --7 u M%sT 1992 O 25 2 --6 u C%sT -Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 19u --7 u M%sT 2003 O 26 2 --6 u C%sT -Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 19u --7 u M%sT 2010 N 7 2 --6 u C%sT R De 1920 1921 - Mar lastSu 2 1 D R De 1920 o - O lastSu 2 0 S R De 1921 o - May 22 2 0 S R De 1965 1966 - Ap lastSu 2 1 D R De 1965 1966 - O lastSu 2 0 S -Z America/Denver -6:59:56 - LMT 1883 N 18 19u --7 u M%sT 1920 --7 De M%sT 1942 --7 u M%sT 1946 --7 De M%sT 1967 --7 u M%sT R CA 1948 o - Mar 14 2:1 1 D R CA 1949 o - Ja 1 2 0 S R CA 1950 1966 - Ap lastSu 1 1 D R CA 1950 1961 - S lastSu 2 0 S R CA 1962 1966 - O lastSu 2 0 S -Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 20u --8 u P%sT 1946 --8 CA P%sT 1967 --8 u P%sT -Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32 --8:57:41 - LMT 1900 Au 20 12 --8 - PST 1942 --8 u P%sT 1946 --8 - PST 1969 --8 u P%sT 1980 Ap 27 2 --9 u Y%sT 1980 O 26 2 --8 u P%sT 1983 O 30 2 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30 --9:1:13 - LMT 1900 Au 20 12 --8 - PST 1942 --8 u P%sT 1946 --8 - PST 1969 --8 u P%sT 1983 O 30 2 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55 --8:46:18 - LMT 1900 Au 20 12 --8 - PST 1942 --8 u P%sT 1946 --8 - PST 1969 --8 u P%sT 1983 O 30 2 --8 - PST 2015 N 1 2 --9 u AK%sT 2018 N 4 2 --8 - PST 2019 Ja 20 2 --9 u AK%sT -Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18 --9:18:55 - LMT 1900 Au 20 12 --9 - YST 1942 --9 u Y%sT 1946 --9 - YST 1969 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37 --9:59:36 - LMT 1900 Au 20 12 --10 - AST 1942 --10 u A%sT 1967 Ap --10 - AHST 1969 --10 u AH%sT 1983 O 30 2 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35 --11:1:38 - LMT 1900 Au 20 12 --11 - NST 1942 --11 u N%sT 1946 --11 - NST 1967 Ap --11 - BST 1969 --11 u B%sT 1983 O 30 2 --9 u Y%sT 1983 N 30 --9 u AK%sT -Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35 --11:46:38 - LMT 1900 Au 20 12 --11 - NST 1942 --11 u N%sT 1946 --11 - NST 1967 Ap --11 - BST 1969 --11 u B%sT 1983 O 30 2 --10 u AH%sT 1983 N 30 --10 u H%sT -Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12 --10:30 - HST 1933 Ap 30 2 --10:30 1 HDT 1933 May 21 12 --10:30 u H%sT 1947 Jun 8 2 --10 - HST -Z America/Phoenix -7:28:18 - LMT 1883 N 18 19u --7 u M%sT 1944 Ja 1 0:1 --7 - MST 1944 Ap 1 0:1 --7 u M%sT 1944 O 1 0:1 --7 - MST 1967 --7 u M%sT 1968 Mar 21 --7 - MST -Z America/Boise -7:44:49 - LMT 1883 N 18 20u --8 u P%sT 1923 May 13 2 --7 u M%sT 1974 --7 - MST 1974 F 3 2 --7 u M%sT R In 1941 o - Jun 22 2 1 D R In 1941 1954 - S lastSu 2 0 S R In 1946 1954 - Ap lastSu 2 1 D -Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 18u --6 u C%sT 1920 --6 In C%sT 1942 --6 u C%sT 1946 --6 In C%sT 1955 Ap 24 2 --5 - EST 1957 S 29 2 --6 - CST 1958 Ap 27 2 --5 - EST 1969 --5 u E%sT 1971 --5 - EST 2006 --5 u E%sT R Ma 1951 o - Ap lastSu 2 1 D R Ma 1951 o - S lastSu 2 0 S R Ma 1954 1960 - Ap lastSu 2 1 D R Ma 1954 1960 - S lastSu 2 0 S -Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 18u --6 u C%sT 1951 --6 Ma C%sT 1961 Ap 30 2 --5 - EST 1969 --5 u E%sT 1974 Ja 6 2 --6 1 CDT 1974 O 27 2 --5 u E%sT 1976 --5 - EST 2006 --5 u E%sT R V 1946 o - Ap lastSu 2 1 D R V 1946 o - S lastSu 2 0 S R V 1953 1954 - Ap lastSu 2 1 D @@ -2766,68 +1515,23 @@ R V 1956 1963 - Ap lastSu 2 1 D R V 1960 o - O lastSu 2 0 S R V 1961 o - S lastSu 2 0 S R V 1962 1963 - O lastSu 2 0 S -Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 18u --6 u C%sT 1946 --6 V C%sT 1964 Ap 26 2 --5 - EST 1969 --5 u E%sT 1971 --5 - EST 2006 Ap 2 2 --6 u C%sT 2007 N 4 2 --5 u E%sT R Pe 1955 o - May 1 0 1 D R Pe 1955 1960 - S lastSu 2 0 S R Pe 1956 1963 - Ap lastSu 2 1 D R Pe 1961 1963 - O lastSu 2 0 S -Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 18u --6 u C%sT 1946 --6 Pe C%sT 1964 Ap 26 2 --5 - EST 1967 O 29 2 --6 u C%sT 1969 Ap 27 2 --5 u E%sT 1971 --5 - EST 2006 Ap 2 2 --6 u C%sT R Pi 1955 o - May 1 0 1 D R Pi 1955 1960 - S lastSu 2 0 S R Pi 1956 1964 - Ap lastSu 2 1 D R Pi 1961 1964 - O lastSu 2 0 S -Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 18u --6 u C%sT 1955 --6 Pi C%sT 1965 Ap 25 2 --5 - EST 1966 O 30 2 --6 u C%sT 1977 O 30 2 --5 - EST 2006 Ap 2 2 --6 u C%sT 2007 N 4 2 --5 u E%sT R St 1947 1961 - Ap lastSu 2 1 D R St 1947 1954 - S lastSu 2 0 S R St 1955 1956 - O lastSu 2 0 S R St 1957 1958 - S lastSu 2 0 S R St 1959 1961 - O lastSu 2 0 S -Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 18u --6 u C%sT 1947 --6 St C%sT 1962 Ap 29 2 --5 - EST 1963 O 27 2 --6 u C%sT 1991 O 27 2 --5 - EST 2006 Ap 2 2 --6 u C%sT R Pu 1946 1960 - Ap lastSu 2 1 D R Pu 1946 1954 - S lastSu 2 0 S R Pu 1955 1956 - O lastSu 2 0 S R Pu 1957 1960 - S lastSu 2 0 S -Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 18u --6 u C%sT 1946 --6 Pu C%sT 1961 Ap 30 2 --5 - EST 1969 --5 u E%sT 1971 --5 - EST 2006 Ap 2 2 --6 u C%sT 2007 Mar 11 2 --5 u E%sT -Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 18u --6 u C%sT 1954 Ap 25 2 --5 - EST 1969 --5 u E%sT 1973 --5 - EST 2006 --5 u E%sT R v 1921 o - May 1 2 1 D R v 1921 o - S 1 2 0 S R v 1941 o - Ap lastSu 2 1 D @@ -2837,41 +1541,12 @@ R v 1946 o - Jun 2 2 0 S R v 1950 1961 - Ap lastSu 2 1 D R v 1950 1955 - S lastSu 2 0 S R v 1956 1961 - O lastSu 2 0 S -Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 18u --6 u C%sT 1921 --6 v C%sT 1942 --6 u C%sT 1946 --6 v C%sT 1961 Jul 23 2 --5 - EST 1968 --5 u E%sT 1974 Ja 6 2 --6 1 CDT 1974 O 27 2 --5 u E%sT -Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 18u --6 u C%sT 1946 --6 - CST 1968 --6 u C%sT 2000 O 29 2 --5 u E%sT R Dt 1948 o - Ap lastSu 2 1 D R Dt 1948 o - S lastSu 2 0 S -Z America/Detroit -5:32:11 - LMT 1905 --6 - CST 1915 May 15 2 --5 - EST 1942 --5 u E%sT 1946 --5 Dt E%sT 1967 Jun 14 0:1 --5 u E%sT 1969 --5 - EST 1973 --5 u E%sT 1975 --5 - EST 1975 Ap 27 2 --5 u E%sT R Me 1946 o - Ap lastSu 2 1 D R Me 1946 o - S lastSu 2 0 S R Me 1966 o - Ap lastSu 2 1 D R Me 1966 o - O lastSu 2 0 S -Z America/Menominee -5:50:27 - LMT 1885 S 18 12 --6 u C%sT 1946 --6 Me C%sT 1969 Ap 27 2 --5 - EST 1973 Ap 29 2 --6 u C%sT R C 1918 o - Ap 14 2 1 D R C 1918 o - O 27 2 0 S R C 1942 o - F 9 2 1 W @@ -2901,24 +1576,6 @@ R j 1988 o - Ap Su>=1 0:1 2 DD R j 1989 2006 - Ap Su>=1 0:1 1 D R j 2007 2011 - Mar Su>=8 0:1 1 D R j 2007 2010 - N Su>=1 0:1 0 S -Z America/St_Johns -3:30:52 - LMT 1884 --3:30:52 j N%sT 1918 --3:30:52 C N%sT 1919 --3:30:52 j N%sT 1935 Mar 30 --3:30 j N%sT 1942 May 11 --3:30 C N%sT 1946 --3:30 j N%sT 2011 N --3:30 C N%sT -Z America/Goose_Bay -4:1:40 - LMT 1884 --3:30:52 - NST 1918 --3:30:52 C N%sT 1919 --3:30:52 - NST 1935 Mar 30 --3:30 - NST 1936 --3:30 j N%sT 1942 May 11 --3:30 C N%sT 1946 --3:30 j N%sT 1966 Mar 15 2 --4 j A%sT 2011 N --4 C A%sT R H 1916 o - Ap 1 0 1 D R H 1916 o - O 1 0 0 S R H 1920 o - May 9 0 1 D @@ -2960,19 +1617,6 @@ R H 1956 1959 - Ap lastSu 2 1 D R H 1956 1959 - S lastSu 2 0 S R H 1962 1973 - Ap lastSu 2 1 D R H 1962 1973 - O lastSu 2 0 S -Z America/Halifax -4:14:24 - LMT 1902 Jun 15 --4 H A%sT 1918 --4 C A%sT 1919 --4 H A%sT 1942 F 9 2s --4 C A%sT 1946 --4 H A%sT 1974 --4 C A%sT -Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15 --4 C A%sT 1953 --4 H A%sT 1954 --4 - AST 1972 --4 H A%sT 1974 --4 C A%sT R o 1933 1935 - Jun Su>=8 1 1 D R o 1933 1935 - S Su>=8 1 0 S R o 1936 1938 - Jun Su>=1 1 1 D @@ -2986,15 +1630,6 @@ R o 1946 1956 - S lastSu 2 0 S R o 1957 1972 - O lastSu 2 0 S R o 1993 2006 - Ap Su>=1 0:1 1 D R o 1993 2006 - O lastSu 0:1 0 S -Z America/Moncton -4:19:8 - LMT 1883 D 9 --5 - EST 1902 Jun 15 --4 C A%sT 1933 --4 o A%sT 1942 --4 C A%sT 1946 --4 o A%sT 1973 --4 C A%sT 1993 --4 o A%sT 2007 --4 C A%sT R t 1919 o - Mar 30 23:30 1 D R t 1919 o - O 26 0 0 S R t 1920 o - May 2 2 1 D @@ -3008,21 +1643,11 @@ R t 1927 1937 - S Su>=25 2 0 S R t 1928 1937 - Ap Su>=25 2 1 D R t 1938 1940 - Ap lastSu 2 1 D R t 1938 1939 - S lastSu 2 0 S -R t 1945 1946 - S lastSu 2 0 S -R t 1946 o - Ap lastSu 2 1 D -R t 1947 1949 - Ap lastSu 0 1 D -R t 1947 1948 - S lastSu 0 0 S -R t 1949 o - N lastSu 0 0 S -R t 1950 1973 - Ap lastSu 2 1 D -R t 1950 o - N lastSu 2 0 S +R t 1945 1948 - S lastSu 2 0 S +R t 1946 1973 - Ap lastSu 2 1 D +R t 1949 1950 - N lastSu 2 0 S R t 1951 1956 - S lastSu 2 0 S R t 1957 1973 - O lastSu 2 0 S -Z America/Toronto -5:17:32 - LMT 1895 --5 C E%sT 1919 --5 t E%sT 1942 F 9 2s --5 C E%sT 1946 --5 t E%sT 1974 --5 C E%sT R W 1916 o - Ap 23 0 1 D R W 1916 o - S 17 0 0 S R W 1918 o - Ap 14 2 1 D @@ -3047,9 +1672,6 @@ R W 1963 o - S 22 2 0 S R W 1966 1986 - Ap lastSu 2s 1 D R W 1966 2005 - O lastSu 2s 0 S R W 1987 2005 - Ap Su>=1 2s 1 D -Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16 --6 W C%sT 2006 --6 C C%sT R r 1918 o - Ap 14 2 1 D R r 1918 o - O 27 2 0 S R r 1930 1934 - May Su>=1 0 1 D @@ -3072,14 +1694,6 @@ R Sw 1957 o - O lastSu 2 0 S R Sw 1959 1961 - Ap lastSu 2 1 D R Sw 1959 o - O lastSu 2 0 S R Sw 1960 1961 - S lastSu 2 0 S -Z America/Regina -6:58:36 - LMT 1905 S --7 r M%sT 1960 Ap lastSu 2 --6 - CST -Z America/Swift_Current -7:11:20 - LMT 1905 S --7 C M%sT 1946 Ap lastSu 2 --7 r M%sT 1950 --7 Sw M%sT 1972 Ap lastSu 2 --6 - CST R Ed 1918 1919 - Ap Su>=8 2 1 D R Ed 1918 o - O 27 2 0 S R Ed 1919 o - May 27 2 0 S @@ -3093,9 +1707,6 @@ R Ed 1947 o - Ap lastSu 2 1 D R Ed 1947 o - S lastSu 2 0 S R Ed 1972 1986 - Ap lastSu 2 1 D R Ed 1972 2006 - O lastSu 2 0 S -Z America/Edmonton -7:33:52 - LMT 1906 S --7 Ed M%sT 1987 --7 C M%sT R Va 1918 o - Ap 14 2 1 D R Va 1918 o - O 27 2 0 S R Va 1942 o - F 9 2 1 W @@ -3105,19 +1716,6 @@ R Va 1946 1986 - Ap lastSu 2 1 D R Va 1946 o - S 29 2 0 S R Va 1947 1961 - S lastSu 2 0 S R Va 1962 2006 - O lastSu 2 0 S -Z America/Vancouver -8:12:28 - LMT 1884 --8 Va P%sT 1987 --8 C P%sT -Z America/Dawson_Creek -8:0:56 - LMT 1884 --8 C P%sT 1947 --8 Va P%sT 1972 Au 30 2 --7 - MST -Z America/Fort_Nelson -8:10:47 - LMT 1884 --8 Va P%sT 1946 --8 - PST 1947 --8 Va P%sT 1987 --8 C P%sT 2015 Mar 8 2 --7 - MST R Y 1918 o - Ap 14 2 1 D R Y 1918 o - O 27 2 0 S R Y 1919 o - May 25 2 1 D @@ -3130,42 +1728,6 @@ R Y 1972 2006 - O lastSu 2 0 S R Y 1987 2006 - Ap Su>=1 2 1 D R Yu 1965 o - Ap lastSu 0 2 DD R Yu 1965 o - O lastSu 2 0 S -Z America/Iqaluit 0 - -00 1942 Au --5 Y E%sT 1999 O 31 2 --6 C C%sT 2000 O 29 2 --5 C E%sT -Z America/Resolute 0 - -00 1947 Au 31 --6 Y C%sT 2000 O 29 2 --5 - EST 2001 Ap 1 3 --6 C C%sT 2006 O 29 2 --5 - EST 2007 Mar 11 3 --6 C C%sT -Z America/Rankin_Inlet 0 - -00 1957 --6 Y C%sT 2000 O 29 2 --5 - EST 2001 Ap 1 3 --6 C C%sT -Z America/Cambridge_Bay 0 - -00 1920 --7 Y M%sT 1999 O 31 2 --6 C C%sT 2000 O 29 2 --5 - EST 2000 N 5 --6 - CST 2001 Ap 1 3 --7 C M%sT -Z America/Inuvik 0 - -00 1953 --8 Y P%sT 1979 Ap lastSu 2 --7 Y M%sT 1980 --7 C M%sT -Z America/Whitehorse -9:0:12 - LMT 1900 Au 20 --9 Y Y%sT 1965 --9 Yu Y%sT 1966 F 27 --8 - PST 1980 --8 C P%sT 2020 N --7 - MST -Z America/Dawson -9:17:40 - LMT 1900 Au 20 --9 Y Y%sT 1965 --9 Yu Y%sT 1973 O 28 --8 - PST 1980 --8 C P%sT 2020 N --7 - MST R m 1931 o - May 1 23 1 D R m 1931 o - O 1 0 0 S R m 1939 o - F 5 0 1 D @@ -3182,107 +1744,6 @@ R m 2001 o - May Su>=1 2 1 D R m 2001 o - S lastSu 2 0 S R m 2002 2022 - Ap Su>=1 2 1 D R m 2002 2022 - O lastSu 2 0 S -Z America/Cancun -5:47:4 - LMT 1922 Ja 1 6u --6 - CST 1981 D 23 --5 m E%sT 1998 Au 2 2 --6 m C%sT 2015 F 1 2 --5 - EST -Z America/Merida -5:58:28 - LMT 1922 Ja 1 6u --6 - CST 1981 D 23 --5 - EST 1982 D 2 --6 m C%sT -Z America/Matamoros -6:30 - LMT 1922 Ja 1 6u --6 - CST 1988 --6 u C%sT 1989 --6 m C%sT 2010 --6 u C%sT -Z America/Monterrey -6:41:16 - LMT 1922 Ja 1 6u --6 - CST 1988 --6 u C%sT 1989 --6 m C%sT -Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 m C%sT 2001 S 30 2 --6 - CST 2002 F 20 --6 m C%sT -Z America/Ciudad_Juarez -7:5:56 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1996 --6 m C%sT 1998 --6 - CST 1998 Ap Su>=1 3 --7 m M%sT 2010 --7 u M%sT 2022 O 30 2 --6 - CST 2022 N 30 --7 u M%sT -Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1996 --6 m C%sT 1998 --6 - CST 1998 Ap Su>=1 3 --7 m M%sT 2010 --7 u M%sT 2022 O 30 2 --6 - CST 2022 N 30 --6 u C%sT -Z America/Chihuahua -7:4:20 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1996 --6 m C%sT 1998 --6 - CST 1998 Ap Su>=1 3 --7 m M%sT 2022 O 30 2 --6 - CST -Z America/Hermosillo -7:23:52 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1942 Ap 24 --7 - MST 1949 Ja 14 --8 - PST 1970 --7 m M%sT 1999 --7 - MST -Z America/Mazatlan -7:5:40 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1942 Ap 24 --7 - MST 1949 Ja 14 --8 - PST 1970 --7 m M%sT -Z America/Bahia_Banderas -7:1 - LMT 1922 Ja 1 7u --7 - MST 1927 Jun 10 23 --6 - CST 1930 N 15 --7 m M%sT 1932 Ap --6 - CST 1942 Ap 24 --7 - MST 1949 Ja 14 --8 - PST 1970 --7 m M%sT 2010 Ap 4 2 --6 m C%sT -Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u --7 - MST 1924 --8 - PST 1927 Jun 10 23 --7 - MST 1930 N 15 --8 - PST 1931 Ap --8 1 PDT 1931 S 30 --8 - PST 1942 Ap 24 --8 1 PWT 1945 Au 14 23u --8 1 PPT 1945 N 12 --8 - PST 1948 Ap 5 --8 1 PDT 1949 Ja 14 --8 - PST 1954 --8 CA P%sT 1961 --8 - PST 1976 --8 u P%sT 1996 --8 m P%sT 2001 --8 u P%sT 2002 F 20 --8 m P%sT 2010 --8 u P%sT R BB 1942 o - Ap 19 5u 1 D R BB 1942 o - Au 31 6u 0 S R BB 1943 o - May 2 5u 1 D @@ -3294,10 +1755,6 @@ R BB 1977 1978 - O Su>=1 2 0 S R BB 1978 1980 - Ap Su>=15 2 1 D R BB 1979 o - S 30 2 0 S R BB 1980 o - S 25 2 0 S -Z America/Barbados -3:58:29 - LMT 1911 Au 28 --4 BB A%sT 1944 --4 BB AST/-0330 1945 --4 BB A%sT R BZ 1918 1941 - O Sa>=1 24 0:30 -0530 R BZ 1919 1942 - F Sa>=8 24 0 CST R BZ 1942 o - Jun 27 24 1 CWT @@ -3309,8 +1766,6 @@ R BZ 1973 o - D 5 0 1 CDT R BZ 1974 o - F 9 0 0 CST R BZ 1982 o - D 18 0 1 CDT R BZ 1983 o - F 12 0 0 CST -Z America/Belize -5:52:48 - LMT 1912 Ap --6 BZ %s R Be 1917 o - Ap 5 24 1 - R Be 1917 o - S 30 24 0 - R Be 1918 o - Ap 13 24 1 - @@ -3327,19 +1782,11 @@ R Be 1948 1952 - May Su>=22 2 1 D R Be 1948 1952 - S Su>=1 2 0 S R Be 1956 o - May Su>=22 2 1 D R Be 1956 o - O lastSu 2 0 S -Z Atlantic/Bermuda -4:19:18 - LMT 1890 --4:19:18 Be BMT/BST 1930 Ja 1 2 --4 Be A%sT 1974 Ap 28 2 --4 C A%sT 1976 --4 u A%sT R CR 1979 1980 - F lastSu 0 1 D R CR 1979 1980 - Jun Su>=1 0 0 S R CR 1991 1992 - Ja Sa>=15 0 1 D R CR 1991 o - Jul 1 0 0 S R CR 1992 o - Mar 15 0 0 S -Z America/Costa_Rica -5:36:13 - LMT 1890 --5:36:13 - SJMT 1921 Ja 15 --6 CR C%sT R Q 1928 o - Jun 10 0 1 D R Q 1928 o - O 10 0 0 S R Q 1940 1942 - Jun Su>=1 0 1 D @@ -3379,25 +1826,14 @@ R Q 2011 o - N 13 0s 0 S R Q 2012 o - Ap 1 0s 1 D R Q 2012 ma - N Su>=1 0s 0 S R Q 2013 ma - Mar Su>=8 0s 1 D -Z America/Havana -5:29:28 - LMT 1890 --5:29:36 - HMT 1925 Jul 19 12 --5 Q C%sT R DO 1966 o - O 30 0 1 EDT R DO 1967 o - F 28 0 0 EST R DO 1969 1973 - O lastSu 0 0:30 -0430 R DO 1970 o - F 21 0 0 EST R DO 1971 o - Ja 20 0 0 EST R DO 1972 1974 - Ja 21 0 0 EST -Z America/Santo_Domingo -4:39:36 - LMT 1890 --4:40 - SDMT 1933 Ap 1 12 --5 DO %s 1974 O 27 --4 - AST 2000 O 29 2 --5 u E%sT 2000 D 3 1 --4 - AST R SV 1987 1988 - May Su>=1 0 1 D R SV 1987 1988 - S lastSu 0 0 S -Z America/El_Salvador -5:56:48 - LMT 1921 --6 SV C%sT R GT 1973 o - N 25 0 1 D R GT 1974 o - F 24 0 0 S R GT 1983 o - May 21 0 1 D @@ -3406,8 +1842,6 @@ R GT 1991 o - Mar 23 0 1 D R GT 1991 o - S 7 0 0 S R GT 2006 o - Ap 30 0 1 D R GT 2006 o - O 1 0 0 S -Z America/Guatemala -6:2:4 - LMT 1918 O 5 --6 GT C%sT R HT 1983 o - May 8 0 1 D R HT 1984 1987 - Ap lastSu 0 1 D R HT 1983 1987 - O lastSu 0 0 S @@ -3419,57 +1853,16 @@ R HT 2012 2015 - Mar Su>=8 2 1 D R HT 2012 2015 - N Su>=1 2 0 S R HT 2017 ma - Mar Su>=8 2 1 D R HT 2017 ma - N Su>=1 2 0 S -Z America/Port-au-Prince -4:49:20 - LMT 1890 --4:49 - PPMT 1917 Ja 24 12 --5 HT E%sT R HN 1987 1988 - May Su>=1 0 1 D R HN 1987 1988 - S lastSu 0 0 S R HN 2006 o - May Su>=1 0 1 D R HN 2006 o - Au M>=1 0 0 S -Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap --6 HN C%sT -Z America/Jamaica -5:7:10 - LMT 1890 --5:7:10 - KMT 1912 F --5 - EST 1974 --5 u E%sT 1984 --5 - EST -Z America/Martinique -4:4:20 - LMT 1890 --4:4:20 - FFMT 1911 May --4 - AST 1980 Ap 6 --4 1 ADT 1980 S 28 --4 - AST R NI 1979 1980 - Mar Su>=16 0 1 D R NI 1979 1980 - Jun M>=23 0 0 S R NI 2005 o - Ap 10 0 1 D R NI 2005 o - O Su>=1 0 0 S R NI 2006 o - Ap 30 2 1 D R NI 2006 o - O Su>=1 1 0 S -Z America/Managua -5:45:8 - LMT 1890 --5:45:12 - MMT 1934 Jun 23 --6 - CST 1973 May --5 - EST 1975 F 16 --6 NI C%sT 1992 Ja 1 4 --5 - EST 1992 S 24 --6 - CST 1993 --5 - EST 1997 --6 NI C%sT -Z America/Panama -5:18:8 - LMT 1890 --5:19:36 - CMT 1908 Ap 22 --5 - EST -Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12 --4 - AST 1942 May 3 --4 u A%sT 1946 --4 - AST -Z America/Miquelon -3:44:40 - LMT 1911 May 15 --4 - AST 1980 May --3 - -03 1987 --3 C -03/-02 -Z America/Grand_Turk -4:44:32 - LMT 1890 --5:7:10 - KMT 1912 F --5 - EST 1979 --5 u E%sT 2015 Mar 8 2 --4 - AST 2018 Mar 11 3 --5 u E%sT R A 1930 o - D 1 0 1 - R A 1931 o - Ap 1 0 0 - R A 1931 o - O 15 0 1 - @@ -3499,150 +1892,8 @@ R A 2000 o - Mar 3 0 0 - R A 2007 o - D 30 0 1 - R A 2008 2009 - Mar Su>=15 0 0 - R A 2008 o - O Su>=15 0 1 - -Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 A -03/-02 -Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 A -03/-02 -Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 13 --3 A -03/-02 -Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar --4 - -04 1991 May 7 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 20 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar --4 - -04 1991 May 7 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 May 31 --4 - -04 2004 Jul 25 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1990 Mar 4 --4 - -04 1990 O 28 --4 1 -03 1991 Mar 17 --4 - -04 1991 O 6 --3 1 -02 1992 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1991 Mar 3 --4 - -04 1991 O 20 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 20 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1990 Mar 4 --4 - -04 1990 O 15 --4 1 -03 1991 Mar --4 - -04 1991 O 15 --4 1 -03 1992 Mar --4 - -04 1992 O 18 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 May 23 --4 - -04 2004 S 26 --3 A -03/-02 2008 O 18 --3 - -03 R Sa 2008 2009 - Mar Su>=8 0 0 - R Sa 2007 2008 - O Su>=8 0 1 - -Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1990 --3 1 -02 1990 Mar 14 --4 - -04 1990 O 15 --4 1 -03 1991 Mar --4 - -04 1991 Jun --3 - -03 1999 O 3 --4 1 -03 2000 Mar 3 --3 - -03 2004 May 31 --4 - -04 2004 Jul 25 --3 A -03/-02 2008 Ja 21 --4 Sa -04/-03 2009 O 11 --3 - -03 -Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 Jun --4 - -04 2004 Jun 20 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31 --4:16:48 - CMT 1920 May --4 - -04 1930 D --4 A -04/-03 1969 O 5 --3 A -03/-02 1999 O 3 --4 A -04/-03 2000 Mar 3 --3 - -03 2004 May 30 --4 - -04 2004 Jun 20 --3 A -03/-02 2008 O 18 --3 - -03 -Z America/La_Paz -4:32:36 - LMT 1890 --4:32:36 - CMT 1931 O 15 --4:32:36 1 BST 1932 Mar 21 --4 - -04 R B 1931 o - O 3 11 1 - R B 1932 1933 - Ap 1 0 0 - R B 1932 o - O 3 0 1 - @@ -3700,90 +1951,6 @@ R B 2013 2014 - F Su>=15 0 0 - R B 2015 o - F Su>=22 0 0 - R B 2016 2019 - F Su>=15 0 0 - R B 2018 o - N Su>=1 0 1 - -Z America/Noronha -2:9:40 - LMT 1914 --2 B -02/-01 1990 S 17 --2 - -02 1999 S 30 --2 B -02/-01 2000 O 15 --2 - -02 2001 S 13 --2 B -02/-01 2002 O --2 - -02 -Z America/Belem -3:13:56 - LMT 1914 --3 B -03/-02 1988 S 12 --3 - -03 -Z America/Santarem -3:38:48 - LMT 1914 --4 B -04/-03 1988 S 12 --4 - -04 2008 Jun 24 --3 - -03 -Z America/Fortaleza -2:34 - LMT 1914 --3 B -03/-02 1990 S 17 --3 - -03 1999 S 30 --3 B -03/-02 2000 O 22 --3 - -03 2001 S 13 --3 B -03/-02 2002 O --3 - -03 -Z America/Recife -2:19:36 - LMT 1914 --3 B -03/-02 1990 S 17 --3 - -03 1999 S 30 --3 B -03/-02 2000 O 15 --3 - -03 2001 S 13 --3 B -03/-02 2002 O --3 - -03 -Z America/Araguaina -3:12:48 - LMT 1914 --3 B -03/-02 1990 S 17 --3 - -03 1995 S 14 --3 B -03/-02 2003 S 24 --3 - -03 2012 O 21 --3 B -03/-02 2013 S --3 - -03 -Z America/Maceio -2:22:52 - LMT 1914 --3 B -03/-02 1990 S 17 --3 - -03 1995 O 13 --3 B -03/-02 1996 S 4 --3 - -03 1999 S 30 --3 B -03/-02 2000 O 22 --3 - -03 2001 S 13 --3 B -03/-02 2002 O --3 - -03 -Z America/Bahia -2:34:4 - LMT 1914 --3 B -03/-02 2003 S 24 --3 - -03 2011 O 16 --3 B -03/-02 2012 O 21 --3 - -03 -Z America/Sao_Paulo -3:6:28 - LMT 1914 --3 B -03/-02 1963 O 23 --3 1 -02 1964 --3 B -03/-02 -Z America/Campo_Grande -3:38:28 - LMT 1914 --4 B -04/-03 -Z America/Cuiaba -3:44:20 - LMT 1914 --4 B -04/-03 2003 S 24 --4 - -04 2004 O --4 B -04/-03 -Z America/Porto_Velho -4:15:36 - LMT 1914 --4 B -04/-03 1988 S 12 --4 - -04 -Z America/Boa_Vista -4:2:40 - LMT 1914 --4 B -04/-03 1988 S 12 --4 - -04 1999 S 30 --4 B -04/-03 2000 O 15 --4 - -04 -Z America/Manaus -4:0:4 - LMT 1914 --4 B -04/-03 1988 S 12 --4 - -04 1993 S 28 --4 B -04/-03 1994 S 22 --4 - -04 -Z America/Eirunepe -4:39:28 - LMT 1914 --5 B -05/-04 1988 S 12 --5 - -05 1993 S 28 --5 B -05/-04 1994 S 22 --5 - -05 2008 Jun 24 --4 - -04 2013 N 10 --5 - -05 -Z America/Rio_Branco -4:31:12 - LMT 1914 --5 B -05/-04 1988 S 12 --5 - -05 2008 Jun 24 --4 - -04 2013 N 10 --5 - -05 R x 1927 1931 - S 1 0 1 - R x 1928 1932 - Ap 1 0 0 - R x 1968 o - N 3 4u 1 - @@ -3820,56 +1987,10 @@ R x 2019 ma - Ap Su>=2 3u 0 - R x 2019 2021 - S Su>=2 4u 1 - R x 2022 o - S Su>=9 4u 1 - R x 2023 ma - S Su>=2 4u 1 - -Z America/Santiago -4:42:45 - LMT 1890 --4:42:45 - SMT 1910 Ja 10 --5 - -05 1916 Jul --4:42:45 - SMT 1918 S 10 --4 - -04 1919 Jul --4:42:45 - SMT 1927 S --5 x -05/-04 1932 S --4 - -04 1942 Jun --5 - -05 1942 Au --4 - -04 1946 Jul 14 24 --4 1 -03 1946 Au 28 24 --5 1 -04 1947 Mar 31 24 --5 - -05 1947 May 21 23 --4 x -04/-03 -Z America/Punta_Arenas -4:43:40 - LMT 1890 --4:42:45 - SMT 1910 Ja 10 --5 - -05 1916 Jul --4:42:45 - SMT 1918 S 10 --4 - -04 1919 Jul --4:42:45 - SMT 1927 S --5 x -05/-04 1932 S --4 - -04 1942 Jun --5 - -05 1942 Au --4 - -04 1946 Au 28 24 --5 1 -04 1947 Mar 31 24 --5 - -05 1947 May 21 23 --4 x -04/-03 2016 D 4 --3 - -03 -Z Pacific/Easter -7:17:28 - LMT 1890 --7:17:28 - EMT 1932 S --7 x -07/-06 1982 Mar 14 3u --6 x -06/-05 -Z Antarctica/Palmer 0 - -00 1965 --4 A -04/-03 1969 O 5 --3 A -03/-02 1982 May --4 x -04/-03 2016 D 4 --3 - -03 R CO 1992 o - May 3 0 1 - R CO 1993 o - F 6 24 0 - -Z America/Bogota -4:56:16 - LMT 1884 Mar 13 --4:56:16 - BMT 1914 N 23 --5 CO -05/-04 R EC 1992 o - N 28 0 1 - R EC 1993 o - F 5 0 0 - -Z America/Guayaquil -5:19:20 - LMT 1890 --5:14 - QMT 1931 --5 EC -05/-04 -Z Pacific/Galapagos -5:58:24 - LMT 1931 --5 - -05 1986 --6 EC -06/-05 R FK 1937 1938 - S lastSu 0 1 - R FK 1938 1942 - Mar Su>=19 0 0 - R FK 1939 o - O 1 0 1 - @@ -3882,20 +2003,6 @@ R FK 1985 2000 - S Su>=9 0 1 - R FK 1986 2000 - Ap Su>=16 0 0 - R FK 2001 2010 - Ap Su>=15 2 0 - R FK 2001 2010 - S Su>=1 2 1 - -Z Atlantic/Stanley -3:51:24 - LMT 1890 --3:51:24 - SMT 1912 Mar 12 --4 FK -04/-03 1983 May --3 FK -03/-02 1985 S 15 --4 FK -04/-03 2010 S 5 2 --3 - -03 -Z America/Cayenne -3:29:20 - LMT 1911 Jul --4 - -04 1967 O --3 - -03 -Z America/Guyana -3:52:39 - LMT 1911 Au --4 - -04 1915 Mar --3:45 - -0345 1975 Au --3 - -03 1992 Mar 29 1 --4 - -04 R y 1975 1988 - O 1 0 1 - R y 1975 1978 - Mar 1 0 0 - R y 1979 1991 - Ap 1 0 0 - @@ -3918,11 +2025,6 @@ R y 2005 2009 - Mar Su>=8 0 0 - R y 2010 ma - O Su>=1 0 1 - R y 2010 2012 - Ap Su>=8 0 0 - R y 2013 ma - Mar Su>=22 0 0 - -Z America/Asuncion -3:50:40 - LMT 1890 --3:50:40 - AMT 1931 O 10 --4 - -04 1972 O --3 - -03 1974 Ap --4 y -04/-03 R PE 1938 o - Ja 1 0 1 - R PE 1938 o - Ap 1 0 0 - R PE 1938 1939 - S lastSu 0 1 - @@ -3933,16 +2035,6 @@ R PE 1990 o - Ja 1 0 1 - R PE 1990 o - Ap 1 0 0 - R PE 1994 o - Ja 1 0 1 - R PE 1994 o - Ap 1 0 0 - -Z America/Lima -5:8:12 - LMT 1890 --5:8:36 - LMT 1908 Jul 28 --5 PE -05/-04 -Z Atlantic/South_Georgia -2:26:8 - LMT 1890 --2 - -02 -Z America/Paramaribo -3:40:40 - LMT 1911 --3:40:52 - PMT 1935 --3:40:36 - PMT 1945 O --3:30 - -0330 1984 O --3 - -03 R U 1923 1925 - O 1 0 0:30 - R U 1924 1926 - Ap 1 0 0 - R U 1933 1938 - O lastSu 0 0:30 - @@ -3991,6 +2083,659 @@ R U 2005 o - Mar 27 2 0 - R U 2005 o - O 9 2 1 - R U 2006 2015 - Mar Su>=8 2 0 - R U 2006 2014 - O Su>=1 2 1 - +Z Africa/Abidjan -0:16:8 - LMT 1912 +0 - GMT +Z Africa/Algiers 0:12:12 - LMT 1891 Mar 16 +0:9:21 - PMT 1911 Mar 11 +0 d WE%sT 1940 F 25 2 +1 d CE%sT 1946 O 7 +0 - WET 1956 Ja 29 +1 - CET 1963 Ap 14 +0 d WE%sT 1977 O 21 +1 d CE%sT 1979 O 26 +0 d WE%sT 1981 May +1 - CET +Z Africa/Bissau -1:2:20 - LMT 1912 Ja 1 1u +-1 - -01 1975 +0 - GMT +Z Africa/Cairo 2:5:9 - LMT 1900 O +2 K EE%sT +Z Africa/Casablanca -0:30:20 - LMT 1913 O 26 +0 M +00/+01 1984 Mar 16 +1 - +01 1986 +0 M +00/+01 2018 O 28 3 +1 M +01/+00 +Z Africa/Ceuta -0:21:16 - LMT 1901 Ja 1 0u +0 - WET 1918 May 6 23 +0 1 WEST 1918 O 7 23 +0 - WET 1924 +0 s WE%sT 1929 +0 - WET 1967 +0 Sp WE%sT 1984 Mar 16 +1 - CET 1986 +1 E CE%sT +Z Africa/El_Aaiun -0:52:48 - LMT 1934 +-1 - -01 1976 Ap 14 +0 M +00/+01 2018 O 28 3 +1 M +01/+00 +Z Africa/Johannesburg 1:52 - LMT 1892 F 8 +1:30 - SAST 1903 Mar +2 SA SAST +Z Africa/Juba 2:6:28 - LMT 1931 +2 SD CA%sT 2000 Ja 15 12 +3 - EAT 2021 F +2 - CAT +Z Africa/Khartoum 2:10:8 - LMT 1931 +2 SD CA%sT 2000 Ja 15 12 +3 - EAT 2017 N +2 - CAT +Z Africa/Lagos 0:13:35 - LMT 1905 Jul +0 - GMT 1908 Jul +0:13:35 - LMT 1914 +0:30 - +0030 1919 S +1 - WAT +Z Africa/Maputo 2:10:20 - LMT 1903 Mar +2 - CAT +Z Africa/Monrovia -0:43:8 - LMT 1882 +-0:43:8 - MMT 1919 Mar +-0:44:30 - MMT 1972 Ja 7 +0 - GMT +Z Africa/Nairobi 2:27:16 - LMT 1908 May +2:30 - +0230 1928 Jun 30 24 +3 - EAT 1930 Ja 4 24 +2:30 - +0230 1936 D 31 24 +2:45 - +0245 1942 Jul 31 24 +3 - EAT +Z Africa/Ndjamena 1:0:12 - LMT 1912 +1 - WAT 1979 O 14 +1 1 WAST 1980 Mar 8 +1 - WAT +Z Africa/Sao_Tome 0:26:56 - LMT 1884 +-0:36:45 - LMT 1912 Ja 1 0u +0 - GMT 2018 Ja 1 1 +1 - WAT 2019 Ja 1 2 +0 - GMT +Z Africa/Tripoli 0:52:44 - LMT 1920 +1 L CE%sT 1959 +2 - EET 1982 +1 L CE%sT 1990 May 4 +2 - EET 1996 S 30 +1 L CE%sT 1997 O 4 +2 - EET 2012 N 10 2 +1 L CE%sT 2013 O 25 2 +2 - EET +Z Africa/Tunis 0:40:44 - LMT 1881 May 12 +0:9:21 - PMT 1911 Mar 11 +1 n CE%sT +Z Africa/Windhoek 1:8:24 - LMT 1892 F 8 +1:30 - +0130 1903 Mar +2 - SAST 1942 S 20 2 +2 1 SAST 1943 Mar 21 2 +2 - SAST 1990 Mar 21 +2 NA %s +Z America/Adak 12:13:22 - LMT 1867 O 19 12:44:35 +-11:46:38 - LMT 1900 Au 20 12 +-11 - NST 1942 +-11 u N%sT 1946 +-11 - NST 1967 Ap +-11 - BST 1969 +-11 u B%sT 1983 O 30 2 +-10 u AH%sT 1983 N 30 +-10 u H%sT +Z America/Anchorage 14:0:24 - LMT 1867 O 19 14:31:37 +-9:59:36 - LMT 1900 Au 20 12 +-10 - AST 1942 +-10 u A%sT 1967 Ap +-10 - AHST 1969 +-10 u AH%sT 1983 O 30 2 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z America/Araguaina -3:12:48 - LMT 1914 +-3 B -03/-02 1990 S 17 +-3 - -03 1995 S 14 +-3 B -03/-02 2003 S 24 +-3 - -03 2012 O 21 +-3 B -03/-02 2013 S +-3 - -03 +Z America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 A -03/-02 +Z America/Argentina/Catamarca -4:23:8 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar 3 +-4 - -04 1991 O 20 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 Jun +-4 - -04 2004 Jun 20 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/Cordoba -4:16:48 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar 3 +-4 - -04 1991 O 20 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 A -03/-02 +Z America/Argentina/Jujuy -4:21:12 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1990 Mar 4 +-4 - -04 1990 O 28 +-4 1 -03 1991 Mar 17 +-4 - -04 1991 O 6 +-3 1 -02 1992 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/La_Rioja -4:27:24 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar +-4 - -04 1991 May 7 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 Jun +-4 - -04 2004 Jun 20 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/Mendoza -4:35:16 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1990 Mar 4 +-4 - -04 1990 O 15 +-4 1 -03 1991 Mar +-4 - -04 1991 O 15 +-4 1 -03 1992 Mar +-4 - -04 1992 O 18 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 May 23 +-4 - -04 2004 S 26 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 Jun +-4 - -04 2004 Jun 20 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/Salta -4:21:40 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar 3 +-4 - -04 1991 O 20 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/San_Juan -4:34:4 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar +-4 - -04 1991 May 7 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 May 31 +-4 - -04 2004 Jul 25 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Argentina/San_Luis -4:25:24 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1990 +-3 1 -02 1990 Mar 14 +-4 - -04 1990 O 15 +-4 1 -03 1991 Mar +-4 - -04 1991 Jun +-3 - -03 1999 O 3 +-4 1 -03 2000 Mar 3 +-3 - -03 2004 May 31 +-4 - -04 2004 Jul 25 +-3 A -03/-02 2008 Ja 21 +-4 Sa -04/-03 2009 O 11 +-3 - -03 +Z America/Argentina/Tucuman -4:20:52 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1991 Mar 3 +-4 - -04 1991 O 20 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 Jun +-4 - -04 2004 Jun 13 +-3 A -03/-02 +Z America/Argentina/Ushuaia -4:33:12 - LMT 1894 O 31 +-4:16:48 - CMT 1920 May +-4 - -04 1930 D +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1999 O 3 +-4 A -04/-03 2000 Mar 3 +-3 - -03 2004 May 30 +-4 - -04 2004 Jun 20 +-3 A -03/-02 2008 O 18 +-3 - -03 +Z America/Asuncion -3:50:40 - LMT 1890 +-3:50:40 - AMT 1931 O 10 +-4 - -04 1972 O +-3 - -03 1974 Ap +-4 y -04/-03 +Z America/Bahia -2:34:4 - LMT 1914 +-3 B -03/-02 2003 S 24 +-3 - -03 2011 O 16 +-3 B -03/-02 2012 O 21 +-3 - -03 +Z America/Bahia_Banderas -7:1 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1942 Ap 24 +-7 - MST 1949 Ja 14 +-8 - PST 1970 +-7 m M%sT 2010 Ap 4 2 +-6 m C%sT +Z America/Barbados -3:58:29 - LMT 1911 Au 28 +-4 BB A%sT 1944 +-4 BB AST/-0330 1945 +-4 BB A%sT +Z America/Belem -3:13:56 - LMT 1914 +-3 B -03/-02 1988 S 12 +-3 - -03 +Z America/Belize -5:52:48 - LMT 1912 Ap +-6 BZ %s +Z America/Boa_Vista -4:2:40 - LMT 1914 +-4 B -04/-03 1988 S 12 +-4 - -04 1999 S 30 +-4 B -04/-03 2000 O 15 +-4 - -04 +Z America/Bogota -4:56:16 - LMT 1884 Mar 13 +-4:56:16 - BMT 1914 N 23 +-5 CO -05/-04 +Z America/Boise -7:44:49 - LMT 1883 N 18 20u +-8 u P%sT 1923 May 13 2 +-7 u M%sT 1974 +-7 - MST 1974 F 3 2 +-7 u M%sT +Z America/Cambridge_Bay 0 - -00 1920 +-7 Y M%sT 1999 O 31 2 +-6 C C%sT 2000 O 29 2 +-5 - EST 2000 N 5 +-6 - CST 2001 Ap 1 3 +-7 C M%sT +Z America/Campo_Grande -3:38:28 - LMT 1914 +-4 B -04/-03 +Z America/Cancun -5:47:4 - LMT 1922 Ja 1 6u +-6 - CST 1981 D 23 +-5 m E%sT 1998 Au 2 2 +-6 m C%sT 2015 F 1 2 +-5 - EST +Z America/Caracas -4:27:44 - LMT 1890 +-4:27:40 - CMT 1912 F 12 +-4:30 - -0430 1965 +-4 - -04 2007 D 9 3 +-4:30 - -0430 2016 May 1 2:30 +-4 - -04 +Z America/Cayenne -3:29:20 - LMT 1911 Jul +-4 - -04 1967 O +-3 - -03 +Z America/Chicago -5:50:36 - LMT 1883 N 18 18u +-6 u C%sT 1920 +-6 Ch C%sT 1936 Mar 1 2 +-5 - EST 1936 N 15 2 +-6 Ch C%sT 1942 +-6 u C%sT 1946 +-6 Ch C%sT 1967 +-6 u C%sT +Z America/Chihuahua -7:4:20 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1996 +-6 m C%sT 1998 +-6 - CST 1998 Ap Su>=1 3 +-7 m M%sT 2022 O 30 2 +-6 - CST +Z America/Ciudad_Juarez -7:5:56 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1996 +-6 m C%sT 1998 +-6 - CST 1998 Ap Su>=1 3 +-7 m M%sT 2010 +-7 u M%sT 2022 O 30 2 +-6 - CST 2022 N 30 +-7 u M%sT +Z America/Costa_Rica -5:36:13 - LMT 1890 +-5:36:13 - SJMT 1921 Ja 15 +-6 CR C%sT +Z America/Cuiaba -3:44:20 - LMT 1914 +-4 B -04/-03 2003 S 24 +-4 - -04 2004 O +-4 B -04/-03 +Z America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28 +-3 - -03 1980 Ap 6 2 +-3 E -03/-02 1996 +0 - GMT +Z America/Dawson -9:17:40 - LMT 1900 Au 20 +-9 Y Y%sT 1965 +-9 Yu Y%sT 1973 O 28 +-8 - PST 1980 +-8 C P%sT 2020 N +-7 - MST +Z America/Dawson_Creek -8:0:56 - LMT 1884 +-8 C P%sT 1947 +-8 Va P%sT 1972 Au 30 2 +-7 - MST +Z America/Denver -6:59:56 - LMT 1883 N 18 19u +-7 u M%sT 1920 +-7 De M%sT 1942 +-7 u M%sT 1946 +-7 De M%sT 1967 +-7 u M%sT +Z America/Detroit -5:32:11 - LMT 1905 +-6 - CST 1915 May 15 2 +-5 - EST 1942 +-5 u E%sT 1946 +-5 Dt E%sT 1967 Jun 14 0:1 +-5 u E%sT 1969 +-5 - EST 1973 +-5 u E%sT 1975 +-5 - EST 1975 Ap 27 2 +-5 u E%sT +Z America/Edmonton -7:33:52 - LMT 1906 S +-7 Ed M%sT 1987 +-7 C M%sT +Z America/Eirunepe -4:39:28 - LMT 1914 +-5 B -05/-04 1988 S 12 +-5 - -05 1993 S 28 +-5 B -05/-04 1994 S 22 +-5 - -05 2008 Jun 24 +-4 - -04 2013 N 10 +-5 - -05 +Z America/El_Salvador -5:56:48 - LMT 1921 +-6 SV C%sT +Z America/Fort_Nelson -8:10:47 - LMT 1884 +-8 Va P%sT 1946 +-8 - PST 1947 +-8 Va P%sT 1987 +-8 C P%sT 2015 Mar 8 2 +-7 - MST +Z America/Fortaleza -2:34 - LMT 1914 +-3 B -03/-02 1990 S 17 +-3 - -03 1999 S 30 +-3 B -03/-02 2000 O 22 +-3 - -03 2001 S 13 +-3 B -03/-02 2002 O +-3 - -03 +Z America/Glace_Bay -3:59:48 - LMT 1902 Jun 15 +-4 C A%sT 1953 +-4 H A%sT 1954 +-4 - AST 1972 +-4 H A%sT 1974 +-4 C A%sT +Z America/Goose_Bay -4:1:40 - LMT 1884 +-3:30:52 - NST 1918 +-3:30:52 C N%sT 1919 +-3:30:52 - NST 1935 Mar 30 +-3:30 - NST 1936 +-3:30 j N%sT 1942 May 11 +-3:30 C N%sT 1946 +-3:30 j N%sT 1966 Mar 15 2 +-4 j A%sT 2011 N +-4 C A%sT +Z America/Grand_Turk -4:44:32 - LMT 1890 +-5:7:10 - KMT 1912 F +-5 - EST 1979 +-5 u E%sT 2015 Mar 8 2 +-4 - AST 2018 Mar 11 3 +-5 u E%sT +Z America/Guatemala -6:2:4 - LMT 1918 O 5 +-6 GT C%sT +Z America/Guayaquil -5:19:20 - LMT 1890 +-5:14 - QMT 1931 +-5 EC -05/-04 +Z America/Guyana -3:52:39 - LMT 1911 Au +-4 - -04 1915 Mar +-3:45 - -0345 1975 Au +-3 - -03 1992 Mar 29 1 +-4 - -04 +Z America/Halifax -4:14:24 - LMT 1902 Jun 15 +-4 H A%sT 1918 +-4 C A%sT 1919 +-4 H A%sT 1942 F 9 2s +-4 C A%sT 1946 +-4 H A%sT 1974 +-4 C A%sT +Z America/Havana -5:29:28 - LMT 1890 +-5:29:36 - HMT 1925 Jul 19 12 +-5 Q C%sT +Z America/Hermosillo -7:23:52 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1942 Ap 24 +-7 - MST 1949 Ja 14 +-8 - PST 1970 +-7 m M%sT 1999 +-7 - MST +Z America/Indiana/Indianapolis -5:44:38 - LMT 1883 N 18 18u +-6 u C%sT 1920 +-6 In C%sT 1942 +-6 u C%sT 1946 +-6 In C%sT 1955 Ap 24 2 +-5 - EST 1957 S 29 2 +-6 - CST 1958 Ap 27 2 +-5 - EST 1969 +-5 u E%sT 1971 +-5 - EST 2006 +-5 u E%sT +Z America/Indiana/Knox -5:46:30 - LMT 1883 N 18 18u +-6 u C%sT 1947 +-6 St C%sT 1962 Ap 29 2 +-5 - EST 1963 O 27 2 +-6 u C%sT 1991 O 27 2 +-5 - EST 2006 Ap 2 2 +-6 u C%sT +Z America/Indiana/Marengo -5:45:23 - LMT 1883 N 18 18u +-6 u C%sT 1951 +-6 Ma C%sT 1961 Ap 30 2 +-5 - EST 1969 +-5 u E%sT 1974 Ja 6 2 +-6 1 CDT 1974 O 27 2 +-5 u E%sT 1976 +-5 - EST 2006 +-5 u E%sT +Z America/Indiana/Petersburg -5:49:7 - LMT 1883 N 18 18u +-6 u C%sT 1955 +-6 Pi C%sT 1965 Ap 25 2 +-5 - EST 1966 O 30 2 +-6 u C%sT 1977 O 30 2 +-5 - EST 2006 Ap 2 2 +-6 u C%sT 2007 N 4 2 +-5 u E%sT +Z America/Indiana/Tell_City -5:47:3 - LMT 1883 N 18 18u +-6 u C%sT 1946 +-6 Pe C%sT 1964 Ap 26 2 +-5 - EST 1967 O 29 2 +-6 u C%sT 1969 Ap 27 2 +-5 u E%sT 1971 +-5 - EST 2006 Ap 2 2 +-6 u C%sT +Z America/Indiana/Vevay -5:40:16 - LMT 1883 N 18 18u +-6 u C%sT 1954 Ap 25 2 +-5 - EST 1969 +-5 u E%sT 1973 +-5 - EST 2006 +-5 u E%sT +Z America/Indiana/Vincennes -5:50:7 - LMT 1883 N 18 18u +-6 u C%sT 1946 +-6 V C%sT 1964 Ap 26 2 +-5 - EST 1969 +-5 u E%sT 1971 +-5 - EST 2006 Ap 2 2 +-6 u C%sT 2007 N 4 2 +-5 u E%sT +Z America/Indiana/Winamac -5:46:25 - LMT 1883 N 18 18u +-6 u C%sT 1946 +-6 Pu C%sT 1961 Ap 30 2 +-5 - EST 1969 +-5 u E%sT 1971 +-5 - EST 2006 Ap 2 2 +-6 u C%sT 2007 Mar 11 2 +-5 u E%sT +Z America/Inuvik 0 - -00 1953 +-8 Y P%sT 1979 Ap lastSu 2 +-7 Y M%sT 1980 +-7 C M%sT +Z America/Iqaluit 0 - -00 1942 Au +-5 Y E%sT 1999 O 31 2 +-6 C C%sT 2000 O 29 2 +-5 C E%sT +Z America/Jamaica -5:7:10 - LMT 1890 +-5:7:10 - KMT 1912 F +-5 - EST 1974 +-5 u E%sT 1984 +-5 - EST +Z America/Juneau 15:2:19 - LMT 1867 O 19 15:33:32 +-8:57:41 - LMT 1900 Au 20 12 +-8 - PST 1942 +-8 u P%sT 1946 +-8 - PST 1969 +-8 u P%sT 1980 Ap 27 2 +-9 u Y%sT 1980 O 26 2 +-8 u P%sT 1983 O 30 2 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z America/Kentucky/Louisville -5:43:2 - LMT 1883 N 18 18u +-6 u C%sT 1921 +-6 v C%sT 1942 +-6 u C%sT 1946 +-6 v C%sT 1961 Jul 23 2 +-5 - EST 1968 +-5 u E%sT 1974 Ja 6 2 +-6 1 CDT 1974 O 27 2 +-5 u E%sT +Z America/Kentucky/Monticello -5:39:24 - LMT 1883 N 18 18u +-6 u C%sT 1946 +-6 - CST 1968 +-6 u C%sT 2000 O 29 2 +-5 u E%sT +Z America/La_Paz -4:32:36 - LMT 1890 +-4:32:36 - CMT 1931 O 15 +-4:32:36 1 BST 1932 Mar 21 +-4 - -04 +Z America/Lima -5:8:12 - LMT 1890 +-5:8:36 - LMT 1908 Jul 28 +-5 PE -05/-04 +Z America/Los_Angeles -7:52:58 - LMT 1883 N 18 20u +-8 u P%sT 1946 +-8 CA P%sT 1967 +-8 u P%sT +Z America/Maceio -2:22:52 - LMT 1914 +-3 B -03/-02 1990 S 17 +-3 - -03 1995 O 13 +-3 B -03/-02 1996 S 4 +-3 - -03 1999 S 30 +-3 B -03/-02 2000 O 22 +-3 - -03 2001 S 13 +-3 B -03/-02 2002 O +-3 - -03 +Z America/Managua -5:45:8 - LMT 1890 +-5:45:12 - MMT 1934 Jun 23 +-6 - CST 1973 May +-5 - EST 1975 F 16 +-6 NI C%sT 1992 Ja 1 4 +-5 - EST 1992 S 24 +-6 - CST 1993 +-5 - EST 1997 +-6 NI C%sT +Z America/Manaus -4:0:4 - LMT 1914 +-4 B -04/-03 1988 S 12 +-4 - -04 1993 S 28 +-4 B -04/-03 1994 S 22 +-4 - -04 +Z America/Martinique -4:4:20 - LMT 1890 +-4:4:20 - FFMT 1911 May +-4 - AST 1980 Ap 6 +-4 1 ADT 1980 S 28 +-4 - AST +Z America/Matamoros -6:30 - LMT 1922 Ja 1 6u +-6 - CST 1988 +-6 u C%sT 1989 +-6 m C%sT 2010 +-6 u C%sT +Z America/Mazatlan -7:5:40 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1942 Ap 24 +-7 - MST 1949 Ja 14 +-8 - PST 1970 +-7 m M%sT +Z America/Menominee -5:50:27 - LMT 1885 S 18 12 +-6 u C%sT 1946 +-6 Me C%sT 1969 Ap 27 2 +-5 - EST 1973 Ap 29 2 +-6 u C%sT +Z America/Merida -5:58:28 - LMT 1922 Ja 1 6u +-6 - CST 1981 D 23 +-5 - EST 1982 D 2 +-6 m C%sT +Z America/Metlakatla 15:13:42 - LMT 1867 O 19 15:44:55 +-8:46:18 - LMT 1900 Au 20 12 +-8 - PST 1942 +-8 u P%sT 1946 +-8 - PST 1969 +-8 u P%sT 1983 O 30 2 +-8 - PST 2015 N 1 2 +-9 u AK%sT 2018 N 4 2 +-8 - PST 2019 Ja 20 2 +-9 u AK%sT +Z America/Mexico_City -6:36:36 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 m C%sT 2001 S 30 2 +-6 - CST 2002 F 20 +-6 m C%sT +Z America/Miquelon -3:44:40 - LMT 1911 Jun 15 +-4 - AST 1980 May +-3 - -03 1987 +-3 C -03/-02 +Z America/Moncton -4:19:8 - LMT 1883 D 9 +-5 - EST 1902 Jun 15 +-4 C A%sT 1933 +-4 o A%sT 1942 +-4 C A%sT 1946 +-4 o A%sT 1973 +-4 C A%sT 1993 +-4 o A%sT 2007 +-4 C A%sT +Z America/Monterrey -6:41:16 - LMT 1922 Ja 1 6u +-6 - CST 1988 +-6 u C%sT 1989 +-6 m C%sT Z America/Montevideo -3:44:51 - LMT 1908 Jun 10 -3:44:51 - MMT 1920 May -4 - -04 1923 O @@ -4002,30 +2747,842 @@ Z America/Montevideo -3:44:51 - LMT 1908 Jun 10 -3 U -03/-0130 1974 Mar 10 -3 U -03/-0230 1974 D 22 -3 U -03/-02 -Z America/Caracas -4:27:44 - LMT 1890 --4:27:40 - CMT 1912 F 12 --4:30 - -0430 1965 --4 - -04 2007 D 9 3 --4:30 - -0430 2016 May 1 2:30 +Z America/New_York -4:56:2 - LMT 1883 N 18 17u +-5 u E%sT 1920 +-5 NY E%sT 1942 +-5 u E%sT 1946 +-5 NY E%sT 1967 +-5 u E%sT +Z America/Nome 12:58:22 - LMT 1867 O 19 13:29:35 +-11:1:38 - LMT 1900 Au 20 12 +-11 - NST 1942 +-11 u N%sT 1946 +-11 - NST 1967 Ap +-11 - BST 1969 +-11 u B%sT 1983 O 30 2 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z America/Noronha -2:9:40 - LMT 1914 +-2 B -02/-01 1990 S 17 +-2 - -02 1999 S 30 +-2 B -02/-01 2000 O 15 +-2 - -02 2001 S 13 +-2 B -02/-01 2002 O +-2 - -02 +Z America/North_Dakota/Beulah -6:47:7 - LMT 1883 N 18 19u +-7 u M%sT 2010 N 7 2 +-6 u C%sT +Z America/North_Dakota/Center -6:45:12 - LMT 1883 N 18 19u +-7 u M%sT 1992 O 25 2 +-6 u C%sT +Z America/North_Dakota/New_Salem -6:45:39 - LMT 1883 N 18 19u +-7 u M%sT 2003 O 26 2 +-6 u C%sT +Z America/Nuuk -3:26:56 - LMT 1916 Jul 28 +-3 - -03 1980 Ap 6 2 +-3 E -03/-02 2023 Mar 26 1u +-2 - -02 2023 O 29 1u +-2 E -02/-01 +Z America/Ojinaga -6:57:40 - LMT 1922 Ja 1 7u +-7 - MST 1927 Jun 10 23 +-6 - CST 1930 N 15 +-7 m M%sT 1932 Ap +-6 - CST 1996 +-6 m C%sT 1998 +-6 - CST 1998 Ap Su>=1 3 +-7 m M%sT 2010 +-7 u M%sT 2022 O 30 2 +-6 - CST 2022 N 30 +-6 u C%sT +Z America/Panama -5:18:8 - LMT 1890 +-5:19:36 - CMT 1908 Ap 22 +-5 - EST +Z America/Paramaribo -3:40:40 - LMT 1911 +-3:40:52 - PMT 1935 +-3:40:36 - PMT 1945 O +-3:30 - -0330 1984 O +-3 - -03 +Z America/Phoenix -7:28:18 - LMT 1883 N 18 19u +-7 u M%sT 1944 Ja 1 0:1 +-7 - MST 1944 Ap 1 0:1 +-7 u M%sT 1944 O 1 0:1 +-7 - MST 1967 +-7 u M%sT 1968 Mar 21 +-7 - MST +Z America/Port-au-Prince -4:49:20 - LMT 1890 +-4:49 - PPMT 1917 Ja 24 12 +-5 HT E%sT +Z America/Porto_Velho -4:15:36 - LMT 1914 +-4 B -04/-03 1988 S 12 -4 - -04 -Z Etc/UTC 0 - UTC +Z America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12 +-4 - AST 1942 May 3 +-4 u A%sT 1946 +-4 - AST +Z America/Punta_Arenas -4:43:40 - LMT 1890 +-4:42:45 - SMT 1910 Ja 10 +-5 - -05 1916 Jul +-4:42:45 - SMT 1918 S 10 +-4 - -04 1919 Jul +-4:42:45 - SMT 1927 S +-5 x -05/-04 1932 S +-4 - -04 1942 Jun +-5 - -05 1942 Au +-4 - -04 1946 Au 28 24 +-5 1 -04 1947 Mar 31 24 +-5 - -05 1947 May 21 23 +-4 x -04/-03 2016 D 4 +-3 - -03 +Z America/Rankin_Inlet 0 - -00 1957 +-6 Y C%sT 2000 O 29 2 +-5 - EST 2001 Ap 1 3 +-6 C C%sT +Z America/Recife -2:19:36 - LMT 1914 +-3 B -03/-02 1990 S 17 +-3 - -03 1999 S 30 +-3 B -03/-02 2000 O 15 +-3 - -03 2001 S 13 +-3 B -03/-02 2002 O +-3 - -03 +Z America/Regina -6:58:36 - LMT 1905 S +-7 r M%sT 1960 Ap lastSu 2 +-6 - CST +Z America/Resolute 0 - -00 1947 Au 31 +-6 Y C%sT 2000 O 29 2 +-5 - EST 2001 Ap 1 3 +-6 C C%sT 2006 O 29 2 +-5 - EST 2007 Mar 11 3 +-6 C C%sT +Z America/Rio_Branco -4:31:12 - LMT 1914 +-5 B -05/-04 1988 S 12 +-5 - -05 2008 Jun 24 +-4 - -04 2013 N 10 +-5 - -05 +Z America/Santarem -3:38:48 - LMT 1914 +-4 B -04/-03 1988 S 12 +-4 - -04 2008 Jun 24 +-3 - -03 +Z America/Santiago -4:42:45 - LMT 1890 +-4:42:45 - SMT 1910 Ja 10 +-5 - -05 1916 Jul +-4:42:45 - SMT 1918 S 10 +-4 - -04 1919 Jul +-4:42:45 - SMT 1927 S +-5 x -05/-04 1932 S +-4 - -04 1942 Jun +-5 - -05 1942 Au +-4 - -04 1946 Jul 14 24 +-4 1 -03 1946 Au 28 24 +-5 1 -04 1947 Mar 31 24 +-5 - -05 1947 May 21 23 +-4 x -04/-03 +Z America/Santo_Domingo -4:39:36 - LMT 1890 +-4:40 - SDMT 1933 Ap 1 12 +-5 DO %s 1974 O 27 +-4 - AST 2000 O 29 2 +-5 u E%sT 2000 D 3 1 +-4 - AST +Z America/Sao_Paulo -3:6:28 - LMT 1914 +-3 B -03/-02 1963 O 23 +-3 1 -02 1964 +-3 B -03/-02 +Z America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 +-2 - -02 1980 Ap 6 2 +-2 c -02/-01 1981 Mar 29 +-1 E -01/+00 2024 Mar 31 +-2 E -02/-01 +Z America/Sitka 14:58:47 - LMT 1867 O 19 15:30 +-9:1:13 - LMT 1900 Au 20 12 +-8 - PST 1942 +-8 u P%sT 1946 +-8 - PST 1969 +-8 u P%sT 1983 O 30 2 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z America/St_Johns -3:30:52 - LMT 1884 +-3:30:52 j N%sT 1918 +-3:30:52 C N%sT 1919 +-3:30:52 j N%sT 1935 Mar 30 +-3:30 j N%sT 1942 May 11 +-3:30 C N%sT 1946 +-3:30 j N%sT 2011 N +-3:30 C N%sT +Z America/Swift_Current -7:11:20 - LMT 1905 S +-7 C M%sT 1946 Ap lastSu 2 +-7 r M%sT 1950 +-7 Sw M%sT 1972 Ap lastSu 2 +-6 - CST +Z America/Tegucigalpa -5:48:52 - LMT 1921 Ap +-6 HN C%sT +Z America/Thule -4:35:8 - LMT 1916 Jul 28 +-4 Th A%sT +Z America/Tijuana -7:48:4 - LMT 1922 Ja 1 7u +-7 - MST 1924 +-8 - PST 1927 Jun 10 23 +-7 - MST 1930 N 15 +-8 - PST 1931 Ap +-8 1 PDT 1931 S 30 +-8 - PST 1942 Ap 24 +-8 1 PWT 1945 Au 14 23u +-8 1 PPT 1945 N 12 +-8 - PST 1948 Ap 5 +-8 1 PDT 1949 Ja 14 +-8 - PST 1954 +-8 CA P%sT 1961 +-8 - PST 1976 +-8 u P%sT 1996 +-8 m P%sT 2001 +-8 u P%sT 2002 F 20 +-8 m P%sT 2010 +-8 u P%sT +Z America/Toronto -5:17:32 - LMT 1895 +-5 C E%sT 1919 +-5 t E%sT 1942 F 9 2s +-5 C E%sT 1946 +-5 t E%sT 1974 +-5 C E%sT +Z America/Vancouver -8:12:28 - LMT 1884 +-8 Va P%sT 1987 +-8 C P%sT +Z America/Whitehorse -9:0:12 - LMT 1900 Au 20 +-9 Y Y%sT 1965 +-9 Yu Y%sT 1966 F 27 +-8 - PST 1980 +-8 C P%sT 2020 N +-7 - MST +Z America/Winnipeg -6:28:36 - LMT 1887 Jul 16 +-6 W C%sT 2006 +-6 C C%sT +Z America/Yakutat 14:41:5 - LMT 1867 O 19 15:12:18 +-9:18:55 - LMT 1900 Au 20 12 +-9 - YST 1942 +-9 u Y%sT 1946 +-9 - YST 1969 +-9 u Y%sT 1983 N 30 +-9 u AK%sT +Z Antarctica/Casey 0 - -00 1969 +8 - +08 2009 O 18 2 +11 - +11 2010 Mar 5 2 +8 - +08 2011 O 28 2 +11 - +11 2012 F 21 17u +8 - +08 2016 O 22 +11 - +11 2018 Mar 11 4 +8 - +08 2018 O 7 4 +11 - +11 2019 Mar 17 3 +8 - +08 2019 O 4 3 +11 - +11 2020 Mar 8 3 +8 - +08 2020 O 4 0:1 +11 - +11 2021 Mar 14 +8 - +08 2021 O 3 0:1 +11 - +11 2022 Mar 13 +8 - +08 2022 O 2 0:1 +11 - +11 2023 Mar 9 3 +8 - +08 +Z Antarctica/Davis 0 - -00 1957 Ja 13 +7 - +07 1964 N +0 - -00 1969 F +7 - +07 2009 O 18 2 +5 - +05 2010 Mar 10 20u +7 - +07 2011 O 28 2 +5 - +05 2012 F 21 20u +7 - +07 +Z Antarctica/Macquarie 0 - -00 1899 N +10 - AEST 1916 O 1 2 +10 1 AEDT 1917 F +10 AU AE%sT 1919 Ap 1 0s +0 - -00 1948 Mar 25 +10 AU AE%sT 1967 +10 AT AE%sT 2010 +10 1 AEDT 2011 +10 AT AE%sT +Z Antarctica/Mawson 0 - -00 1954 F 13 +6 - +06 2009 O 18 2 +5 - +05 +Z Antarctica/Palmer 0 - -00 1965 +-4 A -04/-03 1969 O 5 +-3 A -03/-02 1982 May +-4 x -04/-03 2016 D 4 +-3 - -03 +Z Antarctica/Rothera 0 - -00 1976 D +-3 - -03 +Z Antarctica/Troll 0 - -00 2005 F 12 +0 Tr %s +Z Antarctica/Vostok 0 - -00 1957 D 16 +7 - +07 1994 F +0 - -00 1994 N +7 - +07 2023 D 18 2 +5 - +05 +Z Asia/Almaty 5:7:48 - LMT 1924 May 2 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2s +5 R +05/+06 1992 Ja 19 2s +6 R +06/+07 2004 O 31 2s +6 - +06 2024 Mar +5 - +05 +Z Asia/Amman 2:23:44 - LMT 1931 +2 J EE%sT 2022 O 28 0s +3 - +03 +Z Asia/Anadyr 11:49:56 - LMT 1924 May 2 +12 - +12 1930 Jun 21 +13 R +13/+14 1982 Ap 1 0s +12 R +12/+13 1991 Mar 31 2s +11 R +11/+12 1992 Ja 19 2s +12 R +12/+13 2010 Mar 28 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 +Z Asia/Aqtau 3:21:4 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 1994 S 25 2s +4 R +04/+05 2004 O 31 2s +5 - +05 +Z Asia/Aqtobe 3:48:40 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 2004 O 31 2s +5 - +05 +Z Asia/Ashgabat 3:53:32 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 R +05/+06 1991 Mar 31 2 +4 R +04/+05 1992 Ja 19 2 +5 - +05 +Z Asia/Atyrau 3:27:44 - LMT 1924 May 2 +3 - +03 1930 Jun 21 +5 - +05 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 1999 Mar 28 2s +4 R +04/+05 2004 O 31 2s +5 - +05 +Z Asia/Baghdad 2:57:40 - LMT 1890 +2:57:36 - BMT 1918 +3 - +03 1982 May +3 IQ +03/+04 +Z Asia/Baku 3:19:24 - LMT 1924 May 2 +3 - +03 1957 Mar +4 R +04/+05 1991 Mar 31 2s +3 R +03/+04 1992 S lastSu 2s +4 - +04 1996 +4 E +04/+05 1997 +4 AZ +04/+05 +Z Asia/Bangkok 6:42:4 - LMT 1880 +6:42:4 - BMT 1920 Ap +7 - +07 +Z Asia/Barnaul 5:35 - LMT 1919 D 10 +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 1995 May 28 +6 R +06/+07 2011 Mar 27 2s +7 - +07 2014 O 26 2s +6 - +06 2016 Mar 27 2s +7 - +07 +Z Asia/Beirut 2:22 - LMT 1880 +2 l EE%sT +Z Asia/Bishkek 4:58:24 - LMT 1924 May 2 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2s +5 R +05/+06 1991 Au 31 2 +5 KG +05/+06 2005 Au 12 +6 - +06 +Z Asia/Chita 7:33:52 - LMT 1919 D 15 +8 - +08 1930 Jun 21 +9 R +09/+10 1991 Mar 31 2s +8 R +08/+09 1992 Ja 19 2s +9 R +09/+10 2011 Mar 27 2s +10 - +10 2014 O 26 2s +8 - +08 2016 Mar 27 2 +9 - +09 +Z Asia/Choibalsan 7:38 - LMT 1905 Au +7 - +07 1978 +8 - +08 1983 Ap +9 X +09/+10 2008 Mar 31 +8 X +08/+09 +Z Asia/Colombo 5:19:24 - LMT 1880 +5:19:32 - MMT 1906 +5:30 - +0530 1942 Ja 5 +5:30 0:30 +06 1942 S +5:30 1 +0630 1945 O 16 2 +5:30 - +0530 1996 May 25 +6:30 - +0630 1996 O 26 0:30 +6 - +06 2006 Ap 15 0:30 +5:30 - +0530 +Z Asia/Damascus 2:25:12 - LMT 1920 +2 S EE%sT 2022 O 28 +3 - +03 +Z Asia/Dhaka 6:1:40 - LMT 1890 +5:53:20 - HMT 1941 O +6:30 - +0630 1942 May 15 +5:30 - +0530 1942 S +6:30 - +0630 1951 S 30 +6 - +06 2009 +6 BD +06/+07 +Z Asia/Dili 8:22:20 - LMT 1912 +8 - +08 1942 F 21 23 +9 - +09 1976 May 3 +8 - +08 2000 S 17 +9 - +09 +Z Asia/Dubai 3:41:12 - LMT 1920 +4 - +04 +Z Asia/Dushanbe 4:35:12 - LMT 1924 May 2 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2s +5 1 +06 1991 S 9 2s +5 - +05 +Z Asia/Famagusta 2:15:48 - LMT 1921 N 14 +2 CY EE%sT 1998 S +2 E EE%sT 2016 S 8 +3 - +03 2017 O 29 1u +2 E EE%sT +Z Asia/Gaza 2:17:52 - LMT 1900 O +2 Z EET/EEST 1948 May 15 +2 K EE%sT 1967 Jun 5 +2 Z I%sT 1996 +2 J EE%sT 1999 +2 P EE%sT 2008 Au 29 +2 - EET 2008 S +2 P EE%sT 2010 +2 - EET 2010 Mar 27 0:1 +2 P EE%sT 2011 Au +2 - EET 2012 +2 P EE%sT +Z Asia/Hebron 2:20:23 - LMT 1900 O +2 Z EET/EEST 1948 May 15 +2 K EE%sT 1967 Jun 5 +2 Z I%sT 1996 +2 J EE%sT 1999 +2 P EE%sT +Z Asia/Ho_Chi_Minh 7:6:30 - LMT 1906 Jul +7:6:30 - PLMT 1911 May +7 - +07 1942 D 31 23 +8 - +08 1945 Mar 14 23 +9 - +09 1945 S 1 24 +7 - +07 1947 Ap +8 - +08 1955 Jul 1 1 +7 - +07 1959 D 31 23 +8 - +08 1975 Jun 13 +7 - +07 +Z Asia/Hong_Kong 7:36:42 - LMT 1904 O 29 17u +8 - HKT 1941 Jun 15 3 +8 1 HKST 1941 O 1 4 +8 0:30 HKWT 1941 D 25 +9 - JST 1945 N 18 2 +8 HK HK%sT +Z Asia/Hovd 6:6:36 - LMT 1905 Au +6 - +06 1978 +7 X +07/+08 +Z Asia/Irkutsk 6:57:5 - LMT 1880 +6:57:5 - IMT 1920 Ja 25 +7 - +07 1930 Jun 21 +8 R +08/+09 1991 Mar 31 2s +7 R +07/+08 1992 Ja 19 2s +8 R +08/+09 2011 Mar 27 2s +9 - +09 2014 O 26 2s +8 - +08 +Z Asia/Jakarta 7:7:12 - LMT 1867 Au 10 +7:7:12 - BMT 1923 D 31 16:40u +7:20 - +0720 1932 N +7:30 - +0730 1942 Mar 23 +9 - +09 1945 S 23 +7:30 - +0730 1948 May +8 - +08 1950 May +7:30 - +0730 1964 +7 - WIB +Z Asia/Jayapura 9:22:48 - LMT 1932 N +9 - +09 1944 S +9:30 - +0930 1964 +9 - WIT +Z Asia/Jerusalem 2:20:54 - LMT 1880 +2:20:40 - JMT 1918 +2 Z I%sT +Z Asia/Kabul 4:36:48 - LMT 1890 +4 - +04 1945 +4:30 - +0430 +Z Asia/Kamchatka 10:34:36 - LMT 1922 N 10 +11 - +11 1930 Jun 21 +12 R +12/+13 1991 Mar 31 2s +11 R +11/+12 1992 Ja 19 2s +12 R +12/+13 2010 Mar 28 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 +Z Asia/Karachi 4:28:12 - LMT 1907 +5:30 - +0530 1942 S +5:30 1 +0630 1945 O 15 +5:30 - +0530 1951 S 30 +5 - +05 1971 Mar 26 +5 PK PK%sT +Z Asia/Kathmandu 5:41:16 - LMT 1920 +5:30 - +0530 1986 +5:45 - +0545 +Z Asia/Khandyga 9:2:13 - LMT 1919 D 15 +8 - +08 1930 Jun 21 +9 R +09/+10 1991 Mar 31 2s +8 R +08/+09 1992 Ja 19 2s +9 R +09/+10 2004 +10 R +10/+11 2011 Mar 27 2s +11 - +11 2011 S 13 0s +10 - +10 2014 O 26 2s +9 - +09 +Z Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 +5:53:20 - HMT 1870 +5:21:10 - MMT 1906 +5:30 - IST 1941 O +5:30 1 +0630 1942 May 15 +5:30 - IST 1942 S +5:30 1 +0630 1945 O 15 +5:30 - IST +Z Asia/Krasnoyarsk 6:11:26 - LMT 1920 Ja 6 +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 2011 Mar 27 2s +8 - +08 2014 O 26 2s +7 - +07 +Z Asia/Kuching 7:21:20 - LMT 1926 Mar +7:30 - +0730 1933 +8 NB +08/+0820 1942 F 16 +9 - +09 1945 S 12 +8 - +08 +Z Asia/Macau 7:34:10 - LMT 1904 O 30 +8 - CST 1941 D 21 23 +9 _ +09/+10 1945 S 30 24 +8 _ C%sT +Z Asia/Magadan 10:3:12 - LMT 1924 May 2 +10 - +10 1930 Jun 21 +11 R +11/+12 1991 Mar 31 2s +10 R +10/+11 1992 Ja 19 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 2014 O 26 2s +10 - +10 2016 Ap 24 2s +11 - +11 +Z Asia/Makassar 7:57:36 - LMT 1920 +7:57:36 - MMT 1932 N +8 - +08 1942 F 9 +9 - +09 1945 S 23 +8 - WITA +Z Asia/Manila -15:56 - LMT 1844 D 31 +8:4 - LMT 1899 May 11 +8 PH P%sT 1942 May +9 - JST 1944 N +8 PH P%sT +Z Asia/Nicosia 2:13:28 - LMT 1921 N 14 +2 CY EE%sT 1998 S +2 E EE%sT +Z Asia/Novokuznetsk 5:48:48 - LMT 1924 May +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 2010 Mar 28 2s +6 R +06/+07 2011 Mar 27 2s +7 - +07 +Z Asia/Novosibirsk 5:31:40 - LMT 1919 D 14 6 +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 1993 May 23 +6 R +06/+07 2011 Mar 27 2s +7 - +07 2014 O 26 2s +6 - +06 2016 Jul 24 2s +7 - +07 +Z Asia/Omsk 4:53:30 - LMT 1919 N 14 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2s +5 R +05/+06 1992 Ja 19 2s +6 R +06/+07 2011 Mar 27 2s +7 - +07 2014 O 26 2s +6 - +06 +Z Asia/Oral 3:25:24 - LMT 1924 May 2 +3 - +03 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1989 Mar 26 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 1992 Mar 29 2s +4 R +04/+05 2004 O 31 2s +5 - +05 +Z Asia/Pontianak 7:17:20 - LMT 1908 May +7:17:20 - PMT 1932 N +7:30 - +0730 1942 Ja 29 +9 - +09 1945 S 23 +7:30 - +0730 1948 May +8 - +08 1950 May +7:30 - +0730 1964 +8 - WITA 1988 +7 - WIB +Z Asia/Pyongyang 8:23 - LMT 1908 Ap +8:30 - KST 1912 +9 - JST 1945 Au 24 +9 - KST 2015 Au 15 +8:30 - KST 2018 May 4 23:30 +9 - KST +Z Asia/Qatar 3:26:8 - LMT 1920 +4 - +04 1972 Jun +3 - +03 +Z Asia/Qostanay 4:14:28 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 2004 O 31 2s +6 - +06 2024 Mar +5 - +05 +Z Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1991 S 29 2s +5 R +05/+06 1992 Ja 19 2s +6 R +06/+07 1992 Mar 29 2s +5 R +05/+06 2004 O 31 2s +6 - +06 2018 D 21 +5 - +05 +Z Asia/Riyadh 3:6:52 - LMT 1947 Mar 14 +3 - +03 +Z Asia/Sakhalin 9:30:48 - LMT 1905 Au 23 +9 - +09 1945 Au 25 +11 R +11/+12 1991 Mar 31 2s +10 R +10/+11 1992 Ja 19 2s +11 R +11/+12 1997 Mar lastSu 2s +10 R +10/+11 2011 Mar 27 2s +11 - +11 2014 O 26 2s +10 - +10 2016 Mar 27 2s +11 - +11 +Z Asia/Samarkand 4:27:53 - LMT 1924 May 2 +4 - +04 1930 Jun 21 +5 - +05 1981 Ap +5 1 +06 1981 O +6 - +06 1982 Ap +5 R +05/+06 1992 +5 - +05 +Z Asia/Seoul 8:27:52 - LMT 1908 Ap +8:30 - KST 1912 +9 - JST 1945 S 8 +9 KR K%sT 1954 Mar 21 +8:30 KR K%sT 1961 Au 10 +9 KR K%sT +Z Asia/Shanghai 8:5:43 - LMT 1901 +8 Sh C%sT 1949 May 28 +8 CN C%sT +Z Asia/Singapore 6:55:25 - LMT 1901 +6:55:25 - SMT 1905 Jun +7 - +07 1933 +7 0:20 +0720 1936 +7:20 - +0720 1941 S +7:30 - +0730 1942 F 16 +9 - +09 1945 S 12 +7:30 - +0730 1981 D 31 16u +8 - +08 +Z Asia/Srednekolymsk 10:14:52 - LMT 1924 May 2 +10 - +10 1930 Jun 21 +11 R +11/+12 1991 Mar 31 2s +10 R +10/+11 1992 Ja 19 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 2014 O 26 2s +11 - +11 +Z Asia/Taipei 8:6 - LMT 1896 +8 - CST 1937 O +9 - JST 1945 S 21 1 +8 f C%sT +Z Asia/Tashkent 4:37:11 - LMT 1924 May 2 +5 - +05 1930 Jun 21 +6 R +06/+07 1991 Mar 31 2 +5 R +05/+06 1992 +5 - +05 +Z Asia/Tbilisi 2:59:11 - LMT 1880 +2:59:11 - TBMT 1924 May 2 +3 - +03 1957 Mar +4 R +04/+05 1991 Mar 31 2s +3 R +03/+04 1992 +3 e +03/+04 1994 S lastSu +4 e +04/+05 1996 O lastSu +4 1 +05 1997 Mar lastSu +4 e +04/+05 2004 Jun 27 +3 R +03/+04 2005 Mar lastSu 2 +4 - +04 +Z Asia/Tehran 3:25:44 - LMT 1916 +3:25:44 - TMT 1935 Jun 13 +3:30 i +0330/+0430 1977 O 20 24 +4 i +04/+05 1979 +3:30 i +0330/+0430 +Z Asia/Thimphu 5:58:36 - LMT 1947 Au 15 +5:30 - +0530 1987 O +6 - +06 +Z Asia/Tokyo 9:18:59 - LMT 1887 D 31 15u +9 JP J%sT +Z Asia/Tomsk 5:39:51 - LMT 1919 D 22 +6 - +06 1930 Jun 21 +7 R +07/+08 1991 Mar 31 2s +6 R +06/+07 1992 Ja 19 2s +7 R +07/+08 2002 May 1 3 +6 R +06/+07 2011 Mar 27 2s +7 - +07 2014 O 26 2s +6 - +06 2016 May 29 2s +7 - +07 +Z Asia/Ulaanbaatar 7:7:32 - LMT 1905 Au +7 - +07 1978 +8 X +08/+09 +Z Asia/Urumqi 5:50:20 - LMT 1928 +6 - +06 +Z Asia/Ust-Nera 9:32:54 - LMT 1919 D 15 +8 - +08 1930 Jun 21 +9 R +09/+10 1981 Ap +11 R +11/+12 1991 Mar 31 2s +10 R +10/+11 1992 Ja 19 2s +11 R +11/+12 2011 Mar 27 2s +12 - +12 2011 S 13 0s +11 - +11 2014 O 26 2s +10 - +10 +Z Asia/Vladivostok 8:47:31 - LMT 1922 N 15 +9 - +09 1930 Jun 21 +10 R +10/+11 1991 Mar 31 2s +9 R +09/+10 1992 Ja 19 2s +10 R +10/+11 2011 Mar 27 2s +11 - +11 2014 O 26 2s +10 - +10 +Z Asia/Yakutsk 8:38:58 - LMT 1919 D 15 +8 - +08 1930 Jun 21 +9 R +09/+10 1991 Mar 31 2s +8 R +08/+09 1992 Ja 19 2s +9 R +09/+10 2011 Mar 27 2s +10 - +10 2014 O 26 2s +9 - +09 +Z Asia/Yangon 6:24:47 - LMT 1880 +6:24:47 - RMT 1920 +6:30 - +0630 1942 May +9 - +09 1945 May 3 +6:30 - +0630 +Z Asia/Yekaterinburg 4:2:33 - LMT 1916 Jul 3 +3:45:5 - PMT 1919 Jul 15 4 +4 - +04 1930 Jun 21 +5 R +05/+06 1991 Mar 31 2s +4 R +04/+05 1992 Ja 19 2s +5 R +05/+06 2011 Mar 27 2s +6 - +06 2014 O 26 2s +5 - +05 +Z Asia/Yerevan 2:58 - LMT 1924 May 2 +3 - +03 1957 Mar +4 R +04/+05 1991 Mar 31 2s +3 R +03/+04 1995 S 24 2s +4 - +04 1997 +4 R +04/+05 2011 +4 AM +04/+05 +Z Atlantic/Azores -1:42:40 - LMT 1884 +-1:54:32 - HMT 1912 Ja 1 2u +-2 p -02/-01 1942 Ap 25 22s +-2 p +00 1942 Au 15 22s +-2 p -02/-01 1943 Ap 17 22s +-2 p +00 1943 Au 28 22s +-2 p -02/-01 1944 Ap 22 22s +-2 p +00 1944 Au 26 22s +-2 p -02/-01 1945 Ap 21 22s +-2 p +00 1945 Au 25 22s +-2 p -02/-01 1966 Ap 3 2 +-1 p -01/+00 1983 S 25 1s +-1 W- -01/+00 1992 S 27 1s +0 E WE%sT 1993 Mar 28 1u +-1 E -01/+00 +Z Atlantic/Bermuda -4:19:18 - LMT 1890 +-4:19:18 Be BMT/BST 1930 Ja 1 2 +-4 Be A%sT 1974 Ap 28 2 +-4 C A%sT 1976 +-4 u A%sT +Z Atlantic/Canary -1:1:36 - LMT 1922 Mar +-1 - -01 1946 S 30 1 +0 - WET 1980 Ap 6 0s +0 1 WEST 1980 S 28 1u +0 E WE%sT +Z Atlantic/Cape_Verde -1:34:4 - LMT 1912 Ja 1 2u +-2 - -02 1942 S +-2 1 -01 1945 O 15 +-2 - -02 1975 N 25 2 +-1 - -01 +Z Atlantic/Faroe -0:27:4 - LMT 1908 Ja 11 +0 - WET 1981 +0 E WE%sT +Z Atlantic/Madeira -1:7:36 - LMT 1884 +-1:7:36 - FMT 1912 Ja 1 1u +-1 p -01/+00 1942 Ap 25 22s +-1 p +01 1942 Au 15 22s +-1 p -01/+00 1943 Ap 17 22s +-1 p +01 1943 Au 28 22s +-1 p -01/+00 1944 Ap 22 22s +-1 p +01 1944 Au 26 22s +-1 p -01/+00 1945 Ap 21 22s +-1 p +01 1945 Au 25 22s +-1 p -01/+00 1966 Ap 3 2 +0 p WE%sT 1983 S 25 1s +0 E WE%sT +Z Atlantic/South_Georgia -2:26:8 - LMT 1890 +-2 - -02 +Z Atlantic/Stanley -3:51:24 - LMT 1890 +-3:51:24 - SMT 1912 Mar 12 +-4 FK -04/-03 1983 May +-3 FK -03/-02 1985 S 15 +-4 FK -04/-03 2010 S 5 2 +-3 - -03 +Z Australia/Adelaide 9:14:20 - LMT 1895 F +9 - ACST 1899 May +9:30 AU AC%sT 1971 +9:30 AS AC%sT +Z Australia/Brisbane 10:12:8 - LMT 1895 +10 AU AE%sT 1971 +10 AQ AE%sT +Z Australia/Broken_Hill 9:25:48 - LMT 1895 F +10 - AEST 1896 Au 23 +9 - ACST 1899 May +9:30 AU AC%sT 1971 +9:30 AN AC%sT 2000 +9:30 AS AC%sT +Z Australia/Darwin 8:43:20 - LMT 1895 F +9 - ACST 1899 May +9:30 AU AC%sT +Z Australia/Eucla 8:35:28 - LMT 1895 D +8:45 AU +0845/+0945 1943 Jul +8:45 AW +0845/+0945 +Z Australia/Hobart 9:49:16 - LMT 1895 S +10 AT AE%sT 1919 O 24 +10 AU AE%sT 1967 +10 AT AE%sT +Z Australia/Lindeman 9:55:56 - LMT 1895 +10 AU AE%sT 1971 +10 AQ AE%sT 1992 Jul +10 Ho AE%sT +Z Australia/Lord_Howe 10:36:20 - LMT 1895 F +10 - AEST 1981 Mar +10:30 LH +1030/+1130 1985 Jul +10:30 LH +1030/+11 +Z Australia/Melbourne 9:39:52 - LMT 1895 F +10 AU AE%sT 1971 +10 AV AE%sT +Z Australia/Perth 7:43:24 - LMT 1895 D +8 AU AW%sT 1943 Jul +8 AW AW%sT +Z Australia/Sydney 10:4:52 - LMT 1895 F +10 AU AE%sT 1971 +10 AN AE%sT +Z CET 1 c CE%sT +Z CST6CDT -6 u C%sT +Z EET 2 E EE%sT +Z EST -5 - EST +Z EST5EDT -5 u E%sT Z Etc/GMT 0 - GMT -L Etc/GMT GMT -Z Etc/GMT-14 14 - +14 -Z Etc/GMT-13 13 - +13 -Z Etc/GMT-12 12 - +12 -Z Etc/GMT-11 11 - +11 -Z Etc/GMT-10 10 - +10 -Z Etc/GMT-9 9 - +09 -Z Etc/GMT-8 8 - +08 -Z Etc/GMT-7 7 - +07 -Z Etc/GMT-6 6 - +06 -Z Etc/GMT-5 5 - +05 -Z Etc/GMT-4 4 - +04 -Z Etc/GMT-3 3 - +03 -Z Etc/GMT-2 2 - +02 -Z Etc/GMT-1 1 - +01 Z Etc/GMT+1 -1 - -01 +Z Etc/GMT+10 -10 - -10 +Z Etc/GMT+11 -11 - -11 +Z Etc/GMT+12 -12 - -12 Z Etc/GMT+2 -2 - -02 Z Etc/GMT+3 -3 - -03 Z Etc/GMT+4 -4 - -04 @@ -4034,10 +3591,463 @@ Z Etc/GMT+6 -6 - -06 Z Etc/GMT+7 -7 - -07 Z Etc/GMT+8 -8 - -08 Z Etc/GMT+9 -9 - -09 -Z Etc/GMT+10 -10 - -10 -Z Etc/GMT+11 -11 - -11 -Z Etc/GMT+12 -12 - -12 +Z Etc/GMT-1 1 - +01 +Z Etc/GMT-10 10 - +10 +Z Etc/GMT-11 11 - +11 +Z Etc/GMT-12 12 - +12 +Z Etc/GMT-13 13 - +13 +Z Etc/GMT-14 14 - +14 +Z Etc/GMT-2 2 - +02 +Z Etc/GMT-3 3 - +03 +Z Etc/GMT-4 4 - +04 +Z Etc/GMT-5 5 - +05 +Z Etc/GMT-6 6 - +06 +Z Etc/GMT-7 7 - +07 +Z Etc/GMT-8 8 - +08 +Z Etc/GMT-9 9 - +09 +Z Etc/UTC 0 - UTC +Z Europe/Andorra 0:6:4 - LMT 1901 +0 - WET 1946 S 30 +1 - CET 1985 Mar 31 2 +1 E CE%sT +Z Europe/Astrakhan 3:12:12 - LMT 1924 May +3 - +03 1930 Jun 21 +4 R +04/+05 1989 Mar 26 2s +3 R +03/+04 1991 Mar 31 2s +4 - +04 1992 Mar 29 2s +3 R +03/+04 2011 Mar 27 2s +4 - +04 2014 O 26 2s +3 - +03 2016 Mar 27 2s +4 - +04 +Z Europe/Athens 1:34:52 - LMT 1895 S 14 +1:34:52 - AMT 1916 Jul 28 0:1 +2 g EE%sT 1941 Ap 30 +1 g CE%sT 1944 Ap 4 +2 g EE%sT 1981 +2 E EE%sT +Z Europe/Belgrade 1:22 - LMT 1884 +1 - CET 1941 Ap 18 23 +1 c CE%sT 1945 +1 - CET 1945 May 8 2s +1 1 CEST 1945 S 16 2s +1 - CET 1982 N 27 +1 E CE%sT +Z Europe/Berlin 0:53:28 - LMT 1893 Ap +1 c CE%sT 1945 May 24 2 +1 So CE%sT 1946 +1 DE CE%sT 1980 +1 E CE%sT +Z Europe/Brussels 0:17:30 - LMT 1880 +0:17:30 - BMT 1892 May 1 0:17:30 +0 - WET 1914 N 8 +1 - CET 1916 May +1 c CE%sT 1918 N 11 11u +0 b WE%sT 1940 May 20 2s +1 c CE%sT 1944 S 3 +1 b CE%sT 1977 +1 E CE%sT +Z Europe/Bucharest 1:44:24 - LMT 1891 O +1:44:24 - BMT 1931 Jul 24 +2 z EE%sT 1981 Mar 29 2s +2 c EE%sT 1991 +2 z EE%sT 1994 +2 e EE%sT 1997 +2 E EE%sT +Z Europe/Budapest 1:16:20 - LMT 1890 N +1 c CE%sT 1918 +1 h CE%sT 1941 Ap 7 23 +1 c CE%sT 1945 +1 h CE%sT 1984 +1 E CE%sT +Z Europe/Chisinau 1:55:20 - LMT 1880 +1:55 - CMT 1918 F 15 +1:44:24 - BMT 1931 Jul 24 +2 z EE%sT 1940 Au 15 +2 1 EEST 1941 Jul 17 +1 c CE%sT 1944 Au 24 +3 R MSK/MSD 1990 May 6 2 +2 R EE%sT 1992 +2 e EE%sT 1997 +2 MD EE%sT +Z Europe/Dublin -0:25:21 - LMT 1880 Au 2 +-0:25:21 - DMT 1916 May 21 2s +-0:25:21 1 IST 1916 O 1 2s +0 G %s 1921 D 6 +0 G GMT/IST 1940 F 25 2s +0 1 IST 1946 O 6 2s +0 - GMT 1947 Mar 16 2s +0 1 IST 1947 N 2 2s +0 - GMT 1948 Ap 18 2s +0 G GMT/IST 1968 O 27 +1 IE IST/GMT +Z Europe/Gibraltar -0:21:24 - LMT 1880 Au 2 +0 G %s 1957 Ap 14 2 +1 - CET 1982 +1 E CE%sT +Z Europe/Helsinki 1:39:49 - LMT 1878 May 31 +1:39:49 - HMT 1921 May +2 FI EE%sT 1983 +2 E EE%sT +Z Europe/Istanbul 1:55:52 - LMT 1880 +1:56:56 - IMT 1910 O +2 T EE%sT 1978 Jun 29 +3 T +03/+04 1984 N 1 2 +2 T EE%sT 2007 +2 E EE%sT 2011 Mar 27 1u +2 - EET 2011 Mar 28 1u +2 E EE%sT 2014 Mar 30 1u +2 - EET 2014 Mar 31 1u +2 E EE%sT 2015 O 25 1u +2 1 EEST 2015 N 8 1u +2 E EE%sT 2016 S 7 +3 - +03 +Z Europe/Kaliningrad 1:22 - LMT 1893 Ap +1 c CE%sT 1945 Ap 10 +2 O EE%sT 1946 Ap 7 +3 R MSK/MSD 1989 Mar 26 2s +2 R EE%sT 2011 Mar 27 2s +3 - +03 2014 O 26 2s +2 - EET +Z Europe/Kirov 3:18:48 - LMT 1919 Jul 1 0u +3 - +03 1930 Jun 21 +4 R +04/+05 1989 Mar 26 2s +3 R MSK/MSD 1991 Mar 31 2s +4 - +04 1992 Mar 29 2s +3 R MSK/MSD 2011 Mar 27 2s +4 - MSK 2014 O 26 2s +3 - MSK +Z Europe/Kyiv 2:2:4 - LMT 1880 +2:2:4 - KMT 1924 May 2 +2 - EET 1930 Jun 21 +3 - MSK 1941 S 20 +1 c CE%sT 1943 N 6 +3 R MSK/MSD 1990 Jul 1 2 +2 1 EEST 1991 S 29 3 +2 c EE%sT 1996 May 13 +2 E EE%sT +Z Europe/Lisbon -0:36:45 - LMT 1884 +-0:36:45 - LMT 1912 Ja 1 0u +0 p WE%sT 1966 Ap 3 2 +1 - CET 1976 S 26 1 +0 p WE%sT 1983 S 25 1s +0 W- WE%sT 1992 S 27 1s +1 E CE%sT 1996 Mar 31 1u +0 E WE%sT +Z Europe/London -0:1:15 - LMT 1847 D +0 G %s 1968 O 27 +1 - BST 1971 O 31 2u +0 G %s 1996 +0 E GMT/BST +Z Europe/Madrid -0:14:44 - LMT 1901 Ja 1 0u +0 s WE%sT 1940 Mar 16 23 +1 s CE%sT 1979 +1 E CE%sT +Z Europe/Malta 0:58:4 - LMT 1893 N 2 +1 I CE%sT 1973 Mar 31 +1 MT CE%sT 1981 +1 E CE%sT +Z Europe/Minsk 1:50:16 - LMT 1880 +1:50 - MMT 1924 May 2 +2 - EET 1930 Jun 21 +3 - MSK 1941 Jun 28 +1 c CE%sT 1944 Jul 3 +3 R MSK/MSD 1990 +3 - MSK 1991 Mar 31 2s +2 R EE%sT 2011 Mar 27 2s +3 - +03 +Z Europe/Moscow 2:30:17 - LMT 1880 +2:30:17 - MMT 1916 Jul 3 +2:31:19 R %s 1919 Jul 1 0u +3 R %s 1921 O +3 R MSK/MSD 1922 O +2 - EET 1930 Jun 21 +3 R MSK/MSD 1991 Mar 31 2s +2 R EE%sT 1992 Ja 19 2s +3 R MSK/MSD 2011 Mar 27 2s +4 - MSK 2014 O 26 2s +3 - MSK +Z Europe/Paris 0:9:21 - LMT 1891 Mar 16 +0:9:21 - PMT 1911 Mar 11 +0 F WE%sT 1940 Jun 14 23 +1 c CE%sT 1944 Au 25 +0 F WE%sT 1945 S 16 3 +1 F CE%sT 1977 +1 E CE%sT +Z Europe/Prague 0:57:44 - LMT 1850 +0:57:44 - PMT 1891 O +1 c CE%sT 1945 May 9 +1 CZ CE%sT 1946 D 1 3 +1 -1 GMT 1947 F 23 2 +1 CZ CE%sT 1979 +1 E CE%sT +Z Europe/Riga 1:36:34 - LMT 1880 +1:36:34 - RMT 1918 Ap 15 2 +1:36:34 1 LST 1918 S 16 3 +1:36:34 - RMT 1919 Ap 1 2 +1:36:34 1 LST 1919 May 22 3 +1:36:34 - RMT 1926 May 11 +2 - EET 1940 Au 5 +3 - MSK 1941 Jul +1 c CE%sT 1944 O 13 +3 R MSK/MSD 1989 Mar lastSu 2s +2 1 EEST 1989 S lastSu 2s +2 LV EE%sT 1997 Ja 21 +2 E EE%sT 2000 F 29 +2 - EET 2001 Ja 2 +2 E EE%sT +Z Europe/Rome 0:49:56 - LMT 1866 D 12 +0:49:56 - RMT 1893 O 31 23u +1 I CE%sT 1943 S 10 +1 c CE%sT 1944 Jun 4 +1 I CE%sT 1980 +1 E CE%sT +Z Europe/Samara 3:20:20 - LMT 1919 Jul 1 0u +3 - +03 1930 Jun 21 +4 - +04 1935 Ja 27 +4 R +04/+05 1989 Mar 26 2s +3 R +03/+04 1991 Mar 31 2s +2 R +02/+03 1991 S 29 2s +3 - +03 1991 O 20 3 +4 R +04/+05 2010 Mar 28 2s +3 R +03/+04 2011 Mar 27 2s +4 - +04 +Z Europe/Saratov 3:4:18 - LMT 1919 Jul 1 0u +3 - +03 1930 Jun 21 +4 R +04/+05 1988 Mar 27 2s +3 R +03/+04 1991 Mar 31 2s +4 - +04 1992 Mar 29 2s +3 R +03/+04 2011 Mar 27 2s +4 - +04 2014 O 26 2s +3 - +03 2016 D 4 2s +4 - +04 +Z Europe/Simferopol 2:16:24 - LMT 1880 +2:16 - SMT 1924 May 2 +2 - EET 1930 Jun 21 +3 - MSK 1941 N +1 c CE%sT 1944 Ap 13 +3 R MSK/MSD 1990 +3 - MSK 1990 Jul 1 2 +2 - EET 1992 Mar 20 +2 c EE%sT 1994 May +3 c MSK/MSD 1996 Mar 31 0s +3 1 MSD 1996 O 27 3s +3 - MSK 1997 Mar lastSu 1u +2 E EE%sT 2014 Mar 30 2 +4 - MSK 2014 O 26 2s +3 - MSK +Z Europe/Sofia 1:33:16 - LMT 1880 +1:56:56 - IMT 1894 N 30 +2 - EET 1942 N 2 3 +1 c CE%sT 1945 +1 - CET 1945 Ap 2 3 +2 - EET 1979 Mar 31 23 +2 BG EE%sT 1982 S 26 3 +2 c EE%sT 1991 +2 e EE%sT 1997 +2 E EE%sT +Z Europe/Tallinn 1:39 - LMT 1880 +1:39 - TMT 1918 F +1 c CE%sT 1919 Jul +1:39 - TMT 1921 May +2 - EET 1940 Au 6 +3 - MSK 1941 S 15 +1 c CE%sT 1944 S 22 +3 R MSK/MSD 1989 Mar 26 2s +2 1 EEST 1989 S 24 2s +2 c EE%sT 1998 S 22 +2 E EE%sT 1999 O 31 4 +2 - EET 2002 F 21 +2 E EE%sT +Z Europe/Tirane 1:19:20 - LMT 1914 +1 - CET 1940 Jun 16 +1 q CE%sT 1984 Jul +1 E CE%sT +Z Europe/Ulyanovsk 3:13:36 - LMT 1919 Jul 1 0u +3 - +03 1930 Jun 21 +4 R +04/+05 1989 Mar 26 2s +3 R +03/+04 1991 Mar 31 2s +2 R +02/+03 1992 Ja 19 2s +3 R +03/+04 2011 Mar 27 2s +4 - +04 2014 O 26 2s +3 - +03 2016 Mar 27 2s +4 - +04 +Z Europe/Vienna 1:5:21 - LMT 1893 Ap +1 c CE%sT 1920 +1 a CE%sT 1940 Ap 1 2s +1 c CE%sT 1945 Ap 2 2s +1 1 CEST 1945 Ap 12 2s +1 - CET 1946 +1 a CE%sT 1981 +1 E CE%sT +Z Europe/Vilnius 1:41:16 - LMT 1880 +1:24 - WMT 1917 +1:35:36 - KMT 1919 O 10 +1 - CET 1920 Jul 12 +2 - EET 1920 O 9 +1 - CET 1940 Au 3 +3 - MSK 1941 Jun 24 +1 c CE%sT 1944 Au +3 R MSK/MSD 1989 Mar 26 2s +2 R EE%sT 1991 S 29 2s +2 c EE%sT 1998 +2 - EET 1998 Mar 29 1u +1 E CE%sT 1999 O 31 1u +2 - EET 2003 +2 E EE%sT +Z Europe/Volgograd 2:57:40 - LMT 1920 Ja 3 +3 - +03 1930 Jun 21 +4 - +04 1961 N 11 +4 R +04/+05 1988 Mar 27 2s +3 R MSK/MSD 1991 Mar 31 2s +4 - +04 1992 Mar 29 2s +3 R MSK/MSD 2011 Mar 27 2s +4 - MSK 2014 O 26 2s +3 - MSK 2018 O 28 2s +4 - +04 2020 D 27 2s +3 - MSK +Z Europe/Warsaw 1:24 - LMT 1880 +1:24 - WMT 1915 Au 5 +1 c CE%sT 1918 S 16 3 +2 O EE%sT 1922 Jun +1 O CE%sT 1940 Jun 23 2 +1 c CE%sT 1944 O +1 O CE%sT 1977 +1 W- CE%sT 1988 +1 E CE%sT +Z Europe/Zurich 0:34:8 - LMT 1853 Jul 16 +0:29:46 - BMT 1894 Jun +1 CH CE%sT 1981 +1 E CE%sT Z Factory 0 - -00 +Z HST -10 - HST +Z Indian/Chagos 4:49:40 - LMT 1907 +5 - +05 1996 +6 - +06 +Z Indian/Maldives 4:54 - LMT 1880 +4:54 - MMT 1960 +5 - +05 +Z Indian/Mauritius 3:50 - LMT 1907 +4 MU +04/+05 +Z MET 1 c ME%sT +Z MST -7 - MST +Z MST7MDT -7 u M%sT +Z PST8PDT -8 u P%sT +Z Pacific/Apia 12:33:4 - LMT 1892 Jul 5 +-11:26:56 - LMT 1911 +-11:30 - -1130 1950 +-11 WS -11/-10 2011 D 29 24 +13 WS +13/+14 +Z Pacific/Auckland 11:39:4 - LMT 1868 N 2 +11:30 NZ NZ%sT 1946 +12 NZ NZ%sT +Z Pacific/Bougainville 10:22:16 - LMT 1880 +9:48:32 - PMMT 1895 +10 - +10 1942 Jul +9 - +09 1945 Au 21 +10 - +10 2014 D 28 2 +11 - +11 +Z Pacific/Chatham 12:13:48 - LMT 1868 N 2 +12:15 - +1215 1946 +12:45 k +1245/+1345 +Z Pacific/Easter -7:17:28 - LMT 1890 +-7:17:28 - EMT 1932 S +-7 x -07/-06 1982 Mar 14 3u +-6 x -06/-05 +Z Pacific/Efate 11:13:16 - LMT 1912 Ja 13 +11 VU +11/+12 +Z Pacific/Fakaofo -11:24:56 - LMT 1901 +-11 - -11 2011 D 30 +13 - +13 +Z Pacific/Fiji 11:55:44 - LMT 1915 O 26 +12 FJ +12/+13 +Z Pacific/Galapagos -5:58:24 - LMT 1931 +-5 - -05 1986 +-6 EC -06/-05 +Z Pacific/Gambier -8:59:48 - LMT 1912 O +-9 - -09 +Z Pacific/Guadalcanal 10:39:48 - LMT 1912 O +11 - +11 +Z Pacific/Guam -14:21 - LMT 1844 D 31 +9:39 - LMT 1901 +10 - GST 1941 D 10 +9 - +09 1944 Jul 31 +10 Gu G%sT 2000 D 23 +10 - ChST +Z Pacific/Honolulu -10:31:26 - LMT 1896 Ja 13 12 +-10:30 - HST 1933 Ap 30 2 +-10:30 1 HDT 1933 May 21 12 +-10:30 u H%sT 1947 Jun 8 2 +-10 - HST +Z Pacific/Kanton 0 - -00 1937 Au 31 +-12 - -12 1979 O +-11 - -11 1994 D 31 +13 - +13 +Z Pacific/Kiritimati -10:29:20 - LMT 1901 +-10:40 - -1040 1979 O +-10 - -10 1994 D 31 +14 - +14 +Z Pacific/Kosrae -13:8:4 - LMT 1844 D 31 +10:51:56 - LMT 1901 +11 - +11 1914 O +9 - +09 1919 F +11 - +11 1937 +10 - +10 1941 Ap +9 - +09 1945 Au +11 - +11 1969 O +12 - +12 1999 +11 - +11 +Z Pacific/Kwajalein 11:9:20 - LMT 1901 +11 - +11 1937 +10 - +10 1941 Ap +9 - +09 1944 F 6 +11 - +11 1969 O +-12 - -12 1993 Au 20 24 +12 - +12 +Z Pacific/Marquesas -9:18 - LMT 1912 O +-9:30 - -0930 +Z Pacific/Nauru 11:7:40 - LMT 1921 Ja 15 +11:30 - +1130 1942 Au 29 +9 - +09 1945 S 8 +11:30 - +1130 1979 F 10 2 +12 - +12 +Z Pacific/Niue -11:19:40 - LMT 1952 O 16 +-11:20 - -1120 1964 Jul +-11 - -11 +Z Pacific/Norfolk 11:11:52 - LMT 1901 +11:12 - +1112 1951 +11:30 - +1130 1974 O 27 2s +11:30 1 +1230 1975 Mar 2 2s +11:30 - +1130 2015 O 4 2s +11 - +11 2019 Jul +11 AN +11/+12 +Z Pacific/Noumea 11:5:48 - LMT 1912 Ja 13 +11 NC +11/+12 +Z Pacific/Pago_Pago 12:37:12 - LMT 1892 Jul 5 +-11:22:48 - LMT 1911 +-11 - SST +Z Pacific/Palau -15:2:4 - LMT 1844 D 31 +8:57:56 - LMT 1901 +9 - +09 +Z Pacific/Pitcairn -8:40:20 - LMT 1901 +-8:30 - -0830 1998 Ap 27 +-8 - -08 +Z Pacific/Port_Moresby 9:48:40 - LMT 1880 +9:48:32 - PMMT 1895 +10 - +10 +Z Pacific/Rarotonga 13:20:56 - LMT 1899 D 26 +-10:39:4 - LMT 1952 O 16 +-10:30 - -1030 1978 N 12 +-10 CK -10/-0930 +Z Pacific/Tahiti -9:58:16 - LMT 1912 O +-10 - -10 +Z Pacific/Tarawa 11:32:4 - LMT 1901 +12 - +12 +Z Pacific/Tongatapu 12:19:12 - LMT 1945 S 10 +12:20 - +1220 1961 +13 - +13 1999 +13 TO +13/+14 +Z WET 0 E WE%sT +L Etc/GMT GMT L Australia/Sydney Australia/ACT L Australia/Lord_Howe Australia/LHI L Australia/Sydney Australia/NSW @@ -4185,7 +4195,6 @@ L America/Puerto_Rico America/Tortola L Pacific/Port_Moresby Antarctica/DumontDUrville L Pacific/Auckland Antarctica/McMurdo L Asia/Riyadh Antarctica/Syowa -L Asia/Urumqi Antarctica/Vostok L Europe/Berlin Arctic/Longyearbyen L Asia/Riyadh Asia/Aden L Asia/Qatar Asia/Bahrain diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/zone.tab b/contrib/python/pytz/py3/pytz/zoneinfo/zone.tab index dbcb61793ee..3fa9306afba 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/zone.tab +++ b/contrib/python/pytz/py3/pytz/zoneinfo/zone.tab @@ -48,7 +48,7 @@ AR -3124-06411 America/Argentina/Cordoba Argentina (most areas: CB, CC, CN, ER, AR -2447-06525 America/Argentina/Salta Salta (SA, LP, NQ, RN) AR -2411-06518 America/Argentina/Jujuy Jujuy (JY) AR -2649-06513 America/Argentina/Tucuman Tucuman (TM) -AR -2828-06547 America/Argentina/Catamarca Catamarca (CT); Chubut (CH) +AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH) AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR) AR -3132-06831 America/Argentina/San_Juan San Juan (SJ) AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ) @@ -87,7 +87,7 @@ BN +0456+11455 Asia/Brunei BO -1630-06809 America/La_Paz BQ +120903-0681636 America/Kralendijk BR -0351-03225 America/Noronha Atlantic islands -BR -0127-04829 America/Belem Para (east); Amapa +BR -0127-04829 America/Belem Para (east), Amapa BR -0343-03830 America/Fortaleza Brazil (northeast: MA, PI, CE, RN, PB) BR -0803-03454 America/Recife Pernambuco BR -0712-04812 America/Araguaina Tocantins @@ -107,21 +107,21 @@ BT +2728+08939 Asia/Thimphu BW -2439+02555 Africa/Gaborone BY +5354+02734 Europe/Minsk BZ +1730-08812 America/Belize -CA +4734-05243 America/St_Johns Newfoundland; Labrador (southeast) -CA +4439-06336 America/Halifax Atlantic - NS (most areas); PE +CA +4734-05243 America/St_Johns Newfoundland, Labrador (SE) +CA +4439-06336 America/Halifax Atlantic - NS (most areas), PE CA +4612-05957 America/Glace_Bay Atlantic - NS (Cape Breton) CA +4606-06447 America/Moncton Atlantic - New Brunswick CA +5320-06025 America/Goose_Bay Atlantic - Labrador (most areas) CA +5125-05707 America/Blanc-Sablon AST - QC (Lower North Shore) -CA +4339-07923 America/Toronto Eastern - ON, QC (most areas) +CA +4339-07923 America/Toronto Eastern - ON & QC (most areas) CA +6344-06828 America/Iqaluit Eastern - NU (most areas) -CA +484531-0913718 America/Atikokan EST - ON (Atikokan); NU (Coral H) -CA +4953-09709 America/Winnipeg Central - ON (west); Manitoba +CA +484531-0913718 America/Atikokan EST - ON (Atikokan), NU (Coral H) +CA +4953-09709 America/Winnipeg Central - ON (west), Manitoba CA +744144-0944945 America/Resolute Central - NU (Resolute) CA +624900-0920459 America/Rankin_Inlet Central - NU (central) CA +5024-10439 America/Regina CST - SK (most areas) CA +5017-10750 America/Swift_Current CST - SK (midwest) -CA +5333-11328 America/Edmonton Mountain - AB; BC (E); NT (E); SK (W) +CA +5333-11328 America/Edmonton Mountain - AB, BC(E), NT(E), SK(W) CA +690650-1050310 America/Cambridge_Bay Mountain - NU (west) CA +682059-1334300 America/Inuvik Mountain - NT (west) CA +4906-11631 America/Creston MST - BC (Creston) @@ -207,8 +207,8 @@ HT +1832-07220 America/Port-au-Prince HU +4730+01905 Europe/Budapest ID -0610+10648 Asia/Jakarta Java, Sumatra ID -0002+10920 Asia/Pontianak Borneo (west, central) -ID -0507+11924 Asia/Makassar Borneo (east, south); Sulawesi/Celebes, Bali, Nusa Tengarra; Timor (west) -ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya); Malukus/Moluccas +ID -0507+11924 Asia/Makassar Borneo (east, south), Sulawesi/Celebes, Bali, Nusa Tengarra, Timor (west) +ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya), Malukus/Moluccas IE +5320-00615 Europe/Dublin IL +314650+0351326 Asia/Jerusalem IM +5409-00428 Europe/Isle_of_Man @@ -355,7 +355,7 @@ RU +4310+13156 Asia/Vladivostok MSK+07 - Amur River RU +643337+1431336 Asia/Ust-Nera MSK+07 - Oymyakonsky RU +5934+15048 Asia/Magadan MSK+08 - Magadan RU +4658+14242 Asia/Sakhalin MSK+08 - Sakhalin Island -RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E); N Kuril Is +RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E), N Kuril Is RU +5301+15839 Asia/Kamchatka MSK+09 - Kamchatka RU +6445+17729 Asia/Anadyr MSK+09 - Bering Sea RW -0157+03004 Africa/Kigali @@ -418,7 +418,7 @@ US +470659-1011757 America/North_Dakota/Center Central - ND (Oliver) US +465042-1012439 America/North_Dakota/New_Salem Central - ND (Morton rural) US +471551-1014640 America/North_Dakota/Beulah Central - ND (Mercer) US +394421-1045903 America/Denver Mountain (most areas) -US +433649-1161209 America/Boise Mountain - ID (south); OR (east) +US +433649-1161209 America/Boise Mountain - ID (south), OR (east) US +332654-1120424 America/Phoenix MST - AZ (except Navajo) US +340308-1181434 America/Los_Angeles Pacific US +611305-1495401 America/Anchorage Alaska (most areas) diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/zone1970.tab b/contrib/python/pytz/py3/pytz/zoneinfo/zone1970.tab index 1f1cecb8485..abd9489753f 100644 --- a/contrib/python/pytz/py3/pytz/zoneinfo/zone1970.tab +++ b/contrib/python/pytz/py3/pytz/zoneinfo/zone1970.tab @@ -37,7 +37,7 @@ #country- #codes coordinates TZ comments AD +4230+00131 Europe/Andorra -AE,OM,RE,SC,TF +2518+05518 Asia/Dubai Crozet, Scattered Is +AE,OM,RE,SC,TF +2518+05518 Asia/Dubai Crozet AF +3431+06912 Asia/Kabul AL +4120+01950 Europe/Tirane AM +4011+04430 Asia/Yerevan @@ -47,12 +47,13 @@ AQ -6736+06253 Antarctica/Mawson Mawson AQ -6448-06406 Antarctica/Palmer Palmer AQ -6734-06808 Antarctica/Rothera Rothera AQ -720041+0023206 Antarctica/Troll Troll +AQ -7824+10654 Antarctica/Vostok Vostok AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF) AR -3124-06411 America/Argentina/Cordoba most areas: CB, CC, CN, ER, FM, MN, SE, SF AR -2447-06525 America/Argentina/Salta Salta (SA, LP, NQ, RN) AR -2411-06518 America/Argentina/Jujuy Jujuy (JY) AR -2649-06513 America/Argentina/Tucuman Tucumán (TM) -AR -2828-06547 America/Argentina/Catamarca Catamarca (CT); Chubut (CH) +AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH) AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR) AR -3132-06831 America/Argentina/San_Juan San Juan (SJ) AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ) @@ -81,7 +82,7 @@ BG +4241+02319 Europe/Sofia BM +3217-06446 Atlantic/Bermuda BO -1630-06809 America/La_Paz BR -0351-03225 America/Noronha Atlantic islands -BR -0127-04829 America/Belem Pará (east); Amapá +BR -0127-04829 America/Belem Pará (east), Amapá BR -0343-03830 America/Fortaleza Brazil (northeast: MA, PI, CE, RN, PB) BR -0803-03454 America/Recife Pernambuco BR -0712-04812 America/Araguaina Tocantins @@ -99,19 +100,19 @@ BR -0958-06748 America/Rio_Branco Acre BT +2728+08939 Asia/Thimphu BY +5354+02734 Europe/Minsk BZ +1730-08812 America/Belize -CA +4734-05243 America/St_Johns Newfoundland; Labrador (southeast) -CA +4439-06336 America/Halifax Atlantic - NS (most areas); PE +CA +4734-05243 America/St_Johns Newfoundland, Labrador (SE) +CA +4439-06336 America/Halifax Atlantic - NS (most areas), PE CA +4612-05957 America/Glace_Bay Atlantic - NS (Cape Breton) CA +4606-06447 America/Moncton Atlantic - New Brunswick CA +5320-06025 America/Goose_Bay Atlantic - Labrador (most areas) -CA,BS +4339-07923 America/Toronto Eastern - ON, QC (most areas) +CA,BS +4339-07923 America/Toronto Eastern - ON & QC (most areas) CA +6344-06828 America/Iqaluit Eastern - NU (most areas) -CA +4953-09709 America/Winnipeg Central - ON (west); Manitoba +CA +4953-09709 America/Winnipeg Central - ON (west), Manitoba CA +744144-0944945 America/Resolute Central - NU (Resolute) CA +624900-0920459 America/Rankin_Inlet Central - NU (central) CA +5024-10439 America/Regina CST - SK (most areas) CA +5017-10750 America/Swift_Current CST - SK (midwest) -CA +5333-11328 America/Edmonton Mountain - AB; BC (E); NT (E); SK (W) +CA +5333-11328 America/Edmonton Mountain - AB, BC(E), NT(E), SK(W) CA +690650-1050310 America/Cambridge_Bay Mountain - NU (west) CA +682059-1334300 America/Inuvik Mountain - NT (west) CA +5546-12014 America/Dawson_Creek MST - BC (Dawson Cr, Ft St John) @@ -126,7 +127,7 @@ CL -3327-07040 America/Santiago most of Chile CL -5309-07055 America/Punta_Arenas Region of Magallanes CL -2709-10926 Pacific/Easter Easter Island CN +3114+12128 Asia/Shanghai Beijing Time -CN,AQ +4348+08735 Asia/Urumqi Xinjiang Time, Vostok +CN +4348+08735 Asia/Urumqi Xinjiang Time CO +0436-07405 America/Bogota CR +0956-08405 America/Costa_Rica CU +2308-08222 America/Havana @@ -171,8 +172,8 @@ HT +1832-07220 America/Port-au-Prince HU +4730+01905 Europe/Budapest ID -0610+10648 Asia/Jakarta Java, Sumatra ID -0002+10920 Asia/Pontianak Borneo (west, central) -ID -0507+11924 Asia/Makassar Borneo (east, south); Sulawesi/Celebes, Bali, Nusa Tengarra; Timor (west) -ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya); Malukus/Moluccas +ID -0507+11924 Asia/Makassar Borneo (east, south), Sulawesi/Celebes, Bali, Nusa Tengarra, Timor (west) +ID -0232+14042 Asia/Jayapura New Guinea (West Papua / Irian Jaya), Malukus/Moluccas IE +5320-00615 Europe/Dublin IL +314650+0351326 Asia/Jerusalem IN +2232+08822 Asia/Kolkata @@ -251,7 +252,7 @@ PK +2452+06703 Asia/Karachi PL +5215+02100 Europe/Warsaw PM +4703-05620 America/Miquelon PN -2504-13005 Pacific/Pitcairn -PR,AG,CA,AI,AW,BL,BQ,CW,DM,GD,GP,KN,LC,MF,MS,SX,TT,VC,VG,VI +182806-0660622 America/Puerto_Rico AST +PR,AG,CA,AI,AW,BL,BQ,CW,DM,GD,GP,KN,LC,MF,MS,SX,TT,VC,VG,VI +182806-0660622 America/Puerto_Rico AST - QC (Lower North Shore) PS +3130+03428 Asia/Gaza Gaza Strip PS +313200+0350542 Asia/Hebron West Bank PT +3843-00908 Europe/Lisbon Portugal (mainland) @@ -287,7 +288,7 @@ RU +4310+13156 Asia/Vladivostok MSK+07 - Amur River RU +643337+1431336 Asia/Ust-Nera MSK+07 - Oymyakonsky RU +5934+15048 Asia/Magadan MSK+08 - Magadan RU +4658+14242 Asia/Sakhalin MSK+08 - Sakhalin Island -RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E); N Kuril Is +RU +6728+15343 Asia/Srednekolymsk MSK+08 - Sakha (E), N Kuril Is RU +5301+15839 Asia/Kamchatka MSK+09 - Kamchatka RU +6445+17729 Asia/Anadyr MSK+09 - Bering Sea SA,AQ,KW,YE +2438+04643 Asia/Riyadh Syowa @@ -329,7 +330,7 @@ US +470659-1011757 America/North_Dakota/Center Central - ND (Oliver) US +465042-1012439 America/North_Dakota/New_Salem Central - ND (Morton rural) US +471551-1014640 America/North_Dakota/Beulah Central - ND (Mercer) US +394421-1045903 America/Denver Mountain (most areas) -US +433649-1161209 America/Boise Mountain - ID (south); OR (east) +US +433649-1161209 America/Boise Mountain - ID (south), OR (east) US,CA +332654-1120424 America/Phoenix MST - AZ (most areas), Creston BC US +340308-1181434 America/Los_Angeles Pacific US +611305-1495401 America/Anchorage Alaska (most areas) diff --git a/contrib/python/pytz/py3/pytz/zoneinfo/zonenow.tab b/contrib/python/pytz/py3/pytz/zoneinfo/zonenow.tab new file mode 100644 index 00000000000..b6f2910956f --- /dev/null +++ b/contrib/python/pytz/py3/pytz/zoneinfo/zonenow.tab @@ -0,0 +1,303 @@ +# tzdb timezone descriptions, for users who do not care about old timestamps +# +# This file is in the public domain. +# +# From Paul Eggert (2023-12-18): +# This file contains a table where each row stands for a timezone +# where civil timestamps are predicted to agree from now on. +# This file is like zone1970.tab (see zone1970.tab's coments), +# but with the following changes: +# +# 1. Each timezone corresponds to a set of clocks that are planned +# to agree from now on. This is a larger set of clocks than in +# zone1970.tab, where each timezone's clocks must agree from 1970 on. +# 2. The first column is irrelevant and ignored. +# 3. The table is sorted in a different way: +# first by standard time UTC offset; +# then, if DST is used, by daylight saving UTC offset; +# then by time zone abbreviation. +# 4. Every timezone has a nonempty comments column, with wording +# distinguishing the timezone only from other timezones with the +# same UTC offset at some point during the year. +# +# The format of this table is experimental, and may change in future versions. +# +# This table is intended as an aid for users, to help them select timezones +# appropriate for their practical needs. It is not intended to take or +# endorse any position on legal or territorial claims. +# +#XX coordinates TZ comments +# +# -11 - SST +XX -1416-17042 Pacific/Pago_Pago Midway; Samoa ("SST") +# +# -11 +XX -1901-16955 Pacific/Niue Niue +# +# -10 - HST +XX +211825-1575130 Pacific/Honolulu Hawaii ("HST") +# +# -10 +XX -1732-14934 Pacific/Tahiti Tahiti; Cook Islands +# +# -10/-09 - HST / HDT (North America DST) +XX +515248-1763929 America/Adak western Aleutians in Alaska ("HST/HDT") +# +# -09:30 +XX -0900-13930 Pacific/Marquesas Marquesas +# +# -09 +XX -2308-13457 Pacific/Gambier Gambier +# +# -09/-08 - AKST/AKDT (North America DST) +XX +611305-1495401 America/Anchorage most of Alaska ("AKST/AKDT") +# +# -08 +XX -2504-13005 Pacific/Pitcairn Pitcairn +# +# -08/-07 - PST/PDT (North America DST) +XX +340308-1181434 America/Los_Angeles Pacific ("PST/PDT") - US & Canada; Mexico near US border +# +# -07 - MST +XX +332654-1120424 America/Phoenix Mountain Standard ("MST") - Arizona; western Mexico; Yukon +# +# -07/-06 - MST/MDT (North America DST) +XX +394421-1045903 America/Denver Mountain ("MST/MDT") - US & Canada; Mexico near US border +# +# -06 +XX -0054-08936 Pacific/Galapagos Galápagos +# +# -06 - CST +XX +1924-09909 America/Mexico_City Central Standard ("CST") - Saskatchewan; central Mexico; Central America +# +# -06/-05 (Chile DST) +XX -2709-10926 Pacific/Easter Easter Island +# +# -06/-05 - CST/CDT (North America DST) +XX +415100-0873900 America/Chicago Central ("CST/CDT") - US & Canada; Mexico near US border +# +# -05 +XX -1203-07703 America/Lima eastern South America +# +# -05 - EST +XX +175805-0764736 America/Jamaica Eastern Standard ("EST") - Caymans; Jamaica; eastern Mexico; Panama +# +# -05/-04 - CST/CDT (Cuba DST) +XX +2308-08222 America/Havana Cuba +# +# -05/-04 - EST/EDT (North America DST) +XX +404251-0740023 America/New_York Eastern ("EST/EDT") - US & Canada +# +# -04 +XX +1030-06656 America/Caracas western South America +# +# -04 - AST +XX +1828-06954 America/Santo_Domingo Atlantic Standard ("AST") - eastern Caribbean +# +# -04/-03 (Chile DST) +XX -3327-07040 America/Santiago most of Chile +# +# -04/-03 (Paraguay DST) +XX -2516-05740 America/Asuncion Paraguay +# +# -04/-03 - AST/ADT (North America DST) +XX +4439-06336 America/Halifax Atlantic ("AST/ADT") - Canada; Bermuda +# +# -03:30/-02:30 - NST/NDT (North America DST) +XX +4734-05243 America/St_Johns Newfoundland ("NST/NDT") +# +# -03 +XX -2332-04637 America/Sao_Paulo eastern South America +# +# -03/-02 (North America DST) +XX +4703-05620 America/Miquelon St Pierre & Miquelon +# +# -02 +XX -0351-03225 America/Noronha Fernando de Noronha; South Georgia +# +# -02/-01 (EU DST) +XX +6411-05144 America/Nuuk most of Greenland +# +# -01 +XX +1455-02331 Atlantic/Cape_Verde Cape Verde +# +# -01/+00 (EU DST) +XX +3744-02540 Atlantic/Azores Azores +# -01/+00 (EU DST) until 2024-03-31; then -02/-01 (EU DST) +XX +7029-02158 America/Scoresbysund Ittoqqortoormiit +# +# +00 - GMT +XX +0519-00402 Africa/Abidjan far western Africa; Iceland ("GMT") +# +# +00/+01 - GMT/BST (EU DST) +XX +513030-0000731 Europe/London United Kingdom ("GMT/BST") +# +# +00/+01 - WET/WEST (EU DST) +XX +3843-00908 Europe/Lisbon western Europe ("WET/WEST") +# +# +00/+02 - Troll DST +XX -720041+0023206 Antarctica/Troll Troll Station in Antarctica +# +# +01 - CET +XX +3647+00303 Africa/Algiers Algeria, Tunisia ("CET") +# +# +01 - WAT +XX +0627+00324 Africa/Lagos western Africa ("WAT") +# +# +01/+00 - IST/GMT (EU DST in reverse) +XX +5320-00615 Europe/Dublin Ireland ("IST/GMT") +# +# +01/+00 - (Morocco DST) +XX +3339-00735 Africa/Casablanca Morocco +# +# +01/+02 - CET/CEST (EU DST) +XX +4852+00220 Europe/Paris central Europe ("CET/CEST") +# +# +02 - CAT +XX -2558+03235 Africa/Maputo central Africa ("CAT") +# +# +02 - EET +XX +3254+01311 Africa/Tripoli Libya; Kaliningrad ("EET") +# +# +02 - SAST +XX -2615+02800 Africa/Johannesburg southern Africa ("SAST") +# +# +02/+03 - EET/EEST (EU DST) +XX +3758+02343 Europe/Athens eastern Europe ("EET/EEST") +# +# +02/+03 - EET/EEST (Egypt DST) +XX +3003+03115 Africa/Cairo Egypt +# +# +02/+03 - EET/EEST (Lebanon DST) +XX +3353+03530 Asia/Beirut Lebanon +# +# +02/+03 - EET/EEST (Moldova DST) +XX +4700+02850 Europe/Chisinau Moldova +# +# +02/+03 - EET/EEST (Palestine DST) +XX +3130+03428 Asia/Gaza Palestine +# +# +02/+03 - IST/IDT (Israel DST) +XX +314650+0351326 Asia/Jerusalem Israel +# +# +03 +XX +4101+02858 Europe/Istanbul Near East; Belarus +# +# +03 - EAT +XX -0117+03649 Africa/Nairobi eastern Africa ("EAT") +# +# +03 - MSK +XX +554521+0373704 Europe/Moscow Moscow ("MSK") +# +# +03:30 +XX +3540+05126 Asia/Tehran Iran +# +# +04 +XX +2518+05518 Asia/Dubai Russia; Caucasus; Persian Gulf; Seychelles; Réunion +# +# +04:30 +XX +3431+06912 Asia/Kabul Afghanistan +# +# +05 +XX +4120+06918 Asia/Tashkent Russia; west Kazakhstan; Tajikistan; Turkmenistan; Uzbekistan; Maldives +# +# +05 - PKT +XX +2452+06703 Asia/Karachi Pakistan ("PKT") +# +# +05:30 +XX +0656+07951 Asia/Colombo Sri Lanka +# +# +05:30 - IST +XX +2232+08822 Asia/Kolkata India ("IST") +# +# +05:45 +XX +2743+08519 Asia/Kathmandu Nepal +# +# +06 +XX +2343+09025 Asia/Dhaka Russia; Kyrgyzstan; Bhutan; Bangladesh; Chagos +# +06 until 2024-03-01; then +05 +XX +4315+07657 Asia/Almaty Kazakhstan (except western areas) +# +# +06:30 +XX +1647+09610 Asia/Yangon Myanmar; Cocos +# +# +07 +XX +1345+10031 Asia/Bangkok Russia; Indochina; Christmas Island +# +# +07 - WIB +XX -0610+10648 Asia/Jakarta Indonesia ("WIB") +# +# +08 +XX +0117+10351 Asia/Singapore Russia; Brunei; Malaysia; Singapore +# +# +08 - AWST +XX -3157+11551 Australia/Perth Western Australia ("AWST") +# +# +08 - CST +XX +3114+12128 Asia/Shanghai China ("CST") +# +# +08 - HKT +XX +2217+11409 Asia/Hong_Kong Hong Kong ("HKT") +# +# +08 - PHT +XX +1435+12100 Asia/Manila Philippines ("PHT") +# +# +08 - WITA +XX -0507+11924 Asia/Makassar Indonesia ("WITA") +# +# +08:45 +XX -3143+12852 Australia/Eucla Eucla +# +# +09 +XX +5203+11328 Asia/Chita Russia; Palau; East Timor +# +# +09 - JST +XX +353916+1394441 Asia/Tokyo Japan ("JST") +# +# +09 - KST +XX +3733+12658 Asia/Seoul Korea ("KST") +# +# +09 - WIT +XX -0232+14042 Asia/Jayapura Indonesia ("WIT") +# +# +09:30 - ACST +XX -1228+13050 Australia/Darwin Northern Territory ("ACST") +# +# +09:30/+10:30 - ACST/ACDT (Australia DST) +XX -3455+13835 Australia/Adelaide South Australia ("ACST/ACDT") +# +# +10 +XX +4310+13156 Asia/Vladivostok Russia; Yap; Chuuk; Papua New Guinea; Dumont d'Urville +# +# +10 - AEST +XX -2728+15302 Australia/Brisbane Queensland ("AEST") +# +# +10 - ChST +XX +1328+14445 Pacific/Guam Mariana Islands ("ChST") +# +# +10/+11 - AEST/AEDT (Australia DST) +XX -3352+15113 Australia/Sydney southeast Australia ("AEST/AEDT") +# +# +10:30/+11 +XX -3133+15905 Australia/Lord_Howe Lord Howe Island +# +# +11 +XX -0613+15534 Pacific/Bougainville Russia; Kosrae; Bougainville; Solomons +# +# +11/+12 (Australia DST) +XX -2903+16758 Pacific/Norfolk Norfolk Island +# +# +12 +XX +5301+15839 Asia/Kamchatka Russia; Tuvalu; Fiji; etc. +# +# +12/+13 (New Zealand DST) +XX -3652+17446 Pacific/Auckland New Zealand ("NZST/NZDT") +# +# +12:45/+13:45 (Chatham DST) +XX -4357-17633 Pacific/Chatham Chatham Islands +# +# +13 +XX -210800-1751200 Pacific/Tongatapu Kanton; Tokelau; Samoa (western); Tonga +# +# +14 +XX +0152-15720 Pacific/Kiritimati Kiritimati diff --git a/contrib/python/pytz/py3/ya.make b/contrib/python/pytz/py3/ya.make index d4ef56461fe..1a4c76191e4 100644 --- a/contrib/python/pytz/py3/ya.make +++ b/contrib/python/pytz/py3/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(2023.3.post1) +VERSION(2024.1) LICENSE(MIT) @@ -628,6 +628,7 @@ RESOURCE_FILES( pytz/zoneinfo/tzdata.zi pytz/zoneinfo/zone.tab pytz/zoneinfo/zone1970.tab + pytz/zoneinfo/zonenow.tab ) END() diff --git a/contrib/python/types-protobuf/.dist-info/METADATA b/contrib/python/types-protobuf/.dist-info/METADATA index 69b10b8c2ad..da16877bae9 100644 --- a/contrib/python/types-protobuf/.dist-info/METADATA +++ b/contrib/python/types-protobuf/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: types-protobuf -Version: 4.24.0.20240106 +Version: 4.24.0.20240129 Summary: Typing stubs for protobuf Home-page: https://github.com/python/typeshed License: Apache-2.0 license @@ -38,6 +38,6 @@ If you find that annotations are missing, feel free to contribute and help compl See https://github.com/python/typeshed/blob/main/README.md for more details. -This package was generated from typeshed commit `1de5830a2703936a96a126248227d5c7db883674` and was tested +This package was generated from typeshed commit `3dbb2573e68a288ac5ad1b4967a9c5ab994b81be` and was tested with mypy 1.8.0, pyright 1.1.342, and pytype 2023.12.18. diff --git a/contrib/python/types-protobuf/google-stubs/py.typed b/contrib/python/types-protobuf/google-stubs/py.typed deleted file mode 100644 index b648ac92333..00000000000 --- a/contrib/python/types-protobuf/google-stubs/py.typed +++ /dev/null @@ -1 +0,0 @@ -partial diff --git a/contrib/python/types-protobuf/ya.make b/contrib/python/types-protobuf/ya.make index 3d6029caa56..6632bf34262 100644 --- a/contrib/python/types-protobuf/ya.make +++ b/contrib/python/types-protobuf/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(4.24.0.20240106) +VERSION(4.24.0.20240129) LICENSE(Apache-2.0) @@ -54,7 +54,6 @@ RESOURCE_FILES( .dist-info/METADATA .dist-info/top_level.txt google-stubs/METADATA.toml - google-stubs/py.typed ) END() diff --git a/contrib/python/wcwidth/py2/.dist-info/METADATA b/contrib/python/wcwidth/py2/.dist-info/METADATA index 2539b52f735..f7f7fcdcc85 100644 --- a/contrib/python/wcwidth/py2/.dist-info/METADATA +++ b/contrib/python/wcwidth/py2/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: wcwidth -Version: 0.2.12 +Version: 0.2.13 Summary: Measures the displayed width of unicode strings in a terminal Home-page: https://github.com/jquast/wcwidth Author: Jeff Quast @@ -63,7 +63,7 @@ Example >>> text = u'コンニチハ' Python **incorrectly** uses the *string length* of 5 codepoints rather than the -*printible length* of 10 cells, so that when using the `rjust` function, the +*printable length* of 10 cells, so that when using the `rjust` function, the output length is wrong:: >>> print(len('コンニチハ')) @@ -247,8 +247,12 @@ Other Languages ======= History ======= + +0.2.13 *2024-01-06* + * **Bugfix** zero-width support for Hangul Jamo (Korean) + 0.2.12 *2023-11-21* - * re-release to remove .pyi file misplaced in wheel files `Issue #101`. + * re-release to remove .pyi file misplaced in wheel files `Issue #101`_. 0.2.11 *2023-11-20* * Include tests files in the source distribution (`PR #98`_, `PR #100`_). diff --git a/contrib/python/wcwidth/py2/README.rst b/contrib/python/wcwidth/py2/README.rst index a0dd44cb83b..65df2081b8d 100644 --- a/contrib/python/wcwidth/py2/README.rst +++ b/contrib/python/wcwidth/py2/README.rst @@ -32,7 +32,7 @@ Example >>> text = u'コンニチハ' Python **incorrectly** uses the *string length* of 5 codepoints rather than the -*printible length* of 10 cells, so that when using the `rjust` function, the +*printable length* of 10 cells, so that when using the `rjust` function, the output length is wrong:: >>> print(len('コンニチハ')) @@ -216,8 +216,12 @@ Other Languages ======= History ======= + +0.2.13 *2024-01-06* + * **Bugfix** zero-width support for Hangul Jamo (Korean) + 0.2.12 *2023-11-21* - * re-release to remove .pyi file misplaced in wheel files `Issue #101`. + * re-release to remove .pyi file misplaced in wheel files `Issue #101`_. 0.2.11 *2023-11-20* * Include tests files in the source distribution (`PR #98`_, `PR #100`_). diff --git a/contrib/python/wcwidth/py2/tests/test_core.py b/contrib/python/wcwidth/py2/tests/test_core.py index d2776cd992b..60ed6b1cde7 100644 --- a/contrib/python/wcwidth/py2/tests/test_core.py +++ b/contrib/python/wcwidth/py2/tests/test_core.py @@ -222,17 +222,48 @@ def test_balinese_script(): assert length_phrase == expect_length_phrase +def test_kr_jamo(): + """ + Test basic combining of HANGUL CHOSEONG and JUNGSEONG + + Example and from Raymond Chen's blog post, + https://devblogs.microsoft.com/oldnewthing/20201009-00/?p=104351 + """ + # This is an example where both characters are "wide" when displayed alone. + # + # But JUNGSEONG (vowel) is designed for combination with a CHOSEONG (consonant). + # + # This wcwidth library understands their width only when combination, + # and not by independent display, like other zero-width characters that may + # only combine with an appropriate preceding character. + phrase = ( + u"\u1100" # ᄀ HANGUL CHOSEONG KIYEOK (consonant) + u"\u1161" # ᅡ HANGUL JUNGSEONG A (vowel) + ) + expect_length_each = (2, 0) + expect_length_phrase = 2 + + # exercise, + length_each = tuple(map(wcwidth.wcwidth, phrase)) + length_phrase = wcwidth.wcswidth(phrase) + + # verify. + assert length_each == expect_length_each + assert length_phrase == expect_length_phrase + + def test_kr_jamo_filler(): u""" Jamo filler is 0 width. - According to https://www.unicode.org/L2/L2006/06310-hangul-decompose9.pdf this character and others - like it, ``\uffa0``, ``\u1160``, ``\u115f``, ``\u1160``, are not commonly viewed with a terminal, - seems it doesn't matter whether it is implemented or not, they are not typically used ! + Example from https://www.unicode.org/L2/L2006/06310-hangul-decompose9.pdf """ - phrase = u"\u1100\u1160" - expect_length_each = (2, 1) - expect_length_phrase = 3 + phrase = ( + u"\u1100" # HANGUL CHOSEONG KIYEOK (consonant) + u"\u1160" # HANGUL JUNGSEONG FILLER (vowel) + ) + expect_length_each = (2, 0) + expect_length_phrase = 2 # exercise, length_each = tuple(map(wcwidth.wcwidth, phrase)) @@ -355,3 +386,17 @@ def test_kannada_script_2(): # verify. assert length_each == expect_length_each assert length_phrase == expect_length_phrase + + +def test_zero_wide_conflict(): + # Test characters considered both "wide" and "zero" width + # - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + # + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + assert wcwidth.wcwidth(unichr(0x03029), unicode_version='4.1.0') == 2 + assert wcwidth.wcwidth(unichr(0x0302a), unicode_version='4.1.0') == 0 + + # - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + # + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto + assert wcwidth.wcwidth(unichr(0x03099), unicode_version='4.1.0') == 0 + assert wcwidth.wcwidth(unichr(0x0309a), unicode_version='4.1.0') == 0 + assert wcwidth.wcwidth(unichr(0x0309b), unicode_version='4.1.0') == 2 diff --git a/contrib/python/wcwidth/py2/tests/test_table_integrity.py b/contrib/python/wcwidth/py2/tests/test_table_integrity.py new file mode 100644 index 00000000000..66e63ddbe3f --- /dev/null +++ b/contrib/python/wcwidth/py2/tests/test_table_integrity.py @@ -0,0 +1,15 @@ +""" +Executes verify-table-integrity.py as a unit test. +""" +import os +import sys +import subprocess + +import pytest + [email protected](sys.version_info[:2] != (3, 12), reason='Test only with a single version of python') +def test_verify_table_integrity(): + subprocess.check_output([sys.executable, os.path.join(os.path.dirname(__file__), + os.path.pardir, + 'bin', + 'verify-table-integrity.py')])
\ No newline at end of file diff --git a/contrib/python/wcwidth/py2/wcwidth/__init__.py b/contrib/python/wcwidth/py2/wcwidth/__init__.py index 40eedb6d22a..d686b30e1b6 100644 --- a/contrib/python/wcwidth/py2/wcwidth/__init__.py +++ b/contrib/python/wcwidth/py2/wcwidth/__init__.py @@ -26,4 +26,4 @@ __all__ = ('wcwidth', 'wcswidth', 'list_versions') # We also used pkg_resources to load unicode version tables from version.json, # generated by bin/update-tables.py, but some environments are unable to # import pkg_resources for one reason or another, yikes! -__version__ = '0.2.12' +__version__ = '0.2.13' diff --git a/contrib/python/wcwidth/py2/wcwidth/table_wide.py b/contrib/python/wcwidth/py2/wcwidth/table_wide.py index 02afd5c2b7c..bd6dfdd82a0 100644 --- a/contrib/python/wcwidth/py2/wcwidth/table_wide.py +++ b/contrib/python/wcwidth/py2/wcwidth/table_wide.py @@ -1,7 +1,7 @@ """ Exports WIDE_EASTASIAN table keyed by supporting unicode version level. -This code generated by wcwidth/bin/update-tables.py on 2023-09-14 15:45:33 UTC. +This code generated by wcwidth/bin/update-tables.py on 2024-01-06 01:39:49 UTC. """ WIDE_EASTASIAN = { '4.1.0': ( @@ -15,9 +15,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312c,), # Bopomofo Letter B ..Bopomofo Letter Gn (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031b7,), # Ideographic Annotation L..Bopomofo Final Letter H @@ -53,9 +54,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312c,), # Bopomofo Letter B ..Bopomofo Letter Gn (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031b7,), # Ideographic Annotation L..Bopomofo Final Letter H @@ -91,9 +93,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031b7,), # Ideographic Annotation L..Bopomofo Final Letter H @@ -123,16 +126,15 @@ WIDE_EASTASIAN = { # Date: 2009-06-09, 17:47:00 PDT [KW] # (0x01100, 0x0115f,), # Hangul Choseong Kiyeok ..Hangul Choseong Filler - (0x011a3, 0x011a7,), # Hangul Jungseong A-eu ..Hangul Jungseong O-yae - (0x011fa, 0x011ff,), # Hangul Jongseong Kiyeok-..Hangul Jongseong Ssangni (0x02329, 0x0232a,), # Left-pointing Angle Brac..Right-pointing Angle Bra (0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031b7,), # Ideographic Annotation L..Bopomofo Final Letter H @@ -145,8 +147,6 @@ WIDE_EASTASIAN = { (0x0a490, 0x0a4c6,), # Yi Radical Qot ..Yi Radical Ke (0x0a960, 0x0a97c,), # Hangul Choseong Tikeut-m..Hangul Choseong Ssangyeo (0x0ac00, 0x0d7a3,), # Hangul Syllable Ga ..Hangul Syllable Hih - (0x0d7b0, 0x0d7c6,), # Hangul Jungseong O-yeo ..Hangul Jungseong Araea-e - (0x0d7cb, 0x0d7fb,), # Hangul Jongseong Nieun-r..Hangul Jongseong Phieuph (0x0f900, 0x0faff,), # Cjk Compatibility Ideogr..(nil) (0x0fe10, 0x0fe19,), # Presentation Form For Ve..Presentation Form For Ve (0x0fe30, 0x0fe52,), # Presentation Form For Ve..Small Full Stop @@ -165,16 +165,15 @@ WIDE_EASTASIAN = { # Date: 2010-08-17, 12:17:00 PDT [KW] # (0x01100, 0x0115f,), # Hangul Choseong Kiyeok ..Hangul Choseong Filler - (0x011a3, 0x011a7,), # Hangul Jungseong A-eu ..Hangul Jungseong O-yae - (0x011fa, 0x011ff,), # Hangul Jongseong Kiyeok-..Hangul Jongseong Ssangni (0x02329, 0x0232a,), # Left-pointing Angle Brac..Right-pointing Angle Bra (0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy @@ -187,8 +186,6 @@ WIDE_EASTASIAN = { (0x0a490, 0x0a4c6,), # Yi Radical Qot ..Yi Radical Ke (0x0a960, 0x0a97c,), # Hangul Choseong Tikeut-m..Hangul Choseong Ssangyeo (0x0ac00, 0x0d7a3,), # Hangul Syllable Ga ..Hangul Syllable Hih - (0x0d7b0, 0x0d7c6,), # Hangul Jungseong O-yeo ..Hangul Jungseong Araea-e - (0x0d7cb, 0x0d7fb,), # Hangul Jongseong Nieun-r..Hangul Jongseong Phieuph (0x0f900, 0x0faff,), # Cjk Compatibility Ideogr..(nil) (0x0fe10, 0x0fe19,), # Presentation Form For Ve..Presentation Form For Ve (0x0fe30, 0x0fe52,), # Presentation Form For Ve..Small Full Stop @@ -209,16 +206,15 @@ WIDE_EASTASIAN = { # Date: 2011-09-19, 18:46:00 GMT [KW] # (0x01100, 0x0115f,), # Hangul Choseong Kiyeok ..Hangul Choseong Filler - (0x011a3, 0x011a7,), # Hangul Jungseong A-eu ..Hangul Jungseong O-yae - (0x011fa, 0x011ff,), # Hangul Jongseong Kiyeok-..Hangul Jongseong Ssangni (0x02329, 0x0232a,), # Left-pointing Angle Brac..Right-pointing Angle Bra (0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy @@ -231,8 +227,6 @@ WIDE_EASTASIAN = { (0x0a490, 0x0a4c6,), # Yi Radical Qot ..Yi Radical Ke (0x0a960, 0x0a97c,), # Hangul Choseong Tikeut-m..Hangul Choseong Ssangyeo (0x0ac00, 0x0d7a3,), # Hangul Syllable Ga ..Hangul Syllable Hih - (0x0d7b0, 0x0d7c6,), # Hangul Jungseong O-yeo ..Hangul Jungseong Araea-e - (0x0d7cb, 0x0d7fb,), # Hangul Jongseong Nieun-r..Hangul Jongseong Phieuph (0x0f900, 0x0faff,), # Cjk Compatibility Ideogr..(nil) (0x0fe10, 0x0fe19,), # Presentation Form For Ve..Presentation Form For Ve (0x0fe30, 0x0fe52,), # Presentation Form For Ve..Small Full Stop @@ -258,9 +252,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy @@ -298,9 +293,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy @@ -338,9 +334,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy @@ -378,9 +375,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy @@ -451,9 +449,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312d,), # Bopomofo Letter B ..Bopomofo Letter Ih (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy @@ -493,7 +492,8 @@ WIDE_EASTASIAN = { (0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And (0x1f3e0, 0x1f3f0,), # House Building ..European Castle (0x1f3f4, 0x1f3f4,), # Waving Black Flag - (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints + (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora + (0x1f400, 0x1f43e,), # Rat ..Paw Prints (0x1f440, 0x1f440,), # Eyes (0x1f442, 0x1f4fc,), # Ear ..Videocassette (0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red @@ -562,9 +562,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312e,), # Bopomofo Letter B ..Bopomofo Letter O With D (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy @@ -606,7 +607,8 @@ WIDE_EASTASIAN = { (0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And (0x1f3e0, 0x1f3f0,), # House Building ..European Castle (0x1f3f4, 0x1f3f4,), # Waving Black Flag - (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints + (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora + (0x1f400, 0x1f43e,), # Rat ..Paw Prints (0x1f440, 0x1f440,), # Eyes (0x1f442, 0x1f4fc,), # Ear ..Videocassette (0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red @@ -673,9 +675,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy @@ -717,7 +720,8 @@ WIDE_EASTASIAN = { (0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And (0x1f3e0, 0x1f3f0,), # House Building ..European Castle (0x1f3f4, 0x1f3f4,), # Waving Black Flag - (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints + (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora + (0x1f400, 0x1f43e,), # Rat ..Paw Prints (0x1f440, 0x1f440,), # Eyes (0x1f442, 0x1f4fc,), # Ear ..Videocassette (0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red @@ -786,9 +790,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy @@ -832,7 +837,8 @@ WIDE_EASTASIAN = { (0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And (0x1f3e0, 0x1f3f0,), # House Building ..European Castle (0x1f3f4, 0x1f3f4,), # Waving Black Flag - (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints + (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora + (0x1f400, 0x1f43e,), # Rat ..Paw Prints (0x1f440, 0x1f440,), # Eyes (0x1f442, 0x1f4fc,), # Ear ..Videocassette (0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red @@ -905,9 +911,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031ba,), # Ideographic Annotation L..Bopomofo Letter Zy @@ -950,7 +957,8 @@ WIDE_EASTASIAN = { (0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And (0x1f3e0, 0x1f3f0,), # House Building ..European Castle (0x1f3f4, 0x1f3f4,), # Waving Black Flag - (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints + (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora + (0x1f400, 0x1f43e,), # Rat ..Paw Prints (0x1f440, 0x1f440,), # Eyes (0x1f442, 0x1f4fc,), # Ear ..Videocassette (0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red @@ -1023,9 +1031,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031e3,), # Ideographic Annotation L..Cjk Stroke Q @@ -1043,8 +1052,7 @@ WIDE_EASTASIAN = { (0x0fe68, 0x0fe6b,), # Small Reverse Solidus ..Small Commercial At (0x0ff01, 0x0ff60,), # Fullwidth Exclamation Ma..Fullwidth Right White Pa (0x0ffe0, 0x0ffe6,), # Fullwidth Cent Sign ..Fullwidth Won Sign - (0x16fe0, 0x16fe4,), # Tangut Iteration Mark ..Khitan Small Script Fill - (0x16ff0, 0x16ff1,), # Vietnamese Alternate Rea..Vietnamese Alternate Rea + (0x16fe0, 0x16fe3,), # Tangut Iteration Mark ..Old Chinese Iteration Ma (0x17000, 0x187f7,), # (nil) (0x18800, 0x18cd5,), # Tangut Component-001 ..Khitan Small Script Char (0x18d00, 0x18d08,), # (nil) @@ -1069,7 +1077,8 @@ WIDE_EASTASIAN = { (0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And (0x1f3e0, 0x1f3f0,), # House Building ..European Castle (0x1f3f4, 0x1f3f4,), # Waving Black Flag - (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints + (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora + (0x1f400, 0x1f43e,), # Rat ..Paw Prints (0x1f440, 0x1f440,), # Eyes (0x1f442, 0x1f4fc,), # Ear ..Videocassette (0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red @@ -1144,9 +1153,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031e3,), # Ideographic Annotation L..Cjk Stroke Q @@ -1164,8 +1174,7 @@ WIDE_EASTASIAN = { (0x0fe68, 0x0fe6b,), # Small Reverse Solidus ..Small Commercial At (0x0ff01, 0x0ff60,), # Fullwidth Exclamation Ma..Fullwidth Right White Pa (0x0ffe0, 0x0ffe6,), # Fullwidth Cent Sign ..Fullwidth Won Sign - (0x16fe0, 0x16fe4,), # Tangut Iteration Mark ..Khitan Small Script Fill - (0x16ff0, 0x16ff1,), # Vietnamese Alternate Rea..Vietnamese Alternate Rea + (0x16fe0, 0x16fe3,), # Tangut Iteration Mark ..Old Chinese Iteration Ma (0x17000, 0x187f7,), # (nil) (0x18800, 0x18cd5,), # Tangut Component-001 ..Khitan Small Script Char (0x18d00, 0x18d08,), # (nil) @@ -1193,7 +1202,8 @@ WIDE_EASTASIAN = { (0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And (0x1f3e0, 0x1f3f0,), # House Building ..European Castle (0x1f3f4, 0x1f3f4,), # Waving Black Flag - (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints + (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora + (0x1f400, 0x1f43e,), # Rat ..Paw Prints (0x1f440, 0x1f440,), # Eyes (0x1f442, 0x1f4fc,), # Ear ..Videocassette (0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red @@ -1270,9 +1280,10 @@ WIDE_EASTASIAN = { (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute (0x02ff0, 0x02ffb,), # Ideographic Description ..Ideographic Description - (0x03000, 0x0303e,), # Ideographic Space ..Ideographic Variation In + (0x03000, 0x03029,), # Ideographic Space ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031e3,), # Ideographic Annotation L..Cjk Stroke Q @@ -1290,8 +1301,7 @@ WIDE_EASTASIAN = { (0x0fe68, 0x0fe6b,), # Small Reverse Solidus ..Small Commercial At (0x0ff01, 0x0ff60,), # Fullwidth Exclamation Ma..Fullwidth Right White Pa (0x0ffe0, 0x0ffe6,), # Fullwidth Cent Sign ..Fullwidth Won Sign - (0x16fe0, 0x16fe4,), # Tangut Iteration Mark ..Khitan Small Script Fill - (0x16ff0, 0x16ff1,), # Vietnamese Alternate Rea..Vietnamese Alternate Rea + (0x16fe0, 0x16fe3,), # Tangut Iteration Mark ..Old Chinese Iteration Ma (0x17000, 0x187f7,), # (nil) (0x18800, 0x18cd5,), # Tangut Component-001 ..Khitan Small Script Char (0x18d00, 0x18d08,), # (nil) @@ -1321,7 +1331,8 @@ WIDE_EASTASIAN = { (0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And (0x1f3e0, 0x1f3f0,), # House Building ..European Castle (0x1f3f4, 0x1f3f4,), # Waving Black Flag - (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints + (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora + (0x1f400, 0x1f43e,), # Rat ..Paw Prints (0x1f440, 0x1f440,), # Eyes (0x1f442, 0x1f4fc,), # Ear ..Videocassette (0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red @@ -1395,9 +1406,10 @@ WIDE_EASTASIAN = { (0x02e80, 0x02e99,), # Cjk Radical Repeat ..Cjk Radical Rap (0x02e9b, 0x02ef3,), # Cjk Radical Choke ..Cjk Radical C-simplified (0x02f00, 0x02fd5,), # Kangxi Radical One ..Kangxi Radical Flute - (0x02ff0, 0x0303e,), # Ideographic Description ..Ideographic Variation In + (0x02ff0, 0x03029,), # Ideographic Description ..Hangzhou Numeral Nine + (0x03030, 0x0303e,), # Wavy Dash ..Ideographic Variation In (0x03041, 0x03096,), # Hiragana Letter Small A ..Hiragana Letter Small Ke - (0x03099, 0x030ff,), # Combining Katakana-hirag..Katakana Digraph Koto + (0x0309b, 0x030ff,), # Katakana-hiragana Voiced..Katakana Digraph Koto (0x03105, 0x0312f,), # Bopomofo Letter B ..Bopomofo Letter Nn (0x03131, 0x0318e,), # Hangul Letter Kiyeok ..Hangul Letter Araeae (0x03190, 0x031e3,), # Ideographic Annotation L..Cjk Stroke Q @@ -1415,8 +1427,7 @@ WIDE_EASTASIAN = { (0x0fe68, 0x0fe6b,), # Small Reverse Solidus ..Small Commercial At (0x0ff01, 0x0ff60,), # Fullwidth Exclamation Ma..Fullwidth Right White Pa (0x0ffe0, 0x0ffe6,), # Fullwidth Cent Sign ..Fullwidth Won Sign - (0x16fe0, 0x16fe4,), # Tangut Iteration Mark ..Khitan Small Script Fill - (0x16ff0, 0x16ff1,), # Vietnamese Alternate Rea..Vietnamese Alternate Rea + (0x16fe0, 0x16fe3,), # Tangut Iteration Mark ..Old Chinese Iteration Ma (0x17000, 0x187f7,), # (nil) (0x18800, 0x18cd5,), # Tangut Component-001 ..Khitan Small Script Char (0x18d00, 0x18d08,), # (nil) @@ -1446,7 +1457,8 @@ WIDE_EASTASIAN = { (0x1f3cf, 0x1f3d3,), # Cricket Bat And Ball ..Table Tennis Paddle And (0x1f3e0, 0x1f3f0,), # House Building ..European Castle (0x1f3f4, 0x1f3f4,), # Waving Black Flag - (0x1f3f8, 0x1f43e,), # Badminton Racquet And Sh..Paw Prints + (0x1f3f8, 0x1f3fa,), # Badminton Racquet And Sh..Amphora + (0x1f400, 0x1f43e,), # Rat ..Paw Prints (0x1f440, 0x1f440,), # Eyes (0x1f442, 0x1f4fc,), # Ear ..Videocassette (0x1f4ff, 0x1f53d,), # Prayer Beads ..Down-pointing Small Red diff --git a/contrib/python/wcwidth/py2/wcwidth/table_zero.py b/contrib/python/wcwidth/py2/wcwidth/table_zero.py index 67261fd659a..dd422915605 100644 --- a/contrib/python/wcwidth/py2/wcwidth/table_zero.py +++ b/contrib/python/wcwidth/py2/wcwidth/table_zero.py @@ -1,7 +1,7 @@ """ Exports ZERO_WIDTH table keyed by supporting unicode version level. -This code generated by wcwidth/bin/update-tables.py on 2023-10-19 20:57:31 UTC. +This code generated by wcwidth/bin/update-tables.py on 2024-01-04 07:14:52 UTC. """ ZERO_WIDTH = { '4.1.0': ( @@ -107,6 +107,7 @@ ZERO_WIDTH = { (0x0102c, 0x01032,), # Myanmar Vowel Sign Aa ..Myanmar Vowel Sign Ai (0x01036, 0x01039,), # Myanmar Sign Anusvara ..Myanmar Sign Virama (0x01056, 0x01059,), # Myanmar Vowel Sign Vocal..Myanmar Vowel Sign Vocal + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135f, 0x0135f,), # Ethiopic Combining Gemination Mark (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -133,6 +134,7 @@ ZERO_WIDTH = { (0x0a806, 0x0a806,), # Syloti Nagri Sign Hasanta (0x0a80b, 0x0a80b,), # Syloti Nagri Sign Anusvara (0x0a823, 0x0a827,), # Syloti Nagri Vowel Sign ..Syloti Nagri Vowel Sign + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe23,), # Combining Ligature Left ..Combining Double Tilde R @@ -256,6 +258,7 @@ ZERO_WIDTH = { (0x0102c, 0x01032,), # Myanmar Vowel Sign Aa ..Myanmar Vowel Sign Ai (0x01036, 0x01039,), # Myanmar Sign Anusvara ..Myanmar Sign Virama (0x01056, 0x01059,), # Myanmar Vowel Sign Vocal..Myanmar Vowel Sign Vocal + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135f, 0x0135f,), # Ethiopic Combining Gemination Mark (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -286,6 +289,7 @@ ZERO_WIDTH = { (0x0a806, 0x0a806,), # Syloti Nagri Sign Hasanta (0x0a80b, 0x0a80b,), # Syloti Nagri Sign Anusvara (0x0a823, 0x0a827,), # Syloti Nagri Vowel Sign ..Syloti Nagri Vowel Sign + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe23,), # Combining Ligature Left ..Combining Double Tilde R @@ -418,6 +422,7 @@ ZERO_WIDTH = { (0x01071, 0x01074,), # Myanmar Vowel Sign Geba ..Myanmar Vowel Sign Kayah (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135f, 0x0135f,), # Ethiopic Combining Gemination Mark (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -461,6 +466,7 @@ ZERO_WIDTH = { (0x0aa29, 0x0aa36,), # Cham Vowel Sign Aa ..Cham Consonant Sign Wa (0x0aa43, 0x0aa43,), # Cham Consonant Sign Final Ng (0x0aa4c, 0x0aa4d,), # Cham Consonant Sign Fina..Cham Consonant Sign Fina + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac @@ -599,6 +605,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135f, 0x0135f,), # Ethiopic Combining Gemination Mark (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -662,6 +669,7 @@ ZERO_WIDTH = { (0x0aac1, 0x0aac1,), # Tai Viet Tone Mai Tho (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac @@ -805,6 +813,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -870,6 +879,7 @@ ZERO_WIDTH = { (0x0aac1, 0x0aac1,), # Tai Viet Tone Mai Tho (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac @@ -1016,6 +1026,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -1084,6 +1095,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac @@ -1237,6 +1249,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -1305,6 +1318,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac @@ -1459,6 +1473,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -1527,6 +1542,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe26,), # Combining Ligature Left ..Combining Conjoining Mac @@ -1680,6 +1696,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -1751,6 +1768,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe2d,), # Combining Ligature Left ..Combining Conjoining Mac @@ -1928,6 +1946,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -1997,6 +2016,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo @@ -2184,6 +2204,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -2254,6 +2275,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo @@ -2455,6 +2477,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -2525,6 +2548,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo @@ -2739,6 +2763,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -2810,6 +2835,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo @@ -3033,6 +3059,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -3104,6 +3131,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo @@ -3334,6 +3362,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -3405,6 +3434,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo @@ -3635,6 +3665,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01714,), # Tagalog Vowel Sign I ..Tagalog Sign Virama (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -3707,6 +3738,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo @@ -3949,6 +3981,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01715,), # Tagalog Vowel Sign I ..Tagalog Sign Pamudpod (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -4020,6 +4053,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo @@ -4270,6 +4304,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01715,), # Tagalog Vowel Sign I ..Tagalog Sign Pamudpod (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -4341,6 +4376,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo @@ -4600,6 +4636,7 @@ ZERO_WIDTH = { (0x01082, 0x0108d,), # Myanmar Consonant Sign S..Myanmar Sign Shan Counci (0x0108f, 0x0108f,), # Myanmar Sign Rumai Palaung Tone-5 (0x0109a, 0x0109d,), # Myanmar Sign Khamti Tone..Myanmar Vowel Sign Aiton + (0x01160, 0x011ff,), # Hangul Jungseong Filler ..Hangul Jongseong Ssangni (0x0135d, 0x0135f,), # Ethiopic Combining Gemin..Ethiopic Combining Gemin (0x01712, 0x01715,), # Tagalog Vowel Sign I ..Tagalog Sign Pamudpod (0x01732, 0x01734,), # Hanunoo Vowel Sign I ..Hanunoo Sign Pamudpod @@ -4671,6 +4708,7 @@ ZERO_WIDTH = { (0x0aaf5, 0x0aaf6,), # Meetei Mayek Vowel Sign ..Meetei Mayek Virama (0x0abe3, 0x0abea,), # Meetei Mayek Vowel Sign ..Meetei Mayek Vowel Sign (0x0abec, 0x0abed,), # Meetei Mayek Lum Iyek ..Meetei Mayek Apun Iyek + (0x0d7b0, 0x0d7ff,), # Hangul Jungseong O-yeo ..(nil) (0x0fb1e, 0x0fb1e,), # Hebrew Point Judeo-spanish Varika (0x0fe00, 0x0fe0f,), # Variation Selector-1 ..Variation Selector-16 (0x0fe20, 0x0fe2f,), # Combining Ligature Left ..Combining Cyrillic Titlo diff --git a/contrib/python/wcwidth/py2/wcwidth/wcwidth.py b/contrib/python/wcwidth/py2/wcwidth/wcwidth.py index 59eb5c0806f..e924020630c 100644 --- a/contrib/python/wcwidth/py2/wcwidth/wcwidth.py +++ b/contrib/python/wcwidth/py2/wcwidth/wcwidth.py @@ -162,8 +162,11 @@ def wcswidth(pwcs, n=None, unicode_version='auto'): Given a unicode string, return its printable length on a terminal. :param str pwcs: Measure width of given unicode string. - :param int n: When ``n`` is None (default), return the length of the - entire string, otherwise width the first ``n`` characters specified. + :param int n: When ``n`` is None (default), return the length of the entire + string, otherwise only the first ``n`` characters are measured. This + argument exists only for compatibility with the C POSIX function + signature. It is suggested instead to use python's string slicing + capability, ``wcswidth(pwcs[:n])`` :param str unicode_version: An explicit definition of the unicode version level to use for determination, may be ``auto`` (default), which uses the Environment Variable, ``UNICODE_VERSION`` if defined, or the latest diff --git a/contrib/python/wcwidth/py2/ya.make b/contrib/python/wcwidth/py2/ya.make index 8453f5ee2fe..ea44df43087 100644 --- a/contrib/python/wcwidth/py2/ya.make +++ b/contrib/python/wcwidth/py2/ya.make @@ -2,7 +2,7 @@ PY2_LIBRARY() -VERSION(0.2.12) +VERSION(0.2.13) LICENSE(MIT) |
