experimental-agent 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.
Files changed (71) hide show
  1. package/README.md +55 -254
  2. package/dist/adapter-BigchkkI.d.mts +201 -0
  3. package/dist/adapter-BigchkkI.d.ts +201 -0
  4. package/dist/chunk-BFFNCESS.mjs +302 -0
  5. package/dist/chunk-C4VSUEY2.mjs +72 -0
  6. package/dist/chunk-DOD4MC5D.mjs +196 -0
  7. package/dist/chunk-ELWIUJUK.mjs +96 -0
  8. package/dist/chunk-GKASMIBR.mjs +50 -0
  9. package/dist/chunk-JO3JDCH5.mjs +107 -0
  10. package/dist/chunk-MSWINCCM.mjs +128 -0
  11. package/dist/chunk-RT72C52I.mjs +324 -0
  12. package/dist/chunk-ZUFJJYC4.mjs +150 -0
  13. package/dist/{handler-FRUPZ4LX.mjs → docker-QPCLWLYR.mjs} +3 -4
  14. package/dist/entry-BmQ8FO-5.d.ts +36 -0
  15. package/dist/entry-CZd9aAwn.d.mts +36 -0
  16. package/dist/index.d.mts +415 -18
  17. package/dist/index.d.ts +415 -18
  18. package/dist/index.js +3036 -5494
  19. package/dist/index.mjs +3264 -1142
  20. package/dist/lifecycle-workflow-steps.d.mts +5 -0
  21. package/dist/lifecycle-workflow-steps.d.ts +5 -0
  22. package/dist/lifecycle-workflow-steps.js +263 -0
  23. package/dist/lifecycle-workflow-steps.mjs +9 -0
  24. package/dist/lifecycle-workflow.d.mts +6 -6
  25. package/dist/lifecycle-workflow.d.ts +6 -6
  26. package/dist/lifecycle-workflow.js +192 -905
  27. package/dist/lifecycle-workflow.mjs +3 -1
  28. package/dist/local-KJ3BSIFJ.mjs +8 -0
  29. package/dist/next/loader.d.mts +1 -0
  30. package/dist/next/loader.d.ts +1 -0
  31. package/dist/next/loader.js +44 -18
  32. package/dist/next/loader.mjs +18 -13
  33. package/dist/next.js +32 -9
  34. package/dist/next.mjs +6 -4
  35. package/dist/{process-manager-JDUJDYGU.mjs → process-manager-WQHAIVRB.mjs} +1 -1
  36. package/dist/sandbox.d.mts +6 -0
  37. package/dist/sandbox.d.ts +6 -0
  38. package/dist/sandbox.js +1070 -0
  39. package/dist/sandbox.mjs +19 -0
  40. package/dist/steps-BnkRQKlc.d.ts +173 -0
  41. package/dist/steps-u-mGDbP_.d.mts +173 -0
  42. package/dist/storage.d.mts +11 -0
  43. package/dist/storage.d.ts +11 -0
  44. package/dist/storage.js +234 -0
  45. package/dist/storage.mjs +12 -0
  46. package/dist/vercel-QZ6INPMV.mjs +11 -0
  47. package/package.json +26 -5
  48. package/dist/agent-workflow.d.mts +0 -30
  49. package/dist/agent-workflow.d.ts +0 -30
  50. package/dist/agent-workflow.js +0 -5433
  51. package/dist/agent-workflow.mjs +0 -14
  52. package/dist/chunk-AML2VCQS.mjs +0 -1287
  53. package/dist/chunk-FQ67QZOI.mjs +0 -75
  54. package/dist/chunk-NO7RHGTH.mjs +0 -2367
  55. package/dist/chunk-NXDVNJRS.mjs +0 -106
  56. package/dist/chunk-OZZVS6L5.mjs +0 -139
  57. package/dist/chunk-QRWGDFFY.mjs +0 -75
  58. package/dist/chunk-SJVFFE5D.mjs +0 -402
  59. package/dist/chunk-TAXLUVIC.mjs +0 -1
  60. package/dist/chunk-TGNVXSMX.mjs +0 -399
  61. package/dist/chunk-YRYXN7W4.mjs +0 -48
  62. package/dist/chunk-ZIAHPXOJ.mjs +0 -595
  63. package/dist/client-BKA7XBGW.mjs +0 -15
  64. package/dist/client-CEeSFGva.d.mts +0 -2376
  65. package/dist/client-CEeSFGva.d.ts +0 -2376
  66. package/dist/docker-FB2MJTHJ.mjs +0 -12
  67. package/dist/local-fs-handlers-SYOCKTPN.mjs +0 -447
  68. package/dist/sandbox-UENKQV3T.mjs +0 -21
  69. package/dist/storage-LSDMRW73.mjs +0 -20
  70. package/dist/vercel-SD3JTECG.mjs +0 -20
  71. package/dist/vercel-sdk-I6A4MVAN.mjs +0 -8
