footprintjs 9.23.2 → 9.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +4 -4
- package/dist/advanced.js +6 -3
- package/dist/esm/advanced.d.ts +1 -1
- package/dist/esm/advanced.js +2 -2
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/lib/builder/FlowChartBuilder.d.ts +1 -0
- package/dist/esm/lib/builder/FlowChartBuilder.js +17 -1
- package/dist/esm/lib/builder/index.d.ts +1 -1
- package/dist/esm/lib/builder/index.js +1 -1
- package/dist/esm/lib/builder/structure/StructureRecorder.d.ts +32 -0
- package/dist/esm/lib/builder/structure/StructureRecorder.js +1 -1
- package/dist/esm/lib/builder/structure/StructureRecorderDispatcher.d.ts +2 -1
- package/dist/esm/lib/builder/structure/StructureRecorderDispatcher.js +13 -1
- package/dist/esm/lib/engine/handlers/ParallelForEachHandler.d.ts +8 -0
- package/dist/esm/lib/engine/handlers/ParallelForEachHandler.js +11 -2
- package/dist/esm/lib/engine/handlers/SubflowInputMapper.d.ts +10 -1
- package/dist/esm/lib/engine/handlers/SubflowInputMapper.js +36 -6
- package/dist/esm/lib/reactive/arrayTraps.js +14 -12
- package/dist/esm/lib/reactive/createTypedScope.js +20 -12
- package/dist/esm/lib/reactive/handles.d.ts +46 -0
- package/dist/esm/lib/reactive/handles.js +105 -0
- package/dist/esm/lib/reactive/index.d.ts +1 -0
- package/dist/esm/lib/reactive/index.js +2 -1
- package/dist/esm/lib/reactive/structuralWrite.d.ts +0 -15
- package/dist/esm/lib/reactive/structuralWrite.js +10 -28
- package/dist/esm/lib/reactive/writeTraps.d.ts +4 -3
- package/dist/esm/lib/reactive/writeTraps.js +8 -6
- package/dist/index.js +1 -1
- package/dist/lib/builder/FlowChartBuilder.js +17 -1
- package/dist/lib/builder/index.js +1 -1
- package/dist/lib/builder/structure/StructureRecorder.js +1 -1
- package/dist/lib/builder/structure/StructureRecorderDispatcher.js +13 -1
- package/dist/lib/engine/handlers/ParallelForEachHandler.js +11 -2
- package/dist/lib/engine/handlers/SubflowInputMapper.js +36 -6
- package/dist/lib/reactive/arrayTraps.js +14 -12
- package/dist/lib/reactive/createTypedScope.js +20 -12
- package/dist/lib/reactive/handles.js +112 -0
- package/dist/lib/reactive/index.js +6 -2
- package/dist/lib/reactive/structuralWrite.js +11 -30
- package/dist/lib/reactive/writeTraps.js +7 -5
- package/dist/types/advanced.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/lib/builder/FlowChartBuilder.d.ts +1 -0
- package/dist/types/lib/builder/index.d.ts +1 -1
- package/dist/types/lib/builder/structure/StructureRecorder.d.ts +32 -0
- package/dist/types/lib/builder/structure/StructureRecorderDispatcher.d.ts +2 -1
- package/dist/types/lib/engine/handlers/ParallelForEachHandler.d.ts +8 -0
- package/dist/types/lib/engine/handlers/SubflowInputMapper.d.ts +10 -1
- package/dist/types/lib/reactive/handles.d.ts +46 -0
- package/dist/types/lib/reactive/index.d.ts +1 -0
- package/dist/types/lib/reactive/structuralWrite.d.ts +0 -15
- package/dist/types/lib/reactive/writeTraps.d.ts +4 -3
- package/package.json +1 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* reactive/handles — which objects are the scope's HANDLES, and the value
|
|
3
|
+
* behind each.
|
|
4
|
+
*
|
|
5
|
+
* Every object the typed scope hands back is a Proxy bound to its stage
|
|
6
|
+
* (reactive/README.md, "A handle is bound to its stage"): inside the stage
|
|
7
|
+
* that is what makes a deep write commit and a held read stay live. A handle
|
|
8
|
+
* can also TRAVEL out of the stage in the library's own hands — an
|
|
9
|
+
* `addParallelForEach` items selector returns the array handle and its
|
|
10
|
+
* elements become the generated branch inputs; a subflow `inputMapper` or
|
|
11
|
+
* `outputMapper` hands one on; `$setValue('copy', scope.customer)` hands one
|
|
12
|
+
* back. Wherever the engine RECORDS a value it clones it (`structuredClone`,
|
|
13
|
+
* at commit since 9.23.0), and a Proxy cannot be cloned: `DataCloneError`,
|
|
14
|
+
* the stage's writes lost. 9.22.0–9.23.2 lost every child of a fan-out over
|
|
15
|
+
* object items that way (9.23.3).
|
|
16
|
+
*
|
|
17
|
+
* LAW: a handle the scope handed out is a value the engine accepts back.
|
|
18
|
+
* Each proxy factory registers its handle here with the same live reader its
|
|
19
|
+
* get trap uses, so the value behind a handle is what a read of it would
|
|
20
|
+
* return NOW — and the engine asks {@link unwrapHandles} at every boundary
|
|
21
|
+
* where app code hands it a value to record. O(1) for a handle (a WeakMap
|
|
22
|
+
* lookup, no walk, no JSON round-trip: a `Date` stays a `Date`); a walk only
|
|
23
|
+
* for a plain container the app built around handles, copy-on-write so a
|
|
24
|
+
* handle-free value comes back as the SAME reference.
|
|
25
|
+
*
|
|
26
|
+
* The value behind a handle is BORROWED — the same reference a read hands
|
|
27
|
+
* back, cloned by the buffer at commit. Never mutate it (the reads law).
|
|
28
|
+
*/
|
|
29
|
+
/** Register `handle` as a scope handle whose current value `live` returns. Returns the handle. */
|
|
30
|
+
export declare function rememberHandle<T extends object>(handle: T, live: () => unknown): T;
|
|
31
|
+
/** Is `value` a handle the scope handed out? */
|
|
32
|
+
export declare function isHandle(value: unknown): value is object;
|
|
33
|
+
/** The live value behind a handle; `value` itself when it is not one. O(1). */
|
|
34
|
+
export declare function valueBehind(value: unknown): unknown;
|
|
35
|
+
/**
|
|
36
|
+
* `value` with every handle inside it replaced by the value behind it.
|
|
37
|
+
*
|
|
38
|
+
* A handle is replaced in O(1) and NOT entered (the state behind it holds no
|
|
39
|
+
* handles — they are built on read, never stored). A plain container is
|
|
40
|
+
* walked and copied ONLY when something inside it changed, so a handle-free
|
|
41
|
+
* value is returned as the same reference and a hand-built `{ item, index }`
|
|
42
|
+
* around one handle costs one object. Anything else (a `Date`, a `Map`, a
|
|
43
|
+
* class instance, a primitive) is a leaf. A cycle among plain containers is
|
|
44
|
+
* left as it is — `structuredClone` handles cycles; only a Proxy stops it.
|
|
45
|
+
*/
|
|
46
|
+
export declare function unwrapHandles<T>(value: T): T;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* reactive/handles — which objects are the scope's HANDLES, and the value
|
|
3
|
+
* behind each.
|
|
4
|
+
*
|
|
5
|
+
* Every object the typed scope hands back is a Proxy bound to its stage
|
|
6
|
+
* (reactive/README.md, "A handle is bound to its stage"): inside the stage
|
|
7
|
+
* that is what makes a deep write commit and a held read stay live. A handle
|
|
8
|
+
* can also TRAVEL out of the stage in the library's own hands — an
|
|
9
|
+
* `addParallelForEach` items selector returns the array handle and its
|
|
10
|
+
* elements become the generated branch inputs; a subflow `inputMapper` or
|
|
11
|
+
* `outputMapper` hands one on; `$setValue('copy', scope.customer)` hands one
|
|
12
|
+
* back. Wherever the engine RECORDS a value it clones it (`structuredClone`,
|
|
13
|
+
* at commit since 9.23.0), and a Proxy cannot be cloned: `DataCloneError`,
|
|
14
|
+
* the stage's writes lost. 9.22.0–9.23.2 lost every child of a fan-out over
|
|
15
|
+
* object items that way (9.23.3).
|
|
16
|
+
*
|
|
17
|
+
* LAW: a handle the scope handed out is a value the engine accepts back.
|
|
18
|
+
* Each proxy factory registers its handle here with the same live reader its
|
|
19
|
+
* get trap uses, so the value behind a handle is what a read of it would
|
|
20
|
+
* return NOW — and the engine asks {@link unwrapHandles} at every boundary
|
|
21
|
+
* where app code hands it a value to record. O(1) for a handle (a WeakMap
|
|
22
|
+
* lookup, no walk, no JSON round-trip: a `Date` stays a `Date`); a walk only
|
|
23
|
+
* for a plain container the app built around handles, copy-on-write so a
|
|
24
|
+
* handle-free value comes back as the SAME reference.
|
|
25
|
+
*
|
|
26
|
+
* The value behind a handle is BORROWED — the same reference a read hands
|
|
27
|
+
* back, cloned by the buffer at commit. Never mutate it (the reads law).
|
|
28
|
+
*/
|
|
29
|
+
/** Every handle the four proxy factories built, mapped to its live reader. */
|
|
30
|
+
const LIVE = new WeakMap();
|
|
31
|
+
/** Register `handle` as a scope handle whose current value `live` returns. Returns the handle. */
|
|
32
|
+
export function rememberHandle(handle, live) {
|
|
33
|
+
LIVE.set(handle, live);
|
|
34
|
+
return handle;
|
|
35
|
+
}
|
|
36
|
+
/** Is `value` a handle the scope handed out? */
|
|
37
|
+
export function isHandle(value) {
|
|
38
|
+
return value !== null && typeof value === 'object' && LIVE.has(value);
|
|
39
|
+
}
|
|
40
|
+
/** The live value behind a handle; `value` itself when it is not one. O(1). */
|
|
41
|
+
export function valueBehind(value) {
|
|
42
|
+
if (value === null || typeof value !== 'object')
|
|
43
|
+
return value;
|
|
44
|
+
const live = LIVE.get(value);
|
|
45
|
+
return live === undefined ? value : live();
|
|
46
|
+
}
|
|
47
|
+
/** A plain object or array — the only containers the walk enters (a `Date`, `Map` or class instance is a leaf). */
|
|
48
|
+
function isPlainContainer(value) {
|
|
49
|
+
if (value === null || typeof value !== 'object')
|
|
50
|
+
return false;
|
|
51
|
+
if (Array.isArray(value))
|
|
52
|
+
return true;
|
|
53
|
+
const proto = Object.getPrototypeOf(value);
|
|
54
|
+
return proto === Object.prototype || proto === null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* `value` with every handle inside it replaced by the value behind it.
|
|
58
|
+
*
|
|
59
|
+
* A handle is replaced in O(1) and NOT entered (the state behind it holds no
|
|
60
|
+
* handles — they are built on read, never stored). A plain container is
|
|
61
|
+
* walked and copied ONLY when something inside it changed, so a handle-free
|
|
62
|
+
* value is returned as the same reference and a hand-built `{ item, index }`
|
|
63
|
+
* around one handle costs one object. Anything else (a `Date`, a `Map`, a
|
|
64
|
+
* class instance, a primitive) is a leaf. A cycle among plain containers is
|
|
65
|
+
* left as it is — `structuredClone` handles cycles; only a Proxy stops it.
|
|
66
|
+
*/
|
|
67
|
+
export function unwrapHandles(value) {
|
|
68
|
+
return walk(value, new Set());
|
|
69
|
+
}
|
|
70
|
+
function walk(value, onPath) {
|
|
71
|
+
if (value === null || typeof value !== 'object')
|
|
72
|
+
return value;
|
|
73
|
+
const live = LIVE.get(value);
|
|
74
|
+
if (live !== undefined)
|
|
75
|
+
return live();
|
|
76
|
+
if (!isPlainContainer(value) || onPath.has(value))
|
|
77
|
+
return value;
|
|
78
|
+
onPath.add(value);
|
|
79
|
+
const out = Array.isArray(value) ? walkArray(value, onPath) : walkObject(value, onPath);
|
|
80
|
+
onPath.delete(value);
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
function walkArray(value, onPath) {
|
|
84
|
+
let copy;
|
|
85
|
+
for (let i = 0; i < value.length; i++) {
|
|
86
|
+
const next = walk(value[i], onPath);
|
|
87
|
+
if (next === value[i])
|
|
88
|
+
continue;
|
|
89
|
+
copy ??= [...value];
|
|
90
|
+
copy[i] = next;
|
|
91
|
+
}
|
|
92
|
+
return copy ?? value;
|
|
93
|
+
}
|
|
94
|
+
function walkObject(value, onPath) {
|
|
95
|
+
let copy;
|
|
96
|
+
for (const key of Object.keys(value)) {
|
|
97
|
+
const next = walk(value[key], onPath);
|
|
98
|
+
if (next === value[key])
|
|
99
|
+
continue;
|
|
100
|
+
copy ??= { ...value };
|
|
101
|
+
copy[key] = next;
|
|
102
|
+
}
|
|
103
|
+
return copy ?? value;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcmVhY3RpdmUvaGFuZGxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUgsOEVBQThFO0FBQzlFLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO0FBRWxELGtHQUFrRztBQUNsRyxNQUFNLFVBQVUsY0FBYyxDQUFtQixNQUFTLEVBQUUsSUFBbUI7SUFDN0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELGdEQUFnRDtBQUNoRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQWM7SUFDckMsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCwrRUFBK0U7QUFDL0UsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFjO0lBQ3hDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDOUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDN0MsQ0FBQztBQUVELG1IQUFtSDtBQUNuSCxTQUFTLGdCQUFnQixDQUFDLEtBQWM7SUFDdEMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM5RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLENBQUMsU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDdEQsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFJLEtBQVE7SUFDdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLENBQU0sQ0FBQztBQUNyQyxDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUMsS0FBYyxFQUFFLE1BQW1CO0lBQy9DLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDOUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixJQUFJLElBQUksS0FBSyxTQUFTO1FBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNoRSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxLQUFnQixFQUFFLE1BQW1CO0lBQ3RELElBQUksSUFBMkIsQ0FBQztJQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEMsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztZQUFFLFNBQVM7UUFDaEMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2pCLENBQUM7SUFDRCxPQUFPLElBQUksSUFBSSxLQUFLLENBQUM7QUFDdkIsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEtBQThCLEVBQUUsTUFBbUI7SUFDckUsSUFBSSxJQUF5QyxDQUFDO0lBQzlDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUFFLFNBQVM7UUFDbEMsSUFBSSxLQUFLLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDRCxPQUFPLElBQUksSUFBSSxLQUFLLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogcmVhY3RpdmUvaGFuZGxlcyDigJQgd2hpY2ggb2JqZWN0cyBhcmUgdGhlIHNjb3BlJ3MgSEFORExFUywgYW5kIHRoZSB2YWx1ZVxuICogYmVoaW5kIGVhY2guXG4gKlxuICogRXZlcnkgb2JqZWN0IHRoZSB0eXBlZCBzY29wZSBoYW5kcyBiYWNrIGlzIGEgUHJveHkgYm91bmQgdG8gaXRzIHN0YWdlXG4gKiAocmVhY3RpdmUvUkVBRE1FLm1kLCBcIkEgaGFuZGxlIGlzIGJvdW5kIHRvIGl0cyBzdGFnZVwiKTogaW5zaWRlIHRoZSBzdGFnZVxuICogdGhhdCBpcyB3aGF0IG1ha2VzIGEgZGVlcCB3cml0ZSBjb21taXQgYW5kIGEgaGVsZCByZWFkIHN0YXkgbGl2ZS4gQSBoYW5kbGVcbiAqIGNhbiBhbHNvIFRSQVZFTCBvdXQgb2YgdGhlIHN0YWdlIGluIHRoZSBsaWJyYXJ5J3Mgb3duIGhhbmRzIOKAlCBhblxuICogYGFkZFBhcmFsbGVsRm9yRWFjaGAgaXRlbXMgc2VsZWN0b3IgcmV0dXJucyB0aGUgYXJyYXkgaGFuZGxlIGFuZCBpdHNcbiAqIGVsZW1lbnRzIGJlY29tZSB0aGUgZ2VuZXJhdGVkIGJyYW5jaCBpbnB1dHM7IGEgc3ViZmxvdyBgaW5wdXRNYXBwZXJgIG9yXG4gKiBgb3V0cHV0TWFwcGVyYCBoYW5kcyBvbmUgb247IGAkc2V0VmFsdWUoJ2NvcHknLCBzY29wZS5jdXN0b21lcilgIGhhbmRzIG9uZVxuICogYmFjay4gV2hlcmV2ZXIgdGhlIGVuZ2luZSBSRUNPUkRTIGEgdmFsdWUgaXQgY2xvbmVzIGl0IChgc3RydWN0dXJlZENsb25lYCxcbiAqIGF0IGNvbW1pdCBzaW5jZSA5LjIzLjApLCBhbmQgYSBQcm94eSBjYW5ub3QgYmUgY2xvbmVkOiBgRGF0YUNsb25lRXJyb3JgLFxuICogdGhlIHN0YWdlJ3Mgd3JpdGVzIGxvc3QuIDkuMjIuMOKAkzkuMjMuMiBsb3N0IGV2ZXJ5IGNoaWxkIG9mIGEgZmFuLW91dCBvdmVyXG4gKiBvYmplY3QgaXRlbXMgdGhhdCB3YXkgKDkuMjMuMykuXG4gKlxuICogTEFXOiBhIGhhbmRsZSB0aGUgc2NvcGUgaGFuZGVkIG91dCBpcyBhIHZhbHVlIHRoZSBlbmdpbmUgYWNjZXB0cyBiYWNrLlxuICogRWFjaCBwcm94eSBmYWN0b3J5IHJlZ2lzdGVycyBpdHMgaGFuZGxlIGhlcmUgd2l0aCB0aGUgc2FtZSBsaXZlIHJlYWRlciBpdHNcbiAqIGdldCB0cmFwIHVzZXMsIHNvIHRoZSB2YWx1ZSBiZWhpbmQgYSBoYW5kbGUgaXMgd2hhdCBhIHJlYWQgb2YgaXQgd291bGRcbiAqIHJldHVybiBOT1cg4oCUIGFuZCB0aGUgZW5naW5lIGFza3Mge0BsaW5rIHVud3JhcEhhbmRsZXN9IGF0IGV2ZXJ5IGJvdW5kYXJ5XG4gKiB3aGVyZSBhcHAgY29kZSBoYW5kcyBpdCBhIHZhbHVlIHRvIHJlY29yZC4gTygxKSBmb3IgYSBoYW5kbGUgKGEgV2Vha01hcFxuICogbG9va3VwLCBubyB3YWxrLCBubyBKU09OIHJvdW5kLXRyaXA6IGEgYERhdGVgIHN0YXlzIGEgYERhdGVgKTsgYSB3YWxrIG9ubHlcbiAqIGZvciBhIHBsYWluIGNvbnRhaW5lciB0aGUgYXBwIGJ1aWx0IGFyb3VuZCBoYW5kbGVzLCBjb3B5LW9uLXdyaXRlIHNvIGFcbiAqIGhhbmRsZS1mcmVlIHZhbHVlIGNvbWVzIGJhY2sgYXMgdGhlIFNBTUUgcmVmZXJlbmNlLlxuICpcbiAqIFRoZSB2YWx1ZSBiZWhpbmQgYSBoYW5kbGUgaXMgQk9SUk9XRUQg4oCUIHRoZSBzYW1lIHJlZmVyZW5jZSBhIHJlYWQgaGFuZHNcbiAqIGJhY2ssIGNsb25lZCBieSB0aGUgYnVmZmVyIGF0IGNvbW1pdC4gTmV2ZXIgbXV0YXRlIGl0ICh0aGUgcmVhZHMgbGF3KS5cbiAqL1xuXG4vKiogRXZlcnkgaGFuZGxlIHRoZSBmb3VyIHByb3h5IGZhY3RvcmllcyBidWlsdCwgbWFwcGVkIHRvIGl0cyBsaXZlIHJlYWRlci4gKi9cbmNvbnN0IExJVkUgPSBuZXcgV2Vha01hcDxvYmplY3QsICgpID0+IHVua25vd24+KCk7XG5cbi8qKiBSZWdpc3RlciBgaGFuZGxlYCBhcyBhIHNjb3BlIGhhbmRsZSB3aG9zZSBjdXJyZW50IHZhbHVlIGBsaXZlYCByZXR1cm5zLiBSZXR1cm5zIHRoZSBoYW5kbGUuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtZW1iZXJIYW5kbGU8VCBleHRlbmRzIG9iamVjdD4oaGFuZGxlOiBULCBsaXZlOiAoKSA9PiB1bmtub3duKTogVCB7XG4gIExJVkUuc2V0KGhhbmRsZSwgbGl2ZSk7XG4gIHJldHVybiBoYW5kbGU7XG59XG5cbi8qKiBJcyBgdmFsdWVgIGEgaGFuZGxlIHRoZSBzY29wZSBoYW5kZWQgb3V0PyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSGFuZGxlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgb2JqZWN0IHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgTElWRS5oYXModmFsdWUpO1xufVxuXG4vKiogVGhlIGxpdmUgdmFsdWUgYmVoaW5kIGEgaGFuZGxlOyBgdmFsdWVgIGl0c2VsZiB3aGVuIGl0IGlzIG5vdCBvbmUuIE8oMSkuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVCZWhpbmQodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiB2YWx1ZTtcbiAgY29uc3QgbGl2ZSA9IExJVkUuZ2V0KHZhbHVlKTtcbiAgcmV0dXJuIGxpdmUgPT09IHVuZGVmaW5lZCA/IHZhbHVlIDogbGl2ZSgpO1xufVxuXG4vKiogQSBwbGFpbiBvYmplY3Qgb3IgYXJyYXkg4oCUIHRoZSBvbmx5IGNvbnRhaW5lcnMgdGhlIHdhbGsgZW50ZXJzIChhIGBEYXRlYCwgYE1hcGAgb3IgY2xhc3MgaW5zdGFuY2UgaXMgYSBsZWFmKS4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5Db250YWluZXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVua25vd25bXSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcbiAgcmV0dXJuIHByb3RvID09PSBPYmplY3QucHJvdG90eXBlIHx8IHByb3RvID09PSBudWxsO1xufVxuXG4vKipcbiAqIGB2YWx1ZWAgd2l0aCBldmVyeSBoYW5kbGUgaW5zaWRlIGl0IHJlcGxhY2VkIGJ5IHRoZSB2YWx1ZSBiZWhpbmQgaXQuXG4gKlxuICogQSBoYW5kbGUgaXMgcmVwbGFjZWQgaW4gTygxKSBhbmQgTk9UIGVudGVyZWQgKHRoZSBzdGF0ZSBiZWhpbmQgaXQgaG9sZHMgbm9cbiAqIGhhbmRsZXMg4oCUIHRoZXkgYXJlIGJ1aWx0IG9uIHJlYWQsIG5ldmVyIHN0b3JlZCkuIEEgcGxhaW4gY29udGFpbmVyIGlzXG4gKiB3YWxrZWQgYW5kIGNvcGllZCBPTkxZIHdoZW4gc29tZXRoaW5nIGluc2lkZSBpdCBjaGFuZ2VkLCBzbyBhIGhhbmRsZS1mcmVlXG4gKiB2YWx1ZSBpcyByZXR1cm5lZCBhcyB0aGUgc2FtZSByZWZlcmVuY2UgYW5kIGEgaGFuZC1idWlsdCBgeyBpdGVtLCBpbmRleCB9YFxuICogYXJvdW5kIG9uZSBoYW5kbGUgY29zdHMgb25lIG9iamVjdC4gQW55dGhpbmcgZWxzZSAoYSBgRGF0ZWAsIGEgYE1hcGAsIGFcbiAqIGNsYXNzIGluc3RhbmNlLCBhIHByaW1pdGl2ZSkgaXMgYSBsZWFmLiBBIGN5Y2xlIGFtb25nIHBsYWluIGNvbnRhaW5lcnMgaXNcbiAqIGxlZnQgYXMgaXQgaXMg4oCUIGBzdHJ1Y3R1cmVkQ2xvbmVgIGhhbmRsZXMgY3ljbGVzOyBvbmx5IGEgUHJveHkgc3RvcHMgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBIYW5kbGVzPFQ+KHZhbHVlOiBUKTogVCB7XG4gIHJldHVybiB3YWxrKHZhbHVlLCBuZXcgU2V0KCkpIGFzIFQ7XG59XG5cbmZ1bmN0aW9uIHdhbGsodmFsdWU6IHVua25vd24sIG9uUGF0aDogU2V0PG9iamVjdD4pOiB1bmtub3duIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiB2YWx1ZTtcbiAgY29uc3QgbGl2ZSA9IExJVkUuZ2V0KHZhbHVlKTtcbiAgaWYgKGxpdmUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGxpdmUoKTtcbiAgaWYgKCFpc1BsYWluQ29udGFpbmVyKHZhbHVlKSB8fCBvblBhdGguaGFzKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICBvblBhdGguYWRkKHZhbHVlKTtcbiAgY29uc3Qgb3V0ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB3YWxrQXJyYXkodmFsdWUsIG9uUGF0aCkgOiB3YWxrT2JqZWN0KHZhbHVlLCBvblBhdGgpO1xuICBvblBhdGguZGVsZXRlKHZhbHVlKTtcbiAgcmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gd2Fsa0FycmF5KHZhbHVlOiB1bmtub3duW10sIG9uUGF0aDogU2V0PG9iamVjdD4pOiB1bmtub3duW10ge1xuICBsZXQgY29weTogdW5rbm93bltdIHwgdW5kZWZpbmVkO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbmV4dCA9IHdhbGsodmFsdWVbaV0sIG9uUGF0aCk7XG4gICAgaWYgKG5leHQgPT09IHZhbHVlW2ldKSBjb250aW51ZTtcbiAgICBjb3B5ID8/PSBbLi4udmFsdWVdO1xuICAgIGNvcHlbaV0gPSBuZXh0O1xuICB9XG4gIHJldHVybiBjb3B5ID8/IHZhbHVlO1xufVxuXG5mdW5jdGlvbiB3YWxrT2JqZWN0KHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgb25QYXRoOiBTZXQ8b2JqZWN0Pik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgbGV0IGNvcHk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHtcbiAgICBjb25zdCBuZXh0ID0gd2Fsayh2YWx1ZVtrZXldLCBvblBhdGgpO1xuICAgIGlmIChuZXh0ID09PSB2YWx1ZVtrZXldKSBjb250aW51ZTtcbiAgICBjb3B5ID8/PSB7IC4uLnZhbHVlIH07XG4gICAgY29weVtrZXldID0gbmV4dDtcbiAgfVxuICByZXR1cm4gY29weSA/PyB2YWx1ZTtcbn1cbiJdfQ==
|
|
@@ -11,4 +11,5 @@ export { BREAK_SETTER, EXECUTOR_INTERNAL_METHODS, IS_TYPED_SCOPE, SCOPE_METHOD_N
|
|
|
11
11
|
export { createTypedScope } from './createTypedScope.js';
|
|
12
12
|
export { shouldWrapWithProxy } from './allowlist.js';
|
|
13
13
|
export { createArrayProxy } from './arrayTraps.js';
|
|
14
|
+
export { isHandle, unwrapHandles, valueBehind } from './handles.js';
|
|
14
15
|
export { buildNestedPatch, joinPath } from './pathBuilder.js';
|
|
@@ -13,5 +13,6 @@ export { createTypedScope } from './createTypedScope.js';
|
|
|
13
13
|
// Utilities
|
|
14
14
|
export { shouldWrapWithProxy } from './allowlist.js';
|
|
15
15
|
export { createArrayProxy } from './arrayTraps.js';
|
|
16
|
+
export { isHandle, unwrapHandles, valueBehind } from './handles.js';
|
|
16
17
|
export { buildNestedPatch, joinPath } from './pathBuilder.js';
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JlYWN0aXZlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFLSCxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFlBQVksRUFBRSx5QkFBeUIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekcsZUFBZTtBQUNmLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpELFlBQVk7QUFDWixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiByZWFjdGl2ZS8gLS0gRGVlcCBQcm94eSBzeXN0ZW0gZm9yIFR5cGVkU2NvcGU8VD4uXG4gKlxuICogUHJvdmlkZXMgdHlwZWQgcHJvcGVydHkgYWNjZXNzIHRvIGZvb3RwcmludGpzIHNjb3BlIHN0YXRlOlxuICogICBzY29wZS5jcmVkaXRUaWVyID0gJ0EnICBpbnN0ZWFkIG9mICBzY29wZS5zZXRWYWx1ZSgnY3JlZGl0VGllcicsICdBJylcbiAqICAgc2NvcGUuY3VzdG9tZXIuYWRkcmVzcy56aXAgPSAnOTAyMTAnICBpbnN0ZWFkIG9mICBzY29wZS51cGRhdGVWYWx1ZSguLi4pXG4gKiAgIHNjb3BlLnRhZ3MucHVzaCgndmlwJykgIGluc3RlYWQgb2YgIHNjb3BlLnNldFZhbHVlKCd0YWdzJywgWy4uLnRhZ3MsICd2aXAnXSlcbiAqL1xuXG4vLyBUeXBlc1xuZXhwb3J0IHR5cGUgeyBSZWFjdGl2ZU9wdGlvbnMsIFJlYWN0aXZlVGFyZ2V0LCBTY29wZU1ldGhvZHMsIFR5cGVkU2NvcGUgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLy8gUnVudGltZSBjb25zdGFudHNcbmV4cG9ydCB7IEJSRUFLX1NFVFRFUiwgRVhFQ1VUT1JfSU5URVJOQUxfTUVUSE9EUywgSVNfVFlQRURfU0NPUEUsIFNDT1BFX01FVEhPRF9OQU1FUyB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vLyBDb3JlIGZhY3RvcnlcbmV4cG9ydCB7IGNyZWF0ZVR5cGVkU2NvcGUgfSBmcm9tICcuL2NyZWF0ZVR5cGVkU2NvcGUuanMnO1xuXG4vLyBVdGlsaXRpZXNcbmV4cG9ydCB7IHNob3VsZFdyYXBXaXRoUHJveHkgfSBmcm9tICcuL2FsbG93bGlzdC5qcyc7XG5leHBvcnQgeyBjcmVhdGVBcnJheVByb3h5IH0gZnJvbSAnLi9hcnJheVRyYXBzLmpzJztcbmV4cG9ydCB7IGlzSGFuZGxlLCB1bndyYXBIYW5kbGVzLCB2YWx1ZUJlaGluZCB9IGZyb20gJy4vaGFuZGxlcy5qcyc7XG5leHBvcnQgeyBidWlsZE5lc3RlZFBhdGNoLCBqb2luUGF0aCB9IGZyb20gJy4vcGF0aEJ1aWxkZXIuanMnO1xuIl19
|
|
@@ -14,21 +14,6 @@
|
|
|
14
14
|
* already makes. The buffer `structuredClone`s what it stages, so the
|
|
15
15
|
* detaching happens once, at the boundary that needs it.
|
|
16
16
|
*/
|
|
17
|
-
/**
|
|
18
|
-
* Strip Proxy wrappers from a value about to be stored.
|
|
19
|
-
*
|
|
20
|
-
* `structuredClone` in TransactionBuffer cannot clone a Proxy, and every deep
|
|
21
|
-
* read of state hands back one — so `scope.backup = scope.customer` would
|
|
22
|
-
* otherwise stage an unclonable value.
|
|
23
|
-
*
|
|
24
|
-
* KNOWN COST (landmine 1): this is a JSON round-trip, so a `Date` becomes a
|
|
25
|
-
* string, a `Map` becomes `{}` and an own `undefined` drops. `$setValue`
|
|
26
|
-
* bypasses it, which is why the two write paths can store different bytes.
|
|
27
|
-
* The round-trip is applied to the ASSIGNED VALUE only — never to the
|
|
28
|
-
* surrounding state, which reaches the buffer by reference and is detached by
|
|
29
|
-
* `structuredClone` (Dates and Maps intact).
|
|
30
|
-
*/
|
|
31
|
-
export declare function unwrapProxy(value: unknown): unknown;
|
|
32
17
|
/**
|
|
33
18
|
* Return a copy of `root` with `value` at `segments`, mutating nothing.
|
|
34
19
|
*
|
|
@@ -14,34 +14,16 @@
|
|
|
14
14
|
* already makes. The buffer `structuredClone`s what it stages, so the
|
|
15
15
|
* detaching happens once, at the boundary that needs it.
|
|
16
16
|
*/
|
|
17
|
-
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* `
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* bypasses it, which is why the two write paths can store different bytes.
|
|
27
|
-
* The round-trip is applied to the ASSIGNED VALUE only — never to the
|
|
28
|
-
* surrounding state, which reaches the buffer by reference and is detached by
|
|
29
|
-
* `structuredClone` (Dates and Maps intact).
|
|
17
|
+
/*
|
|
18
|
+
* Until 9.24.0 this module also owned `unwrapProxy`, a JSON round-trip of
|
|
19
|
+
* every ASSIGNED value — the only way then to keep the scope's own Proxies
|
|
20
|
+
* out of the buffer. It cost a `Date` its type and a `Map` its members, and
|
|
21
|
+
* it made the trap and `$setValue` store different bytes for the same value
|
|
22
|
+
* (the old landmine 1). The scope's handles are recognised now
|
|
23
|
+
* (`handles.ts · unwrapHandles`, O(1) each), so the assigned value goes to
|
|
24
|
+
* the sink AS ASSIGNED and the buffer's `structuredClone` at commit is the
|
|
25
|
+
* one detaching step — the same law `$setValue` has always had.
|
|
30
26
|
*/
|
|
31
|
-
export function unwrapProxy(value) {
|
|
32
|
-
if (value === null || value === undefined)
|
|
33
|
-
return value;
|
|
34
|
-
if (typeof value !== 'object')
|
|
35
|
-
return value;
|
|
36
|
-
try {
|
|
37
|
-
// JSON round-trip strips Proxies. Safe because state values must be JSON-serializable.
|
|
38
|
-
return JSON.parse(JSON.stringify(value));
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
// Non-serializable (functions, symbols, etc.) — return as-is
|
|
42
|
-
return value;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
27
|
/** Shallow copy that preserves array-ness — the one container copy this module makes. */
|
|
46
28
|
function copyContainer(node) {
|
|
47
29
|
if (Array.isArray(node))
|
|
@@ -119,4 +101,4 @@ export function deleteInPath(root, segments) {
|
|
|
119
101
|
copy[segment] = replaced;
|
|
120
102
|
return copy;
|
|
121
103
|
}
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJhbFdyaXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9yZWFjdGl2ZS9zdHJ1Y3R1cmFsV3JpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUg7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBYztJQUN4QyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN4RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM1QyxJQUFJLENBQUM7UUFDSCx1RkFBdUY7UUFDdkYsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsNkRBQTZEO1FBQzdELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRCx5RkFBeUY7QUFDekYsU0FBUyxhQUFhLENBQUMsSUFBYTtJQUNsQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDMUMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLEVBQUUsR0FBSSxJQUFnQyxFQUFFLENBQUM7SUFDL0YsNEVBQTRFO0lBQzVFLHlFQUF5RTtJQUN6RSxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsU0FBUyxPQUFPLENBQUMsSUFBYSxFQUFFLE9BQWU7SUFDN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDM0MsTUFBTSxDQUFD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QUFDLENBQUM7SUFDakMsSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUM7O1FBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDOUIsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiByZWFjdGl2ZS9zdHJ1Y3R1cmFsV3JpdGUgLS0gQnVpbGQgdGhlIE5FWFQgdmFsdWUgd2l0aG91dCB0b3VjaGluZyB0aGUgbGFzdCBvbmUuXG4gKlxuICogRXZlcnkgZGVlcCB3cml0ZSB0aGUgdHlwZWQgc2NvcGUgaW50ZXJjZXB0cyBoYXMgdGhlIHNhbWUgc2hhcGU6IFwiYXQgdGhpc1xuICogcGF0aCBpbnNpZGUgdGhlIHZhbHVlIEkgcmVhZCwgcHV0IHRoaXNcIi4gVGhlIHZhbHVlIGl0IHJlYWQgaXMgQk9SUk9XRUQg4oCUXG4gKiBiZWZvcmUgYSBzdGFnZSdzIGZpcnN0IHN0YWdlZCB3cml0ZSBpdCBpcyBhIGJhcmUgcmVmZXJlbmNlIGludG8gY29tbWl0dGVkXG4gKiBzaGFyZWQgbWVtb3J5LCBhbmQgY29tbWl0dGVkIHN0YXRlIGlzIGltbXV0YWJsZS1hZnRlci1zd2FwIChzZWVcbiAqIGBTdGFnZUNvbnRleHQuZmlyc3RUb3VjaFN0YXRlYCkuIEVkaXRpbmcgaXQgaW4gcGxhY2Ugd291bGQgY29ycnVwdCBldmVyeVxuICogaW4tZmxpZ2h0IHN0YWdlIEFORCBsZWF2ZSB0aGUgY29tbWl0IGxvZyB3aXRoIG5vdGhpbmcgdG8gcmVjb3JkLlxuICpcbiAqIFNvIHRoZSB3cml0ZSBwYXRoIG5ldmVyIG11dGF0ZXMuIEl0IENPUElFUyB0aGUgY29udGFpbmVycyBhbG9uZyB0aGUgcGF0aFxuICogKGFuZCBvbmx5IHRob3NlKSBhbmQgcmV0dXJucyBhIG5ldyByb290LCBsZWF2aW5nIGV2ZXJ5IHVudG91Y2hlZCBzaWJsaW5nXG4gKiBzaGFyZWQgYnkgcmVmZXJlbmNlIOKAlCB0aGUgc2FtZSB6ZXJvLWNsb25lIGJhcmdhaW4gdGhlIGZpcnN0LXRvdWNoIHZpZXdcbiAqIGFscmVhZHkgbWFrZXMuIFRoZSBidWZmZXIgYHN0cnVjdHVyZWRDbG9uZWBzIHdoYXQgaXQgc3RhZ2VzLCBzbyB0aGVcbiAqIGRldGFjaGluZyBoYXBwZW5zIG9uY2UsIGF0IHRoZSBib3VuZGFyeSB0aGF0IG5lZWRzIGl0LlxuICovXG5cbi8qKlxuICogU3RyaXAgUHJveHkgd3JhcHBlcnMgZnJvbSBhIHZhbHVlIGFib3V0IHRvIGJlIHN0b3JlZC5cbiAqXG4gKiBgc3RydWN0dXJlZENsb25lYCBpbiBUcmFuc2FjdGlvbkJ1ZmZlciBjYW5ub3QgY2xvbmUgYSBQcm94eSwgYW5kIGV2ZXJ5IGRlZXBcbiAqIHJlYWQgb2Ygc3RhdGUgaGFuZHMgYmFjayBvbmUg4oCUIHNvIGBzY29wZS5iYWNrdXAgPSBzY29wZS5jdXN0b21lcmAgd291bGRcbiAqIG90aGVyd2lzZSBzdGFnZSBhbiB1bmNsb25hYmxlIHZhbHVlLlxuICpcbiAqIEtOT1dOIENPU1QgKGxhbmRtaW5lIDEpOiB0aGlzIGlzIGEgSlNPTiByb3VuZC10cmlwLCBzbyBhIGBEYXRlYCBiZWNvbWVzIGFcbiAqIHN0cmluZywgYSBgTWFwYCBiZWNvbWVzIGB7fWAgYW5kIGFuIG93biBgdW5kZWZpbmVkYCBkcm9wcy4gYCRzZXRWYWx1ZWBcbiAqIGJ5cGFzc2VzIGl0LCB3aGljaCBpcyB3aHkgdGhlIHR3byB3cml0ZSBwYXRocyBjYW4gc3RvcmUgZGlmZmVyZW50IGJ5dGVzLlxuICogVGhlIHJvdW5kLXRyaXAgaXMgYXBwbGllZCB0byB0aGUgQVNTSUdORUQgVkFMVUUgb25seSDigJQgbmV2ZXIgdG8gdGhlXG4gKiBzdXJyb3VuZGluZyBzdGF0ZSwgd2hpY2ggcmVhY2hlcyB0aGUgYnVmZmVyIGJ5IHJlZmVyZW5jZSBhbmQgaXMgZGV0YWNoZWQgYnlcbiAqIGBzdHJ1Y3R1cmVkQ2xvbmVgIChEYXRlcyBhbmQgTWFwcyBpbnRhY3QpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwUHJveHkodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiB2YWx1ZTtcbiAgdHJ5IHtcbiAgICAvLyBKU09OIHJvdW5kLXRyaXAgc3RyaXBzIFByb3hpZXMuIFNhZmUgYmVjYXVzZSBzdGF0ZSB2YWx1ZXMgbXVzdCBiZSBKU09OLXNlcmlhbGl6YWJsZS5cbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICB9IGNhdGNoIHtcbiAgICAvLyBOb24tc2VyaWFsaXphYmxlIChmdW5jdGlvbnMsIHN5bWJvbHMsIGV0Yy4pIOKAlCByZXR1cm4gYXMtaXNcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuLyoqIFNoYWxsb3cgY29weSB0aGF0IHByZXNlcnZlcyBhcnJheS1uZXNzIOKAlCB0aGUgb25lIGNvbnRhaW5lciBjb3B5IHRoaXMgbW9kdWxlIG1ha2VzLiAqL1xuZnVuY3Rpb24gY29weUNvbnRhaW5lcihub2RlOiB1bmtub3duKTogYW55IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHJldHVybiBbLi4ubm9kZV07XG4gIGlmIChub2RlICE9PSBudWxsICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JykgcmV0dXJuIHsgLi4uKG5vZGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIH07XG4gIC8vIE5vdCBhIGNvbnRhaW5lciAocHJpbWl0aXZlLCBudWxsLCB1bmRlZmluZWQpOiB0aGUgcGF0aCBjb250aW51ZXMgSU5UTyBpdCxcbiAgLy8gc28gaXQgYmVjb21lcyBhIGZyZXNoIG9iamVjdCDigJQgdGhlIHNhbWUgY29lcmNpb24gYG5hdGl2ZVNldGAgcGVyZm9ybXMuXG4gIHJldHVybiB7fTtcbn1cblxuLyoqIEFuIGFycmF5IGluZGV4IHNlZ21lbnQsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlIHNlZ21lbnQgbmFtZXMgYSBwcm9wZXJ0eS4gKi9cbmZ1bmN0aW9uIGluZGV4T2Yobm9kZTogdW5rbm93biwgc2VnbWVudDogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KG5vZGUpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBpID0gTnVtYmVyKHNlZ21lbnQpO1xuICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihpKSAmJiBpID49IDAgPyBpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldHVybiBhIGNvcHkgb2YgYHJvb3RgIHdpdGggYHZhbHVlYCBhdCBgc2VnbWVudHNgLCBtdXRhdGluZyBub3RoaW5nLlxuICpcbiAqIENvbnRhaW5lcnMgb24gdGhlIHBhdGggYXJlIHNoYWxsb3ctY29waWVkIChhcnJheXMgc3RheSBhcnJheXMpOyBldmVyeXRoaW5nXG4gKiBvZmYgdGhlIHBhdGggaXMgc2hhcmVkIGJ5IHJlZmVyZW5jZS4gQW4gZW1wdHkgcGF0aCByZXR1cm5zIGB2YWx1ZWAgaXRzZWxmLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0SW5QYXRoKHJvb3Q6IHVua25vd24sIHNlZ21lbnRzOiByZWFkb25seSBzdHJpbmdbXSwgdmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHZhbHVlO1xuICBjb25zdCBuZXh0ID0gY29weUNvbnRhaW5lcihyb290KTtcbiAgY29uc3Qgc2VnbWVudCA9IHNlZ21lbnRzWzBdO1xuICBjb25zdCBpbmRleCA9IGluZGV4T2YobmV4dCwgc2VnbWVudCk7XG4gIGNvbnN0IGNoaWxkID0gaW5kZXggIT09IHVuZGVmaW5lZCA/IG5leHRbaW5kZXhdIDogKG5leHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3NlZ21lbnRdO1xuICBjb25zdCByZXBsYWNlZCA9IHNldEluUGF0aChjaGlsZCwgc2VnbWVudHMuc2xpY2UoMSksIHZhbHVlKTtcbiAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIG5leHRbaW5kZXhdID0gcmVwbGFjZWQ7XG4gIGVsc2UgKG5leHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3NlZ21lbnRdID0gcmVwbGFjZWQ7XG4gIHJldHVybiBuZXh0O1xufVxuXG4vKipcbiAqIFJldHVybiBhIGNvcHkgb2YgYHJvb3RgIHdpdGggdGhlIGtleSBhdCBgc2VnbWVudHNgIFJFTU9WRUQsIG11dGF0aW5nIG5vdGhpbmcuXG4gKlxuICogT24gYW4gYXJyYXkgdGhlIHNsb3QgaXMgcmVtb3ZlZCB3aXRoIGBzcGxpY2VgICh0aGUgYXJyYXkgc2hyaW5rcyDigJQgYGRlbGV0ZWBcbiAqIG9uIGFuIGFycmF5IGluZGV4IHdvdWxkIGxlYXZlIGEgaG9sZSwgd2hpY2ggY2Fubm90IHN1cnZpdmVcbiAqIGBzdHJ1Y3R1cmVkQ2xvbmVgIHJvdW5kLXRyaXBzIGFzIHRoZSBzYW1lIHZhbHVlKS4gQSBwYXRoIHRoYXQgZG9lcyBub3RcbiAqIGV4aXN0IHJldHVybnMgdGhlIHJvb3QgdW5jaGFuZ2VkLCBieSByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVJblBhdGgocm9vdDogdW5rbm93biwgc2VnbWVudHM6IHJlYWRvbmx5IHN0cmluZ1tdKTogdW5rbm93biB7XG4gIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmIChyb290ID09PSBudWxsIHx8IHR5cGVvZiByb290ICE9PSAnb2JqZWN0JykgcmV0dXJuIHJvb3Q7XG4gIGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1swXTtcbiAgY29uc3QgaW5kZXggPSBpbmRleE9mKHJvb3QsIHNlZ21lbnQpO1xuICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChpbmRleCA+PSAocm9vdCBhcyB1bmtub3duW10pLmxlbmd0aCkgcmV0dXJuIHJvb3Q7XG4gICAgICBjb25zdCBjb3B5ID0gWy4uLihyb290IGFzIHVua25vd25bXSldO1xuICAgICAgY29weS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJvb3QsIHNlZ21lbnQpKSByZXR1cm4gcm9vdDtcbiAgICBjb25zdCBjb3B5ID0geyAuLi4ocm9vdCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfTtcbiAgICBkZWxldGUgY29weVtzZWdtZW50XTtcbiAgICByZXR1cm4gY29weTtcbiAgfVxuICBjb25zdCBjaGlsZCA9IGluZGV4ICE9PSB1bmRlZmluZWQgPyAocm9vdCBhcyB1bmtub3duW10pW2luZGV4XSA6IChyb290IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtzZWdtZW50XTtcbiAgY29uc3QgcmVwbGFjZWQgPSBkZWxldGVJblBhdGgoY2hpbGQsIHNlZ21lbnRzLnNsaWNlKDEpKTtcbiAgaWYgKHJlcGxhY2VkID09PSBjaGlsZCkgcmV0dXJuIHJvb3Q7XG4gIGNvbnN0IGNvcHkgPSBjb3B5Q29udGFpbmVyKHJvb3QpO1xuICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkgY29weVtpbmRleF0gPSByZXBsYWNlZDtcbiAgZWxzZSBjb3B5W3NlZ21lbnRdID0gcmVwbGFjZWQ7XG4gIHJldHVybiBjb3B5O1xufVxuIl19
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJhbFdyaXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9yZWFjdGl2ZS9zdHJ1Y3R1cmFsV3JpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUg7Ozs7Ozs7OztHQVNHO0FBRUgseUZBQXlGO0FBQ3pGLFNBQVMsYUFBYSxDQUFDLElBQWE7SUFDbEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQUUsT0FBTyxFQUFFLEdBQUksSUFBZ0MsRUFBRSxDQUFDO0lBQy9GLDRFQUE0RTtJQUM1RSx5RUFBeUU7SUFDekUsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsZ0ZBQWdGO0FBQ2hGLFNBQVMsT0FBTyxDQUFDLElBQWEsRUFBRSxPQUFlO0lBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzNDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdkQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFhLEVBQUUsUUFBMkIsRUFBRSxLQUFjO0lBQ2xGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDeEMsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sS0FBSyxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUUsSUFBZ0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUQsSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUM7O1FBQzFDLElBQWdDLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQWEsRUFBRSxRQUEyQjtJQUNyRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzVDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDM0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLElBQUksS0FBSyxJQUFLLElBQWtCLENBQUMsTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNyRCxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUksSUFBa0IsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3RFLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBSSxJQUFnQyxFQUFFLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUUsSUFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUUsSUFBZ0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RyxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxJQUFJLFFBQVEsS0FBSyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDcEMsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLElBQUksS0FBSyxLQUFLLFNBQVM7UUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDOztRQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzlCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogcmVhY3RpdmUvc3RydWN0dXJhbFdyaXRlIC0tIEJ1aWxkIHRoZSBORVhUIHZhbHVlIHdpdGhvdXQgdG91Y2hpbmcgdGhlIGxhc3Qgb25lLlxuICpcbiAqIEV2ZXJ5IGRlZXAgd3JpdGUgdGhlIHR5cGVkIHNjb3BlIGludGVyY2VwdHMgaGFzIHRoZSBzYW1lIHNoYXBlOiBcImF0IHRoaXNcbiAqIHBhdGggaW5zaWRlIHRoZSB2YWx1ZSBJIHJlYWQsIHB1dCB0aGlzXCIuIFRoZSB2YWx1ZSBpdCByZWFkIGlzIEJPUlJPV0VEIOKAlFxuICogYmVmb3JlIGEgc3RhZ2UncyBmaXJzdCBzdGFnZWQgd3JpdGUgaXQgaXMgYSBiYXJlIHJlZmVyZW5jZSBpbnRvIGNvbW1pdHRlZFxuICogc2hhcmVkIG1lbW9yeSwgYW5kIGNvbW1pdHRlZCBzdGF0ZSBpcyBpbW11dGFibGUtYWZ0ZXItc3dhcCAoc2VlXG4gKiBgU3RhZ2VDb250ZXh0LmZpcnN0VG91Y2hTdGF0ZWApLiBFZGl0aW5nIGl0IGluIHBsYWNlIHdvdWxkIGNvcnJ1cHQgZXZlcnlcbiAqIGluLWZsaWdodCBzdGFnZSBBTkQgbGVhdmUgdGhlIGNvbW1pdCBsb2cgd2l0aCBub3RoaW5nIHRvIHJlY29yZC5cbiAqXG4gKiBTbyB0aGUgd3JpdGUgcGF0aCBuZXZlciBtdXRhdGVzLiBJdCBDT1BJRVMgdGhlIGNvbnRhaW5lcnMgYWxvbmcgdGhlIHBhdGhcbiAqIChhbmQgb25seSB0aG9zZSkgYW5kIHJldHVybnMgYSBuZXcgcm9vdCwgbGVhdmluZyBldmVyeSB1bnRvdWNoZWQgc2libGluZ1xuICogc2hhcmVkIGJ5IHJlZmVyZW5jZSDigJQgdGhlIHNhbWUgemVyby1jbG9uZSBiYXJnYWluIHRoZSBmaXJzdC10b3VjaCB2aWV3XG4gKiBhbHJlYWR5IG1ha2VzLiBUaGUgYnVmZmVyIGBzdHJ1Y3R1cmVkQ2xvbmVgcyB3aGF0IGl0IHN0YWdlcywgc28gdGhlXG4gKiBkZXRhY2hpbmcgaGFwcGVucyBvbmNlLCBhdCB0aGUgYm91bmRhcnkgdGhhdCBuZWVkcyBpdC5cbiAqL1xuXG4vKlxuICogVW50aWwgOS4yNC4wIHRoaXMgbW9kdWxlIGFsc28gb3duZWQgYHVud3JhcFByb3h5YCwgYSBKU09OIHJvdW5kLXRyaXAgb2ZcbiAqIGV2ZXJ5IEFTU0lHTkVEIHZhbHVlIOKAlCB0aGUgb25seSB3YXkgdGhlbiB0byBrZWVwIHRoZSBzY29wZSdzIG93biBQcm94aWVzXG4gKiBvdXQgb2YgdGhlIGJ1ZmZlci4gSXQgY29zdCBhIGBEYXRlYCBpdHMgdHlwZSBhbmQgYSBgTWFwYCBpdHMgbWVtYmVycywgYW5kXG4gKiBpdCBtYWRlIHRoZSB0cmFwIGFuZCBgJHNldFZhbHVlYCBzdG9yZSBkaWZmZXJlbnQgYnl0ZXMgZm9yIHRoZSBzYW1lIHZhbHVlXG4gKiAodGhlIG9sZCBsYW5kbWluZSAxKS4gVGhlIHNjb3BlJ3MgaGFuZGxlcyBhcmUgcmVjb2duaXNlZCBub3dcbiAqIChgaGFuZGxlcy50cyDCtyB1bndyYXBIYW5kbGVzYCwgTygxKSBlYWNoKSwgc28gdGhlIGFzc2lnbmVkIHZhbHVlIGdvZXMgdG9cbiAqIHRoZSBzaW5rIEFTIEFTU0lHTkVEIGFuZCB0aGUgYnVmZmVyJ3MgYHN0cnVjdHVyZWRDbG9uZWAgYXQgY29tbWl0IGlzIHRoZVxuICogb25lIGRldGFjaGluZyBzdGVwIOKAlCB0aGUgc2FtZSBsYXcgYCRzZXRWYWx1ZWAgaGFzIGFsd2F5cyBoYWQuXG4gKi9cblxuLyoqIFNoYWxsb3cgY29weSB0aGF0IHByZXNlcnZlcyBhcnJheS1uZXNzIOKAlCB0aGUgb25lIGNvbnRhaW5lciBjb3B5IHRoaXMgbW9kdWxlIG1ha2VzLiAqL1xuZnVuY3Rpb24gY29weUNvbnRhaW5lcihub2RlOiB1bmtub3duKTogYW55IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHJldHVybiBbLi4ubm9kZV07XG4gIGlmIChub2RlICE9PSBudWxsICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JykgcmV0dXJuIHsgLi4uKG5vZGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIH07XG4gIC8vIE5vdCBhIGNvbnRhaW5lciAocHJpbWl0aXZlLCBudWxsLCB1bmRlZmluZWQpOiB0aGUgcGF0aCBjb250aW51ZXMgSU5UTyBpdCxcbiAgLy8gc28gaXQgYmVjb21lcyBhIGZyZXNoIG9iamVjdCDigJQgdGhlIHNhbWUgY29lcmNpb24gYG5hdGl2ZVNldGAgcGVyZm9ybXMuXG4gIHJldHVybiB7fTtcbn1cblxuLyoqIEFuIGFycmF5IGluZGV4IHNlZ21lbnQsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlIHNlZ21lbnQgbmFtZXMgYSBwcm9wZXJ0eS4gKi9cbmZ1bmN0aW9uIGluZGV4T2Yobm9kZTogdW5rbm93biwgc2VnbWVudDogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KG5vZGUpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBpID0gTnVtYmVyKHNlZ21lbnQpO1xuICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihpKSAmJiBpID49IDAgPyBpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldHVybiBhIGNvcHkgb2YgYHJvb3RgIHdpdGggYHZhbHVlYCBhdCBgc2VnbWVudHNgLCBtdXRhdGluZyBub3RoaW5nLlxuICpcbiAqIENvbnRhaW5lcnMgb24gdGhlIHBhdGggYXJlIHNoYWxsb3ctY29waWVkIChhcnJheXMgc3RheSBhcnJheXMpOyBldmVyeXRoaW5nXG4gKiBvZmYgdGhlIHBhdGggaXMgc2hhcmVkIGJ5IHJlZmVyZW5jZS4gQW4gZW1wdHkgcGF0aCByZXR1cm5zIGB2YWx1ZWAgaXRzZWxmLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0SW5QYXRoKHJvb3Q6IHVua25vd24sIHNlZ21lbnRzOiByZWFkb25seSBzdHJpbmdbXSwgdmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHZhbHVlO1xuICBjb25zdCBuZXh0ID0gY29weUNvbnRhaW5lcihyb290KTtcbiAgY29uc3Qgc2VnbWVudCA9IHNlZ21lbnRzWzBdO1xuICBjb25zdCBpbmRleCA9IGluZGV4T2YobmV4dCwgc2VnbWVudCk7XG4gIGNvbnN0IGNoaWxkID0gaW5kZXggIT09IHVuZGVmaW5lZCA/IG5leHRbaW5kZXhdIDogKG5leHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3NlZ21lbnRdO1xuICBjb25zdCByZXBsYWNlZCA9IHNldEluUGF0aChjaGlsZCwgc2VnbWVudHMuc2xpY2UoMSksIHZhbHVlKTtcbiAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIG5leHRbaW5kZXhdID0gcmVwbGFjZWQ7XG4gIGVsc2UgKG5leHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3NlZ21lbnRdID0gcmVwbGFjZWQ7XG4gIHJldHVybiBuZXh0O1xufVxuXG4vKipcbiAqIFJldHVybiBhIGNvcHkgb2YgYHJvb3RgIHdpdGggdGhlIGtleSBhdCBgc2VnbWVudHNgIFJFTU9WRUQsIG11dGF0aW5nIG5vdGhpbmcuXG4gKlxuICogT24gYW4gYXJyYXkgdGhlIHNsb3QgaXMgcmVtb3ZlZCB3aXRoIGBzcGxpY2VgICh0aGUgYXJyYXkgc2hyaW5rcyDigJQgYGRlbGV0ZWBcbiAqIG9uIGFuIGFycmF5IGluZGV4IHdvdWxkIGxlYXZlIGEgaG9sZSwgd2hpY2ggY2Fubm90IHN1cnZpdmVcbiAqIGBzdHJ1Y3R1cmVkQ2xvbmVgIHJvdW5kLXRyaXBzIGFzIHRoZSBzYW1lIHZhbHVlKS4gQSBwYXRoIHRoYXQgZG9lcyBub3RcbiAqIGV4aXN0IHJldHVybnMgdGhlIHJvb3QgdW5jaGFuZ2VkLCBieSByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVJblBhdGgocm9vdDogdW5rbm93biwgc2VnbWVudHM6IHJlYWRvbmx5IHN0cmluZ1tdKTogdW5rbm93biB7XG4gIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmIChyb290ID09PSBudWxsIHx8IHR5cGVvZiByb290ICE9PSAnb2JqZWN0JykgcmV0dXJuIHJvb3Q7XG4gIGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1swXTtcbiAgY29uc3QgaW5kZXggPSBpbmRleE9mKHJvb3QsIHNlZ21lbnQpO1xuICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChpbmRleCA+PSAocm9vdCBhcyB1bmtub3duW10pLmxlbmd0aCkgcmV0dXJuIHJvb3Q7XG4gICAgICBjb25zdCBjb3B5ID0gWy4uLihyb290IGFzIHVua25vd25bXSldO1xuICAgICAgY29weS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJvb3QsIHNlZ21lbnQpKSByZXR1cm4gcm9vdDtcbiAgICBjb25zdCBjb3B5ID0geyAuLi4ocm9vdCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfTtcbiAgICBkZWxldGUgY29weVtzZWdtZW50XTtcbiAgICByZXR1cm4gY29weTtcbiAgfVxuICBjb25zdCBjaGlsZCA9IGluZGV4ICE9PSB1bmRlZmluZWQgPyAocm9vdCBhcyB1bmtub3duW10pW2luZGV4XSA6IChyb290IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtzZWdtZW50XTtcbiAgY29uc3QgcmVwbGFjZWQgPSBkZWxldGVJblBhdGgoY2hpbGQsIHNlZ21lbnRzLnNsaWNlKDEpKTtcbiAgaWYgKHJlcGxhY2VkID09PSBjaGlsZCkgcmV0dXJuIHJvb3Q7XG4gIGNvbnN0IGNvcHkgPSBjb3B5Q29udGFpbmVyKHJvb3QpO1xuICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkgY29weVtpbmRleF0gPSByZXBsYWNlZDtcbiAgZWxzZSBjb3B5W3NlZ21lbnRdID0gcmVwbGFjZWQ7XG4gIHJldHVybiBjb3B5O1xufVxuIl19
|
|
@@ -47,9 +47,10 @@ export declare function rootKeySink(target: RootKeyTarget, readSilent: (key: str
|
|
|
47
47
|
*/
|
|
48
48
|
export declare function elementSink(getCurrent: () => unknown[], commit: (next: unknown[]) => void, index: number): WriteSink;
|
|
49
49
|
/**
|
|
50
|
-
* WHY one set trap: the assigned value is
|
|
51
|
-
*
|
|
52
|
-
*
|
|
50
|
+
* WHY one set trap: the assigned value is taken as a VALUE here (a handle
|
|
51
|
+
* becomes what it stands for, `handles.ts`; nothing else is copied — the
|
|
52
|
+
* buffer detaches at commit) and handed to the sink at the proxy's path plus
|
|
53
|
+
* the key.
|
|
53
54
|
*/
|
|
54
55
|
export declare function sinkSetTrap(sink: WriteSink, segments: readonly string[]): ProxyHandler<object>['set'];
|
|
55
56
|
/**
|
|
@@ -13,8 +13,9 @@
|
|
|
13
13
|
* fixed in one copy of these traps and then found again in the other two).
|
|
14
14
|
*/
|
|
15
15
|
import { nativeGet } from '../memory/pathOps.js';
|
|
16
|
+
import { unwrapHandles } from './handles.js';
|
|
16
17
|
import { buildNestedPatch } from './pathBuilder.js';
|
|
17
|
-
import { deleteInPath, setInPath
|
|
18
|
+
import { deleteInPath, setInPath } from './structuralWrite.js';
|
|
18
19
|
/**
|
|
19
20
|
* WHY: a write below a top-level key has TWO verbs (reactive/README.md, law
|
|
20
21
|
* 3) — an object leaf is a `merge` of a nested patch, an array leaf or a
|
|
@@ -105,15 +106,16 @@ function removeInElement(getCurrent, commit, index, path) {
|
|
|
105
106
|
commit(next);
|
|
106
107
|
}
|
|
107
108
|
/**
|
|
108
|
-
* WHY one set trap: the assigned value is
|
|
109
|
-
*
|
|
110
|
-
*
|
|
109
|
+
* WHY one set trap: the assigned value is taken as a VALUE here (a handle
|
|
110
|
+
* becomes what it stands for, `handles.ts`; nothing else is copied — the
|
|
111
|
+
* buffer detaches at commit) and handed to the sink at the proxy's path plus
|
|
112
|
+
* the key.
|
|
111
113
|
*/
|
|
112
114
|
export function sinkSetTrap(sink, segments) {
|
|
113
115
|
return (_target, prop, value) => {
|
|
114
116
|
if (typeof prop !== 'string')
|
|
115
117
|
return true;
|
|
116
|
-
sink.put([...segments, prop],
|
|
118
|
+
sink.put([...segments, prop], unwrapHandles(value));
|
|
117
119
|
return true;
|
|
118
120
|
};
|
|
119
121
|
}
|
|
@@ -129,4 +131,4 @@ export function sinkDeleteTrap(sink, segments) {
|
|
|
129
131
|
return true;
|
|
130
132
|
};
|
|
131
133
|
}
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVUcmFwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcmVhY3RpdmUvd3JpdGVUcmFwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBc0I1RTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixNQUFxQixFQUNyQixVQUFvQyxFQUNwQyxPQUFlLEVBQ2YsS0FBa0M7SUFFbEMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sV0FBVztJQUVJO0lBQ0E7SUFDQTtJQUNBO0lBSm5CLFlBQ21CLE1BQXFCLEVBQ3JCLFVBQW9DLEVBQ3BDLE9BQWUsRUFDZixLQUFrQztRQUhsQyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLGVBQVUsR0FBVixVQUFVLENBQTBCO1FBQ3BDLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUE2QjtJQUNsRCxDQUFDO0lBRUosbUhBQW1IO0lBQ25ILE1BQU0sQ0FBQyxJQUF1QjtRQUM1QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBZ0IsQ0FBQyxDQUFDO0lBQ3RFLENB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Q0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogcmVhY3RpdmUvd3JpdGVUcmFwcyDigJQgd2hlcmUgYSBwcm94eSdzIHdyaXRlcyBMQU5ELCBhbmQgdGhlIHR3byB0cmFwcyB0aGF0XG4gKiBzZW5kIHRoZW0gdGhlcmUuXG4gKlxuICogRXZlcnkgb2JqZWN0IHByb3h5IGluIHRoaXMgZm9sZGVyIChuZXN0ZWQsIHRlcm1pbmFsLCBlbGVtZW50KSBpbnRlcmNlcHRzXG4gKiB0aGUgc2FtZSB0aHJlZSB0aGluZ3Mg4oCUIGEgcHJvcGVydHkgc2V0LCBhIHByb3BlcnR5IGRlbGV0ZSwgYW5kIGFuIGFycmF5XG4gKiBtdXRhdGlvbiBzb21ld2hlcmUgYmVsb3cgaXQg4oCUIGFuZCBkaWZmZXJzIG9ubHkgaW4gd2hlcmUgdGhlIHdyaXRlIGdvZXM6XG4gKiBhIG5lc3RlZC90ZXJtaW5hbCBwcm94eSBjb21taXRzIHVuZGVyIGEgVE9QLUxFVkVMIEtFWSAoYW4gb2JqZWN0IHdyaXRlIGFzXG4gKiBgbWVyZ2VgIG9mIGEgcGF0Y2gsIGFuIGFycmF5IHdyaXRlIG9yIGEgZGVsZXRlIGFzIGBzZXRgIG9mIHRoZSByZWJ1aWx0XG4gKiByb290KTsgYW4gZWxlbWVudCBwcm94eSBjb21taXRzIHRoZSBXSE9MRSBPV05JTkcgQVJSQVkgYmFjayB0aHJvdWdoIHRoZVxuICogYXJyYXkgcHJveHkncyBvd24gY2FsbGJhY2suIFRoYXQgZGlmZmVyZW5jZSBpcyBhIHtAbGluayBXcml0ZVNpbmt9OyB0aGVcbiAqIHRyYXBzIGFyZSB3cml0dGVuIG9uY2Ugb3ZlciBpdCAoOS4yMy4xIOKAlCB0aGUgOS4yMi4wIHN0YWxlLXJlYWQgYnVnIHdhc1xuICogZml4ZWQgaW4gb25lIGNvcHkgb2YgdGhlc2UgdHJhcHMgYW5kIHRoZW4gZm91bmQgYWdhaW4gaW4gdGhlIG90aGVyIHR3bykuXG4gKi9cblxuaW1wb3J0IHsgbmF0aXZlR2V0IH0gZnJvbSAnLi4vbWVtb3J5L3BhdGhPcHMuanMnO1xuaW1wb3J0IHR5cGUgeyBNZW1iZXJDYWNoZSB9IGZyb20gJy4vbGl2ZVZpZXcuanMnO1xuaW1wb3J0IHsgYnVpbGROZXN0ZWRQYXRjaCB9IGZyb20gJy4vcGF0aEJ1aWxkZXIuanMnO1xuaW1wb3J0IHsgZGVsZXRlSW5QYXRoLCBzZXRJblBhdGgsIHVud3JhcFByb3h5IH0gZnJvbSAnLi9zdHJ1Y3R1cmFsV3JpdGUuanMnO1xuXG4vKipcbiAqIFRoZSBzZWFtIGJldHdlZW4gYSBwcm94eSBhbmQgc3RhdGUuIGBwYXRoYCBpcyBtZWFzdXJlZCBmcm9tIHRoZSBzaW5rJ3NcbiAqIHJvb3Qg4oCUIHRoZSBrZXkncyB2YWx1ZSBmb3Ige0BsaW5rIHJvb3RLZXlTaW5rfSwgdGhlIGVsZW1lbnQgZm9yXG4gKiB7QGxpbmsgZWxlbWVudFNpbmt9OyBgW11gIGlzIHRoZSByb290IGl0c2VsZi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXcml0ZVNpbmsge1xuICAvKiogVGhlIHZhbHVlIGF0IGBwYXRoYCwgYXMgaXQgc3RhbmRzIE5PVyAocmVhZC15b3VyLXdyaXRlczsgbmV2ZXIgYSB0cmFja2VkIHJlYWQpLiAqL1xuICByZWFkQXQocGF0aDogcmVhZG9ubHkgc3RyaW5nW10pOiB1bmtub3duO1xuICAvKiogUHV0IGFuIGFscmVhZHktdW53cmFwcGVkIGB2YWx1ZWAgYXQgYHBhdGhgLiBUaGUgc2luayBjaG9vc2VzIHRoZSB2ZXJiLiAqL1xuICBwdXQocGF0aDogcmVhZG9ubHkgc3RyaW5nW10sIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgLyoqIFJlbW92ZSB0aGUga2V5IGF0IGBwYXRoYC4gKi9cbiAgcmVtb3ZlKHBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdKTogdm9pZDtcbn1cblxuLyoqIFRoZSB0d28gd2F5cyBhIHZhbHVlIHJlYWNoZXMgYSBzdGF0ZSBrZXk6IHdoYXQgdGhlIHNpbmsgd3JpdGVzIHRocm91Z2guICovXG5leHBvcnQgaW50ZXJmYWNlIFJvb3RLZXlUYXJnZXQge1xuICBzZXRWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICB1cGRhdGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkO1xufVxuXG4vKipcbiAqIFdIWTogYSB3cml0ZSBiZWxvdyBhIHRvcC1sZXZlbCBrZXkgaGFzIFRXTyB2ZXJicyAocmVhY3RpdmUvUkVBRE1FLm1kLCBsYXdcbiAqIDMpIOKAlCBhbiBvYmplY3QgbGVhZiBpcyBhIGBtZXJnZWAgb2YgYSBuZXN0ZWQgcGF0Y2gsIGFuIGFycmF5IGxlYWYgb3IgYVxuICogZGVsZXRlIHJlYnVpbGRzIHRoZSByb290IGltbXV0YWJseSBhbmQgY29tbWl0cyBhIGBzZXRgIG9mIHRoZSBrZXkuIE9ubHkgdGhlXG4gKiBzaW5rIGtub3dzIHRoYXQ7IHRoZSB0cmFwcyBkbyBub3QuIEV2ZXJ5IHdyaXRlIGRyb3BzIHRoZSBrZXkncyBjYWNoZWQgY2hpbGRcbiAqIHByb3h5IChgY2FjaGVgKSwgc28gdGhlIG5leHQgcmVhZCBpcyBidWlsdCBvdmVyIHRoZSBuZXcgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb290S2V5U2luayhcbiAgdGFyZ2V0OiBSb290S2V5VGFyZ2V0LFxuICByZWFkU2lsZW50OiAoa2V5OiBzdHJpbmcpID0+IHVua25vd24sXG4gIHJvb3RLZXk6IHN0cmluZyxcbiAgY2FjaGU6IFBpY2s8TWVtYmVyQ2FjaGUsICdkZWxldGUnPixcbik6IFdyaXRlU2luayB7XG4gIHJldHVybiBuZXcgUm9vdEtleVNpbmsodGFyZ2V0LCByZWFkU2lsZW50LCByb290S2V5LCBjYWNoZSk7XG59XG5cbi8qKiBPbmUgYWxsb2NhdGlvbiBwZXIgdG9wLWxldmVsIHJlYWQgbWlzcyAodGhlIG1ldGhvZHMgbGl2ZSBvbiB0aGUgcHJvdG90eXBlKS4gKi9cbmNsYXNzIFJvb3RLZXlTaW5rIGltcGxlbWVudHMgV3JpdGVTaW5rIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXQ6IFJvb3RLZXlUYXJnZXQsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWFkU2lsZW50OiAoa2V5OiBzdHJpbmcpID0+IHVua25vd24sXG4gICAgcHJpdmF0ZSByZWFkb25seSByb290S2V5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWNoZTogUGljazxNZW1iZXJDYWNoZSwgJ2RlbGV0ZSc+LFxuICApIHt9XG5cbiAgLyoqIEFuIGVtcHR5IHBhdGggaXMgdGhlIGtleSdzIG93biB2YWx1ZSDigJQgYG5hdGl2ZUdldCh2LCBbXSlgIHdvdWxkIHJldHVybiBpdCB1bmNoYW5nZWQsIHNvIHRoZSB3YWxrIGlzIHNraXBwZWQuICovXG4gIHJlYWRBdChwYXRoOiByZWFkb25seSBzdHJpbmdbXSk6IHVua25vd24ge1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLnJlYWRTaWxlbnQodGhpcy5yb290S2V5KTtcbiAgICByZXR1cm4gcGF0aC5sZW5ndGggPT09IDAgPyByb290IDogbmF0aXZlR2V0KHJvb3QsIHBhdGggYXMgc3RyaW5nW10pO1xuICB9XG5cbiAgcHV0KHBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHRoaXMudGFyZ2V0LnVwZGF0ZVZhbHVlKHRoaXMucm9vdEtleSwgYnVpbGROZXN0ZWRQYXRjaChwYXRoIGFzIHN0cmluZ1tdLCB2YWx1ZSkpO1xuICAgIGVsc2UgdGhpcy50YXJnZXQuc2V0VmFsdWUodGhpcy5yb290S2V5LCBwYXRoLmxlbmd0aCA9PT0gMCA/IHZhbHVlIDogc2V0SW5QYXRoKHRoaXMucmVhZEF0KFtdKSwgcGF0aCwgdmFsdWUpKTtcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZSh0aGlzLnJvb3RLZXkpO1xuICB9XG5cbiAgcmVtb3ZlKHBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy50YXJnZXQuc2V0VmFsdWUodGhpcy5yb290S2V5LCBkZWxldGVJblBhdGgodGhpcy5yZWFkQXQoW10pLCBwYXRoKSk7XG4gICAgdGhpcy5jYWNoZS5kZWxldGUodGhpcy5yb290S2V5KTtcbiAgfVxufVxuXG4vKipcbiAqIFdIWTogYSB3cml0ZSBpbnNpZGUgYW4gYXJyYXkgZWxlbWVudCBpcyBhbiBhcnJheSB3cml0ZSDigJQgaXQgcmVidWlsZHMgdGhlXG4gKiBvd25pbmcgYXJyYXkgaW1tdXRhYmx5IGFuZCBoYW5kcyB0aGUgV0hPTEUgbmV3IGFycmF5IHRvIHRoZSBhcnJheSBwcm94eSdzXG4gKiBjb21taXQsIHRoZSBmdW5uZWwgYHB1c2hgIGFscmVhZHkgdXNlcy4gYHBhdGhgIGlzIG1lYXN1cmVkIGZyb20gdGhlXG4gKiBlbGVtZW50OyBgW11gIGlzIHRoZSBlbGVtZW50IHNsb3QgaXRzZWxmLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZWxlbWVudFNpbmsoZ2V0Q3VycmVudDogKCkgPT4gdW5rbm93bltdLCBjb21taXQ6IChuZXh0OiB1bmtub3duW10pID0+IHZvaWQsIGluZGV4OiBudW1iZXIpOiBXcml0ZVNpbmsge1xuICByZXR1cm4gbmV3IEVsZW1lbnRTaW5rKGdldEN1cnJlbnQsIGNvbW1pdCwgaW5kZXgpO1xufVxuXG4vKiogT25lIGFsbG9jYXRpb24gcGVyIGVsZW1lbnQgcHJveHkgKHRoZSBtZXRob2RzIGxpdmUgb24gdGhlIHByb3RvdHlwZSkg4oCUIGEgMTBrLWVsZW1lbnQgbG9vcCBidWlsZHMgMTBrIG9mIHRoZXNlLiAqL1xuY2xhc3MgRWxlbWVudFNpbmsgaW1wbGVtZW50cyBXcml0ZVNpbmsge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdldEN1cnJlbnQ6ICgpID0+IHVua25vd25bXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1pdDogKG5leHQ6IHVua25vd25bXSkgPT4gdm9pZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluZGV4OiBudW1iZXIsXG4gICkge31cblxuICByZWFkQXQocGF0aDogcmVhZG9ubHkgc3RyaW5nW10pOiB1bmtub3duIHtcbiAgICByZXR1cm4gcmVhZEluRWxlbWVudCh0aGlzLmdldEN1cnJlbnQsIHRoaXMuaW5kZXgsIHBhdGgpO1xuICB9XG5cbiAgcHV0KHBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIHJlcGxhY2VJbkVsZW1lbnQodGhpcy5nZXRDdXJyZW50LCB0aGlzLmNvbW1pdCwgdGhpcy5pbmRleCwgcGF0aCwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlKHBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgcmVtb3ZlSW5FbGVtZW50KHRoaXMuZ2V0Q3VycmVudCwgdGhpcy5jb21taXQsIHRoaXMuaW5kZXgsIHBhdGgpO1xuICB9XG59XG5cbi8qKiBUaGUgdmFsdWUgYXQgYHBhdGhgIGluc2lkZSBlbGVtZW50IGBpbmRleGAsIGFzIGl0IHN0YW5kcyBOT1cgKHJlYWQteW91ci13cml0ZXMpLiAqL1xuZnVuY3Rpb24gcmVhZEluRWxlbWVudChnZXRDdXJyZW50OiAoKSA9PiB1bmtub3duW10sIGluZGV4OiBudW1iZXIsIHBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdKTogdW5rbm93biB7XG4gIGNvbnN0IGVsZW1lbnQgPSBnZXRDdXJyZW50KClbaW5kZXhdO1xuICByZXR1cm4gcGF0aC5sZW5ndGggPT09IDAgPyBlbGVtZW50IDogbmF0aXZlR2V0KGVsZW1lbnQsIHBhdGggYXMgc3RyaW5nW10pO1xufVxuXG4vKiogQSBjb3B5IG9mIHRoZSBhcnJheSB3aXRoIGB2YWx1ZWAgYXQgYHBhdGhgIGluc2lkZSBlbGVtZW50IGBpbmRleGA7IGEgZ29uZSBlbGVtZW50IGhhcyBub3RoaW5nIHRvIHdyaXRlIGludG8uICovXG5mdW5jdGlvbiByZXBsYWNlSW5FbGVtZW50KFxuICBnZXRDdXJyZW50OiAoKSA9PiB1bmtub3duW10sXG4gIGNvbW1pdDogKG5leHQ6IHVua25vd25bXSkgPT4gdm9pZCxcbiAgaW5kZXg6IG51bWJlcixcbiAgcGF0aDogcmVhZG9ubHkgc3RyaW5nW10sXG4gIHZhbHVlOiB1bmtub3duLFxuKTogdm9pZCB7XG4gIGNvbnN0IG5leHQgPSBbLi4uZ2V0Q3VycmVudCgpXTtcbiAgaWYgKGluZGV4ID49IG5leHQubGVuZ3RoKSByZXR1cm47XG4gIG5leHRbaW5kZXhdID0gcGF0aC5sZW5ndGggPT09IDAgPyB2YWx1ZSA6IHNldEluUGF0aChuZXh0W2luZGV4XSwgcGF0aCwgdmFsdWUpO1xuICBjb21taXQobmV4dCk7XG59XG5cbi8qKiBBIGNvcHkgb2YgdGhlIGFycmF5IHdpdGggdGhlIGtleSBhdCBgcGF0aGAgaW5zaWRlIGVsZW1lbnQgYGluZGV4YCByZW1vdmVkLiAqL1xuZnVuY3Rpb24gcmVtb3ZlSW5FbGVtZW50KFxuICBnZXRDdXJyZW50OiAoKSA9PiB1bmtub3duW10sXG4gIGNvbW1pdDogKG5leHQ6IHVua25vd25bXSkgPT4gdm9pZCxcbiAgaW5kZXg6IG51bWJlcixcbiAgcGF0aDogcmVhZG9ubHkgc3RyaW5nW10sXG4pOiB2b2lkIHtcbiAgY29uc3QgbmV4dCA9IFsuLi5nZXRDdXJyZW50KCldO1xuICBpZiAoaW5kZXggPj0gbmV4dC5sZW5ndGgpIHJldHVybjtcbiAgbmV4dFtpbmRleF0gPSBkZWxldGVJblBhdGgobmV4dFtpbmRleF0sIHBhdGgpO1xuICBjb21taXQobmV4dCk7XG59XG5cbi8qKlxuICogV0hZIG9uZSBzZXQgdHJhcDogdGhlIGFzc2lnbmVkIHZhbHVlIGlzIHVud3JhcHBlZCBIRVJFIChsYW5kbWluZSAxIOKAlCB0aGVcbiAqIEpTT04gcm91bmQtdHJpcCBhcHBsaWVzIHRvIHdoYXQgdGhlIGNhbGxlciBoYW5kZWQgaW4sIG5ldmVyIHRvIHRoZVxuICogc3Vycm91bmRpbmcgc3RhdGUpIGFuZCBoYW5kZWQgdG8gdGhlIHNpbmsgYXQgdGhlIHByb3h5J3MgcGF0aCBwbHVzIHRoZSBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaW5rU2V0VHJhcChzaW5rOiBXcml0ZVNpbmssIHNlZ21lbnRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb3h5SGFuZGxlcjxvYmplY3Q+WydzZXQnXSB7XG4gIHJldHVybiAoX3RhcmdldCwgcHJvcCwgdmFsdWUpID0+IHtcbiAgICBpZiAodHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSByZXR1cm4gdHJ1ZTtcbiAgICBzaW5rLnB1dChbLi4uc2VnbWVudHMsIHByb3BdLCB1bndyYXBQcm94eSh2YWx1ZSkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xufVxuXG4vKipcbiAqIFdIWSBvbmUgZGVsZXRlIHRyYXA6IGBtZXJnZWAgY2Fubm90IGV4cHJlc3MgYSByZW1vdmFsIChhIHBhdGNoIG9mXG4gKiBgdW5kZWZpbmVkYCByZWFkcyBhcyBhYnNlbnQpLCBzbyBhIGRlbGV0ZSBhbHdheXMgcmVidWlsZHMgdGhyb3VnaCB0aGUgc2luay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpbmtEZWxldGVUcmFwKHNpbms6IFdyaXRlU2luaywgc2VnbWVudHM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJveHlIYW5kbGVyPG9iamVjdD5bJ2RlbGV0ZVByb3BlcnR5J10ge1xuICByZXR1cm4gKF90YXJnZXQsIHByb3ApID0+IHtcbiAgICBpZiAodHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSByZXR1cm4gdHJ1ZTtcbiAgICBzaW5rLnJlbW92ZShbLi4uc2VnbWVudHMsIHByb3BdKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn1cbiJdfQ==
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVUcmFwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcmVhY3RpdmUvd3JpdGVUcmFwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQXNCL0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsTUFBcUIsRUFDckIsVUFBb0MsRUFDcEMsT0FBZSxFQUNmLEtBQWtDO0lBRWxDLE9BQU8sSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixNQUFNLFdBQVc7SUFFSTtJQUNBO0lBQ0E7SUFDQTtJQUpuQixZQUNtQixNQUFxQixFQUNyQixVQUFvQyxFQUNwQyxPQUFlLEVBQ2YsS0FBa0M7UUFIbEMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUEwQjtRQUNwQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBNkI7SUFDbEQsQ0FBQztJQUVKLG1IQUFtSDtJQUNuSCxNQUFNLENBQUMsSUFBdUI7UUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFB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O1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiByZWFjdGl2ZS93cml0ZVRyYXBzIOKAlCB3aGVyZSBhIHByb3h5J3Mgd3JpdGVzIExBTkQsIGFuZCB0aGUgdHdvIHRyYXBzIHRoYXRcbiAqIHNlbmQgdGhlbSB0aGVyZS5cbiAqXG4gKiBFdmVyeSBvYmplY3QgcHJveHkgaW4gdGhpcyBmb2xkZXIgKG5lc3RlZCwgdGVybWluYWwsIGVsZW1lbnQpIGludGVyY2VwdHNcbiAqIHRoZSBzYW1lIHRocmVlIHRoaW5ncyDigJQgYSBwcm9wZXJ0eSBzZXQsIGEgcHJvcGVydHkgZGVsZXRlLCBhbmQgYW4gYXJyYXlcbiAqIG11dGF0aW9uIHNvbWV3aGVyZSBiZWxvdyBpdCDigJQgYW5kIGRpZmZlcnMgb25seSBpbiB3aGVyZSB0aGUgd3JpdGUgZ29lczpcbiAqIGEgbmVzdGVkL3Rlcm1pbmFsIHByb3h5IGNvbW1pdHMgdW5kZXIgYSBUT1AtTEVWRUwgS0VZIChhbiBvYmplY3Qgd3JpdGUgYXNcbiAqIGBtZXJnZWAgb2YgYSBwYXRjaCwgYW4gYXJyYXkgd3JpdGUgb3IgYSBkZWxldGUgYXMgYHNldGAgb2YgdGhlIHJlYnVpbHRcbiAqIHJvb3QpOyBhbiBlbGVtZW50IHByb3h5IGNvbW1pdHMgdGhlIFdIT0xFIE9XTklORyBBUlJBWSBiYWNrIHRocm91Z2ggdGhlXG4gKiBhcnJheSBwcm94eSdzIG93biBjYWxsYmFjay4gVGhhdCBkaWZmZXJlbmNlIGlzIGEge0BsaW5rIFdyaXRlU2lua307IHRoZVxuICogdHJhcHMgYXJlIHdyaXR0ZW4gb25jZSBvdmVyIGl0ICg5LjIzLjEg4oCUIHRoZSA5LjIyLjAgc3RhbGUtcmVhZCBidWcgd2FzXG4gKiBmaXhlZCBpbiBvbmUgY29weSBvZiB0aGVzZSB0cmFwcyBhbmQgdGhlbiBmb3VuZCBhZ2FpbiBpbiB0aGUgb3RoZXIgdHdvKS5cbiAqL1xuXG5pbXBvcnQgeyBuYXRpdmVHZXQgfSBmcm9tICcuLi9tZW1vcnkvcGF0aE9wcy5qcyc7XG5pbXBvcnQgeyB1bndyYXBIYW5kbGVzIH0gZnJvbSAnLi9oYW5kbGVzLmpzJztcbmltcG9ydCB0eXBlIHsgTWVtYmVyQ2FjaGUgfSBmcm9tICcuL2xpdmVWaWV3LmpzJztcbmltcG9ydCB7IGJ1aWxkTmVzdGVkUGF0Y2ggfSBmcm9tICcuL3BhdGhCdWlsZGVyLmpzJztcbmltcG9ydCB7IGRlbGV0ZUluUGF0aCwgc2V0SW5QYXRoIH0gZnJvbSAnLi9zdHJ1Y3R1cmFsV3JpdGUuanMnO1xuXG4vKipcbiAqIFRoZSBzZWFtIGJldHdlZW4gYSBwcm94eSBhbmQgc3RhdGUuIGBwYXRoYCBpcyBtZWFzdXJlZCBmcm9tIHRoZSBzaW5rJ3NcbiAqIHJvb3Qg4oCUIHRoZSBrZXkncyB2YWx1ZSBmb3Ige0BsaW5rIHJvb3RLZXlTaW5rfSwgdGhlIGVsZW1lbnQgZm9yXG4gKiB7QGxpbmsgZWxlbWVudFNpbmt9OyBgW11gIGlzIHRoZSByb290IGl0c2VsZi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXcml0ZVNpbmsge1xuICAvKiogVGhlIHZhbHVlIGF0IGBwYXRoYCwgYXMgaXQgc3RhbmRzIE5PVyAocmVhZC15b3VyLXdyaXRlczsgbmV2ZXIgYSB0cmFja2VkIHJlYWQpLiAqL1xuICByZWFkQXQocGF0aDogcmVhZG9ubHkgc3RyaW5nW10pOiB1bmtub3duO1xuICAvKiogUHV0IGFuIGFscmVhZHktdW53cmFwcGVkIGB2YWx1ZWAgYXQgYHBhdGhgLiBUaGUgc2luayBjaG9vc2VzIHRoZSB2ZXJiLiAqL1xuICBwdXQocGF0aDogcmVhZG9ubHkgc3RyaW5nW10sIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgLyoqIFJlbW92ZSB0aGUga2V5IGF0IGBwYXRoYC4gKi9cbiAgcmVtb3ZlKHBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdKTogdm9pZDtcbn1cblxuLyoqIFRoZSB0d28gd2F5cyBhIHZhbHVlIHJlYWNoZXMgYSBzdGF0ZSBrZXk6IHdoYXQgdGhlIHNpbmsgd3JpdGVzIHRocm91Z2guICovXG5leHBvcnQgaW50ZXJmYWNlIFJvb3RLZXlUYXJnZXQge1xuICBzZXRWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkO1xuICB1cGRhdGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkO1xufVxuXG4vKipcbiAqIFdIWTogYSB3cml0ZSBiZWxvdyBhIHRvcC1sZXZlbCBrZXkgaGFzIFRXTyB2ZXJicyAocmVhY3RpdmUvUkVBRE1FLm1kLCBsYXdcbiAqIDMpIOKAlCBhbiBvYmplY3QgbGVhZiBpcyBhIGBtZXJnZWAgb2YgYSBuZXN0ZWQgcGF0Y2gsIGFuIGFycmF5IGxlYWYgb3IgYVxuICogZGVsZXRlIHJlYnVpbGRzIHRoZSByb290IGltbXV0YWJseSBhbmQgY29tbWl0cyBhIGBzZXRgIG9mIHRoZSBrZXkuIE9ubHkgdGhlXG4gKiBzaW5rIGtub3dzIHRoYXQ7IHRoZSB0cmFwcyBkbyBub3QuIEV2ZXJ5IHdyaXRlIGRyb3BzIHRoZSBrZXkncyBjYWNoZWQgY2hpbGRcbiAqIHByb3h5IChgY2FjaGVgKSwgc28gdGhlIG5leHQgcmVhZCBpcyBidWlsdCBvdmVyIHRoZSBuZXcgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb290S2V5U2luayhcbiAgdGFyZ2V0OiBSb290S2V5VGFyZ2V0LFxuICByZWFkU2lsZW50OiAoa2V5OiBzdHJpbmcpID0+IHVua25vd24sXG4gIHJvb3RLZXk6IHN0cmluZyxcbiAgY2FjaGU6IFBpY2s8TWVtYmVyQ2FjaGUsICdkZWxldGUnPixcbik6IFdyaXRlU2luayB7XG4gIHJldHVybiBuZXcgUm9vdEtleVNpbmsodGFyZ2V0LCByZWFkU2lsZW50LCByb290S2V5LCBjYWNoZSk7XG59XG5cbi8qKiBPbmUgYWxsb2NhdGlvbiBwZXIgdG9wLWxldmVsIHJlYWQgbWlzcyAodGhlIG1ldGhvZHMgbGl2ZSBvbiB0aGUgcHJvdG90eXBlKS4gKi9cbmNsYXNzIFJvb3RLZXlTaW5rIGltcGxlbWVudHMgV3JpdGVTaW5rIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXQ6IFJvb3RLZXlUYXJnZXQsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWFkU2lsZW50OiAoa2V5OiBzdHJpbmcpID0+IHVua25vd24sXG4gICAgcHJpdmF0ZSByZWFkb25seSByb290S2V5OiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWNoZTogUGljazxNZW1iZXJDYWNoZSwgJ2RlbGV0ZSc+LFxuICApIHt9XG5cbiAgLyoqIEFuIGVtcHR5IHBhdGggaXMgdGhlIGtleSdzIG93biB2YWx1ZSDigJQgYG5hdGl2ZUdldCh2LCBbXSlgIHdvdWxkIHJldHVybiBpdCB1bmNoYW5nZWQsIHNvIHRoZSB3YWxrIGlzIHNraXBwZWQuICovXG4gIHJlYWRBdChwYXRoOiByZWFkb25seSBzdHJpbmdbXSk6IHVua25vd24ge1xuICAgIGNvbnN0IHJvb3QgPSB0aGlzLnJlYWRTaWxlbnQodGhpcy5yb290S2V5KTtcbiAgICByZXR1cm4gcGF0aC5sZW5ndGggPT09IDAgPyByb290IDogbmF0aXZlR2V0KHJvb3QsIHBhdGggYXMgc3RyaW5nW10pO1xuICB9XG5cbiAgcHV0KHBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHRoaXMudGFyZ2V0LnVwZGF0ZVZhbHVlKHRoaXMucm9vdEtleSwgYnVpbGROZXN0ZWRQYXRjaChwYXRoIGFzIHN0cmluZ1tdLCB2YWx1ZSkpO1xuICAgIGVsc2UgdGhpcy50YXJnZXQuc2V0VmFsdWUodGhpcy5yb290S2V5LCBwYXRoLmxlbmd0aCA9PT0gMCA/IHZhbHVlIDogc2V0SW5QYXRoKHRoaXMucmVhZEF0KFtdKSwgcGF0aCwgdmFsdWUpKTtcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZSh0aGlzLnJvb3RLZXkpO1xuICB9XG5cbiAgcmVtb3ZlKHBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy50YXJnZXQuc2V0VmFsdWUodGhpcy5yb290S2V5LCBkZWxldGVJblBhdGgodGhpcy5yZWFkQXQoW10pLCBwYXRoKSk7XG4gICAgdGhpcy5jYWNoZS5kZWxldGUodGhpcy5yb290S2V5KTtcbiAgfVxufVxuXG4vKipcbiAqIFdIWTogYSB3cml0ZSBpbnNpZGUgYW4gYXJyYXkgZWxlbWVudCBpcyBhbiBhcnJheSB3cml0ZSDigJQgaXQgcmVidWlsZHMgdGhlXG4gKiBvd25pbmcgYXJyYXkgaW1tdXRhYmx5IGFuZCBoYW5kcyB0aGUgV0hPTEUgbmV3IGFycmF5IHRvIHRoZSBhcnJheSBwcm94eSdzXG4gKiBjb21taXQsIHRoZSBmdW5uZWwgYHB1c2hgIGFscmVhZHkgdXNlcy4gYHBhdGhgIGlzIG1lYXN1cmVkIGZyb20gdGhlXG4gKiBlbGVtZW50OyBgW11gIGlzIHRoZSBlbGVtZW50IHNsb3QgaXRzZWxmLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZWxlbWVudFNpbmsoZ2V0Q3VycmVudDogKCkgPT4gdW5rbm93bltdLCBjb21taXQ6IChuZXh0OiB1bmtub3duW10pID0+IHZvaWQsIGluZGV4OiBudW1iZXIpOiBXcml0ZVNpbmsge1xuICByZXR1cm4gbmV3IEVsZW1lbnRTaW5rKGdldEN1cnJlbnQsIGNvbW1pdCwgaW5kZXgpO1xufVxuXG4vKiogT25lIGFsbG9jYXRpb24gcGVyIGVsZW1lbnQgcHJveHkgKHRoZSBtZXRob2RzIGxpdmUgb24gdGhlIHByb3RvdHlwZSkg4oCUIGEgMTBrLWVsZW1lbnQgbG9vcCBidWlsZHMgMTBrIG9mIHRoZXNlLiAqL1xuY2xhc3MgRWxlbWVudFNpbmsgaW1wbGVtZW50cyBXcml0ZVNpbmsge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdldEN1cnJlbnQ6ICgpID0+IHVua25vd25bXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1pdDogKG5leHQ6IHVua25vd25bXSkgPT4gdm9pZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluZGV4OiBudW1iZXIsXG4gICkge31cblxuICByZWFkQXQocGF0aDogcmVhZG9ubHkgc3RyaW5nW10pOiB1bmtub3duIHtcbiAgICByZXR1cm4gcmVhZEluRWxlbWVudCh0aGlzLmdldEN1cnJlbnQsIHRoaXMuaW5kZXgsIHBhdGgpO1xuICB9XG5cbiAgcHV0KHBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIHJlcGxhY2VJbkVsZW1lbnQodGhpcy5nZXRDdXJyZW50LCB0aGlzLmNvbW1pdCwgdGhpcy5pbmRleCwgcGF0aCwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlKHBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgcmVtb3ZlSW5FbGVtZW50KHRoaXMuZ2V0Q3VycmVudCwgdGhpcy5jb21taXQsIHRoaXMuaW5kZXgsIHBhdGgpO1xuICB9XG59XG5cbi8qKiBUaGUgdmFsdWUgYXQgYHBhdGhgIGluc2lkZSBlbGVtZW50IGBpbmRleGAsIGFzIGl0IHN0YW5kcyBOT1cgKHJlYWQteW91ci13cml0ZXMpLiAqL1xuZnVuY3Rpb24gcmVhZEluRWxlbWVudChnZXRDdXJyZW50OiAoKSA9PiB1bmtub3duW10sIGluZGV4OiBudW1iZXIsIHBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdKTogdW5rbm93biB7XG4gIGNvbnN0IGVsZW1lbnQgPSBnZXRDdXJyZW50KClbaW5kZXhdO1xuICByZXR1cm4gcGF0aC5sZW5ndGggPT09IDAgPyBlbGVtZW50IDogbmF0aXZlR2V0KGVsZW1lbnQsIHBhdGggYXMgc3RyaW5nW10pO1xufVxuXG4vKiogQSBjb3B5IG9mIHRoZSBhcnJheSB3aXRoIGB2YWx1ZWAgYXQgYHBhdGhgIGluc2lkZSBlbGVtZW50IGBpbmRleGA7IGEgZ29uZSBlbGVtZW50IGhhcyBub3RoaW5nIHRvIHdyaXRlIGludG8uICovXG5mdW5jdGlvbiByZXBsYWNlSW5FbGVtZW50KFxuICBnZXRDdXJyZW50OiAoKSA9PiB1bmtub3duW10sXG4gIGNvbW1pdDogKG5leHQ6IHVua25vd25bXSkgPT4gdm9pZCxcbiAgaW5kZXg6IG51bWJlcixcbiAgcGF0aDogcmVhZG9ubHkgc3RyaW5nW10sXG4gIHZhbHVlOiB1bmtub3duLFxuKTogdm9pZCB7XG4gIGNvbnN0IG5leHQgPSBbLi4uZ2V0Q3VycmVudCgpXTtcbiAgaWYgKGluZGV4ID49IG5leHQubGVuZ3RoKSByZXR1cm47XG4gIG5leHRbaW5kZXhdID0gcGF0aC5sZW5ndGggPT09IDAgPyB2YWx1ZSA6IHNldEluUGF0aChuZXh0W2luZGV4XSwgcGF0aCwgdmFsdWUpO1xuICBjb21taXQobmV4dCk7XG59XG5cbi8qKiBBIGNvcHkgb2YgdGhlIGFycmF5IHdpdGggdGhlIGtleSBhdCBgcGF0aGAgaW5zaWRlIGVsZW1lbnQgYGluZGV4YCByZW1vdmVkLiAqL1xuZnVuY3Rpb24gcmVtb3ZlSW5FbGVtZW50KFxuICBnZXRDdXJyZW50OiAoKSA9PiB1bmtub3duW10sXG4gIGNvbW1pdDogKG5leHQ6IHVua25vd25bXSkgPT4gdm9pZCxcbiAgaW5kZXg6IG51bWJlcixcbiAgcGF0aDogcmVhZG9ubHkgc3RyaW5nW10sXG4pOiB2b2lkIHtcbiAgY29uc3QgbmV4dCA9IFsuLi5nZXRDdXJyZW50KCldO1xuICBpZiAoaW5kZXggPj0gbmV4dC5sZW5ndGgpIHJldHVybjtcbiAgbmV4dFtpbmRleF0gPSBkZWxldGVJblBhdGgobmV4dFtpbmRleF0sIHBhdGgpO1xuICBjb21taXQobmV4dCk7XG59XG5cbi8qKlxuICogV0hZIG9uZSBzZXQgdHJhcDogdGhlIGFzc2lnbmVkIHZhbHVlIGlzIHRha2VuIGFzIGEgVkFMVUUgaGVyZSAoYSBoYW5kbGVcbiAqIGJlY29tZXMgd2hhdCBpdCBzdGFuZHMgZm9yLCBgaGFuZGxlcy50c2A7IG5vdGhpbmcgZWxzZSBpcyBjb3BpZWQg4oCUIHRoZVxuICogYnVmZmVyIGRldGFjaGVzIGF0IGNvbW1pdCkgYW5kIGhhbmRlZCB0byB0aGUgc2luayBhdCB0aGUgcHJveHkncyBwYXRoIHBsdXNcbiAqIHRoZSBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaW5rU2V0VHJhcChzaW5rOiBXcml0ZVNpbmssIHNlZ21lbnRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb3h5SGFuZGxlcjxvYmplY3Q+WydzZXQnXSB7XG4gIHJldHVybiAoX3RhcmdldCwgcHJvcCwgdmFsdWUpID0+IHtcbiAgICBpZiAodHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSByZXR1cm4gdHJ1ZTtcbiAgICBzaW5rLnB1dChbLi4uc2VnbWVudHMsIHByb3BdLCB1bndyYXBIYW5kbGVzKHZhbHVlKSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG59XG5cbi8qKlxuICogV0hZIG9uZSBkZWxldGUgdHJhcDogYG1lcmdlYCBjYW5ub3QgZXhwcmVzcyBhIHJlbW92YWwgKGEgcGF0Y2ggb2ZcbiAqIGB1bmRlZmluZWRgIHJlYWRzIGFzIGFic2VudCksIHNvIGEgZGVsZXRlIGFsd2F5cyByZWJ1aWxkcyB0aHJvdWdoIHRoZSBzaW5rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lua0RlbGV0ZVRyYXAoc2luazogV3JpdGVTaW5rLCBzZWdtZW50czogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm94eUhhbmRsZXI8b2JqZWN0PlsnZGVsZXRlUHJvcGVydHknXSB7XG4gIHJldHVybiAoX3RhcmdldCwgcHJvcCkgPT4ge1xuICAgIGlmICh0eXBlb2YgcHJvcCAhPT0gJ3N0cmluZycpIHJldHVybiB0cnVlO1xuICAgIHNpbmsucmVtb3ZlKFsuLi5zZWdtZW50cywgcHJvcF0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xufVxuIl19
|
package/dist/index.js
CHANGED
|
@@ -125,4 +125,4 @@ Object.defineProperty(exports, "isDevMode", { enumerable: true, get: function ()
|
|
|
125
125
|
// `defineScopeFromZod` and the other zod-based scope helpers moved to the opt-in
|
|
126
126
|
// `footprintjs/zod` entry — keeping zod out of the core load path (it is an
|
|
127
127
|
// optional peer). Import them from 'footprintjs/zod'.
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHOzs7QUFTSCw0QkFBNEI7QUFDNUIsbURBQXdGO0FBQS9FLHFHQUFBLFNBQVMsT0FBQTtBQUFFLDRHQUFBLGdCQUFnQixPQUFBO0FBQUUsNkdBQUEsaUJBQWlCLE9BQUE7QUE0QnZELDRCQUE0QjtBQUM1QiwrQ0FBMkM7QUFBbEMseUdBQUEsU0FBUyxPQUFBO0FBb0JsQixtQ0FBbUM7QUFDbkMsa0RBQXVEO0FBQTlDLGtHQUFBLE1BQU0sT0FBQTtBQUFFLGtHQUFBLE1BQU0sT0FBQTtBQVl2QixvQkFBb0I7QUFDcEIsa0RBQTBEO0FBQWpELDZHQUFBLGlCQUFpQixPQUFBO0FBRTFCLG9CQUFvQjtBQUNwQixrREFBbUQ7QUFBMUMsc0dBQUEsVUFBVSxPQUFBO0FBcUJuQiwrQkFBK0I7QUFDL0IsaURBQXNEO0FBQTdDLDBHQUFBLGNBQWMsT0FBQTtBQUV2QiwrQkFBK0I7QUFDL0IsaURBQXFEO0FBQTVDLHlHQUFBLGFBQWEsT0FBQTtBQUV0QixvQ0FBb0M7QUFDcEMsb0RBQTREO0FBQW5ELDZHQUFBLGlCQUFpQixPQUFBO0FBbUMxQixxRUFBcUU7QUFDckUsb0RBS2lDO0FBSi9CLGtIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLGtIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLHVHQUFBLFdBQVcsT0FBQTtBQWtEYiwrQkFBK0I7QUFDL0Isa0RBQThEO0FBQXJELGlIQUFBLHFCQUFxQixPQUFBO0FBSzlCLCtCQUErQjtBQUMvQixtREFBNkQ7QUFBcEQsaUhBQUEsb0JBQW9CLE9BQUE7QUFFN0IsK0JBQStCO0FBQy9CLG1EQUFzRTtBQUE3RCwwSEFBQSw2QkFBNkIsT0FBQTtBQUV0QywrQkFBK0I7QUFDL0IsbURBQXVFO0FBQTlELDJIQUFBLDhCQUE4QixPQUFBO0FBRXZDLCtCQUErQjtBQUMvQixtREFBeUU7QUFBaEUsNkhBQUEsZ0NBQWdDLE9BQUE7QUFFekMsK0JBQStCO0FBQy9CLG1EQUFpRTtBQUF4RCxxSEFBQSx3QkFBd0IsT0FBQTtBQUVqQywrQkFBK0I7QUFDL0IsbURBQXNFO0FBQTdELDBIQUFBLDZCQUE2QixPQUFBO0FBRXRDLCtCQUErQjtBQUMvQixtREFBb0U7QUFBM0Qsd0hBQUEsMkJBQTJCLE9BQUE7QUFFcEMsK0JBQStCO0FBQy9CLG1EQUFzRTtBQUE3RCwwSEFBQSw2QkFBNkIsT0FBQTtBQXlCdEMsdUNBQXVDO0FBQ3ZDLG1EQUE2RTtBQUFwRSwrR0FBQSxrQkFBa0IsT0FBQTtBQUFFLDZHQUFBLGdCQUFnQixPQUFBO0FBRTdDLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBRS9FLDhCQUE4QjtBQUM5QixxREFBNEQ7QUFBbkQsOEdBQUEsaUJBQWlCLE9BQUE7QUFvQjFCLDZCQUE2QjtBQUM3QixrREFBaUQ7QUFBeEMsc0dBQUEsU0FBUyxPQUFBO0FBaUVsQixzQ0FBc0M7QUFDdEMsbURBQTJFO0FBQWxFLHlHQUFBLFlBQVksT0FBQTtBQUFFLDBHQUFBLGFBQWEsT0FBQTtBQUFFLGtHQUFBLEtBQUssT0FBQTtBQUUzQyxzQ0FBc0M7QUFDdEMsbURBQXFHO0FBQTVGLGlIQUFBLG9CQUFvQixPQUFBO0FBQUUsa0hBQUEscUJBQXFCLE9BQUE7QUFBRSw0R0FBQSxlQUFlLE9BQUE7QUFTckUsZ0NBQWdDO0FBQ2hDLG1EQUEwRTtBQUFqRSw2R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLDRHQUFBLGVBQWUsT0FBQTtBQUUxQywrRUFBK0U7QUFDL0UsaURBQWlEO0FBQ2pELCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILG1FQUF5RjtBQUFoRixtSEFBQSxjQUFjLE9BQUE7QUFBRSxrSEFBQSxhQUFhLE9BQUE7QUFBRSw4R0FBQSxTQUFTLE9BQUE7QUFFakQsaUZBQWlGO0FBQ2pGLDRFQUE0RTtBQUM1RSxzREFBc0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvb3RQcmludCDigJQgUHVibGljIEFQSSAodjMpXG4gKlxuICogVGhlIGZsb3djaGFydCBwYXR0ZXJuIGZvciBiYWNrZW5kIGNvZGUuXG4gKiBCdWlsZCDihpIgUnVuIOKGkiBPYnNlcnZlLlxuICpcbiAqICoqVGhyZWUgaW1wb3J0IHBhdGhzOioqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZmxvd0NoYXJ0LCBkZWNpZGUsIG5hcnJhdGl2ZSB9IGZyb20gJ2Zvb3RwcmludGpzJzsgICAgICAgICAgIC8vIG1haW4g4oCUIHN0YXJ0IGhlcmVcbiAqIGltcG9ydCB7IG1ldHJpY3MsIGRlYnVnLCBtYW5pZmVzdCB9ICAgICBmcm9tICdmb290cHJpbnRqcy9yZWNvcmRlcnMnOyAvLyByZWNvcmRlciBmYWN0b3JpZXNcbiAqIGltcG9ydCB7IFNoYXJlZE1lbW9yeSwgU3RhZ2VDb250ZXh0IH0gICBmcm9tICdmb290cHJpbnRqcy9hZHZhbmNlZCc7ICAvLyBpbnRlcm5hbHNcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRdWljayBTdGFydCDigJQgRXZlcnl0aGluZyB5b3UgbmVlZCBmb3IgOTAlIG9mIHVzZSBjYXNlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydCwgU3RhZ2VGdW5jdGlvbiBhcyBTdGFnZUhhbmRsZXIsIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB7IGZsb3dDaGFydCwgRmxvd0NoYXJ0QnVpbGRlciwgZmxvd0NoYXJ0U2VsZWN0b3IgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnRcbiAqXG4gKiBDb25maWcgZm9yIGAuYWRkUGFyYWxsZWxGb3JFYWNoKClgIOKAlCBvbmUgYnJhbmNoIHBlciBpdGVtLCBicmFuY2ggY291bnRcbiAqIGRlY2lkZWQgYXQgcnVuIHRpbWUgZnJvbSB0aGUgcGF5bG9hZC4gYG1heEJyYW5jaGVzYCBhbmQgYGludG9gIGFyZSByZXF1aXJlZFxuICogb24gcHVycG9zZSAoc2VlIGRvY3MvZGVzaWduL2V4ZWN1dGlvbi1jb250cm9sLm1kKS5cbiAqL1xuZXhwb3J0IHR5cGUgeyBCcmFuY2hDaGFydCwgUGFyYWxsZWxGb3JFYWNoQ29uZmlnLCBSZXRyeVBvbGljeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0IOKAlCBidWlsZC10aW1lIG9ic2VydmVyICh0d2luIG9mIEZsb3dSZWNvcmRlcikgKi9cbmV4cG9ydCB0eXBlIHtcbiAgU3RydWN0dXJlRGVjaWRlckNvbXBsZXRlRXZlbnQsXG4gIFN0cnVjdHVyZUVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVFZGdlS2luZCxcbiAgU3RydWN0dXJlTG9vcEVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVSZWNvcmRlcixcbiAgU3RydWN0dXJlU3RhZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdWJmbG93TW91bnRlZEV2ZW50LFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHR5cGUgeyBUeXBlZFN0YWdlRnVuY3Rpb24gfSBmcm9tICcuL2xpYi9idWlsZGVyL3R5cGVkRmxvd0NoYXJ0LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHR5cGUgeyBTY29wZU1ldGhvZHMsIFR5cGVkU2NvcGUgfSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB7IG5hcnJhdGl2ZSB9IGZyb20gJy4vcmVjb3JkZXJzLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVjaXNpb24gQnJhbmNoaW5nIOKAlCBkZWNpZGUoKSAvIHNlbGVjdCgpIHdpdGggZXZpZGVuY2UgY2FwdHVyZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IERlY2lzaW9uIEJyYW5jaGluZyAqL1xuZXhwb3J0IHR5cGUge1xuICBEZWNpZGVSdWxlLFxuICBEZWNpc2lvbkV2aWRlbmNlLFxuICBEZWNpc2lvblJlc3VsdCxcbiAgRGVmYXVsdEJyYW5jaCxcbiAgRmlsdGVyT3BzLFxuICBSdWxlRXZpZGVuY2UsXG4gIFNlbGVjdGlvbkV2aWRlbmNlLFxuICBTZWxlY3Rpb25SZXN1bHQsXG4gIFdoZW5DbGF1c2UsXG4gIFdoZXJlRmlsdGVyLFxufSBmcm9tICcuL2xpYi9kZWNpZGUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IERlY2lzaW9uIEJyYW5jaGluZyAqL1xuZXhwb3J0IHsgZGVjaWRlLCBzZWxlY3QgfSBmcm9tICcuL2xpYi9kZWNpZGUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSdW4g4oCUIEV4ZWN1dGUgY2hhcnRzIGFuZCBjb2xsZWN0IHJlc3VsdHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB0eXBlIHsgUnVuUmVzdWx0IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB0eXBlIHsgRmxvd0NoYXJ0RXhlY3V0b3JPcHRpb25zIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IEZsb3dDaGFydEV4ZWN1dG9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IFJ1bkNvbnRleHQgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBDaGFydE9wZW5BUElPcHRpb25zLCBNQ1BUb29sRGVzY3JpcHRpb24sIFJ1bm5hYmxlRmxvd0NoYXJ0IH0gZnJvbSAnLi9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPYnNlcnZlIOKAlCBEYXRhIChzY29wZSByZWNvcmRlcnMsIGZpcmUgZHVyaW5nIHN0YWdlIGV4ZWN1dGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEV2ZW50LFxuICBFcnJvckV2ZW50LFxuICBSZWFkRXZlbnQsXG4gIFJlZGFjdGlvblBvbGljeSxcbiAgUmVkYWN0aW9uUmVwb3J0LFxuICBTY29wZVJlY29yZGVyLFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgTWV0cmljUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgRGVidWdSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBPcGVyYXRpb24gKi9cbmV4cG9ydCB7IFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBFdmVyeSBgYXR0YWNoKlJlY29yZGVyYCBjYWxsIGFjY2VwdHMgYW4gb3B0aW9ucyBiYWc6XG4gKiBgZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihyZWMsIHsgZGVsaXZlcnk6ICdkZWZlcnJlZCcgfSlgIHRha2VzIHRoZVxuICogcmVjb3JkZXIgT1VUIG9mIHRoZSBlbmdpbmUncyBob3QgcGF0aCDigJQgZXZlbnRzIGFyZSBjYXB0dXJlZCBpbnRvIG9uZVxuICogYm91bmRlZCwgdG90YWxseS1vcmRlcmVkIHF1ZXVlIGFuZCBkZWxpdmVyZWQgYXQgdGhlIG5leHQgbWljcm90YXNrXG4gKiBjaGVja3BvaW50IChcIm9uZSBiZWF0IGJlaGluZFwiKS4gT21pdCBgZGVsaXZlcnlgIGZvciB0aGUgaGlzdG9yaWNhbFxuICogc3luY2hyb25vdXMgY2FsbCAoYnl0ZS1pZGVudGljYWwgdG8gcHJldmlvdXMgcmVsZWFzZXMpLiBBY2NvdW50aW5nXG4gKiBzdXJmYWNlcyBvbiBgc25hcHNob3Qub2JzZXJ2ZXJTdGF0c2A7IGBleGVjdXRvci5kcmFpbk9ic2VydmVycygpYCBzZXR0bGVzXG4gKiBhc3luYyBsaXN0ZW5lcnMgYmVmb3JlIHNodXRkb3duLiBTZWUgYGRvY3MvZ3VpZGVzL29ic2VydmVycy1kZWZlcnJlZC5tZGAuXG4gKi9cbmV4cG9ydCB0eXBlIHtcbiAgQXR0YWNoUmVjb3JkZXJPcHRpb25zLFxuICBPYnNlcnZlckRlbGl2ZXJ5LFxuICBPYnNlcnZlckRyYWluUmVzdWx0LFxuICBPYnNlcnZlclN0YXRzLFxufSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBgQ2FwdHVyZVBvbGljeWAg4oCUIGhvdyBhIGRlZmVycmVkIGV2ZW50J3MgcGF5bG9hZCBpcyBtYXRlcmlhbGl6ZWQgYXRcbiAqIGNhcHR1cmUgdGltZSAoYCdzdW1tYXJ5J2AgZGVmYXVsdCAvIGAnY2xvbmUnYCAvIGAncmVmJ2ApLiBgT3ZlcmZsb3dQb2xpY3lgXG4gKiDigJQgd2hhdCBhIHNhdHVyYXRlZCBxdWV1ZSBkb2VzIChgJ2Ryb3Atb2xkZXN0J2AgZGVmYXVsdCAvIGAnc2FtcGxlJ2AgL1xuICogYCdibG9jaydgKS4gYERpc3BhdGNoZXJTdGF0c2AgLyBgTGlzdGVuZXJTdGF0c2Ag4oCUIHRoZSBhY2NvdW50aW5nIHNoYXBlc1xuICogZW1iZWRkZWQgaW4gYE9ic2VydmVyU3RhdHNgLiBUeXBlcyBvbmx5IOKAlCB0aGUgb2JzZXJ2ZXItcXVldWUgbW9kdWxlXG4gKiBpdHNlbGYgaXMgaW50ZXJuYWw7IGNvbnN1bWVycyB1c2UgdGhlIGF0dGFjaCBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSB7IENhcHR1cmVQb2xpY3ksIERpc3BhdGNoZXJTdGF0cywgTGlzdGVuZXJTdGF0cywgT3ZlcmZsb3dQb2xpY3kgfSBmcm9tICcuL2xpYi9vYnNlcnZlci1xdWV1ZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgQ29tYmluZWQgKGJvdGggZGF0YS1mbG93IGFuZCBjb250cm9sLWZsb3cpICovXG5leHBvcnQgdHlwZSB7IENvbWJpbmVkUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIENvbWJpbmVkIChib3RoIGRhdGEtZmxvdyBhbmQgY29udHJvbC1mbG93KSAqL1xuZXhwb3J0IHtcbiAgaGFzRW1pdFJlY29yZGVyTWV0aG9kcyxcbiAgaGFzRmxvd1JlY29yZGVyTWV0aG9kcyxcbiAgaGFzUmVjb3JkZXJNZXRob2RzLFxuICBpc0Zsb3dFdmVudCxcbn0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBFbWl0ICh1c2VyLWF1dGhvcmVkIHN0cnVjdHVyZWQgZXZlbnRzKVxuICpcbiAqIFRoaXJkIG9ic2VydmVyIGNoYW5uZWwgKGFsb25nc2lkZSBgU2NvcGVSZWNvcmRlcmAgYW5kIGBGbG93UmVjb3JkZXJgKS4gQ29uc3VtZXJcbiAqIGNvZGUgY2FsbHMgYHNjb3BlLiRlbWl0KG5hbWUsIHBheWxvYWQpYCBmcm9tIGluc2lkZSBhIHN0YWdlOyBldmVyeSBhdHRhY2hlZFxuICogYEVtaXRSZWNvcmRlci5vbkVtaXQoZXZlbnQpYCBmaXJlcyBzeW5jaHJvbm91c2x5IHdpdGggc3RhZ2UtY29udGV4dFxuICogZW5yaWNobWVudC4gUGFzcy10aHJvdWdoIOKAlCBubyBidWZmZXJpbmcsIHplcm8gYWxsb2NhdGlvbiB3aGVuIG5vIHJlY29yZGVyXG4gKiBpcyBhdHRhY2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBFbWl0RXZlbnQsIEVtaXRSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT2JzZXJ2ZSDigJQgRmxvdyAoRmxvd1JlY29yZGVyLCBmaXJlcyBhZnRlciBzdGFnZSBleGVjdXRpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHR5cGUge1xuICBGbG93QnJlYWtFdmVudCxcbiAgRmxvd0RlY2lzaW9uRXZlbnQsXG4gIEZsb3dFcnJvckV2ZW50LFxuICBGbG93Rm9ya0V2ZW50LFxuICBGbG93TG9vcEV2ZW50LFxuICBGbG93TmV4dEV2ZW50LFxuICBGbG93UmVjb3JkZXIsXG4gIEZsb3dSdW5FdmVudCxcbiAgRmxvd1J1bkZhaWxlZEV2ZW50LFxuICBGbG93U2VsZWN0ZWRFdmVudCxcbiAgRmxvd1N0YWdlRXZlbnQsXG4gIEZsb3dTdGFnZVJldHJ5RXZlbnQsXG4gIEZsb3dTdWJmbG93RXZlbnQsXG4gIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50LFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3dcbiAqXG4gKiBgTmFycmF0aXZlRm9ybWF0dGVyYCDigJQgcGx1Z2dhYmxlIGZvcm1hdHRlciB0aGF0IGNvbnZlcnRzIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyBvZiB0aGUgbmFycmF0aXZlLiBQcmVmZXIgdGhpcyBuYW1lIGluIG5ld1xuICogY29kZTsgYE5hcnJhdGl2ZVJlbmRlcmVyYCBpcyBhIGRlcHJlY2F0ZWQgYWxpYXMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgaW5cbiAqIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCB0eXBlIHsgTmFycmF0aXZlRm9ybWF0dGVyLCBOYXJyYXRpdmVSZW5kZXJlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0RW50cnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IE1hbmlmZXN0Rmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBBZGFwdGl2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTWlsZXN0b25lTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBQcm9ncmVzc2l2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgUkxFTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBTZXBhcmF0ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgU2lsZW50TmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBXaW5kb3dlZE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlbGYtRGVzY3JpYmluZyDigJQgLmNvbnRyYWN0KCksIHRvT3BlbkFQSSgpLCB0b01DUFRvb2woKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFNlbGYtRGVzY3JpYmluZyAqL1xuZXhwb3J0IHR5cGUge1xuICBGbG93Q2hhcnRDb250cmFjdCxcbiAgRmxvd0NoYXJ0Q29udHJhY3RPcHRpb25zLFxuICBKc29uU2NoZW1hLFxuICBPcGVuQVBJT3B0aW9ucyxcbiAgT3BlbkFQSVNwZWMsXG59IGZyb20gJy4vbGliL2NvbnRyYWN0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU25hcHNob3QgJiBDb21wb3NpdGlvbiDigJQgU3ViZmxvdyBuYXZpZ2F0aW9uIGFuZCBDb21wb3NhYmxlUnVubmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NhYmxlUnVubmVyIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgdHlwZSB7IFJlY29yZGVyU25hcHNob3QsIFJ1bnRpbWVTbmFwc2hvdCwgU3VidHJlZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgeyBnZXRTdWJ0cmVlU25hcHNob3QsIGxpc3RTdWJmbG93UGF0aHMgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZVJlY29yZGVyIENvbXBvc2l0aW9uIOKAlCBCdW5kbGUgbXVsdGlwbGUgcmVjb3JkZXJzIGludG8gZG9tYWluIHByZXNldHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBTY29wZVJlY29yZGVyICovXG5leHBvcnQgeyBDb21wb3NpdGVSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGF1c2UvUmVzdW1lIOKAlCBTZXJpYWxpemFibGUgY2hlY2twb2ludHMgZm9yIGxvbmctcnVubmluZyBvciBodW1hbi1pbi10aGUtbG9vcCBmbG93c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZSAqL1xuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbmV4cG9ydCB0eXBlIHsgRmxvd2NoYXJ0Q2hlY2twb2ludCwgUGF1c2FibGVIYW5kbGVyIH0gZnJvbSAnLi9saWIvcGF1c2UvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWVcbiAqXG4gKiBgaW50ZXJydXB0KHNjb3BlLCB7IHJlYXNvbiwgZXhwZWN0cz8gfSlgIOKAlCBzdG9wIG1pZC1zdGFnZSB0byBhc2sgYSBxdWVzdGlvbixcbiAqIGFuZCBnZXQgdGhlIGFuc3dlciBiYWNrIGF0IHRoZSBzYW1lIGNhbGwgc2l0ZSB3aGVuIHRoZSBydW4gcmVzdW1lcy4gUmVzdW1lXG4gKiByZS1lbnRlcnMgdGhlIHN0YWdlIGZyb20gaXRzIFRPUCAoc3RhZ2VzIGFyZSBhdG9taWMpLCBzbyBrZWVwIHRoZSBoYWxmXG4gKiBiZWZvcmUgdGhlIGNhbGwgaWRlbXBvdGVudC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBJbnRlcnJ1cHRQYXlsb2FkIH0gZnJvbSAnLi9saWIvcGF1c2UvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZSAqL1xuZXhwb3J0IHsgaW50ZXJydXB0IH0gZnJvbSAnLi9saWIvcGF1c2UvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFNjb3BlUmVjb3JkZXIgKi9cbmV4cG9ydCB0eXBlIHsgQ29tcG9zaXRlU25hcHNob3QgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbmZpZ3VyYXRpb24g4oCUIFR5cGVzIHBhc3NlZCB0byBGbG93Q2hhcnRFeGVjdXRvciBhbmQgcnVuKClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uICovXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvbkVudiwgRXhlY3V0b3JSZXN1bHQsIFBhdXNlZFJlc3VsdCwgUnVuT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY29wZUZhY3RvcnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uXG4gKlxuICogUmVhZC10cmFja2luZyBwb2xpY3kgZm9yIGBTdGFnZVNuYXBzaG90LnN0YWdlUmVhZHNgICgjMTQpOlxuICogYCdmdWxsJ2AgKGRlZmF1bHQg4oCUIHBlci1yZWFkIHZhbHVlIGNsb25lLCBoaXN0b3JpY2FsIGJlaGF2aW9yKSAvXG4gKiBgJ3N1bW1hcnknYCAoY2hlYXAgYFJlYWRTdW1tYXJ5TWFya2VyYCBwZXIgcmVhZCkgLyBgJ29mZidgIChubyB0cmFja2luZyxcbiAqIHplcm8gcGVyLXJlYWQgY2xvbmUpLiBQYXNzIGFzIGBuZXcgRmxvd0NoYXJ0RXhlY3V0b3IoY2hhcnQsIHsgcmVhZFRyYWNraW5nIH0pYFxuICogb3IgY2FsbCBgZXhlY3V0b3Iuc2V0UmVhZFRyYWNraW5nKG1vZGUpYCBiZWZvcmUgYHJ1bigpYC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBSZWFkU3VtbWFyeU1hcmtlciwgUmVhZFRyYWNraW5nTW9kZSB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb25cbiAqXG4gKiBXcml0ZS10cmFja2luZyBwb2xpY3kgZm9yIGBTdGFnZVNuYXBzaG90LnN0YWdlV3JpdGVzYCAoIzEzYy1BKSDigJQgdGhlXG4gKiBzaWJsaW5nIG9mIGBSZWFkVHJhY2tpbmdNb2RlYDsgYm90aCBhbGlhcyB0aGUgc2hhcmVkIGBSZXRlbnRpb25Qb2xpY3lgXG4gKiBmYW1pbHkgZnJvbSBgbGliL2NhcHR1cmVgLiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgcGVyLXdyaXRlIHZhbHVlIGNsb25lLFxuICogaGlzdG9yaWNhbCBiZWhhdmlvcikgLyBgJ3N1bW1hcnknYCAoY2hlYXAgYFdyaXRlU3VtbWFyeU1hcmtlcmAgcGVyIHdyaXRlKVxuICogLyBgJ29mZidgIChubyB0cmFja2luZzsgYHN0YWdlV3JpdGVzYCBhYnNlbnQgYW5kIHRoZSBgb25Db21taXRgIG11dGF0aW9uc1xuICogcGF5bG9hZCBpcyBlbXB0eSDigJQgd3JpdGVzIHRoZW1zZWx2ZXMgc3RpbGwgY29tbWl0LCBhbmQgdGhlIGNvbW1pdCBsb2cgaXNcbiAqIHVuYWZmZWN0ZWQpLiBQYXNzIGFzIGBuZXcgRmxvd0NoYXJ0RXhlY3V0b3IoY2hhcnQsIHsgd3JpdGVUcmFja2luZyB9KWAgb3JcbiAqIGNhbGwgYGV4ZWN1dG9yLnNldFdyaXRlVHJhY2tpbmcobW9kZSlgIGJlZm9yZSBgcnVuKClgLlxuICovXG5leHBvcnQgdHlwZSB7IFJldGVudGlvblBvbGljeSwgV3JpdGVTdW1tYXJ5TWFya2VyLCBXcml0ZVRyYWNraW5nTW9kZSB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb25cbiAqXG4gKiBDb21taXQtdmFsdWVzIGVuY29kaW5nIGZvciB0aGUgQ09NTUlUIExPRyAoIzEzYy1CKSDigJQgdGhlIHRoaXJkIGRpYWwgb2ZcbiAqIHRoZSBmYW1pbHksIGFuZCB0aGUgb25seSBMT1NTTEVTUyBvbmUgKGl0IGNoYW5nZXMgdGhlIGxvZydzIGVuY29kaW5nLFxuICogbmV2ZXIgaXRzIGluZm9ybWF0aW9uKS4gYCdmdWxsJ2AgKGRlZmF1bHQg4oCUIGV2ZXJ5IHN1cnZpdmluZyBgc2V0YCBzdG9yZXNcbiAqIHRoZSBmdWxsIGZpbmFsIHZhbHVlLCBieXRlLWlkZW50aWNhbCB0byBoaXN0b3J5KSAvIGAnZGVsdGEnYCAoYXJyYXlcbiAqIG5ldC1jaGFuZ2VzIHRoYXQgYXJlIFwiYmFzZSBwbHVzIGEgdGFpbFwiIGNvbW1pdCBhcyBhbiBgYXBwZW5kYCB2ZXJiXG4gKiBzdG9yaW5nIG9ubHkgdGhlIHRhaWw7IGBkZWxldGVWYWx1ZSgpYCBjb21taXRzIGFzIGEgcmVhbCBgZGVsZXRlYCB2ZXJiO1xuICogb25lIHRyYWNlIGVudHJ5IHBlciBzdXJ2aXZpbmcgcGF0aCkuIFJlcGxheSByZWNvbnN0cnVjdHMgZXZlcnkgc3RlcCdzXG4gKiBmdWxsIHN0YXRlIGV4YWN0bHkuIENvbnN1bWVycyByZWFkaW5nIGBidW5kbGUub3ZlcndyaXRlW2tleV1gIGFzIHRoZSBmdWxsXG4gKiB2YWx1ZSBtdXN0IHVzZSBgY29tbWl0VmFsdWVBdGAgZnJvbSBgZm9vdHByaW50anMvdHJhY2VgLiBQYXNzIGFzXG4gKiBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IGNvbW1pdFZhbHVlcyB9KWAgb3IgY2FsbFxuICogYGV4ZWN1dG9yLnNldENvbW1pdFZhbHVlcyhtb2RlKWAgYmVmb3JlIGBydW4oKWA7IHRoZSBhY3RpdmUgbW9kZSBpcyB0aGVcbiAqIHNuYXBzaG90IGRpc2NyaW1pbmFudCBgZ2V0U25hcHNob3QoKS5jb21taXRWYWx1ZXNgLlxuICovXG5leHBvcnQgdHlwZSB7IENvbW1pdFZhbHVlc01vZGUgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb250cmFjdCAmIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBDb250cmFjdCAmIFZhbGlkYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgU2NoZW1hS2luZCwgVmFsaWRhdGlvbklzc3VlLCBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb250cmFjdCAmIFZhbGlkYXRpb24gKi9cbmV4cG9ydCB7IGRldGVjdFNjaGVtYSwgaXNWYWxpZGF0YWJsZSwgaXNab2QgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHsgSW5wdXRWYWxpZGF0aW9uRXJyb3IsIHZhbGlkYXRlQWdhaW5zdFNjaGVtYSwgdmFsaWRhdGVPclRocm93IH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRXJyb3IgVXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3IgVXRpbGl0aWVzICovXG5leHBvcnQgdHlwZSB7IFN0cnVjdHVyZWRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IEVycm9yIFV0aWxpdGllcyAqL1xuZXhwb3J0IHsgZXh0cmFjdEVycm9ySW5mbywgZm9ybWF0RXJyb3JJbmZvIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGV2IFRvb2xzIOKAlCBNb2RlIGZsYWdzIGFuZCBab2Qgc2NvcGUgdXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQGNhdGVnb3J5IERldiBUb29sc1xuICpcbiAqIEdsb2JhbCBkZXYtbW9kZSBmbGFnLiBDYWxsIGBlbmFibGVEZXZNb2RlKClgIGF0IGFwcGxpY2F0aW9uIHN0YXJ0dXAgdG9cbiAqIHR1cm4gb24gZGV2ZWxvcGVyLW9ubHkgZGlhZ25vc3RpY3MgYWNyb3NzIHRoZSBsaWJyYXJ5IOKAlCBjaXJjdWxhci1yZWZlcmVuY2VcbiAqIGRldGVjdGlvbiBpbiBzY29wZSB3cml0ZXMsIHdhcm5pbmdzIHdoZW4gYSByZWNvcmRlciBoYXMgbm8gb2JzZXJ2ZXJcbiAqIG1ldGhvZHMsIHN1c3BpY2lvdXMtcHJlZGljYXRlIHdhcm5pbmdzIGluIGRlY2lkZS9zZWxlY3QsIHN0cnVjdHVyYWxcbiAqIGNoZWNrcyBpbiBgZ2V0U3VidHJlZVNuYXBzaG90YCwgYW5kIGFueSBmdXR1cmUgZGV2LW9ubHkgZGlhZ25vc3RpYy5cbiAqXG4gKiBQcm9kdWN0aW9uIGxlYXZlcyBpdCBPRkYgYnkgZGVmYXVsdCAoemVybyBvdmVyaGVhZCkuIFNlZSB0aGUgSlNEb2Mgb25cbiAqIGBlbmFibGVEZXZNb2RlYCBmb3IgdGhlIGZ1bGwgbGlzdCBhbmQgdXNhZ2UgZXhhbXBsZS5cbiAqL1xuZXhwb3J0IHsgZGlzYWJsZURldk1vZGUsIGVuYWJsZURldk1vZGUsIGlzRGV2TW9kZSB9IGZyb20gJy4vbGliL3Njb3BlL2RldGVjdENpcmN1bGFyLmpzJztcblxuLy8gYGRlZmluZVNjb3BlRnJvbVpvZGAgYW5kIHRoZSBvdGhlciB6b2QtYmFzZWQgc2NvcGUgaGVscGVycyBtb3ZlZCB0byB0aGUgb3B0LWluXG4vLyBgZm9vdHByaW50anMvem9kYCBlbnRyeSDigJQga2VlcGluZyB6b2Qgb3V0IG9mIHRoZSBjb3JlIGxvYWQgcGF0aCAoaXQgaXMgYW5cbi8vIG9wdGlvbmFsIHBlZXIpLiBJbXBvcnQgdGhlbSBmcm9tICdmb290cHJpbnRqcy96b2QnLlxuIl19
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHOzs7QUFTSCw0QkFBNEI7QUFDNUIsbURBQXdGO0FBQS9FLHFHQUFBLFNBQVMsT0FBQTtBQUFFLDRHQUFBLGdCQUFnQixPQUFBO0FBQUUsNkdBQUEsaUJBQWlCLE9BQUE7QUE2QnZELDRCQUE0QjtBQUM1QiwrQ0FBMkM7QUFBbEMseUdBQUEsU0FBUyxPQUFBO0FBb0JsQixtQ0FBbUM7QUFDbkMsa0RBQXVEO0FBQTlDLGtHQUFBLE1BQU0sT0FBQTtBQUFFLGtHQUFBLE1BQU0sT0FBQTtBQVl2QixvQkFBb0I7QUFDcEIsa0RBQTBEO0FBQWpELDZHQUFBLGlCQUFpQixPQUFBO0FBRTFCLG9CQUFvQjtBQUNwQixrREFBbUQ7QUFBMUMsc0dBQUEsVUFBVSxPQUFBO0FBcUJuQiwrQkFBK0I7QUFDL0IsaURBQXNEO0FBQTdDLDBHQUFBLGNBQWMsT0FBQTtBQUV2QiwrQkFBK0I7QUFDL0IsaURBQXFEO0FBQTVDLHlHQUFBLGFBQWEsT0FBQTtBQUV0QixvQ0FBb0M7QUFDcEMsb0RBQTREO0FBQW5ELDZHQUFBLGlCQUFpQixPQUFBO0FBbUMxQixxRUFBcUU7QUFDckUsb0RBS2lDO0FBSi9CLGtIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLGtIQUFBLHNCQUFzQixPQUFBO0FBQ3RCLDhHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLHVHQUFBLFdBQVcsT0FBQTtBQWtEYiwrQkFBK0I7QUFDL0Isa0RBQThEO0FBQXJELGlIQUFBLHFCQUFxQixPQUFBO0FBSzlCLCtCQUErQjtBQUMvQixtREFBNkQ7QUFBcEQsaUhBQUEsb0JBQW9CLE9BQUE7QUFFN0IsK0JBQStCO0FBQy9CLG1EQUFzRTtBQUE3RCwwSEFBQSw2QkFBNkIsT0FBQTtBQUV0QywrQkFBK0I7QUFDL0IsbURBQXVFO0FBQTlELDJIQUFBLDhCQUE4QixPQUFBO0FBRXZDLCtCQUErQjtBQUMvQixtREFBeUU7QUFBaEUsNkhBQUEsZ0NBQWdDLE9BQUE7QUFFekMsK0JBQStCO0FBQy9CLG1EQUFpRTtBQUF4RCxxSEFBQSx3QkFBd0IsT0FBQTtBQUVqQywrQkFBK0I7QUFDL0IsbURBQXNFO0FBQTdELDBIQUFBLDZCQUE2QixPQUFBO0FBRXRDLCtCQUErQjtBQUMvQixtREFBb0U7QUFBM0Qsd0hBQUEsMkJBQTJCLE9BQUE7QUFFcEMsK0JBQStCO0FBQy9CLG1EQUFzRTtBQUE3RCwwSEFBQSw2QkFBNkIsT0FBQTtBQXlCdEMsdUNBQXVDO0FBQ3ZDLG1EQUE2RTtBQUFwRSwrR0FBQSxrQkFBa0IsT0FBQTtBQUFFLDZHQUFBLGdCQUFnQixPQUFBO0FBRTdDLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsK0VBQStFO0FBRS9FLDhCQUE4QjtBQUM5QixxREFBNEQ7QUFBbkQsOEdBQUEsaUJBQWlCLE9BQUE7QUFvQjFCLDZCQUE2QjtBQUM3QixrREFBaUQ7QUFBeEMsc0dBQUEsU0FBUyxPQUFBO0FBaUVsQixzQ0FBc0M7QUFDdEMsbURBQTJFO0FBQWxFLHlHQUFBLFlBQVksT0FBQTtBQUFFLDBHQUFBLGFBQWEsT0FBQTtBQUFFLGtHQUFBLEtBQUssT0FBQTtBQUUzQyxzQ0FBc0M7QUFDdEMsbURBQXFHO0FBQTVGLGlIQUFBLG9CQUFvQixPQUFBO0FBQUUsa0hBQUEscUJBQXFCLE9BQUE7QUFBRSw0R0FBQSxlQUFlLE9BQUE7QUFTckUsZ0NBQWdDO0FBQ2hDLG1EQUEwRTtBQUFqRSw2R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLDRHQUFBLGVBQWUsT0FBQTtBQUUxQywrRUFBK0U7QUFDL0UsaURBQWlEO0FBQ2pELCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILG1FQUF5RjtBQUFoRixtSEFBQSxjQUFjLE9BQUE7QUFBRSxrSEFBQSxhQUFhLE9BQUE7QUFBRSw4R0FBQSxTQUFTLE9BQUE7QUFFakQsaUZBQWlGO0FBQ2pGLDRFQUE0RTtBQUM1RSxzREFBc0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvb3RQcmludCDigJQgUHVibGljIEFQSSAodjMpXG4gKlxuICogVGhlIGZsb3djaGFydCBwYXR0ZXJuIGZvciBiYWNrZW5kIGNvZGUuXG4gKiBCdWlsZCDihpIgUnVuIOKGkiBPYnNlcnZlLlxuICpcbiAqICoqVGhyZWUgaW1wb3J0IHBhdGhzOioqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZmxvd0NoYXJ0LCBkZWNpZGUsIG5hcnJhdGl2ZSB9IGZyb20gJ2Zvb3RwcmludGpzJzsgICAgICAgICAgIC8vIG1haW4g4oCUIHN0YXJ0IGhlcmVcbiAqIGltcG9ydCB7IG1ldHJpY3MsIGRlYnVnLCBtYW5pZmVzdCB9ICAgICBmcm9tICdmb290cHJpbnRqcy9yZWNvcmRlcnMnOyAvLyByZWNvcmRlciBmYWN0b3JpZXNcbiAqIGltcG9ydCB7IFNoYXJlZE1lbW9yeSwgU3RhZ2VDb250ZXh0IH0gICBmcm9tICdmb290cHJpbnRqcy9hZHZhbmNlZCc7ICAvLyBpbnRlcm5hbHNcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRdWljayBTdGFydCDigJQgRXZlcnl0aGluZyB5b3UgbmVlZCBmb3IgOTAlIG9mIHVzZSBjYXNlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0ICovXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydCwgU3RhZ2VGdW5jdGlvbiBhcyBTdGFnZUhhbmRsZXIsIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB7IGZsb3dDaGFydCwgRmxvd0NoYXJ0QnVpbGRlciwgZmxvd0NoYXJ0U2VsZWN0b3IgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnRcbiAqXG4gKiBDb25maWcgZm9yIGAuYWRkUGFyYWxsZWxGb3JFYWNoKClgIOKAlCBvbmUgYnJhbmNoIHBlciBpdGVtLCBicmFuY2ggY291bnRcbiAqIGRlY2lkZWQgYXQgcnVuIHRpbWUgZnJvbSB0aGUgcGF5bG9hZC4gYG1heEJyYW5jaGVzYCBhbmQgYGludG9gIGFyZSByZXF1aXJlZFxuICogb24gcHVycG9zZSAoc2VlIGRvY3MvZGVzaWduL2V4ZWN1dGlvbi1jb250cm9sLm1kKS5cbiAqL1xuZXhwb3J0IHR5cGUgeyBCcmFuY2hDaGFydCwgUGFyYWxsZWxGb3JFYWNoQ29uZmlnLCBSZXRyeVBvbGljeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFF1aWNrIFN0YXJ0IOKAlCBidWlsZC10aW1lIG9ic2VydmVyICh0d2luIG9mIEZsb3dSZWNvcmRlcikgKi9cbmV4cG9ydCB0eXBlIHtcbiAgU3RydWN0dXJlRGVjaWRlckNvbXBsZXRlRXZlbnQsXG4gIFN0cnVjdHVyZUVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVFZGdlS2luZCxcbiAgU3RydWN0dXJlTG9vcEVkZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVSZWNvcmRlcixcbiAgU3RydWN0dXJlU3RhZ2VBZGRlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdGFnZVRhZ2dlZEV2ZW50LFxuICBTdHJ1Y3R1cmVTdWJmbG93TW91bnRlZEV2ZW50LFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHR5cGUgeyBUeXBlZFN0YWdlRnVuY3Rpb24gfSBmcm9tICcuL2xpYi9idWlsZGVyL3R5cGVkRmxvd0NoYXJ0LmpzJztcblxuLyoqIEBjYXRlZ29yeSBRdWljayBTdGFydCAqL1xuZXhwb3J0IHR5cGUgeyBTY29wZU1ldGhvZHMsIFR5cGVkU2NvcGUgfSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgUXVpY2sgU3RhcnQgKi9cbmV4cG9ydCB7IG5hcnJhdGl2ZSB9IGZyb20gJy4vcmVjb3JkZXJzLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVjaXNpb24gQnJhbmNoaW5nIOKAlCBkZWNpZGUoKSAvIHNlbGVjdCgpIHdpdGggZXZpZGVuY2UgY2FwdHVyZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IERlY2lzaW9uIEJyYW5jaGluZyAqL1xuZXhwb3J0IHR5cGUge1xuICBEZWNpZGVSdWxlLFxuICBEZWNpc2lvbkV2aWRlbmNlLFxuICBEZWNpc2lvblJlc3VsdCxcbiAgRGVmYXVsdEJyYW5jaCxcbiAgRmlsdGVyT3BzLFxuICBSdWxlRXZpZGVuY2UsXG4gIFNlbGVjdGlvbkV2aWRlbmNlLFxuICBTZWxlY3Rpb25SZXN1bHQsXG4gIFdoZW5DbGF1c2UsXG4gIFdoZXJlRmlsdGVyLFxufSBmcm9tICcuL2xpYi9kZWNpZGUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IERlY2lzaW9uIEJyYW5jaGluZyAqL1xuZXhwb3J0IHsgZGVjaWRlLCBzZWxlY3QgfSBmcm9tICcuL2xpYi9kZWNpZGUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSdW4g4oCUIEV4ZWN1dGUgY2hhcnRzIGFuZCBjb2xsZWN0IHJlc3VsdHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB0eXBlIHsgUnVuUmVzdWx0IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB0eXBlIHsgRmxvd0NoYXJ0RXhlY3V0b3JPcHRpb25zIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IEZsb3dDaGFydEV4ZWN1dG9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBSdW4gKi9cbmV4cG9ydCB7IFJ1bkNvbnRleHQgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFJ1biAqL1xuZXhwb3J0IHR5cGUgeyBDaGFydE9wZW5BUElPcHRpb25zLCBNQ1BUb29sRGVzY3JpcHRpb24sIFJ1bm5hYmxlRmxvd0NoYXJ0IH0gZnJvbSAnLi9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPYnNlcnZlIOKAlCBEYXRhIChzY29wZSByZWNvcmRlcnMsIGZpcmUgZHVyaW5nIHN0YWdlIGV4ZWN1dGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEYXRhICovXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEV2ZW50LFxuICBFcnJvckV2ZW50LFxuICBSZWFkRXZlbnQsXG4gIFJlZGFjdGlvblBvbGljeSxcbiAgUmVkYWN0aW9uUmVwb3J0LFxuICBTY29wZVJlY29yZGVyLFxuICBTdGFnZUV2ZW50LFxuICBXcml0ZUV2ZW50LFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgTWV0cmljUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRGF0YSAqL1xuZXhwb3J0IHsgRGVidWdSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBPcGVyYXRpb24gKi9cbmV4cG9ydCB7IFJlY29yZGVyT3BlcmF0aW9uIH0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBFdmVyeSBgYXR0YWNoKlJlY29yZGVyYCBjYWxsIGFjY2VwdHMgYW4gb3B0aW9ucyBiYWc6XG4gKiBgZXhlY3V0b3IuYXR0YWNoU2NvcGVSZWNvcmRlcihyZWMsIHsgZGVsaXZlcnk6ICdkZWZlcnJlZCcgfSlgIHRha2VzIHRoZVxuICogcmVjb3JkZXIgT1VUIG9mIHRoZSBlbmdpbmUncyBob3QgcGF0aCDigJQgZXZlbnRzIGFyZSBjYXB0dXJlZCBpbnRvIG9uZVxuICogYm91bmRlZCwgdG90YWxseS1vcmRlcmVkIHF1ZXVlIGFuZCBkZWxpdmVyZWQgYXQgdGhlIG5leHQgbWljcm90YXNrXG4gKiBjaGVja3BvaW50IChcIm9uZSBiZWF0IGJlaGluZFwiKS4gT21pdCBgZGVsaXZlcnlgIGZvciB0aGUgaGlzdG9yaWNhbFxuICogc3luY2hyb25vdXMgY2FsbCAoYnl0ZS1pZGVudGljYWwgdG8gcHJldmlvdXMgcmVsZWFzZXMpLiBBY2NvdW50aW5nXG4gKiBzdXJmYWNlcyBvbiBgc25hcHNob3Qub2JzZXJ2ZXJTdGF0c2A7IGBleGVjdXRvci5kcmFpbk9ic2VydmVycygpYCBzZXR0bGVzXG4gKiBhc3luYyBsaXN0ZW5lcnMgYmVmb3JlIHNodXRkb3duLiBTZWUgYGRvY3MvZ3VpZGVzL29ic2VydmVycy1kZWZlcnJlZC5tZGAuXG4gKi9cbmV4cG9ydCB0eXBlIHtcbiAgQXR0YWNoUmVjb3JkZXJPcHRpb25zLFxuICBPYnNlcnZlckRlbGl2ZXJ5LFxuICBPYnNlcnZlckRyYWluUmVzdWx0LFxuICBPYnNlcnZlclN0YXRzLFxufSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBEZWxpdmVyeSB0aWVyIChSRkMtMDAxIGRlZmVycmVkIG9ic2VydmVycylcbiAqXG4gKiBgQ2FwdHVyZVBvbGljeWAg4oCUIGhvdyBhIGRlZmVycmVkIGV2ZW50J3MgcGF5bG9hZCBpcyBtYXRlcmlhbGl6ZWQgYXRcbiAqIGNhcHR1cmUgdGltZSAoYCdzdW1tYXJ5J2AgZGVmYXVsdCAvIGAnY2xvbmUnYCAvIGAncmVmJ2ApLiBgT3ZlcmZsb3dQb2xpY3lgXG4gKiDigJQgd2hhdCBhIHNhdHVyYXRlZCBxdWV1ZSBkb2VzIChgJ2Ryb3Atb2xkZXN0J2AgZGVmYXVsdCAvIGAnc2FtcGxlJ2AgL1xuICogYCdibG9jaydgKS4gYERpc3BhdGNoZXJTdGF0c2AgLyBgTGlzdGVuZXJTdGF0c2Ag4oCUIHRoZSBhY2NvdW50aW5nIHNoYXBlc1xuICogZW1iZWRkZWQgaW4gYE9ic2VydmVyU3RhdHNgLiBUeXBlcyBvbmx5IOKAlCB0aGUgb2JzZXJ2ZXItcXVldWUgbW9kdWxlXG4gKiBpdHNlbGYgaXMgaW50ZXJuYWw7IGNvbnN1bWVycyB1c2UgdGhlIGF0dGFjaCBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSB7IENhcHR1cmVQb2xpY3ksIERpc3BhdGNoZXJTdGF0cywgTGlzdGVuZXJTdGF0cywgT3ZlcmZsb3dQb2xpY3kgfSBmcm9tICcuL2xpYi9vYnNlcnZlci1xdWV1ZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgQ29tYmluZWQgKGJvdGggZGF0YS1mbG93IGFuZCBjb250cm9sLWZsb3cpICovXG5leHBvcnQgdHlwZSB7IENvbWJpbmVkUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIENvbWJpbmVkIChib3RoIGRhdGEtZmxvdyBhbmQgY29udHJvbC1mbG93KSAqL1xuZXhwb3J0IHtcbiAgaGFzRW1pdFJlY29yZGVyTWV0aG9kcyxcbiAgaGFzRmxvd1JlY29yZGVyTWV0aG9kcyxcbiAgaGFzUmVjb3JkZXJNZXRob2RzLFxuICBpc0Zsb3dFdmVudCxcbn0gZnJvbSAnLi9saWIvcmVjb3JkZXIvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBFbWl0ICh1c2VyLWF1dGhvcmVkIHN0cnVjdHVyZWQgZXZlbnRzKVxuICpcbiAqIFRoaXJkIG9ic2VydmVyIGNoYW5uZWwgKGFsb25nc2lkZSBgU2NvcGVSZWNvcmRlcmAgYW5kIGBGbG93UmVjb3JkZXJgKS4gQ29uc3VtZXJcbiAqIGNvZGUgY2FsbHMgYHNjb3BlLiRlbWl0KG5hbWUsIHBheWxvYWQpYCBmcm9tIGluc2lkZSBhIHN0YWdlOyBldmVyeSBhdHRhY2hlZFxuICogYEVtaXRSZWNvcmRlci5vbkVtaXQoZXZlbnQpYCBmaXJlcyBzeW5jaHJvbm91c2x5IHdpdGggc3RhZ2UtY29udGV4dFxuICogZW5yaWNobWVudC4gUGFzcy10aHJvdWdoIOKAlCBubyBidWZmZXJpbmcsIHplcm8gYWxsb2NhdGlvbiB3aGVuIG5vIHJlY29yZGVyXG4gKiBpcyBhdHRhY2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBFbWl0RXZlbnQsIEVtaXRSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT2JzZXJ2ZSDigJQgRmxvdyAoRmxvd1JlY29yZGVyLCBmaXJlcyBhZnRlciBzdGFnZSBleGVjdXRpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHR5cGUge1xuICBGbG93QnJlYWtFdmVudCxcbiAgRmxvd0RlY2lzaW9uRXZlbnQsXG4gIEZsb3dFcnJvckV2ZW50LFxuICBGbG93Rm9ya0V2ZW50LFxuICBGbG93TG9vcEV2ZW50LFxuICBGbG93TmV4dEV2ZW50LFxuICBGbG93UmVjb3JkZXIsXG4gIEZsb3dSdW5FdmVudCxcbiAgRmxvd1J1bkZhaWxlZEV2ZW50LFxuICBGbG93U2VsZWN0ZWRFdmVudCxcbiAgRmxvd1N0YWdlRXZlbnQsXG4gIEZsb3dTdGFnZVJldHJ5RXZlbnQsXG4gIEZsb3dTdWJmbG93RXZlbnQsXG4gIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50LFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3dcbiAqXG4gKiBgTmFycmF0aXZlRm9ybWF0dGVyYCDigJQgcGx1Z2dhYmxlIGZvcm1hdHRlciB0aGF0IGNvbnZlcnRzIGV2ZW50IGNvbnRleHRcbiAqIG9iamVjdHMgaW50byB0aGUgdGV4dCBsaW5lcyBvZiB0aGUgbmFycmF0aXZlLiBQcmVmZXIgdGhpcyBuYW1lIGluIG5ld1xuICogY29kZTsgYE5hcnJhdGl2ZVJlbmRlcmVyYCBpcyBhIGRlcHJlY2F0ZWQgYWxpYXMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgaW5cbiAqIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCB0eXBlIHsgTmFycmF0aXZlRm9ybWF0dGVyLCBOYXJyYXRpdmVSZW5kZXJlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgdHlwZSB7IE1hbmlmZXN0RW50cnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IE9ic2VydmUg4oCUIEZsb3cgKi9cbmV4cG9ydCB7IE1hbmlmZXN0Rmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBBZGFwdGl2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgTWlsZXN0b25lTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBQcm9ncmVzc2l2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgUkxFTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBTZXBhcmF0ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgT2JzZXJ2ZSDigJQgRmxvdyAqL1xuZXhwb3J0IHsgU2lsZW50TmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBPYnNlcnZlIOKAlCBGbG93ICovXG5leHBvcnQgeyBXaW5kb3dlZE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlbGYtRGVzY3JpYmluZyDigJQgLmNvbnRyYWN0KCksIHRvT3BlbkFQSSgpLCB0b01DUFRvb2woKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFNlbGYtRGVzY3JpYmluZyAqL1xuZXhwb3J0IHR5cGUge1xuICBGbG93Q2hhcnRDb250cmFjdCxcbiAgRmxvd0NoYXJ0Q29udHJhY3RPcHRpb25zLFxuICBKc29uU2NoZW1hLFxuICBPcGVuQVBJT3B0aW9ucyxcbiAgT3BlbkFQSVNwZWMsXG59IGZyb20gJy4vbGliL2NvbnRyYWN0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU25hcHNob3QgJiBDb21wb3NpdGlvbiDigJQgU3ViZmxvdyBuYXZpZ2F0aW9uIGFuZCBDb21wb3NhYmxlUnVubmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgU25hcHNob3QgJiBDb21wb3NpdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBDb21wb3NhYmxlUnVubmVyIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgdHlwZSB7IFJlY29yZGVyU25hcHNob3QsIFJ1bnRpbWVTbmFwc2hvdCwgU3VidHJlZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBTbmFwc2hvdCAmIENvbXBvc2l0aW9uICovXG5leHBvcnQgeyBnZXRTdWJ0cmVlU25hcHNob3QsIGxpc3RTdWJmbG93UGF0aHMgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZVJlY29yZGVyIENvbXBvc2l0aW9uIOKAlCBCdW5kbGUgbXVsdGlwbGUgcmVjb3JkZXJzIGludG8gZG9tYWluIHByZXNldHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBTY29wZVJlY29yZGVyICovXG5leHBvcnQgeyBDb21wb3NpdGVSZWNvcmRlciB9IGZyb20gJy4vbGliL3JlY29yZGVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGF1c2UvUmVzdW1lIOKAlCBTZXJpYWxpemFibGUgY2hlY2twb2ludHMgZm9yIGxvbmctcnVubmluZyBvciBodW1hbi1pbi10aGUtbG9vcCBmbG93c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZSAqL1xuLyoqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWUgKi9cbmV4cG9ydCB0eXBlIHsgRmxvd2NoYXJ0Q2hlY2twb2ludCwgUGF1c2FibGVIYW5kbGVyIH0gZnJvbSAnLi9saWIvcGF1c2UvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBQYXVzZS9SZXN1bWVcbiAqXG4gKiBgaW50ZXJydXB0KHNjb3BlLCB7IHJlYXNvbiwgZXhwZWN0cz8gfSlgIOKAlCBzdG9wIG1pZC1zdGFnZSB0byBhc2sgYSBxdWVzdGlvbixcbiAqIGFuZCBnZXQgdGhlIGFuc3dlciBiYWNrIGF0IHRoZSBzYW1lIGNhbGwgc2l0ZSB3aGVuIHRoZSBydW4gcmVzdW1lcy4gUmVzdW1lXG4gKiByZS1lbnRlcnMgdGhlIHN0YWdlIGZyb20gaXRzIFRPUCAoc3RhZ2VzIGFyZSBhdG9taWMpLCBzbyBrZWVwIHRoZSBoYWxmXG4gKiBiZWZvcmUgdGhlIGNhbGwgaWRlbXBvdGVudC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBJbnRlcnJ1cHRQYXlsb2FkIH0gZnJvbSAnLi9saWIvcGF1c2UvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFBhdXNlL1Jlc3VtZSAqL1xuZXhwb3J0IHsgaW50ZXJydXB0IH0gZnJvbSAnLi9saWIvcGF1c2UvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IFNjb3BlUmVjb3JkZXIgKi9cbmV4cG9ydCB0eXBlIHsgQ29tcG9zaXRlU25hcHNob3QgfSBmcm9tICcuL2xpYi9yZWNvcmRlci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbmZpZ3VyYXRpb24g4oCUIFR5cGVzIHBhc3NlZCB0byBGbG93Q2hhcnRFeGVjdXRvciBhbmQgcnVuKClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uICovXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvbkVudiwgRXhlY3V0b3JSZXN1bHQsIFBhdXNlZFJlc3VsdCwgUnVuT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8qKiBAY2F0ZWdvcnkgQ29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IHR5cGUgeyBTY29wZUZhY3RvcnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBDb25maWd1cmF0aW9uXG4gKlxuICogUmVhZC10cmFja2luZyBwb2xpY3kgZm9yIGBTdGFnZVNuYXBzaG90LnN0YWdlUmVhZHNgICgjMTQpOlxuICogYCdmdWxsJ2AgKGRlZmF1bHQg4oCUIHBlci1yZWFkIHZhbHVlIGNsb25lLCBoaXN0b3JpY2FsIGJlaGF2aW9yKSAvXG4gKiBgJ3N1bW1hcnknYCAoY2hlYXAgYFJlYWRTdW1tYXJ5TWFya2VyYCBwZXIgcmVhZCkgLyBgJ29mZidgIChubyB0cmFja2luZyxcbiAqIHplcm8gcGVyLXJlYWQgY2xvbmUpLiBQYXNzIGFzIGBuZXcgRmxvd0NoYXJ0RXhlY3V0b3IoY2hhcnQsIHsgcmVhZFRyYWNraW5nIH0pYFxuICogb3IgY2FsbCBgZXhlY3V0b3Iuc2V0UmVhZFRyYWNraW5nKG1vZGUpYCBiZWZvcmUgYHJ1bigpYC5cbiAqL1xuZXhwb3J0IHR5cGUgeyBSZWFkU3VtbWFyeU1hcmtlciwgUmVhZFRyYWNraW5nTW9kZSB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb25cbiAqXG4gKiBXcml0ZS10cmFja2luZyBwb2xpY3kgZm9yIGBTdGFnZVNuYXBzaG90LnN0YWdlV3JpdGVzYCAoIzEzYy1BKSDigJQgdGhlXG4gKiBzaWJsaW5nIG9mIGBSZWFkVHJhY2tpbmdNb2RlYDsgYm90aCBhbGlhcyB0aGUgc2hhcmVkIGBSZXRlbnRpb25Qb2xpY3lgXG4gKiBmYW1pbHkgZnJvbSBgbGliL2NhcHR1cmVgLiBgJ2Z1bGwnYCAoZGVmYXVsdCDigJQgcGVyLXdyaXRlIHZhbHVlIGNsb25lLFxuICogaGlzdG9yaWNhbCBiZWhhdmlvcikgLyBgJ3N1bW1hcnknYCAoY2hlYXAgYFdyaXRlU3VtbWFyeU1hcmtlcmAgcGVyIHdyaXRlKVxuICogLyBgJ29mZidgIChubyB0cmFja2luZzsgYHN0YWdlV3JpdGVzYCBhYnNlbnQgYW5kIHRoZSBgb25Db21taXRgIG11dGF0aW9uc1xuICogcGF5bG9hZCBpcyBlbXB0eSDigJQgd3JpdGVzIHRoZW1zZWx2ZXMgc3RpbGwgY29tbWl0LCBhbmQgdGhlIGNvbW1pdCBsb2cgaXNcbiAqIHVuYWZmZWN0ZWQpLiBQYXNzIGFzIGBuZXcgRmxvd0NoYXJ0RXhlY3V0b3IoY2hhcnQsIHsgd3JpdGVUcmFja2luZyB9KWAgb3JcbiAqIGNhbGwgYGV4ZWN1dG9yLnNldFdyaXRlVHJhY2tpbmcobW9kZSlgIGJlZm9yZSBgcnVuKClgLlxuICovXG5leHBvcnQgdHlwZSB7IFJldGVudGlvblBvbGljeSwgV3JpdGVTdW1tYXJ5TWFya2VyLCBXcml0ZVRyYWNraW5nTW9kZSB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8qKlxuICogQGNhdGVnb3J5IENvbmZpZ3VyYXRpb25cbiAqXG4gKiBDb21taXQtdmFsdWVzIGVuY29kaW5nIGZvciB0aGUgQ09NTUlUIExPRyAoIzEzYy1CKSDigJQgdGhlIHRoaXJkIGRpYWwgb2ZcbiAqIHRoZSBmYW1pbHksIGFuZCB0aGUgb25seSBMT1NTTEVTUyBvbmUgKGl0IGNoYW5nZXMgdGhlIGxvZydzIGVuY29kaW5nLFxuICogbmV2ZXIgaXRzIGluZm9ybWF0aW9uKS4gYCdmdWxsJ2AgKGRlZmF1bHQg4oCUIGV2ZXJ5IHN1cnZpdmluZyBgc2V0YCBzdG9yZXNcbiAqIHRoZSBmdWxsIGZpbmFsIHZhbHVlLCBieXRlLWlkZW50aWNhbCB0byBoaXN0b3J5KSAvIGAnZGVsdGEnYCAoYXJyYXlcbiAqIG5ldC1jaGFuZ2VzIHRoYXQgYXJlIFwiYmFzZSBwbHVzIGEgdGFpbFwiIGNvbW1pdCBhcyBhbiBgYXBwZW5kYCB2ZXJiXG4gKiBzdG9yaW5nIG9ubHkgdGhlIHRhaWw7IGBkZWxldGVWYWx1ZSgpYCBjb21taXRzIGFzIGEgcmVhbCBgZGVsZXRlYCB2ZXJiO1xuICogb25lIHRyYWNlIGVudHJ5IHBlciBzdXJ2aXZpbmcgcGF0aCkuIFJlcGxheSByZWNvbnN0cnVjdHMgZXZlcnkgc3RlcCdzXG4gKiBmdWxsIHN0YXRlIGV4YWN0bHkuIENvbnN1bWVycyByZWFkaW5nIGBidW5kbGUub3ZlcndyaXRlW2tleV1gIGFzIHRoZSBmdWxsXG4gKiB2YWx1ZSBtdXN0IHVzZSBgY29tbWl0VmFsdWVBdGAgZnJvbSBgZm9vdHByaW50anMvdHJhY2VgLiBQYXNzIGFzXG4gKiBgbmV3IEZsb3dDaGFydEV4ZWN1dG9yKGNoYXJ0LCB7IGNvbW1pdFZhbHVlcyB9KWAgb3IgY2FsbFxuICogYGV4ZWN1dG9yLnNldENvbW1pdFZhbHVlcyhtb2RlKWAgYmVmb3JlIGBydW4oKWA7IHRoZSBhY3RpdmUgbW9kZSBpcyB0aGVcbiAqIHNuYXBzaG90IGRpc2NyaW1pbmFudCBgZ2V0U25hcHNob3QoKS5jb21taXRWYWx1ZXNgLlxuICovXG5leHBvcnQgdHlwZSB7IENvbW1pdFZhbHVlc01vZGUgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb250cmFjdCAmIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIEBjYXRlZ29yeSBDb250cmFjdCAmIFZhbGlkYXRpb24gKi9cbmV4cG9ydCB0eXBlIHsgU2NoZW1hS2luZCwgVmFsaWRhdGlvbklzc3VlLCBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcblxuLyoqIEBjYXRlZ29yeSBDb250cmFjdCAmIFZhbGlkYXRpb24gKi9cbmV4cG9ydCB7IGRldGVjdFNjaGVtYSwgaXNWYWxpZGF0YWJsZSwgaXNab2QgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IENvbnRyYWN0ICYgVmFsaWRhdGlvbiAqL1xuZXhwb3J0IHsgSW5wdXRWYWxpZGF0aW9uRXJyb3IsIHZhbGlkYXRlQWdhaW5zdFNjaGVtYSwgdmFsaWRhdGVPclRocm93IH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRXJyb3IgVXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBAY2F0ZWdvcnkgRXJyb3IgVXRpbGl0aWVzICovXG5leHBvcnQgdHlwZSB7IFN0cnVjdHVyZWRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vKiogQGNhdGVnb3J5IEVycm9yIFV0aWxpdGllcyAqL1xuZXhwb3J0IHsgZXh0cmFjdEVycm9ySW5mbywgZm9ybWF0RXJyb3JJbmZvIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGV2IFRvb2xzIOKAlCBNb2RlIGZsYWdzIGFuZCBab2Qgc2NvcGUgdXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQGNhdGVnb3J5IERldiBUb29sc1xuICpcbiAqIEdsb2JhbCBkZXYtbW9kZSBmbGFnLiBDYWxsIGBlbmFibGVEZXZNb2RlKClgIGF0IGFwcGxpY2F0aW9uIHN0YXJ0dXAgdG9cbiAqIHR1cm4gb24gZGV2ZWxvcGVyLW9ubHkgZGlhZ25vc3RpY3MgYWNyb3NzIHRoZSBsaWJyYXJ5IOKAlCBjaXJjdWxhci1yZWZlcmVuY2VcbiAqIGRldGVjdGlvbiBpbiBzY29wZSB3cml0ZXMsIHdhcm5pbmdzIHdoZW4gYSByZWNvcmRlciBoYXMgbm8gb2JzZXJ2ZXJcbiAqIG1ldGhvZHMsIHN1c3BpY2lvdXMtcHJlZGljYXRlIHdhcm5pbmdzIGluIGRlY2lkZS9zZWxlY3QsIHN0cnVjdHVyYWxcbiAqIGNoZWNrcyBpbiBgZ2V0U3VidHJlZVNuYXBzaG90YCwgYW5kIGFueSBmdXR1cmUgZGV2LW9ubHkgZGlhZ25vc3RpYy5cbiAqXG4gKiBQcm9kdWN0aW9uIGxlYXZlcyBpdCBPRkYgYnkgZGVmYXVsdCAoemVybyBvdmVyaGVhZCkuIFNlZSB0aGUgSlNEb2Mgb25cbiAqIGBlbmFibGVEZXZNb2RlYCBmb3IgdGhlIGZ1bGwgbGlzdCBhbmQgdXNhZ2UgZXhhbXBsZS5cbiAqL1xuZXhwb3J0IHsgZGlzYWJsZURldk1vZGUsIGVuYWJsZURldk1vZGUsIGlzRGV2TW9kZSB9IGZyb20gJy4vbGliL3Njb3BlL2RldGVjdENpcmN1bGFyLmpzJztcblxuLy8gYGRlZmluZVNjb3BlRnJvbVpvZGAgYW5kIHRoZSBvdGhlciB6b2QtYmFzZWQgc2NvcGUgaGVscGVycyBtb3ZlZCB0byB0aGUgb3B0LWluXG4vLyBgZm9vdHByaW50anMvem9kYCBlbnRyeSDigJQga2VlcGluZyB6b2Qgb3V0IG9mIHRoZSBjb3JlIGxvYWQgcGF0aCAoaXQgaXMgYW5cbi8vIG9wdGlvbmFsIHBlZXIpLiBJbXBvcnQgdGhlbSBmcm9tICdmb290cHJpbnRqcy96b2QnLlxuIl19
|