stkit 17.0.1__tar.gz → 17.0.2__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.
- {stkit-17.0.1 → stkit-17.0.2}/CHANGELOG.md +8 -0
- {stkit-17.0.1 → stkit-17.0.2}/PKG-INFO +1 -1
- {stkit-17.0.1 → stkit-17.0.2}/pyproject.toml +1 -1
- {stkit-17.0.1 → stkit-17.0.2}/stk/__init__.py +1 -1
- {stkit-17.0.1 → stkit-17.0.2}/stk/checks.py +3 -2
- {stkit-17.0.1 → stkit-17.0.2}/stk/cli/main.py +13 -2
- stkit-17.0.2/tests/test_app_index.py +43 -0
- {stkit-17.0.1 → stkit-17.0.2}/.gitignore +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/LICENSE +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/README.md +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/SECURITY.md +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/.env-sample +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/.gitignore +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/README.md +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/minimal/__init__.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/minimal/app.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/minimal/migrations/364232ae77d5_add_note.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/minimal/note/__init__.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/minimal/note/models.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/minimal/note/templates/note/index.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/minimal/note/views.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/minimal/settings.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/minimal/templates/layout.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/pyproject.toml +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/tests/__init__.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/tests/test_app.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/examples/minimal/uv.lock +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/__main__.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/agent_login.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/app.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/cli/__init__.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/cli/agent.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/cli/base.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/cli/database.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/cli/develop.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/cli/doctor.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/cli/reports.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/cli/smoke.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/cli/users.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/cli/watch.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/extensions.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/migrations/__init__.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/migrations/env.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/migrations/script.py.mako +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/migrations/versions/stk_0001_initial_schema.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/portal/views.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/public/__init__.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/public/models.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/public/views.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/__init__.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/CLAUDE.md +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/Dockerfile +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/README.md +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/__app__/__init__.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/__app__/app.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/__app__/settings.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/claude/skills/stk-api/SKILL.md +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/claude/skills/stk-blueprint/SKILL.md +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/claude/skills/stk-deploy/SKILL.md +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/claude/skills/stk-lessons/SKILL.md +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/claude/skills/stk-migrate/SKILL.md +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/docker-compose.yml +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/dockerignore +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/env-sample +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/github/workflows/checks.yml +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/gitignore +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/nginx/nginx.conf +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/nginx/stk.conf +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/postgres/init-db.sh +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/pyproject.toml +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/tests/__init__.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/app/tests/test_app.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/generator.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/scaffold/templates.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/security.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/settings.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/shell.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/VERSIONS.txt +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/css/app.css +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/css/layout.css +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/css/vuetify.min.css +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/icons/fonts/tabler-icons.woff2 +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/icons/tabler-icons.min.css +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/img/auth-bg.webp +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/img/favicon.ico +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/img/stk.svg +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/js/axios.min.js +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/js/components/NotificationDropdown.js +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/js/components/ThemeSwitcher.js +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/js/components/TransitionExpand.js +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/js/components/VerticalNavGroup.js +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/js/components/VerticalNavLink.js +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/js/components/VerticalNavSectionTitle.js +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/js/components/index.js +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/js/config.js +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/js/vue.min.js +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/js/vuetify.min.js +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/static/robots.txt +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/tasks/__init__.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/401.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/404.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/500.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/_brand.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/auth_layout.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/cms/activities.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/cms/roles.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/cms/users.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/dashboard.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/index.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/layout.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/login-layout.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/_macros.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/_messages.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/change_password.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/confirm_email.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/email/change_notice.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/email/change_notice.txt +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/email/confirmation_instructions.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/email/confirmation_instructions.txt +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/email/login_instructions.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/email/login_instructions.txt +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/email/reset_instructions.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/email/reset_instructions.txt +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/email/reset_notice.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/email/reset_notice.txt +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/email/welcome.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/email/welcome.txt +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/forgot_password.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/login_user.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/mf_recovery.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/mf_recovery_codes.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/register_user.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/reset_password.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/send_confirmation.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/send_login.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/two_factor_select.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/two_factor_setup.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/two_factor_verify_code.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/wan_register.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/wan_signin.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/templates/security/wan_verify.html +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/user/__init__.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/user/forms.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/user/models.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/user/views.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/utils/email.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/utils/ratelimit.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/stk/websocket.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_agent_operability.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_branding.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_builder_ux.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_cli.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_composition.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_csrf_exempt.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_error_handler.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_migration_drift.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_production_security.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_scaffolder.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_security_compatibility.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_shell.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_smoke_pages.py +0 -0
- {stkit-17.0.1 → stkit-17.0.2}/tests/test_static_versioning.py +0 -0
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v17.0.2 (2026-10-25)
|
|
4
|
+
|
|
5
|
+
No migration required.
|
|
6
|
+
|
|
7
|
+
- `stk verify` follows redirects from `/` and checks that the page it lands on answers 200, so an app whose `/` sends people to sign-in or to its own home passes. A redirect to a broken page still fails.
|
|
8
|
+
- Replacing stk's landing view is documented: `app.view_functions["public.index"] = home` in an extension's `init_app` (Architecture, Public).
|
|
9
|
+
- `STK_CLI_SECTIONS` groups an app's own commands in `stk --help`, after stk's sections, instead of listing them all under Other.
|
|
10
|
+
|
|
3
11
|
## v17.0.1 (2026-10-25)
|
|
4
12
|
|
|
5
13
|
No migration required.
|
|
@@ -286,10 +286,11 @@ def check_admin_reset_route(app):
|
|
|
286
286
|
)
|
|
287
287
|
|
|
288
288
|
|
|
289
|
-
@check("GET /
|
|
289
|
+
@check("GET / answers 200, after any redirects")
|
|
290
290
|
async def check_http_index(app):
|
|
291
|
+
# An app may send / to its sign-in or home page; what it lands on must work.
|
|
291
292
|
client = app.test_client()
|
|
292
|
-
response = await client.get("/")
|
|
293
|
+
response = await client.get("/", follow_redirects=True)
|
|
293
294
|
assert response.status_code == 200, f"Expected 200, got {response.status_code}"
|
|
294
295
|
|
|
295
296
|
|
|
@@ -10,7 +10,7 @@ import inspect
|
|
|
10
10
|
from importlib.metadata import version
|
|
11
11
|
|
|
12
12
|
import click
|
|
13
|
-
from quart.cli import QuartGroup
|
|
13
|
+
from quart.cli import NoAppException, QuartGroup, ScriptInfo
|
|
14
14
|
|
|
15
15
|
import stk.cli as cli
|
|
16
16
|
from stk.cli.base import load_app
|
|
@@ -44,7 +44,7 @@ class StkGroup(QuartGroup):
|
|
|
44
44
|
if command is not None and not command.hidden:
|
|
45
45
|
commands[name] = command
|
|
46
46
|
|
|
47
|
-
for title, names in SECTIONS:
|
|
47
|
+
for title, names in [*SECTIONS, *_app_sections(ctx)]:
|
|
48
48
|
rows = [
|
|
49
49
|
(name, commands.pop(name).get_short_help_str(limit=60))
|
|
50
50
|
for name in names
|
|
@@ -64,6 +64,17 @@ class StkGroup(QuartGroup):
|
|
|
64
64
|
)
|
|
65
65
|
|
|
66
66
|
|
|
67
|
+
def _app_sections(ctx):
|
|
68
|
+
"""The app's own help sections, `STK_CLI_SECTIONS`; none outside an app."""
|
|
69
|
+
try:
|
|
70
|
+
app = ctx.ensure_object(ScriptInfo).load_app()
|
|
71
|
+
except NoAppException:
|
|
72
|
+
return []
|
|
73
|
+
return [
|
|
74
|
+
(title, list(names)) for title, names in app.config.get("STK_CLI_SECTIONS", ())
|
|
75
|
+
]
|
|
76
|
+
|
|
77
|
+
|
|
67
78
|
def _create_app(**_kwargs):
|
|
68
79
|
return load_app()
|
|
69
80
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""An app may replace stk's landing page, and verify judges where / lands."""
|
|
2
|
+
|
|
3
|
+
import unittest
|
|
4
|
+
from types import SimpleNamespace
|
|
5
|
+
|
|
6
|
+
from quart import redirect
|
|
7
|
+
|
|
8
|
+
from stk.app import Stk
|
|
9
|
+
from stk.checks import check_http_index
|
|
10
|
+
from stk.cli.main import _app_sections
|
|
11
|
+
from stk.settings import TestingConfig
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class AppIndexTest(unittest.IsolatedAsyncioTestCase):
|
|
15
|
+
async def test_index_can_be_replaced_and_a_redirect_passes_the_check(self):
|
|
16
|
+
app = Stk(__name__, config=TestingConfig)
|
|
17
|
+
|
|
18
|
+
async def home():
|
|
19
|
+
return redirect("/login")
|
|
20
|
+
|
|
21
|
+
app.view_functions["public.index"] = home
|
|
22
|
+
response = await app.test_client().get("/")
|
|
23
|
+
self.assertEqual(response.status_code, 302)
|
|
24
|
+
self.assertTrue(await check_http_index(app))
|
|
25
|
+
|
|
26
|
+
async def test_a_redirect_to_a_broken_page_fails_the_check(self):
|
|
27
|
+
app = Stk(__name__, config=TestingConfig)
|
|
28
|
+
|
|
29
|
+
async def home():
|
|
30
|
+
return redirect("/nowhere")
|
|
31
|
+
|
|
32
|
+
app.view_functions["public.index"] = home
|
|
33
|
+
self.assertFalse(await check_http_index(app))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class AppHelpSectionsTest(unittest.TestCase):
|
|
37
|
+
def test_app_sections_come_from_config(self):
|
|
38
|
+
app = Stk(__name__, config=TestingConfig)
|
|
39
|
+
app.config["STK_CLI_SECTIONS"] = [("Runs", ("worker", "enrich"))]
|
|
40
|
+
ctx = SimpleNamespace(
|
|
41
|
+
ensure_object=lambda _: SimpleNamespace(load_app=lambda: app)
|
|
42
|
+
)
|
|
43
|
+
self.assertEqual(_app_sections(ctx), [("Runs", ["worker", "enrich"])])
|
|
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
|
|
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
|