@sidekick-coder/zenith-kit 0.0.11 → 0.0.13
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/bin/zenith.js +28 -0
- package/bin/zkit.js +26 -0
- package/cli/commands/build.js +49 -0
- package/cli/commands/dev.js +37 -0
- package/cli/commands/start.js +38 -0
- package/cli/config.js +23 -0
- package/cli/utils/createWrapper.js +20 -0
- package/dist/client/index.d.mts +448 -0
- package/dist/client/index.mjs +2 -0
- package/dist/components/index-Dk5fhUBV.mjs +4399 -0
- package/dist/components/index.es.js +65708 -0
- package/dist/components/styles.css +4756 -0
- package/dist/server/index.d.mts +776 -178
- package/dist/server/index.mjs +5 -1743
- package/dist/shared/chunk-0Lt9GpW0.mjs +1 -0
- package/dist/shared/index.d.mts +266 -21
- package/dist/shared/index.mjs +2 -856
- package/package.json +66 -13
- package/tsconfig.client.json +3 -3
- package/tsconfig.server.json +1 -1
- package/tsdown/createTsdownConfig.js +29 -0
- package/tsdown.config.ts +53 -3
- package/vite/createViteConfig.js +55 -0
- package/vite/plugins/zenith.js +143 -0
- package/vite.config.ts +71 -0
- package/dist/shared/chunk-CfYAbeIz.mjs +0 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};export{t};
|
package/dist/shared/index.d.mts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import * as v from "valibot";
|
|
2
|
+
import * as _$_casl_ability0 from "@casl/ability";
|
|
3
|
+
import { defineAbility } from "@casl/ability";
|
|
2
4
|
|
|
3
5
|
//#region src/shared/services/ConfigService.d.ts
|
|
4
6
|
interface Entry {
|
|
@@ -7,6 +9,7 @@ interface Entry {
|
|
|
7
9
|
source: string;
|
|
8
10
|
}
|
|
9
11
|
declare class ConfigService {
|
|
12
|
+
static __container_entry_key: string;
|
|
10
13
|
entries: Map<string, Entry>;
|
|
11
14
|
constructor();
|
|
12
15
|
list(): Entry[];
|
|
@@ -29,7 +32,8 @@ declare class ContainerService {
|
|
|
29
32
|
private entries;
|
|
30
33
|
loadFromRecord(record: Record<string, any>): void;
|
|
31
34
|
toRecord(): Record<string, any>;
|
|
32
|
-
|
|
35
|
+
private getKey;
|
|
36
|
+
set(payload: EntryKey, value: any): this;
|
|
33
37
|
has(payload: EntryKey): boolean;
|
|
34
38
|
get<T>(payload: EntryKey): T;
|
|
35
39
|
singleton<T>(classConstructor: Constructor$1<T>): T;
|
|
@@ -38,19 +42,9 @@ declare class ContainerService {
|
|
|
38
42
|
keys(): EntryKey[];
|
|
39
43
|
}
|
|
40
44
|
//#endregion
|
|
41
|
-
//#region src/shared/services/CookieService.d.ts
|
|
42
|
-
declare class CookieService {
|
|
43
|
-
cookies: Map<string, string>;
|
|
44
|
-
prefix: string;
|
|
45
|
-
constructor(data?: Partial<CookieService>);
|
|
46
|
-
load(cookies: Record<string, string> | Map<string, string>): void;
|
|
47
|
-
get(name: string, defaultValue?: string | null): string | null;
|
|
48
|
-
set(name: string, value: string, options?: any): void;
|
|
49
|
-
toRecord(): Record<string, string>;
|
|
50
|
-
}
|
|
51
|
-
//#endregion
|
|
52
45
|
//#region src/shared/services/LoggerService.d.ts
|
|
53
46
|
declare class LoggerService {
|
|
47
|
+
static __container_entry_key: string;
|
|
54
48
|
info(message: string, meta?: any): void;
|
|
55
49
|
debug(message: string, meta?: any): void;
|
|
56
50
|
warn(message: string, meta?: any): void;
|
|
@@ -77,6 +71,7 @@ interface EmmitterServiceOptions {
|
|
|
77
71
|
logger?: LoggerService;
|
|
78
72
|
}
|
|
79
73
|
declare class EmmitterService<Events extends Record<string, any> = Record<string, any>> {
|
|
74
|
+
static __container_entry_key: string;
|
|
80
75
|
private handlers;
|
|
81
76
|
private debug;
|
|
82
77
|
private logger;
|
|
@@ -104,12 +99,20 @@ declare class EmmitterService<Events extends Record<string, any> = Record<string
|
|
|
104
99
|
//#region src/shared/entities/LifecycleHook.d.ts
|
|
105
100
|
declare class LifecycleHook {
|
|
106
101
|
hook_id: string;
|
|
102
|
+
hook_aliases?: string[];
|
|
107
103
|
order?: number;
|
|
108
104
|
subhooks?: LifecycleHook[];
|
|
109
|
-
|
|
105
|
+
register(): Promise<void>;
|
|
106
|
+
load(): Promise<void>;
|
|
107
|
+
boot(): Promise<void>;
|
|
108
|
+
shutdown(): Promise<void>;
|
|
109
|
+
/** @deprecated Use register */
|
|
110
110
|
onRegister(): Promise<void>;
|
|
111
|
+
/** @deprecated Use load */
|
|
111
112
|
onLoad(): Promise<void>;
|
|
113
|
+
/** @deprecated Use boot */
|
|
112
114
|
onBoot(): Promise<void>;
|
|
115
|
+
/** @deprecated Use shutdown */
|
|
113
116
|
onShutdown(): Promise<void>;
|
|
114
117
|
}
|
|
115
118
|
//#endregion
|
|
@@ -159,17 +162,35 @@ declare function composeWith<TBase extends Constructor, M extends Array<(base: C
|
|
|
159
162
|
declare function mixin<TBase extends Constructor>(Source: TBase): <TTarget extends Constructor>(Target: TTarget) => TTarget & TBase;
|
|
160
163
|
//#endregion
|
|
161
164
|
//#region src/shared/services/LifecycleService.d.ts
|
|
165
|
+
type LifecycleMethod = 'register' | 'load' | 'boot' | 'shutdown';
|
|
162
166
|
interface ListOptions {
|
|
163
|
-
|
|
167
|
+
include?: string | string[];
|
|
168
|
+
exclude?: string | string[];
|
|
169
|
+
}
|
|
170
|
+
interface LifecycleServiceOptions {
|
|
171
|
+
debug?: boolean;
|
|
172
|
+
hooks?: Map<string, LifecycleHook>;
|
|
173
|
+
logger?: LoggerService;
|
|
174
|
+
onError?: (error: Error, context: {
|
|
175
|
+
hookId: string;
|
|
176
|
+
method: LifecycleMethod;
|
|
177
|
+
}) => void;
|
|
164
178
|
}
|
|
165
179
|
declare class LifecycleService {
|
|
180
|
+
static __container_entry_key: string;
|
|
166
181
|
hooks: Map<string, LifecycleHook>;
|
|
167
182
|
logger: LoggerService;
|
|
168
183
|
debug: boolean;
|
|
169
|
-
constructor(data?:
|
|
170
|
-
|
|
184
|
+
constructor(data?: LifecycleServiceOptions);
|
|
185
|
+
onError(error: Error, context: {
|
|
186
|
+
hookId: string;
|
|
187
|
+
method: LifecycleMethod;
|
|
188
|
+
}): void;
|
|
189
|
+
mapAliases(args: string[]): string[];
|
|
171
190
|
list(options?: ListOptions): LifecycleHook[];
|
|
172
191
|
add(...payload: (LifecycleHook | Constructor<LifecycleHook>)[]): void;
|
|
192
|
+
emitMethod(method: LifecycleMethod, options?: ListOptions): Promise<void>;
|
|
193
|
+
emit(payload: LifecycleMethod | LifecycleMethod[], options?: ListOptions): Promise<void>;
|
|
173
194
|
register(options?: ListOptions): Promise<void>;
|
|
174
195
|
load(options?: ListOptions): Promise<void>;
|
|
175
196
|
boot(options?: ListOptions): Promise<void>;
|
|
@@ -179,6 +200,7 @@ declare class LifecycleService {
|
|
|
179
200
|
//#endregion
|
|
180
201
|
//#region src/shared/services/TranslatorService.d.ts
|
|
181
202
|
declare class TranslatorService {
|
|
203
|
+
static __container_entry_key: string;
|
|
182
204
|
entries: Map<string, string>;
|
|
183
205
|
locale: string;
|
|
184
206
|
localeLoaders: Map<string, () => Promise<Record<string, string>>>;
|
|
@@ -200,10 +222,11 @@ declare class TranslatorService {
|
|
|
200
222
|
//#endregion
|
|
201
223
|
//#region src/shared/services/UploadService.d.ts
|
|
202
224
|
declare class UploadService {
|
|
225
|
+
static __container_entry_key: string;
|
|
203
226
|
single(name: string): void;
|
|
204
227
|
multiple(name: string): void;
|
|
205
228
|
}
|
|
206
|
-
declare namespace
|
|
229
|
+
declare namespace urlValidator_d_exports {
|
|
207
230
|
export { array, arrayNumber, boolean, date, datetime, number, object };
|
|
208
231
|
}
|
|
209
232
|
declare const number: () => v.SchemaWithPipe<readonly [v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, v.TransformAction<any, number>, v.IntegerAction<number, undefined>]>;
|
|
@@ -219,10 +242,24 @@ declare const object: () => v.SchemaWithPipe<readonly [v.UnionSchema<[v.StringSc
|
|
|
219
242
|
}>, v.TransformAction<{
|
|
220
243
|
[x: string]: any;
|
|
221
244
|
}, Record<string, any>>]>;
|
|
245
|
+
declare namespace paginationValidator_d_exports {
|
|
246
|
+
export { PaginationParams, base };
|
|
247
|
+
}
|
|
248
|
+
interface PaginationParams {
|
|
249
|
+
maxLimit?: number;
|
|
250
|
+
orderFields?: string[];
|
|
251
|
+
}
|
|
252
|
+
declare const base: (options?: PaginationParams) => v.ObjectSchema<{
|
|
253
|
+
readonly page: v.OptionalSchema<v.SchemaWithPipe<readonly [v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, v.TransformAction<any, number>, v.IntegerAction<number, undefined>]>, 1>;
|
|
254
|
+
readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, v.TransformAction<any, number>, v.IntegerAction<number, undefined>]>, number>;
|
|
255
|
+
readonly orderBy: v.OptionalSchema<v.SchemaWithPipe<readonly [v.UnionSchema<[v.StringSchema<undefined>, v.ArraySchema<v.StringSchema<undefined>, undefined>], undefined>, v.TransformAction<string | string[], string[]>, v.ArraySchema<v.PicklistSchema<string[], undefined>, undefined>]> | v.SchemaWithPipe<readonly [v.UnionSchema<[v.StringSchema<undefined>, v.ArraySchema<v.StringSchema<undefined>, undefined>], undefined>, v.TransformAction<string | string[], string[]>, v.ArraySchema<v.StringSchema<undefined>, undefined>]>, readonly []>;
|
|
256
|
+
readonly orderDirection: v.OptionalSchema<v.SchemaWithPipe<readonly [v.UnionSchema<[v.StringSchema<undefined>, v.ArraySchema<v.StringSchema<undefined>, undefined>], undefined>, v.TransformAction<string | string[], string[]>, v.ArraySchema<v.UnionSchema<[v.LiteralSchema<"asc", undefined>, v.LiteralSchema<"desc", undefined>], undefined>, undefined>]>, readonly []>;
|
|
257
|
+
}, undefined>;
|
|
222
258
|
//#endregion
|
|
223
259
|
//#region src/shared/services/ValidatorService.d.ts
|
|
224
260
|
declare const extras: {
|
|
225
|
-
url: typeof
|
|
261
|
+
url: typeof urlValidator_d_exports;
|
|
262
|
+
pagination: typeof paginationValidator_d_exports;
|
|
226
263
|
};
|
|
227
264
|
type Valibot = typeof v & {
|
|
228
265
|
extras: typeof extras;
|
|
@@ -239,6 +276,7 @@ type ValidatorResult<T extends v.ObjectEntries> = v.InferOutput<v.ObjectSchema<T
|
|
|
239
276
|
type ValidatePayload<T extends ValibotSchema = ValibotSchema> = ValidatorCallback<T> | T;
|
|
240
277
|
type ValidateResult<T extends ValidatePayload> = T extends ValibotSchema ? v.InferOutput<T> : T extends ValidatorCallback<infer U> ? v.InferOutput<U> : unknown;
|
|
241
278
|
declare class ValidatorService {
|
|
279
|
+
static __container_entry_key: string;
|
|
242
280
|
v: Valibot;
|
|
243
281
|
create<T extends ValibotSchema>(cb: ValidatorCallback<T>): T;
|
|
244
282
|
validate<T extends ValibotSchema>(payload: any, cb: ValidatePayload<T>): v.InferOutput<T>;
|
|
@@ -256,8 +294,9 @@ declare function unflatten(obj: any): Record<string, any>;
|
|
|
256
294
|
//#region src/shared/utils/formatBytes.d.ts
|
|
257
295
|
declare function formatBytes(bytes: number, decimals?: number): string;
|
|
258
296
|
//#endregion
|
|
259
|
-
//#region src/shared/utils/
|
|
260
|
-
declare function
|
|
297
|
+
//#region src/shared/utils/parseRouteUrl.d.ts
|
|
298
|
+
declare function parseUrlParams(routePath: string, requestPath: string): Record<string, string>;
|
|
299
|
+
declare function parseUrlQuery(requestPath: string): Record<string, any>;
|
|
261
300
|
//#endregion
|
|
262
301
|
//#region src/shared/utils/tryCatch.d.ts
|
|
263
302
|
interface Tryer {
|
|
@@ -329,6 +368,136 @@ declare class ShellException extends BaseException {
|
|
|
329
368
|
//#region src/shared/facades/validator.d.ts
|
|
330
369
|
declare const validator: ValidatorService;
|
|
331
370
|
//#endregion
|
|
371
|
+
//#region src/shared/entities/PermissionEntity.d.ts
|
|
372
|
+
declare const PermissionEntity_base: {
|
|
373
|
+
new (...args: any[]): {
|
|
374
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
375
|
+
};
|
|
376
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
377
|
+
} & Constructor;
|
|
378
|
+
declare class PermissionEntity extends PermissionEntity_base {
|
|
379
|
+
id: number;
|
|
380
|
+
name: string;
|
|
381
|
+
description: string | null;
|
|
382
|
+
origin: string;
|
|
383
|
+
subject: string;
|
|
384
|
+
action: string;
|
|
385
|
+
conditions: string | null | Record<string, any>;
|
|
386
|
+
get editable(): boolean;
|
|
387
|
+
get parsedConditions(): any;
|
|
388
|
+
}
|
|
389
|
+
//#endregion
|
|
390
|
+
//#region src/shared/entities/AclEntity.d.ts
|
|
391
|
+
declare class AclEntity {
|
|
392
|
+
static __container_entry_key: string;
|
|
393
|
+
ability: ReturnType<typeof defineAbility>;
|
|
394
|
+
permissions: PermissionEntity[];
|
|
395
|
+
debug: boolean;
|
|
396
|
+
logger: LoggerService;
|
|
397
|
+
constructor(data?: Partial<AclEntity>);
|
|
398
|
+
can(action: string, subject: any, object?: Record<string, any>): boolean;
|
|
399
|
+
cannot(action: string, subject: any, object?: Record<string, any>): boolean;
|
|
400
|
+
subject(subject: string, object: Record<string, any>): Record<string, any> & _$_casl_ability0.ForcedSubject<string>;
|
|
401
|
+
}
|
|
402
|
+
//#endregion
|
|
403
|
+
//#region src/shared/entities/CookieMapEntity.d.ts
|
|
404
|
+
interface CookieMapEntityOptions$1 {
|
|
405
|
+
cookies?: Map<string, string>;
|
|
406
|
+
prefix?: string;
|
|
407
|
+
}
|
|
408
|
+
declare class CookieMapEntity {
|
|
409
|
+
static __container_entry_key: string;
|
|
410
|
+
cookies: Map<string, string>;
|
|
411
|
+
prefix: string;
|
|
412
|
+
constructor(data?: CookieMapEntityOptions$1);
|
|
413
|
+
load(cookies: Record<string, string> | Map<string, string>): void;
|
|
414
|
+
get(name: string, defaultValue?: string | null): string | null;
|
|
415
|
+
set(name: string, value: string, options?: any): void;
|
|
416
|
+
toRecord(): Record<string, string>;
|
|
417
|
+
}
|
|
418
|
+
//#endregion
|
|
419
|
+
//#region src/shared/entities/DriveEntryEntity.d.ts
|
|
420
|
+
declare class DriveEntry {
|
|
421
|
+
name: string;
|
|
422
|
+
path: string;
|
|
423
|
+
type: 'file' | 'directory';
|
|
424
|
+
metas: Record<string, any>;
|
|
425
|
+
constructor(data: DriveEntry);
|
|
426
|
+
}
|
|
427
|
+
//#endregion
|
|
428
|
+
//#region src/shared/entities/FileEntity.d.ts
|
|
429
|
+
declare const FileEntity_base: {
|
|
430
|
+
new (...args: any[]): {
|
|
431
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
432
|
+
};
|
|
433
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
434
|
+
} & Constructor & {
|
|
435
|
+
new (...args: any[]): {
|
|
436
|
+
created_at: Date | string;
|
|
437
|
+
updated_at: Date | string;
|
|
438
|
+
};
|
|
439
|
+
} & {
|
|
440
|
+
new (...args: any[]): {
|
|
441
|
+
deleted_at: Date | string | null;
|
|
442
|
+
};
|
|
443
|
+
};
|
|
444
|
+
declare class FileEntity extends FileEntity_base {
|
|
445
|
+
id: number;
|
|
446
|
+
drive: string;
|
|
447
|
+
mimetype: string;
|
|
448
|
+
purpose: string;
|
|
449
|
+
client_name: string;
|
|
450
|
+
filename: string;
|
|
451
|
+
public: boolean;
|
|
452
|
+
url?: string;
|
|
453
|
+
metas?: Record<string, any>;
|
|
454
|
+
isImage(): boolean;
|
|
455
|
+
}
|
|
456
|
+
//#endregion
|
|
457
|
+
//#region src/shared/entities/FileUploadSessionEntity.d.ts
|
|
458
|
+
declare const UploadSession_base: {
|
|
459
|
+
new (...args: any[]): {
|
|
460
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
461
|
+
};
|
|
462
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
463
|
+
} & Constructor & {
|
|
464
|
+
new (...args: any[]): {
|
|
465
|
+
created_at: Date | string;
|
|
466
|
+
updated_at: Date | string;
|
|
467
|
+
};
|
|
468
|
+
} & {
|
|
469
|
+
new (...args: any[]): {
|
|
470
|
+
deleted_at: Date | string | null;
|
|
471
|
+
};
|
|
472
|
+
};
|
|
473
|
+
declare class UploadSession extends UploadSession_base {
|
|
474
|
+
id: number;
|
|
475
|
+
purpose: string;
|
|
476
|
+
mime_types: string;
|
|
477
|
+
max_size: number;
|
|
478
|
+
upload_url?: string;
|
|
479
|
+
create_file_url?: string;
|
|
480
|
+
getParsedMimeTypes(): string[];
|
|
481
|
+
isAllowedMimeType(mimeType: string): boolean;
|
|
482
|
+
isAllowedSize(size: number): boolean;
|
|
483
|
+
}
|
|
484
|
+
//#endregion
|
|
485
|
+
//#region src/shared/entities/HeaderMapEntity.d.ts
|
|
486
|
+
interface CookieMapEntityOptions {
|
|
487
|
+
headers?: Record<string, string>;
|
|
488
|
+
setHeader?: (name: string, value: string) => void;
|
|
489
|
+
}
|
|
490
|
+
declare class HeaderMapEntity {
|
|
491
|
+
static __container_entry_key: string;
|
|
492
|
+
entries: Map<string, string>;
|
|
493
|
+
setHeader?: (name: string, value: string) => void;
|
|
494
|
+
constructor(data?: CookieMapEntityOptions);
|
|
495
|
+
loadFromRecord(cookies: Record<string, string>): void;
|
|
496
|
+
get(name: string, defaultValue?: string | null): string | null;
|
|
497
|
+
set(name: string, value: string): void;
|
|
498
|
+
toRecord(): Record<string, string>;
|
|
499
|
+
}
|
|
500
|
+
//#endregion
|
|
332
501
|
//#region src/shared/entities/ModuleManifestEntity.d.ts
|
|
333
502
|
interface ModuleManifestBuildImport {
|
|
334
503
|
from: string;
|
|
@@ -378,4 +547,80 @@ declare class Module extends Module_base {
|
|
|
378
547
|
setData(data: Partial<Module | ModuleManifest>): void;
|
|
379
548
|
}
|
|
380
549
|
//#endregion
|
|
381
|
-
|
|
550
|
+
//#region src/shared/entities/PaginationEntity.d.ts
|
|
551
|
+
declare class PaginationEntity<T = Record<string, any>> {
|
|
552
|
+
items: T[];
|
|
553
|
+
total: number;
|
|
554
|
+
page: number;
|
|
555
|
+
per_page: number;
|
|
556
|
+
total_pages: number;
|
|
557
|
+
constructor(data: Partial<PaginationEntity>);
|
|
558
|
+
static from<T = Record<string, string>>(payload: Partial<PaginationEntity<T>>): PaginationEntity<T>;
|
|
559
|
+
}
|
|
560
|
+
//#endregion
|
|
561
|
+
//#region src/shared/entities/PluginEntity.d.ts
|
|
562
|
+
declare const PluginEntity_base: {
|
|
563
|
+
new (...args: any[]): {
|
|
564
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
565
|
+
};
|
|
566
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
567
|
+
} & Constructor;
|
|
568
|
+
declare class PluginEntity extends PluginEntity_base {
|
|
569
|
+
id: string;
|
|
570
|
+
name: string;
|
|
571
|
+
version: string;
|
|
572
|
+
enabled: boolean;
|
|
573
|
+
}
|
|
574
|
+
//#endregion
|
|
575
|
+
//#region src/shared/entities/RoleEntity.d.ts
|
|
576
|
+
declare const Role_base: {
|
|
577
|
+
new (...args: any[]): {
|
|
578
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
579
|
+
};
|
|
580
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
581
|
+
} & Constructor & {
|
|
582
|
+
new (...args: any[]): {
|
|
583
|
+
created_at: Date | string;
|
|
584
|
+
updated_at: Date | string;
|
|
585
|
+
};
|
|
586
|
+
} & {
|
|
587
|
+
new (...args: any[]): {
|
|
588
|
+
deleted_at: Date | string | null;
|
|
589
|
+
};
|
|
590
|
+
};
|
|
591
|
+
declare class Role extends Role_base {
|
|
592
|
+
id: number;
|
|
593
|
+
name: string;
|
|
594
|
+
description?: string;
|
|
595
|
+
}
|
|
596
|
+
//#endregion
|
|
597
|
+
//#region src/shared/entities/UserEntity.d.ts
|
|
598
|
+
declare const UserEntity_base: {
|
|
599
|
+
new (...args: any[]): {
|
|
600
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
601
|
+
};
|
|
602
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
603
|
+
} & Constructor & {
|
|
604
|
+
new (...args: any[]): {
|
|
605
|
+
created_at: Date | string;
|
|
606
|
+
updated_at: Date | string;
|
|
607
|
+
};
|
|
608
|
+
} & {
|
|
609
|
+
new (...args: any[]): {
|
|
610
|
+
deleted_at: Date | string | null;
|
|
611
|
+
};
|
|
612
|
+
};
|
|
613
|
+
declare class UserEntity extends UserEntity_base {
|
|
614
|
+
id: number;
|
|
615
|
+
email: string;
|
|
616
|
+
name: string;
|
|
617
|
+
username: string;
|
|
618
|
+
password?: string;
|
|
619
|
+
verified_at?: Date | string | null;
|
|
620
|
+
permissions?: PermissionEntity[];
|
|
621
|
+
roles?: Role[];
|
|
622
|
+
get initials(): string;
|
|
623
|
+
}
|
|
624
|
+
//#endregion
|
|
625
|
+
export { AclEntity, AnyClass, BaseException, ConfigService, Constructor, ContainerService, CookieMapEntity, DriveEntry as DriveEntryEntity, EmmitterService, EmmitterServiceOptions, FileEntity, UploadSession as FileUploadSessionEntity, HeaderMapEntity, LifecycleHook, LifecycleService, LifecycleServiceOptions, LoggerService, Mixin, Module as ModuleEntity, ModuleManifestBuild, ModuleManifestBuildImport, ModuleManifest as ModuleManifestEntity, PaginationEntity, PartialBy, Permission, PermissionAssignment, PermissionEntity, PluginEntity, PublicData, Role as RoleEntity, ShellException, Token, TranslatorService, UnionToIntersection, UploadService, UserEntity, Valibot, ValibotSchema, ValibotSchemaAsync, ValidatePayload, ValidateResult, ValidatorCallback, ValidatorCallbackAsync, ValidatorResult, ValidatorService, compose, composeWith, createId, flatten, formatBytes, mixin, parseUrlParams, parseUrlQuery, permissionAssignmentSchema, permissionSchema, tokenSchema, tryCatch, unflatten, validator };
|
|
626
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5tdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC9zZXJ2aWNlcy9Db25maWdTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL0NvbnRhaW5lclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvTG9nZ2VyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9zZXJ2aWNlcy9FbW1pdHRlclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvTGlmZWN5Y2xlSG9vay5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC91dGlscy90eXBpbmcuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvdXRpbHMvY29tcG9zZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9zZXJ2aWNlcy9MaWZlY3ljbGVTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL1RyYW5zbGF0b3JTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL1VwbG9hZFNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvdmFsaWRhdG9ycy91cmxWYWxpZGF0b3IuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvdmFsaWRhdG9ycy9wYWdpbmF0aW9uVmFsaWRhdG9yLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL1ZhbGlkYXRvclNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvdXRpbHMvY3JlYXRlSWQuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvdXRpbHMvZmxhdHRlbi5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC91dGlscy9mb3JtYXRCeXRlcy5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC91dGlscy9wYXJzZVJvdXRlVXJsLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3V0aWxzL3RyeUNhdGNoLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NjaGVtYXMvcGVybWlzc2lvbkFzc2lnbm1lbnRTY2hlbWEuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2NoZW1hcy9wZXJtaXNzaW9uU2NoZW1hLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NjaGVtYXMvdG9rZW5TY2hlbWEuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZXhjZXB0aW9ucy9CYXNlRXhjZXB0aW9uLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2V4Y2VwdGlvbnMvU2hlbGxFeGNlcHRpb24uZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZmFjYWRlcy92YWxpZGF0b3IuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvUGVybWlzc2lvbkVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9BY2xFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvQ29va2llTWFwRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL0RyaXZlRW50cnlFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvRmlsZUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9GaWxlVXBsb2FkU2Vzc2lvbkVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9IZWFkZXJNYXBFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvTW9kdWxlTWFuaWZlc3RFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvTW9kdWxlRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL1BhZ2luYXRpb25FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvUGx1Z2luRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL1JvbGVFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvVXNlckVudGl0eS5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImludGVyZmFjZSBFbnRyeSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU6IGFueTtcbiAgICBzb3VyY2U6IHN0cmluZztcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbmZpZ1NlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBlbnRyaWVzOiBNYXA8c3RyaW5nLCBFbnRyeT47XG4gICAgY29uc3RydWN0b3IoKTtcbiAgICBsaXN0KCk6IEVudHJ5W107XG4gICAgcGFyc2VWYWx1ZSh2YWx1ZTogYW55KTogYW55O1xuICAgIGxvYWRGcm9tUmVjb3JkKHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55Piwgc291cmNlPzogc3RyaW5nKTogdm9pZDtcbiAgICBsb2FkRnJvbUVudHJpZXMoZW50cmllczogW3N0cmluZywgYW55XVtdLCBzb3VyY2U/OiBzdHJpbmcpOiB2b2lkO1xuICAgIHRvUmVjb3JkKCk6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbjtcbiAgICBnZXQ8VCA9IGFueSB8IHVuZGVmaW5lZD4oa2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IGFueSk6IFQ7XG4gICAgZ2V0T25lPFQgPSBhbnkgfCB1bmRlZmluZWQ+KGtleXM6IHN0cmluZ1tdLCBkZWZhdWx0VmFsdWU/OiBhbnkpOiBUO1xuICAgIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgc291cmNlPzogc3RyaW5nKTogdm9pZDtcbiAgICB1bnNldChrZXk6IHN0cmluZyk6IHZvaWQ7XG4gICAgY2xlYXIoKTogdm9pZDtcbn1cbmV4cG9ydCB7fTtcbiIsInR5cGUgQ29uc3RydWN0b3I8VCA9IG9iamVjdD4gPSBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUO1xudHlwZSBFbnRyeUtleSA9IHN0cmluZyB8IHN5bWJvbCB8IENvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGFpbmVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSBlbnRyaWVzO1xuICAgIGxvYWRGcm9tUmVjb3JkKHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQ7XG4gICAgdG9SZWNvcmQoKTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBwcml2YXRlIGdldEtleTtcbiAgICBzZXQocGF5bG9hZDogRW50cnlLZXksIHZhbHVlOiBhbnkpOiB0aGlzO1xuICAgIGhhcyhwYXlsb2FkOiBFbnRyeUtleSk6IGJvb2xlYW47XG4gICAgZ2V0PFQ+KHBheWxvYWQ6IEVudHJ5S2V5KTogVDtcbiAgICBzaW5nbGV0b248VD4oY2xhc3NDb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8VD4pOiBUO1xuICAgIGxvYWQoZW50cmllczogUmVjb3JkPGFueSwgYW55Pik6IHZvaWQ7XG4gICAgcHJveHk8VCA9IHVua25vd24+KGtleTogRW50cnlLZXkpOiBUO1xuICAgIGtleXMoKTogRW50cnlLZXlbXTtcbn1cbmV4cG9ydCB7fTtcbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlclNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgbWV0YT86IGFueSk6IHZvaWQ7XG4gICAgZGVidWcobWVzc2FnZTogc3RyaW5nLCBtZXRhPzogYW55KTogdm9pZDtcbiAgICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgbWV0YT86IGFueSk6IHZvaWQ7XG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBtZXRhPzogYW55KTogdm9pZDtcbiAgICBjaGlsZChvcHRpb25zOiBhbnkpOiBMb2dnZXJTZXJ2aWNlO1xufVxuIiwiaW1wb3J0IExvZ2dlclNlcnZpY2UgZnJvbSAnLi9Mb2dnZXJTZXJ2aWNlLnRzJztcbmludGVyZmFjZSBFbW1pdHRlckhhbmRsZXIge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZXZlbnQ6IHN0cmluZztcbiAgICBsaXN0ZW5lcjogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XG4gICAgb3JpZ2luYWxMaXN0ZW5lcj86ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xufVxuaW50ZXJmYWNlIE9uT3B0aW9ucyB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgdW5pcXVlPzogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBPbkRlYm91bmNlT3B0aW9ucyBleHRlbmRzIE9uT3B0aW9ucyB7XG4gICAgZGVib3VuY2U/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEVtbWl0dGVyU2VydmljZU9wdGlvbnMge1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICBsb2dnZXI/OiBMb2dnZXJTZXJ2aWNlO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1taXR0ZXJTZXJ2aWNlPEV2ZW50cyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIHByaXZhdGUgaGFuZGxlcnM7XG4gICAgcHJpdmF0ZSBkZWJ1ZztcbiAgICBwcml2YXRlIGxvZ2dlcjtcbiAgICBsb2FkKG9wdGlvbnM/OiBFbW1pdHRlclNlcnZpY2VPcHRpb25zKTogdm9pZDtcbiAgICBvbjxLIGV4dGVuZHMga2V5b2YgRXZlbnRzPihldmVudDogSywgbGlzdGVuZXI6IChhcmdzOiBFdmVudHNbS10pID0+IHZvaWQsIG9wdGlvbnM/OiBPbk9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXI7XG4gICAgb24oZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6IChhcmdzOiBhbnkpID0+IHZvaWQsIG9wdGlvbnM/OiBPbk9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXI7XG4gICAgb25jZTxLIGV4dGVuZHMga2V5b2YgRXZlbnRzPihldmVudDogSywgbGlzdGVuZXI6IChhcmdzOiBFdmVudHNbS10pID0+IHZvaWQsIG9wdGlvbnM/OiBPbk9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXI7XG4gICAgb25jZShldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogKGFyZ3M6IGFueSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcjtcbiAgICBvbkRlYm91bmNlPEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50OiBLLCBsaXN0ZW5lcjogKGFyZ3M6IEV2ZW50c1tLXSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uRGVib3VuY2VPcHRpb25zKTogRW1taXR0ZXJIYW5kbGVyO1xuICAgIG9uRGVib3VuY2UoZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6IChhcmdzOiBhbnkpID0+IHZvaWQsIG9wdGlvbnM/OiBPbkRlYm91bmNlT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcjtcbiAgICBvbkFueU9mPEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50czogS1tdLCBsaXN0ZW5lcjogKGFyZ3M6IEV2ZW50c1tLXSkgPT4gdm9pZCwgb3B0aW9ucz86IE9uT3B0aW9ucyk6IEVtbWl0dGVySGFuZGxlcltdO1xuICAgIG9uQW55T2YoZXZlbnRzOiBzdHJpbmdbXSwgbGlzdGVuZXI6IChhcmdzOiBhbnkpID0+IHZvaWQsIG9wdGlvbnM/OiBPbk9wdGlvbnMpOiBFbW1pdHRlckhhbmRsZXJbXTtcbiAgICBvZmYoZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6IEZ1bmN0aW9uKTogdm9pZDtcbiAgICBlbWl0PEsgZXh0ZW5kcyBrZXlvZiBFdmVudHM+KGV2ZW50OiBLLCBhcmdzOiBFdmVudHNbS10pOiB2b2lkO1xuICAgIGVtaXQoZXZlbnQ6IHN0cmluZywgYXJncz86IGFueSk6IHZvaWQ7XG4gICAgZW1pdEFuZFdhaXQ8SyBleHRlbmRzIGtleW9mIEV2ZW50cz4oZXZlbnQ6IEssIGFyZ3M6IEV2ZW50c1tLXSk6IFByb21pc2U8dm9pZD47XG4gICAgZW1pdEFuZFdhaXQoZXZlbnQ6IHN0cmluZywgYXJncz86IGFueSk6IFByb21pc2U8dm9pZD47XG4gICAgbGlzdCgpOiBFbW1pdHRlckhhbmRsZXJbXTtcbiAgICBsaXN0QnlFdmVudChldmVudDogc3RyaW5nKTogRW1taXR0ZXJIYW5kbGVyW107XG4gICAgcmVtb3ZlKHBheWxvYWQ6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZDtcbiAgICBjbGVhcigpOiB2b2lkO1xuICAgIGhhc0hhbmRsZXJzKCk6IGJvb2xlYW47XG59XG5leHBvcnQge307XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBMaWZlY3ljbGVIb29rIHtcbiAgICBob29rX2lkOiBzdHJpbmc7XG4gICAgaG9va19hbGlhc2VzPzogc3RyaW5nW107XG4gICAgb3JkZXI/OiBudW1iZXI7XG4gICAgc3ViaG9va3M/OiBMaWZlY3ljbGVIb29rW107XG4gICAgcmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBsb2FkKCk6IFByb21pc2U8dm9pZD47XG4gICAgYm9vdCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIEBkZXByZWNhdGVkIFVzZSByZWdpc3RlciAqL1xuICAgIG9uUmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIGxvYWQgKi9cbiAgICBvbkxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIGJvb3QgKi9cbiAgICBvbkJvb3QoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIHNodXRkb3duICovXG4gICAgb25TaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+O1xufVxuIiwiZXhwb3J0IHR5cGUgVW5pb25Ub0ludGVyc2VjdGlvbjxVPiA9IChVIGV4dGVuZHMgYW55ID8gKGs6IFUpID0+IHZvaWQgOiBuZXZlcikgZXh0ZW5kcyAoazogaW5mZXIgSSkgPT4gdm9pZCA/IEkgOiBuZXZlcjtcbmV4cG9ydCB0eXBlIFBhcnRpYWxCeTxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBPbWl0PFQsIEs+ICYgUGFydGlhbDxQaWNrPFQsIEs+PjtcbmV4cG9ydCB0eXBlIFB1YmxpY0RhdGE8VD4gPSB7XG4gICAgW0sgaW4ga2V5b2YgVCBhcyBUW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBuZXZlciA6IEtdOiBUW0tdO1xufTtcbiIsImltcG9ydCB0eXBlIHsgVW5pb25Ub0ludGVyc2VjdGlvbiB9IGZyb20gJy4vdHlwaW5nLnRzJztcbmV4cG9ydCB0eXBlIEFueUNsYXNzID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuZXhwb3J0IHR5cGUgQ29uc3RydWN0b3I8VCA9IHt9PiA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQ7XG5leHBvcnQgdHlwZSBNaXhpbjxUPiA9IChiYXNlOiBDb25zdHJ1Y3RvcikgPT4gQ29uc3RydWN0b3I8VD47XG4vKipcbiAqIENvbXBvc2VzIG11bHRpcGxlIG1peGlucyBpbnRvIGEgc2luZ2xlIGNsYXNzIHRoYXQgY2FuIGJlIGV4dGVuZGVkLlxuICogQWxsb3dzIGZvciBtdWx0aXBsZSBpbmhlcml0YW5jZS1saWtlIGJlaGF2aW9yIGJ5IGFwcGx5aW5nIG1peGlucyBzZXF1ZW50aWFsbHkuXG4gKlxuICogQHBhcmFtIG1peGlucyAtIEFycmF5IG9mIG1peGluIGZ1bmN0aW9ucyB0byBjb21wb3NlXG4gKiBAcmV0dXJucyBBIGNsYXNzIGNvbnN0cnVjdG9yIHRoYXQgaW5jbHVkZXMgYWxsIG1peGluIGZ1bmN0aW9uYWxpdHlcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgVXNlciBleHRlbmRzIGNvbXBvc2UoVGltZXN0YW1wLCBTb2Z0RGVsZXRlKSB7XG4gKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcpIHtcbiAqICAgICBzdXBlcigpXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjb21wb3NlPE0gZXh0ZW5kcyBBcnJheTwoYmFzZTogQ29uc3RydWN0b3I8YW55PikgPT4gQ29uc3RydWN0b3I8YW55Pj4+KC4uLm1peGluczogTSk6IFVuaW9uVG9JbnRlcnNlY3Rpb248UmV0dXJuVHlwZTxNW251bWJlcl0+Pjtcbi8qKlxuICogQWx0ZXJuYXRpdmUgY29tcG9zZSBmdW5jdGlvbiB0aGF0IHN0YXJ0cyB3aXRoIGEgYmFzZSBjbGFzc1xuICpcbiAqIEBwYXJhbSBiYXNlQ2xhc3MgLSBUaGUgYmFzZSBjbGFzcyB0byBzdGFydCB3aXRoXG4gKiBAcGFyYW0gbWl4aW5zIC0gQXJyYXkgb2YgbWl4aW4gZnVuY3Rpb25zIHRvIGFwcGx5XG4gKiBAcmV0dXJucyBBIGNsYXNzIGNvbnN0cnVjdG9yIHRoYXQgZXh0ZW5kcyB0aGUgYmFzZSBjbGFzcyB3aXRoIGFsbCBtaXhpbiBmdW5jdGlvbmFsaXR5XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIFVzZXIgZXh0ZW5kcyBjb21wb3NlV2l0aChCYXNlRW50aXR5LCBUaW1lc3RhbXAsIFNvZnREZWxldGUpIHtcbiAqICAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZykge1xuICogICAgIHN1cGVyKClcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNvbXBvc2VXaXRoPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3IsIE0gZXh0ZW5kcyBBcnJheTwoYmFzZTogQ29uc3RydWN0b3IpID0+IENvbnN0cnVjdG9yPGFueT4+PihiYXNlQ2xhc3M6IFRCYXNlLCAuLi5taXhpbnM6IE0pOiBUQmFzZSAmIFVuaW9uVG9JbnRlcnNlY3Rpb248UmV0dXJuVHlwZTxNW251bWJlcl0+PjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIG1peGluPFRCYXNlIGV4dGVuZHMgQ29uc3RydWN0b3I+KFNvdXJjZTogVEJhc2UpOiA8VFRhcmdldCBleHRlbmRzIENvbnN0cnVjdG9yPihUYXJnZXQ6IFRUYXJnZXQpID0+IFRUYXJnZXQgJiBUQmFzZTtcbiIsImltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJy4vTG9nZ2VyU2VydmljZS50cyc7XG5pbXBvcnQgdHlwZSBMaWZlY3ljbGVIb29rIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvTGlmZWN5Y2xlSG9vay50cyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSAnI3NoYXJlZC91dGlscy9jb21wb3NlLnRzJztcbnR5cGUgTGlmZWN5Y2xlTWV0aG9kID0gJ3JlZ2lzdGVyJyB8ICdsb2FkJyB8ICdib290JyB8ICdzaHV0ZG93bic7XG5pbnRlcmZhY2UgTGlzdE9wdGlvbnMge1xuICAgIGluY2x1ZGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICBleGNsdWRlPzogc3RyaW5nIHwgc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVNlcnZpY2VPcHRpb25zIHtcbiAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgaG9va3M/OiBNYXA8c3RyaW5nLCBMaWZlY3ljbGVIb29rPjtcbiAgICBsb2dnZXI/OiBMb2dnZXJTZXJ2aWNlO1xuICAgIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yLCBjb250ZXh0OiB7XG4gICAgICAgIGhvb2tJZDogc3RyaW5nO1xuICAgICAgICBtZXRob2Q6IExpZmVjeWNsZU1ldGhvZDtcbiAgICB9KSA9PiB2b2lkO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlmZWN5Y2xlU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGhvb2tzOiBNYXA8c3RyaW5nLCBMaWZlY3ljbGVIb29rPjtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IoZGF0YT86IExpZmVjeWNsZVNlcnZpY2VPcHRpb25zKTtcbiAgICBvbkVycm9yKGVycm9yOiBFcnJvciwgY29udGV4dDoge1xuICAgICAgICBob29rSWQ6IHN0cmluZztcbiAgICAgICAgbWV0aG9kOiBMaWZlY3ljbGVNZXRob2Q7XG4gICAgfSk6IHZvaWQ7XG4gICAgbWFwQWxpYXNlcyhhcmdzOiBzdHJpbmdbXSk6IHN0cmluZ1tdO1xuICAgIGxpc3Qob3B0aW9ucz86IExpc3RPcHRpb25zKTogTGlmZWN5Y2xlSG9va1tdO1xuICAgIGFkZCguLi5wYXlsb2FkOiAoTGlmZWN5Y2xlSG9vayB8IENvbnN0cnVjdG9yPExpZmVjeWNsZUhvb2s+KVtdKTogdm9pZDtcbiAgICBlbWl0TWV0aG9kKG1ldGhvZDogTGlmZWN5Y2xlTWV0aG9kLCBvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGVtaXQocGF5bG9hZDogTGlmZWN5Y2xlTWV0aG9kIHwgTGlmZWN5Y2xlTWV0aG9kW10sIG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgcmVnaXN0ZXIob3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBsb2FkKG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgYm9vdChvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHNodXRkb3duKG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgY2xlYXIoKTogdm9pZDtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJy4vTG9nZ2VyU2VydmljZS50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUcmFuc2xhdG9yU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGVudHJpZXM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gICAgbG9jYWxlOiBzdHJpbmc7XG4gICAgbG9jYWxlTG9hZGVyczogTWFwPHN0cmluZywgKCkgPT4gUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pj47XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlO1xuICAgIGNhY2hlOiBNYXA8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PjtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogUGFydGlhbDxUcmFuc2xhdG9yU2VydmljZT4pO1xuICAgIGdldCBsb2NhbGVzKCk6IHN0cmluZ1tdO1xuICAgIGxpc3QoKToge1xuICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgdmFsdWU6IHN0cmluZztcbiAgICB9W107XG4gICAgZ2V0RW50cmllcyhsb2NhbGU6IHN0cmluZyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG4gICAgbG9hZChsb2NhbGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gICAgdChrZXk6IHN0cmluZywgYXJncz86IGFueSk6IHN0cmluZztcbiAgICBkYXRlKGRhdGE6IHN0cmluZyB8IG51bWJlciB8IERhdGUpOiBzdHJpbmc7XG4gICAgZGF0ZXRpbWUoZGF0YTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSk6IHN0cmluZztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIFVwbG9hZFNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBzaW5nbGUobmFtZTogc3RyaW5nKTogdm9pZDtcbiAgICBtdWx0aXBsZShuYW1lOiBzdHJpbmcpOiB2b2lkO1xufVxuIiwiaW1wb3J0ICogYXMgdiBmcm9tICd2YWxpYm90JztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IG51bWJlcjogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPGFueSwgbnVtYmVyPiwgdi5JbnRlZ2VyQWN0aW9uPG51bWJlciwgdW5kZWZpbmVkPl0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgYm9vbGVhbjogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5Cb29sZWFuU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBib29sZWFuLCBib29sZWFuPl0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgZGF0ZTogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5EYXRlU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBEYXRlLCBEYXRlPiwgdi5UcmFuc2Zvcm1BY3Rpb248RGF0ZSwgc3RyaW5nIHwgRGF0ZT5dPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGRhdGV0aW1lOiAoKSA9PiB2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkRhdGVTY2hlbWE8dW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IERhdGUsIHN0cmluZyB8IERhdGU+XT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBhcnJheTogPFQgZXh0ZW5kcyB2LkJhc2VTY2hlbWE8YW55LCBhbnksIGFueT4+KHNjaGVtYT86IFQpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8VCwgdW5kZWZpbmVkPl0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgYXJyYXlOdW1iZXI6ICgpID0+IHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8di5CYXNlU2NoZW1hPGFueSwgYW55LCBhbnk+LCB1bmRlZmluZWQ+XT4sIHYuVHJhbnNmb3JtQWN0aW9uPGFueVtdLCBudW1iZXJbXT5dPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IG9iamVjdDogKCkgPT4gdi5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5SZWNvcmRTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5BbnlTY2hlbWEsIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCB7XG4gICAgW3g6IHN0cmluZ106IGFueTtcbn0sIHtcbiAgICBbeDogc3RyaW5nXTogYW55O1xufT4sIHYuVHJhbnNmb3JtQWN0aW9uPHtcbiAgICBbeDogc3RyaW5nXTogYW55O1xufSwgUmVjb3JkPHN0cmluZywgYW55Pj5dPjtcbiIsImltcG9ydCAqIGFzIHYgZnJvbSAndmFsaWJvdCc7XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25QYXJhbXMge1xuICAgIG1heExpbWl0PzogbnVtYmVyO1xuICAgIG9yZGVyRmllbGRzPzogc3RyaW5nW107XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBiYXNlOiAob3B0aW9ucz86IFBhZ2luYXRpb25QYXJhbXMpID0+IHYuT2JqZWN0U2NoZW1hPHtcbiAgICByZWFkb25seSBwYWdlOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxhbnksIG51bWJlcj4sIHYuSW50ZWdlckFjdGlvbjxudW1iZXIsIHVuZGVmaW5lZD5dPiwgMT47XG4gICAgcmVhZG9ubHkgbGltaXQ6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPGFueSwgbnVtYmVyPiwgdi5JbnRlZ2VyQWN0aW9uPG51bWJlciwgdW5kZWZpbmVkPl0+LCBudW1iZXI+O1xuICAgIHJlYWRvbmx5IG9yZGVyQnk6IHYuT3B0aW9uYWxTY2hlbWE8di5TY2hlbWFXaXRoUGlwZTxyZWFkb25seSBbdi5VbmlvblNjaGVtYTxbdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdi5BcnJheVNjaGVtYTx2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XSwgdW5kZWZpbmVkPiwgdi5UcmFuc2Zvcm1BY3Rpb248c3RyaW5nIHwgc3RyaW5nW10sIHN0cmluZ1tdPiwgdi5BcnJheVNjaGVtYTx2LlBpY2tsaXN0U2NoZW1hPHN0cmluZ1tdLCB1bmRlZmluZWQ+LCB1bmRlZmluZWQ+XT4gfCB2LlNjaGVtYVdpdGhQaXBlPHJlYWRvbmx5IFt2LlVuaW9uU2NoZW1hPFt2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+LCB2LkFycmF5U2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dLCB1bmRlZmluZWQ+LCB2LlRyYW5zZm9ybUFjdGlvbjxzdHJpbmcgfCBzdHJpbmdbXSwgc3RyaW5nW10+LCB2LkFycmF5U2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dPiwgcmVhZG9ubHkgW10+O1xuICAgIHJlYWRvbmx5IG9yZGVyRGlyZWN0aW9uOiB2Lk9wdGlvbmFsU2NoZW1hPHYuU2NoZW1hV2l0aFBpcGU8cmVhZG9ubHkgW3YuVW5pb25TY2hlbWE8W3YuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHYuQXJyYXlTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHYuVHJhbnNmb3JtQWN0aW9uPHN0cmluZyB8IHN0cmluZ1tdLCBzdHJpbmdbXT4sIHYuQXJyYXlTY2hlbWE8di5VbmlvblNjaGVtYTxbdi5MaXRlcmFsU2NoZW1hPFwiYXNjXCIsIHVuZGVmaW5lZD4sIHYuTGl0ZXJhbFNjaGVtYTxcImRlc2NcIiwgdW5kZWZpbmVkPl0sIHVuZGVmaW5lZD4sIHVuZGVmaW5lZD5dPiwgcmVhZG9ubHkgW10+O1xufSwgdW5kZWZpbmVkPjtcbiIsImltcG9ydCAqIGFzIHYgZnJvbSAndmFsaWJvdCc7XG5pbXBvcnQgKiBhcyB1cmwgZnJvbSAnI3NoYXJlZC92YWxpZGF0b3JzL3VybFZhbGlkYXRvci50cyc7XG5pbXBvcnQgKiBhcyBwYWdpbmF0aW9uIGZyb20gJyNzaGFyZWQvdmFsaWRhdG9ycy9wYWdpbmF0aW9uVmFsaWRhdG9yLnRzJztcbmRlY2xhcmUgY29uc3QgZXh0cmFzOiB7XG4gICAgdXJsOiB0eXBlb2YgdXJsO1xuICAgIHBhZ2luYXRpb246IHR5cGVvZiBwYWdpbmF0aW9uO1xufTtcbmV4cG9ydCB0eXBlIFZhbGlib3QgPSB0eXBlb2YgdiAmIHtcbiAgICBleHRyYXM6IHR5cGVvZiBleHRyYXM7XG59O1xuZXhwb3J0IHR5cGUgVmFsaWJvdFNjaGVtYSA9IHYuQmFzZVNjaGVtYTx1bmtub3duLCB1bmtub3duLCB2LkJhc2VJc3N1ZTx1bmtub3duPj47XG5leHBvcnQgdHlwZSBWYWxpYm90U2NoZW1hQXN5bmMgPSB2LkJhc2VTY2hlbWFBc3luYzx1bmtub3duLCB1bmtub3duLCB2LkJhc2VJc3N1ZTx1bmtub3duPj47XG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckNhbGxiYWNrPFQgZXh0ZW5kcyBWYWxpYm90U2NoZW1hPiB7XG4gICAgKF92OiBWYWxpYm90KTogVDtcbn1cbmV4cG9ydCB0eXBlIFZhbGlkYXRvckNhbGxiYWNrQXN5bmM8VCBleHRlbmRzIFZhbGlib3RTY2hlbWFBc3luYz4gPSB7XG4gICAgKF92OiBWYWxpYm90KTogVDtcbn07XG5leHBvcnQgdHlwZSBWYWxpZGF0b3JSZXN1bHQ8VCBleHRlbmRzIHYuT2JqZWN0RW50cmllcz4gPSB2LkluZmVyT3V0cHV0PHYuT2JqZWN0U2NoZW1hPFQsIHVuZGVmaW5lZD4+O1xuZXhwb3J0IHR5cGUgVmFsaWRhdGVQYXlsb2FkPFQgZXh0ZW5kcyBWYWxpYm90U2NoZW1hID0gVmFsaWJvdFNjaGVtYT4gPSBWYWxpZGF0b3JDYWxsYmFjazxUPiB8IFQ7XG5leHBvcnQgdHlwZSBWYWxpZGF0ZVJlc3VsdDxUIGV4dGVuZHMgVmFsaWRhdGVQYXlsb2FkPiA9IFQgZXh0ZW5kcyBWYWxpYm90U2NoZW1hID8gdi5JbmZlck91dHB1dDxUPiA6IFQgZXh0ZW5kcyBWYWxpZGF0b3JDYWxsYmFjazxpbmZlciBVPiA/IHYuSW5mZXJPdXRwdXQ8VT4gOiB1bmtub3duO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFsaWRhdG9yU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIHY6IFZhbGlib3Q7XG4gICAgY3JlYXRlPFQgZXh0ZW5kcyBWYWxpYm90U2NoZW1hPihjYjogVmFsaWRhdG9yQ2FsbGJhY2s8VD4pOiBUO1xuICAgIHZhbGlkYXRlPFQgZXh0ZW5kcyBWYWxpYm90U2NoZW1hPihwYXlsb2FkOiBhbnksIGNiOiBWYWxpZGF0ZVBheWxvYWQ8VD4pOiB2LkluZmVyT3V0cHV0PFQ+O1xuICAgIHZhbGlkYXRlQXN5bmM8VCBleHRlbmRzIFZhbGlib3RTY2hlbWFBc3luYz4ocGF5bG9hZDogYW55LCBjYjogVmFsaWRhdG9yQ2FsbGJhY2tBc3luYzxUPiB8IFQpOiBQcm9taXNlPHYuSW5mZXJPdXRwdXQ8VD4+O1xuICAgIGlzVmFsaWQ8VCBleHRlbmRzIFZhbGlib3RTY2hlbWE+KHBheWxvYWQ6IGFueSwgY2I6IFZhbGlkYXRlUGF5bG9hZDxUPik6IGJvb2xlYW47XG59XG5leHBvcnQge307XG4iLCJleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVJZChwcmVmaXg/OiBzdHJpbmcpOiBzdHJpbmc7XG4iLCJleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBmbGF0dGVuKG9iajogYW55LCBwcmVmaXg/OiBzdHJpbmcsIHJlcz86IGFueSk6IFJlY29yZDxzdHJpbmcsIGFueT47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB1bmZsYXR0ZW4ob2JqOiBhbnkpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuIiwiZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gZm9ybWF0Qnl0ZXMoYnl0ZXM6IG51bWJlciwgZGVjaW1hbHM/OiBudW1iZXIpOiBzdHJpbmc7XG4iLCJleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBwYXJzZVVybFBhcmFtcyhyb3V0ZVBhdGg6IHN0cmluZywgcmVxdWVzdFBhdGg6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBwYXJzZVVybFF1ZXJ5KHJlcXVlc3RQYXRoOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuIiwiaW50ZXJmYWNlIFRyeWVyIHtcbiAgICAoLi4uYXJnczogYW55W10pOiBhbnk7XG59XG5pbnRlcmZhY2UgVHJ5ZXJBc3luYyB7XG4gICAgKC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxhbnk+IHwgYW55O1xufVxudHlwZSBUcnlDYXRjaFJlc3VsdDxUIGV4dGVuZHMgVHJ5ZXI+ID0gW251bGwsIFJldHVyblR5cGU8VD5dIHwgW0Vycm9yLCBudWxsXTtcbnR5cGUgVHJ5Q2F0Y2hBc3luY1Jlc3VsdDxUIGV4dGVuZHMgVHJ5ZXJBc3luYz4gPSBbbnVsbCwgQXdhaXRlZDxSZXR1cm5UeXBlPFQ+Pl0gfCBbRXJyb3IsIG51bGxdO1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdHJ5Q2F0Y2g8VCBleHRlbmRzIFRyeWVyQXN5bmM+KHRyeWVyOiBUKTogUHJvbWlzZTxUcnlDYXRjaEFzeW5jUmVzdWx0PFQ+PjtcbmV4cG9ydCBkZWNsYXJlIG5hbWVzcGFjZSB0cnlDYXRjaCB7XG4gICAgdmFyIHN5bmM6IDxUIGV4dGVuZHMgVHJ5ZXI+KHRyeWVyOiBUKSA9PiBUcnlDYXRjaFJlc3VsdDxUPjtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCAqIGFzIHYgZnJvbSAndmFsaWJvdCc7XG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uQXNzaWdubWVudCA9IHYuSW5mZXJPdXRwdXQ8dHlwZW9mIHBlcm1pc3Npb25Bc3NpZ25tZW50U2NoZW1hPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHBlcm1pc3Npb25Bc3NpZ25tZW50U2NoZW1hOiB2Lk9iamVjdFNjaGVtYTx7XG4gICAgcmVhZG9ubHkgaWQ6IHYuTnVtYmVyU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgcGVybWlzc2lvbl9pZDogdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBhc3NpZ25hYmxlX3R5cGU6IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgYXNzaWduYWJsZV9pZDogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBjcmVhdGVkX2F0OiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IHVwZGF0ZWRfYXQ6IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG59LCB1bmRlZmluZWQ+O1xuIiwiaW1wb3J0ICogYXMgdiBmcm9tICd2YWxpYm90JztcbmV4cG9ydCB0eXBlIFBlcm1pc3Npb24gPSB2LkluZmVyT3V0cHV0PHR5cGVvZiBwZXJtaXNzaW9uU2NoZW1hPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHBlcm1pc3Npb25TY2hlbWE6IHYuT2JqZWN0U2NoZW1hPHtcbiAgICByZWFkb25seSBpZDogdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBuYW1lOiB2Lk51bGxhYmxlU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHYuTnVsbGFibGVTY2hlbWE8di5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPiwgdW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBhY3Rpb246IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgc3ViamVjdDogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBjb25kaXRpb25zOiB2Lk51bGxhYmxlU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgY3JlYXRlZF9hdDogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSB1cGRhdGVkX2F0OiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGV4cGlyZXNfYXQ6IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG59LCB1bmRlZmluZWQ+O1xuIiwiaW1wb3J0ICogYXMgdiBmcm9tICd2YWxpYm90JztcbmV4cG9ydCB0eXBlIFRva2VuID0gdi5JbmZlck91dHB1dDx0eXBlb2YgdG9rZW5TY2hlbWE+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdG9rZW5TY2hlbWE6IHYuT2JqZWN0U2NoZW1hPHtcbiAgICByZWFkb25seSBpZDogdi5OdW1iZXJTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBuYW1lOiB2Lk51bGxhYmxlU2NoZW1hPHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD4sIHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgdHlwZTogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSB1c2VyX2lkOiB2Lk51bWJlclNjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IHRva2VuOiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xuICAgIHJlYWRvbmx5IGNyZWF0ZWRfYXQ6IHYuU3RyaW5nU2NoZW1hPHVuZGVmaW5lZD47XG4gICAgcmVhZG9ubHkgdXBkYXRlZF9hdDogdi5TdHJpbmdTY2hlbWE8dW5kZWZpbmVkPjtcbiAgICByZWFkb25seSBleHBpcmVzX2F0OiB2LlN0cmluZ1NjaGVtYTx1bmRlZmluZWQ+O1xufSwgdW5kZWZpbmVkPjtcbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEJhc2VFeGNlcHRpb24gZXh0ZW5kcyBFcnJvciB7XG4gICAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3RhdHVzQ29kZT86IG51bWJlcik7XG4gICAgc3RhdGljIGZyb21FcnJvcihlcnJvcjogRXJyb3IpOiBCYXNlRXhjZXB0aW9uO1xufVxuIiwiaW1wb3J0IEJhc2VFeGNlcHRpb24gZnJvbSAnLi9CYXNlRXhjZXB0aW9uLnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNoZWxsRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUV4Y2VwdGlvbiB7XG4gICAgb3V0cHV0OiBzdHJpbmc7XG4gICAgYmluOiBzdHJpbmc7XG4gICAgYXJnczogc3RyaW5nW107XG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBvdXRwdXQ6IHN0cmluZywgYmluOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdKTtcbn1cbiIsImltcG9ydCBWYWxpZGF0b3JTZXJ2aWNlIGZyb20gXCIuLi9zZXJ2aWNlcy9WYWxpZGF0b3JTZXJ2aWNlXCI7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0b3I6IFZhbGlkYXRvclNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCB2YWxpZGF0b3I7XG4iLCJkZWNsYXJlIGNvbnN0IFBlcm1pc3Npb25FbnRpdHlfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZXJtaXNzaW9uRW50aXR5IGV4dGVuZHMgUGVybWlzc2lvbkVudGl0eV9iYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgICBvcmlnaW46IHN0cmluZztcbiAgICBzdWJqZWN0OiBzdHJpbmc7XG4gICAgYWN0aW9uOiBzdHJpbmc7XG4gICAgY29uZGl0aW9uczogc3RyaW5nIHwgbnVsbCB8IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgZ2V0IGVkaXRhYmxlKCk6IGJvb2xlYW47XG4gICAgZ2V0IHBhcnNlZENvbmRpdGlvbnMoKTogYW55O1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHsgZGVmaW5lQWJpbGl0eSB9IGZyb20gJ0BjYXNsL2FiaWxpdHknO1xuaW1wb3J0IFBlcm1pc3Npb24gZnJvbSAnLi9QZXJtaXNzaW9uRW50aXR5LnRzJztcbmltcG9ydCBMb2dnZXJTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvTG9nZ2VyU2VydmljZS50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBY2xFbnRpdHkge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBhYmlsaXR5OiBSZXR1cm5UeXBlPHR5cGVvZiBkZWZpbmVBYmlsaXR5PjtcbiAgICBwZXJtaXNzaW9uczogUGVybWlzc2lvbltdO1xuICAgIGRlYnVnOiBib29sZWFuO1xuICAgIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogUGFydGlhbDxBY2xFbnRpdHk+KTtcbiAgICBjYW4oYWN0aW9uOiBzdHJpbmcsIHN1YmplY3Q6IGFueSwgb2JqZWN0PzogUmVjb3JkPHN0cmluZywgYW55Pik6IGJvb2xlYW47XG4gICAgY2Fubm90KGFjdGlvbjogc3RyaW5nLCBzdWJqZWN0OiBhbnksIG9iamVjdD86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBib29sZWFuO1xuICAgIHN1YmplY3Qoc3ViamVjdDogc3RyaW5nLCBvYmplY3Q6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ICYgaW1wb3J0KFwiQGNhc2wvYWJpbGl0eVwiKS5Gb3JjZWRTdWJqZWN0PHN0cmluZz47XG59XG4iLCJleHBvcnQgaW50ZXJmYWNlIENvb2tpZU1hcEVudGl0eU9wdGlvbnMge1xuICAgIGNvb2tpZXM/OiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuICAgIHByZWZpeD86IHN0cmluZztcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvb2tpZU1hcEVudGl0eSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGNvb2tpZXM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gICAgcHJlZml4OiBzdHJpbmc7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IENvb2tpZU1hcEVudGl0eU9wdGlvbnMpO1xuICAgIGxvYWQoY29va2llczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IE1hcDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkO1xuICAgIGdldChuYW1lOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgfCBudWxsO1xuICAgIHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiB2b2lkO1xuICAgIHRvUmVjb3JkKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBEcml2ZUVudHJ5IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIHR5cGU6ICdmaWxlJyB8ICdkaXJlY3RvcnknO1xuICAgIG1ldGFzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IERyaXZlRW50cnkpO1xufVxuIiwiZGVjbGFyZSBjb25zdCBGaWxlRW50aXR5X2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGNyZWF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gICAgfTtcbn0gJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgZGVsZXRlZF9hdDogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaWxlRW50aXR5IGV4dGVuZHMgRmlsZUVudGl0eV9iYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGRyaXZlOiBzdHJpbmc7XG4gICAgbWltZXR5cGU6IHN0cmluZztcbiAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgY2xpZW50X25hbWU6IHN0cmluZztcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYzogYm9vbGVhbjtcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgbWV0YXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGlzSW1hZ2UoKTogYm9vbGVhbjtcbn1cbmV4cG9ydCB7fTtcbiIsImRlY2xhcmUgY29uc3QgVXBsb2FkU2Vzc2lvbl9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvciAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBjcmVhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgICAgICB1cGRhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgIH07XG59ICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGRlbGV0ZWRfYXQ6IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXBsb2FkU2Vzc2lvbiBleHRlbmRzIFVwbG9hZFNlc3Npb25fYmFzZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgbWltZV90eXBlczogc3RyaW5nO1xuICAgIG1heF9zaXplOiBudW1iZXI7XG4gICAgdXBsb2FkX3VybD86IHN0cmluZztcbiAgICBjcmVhdGVfZmlsZV91cmw/OiBzdHJpbmc7XG4gICAgZ2V0UGFyc2VkTWltZVR5cGVzKCk6IHN0cmluZ1tdO1xuICAgIGlzQWxsb3dlZE1pbWVUeXBlKG1pbWVUeXBlOiBzdHJpbmcpOiBib29sZWFuO1xuICAgIGlzQWxsb3dlZFNpemUoc2l6ZTogbnVtYmVyKTogYm9vbGVhbjtcbn1cbmV4cG9ydCB7fTtcbiIsImV4cG9ydCBpbnRlcmZhY2UgQ29va2llTWFwRW50aXR5T3B0aW9ucyB7XG4gICAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgc2V0SGVhZGVyPzogKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhlYWRlck1hcEVudGl0eSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGVudHJpZXM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gICAgc2V0SGVhZGVyPzogKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogQ29va2llTWFwRW50aXR5T3B0aW9ucyk7XG4gICAgbG9hZEZyb21SZWNvcmQoY29va2llczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQ7XG4gICAgZ2V0KG5hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IG51bGw7XG4gICAgc2V0KG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gICAgdG9SZWNvcmQoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cbiIsImV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlTWFuaWZlc3RCdWlsZEltcG9ydCB7XG4gICAgZnJvbTogc3RyaW5nO1xuICAgIHRvPzogc3RyaW5nO1xuICAgIHR5cGU6ICdnbG9iYWxfaW1wb3J0Jztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlTWFuaWZlc3RCdWlsZCB7XG4gICAgaW1wb3J0cz86IE1vZHVsZU1hbmlmZXN0QnVpbGRJbXBvcnRbXTtcbn1cbmRlY2xhcmUgY29uc3QgTW9kdWxlTWFuaWZlc3RfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2R1bGVNYW5pZmVzdCBleHRlbmRzIE1vZHVsZU1hbmlmZXN0X2Jhc2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIGF1dGhvcj86IHN0cmluZztcbiAgICBkZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIGJ1aWxkPzogTW9kdWxlTWFuaWZlc3RCdWlsZDtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSBNb2R1bGVNYW5pZmVzdCBmcm9tICcuL01vZHVsZU1hbmlmZXN0RW50aXR5LnRzJztcbmltcG9ydCBMaWZlY3ljbGVIb29rIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvTGlmZWN5Y2xlSG9vay50cyc7XG5pbnRlcmZhY2UgTW9kdWxlVXBncmFkZUluZm8ge1xuICAgIHNvdXJjZTogJ2dpdCcgfCAnemlwJztcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5kZWNsYXJlIGNvbnN0IE1vZHVsZV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvciAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3Rvcjx7fT4gJiB0eXBlb2YgTGlmZWN5Y2xlSG9vaztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZHVsZSBleHRlbmRzIE1vZHVsZV9iYXNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIGRlcGVuZGVuY2llczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBidWlsZDogTW9kdWxlTWFuaWZlc3RbJ2J1aWxkJ107XG4gICAgZGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgdXBncmFkZV9pbmZvPzogTW9kdWxlVXBncmFkZUluZm87XG4gICAgc2V0RGF0YShkYXRhOiBQYXJ0aWFsPE1vZHVsZSB8IE1vZHVsZU1hbmlmZXN0Pik6IHZvaWQ7XG59XG5leHBvcnQge307XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBQYWdpbmF0aW9uRW50aXR5PFQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgaXRlbXM6IFRbXTtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICBwZXJfcGFnZTogbnVtYmVyO1xuICAgIHRvdGFsX3BhZ2VzOiBudW1iZXI7XG4gICAgY29uc3RydWN0b3IoZGF0YTogUGFydGlhbDxQYWdpbmF0aW9uRW50aXR5Pik7XG4gICAgc3RhdGljIGZyb208VCA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHBheWxvYWQ6IFBhcnRpYWw8UGFnaW5hdGlvbkVudGl0eTxUPj4pOiBQYWdpbmF0aW9uRW50aXR5PFQ+O1xufVxuIiwiZGVjbGFyZSBjb25zdCBQbHVnaW5FbnRpdHlfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbHVnaW5FbnRpdHkgZXh0ZW5kcyBQbHVnaW5FbnRpdHlfYmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG59XG5leHBvcnQge307XG4iLCJkZWNsYXJlIGNvbnN0IFJvbGVfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3IgJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgY3JlYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgICAgICAgdXBkYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgICB9O1xufSAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBkZWxldGVkX2F0OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvbGUgZXh0ZW5kcyBSb2xlX2Jhc2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHR5cGUgUGVybWlzc2lvbiBmcm9tICcuL1Blcm1pc3Npb25FbnRpdHkudHMnO1xuaW1wb3J0IHR5cGUgUm9sZSBmcm9tICcuL1JvbGVFbnRpdHkudHMnO1xuZGVjbGFyZSBjb25zdCBVc2VyRW50aXR5X2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGNyZWF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gICAgICAgIHVwZGF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gICAgfTtcbn0gJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgZGVsZXRlZF9hdDogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVc2VyRW50aXR5IGV4dGVuZHMgVXNlckVudGl0eV9iYXNlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ/OiBzdHJpbmc7XG4gICAgdmVyaWZpZWRfYXQ/OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgICBwZXJtaXNzaW9ucz86IFBlcm1pc3Npb25bXTtcbiAgICByb2xlcz86IFJvbGVbXTtcbiAgICBnZXQgaW5pdGlhbHMoKTogc3RyaW5nO1xufVxuZXhwb3J0IHt9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBLFFBQVU7Q0FBQTtPQUFNLEVBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDaEIsSUFBSSxnQkFBVztDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0RmLElBQUksZ0JBQWM7Q0FBQztFQUFFLE1BQU0sQ0FBQyxFQUFFO0NBQUM7RUFBQTtFQUFNO0VBQUU7RUFBSztDQUFDO0FBQzdDLElBQUksV0FBVztDQUFDO09BQVMsQ0FBQSxjQUFTO0NBQUEsQ0FBQSxHQUFBO0NBQVc7QUFDN0MsSUFBQSxtQkFBcUI7Q0FBQTtFQUFBLE1BQUE7RUFBQTtFQUFpQjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7Ozs7QUNGdEMsSUFBQSxnQkFBb0I7Q0FBQztPQUFBLENBQUEsY0FBYztDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQ25DLElBQUEsa0JBQVU7Q0FBQTtPQUFnQixFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFCLElBQUksWUFBVTtDQUFBO09BQUEsRUFBQTtDQUFBLENBQUEsSUFBQSxHQUFBO0NBQUE7QUFDZCxJQUFJLG9CQUFhO0NBQUE7T0FBQSxDQUFBLFVBQUE7Q0FBQSxDQUFBLElBQUEsR0FBQTtDQUFBO0FBQ2pCLElBQUkseUJBQThCO0NBQUc7T0FBQSxDQUFBLGNBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDckMsSUFBSSxrQkFBa0I7Q0FBQztFQUFJLEdBQUEsV0FBYztFQUFDO0VBQUk7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDTDlDLElBQUEsZ0JBQW9CO0NBQUM7T0FBQTtFQUFBO0VBQWM7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDQW5DLElBQVcsc0JBQXNCO0NBQUM7RUFBSSxNQUFFLENBQUEsR0FBTyxFQUFDO0NBQUc7RUFBQztFQUFJO0VBQUk7RUFBSTtFQUFJO0VBQUc7RUFBSztFQUFFO0NBQUE7QUFDOUUsSUFBVyxZQUFZO0NBQUM7RUFBRyxHQUFBLE1BQVE7RUFBQTtFQUFPO0VBQUc7RUFBQztFQUFRO0VBQUc7RUFBRTtFQUFPO0VBQVE7Q0FBRTtFQUFDO0VBQUM7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUM5RSxJQUFXLGFBQWE7Q0FBQztFQUFHLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRDVCLElBQVcsV0FBVztDQUFDO09BQVEsRUFBSTtDQUFFLENBQUEsR0FBSTtDQUFDO0FBQzFDLElBQVcsY0FBYztDQUFDO0VBQUksTUFBSSxDQUFBLEVBQUk7Q0FBRTtFQUFDO0VBQUM7RUFBTTtFQUFJO0NBQUM7QUFDckQsSUFBVyxRQUFRO0NBQUM7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
|