dotflow 0.15.0.dev4__tar.gz → 0.15.0.dev5__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.
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/PKG-INFO +2 -2
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/README.md +1 -1
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/__init__.py +1 -1
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/task.py +1 -1
- dotflow-0.15.0.dev5/dotflow/providers/server_default.py +23 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/pyproject.toml +2 -2
- dotflow-0.15.0.dev4/dotflow/providers/server_default.py +0 -112
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/LICENSE +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/abc/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/abc/file.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/abc/flow.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/abc/http.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/abc/log.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/abc/metrics.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/abc/notify.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/abc/scheduler.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/abc/server.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/abc/storage.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/abc/tcp.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/abc/tracer.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/command.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/commands/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/commands/cloud.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/commands/deploy.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/commands/init.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/commands/log.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/commands/schedule.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/commands/start.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/commands/storage.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/setup.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/validators/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cli/validators/start.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/alibaba/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/alibaba/constants.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/alibaba/deployers/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/alibaba/deployers/fc.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/alibaba/deployers/fc_scheduled.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/alibaba/services/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/alibaba/services/cr.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/constants.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/deployers/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/deployers/base_lambda.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/deployers/ecs.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/deployers/ecs_scheduled.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/deployers/lambda_.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/deployers/lambda_api.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/deployers/lambda_s3.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/deployers/lambda_sqs.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/schedule.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/services/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/services/cloudwatch.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/services/ecr.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/services/iam.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/aws/services/s3.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/core.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/gcp/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/gcp/constants.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/gcp/deployers/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/gcp/deployers/cloudrun.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/gcp/services/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/gcp/services/apis.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/gcp/services/artifact_registry.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/gcp/services/gcs.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/github/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/github/constants.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/github/deployers/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/cloud/github/deployers/actions.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/action.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/config.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/context.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/decorators/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/decorators/time.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/dotflow.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/engine.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/exception.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/module.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/serializers/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/serializers/task.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/serializers/transport.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/serializers/workflow.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/types/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/types/execution.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/types/overlap.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/types/status.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/types/storage.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/types/workflow.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/core/workflow.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/logging.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/main.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/log_default.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/log_opentelemetry.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/log_sentry.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/metrics_default.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/metrics_opentelemetry.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/notify_default.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/notify_discord.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/notify_telegram.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/scheduler_cron.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/scheduler_default.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/storage_default.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/storage_file.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/storage_gcs.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/storage_s3.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/tracer_default.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/tracer_opentelemetry.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/providers/tracer_sentry.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/settings.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/types.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/utils/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/utils/basic_functions.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/utils/error_handler.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev5}/dotflow/utils/tools.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dotflow
|
|
3
|
-
Version: 0.15.0.
|
|
3
|
+
Version: 0.15.0.dev5
|
|
4
4
|
Summary: 🎲 Dotflow turns an idea into flow! Lightweight Python library for execution pipelines with retry, parallel, cron and async support.
|
|
5
5
|
License: MIT License
|
|
6
6
|
|
|
@@ -90,7 +90,7 @@ Description-Content-Type: text/markdown
|
|
|
90
90
|
[](https://pypi.org/project/dotflow/)
|
|
91
91
|
[](https://github.com/dotflow-io/dotflow)
|
|
92
92
|
|
|
93
|
-
[Website](https://dotflow.io) · [Documentation](https://dotflow-io.github.io/dotflow/) · [PyPI](https://pypi.org/project/dotflow/)
|
|
93
|
+
[Website](https://www.cloud.dotflow.io) · [Documentation](https://dotflow-io.github.io/dotflow/) · [PyPI](https://pypi.org/project/dotflow/)
|
|
94
94
|
|
|
95
95
|
</div>
|
|
96
96
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
[](https://pypi.org/project/dotflow/)
|
|
10
10
|
[](https://github.com/dotflow-io/dotflow)
|
|
11
11
|
|
|
12
|
-
[Website](https://dotflow.io) · [Documentation](https://dotflow-io.github.io/dotflow/) · [PyPI](https://pypi.org/project/dotflow/)
|
|
12
|
+
[Website](https://www.cloud.dotflow.io) · [Documentation](https://dotflow-io.github.io/dotflow/) · [PyPI](https://pypi.org/project/dotflow/)
|
|
13
13
|
|
|
14
14
|
</div>
|
|
15
15
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""ServerDefault — no-op server provider."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from dotflow.abc.server import Server
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ServerDefault(Server):
|
|
11
|
+
"""Default Server implementation (no-op)."""
|
|
12
|
+
|
|
13
|
+
def create_workflow(self, workflow: Any) -> None:
|
|
14
|
+
pass
|
|
15
|
+
|
|
16
|
+
def update_workflow(self, workflow: Any, status: str = "") -> None:
|
|
17
|
+
pass
|
|
18
|
+
|
|
19
|
+
def create_task(self, task: Any) -> None:
|
|
20
|
+
pass
|
|
21
|
+
|
|
22
|
+
def update_task(self, task: Any) -> None:
|
|
23
|
+
pass
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "dotflow"
|
|
3
|
-
version = "0.15.0.
|
|
3
|
+
version = "0.15.0.dev5"
|
|
4
4
|
authors = [
|
|
5
5
|
{ name="Fernando Celmer", email="email@fernandocelmer.com" },
|
|
6
6
|
]
|
|
@@ -66,7 +66,7 @@ sentry = ["sentry-sdk"]
|
|
|
66
66
|
|
|
67
67
|
[tool.poetry]
|
|
68
68
|
name = "dotflow"
|
|
69
|
-
version = "0.15.0.
|
|
69
|
+
version = "0.15.0.dev5"
|
|
70
70
|
description = "🎲 Dotflow turns an idea into flow! Lightweight Python library for execution pipelines with retry, parallel, cron and async support."
|
|
71
71
|
authors = ["Fernando Celmer <email@fernandocelmer.com>"]
|
|
72
72
|
readme = "README.md"
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
"""ServerDefault
|
|
2
|
-
|
|
3
|
-
Default implementation that communicates with a
|
|
4
|
-
dotflow-api server.
|
|
5
|
-
|
|
6
|
-
Args:
|
|
7
|
-
base_url (str): Base URL of the API.
|
|
8
|
-
user_token (str): API token (X-User-Token header).
|
|
9
|
-
timeout (float): HTTP request timeout in seconds.
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
from __future__ import annotations
|
|
13
|
-
|
|
14
|
-
from typing import Any
|
|
15
|
-
|
|
16
|
-
from requests import patch as http_patch
|
|
17
|
-
from requests import post as http_post
|
|
18
|
-
|
|
19
|
-
from dotflow.abc.server import Server
|
|
20
|
-
from dotflow.logging import logger
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class ServerDefault(Server):
|
|
24
|
-
"""Default Server implementation (HTTP client)."""
|
|
25
|
-
|
|
26
|
-
def __init__(
|
|
27
|
-
self,
|
|
28
|
-
base_url: str = "",
|
|
29
|
-
user_token: str = "",
|
|
30
|
-
timeout: float = 5.0,
|
|
31
|
-
) -> None:
|
|
32
|
-
self.base_url = base_url.rstrip("/")
|
|
33
|
-
self.user_token = user_token
|
|
34
|
-
self.timeout = timeout
|
|
35
|
-
self.enabled = bool(self.base_url and self.user_token)
|
|
36
|
-
|
|
37
|
-
def _headers(self) -> dict[str, str]:
|
|
38
|
-
return {
|
|
39
|
-
"Content-Type": "application/json",
|
|
40
|
-
"X-User-Token": self.user_token,
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
def _request(self, method, url, payload=None):
|
|
44
|
-
try:
|
|
45
|
-
response = method(
|
|
46
|
-
url=url,
|
|
47
|
-
headers=self._headers(),
|
|
48
|
-
json=payload or {},
|
|
49
|
-
timeout=self.timeout,
|
|
50
|
-
)
|
|
51
|
-
response.raise_for_status()
|
|
52
|
-
except Exception as error:
|
|
53
|
-
logger.error(
|
|
54
|
-
"Server %s failed: %s",
|
|
55
|
-
url,
|
|
56
|
-
str(error),
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
def create_workflow(self, workflow: Any) -> None:
|
|
60
|
-
"""Create workflow record (synchronous)."""
|
|
61
|
-
if not self.enabled:
|
|
62
|
-
return
|
|
63
|
-
|
|
64
|
-
self._request(
|
|
65
|
-
http_post,
|
|
66
|
-
f"{self.base_url}/workflows",
|
|
67
|
-
{
|
|
68
|
-
"id": f"{workflow}",
|
|
69
|
-
"execution_mode": "sequential",
|
|
70
|
-
"keep_going": False,
|
|
71
|
-
},
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
def update_workflow(self, workflow: Any, status: str = "") -> None:
|
|
75
|
-
"""Update workflow status (synchronous)."""
|
|
76
|
-
if not self.enabled:
|
|
77
|
-
return
|
|
78
|
-
|
|
79
|
-
self._request(
|
|
80
|
-
http_patch,
|
|
81
|
-
f"{self.base_url}/workflows/{workflow}",
|
|
82
|
-
{"status": status},
|
|
83
|
-
)
|
|
84
|
-
|
|
85
|
-
def create_task(self, task: Any) -> None:
|
|
86
|
-
"""Create a task under a workflow (synchronous)."""
|
|
87
|
-
if not self.enabled:
|
|
88
|
-
return
|
|
89
|
-
|
|
90
|
-
payload = {
|
|
91
|
-
"id": task.task_id,
|
|
92
|
-
"initial_context": (task.initial_context.storage),
|
|
93
|
-
"group_name": (task.group_name or "default"),
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
self._request(
|
|
97
|
-
http_post,
|
|
98
|
-
f"{self.base_url}/workflows/{task.workflow_id}/tasks",
|
|
99
|
-
payload,
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
def update_task(self, task: Any) -> None:
|
|
103
|
-
"""Update task data (synchronous)."""
|
|
104
|
-
if not self.enabled:
|
|
105
|
-
return
|
|
106
|
-
|
|
107
|
-
self._request(
|
|
108
|
-
http_patch,
|
|
109
|
-
f"{self.base_url}/workflows/"
|
|
110
|
-
f"{task.workflow_id}/tasks/{task.task_id}",
|
|
111
|
-
task.result(),
|
|
112
|
-
)
|
|
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
|
|
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
|
|
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
|