From eed585b1ade33912e5292344da5352ac44a63d00 Mon Sep 17 00:00:00 2001 From: Oleg Samarin Date: Sun, 12 Apr 2026 00:28:57 +0300 Subject: [PATCH 1/4] Fixed MCP config not working on Windows due to quote stripping (https://github.com/nbclaudecodegui/NetbeansClaudeCodeGui/issues/13) (#17) Resolves: #13 Write --mcp-config JSON to a temp file instead of passing inline JSON, avoiding Windows CreateProcess quote-stripping. The temp file is deleted when the session stops. Also fixed error panel cleanup: hang detection now calls killOnly() instead of stop(), so settings.local.json and the temp MCP config file are preserved until the error panel is dismissed (stopProcess() on panel close triggers full file cleanup). Co-authored-by: Oleg Samarin Co-authored-by: Claude Sonnet 4.6 --- CHANGELOG.md | 1 + .../controller/ClaudeSessionController.java | 68 ++++++++++++++ .../process/ClaudeProcess.java | 92 +++++++++++++++++-- .../process/ClaudeProcessTest.java | 67 ++++++++++++++ 4 files changed, 222 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53289336..c28202d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +- Fixed MCP config not working on Windows due to quote stripping in CreateProcess (https://github.com/nbclaudecodegui/NetbeansClaudeCodeGui/issues/13) - Fixed authentication for profiles with the "Claude API" connection type: the API key is now correctly recognised by Claude Code on session start # 0.20.4 (2026-04-09) diff --git a/src/main/java/io/github/nbclaudecodegui/controller/ClaudeSessionController.java b/src/main/java/io/github/nbclaudecodegui/controller/ClaudeSessionController.java index e6a05e28..5e8c0c16 100644 --- a/src/main/java/io/github/nbclaudecodegui/controller/ClaudeSessionController.java +++ b/src/main/java/io/github/nbclaudecodegui/controller/ClaudeSessionController.java @@ -879,6 +879,74 @@ void pollScreenState() { } } + /** + * Registers a callback invoked on the EDT when a hang is detected and the + * process has been stopped. + * + * @param callback receives (command, errorMessage); may be {@code null} to clear + */ + public void setHangCallback(java.util.function.BiConsumer callback) { + this.hangCallback = callback; + } + + /** + * Kills the PTY process and resets timers/state, but does NOT call + * {@link ClaudeProcess#stop()} — so settings.local.json and the temp MCP + * config file are preserved until the error panel is dismissed and + * {@link #stopProcess()} is called. + * + *

{@code claudeProcess} is intentionally kept non-null so that the + * subsequent {@code stopProcess()} on panel dismiss can still call + * {@code claudeProcess.stop()} and clean up files. + */ + private void killProcessForErrorPanel() { + if (statusTimer != null) { + statusTimer.stop(); + statusTimer = null; + } + promptFlushTimer.stop(); + if (connector != null) { + connector.setLineListener(null); + } + if (claudeProcess != null) { + claudeProcess.killOnly(); + } + connector = null; + // claudeProcess kept — file cleanup deferred to stopProcess() on panel dismiss + modelComboPopulated = false; + modelDiscoveryInProgress = false; + modelDiscoveryAttempts = 0; + customModelIds = List.of(); + standardModelCount = 0; + synchronized (recentPtyLines) { recentPtyLines.clear(); } + processStartedAt = 0; + firstOutputReceived = false; + + model.setModelList(List.of(), -1); + model.clearChoiceMenu(); + model.clearEditModeRegistry(); + model.setLifecycle(SessionLifecycle.STARTING); + } + + /** + * Called from {@link #pollScreenState()} when the hang watchdog fires. + * Stops the process and notifies the registered callback on the EDT. + * + * @param timeoutSec the configured timeout that elapsed (for the error message) + */ + private void handleHang(int timeoutSec) { + LOG.severe("Hang detected in " + workingDir + ": no PTY output received within " + timeoutSec + " s — killing process"); + String command = claudeProcess != null ? claudeProcess.getLastCommand() : ""; + killProcessForErrorPanel(); // kill PTY; file cleanup deferred to panel dismiss + java.util.function.BiConsumer cb = hangCallback; + if (cb != null) { + String msg = "No output received within " + timeoutSec + + " seconds. Process was killed."; + cb.accept(command, msg); + } + } + + private void detectAndApplyInitialEditMode(List lines) { screenContentDetector.detectEditMode(lines).ifPresent(m -> model.setEditMode(m)); } diff --git a/src/main/java/io/github/nbclaudecodegui/process/ClaudeProcess.java b/src/main/java/io/github/nbclaudecodegui/process/ClaudeProcess.java index f3748a11..1977f2cc 100644 --- a/src/main/java/io/github/nbclaudecodegui/process/ClaudeProcess.java +++ b/src/main/java/io/github/nbclaudecodegui/process/ClaudeProcess.java @@ -68,6 +68,9 @@ public ClaudeProcess() {} /** Working directory of the current session; {@code null} when stopped. */ private volatile String workingDir; + /** Temp file holding the --mcp-config JSON; {@code null} when not in use. */ + private volatile Path mcpConfigTempFile; + /** * Starts a Claude CLI PTY process in the given working directory using * the Default profile (no extra env vars injected). @@ -143,11 +146,25 @@ public PtyProcess start(String workingDir, ClaudeProfile profile, String extraCl + ", port=" + (mcp != null ? mcp.getServerPort() : -1)); if (mcp != null && mcp.isServerRunning()) { int port = mcp.getServerPort(); - // Pass MCP server config via --mcp-config (Claude 2.x no longer reads - // mcpServers from settings.local.json; --mcp-config works in TUI mode). - cmd.add("--mcp-config"); - cmd.add(buildMcpConfigJson(port)); - LOG.info("Passing --mcp-config with netbeans SSE server on port " + port); + if (io.github.nbclaudecodegui.settings.ClaudeCodePreferences.isMcpEnabled()) { + // Pass MCP server config via --mcp-config (Claude 2.x no longer reads + // mcpServers from settings.local.json; --mcp-config works in TUI mode). + // On Windows, inline JSON gets quote-stripped by CreateProcess, so we + // write to a temp file and pass the file path instead. + cmd.add("--mcp-config"); + try { + Path tmpCfg = writeMcpConfigTempFile(port); + mcpConfigTempFile = tmpCfg; + cmd.add(tmpCfg.toAbsolutePath().toString()); + LOG.info("Passing --mcp-config via temp file: " + tmpCfg); + } catch (IOException e) { + LOG.warning("Could not write --mcp-config temp file, falling back to inline JSON: " + e.getMessage()); + cmd.add(buildMcpConfigJson(port)); + LOG.info("Passing --mcp-config with netbeans SSE server on port " + port); + } + } else { + LOG.info("MCP integration disabled by user preference; skipping --mcp-config"); + } try { writeSettingsLocalJson(workingDir, port, profile); } catch (IOException e) { @@ -205,7 +222,14 @@ public PtyProcess start(String workingDir, ClaudeProfile profile, String extraCl * {@value #OUR_HOOK_MATCHER}). User-provided keys are left untouched. * If the file becomes empty after cleanup it is deleted. */ - public void stop() { + /** + * Kills the PTY process only — does NOT delete settings.local.json or the + * temp MCP config file. File cleanup is deferred to {@link #stop()}. + * + *

Use this when the error panel is about to be shown and files must stay + * alive until the user dismisses the panel. + */ + public void killOnly() { PtyProcess p = ptyProcess; if (p != null && p.isAlive()) { p.destroy(); @@ -219,6 +243,20 @@ public void stop() { } } ptyProcess = null; + // workingDir and mcpConfigTempFile intentionally NOT cleared — deferred to stop() + } + + public void stop() { + killOnly(); + + Path tmp = mcpConfigTempFile; + mcpConfigTempFile = null; + if (tmp != null) { + try { + Files.deleteIfExists(tmp); + LOG.fine("Deleted --mcp-config temp file: " + tmp); + } catch (IOException e) { /* ignore */ } + } String dir = workingDir; workingDir = null; @@ -556,6 +594,48 @@ static Map buildEnv(ClaudeProfile profile, java.nio.file.Path pr * Builds a minimal {@code settings.local.json} from scratch for the given port. * Used as a fallback when the existing file cannot be parsed. */ + /** + * Converts a command list to a shell-pasteable string. + * Arguments that contain spaces, quotes, or other shell-special characters + * are quoted so the result can be pasted directly into a terminal. + * On Windows, double-quotes inside an argument are doubled (""). + * On other platforms, they are backslash-escaped (\"). + */ + static String toShellCommand(List cmd) { + boolean windows = System.getProperty("os.name", "").toLowerCase().contains("win"); + return toShellCommand(cmd, windows); + } + + static String toShellCommand(List cmd, boolean windows) { + StringBuilder sb = new StringBuilder(); + for (String arg : cmd) { + if (sb.length() > 0) sb.append(' '); + boolean needsQuoting = arg.isEmpty() || arg.chars().anyMatch(c -> + c == ' ' || c == '\t' || c == '"' || c == '\'' || c == '\\' || + c == '{' || c == '}' || c == '(' || c == ')' || + c == '&' || c == '|' || c == '<' || c == '>'); + if (!needsQuoting) { + sb.append(arg); + } else if (windows) { + sb.append('"').append(arg.replace("\"", "\"\"")).append('"'); + } else { + sb.append('"').append(arg.replace("\"", "\\\"")).append('"'); + } + } + return sb.toString(); + } + + /** + * Writes the MCP config JSON to a temp file and returns its path. + * The file is registered for deletion on JVM exit as a safety net. + */ + static Path writeMcpConfigTempFile(int port) throws IOException { + Path tmp = Files.createTempFile("claude-mcp-config-", ".json"); + tmp.toFile().deleteOnExit(); + Files.writeString(tmp, buildMcpConfigJson(port), StandardCharsets.UTF_8); + return tmp; + } + /** * Builds the JSON string to pass as {@code --mcp-config} to the Claude CLI. */ diff --git a/src/test/java/io/github/nbclaudecodegui/process/ClaudeProcessTest.java b/src/test/java/io/github/nbclaudecodegui/process/ClaudeProcessTest.java index 96cc147f..26e10359 100644 --- a/src/test/java/io/github/nbclaudecodegui/process/ClaudeProcessTest.java +++ b/src/test/java/io/github/nbclaudecodegui/process/ClaudeProcessTest.java @@ -170,6 +170,73 @@ void testCleanupRemovesApiKeyHelperButKeepsUserContent() { assertTrue(cleaned.contains("myCustomKey"), "cleaned should preserve user content"); } + // ------------------------------------------------------------------------- + // toShellCommand + // ------------------------------------------------------------------------- + + @Test + void testToShellCommandNoQuoting() { + List cmd = List.of("claude", "--continue"); + // plain args need no quoting on either platform + assertEquals("claude --continue", ClaudeProcess.toShellCommand(cmd, false)); + assertEquals("claude --continue", ClaudeProcess.toShellCommand(cmd, true)); + } + + @Test + void testToShellCommandQuotesJsonArgUnix() { + String json = ClaudeProcess.buildMcpConfigJson(28991); + List cmd = List.of("claude", "--mcp-config", json, "--continue"); + String result = ClaudeProcess.toShellCommand(cmd, false); + // Expected: claude --mcp-config "{\"mcpServers\":...}" --continue + assertTrue(result.startsWith("claude --mcp-config \""), "should quote JSON arg"); + assertTrue(result.endsWith("\" --continue"), "should close quote before next arg"); + String inner = result.substring("claude --mcp-config \"".length(), + result.lastIndexOf("\" --continue")); + // On Unix all " inside must be escaped as \" + for (int i = 0; i < inner.length(); i++) { + if (inner.charAt(i) == '"') { + assertTrue(i > 0 && inner.charAt(i - 1) == '\\', + "unescaped double-quote at position " + i + " in: " + inner); + } + } + } + + @Test + void testToShellCommandQuotesJsonArgWindows() { + String json = ClaudeProcess.buildMcpConfigJson(28991); + List cmd = List.of("claude", "--mcp-config", json, "--continue"); + String result = ClaudeProcess.toShellCommand(cmd, true); + // Expected: claude --mcp-config "{""mcpServers"":...}" --continue + assertTrue(result.startsWith("claude --mcp-config \""), "should quote JSON arg"); + assertTrue(result.endsWith("\" --continue"), "should close quote before next arg"); + String inner = result.substring("claude --mcp-config \"".length(), + result.lastIndexOf("\" --continue")); + // On Windows all " inside must be doubled as "" + assertFalse(inner.contains("\\\""), "Windows quoting must not use backslash-escape"); + assertTrue(inner.contains("\"\""), "Windows quoting must double double-quotes"); + } + + // ------------------------------------------------------------------------- + // writeMcpConfigTempFile + // ------------------------------------------------------------------------- + + @Test + void testWriteMcpConfigTempFile() throws Exception { + Path tmp = ClaudeProcess.writeMcpConfigTempFile(28991); + try { + assertTrue(Files.exists(tmp), "temp file should be created"); + String content = Files.readString(tmp, StandardCharsets.UTF_8); + assertTrue(content.contains("netbeans"), "temp file should contain netbeans key"); + assertTrue(content.contains("28991"), "temp file should contain port"); + assertTrue(content.startsWith("{"), "temp file should be valid JSON object"); + // File path should contain no double-quotes (safe to pass as process arg) + assertFalse(tmp.toAbsolutePath().toString().contains("\""), + "temp file path should contain no double-quotes"); + } finally { + Files.deleteIfExists(tmp); + } + } + // ------------------------------------------------------------------------- // buildMcpConfigJson // ------------------------------------------------------------------------- From e8cb0c5864109b1289b70f2e941184ab55b18484 Mon Sep 17 00:00:00 2001 From: Oleg Samarin Date: Sat, 11 Apr 2026 19:33:55 +0300 Subject: [PATCH 2/4] Added hang detection: kill process when no PTY output received within timeout (#11) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Watchdog fires in the existing 500 ms pollScreenState() timer: if no PTY bytes arrive within the configured timeout after launch, the process is stopped and the error panel is shown with the elapsed-time message. - ClaudeCodePreferences: KEY_HANG_TIMEOUT_SECONDS (default 60, 0=disabled) - ClaudeCodeOptionsPanel: hang timeout spinner on General tab (0–3600 s) - ClaudeSessionController: processStartedAt / firstOutputReceived fields, hang check in pollScreenState(), handleHang() + setHangCallback() - ClaudeSessionTab: wires controller.setHangCallback(this::showStartError) - ClaudeSessionControllerTest: 4 new tests for hang-detection logic Co-authored-by: Oleg Samarin Co-authored-by: Claude Sonnet 4.6 --- CHANGELOG.md | 1 + .../controller/ClaudeSessionController.java | 80 +++++++------- .../settings/ClaudeCodeOptionsPanel.java | 43 ++++++++ .../settings/ClaudeCodePreferences.java | 102 ++++++++++++++++++ .../nbclaudecodegui/ui/ClaudeSessionTab.java | 1 + .../ClaudeSessionControllerTest.java | 65 +++++++++++ 6 files changed, 250 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c28202d0..8f38b81d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +- Added hang detection: configurable timeout (default 60 s) kills the process and shows an error if no PTY output is received after launch; set to 0 to disable - Fixed MCP config not working on Windows due to quote stripping in CreateProcess (https://github.com/nbclaudecodegui/NetbeansClaudeCodeGui/issues/13) - Fixed authentication for profiles with the "Claude API" connection type: the API key is now correctly recognised by Claude Code on session start diff --git a/src/main/java/io/github/nbclaudecodegui/controller/ClaudeSessionController.java b/src/main/java/io/github/nbclaudecodegui/controller/ClaudeSessionController.java index 5e8c0c16..5d5243e8 100644 --- a/src/main/java/io/github/nbclaudecodegui/controller/ClaudeSessionController.java +++ b/src/main/java/io/github/nbclaudecodegui/controller/ClaudeSessionController.java @@ -84,6 +84,18 @@ public final class ClaudeSessionController { new javax.swing.Timer(400, e -> flushPendingPrompt()); { promptFlushTimer.setRepeats(false); } + /** Timestamp (ms) when the PTY process was launched; used for hang detection. */ + private volatile long processStartedAt = 0; + + /** {@code true} once the first byte/line from the PTY has been received. */ + private volatile boolean firstOutputReceived = false; + + /** + * Called when a hang is detected: receives (command, errorMessage). + * Invoked on the EDT after the process is stopped. + */ + private java.util.function.BiConsumer hangCallback; + /** {@code true} while a shift-tab thread is actively switching the CC edit mode. */ private volatile boolean modeSwitchInProgress = false; @@ -113,6 +125,12 @@ public final class ClaudeSessionController { private final java.util.Deque recentPtyLines = new java.util.ArrayDeque<>(); private static final int PTY_LINE_BUFFER_SIZE = 40; + /** Package-private for tests: sets hang-detection state as if the process just started. */ + void simulateProcessStart(long startedAt, boolean outputReceived) { + processStartedAt = startedAt; + firstOutputReceived = outputReceived; + } + /** Package-private for tests: injects a stripped PTY line into the rolling buffer. */ void simulatePtyLine(String line) { synchronized (recentPtyLines) { @@ -167,11 +185,15 @@ public void startProcess(java.io.File dir, String profileName, String extraCliAr customModelIds = profile != null ? new ArrayList<>(profile.getCustomModels()) : List.of(); PtyProcess process = claudeProcess.start(dir.getAbsolutePath(), profile, extraCliArgs != null ? extraCliArgs : ""); + processStartedAt = System.currentTimeMillis(); + firstOutputReceived = false; + connector = new PtyTtyConnector(process); connector.setSessionTag(tag); screenContentDetector.setSessionTag(tag); connector.setLineListener(line -> { + firstOutputReceived = true; LOG.fine(tag + "[PTY line] " + line); synchronized (recentPtyLines) { recentPtyLines.addLast(line); @@ -248,6 +270,8 @@ public void stopProcess() { customModelIds = List.of(); standardModelCount = 0; synchronized (recentPtyLines) { recentPtyLines.clear(); } + processStartedAt = 0; + firstOutputReceived = false; model.setModelList(List.of(), -1); model.clearChoiceMenu(); @@ -861,6 +885,18 @@ void pollScreenState() { // UNKNOWN → no transition } + // Hang detection: if no PTY output received within the configured timeout, kill the process + if (!firstOutputReceived && processStartedAt > 0) { + int timeoutSec = ClaudeCodePreferences.getHangTimeoutSeconds(); + if (timeoutSec > 0) { + long elapsed = System.currentTimeMillis() - processStartedAt; + if (elapsed > timeoutSec * 1000L) { + handleHang(timeoutSec); + return; + } + } + } + // Continuously sync CC screen mode → model (skip during switches and discovery) if (modelComboPopulated && !modeSwitchInProgress && !modelDiscoveryInProgress) { Optional detected = screenContentDetector.detectEditMode(lines); @@ -889,45 +925,6 @@ public void setHangCallback(java.util.function.BiConsumer callba this.hangCallback = callback; } - /** - * Kills the PTY process and resets timers/state, but does NOT call - * {@link ClaudeProcess#stop()} — so settings.local.json and the temp MCP - * config file are preserved until the error panel is dismissed and - * {@link #stopProcess()} is called. - * - *

{@code claudeProcess} is intentionally kept non-null so that the - * subsequent {@code stopProcess()} on panel dismiss can still call - * {@code claudeProcess.stop()} and clean up files. - */ - private void killProcessForErrorPanel() { - if (statusTimer != null) { - statusTimer.stop(); - statusTimer = null; - } - promptFlushTimer.stop(); - if (connector != null) { - connector.setLineListener(null); - } - if (claudeProcess != null) { - claudeProcess.killOnly(); - } - connector = null; - // claudeProcess kept — file cleanup deferred to stopProcess() on panel dismiss - modelComboPopulated = false; - modelDiscoveryInProgress = false; - modelDiscoveryAttempts = 0; - customModelIds = List.of(); - standardModelCount = 0; - synchronized (recentPtyLines) { recentPtyLines.clear(); } - processStartedAt = 0; - firstOutputReceived = false; - - model.setModelList(List.of(), -1); - model.clearChoiceMenu(); - model.clearEditModeRegistry(); - model.setLifecycle(SessionLifecycle.STARTING); - } - /** * Called from {@link #pollScreenState()} when the hang watchdog fires. * Stops the process and notifies the registered callback on the EDT. @@ -935,9 +932,9 @@ private void killProcessForErrorPanel() { * @param timeoutSec the configured timeout that elapsed (for the error message) */ private void handleHang(int timeoutSec) { - LOG.severe("Hang detected in " + workingDir + ": no PTY output received within " + timeoutSec + " s — killing process"); + LOG.warning("Hang detected: no PTY output received within " + timeoutSec + " s — killing process"); String command = claudeProcess != null ? claudeProcess.getLastCommand() : ""; - killProcessForErrorPanel(); // kill PTY; file cleanup deferred to panel dismiss + stopProcess(); java.util.function.BiConsumer cb = hangCallback; if (cb != null) { String msg = "No output received within " + timeoutSec @@ -946,7 +943,6 @@ private void handleHang(int timeoutSec) { } } - private void detectAndApplyInitialEditMode(List lines) { screenContentDetector.detectEditMode(lines).ifPresent(m -> model.setEditMode(m)); } diff --git a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java index 610d6e22..f9ed6149 100644 --- a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java +++ b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java @@ -64,6 +64,12 @@ public final class ClaudeCodeOptionsPanel extends JPanel { private javax.swing.JCheckBox diffInSessionCheck; /** Checkbox to show markdown preview for .md files in diff. */ private javax.swing.JCheckBox mdPreviewInDiffCheck; + /** Checkbox for context-menu session mode (checked = New, unchecked = Continue last). */ + private javax.swing.JCheckBox startNewSessionCheck; + /** Spinner for the maximum number of sessions shown in the session list. */ + private JSpinner sessionListLimitSpinner; + /** Spinner for the hang-detection timeout in seconds (0 = disabled). */ + private JSpinner hangTimeoutSpinner; /** send-key radio buttons: value → button */ private final Map sendRadios = new LinkedHashMap<>(); @@ -205,6 +211,32 @@ private JPanel buildGeneralPanel() { form.add(mdPreviewInDiffCheck, mdGbc); row++; + // --- context-menu session mode --- + startNewSessionCheck = new javax.swing.JCheckBox("Start new session when opening with Claude"); + GridBagConstraints cmGbc = new GridBagConstraints(); + cmGbc.gridx = 0; cmGbc.gridy = row; + cmGbc.gridwidth = 3; + cmGbc.anchor = GridBagConstraints.WEST; + cmGbc.insets = new Insets(4, 8, 4, 8); + form.add(startNewSessionCheck, cmGbc); + row++; + + // --- session list limit --- + form.add(new JLabel("Session list limit:"), gbc(0, row, false)); + sessionListLimitSpinner = new JSpinner(new SpinnerNumberModel( + ClaudeCodePreferences.DEFAULT_SESSION_LIST_LIMIT, 1, 500, 5)); + sessionListLimitSpinner.setToolTipText("Maximum number of sessions shown in the session list"); + form.add(sessionListLimitSpinner, gbc(1, row, false)); + row++; + + // --- hang timeout --- + form.add(new JLabel("Hang timeout (seconds, 0=disabled):"), gbc(0, row, false)); + hangTimeoutSpinner = new JSpinner(new SpinnerNumberModel( + ClaudeCodePreferences.DEFAULT_HANG_TIMEOUT_SECONDS, 0, 3600, 5)); + hangTimeoutSpinner.setToolTipText("Kill the process if no PTY output is received within this many seconds after launch (0 = disabled)"); + form.add(hangTimeoutSpinner, gbc(1, row, false)); + row++; + // spacer GridBagConstraints spacer = new GridBagConstraints(); spacer.gridx = 0; spacer.gridy = row; @@ -278,6 +310,11 @@ void load() { diffInSessionCheck.setSelected( ClaudeCodePreferences.isOpenDiffInSeparateTab()); mdPreviewInDiffCheck.setSelected(ClaudeCodePreferences.isMdPreviewInDiff()); + startNewSessionCheck.setSelected( + ClaudeCodePreferences.getContextMenuSessionMode() + == io.github.nbclaudecodegui.model.SessionMode.NEW); + sessionListLimitSpinner.setValue(ClaudeCodePreferences.getSessionListLimit()); + hangTimeoutSpinner.setValue(ClaudeCodePreferences.getHangTimeoutSeconds()); String sendVal = ClaudeCodePreferences.getSendKey(); String newlineVal = ClaudeCodePreferences.getNewlineKey(); @@ -305,6 +342,12 @@ void store() { ClaudeCodePreferences.setDebugMode(debugCheckBox.isSelected()); ClaudeCodePreferences.setOpenDiffInSeparateTab(diffInSessionCheck.isSelected()); ClaudeCodePreferences.setMdPreviewInDiff(mdPreviewInDiffCheck.isSelected()); + ClaudeCodePreferences.setContextMenuSessionMode( + startNewSessionCheck.isSelected() + ? io.github.nbclaudecodegui.model.SessionMode.NEW + : io.github.nbclaudecodegui.model.SessionMode.CONTINUE_LAST); + ClaudeCodePreferences.setSessionListLimit((Integer) sessionListLimitSpinner.getValue()); + ClaudeCodePreferences.setHangTimeoutSeconds((Integer) hangTimeoutSpinner.getValue()); ClaudeCodePreferences.setSendKey(selectedValue(sendRadios)); ClaudeCodePreferences.setNewlineKey(selectedValue(newlineRadios)); diff --git a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java index 208ce8f9..82ae58d3 100644 --- a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java +++ b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java @@ -422,6 +422,108 @@ public static void setDefaultExtraCliArgs(String v) { .put(KEY_DEFAULT_EXTRA_CLI_ARGS, v != null ? v : ""); } + // ------------------------------------------------------------------------- + // contextMenuSessionMode + // ------------------------------------------------------------------------- + + /** Preference key: session mode used when opening via "Open with Claude" context menu. */ + public static final String KEY_CONTEXT_MENU_SESSION_MODE = "contextMenuSessionMode"; + /** Default: continue the last session. */ + public static final SessionMode DEFAULT_CONTEXT_MENU_SESSION_MODE = SessionMode.CONTINUE_LAST; + + /** + * Returns the session mode used for context-menu ("Open with Claude") actions. + * + * @return configured mode, or {@link #DEFAULT_CONTEXT_MENU_SESSION_MODE} + */ + public static SessionMode getContextMenuSessionMode() { + String stored = NbPreferences.forModule(ClaudeCodePreferences.class) + .get(KEY_CONTEXT_MENU_SESSION_MODE, + DEFAULT_CONTEXT_MENU_SESSION_MODE.name()); + try { + SessionMode mode = SessionMode.valueOf(stored); + // CLOSE_ONLY and RESUME_SPECIFIC are not valid context-menu modes + if (mode == SessionMode.CLOSE_ONLY || mode == SessionMode.RESUME_SPECIFIC) { + return DEFAULT_CONTEXT_MENU_SESSION_MODE; + } + return mode; + } catch (IllegalArgumentException e) { + return DEFAULT_CONTEXT_MENU_SESSION_MODE; + } + } + + /** + * Persists the session mode for context-menu actions. + * + * @param mode {@link SessionMode#NEW} or {@link SessionMode#CONTINUE_LAST} + */ + public static void setContextMenuSessionMode(SessionMode mode) { + if (mode == null || mode == SessionMode.CLOSE_ONLY + || mode == SessionMode.RESUME_SPECIFIC) { + mode = DEFAULT_CONTEXT_MENU_SESSION_MODE; + } + NbPreferences.forModule(ClaudeCodePreferences.class) + .put(KEY_CONTEXT_MENU_SESSION_MODE, mode.name()); + } + + // ------------------------------------------------------------------------- + // sessionListLimit + // ------------------------------------------------------------------------- + + /** Preference key: maximum number of sessions shown in the session list. */ + public static final String KEY_SESSION_LIST_LIMIT = "sessionListLimit"; + /** Default: show the 30 most recent sessions. */ + public static final int DEFAULT_SESSION_LIST_LIMIT = 30; + + /** + * Returns the maximum number of sessions to show in the session list. + * + * @return session list limit (≥ 1) + */ + public static int getSessionListLimit() { + return NbPreferences.forModule(ClaudeCodePreferences.class) + .getInt(KEY_SESSION_LIST_LIMIT, DEFAULT_SESSION_LIST_LIMIT); + } + + /** + * Persists the session list limit. + * + * @param v new limit; clamped to [1, 500] + */ + public static void setSessionListLimit(int v) { + NbPreferences.forModule(ClaudeCodePreferences.class) + .putInt(KEY_SESSION_LIST_LIMIT, Math.max(1, Math.min(500, v))); + } + + // ------------------------------------------------------------------------- + // hangTimeoutSeconds + // ------------------------------------------------------------------------- + + /** Preference key: seconds of PTY silence before a hang is declared (0 = disabled). */ + public static final String KEY_HANG_TIMEOUT_SECONDS = "hangTimeoutSeconds"; + /** Default: 60 seconds. */ + public static final int DEFAULT_HANG_TIMEOUT_SECONDS = 60; + + /** + * Returns the configured hang-detection timeout in seconds. + * + * @return timeout in seconds, or {@code 0} to disable hang detection + */ + public static int getHangTimeoutSeconds() { + return NbPreferences.forModule(ClaudeCodePreferences.class) + .getInt(KEY_HANG_TIMEOUT_SECONDS, DEFAULT_HANG_TIMEOUT_SECONDS); + } + + /** + * Persists the hang-detection timeout. + * + * @param v timeout in seconds; clamped to [0, 3600]; 0 disables detection + */ + public static void setHangTimeoutSeconds(int v) { + NbPreferences.forModule(ClaudeCodePreferences.class) + .putInt(KEY_HANG_TIMEOUT_SECONDS, Math.max(0, Math.min(3600, v))); + } + private static String validated(String value, String fallback) { return ENTER.equals(value) || SHIFT_ENTER.equals(value) || CTRL_ENTER.equals(value) || ALT_ENTER.equals(value) diff --git a/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionTab.java b/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionTab.java index f26367d0..c9d42935 100644 --- a/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionTab.java +++ b/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionTab.java @@ -263,6 +263,7 @@ public ClaudeSessionTab(File dir) { setIcon(ImageUtilities.loadImage(ICON, true)); updateDisplayName(dir); model.addListener(this); + controller.setHangCallback(this::showStartError); } // ------------------------------------------------------------------------- diff --git a/src/test/java/io/github/nbclaudecodegui/controller/ClaudeSessionControllerTest.java b/src/test/java/io/github/nbclaudecodegui/controller/ClaudeSessionControllerTest.java index ec1dcca4..00f65dc9 100644 --- a/src/test/java/io/github/nbclaudecodegui/controller/ClaudeSessionControllerTest.java +++ b/src/test/java/io/github/nbclaudecodegui/controller/ClaudeSessionControllerTest.java @@ -552,6 +552,71 @@ void detectEditMode_emptyResultMeansDefaultModeOnIdleScreen() { + "sendShiftTabsUntilMode uses empty+target=default as success condition"); } + // ------------------------------------------------------------------------- + // Hang detection + // ------------------------------------------------------------------------- + + @Test + void hangDetectedWhenNoOutputReceivedWithinTimeout() { + // Simulate process started 70 s ago with no output; timeout = 60 s + controller.simulateProcessStart(System.currentTimeMillis() - 70_000L, false); + + AtomicReference callbackCommand = new AtomicReference<>(); + AtomicReference callbackError = new AtomicReference<>(); + controller.setHangCallback((cmd, err) -> { + callbackCommand.set(cmd); + callbackError.set(err); + }); + + // pollScreenState() is called on the EDT via Timer — invoke directly in test + controller.pollScreenState(); + + assertNotNull(callbackCommand.get(), "Hang callback should have been invoked"); + assertTrue(callbackError.get().contains("60"), "Error message should include the timeout seconds"); + } + + @Test + void hangNotDetectedWhenOutputAlreadyReceived() { + // Simulate process started 70 s ago but output was received + controller.simulateProcessStart(System.currentTimeMillis() - 70_000L, true); + + AtomicReference callbackCommand = new AtomicReference<>(); + controller.setHangCallback((cmd, err) -> callbackCommand.set(cmd)); + + controller.pollScreenState(); + + assertNull(callbackCommand.get(), "Hang callback should NOT fire when output was received"); + } + + @Test + void hangNotDetectedWhenTimeoutIsZero() { + // Simulate process started 70 s ago with no output; timeout = 0 (disabled) + // We need to temporarily override the preference — but preferences require NB platform. + // Instead, verify via processStartedAt=0 (stopProcess sets it to 0, meaning no active process). + controller.simulateProcessStart(0L, false); + + AtomicReference callbackCommand = new AtomicReference<>(); + controller.setHangCallback((cmd, err) -> callbackCommand.set(cmd)); + + controller.pollScreenState(); + + assertNull(callbackCommand.get(), "Hang callback should NOT fire when processStartedAt=0"); + } + + @Test + void hangNotDetectedWhenWithinTimeout() { + // Simulate process started 10 s ago with no output; default timeout = 60 s + controller.simulateProcessStart(System.currentTimeMillis() - 10_000L, false); + + AtomicReference callbackCommand = new AtomicReference<>(); + controller.setHangCallback((cmd, err) -> callbackCommand.set(cmd)); + + // Since NbPreferences returns default (60 s) in tests, 10 s < 60 s → no hang + controller.pollScreenState(); + + assertNull(callbackCommand.get(), "Hang callback should NOT fire when elapsed < timeout"); + } + // ------------------------------------------------------------------------- // No-op listener base class // ------------------------------------------------------------------------- From 9c78822c92105e667d007fe45208a98a7bfd5ade Mon Sep 17 00:00:00 2001 From: Oleg Samarin Date: Sat, 11 Apr 2026 22:37:23 +0300 Subject: [PATCH 3/4] Added Advanced tab in Options with MCP integration toggle (#15) Co-authored-by: Oleg Samarin Co-authored-by: Claude Sonnet 4.6 --- CHANGELOG.md | 2 + docs/screenshots/settings-advanced.png | Bin 0 -> 53232 bytes docs/screenshots/settings-favorites.png | Bin 0 -> 55891 bytes docs/screenshots/settings-general.png | Bin 0 -> 71265 bytes docs/user-manual.md | 23 +++++- .../settings/ClaudeCodeOptionsPanel.java | 69 +++++++++++++++--- .../settings/ClaudeCodePreferences.java | 26 +++++++ 7 files changed, 105 insertions(+), 15 deletions(-) create mode 100644 docs/screenshots/settings-advanced.png create mode 100644 docs/screenshots/settings-favorites.png create mode 100644 docs/screenshots/settings-general.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f38b81d..41b66da8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +- Added Advanced tab in Tools → Options → Claude Code with Debug mode, Hang timeout, and a new "Enable MCP integration" toggle (disabling it skips the --mcp-config flag while hooks remain active) +- Fixed process start errors and hang timeouts now logged to the IDE log file at SEVERE level - Added hang detection: configurable timeout (default 60 s) kills the process and shows an error if no PTY output is received after launch; set to 0 to disable - Fixed MCP config not working on Windows due to quote stripping in CreateProcess (https://github.com/nbclaudecodegui/NetbeansClaudeCodeGui/issues/13) - Fixed authentication for profiles with the "Claude API" connection type: the API key is now correctly recognised by Claude Code on session start diff --git a/docs/screenshots/settings-advanced.png b/docs/screenshots/settings-advanced.png new file mode 100644 index 0000000000000000000000000000000000000000..59885b08e7e287d36db12c78a03c72999e5ab2a4 GIT binary patch literal 53232 zcmb@tbyQSs`#-8EN=gphNDU#~AvJ(B4BbdK(yeq1B_Q23ba!`mD4i10(tQSfzVG*W zf9ITk&N{R9TCCaZeb04Y@wxI2QIL~BMIu0Y_Usv|l%$x_vu7`X&z`}3L3jnb6RrDU z>DjZ-&!ohJ!LGXdEw5c;)xK?w`M8+6c+gz>)Vk!;IF8B4FD#`U+FLAG*DZ}Y*IBdH zKIh`0iN=JqP7;inn3LFn7(+n4-Dr!y{7 zYF{hB+cOQ@OzQ2-C|&>mT*Fm;k9~#}>I^txJ%9dK_IAs_?Q(_x{r30f?EYQ@=w?L! zUyp@x_?&5z-DmYp`WXECcCNkD#!1DQ4Eg%3~nK>ub+8-0~l%@>%yF`Ay7$&R| zxyb{u(Sg`#b9%egsk_tVGur-(Rk=~@Hs3xFxJZv68&4TBbQvzgHpa!K;wNGu2Qd-6 z`}y*Q{=fEyB(-5u0Ak|+u`#A~mnUH5*c$T3h`5CXEoLZi(&Xg%|K_?X>li_X<6a58QN2K@dO~cjgnN=-jXZClfU*1GS~6|D+z(?y#Jo+%-R##&OU!rs$b>=(N zdzwV=teo_SOdsQai!wJaJ%aqFda|KyXa^lmeuDN~bw+|0dzG)DXMsj$GwNm=L~@RA zoOTfHtB_|Ub-*W_facbhUReDznYKt?F%RN-=>um+tSuQixP4K-@%~FHU0-|0vU?`5 zJ(N-8D!6+#v6Gb{autouqXD0sdz#tkV@b)lfH_)%)U0%y8rVXb%qbQkqo`h@57r&W zT)R|>y3xB%iOaFOB^dY4C@mfTCj&K@+)`v&xO$ec{gfHxSa^E2u(OqmO@~$ ze8x#*_+j36?SKrsOPS#v2mK~I=TDQKVpA2#a3pii0LP)AJ4ZBNqwuZ9W+L_({KNWd zp{tH$9i1hqNn3<}!J>n_i;H|On$MMJq4`Nzw7PDZhA@j@&&}_t_c>bcO{j`QERi0*Clp?petv#4leTdGTIV$A%a<>|Fsgi6>1p%wf20|DUYnCmGLlt& zQz7R7Qpd<DunEuPfjn$Ynf4oL$Sz%NKAv79ywPkG z5XAQMrtmJA;|1`*_?jzGm!v?d<9{)ISXo3|yr%}f3!d}ot#m`LpNwQN1BK(kiY&9W zXxCDtlUAXRj8l=g5UcBq!Ax+h=nXvEe`G!^Ll(v}v9J(!ap7EDU7b--AQh~uOn5$l zC;J=H8q^VhjO$&wddo|_(U%DLS*;V)57ut8R>JkQD?08J?aeE_&@wgpfNBrLntXJvG{T& zmc_&FLhVYj+_lk%mj&beU9`HMJ6ylnf)Kk>z9Di(cCa(KOnm0 zmX*DexPfPVV&v(*f}S3lK#S<{$w`be3+xsIl);ERH9!^>I-9V6@tSUI!DHv(U?dCA z=k07f?o2EJ;P(M30T+;3D_!KeI@0Is?uxOymzfz<>z^grnj9S++h=Bo8yjE!Xz_R_ zm(D5j;X|S04}TOClwh~i)YQ;ge}A#&i}_^rDwCE;$tPo*AOhbrZFaZV?v*s!f*ncRm692kT)q;Kf~XmU31SX>k#`Ut|tjSuE9 z8y$>W38~=WY3Lss!Yz}PVWLfw@>#RDtB(-yxL8{i)_DmJPk(cBd)wpcj&|m4wt&#m z*WP~AhrYIkkrm1Mel(RY5(1Hl^M>(k>)PM@os{1`P28Q!l2PKmM=%6}`L#AOFVP)s zd710@X3w@`WJITAY-mX9EZhVvvnBA4Qpi^bxjoy2mjNp%Q-XTbX}l%(l*<+W80IO$ zeAY=Xp)ImQW=4iWZe;Bjg{F#%ka`+r-$Ps`Z3@Be{wk&jQX#sVu@s)Lm4^$RiHjg1 z&j9hTZ%EnXbaWck(bwh@0xaXW9<&I(Dv)_Mc&4?B+xuiF!~4<6 z$uw{eE-Ux%=i%k$Z71ryZkg=gaRI-*djxqZ3=9t9PoQIKVH@?6<$O~TkRZCmdWC#v=lWoEPX3N*J=(Y6`8TCi7 zy1IIZ$GjlLcKdVU2^>t!LPPL)v|0DTg8h10ts6R*ZD5$kje@v!^MN1CT%y@DbzV)n z2DZC;z14I8Le5Eg-Dl0Ll}0u_qQW4EH#)rkCe1ta-t;_pG6aGIjOh4>B8R~tda-u- zM2y&_3`os6U?RVygy!%kC?Gt%#BjLLiBMe2!Xl|Y9im7+7HDU0uMEkQL9{qMMOMHA zoTY7wH(_EO1#=dLk#EnINHXX&iWpcNpX5Jrjz#ygU=lgAW-=HHen+X-9c@FvvbilP(aEA1j!eI z!b%H0YC4)N{Hu;MSk`U{Mb@}6ZnLf*P1XfyrQMqP%sA*lQ)2%kJMRWXVclnhfG6_1 zWJvV%e8g4ZtWPs2lG42{0_q>v!^A@!rhbCp@e%UnQafs``FaFqila;gclJnetdlvd z0r>c_8Zd2xQui#_w$WH=+h$YIij3jmYjB?9(ynY~KiCgX}-pm<9)>{TW2+UC7L^*(>7Y z6mAGvgl3@08?ldD0z0KZ{zUU|6hha2V)>4+u*26vj#elVC3=6KXo3qryK{P4=4Z>- z3JM`m987cETJiVPe@;b31qcWb2X6F7Wl*F{3$nB4nB{+G*VVoBjVe%(7!GHU7Ybr$3UI^oxVt53TT@3i%`dk##uIpO}yx?T@sFr{L~?rdK}ZbXqy_k43uG+b^Wm1#jQJK{+sD+i^1#@wK z=$V7+{~`Rzo8i%6>&w$*f8LVeE08ZiL!zxzw74@0&u|37B(hi1G$UmM=a7`d+&=H?h3+##?SiMWMlrrooUfA7C{ z_m_?>oX`^qL$AMv_Rk85TK{)iO>8p%z2QGkCNu>6fwh0w_5W!>pT_Xe!NCu)@$psv zPT<@>h*t>oTv1j$Oj&~^iT{^pCKla2Jr(K>O#cVjZoF3w&M13`J$h7z ze>f5dpA(p-m{OM3-dm=ZWS^M6K<9bcJX+e#h7k0+RR7gljQStFXH#hFP=;4(HJ?{df z6g4$N^YW~kd@Ty(zfJ~NClwMLU%!`ZiJeACXb>{TB3BA_Yq_~!+5B1 z8bB{u6&}gRO0f@D@CLffC&?XgEJtAtd!bEE))%z7Fo`}(ydJ32>}pRE3hP#QLb0E3SfpXpF?et|4^~B zzb~e(O;oDW^a_@BySlozPfTEZFVn;Isv5ZY*#@3SqH1d|!_j`9;!_i<`@lvyK|?H* zhG){s!p!_R_VzM5){_+DdS)DXz~5fx`EO(4-m181UN%?P<<9{%#7Rk7)Kmo04hZtL z>2zbcJXNS(8BFx_%6ISz-tXiczAcYYDZMbPv{<h-otgRf=C1qoPagVHnz=ENR{m1!LUd82 z%0?S2e$Q^h3d3{SE>HlbsOXD&H#bI$7o2b>O%tR|SR>@gJ#mKxsW;{+v7winSh)7eh{ZdAbhP2>`z!kLq?LIJ}9#tXe2DE{h3k zmQ%X;ucRW3B-a3Jxqo)~`tz8&a@9pekV^(+3HS&?8!5F`~Lsj>A~h z5vfb0v@(!sbD$Iuz67=U1yYm^veM?edBvVQ0@yAItK3hVgw~XzU*4VNj-0+> zrTkFkD-kyhbyYGk49}0AiYJcN1p7^Q8Yl*eiF@5*h0P|)Kk54P?fi2ycJ%^g`omvG z-S0rPpL2F>{icFhFv{ArV2MGhYNC81F53C`V8O<(=HyZQM8?ok=mRNyenwm+>w36cD;uJBy zwce1xJRzbooeSheJHha-+cq3E)23`!^A4T_^W37~dF}m(5SAE>l3NBAZuZX^-0~?d zyl{03--2oFBs>Gk&|C62e`T|m*-X}Dv6%5m*w~a(#K>N!d0%`u+D-!b9Zkyw6CBv~s+2_Rca;y! zBT{hz30l2`i>1d5r^y}2dF$Zq1FVB%b+AI`G2*`a^7RncKkBRF|11OrRQ@g+sNcbv z!yU+Focw8ueRN9N@qHhyKe!fK>wT|bc^j?@ydn%q5<)oAs4GvU?bfqij3)7s*OVif zi`R(68bs@A-*#s?ZDCDjc+}<=Sr$~nZx$cAO~_HhCj!nIC4E|U`0}a+HgV?_C8t+% zSzTHVoodcaMU~fFOee)l<43Z)eTfq*hdlc{_z=;-Jfc-biTfXIt!%da)kdj54&bVSQ-BHF1|k*o2@ zqpSPhu>a#5yj1ash(3QTr?T=JB`;mXb+Ld00brFU7-S_}_pGjx@p{~hPtVa$Q+dc* zf1*VnDYf=fbQDApsX|v)id_D3beqoQcpkZ`>X^ceo}@Le@4C*86h_*9GpHg4S^+5z zhz3AYd&kw2sxCj54lV}wtFxqUeeF#yva|!=sItGBc?o1icbw&NXb59rb z&ggsjFlceqR@hUR{u5AT1bLq1tJ=)-_>7mkA5BnLfl4BBYqK@s2o={jfa~b>95lDu z?TtQBv$A(0YdR8}%e4mCBAqhDC+tyidXNp=Qlx;DfxzenN+l#9;8oXv^!I6*pxxlV zmf4`-zw8|__g+h|b-aPR)@yw4aXdmSxdUmUPNh$mrBCUoI#f!rq|JS_)<*_@6spgT zNC==*_$KB%@*$dIf~Zl$NQqYTa#}D&r9z3S$hX#Wb9=i84^VyY#|q4;uB!_pz~Qoi znivnWTYhUsc-ObVU2WS?&#TMQ9)>K}dEDdy%zCn~Cj%@-Cpw}+K`3A$R~dexSG<(% zH?wd_Uu~ZL{N{G9dK^18#K?X5Wu48E($Lo^HfC=Byit;A_Ug>6R@5F;V%mbE_u|&b zg_g+^Oncc3$UKp+0?{uso(FYR+EcT>9_50w>zKyw5f}eZBzQZ{3F%L8H6W|5t|jMY zfWsYOtoRs@^XW89;ig;!x@o}kfh0CFw?qe$%X9nYSHUnNkg==v1@AE`0%jt?#z^k= zD2|&{Nbqla@z8WO{yIkAm{}Kunl{MW$RfLiyWDlbxhay?TQ%~VujIdwt8#~i2@Y(w zEI{I-zlb>;3=2U$`UaIrio#<_$c05k_D9PCSGTuav$Hs+V`)8^qCpw?`7~l>1>rZa zs!J|UQXr-Ug+tPscb!~jd-bbs+}cjYOr-pls*3LvNPNRK273Vr`^~P%G$}`GpVaBJ zkESW!W@A)bGg53&RAs%;034Jfjs)zUqwi)vsn4WM8rFxi3GsvjVE4+ngpVH0O{11# zB3580Uj(gWGj%s80LWI+>$#m!P@-U@BzTBBjgZ>9`FS(tlTqw6Vk&c$TJxL8Mgh8k zKKg&~yXEkoVsjWvS0>iP&vR3ZPXJq+)iXw0PhTobWB=^&Q(@<{W6XX}7QuFG%( zyM=MHiHTn-$*a*UHoiZe(0e}YnnG0y+1{g|3V^iaNs;#Eqm*VL`(HJU1|0P+ZoDB%=h{2Sp zwg&m*ny^Ohk3vONMJnZ*dO?OV%meEKVnc?JOl5vhvh+uqBB`mEwHS>`cRRY1~Jdu+MYTXt-$Zf=7YpvJPEb+4$ zH6}4IV7c)};BZ)%f`lgZP&zT1Oh7YkWMZw&Y;4|OVPSFe@rAAUNJ&X`F6Ph6si>%k zz}OFsd;&002Xj=}8TUrLdAL4*&4A{wzwGGq;U$(T%Lm)>`$keRuy_35KNi`!IJ6(| z(V1BviP>u~YKtfv{7MB5hi9CD7JbGeEbEZ$CLi+7SlB`<70J~gdvc4+_t+{8YqWCC z${2)z!r^X$)70#3YwQ}@OXHfq=bK;p8A!Qm0d-NXSHF%!^4MAiViG}zb(SO zCpvs1pLXSH^&xEf*7%3C}q>-IKUnVg=JL!9F`F$f!O*bGeH*Rxxj8my9 zv$;|en$?IC$Eq?j9YVjP2A+Xff@Pda^LEUje&0uPj~5%!%_Y8PEEozYjhsatco4U! zzV_#drf3?&xV)8U$>(8z(h;+fxh%HT8-I{^Y8&OR(lll0+PvEtye6b5&GH5*Tcnjq zKzeGtqKurJoSBu?H$EO$Nm==1wc|xJow#`3ZW=4~`o>0&l*U_kS?g(uk7h6x_R#d3 z&EhaWNX#nncotzlQx2iU{Zy|L-oI$F&xY1T>Y^Rk(nE)x-lYxw&v1XZwja(w#E$lr-*^ju1WKmp;iigCl5-6W4o6afg^|~CA3h*4 z&3RCi)T@$9_Yor0JH6&XBlPbd?sr#shmAv0pkQ{z*uyb?M|idS5Wdbku91trB*9~Y z`yHk2ezK0)RMO8z)+{z!8P+y}X2hpd()K`!5fmw>zk~lQ{>Z zZPO9pB5C1EaG6Nstd&LKBK-lnNsqxJuwul|LTUUw%C>=-u9Lw#ta}O>-LlS1q{{bi zEEAhBT0jbp4Oddhr4I1CeeHGpK}JSQM8p?rEKJ%g$u1F7ta;^7uOsl%tAuL(mwsk= zIwN!YHE2v5%s zN{?6fPG@c+b5_vO0#VVARm^x6zX%kxR-ouhT%2_od9~i)Y(riLj)2QjV}#`v>?O*) z7X{b9z5TWMzsQB%n{j;?*= z{&=>>#;4%rA*6|1M%l5=d}m#oUD6Fda*0McWKTXQ{Tn>nXityI2jK_Lv-h}ydi<&h zq5W?Z|A8<07q37#^)VWSKeE>LN#AIx`E15??@s&M%?WiYD;J>XPXk3rTNcHG~)5<0Nmdmc*E^e^?Npjq#NU)og-~VWs~k z2NJQiXSGQxc`rIn&7sJ5E}f}~4Hnk507Iy5#(!?+%x$EodY>QJRm=n}r}eD6&)hwG zu>Qg{+e(m0VUaCJz?N33wM#a>i|0#>8b!3>yVqM3pm?$npI%x*Rx+a^d2!+&mdT_Y zX@=~UF5s&Wj~qO9w_G3GkM>z~2X$Y-8;41-qcf#GH8#^wHKoB7{^U|ACsN%hvn)n9Aj#VP!bPM5II2v?xR zYem{QJvI5Yn*5PsciCOx!*T|zJ&24xGwml;=QCRgSq@3&B2?|w8zktGC_>;*+q&r~Z4YjHB^ zG`7fW=8r&7kIatS=SrYVSv|1U{VI^A zeRvjd{WF{vYK92{*=YDF*hwbHWFlSbsz>03MNa6%`M1s+oz-D??6vEKd~cZvS^sc3 z&2*FeyZZ{#E;?DqviAg(mQ@iiFhP|RW|l!k%NU-88$~;9nfYZVN|3yYUrNn|#7r_6 zyc}X~I0ntwWG{rO%yJ&#{0F3aJj|@L znf}&ajj_~7wOHe#;%wp+voP3uYzTE(;yl{W31fyN!tDGKJ?s1QmJ=AQLoTnLU^9G* z)2195(ihlr)9<4YP?z($K zWS$=z>2FFf@Fli3K4@bw2pH-gx+CNIe$~gZ!`=EWqHjzZj75U@!<|wk51R;aBrx2H zA^cqdscwuM91lTS`0_(V>b)sO!yNi2Hq3YiYkeCh_^oeh-IfhIy8RaQsl7l#z*K4x z-C~_*NR+^k7^hhCArS9w4b?zwU+YZp!uy0TfTcpsx$S6Z;>i5XNG^vNqo%Trwqt^2 zhy0!;*tn2zhOI;2D=rC9(b8MpX|Hd_!Qx|1V7I!3#%&8MahQB*L>=|zy%xvLC518i z*8;M({EemoNQTG!FX0+m+A6!X&VYK)YgX7t%mf}@Emn$UR{K{zy+BwRk4~sXlbzrd z`J4L9HK+?Y(MC}@c<7a_XDvK&YAV8%2mbQy16Gh~i@%DG=L=*Z4^oNQ=FqN{dn6mp zw!n>Dp^>?XT5;pJ^5&cuwlVVJ)=0+LS;wPJ(>N=j6EBzU8~l#zUl^{hUU$%Ve*#=? zhYk<`hNs7Q%mX(US&f9O+Dp1+h`1_*5B)T;)i`0fBb9+Bgu1T9C!nv5jIqIrRs& zuexO0y05Wb=SHTvprE3VbwA6V6N+k@dR!un+3MWtcVF3nQxQ-Op)<-B(IQo>K(sqK4y;Li zVP%w6R8#U5G{5P^{%wnYS6fz?#_h^V@9i(?m;0I!QP_k5Sj@qUsYKXvBFUTYTgLvr zs)4G4iFoY9^WAJylmbLyeC$cMq`@Q^mJyqn8VgVWb%tR=5E>~CHGd)s1_s7D$Gtbd z{klIbNl8&rScz6$sK>AT1H!YLuy?KPJz=;N9+x)7dTqKXcfwv9BXPF*Ii{0U`J#?C zY!R*ir0h=G4D4RvTvy9A-K&=pArIUeW9arffbR5b)P0vbB^?kdmugIMEn&d21=m)YtgYBn8>brOsPlYHTq0O#*ITA^f!+qEjTxFSc`N|2{ zhl=LMp(C+OT( z+X+^^9QAm>)X5b_`U!7I*?C4>fAGj>KY~1|x|@IU9LF-p)?hXo*8gA}bk8Ub<)rd6 zV9i=j&Q8R7+lV$LbPP5D_mfvqOt^70J9&ThAW6<$Li(rikuzI_h6`cS?f7*I>q;ykjq=w+-fi$E`9b1;iU1HWiP|M% z3|x5r7jInbyc^`6>%>s2&?V$YoREsT9GDKib!$S75wVbwbn2RuPQacBU=;C)z@w}6 zAQG@ee4(smud@7LU}YY8oZz}knMfnH1U2*frU(4SOKq4qRUQ#&)WyI+oP3eq?xN*X zE_eHOmXtptZm*`?y#$9-@2rD$n@`ly|Ew2lR_VXEYVx`o5I~j)bO$1t?CqOVwVC=1xkC;U%#H3DhiRp>|GAfL^%! zH_dLRdFX(?X7_WT;O#yegKo1r9x5TH75b&=XbQ$hPMbyA!-D%C6(0?WmbN!HA$;)` zLIdIG?iY^7Ql)-hB%WXJ{%n7{Nq#YxzkVLT3oR}L+&eXpOY%SRE%M$WXi2;%TXY8k}K1dZrKrzlfY@_v{!?#R6sF#s<{+J8>J<>6-- zK;N*<2eh+sVwrPzo$?kLR)PX5ZVT}zPP-qnx9z#AUM2>pjPn=-Htkl9l~k@2ypBlB zs4vuz+FZfM&P9nDcI0tKYU=^ZXghoW2Y5*K+rR8%OT@ajgLw;slPCA8dF1 z*S!utvpC6IW+maXq&2?1G?I%l7vB04KbA?2P{CTKgXM}WsI=m74}+pxFY(chR27g4 zo8{mE_gT}bAJlRU4PrY9@bG8_T@?xTta8Gb9`E!FY+GN?^F7d(e%r2FOUK>!-5m%o z=UgKHTZV#EF78)@WkN?M1+gJubVAb0^$to@ZXQdkudQ;T5N=nbZ^KnlMbCaL#T=GBsf&s=Uy`HuI{H^wYM z_?A2fl0}=(W2;#{XQ4RDvNnPASk@B~`dK^X_UHZZ=D;$&ldkBYeb)9E69TOe8ISJa zFjtG-t0lO!#v$LEr!e9z5o^3v6`QveHEf4}S+D)x*#cWL8Aw%R`Gyr(ZADpe>r3OD zTHY(ZO?D>mOG4fh>+p(HRHi$-jVRoJ16X|T%aWjX_vK&a|zB@_u1toGMlf=YhG1$etx2fiHR&%>O_p+42ZCy-`M-gBtT{pO{Y3>M!bM{n7UmT-A&`r8kT!irE+(MnZq~9FBi2&mPe%6fq z_;ie5u}7E_X_EG=Kv7W!6krQ$AE`nl@c?yUcB_!osJQ(a6&Z}#1Kv z>(T^DNa%tU7+oTQB&Z=beBUqX%a5<$+T4S=KAuDV4lVR%QU5kTOOgh`NI zLN_~WZ2`C2{R~C6++qfJ;t_@7hIv1ly^^?4XWQ3w)Jo4v=IiIzb0plDzmEWG8lNQf zMtzabd&p1s4vnK%ljDxB)tPkINj%%%wIe_K(h22Wqr7df?|gma?V^i^{b?r>2~}mT zzilu0mP`?{DG9=0eMQpSRd6>~GZ9HU5#&S9yPY zQ6p>|?2+*L2;?1S@~cz^zzJj@BJpFZk5_?6t7&(eCd_ZinGv&gcFn5-1fb?$&bJ-| zW*zCP7r6jg-<|m$UKPx_0YC1h%@?$B98|)Jvgy(}!k038#s>%-eg@QF!*UzB5k%wv zKUb^h=R5TUIR}v11G?lB9&++)uqBsPk- zC76Vl_!&7_a(EaEjuC4K*G>uCH=>WtsBcnRaw_k;el_wn!-?j?)blf}>g(0It9}Tz z0W++WW08740A&1*x>$jv^t1cj3$`smvbdg4DcNzb){mCUXQkRLOmdrM7B)RgIbZ`$ z?Rr;yc=6nSbt6ZY?|Fd^V<{ZM`gVBQi~KYx9!uu#<~LZ1X+*Cdb);FCzbdjgN?U-n z)i{97!^iyxL^q|RYHUDvBc%BjY?a;x(~<;gmLx@%=p1pjpd|1fNB@Fly!k9ty}~en znda{PK7dw>f{g6F)r{-u2v-22uolU{X1>RZ7cZh&gv)k6I5GC8WZZh)UdVFCKe)ah z%X|XJuAj$2;|}l8K>@8=f}Dgw>wZqS;|rIPykKExcg#a=t&qU0dox*qz%X9Dtlb9| zM_i38x+xUdI5w>pS^2bRHO}$l1YTG#N*K+;5G5|)Db>|Id~8+wtNVa2o5q@iSB4Sg z$WLgkcSKbB&`D}h$s3xnYoqg59WF6RW{Yg@X>ErkBnye*zA{Wq^3=^mTY=4Rn&@%u zw4EQm&$CtsYOLTVmHod2{&0*SNqqR3CKM-ue!Fx{J%=sPht3FerHDa1ibjdxpUb7 z@s?NS|HL7(QuA@AC9B8~jGeL=yecr%J&{x8#7{S2;-Wbc40Wgi4`fAMNQWaCzoP#= z13_{Rq|VU9vazx0;^^gsgJJ0Ya@_K$?Aobt_aMF}H)^jH)K+MT3s-GcsTNrtU&4}; zuG8+4C z%?A|X;Z!r`v>dS{xszmV|aR971K zGdt)b7>>kBMoaH2w+)-TP>PF<4W>6%9mmLxZRI72g(JqtqQS$`-E*{Z<*}Q+#i7grq(Dw8SJ}opG{r46l9hRTu(2JbrcU9- z&nBA#f}eqsWgGScOTiS<3O3v`N=LBpCap(prMSm5thIO0>DKP58u>z9BKYJjE6~aY zH{@ijNm1BrkNDd?Q7G;!5oyb0X8bH8p?IbwEsC=(##q5(bfBAh#MjrxX6BZ-AI;xb zKPsf{ZQurP(8z~1G+c{sjKUhXZ&Oigj+a{CRJQA~XN_KaIx~QpE`J(0_+mQ~`(?hN zqz;&@MY}w8-E>6qx(J%E^inWTs@7igBV52Gm$BsGuk)t*r7o7T==Y0Z#8|1{+=Wez zjiNtAp;Vgufb=_*Rz|h@I|DH%a0frB{l^bH5C~+*_X+^Xv;GR3IPNU-xwniyIiA(B z4f*bv8^gQf@{=arlj4xhG8%$ZC?NdNY-rQf!Tgp=z%NaFEXP#-b=$2I_nI<8t zSoeHb$koy>2ZUA*=kl~qUFd7C%7U|{QPtY~^_m~3WE|VRWQ@gz`WskXUkcK($a_c7rYLtb-vroQ{F<{O0IE1k8q*=FQ5TknOAW!d>DX|gv zD&@Ud%)Q*eL}VB`>Bp z@FJzn4AE3xh`aGN_`4LH`J@3`XJ_OCeth_>!BJjhw-dh(+X_2fjBf;Qu2VX7UgPpoi>>wU z4@c@6H^^RZ9bSl|_b#1I0&GE8`KFdx>#hzqr>=YulHbY`nf1S>lYZZkiYxSv#*kaS`@$R<}^@9J?=OnavAJ z(R8_cG`B2+*^Cl%cv)gHpe|~&S(ev$aGFO)*wh3_a(OA;Gz|sPip))T0YTy`Wd0fx z^Otz9b(VwD7V?ijREp?mH8?imrz#C^OcEcdp`AAb)6f(IZ;hT-_{4H>7j_v)&u>Rj$%7-%RMdu~l;i7JPy~Hguoy9wL9H6$y>v9`yk+yAk{!d)Jl-pCC zIXhJ|%ERVt-!ZA-M^tpfX7fykUwLUrS-=iM+$(Sb34T{8Y##;BS9vI&j})zgBVi5Z z9r-imBKZkivrH54I2*gLygb_Q$VfoP`?&ze_17~ASJz`cOtq4YO-*4kh>ep+(wIvz zYp^2r_i4~MO>eR^EYbc40E3n#UX+KGblRs=z`9g4ReY|yU5v+wB=-m>NnhXcH`n00 zeHR23UN3Mr-%w$@dIdQST`H_LAjKsLPtqv|LV|u{&6~YB?aFQ>Ft77%P19w^*($;Z zY&KoI;RkJJ!|YpR`VG;gUc^T()zt?-Jp0MM@o_txx$zD1Say>Rwh`>wkXKeLBZZw!E}y_($;spB6^iyxI$4&c&bz&!pDTQ6 zwG%(D$X#YyTscGeUJuuH@8w45vJ{81?=%IWmceoAhvaXEfSQ_Z5fnDPzb^Oz657!r ztljWQ91p!3-k+5oy7e*<AEM=awv+@E)XZ#c~ zah)(`(j8Z&$OMKSDY8M<%Ja_~;qT*$L#yHs&;ddZ7o;YJ{X1;@Cc%1bXQb+_j&w-` zL6;D;fd|r|GD|;u$26#b0eURmFyaPAc4sIg6nYdMO8m`0-IekA3iryF`z6fj8YlV( zp^~DKp7nsRZZ^4eUV&}WViQ8+s?5f`H>lwwo%+xM%lFn^*&>cBKNfwH=5PKq^-`r^ z=T#-mC1yKawhd#G4zX%zNg80qK5Q_5Os$9Zgd&8Irv<;24=0Rg(rIfETJJ7*pguW3 zA`j#OYI2z^L&<*a?e(alz}#w}@7*O0pg9K;JP?Xxu5|Iz8ci`xddt7Aj*Eejv4;&7 z_zlynnV4kv7mmBUYu}>Z?JQQe|AE}5_t7`XpMTfx#38GO7e8Fe-7I1ykfQC}OzKC( zjVt5Z9uNJo#J#_YmT4J3@oDWPP&P7~{#1|z?M?8MP;g&mdgK8IhgoDu`{&3oSfcdy zR&iFyP&GoNtc!Yz{bIl`+1S{+C0ywG9I z=cz1)Acp%9q^h+q9hz1XPUv2Ij%8Ux`VD3@UF#7Yawoh)`fN&Pb%=hHIzC~BHmM!J z=4|5P3&ale` zE5A|XW}FIu!X*T5uhzSfp^Uj3<{Lwy!qG|-IsI8=zy)_Zat1_OpR)$n-Z?hVSdF6n z$Q&wu;@r-!Ll|tmb9cXOjo%lfq?drerd1L~7Zb%A&qX!Bb-tm7fo6=N7Xz};CTPH$ zu=}0*W?ZK{zGyGcmL1r{uqtmld$N|$jr6I>G<4^j851NvG>;3|n_y#?3TOCSTUpr| zujh@Zqobp!ubK8-INw=D;_u{+tY&hW@R+;OyvHkjLQxGs&kxS8D&)hVl*_I@_f$Vz zdo%PZQT@GDW7WW!>}<~(LTYIxPd--_@d+-N2MOUz7<`wai91mafV}3`L_D8Q$m+O4 z_?2qKGCdXk<&eoSpDO#^FzJiuX(CG5z8R$PI$keeNA9%qebt2f&ME!3_&VvXt3!W4 zT`$zD&ct1Hgaq?2vle^sSm}8iNegHhDPNn`EO$j4KcbpCx008JM-yUa-DVSd)0JvH zTzx<7%prTqIgGRUQdoqYsEN){PD17U&GN0uP;XX3TgC2mI%8=k_1+!sPNNUDx=PJn z1dO7_$v_ZV?k&a=tXYOV|D0HQyk-L;z{UX;i^Cux5|OP!dBwH0s-6m8ld#_oc4k35$@|gdf2OcTPbMaw)T8}$aU9OB2{6#mv7+! zbIIZ4bFW7bEFBC~CE4f)o3*3dmq=Q-;>#sg(9w#L{ddv-FYewlD$XWY7meZW4go@N zcb(uQxFoo{yIX=gA$YI=Aq>GnaCauy;O;v3;Dd99B;Wq_*=PT_d#$_fI_u6a*38gv zcXd_wQ}tBUkh&rXSq`j_CS%@zRU=63pyMJav^Q&=_q5Lc`qRKzL*-@9UA|02gd%n* zFXKj5I^}8V=$H48p3S!)bt2D%7i{^NO;kmdpbGlm2LCFt3o9L>Fn*WWnvAvf!;ZWa z|B-EYMqR3Y*ufn%IHqPX;KJMIpQJ7_Y^N&sollc&Ro||%>SVLh&pG>zK+=uDw<|%j?{Ba{dgV<3r=zu9?Pa6?xj~4oeSy9d4H*p)D zJ&l=xi{_(ERV$9}D^fM6f)yNYP$j({vH$t5VqbCwn1=EB^Jgi}!F<{H)#CD&pp+EC zhl~fMQJN7#OfD*N3JU2g6!VAb8{$i^&+@jzf07;27(czyaT07Imu*7T7>IIDO+3t6 z!6*^l2^+pp80W764ita44aqm8xvSftF)%C%W_`KBfyUe!CqHsw*MDmJfq{&`#XT)Y zJbmSH)dpl$6_^ucb#s80jhY`6lXTkQqU9wW3!gYp^aYG`UTvs2A~wo0ej+*mQ&afX znSktop(plRx!4sWTlQ3VZ&9g0)j0yW&aq)@>R$FN7L^`r&mhr*21=6q6 z3*aS(XU^6@*n%ZcNf6<*aoxdQTr}ZiotZUj84){k6Nqb3q4g{c70RKc*ts2+Ib$F6R`A&k-8ip{!d#8UEb0Ze|7)c&Ag`c^EuDo%CdGbz(46x%%j9o~LE4ny0wnxCLrB$Tk>(PE4fNG=oB zHA%Zf{aq?~Vy&UVd%Uw_V_o?^%739X(6Ad==f0c5a6wlH9idJ8tV=DhTEjupk%x=z z%a1{w;9Tc^oz1}rd>8sHHfm_;8YvUdfDTtW<}w%QmJ7C7!KA#94q4ytei$4as&^EBZib$~W zA~%O0()K3b5!lZX{#nZsjIb$n}bB~q)TY1!G8Gxv<)LA$3&m_`%d z-(H-KDIaZSIIf;e84|&he`NgOoj*p&;RljJt<|R4mN!qxaEy$WY+M?F2T6zD^UBrt zu9#qil#Z9*pMWEI>qvD&)dRYxw?8sQIURU{lM(K`S5L7&Ijb<*bw(Slkkj}Nz#A0- ztp?;ImG!UZ&G5~8x!O1BfkK7n9IoHp0RYH&P!RuNo!l*BI^P+} zNKgq+AFMUJOqhMpiXmLF_7$yW|NA$~Skyt4$x%8k=3joueWfzt zU762qgnf*2ZXO{$8C!vurln*#a*0SDBd0iz~j8xZe=fv zm_Od?@d`hKX7yti)gq>YCRaX;yyMZEE>&|&{L=*n{!Mt=38y9xsb8UmObmSyBQ+7h zu-(;x^myRylkY?r@dee8PX`AM@Z!&ir7U>L_OHG^c&n1ADB#~xh)U_9{KxZP`w)M- z0uJV1@8KM(dhWthrE?pdvUIozs?&6(N(}wUYD{1S2NPSUD7+%1@)RdA@9J2aCxa67 zrPG`@KTnL8MBj5QWER&kfAbx2U#UWYJi`|}F`A!cl2iMpnW#DiCK}JobZ7;JDDTqW z)sfo2$D=GxFd(JXH<^6MCttg0^ zcru5+J_3~!Mv{_`9;uBqpmR?RPsZ-e@?}Q%f+`N}=GngE6r#U)u_&$Lflw99s-(0z>Z^hDmrRh>Z|uOO^+0nxRC8~ zttZ_)Um)YZ#VM|XiNpjN(GNtUO64g+wev|kkQnVM(7VO1J1?)X2y1THxt0(TO!a`% zl!j5L%@jVub0krMJ6?Rn-&`>lAX9nL|HY1{R`DK!nRPHi=!&-i!it*3?~{?XKh}5q zIxl&fC6MIZn77)&=w@ChpQ@7IQi`6k(rCO@iw>dXL(A^~EZ{EoeyhW;Lc_#?M~=pr zviOQW!gC|mKlXCq`51gjoMj`wms$I)OyBYPp%~F!RMMCOpR5FAJInv}DlRq+TSF!B zzB~1ibP{5>62{n*kui1Mz?!aqOVuOF%GgwcgMz#Q0|QmJqHW$vNlAUFcDHGr zj($VA{52tRxXAUJ$&!bzZlhb8%KHw&ugPM5LI(SEU zp3$)fEU$Di=(yNsTi*IXl+Z!0+*+NnsTYV#>5L}qanM86s>ee&LXM|CW<68@;aZcF zji{N)l6k1)tQ2SZ4p6N%aWf5)f}^s}A}OcZUt0?BIK5e&>hwd=aU9mdPdziPoJO}Yj`bic9WFzx_*{!x1#*c%%}UA{h_QApJ1}7%o9Cl_u~7R z_I4H_qEyqJgY!L77TN08kDk@R<2@}!6yGQLGXA;##K;Jwq@_az(8NSV^}l{q^XS%^ zlgvi^<@Gu?R&xEbs0kTz2L3?hD=jNx1OH2crn?>6JO^}cF?f%nRY*FIsSV9YWav0S@{hwMXc1?p z6FMrlt#Es8r3O1JNSvp%I$QXaoJBL}$5;w(}n#2ETU=Ct*#Nc)#4&s;&oW8Fa^B^Pqacsesq}@uDhj;&ch$_pF z=-@&Xtg0fpexX)2B!TezUmiYWAkS53==DdJ5ywbaldl&;BltTWI%2+42-o&Y80WvM z_-DNTPafvQ#)xOoLBPdE`;vV=+({Hc|2?vRzXyPextz-rInqh>nR}9o_It#$0 z`gN#0Z<6Xk6!?2}>QLe1q35BeClQJ8t(mP^n;WoAyRCQe5xcly;o@35s&ct%WyRVz z;y|^DAUEtgi?+yJ?K|owhK-s=d?$YbNJP2IeT#Fu)qk-9ba|~DChSN`aRKafWsNG4>_Bg$ke3$JfOl;Zxt)^-Hh zGiS<^DM~XpZ$uV})76j8hw2pCKi(uWX)03)I>& z5<2#)uzklpAYZ#dH+NaJ5D*RgI-CK;W}~bO43LB^BU)*(KVxUDboA}fjPD#?_ZJY& z=b0S5cd7ue$r{uYdd2C_2d%_Pj#&NjF`Hx83R&eF+V#V-EO+fQnXH0U#Lf1@Vw!t(LmZXnenfEwP=hQ<6PCA%g9`;8a*{d_}c zaeCno@Afz3E|Brc5Px9@J%P~H9ud_0_mCeKpVn^XRpMgd0`~!C;UTcxO-xPZ;U0*U zLpAVoB&2VLz{?jC%vvWP$|{O_!fM2_PDypxmmyhah6qg!tJ*1NZ+&koq<;*xb-#N1&QwJ*vYG#)el=*?#R+~4ORB39 z=gUKpQ%7&CzU!;!B?p0=w`616Iv5Z?+M}fp@5rRsqCfF(YShR?(G11Xk5U^!*+$R~o>DjScx((o2^M`vem zTc~IQvxC6Z5-V$DLB2Y7Sgu&M%|f=JYu=?TP})tiI-XfS##VzJfgWCl(04i6V_HKC zPUk{}3O)9@DM?ZGNnPBXCaSa-(l^wBxii8~s+n4&RGWk5nKZr*?jYy9%b^)LmgBUz zmdSe;3F17dDb{A%|8<2JPeQ{v>(ZOp=O@nqk}(%-+^?g$(roK37jSmZ5+<;Lgj7Px zcr$Yv4*;I}D23&v4MUF2m$hTcprIGD{ldPt)nRMblQ}8HqgAto6mSJSTl6dub#Bc% zhFM<2cIHUfA=hKqnY3USDe=#-^J#LjC5i53F)h}+@)1w-Y5IkXqm@ftf$GVb3FPz8 zC_-+fwekyjxq82++S)`v{6;*abW`SnrKi}9uaJJa7iNjC0w9Nhqiev|*PPeWbYJ!B z;mH;+VlFnwam^8ebWA-e@j}}@v07Db5lepKN$8W?JLV%h9pqXNRr=vDYD@K|}CebHUE&n`c79if>=0UgEvh<97 zLTdCXcjAt{mY$;^J-%L9-f1U?tS+SmZ%jBe-w&2!+-&ix*>E;@#31#&&>dal>IV(t z-Gs>xn%l5T?k$AO#bY9mKJJ>#x)8v%h75_Jp@xqc&m`TB9?0j;RK%)|i1wVxa=IhA zWx8iE*_>dlX?`MrQ8InlI$!7D!3al%`6M0s$UERr6V+u#Hcywz{{v=%BEq;yQ0*tR4|9!j{Ka z%M%+%buK4NN? z|IN;Dm4-{%UqwZf#Ie7A?jPwlockPvR!#|;b2*?@e;sd#y}$8#wnlc9c3TSvYY8Okzp((__9N3=INX zPObgiR=ZQI6{yI$#Fk{5UrPb&C}3XRD-&>b&JresTg?fi3>g9`yB^ZN9rm)H@DJD> zY|RP~3V1nUV6b~OHFKTfab4B90I6n%3VT}@-rQ>6-NTKg^mf}HJi@3Uu-|ApO?Pe@ zXM}XuUd0%P(wgj_n|F}3aIq9lhArxZL8>SmE6LBz=@XMys1EeuW#ZikBvDB9RjpWAxj8wy@G?Wh@kt?;yl-wTc7?A0nS=yf2ai~XSYfMv_OTnSfwOVcg8h9-bg>IgJ`&2?eW zRfoT1sN$HQIKQbCXTpayG$~kDayQM8D^Lr)Bu;#;WTp>HUA;VJPgxSJGk3MVH;+k0 ztdE80I+|ma@lo`tJv!D3-fqqwLGGUC>qdKOTR2p}33U#4rLU)q3q`&DxG%h6TgB!J z_$CK4!1h1Ag(@qReg0TGlcnODg%`u1u2!05^Sa2LY;`&(=MFi>zNN~5z}1|@fZ_gm zS15b5Z<-#v2DvxZ$m1asRq)5+80}3qziS5~DFiarm6ikI#y$M`a+F_J2W#QWZ>mR{ zt~qWz20VB_7C$Jrr^G#~0M5B)W?c>D$M;yD1(|hh2glHoT_twwcd`2*bNeEm6p|;^ zZ(*0E-1jwCMX+?K`lg=U@=6$M?Q9`B944|gLD!42j)ww|@0mMek49&64j|-N5}}nX z#Uc78fHQoh^rgq)=$bEY_;d_!IfnWhqSA9B?sxH-US_o==vsSuS{>YM)ic&vGh;_w z@~a<#Kh9sW+qcA3VKnZ+il!D(K+bJVS+(YKMS_*eyPEmeu^5LTO zprMcd1A56lkchHWw>wkeA}tjrvyDq|sFRsiSkqKFeBs1&K!iO?WScZLj{CYgM9%&; zx^j4O7&(!Z>UhDrkQEMDJMVbnKIl*lIIpyo6OXM?Ys3Ph3lZ7dP&VkH`KuUJm|=FU zb^#ybCZ0mWl`r`&+?Jdb0=tl~{DCg{%J4>(Wce;9=GRU|?4#55l_e~0*9D|e>r%T- zZ*5a=ZbmZL9c!oKU9{zaRF(5}amoIj#tdu0%gaX5&(*Dozo)^BFZ(m#8XE}LSfJR# zodA$Mf0C*h(r^u_^3cjLo$z6kJ}%O>ay)?HRVsDr_`E;o1Sxhkze8B@*Id0SE%hq) zd2XO%A&*Wm=X2V8ZL}rC@7b{d9cdqaHd$C}(0V%p8Jd6l0Wi`Jcvdcu{elhdU{20@ z@&$PHg&?NHSdlH3QHCrEP8r&kLX-r2v(ycEjnI<6YNQNn-I?s0Qfi*at8QW`Qv*8{ zp)=-|B=%v&t1YCA9eHl_u1*|2hb5i*gx z3Fz5MX(ft@b9t57HNYr?kh018-2+!m_EQ7hv+O0I6UXA5KG>V)4PJx5tY$~+8fEr* ze}l%umc&AjzFOw{d;7T5%G)A;gCEzK`D(z6YmAUNR05|_&*UHSdm!>^z1+hQvl$-Y zV+m>U26mBn43yLak4r>0{buU`s-`GM0Ktg{DnU*c?aVtMHta)P+BGjW+GR6!i$HjZ zZmrYh_vy0rSw+2>ilOH7@B5anqa%N2>CW&xD{8}vXpH@4cx1p;hxRyU=8N`!9U zF5fQ`O%MT+`Cnb4Rb}ih>dg?f2gDn#_EcVgj)@|9x5)C&EOuFV#0Ioyr%+tYCLp#a zIWk32Op#wV8n>cC0xL5AOCp2_=jDT9r9QM0ebbzB0v{ z9lEH*x_N3SbKvVpI2rGSeb>@*SUO3yt5FPV#L=yMwu8Q~?Ifn%k=0UHS@K3;Kh=ie z6JF`bJLqragDv9JO%>BxFyF7{yAC+55Z!=Usbw7HUrE5*5;du@VvDBgTrXFttaLQg zIPry@k4?k}-*Uy>I>RACk68SreS(hs;{ta2K*HW*# z@W$NW?Y(_$>g1gp0CMwz$p3qqVZMu{VfGY8fmtZ3u7GcAO{l+1D?tu@M$RI0ZC=WP zTgJSEG^;Caj7pn^}(+j=kNan~uQ!iJ;Bo+A= zgT0rU@u^a!{P%o;BF!IcQ!*6EyVsHYSeAT6oK^h_osh(~iNg+wQi1a^y%WP$jt1wJ zo^ZVDuMn8h-E+$2o9gE(cvY=_@bA=O9+U0``(Et|%LA zs#bgIKfj!UU~lR_RSrBQiYqkW%u(idX58k$?21-yI5_RjGB0o{F#MjYpu_{#Z9b88 zY|(FonS^-H_&iNn9WThJbLU04#>(N3Plq2&(yOWV%eRL-FQyd3u)DT;3l#3;+6RzON{QmM@ zxh8974ZDu@3tfRG2YOO0y;vZp@KN_RSsh)YYxCyvbTtx zsALHG&%(qt3~URfFn^|T8HjV>a;FkORx8|0b~Cb%uUksReg^2TjJ8t^ z*GglATwHyTFw^uqowMRmReUk1t0Rie3PlZyXCzj>H@f8>9Slh(UZ{RdbEAM90SuMB z8f;t41O(NMDd}1TUby)NMwu=ThnK1!%9#=044SSI=@G={WJjD~22wYMUI4=KU2oqY zpK`Km-ceS0Su;)2e=|Cp!&p||upSVm^AGwFy(`dcM}Ak{-3(l|45{rU5`Vj!zr@~~ zQvcgrSXb0q$0f9Z!$N<8D(Cwx9;-x66E&Dj7o^6gMeiG)YHF9sI15+^Qj66kNrtC0 zE%A%-62!{$cTR7!=Nn7YqMI{+F@Tjjvsga9buVOf=L%B-y_}V8q!^D0sMC>ytDC(jt^n8t+m;qNN7yH~HT6 z_wSLry-VvIacX}YmF{fvi%3(sPr34H#C@Pk>aAlP|D<*uf;b&-oPgM9_*Dgd_$}S< zNyX2E%_v_jw-=@C7MthRp_;F~5Fyo{xX~koNJU&`T19KNF6^%_Qs}IdK;ajfp&%bP zrC)wa?{T3|cO+OyF!ycD@aIAzxChwds(CW+eo|jd!q!yNvn$$qwh1u=EEpIZUG47q z_gi1PJ=_VlP~n4G^+nH_dq>x%OsF!{74u`YF;{jBW_XSx$M=cAC!LTuDKy<&iF|0E z%F8<%635Fy6c&-Y_>C!%t|>~cF?J(x?XEFwB3@jV!w!P*6@J17vfTtHw?ccSZ#BP4 zbldRUtP|gf1QHOH>2=Py7G11|Cr;B`PsIB`soFBvQa`c<*wb>7m|AAFv0awi$1H|o zd77`y7m(GtU6SI0ql@{;(FkVulWQs=@G`7cg<~u}2Z0F8pT0`#vj1Z2JT0IRN0cvl z50HV~?Owa|u)|1eZN9KnrR-AH=^DhQhk5jYzZ{mYf|fmXAbUj0UCO*X4!>0m==rOn zaCA+N$9J@6pIRRvK#=~Wy3p+gl(4Qf%}%q8h%67aCe10Y}#BTVV@ z5ClV)S(Hq7OT7Na&G08=`iHndmsvqJA5}as{fCUuh70GP4?}5_Uh~(-w=)2#UHllQ zEOUeYgVn*0gL50}Vu<-)!hRhU=;ef>{vm?k{Ee!B#Q*gVgHLm1<~LJCbRf|kMkg)rdc@UzLA}H*9$0 z3-~L+GV+1v(FQ*MJHQa`ACl~!2V~RzmG9pHMCAW6Wqe)%4yGcP{XOlx8~Q)1 z%&RjB$^r<){gK|K@}IRzJGVa*4s;^_Gm+z*KP!$}4MOp_TNc3mJ@5wLui(28@b+%n zonQPOxG(Up_@mHXPG1JE$^9NU>HZ(~ldX7|od%gxK6&iymKo)Il=zwSX(!XhX%Iua z{jFxtQQS-vCo8F`SEh>(XA*vRBn7SN;uP|IL-Po`rQY!!Iqkz!@|ymx$vE++rC1nX z3Dunmp>xVA#PG5&!se2uWoDzU1hOs~+2fk8`WFkPLw9zesE5p zXDv7dF^OdjBmZ*#r#0vH`@Wy|*&!1-#*^RR-Bl5yZ>KL2HKq1bL^-@Ctdq_4Jx_yE z81w;z8HwBpUgzYauA3XTf-=8X=lxff5^~xARM>U0Y~^D^)4>nia)W(RZ*CrU-8PUn zj!~q-GMngCz2$!le%j2_RpH6oMO?cy{6qoi-{8E2MTpe!I<8qM)?_FN0J(g z%dP=!MDN8saWSVfc>iI4=lM7Yc_{*MOU#=Uth*W6^^G%Z(3ff- zIvaSTs*lAu5HzI6AcfBlGVQgiUHd)mGCQzDZ98gz^Fx}RZW-w&+C$sK7L;w7Q#$z` zT8|W728K-d5K9IsyKKqdsgpFi=Hw;k5{B6k#7|rm@$%7g)Ix88Tl!Dv-b5Gk+#GiJ zU7qya3BEh*34Sm_cx$dd)&oxpN2TN$m)f&P_7?Oowxgxp>AH!MEFzJczj{oGhALSu zy^8uYVLB;j`%bfB>lH2+w~}f1?g#^cD0!ov&J@A`D)#vNv zPanQYMjzTp(l&ivzi;b8Qn_k>EnqS?IY|wCTZ7ReV(MSAAX|DgABS_+j5Fg)dH%xu zIrkB^2Zh4>O@ZC2iHarghCTV)Pxd61rn#bFzML&Zz4J>sKbAx=tt}@_ZLT>&+^#8) zQZ^>Qte2OSShTxj_;7MCW~C$huy_;?ZOH7ou;^o?NtX7j#5n)nz@HWUZzMYsV$(#w z;P^4Yx}$hF4NG%;OcP@ZICCSmYV~HrDqsc5#>z15Ix4sbzV+TXn zaxTn$ld9g)!KQTB1THP0~JZ(A(cRfen;=Sn;vxzB`o0R_y;)Zy=uIkY)FLn6U zFTez?G3<2qhvH#Zx47q`b!jSwcX(3Fi-ZF?oFqz2dz}Tr(n|ckmrw=e2=%9wQ3G(a)J931g>58?o)3G zDOW2@M$xQDv{9%7UY;B;GU(Ib-=;)++w?c~+&&Ygi1rC>SLq4)^5uE-D^qJ?ru0N# zXLUvA`0!-|t(S(NgBC2v(IB3T6xNdQ-Mvtg4llMS;nz3)J7=nvBFWd)ik^Jn27C9c z>oo=|ebroELQ+%UWMS9P$n5Z=HI`6}YFFt(m0aGi%}W&Bz_wvas#hC_aw13PVUAv(%@Gci!g?QrS6RZlDZ907ds=D2Hi z(4Cv;OyVQ7lel>Y`xA>M7mH-M5f(lZuEiQ-s};JoC%$a_EQ^Ff@}rxjpqG#?|w@&lVPelR*cs&c=;yeST8|&E?yM_KNPi;GpSdg0yp^c)tAK| z_LwKfIVTmBYTJbe({)-vhL3B%5rhWMUwnZLzPZBv?xiW2demwR+SV{jFEppi=~|a9 zkdQuCim_gg_ThB>apH&ArR1=6_w-R_K9Hz*Oq@u@w$bqF9Z-QD4Up&?D535 zP$UwWJr&5lgX0wfl6i!hLz+PCj#RKIB8f2KMc&3Ay5+R9^*vb4#2m z=_CF9w)`-673FMoaY*A*T>nhioPQPBkYWTcwALXfrvku;r(Hx}VGhDM;T$8j)STU+ z@dSyvk8;j}RgXOWczw?Q@kD+b91fs)NgGcnMDn zu6QHgAGBHDV2KcLcg=y@RlfWJ3OZG42j2DQgx{?LAf}cDlgiEitri$3hvN0q=fh0T zR2YYm9TTaZ1ktKgs**MF!6MAl2lAsit867Tj`=&b$ReWLb&Us@j;5@VrFz*a;I8rb z-~~{Zhl#k^7`2&*B8l_E1=tWeYY6NZnb+vJLVaWsoPv27>FfZUIVp-5y&+%_f zln4d+Dofy6^q&6S*A-0efIyfWh7GSDn( z+0~QwTnaRfzMHD!kK-flt=ZHZG)Q3XB(VfXQ7!X0q^6d+zr|CnqKf@r zj6_v$owfZX-T$3%j!5Ch2@)vbH(q79|Eu{7Z2wR3C%aE5YJ%J+p$#oKdv5yX_mL=d zpt`9Y^c(qa5&VPVflfI8m!S0jnVZn+MZ~lkXSUp3|9b0GF-X4arwPS|$8T{(L@+>q zqvGyHl@V75+)Zdh#4f+1IC~eDiFQSti|`+5NG1IScDJkgKy1y|dX2gIU+Y|M30IZ$ zdfuM6{P||BBf*vQGir+>7a!_s9z=1R+aGTP7g)22@h-&{7Frwo8>tO@5=9`G*<_cI z5RwP@?)~wv7t@?}p&4dgUkzf{r7VU|_DEbFp4@g6HnN4`X!@LK(mIq#<~Hc5b)WeJ z{wJxPx890gVD@%-UYaBDtcI6`LX=Xj$vtQvTMeF%)@y($juqEEnd!ZKvEQvSFYFY2 zD)1C3kSx?PV=4N_BfKVmNtLq}B`?<=ix)+9nsQpVBo_94ZfOUkyRO|TMf8O9(?fH- zKgD8(z?#~i1XD7zA@M{Mu{&y@1`MZ($DJ2kTyhU>2!_Z6^mTe~GJ)3IuMfKT76|Ug zT!EuT$b9vuLdp+v)A{RfSatW&rn2-m@vxH+mCaWvj4^5OWH}8V3vh40@VFPlXeLFZ z`7xof2UcM#e}S8heR`=c*!;0iy(95M^3(6sd)-SPO}zIa*UPr>nL;kC<2#0}STOqv z=?BF%Td#;4r>-u>=Phv#bcxvgTS$?H3aGg+U(~P@N6L2iA1#O2|8kplz_k!Hmx7RN zV_v()dX*)G=H&2yhiThrqB}RM~**}Q~M!l}Zr>F>2rl4I;Pa3;DUv z@rC{GK*GD`a|XPRaKzb-i%tdHhdj5&Rvkhv(o}Lie9<#-qQ8BA9X_pTik@{sDI^`% zv9%xHsM8!x=X=*N&31XWji3s)lh4N*pP_rX=`{76m-Gt(3??D{KfIy&x^B<> zVgit(cOs68!P>9{??@JY2$E}~;{F3=}S-+~g z#(Gma4S2BKdf7i9IuzOYKGGdj3d_Z&cF4S(%+u(OX<&RV+PZVo;qRs|=VUa9TLLKBt1JYY$9n8$Te|qzPYM>kjZah%z%iXkMreI2>+J1J7k_-?sxgFC>2Bu*a#jw`)76lC8wn&kcTg4=lsr`1Un*QF6 z)F%6!yP6{3%6h9r2)j{^wD6geT9H=`a%sp~VJN{Xk&YkhADpY%<^D|QhNZE1{G*Ul z1N6D@^Eku)JKPMbyF=YP%rGc+yt`NxlsHbvAbzd5YyR@Jp}W(kd4U7l-H#0%A_6EN z`~J+FI9YToqhrpKd(U_Y(e9ecT6CFGwN2|h_B=y6s!k$^D}+8^hLXe;2DqR20&f$CIZm}!^rW#D~(odUrzvfI<%)G<>x5)ebNR``j zRVrLxiqi`h=1=amg?9PJnG7F13}0-5iPkn3 zC;+-O!jEI0K)bosQ&-y;{5fA5F1i)3kds>fjHiQ{vDL~D_L z(b^Y&4!EWrIM4OhMh}u)*Q7PG^;^>0V}8_31X036$;&;7nK%E`+OZZUljfu{tK`Ja zlITc#`_-CWSVT&eo8O^F#!`(Wry^H z%@Q{Z28c$VLWgJiyP28BXITJZ9=p0Z%r$4+o=UIq;GWu2Qk-Z$*(Twi4cTzz;6|Y5 zA8d2=M9S+SfiVTgs1KqoDi-e0Ei4vG-??O`T3$C9@#@!#_TduWQSe+t1sL7 zJRV}d3B`Xg!L-TAHggJyZ&l{A&C0vn)i#io^>OEzD{g6EB>OeKh42f`p#AckpZ4@= zcpoxb+1T1#zrFGDS3D5v<<5~}oD26zc%NhwPx7;M>s#OwM#1Fot><{2O#`xEDD zQb>H-cv;v#%&f)w!I_*sTCt)IRLt5kS(hi_OT`Aa1!Cp)GL?iQVW04~oKSxGngN+6 zSLN4I@za|>4(ewXmZ47ZsKx*pUX>RSJ|K{T|FuNuMgJK%au9pi3ZF2}_LDAfc(3pc zS*8e*CI%2)GGkkAbUOR|NKFt6?$>6-;4yOoi?DVu)Z+>Zhs-0J7JMM-nFbkW4>C6Q zAGE!$-{Xajhr`ocqj7{!8V29ZARGdF>ZLxYz1}}@P|DR}DwEF_uhlGb z4S~NTc4j1}PfxVmnx~L*_rICuY#3k(bAC%;-{~G`2cM8&x4JmrwF%jYFtC*pQDtH< zOf9>!h-TW=%XW9%sWOo9YBk7qQ^u4)LxpZrS2bh^KVh+VX2dqBN(2}N3vCQ9pV0|? zwpqNdcpG7F;o?$Xw-)X;2=}qsVr=bx&L=3NB%kiV=geg6Xz@N?0M%@q$(CPnhp zHhS%7smQ#dW7*U#LVjzZLjdaGM$L4tnr= z)pE2v;6+y3xnWrDTLb`42JpO?3c|5J@(Fm^mm|jm6=qe$7juh?r!dd$V6nw|$%iJB zCFI$Apqe|OT+PRTMz9^RB!oAl!5%9V%x~kMeC<_~iF6ziID~q012cZ{HRC>~iE2z3 zA^(cZ)-|>I@U*^U)M4R7L8)-i2U4|j^fPd<{|z9F%2z{ndnK7zm?(#)-BNq?+xfxUu{KlU&8TlL?t0LkteTB_hyB!~|h& z&xWFo97q$73X-n0$XtX^b#*ounkMcoK7BpcB3^DWfwN~SVO0uFY-TCZ}a5L2&n8c3+zqv1c#%CC?M%j-NuNShXupnEX5jDMZ|&N=+3U;Km_cs?`7 zpRb1jDVLnt;g&5CTgZ;YePMYHwY|hkBOx!L`<`3Ta=$R|_)v%V$|E^W&YS#$RjXI< zyi9v68gnp{|2N>cN=G4qZ-~vjuQ;JYU88X!SWdfluTyxU-D44 z%9>L?s7w9tax%jvGy-Q?uERVxJVnhvV|p2&*09_mkj1}vF3L<+B%5k#q>lIf#<6~H zGbyyKo^DIOlG0>tlpJEsL~~2e#0U9#^%f&^upWVZwd^{~B)_kj_4kb``f#H@IKd1; zpMJPGF^?DFBU9z$JT~@R%cZ2EImmRW&--2n%ZZ9xbzvill|Xoy)dto7U%0{lS=8Zy z9c`!_9UFUS^%Thx)f=12y1(gVW9z|fXm;5(o_544$ zRL>N-4w6}CdQ^g->9YUkktVqkfO$p@y(X^_%TSPb^X$5`TW#FlgprePuPEiT^m>HAevy5|teyRfpsyGfS%Q&>tfpJ zAtbSY(xXf7-OOE3KnF7`ROUx7^8I(L=bLj+>ug$o+E@`VWfIV3D#FtNe$STn?;h2Q zyamd2loZBniO}ks8;IvmO`?~Ot6&(j--Y3adm{|n6CisSn?0r7X}%(hds(==-iKqg zV~EsQ%b4ogZeK0=8lOgD7~;9%c6l?$u3=`G(?wtEf7sULAJ@-_UoFu+GowsXq9&}M z74U?};WPbwU6}2vA$hlNtOD@<+~tK{OHdNV+6c>Y)HO^dzAw07RD#u>^k75`7o8aF zv2H(0{%N!SEMR!GX+1n&&v8 z|9=yl!0g>(ycw>1=_gOR{B{yKe}_ox?$|q~A&yc{-Ex`;AqC$5T^ysb+EOf=O_u^%l3MLN@kr`f zb4Y>G9Fs1eHD$x)WLsmPd^|Un5!kj=RhZ?`%S1qjjc816EB$uu(LapmNx)5~DzrK@ zr6b&9?kxWG->`^}0!^dIPIxo6vG7Y$`?uAu&vsI*!yR$$#<&i5(ZqpQvo@|0OISEE zyTmiwe0U^2`yZ)%WBIIeGXBq?&NSE-4g@EihaD{W;La6M3-4mb(yH^7NtZ^^d%iJD zfta@=Od59Gx)V&#ExOG&(3gLCjWeG-3#c>7aC+JbLzOx6msUs!4o+PD z7el2K+r8dtk}Y@srrqtnSj+7>N;*kl#p;<=QWRyJ zeu}&2|7!0$qng^fcCj2ib~zG?G%F|wh)6FviomgeAV`NuKtLg2q_@Nlgc23$5CjxZ zniL5&5h*#;h$t;UBmqJT7y}6*B)J>#ocH_g_kMSbd&jtU+#l!99&7Be*4lfuIp;H< zxz>W(`rCb>V}&9u&pZvkA-s|s+xb`&l?$(%X7jhk~PF1-nRFwuu`IBxXeLp@F zY~h0zU zLj_@`2E{4 zDXbC_p(CTJcdw1mDIgo{e&!7OezP00Qt|GkiO~5_6=T-CMM1u&4J)a!;Cj1WSNSR( zq+o{l^xKn2IqECe5Nn60NU#bfwN_;NbGMG$@8PrizbM?o$ouBLBn4)=9%0%2Pz{G0 z1o4_xNV%`*DZo%2kWkBdl+FKRF2Ph6+^}bN9D(|-{fGAA&|xr38QaDfevzdz7!AoW zjn)yz8P-I^QD2hG4(~0sQH-P^u2m77p8>Nw_<-=ucIw!`W3A_iUu=G(>?aLG4H*V~ zYpwS=Jn|>300la_Xta zu^Z?(MgDn%(4zAx2PDb-3u^|YO%ZfJ_e&kAEC2mYsO;wV;}E-ocjW$(XG<=C2oB zHcI1Lv~Q(vhW)FZATMWCbjZF{pBnkc>dM_SzZzETd-|?iW%KR5t(alEK1Bt4Wc-!E zv+qACSb0XgH}nPM_nO*8C(Kic;*le2B!=}A}(KQ+gQ z#0Zkt0rZ3XH2`h33&d4@d;bi_MpR*r{n`#7I*z@F*je%Qxp$9p3#9EYNbO~Z*o0BL z{&CjpE=`^o{@d%jJ3+T$T>;^jc8RB5Z9SP7A|Y=LHMf-gB3Wfx7ncr&qir0*i|cdF zW9jkK@jF-Q=g=32uufL!XeS2{^R86NJ>!W^Qo=|s^c?!oqb1G=+)jHWuwd~h31_-O z%d0NG5bk7b4<7TYw64oJKdUuWWoe7ne4E@-!Mxs=eDd03)bhShug0ke-RlVH~0%{*-qh(>`!w;v7vFf{x)^HIh5Uwrc}u60q%;|=dU$`RPOTDee{ePvlK z#qX?y-7Wcdf$a%V-|v>0AI6a(`BDe#aa&C+E1rgWgP`fD8R1LR|3J99X(}mQE{h;U z+!9qN4}xAf3i%R~`Y@BGcIdY$=Jq}p>N!S2PTlE}vbMW|$cAW&!9IA(aMk9I81BW| z`;>o&rjGzDeqY~k;LX$nQy)GhGa_L_7|=3jq3Mr5#9+hd>C6Wfytwx|u;E7of8H%1 z(LCm^wqLNGx#&Fz-)dJ23zCwrbA4X3V@nq)4go9Uq_`cK7|0S|e0gU{9R6)EU1jNr+1`f0Ke=PC*7|(Y#KHRb*O3WI>;l^XFmN;3 zw!-1u^HiYgdrvink0zo%{^^thnLS+_;J26>_A#4i^w#{o-|`F`Y{kRZXa#UYOE3

k6`kFXd(rfxjsW`*1G$oNe{^3oiL!Y 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 UY{hUkP@m96BeM%7=WjgtA6?|ETL1t6 literal 0 HcmV?d00001 diff --git a/docs/screenshots/settings-favorites.png b/docs/screenshots/settings-favorites.png new file mode 100644 index 0000000000000000000000000000000000000000..3395b3efa5e5f245952775a632bec1dbf107e522 GIT binary patch literal 55891 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 D73l5e literal 0 HcmV?d00001 diff --git a/docs/screenshots/settings-general.png b/docs/screenshots/settings-general.png new file mode 100644 index 0000000000000000000000000000000000000000..d786910d2030c160e1afec7b406da638a1e16ed6 GIT binary patch literal 71265 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 literal 0 HcmV?d00001 diff --git a/docs/user-manual.md b/docs/user-manual.md index 661bee27..9763f6c7 100644 --- a/docs/user-manual.md +++ b/docs/user-manual.md @@ -330,6 +330,8 @@ Open **Tools → Options → Claude Code** in NetBeans. ### General tab +![Settings — General tab](screenshots/settings-general.png) + | Setting | Default | Description | |---------|---------|-------------| | Claude CLI path | (empty) | Absolute path to the `claude` executable. Leave empty to use the system `PATH`. | @@ -338,12 +340,23 @@ Open **Tools → Options → Claude Code** in NetBeans. | History TTL (days) | 0 | Number of days after which history entries expire. 0 = keep forever. | | Send prompt key | Ctrl+Enter | Key combination that sends the prompt from the input area. | | Insert newline key | Enter | Key combination that inserts a newline in the input area. The send and newline keys are configured independently but cannot be set to the same value. | -| Debug mode | Off | Enables verbose logging of all Claude I/O to the NetBeans log file and the Output window. | | Open diff in a separate tab | Off | Opens the diff panel in a new IDE tab instead of embedding it in the session tab. | | Show markdown preview for .md files in diff | On | Shows a rendered markdown preview alongside the raw diff for `.md` files. | +### Advanced tab + +![Settings — Advanced tab](screenshots/settings-advanced.png) + +| Setting | Default | Description | +|---------|---------|-------------| +| Debug mode | Off | Enables verbose logging of all Claude I/O to the NetBeans log file and the Output window. | +| Hang timeout (seconds) | 60 | Kill the process if no PTY output is received within this many seconds after launch. Set to 0 to disable. | +| Enable MCP integration | On | When unchecked, the `--mcp-config` flag is not passed to `claude`. Hooks (PreToolUse) are always configured regardless of this setting. Disable only if MCP causes issues. | + ### Favorites tab +![Settings — Favorites tab](screenshots/settings-favorites.png) + Manages global favorites — prompts available in every project. The table shows all global favorites with columns: ☐ (checkbox for multi-select), **Text**, **Shortcut**. @@ -360,6 +373,10 @@ The table shows all global favorites with columns: ☐ (checkbox for multi-selec The search field filters entries by text. +### Profiles tab + +See [Section 12 — Profiles](#12-profiles) for full details on creating and managing profiles. + --- ## 12. Profiles @@ -544,14 +561,14 @@ As you move the cursor or change the selection in any open editor, the plugin au If Claude says a tool is unavailable (e.g. "I don't have access to `getWorkspaceFolders`"): 1. Check that no other application is using the MCP server port (**Tools → Options → Claude Code → General → MCP server port**, default: 28991). Change the port if needed and restart the IDE. -2. Enable **Debug mode** and check the log file (`~/.netbeans//var/log/messages.log`) for `MCP SSE server started on port`. +2. Enable **Debug mode** (**Tools → Options → Claude Code → Advanced**) and check the log file (`~/.netbeans//var/log/messages.log`) for `MCP SSE server started on port`. --- ## 14. Troubleshooting ### Enable debug mode -Go to **Tools → Options → Claude Code → General** and check **Debug mode**. This writes detailed logs of all Claude I/O (PTY bytes, MCP messages, hook calls) to the NetBeans log file. +Go to **Tools → Options → Claude Code → Advanced** and check **Debug mode**. This writes detailed logs of all Claude I/O (PTY bytes, MCP messages, hook calls) to the NetBeans log file. ### Log file location ``` diff --git a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java index f9ed6149..86d62941 100644 --- a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java +++ b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java @@ -70,6 +70,8 @@ public final class ClaudeCodeOptionsPanel extends JPanel { private JSpinner sessionListLimitSpinner; /** Spinner for the hang-detection timeout in seconds (0 = disabled). */ private JSpinner hangTimeoutSpinner; + /** Checkbox to enable MCP integration (pass --mcp-config flag). */ + private javax.swing.JCheckBox mcpEnabledCheckBox; /** send-key radio buttons: value → button */ private final Map sendRadios = new LinkedHashMap<>(); @@ -99,6 +101,7 @@ private void initComponents() { JTabbedPane tabs = new JTabbedPane(); tabs.addTab("General", buildGeneralPanel()); + tabs.addTab("Advanced", buildAdvancedPanel()); tabs.addTab("Favorites", favoritesPanel); tabs.addTab("Profiles", profilesPanel); add(tabs, BorderLayout.CENTER); @@ -181,16 +184,6 @@ private JPanel buildGeneralPanel() { newlineRadios.get(val).addActionListener(e -> syncExclusion(val, false)); } - // --- debug mode --- - debugCheckBox = new javax.swing.JCheckBox("Debug mode (log all claude I/O to NetBeans log and output area)"); - GridBagConstraints dbgGbc = new GridBagConstraints(); - dbgGbc.gridx = 0; dbgGbc.gridy = row; - dbgGbc.gridwidth = 3; - dbgGbc.anchor = GridBagConstraints.WEST; - dbgGbc.insets = new Insets(4, 8, 4, 8); - form.add(debugCheckBox, dbgGbc); - row++; - // --- diff in session --- diffInSessionCheck = new javax.swing.JCheckBox("Open diff in a separate tab"); GridBagConstraints diffGbc = new GridBagConstraints(); @@ -229,18 +222,68 @@ private JPanel buildGeneralPanel() { form.add(sessionListLimitSpinner, gbc(1, row, false)); row++; + // spacer + GridBagConstraints spacer = new GridBagConstraints(); + spacer.gridx = 0; spacer.gridy = row; + spacer.gridwidth = 3; spacer.weighty = 1.0; + spacer.fill = GridBagConstraints.VERTICAL; + form.add(new JPanel(), spacer); + + return form; + } + + /** + * Builds the Advanced tab containing debug and hang-timeout settings. + * + * @return the Advanced tab panel + */ + private JPanel buildAdvancedPanel() { + JPanel form = new JPanel(new GridBagLayout()); + int row = 0; + + // --- debug mode --- + debugCheckBox = new javax.swing.JCheckBox("Debug mode (log all claude I/O to NetBeans log and output area)"); + GridBagConstraints dbgGbc = new GridBagConstraints(); + dbgGbc.gridx = 0; dbgGbc.gridy = row; + dbgGbc.gridwidth = 2; + dbgGbc.anchor = GridBagConstraints.WEST; + dbgGbc.insets = new Insets(8, 8, 4, 8); + form.add(debugCheckBox, dbgGbc); + row++; + // --- hang timeout --- form.add(new JLabel("Hang timeout (seconds, 0=disabled):"), gbc(0, row, false)); hangTimeoutSpinner = new JSpinner(new SpinnerNumberModel( ClaudeCodePreferences.DEFAULT_HANG_TIMEOUT_SECONDS, 0, 3600, 5)); hangTimeoutSpinner.setToolTipText("Kill the process if no PTY output is received within this many seconds after launch (0 = disabled)"); - form.add(hangTimeoutSpinner, gbc(1, row, false)); + GridBagConstraints hangSpinnerGbc = gbc(1, row, false); + hangSpinnerGbc.weightx = 1.0; + form.add(hangTimeoutSpinner, hangSpinnerGbc); + row++; + + // --- MCP enabled --- + mcpEnabledCheckBox = new javax.swing.JCheckBox("Enable MCP integration"); + GridBagConstraints mcpGbc = new GridBagConstraints(); + mcpGbc.gridx = 0; mcpGbc.gridy = row; + mcpGbc.gridwidth = 2; + mcpGbc.anchor = GridBagConstraints.WEST; + mcpGbc.insets = new Insets(12, 8, 0, 8); + form.add(mcpEnabledCheckBox, mcpGbc); + row++; + + JLabel mcpDesc = new JLabel("When disabled, the --mcp-config flag is not passed to claude. Hooks are always configured."); + GridBagConstraints mcpDescGbc = new GridBagConstraints(); + mcpDescGbc.gridx = 0; mcpDescGbc.gridy = row; + mcpDescGbc.gridwidth = 2; + mcpDescGbc.anchor = GridBagConstraints.WEST; + mcpDescGbc.insets = new Insets(0, 28, 4, 8); + form.add(mcpDesc, mcpDescGbc); row++; // spacer GridBagConstraints spacer = new GridBagConstraints(); spacer.gridx = 0; spacer.gridy = row; - spacer.gridwidth = 3; spacer.weighty = 1.0; + spacer.gridwidth = 2; spacer.weighty = 1.0; spacer.fill = GridBagConstraints.VERTICAL; form.add(new JPanel(), spacer); @@ -315,6 +358,7 @@ void load() { == io.github.nbclaudecodegui.model.SessionMode.NEW); sessionListLimitSpinner.setValue(ClaudeCodePreferences.getSessionListLimit()); hangTimeoutSpinner.setValue(ClaudeCodePreferences.getHangTimeoutSeconds()); + mcpEnabledCheckBox.setSelected(ClaudeCodePreferences.isMcpEnabled()); String sendVal = ClaudeCodePreferences.getSendKey(); String newlineVal = ClaudeCodePreferences.getNewlineKey(); @@ -348,6 +392,7 @@ void store() { : io.github.nbclaudecodegui.model.SessionMode.CONTINUE_LAST); ClaudeCodePreferences.setSessionListLimit((Integer) sessionListLimitSpinner.getValue()); ClaudeCodePreferences.setHangTimeoutSeconds((Integer) hangTimeoutSpinner.getValue()); + ClaudeCodePreferences.setMcpEnabled(mcpEnabledCheckBox.isSelected()); ClaudeCodePreferences.setSendKey(selectedValue(sendRadios)); ClaudeCodePreferences.setNewlineKey(selectedValue(newlineRadios)); diff --git a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java index 82ae58d3..76dd7c7f 100644 --- a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java +++ b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java @@ -524,6 +524,32 @@ public static void setHangTimeoutSeconds(int v) { .putInt(KEY_HANG_TIMEOUT_SECONDS, Math.max(0, Math.min(3600, v))); } + // ------------------------------------------------------------------------- + // mcpEnabled + // ------------------------------------------------------------------------- + + /** Preference key: pass {@code --mcp-config} flag to claude CLI. */ + private static final String MCP_ENABLED = "mcpEnabled"; + + /** + * Returns whether MCP integration is enabled (default {@code true}). + * + * @return {@code true} to pass {@code --mcp-config}; {@code false} to skip it + */ + public static boolean isMcpEnabled() { + return NbPreferences.forModule(ClaudeCodePreferences.class) + .getBoolean(MCP_ENABLED, true); + } + + /** + * Persists the MCP-enabled flag. + * + * @param v {@code true} to enable MCP integration + */ + public static void setMcpEnabled(boolean v) { + NbPreferences.forModule(ClaudeCodePreferences.class).putBoolean(MCP_ENABLED, v); + } + private static String validated(String value, String fallback) { return ENTER.equals(value) || SHIFT_ENTER.equals(value) || CTRL_ENTER.equals(value) || ALT_ENTER.equals(value) From 15e8e321f390626e2b5a4d90cb4e47e95b54792f Mon Sep 17 00:00:00 2001 From: Oleg Samarin Date: Mon, 13 Apr 2026 10:27:17 +0300 Subject: [PATCH 4/4] Fixed compilation --- .../settings/ClaudeCodeOptionsPanel.java | 31 -------- .../settings/ClaudeCodePreferences.java | 73 ------------------- .../process/ClaudeProcessTest.java | 1 + 3 files changed, 1 insertion(+), 104 deletions(-) diff --git a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java index 86d62941..e89acbc3 100644 --- a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java +++ b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java @@ -64,10 +64,6 @@ public final class ClaudeCodeOptionsPanel extends JPanel { private javax.swing.JCheckBox diffInSessionCheck; /** Checkbox to show markdown preview for .md files in diff. */ private javax.swing.JCheckBox mdPreviewInDiffCheck; - /** Checkbox for context-menu session mode (checked = New, unchecked = Continue last). */ - private javax.swing.JCheckBox startNewSessionCheck; - /** Spinner for the maximum number of sessions shown in the session list. */ - private JSpinner sessionListLimitSpinner; /** Spinner for the hang-detection timeout in seconds (0 = disabled). */ private JSpinner hangTimeoutSpinner; /** Checkbox to enable MCP integration (pass --mcp-config flag). */ @@ -204,24 +200,6 @@ private JPanel buildGeneralPanel() { form.add(mdPreviewInDiffCheck, mdGbc); row++; - // --- context-menu session mode --- - startNewSessionCheck = new javax.swing.JCheckBox("Start new session when opening with Claude"); - GridBagConstraints cmGbc = new GridBagConstraints(); - cmGbc.gridx = 0; cmGbc.gridy = row; - cmGbc.gridwidth = 3; - cmGbc.anchor = GridBagConstraints.WEST; - cmGbc.insets = new Insets(4, 8, 4, 8); - form.add(startNewSessionCheck, cmGbc); - row++; - - // --- session list limit --- - form.add(new JLabel("Session list limit:"), gbc(0, row, false)); - sessionListLimitSpinner = new JSpinner(new SpinnerNumberModel( - ClaudeCodePreferences.DEFAULT_SESSION_LIST_LIMIT, 1, 500, 5)); - sessionListLimitSpinner.setToolTipText("Maximum number of sessions shown in the session list"); - form.add(sessionListLimitSpinner, gbc(1, row, false)); - row++; - // spacer GridBagConstraints spacer = new GridBagConstraints(); spacer.gridx = 0; spacer.gridy = row; @@ -353,10 +331,6 @@ void load() { diffInSessionCheck.setSelected( ClaudeCodePreferences.isOpenDiffInSeparateTab()); mdPreviewInDiffCheck.setSelected(ClaudeCodePreferences.isMdPreviewInDiff()); - startNewSessionCheck.setSelected( - ClaudeCodePreferences.getContextMenuSessionMode() - == io.github.nbclaudecodegui.model.SessionMode.NEW); - sessionListLimitSpinner.setValue(ClaudeCodePreferences.getSessionListLimit()); hangTimeoutSpinner.setValue(ClaudeCodePreferences.getHangTimeoutSeconds()); mcpEnabledCheckBox.setSelected(ClaudeCodePreferences.isMcpEnabled()); @@ -386,11 +360,6 @@ void store() { ClaudeCodePreferences.setDebugMode(debugCheckBox.isSelected()); ClaudeCodePreferences.setOpenDiffInSeparateTab(diffInSessionCheck.isSelected()); ClaudeCodePreferences.setMdPreviewInDiff(mdPreviewInDiffCheck.isSelected()); - ClaudeCodePreferences.setContextMenuSessionMode( - startNewSessionCheck.isSelected() - ? io.github.nbclaudecodegui.model.SessionMode.NEW - : io.github.nbclaudecodegui.model.SessionMode.CONTINUE_LAST); - ClaudeCodePreferences.setSessionListLimit((Integer) sessionListLimitSpinner.getValue()); ClaudeCodePreferences.setHangTimeoutSeconds((Integer) hangTimeoutSpinner.getValue()); ClaudeCodePreferences.setMcpEnabled(mcpEnabledCheckBox.isSelected()); ClaudeCodePreferences.setSendKey(selectedValue(sendRadios)); diff --git a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java index 76dd7c7f..97432735 100644 --- a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java +++ b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java @@ -422,79 +422,6 @@ public static void setDefaultExtraCliArgs(String v) { .put(KEY_DEFAULT_EXTRA_CLI_ARGS, v != null ? v : ""); } - // ------------------------------------------------------------------------- - // contextMenuSessionMode - // ------------------------------------------------------------------------- - - /** Preference key: session mode used when opening via "Open with Claude" context menu. */ - public static final String KEY_CONTEXT_MENU_SESSION_MODE = "contextMenuSessionMode"; - /** Default: continue the last session. */ - public static final SessionMode DEFAULT_CONTEXT_MENU_SESSION_MODE = SessionMode.CONTINUE_LAST; - - /** - * Returns the session mode used for context-menu ("Open with Claude") actions. - * - * @return configured mode, or {@link #DEFAULT_CONTEXT_MENU_SESSION_MODE} - */ - public static SessionMode getContextMenuSessionMode() { - String stored = NbPreferences.forModule(ClaudeCodePreferences.class) - .get(KEY_CONTEXT_MENU_SESSION_MODE, - DEFAULT_CONTEXT_MENU_SESSION_MODE.name()); - try { - SessionMode mode = SessionMode.valueOf(stored); - // CLOSE_ONLY and RESUME_SPECIFIC are not valid context-menu modes - if (mode == SessionMode.CLOSE_ONLY || mode == SessionMode.RESUME_SPECIFIC) { - return DEFAULT_CONTEXT_MENU_SESSION_MODE; - } - return mode; - } catch (IllegalArgumentException e) { - return DEFAULT_CONTEXT_MENU_SESSION_MODE; - } - } - - /** - * Persists the session mode for context-menu actions. - * - * @param mode {@link SessionMode#NEW} or {@link SessionMode#CONTINUE_LAST} - */ - public static void setContextMenuSessionMode(SessionMode mode) { - if (mode == null || mode == SessionMode.CLOSE_ONLY - || mode == SessionMode.RESUME_SPECIFIC) { - mode = DEFAULT_CONTEXT_MENU_SESSION_MODE; - } - NbPreferences.forModule(ClaudeCodePreferences.class) - .put(KEY_CONTEXT_MENU_SESSION_MODE, mode.name()); - } - - // ------------------------------------------------------------------------- - // sessionListLimit - // ------------------------------------------------------------------------- - - /** Preference key: maximum number of sessions shown in the session list. */ - public static final String KEY_SESSION_LIST_LIMIT = "sessionListLimit"; - /** Default: show the 30 most recent sessions. */ - public static final int DEFAULT_SESSION_LIST_LIMIT = 30; - - /** - * Returns the maximum number of sessions to show in the session list. - * - * @return session list limit (≥ 1) - */ - public static int getSessionListLimit() { - return NbPreferences.forModule(ClaudeCodePreferences.class) - .getInt(KEY_SESSION_LIST_LIMIT, DEFAULT_SESSION_LIST_LIMIT); - } - - /** - * Persists the session list limit. - * - * @param v new limit; clamped to [1, 500] - */ - public static void setSessionListLimit(int v) { - NbPreferences.forModule(ClaudeCodePreferences.class) - .putInt(KEY_SESSION_LIST_LIMIT, Math.max(1, Math.min(500, v))); - } - // ------------------------------------------------------------------------- // hangTimeoutSeconds // ------------------------------------------------------------------------- diff --git a/src/test/java/io/github/nbclaudecodegui/process/ClaudeProcessTest.java b/src/test/java/io/github/nbclaudecodegui/process/ClaudeProcessTest.java index 26e10359..f70c09b3 100644 --- a/src/test/java/io/github/nbclaudecodegui/process/ClaudeProcessTest.java +++ b/src/test/java/io/github/nbclaudecodegui/process/ClaudeProcessTest.java @@ -3,6 +3,7 @@ import com.pty4j.PtyProcess; import io.github.nbclaudecodegui.settings.ClaudeProfile; import java.io.File; +import java.util.List; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path;