windcode 0.1.0__tar.gz → 0.1.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.
- {windcode-0.1.0 → windcode-0.1.1}/PKG-INFO +1 -1
- {windcode-0.1.0 → windcode-0.1.1}/pyproject.toml +1 -1
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/__init__.py +1 -1
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/app.py +16 -3
- {windcode-0.1.0 → windcode-0.1.1}/uv.lock +1 -1
- {windcode-0.1.0 → windcode-0.1.1}/.github/workflows/publish.yml +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/.gitignore +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/.python-version +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/.windcode/config.toml.example +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/.windcode/skills/code-review/SKILL.md +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/.windcode/skills/code-review/agents/openai.yaml +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/AGENTS.md +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/LICENSE +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/README.md +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/assets/image.png +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/assets/image1.png +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/assets/image2.png +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/assets/image3.png +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/assets/image4.png +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/examples/01_stateful_chat.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/examples/02_custom_tool.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/examples/03_multi_agent.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/examples/04_mcp_tools.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/examples/05_skill.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/examples/06_stream_and_cancel.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/examples/07_bash_approval.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/examples/README.md +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/examples/skills/release_notes/SKILL.md +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/__main__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/auth/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/auth/store.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/cli.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/config/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/config/loader.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/config/models.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/config/writer.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/context/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/context/compactor.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/context/estimator.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/context/truncation.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/domain/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/domain/errors.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/domain/events.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/domain/messages.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/domain/models.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/domain/subagents.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/domain/tools.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/commands.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/discovery.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/events.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/hooks/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/hooks/dispatcher.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/hooks/executor.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/hooks/loader.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/hooks/models.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/mcp/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/mcp/adapter.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/mcp/catalog.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/mcp/client.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/mcp/runtime.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/mcp/tools.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/models.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/paths.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/plugins/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/plugins/installer.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/plugins/manifest.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/runtime.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/service.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/skills/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/skills/loader.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/skills/parser.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/skills/tools.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/snapshot.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/extensions/state.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/instructions/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/instructions/loader.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/memory/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/memory/extraction.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/memory/models.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/memory/refiner.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/memory/security.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/memory/service.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/memory/store.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/observability/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/observability/redaction.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/observability/trace.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/policy/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/policy/engine.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/policy/models.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/providers/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/providers/_utils.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/providers/anthropic.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/providers/base.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/providers/catalog.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/providers/errors.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/providers/openai_compat.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/providers/openai_responses.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/providers/registry.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/control.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/event_bus.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/loop.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/prompts.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/report.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/retry.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/scheduler.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/subagents/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/subagents/approvals.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/subagents/budgets.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/subagents/coordinator.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/subagents/factory.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/subagents/roles.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/runtime/subagents/verification.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/sandbox/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/sandbox/bwrap.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/sdk.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/sessions/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/sessions/artifacts.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/sessions/models.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/sessions/store.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/sessions/tree.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/apply_patch.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/ask_user.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/builtins.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/edit_file.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/filesystem.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/glob.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/grep.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/memory.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/read_file.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/registry.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/shell.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/subagents/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/subagents/cancel.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/subagents/integrate.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/subagents/list.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/subagents/spawn.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/subagents/wait.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tools/write_file.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/commands.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/permission_display.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/styles.tcss +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/approval.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/command_menu.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/extensions.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/input.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/memory.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/messages.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/models.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/question.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/sessions.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/status.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/subagents.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/tools.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/tui/widgets/welcome.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/types.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/worktrees/__init__.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/worktrees/git.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/worktrees/manager.py +0 -0
- {windcode-0.1.0 → windcode-0.1.1}/src/windcode/worktrees/models.py +0 -0
|
@@ -122,6 +122,13 @@ class WindcodeApp(App[None]):
|
|
|
122
122
|
return provider.model
|
|
123
123
|
return "按配置"
|
|
124
124
|
|
|
125
|
+
def _model_setup_message(self) -> str | None:
|
|
126
|
+
if self.client.transport_registry.aliases:
|
|
127
|
+
return None
|
|
128
|
+
if self.config.providers:
|
|
129
|
+
return "模型 Provider 尚未连接, 请检查 API Key 或重新配置 Provider"
|
|
130
|
+
return "尚未配置模型 Provider, 请先连接模型后再开始任务"
|
|
131
|
+
|
|
125
132
|
def _make_banner(self) -> RichText:
|
|
126
133
|
banner = RichText()
|
|
127
134
|
banner.append("▣ ", style="bold color(75)")
|
|
@@ -172,6 +179,8 @@ class WindcodeApp(App[None]):
|
|
|
172
179
|
self.set_class(self.size.width < 60, "narrow")
|
|
173
180
|
self.query_one("#chat-input", ChatInput).focus()
|
|
174
181
|
self._update_status("loading MCP" if self.client.required_mcp_loading else "idle")
|
|
182
|
+
if setup_message := self._model_setup_message():
|
|
183
|
+
self.query_one("#welcome-view", WelcomeView).show_notice(setup_message)
|
|
175
184
|
if self.client.required_mcp_loading:
|
|
176
185
|
self.query_one("#welcome-view", WelcomeView).start_mcp_loading()
|
|
177
186
|
self.run_worker(self._load_required_mcp(), group="mcp-startup", exclusive=True)
|
|
@@ -188,7 +197,7 @@ class WindcodeApp(App[None]):
|
|
|
188
197
|
return
|
|
189
198
|
self.query_one("#welcome-view", WelcomeView).stop_mcp_loading()
|
|
190
199
|
self._update_status("idle")
|
|
191
|
-
await self._show_system_message("MCP 服务已加载")
|
|
200
|
+
await self._show_system_message(self._model_setup_message() or "MCP 服务已加载")
|
|
192
201
|
|
|
193
202
|
def on_resize(self, event: events.Resize) -> None:
|
|
194
203
|
self.set_class(event.size.width < 60, "narrow")
|
|
@@ -230,7 +239,7 @@ class WindcodeApp(App[None]):
|
|
|
230
239
|
await self._show_system_message("没有可复制的内容", error=True)
|
|
231
240
|
return
|
|
232
241
|
try:
|
|
233
|
-
|
|
242
|
+
self.copy_to_clipboard(text)
|
|
234
243
|
preview = text.replace("\n", " ")[:60]
|
|
235
244
|
await self._show_system_message(
|
|
236
245
|
f"已复制到剪贴板: {preview}{'...' if len(text) > 60 else ''}"
|
|
@@ -458,6 +467,10 @@ class WindcodeApp(App[None]):
|
|
|
458
467
|
await self._start_prompt(value)
|
|
459
468
|
|
|
460
469
|
async def _start_prompt(self, value: str) -> None:
|
|
470
|
+
if setup_message := self._model_setup_message():
|
|
471
|
+
await self._show_system_message(setup_message, error=True)
|
|
472
|
+
await self._open_provider_manager()
|
|
473
|
+
return
|
|
461
474
|
if self.handle is not None and not self.handle.done:
|
|
462
475
|
self.prompt_queue.append(value)
|
|
463
476
|
self._update_status(f"运行中 · 队列 {len(self.prompt_queue)}")
|
|
@@ -1006,7 +1019,7 @@ class WindcodeApp(App[None]):
|
|
|
1006
1019
|
# If the user has selected text, copy it first instead of canceling.
|
|
1007
1020
|
selected = self.screen.get_selected_text()
|
|
1008
1021
|
if selected:
|
|
1009
|
-
|
|
1022
|
+
self.copy_to_clipboard(selected)
|
|
1010
1023
|
self.screen.clear_selection()
|
|
1011
1024
|
return
|
|
1012
1025
|
if self.handle is not None and not self.handle.done:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|