footprintjs 9.44.1 → 9.44.3
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 +6 -5
- package/dist/esm/lib/capture/freeze.d.ts +51 -7
- package/dist/esm/lib/capture/freeze.js +289 -24
- package/dist/esm/lib/capture/valueKinds.d.ts +57 -0
- package/dist/esm/lib/capture/valueKinds.js +142 -0
- package/dist/esm/lib/memory/EventLog.d.ts +25 -7
- package/dist/esm/lib/memory/EventLog.js +31 -11
- package/dist/esm/lib/memory/StageContext.d.ts +4 -33
- package/dist/esm/lib/memory/StageContext.js +18 -81
- package/dist/esm/lib/memory/TransactionBuffer.js +2 -2
- package/dist/esm/lib/memory/admission.js +4 -3
- package/dist/esm/lib/memory/borrowedMutation.js +2 -2
- package/dist/esm/lib/memory/equality.d.ts +55 -19
- package/dist/esm/lib/memory/equality.js +154 -51
- package/dist/esm/lib/memory/logModel.js +11 -4
- package/dist/esm/lib/memory/recordCommit.d.ts +43 -0
- package/dist/esm/lib/memory/recordCommit.js +59 -0
- package/dist/esm/lib/memory/redaction.d.ts +1 -1
- package/dist/esm/lib/memory/redaction.js +2 -2
- package/dist/esm/lib/runner/ExecutionRuntime.d.ts +6 -3
- package/dist/esm/lib/runner/ExecutionRuntime.js +17 -12
- package/dist/esm/lib/runner/snapshot.js +17 -3
- package/dist/esm/lib/slice/elementProvenance.js +2 -2
- package/dist/esm/lib/time-travel/chain.js +28 -26
- package/dist/lib/capture/freeze.js +292 -25
- package/dist/lib/capture/valueKinds.js +146 -0
- package/dist/lib/memory/EventLog.js +30 -10
- package/dist/lib/memory/StageContext.js +17 -80
- package/dist/lib/memory/TransactionBuffer.js +2 -2
- package/dist/lib/memory/admission.js +4 -3
- package/dist/lib/memory/borrowedMutation.js +2 -2
- package/dist/lib/memory/equality.js +154 -51
- package/dist/lib/memory/logModel.js +11 -4
- package/dist/lib/memory/recordCommit.js +63 -0
- package/dist/lib/memory/redaction.js +2 -2
- package/dist/lib/runner/ExecutionRuntime.js +16 -11
- package/dist/lib/runner/snapshot.js +16 -2
- package/dist/lib/slice/elementProvenance.js +2 -2
- package/dist/lib/time-travel/chain.js +27 -25
- package/dist/types/lib/capture/freeze.d.ts +51 -7
- package/dist/types/lib/capture/valueKinds.d.ts +57 -0
- package/dist/types/lib/memory/EventLog.d.ts +25 -7
- package/dist/types/lib/memory/StageContext.d.ts +4 -33
- package/dist/types/lib/memory/equality.d.ts +55 -19
- package/dist/types/lib/memory/recordCommit.d.ts +43 -0
- package/dist/types/lib/memory/redaction.d.ts +1 -1
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +6 -3
- package/package.json +2 -1
|
@@ -9,16 +9,22 @@
|
|
|
9
9
|
* row's `readKeys`, `redactedPaths`, `tags`, `untrackedSources` — so a holder of a snapshot can no
|
|
10
10
|
* longer rewrite the history every later answer is folded from: an assignment into a bundle throws
|
|
11
11
|
* a `TypeError` in strict code. Safe because nothing outside the log holds a bundle's containers:
|
|
12
|
-
* the log's payload is the commit's own copy (`
|
|
12
|
+
* the log's payload is the commit's own copy (`recordCommit` hands it the output of
|
|
13
13
|
* `scrubPatch`), and live state, the redacted mirror and write retention each take their own copy
|
|
14
14
|
* (`verbs.ts · foldRows` detaches, `StageContext · retainedForm` clones) — pinned by
|
|
15
15
|
* test/lib/memory/property/record-reachability.property.test.ts.
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
17
|
+
* What `Object.freeze` cannot seal — a Date's time, a Map's or Set's entries, a buffer's bytes, a
|
|
18
|
+
* RegExp, an Error's stack — is never handed out to a reader (9.44.2): `record` remembers that a
|
|
19
|
+
* bundle holds such a value (`capture/freeze.ts · freezeRecord`), and `list()` — like the public
|
|
20
|
+
* snapshot, `runner/snapshot.ts · servedSnapshot` — serves that bundle as a copy of its open paths
|
|
21
|
+
* (`serveRecord`, mapped at its first serve): fresh frozen containers down to each such value, a
|
|
22
|
+
* fresh copy of it, every other part the log's own. A reader edits only its own copy; every later
|
|
23
|
+
* serve reads the record as recorded. `recorded()` is the engine's own, unserved read. Named holes: an object hung on an array EXPANDO (arrays are walked
|
|
24
|
+
* by index — the `'indices'` walk, which keeps the freeze inside its budget; an expando is out of
|
|
25
|
+
* contract for state) and a `SharedArrayBuffer` (every copy shares its memory). A frozen RegExp's
|
|
26
|
+
* `lastIndex` is read-only, so a `/g` or `/y` regex read from a bundle throws when `exec` or
|
|
27
|
+
* `replace` advance it.
|
|
22
28
|
*/
|
|
23
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
30
|
exports.EventLog = void 0;
|
|
@@ -91,12 +97,26 @@ class EventLog {
|
|
|
91
97
|
*/
|
|
92
98
|
record(bundle) {
|
|
93
99
|
bundle.idx = this.steps.length;
|
|
94
|
-
(0, freeze_js_1.
|
|
100
|
+
(0, freeze_js_1.freezeRecord)(bundle, 'indices');
|
|
95
101
|
this.steps.push(bundle);
|
|
96
102
|
}
|
|
97
|
-
/**
|
|
103
|
+
/**
|
|
104
|
+
* Every recorded commit bundle, AS SERVED (9.44.2): a new array each call; a bundle freezing sealed
|
|
105
|
+
* whole is the log's own (frozen) object, one holding a Date, Map, buffer … is a copy of its open
|
|
106
|
+
* paths (`capture/freeze.ts · serveRecord`) — the reader's own, so no edit reaches the log.
|
|
107
|
+
*/
|
|
98
108
|
list() {
|
|
99
|
-
return this.steps;
|
|
109
|
+
return this.steps.map(freeze_js_1.serveRecord);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* @internal The bundles as the log holds them — each frozen, NOT served — in a new array, so a holder's
|
|
113
|
+
* `splice` reaches only its own. For the engine's own snapshot (`ExecutionRuntime · getSnapshot`, which
|
|
114
|
+
* a subflow mount takes once per mount), so the run serves nothing; a reader is served by `list()` and
|
|
115
|
+
* `getSnapshot().commitLog`. A known open door (CHANGELOG 9.44.2): a holder of these bundles can still
|
|
116
|
+
* edit a Date, Map or buffer inside them.
|
|
117
|
+
*/
|
|
118
|
+
recorded() {
|
|
119
|
+
return this.steps.slice();
|
|
100
120
|
}
|
|
101
121
|
/** Number of recorded commits. */
|
|
102
122
|
get length() {
|
|
@@ -129,4 +149,4 @@ class EventLog {
|
|
|
129
149
|
}
|
|
130
150
|
}
|
|
131
151
|
exports.EventLog = EventLog;
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRMb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21lbW9yeS9FdmVudExvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFFSCxvREFBa0Q7QUFHbEQseUNBQWlEO0FBRWpELE1BQWEsUUFBUTtJQUNuQiw2REFBNkQ7SUFDckQsSUFBSSxDQUFNO0lBQ2xCLHNDQUFzQztJQUM5QixLQUFLLEdBQW1CLEVBQUUsQ0FBQztJQUMzQixhQUFhLENBQWM7SUFDM0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBRXJDLFlBQVksYUFBa0I7UUFDNUIsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGVBQWU7UUFDYixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBQSw4QkFBbUIsRUFBQyxHQUFHLEVBQUUsT0FBc0IsRUFBRSxTQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxNQUFvQjtRQUN6QixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUEsc0JBQVUsRUFBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELHVGQUF1RjtJQUN2RixJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsd0ZBQXdGO0lBQ3hGLFdBQVcsQ0FBQyxRQUFnQixFQUFFLFNBQTRCO1FBQ3hELElBQUksSUFBSSxDQUFDLG9CQUFvQjtZQUFFLE9BQU87UUFDdEMsSUFBSSxDQUFDLGFBQWEsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsK0ZBQStGO0lBQy9GLGVBQWUsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsOENBQThDO0lBQzlDLEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQix3RUFBd0U7UUFDeEUsc0VBQXNFO1FBQ3RFLHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQS9HRCw0QkErR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV2ZW50TG9nIOKAlCBUaW1lLXRyYXZlbCBzbmFwc2hvdCBzdG9yYWdlIGZvciBmbG93Y2hhcnQgZXhlY3V0aW9uXG4gKlxuICogTGlrZSBnaXQgaGlzdG9yeTogc3RvcmVzIGNvbW1pdCBidW5kbGVzIChkaWZmcyksIG5vdCBmdWxsIHNuYXBzaG90cy5cbiAqXG4gKiBUSEUgUkVDT1JEIElTIElNTVVUQUJMRSBGUk9NIGByZWNvcmRgIChGMywgcnVsaW5nIFIzKS4gRXZlcnkgYnVuZGxlIGlzIGRlZXAtZnJvemVuIGFzIGl0IGlzXG4gKiByZWNvcmRlZCDigJQgdGhlIGJ1bmRsZSwgYG92ZXJ3cml0ZWAgYW5kIGB1cGRhdGVzYCBhdCBldmVyeSBkZXB0aCwgdGhlIHRyYWNlIGFuZCBlYWNoIHJvdywgdGhlXG4gKiByb3cncyBgcmVhZEtleXNgLCBgcmVkYWN0ZWRQYXRoc2AsIGB0YWdzYCwgYHVudHJhY2tlZFNvdXJjZXNgIOKAlCBzbyBhIGhvbGRlciBvZiBhIHNuYXBzaG90IGNhbiBub1xuICogbG9uZ2VyIHJld3JpdGUgdGhlIGhpc3RvcnkgZXZlcnkgbGF0ZXIgYW5zd2VyIGlzIGZvbGRlZCBmcm9tOiBhbiBhc3NpZ25tZW50IGludG8gYSBidW5kbGUgdGhyb3dzXG4gKiBhIGBUeXBlRXJyb3JgIGluIHN0cmljdCBjb2RlLiBTYWZlIGJlY2F1c2Ugbm90aGluZyBvdXRzaWRlIHRoZSBsb2cgaG9sZHMgYSBidW5kbGUncyBjb250YWluZXJzOlxuICogdGhlIGxvZydzIHBheWxvYWQgaXMgdGhlIGNvbW1pdCdzIG93biBjb3B5IChgU3RhZ2VDb250ZXh0IMK3IGNvbW1pdGAgaGFuZHMgaXQgdGhlIG91dHB1dCBvZlxuICogYHNjcnViUGF0Y2hgKSwgYW5kIGxpdmUgc3RhdGUsIHRoZSByZWRhY3RlZCBtaXJyb3IgYW5kIHdyaXRlIHJldGVudGlvbiBlYWNoIHRha2UgdGhlaXIgb3duIGNvcHlcbiAqIChgdmVyYnMudHMgwrcgZm9sZFJvd3NgIGRldGFjaGVzLCBgU3RhZ2VDb250ZXh0IMK3IHJldGFpbmVkRm9ybWAgY2xvbmVzKSDigJQgcGlubmVkIGJ5XG4gKiB0ZXN0L2xpYi9tZW1vcnkvcHJvcGVydHkvcmVjb3JkLXJlYWNoYWJpbGl0eS5wcm9wZXJ0eS50ZXN0LnRzLlxuICpcbiAqIE5hbWVkIGhvbGVzIOKAlCB3aGF0IGBPYmplY3QuZnJlZXplYCBjYW5ub3QgcmVhY2ggc3RheXMgbXV0YWJsZTogTWFwIGFuZCBTZXQgY29udGVudHMsIGEgRGF0ZSdzXG4gKiB0aW1lLCB0aGUgYnl0ZXMgb2YgYSB0eXBlZCBhcnJheSAoc2tpcHBlZDogYSBub24tZW1wdHkgb25lIGNhbm5vdCBiZSBmcm96ZW4pLCBhbmQgYW4gb2JqZWN0IGh1bmdcbiAqIG9uIGFuIGFycmF5IEVYUEFORE8gKGFycmF5cyBhcmUgd2Fsa2VkIGJ5IGluZGV4IOKAlCBgZGVlcEZyZWV6ZWAncyBgJ2luZGljZXMnYCB3YWxrLCB3aGljaCBrZWVwc1xuICogdGhlIGZyZWV6ZSBpbnNpZGUgaXRzIGJ1ZGdldCkuIEEgZnJvemVuIFJlZ0V4cCdzIGBsYXN0SW5kZXhgIGlzIHJlYWQtb25seSwgc28gYSBgL2dgIG9yIGAveWBcbiAqIHJlZ2V4IHJlYWQgZnJvbSBhIGJ1bmRsZSB0aHJvd3Mgd2hlbiBgZXhlY2Agb3IgYHJlcGxhY2VgIGFkdmFuY2UgaXQuXG4gKi9cblxuaW1wb3J0IHsgZGVlcEZyZWV6ZSB9IGZyb20gJy4uL2NhcHR1cmUvZnJlZXplLmpzJztcbmltcG9ydCB0eXBlIHsgRW1pdFNvdXJjZVBvc2l0aW9uLCBMb2dBZGRyZXNzIH0gZnJvbSAnLi9ldmVudFBvc2l0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgQ29tbWl0QnVuZGxlLCBNZW1vcnlQYXRjaCB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgYXBwbHlTbWFydE1lcmdlSW50byB9IGZyb20gJy4vdXRpbHMuanMnO1xuXG5leHBvcnQgY2xhc3MgRXZlbnRMb2cge1xuICAvKiogQmFzZSBzbmFwc2hvdCBCRUZPUkUgdGhlIGZpcnN0IHN0YWdlIG11dGF0ZXMgYW55dGhpbmcuICovXG4gIHByaXZhdGUgYmFzZTogYW55O1xuICAvKiogT3JkZXJlZCBsaXN0IG9mIGNvbW1pdCBidW5kbGVzLiAqL1xuICBwcml2YXRlIHN0ZXBzOiBDb21taXRCdW5kbGVbXSA9IFtdO1xuICBwcml2YXRlIHNvdXJjZUFkZHJlc3M/OiBMb2dBZGRyZXNzO1xuICBwcml2YXRlIHNvdXJjZUFkZHJlc3NSZXRpcmVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoaW5pdGlhbE1lbW9yeTogYW55KSB7XG4gICAgLy8gTm9ybWFsaXNlZCB0byBhbiBvYmplY3Q6IHRoZSBiYXNlIGlzIGEgU1RBVEUsIGFuZCBldmVyeSBmb2xkIG92ZXIgaXRcbiAgICAvLyAoYG1hdGVyaWFsaXNlYCwgYHN0YXRlQXRgKSBhcHBsaWVzIHBhdGggd3JpdGVzIHRvIGl0LiBgdW5kZWZpbmVkYCDigJRcbiAgICAvLyB3aGF0IGEgcnVuIHdpdGggbm8gYGluaXRpYWxDb250ZXh0YCB1c2VkIHRvIHN0b3JlIGhlcmUg4oCUIG1hZGUgZXZlcnlcbiAgICAvLyBvbmUgb2YgdGhvc2UgZm9sZHMgdGhyb3cgb24gdGhlIGZpcnN0IGBzZXRgLlxuICAgIHRoaXMuYmFzZSA9IGluaXRpYWxNZW1vcnkgPT09IHVuZGVmaW5lZCA/IHt9IDogc3RydWN0dXJlZENsb25lKGluaXRpYWxNZW1vcnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkIEJBU0Ug4oCUIHRoZSBzdGF0ZSBhcyBpdCBzdG9vZCBiZWZvcmUgdGhlIGZpcnN0IGNvbW1pdC5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgb3RoZXIgaGFsZiBvZiB0aGUgY29tbWl0IGxvZzogYnVuZGxlcyBhcmUgRElGRlMsIHNvIGEgbG9nXG4gICAqIGFsb25lIGNhbm5vdCByZWNvbnN0cnVjdCBzdGF0ZSB0aGF0IHdhcyBzZWVkZWQgYmVmb3JlIHRoZSBydW4gKGFuXG4gICAqIGV4ZWN1dG9yIGBpbml0aWFsQ29udGV4dGAsIGBkZWZhdWx0VmFsdWVzRm9yQ29udGV4dGAsIGEgcmVzdW1lJ3NcbiAgICogYGNoZWNrcG9pbnQuc2hhcmVkU3RhdGVgLCBhIHN1YmZsb3cncyBgaW5wdXRNYXBwZXJgIHNlZWQpLiBUcmF2ZWxsaW5nXG4gICAqIHdpdGggdGhlIGxvZyDigJQgYFJ1bnRpbWVTbmFwc2hvdC5pbml0aWFsU3RhdGVgIOKAlCBpcyB3aGF0IGxldHMgYW4gT0ZGTElORVxuICAgKiBjb25zdW1lciBmb2xkOyB3aXRob3V0IGl0IHRoZSBob25lc3QgYW5zd2VyIGlzIGEgcGFydGlhbCBvbmVcbiAgICogKGBzdGF0ZUF0YCdzIGBiYXNpczogJ2xvZy1vbmx5J2ApLlxuICAgKlxuICAgKiBSZXR1cm5zIGEgZnJlc2ggZGV0YWNoZWQgY2xvbmUgb24gZXZlcnkgY2FsbCDigJQgdGhlIGNhbGxlciBvd25zIGl0LlxuICAgKi9cbiAgZ2V0SW5pdGlhbFN0YXRlKCk6IGFueSB7XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRDbG9uZSh0aGlzLmJhc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY29uc3RydWN0cyB0aGUgZnVsbCBzdGF0ZSBhdCBhbnkgZ2l2ZW4gc3RlcC5cbiAgICogUmVwbGF5cyBjb21taXRzIGZyb20gdGhlIGJlZ2lubmluZyDigJQgTyhuKSBidXQgbG93IG1lbW9yeSBmb290cHJpbnQuXG4gICAqXG4gICAqIElOREVYIENPTlZFTlRJT04g4oCUIGBzdGVwSWR4YCBpcyBFWENMVVNJVkU6IGBtYXRlcmlhbGlzZSgzKWAgZm9sZHMgY29tbWl0c1xuICAgKiAwLCAxIGFuZCAyLiBgc3RhdGVBdChzb3VyY2UsIGNvbW1pdElkeClgIChmb290cHJpbnRqcy90cmFjZSkgZm9sZHMgdGhlXG4gICAqIHNhbWUgbG9nIGJ1dCBpdHMgYGNvbW1pdElkeGAgaXMgSU5DTFVTSVZFLCBiZWNhdXNlIGEgcmVhZGVyJ3MgY3Vyc29yIGFza3NcbiAgICogXCJ0aGUgc3RhdGUgQVQgdGhpcyBzdG9wXCIsIHdoaWNoIG11c3QgaW5jbHVkZSB0aGF0IHN0b3AncyBvd24gY29tbWl0LiBUd29cbiAgICogZm9sZHMgb3ZlciBvbmUgbG9nIHdpdGggb3Bwb3NpdGUgY29udmVudGlvbnM6IGNoZWNrIHdoaWNoIG9uZSB5b3UgaG9sZC5cbiAgICpcbiAgICogT25lIGNsb25lIG9mIHRoZSBiYXNlIHBlciBjYWxsLCB0aGVuIGV2ZXJ5IGJ1bmRsZSByZXBsYXllZCBJTlRPIHRoYXRcbiAgICogcHJpdmF0ZSBjb3B5IChgYXBwbHlTbWFydE1lcmdlSW50b2Ag4oCUIHRoZSBsaXZlIGNvbW1pdCdzIGNvcHktb24td3JpdGUgbGF3XG4gICAqIGJlbG93IHRoZSByb290LCA5LjI5LjAsIHNvIHRoZSBmb2xkIGFuZCB0aGUgbGl2ZSBzdGF0ZSBhZ3JlZSBhdCBldmVyeVxuICAgKiBwYXRoKS4gVGhlIHJlc3VsdCBpcyB0aGUgY2FsbGVyJ3M6IGl0IHNoYXJlcyBub3RoaW5nIHdpdGggdGhlIGJhc2Ugb3JcbiAgICogdGhlIGxvZy5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgU2luY2UgOS4zMy4wIOKAlCB1c2UgYHN0YXRlQXRgIGZyb20gYGZvb3RwcmludGpzL3RyYWNlYCwgd2hpY2ggZm9sZHMgdGhlIHNhbWUgbG9nXG4gICAqIGZyb20gdGhlIHNhbWUgYmFzZSAoYFJ1bnRpbWVTbmFwc2hvdC5pbml0aWFsU3RhdGVgKSBhbmQgc2F5cyBob3cgaXQgd2FzIGRlcml2ZWQgKGBiYXNpc2ApLlxuICAgKiBOb3RoaW5nIGluIHRoZSBsaWJyYXJ5IGNhbGxzIHRoaXM7IGl0IHN0YXlzIGZvciBvbmUgbWlub3IgYW5kIGlzIHRoZW4gcmVtb3ZlZC4gTWluZCB0aGVcbiAgICogaW5kZXg6IGBtYXRlcmlhbGlzZShuKWAgZm9sZHMgY29tbWl0cyBgMC4ubi0xYCwgYHN0YXRlQXQoc291cmNlLCBuIC0gMSlgIHRoZSBzYW1lIGNvbW1pdHMuXG4gICAqL1xuICBtYXRlcmlhbGlzZShzdGVwSWR4ID0gdGhpcy5zdGVwcy5sZW5ndGgpOiBhbnkge1xuICAgIGNvbnN0IG91dCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmJhc2UpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RlcElkeDsgaSsrKSB7XG4gICAgICBjb25zdCB7IG92ZXJ3cml0ZSwgdXBkYXRlcywgdHJhY2UgfSA9IHRoaXMuc3RlcHNbaV07XG4gICAgICBhcHBseVNtYXJ0TWVyZ2VJbnRvKG91dCwgdXBkYXRlcyBhcyBNZW1vcnlQYXRjaCwgb3ZlcndyaXRlIGFzIE1lbW9yeVBhdGNoLCB0cmFjZSk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdHMgYSBjb21taXQgYnVuZGxlIGZvciBhIGZpbmlzaGVkIHN0YWdlLCBhbmQgRlJFRVpFUyBpdCAoc2VlIHRoZSBtb2R1bGUgZG9jKTogdGhlIGJ1bmRsZVxuICAgKiBpcyBzdGFtcGVkIHdpdGggaXRzIHBvc2l0aW9uLCB0aGVuIGRlZXAtZnJvemVuLCB0aGVuIGFwcGVuZGVkLiBUaGUgZW5naW5lIGhhbmRzIGl0IGEgYnVuZGxlXG4gICAqIGJ1aWx0IGZvciB0aGUgbG9nIGFsb25lOyBhIGNhbGxlciBvZiB0aGlzIGNsYXNzIChgZm9vdHByaW50anMvYWR2YW5jZWRgKSBoYW5kcyBvdmVyIGEgYnVuZGxlIGl0XG4gICAqIHdpbGwgbm8gbG9uZ2VyIGVkaXQg4oCUIGl0cyBvd24gb2JqZWN0IGlzIHRoZSBvbmUgZnJvemVuLlxuICAgKi9cbiAgcmVjb3JkKGJ1bmRsZTogQ29tbWl0QnVuZGxlKTogdm9pZCB7XG4gICAgYnVuZGxlLmlkeCA9IHRoaXMuc3RlcHMubGVuZ3RoO1xuICAgIGRlZXBGcmVlemUoYnVuZGxlLCAnaW5kaWNlcycpO1xuICAgIHRoaXMuc3RlcHMucHVzaChidW5kbGUpO1xuICB9XG5cbiAgLyoqIEdldHMgYWxsIHJlY29yZGVkIGNvbW1pdCBidW5kbGVzIOKAlCB0aGUgbGl2ZSBhcnJheTsgZXZlcnkgYnVuZGxlIGluIGl0IGlzIGZyb3plbi4gKi9cbiAgbGlzdCgpOiBDb21taXRCdW5kbGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHM7XG4gIH1cblxuICAvKiogTnVtYmVyIG9mIHJlY29yZGVkIGNvbW1pdHMuICovXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5sZW5ndGg7XG4gIH1cblxuICAvKiogSW1tdXRhYmxlIGlkZW50aXR5IG9mIHRoaXMgbG9nLCBhYnNlbnQgdW50aWwgdGhlIGVuZ2luZSBiaW5kcyBpdC4gKi9cbiAgZ2V0IGFkZHJlc3MoKTogTG9nQWRkcmVzcyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlQWRkcmVzcztcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgQmluZCBvbmNlOyByZXN1bWluZyB0aGUgc2FtZSBsb2cgbXVzdCBub3QgcmVuYW1lIGl0cyBlYXJsaWVyIHBvc2l0aW9ucy4gKi9cbiAgYmluZEFkZHJlc3MobG9nUnVuSWQ6IHN0cmluZywgZHJpbGxQYXRoOiByZWFkb25seSBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNvdXJjZUFkZHJlc3NSZXRpcmVkKSByZXR1cm47XG4gICAgdGhpcy5zb3VyY2VBZGRyZXNzID8/PSBPYmplY3QuZnJlZXplKHsgbG9nUnVuSWQsIGRyaWxsUGF0aDogT2JqZWN0LmZyZWV6ZShbLi4uZHJpbGxQYXRoXSkgfSk7XG4gIH1cblxuICAvKiogTygxKSBzb3VyY2UtdGltZSBjYXB0dXJlLiBObyBjb3VudGVyLCBvYnNlcnZlciBib29ra2VlcGluZywgb3IgZnV0dXJlIGNvbW1pdCBwcmVkaWN0aW9uLiAqL1xuICBjYXB0dXJlUG9zaXRpb24ocnVuSWQ6IHN0cmluZyk6IEVtaXRTb3VyY2VQb3NpdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnNvdXJjZUFkZHJlc3MpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUoeyBydW5JZCwgLi4udGhpcy5zb3VyY2VBZGRyZXNzLCBjb21taXR0ZWRUaHJvdWdoSWR4OiB0aGlzLnN0ZXBzLmxlbmd0aCAtIDEgfSk7XG4gIH1cblxuICAvKiogV2lwZXMgaGlzdG9yeSAodXNlZnVsIGZvciB0ZXN0IHJlc2V0cykuICovXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RlcHMgPSBbXTtcbiAgICAvLyBBIHJlc2V0IHByZWZpeCBjYW5ub3QgcmV1c2Ugb2xkIGNvb3JkaW5hdGVzLCBldmVuIGlmIGFub3RoZXIgc3RhZ2Ugb2ZcbiAgICAvLyB0aGUgU0FNRSBsZWcgYmluZHMgaXQgYWdhaW4uIEtlZXAgY2xlYXIncyBkYXRhIGJlaGF2aW9yLCBidXQgcmV0aXJlXG4gICAgLy8gYWRkcmVzc2luZyBmb3IgdGhpcyBsb2c7IGtub3duIGNvb3JkaW5hdGVzIHJlcXVpcmUgYSBmcmVzaCBFdmVudExvZy5cbiAgICB0aGlzLnNvdXJjZUFkZHJlc3MgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zb3VyY2VBZGRyZXNzUmV0aXJlZCA9IHRydWU7XG4gIH1cbn1cbiJdfQ==
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRMb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21lbW9yeS9FdmVudExvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHOzs7QUFFSCxvREFBaUU7QUFHakUseUNBQWlEO0FBRWpELE1BQWEsUUFBUTtJQUNuQiw2REFBNkQ7SUFDckQsSUFBSSxDQUFNO0lBQ2xCLHNDQUFzQztJQUM5QixLQUFLLEdBQW1CLEVBQUUsQ0FBQztJQUMzQixhQUFhLENBQWM7SUFDM0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBRXJDLFlBQVksYUFBa0I7UUFDNUIsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGVBQWU7UUFDYixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBQSw4QkFBbUIsRUFBQyxHQUFHLEVBQUUsT0FBc0IsRUFBRSxTQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxNQUFvQjtRQUN6QixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUEsd0JBQVksRUFBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyx1QkFBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCx3RkFBd0Y7SUFDeEYsV0FBVyxDQUFDLFFBQWdCLEVBQUUsU0FBNEI7UUFDeEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CO1lBQUUsT0FBTztRQUN0QyxJQUFJLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCwrRkFBK0Y7SUFDL0YsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHdFQUF3RTtRQUN4RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBOUhELDRCQThIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXZlbnRMb2cg4oCUIFRpbWUtdHJhdmVsIHNuYXBzaG90IHN0b3JhZ2UgZm9yIGZsb3djaGFydCBleGVjdXRpb25cbiAqXG4gKiBMaWtlIGdpdCBoaXN0b3J5OiBzdG9yZXMgY29tbWl0IGJ1bmRsZXMgKGRpZmZzKSwgbm90IGZ1bGwgc25hcHNob3RzLlxuICpcbiAqIFRIRSBSRUNPUkQgSVMgSU1NVVRBQkxFIEZST00gYHJlY29yZGAgKEYzLCBydWxpbmcgUjMpLiBFdmVyeSBidW5kbGUgaXMgZGVlcC1mcm96ZW4gYXMgaXQgaXNcbiAqIHJlY29yZGVkIOKAlCB0aGUgYnVuZGxlLCBgb3ZlcndyaXRlYCBhbmQgYHVwZGF0ZXNgIGF0IGV2ZXJ5IGRlcHRoLCB0aGUgdHJhY2UgYW5kIGVhY2ggcm93LCB0aGVcbiAqIHJvdydzIGByZWFkS2V5c2AsIGByZWRhY3RlZFBhdGhzYCwgYHRhZ3NgLCBgdW50cmFja2VkU291cmNlc2Ag4oCUIHNvIGEgaG9sZGVyIG9mIGEgc25hcHNob3QgY2FuIG5vXG4gKiBsb25nZXIgcmV3cml0ZSB0aGUgaGlzdG9yeSBldmVyeSBsYXRlciBhbnN3ZXIgaXMgZm9sZGVkIGZyb206IGFuIGFzc2lnbm1lbnQgaW50byBhIGJ1bmRsZSB0aHJvd3NcbiAqIGEgYFR5cGVFcnJvcmAgaW4gc3RyaWN0IGNvZGUuIFNhZmUgYmVjYXVzZSBub3RoaW5nIG91dHNpZGUgdGhlIGxvZyBob2xkcyBhIGJ1bmRsZSdzIGNvbnRhaW5lcnM6XG4gKiB0aGUgbG9nJ3MgcGF5bG9hZCBpcyB0aGUgY29tbWl0J3Mgb3duIGNvcHkgKGByZWNvcmRDb21taXRgIGhhbmRzIGl0IHRoZSBvdXRwdXQgb2ZcbiAqIGBzY3J1YlBhdGNoYCksIGFuZCBsaXZlIHN0YXRlLCB0aGUgcmVkYWN0ZWQgbWlycm9yIGFuZCB3cml0ZSByZXRlbnRpb24gZWFjaCB0YWtlIHRoZWlyIG93biBjb3B5XG4gKiAoYHZlcmJzLnRzIMK3IGZvbGRSb3dzYCBkZXRhY2hlcywgYFN0YWdlQ29udGV4dCDCtyByZXRhaW5lZEZvcm1gIGNsb25lcykg4oCUIHBpbm5lZCBieVxuICogdGVzdC9saWIvbWVtb3J5L3Byb3BlcnR5L3JlY29yZC1yZWFjaGFiaWxpdHkucHJvcGVydHkudGVzdC50cy5cbiAqXG4gKiBXaGF0IGBPYmplY3QuZnJlZXplYCBjYW5ub3Qgc2VhbCDigJQgYSBEYXRlJ3MgdGltZSwgYSBNYXAncyBvciBTZXQncyBlbnRyaWVzLCBhIGJ1ZmZlcidzIGJ5dGVzLCBhXG4gKiBSZWdFeHAsIGFuIEVycm9yJ3Mgc3RhY2sg4oCUIGlzIG5ldmVyIGhhbmRlZCBvdXQgdG8gYSByZWFkZXIgKDkuNDQuMik6IGByZWNvcmRgIHJlbWVtYmVycyB0aGF0IGFcbiAqIGJ1bmRsZSBob2xkcyBzdWNoIGEgdmFsdWUgKGBjYXB0dXJlL2ZyZWV6ZS50cyDCtyBmcmVlemVSZWNvcmRgKSwgYW5kIGBsaXN0KClgIOKAlCBsaWtlIHRoZSBwdWJsaWNcbiAqIHNuYXBzaG90LCBgcnVubmVyL3NuYXBzaG90LnRzIMK3IHNlcnZlZFNuYXBzaG90YCDigJQgc2VydmVzIHRoYXQgYnVuZGxlIGFzIGEgY29weSBvZiBpdHMgb3BlbiBwYXRoc1xuICogKGBzZXJ2ZVJlY29yZGAsIG1hcHBlZCBhdCBpdHMgZmlyc3Qgc2VydmUpOiBmcmVzaCBmcm96ZW4gY29udGFpbmVycyBkb3duIHRvIGVhY2ggc3VjaCB2YWx1ZSwgYVxuICogZnJlc2ggY29weSBvZiBpdCwgZXZlcnkgb3RoZXIgcGFydCB0aGUgbG9nJ3Mgb3duLiBBIHJlYWRlciBlZGl0cyBvbmx5IGl0cyBvd24gY29weTsgZXZlcnkgbGF0ZXJcbiAqIHNlcnZlIHJlYWRzIHRoZSByZWNvcmQgYXMgcmVjb3JkZWQuIGByZWNvcmRlZCgpYCBpcyB0aGUgZW5naW5lJ3Mgb3duLCB1bnNlcnZlZCByZWFkLiBOYW1lZCBob2xlczogYW4gb2JqZWN0IGh1bmcgb24gYW4gYXJyYXkgRVhQQU5ETyAoYXJyYXlzIGFyZSB3YWxrZWRcbiAqIGJ5IGluZGV4IOKAlCB0aGUgYCdpbmRpY2VzJ2Agd2Fsaywgd2hpY2gga2VlcHMgdGhlIGZyZWV6ZSBpbnNpZGUgaXRzIGJ1ZGdldDsgYW4gZXhwYW5kbyBpcyBvdXQgb2ZcbiAqIGNvbnRyYWN0IGZvciBzdGF0ZSkgYW5kIGEgYFNoYXJlZEFycmF5QnVmZmVyYCAoZXZlcnkgY29weSBzaGFyZXMgaXRzIG1lbW9yeSkuIEEgZnJvemVuIFJlZ0V4cCdzXG4gKiBgbGFzdEluZGV4YCBpcyByZWFkLW9ubHksIHNvIGEgYC9nYCBvciBgL3lgIHJlZ2V4IHJlYWQgZnJvbSBhIGJ1bmRsZSB0aHJvd3Mgd2hlbiBgZXhlY2Agb3JcbiAqIGByZXBsYWNlYCBhZHZhbmNlIGl0LlxuICovXG5cbmltcG9ydCB7IGZyZWV6ZVJlY29yZCwgc2VydmVSZWNvcmQgfSBmcm9tICcuLi9jYXB0dXJlL2ZyZWV6ZS5qcyc7XG5pbXBvcnQgdHlwZSB7IEVtaXRTb3VyY2VQb3NpdGlvbiwgTG9nQWRkcmVzcyB9IGZyb20gJy4vZXZlbnRQb3NpdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEJ1bmRsZSwgTWVtb3J5UGF0Y2ggfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IGFwcGx5U21hcnRNZXJnZUludG8gfSBmcm9tICcuL3V0aWxzLmpzJztcblxuZXhwb3J0IGNsYXNzIEV2ZW50TG9nIHtcbiAgLyoqIEJhc2Ugc25hcHNob3QgQkVGT1JFIHRoZSBmaXJzdCBzdGFnZSBtdXRhdGVzIGFueXRoaW5nLiAqL1xuICBwcml2YXRlIGJhc2U6IGFueTtcbiAgLyoqIE9yZGVyZWQgbGlzdCBvZiBjb21taXQgYnVuZGxlcy4gKi9cbiAgcHJpdmF0ZSBzdGVwczogQ29tbWl0QnVuZGxlW10gPSBbXTtcbiAgcHJpdmF0ZSBzb3VyY2VBZGRyZXNzPzogTG9nQWRkcmVzcztcbiAgcHJpdmF0ZSBzb3VyY2VBZGRyZXNzUmV0aXJlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxNZW1vcnk6IGFueSkge1xuICAgIC8vIE5vcm1hbGlzZWQgdG8gYW4gb2JqZWN0OiB0aGUgYmFzZSBpcyBhIFNUQVRFLCBhbmQgZXZlcnkgZm9sZCBvdmVyIGl0XG4gICAgLy8gKGBtYXRlcmlhbGlzZWAsIGBzdGF0ZUF0YCkgYXBwbGllcyBwYXRoIHdyaXRlcyB0byBpdC4gYHVuZGVmaW5lZGAg4oCUXG4gICAgLy8gd2hhdCBhIHJ1biB3aXRoIG5vIGBpbml0aWFsQ29udGV4dGAgdXNlZCB0byBzdG9yZSBoZXJlIOKAlCBtYWRlIGV2ZXJ5XG4gICAgLy8gb25lIG9mIHRob3NlIGZvbGRzIHRocm93IG9uIHRoZSBmaXJzdCBgc2V0YC5cbiAgICB0aGlzLmJhc2UgPSBpbml0aWFsTWVtb3J5ID09PSB1bmRlZmluZWQgPyB7fSA6IHN0cnVjdHVyZWRDbG9uZShpbml0aWFsTWVtb3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZm9sZCBCQVNFIOKAlCB0aGUgc3RhdGUgYXMgaXQgc3Rvb2QgYmVmb3JlIHRoZSBmaXJzdCBjb21taXQuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIG90aGVyIGhhbGYgb2YgdGhlIGNvbW1pdCBsb2c6IGJ1bmRsZXMgYXJlIERJRkZTLCBzbyBhIGxvZ1xuICAgKiBhbG9uZSBjYW5ub3QgcmVjb25zdHJ1Y3Qgc3RhdGUgdGhhdCB3YXMgc2VlZGVkIGJlZm9yZSB0aGUgcnVuIChhblxuICAgKiBleGVjdXRvciBgaW5pdGlhbENvbnRleHRgLCBgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHRgLCBhIHJlc3VtZSdzXG4gICAqIGBjaGVja3BvaW50LnNoYXJlZFN0YXRlYCwgYSBzdWJmbG93J3MgYGlucHV0TWFwcGVyYCBzZWVkKS4gVHJhdmVsbGluZ1xuICAgKiB3aXRoIHRoZSBsb2cg4oCUIGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYCDigJQgaXMgd2hhdCBsZXRzIGFuIE9GRkxJTkVcbiAgICogY29uc3VtZXIgZm9sZDsgd2l0aG91dCBpdCB0aGUgaG9uZXN0IGFuc3dlciBpcyBhIHBhcnRpYWwgb25lXG4gICAqIChgc3RhdGVBdGAncyBgYmFzaXM6ICdsb2ctb25seSdgKS5cbiAgICpcbiAgICogUmV0dXJucyBhIGZyZXNoIGRldGFjaGVkIGNsb25lIG9uIGV2ZXJ5IGNhbGwg4oCUIHRoZSBjYWxsZXIgb3ducyBpdC5cbiAgICovXG4gIGdldEluaXRpYWxTdGF0ZSgpOiBhbnkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5iYXNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbnN0cnVjdHMgdGhlIGZ1bGwgc3RhdGUgYXQgYW55IGdpdmVuIHN0ZXAuXG4gICAqIFJlcGxheXMgY29tbWl0cyBmcm9tIHRoZSBiZWdpbm5pbmcg4oCUIE8obikgYnV0IGxvdyBtZW1vcnkgZm9vdHByaW50LlxuICAgKlxuICAgKiBJTkRFWCBDT05WRU5USU9OIOKAlCBgc3RlcElkeGAgaXMgRVhDTFVTSVZFOiBgbWF0ZXJpYWxpc2UoMylgIGZvbGRzIGNvbW1pdHNcbiAgICogMCwgMSBhbmQgMi4gYHN0YXRlQXQoc291cmNlLCBjb21taXRJZHgpYCAoZm9vdHByaW50anMvdHJhY2UpIGZvbGRzIHRoZVxuICAgKiBzYW1lIGxvZyBidXQgaXRzIGBjb21taXRJZHhgIGlzIElOQ0xVU0lWRSwgYmVjYXVzZSBhIHJlYWRlcidzIGN1cnNvciBhc2tzXG4gICAqIFwidGhlIHN0YXRlIEFUIHRoaXMgc3RvcFwiLCB3aGljaCBtdXN0IGluY2x1ZGUgdGhhdCBzdG9wJ3Mgb3duIGNvbW1pdC4gVHdvXG4gICAqIGZvbGRzIG92ZXIgb25lIGxvZyB3aXRoIG9wcG9zaXRlIGNvbnZlbnRpb25zOiBjaGVjayB3aGljaCBvbmUgeW91IGhvbGQuXG4gICAqXG4gICAqIE9uZSBjbG9uZSBvZiB0aGUgYmFzZSBwZXIgY2FsbCwgdGhlbiBldmVyeSBidW5kbGUgcmVwbGF5ZWQgSU5UTyB0aGF0XG4gICAqIHByaXZhdGUgY29weSAoYGFwcGx5U21hcnRNZXJnZUludG9gIOKAlCB0aGUgbGl2ZSBjb21taXQncyBjb3B5LW9uLXdyaXRlIGxhd1xuICAgKiBiZWxvdyB0aGUgcm9vdCwgOS4yOS4wLCBzbyB0aGUgZm9sZCBhbmQgdGhlIGxpdmUgc3RhdGUgYWdyZWUgYXQgZXZlcnlcbiAgICogcGF0aCkuIFRoZSByZXN1bHQgaXMgdGhlIGNhbGxlcidzOiBpdCBzaGFyZXMgbm90aGluZyB3aXRoIHRoZSBiYXNlIG9yXG4gICAqIHRoZSBsb2cuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIDkuMzMuMCDigJQgdXNlIGBzdGF0ZUF0YCBmcm9tIGBmb290cHJpbnRqcy90cmFjZWAsIHdoaWNoIGZvbGRzIHRoZSBzYW1lIGxvZ1xuICAgKiBmcm9tIHRoZSBzYW1lIGJhc2UgKGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYCkgYW5kIHNheXMgaG93IGl0IHdhcyBkZXJpdmVkIChgYmFzaXNgKS5cbiAgICogTm90aGluZyBpbiB0aGUgbGlicmFyeSBjYWxscyB0aGlzOyBpdCBzdGF5cyBmb3Igb25lIG1pbm9yIGFuZCBpcyB0aGVuIHJlbW92ZWQuIE1pbmQgdGhlXG4gICAqIGluZGV4OiBgbWF0ZXJpYWxpc2UobilgIGZvbGRzIGNvbW1pdHMgYDAuLm4tMWAsIGBzdGF0ZUF0KHNvdXJjZSwgbiAtIDEpYCB0aGUgc2FtZSBjb21taXRzLlxuICAgKi9cbiAgbWF0ZXJpYWxpc2Uoc3RlcElkeCA9IHRoaXMuc3RlcHMubGVuZ3RoKTogYW55IHtcbiAgICBjb25zdCBvdXQgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5iYXNlKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ZXBJZHg7IGkrKykge1xuICAgICAgY29uc3QgeyBvdmVyd3JpdGUsIHVwZGF0ZXMsIHRyYWNlIH0gPSB0aGlzLnN0ZXBzW2ldO1xuICAgICAgYXBwbHlTbWFydE1lcmdlSW50byhvdXQsIHVwZGF0ZXMgYXMgTWVtb3J5UGF0Y2gsIG92ZXJ3cml0ZSBhcyBNZW1vcnlQYXRjaCwgdHJhY2UpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIGEgY29tbWl0IGJ1bmRsZSBmb3IgYSBmaW5pc2hlZCBzdGFnZSwgYW5kIEZSRUVaRVMgaXQgKHNlZSB0aGUgbW9kdWxlIGRvYyk6IHRoZSBidW5kbGVcbiAgICogaXMgc3RhbXBlZCB3aXRoIGl0cyBwb3NpdGlvbiwgdGhlbiBkZWVwLWZyb3plbiwgdGhlbiBhcHBlbmRlZC4gVGhlIGVuZ2luZSBoYW5kcyBpdCBhIGJ1bmRsZVxuICAgKiBidWlsdCBmb3IgdGhlIGxvZyBhbG9uZTsgYSBjYWxsZXIgb2YgdGhpcyBjbGFzcyAoYGZvb3RwcmludGpzL2FkdmFuY2VkYCkgaGFuZHMgb3ZlciBhIGJ1bmRsZSBpdFxuICAgKiB3aWxsIG5vIGxvbmdlciBlZGl0IOKAlCBpdHMgb3duIG9iamVjdCBpcyB0aGUgb25lIGZyb3plbi5cbiAgICovXG4gIHJlY29yZChidW5kbGU6IENvbW1pdEJ1bmRsZSk6IHZvaWQge1xuICAgIGJ1bmRsZS5pZHggPSB0aGlzLnN0ZXBzLmxlbmd0aDtcbiAgICBmcmVlemVSZWNvcmQoYnVuZGxlLCAnaW5kaWNlcycpO1xuICAgIHRoaXMuc3RlcHMucHVzaChidW5kbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZXJ5IHJlY29yZGVkIGNvbW1pdCBidW5kbGUsIEFTIFNFUlZFRCAoOS40NC4yKTogYSBuZXcgYXJyYXkgZWFjaCBjYWxsOyBhIGJ1bmRsZSBmcmVlemluZyBzZWFsZWRcbiAgICogd2hvbGUgaXMgdGhlIGxvZydzIG93biAoZnJvemVuKSBvYmplY3QsIG9uZSBob2xkaW5nIGEgRGF0ZSwgTWFwLCBidWZmZXIg4oCmIGlzIGEgY29weSBvZiBpdHMgb3BlblxuICAgKiBwYXRocyAoYGNhcHR1cmUvZnJlZXplLnRzIMK3IHNlcnZlUmVjb3JkYCkg4oCUIHRoZSByZWFkZXIncyBvd24sIHNvIG5vIGVkaXQgcmVhY2hlcyB0aGUgbG9nLlxuICAgKi9cbiAgbGlzdCgpOiBDb21taXRCdW5kbGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMubWFwKHNlcnZlUmVjb3JkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWwgVGhlIGJ1bmRsZXMgYXMgdGhlIGxvZyBob2xkcyB0aGVtIOKAlCBlYWNoIGZyb3plbiwgTk9UIHNlcnZlZCDigJQgaW4gYSBuZXcgYXJyYXksIHNvIGEgaG9sZGVyJ3NcbiAgICogYHNwbGljZWAgcmVhY2hlcyBvbmx5IGl0cyBvd24uIEZvciB0aGUgZW5naW5lJ3Mgb3duIHNuYXBzaG90IChgRXhlY3V0aW9uUnVudGltZSDCtyBnZXRTbmFwc2hvdGAsIHdoaWNoXG4gICAqIGEgc3ViZmxvdyBtb3VudCB0YWtlcyBvbmNlIHBlciBtb3VudCksIHNvIHRoZSBydW4gc2VydmVzIG5vdGhpbmc7IGEgcmVhZGVyIGlzIHNlcnZlZCBieSBgbGlzdCgpYCBhbmRcbiAgICogYGdldFNuYXBzaG90KCkuY29tbWl0TG9nYC4gQSBrbm93biBvcGVuIGRvb3IgKENIQU5HRUxPRyA5LjQ0LjIpOiBhIGhvbGRlciBvZiB0aGVzZSBidW5kbGVzIGNhbiBzdGlsbFxuICAgKiBlZGl0IGEgRGF0ZSwgTWFwIG9yIGJ1ZmZlciBpbnNpZGUgdGhlbS5cbiAgICovXG4gIHJlY29yZGVkKCk6IENvbW1pdEJ1bmRsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5zbGljZSgpO1xuICB9XG5cbiAgLyoqIE51bWJlciBvZiByZWNvcmRlZCBjb21taXRzLiAqL1xuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIEltbXV0YWJsZSBpZGVudGl0eSBvZiB0aGlzIGxvZywgYWJzZW50IHVudGlsIHRoZSBlbmdpbmUgYmluZHMgaXQuICovXG4gIGdldCBhZGRyZXNzKCk6IExvZ0FkZHJlc3MgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZUFkZHJlc3M7XG4gIH1cblxuICAvKiogQGludGVybmFsIEJpbmQgb25jZTsgcmVzdW1pbmcgdGhlIHNhbWUgbG9nIG11c3Qgbm90IHJlbmFtZSBpdHMgZWFybGllciBwb3NpdGlvbnMuICovXG4gIGJpbmRBZGRyZXNzKGxvZ1J1bklkOiBzdHJpbmcsIGRyaWxsUGF0aDogcmVhZG9ubHkgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb3VyY2VBZGRyZXNzUmV0aXJlZCkgcmV0dXJuO1xuICAgIHRoaXMuc291cmNlQWRkcmVzcyA/Pz0gT2JqZWN0LmZyZWV6ZSh7IGxvZ1J1bklkLCBkcmlsbFBhdGg6IE9iamVjdC5mcmVlemUoWy4uLmRyaWxsUGF0aF0pIH0pO1xuICB9XG5cbiAgLyoqIE8oMSkgc291cmNlLXRpbWUgY2FwdHVyZS4gTm8gY291bnRlciwgb2JzZXJ2ZXIgYm9va2tlZXBpbmcsIG9yIGZ1dHVyZSBjb21taXQgcHJlZGljdGlvbi4gKi9cbiAgY2FwdHVyZVBvc2l0aW9uKHJ1bklkOiBzdHJpbmcpOiBFbWl0U291cmNlUG9zaXRpb24gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5zb3VyY2VBZGRyZXNzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBPYmplY3QuZnJlZXplKHsgcnVuSWQsIC4uLnRoaXMuc291cmNlQWRkcmVzcywgY29tbWl0dGVkVGhyb3VnaElkeDogdGhpcy5zdGVwcy5sZW5ndGggLSAxIH0pO1xuICB9XG5cbiAgLyoqIFdpcGVzIGhpc3RvcnkgKHVzZWZ1bCBmb3IgdGVzdCByZXNldHMpLiAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzID0gW107XG4gICAgLy8gQSByZXNldCBwcmVmaXggY2Fubm90IHJldXNlIG9sZCBjb29yZGluYXRlcywgZXZlbiBpZiBhbm90aGVyIHN0YWdlIG9mXG4gICAgLy8gdGhlIFNBTUUgbGVnIGJpbmRzIGl0IGFnYWluLiBLZWVwIGNsZWFyJ3MgZGF0YSBiZWhhdmlvciwgYnV0IHJldGlyZVxuICAgIC8vIGFkZHJlc3NpbmcgZm9yIHRoaXMgbG9nOyBrbm93biBjb29yZGluYXRlcyByZXF1aXJlIGEgZnJlc2ggRXZlbnRMb2cuXG4gICAgdGhpcy5zb3VyY2VBZGRyZXNzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc291cmNlQWRkcmVzc1JldGlyZWQgPSB0cnVlO1xuICB9XG59XG4iXX0=
|