From 93363cbe0d62718c1a03dfbcfb7c4945cc717223 Mon Sep 17 00:00:00 2001 From: cortadocodes Date: Mon, 12 May 2025 15:40:13 +0100 Subject: [PATCH 1/3] FEA: Move app configuration into service configuration BREAKING CHANGE: Move the contents of the `app_configuration.json` file into the `octue.yaml` file under the first item in the `services` list. Replace any uses of the `app_configuration` argument/variable with `service_configuration` and use `ServiceConfiguration.from_file` instead of `load_service_and_app_configuration`. --- octue/cli.py | 17 ++-- octue/cloud/events/answer_question.py | 4 +- octue/cloud/pub_sub/service.py | 4 +- octue/configuration.py | 98 ++++--------------- octue/resources/analysis.py | 2 +- octue/resources/child.py | 2 +- octue/runner.py | 32 +++--- .../elevation_service/app_configuration.json | 8 -- .../elevation_service/octue.yaml | 5 +- .../parent_service/app.py | 2 +- .../parent_service/app_configuration.json | 20 ---- .../parent_service/octue.yaml | 12 ++- .../wind_speed_service/app_configuration.json | 8 -- .../wind_speed_service/octue.yaml | 5 +- pyproject.toml | 2 +- tests/cloud/events/test_answer_question.py | 22 ++--- tests/cloud/pub_sub/test_service.py | 2 +- tests/templates/test_template_apps.py | 11 ++- tests/test_cli.py | 77 ++++++--------- 19 files changed, 113 insertions(+), 220 deletions(-) delete mode 100644 octue/templates/template-child-services/elevation_service/app_configuration.json delete mode 100644 octue/templates/template-child-services/parent_service/app_configuration.json delete mode 100644 octue/templates/template-child-services/wind_speed_service/app_configuration.json diff --git a/octue/cli.py b/octue/cli.py index 00d06b9af..bda10ddfd 100644 --- a/octue/cli.py +++ b/octue/cli.py @@ -17,7 +17,7 @@ from octue.cloud.pub_sub.service import Service from octue.cloud.service_id import create_sruid, get_sruid_parts from octue.cloud.storage import GoogleCloudStorageClient -from octue.configuration import ServiceConfiguration, load_service_and_app_configuration +from octue.configuration import ServiceConfiguration from octue.definitions import LOCAL_SDK_VERSION, MANIFEST_FILENAME, VALUES_FILENAME from octue.exceptions import ServiceAlreadyExists from octue.log_handlers import apply_log_handler, get_remote_handler @@ -215,7 +215,7 @@ def local(input_values, input_manifest, attributes, service_config): if input_manifest: input_manifest = json.loads(input_manifest, cls=OctueJSONDecoder) - service_configuration, app_configuration = load_service_and_app_configuration(service_config) + service_configuration = ServiceConfiguration.from_file(service_config) if attributes: attributes = json.loads(attributes, cls=OctueJSONDecoder) @@ -231,7 +231,7 @@ def local(input_values, input_manifest, attributes, service_config): recipient=recipient, ) - backend_configuration_values = (app_configuration.configuration_values or {}).get("backend") + backend_configuration_values = (service_configuration.configuration_values or {}).get("backend") if backend_configuration_values: backend_configuration_values = copy.deepcopy(backend_configuration_values) @@ -245,7 +245,6 @@ def local(input_values, input_manifest, attributes, service_config): question=question, project_name=backend.project_name, service_configuration=service_configuration, - app_configuration=app_configuration, ) click.echo(json.dumps(answer, cls=OctueJSONEncoder)) @@ -642,7 +641,7 @@ def start(service_config, revision_tag, timeout, no_rm): The service's pub/sub topic and subscription are deleted on exit. """ service_revision_tag_override = revision_tag - service_configuration, app_configuration = load_service_and_app_configuration(service_config) + service_configuration = ServiceConfiguration.from_file(service_config) service_namespace, service_name, service_revision_tag = get_sruid_parts(service_configuration) if service_revision_tag_override and service_revision_tag: @@ -659,11 +658,7 @@ def start(service_config, revision_tag, timeout, no_rm): revision_tag=service_revision_tag_override or service_revision_tag, ) - runner = Runner.from_configuration( - service_configuration=service_configuration, - app_configuration=app_configuration, - service_id=service_sruid, - ) + runner = Runner.from_configuration(service_configuration=service_configuration, service_id=service_sruid) run_function = functools.partial( runner.run, @@ -671,7 +666,7 @@ def start(service_config, revision_tag, timeout, no_rm): analysis_log_handler=global_cli_context["log_handler"], ) - backend_configuration_values = (app_configuration.configuration_values or {}).get("backend") + backend_configuration_values = (service_configuration.configuration_values or {}).get("backend") if backend_configuration_values: backend_configuration_values = copy.deepcopy(backend_configuration_values) diff --git a/octue/cloud/events/answer_question.py b/octue/cloud/events/answer_question.py index f52b2b0e0..38374d1f0 100644 --- a/octue/cloud/events/answer_question.py +++ b/octue/cloud/events/answer_question.py @@ -8,13 +8,12 @@ logger = logging.getLogger(__name__) -def answer_question(question, project_name, service_configuration, app_configuration): +def answer_question(question, project_name, service_configuration): """Answer a question received by a service. :param dict question: a question event and its attributes :param str project_name: the name of the project the service is running on :param octue.configuration.ServiceConfiguration service_configuration: - :param octue.configuration.AppConfiguration app_configuration: :return dict: the result event """ service_namespace, service_name, service_revision_tag = get_sruid_parts(service_configuration) @@ -23,7 +22,6 @@ def answer_question(question, project_name, service_configuration, app_configura runner = Runner.from_configuration( service_configuration=service_configuration, - app_configuration=app_configuration, project_name=project_name, service_id=service_sruid, ) diff --git a/octue/cloud/pub_sub/service.py b/octue/cloud/pub_sub/service.py index b99d909b5..321cc889d 100644 --- a/octue/cloud/pub_sub/service.py +++ b/octue/cloud/pub_sub/service.py @@ -282,7 +282,7 @@ def ask( :param str service_id: the ID of the child to ask the question to :param any|None input_values: any input values for the question :param dict|octue.resources.manifest.Manifest|None input_manifest: an input manifest of any datasets needed for the question - :param list(dict)|None children: a list of children for the child to use instead of its default children (if it uses children). These should be in the same format as in an app's app configuration file and have the same keys. + :param list(dict)|None children: a list of children for the child to use instead of its default children (if it uses children). These should be in the same format as in an app's service configuration file and have the same keys. :param bool subscribe_to_logs: if `True`, subscribe to the child's logs and handle them with the local log handlers :param bool allow_local_files: if `True`, allow the input manifest to contain references to local files - this should only be set to `True` if the child will be able to access these local files :param str save_diagnostics: must be one of {"SAVE_DIAGNOSTICS_OFF", "SAVE_DIAGNOSTICS_ON_CRASH", "SAVE_DIAGNOSTICS_ON"}; if turned on, allow the input values and manifest (and its datasets) to be saved by the child either all the time or just if it fails while processing them @@ -524,7 +524,7 @@ def _send_question( :param any|None input_values: any input values for the question :param octue.resources.manifest.Manifest|None input_manifest: an input manifest of any datasets needed for the question - :param list(dict)|None children: a list of children for the child to use instead of its default children (if it uses children). These should be in the same format as in an app's app configuration file and have the same keys. + :param list(dict)|None children: a list of children for the child to use instead of its default children (if it uses children). These should be in the same format as in an app's service configuration file and have the same keys. :param bool forward_logs: whether to request the child to forward its logs :param str save_diagnostics: must be one of {"SAVE_DIAGNOSTICS_OFF", "SAVE_DIAGNOSTICS_ON_CRASH", "SAVE_DIAGNOSTICS_ON"}; if turned on, allow the input values and manifest (and its datasets) to be saved by the child either all the time or just if it fails while processing them :param str question_uuid: the UUID of the question being sent diff --git a/octue/configuration.py b/octue/configuration.py index 50d83f35f..d13e883fa 100644 --- a/octue/configuration.py +++ b/octue/configuration.py @@ -1,4 +1,3 @@ -import json import logging import os @@ -11,18 +10,23 @@ class ServiceConfiguration: - """A class containing the details needed to configure a service. + """A class containing the details needed to configure a service. The configuration values and manifest data must + conform to the service's twine schema. :param str name: the name to give the service :param str namespace: the namespace for grouping the service with others (e.g. the name of an organisation or individual) :param str app_source_path: the path to the directory containing the app's source code :param str twine_path: the path to the twine file defining the schema for input, output, and configuration data for the service - :param str|None app_configuration_path: the path to the app configuration file containing configuration data for the service; if this is `None`, the default application configuration is used :param str|None diagnostics_cloud_path: the path to a cloud directory to store diagnostics (this includes the configuration, input values and manifest, and logs for each question) :param iter(dict)|None service_registries: the names and endpoints of the registries used to resolve service revisions when asking questions; these should be in priority order (highest priority first) :param str|None event_store_table_id: the full ID of the Google BigQuery table used as the event store e.g. "your-project.your-dataset.your-table" :param bool delete_local_files: if `True`, delete any files downloaded and temporary directories created during an analysis once it's finished - :param str|None directory: if provided, find the app source, twine, and app configuration relative to this directory + :param str|dict|list|None configuration_values: values to configure the app + :param str|dict|octue.resources.Manifest|None configuration_manifest: a manifest of datasets to configure the app + :param str|list(dict)|None children: details of the children the app requires + :param str|None output_location: the path to a cloud directory to save output datasets at + :param bool use_signed_urls_for_output_datasets: if `True`, use signed URLs instead of cloud URIs for dataset paths in the output manifest + :param str|None directory: if provided, find the app source and twine relative to this directory :return None: """ @@ -32,11 +36,15 @@ def __init__( namespace, app_source_path=".", twine_path="twine.json", - app_configuration_path=None, diagnostics_cloud_path=None, service_registries=None, event_store_table_id=None, delete_local_files=False, + configuration_values=None, + configuration_manifest=None, + children=None, + output_location=None, + use_signed_urls_for_output_datasets=False, directory=None, **kwargs, ): @@ -47,6 +55,13 @@ def __init__( self.event_store_table_id = event_store_table_id self.delete_local_files = delete_local_files + # Values formerly from app configuration. + self.configuration_values = configuration_values + self.configuration_manifest = configuration_manifest + self.children = children + self.output_location = output_location + self.use_signed_urls_for_output_datasets = use_signed_urls_for_output_datasets + if directory: directory = os.path.abspath(directory) @@ -57,20 +72,10 @@ def __init__( self.twine_path = os.path.join(directory, twine_path) - if app_configuration_path: - self.app_configuration_path = os.path.join(directory, app_configuration_path) - else: - self.app_configuration_path = None - else: self.app_source_path = os.path.abspath(app_source_path) self.twine_path = os.path.abspath(twine_path) - if app_configuration_path: - self.app_configuration_path = os.path.abspath(app_configuration_path) - else: - self.app_configuration_path = None - if kwargs: logger.warning(f"The following keyword arguments were not used by {type(self).__name__}: {kwargs!r}.") @@ -105,66 +110,3 @@ def __repr__(self): :return str: the service configuration as a string """ return f"<{type(self).__name__}('{self.namespace}/{self.name}')>" - - -class AppConfiguration: - """A class containing the configuration data needed to start an app as a service. The configuration data should - conform to the service's twine schema. - - :param str|dict|list|None configuration_values: values to configure the app - :param str|dict|octue.resources.Manifest|None configuration_manifest: a manifest of datasets to configure the app - :param str|list(dict)|None children: details of the children the app requires - :param str|None output_location: the path to a cloud directory to save output datasets at - :param bool use_signed_urls_for_output_datasets: if `True`, use signed URLs instead of cloud URIs for dataset paths in the output manifest - :return None: - """ - - def __init__( - self, - configuration_values=None, - configuration_manifest=None, - children=None, - output_location=None, - use_signed_urls_for_output_datasets=False, - **kwargs, - ): - self.configuration_values = configuration_values - self.configuration_manifest = configuration_manifest - self.children = children - self.output_location = output_location - self.use_signed_urls_for_output_datasets = use_signed_urls_for_output_datasets - - if kwargs: - logger.warning(f"The following keyword arguments were not used by {type(self).__name__}: {kwargs!r}.") - - @classmethod - def from_file(cls, path): - """Load an app configuration from a file. - - :param str path: - :return AppConfiguration: - """ - with open(path) as f: - raw_app_configuration = json.load(f) - - logger.info("App configuration loaded from %r.", os.path.abspath(path)) - return cls(**raw_app_configuration) - - -def load_service_and_app_configuration(service_configuration_path=None): - """Load the service configuration from the given YAML file and the app configuration referenced in it. If no app - configuration is referenced, an empty one is returned. - - :param str|None service_configuration_path: the path to the service configuration YAML file; if not provided, the `OCTUE_SERVICE_CONFIGURATION_PATH` environment variable is used if present, otherwise the local path `octue.yaml` is used - :return (octue.configuration.ServiceConfiguration, octue.configuration.AppConfiguration): the service configuration loaded from the YAML file and the app configuration specified by the service configuration (or an empty app configuration if none is specified) - """ - service_configuration = ServiceConfiguration.from_file(service_configuration_path) - app_configuration = AppConfiguration() - - if service_configuration.app_configuration_path: - try: - app_configuration = AppConfiguration.from_file(service_configuration.app_configuration_path) - except FileNotFoundError: - logger.info("No app configuration found.") - - return service_configuration, app_configuration diff --git a/octue/resources/analysis.py b/octue/resources/analysis.py index 37f8ccb85..d79f281af 100644 --- a/octue/resources/analysis.py +++ b/octue/resources/analysis.py @@ -158,7 +158,7 @@ def finalise(self, upload_output_datasets_to=None, use_signed_urls=None): logger.info("The analysis produced an output manifest.") if not (self.output_location or upload_output_datasets_to): - logger.info("No output location was set in the app configuration - can't upload output datasets.") + logger.info("No output location was set in the service configuration - can't upload output datasets.") serialised_strands["output_manifest"] = self.output_manifest.serialise() diff --git a/octue/resources/child.py b/octue/resources/child.py index 53bcea6bc..6e2234ed1 100644 --- a/octue/resources/child.py +++ b/octue/resources/child.py @@ -87,7 +87,7 @@ def ask( :param any|None input_values: any input values for the question, conforming with the schema in the child's twine :param octue.resources.manifest.Manifest|None input_manifest: an input manifest of any datasets needed for the question, conforming with the schema in the child's twine - :param list(dict)|None children: a list of children for the child to use instead of its default children (if it uses children). These should be in the same format as in an app's app configuration file and have the same keys. + :param list(dict)|None children: a list of children for the child to use instead of its default children (if it uses children). These should be in the same format as in an app's service configuration file and have the same keys. :param bool subscribe_to_logs: if `True`, subscribe to logs from the child and handle them with the local log handlers :param bool allow_local_files: if `True`, allow the input manifest to contain references to local files - this should only be set to `True` if the child will have access to these local files :param callable|None handle_monitor_message: a function to handle monitor messages (e.g. send them to an endpoint for plotting or displaying) - this function should take a single JSON-compatible python primitive as an argument (note that this could be an array or object) diff --git a/octue/runner.py b/octue/runner.py index e9645a544..e29e8033b 100644 --- a/octue/runner.py +++ b/octue/runner.py @@ -108,31 +108,23 @@ def __init__( self._project_name = project_name @classmethod - def from_configuration( - cls, - service_configuration, - app_configuration, - project_name=None, - service_id=None, - **overrides, - ): - """Instantiate a runner from a service and app configuration. + def from_configuration(cls, service_configuration, project_name=None, service_id=None, **overrides): + """Instantiate a runner from a service configuration. :param octue.configuration.ServiceConfiguration service_configuration: - :param octue.configuration.AppConfiguration app_configuration: :param str|None project_name: name of Google Cloud project to get credentials from :param str|None service_id: the ID of the service being run - :param overrides: optional keyword arguments to override the `Runner` instantiation parameters extracted from the service and app configuration - :return octue.runner.Runner: a runner configured with the given service and app configuration + :param overrides: optional keyword arguments to override the `Runner` instantiation parameters extracted from the service configuration + :return octue.runner.Runner: a runner configured with the given service configuration """ inputs = { "app_src": service_configuration.app_source_path, "twine": service_configuration.twine_path, - "configuration_values": app_configuration.configuration_values, - "configuration_manifest": app_configuration.configuration_manifest, - "children": app_configuration.children, - "output_location": app_configuration.output_location, - "use_signed_urls_for_output_datasets": app_configuration.use_signed_urls_for_output_datasets, + "configuration_values": service_configuration.configuration_values, + "configuration_manifest": service_configuration.configuration_manifest, + "children": service_configuration.children, + "output_location": service_configuration.output_location, + "use_signed_urls_for_output_datasets": service_configuration.use_signed_urls_for_output_datasets, "diagnostics_cloud_path": service_configuration.diagnostics_cloud_path, "project_name": project_name, "service_id": service_id, @@ -169,7 +161,7 @@ def run( :param str|None analysis_id: UUID of analysis :param str|dict|None input_values: the input_values strand data. Can be expressed as a string path of a *.json file (relative or absolute), as an open file-like object (containing json data), as a string of json data or as an already-parsed dict. :param str|dict|octue.resources.manifest.Manifest|None input_manifest: The input_manifest strand data. Can be expressed as a string path of a *.json file (relative or absolute), as an open file-like object (containing json data), as a string of json data or as an already-parsed dict. - :param list(dict)|None children: a list of children to use instead of the children provided at instantiation. These should be in the same format as in an app's app configuration file and have the same keys. + :param list(dict)|None children: a list of children to use instead of the children provided at instantiation. These should be in the same format as in an app's service configuration file and have the same keys. :param str analysis_log_level: the level below which to ignore log messages :param logging.Handler|None analysis_log_handler: the logging.Handler instance which will be used to handle logs for this analysis run. Handlers can be created as per the logging cookbook https://docs.python.org/3/howto/logging-cookbook.html but should use the format defined above in LOG_FORMAT. :param callable|None handle_monitor_message: a function that sends monitor messages to the parent that requested the analysis @@ -351,7 +343,7 @@ def _validate_dataset_file_tags(self, manifest_kind, manifest): raise twined.exceptions.invalid_contents_map[manifest_kind](message) def _instantiate_children(self, serialised_children, parent_question_uuid, originator_question_uuid, originator): - """Instantiate children from their serialised form (e.g. as given in the app configuration) so they are ready + """Instantiate children from their serialised form (e.g. as given in the service configuration) so they are ready to be asked questions. Two sets of modifications are made to each child's `ask` method: 1. The parent question UUID is set to the current analysis ID, and the originator question UUID and originator @@ -360,7 +352,7 @@ def _instantiate_children(self, serialised_children, parent_question_uuid, origi 2. For diagnostics, the `ask` method is wrapped so the runner can record the questions asked by the app, the responses received to each question, and the order the questions are asked in. - :param list(dict) serialised_children: serialised children from e.g. the app configuration file + :param list(dict) serialised_children: serialised children from e.g. the service configuration file :param str|None parent_question_uuid: the UUID of the question that triggered this analysis :param str originator_question_uuid: the UUID of the question that triggered all ancestor questions of this analysis :param str originator: the SRUID of the service revision that triggered the tree of questions this analysis is related to diff --git a/octue/templates/template-child-services/elevation_service/app_configuration.json b/octue/templates/template-child-services/elevation_service/app_configuration.json deleted file mode 100644 index 0e6861574..000000000 --- a/octue/templates/template-child-services/elevation_service/app_configuration.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "configuration_values": { - "backend": { - "name": "GCPPubSubBackend", - "project_name": "octue-sdk-python" - } - } -} diff --git a/octue/templates/template-child-services/elevation_service/octue.yaml b/octue/templates/template-child-services/elevation_service/octue.yaml index 8b0d09e54..cd5d88e89 100644 --- a/octue/templates/template-child-services/elevation_service/octue.yaml +++ b/octue/templates/template-child-services/elevation_service/octue.yaml @@ -1,4 +1,7 @@ services: - name: elevation-service namespace: template-child-services - app_configuration_path: app_configuration.json + configuration_values: + backend: + name: "GCPPubSubBackend" + project_name: "octue-sdk-python" diff --git a/octue/templates/template-child-services/parent_service/app.py b/octue/templates/template-child-services/parent_service/app.py index a5cd81c4c..6db3cb09e 100644 --- a/octue/templates/template-child-services/parent_service/app.py +++ b/octue/templates/template-child-services/parent_service/app.py @@ -14,7 +14,7 @@ def run(analysis): """ logger.info("Hello! The child services template app is running!") - # Send input data to children specified in `app_configuration.json` and receive output data. The output comes as a + # Send input data to children specified in service configuration and receive output data. The output comes as a # dictionary with an `output_values` key and an `output_manifest` key. elevations = analysis.children["elevation"].ask(input_values=analysis.input_values, timeout=60)[0]["output_values"] diff --git a/octue/templates/template-child-services/parent_service/app_configuration.json b/octue/templates/template-child-services/parent_service/app_configuration.json deleted file mode 100644 index 3a3fbba54..000000000 --- a/octue/templates/template-child-services/parent_service/app_configuration.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "children": [ - { - "key": "wind_speed", - "id": "template-child-services/wind-speed-service", - "backend": { - "name": "GCPPubSubBackend", - "project_name": "octue-sdk-python" - } - }, - { - "key": "elevation", - "id": "template-child-services/elevation-service", - "backend": { - "name": "GCPPubSubBackend", - "project_name": "octue-sdk-python" - } - } - ] -} diff --git a/octue/templates/template-child-services/parent_service/octue.yaml b/octue/templates/template-child-services/parent_service/octue.yaml index c6910e95e..bd7a6480b 100644 --- a/octue/templates/template-child-services/parent_service/octue.yaml +++ b/octue/templates/template-child-services/parent_service/octue.yaml @@ -1,4 +1,14 @@ services: - name: parent-service namespace: template-child-services - app_configuration_path: app_configuration.json + children: + - key: "wind_speed" + id: "template-child-services/wind-speed-service" + backend: + name: "GCPPubSubBackend" + project_name: "octue-sdk-python" + - key: "elevation" + id: "template-child-services/elevation-service" + backend: + name: "GCPPubSubBackend" + project_name: "octue-sdk-python" diff --git a/octue/templates/template-child-services/wind_speed_service/app_configuration.json b/octue/templates/template-child-services/wind_speed_service/app_configuration.json deleted file mode 100644 index 0e6861574..000000000 --- a/octue/templates/template-child-services/wind_speed_service/app_configuration.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "configuration_values": { - "backend": { - "name": "GCPPubSubBackend", - "project_name": "octue-sdk-python" - } - } -} diff --git a/octue/templates/template-child-services/wind_speed_service/octue.yaml b/octue/templates/template-child-services/wind_speed_service/octue.yaml index 3094de8bb..17b09b650 100644 --- a/octue/templates/template-child-services/wind_speed_service/octue.yaml +++ b/octue/templates/template-child-services/wind_speed_service/octue.yaml @@ -1,4 +1,7 @@ services: - name: wind-speed-service namespace: template-child-services - app_configuration_path: app_configuration.json + configuration_values: + backend: + name: "GCPPubSubBackend" + project_name: "octue-sdk-python" diff --git a/pyproject.toml b/pyproject.toml index dcb0e4a75..b87b03b21 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "octue" -version = "0.62.1" +version = "0.63.0" description = "A package providing template applications for data services, and a python SDK to the Octue API." readme = "README.md" authors = ["Marcus Lugg ", "Thomas Clark "] diff --git a/tests/cloud/events/test_answer_question.py b/tests/cloud/events/test_answer_question.py index dd0e52c31..ba92a9623 100644 --- a/tests/cloud/events/test_answer_question.py +++ b/tests/cloud/events/test_answer_question.py @@ -1,4 +1,3 @@ -import json import os from unittest import TestCase, mock from unittest.mock import patch @@ -7,14 +6,14 @@ from octue.cloud.emulators._pub_sub import MockTopic from octue.cloud.events.answer_question import answer_question -from octue.configuration import load_service_and_app_configuration +from octue.configuration import ServiceConfiguration from octue.utils.patches import MultiPatcher from tests.mocks import MockOpen class TestAnswerQuestion(TestCase): def test_answer_question(self): - """Test that the `answer_question` function uses the values in the service and app configurations correctly.""" + """Test that the `answer_question` function uses the values in the service configuration correctly.""" class MockOpenForConfigurationFiles(MockOpen): path_to_contents_mapping = { @@ -26,12 +25,11 @@ class MockOpenForConfigurationFiles(MockOpen): "namespace": "testing", "app_source_path": "/path/to/app_dir", "twine_path": "path/to/twine.json", - "app_configuration_path": "app_configuration.json", + "configuration_values": {"hello": "configuration"}, } - ] + ], } ), - "app_configuration.json": json.dumps({"configuration_values": {"hello": "configuration"}}), } with patch("octue.cloud.events.answer_question.Runner.from_configuration") as mock_constructor: @@ -43,7 +41,7 @@ class MockOpenForConfigurationFiles(MockOpen): patch.dict(os.environ, {"OCTUE_SERVICE_REVISION_TAG": "blah"}), ] ): - service_config, app_config = load_service_and_app_configuration() + service_config = ServiceConfiguration.from_file() answer_question( question={ @@ -59,7 +57,6 @@ class MockOpenForConfigurationFiles(MockOpen): }, project_name="a-project-name", service_configuration=service_config, - app_configuration=app_config, ) self.assertTrue( @@ -74,12 +71,13 @@ class MockOpenForConfigurationFiles(MockOpen): self.assertIsNone(mock_constructor.call_args.kwargs["service_configuration"].service_registries) self.assertEqual( - mock_constructor.call_args.kwargs["app_configuration"].configuration_values, {"hello": "configuration"} + mock_constructor.call_args.kwargs["service_configuration"].configuration_values, + {"hello": "configuration"}, ) - self.assertIsNone(mock_constructor.call_args.kwargs["app_configuration"].configuration_manifest) - self.assertIsNone(mock_constructor.call_args.kwargs["app_configuration"].children) - self.assertIsNone(mock_constructor.call_args.kwargs["app_configuration"].output_location) + self.assertIsNone(mock_constructor.call_args.kwargs["service_configuration"].configuration_manifest) + self.assertIsNone(mock_constructor.call_args.kwargs["service_configuration"].children) + self.assertIsNone(mock_constructor.call_args.kwargs["service_configuration"].output_location) self.assertEqual(mock_constructor.call_args.kwargs["project_name"], "a-project-name") self.assertEqual(mock_constructor.call_args.kwargs["service_id"], "testing/test-service:blah") diff --git a/tests/cloud/pub_sub/test_service.py b/tests/cloud/pub_sub/test_service.py index b84faa1ce..be8a203d4 100644 --- a/tests/cloud/pub_sub/test_service.py +++ b/tests/cloud/pub_sub/test_service.py @@ -801,7 +801,7 @@ def run_function(*args, **kwargs): def test_providing_dynamic_children(self): """Test that, if children are provided to the `ask` method while asking a question, the child being asked uses - those children instead of the children it has defined in its app configuration. + those children instead of the children it has defined in its service configuration. """ def mock_child_app(analysis): diff --git a/tests/templates/test_template_apps.py b/tests/templates/test_template_apps.py index 56663b0eb..e835b1182 100644 --- a/tests/templates/test_template_apps.py +++ b/tests/templates/test_template_apps.py @@ -1,4 +1,3 @@ -import json import os import shutil import subprocess @@ -8,6 +7,8 @@ import uuid from unittest.mock import patch +import yaml + from octue import REPOSITORY_ROOT, Runner from octue.cloud.emulators import ChildEmulator from octue.cloud.emulators.cloud_storage import mock_generate_signed_url @@ -101,8 +102,8 @@ def test_child_services_template(self): parent_service_path = os.path.join(self.template_path, "parent_service") namespace = "template-child-services" - with open(os.path.join(parent_service_path, "app_configuration.json")) as f: - children = json.load(f)["children"] + with open(os.path.join(parent_service_path, "octue.yaml")) as f: + children = yaml.safe_load(f)["services"][0]["children"] children[0]["id"] = create_sruid( namespace=namespace, @@ -137,8 +138,8 @@ def test_child_services_template_using_emulated_children(self): self.set_template("template-child-services") parent_service_path = os.path.join(self.template_path, "parent_service") - with open(os.path.join(parent_service_path, "app_configuration.json")) as f: - children = json.load(f)["children"] + with open(os.path.join(parent_service_path, "octue.yaml")) as f: + children = yaml.safe_load(f)["services"][0]["children"] runner = Runner( app_src=parent_service_path, diff --git a/tests/test_cli.py b/tests/test_cli.py index 799fbcc17..276c368c4 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -11,7 +11,7 @@ from octue.cloud import storage from octue.cloud.emulators._pub_sub import MockService from octue.cloud.emulators.service import ServicePatcher -from octue.configuration import AppConfiguration, ServiceConfiguration +from octue.configuration import ServiceConfiguration from octue.resources import Dataset, Manifest from octue.utils.patches import MultiPatcher from tests import MOCK_SERVICE_REVISION_TAG, TEST_BUCKET_NAME, TESTS_DIR @@ -19,10 +19,7 @@ TWINE_FILE_PATH = os.path.join(TESTS_DIR, "data", "twines", "valid_schema_twine.json") -MOCK_CONFIGURATIONS = ( - ServiceConfiguration(name="test-app", namespace="testing"), - AppConfiguration(configuration_values={"n_iterations": 5}), -) +MOCK_CONFIGURATION = ServiceConfiguration(name="test-app", namespace="testing", configuration_values={"n_iterations": 5}) RESULT = {"output_values": {"some": "data"}} @@ -48,7 +45,7 @@ class TestQuestionAskRemoteCommand(BaseTestCase): def test_with_input_values(self): """Test that the `octue question ask remote` CLI command works with just input values.""" - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.Child.ask", return_value=(RESULT, self.QUESTION_UUID)) as mock_ask: result = CliRunner().invoke( octue_cli, @@ -68,7 +65,7 @@ def test_with_input_manifest(self): """Test that the `octue question ask remote` CLI command works with just an input manifest.""" input_manifest = self.create_valid_manifest() - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.Child.ask", return_value=(RESULT, self.QUESTION_UUID)) as mock_ask: result = CliRunner().invoke( octue_cli, @@ -89,7 +86,7 @@ def test_with_input_values_and_manifest(self): input_values = {"height": 3} input_manifest = self.create_valid_manifest() - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.Child.ask", return_value=(RESULT, self.QUESTION_UUID)) as mock_ask: result = CliRunner().invoke( octue_cli, @@ -111,7 +108,7 @@ def test_with_output_manifest(self): """Test that the `octue question ask remote` CLI command returns output manifests in a useful form.""" result = {"output_values": {"some": "data"}, "output_manifest": self.create_valid_manifest()} - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.Child.ask", return_value=(result, self.QUESTION_UUID)): result = CliRunner().invoke( octue_cli, @@ -132,7 +129,7 @@ def test_asynchronous(self): """Test that the `octue question ask remote` CLI command works with the `--asynchronous` option and returns the question UUID. """ - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.Child.ask", return_value=(RESULT, self.QUESTION_UUID)) as mock_ask: result = CliRunner().invoke( octue_cli, @@ -172,7 +169,7 @@ def test_with_input_values(self): """Test that the `octue question ask local` CLI command works with just input values and sends an originator question. """ - with mock.patch("octue.cli.load_service_and_app_configuration", return_value=MOCK_CONFIGURATIONS): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.answer_question", return_value=RESULT) as mock_answer_question: result = CliRunner().invoke( octue_cli, @@ -184,11 +181,11 @@ def test_with_input_values(self): ], ) - # Check service and app configuration. + # Check service configuration. mock_answer_question_kwargs = mock_answer_question.call_args.kwargs self.assertEqual(mock_answer_question_kwargs["service_configuration"].namespace, "testing") self.assertEqual(mock_answer_question_kwargs["service_configuration"].name, "test-app") - self.assertEqual(mock_answer_question_kwargs["app_configuration"].configuration_values, {"n_iterations": 5}) + self.assertEqual(mock_answer_question_kwargs["service_configuration"].configuration_values, {"n_iterations": 5}) # Check question event. question = mock_answer_question_kwargs["question"] @@ -210,7 +207,7 @@ def test_with_input_manifest(self): originator question. """ input_manifest = self.create_valid_manifest() - with mock.patch("octue.cli.load_service_and_app_configuration", return_value=MOCK_CONFIGURATIONS): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.answer_question", return_value=RESULT) as mock_answer_question: result = CliRunner().invoke( octue_cli, @@ -222,11 +219,11 @@ def test_with_input_manifest(self): ], ) - # Check service and app configuration. + # Check service configuration. mock_answer_question_kwargs = mock_answer_question.call_args.kwargs self.assertEqual(mock_answer_question_kwargs["service_configuration"].namespace, "testing") self.assertEqual(mock_answer_question_kwargs["service_configuration"].name, "test-app") - self.assertEqual(mock_answer_question_kwargs["app_configuration"].configuration_values, {"n_iterations": 5}) + self.assertEqual(mock_answer_question_kwargs["service_configuration"].configuration_values, {"n_iterations": 5}) # Check question event. question = mock_answer_question_kwargs["question"] @@ -250,7 +247,7 @@ def test_with_input_values_and_manifest(self): input_values = {"height": 3} input_manifest = self.create_valid_manifest() - with mock.patch("octue.cli.load_service_and_app_configuration", return_value=MOCK_CONFIGURATIONS): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.answer_question", return_value=RESULT) as mock_answer_question: result = CliRunner().invoke( octue_cli, @@ -263,11 +260,11 @@ def test_with_input_values_and_manifest(self): ], ) - # Check service and app configuration. + # Check service configuration. mock_answer_question_kwargs = mock_answer_question.call_args.kwargs self.assertEqual(mock_answer_question_kwargs["service_configuration"].namespace, "testing") self.assertEqual(mock_answer_question_kwargs["service_configuration"].name, "test-app") - self.assertEqual(mock_answer_question_kwargs["app_configuration"].configuration_values, {"n_iterations": 5}) + self.assertEqual(mock_answer_question_kwargs["service_configuration"].configuration_values, {"n_iterations": 5}) # Check question event. question = mock_answer_question_kwargs["question"] @@ -289,7 +286,7 @@ def test_with_output_manifest(self): """Test that the `octue question ask local` CLI command returns output manifests in a useful form.""" result = {"output_values": {"some": "data"}, "output_manifest": self.create_valid_manifest()} - with mock.patch("octue.cli.load_service_and_app_configuration", return_value=MOCK_CONFIGURATIONS): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.answer_question", return_value=result): result = CliRunner().invoke( octue_cli, @@ -329,7 +326,7 @@ def test_with_attributes(self): "ephemeral_storage": "500Mi", } - with mock.patch("octue.cli.load_service_and_app_configuration", return_value=MOCK_CONFIGURATIONS): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.answer_question", return_value=RESULT) as mock_answer_question: result = CliRunner().invoke( octue_cli, @@ -342,11 +339,11 @@ def test_with_attributes(self): ], ) - # Check service and app configuration. + # Check service configuration. mock_answer_question_kwargs = mock_answer_question.call_args.kwargs self.assertEqual(mock_answer_question_kwargs["service_configuration"].namespace, "testing") self.assertEqual(mock_answer_question_kwargs["service_configuration"].name, "test-app") - self.assertEqual(mock_answer_question_kwargs["app_configuration"].configuration_values, {"n_iterations": 5}) + self.assertEqual(mock_answer_question_kwargs["service_configuration"].configuration_values, {"n_iterations": 5}) # Check question event and attributes. question = mock_answer_question_kwargs["question"] @@ -365,7 +362,7 @@ class TestQuestionEventsGetCommand(BaseTestCase): def test_warning_logged_if_no_events_found(self): """Test that a warning is logged if no events are found for a question.""" - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.get_events", return_value=[]): result = CliRunner().invoke( octue_cli, @@ -388,7 +385,7 @@ def test_with_question_uuid_types(self): "--originator-question-uuid", ): with self.subTest(question_uuid_arg=question_uuid_arg): - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.get_events", return_value=self.EVENTS): result = CliRunner().invoke( octue_cli, @@ -405,7 +402,7 @@ def test_with_question_uuid_types(self): def test_with_kinds(self): """Test that the `--kinds` option is respected.""" - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.get_events", return_value=self.EVENTS[-2:-1]) as mock_get_events: result = CliRunner().invoke( octue_cli, @@ -426,7 +423,7 @@ def test_with_kinds(self): def test_with_exclude_kinds(self): """Test that the `--exclude-kinds` option is respected.""" - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.get_events", return_value=self.EVENTS[:1]) as mock_get_events: result = CliRunner().invoke( octue_cli, @@ -447,7 +444,7 @@ def test_with_exclude_kinds(self): def test_with_limit(self): """Test that the `--limit` option is respected.""" - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.get_events", return_value=self.EVENTS[:1]) as mock_get_events: result = CliRunner().invoke( octue_cli, @@ -476,7 +473,7 @@ class TestQuestionEventsReplayCommand(BaseTestCase): def test_with_no_events_found(self): """Test that an empty list is passed to `stdout` if no events are found for a question.""" - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.get_events", return_value=[]): result = CliRunner().invoke( octue_cli, @@ -502,7 +499,7 @@ def test_with_question_uuid_types_and_validate_events(self): ["--validate-events", "--question-uuid"], ): with self.subTest(question_uuid_arg=options): - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.get_events", return_value=self.EVENTS): with self.assertLogs() as logging_context: result = CliRunner().invoke( @@ -531,7 +528,7 @@ def test_with_question_uuid_types_and_validate_events(self): def test_with_kinds(self): """Test that the `--kinds` option is respected.""" - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.get_events", return_value=self.EVENTS[-2:-1]) as mock_get_events: result = CliRunner().invoke( octue_cli, @@ -557,7 +554,7 @@ def test_with_kinds(self): def test_with_exclude_kinds(self): """Test that the `--exclude-kinds` option is respected.""" - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.get_events", return_value=self.EVENTS[:1]) as mock_get_events: result = CliRunner().invoke( octue_cli, @@ -579,7 +576,7 @@ def test_with_exclude_kinds(self): def test_with_limit(self): """Test that the `--limit` option is respected.""" - with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATIONS[0]): + with mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=MOCK_CONFIGURATION): with mock.patch("octue.cli.get_events", return_value=self.EVENTS[:1]) as mock_get_events: result = CliRunner().invoke( octue_cli, @@ -614,10 +611,6 @@ def setUpClass(cls): namespace="testing", app_source_path=cls.python_fractal_service_path, twine_path=os.path.join(cls.python_fractal_service_path, "twine.json"), - app_configuration_path="app_configuration.json", - ) - - cls.app_configuration = AppConfiguration( configuration_values={ "width": 600, "height": 600, @@ -639,10 +632,7 @@ def test_start_command(self): """ with MultiPatcher( patches=[ - mock.patch( - "octue.cli.load_service_and_app_configuration", - return_value=(self.service_configuration, self.app_configuration), - ), + mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=self.service_configuration), mock.patch("octue.cli.Service", MockService), patch.dict(os.environ, {"OCTUE_SERVICE_REVISION_TAG": "goodbye"}), ] @@ -661,10 +651,7 @@ def test_start_command_with_revision_tag_override_when_revision_tag_environment_ """ with MultiPatcher( patches=[ - mock.patch( - "octue.cli.load_service_and_app_configuration", - return_value=(self.service_configuration, self.app_configuration), - ), + mock.patch("octue.cli.ServiceConfiguration.from_file", return_value=self.service_configuration), mock.patch("octue.cli.Service", MockService), patch.dict(os.environ, {"OCTUE_SERVICE_REVISION_TAG": "goodbye"}), ] From 6ecfd6114f80e841c81596c70ba8b6dfad5cbffe Mon Sep 17 00:00:00 2001 From: cortadocodes Date: Mon, 12 May 2025 15:48:39 +0100 Subject: [PATCH 2/3] DOC: Remove app configuration from docs --- docs/source/api.rst | 5 ----- docs/source/asking_questions.rst | 10 +++++----- docs/source/creating_apps.rst | 6 +++--- docs/source/creating_services.rst | 21 +++------------------ docs/source/running_services_locally.rst | 4 ++-- docs/source/testing_services.rst | 2 +- docs/source/troubleshooting_services.rst | 4 ++-- 7 files changed, 16 insertions(+), 36 deletions(-) diff --git a/docs/source/api.rst b/docs/source/api.rst index 52d953982..857c2c539 100644 --- a/docs/source/api.rst +++ b/docs/source/api.rst @@ -58,16 +58,11 @@ FilterDict Configuration ============= -.. autofunction:: octue.configuration.load_service_and_app_configuration Service configuration --------------------- .. autoclass:: octue.configuration.ServiceConfiguration -App configuration ------------------ -.. autoclass:: octue.configuration.AppConfiguration - Runner ====== diff --git a/docs/source/asking_questions.rst b/docs/source/asking_questions.rst index 1f579c4be..513c1e680 100644 --- a/docs/source/asking_questions.rst +++ b/docs/source/asking_questions.rst @@ -223,14 +223,14 @@ Asking a question within a service ================================== If you have :doc:`created your own Twined service ` and want to ask children questions, you can do this more easily than above. Children are accessible from the ``analysis`` object by the keys you give them in the -:ref:`app configuration ` file. For example, you can ask an ``elevation`` service a question like +:ref:`service configuration ` file. For example, you can ask an ``elevation`` service a question like this: .. code-block:: python answer, question_uuid = analysis.children["elevation"].ask(input_values={"longitude": 0, "latitude": 1}) -if your app configuration file is: +if these values are in your service configuration file: .. code-block:: json @@ -272,7 +272,7 @@ and your ``twine.json`` file includes the child keys in its ``children`` field: ] } -See the parent service's `app configuration `_ +See the parent service's `service configuration `_ and `app.py file `_ in the `child-services app template `_ to see this in action. @@ -285,14 +285,14 @@ If the child you're asking a question to has its own children (static children), IDs of the children you want it to use (dynamic children) to the :mod:`Child.ask ` method. Questions that would have gone to the static children will instead go to the dynamic children. Note that: -- You must provide the children in the same format as they're provided in the :ref:`app configuration ` +- You must provide the children in the same format as they're provided in the :ref:`service configuration ` - If you override one static child, you must override others, too - The dynamic children must have the same keys as the static children (so the child knows which service to ask which questions) - You should ensure the dynamic children you provide are compatible with and appropriate for questions from the child service -For example, if the child requires these children in its app configuration: +For example, if the child requires these children in its service configuration: .. code-block:: json diff --git a/docs/source/creating_apps.rst b/docs/source/creating_apps.rst index ba7dcdd72..ec8744e64 100644 --- a/docs/source/creating_apps.rst +++ b/docs/source/creating_apps.rst @@ -156,7 +156,7 @@ When the analysis has finished, it is automatically finalised. This means: .. note:: You can manually call :mod:`analysis.finalise ` if you want to upload - any output datasets to a different location to the one specified in the app configuration. If you do this, the + any output datasets to a different location to the one specified in the service configuration. If you do this, the analysis will not be finalised again - make sure you only call it when your output data is ready. Note that the - ``output_location`` and ``use_signed_urls_for_output_datasets`` settings in the app configuration are ignored if you - call it manually. + ``output_location`` and ``use_signed_urls_for_output_datasets`` settings in the service configuration are ignored if + you call it manually. diff --git a/docs/source/creating_services.rst b/docs/source/creating_services.rst index 34470d81a..9f59dfc45 100644 --- a/docs/source/creating_services.rst +++ b/docs/source/creating_services.rst @@ -31,7 +31,7 @@ a `requirements.txt file `_ listing all the python packages your app depends on and the version ranges that are supported. -.. _octue_yaml: +.. _service_configuration: octue.yaml ---------- @@ -51,7 +51,6 @@ octue.yaml It may also need the following key-value pairs: - ``app_source_path: `` - if your ``app.py`` file is not in the repository root - - ``app_configuration_path: `` - if your app needs an app configuration file that isn't in the repository root All paths should be relative to the repository root. Other valid entries can be found in the :mod:`ServiceConfiguration ` constructor. @@ -61,18 +60,8 @@ octue.yaml Currently, only one service can be defined per repository, but it must still appear as a list item of the "services" key. At some point, it will be possible to define multiple services in one repository. -.. _app_configuration: - -App configuration file (optional) ---------------------------------- - - .. collapse:: An optional app configuration JSON file specifying, for example, any children your app depends on - read more... - - ---- - - If your app needs any configuration, asks questions to any other Twined services, or produces output - datafiles/datasets, you will need to provide an app configuration. Currently, this must take the form of a JSON - file. It can contain the following keys: + If a service's app needs any configuration, asks questions to any other Twined services, or produces output + datafiles/datasets, you will need to provide some or all of the following values for that service: - ``configuration_values`` - ``configuration_manifest`` @@ -80,10 +69,6 @@ App configuration file (optional) - ``output_location`` - ``use_signed_urls_for_output_datasets`` - If an app configuration file is provided, its path must be specified in ``octue.yaml`` under the - "app_configuration_path" key. - - See the :mod:`AppConfiguration ` constructor for more information. Dockerfile (optional) --------------------- diff --git a/docs/source/running_services_locally.rst b/docs/source/running_services_locally.rst index 88dc5f94f..79c7faef5 100644 --- a/docs/source/running_services_locally.rst +++ b/docs/source/running_services_locally.rst @@ -18,7 +18,7 @@ Running a service once Via the CLI ----------- -1. Ensure you've created a valid :ref:`octue.yaml ` file for your service +1. Ensure you've created a valid :ref:`octue.yaml ` file for your service 2. Run: @@ -56,7 +56,7 @@ Starting a service as a child Via the CLI ----------- -1. Ensure you've created a valid :ref:`octue.yaml ` file for your service +1. Ensure you've created a valid :ref:`octue.yaml ` file for your service 2. Run: .. code-block:: shell diff --git a/docs/source/testing_services.rst b/docs/source/testing_services.rst index 6c43f3b21..9349f9dbf 100644 --- a/docs/source/testing_services.rst +++ b/docs/source/testing_services.rst @@ -145,7 +145,7 @@ To emulate your children in tests, patch the :mod:`Child ` file) set to a Google Cloud Storage path. + configuration (:ref:`octue.yaml ` file) set to a Google Cloud Storage path. Accessing diagnostics @@ -76,7 +76,7 @@ your service to fail. ) = load_test_fixture_from_diagnostics(path="path/to/downloaded/diagnostics") # You can explicitly specify your children here as shown or - # read the same information in from your app configuration file. + # read the same information in from your service configuration file. children = [ { "key": "my_child", From f3dde26f0fd0343c05acb648de33aec998975d4c Mon Sep 17 00:00:00 2001 From: cortadocodes Date: Mon, 12 May 2025 16:40:14 +0100 Subject: [PATCH 3/3] CHO: Add version compatibility data skipci --- docs/source/inter_service_compatibility.rst | 216 ++++++++++---------- octue/metadata/version_compatibilities.json | 211 ++++++++++++++----- 2 files changed, 268 insertions(+), 159 deletions(-) diff --git a/docs/source/inter_service_compatibility.rst b/docs/source/inter_service_compatibility.rst index ff6c61d50..90d8df3a0 100644 --- a/docs/source/inter_service_compatibility.rst +++ b/docs/source/inter_service_compatibility.rst @@ -12,110 +12,112 @@ display whether children's responses are compatible with the parent, just that a - ``0`` = incompatible - ``1`` = compatible -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| | 0.62.1 | 0.62.0 | 0.61.2 | 0.61.1 | 0.61.0 | 0.60.2 | 0.60.1 | 0.60.0 | 0.59.1 | 0.59.0 | 0.58.0 | 0.57.2 | 0.57.1 | 0.57.0 | 0.56.0 | 0.55.0 | 0.54.0 | 0.53.0 | 0.52.2 | 0.52.1 | 0.52.0 | 0.51.0 | 0.50.1 | 0.50.0 | 0.49.2 | 0.49.1 | 0.49.0 | 0.48.0 | 0.47.2 | 0.47.1 | 0.47.0 | 0.46.3 | 0.46.2 | 0.46.1 | 0.46.0 | 0.45.0 | 0.44.0 | 0.43.7 | 0.43.6 | 0.43.5 | 0.43.4 | 0.43.3 | 0.43.2 | 0.43.1 | 0.43.0 | 0.42.1 | 0.42.0 | 0.41.1 | 0.41.0 | 0.40.2 | 0.40.1 | 0.40.0 | -+========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+ -| 0.62.1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.62.0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.61.2 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.61.1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.61.0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.60.2 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.60.1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.60.0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.59.1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.59.0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.58.0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.57.2 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.57.1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.57.0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.56.0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.55.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.54.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.53.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.52.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.52.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.52.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.51.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.50.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.50.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.49.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.49.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.49.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.48.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.47.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.47.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.47.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.46.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.46.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.46.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.46.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.45.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.44.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.43.7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.43.6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.43.5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.43.4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.43.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.43.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.43.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.43.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.42.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.42.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.41.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.41.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.40.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.40.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ -| 0.40.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -+--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| | 0.63.0 | 0.62.1 | 0.62.0 | 0.61.2 | 0.61.1 | 0.61.0 | 0.60.2 | 0.60.1 | 0.60.0 | 0.59.1 | 0.59.0 | 0.58.0 | 0.57.2 | 0.57.1 | 0.57.0 | 0.56.0 | 0.55.0 | 0.54.0 | 0.53.0 | 0.52.2 | 0.52.1 | 0.52.0 | 0.51.0 | 0.50.1 | 0.50.0 | 0.49.2 | 0.49.1 | 0.49.0 | 0.48.0 | 0.47.2 | 0.47.1 | 0.47.0 | 0.46.3 | 0.46.2 | 0.46.1 | 0.46.0 | 0.45.0 | 0.44.0 | 0.43.7 | 0.43.6 | 0.43.5 | 0.43.4 | 0.43.3 | 0.43.2 | 0.43.1 | 0.43.0 | 0.42.1 | 0.42.0 | 0.41.1 | 0.41.0 | 0.40.2 | 0.40.1 | 0.40.0 | ++========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+==========+ +| 0.63.0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.62.1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.62.0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.61.2 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.61.1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.61.0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.60.2 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.60.1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.60.0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.59.1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.59.0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.58.0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.57.2 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.57.1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.57.0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.56.0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.55.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.54.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.53.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.52.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.52.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.52.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.51.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.50.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.50.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.49.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.49.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.49.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.48.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.47.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.47.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.47.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.46.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.46.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.46.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.46.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.45.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.44.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.43.7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.43.6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.43.5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.43.4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.43.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.43.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.43.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.43.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.42.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.42.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.41.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.41.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.40.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.40.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ +| 0.40.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ++--------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+----------+ diff --git a/octue/metadata/version_compatibilities.json b/octue/metadata/version_compatibilities.json index b72e420ec..f00b0d0fb 100644 --- a/octue/metadata/version_compatibilities.json +++ b/octue/metadata/version_compatibilities.json @@ -51,7 +51,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.40.1": { "0.40.1": true, @@ -105,7 +106,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.40.2": { "0.41.0": true, @@ -159,7 +161,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.41.0": { "0.41.0": true, @@ -213,7 +216,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.41.1": { "0.41.1": true, @@ -267,7 +271,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.42.0": { "0.42.0": true, @@ -321,7 +326,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.42.1": { "0.43.2": true, @@ -375,7 +381,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.43.0": { "0.43.2": true, @@ -429,7 +436,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.43.1": { "0.43.2": true, @@ -483,7 +491,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.43.2": { "0.43.2": true, @@ -537,7 +546,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.43.3": { "0.43.3": true, @@ -591,7 +601,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.43.4": { "0.43.4": true, @@ -645,7 +656,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.43.5": { "0.43.5": true, @@ -699,7 +711,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.43.6": { "0.43.6": true, @@ -753,7 +766,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.43.7": { "0.43.7": true, @@ -807,7 +821,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.44.0": { "0.44.0": true, @@ -861,7 +876,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.45.0": { "0.45.0": true, @@ -915,7 +931,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.46.0": { "0.46.0": true, @@ -969,7 +986,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.46.1": { "0.46.1": true, @@ -1023,7 +1041,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.46.2": { "0.46.2": true, @@ -1077,7 +1096,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.46.3": { "0.46.3": true, @@ -1131,7 +1151,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.47.0": { "0.47.0": true, @@ -1185,7 +1206,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.47.1": { "0.47.1": true, @@ -1239,7 +1261,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.47.2": { "0.47.2": true, @@ -1293,7 +1316,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.48.0": { "0.48.0": true, @@ -1347,7 +1371,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.49.0": { "0.49.1": true, @@ -1401,7 +1426,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.49.1": { "0.49.1": true, @@ -1455,7 +1481,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.49.2": { "0.49.2": true, @@ -1509,7 +1536,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.50.0": { "0.50.0": true, @@ -1563,7 +1591,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.50.1": { "0.51.0": false, @@ -1617,7 +1646,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.51.0": { "0.51.0": true, @@ -1671,7 +1701,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.52.0": { "0.51.0": true, @@ -1725,7 +1756,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.52.1": { "0.51.0": true, @@ -1779,7 +1811,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.52.2": { "0.51.0": true, @@ -1833,7 +1866,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.53.0": { "0.51.0": false, @@ -1887,7 +1921,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.54.0": { "0.51.0": false, @@ -1941,7 +1976,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.55.0": { "0.51.0": false, @@ -1995,7 +2031,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.56.0": { "0.51.0": false, @@ -2049,7 +2086,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.57.0": { "0.51.0": false, @@ -2103,7 +2141,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.57.1": { "0.51.0": false, @@ -2157,7 +2196,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.57.2": { "0.51.0": false, @@ -2211,7 +2251,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.58.0": { "0.51.0": false, @@ -2265,7 +2306,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.59.0": { "0.51.0": false, @@ -2319,7 +2361,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.59.1": { "0.51.0": false, @@ -2373,7 +2416,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.60.0": { "0.51.0": false, @@ -2427,7 +2471,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.60.1": { "0.51.0": false, @@ -2481,7 +2526,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.60.2": { "0.51.0": false, @@ -2535,7 +2581,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.61.0": { "0.51.0": false, @@ -2589,7 +2636,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.61.1": { "0.51.0": false, @@ -2643,7 +2691,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.61.2": { "0.51.0": false, @@ -2697,7 +2746,8 @@ "0.61.1": true, "0.61.2": true, "0.62.0": false, - "0.62.1": false + "0.62.1": false, + "0.63.0": false }, "0.62.0": { "0.51.0": false, @@ -2751,7 +2801,8 @@ "0.61.1": false, "0.61.2": false, "0.62.0": true, - "0.62.1": true + "0.62.1": true, + "0.63.0": true }, "0.62.1": { "0.51.0": false, @@ -2805,6 +2856,62 @@ "0.61.1": false, "0.61.2": false, "0.62.0": true, - "0.62.1": true + "0.62.1": true, + "0.63.0": true + }, + "0.63.0": { + "0.51.0": false, + "0.50.1": false, + "0.50.0": false, + "0.49.2": false, + "0.49.1": false, + "0.49.0": false, + "0.48.0": false, + "0.47.2": false, + "0.47.1": false, + "0.47.0": false, + "0.46.3": false, + "0.46.2": false, + "0.46.1": false, + "0.46.0": false, + "0.45.0": false, + "0.44.0": false, + "0.43.7": false, + "0.43.6": false, + "0.43.5": false, + "0.43.4": false, + "0.43.3": false, + "0.43.2": false, + "0.43.1": false, + "0.43.0": false, + "0.42.1": false, + "0.42.0": false, + "0.41.1": false, + "0.41.0": false, + "0.40.2": false, + "0.40.1": false, + "0.40.0": false, + "0.52.0": false, + "0.52.1": false, + "0.52.2": false, + "0.53.0": false, + "0.54.0": false, + "0.55.0": false, + "0.56.0": false, + "0.57.0": false, + "0.57.1": false, + "0.57.2": false, + "0.58.0": false, + "0.59.0": false, + "0.59.1": false, + "0.60.0": false, + "0.60.1": false, + "0.60.2": false, + "0.61.0": false, + "0.61.1": false, + "0.61.2": false, + "0.62.0": true, + "0.62.1": true, + "0.63.0": true } }