digitalhub-runtime-python 0.8.0b6__tar.gz → 0.8.0b7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/PKG-INFO +1 -1
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/run/python_run/entity.py +79 -47
- digitalhub_runtime_python-0.8.0b7/digitalhub_runtime_python/entities/run/python_run/status.py +25 -0
- digitalhub_runtime_python-0.8.0b7/digitalhub_runtime_python/entities/run/python_run/utils.py +34 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/runtimes/runtime.py +0 -1
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python.egg-info/PKG-INFO +1 -1
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python.egg-info/SOURCES.txt +1 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/pyproject.toml +2 -2
- digitalhub_runtime_python-0.8.0b6/digitalhub_runtime_python/entities/run/python_run/status.py +0 -40
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/LICENSE.txt +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/README.md +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/_base/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/_base/runtime_entity/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/_base/runtime_entity/builder.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/function/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/function/python/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/function/python/builder.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/function/python/entity.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/function/python/models.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/function/python/spec.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/function/python/status.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/run/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/run/python_run/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/run/python_run/builder.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/run/python_run/spec.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_build/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_build/builder.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_build/entity.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_build/spec.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_build/status.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_job/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_job/builder.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_job/entity.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_job/models.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_job/spec.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_job/status.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_serve/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_serve/builder.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_serve/entity.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_serve/spec.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/entities/task/python_serve/status.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/runtimes/__init__.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/runtimes/builder.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/utils/configuration.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/utils/env.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/utils/inputs.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/utils/nuclio_configuration.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/utils/outputs.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python/utils/utils.py +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python.egg-info/dependency_links.txt +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python.egg-info/requires.txt +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/digitalhub_runtime_python.egg-info/top_level.txt +0 -0
- {digitalhub_runtime_python-0.8.0b6 → digitalhub_runtime_python-0.8.0b7}/setup.cfg +0 -0
|
@@ -4,8 +4,11 @@ import typing
|
|
|
4
4
|
from typing import Any
|
|
5
5
|
|
|
6
6
|
import requests
|
|
7
|
+
from digitalhub_runtime_python.entities.run.python_run.utils import get_getter_for_material
|
|
7
8
|
|
|
8
9
|
from digitalhub.entities.run._base.entity import Run
|
|
10
|
+
from digitalhub.entities.utils.utils import get_entity_type_from_key
|
|
11
|
+
from digitalhub.utils.exceptions import EntityError
|
|
9
12
|
|
|
10
13
|
if typing.TYPE_CHECKING:
|
|
11
14
|
from digitalhub_runtime_python.entities.run.python_run.spec import RunSpecPythonRun
|
|
@@ -46,7 +49,7 @@ class RunPythonRun(Run):
|
|
|
46
49
|
self.refresh()
|
|
47
50
|
self.spec.inputs = self.inputs(as_dict=True)
|
|
48
51
|
|
|
49
|
-
def inputs(self, as_dict: bool = False) ->
|
|
52
|
+
def inputs(self, as_dict: bool = False) -> dict:
|
|
50
53
|
"""
|
|
51
54
|
Get inputs passed in spec as objects or as dictionaries.
|
|
52
55
|
|
|
@@ -57,41 +60,54 @@ class RunPythonRun(Run):
|
|
|
57
60
|
|
|
58
61
|
Returns
|
|
59
62
|
-------
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
dict
|
|
64
|
+
Inputs.
|
|
62
65
|
"""
|
|
63
|
-
|
|
66
|
+
inputs = {}
|
|
67
|
+
if self.inputs is None:
|
|
68
|
+
return inputs
|
|
64
69
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
for parameter, key in self.spec.inputs.items():
|
|
71
|
+
entity_type = get_entity_type_from_key(key)
|
|
72
|
+
entity = get_getter_for_material(entity_type)(key)
|
|
73
|
+
if as_dict:
|
|
74
|
+
entity = entity.to_dict()
|
|
75
|
+
inputs[parameter] = entity
|
|
68
76
|
|
|
69
|
-
|
|
70
|
-
-------
|
|
71
|
-
dict
|
|
72
|
-
Results.
|
|
73
|
-
"""
|
|
74
|
-
return self.status.get_results()
|
|
77
|
+
return inputs
|
|
75
78
|
|
|
76
|
-
def
|
|
79
|
+
def output(
|
|
80
|
+
self,
|
|
81
|
+
output_name: str,
|
|
82
|
+
as_key: bool = False,
|
|
83
|
+
as_dict: bool = False,
|
|
84
|
+
) -> MaterialEntity | dict | str | None:
|
|
77
85
|
"""
|
|
78
|
-
Get
|
|
86
|
+
Get run's output by name.
|
|
79
87
|
|
|
80
88
|
Parameters
|
|
81
89
|
----------
|
|
82
|
-
|
|
90
|
+
output_name : str
|
|
83
91
|
Key of the result.
|
|
92
|
+
as_key : bool
|
|
93
|
+
If True, return result as key.
|
|
94
|
+
as_dict : bool
|
|
95
|
+
If True, return result as dictionary.
|
|
84
96
|
|
|
85
97
|
Returns
|
|
86
98
|
-------
|
|
87
|
-
|
|
99
|
+
Entity | dict | str | None
|
|
88
100
|
Result.
|
|
89
101
|
"""
|
|
90
|
-
return self.
|
|
102
|
+
return self.outputs(as_key=as_key, as_dict=as_dict).get(output_name)
|
|
91
103
|
|
|
92
|
-
def outputs(
|
|
104
|
+
def outputs(
|
|
105
|
+
self,
|
|
106
|
+
as_key: bool = False,
|
|
107
|
+
as_dict: bool = False,
|
|
108
|
+
) -> MaterialEntity | dict | str | None:
|
|
93
109
|
"""
|
|
94
|
-
Get run
|
|
110
|
+
Get run's outputs.
|
|
95
111
|
|
|
96
112
|
Parameters
|
|
97
113
|
----------
|
|
@@ -105,48 +121,66 @@ class RunPythonRun(Run):
|
|
|
105
121
|
dict
|
|
106
122
|
List of output objects.
|
|
107
123
|
"""
|
|
108
|
-
|
|
124
|
+
outputs = {}
|
|
125
|
+
if self.status.outputs is None:
|
|
126
|
+
return outputs
|
|
127
|
+
|
|
128
|
+
for parameter, key in self.status.outputs.items():
|
|
129
|
+
entity_type = get_entity_type_from_key(key)
|
|
130
|
+
entity = get_getter_for_material(entity_type)(key)
|
|
131
|
+
if as_key:
|
|
132
|
+
entity = entity.key
|
|
133
|
+
if as_dict:
|
|
134
|
+
entity = entity.to_dict()
|
|
135
|
+
outputs[parameter] = entity
|
|
109
136
|
|
|
110
|
-
|
|
137
|
+
return outputs
|
|
138
|
+
|
|
139
|
+
def result(self, result_name: str) -> Any:
|
|
111
140
|
"""
|
|
112
|
-
Get
|
|
141
|
+
Get result by name.
|
|
113
142
|
|
|
114
143
|
Parameters
|
|
115
144
|
----------
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
as_key : bool
|
|
119
|
-
If True, return result as key.
|
|
120
|
-
as_dict : bool
|
|
121
|
-
If True, return result as dictionary.
|
|
145
|
+
result_name : str
|
|
146
|
+
Name of the result.
|
|
122
147
|
|
|
123
148
|
Returns
|
|
124
149
|
-------
|
|
125
|
-
|
|
126
|
-
|
|
150
|
+
Any
|
|
151
|
+
The result.
|
|
127
152
|
"""
|
|
128
|
-
return self.
|
|
153
|
+
return self.results().get(result_name)
|
|
129
154
|
|
|
130
|
-
def
|
|
155
|
+
def results(self) -> dict:
|
|
131
156
|
"""
|
|
132
|
-
Get
|
|
157
|
+
Get results.
|
|
133
158
|
|
|
134
159
|
Returns
|
|
135
160
|
-------
|
|
136
161
|
dict
|
|
137
|
-
|
|
162
|
+
The results.
|
|
138
163
|
"""
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
return self.status.
|
|
164
|
+
if self.status.results is None:
|
|
165
|
+
return {}
|
|
166
|
+
return self.status.results
|
|
142
167
|
|
|
143
|
-
def invoke(
|
|
168
|
+
def invoke(
|
|
169
|
+
self,
|
|
170
|
+
method: str = "POST",
|
|
171
|
+
url: str | None = None,
|
|
172
|
+
**kwargs,
|
|
173
|
+
) -> requests.Response:
|
|
144
174
|
"""
|
|
145
175
|
Invoke run.
|
|
146
176
|
|
|
147
177
|
Parameters
|
|
148
178
|
----------
|
|
149
|
-
|
|
179
|
+
method : str
|
|
180
|
+
Method of the request.
|
|
181
|
+
url : str
|
|
182
|
+
URL of the request.
|
|
183
|
+
**kwargs : dict
|
|
150
184
|
Keyword arguments to pass to the request.
|
|
151
185
|
|
|
152
186
|
Returns
|
|
@@ -154,10 +188,8 @@ class RunPythonRun(Run):
|
|
|
154
188
|
requests.Response
|
|
155
189
|
Response from service.
|
|
156
190
|
"""
|
|
157
|
-
if
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
kwargs = {}
|
|
163
|
-
return self.status.invoke(local, **kwargs)
|
|
191
|
+
if self._context().local:
|
|
192
|
+
raise EntityError("Invoke not supported locally.")
|
|
193
|
+
if url is None:
|
|
194
|
+
url = f"http://{self.status.service.get('url')}"
|
|
195
|
+
return requests.request(method=method, url=url, **kwargs)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.run._base.status import RunStatus
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class RunStatusPythonRun(RunStatus):
|
|
7
|
+
"""
|
|
8
|
+
RunStatusPythonRun status.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
def __init__(
|
|
12
|
+
self,
|
|
13
|
+
state: str,
|
|
14
|
+
message: str | None = None,
|
|
15
|
+
transitions: list[dict] | None = None,
|
|
16
|
+
k8s: dict | None = None,
|
|
17
|
+
outputs: dict | None = None,
|
|
18
|
+
results: dict | None = None,
|
|
19
|
+
service: dict | None = None,
|
|
20
|
+
**kwargs,
|
|
21
|
+
) -> None:
|
|
22
|
+
super().__init__(state, message, transitions, k8s, **kwargs)
|
|
23
|
+
self.outputs = outputs
|
|
24
|
+
self.results = results
|
|
25
|
+
self.service = service
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Callable
|
|
4
|
+
|
|
5
|
+
from digitalhub.entities.artifact.crud import get_artifact
|
|
6
|
+
from digitalhub.entities.dataitem.crud import get_dataitem
|
|
7
|
+
from digitalhub.entities.model.crud import get_model
|
|
8
|
+
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def get_getter_for_material(entity_type: str) -> Callable:
|
|
12
|
+
"""
|
|
13
|
+
Return appropriate getter function.
|
|
14
|
+
|
|
15
|
+
Parameters
|
|
16
|
+
----------
|
|
17
|
+
entity_type : str
|
|
18
|
+
The entity type.
|
|
19
|
+
|
|
20
|
+
Returns
|
|
21
|
+
-------
|
|
22
|
+
Callable
|
|
23
|
+
The getter function.
|
|
24
|
+
"""
|
|
25
|
+
if entity_type == EntityTypes.ARTIFACT.value:
|
|
26
|
+
return get_artifact
|
|
27
|
+
|
|
28
|
+
if entity_type == EntityTypes.DATAITEM.value:
|
|
29
|
+
return get_dataitem
|
|
30
|
+
|
|
31
|
+
if entity_type == EntityTypes.MODEL.value:
|
|
32
|
+
return get_model
|
|
33
|
+
|
|
34
|
+
raise ValueError(f"Unhandled entity type: {entity_type}")
|
|
@@ -24,6 +24,7 @@ digitalhub_runtime_python/entities/run/python_run/builder.py
|
|
|
24
24
|
digitalhub_runtime_python/entities/run/python_run/entity.py
|
|
25
25
|
digitalhub_runtime_python/entities/run/python_run/spec.py
|
|
26
26
|
digitalhub_runtime_python/entities/run/python_run/status.py
|
|
27
|
+
digitalhub_runtime_python/entities/run/python_run/utils.py
|
|
27
28
|
digitalhub_runtime_python/entities/task/__init__.py
|
|
28
29
|
digitalhub_runtime_python/entities/task/python_build/__init__.py
|
|
29
30
|
digitalhub_runtime_python/entities/task/python_build/builder.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "digitalhub-runtime-python"
|
|
7
|
-
version = "0.8.
|
|
7
|
+
version = "0.8.0b7"
|
|
8
8
|
description = "Python runtime for DHCore"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [
|
|
@@ -40,7 +40,7 @@ line-length = 120
|
|
|
40
40
|
convention = "numpy"
|
|
41
41
|
|
|
42
42
|
[tool.bumpver]
|
|
43
|
-
current_version = "0.8.
|
|
43
|
+
current_version = "0.8.0b7"
|
|
44
44
|
version_pattern = "MAJOR.MINOR.PATCH[PYTAGNUM]"
|
|
45
45
|
commit_message = "Bump version {old_version} -> {new_version}"
|
|
46
46
|
commit = false
|
digitalhub_runtime_python-0.8.0b6/digitalhub_runtime_python/entities/run/python_run/status.py
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import requests
|
|
4
|
-
|
|
5
|
-
from digitalhub.entities.run._base.status import RunStatus
|
|
6
|
-
from digitalhub.utils.exceptions import EntityError
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class RunStatusPythonRun(RunStatus):
|
|
10
|
-
"""
|
|
11
|
-
RunStatusPythonRun status.
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
def invoke(self, local: bool, **kwargs) -> requests.Response:
|
|
15
|
-
"""
|
|
16
|
-
Invoke running process.
|
|
17
|
-
|
|
18
|
-
Parameters
|
|
19
|
-
----------
|
|
20
|
-
kwargs
|
|
21
|
-
Keyword arguments to pass to the request.
|
|
22
|
-
|
|
23
|
-
Returns
|
|
24
|
-
-------
|
|
25
|
-
requests.Response
|
|
26
|
-
Response from service.
|
|
27
|
-
"""
|
|
28
|
-
try:
|
|
29
|
-
if local:
|
|
30
|
-
raise EntityError("Invoke not supported locally.")
|
|
31
|
-
|
|
32
|
-
method = kwargs.pop("method", "POST")
|
|
33
|
-
url = kwargs.get("url", "http://" + self.service.get("url"))
|
|
34
|
-
|
|
35
|
-
response = requests.request(method=method, url=url, **kwargs)
|
|
36
|
-
response.raise_for_status()
|
|
37
|
-
return response
|
|
38
|
-
except Exception as e:
|
|
39
|
-
msg = f"Something got wrong during model serving. Exception: {e.__class__}. Error: {e.args}"
|
|
40
|
-
raise EntityError(msg)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|