@@ -1,402 +0,0 @@
1
- import {
2
- StorageConflictError
3
- } from "./chunk-YRYXN7W4.mjs";
4
-
5
- // src/storage/rpc.ts
6
- import { z } from "zod";
7
- var VercelLifecycleConfigSchema = z.object({
8
- pollIntervalMs: z.number().optional(),
9
- stopAfterInactiveMs: z.number().optional(),
10
- snapshotBeforeTimeoutMs: z.number().optional(),
11
- snapshotId: z.string().optional(),
12
- autoStart: z.boolean().optional()
13
- });
14
- var NetworkPolicySchema = z.custom().optional();
15
- var SandboxConfigBase = z.object({
16
- cwd: z.string().optional()
17
- });
18
- var SandboxConfigSchema = z.discriminatedUnion("type", [
19
- SandboxConfigBase.extend({
20
- type: z.literal("vercel"),
21
- resources: z.object({ vcpus: z.number() }).optional(),
22
- ports: z.array(z.number()).optional(),
23
- lifecycle: VercelLifecycleConfigSchema.optional(),
24
- networkPolicy: NetworkPolicySchema
25
- }),
26
- SandboxConfigBase.extend({
27
- type: z.literal("local")
28
- }),
29
- SandboxConfigBase.extend({
30
- type: z.literal("docker")
31
- }),
32
- SandboxConfigBase.extend({
33
- type: z.literal("custom"),
34
- url: z.string(),
35
- headers: z.record(z.string(), z.string()).optional()
36
- })
37
- ]);
38
- var GenerationSchema = z.object({
39
- maxSteps: z.number().optional(),
40
- temperature: z.number().optional(),
41
- topK: z.number().optional(),
42
- topP: z.number().optional(),
43
- frequencyPenalty: z.number().optional(),
44
- presencePenalty: z.number().optional(),
45
- maxOutputTokens: z.number().optional(),
46
- headers: z.record(z.string(), z.string()).optional()
47
- });
48
- var SessionSchema = z.object({
49
- id: z.string(),
50
- createdAt: z.number(),
51
- updatedAt: z.number(),
52
- runId: z.string().nullable(),
53
- lastMessageId: z.string().nullable(),
54
- tags: z.record(z.string(), z.unknown()).nullable(),
55
- system: z.string().nullable(),
56
- model: z.string().nullable(),
57
- sandboxId: z.string().nullable(),
58
- skillsDir: z.array(z.string()).nullable(),
59
- hookToken: z.string().nullable(),
60
- activeTools: z.array(z.string()).nullable(),
61
- generation: GenerationSchema.nullable().default(null)
62
- });
63
- var StepUsageSchema = z.object({
64
- stepIndex: z.number(),
65
- model: z.string(),
66
- inputTokens: z.number(),
67
- outputTokens: z.number(),
68
- totalTokens: z.number(),
69
- cacheReadTokens: z.number(),
70
- cacheWriteTokens: z.number(),
71
- reasoningTokens: z.number()
72
- });
73
- var UsageSummarySchema = z.object({
74
- model: z.string(),
75
- inputTokens: z.number(),
76
- outputTokens: z.number(),
77
- totalTokens: z.number(),
78
- cacheReadTokens: z.number(),
79
- cacheWriteTokens: z.number(),
80
- reasoningTokens: z.number(),
81
- stepCount: z.number()
82
- });
83
- var MessageUsageSchema = z.object({
84
- steps: z.array(StepUsageSchema),
85
- summary: UsageSummarySchema
86
- });
87
- var InterruptedLastPartSchema = z.object({
88
- index: z.number(),
89
- part: z.unknown()
90
- });
91
- var MessageSchema = z.object({
92
- id: z.string(),
93
- sessionId: z.string(),
94
- role: z.enum(["user", "assistant", "system"]),
95
- createdAt: z.number(),
96
- startedAt: z.number().nullable(),
97
- completedAt: z.number().nullable(),
98
- interruptedAt: z.number().nullable(),
99
- interruptedLastPart: InterruptedLastPartSchema.nullable().default(null),
100
- usage: MessageUsageSchema.nullable()
101
- });
102
- var PartSchema = z.object({
103
- id: z.string(),
104
- messageId: z.string(),
105
- sessionId: z.string(),
106
- index: z.number(),
107
- part: z.unknown()
108
- });
109
- var CommandResultSchema = z.object({
110
- stdout: z.string(),
111
- stderr: z.string(),
112
- exitCode: z.number(),
113
- completedAt: z.number()
114
- });
115
- var SandboxRecordSchema = z.object({
116
- id: z.string(),
117
- config: SandboxConfigSchema,
118
- tags: z.record(z.string(), z.unknown()).nullable(),
119
- createdAt: z.number().nullable(),
120
- lastActivityAt: z.number().nullable(),
121
- acquiringLockId: z.string().nullable(),
122
- acquiringLockAt: z.number().nullable(),
123
- setupKey: z.string().nullable().optional(),
124
- setupCompletedAt: z.number().nullable().optional(),
125
- providerMetadata: z.discriminatedUnion("provider", [
126
- z.object({
127
- provider: z.literal("vercel"),
128
- sandboxId: z.string().nullable(),
129
- snapshotId: z.string().nullable()
130
- })
131
- ]).optional()
132
- });
133
- var SessionUpdateSchema = SessionSchema.omit({
134
- id: true,
135
- generation: true
136
- }).partial().extend({
137
- id: SessionSchema.shape.id,
138
- generation: GenerationSchema.nullable().optional()
139
- }).strict();
140
- var SandboxUpdateSchema = SandboxRecordSchema.omit({ id: true }).partial().extend({
141
- id: SandboxRecordSchema.shape.id
142
- }).strict();
143
- var CommandBaseSchema = z.object({
144
- id: z.string(),
145
- sessionId: z.string(),
146
- command: z.string(),
147
- args: z.array(z.string()).optional(),
148
- startedAt: z.number()
149
- });
150
- var CommandSchema = z.discriminatedUnion("status", [
151
- CommandBaseSchema.extend({ status: z.literal("running") }),
152
- CommandBaseSchema.extend({
153
- status: z.literal("completed"),
154
- result: CommandResultSchema
155
- }),
156
- CommandBaseSchema.extend({
157
- status: z.literal("killed"),
158
- result: CommandResultSchema.optional()
159
- }),
160
- CommandBaseSchema.extend({
161
- status: z.literal("failed"),
162
- result: CommandResultSchema
163
- })
164
- ]);
165
- function ListResultSchema(itemSchema) {
166
- return z.object({
167
- items: z.array(itemSchema),
168
- nextCursor: z.string().nullable()
169
- });
170
- }
171
- var SetupSnapshotSchema = z.object({
172
- key: z.string(),
173
- snapshotId: z.string().nullable(),
174
- createdAt: z.number(),
175
- lastUsedAt: z.number().nullable(),
176
- acquiringLockId: z.string().nullable(),
177
- acquiringLockAt: z.number().nullable()
178
- });
179
- var methods = {
180
- "session.get": {
181
- params: z.object({ id: z.string() }),
182
- result: SessionSchema.nullable()
183
- },
184
- "session.set": {
185
- params: SessionSchema,
186
- result: SessionSchema
187
- },
188
- "session.update": {
189
- params: SessionUpdateSchema,
190
- result: SessionSchema
191
- },
192
- "session.list": {
193
- params: z.object({
194
- tags: z.record(z.string(), z.unknown()).optional(),
195
- order: z.enum([
196
- "createdAt_asc",
197
- "createdAt_desc",
198
- "updatedAt_asc",
199
- "updatedAt_desc"
200
- ]).optional(),
201
- cursor: z.string().optional(),
202
- limit: z.number().optional()
203
- }),
204
- result: ListResultSchema(SessionSchema)
205
- },
206
- "session.listBySandbox": {
207
- params: z.object({
208
- sandboxId: z.string(),
209
- tags: z.record(z.string(), z.unknown()).optional(),
210
- order: z.enum([
211
- "createdAt_asc",
212
- "createdAt_desc",
213
- "updatedAt_asc",
214
- "updatedAt_desc"
215
- ]).optional(),
216
- cursor: z.string().optional(),
217
- limit: z.number().optional()
218
- }),
219
- result: ListResultSchema(SessionSchema)
220
- },
221
- "session.delete": {
222
- params: z.object({ id: z.string() }),
223
- result: z.void()
224
- },
225
- "session.tag.set": {
226
- params: z.object({
227
- sessionId: z.string(),
228
- tags: z.record(z.string(), z.unknown())
229
- }),
230
- result: SessionSchema
231
- },
232
- "message.get": {
233
- params: z.object({ id: z.string() }),
234
- result: MessageSchema.nullable()
235
- },
236
- "message.set": {
237
- params: MessageSchema,
238
- result: MessageSchema
239
- },
240
- "message.list": {
241
- params: z.object({
242
- sessionId: z.string(),
243
- cursor: z.string().optional(),
244
- limit: z.number().optional()
245
- }),
246
- result: ListResultSchema(MessageSchema)
247
- },
248
- "part.listByMessage": {
249
- params: z.object({
250
- messageId: z.string(),
251
- cursor: z.string().optional(),
252
- limit: z.number().optional()
253
- }),
254
- result: ListResultSchema(PartSchema)
255
- },
256
- "part.listBySession": {
257
- params: z.object({
258
- sessionId: z.string(),
259
- cursor: z.string().optional(),
260
- limit: z.number().optional()
261
- }),
262
- result: ListResultSchema(PartSchema)
263
- },
264
- "part.set": {
265
- params: PartSchema,
266
- result: PartSchema
267
- },
268
- "part.delete": {
269
- params: z.object({ id: z.string() }),
270
- result: z.void()
271
- },
272
- "sandbox.get": {
273
- params: z.object({ key: z.string() }),
274
- result: SandboxRecordSchema.nullable()
275
- },
276
- "sandbox.getBySession": {
277
- params: z.object({ sessionId: z.string() }),
278
- result: SandboxRecordSchema.nullable()
279
- },
280
- "sandbox.set": {
281
- params: SandboxRecordSchema,
282
- result: z.void()
283
- },
284
- "sandbox.update": {
285
- params: SandboxUpdateSchema,
286
- result: SandboxRecordSchema
287
- },
288
- "sandbox.list": {
289
- params: z.object({
290
- tags: z.record(z.string(), z.unknown()).optional(),
291
- order: z.enum([
292
- "createdAt_asc",
293
- "createdAt_desc",
294
- "lastActivityAt_asc",
295
- "lastActivityAt_desc"
296
- ]).optional(),
297
- cursor: z.string().optional(),
298
- limit: z.number().optional()
299
- }),
300
- result: ListResultSchema(SandboxRecordSchema)
301
- },
302
- "sandbox.tag.set": {
303
- params: z.object({
304
- sandboxId: z.string(),
305
- tags: z.record(z.string(), z.unknown())
306
- }),
307
- result: SandboxRecordSchema
308
- },
309
- "command.get": {
310
- params: z.object({ id: z.string() }),
311
- result: CommandSchema.nullable()
312
- },
313
- "command.set": {
314
- params: CommandSchema,
315
- result: CommandSchema
316
- },
317
- "command.list": {
318
- params: z.object({
319
- sessionId: z.string(),
320
- includeFinished: z.boolean().optional(),
321
- cursor: z.string().optional(),
322
- limit: z.number().optional()
323
- }),
324
- result: ListResultSchema(CommandSchema)
325
- },
326
- "setup.get": {
327
- params: z.object({ key: z.string() }),
328
- result: SetupSnapshotSchema.nullable()
329
- },
330
- "setup.set": {
331
- params: SetupSnapshotSchema,
332
- result: z.void()
333
- },
334
- "setup.delete": {
335
- params: z.object({ key: z.string() }),
336
- result: z.void()
337
- },
338
- "setup.acquireLock": {
339
- params: z.object({
340
- key: z.string(),
341
- lockId: z.string(),
342
- lockTimeoutMs: z.number()
343
- }),
344
- result: SetupSnapshotSchema.nullable()
345
- },
346
- "sandbox.acquireLock": {
347
- params: z.object({
348
- record: SandboxRecordSchema,
349
- lockTimeoutMs: z.number()
350
- }),
351
- result: SandboxRecordSchema.nullable()
352
- }
353
- };
354
- var STORAGE_RPC_METHODS = Object.keys(methods);
355
-
356
- // src/storage/handler.ts
357
- async function handleStorageRpc(body, handlers) {
358
- const { method, params } = body;
359
- if (!(method in methods)) {
360
- return {
361
- error: { code: "METHOD_NOT_FOUND", message: `Unknown method: ${method}` }
362
- };
363
- }
364
- const methodName = method;
365
- const schema = methods[methodName].params;
366
- const parsed = schema.safeParse(params);
367
- if (!parsed.success) {
368
- return {
369
- error: {
370
- code: "INVALID_PARAMS",
371
- message: parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join(", ")
372
- }
373
- };
374
- }
375
- try {
376
- const handler = handlers[methodName];
377
- const result = await handler(parsed.data);
378
- return { result };
379
- } catch (e) {
380
- const isConflict = e instanceof StorageConflictError || e instanceof Error && e.name === "StorageConflictError";
381
- if (isConflict) {
382
- return {
383
- error: {
384
- code: "CONFLICT",
385
- message: e instanceof Error ? e.message : String(e)
386
- }
387
- };
388
- }
389
- return {
390
- error: {
391
- code: "INTERNAL_ERROR",
392
- message: e instanceof Error ? e.message : String(e)
393
- }
394
- };
395
- }
396
- }
397
-
398
- export {
399
- STORAGE_RPC_METHODS,
400
- handleStorageRpc
401
- };
402
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3N0b3JhZ2UvcnBjLnRzIiwgIi4uL3NyYy9zdG9yYWdlL2hhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IFZlcmNlbExpZmVjeWNsZUNvbmZpZ1NjaGVtYSA9IHoub2JqZWN0KHtcbiAgcG9sbEludGVydmFsTXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgc3RvcEFmdGVySW5hY3RpdmVNczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBzbmFwc2hvdEJlZm9yZVRpbWVvdXRNczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBzbmFwc2hvdElkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGF1dG9TdGFydDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbn0pO1xuXG5pbXBvcnQgdHlwZSB7IE5ldHdvcmtQb2xpY3kgfSBmcm9tIFwiQHZlcmNlbC9zYW5kYm94XCI7XG5cbi8qKlxuICogUGFzc3Rocm91Z2ggc2NoZW1hIFx1MjAxNCB0aGUgU0RLIHZhbGlkYXRlcyB0aGUgYWN0dWFsIHNoYXBlLlxuICogVHlwZWQgdmlhIHouY3VzdG9tIHNvIHRoZSBpbmZlcnJlZCBUUyB0eXBlIG1hdGNoZXMgdGhlIFNESydzIE5ldHdvcmtQb2xpY3kuXG4gKi9cbmNvbnN0IE5ldHdvcmtQb2xpY3lTY2hlbWEgPSB6LmN1c3RvbTxOZXR3b3JrUG9saWN5PigpLm9wdGlvbmFsKCk7XG5cbmV4cG9ydCB0eXBlIHsgTmV0d29ya1BvbGljeSB9O1xuXG5jb25zdCBTYW5kYm94Q29uZmlnQmFzZSA9IHoub2JqZWN0KHtcbiAgY3dkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcblxuZXhwb3J0IGNvbnN0IFNhbmRib3hDb25maWdTY2hlbWEgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICBTYW5kYm94Q29uZmlnQmFzZS5leHRlbmQoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInZlcmNlbFwiKSxcbiAgICByZXNvdXJjZXM6IHoub2JqZWN0KHsgdmNwdXM6IHoubnVtYmVyKCkgfSkub3B0aW9uYWwoKSxcbiAgICBwb3J0czogei5hcnJheSh6Lm51bWJlcigpKS5vcHRpb25hbCgpLFxuICAgIGxpZmVjeWNsZTogVmVyY2VsTGlmZWN5Y2xlQ29uZmlnU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgbmV0d29ya1BvbGljeTogTmV0d29ya1BvbGljeVNjaGVtYSxcbiAgfSksXG4gIFNhbmRib3hDb25maWdCYXNlLmV4dGVuZCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwibG9jYWxcIiksXG4gIH0pLFxuICBTYW5kYm94Q29uZmlnQmFzZS5leHRlbmQoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcImRvY2tlclwiKSxcbiAgfSksXG4gIFNhbmRib3hDb25maWdCYXNlLmV4dGVuZCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwiY3VzdG9tXCIpLFxuICAgIHVybDogei5zdHJpbmcoKSxcbiAgICBoZWFkZXJzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICB9KSxcbl0pO1xuXG5leHBvcnQgdHlwZSBTYW5kYm94Q29uZmlnID0gei5pbmZlcjx0eXBlb2YgU2FuZGJveENvbmZpZ1NjaGVtYT47XG5cbmNvbnN0IEdlbmVyYXRpb25TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIG1heFN0ZXBzOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRlbXBlcmF0dXJlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvcEs6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG9wUDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBmcmVxdWVuY3lQZW5hbHR5OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHByZXNlbmNlUGVuYWx0eTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBtYXhPdXRwdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgaGVhZGVyczogei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgU2Vzc2lvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouc3RyaW5nKCksXG4gIGNyZWF0ZWRBdDogei5udW1iZXIoKSxcbiAgdXBkYXRlZEF0OiB6Lm51bWJlcigpLFxuICBydW5JZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBsYXN0TWVzc2FnZUlkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5udWxsYWJsZSgpLFxuICBzeXN0ZW06IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgbW9kZWw6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgc2FuZGJveElkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIHNraWxsc0Rpcjogei5hcnJheSh6LnN0cmluZygpKS5udWxsYWJsZSgpLFxuICBob29rVG9rZW46IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgYWN0aXZlVG9vbHM6IHouYXJyYXkoei5zdHJpbmcoKSkubnVsbGFibGUoKSxcbiAgZ2VuZXJhdGlvbjogR2VuZXJhdGlvblNjaGVtYS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG59KTtcblxuZXhwb3J0IGNvbnN0IFN0ZXBVc2FnZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3RlcEluZGV4OiB6Lm51bWJlcigpLFxuICBtb2RlbDogei5zdHJpbmcoKSxcbiAgaW5wdXRUb2tlbnM6IHoubnVtYmVyKCksXG4gIG91dHB1dFRva2Vuczogei5udW1iZXIoKSxcbiAgdG90YWxUb2tlbnM6IHoubnVtYmVyKCksXG4gIGNhY2hlUmVhZFRva2Vuczogei5udW1iZXIoKSxcbiAgY2FjaGVXcml0ZVRva2Vuczogei5udW1iZXIoKSxcbiAgcmVhc29uaW5nVG9rZW5zOiB6Lm51bWJlcigpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBVc2FnZVN1bW1hcnlTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIG1vZGVsOiB6LnN0cmluZygpLFxuICBpbnB1dFRva2Vuczogei5udW1iZXIoKSxcbiAgb3V0cHV0VG9rZW5zOiB6Lm51bWJlcigpLFxuICB0b3RhbFRva2Vuczogei5udW1iZXIoKSxcbiAgY2FjaGVSZWFkVG9rZW5zOiB6Lm51bWJlcigpLFxuICBjYWNoZVdyaXRlVG9rZW5zOiB6Lm51bWJlcigpLFxuICByZWFzb25pbmdUb2tlbnM6IHoubnVtYmVyKCksXG4gIHN0ZXBDb3VudDogei5udW1iZXIoKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgTWVzc2FnZVVzYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBzdGVwczogei5hcnJheShTdGVwVXNhZ2VTY2hlbWEpLFxuICBzdW1tYXJ5OiBVc2FnZVN1bW1hcnlTY2hlbWEsXG59KTtcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVVzYWdlID0gei5pbmZlcjx0eXBlb2YgTWVzc2FnZVVzYWdlU2NoZW1hPjtcbmV4cG9ydCB0eXBlIFVzYWdlU3VtbWFyeSA9IHouaW5mZXI8dHlwZW9mIFVzYWdlU3VtbWFyeVNjaGVtYT47XG5leHBvcnQgdHlwZSBTdGVwVXNhZ2UgPSB6LmluZmVyPHR5cGVvZiBTdGVwVXNhZ2VTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgSW50ZXJydXB0ZWRMYXN0UGFydFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaW5kZXg6IHoubnVtYmVyKCksXG4gIHBhcnQ6IHoudW5rbm93bigpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBNZXNzYWdlU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZDogei5zdHJpbmcoKSxcbiAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICByb2xlOiB6LmVudW0oW1widXNlclwiLCBcImFzc2lzdGFudFwiLCBcInN5c3RlbVwiXSksXG4gIGNyZWF0ZWRBdDogei5udW1iZXIoKSxcbiAgc3RhcnRlZEF0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gIGNvbXBsZXRlZEF0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gIGludGVycnVwdGVkQXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgaW50ZXJydXB0ZWRMYXN0UGFydDogSW50ZXJydXB0ZWRMYXN0UGFydFNjaGVtYS5udWxsYWJsZSgpLmRlZmF1bHQobnVsbCksXG4gIHVzYWdlOiBNZXNzYWdlVXNhZ2VTY2hlbWEubnVsbGFibGUoKSxcbn0pO1xuXG4vKipcbiAqIFRoZSBgcGFydGAgZmllbGQgY29ycmVzcG9uZHMgdG8gYFVJTWVzc2FnZVtcInBhcnRzXCJdW251bWJlcl1gIGZyb20gdGhlIGBhaWAgcGFja2FnZS5cbiAqIFdlIHVzZSBgei51bmtub3duKClgIGJlY2F1c2UgdGhlIGV4YWN0IHNoYXBlIHZhcmllcyBieSBwYXJ0IHR5cGUgKHRleHQsIHRvb2wtY2FsbCxcbiAqIHRvb2wtcmVzdWx0LCBldGMuKSBhbmQgbWF5IGV2b2x2ZSB3aXRoIHRoZSBBSSBTREsuIFRoZSBSUEMgbGF5ZXIganVzdCBwYXNzZXMgaXQgdGhyb3VnaC5cbiAqL1xuZXhwb3J0IGNvbnN0IFBhcnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LnN0cmluZygpLFxuICBtZXNzYWdlSWQ6IHouc3RyaW5nKCksXG4gIHNlc3Npb25JZDogei5zdHJpbmcoKSxcbiAgaW5kZXg6IHoubnVtYmVyKCksXG4gIHBhcnQ6IHoudW5rbm93bigpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBDb21tYW5kUmVzdWx0U2NoZW1hID0gei5vYmplY3Qoe1xuICBzdGRvdXQ6IHouc3RyaW5nKCksXG4gIHN0ZGVycjogei5zdHJpbmcoKSxcbiAgZXhpdENvZGU6IHoubnVtYmVyKCksXG4gIGNvbXBsZXRlZEF0OiB6Lm51bWJlcigpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBTYW5kYm94UmVjb3JkU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZDogei5zdHJpbmcoKSxcbiAgY29uZmlnOiBTYW5kYm94Q29uZmlnU2NoZW1hLFxuICB0YWdzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkubnVsbGFibGUoKSxcbiAgY3JlYXRlZEF0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gIGxhc3RBY3Rpdml0eUF0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gIGFjcXVpcmluZ0xvY2tJZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBhY3F1aXJpbmdMb2NrQXQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgc2V0dXBLZXk6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBzZXR1cENvbXBsZXRlZEF0OiB6Lm51bWJlcigpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgcHJvdmlkZXJNZXRhZGF0YTogelxuICAgIC5kaXNjcmltaW5hdGVkVW5pb24oXCJwcm92aWRlclwiLCBbXG4gICAgICB6Lm9iamVjdCh7XG4gICAgICAgIHByb3ZpZGVyOiB6LmxpdGVyYWwoXCJ2ZXJjZWxcIiksXG4gICAgICAgIHNhbmRib3hJZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgICAgICBzbmFwc2hvdElkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgICB9KSxcbiAgICBdKVxuICAgIC5vcHRpb25hbCgpLFxufSk7XG5cbmNvbnN0IFNlc3Npb25VcGRhdGVTY2hlbWEgPSBTZXNzaW9uU2NoZW1hLm9taXQoe1xuICBpZDogdHJ1ZSxcbiAgZ2VuZXJhdGlvbjogdHJ1ZSxcbn0pXG4gIC5wYXJ0aWFsKClcbiAgLmV4dGVuZCh7XG4gICAgaWQ6IFNlc3Npb25TY2hlbWEuc2hhcGUuaWQsXG4gICAgZ2VuZXJhdGlvbjogR2VuZXJhdGlvblNjaGVtYS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuY29uc3QgU2FuZGJveFVwZGF0ZVNjaGVtYSA9IFNhbmRib3hSZWNvcmRTY2hlbWEub21pdCh7IGlkOiB0cnVlIH0pXG4gIC5wYXJ0aWFsKClcbiAgLmV4dGVuZCh7XG4gICAgaWQ6IFNhbmRib3hSZWNvcmRTY2hlbWEuc2hhcGUuaWQsXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuY29uc3QgQ29tbWFuZEJhc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGlkOiB6LnN0cmluZygpLFxuICBzZXNzaW9uSWQ6IHouc3RyaW5nKCksXG4gIGNvbW1hbmQ6IHouc3RyaW5nKCksXG4gIGFyZ3M6IHouYXJyYXkoei5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgc3RhcnRlZEF0OiB6Lm51bWJlcigpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBDb21tYW5kU2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJzdGF0dXNcIiwgW1xuICBDb21tYW5kQmFzZVNjaGVtYS5leHRlbmQoeyBzdGF0dXM6IHoubGl0ZXJhbChcInJ1bm5pbmdcIikgfSksXG4gIENvbW1hbmRCYXNlU2NoZW1hLmV4dGVuZCh7XG4gICAgc3RhdHVzOiB6LmxpdGVyYWwoXCJjb21wbGV0ZWRcIiksXG4gICAgcmVzdWx0OiBDb21tYW5kUmVzdWx0U2NoZW1hLFxuICB9KSxcbiAgQ29tbWFuZEJhc2VTY2hlbWEuZXh0ZW5kKHtcbiAgICBzdGF0dXM6IHoubGl0ZXJhbChcImtpbGxlZFwiKSxcbiAgICByZXN1bHQ6IENvbW1hbmRSZXN1bHRTY2hlbWEub3B0aW9uYWwoKSxcbiAgfSksXG4gIENvbW1hbmRCYXNlU2NoZW1hLmV4dGVuZCh7XG4gICAgc3RhdHVzOiB6LmxpdGVyYWwoXCJmYWlsZWRcIiksXG4gICAgcmVzdWx0OiBDb21tYW5kUmVzdWx0U2NoZW1hLFxuICB9KSxcbl0pO1xuXG5mdW5jdGlvbiBMaXN0UmVzdWx0U2NoZW1hPFQgZXh0ZW5kcyB6LlpvZFR5cGVBbnk+KGl0ZW1TY2hlbWE6IFQpIHtcbiAgcmV0dXJuIHoub2JqZWN0KHtcbiAgICBpdGVtczogei5hcnJheShpdGVtU2NoZW1hKSxcbiAgICBuZXh0Q3Vyc29yOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgU2V0dXBTbmFwc2hvdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAga2V5OiB6LnN0cmluZygpLFxuICBzbmFwc2hvdElkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGNyZWF0ZWRBdDogei5udW1iZXIoKSxcbiAgbGFzdFVzZWRBdDogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICBhY3F1aXJpbmdMb2NrSWQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSxcbiAgYWNxdWlyaW5nTG9ja0F0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG59KTtcblxuY29uc3QgbWV0aG9kcyA9IHtcbiAgXCJzZXNzaW9uLmdldFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IGlkOiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogU2Vzc2lvblNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcInNlc3Npb24uc2V0XCI6IHtcbiAgICBwYXJhbXM6IFNlc3Npb25TY2hlbWEsXG4gICAgcmVzdWx0OiBTZXNzaW9uU2NoZW1hLFxuICB9LFxuICBcInNlc3Npb24udXBkYXRlXCI6IHtcbiAgICBwYXJhbXM6IFNlc3Npb25VcGRhdGVTY2hlbWEsXG4gICAgcmVzdWx0OiBTZXNzaW9uU2NoZW1hLFxuICB9LFxuICBcInNlc3Npb24ubGlzdFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICB0YWdzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkub3B0aW9uYWwoKSxcbiAgICAgIG9yZGVyOiB6XG4gICAgICAgIC5lbnVtKFtcbiAgICAgICAgICBcImNyZWF0ZWRBdF9hc2NcIixcbiAgICAgICAgICBcImNyZWF0ZWRBdF9kZXNjXCIsXG4gICAgICAgICAgXCJ1cGRhdGVkQXRfYXNjXCIsXG4gICAgICAgICAgXCJ1cGRhdGVkQXRfZGVzY1wiLFxuICAgICAgICBdKVxuICAgICAgICAub3B0aW9uYWwoKSxcbiAgICAgIGN1cnNvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbGltaXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IExpc3RSZXN1bHRTY2hlbWEoU2Vzc2lvblNjaGVtYSksXG4gIH0sXG4gIFwic2Vzc2lvbi5saXN0QnlTYW5kYm94XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHNhbmRib3hJZDogei5zdHJpbmcoKSxcbiAgICAgIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKS5vcHRpb25hbCgpLFxuICAgICAgb3JkZXI6IHpcbiAgICAgICAgLmVudW0oW1xuICAgICAgICAgIFwiY3JlYXRlZEF0X2FzY1wiLFxuICAgICAgICAgIFwiY3JlYXRlZEF0X2Rlc2NcIixcbiAgICAgICAgICBcInVwZGF0ZWRBdF9hc2NcIixcbiAgICAgICAgICBcInVwZGF0ZWRBdF9kZXNjXCIsXG4gICAgICAgIF0pXG4gICAgICAgIC5vcHRpb25hbCgpLFxuICAgICAgY3Vyc29yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBsaW1pdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogTGlzdFJlc3VsdFNjaGVtYShTZXNzaW9uU2NoZW1hKSxcbiAgfSxcbiAgXCJzZXNzaW9uLmRlbGV0ZVwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IGlkOiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogei52b2lkKCksXG4gIH0sXG4gIFwic2Vzc2lvbi50YWcuc2V0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHNlc3Npb25JZDogei5zdHJpbmcoKSxcbiAgICAgIHRhZ3M6IHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IFNlc3Npb25TY2hlbWEsXG4gIH0sXG4gIFwibWVzc2FnZS5nZXRcIjoge1xuICAgIHBhcmFtczogei5vYmplY3QoeyBpZDogei5zdHJpbmcoKSB9KSxcbiAgICByZXN1bHQ6IE1lc3NhZ2VTY2hlbWEubnVsbGFibGUoKSxcbiAgfSxcbiAgXCJtZXNzYWdlLnNldFwiOiB7XG4gICAgcGFyYW1zOiBNZXNzYWdlU2NoZW1hLFxuICAgIHJlc3VsdDogTWVzc2FnZVNjaGVtYSxcbiAgfSxcbiAgXCJtZXNzYWdlLmxpc3RcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICAgICAgY3Vyc29yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBsaW1pdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogTGlzdFJlc3VsdFNjaGVtYShNZXNzYWdlU2NoZW1hKSxcbiAgfSxcbiAgXCJwYXJ0Lmxpc3RCeU1lc3NhZ2VcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgbWVzc2FnZUlkOiB6LnN0cmluZygpLFxuICAgICAgY3Vyc29yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBsaW1pdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogTGlzdFJlc3VsdFNjaGVtYShQYXJ0U2NoZW1hKSxcbiAgfSxcbiAgXCJwYXJ0Lmxpc3RCeVNlc3Npb25cIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAgc2Vzc2lvbklkOiB6LnN0cmluZygpLFxuICAgICAgY3Vyc29yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICBsaW1pdDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIH0pLFxuICAgIHJlc3VsdDogTGlzdFJlc3VsdFNjaGVtYShQYXJ0U2NoZW1hKSxcbiAgfSxcbiAgXCJwYXJ0LnNldFwiOiB7XG4gICAgcGFyYW1zOiBQYXJ0U2NoZW1hLFxuICAgIHJlc3VsdDogUGFydFNjaGVtYSxcbiAgfSxcbiAgXCJwYXJ0LmRlbGV0ZVwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7IGlkOiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogei52b2lkKCksXG4gIH0sXG4gIFwic2FuZGJveC5nZXRcIjoge1xuICAgIHBhcmFtczogei5vYmplY3QoeyBrZXk6IHouc3RyaW5nKCkgfSksXG4gICAgcmVzdWx0OiBTYW5kYm94UmVjb3JkU2NoZW1hLm51bGxhYmxlKCksXG4gIH0sXG4gIFwic2FuZGJveC5nZXRCeVNlc3Npb25cIjoge1xuICAgIHBhcmFtczogei5vYmplY3QoeyBzZXNzaW9uSWQ6IHouc3RyaW5nKCkgfSksXG4gICAgcmVzdWx0OiBTYW5kYm94UmVjb3JkU2NoZW1hLm51bGxhYmxlKCksXG4gIH0sXG4gIFwic2FuZGJveC5zZXRcIjoge1xuICAgIHBhcmFtczogU2FuZGJveFJlY29yZFNjaGVtYSxcbiAgICByZXN1bHQ6IHoudm9pZCgpLFxuICB9LFxuICBcInNhbmRib3gudXBkYXRlXCI6IHtcbiAgICBwYXJhbXM6IFNhbmRib3hVcGRhdGVTY2hlbWEsXG4gICAgcmVzdWx0OiBTYW5kYm94UmVjb3JkU2NoZW1hLFxuICB9LFxuICBcInNhbmRib3gubGlzdFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICB0YWdzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkub3B0aW9uYWwoKSxcbiAgICAgIG9yZGVyOiB6XG4gICAgICAgIC5lbnVtKFtcbiAgICAgICAgICBcImNyZWF0ZWRBdF9hc2NcIixcbiAgICAgICAgICBcImNyZWF0ZWRBdF9kZXNjXCIsXG4gICAgICAgICAgXCJsYXN0QWN0aXZpdHlBdF9hc2NcIixcbiAgICAgICAgICBcImxhc3RBY3Rpdml0eUF0X2Rlc2NcIixcbiAgICAgICAgXSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgICBjdXJzb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgIGxpbWl0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBMaXN0UmVzdWx0U2NoZW1hKFNhbmRib3hSZWNvcmRTY2hlbWEpLFxuICB9LFxuICBcInNhbmRib3gudGFnLnNldFwiOiB7XG4gICAgcGFyYW1zOiB6Lm9iamVjdCh7XG4gICAgICBzYW5kYm94SWQ6IHouc3RyaW5nKCksXG4gICAgICB0YWdzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSksXG4gICAgfSksXG4gICAgcmVzdWx0OiBTYW5kYm94UmVjb3JkU2NoZW1hLFxuICB9LFxuICBcImNvbW1hbmQuZ2V0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsgaWQ6IHouc3RyaW5nKCkgfSksXG4gICAgcmVzdWx0OiBDb21tYW5kU2NoZW1hLm51bGxhYmxlKCksXG4gIH0sXG4gIFwiY29tbWFuZC5zZXRcIjoge1xuICAgIHBhcmFtczogQ29tbWFuZFNjaGVtYSxcbiAgICByZXN1bHQ6IENvbW1hbmRTY2hlbWEsXG4gIH0sXG4gIFwiY29tbWFuZC5saXN0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHNlc3Npb25JZDogei5zdHJpbmcoKSxcbiAgICAgIGluY2x1ZGVGaW5pc2hlZDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICAgIGN1cnNvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgbGltaXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IExpc3RSZXN1bHRTY2hlbWEoQ29tbWFuZFNjaGVtYSksXG4gIH0sXG4gIFwic2V0dXAuZ2V0XCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsga2V5OiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogU2V0dXBTbmFwc2hvdFNjaGVtYS5udWxsYWJsZSgpLFxuICB9LFxuICBcInNldHVwLnNldFwiOiB7XG4gICAgcGFyYW1zOiBTZXR1cFNuYXBzaG90U2NoZW1hLFxuICAgIHJlc3VsdDogei52b2lkKCksXG4gIH0sXG4gIFwic2V0dXAuZGVsZXRlXCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHsga2V5OiB6LnN0cmluZygpIH0pLFxuICAgIHJlc3VsdDogei52b2lkKCksXG4gIH0sXG4gIFwic2V0dXAuYWNxdWlyZUxvY2tcIjoge1xuICAgIHBhcmFtczogei5vYmplY3Qoe1xuICAgICAga2V5OiB6LnN0cmluZygpLFxuICAgICAgbG9ja0lkOiB6LnN0cmluZygpLFxuICAgICAgbG9ja1RpbWVvdXRNczogei5udW1iZXIoKSxcbiAgICB9KSxcbiAgICByZXN1bHQ6IFNldHVwU25hcHNob3RTY2hlbWEubnVsbGFibGUoKSxcbiAgfSxcbiAgXCJzYW5kYm94LmFjcXVpcmVMb2NrXCI6IHtcbiAgICBwYXJhbXM6IHoub2JqZWN0KHtcbiAgICAgIHJlY29yZDogU2FuZGJveFJlY29yZFNjaGVtYSxcbiAgICAgIGxvY2tUaW1lb3V0TXM6IHoubnVtYmVyKCksXG4gICAgfSksXG4gICAgcmVzdWx0OiBTYW5kYm94UmVjb3JkU2NoZW1hLm51bGxhYmxlKCksXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgeyBtZXRob2RzIH07XG5leHBvcnQgdHlwZSBTdG9yYWdlTWV0aG9kcyA9IHR5cGVvZiBtZXRob2RzO1xuZXhwb3J0IHR5cGUgTWV0aG9kTmFtZSA9IGtleW9mIFN0b3JhZ2VNZXRob2RzO1xuZXhwb3J0IGNvbnN0IFNUT1JBR0VfUlBDX01FVEhPRFMgPSBPYmplY3Qua2V5cyhtZXRob2RzKSBhcyBNZXRob2ROYW1lW107XG4iLCAiaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgU3RvcmFnZUNvbmZsaWN0RXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyB0eXBlIE1ldGhvZE5hbWUsIG1ldGhvZHMsIHR5cGUgU3RvcmFnZU1ldGhvZHMgfSBmcm9tIFwiLi9ycGNcIjtcblxuZXhwb3J0IHR5cGUgSGFuZGxlcnMgPSB7XG4gIFtLIGluIE1ldGhvZE5hbWVdOiAoXG4gICAgcGFyYW1zOiB6LmluZmVyPFN0b3JhZ2VNZXRob2RzW0tdW1wicGFyYW1zXCJdPlxuICApID0+IFByb21pc2U8ei5pbmZlcjxTdG9yYWdlTWV0aG9kc1tLXVtcInJlc3VsdFwiXT4+O1xufTtcblxuZXhwb3J0IHR5cGUgUnBjUmVxdWVzdCA9IHtcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHBhcmFtczogdW5rbm93bjtcbn07XG5cbmV4cG9ydCB0eXBlIFJwY1N1Y2Nlc3NSZXNwb25zZTxUID0gdW5rbm93bj4gPSB7XG4gIHJlc3VsdDogVDtcbn07XG5cbmV4cG9ydCB0eXBlIFJwY0Vycm9yUmVzcG9uc2UgPSB7XG4gIGVycm9yOiB7IGNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH07XG59O1xuXG5leHBvcnQgdHlwZSBScGNSZXNwb25zZTxUID0gdW5rbm93bj4gPSBScGNTdWNjZXNzUmVzcG9uc2U8VD4gfCBScGNFcnJvclJlc3BvbnNlO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlU3RvcmFnZVJwYyhcbiAgYm9keTogUnBjUmVxdWVzdCxcbiAgaGFuZGxlcnM6IEhhbmRsZXJzXG4pOiBQcm9taXNlPFJwY1Jlc3BvbnNlPiB7XG4gIGNvbnN0IHsgbWV0aG9kLCBwYXJhbXMgfSA9IGJvZHk7XG5cbiAgaWYgKCEobWV0aG9kIGluIG1ldGhvZHMpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yOiB7IGNvZGU6IFwiTUVUSE9EX05PVF9GT1VORFwiLCBtZXNzYWdlOiBgVW5rbm93biBtZXRob2Q6ICR7bWV0aG9kfWAgfSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWV0aG9kTmFtZSA9IG1ldGhvZCBhcyBNZXRob2ROYW1lO1xuICBjb25zdCBzY2hlbWEgPSBtZXRob2RzW21ldGhvZE5hbWVdLnBhcmFtcztcbiAgY29uc3QgcGFyc2VkID0gc2NoZW1hLnNhZmVQYXJzZShwYXJhbXMpO1xuXG4gIGlmICghcGFyc2VkLnN1Y2Nlc3MpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IHtcbiAgICAgICAgY29kZTogXCJJTlZBTElEX1BBUkFNU1wiLFxuICAgICAgICBtZXNzYWdlOiBwYXJzZWQuZXJyb3IuaXNzdWVzXG4gICAgICAgICAgLm1hcCgoaSkgPT4gYCR7aS5wYXRoLmpvaW4oXCIuXCIpfTogJHtpLm1lc3NhZ2V9YClcbiAgICAgICAgICAuam9pbihcIiwgXCIpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBoYW5kbGVyID0gaGFuZGxlcnNbbWV0aG9kTmFtZV0gYXMgKFxuICAgICAgcGFyYW1zOiB1bmtub3duXG4gICAgKSA9PiBQcm9taXNlPHVua25vd24+O1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIocGFyc2VkLmRhdGEpO1xuICAgIHJldHVybiB7IHJlc3VsdCB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc3QgaXNDb25mbGljdCA9XG4gICAgICBlIGluc3RhbmNlb2YgU3RvcmFnZUNvbmZsaWN0RXJyb3IgfHxcbiAgICAgIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5uYW1lID09PSBcIlN0b3JhZ2VDb25mbGljdEVycm9yXCIpO1xuXG4gICAgaWYgKGlzQ29uZmxpY3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgY29kZTogXCJDT05GTElDVFwiLFxuICAgICAgICAgIG1lc3NhZ2U6IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBlcnJvcjoge1xuICAgICAgICBjb2RlOiBcIklOVEVSTkFMX0VSUk9SXCIsXG4gICAgICAgIG1lc3NhZ2U6IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFBQSxTQUFTLFNBQVM7QUFFbEIsSUFBTSw4QkFBOEIsRUFBRSxPQUFPO0FBQUEsRUFDM0MsZ0JBQWdCLEVBQUUsT0FBTyxF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
@@ -1 +0,0 @@
1
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJzb3VyY2VzQ29udGVudCI6IFtdLAogICJtYXBwaW5ncyI6ICIiLAogICJuYW1lcyI6IFtdCn0K