noumen 0.6.0 → 0.8.0
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.
- package/README.md +237 -93
- package/dist/a2a/index.d.ts +5 -7
- package/dist/a2a/index.js +3 -4
- package/dist/a2a/index.js.map +1 -1
- package/dist/acp/index.d.ts +5 -7
- package/dist/acp/index.js +0 -1
- package/dist/acp/index.js.map +1 -1
- package/dist/{agent-DWE4_P5X.d.ts → agent-D0gl-qYi.d.ts} +89 -34
- package/dist/{chunk-6MMYCGJQ.js → chunk-5HY4IYNT.js} +1529 -2321
- package/dist/chunk-5HY4IYNT.js.map +1 -0
- package/dist/chunk-BC5BLWBC.js +21 -0
- package/dist/chunk-BC5BLWBC.js.map +1 -0
- package/dist/{chunk-XZN4QZLK.js → chunk-CX4BL6PC.js} +25 -15
- package/dist/chunk-CX4BL6PC.js.map +1 -0
- package/dist/{chunk-5GEX6ZSB.js → chunk-HQISH4D7.js} +60 -1
- package/dist/chunk-HQISH4D7.js.map +1 -0
- package/dist/{chunk-Y45R3PQL.js → chunk-NUCJXOUV.js} +32 -18
- package/dist/{chunk-Y45R3PQL.js.map → chunk-NUCJXOUV.js.map} +1 -1
- package/dist/chunk-OPFFLQZL.js +40 -0
- package/dist/chunk-OPFFLQZL.js.map +1 -0
- package/dist/chunk-PDEAJ272.js +660 -0
- package/dist/chunk-PDEAJ272.js.map +1 -0
- package/dist/chunk-PKHLGGEC.js +115 -0
- package/dist/chunk-PKHLGGEC.js.map +1 -0
- package/dist/chunk-XQTNXRE7.js +176 -0
- package/dist/chunk-XQTNXRE7.js.map +1 -0
- package/dist/chunk-XZPAA5TO.js +817 -0
- package/dist/chunk-XZPAA5TO.js.map +1 -0
- package/dist/cli/index.js +77 -42
- package/dist/cli/index.js.map +1 -1
- package/dist/client/index.d.ts +1 -2
- package/dist/client/index.js +0 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client-JJFLE6RT.js +9 -0
- package/dist/{computer-BPdxSo6X.d.ts → computer-DzMR92tK.d.ts} +1 -1
- package/dist/docker.d.ts +2 -2
- package/dist/docker.js +0 -1
- package/dist/docker.js.map +1 -1
- package/dist/e2b.d.ts +2 -2
- package/dist/e2b.js +0 -1
- package/dist/e2b.js.map +1 -1
- package/dist/freestyle.d.ts +2 -2
- package/dist/freestyle.js +0 -1
- package/dist/freestyle.js.map +1 -1
- package/dist/{headless-FFU2DESQ.js → headless-25DU4MJQ.js} +1 -3
- package/dist/{headless-FFU2DESQ.js.map → headless-25DU4MJQ.js.map} +1 -1
- package/dist/{history-snip-64GYP4ZL.js → history-snip-HAWNAYKY.js} +1 -2
- package/dist/index.d.ts +351 -72
- package/dist/index.js +54 -55
- package/dist/jsonrpc/index.js +0 -1
- package/dist/local.d.ts +168 -0
- package/dist/local.js +40 -0
- package/dist/local.js.map +1 -0
- package/dist/lsp/index.d.ts +4 -5
- package/dist/lsp/index.js +0 -1
- package/dist/{lsp-PS3BWIHC.js → lsp-3APWNKB2.js} +1 -2
- package/dist/{manager-DLXK63XC.js → manager-Z5EQ7YYV.js} +1 -2
- package/dist/mcp/index.d.ts +16 -8
- package/dist/mcp/index.js +5 -6
- package/dist/mcp/index.js.map +1 -1
- package/dist/{mcp-auth-AEI2R4ZC.js → mcp-auth-NOIQPF7W.js} +1 -2
- package/dist/{provider-factory-TUHU3DIG.js → provider-factory-KNBSHXJ6.js} +3 -3
- package/dist/{render-GRN4ZSSW.js → render-4VEODRK7.js} +1 -2
- package/dist/{resolve-6KUZNEYW.js → resolve-AGQZFMKD.js} +3 -3
- package/dist/sandbox-DAqQo0Tj.d.ts +49 -0
- package/dist/sandbox-index-ODNREIFA.js +32 -0
- package/dist/sandbox-index-ODNREIFA.js.map +1 -0
- package/dist/server/index.d.ts +18 -7
- package/dist/server/index.js +9 -5
- package/dist/server/index.js.map +1 -1
- package/dist/{server-BzNGKTP6.d.ts → server-DFXdlqyX.d.ts} +1 -1
- package/dist/{spinner-OJNR6NFO.js → spinner-72JEISPK.js} +1 -2
- package/dist/sprites.d.ts +2 -2
- package/dist/sprites.js +0 -1
- package/dist/sprites.js.map +1 -1
- package/dist/ssh.d.ts +2 -2
- package/dist/ssh.js +0 -1
- package/dist/ssh.js.map +1 -1
- package/dist/{types-DhXwOQwD.d.ts → types-BX4ALqoN.d.ts} +76 -4
- package/dist/{types-kiGBF35b.d.ts → types-DLZNyF5t.d.ts} +125 -1
- package/dist/unsandboxed.d.ts +59 -0
- package/dist/unsandboxed.js +32 -0
- package/dist/unsandboxed.js.map +1 -0
- package/dist/{uuid-RVN2T26F.js → uuid-CVTNAPEB.js} +1 -2
- package/dist/{zod-7YXKWYMC.js → zod-VKURGPRT.js} +1 -2
- package/package.json +35 -50
- package/dist/cache-BlBwXXPS.d.ts +0 -38
- package/dist/chunk-5GEX6ZSB.js.map +0 -1
- package/dist/chunk-6MMYCGJQ.js.map +0 -1
- package/dist/chunk-7IQCQI2G.js +0 -94
- package/dist/chunk-7IQCQI2G.js.map +0 -1
- package/dist/chunk-CCM2AXZG.js +0 -16
- package/dist/chunk-CCM2AXZG.js.map +0 -1
- package/dist/chunk-DGUM43GV.js +0 -11
- package/dist/chunk-HEQQQGK5.js +0 -131
- package/dist/chunk-HEQQQGK5.js.map +0 -1
- package/dist/chunk-I3JTUFPK.js +0 -171
- package/dist/chunk-I3JTUFPK.js.map +0 -1
- package/dist/chunk-XZN4QZLK.js.map +0 -1
- package/dist/chunk-ZXSDKBYB.js +0 -474
- package/dist/chunk-ZXSDKBYB.js.map +0 -1
- package/dist/client-CRRO2376.js +0 -10
- package/dist/providers/anthropic.d.ts +0 -19
- package/dist/providers/anthropic.js +0 -36
- package/dist/providers/anthropic.js.map +0 -1
- package/dist/providers/bedrock.d.ts +0 -39
- package/dist/providers/bedrock.js +0 -56
- package/dist/providers/bedrock.js.map +0 -1
- package/dist/providers/gemini.d.ts +0 -17
- package/dist/providers/gemini.js +0 -262
- package/dist/providers/gemini.js.map +0 -1
- package/dist/providers/ollama.d.ts +0 -13
- package/dist/providers/ollama.js +0 -20
- package/dist/providers/ollama.js.map +0 -1
- package/dist/providers/openai.d.ts +0 -21
- package/dist/providers/openai.js +0 -9
- package/dist/providers/openrouter.d.ts +0 -16
- package/dist/providers/openrouter.js +0 -24
- package/dist/providers/openrouter.js.map +0 -1
- package/dist/providers/vertex.d.ts +0 -42
- package/dist/providers/vertex.js +0 -68
- package/dist/providers/vertex.js.map +0 -1
- package/dist/sandbox-9qeMTNrD.d.ts +0 -126
- package/dist/types-CD0rUKKT.d.ts +0 -109
- package/dist/uuid-RVN2T26F.js.map +0 -1
- package/dist/zod-7YXKWYMC.js.map +0 -1
- /package/dist/{chunk-DGUM43GV.js.map → client-JJFLE6RT.js.map} +0 -0
- /package/dist/{client-CRRO2376.js.map → history-snip-HAWNAYKY.js.map} +0 -0
- /package/dist/{history-snip-64GYP4ZL.js.map → lsp-3APWNKB2.js.map} +0 -0
- /package/dist/{lsp-PS3BWIHC.js.map → manager-Z5EQ7YYV.js.map} +0 -0
- /package/dist/{manager-DLXK63XC.js.map → mcp-auth-NOIQPF7W.js.map} +0 -0
- /package/dist/{mcp-auth-AEI2R4ZC.js.map → provider-factory-KNBSHXJ6.js.map} +0 -0
- /package/dist/{provider-factory-TUHU3DIG.js.map → render-4VEODRK7.js.map} +0 -0
- /package/dist/{providers/openai.js.map → resolve-AGQZFMKD.js.map} +0 -0
- /package/dist/{render-GRN4ZSSW.js.map → spinner-72JEISPK.js.map} +0 -0
- /package/dist/{resolve-6KUZNEYW.js.map → uuid-CVTNAPEB.js.map} +0 -0
- /package/dist/{spinner-OJNR6NFO.js.map → zod-VKURGPRT.js.map} +0 -0
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { V as VirtualComputer, E as ExecOptions, C as CommandResult, a as VirtualFs } from './computer-BPdxSo6X.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Filesystem and network restriction config passed to `@anthropic-ai/sandbox-runtime`.
|
|
5
|
-
*/
|
|
6
|
-
interface SandboxConfig {
|
|
7
|
-
filesystem?: {
|
|
8
|
-
/** Paths the agent may write to (default: `[cwd]`). Write is denied everywhere else. */
|
|
9
|
-
allowWrite?: string[];
|
|
10
|
-
/** Paths to explicitly deny writes within allowed regions. */
|
|
11
|
-
denyWrite?: string[];
|
|
12
|
-
/** Paths to deny reading. By default everything is readable. */
|
|
13
|
-
denyRead?: string[];
|
|
14
|
-
/** Paths to re-allow reading within denyRead regions. Takes precedence over denyRead. */
|
|
15
|
-
allowRead?: string[];
|
|
16
|
-
};
|
|
17
|
-
network?: {
|
|
18
|
-
/** Domains the agent may reach via HTTP/HTTPS/SOCKS. */
|
|
19
|
-
allowedDomains?: string[];
|
|
20
|
-
/** Domains to explicitly block. */
|
|
21
|
-
deniedDomains?: string[];
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
interface SandboxedLocalComputerOptions {
|
|
25
|
-
defaultCwd?: string;
|
|
26
|
-
defaultTimeout?: number;
|
|
27
|
-
sandbox?: SandboxConfig;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* `VirtualComputer` that wraps every command with OS-level sandboxing via
|
|
31
|
-
* `@anthropic-ai/sandbox-runtime`. Uses macOS Seatbelt (`sandbox-exec`) or
|
|
32
|
-
* Linux bubblewrap (`bwrap`) under the hood.
|
|
33
|
-
*/
|
|
34
|
-
declare class SandboxedLocalComputer implements VirtualComputer {
|
|
35
|
-
private defaultCwd;
|
|
36
|
-
private defaultTimeout;
|
|
37
|
-
private sandboxConfig;
|
|
38
|
-
private initPromise;
|
|
39
|
-
private initialized;
|
|
40
|
-
constructor(opts?: SandboxedLocalComputerOptions);
|
|
41
|
-
private buildRuntimeConfig;
|
|
42
|
-
private ensureInitialized;
|
|
43
|
-
executeCommand(command: string, opts?: ExecOptions): Promise<CommandResult>;
|
|
44
|
-
/**
|
|
45
|
-
* Tear down the sandbox runtime. Call when the agent is done.
|
|
46
|
-
*/
|
|
47
|
-
dispose(): Promise<void>;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Bundled sandbox: a `VirtualFs` and `VirtualComputer` paired together.
|
|
52
|
-
*
|
|
53
|
-
* Use one of the built-in factories (`LocalSandbox`, `UnsandboxedLocal`)
|
|
54
|
-
* or import a remote backend from its subpath
|
|
55
|
-
* (`noumen/docker`, `noumen/e2b`, `noumen/freestyle`, `noumen/ssh`,
|
|
56
|
-
* `noumen/sprites`). You can also supply any object that satisfies this
|
|
57
|
-
* shape for custom sandboxes (in-memory, custom cloud backends, etc.).
|
|
58
|
-
*/
|
|
59
|
-
interface Sandbox {
|
|
60
|
-
fs: VirtualFs;
|
|
61
|
-
computer: VirtualComputer;
|
|
62
|
-
/** Optional cleanup — called by Agent.close() to tear down OS-level sandbox state. */
|
|
63
|
-
dispose?(): Promise<void>;
|
|
64
|
-
/**
|
|
65
|
-
* Lazily provision the underlying sandbox resource. Idempotent — repeated
|
|
66
|
-
* calls return the same single-flight promise.
|
|
67
|
-
*
|
|
68
|
-
* When `sandboxId` is provided the sandbox reconnects to an existing
|
|
69
|
-
* resource instead of creating a new one. This is used during session
|
|
70
|
-
* resume: the stored sandbox identifier is read from session metadata
|
|
71
|
-
* and passed here so the agent reattaches to its previous container.
|
|
72
|
-
*
|
|
73
|
-
* When omitted a fresh resource is provisioned (for factories that
|
|
74
|
-
* support auto-creation) or the call is a no-op (for factories that
|
|
75
|
-
* were given a pre-created resource up front).
|
|
76
|
-
*/
|
|
77
|
-
init?(sandboxId?: string): Promise<void>;
|
|
78
|
-
/**
|
|
79
|
-
* Return the opaque identifier for this sandbox instance so it can be
|
|
80
|
-
* persisted in session metadata and used to reconnect later via `init()`.
|
|
81
|
-
* Returns `undefined` before `init()` has resolved or for sandboxes
|
|
82
|
-
* that don't support reconnection.
|
|
83
|
-
*/
|
|
84
|
-
sandboxId?(): string | undefined;
|
|
85
|
-
}
|
|
86
|
-
interface UnsandboxedLocalOptions {
|
|
87
|
-
/** Working directory for both file resolution and command execution. */
|
|
88
|
-
cwd?: string;
|
|
89
|
-
/** Default timeout (ms) for shell commands. */
|
|
90
|
-
defaultTimeout?: number;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Create a `Sandbox` backed by the host filesystem and shell with **no
|
|
94
|
-
* OS-level isolation**. The agent can access anything the host process can.
|
|
95
|
-
*
|
|
96
|
-
* Use this for development or fully-trusted environments where sandboxing
|
|
97
|
-
* overhead is unwanted. For production use, prefer `LocalSandbox()` (which
|
|
98
|
-
* wraps commands with `@anthropic-ai/sandbox-runtime`).
|
|
99
|
-
*/
|
|
100
|
-
declare function UnsandboxedLocal(opts?: UnsandboxedLocalOptions): Sandbox;
|
|
101
|
-
interface LocalSandboxOptions {
|
|
102
|
-
/** Working directory for both file resolution and command execution. */
|
|
103
|
-
cwd?: string;
|
|
104
|
-
/** Default timeout (ms) for shell commands. */
|
|
105
|
-
defaultTimeout?: number;
|
|
106
|
-
/**
|
|
107
|
-
* Sandbox restrictions. Defaults: writes allowed only in `cwd`,
|
|
108
|
-
* reads allowed everywhere, network unrestricted.
|
|
109
|
-
*/
|
|
110
|
-
sandbox?: SandboxConfig;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Create a `Sandbox` with OS-level isolation via `@anthropic-ai/sandbox-runtime`.
|
|
114
|
-
*
|
|
115
|
-
* - **macOS**: Seatbelt (`sandbox-exec`) profiles restrict filesystem and network.
|
|
116
|
-
* - **Linux**: bubblewrap (`bwrap`) + socat for namespace-based isolation.
|
|
117
|
-
*
|
|
118
|
-
* Filesystem operations (`VirtualFs`) use the host `node:fs` — the sandbox
|
|
119
|
-
* boundary is enforced on shell commands (`VirtualComputer`), which is where
|
|
120
|
-
* the agent executes arbitrary code.
|
|
121
|
-
*
|
|
122
|
-
* Requires `@anthropic-ai/sandbox-runtime` as a peer dependency.
|
|
123
|
-
*/
|
|
124
|
-
declare function LocalSandbox(opts?: LocalSandboxOptions): Sandbox;
|
|
125
|
-
|
|
126
|
-
export { LocalSandbox as L, type Sandbox as S, UnsandboxedLocal as U, type LocalSandboxOptions as a, type SandboxConfig as b, SandboxedLocalComputer as c, type SandboxedLocalComputerOptions as d, type UnsandboxedLocalOptions as e };
|
package/dist/types-CD0rUKKT.d.ts
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
type PermissionMode = "default" | "plan" | "acceptEdits" | "auto" | "bypassPermissions" | "dontAsk";
|
|
2
|
-
type PermissionBehavior = "allow" | "deny" | "ask";
|
|
3
|
-
type PermissionRuleSource = "user" | "project" | "session" | "policy";
|
|
4
|
-
/** Precedence order: policy > project > user > session. */
|
|
5
|
-
declare const RULE_SOURCE_PRECEDENCE: PermissionRuleSource[];
|
|
6
|
-
interface PermissionRule {
|
|
7
|
-
toolName: string;
|
|
8
|
-
ruleContent?: string;
|
|
9
|
-
behavior: PermissionBehavior;
|
|
10
|
-
/** Where this rule came from. Higher-precedence sources override lower ones. */
|
|
11
|
-
source?: PermissionRuleSource;
|
|
12
|
-
}
|
|
13
|
-
type PermissionUpdate = {
|
|
14
|
-
type: "addRules";
|
|
15
|
-
rules: PermissionRule[];
|
|
16
|
-
} | {
|
|
17
|
-
type: "removeRules";
|
|
18
|
-
toolName: string;
|
|
19
|
-
behavior?: PermissionBehavior;
|
|
20
|
-
} | {
|
|
21
|
-
type: "setMode";
|
|
22
|
-
mode: PermissionMode;
|
|
23
|
-
} | {
|
|
24
|
-
type: "addDirectories";
|
|
25
|
-
directories: string[];
|
|
26
|
-
} | {
|
|
27
|
-
type: "removeDirectories";
|
|
28
|
-
directories: string[];
|
|
29
|
-
};
|
|
30
|
-
interface PermissionAllowResult<Input extends Record<string, unknown> = Record<string, unknown>> {
|
|
31
|
-
behavior: "allow";
|
|
32
|
-
updatedInput?: Input;
|
|
33
|
-
reason?: string;
|
|
34
|
-
}
|
|
35
|
-
interface PermissionDenyResult {
|
|
36
|
-
behavior: "deny";
|
|
37
|
-
message: string;
|
|
38
|
-
reason?: string;
|
|
39
|
-
}
|
|
40
|
-
interface PermissionAskResult {
|
|
41
|
-
behavior: "ask";
|
|
42
|
-
message: string;
|
|
43
|
-
reason?: string;
|
|
44
|
-
suggestions?: PermissionRule[];
|
|
45
|
-
}
|
|
46
|
-
interface PermissionPassthroughResult {
|
|
47
|
-
behavior: "passthrough";
|
|
48
|
-
message: string;
|
|
49
|
-
reason?: string;
|
|
50
|
-
suggestions?: PermissionRule[];
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* What `Tool.checkPermissions` returns. Includes `passthrough` for tools that
|
|
54
|
-
* have no opinion and want the global pipeline to decide.
|
|
55
|
-
*/
|
|
56
|
-
type PermissionResult<Input extends Record<string, unknown> = Record<string, unknown>> = PermissionAllowResult<Input> | PermissionDenyResult | PermissionAskResult | PermissionPassthroughResult;
|
|
57
|
-
/**
|
|
58
|
-
* Final decision after the pipeline resolves. No `passthrough` — always
|
|
59
|
-
* one of allow / deny / ask.
|
|
60
|
-
*/
|
|
61
|
-
type PermissionDecision<Input extends Record<string, unknown> = Record<string, unknown>> = PermissionAllowResult<Input> | PermissionDenyResult | PermissionAskResult;
|
|
62
|
-
interface PermissionRequest {
|
|
63
|
-
toolName: string;
|
|
64
|
-
input: Record<string, unknown>;
|
|
65
|
-
message: string;
|
|
66
|
-
suggestions?: PermissionRule[];
|
|
67
|
-
isReadOnly: boolean;
|
|
68
|
-
isDestructive: boolean;
|
|
69
|
-
/** Abort signal from the session — handlers should stop promptly when fired. */
|
|
70
|
-
signal?: AbortSignal;
|
|
71
|
-
}
|
|
72
|
-
interface PermissionResponse {
|
|
73
|
-
allow: boolean;
|
|
74
|
-
updatedInput?: Record<string, unknown>;
|
|
75
|
-
feedback?: string;
|
|
76
|
-
addRules?: PermissionRule[];
|
|
77
|
-
}
|
|
78
|
-
type PermissionHandler = (request: PermissionRequest) => Promise<PermissionResponse>;
|
|
79
|
-
interface AutoModeConfig {
|
|
80
|
-
/** Custom system prompt for the classifier. When omitted, uses a default. */
|
|
81
|
-
classifierPrompt?: string;
|
|
82
|
-
/** Model to use for classification. When omitted, uses the thread's model. */
|
|
83
|
-
classifierModel?: string;
|
|
84
|
-
}
|
|
85
|
-
interface DenialTrackingConfig {
|
|
86
|
-
/** Max consecutive denials before fallback (default: 3). */
|
|
87
|
-
maxConsecutive?: number;
|
|
88
|
-
/** Max total denials before fallback (default: 20). */
|
|
89
|
-
maxTotal?: number;
|
|
90
|
-
}
|
|
91
|
-
interface PermissionConfig {
|
|
92
|
-
mode?: PermissionMode;
|
|
93
|
-
rules?: PermissionRule[];
|
|
94
|
-
handler?: PermissionHandler;
|
|
95
|
-
workingDirectories?: string[];
|
|
96
|
-
/** Called when a permission update is applied (for host-side persistence). */
|
|
97
|
-
onPermissionUpdate?: (update: PermissionUpdate) => void;
|
|
98
|
-
/** Configuration for auto mode classifier. */
|
|
99
|
-
autoMode?: AutoModeConfig;
|
|
100
|
-
/** Configuration for denial tracking limits. */
|
|
101
|
-
denialTracking?: DenialTrackingConfig;
|
|
102
|
-
}
|
|
103
|
-
interface PermissionContext {
|
|
104
|
-
mode: PermissionMode;
|
|
105
|
-
rules: PermissionRule[];
|
|
106
|
-
workingDirectories: string[];
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
export { type AutoModeConfig as A, type DenialTrackingConfig as D, type PermissionResponse as P, RULE_SOURCE_PRECEDENCE as R, type PermissionMode as a, type PermissionResult as b, type PermissionHandler as c, type PermissionConfig as d, type PermissionContext as e, type PermissionBehavior as f, type PermissionRule as g, type PermissionDecision as h, type PermissionUpdate as i, type PermissionAllowResult as j, type PermissionAskResult as k, type PermissionDenyResult as l, type PermissionPassthroughResult as m, type PermissionRequest as n, type PermissionRuleSource as o };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/zod-7YXKWYMC.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|