bilinc 2.3.1__tar.gz → 2.3.3__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.
- {bilinc-2.3.1/src/bilinc.egg-info → bilinc-2.3.3}/PKG-INFO +21 -4
- {bilinc-2.3.1 → bilinc-2.3.3}/README.md +20 -3
- {bilinc-2.3.1 → bilinc-2.3.3}/pyproject.toml +1 -1
- {bilinc-2.3.1 → bilinc-2.3.3}/src/bilinc/__init__.py +2 -2
- {bilinc-2.3.1 → bilinc-2.3.3}/src/bilinc/client.py +3 -3
- {bilinc-2.3.1 → bilinc-2.3.3/src/bilinc.egg-info}/PKG-INFO +21 -4
- {bilinc-2.3.1 → bilinc-2.3.3}/tests/test_cloud_only_package.py +18 -18
- {bilinc-2.3.1 → bilinc-2.3.3}/LICENSE +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/MANIFEST.in +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/setup.cfg +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/setup.py +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/src/bilinc/cli/__init__.py +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/src/bilinc/cli/__main__.py +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/src/bilinc/cli/login.py +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/src/bilinc/cli/main.py +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/src/bilinc/cloud_mcp.py +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/src/bilinc.egg-info/SOURCES.txt +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/src/bilinc.egg-info/dependency_links.txt +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/src/bilinc.egg-info/entry_points.txt +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/src/bilinc.egg-info/requires.txt +0 -0
- {bilinc-2.3.1 → bilinc-2.3.3}/src/bilinc.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bilinc
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.3
|
|
4
4
|
Summary: Cloud-only memory SDK and MCP adapter for autonomous agents
|
|
5
5
|
Author: Bilinc Team
|
|
6
6
|
License-Expression: BUSL-1.1
|
|
@@ -56,7 +56,7 @@ Dynamic: license-file
|
|
|
56
56
|
|
|
57
57
|
Retrieval answers *"what is similar to this?"*. Long-running agents also need to answer *"who wrote this state, was it verified, did it contradict what we already knew, and can we undo it?"* — that is the layer Bilinc provides.
|
|
58
58
|
|
|
59
|
-
Bilinc 2.3.
|
|
59
|
+
Bilinc 2.3.3 on PyPI is the public cloud-only package: a thin Python SDK, CLI, and MCP adapter for Bilinc Cloud. It does not ship the local StatePlane, storage backends, eval, observability, integrations, or server runtime internals.
|
|
60
60
|
|
|
61
61
|
> **Frozen regression receipt** — LongMemEval-s cleaned retrieval fixture, 500 questions: **Hit@5 98.0%**, **NDCG@5 0.913**, no LLM reranker, no paid API. This is an isolated retrieval guardrail, not a current hosted SLA, end-to-end agent score, or competitor ranking — see [Benchmark receipt](#benchmark-receipt) for the full scope and qualification.
|
|
62
62
|
|
|
@@ -93,13 +93,30 @@ The fastest path is `pip install -U bilinc`, `bilinc login`, then `bilinc quickt
|
|
|
93
93
|
| --- | --- |
|
|
94
94
|
| A hosted memory API for an agent or MCP client | The public cloud-only package from PyPI |
|
|
95
95
|
| Local StatePlane, SQLite/PostgreSQL, benchmarks, or internals | This repository and the [architecture guide](docs/architecture.md) |
|
|
96
|
-
| A hosted MCP connection | The [MCP setup guide](https://bilinc.space/docs/mcp) |
|
|
96
|
+
| A hosted MCP connection without a Python install | The [remote MCP setup guide](https://bilinc.space/docs/remote-mcp) |
|
|
97
97
|
|
|
98
98
|
The public package is intentionally smaller than this repository. It does not bundle the internal StatePlane or local
|
|
99
99
|
storage runtime.
|
|
100
100
|
|
|
101
101
|
## Start in 60 Seconds
|
|
102
102
|
|
|
103
|
+
### Claude connector, without installing Python
|
|
104
|
+
|
|
105
|
+
Open **Customize → Connectors → Add custom connector** in Claude, name it Bilinc,
|
|
106
|
+
and paste `https://mcp.bilinc.space/mcp`. Sign in and choose read-only or read and
|
|
107
|
+
write access. The setup guide is [bilinc.space/mcp](https://bilinc.space/mcp).
|
|
108
|
+
|
|
109
|
+
For the remote connector in Claude Code:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
claude mcp add --transport http --scope user bilinc https://mcp.bilinc.space/mcp
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Then run `/mcp` and authenticate. The remote connector has ten tools; the Python
|
|
116
|
+
stdio adapter below has eight. Both connect to hosted Bilinc memory.
|
|
117
|
+
|
|
118
|
+
### SDK and CLI
|
|
119
|
+
|
|
103
120
|
```bash
|
|
104
121
|
pip install -U bilinc
|
|
105
122
|
bilinc login
|
|
@@ -119,7 +136,7 @@ Cloud status check.
|
|
|
119
136
|
To reproduce this release exactly:
|
|
120
137
|
|
|
121
138
|
```bash
|
|
122
|
-
pip install -U bilinc==2.3.
|
|
139
|
+
pip install -U bilinc==2.3.3
|
|
123
140
|
```
|
|
124
141
|
|
|
125
142
|
If you prefer a browser guide, open https://bilinc.space/install and follow the
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
Retrieval answers *"what is similar to this?"*. Long-running agents also need to answer *"who wrote this state, was it verified, did it contradict what we already knew, and can we undo it?"* — that is the layer Bilinc provides.
|
|
16
16
|
|
|
17
|
-
Bilinc 2.3.
|
|
17
|
+
Bilinc 2.3.3 on PyPI is the public cloud-only package: a thin Python SDK, CLI, and MCP adapter for Bilinc Cloud. It does not ship the local StatePlane, storage backends, eval, observability, integrations, or server runtime internals.
|
|
18
18
|
|
|
19
19
|
> **Frozen regression receipt** — LongMemEval-s cleaned retrieval fixture, 500 questions: **Hit@5 98.0%**, **NDCG@5 0.913**, no LLM reranker, no paid API. This is an isolated retrieval guardrail, not a current hosted SLA, end-to-end agent score, or competitor ranking — see [Benchmark receipt](#benchmark-receipt) for the full scope and qualification.
|
|
20
20
|
|
|
@@ -51,13 +51,30 @@ The fastest path is `pip install -U bilinc`, `bilinc login`, then `bilinc quickt
|
|
|
51
51
|
| --- | --- |
|
|
52
52
|
| A hosted memory API for an agent or MCP client | The public cloud-only package from PyPI |
|
|
53
53
|
| Local StatePlane, SQLite/PostgreSQL, benchmarks, or internals | This repository and the [architecture guide](docs/architecture.md) |
|
|
54
|
-
| A hosted MCP connection | The [MCP setup guide](https://bilinc.space/docs/mcp) |
|
|
54
|
+
| A hosted MCP connection without a Python install | The [remote MCP setup guide](https://bilinc.space/docs/remote-mcp) |
|
|
55
55
|
|
|
56
56
|
The public package is intentionally smaller than this repository. It does not bundle the internal StatePlane or local
|
|
57
57
|
storage runtime.
|
|
58
58
|
|
|
59
59
|
## Start in 60 Seconds
|
|
60
60
|
|
|
61
|
+
### Claude connector, without installing Python
|
|
62
|
+
|
|
63
|
+
Open **Customize → Connectors → Add custom connector** in Claude, name it Bilinc,
|
|
64
|
+
and paste `https://mcp.bilinc.space/mcp`. Sign in and choose read-only or read and
|
|
65
|
+
write access. The setup guide is [bilinc.space/mcp](https://bilinc.space/mcp).
|
|
66
|
+
|
|
67
|
+
For the remote connector in Claude Code:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
claude mcp add --transport http --scope user bilinc https://mcp.bilinc.space/mcp
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Then run `/mcp` and authenticate. The remote connector has ten tools; the Python
|
|
74
|
+
stdio adapter below has eight. Both connect to hosted Bilinc memory.
|
|
75
|
+
|
|
76
|
+
### SDK and CLI
|
|
77
|
+
|
|
61
78
|
```bash
|
|
62
79
|
pip install -U bilinc
|
|
63
80
|
bilinc login
|
|
@@ -77,7 +94,7 @@ Cloud status check.
|
|
|
77
94
|
To reproduce this release exactly:
|
|
78
95
|
|
|
79
96
|
```bash
|
|
80
|
-
pip install -U bilinc==2.3.
|
|
97
|
+
pip install -U bilinc==2.3.3
|
|
81
98
|
```
|
|
82
99
|
|
|
83
100
|
If you prefer a browser guide, open https://bilinc.space/install and follow the
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""Bilinc 2.3.
|
|
1
|
+
"""Bilinc 2.3.3: cloud-only SDK for agent memory."""
|
|
2
2
|
|
|
3
3
|
from bilinc.client import (
|
|
4
4
|
ACTIVATION_SIGNUP_URL,
|
|
@@ -25,7 +25,7 @@ from bilinc.client import (
|
|
|
25
25
|
CloudClient,
|
|
26
26
|
)
|
|
27
27
|
|
|
28
|
-
__version__ = "2.3.
|
|
28
|
+
__version__ = "2.3.3"
|
|
29
29
|
version = __version__
|
|
30
30
|
|
|
31
31
|
__all__ = [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Bilinc Cloud client.
|
|
2
2
|
|
|
3
|
-
Bilinc 2.3.
|
|
3
|
+
Bilinc 2.3.3 is cloud-only: the PyPI package is a thin SDK and MCP adapter for
|
|
4
4
|
https://bilinc.space. Local self-hosted StatePlane internals are no longer
|
|
5
5
|
shipped in the public package.
|
|
6
6
|
"""
|
|
@@ -18,10 +18,10 @@ from dataclasses import dataclass
|
|
|
18
18
|
from pathlib import Path
|
|
19
19
|
from typing import Any, Callable
|
|
20
20
|
|
|
21
|
-
__version__ = "2.3.
|
|
21
|
+
__version__ = "2.3.3"
|
|
22
22
|
DEFAULT_BASE_URL = "https://bilinc.space"
|
|
23
23
|
SIGNUP_URL = "https://bilinc.space/signup"
|
|
24
|
-
ACTIVATION_CAMPAIGN = "
|
|
24
|
+
ACTIVATION_CAMPAIGN = "activation_2_3_3"
|
|
25
25
|
ACTIVATION_SIGNUP_URL = (
|
|
26
26
|
f"{SIGNUP_URL}?utm_source=pypi&utm_medium=cli&utm_campaign={ACTIVATION_CAMPAIGN}"
|
|
27
27
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bilinc
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.3
|
|
4
4
|
Summary: Cloud-only memory SDK and MCP adapter for autonomous agents
|
|
5
5
|
Author: Bilinc Team
|
|
6
6
|
License-Expression: BUSL-1.1
|
|
@@ -56,7 +56,7 @@ Dynamic: license-file
|
|
|
56
56
|
|
|
57
57
|
Retrieval answers *"what is similar to this?"*. Long-running agents also need to answer *"who wrote this state, was it verified, did it contradict what we already knew, and can we undo it?"* — that is the layer Bilinc provides.
|
|
58
58
|
|
|
59
|
-
Bilinc 2.3.
|
|
59
|
+
Bilinc 2.3.3 on PyPI is the public cloud-only package: a thin Python SDK, CLI, and MCP adapter for Bilinc Cloud. It does not ship the local StatePlane, storage backends, eval, observability, integrations, or server runtime internals.
|
|
60
60
|
|
|
61
61
|
> **Frozen regression receipt** — LongMemEval-s cleaned retrieval fixture, 500 questions: **Hit@5 98.0%**, **NDCG@5 0.913**, no LLM reranker, no paid API. This is an isolated retrieval guardrail, not a current hosted SLA, end-to-end agent score, or competitor ranking — see [Benchmark receipt](#benchmark-receipt) for the full scope and qualification.
|
|
62
62
|
|
|
@@ -93,13 +93,30 @@ The fastest path is `pip install -U bilinc`, `bilinc login`, then `bilinc quickt
|
|
|
93
93
|
| --- | --- |
|
|
94
94
|
| A hosted memory API for an agent or MCP client | The public cloud-only package from PyPI |
|
|
95
95
|
| Local StatePlane, SQLite/PostgreSQL, benchmarks, or internals | This repository and the [architecture guide](docs/architecture.md) |
|
|
96
|
-
| A hosted MCP connection | The [MCP setup guide](https://bilinc.space/docs/mcp) |
|
|
96
|
+
| A hosted MCP connection without a Python install | The [remote MCP setup guide](https://bilinc.space/docs/remote-mcp) |
|
|
97
97
|
|
|
98
98
|
The public package is intentionally smaller than this repository. It does not bundle the internal StatePlane or local
|
|
99
99
|
storage runtime.
|
|
100
100
|
|
|
101
101
|
## Start in 60 Seconds
|
|
102
102
|
|
|
103
|
+
### Claude connector, without installing Python
|
|
104
|
+
|
|
105
|
+
Open **Customize → Connectors → Add custom connector** in Claude, name it Bilinc,
|
|
106
|
+
and paste `https://mcp.bilinc.space/mcp`. Sign in and choose read-only or read and
|
|
107
|
+
write access. The setup guide is [bilinc.space/mcp](https://bilinc.space/mcp).
|
|
108
|
+
|
|
109
|
+
For the remote connector in Claude Code:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
claude mcp add --transport http --scope user bilinc https://mcp.bilinc.space/mcp
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Then run `/mcp` and authenticate. The remote connector has ten tools; the Python
|
|
116
|
+
stdio adapter below has eight. Both connect to hosted Bilinc memory.
|
|
117
|
+
|
|
118
|
+
### SDK and CLI
|
|
119
|
+
|
|
103
120
|
```bash
|
|
104
121
|
pip install -U bilinc
|
|
105
122
|
bilinc login
|
|
@@ -119,7 +136,7 @@ Cloud status check.
|
|
|
119
136
|
To reproduce this release exactly:
|
|
120
137
|
|
|
121
138
|
```bash
|
|
122
|
-
pip install -U bilinc==2.3.
|
|
139
|
+
pip install -U bilinc==2.3.3
|
|
123
140
|
```
|
|
124
141
|
|
|
125
142
|
If you prefer a browser guide, open https://bilinc.space/install and follow the
|
|
@@ -12,9 +12,9 @@ import pytest
|
|
|
12
12
|
def test_public_api_is_cloud_only():
|
|
13
13
|
import bilinc
|
|
14
14
|
|
|
15
|
-
assert bilinc.__version__ == "2.3.
|
|
16
|
-
assert bilinc.version == "2.3.
|
|
17
|
-
assert "utm_campaign=
|
|
15
|
+
assert bilinc.__version__ == "2.3.3"
|
|
16
|
+
assert bilinc.version == "2.3.3"
|
|
17
|
+
assert "utm_campaign=activation_2_3_3" in bilinc.ACTIVATION_SIGNUP_URL
|
|
18
18
|
assert hasattr(bilinc, "Bilinc")
|
|
19
19
|
assert hasattr(bilinc, "CloudClient")
|
|
20
20
|
assert not hasattr(bilinc, "StatePlane")
|
|
@@ -75,7 +75,7 @@ def test_cloud_client_normalizes_base_url():
|
|
|
75
75
|
from bilinc import CloudClient
|
|
76
76
|
|
|
77
77
|
transport = RecordingTransport({"status": "ok"})
|
|
78
|
-
client = CloudClient(api_key="
|
|
78
|
+
client = CloudClient(api_key="bil_live_example", base_url="https://bilinc.space///", transport=transport)
|
|
79
79
|
|
|
80
80
|
client.status()
|
|
81
81
|
|
|
@@ -87,7 +87,7 @@ def test_cloud_client_base_url_can_come_from_env(monkeypatch):
|
|
|
87
87
|
|
|
88
88
|
monkeypatch.setenv("BILINC_BASE_URL", "http://127.0.0.1:9999/")
|
|
89
89
|
transport = RecordingTransport({"status": "ok"})
|
|
90
|
-
client = CloudClient(api_key="
|
|
90
|
+
client = CloudClient(api_key="bil_live_example", transport=transport)
|
|
91
91
|
|
|
92
92
|
client.status()
|
|
93
93
|
|
|
@@ -98,7 +98,7 @@ def test_cloud_client_commit_posts_to_hosted_api():
|
|
|
98
98
|
from bilinc import CloudClient
|
|
99
99
|
|
|
100
100
|
transport = RecordingTransport({"success": True, "id": "mem_123"})
|
|
101
|
-
client = CloudClient(api_key="
|
|
101
|
+
client = CloudClient(api_key="bil_live_example", base_url="https://bilinc.space", transport=transport)
|
|
102
102
|
|
|
103
103
|
result = client.commit("project.status", {"phase": "trial"}, memory_type="semantic", importance=0.8)
|
|
104
104
|
|
|
@@ -108,11 +108,11 @@ def test_cloud_client_commit_posts_to_hosted_api():
|
|
|
108
108
|
"method": "POST",
|
|
109
109
|
"url": "https://bilinc.space/api/cloud/memory/commit",
|
|
110
110
|
"headers": {
|
|
111
|
-
"Authorization": "Bearer
|
|
111
|
+
"Authorization": "Bearer bil_live_example",
|
|
112
112
|
"Content-Type": "application/json",
|
|
113
|
-
"User-Agent": "bilinc-python/2.3.
|
|
113
|
+
"User-Agent": "bilinc-python/2.3.3",
|
|
114
114
|
"X-Bilinc-Client": "python-sdk",
|
|
115
|
-
"X-Bilinc-Client-Version": "2.3.
|
|
115
|
+
"X-Bilinc-Client-Version": "2.3.3",
|
|
116
116
|
},
|
|
117
117
|
"body": json.dumps(
|
|
118
118
|
{
|
|
@@ -133,7 +133,7 @@ def test_cloud_client_recall_posts_to_hosted_api():
|
|
|
133
133
|
from bilinc import CloudClient
|
|
134
134
|
|
|
135
135
|
transport = RecordingTransport({"results": [{"key": "project.status"}]})
|
|
136
|
-
client = CloudClient(api_key="
|
|
136
|
+
client = CloudClient(api_key="bil_live_example", transport=transport)
|
|
137
137
|
|
|
138
138
|
result = client.recall("trial status", profile="balanced", limit=5)
|
|
139
139
|
|
|
@@ -148,7 +148,7 @@ def test_cloud_client_recall_forwards_point_in_time_timestamp():
|
|
|
148
148
|
from bilinc import CloudClient
|
|
149
149
|
|
|
150
150
|
transport = RecordingTransport({"results": []})
|
|
151
|
-
client = CloudClient(api_key="
|
|
151
|
+
client = CloudClient(api_key="bil_live_example", transport=transport)
|
|
152
152
|
|
|
153
153
|
client.recall(
|
|
154
154
|
"deployment target",
|
|
@@ -167,7 +167,7 @@ def test_cloud_client_recall_forwards_point_in_time_timestamp():
|
|
|
167
167
|
def test_cloud_client_rejects_an_unbounded_point_in_time_timestamp():
|
|
168
168
|
from bilinc import BilincValidationError, CloudClient
|
|
169
169
|
|
|
170
|
-
client = CloudClient(api_key="
|
|
170
|
+
client = CloudClient(api_key="bil_live_example", transport=RecordingTransport({}))
|
|
171
171
|
|
|
172
172
|
with pytest.raises(BilincValidationError, match="query_timestamp"):
|
|
173
173
|
client.recall("q", query_timestamp="x" * 65)
|
|
@@ -177,7 +177,7 @@ def test_cloud_client_status_reads_the_authenticated_status_endpoint():
|
|
|
177
177
|
from bilinc import CloudClient
|
|
178
178
|
|
|
179
179
|
transport = RecordingTransport({"status": "ok", "plan": {"key": "pro"}})
|
|
180
|
-
client = CloudClient(api_key="
|
|
180
|
+
client = CloudClient(api_key="bil_live_example", transport=transport)
|
|
181
181
|
|
|
182
182
|
result = client.status()
|
|
183
183
|
|
|
@@ -187,8 +187,8 @@ def test_cloud_client_status_reads_the_authenticated_status_endpoint():
|
|
|
187
187
|
"method": "GET",
|
|
188
188
|
"url": "https://bilinc.space/api/cloud/status",
|
|
189
189
|
"headers": {
|
|
190
|
-
"Authorization": "Bearer
|
|
191
|
-
"User-Agent": "bilinc-python/2.3.
|
|
190
|
+
"Authorization": "Bearer bil_live_example",
|
|
191
|
+
"User-Agent": "bilinc-python/2.3.3",
|
|
192
192
|
},
|
|
193
193
|
"body": None,
|
|
194
194
|
"timeout": 30.0,
|
|
@@ -200,7 +200,7 @@ def test_cloud_client_health_stays_on_the_public_service_endpoint():
|
|
|
200
200
|
from bilinc import CloudClient
|
|
201
201
|
|
|
202
202
|
transport = RecordingTransport({"status": "ok", "mode": "live_cloud"})
|
|
203
|
-
client = CloudClient(api_key="
|
|
203
|
+
client = CloudClient(api_key="bil_live_example", transport=transport)
|
|
204
204
|
|
|
205
205
|
result = client.health()
|
|
206
206
|
|
|
@@ -261,7 +261,7 @@ def test_cli_signup_and_missing_key_failure(monkeypatch, capsys):
|
|
|
261
261
|
assert main(["signup"]) == 0
|
|
262
262
|
signup_out = capsys.readouterr()
|
|
263
263
|
assert "https://bilinc.space/signup" in signup_out.out
|
|
264
|
-
assert "
|
|
264
|
+
assert "activation_2_3_3" in signup_out.out
|
|
265
265
|
assert "quicktest" in signup_out.out
|
|
266
266
|
|
|
267
267
|
assert main(["commit", "--key", "smoke_key", "--value", "hello"]) == 1
|
|
@@ -305,7 +305,7 @@ def test_cli_start_login_doctor_quicktest_and_mcp_config(monkeypatch, capsys, tm
|
|
|
305
305
|
assert "bilinc login --api-key <key>" in start_out.out
|
|
306
306
|
assert "bilinc quicktest" in start_out.out
|
|
307
307
|
assert "install_guide" in start_out.out
|
|
308
|
-
assert "
|
|
308
|
+
assert "activation_2_3_3" in start_out.out
|
|
309
309
|
|
|
310
310
|
assert cli_main.main(["login", "--api-key", "bil_live_cli_test"]) == 0
|
|
311
311
|
login_out = capsys.readouterr()
|
|
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
|