devstuff 2.2.0__tar.gz → 2.2.1__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.
- {devstuff-2.2.0 → devstuff-2.2.1}/CHANGELOG.md +6 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/PKG-INFO +1 -1
- {devstuff-2.2.0 → devstuff-2.2.1}/pyproject.toml +1 -1
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/generic.py +7 -1
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/tools.yaml +13 -1
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_generic.py +32 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/uv.lock +1 -1
- {devstuff-2.2.0 → devstuff-2.2.1}/.claude/skills/run-stuff/SKILL.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/.claude/skills/run-stuff/smoke.sh +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/.github/workflows/bump.yml +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/.github/workflows/ci.yml +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/.github/workflows/publish.yml +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/.github/workflows/test-installs.yml +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/.gitignore +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/CLAUDE.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/README.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/dev/Dockerfile +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/dev/Dockerfile.ci +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/dev/Makefile +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/dev/docker-compose.yml +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/devstuff +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/README.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/agent/development-plan.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/agent/specifications.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/agent/stack-decisions.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/ansible-config/development-plan.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/ansible-config/specifications.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/ansible-config/stack-decisions.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/bat-config/development-plan.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/bat-config/specifications.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/bat-config/stack-decisions.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/commitizen-config/development-plan.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/commitizen-config/specifications.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/commitizen-config/stack-decisions.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/docker-config/development-plan.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/docker-config/specifications.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/docker-config/stack-decisions.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/lazygit-config/development-plan.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/lazygit-config/specifications.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/lazygit-config/stack-decisions.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/precommit-config/development-plan.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/precommit-config/specifications.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/precommit-config/stack-decisions.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/starship-config/development-plan.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/starship-config/specifications.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/starship-config/stack-decisions.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/verbose-mode/development-plan.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/verbose-mode/specifications.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/docs/specs/verbose-mode/stack-decisions.md +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/install.sh +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/__main__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/approval.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/bridges.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/catalog.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/completion.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/config.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/loop.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/ollama.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/preflight.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/primitives.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/registry.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/sandbox.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/session.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/transcript.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent/wizard.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent_tools.schema.json +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/agent_tools.yaml +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/base.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/catalog.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/cli.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/add_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/agent_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/catalog_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/configure_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/delete_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/docs_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/doctor_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/functions_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/help_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/install_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/list_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/remove_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/run_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/skills_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/commands/update_cmd.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/ansible/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/ansible/detect.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/ansible/model.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/ansible/render.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/ansible/validate.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/ansible/wizard.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/bat/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/bat/detect.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/bat/model.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/bat/preview.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/bat/render.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/bat/wizard.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/commitizen/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/commitizen/detect.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/commitizen/model.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/commitizen/render.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/commitizen/validate.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/commitizen/wizard.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/docker/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/docker/detect.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/docker/model.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/docker/render.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/docker/validate.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/docker/wizard.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/lazygit/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/lazygit/detect.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/lazygit/model.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/lazygit/render.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/lazygit/validate.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/lazygit/wizard.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/precommit/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/precommit/detect.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/precommit/model.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/precommit/render.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/precommit/validate.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/precommit/wizard.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/starship/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/starship/fonts.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/starship/model.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/starship/preview.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/starship/render.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/configure/starship/wizard.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/doctor.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/function_runner.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/functions.schema.json +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/functions.yaml +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/functions_catalog.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/functions_registry.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/registry.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/ui.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/src/dev_setup/verbose.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/integration/__init__.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/integration/conftest.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/integration/test_agent_smoke.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/integration/test_agent_tui.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/integration/test_commitizen_config.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/integration/test_tools.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_agent.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_agent_completion.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_agent_loop.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_agent_sandbox.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_agent_tools.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_agent_wizard.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_catalog.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_configure_ansible.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_configure_bat.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_configure_commitizen.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_configure_docker.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_configure_lazygit.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_configure_precommit.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_configure_starship.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_doctor.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_functions.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_registry.py +0 -0
- {devstuff-2.2.0 → devstuff-2.2.1}/tests/test_verbose.py +0 -0
|
@@ -730,7 +730,13 @@ def _check_cmd_installed(cmd: str, *, install_type: str = "") -> bool:
|
|
|
730
730
|
).returncode == 0
|
|
731
731
|
except Exception:
|
|
732
732
|
return False
|
|
733
|
+
# Same nvm sourcing as the simple-command branch above. `bash -lc` reads ~/.profile,
|
|
734
|
+
# whose sourcing of ~/.bashrc (where nvm's init lives) returns early when the shell
|
|
735
|
+
# is non-interactive — so an nvm-installed binary is never on PATH here. Without
|
|
736
|
+
# this, any npm-type tool with a multi-word check_cmd reports "not installed"
|
|
737
|
+
# immediately after installing successfully.
|
|
738
|
+
prefix = f"{_npm_init()} && " if install_type == "npm" else ""
|
|
733
739
|
try:
|
|
734
|
-
return _probe(["bash", "-lc", cmd], capture_output=True).returncode == 0
|
|
740
|
+
return _probe(["bash", "-lc", f"{prefix}{cmd}"], capture_output=True).returncode == 0
|
|
735
741
|
except Exception:
|
|
736
742
|
return False
|
|
@@ -706,7 +706,11 @@ tools:
|
|
|
706
706
|
category: ai-tools
|
|
707
707
|
type: npm
|
|
708
708
|
npm_name: llm-checker
|
|
709
|
-
|
|
709
|
+
# Multi-word on purpose: a "complex" check_cmd is what makes get_version() fall
|
|
710
|
+
# through to the nvm-sourcing probe, which is the only way to read the version of
|
|
711
|
+
# an nvm-installed binary. `hw-detect` also answered "is it installed", but did a
|
|
712
|
+
# full hardware scan (shelling out to lspci) on every `devstuff list` to do it.
|
|
713
|
+
check_cmd: llm-checker --version
|
|
710
714
|
help_cmd: llm-checker --help
|
|
711
715
|
docs_url: https://github.com/signerless/llm-checker
|
|
712
716
|
requires:
|
|
@@ -722,6 +726,14 @@ tools:
|
|
|
722
726
|
docs_url: https://lmstudio.ai/docs/cli
|
|
723
727
|
install_script: |
|
|
724
728
|
set -euo pipefail
|
|
729
|
+
# LM Studio's installer hard-fails on a system without libatomic: it prints the
|
|
730
|
+
# apt line to run and exits 1 rather than installing it. That is the state of a
|
|
731
|
+
# minimal Ubuntu (including this repo's CI image), so install it here — every
|
|
732
|
+
# other prerequisite the installer needs is already present on a base system.
|
|
733
|
+
if ! ldconfig -p 2>/dev/null | grep -q 'libatomic\.so'; then
|
|
734
|
+
sudo apt-get update -q
|
|
735
|
+
sudo apt-get install -y libatomic1
|
|
736
|
+
fi
|
|
725
737
|
curl -fsSL https://lmstudio.ai/install.sh | bash
|
|
726
738
|
remove_script: |
|
|
727
739
|
set -euo pipefail
|
|
@@ -159,3 +159,35 @@ def test_download_script_skips_check_when_no_sha256():
|
|
|
159
159
|
)
|
|
160
160
|
def test_is_simple_command(cmd, expected):
|
|
161
161
|
assert _is_simple_command(cmd) is expected
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
# -- check_cmd probing ---------------------------------------------------------------
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def _probed_script(run_mock) -> str:
|
|
168
|
+
"""The shell text passed to `bash -lc` by the last _check_cmd_installed probe."""
|
|
169
|
+
return run_mock.call_args[0][0][2]
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
@pytest.mark.parametrize("cmd", ["llm-checker --version", "llm-checker"])
|
|
173
|
+
def test_npm_check_cmd_sources_nvm_whether_simple_or_complex(cmd):
|
|
174
|
+
"""`bash -lc` never loads nvm on its own: it reads ~/.profile, whose sourcing of
|
|
175
|
+
~/.bashrc returns early for a non-interactive shell. Without the explicit source,
|
|
176
|
+
an npm-type tool reports "not installed" right after installing successfully."""
|
|
177
|
+
with mock.patch("dev_setup.generic.shutil.which", return_value=None), \
|
|
178
|
+
mock.patch("subprocess.run") as run:
|
|
179
|
+
run.return_value.returncode = 0
|
|
180
|
+
assert generic._check_cmd_installed(cmd, install_type="npm")
|
|
181
|
+
assert ".nvm/nvm.sh" in _probed_script(run)
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def test_non_npm_check_cmd_does_not_pay_for_nvm():
|
|
185
|
+
with mock.patch("dev_setup.generic.shutil.which", return_value=None), \
|
|
186
|
+
mock.patch("subprocess.run") as run:
|
|
187
|
+
run.return_value.returncode = 0
|
|
188
|
+
generic._check_cmd_installed("test -d ~/.somewhere", install_type="bash")
|
|
189
|
+
assert ".nvm/nvm.sh" not in _probed_script(run)
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def test_complex_check_cmd_still_reports_a_failing_command_as_not_installed():
|
|
193
|
+
assert not generic._check_cmd_installed("false --version", install_type="npm")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|