footprintjs 9.46.0 → 9.46.1
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 -6
- package/dist/esm/lib/decide/evaluator.js +2 -2
- package/dist/esm/lib/decide/evidence.js +2 -2
- package/dist/esm/lib/engine/handlers/servedPause.js +2 -2
- package/dist/esm/lib/memory/RecordFrame.d.ts +41 -6
- package/dist/esm/lib/memory/RecordFrame.js +36 -5
- package/dist/esm/lib/memory/SharedMemory.d.ts +1 -1
- package/dist/esm/lib/memory/SharedMemory.js +2 -2
- package/dist/esm/lib/memory/StageContext.d.ts +21 -14
- package/dist/esm/lib/memory/StageContext.js +36 -74
- package/dist/esm/lib/memory/borrowedMutation.d.ts +1 -1
- package/dist/esm/lib/memory/borrowedMutation.js +2 -2
- package/dist/esm/lib/memory/honesty.d.ts +4 -3
- package/dist/esm/lib/memory/honesty.js +5 -4
- package/dist/esm/lib/memory/index.d.ts +4 -2
- package/dist/esm/lib/memory/index.js +6 -4
- package/dist/esm/lib/memory/placeholders.d.ts +23 -28
- package/dist/esm/lib/memory/placeholders.js +24 -29
- package/dist/esm/lib/memory/recordCommit.d.ts +5 -3
- package/dist/esm/lib/memory/recordCommit.js +7 -5
- package/dist/esm/lib/memory/redaction.d.ts +78 -40
- package/dist/esm/lib/memory/redaction.js +130 -64
- package/dist/esm/lib/memory/runAddress.d.ts +20 -0
- package/dist/esm/lib/memory/runAddress.js +25 -0
- package/dist/esm/lib/memory/scrub.d.ts +51 -0
- package/dist/esm/lib/memory/scrub.js +72 -0
- package/dist/esm/lib/memory/utils.d.ts +3 -3
- package/dist/esm/lib/memory/utils.js +4 -4
- package/dist/lib/decide/evaluator.js +3 -3
- package/dist/lib/decide/evidence.js +3 -3
- package/dist/lib/engine/handlers/servedPause.js +3 -3
- package/dist/lib/memory/RecordFrame.js +36 -5
- package/dist/lib/memory/SharedMemory.js +2 -2
- package/dist/lib/memory/StageContext.js +42 -80
- package/dist/lib/memory/borrowedMutation.js +2 -2
- package/dist/lib/memory/honesty.js +5 -4
- package/dist/lib/memory/index.js +6 -4
- package/dist/lib/memory/placeholders.js +25 -30
- package/dist/lib/memory/recordCommit.js +9 -7
- package/dist/lib/memory/redaction.js +144 -75
- package/dist/lib/memory/runAddress.js +29 -0
- package/dist/lib/memory/scrub.js +77 -0
- package/dist/lib/memory/utils.js +4 -4
- package/dist/types/lib/memory/RecordFrame.d.ts +41 -6
- package/dist/types/lib/memory/SharedMemory.d.ts +1 -1
- package/dist/types/lib/memory/StageContext.d.ts +21 -14
- package/dist/types/lib/memory/borrowedMutation.d.ts +1 -1
- package/dist/types/lib/memory/honesty.d.ts +4 -3
- package/dist/types/lib/memory/index.d.ts +4 -2
- package/dist/types/lib/memory/placeholders.d.ts +23 -28
- package/dist/types/lib/memory/recordCommit.d.ts +5 -3
- package/dist/types/lib/memory/redaction.d.ts +78 -40
- package/dist/types/lib/memory/runAddress.d.ts +20 -0
- package/dist/types/lib/memory/scrub.d.ts +51 -0
- package/dist/types/lib/memory/utils.d.ts +3 -3
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* memory/borrowedMutation — the honest boundary's two texts: the dev-mode
|
|
3
3
|
* REPORT for a write the engine cannot see ({@link borrowedMutationMessage})
|
|
4
4
|
* and the REFUSAL for a write from a handle held past its stage
|
|
5
|
-
* ({@link deadFrameMessage}, thrown by `
|
|
5
|
+
* ({@link deadFrameMessage}, thrown by `ScopeFacade · assertLive`).
|
|
6
6
|
*
|
|
7
7
|
* ── The honest boundary ──────────────────────────────────────────────────
|
|
8
8
|
* The typed scope intercepts every write it can reach: a property at any
|
|
@@ -127,4 +127,4 @@ export function borrowedMutationMessage(stageName, key, path) {
|
|
|
127
127
|
'This usually comes from mutating an element reached by `find`/`filter`/`for…of`/`forEach`, ' +
|
|
128
128
|
'which the scope proxy cannot intercept.');
|
|
129
129
|
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9ycm93ZWRNdXRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWVtb3J5L2JvcnJvd2VkTXV0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdkMsOEVBQThFO0FBQzlFLFNBQVMsV0FBVyxDQUFDLE1BQWMsRUFBRSxPQUFlLEVBQUUsU0FBa0I7SUFDdEUsSUFBSSxTQUFTO1FBQUUsT0FBTyxHQUFHLE1BQU0sSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUM5QyxPQUFPLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7QUFDMUQsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBZSxFQUFFLEtBQWMsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDO0lBQ3hGLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDekQsSUFBSSxLQUFLLElBQUksRUFBRTtRQUFFLE9BQU8sTUFBTSxDQUFDLENBQUMsMkNBQTJDO0lBQzNFLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFFaEgsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxJQUFJLGFBQWEsS0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8s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QUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekUsT0FBTyxDQUNMLHNCQUFzQixTQUFTLGVBQWUsS0FBSyx3Q0FBd0M7UUFDM0Ysb0dBQW9HO1FBQ3BHLG1HQUFtRztRQUNuRyw0REFBNEQ7UUFDNUQsMENBQTBDO1FBQzFDLEtBQUs7UUFDTCx5REFBeUQ7UUFDekQsd0RBQXdELEdBQUcsY0FBYztRQUN6RSw2RkFBNkY7UUFDN0YseUNBQXlDLENBQzFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBtZW1vcnkvYm9ycm93ZWRNdXRhdGlvbiDigJQgdGhlIGhvbmVzdCBib3VuZGFyeSdzIHR3byB0ZXh0czogdGhlIGRldi1tb2RlXG4gKiBSRVBPUlQgZm9yIGEgd3JpdGUgdGhlIGVuZ2luZSBjYW5ub3Qgc2VlICh7QGxpbmsgYm9ycm93ZWRNdXRhdGlvbk1lc3NhZ2V9KVxuICogYW5kIHRoZSBSRUZVU0FMIGZvciBhIHdyaXRlIGZyb20gYSBoYW5kbGUgaGVsZCBwYXN0IGl0cyBzdGFnZVxuICogKHtAbGluayBkZWFkRnJhbWVNZXNzYWdlfSwgdGhyb3duIGJ5IGBTdGFnZUNvbnRleHQuc3RhZ2VXcml0ZWApLlxuICpcbiAqIOKUgOKUgCBUaGUgaG9uZXN0IGJvdW5kYXJ5IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICogVGhlIHR5cGVkIHNjb3BlIGludGVyY2VwdHMgZXZlcnkgd3JpdGUgaXQgY2FuIHJlYWNoOiBhIHByb3BlcnR5IGF0IGFueVxuICogZGVwdGgsIGFuIGluZGV4ZWQgZWxlbWVudCwgYW4gYXJyYXkgbWV0aG9kLiBXaGF0IGl0IGNhbm5vdCByZWFjaCBpcyBhblxuICogZWxlbWVudCBoYW5kZWQgb3V0IGJ5IGEgUkVBRCBNRVRIT0Qg4oCUIGBmaW5kYCwgYGZpbHRlcmAsIGBmb3LigKZvZmAsIGBmb3JFYWNoYCxcbiAqIGRlc3RydWN0dXJpbmcg4oCUIGJlY2F1c2Ugd3JhcHBpbmcgdGhvc2Ugd291bGQgbWVhbiByZXR1cm5pbmcgcHJveGllcyBvdXQgb2ZcbiAqIGV2ZXJ5IHJlYWQgKGBtYXBgIHdvdWxkIGJ1aWxkIGFuIGFycmF5IG9mIHByb3hpZXMsIGBmaWx0ZXJgIHdvdWxkIGNvbXBhcmVcbiAqIHByb3hpZXMsIGEgcmV0dXJuZWQgdmFsdWUgd291bGQgZXNjYXBlIHRoZSBzdGFnZSBzdGlsbCBib3VuZCB0byBpdCkuIFRoYXQgaXNcbiAqIGEgY29zdCB0aGUgbGlicmFyeSBzaG91bGQgbm90IHBheSwgYW5kIGEgc2VtYW50aWMgY2hhbmdlIGl0IHNob3VsZCBub3QgbWFrZS5cbiAqXG4gKiBTbyB0aGUgYW5zd2VyIGZvciB0aGF0IGZhbWlseSBpcyBub3QgaW50ZXJjZXB0aW9uIOKAlCBpdCBpcyBhIFJFUE9SVC4gQSByZWFkXG4gKiBpcyBCT1JST1dFRDsgbXV0YXRpbmcgaXQgaW4gcGxhY2UgaXMgb3V0IG9mIGNvbnRyYWN0LiBUaGlzIG1vZHVsZSBkZXRlY3RzIHRoZVxuICogdmlvbGF0aW9uIGFmdGVyIHRoZSBmYWN0IGFuZCBuYW1lcyBpdCAoYSBkZXYtbW9kZSB3YXJuaW5nIGF0IGNvbW1pdCDigJQgdGhlXG4gKiB3cml0ZSBhbHJlYWR5IGhhcHBlbmVkLCBzbyBpdCBjYW5ub3QgYmUgcmVmdXNlZCksIGluc3RlYWQgb2YgbGV0dGluZyB0aGUgcnVuXG4gKiBlbmQgd2l0aCBhIGNvbW1pdCBsb2cgdGhhdCBkaXNhZ3JlZXMgd2l0aCBmaW5hbCBzdGF0ZSBhbmQgbm90aGluZyBzYXlpbmcgc28uXG4gKlxuICog4pSA4pSAIEhvdyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAqIGByZWFkVHJhY2tpbmc6ICdmdWxsJ2AgKHRoZSBkZWZhdWx0KSBhbHJlYWR5IHJldGFpbnMgYSBDTE9ORSBvZiBldmVyeSB2YWx1ZVxuICogYSBzdGFnZSByZWFkLiBBdCBjb21taXQsIGEga2V5IHRoZSBzdGFnZSByZWFkIGJ1dCBuZXZlciBXUk9URSBtdXN0IHN0aWxsXG4gKiBob2xkIHdoYXQgaXQgaGVsZCBhdCByZWFkIHRpbWUg4oCUIGNvbW1pdHRlZCBzdGF0ZSBpcyBpbW11dGFibGUtYWZ0ZXItc3dhcCBhbmRcbiAqIHRoZSBidWZmZXIncyB3b3JraW5nIGNvcHkgaXMgcHJpdmF0ZS4gSWYgaXQgZGlmZmVycywgdGhlIG9ubHkgdGhpbmcgdGhhdCBjYW5cbiAqIGhhdmUgY2hhbmdlZCBpdCBpcyB0aGUgc3RhZ2UgaXRzZWxmLCBpbiBwbGFjZS5cbiAqXG4gKiBEZXYtbW9kZSBvbmx5IChgZW5hYmxlRGV2TW9kZSgpYCksIHNvIHRoZSBkZWZhdWx0IHJ1biBwYXlzIG5vdGhpbmcgYW5kIGl0c1xuICogYnl0ZXMgYXJlIHVuY2hhbmdlZC5cbiAqL1xuXG5pbXBvcnQgeyBkZWVwRXF1YWwgfSBmcm9tICcuL3V0aWxzLmpzJztcblxuLyoqIFJlbmRlciBvbmUgcGF0aCBzZWdtZW50IGZvciBhIGh1bWFuOiBgbGluZXNbMF0ucXR5YCwgbm90IGBsaW5lcy4wLnF0eWAuICovXG5mdW5jdGlvbiBqb2luU2VnbWVudChwcmVmaXg6IHN0cmluZywgc2VnbWVudDogc3RyaW5nLCBpbnRvQXJyYXk6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAoaW50b0FycmF5KSByZXR1cm4gYCR7cHJlZml4fVske3NlZ21lbnR9XWA7XG4gIHJldHVybiBwcmVmaXggPT09ICcnID8gc2VnbWVudCA6IGAke3ByZWZpeH0uJHtzZWdtZW50fWA7XG59XG5cbi8qKlxuICogVGhlIGZpcnN0IHBhdGggYXQgd2hpY2ggYGFmdGVyYCBzdG9wcyBhZ3JlZWluZyB3aXRoIGBiZWZvcmVgLCBvciBgdW5kZWZpbmVkYFxuICogd2hlbiB0aGV5IGFyZSBzdHJ1Y3R1cmFsbHkgZXF1YWwuIERlcHRoLWZpcnN0LCBvd24ga2V5cyBvbmx5IOKAlCB0aGUgc2FtZVxuICogc2hhcGVzIGBkZWVwRXF1YWxgIGhhbmRsZXMsIHNpbmNlIGNvbW1pdHRlZCBzdGF0ZSBpcyBKU09OLXNoYXBlZC5cbiAqXG4gKiBDeWNsZS1zYWZlIGJ5IGNvbnN0cnVjdGlvbjogaXQgb25seSByZWN1cnNlcyBpbnRvIHBhaXJzIHRoYXQgYXJlIG5vdCBhbHJlYWR5XG4gKiBgZGVlcEVxdWFsYCwgYW5kIHN0b3BzIGF0IHRoZSBmaXJzdCBkaXNhZ3JlZW1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdERpZmZlcmluZ1BhdGgoYmVmb3JlOiB1bmtub3duLCBhZnRlcjogdW5rbm93biwgcHJlZml4ID0gJycsIGRlcHRoID0gMCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChkZWVwRXF1YWwoYmVmb3JlLCBhZnRlciwgJ2NvcGllcycpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoZGVwdGggPj0gMjQpIHJldHVybiBwcmVmaXg7IC8vIHBhdGhvbG9naWNhbCBuZXN0aW5nIOKAlCBuYW1lIHdoYXQgd2UgaGF2ZVxuICBpZiAoYmVmb3JlID09PSBudWxsIHx8IGFmdGVyID09PSBudWxsIHx8IHR5cGVvZiBiZWZvcmUgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBhZnRlciAhPT0gJ29iamVjdCcpIHJldHVybiBwcmVmaXg7XG5cbiAgY29uc3QgYmVmb3JlSXNBcnJheSA9IEFycmF5LmlzQXJyYXkoYmVmb3JlKTtcbiAgaWYgKGJlZm9yZUlzQXJyYXkgIT09IEFycmF5LmlzQXJyYXkoYWZ0ZXIpKSByZXR1cm4gcHJlZml4O1xuXG4gIGlmIChiZWZvcmVJc0FycmF5KSB7XG4gICAgY29uc3QgYSA9IGJlZm9yZSBhcyB1bmtub3duW107XG4gICAgY29uc3QgYiA9IGFmdGVyIGFzIHVua25vd25bXTtcbiAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gcHJlZml4O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZGVlcGVyID0gZmlyc3REaWZmZXJpbmdQYXRoKGFbaV0sIGJbaV0sIGpvaW5TZWdtZW50KHByZWZpeCwgU3RyaW5nKGkpLCB0cnVlKSwgZGVwdGggKyAxKTtcbiAgICAgIGlmIChkZWVwZXIgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGRlZXBlcjtcbiAgICB9XG4gICAgcmV0dXJuIHByZWZpeDtcbiAgfVxuXG4gIGNvbnN0IGEgPSBiZWZvcmUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGIgPSBhZnRlciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3Qga2V5cyA9IG5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKGEpLCAuLi5PYmplY3Qua2V5cyhiKV0pO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgY29uc3QgZGVlcGVyID0gZmlyc3REaWZmZXJpbmdQYXRoKGFba2V5XSwgYltrZXldLCBqb2luU2VnbWVudChwcmVmaXgsIGtleSwgZmFsc2UpLCBkZXB0aCArIDEpO1xuICAgIGlmIChkZWVwZXIgIT09IHVuZGVmaW5lZCkgcmV0dXJuIGRlZXBlcjtcbiAgfVxuICByZXR1cm4gcHJlZml4O1xufVxuXG4vKipcbiAqIFRoZSByZWZ1c2FsIHRleHQgZm9yIGEgd3JpdGUgdGhhdCByZWFjaGVkIGEgZnJhbWUgQUZURVIgaXRzIHN0YWdlIGNvbW1pdHRlZC5cbiAqIEEgc2NvcGUsIGFuZCBldmVyeSBwcm94eSByZWFkIG91dCBvZiBpdCwgaXMgYm91bmQgdG8gdGhlIHN0YWdlIGl0IHdhcyBoYW5kZWRcbiAqIHRvOyBrZXB0IHBhc3QgdGhhdCBzdGFnZSdzIGNvbW1pdCBpdCBoYXMgbm8gZnJhbWUgdG8gbGFuZCBpbiwgc28gdGhlIHdyaXRlXG4gKiB3b3VsZCBzaXQgaW4gYSBidWZmZXIgbm90aGluZyBldmVyIGNvbW1pdHMg4oCUIG5vIHRyYWNlIHJvdywgc3RhdGUgdW5jaGFuZ2VkLlxuICogVGhlIHRocm93IHN1cmZhY2VzIGluIHRoZSBzdGFnZSB0aGF0IG1hZGUgdGhlIHdyaXRlICh0aGUgZW5naW5lJ3MgZXJyb3JcbiAqIHBhdGggbmFtZXMgaXQpOyB0aGlzIHRleHQgbmFtZXMgdGhlIHN0YWdlIHRoZSBoYW5kbGUgY2FtZSBmcm9tLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVhZEZyYW1lTWVzc2FnZShzdGFnZU5hbWU6IHN0cmluZywgcnVudGltZVN0YWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBmcm9tID0gcnVudGltZVN0YWdlSWQgPyBgXCIke3N0YWdlTmFtZX1cIiAoJHtydW50aW1lU3RhZ2VJZH0pYCA6IGBcIiR7c3RhZ2VOYW1lfVwiYDtcbiAgcmV0dXJuIChcbiAgICBgW2Zvb3RwcmludF0gU3RhZ2UgJHtmcm9tfSBoYXMgYWxyZWFkeSBjb21taXR0ZWQg4oCUIGl0cyBzY29wZSBpcyBkZWFkLCBhbmQgYSB3cml0ZSB0byBcXGAke2tleX1cXGAgYCArXG4gICAgJ2p1c3QgcmVhY2hlZCBpdCBmcm9tIGEgbGF0ZXIgc3RhZ2UgKHRoaXMgZXJyb3IgaXMgcmFpc2VkIGluIHRoYXQgc3RhZ2UpLiBBIHNjb3BlLCBhbmQgYW55dGhpbmcgcmVhZCAnICtcbiAgICAnb3V0IG9mIGl0IChgc2NvcGUua2AsIGBzY29wZS5rLmFyclswXWApLCBiZWxvbmdzIHRvIHRoZSBzdGFnZSBpdCB3YXMgaGFuZGVkIHRvOyBoZWxkIHBhc3QgdGhhdCAnICtcbiAgICBcInN0YWdlJ3MgY29tbWl0IGl0IGhhcyBubyBmcmFtZSB0byBsYW5kIGluLCBzbyB0aGUgd3JpdGUgd291bGQgdmFuaXNoIHdpdGggbm8gdHJhY2Ugcm93LiBcIiArXG4gICAgXCJSZWFkIHRoZSBrZXkgYWdhaW4gdGhyb3VnaCB0aGUgQ1VSUkVOVCBzdGFnZSdzIHNjb3BlIGFuZCB3cml0ZSB0aGVyZS5cIlxuICApO1xufVxuXG4vKipcbiAqIFRoZSB3YXJuaW5nIHRleHQgZm9yIGEga2V5IHRoZSBzdGFnZSBXUk9URSBhZnRlciBjaGFuZ2luZywgaW4gcGxhY2UsIHRoZVxuICogY29tbWl0dGVkIHZhbHVlIGl0IGhhZCByZWFkIGJlZm9yZSBpdHMgZmlyc3Qgd3JpdGUgKGNvcHktb24td3JpdGUsIDkuMjkuMCkuXG4gKiBUaGUgY29tbWl0IGNvbXBhcmVzIHdoYXQgdGhlIHN0YWdlIHdyb3RlIGFnYWluc3QgY29tbWl0dGVkIHN0YXRlIOKAlCB0aGVcbiAqIG9iamVjdCB0aGUgaW4tcGxhY2UgY2hhbmdlIGFsc28gbW92ZWQg4oCUIHNvIGl0IHJlY29yZHMgbm8gY2hhbmdlOiBsaXZlIHN0YXRlXG4gKiBrZWVwcyB0aGUgZWRpdCwgdGhlIGxvZyBhbmQgZXZlcnkgZm9sZCBkbyBub3QuICg5LjI4LjAgcmVjb3JkZWQgaXQgd2hlbiB0aGVcbiAqIGVkaXQgY2FtZSBhZnRlciB0aGUgZmlyc3Qgd3JpdGUsIGJ5IGFjY2lkZW50IG9mIGEgd2hvbGUtc3RhdGUgY2xvbmUuKVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWl0dGVkTXV0YXRpb25NZXNzYWdlKHN0YWdlTmFtZTogc3RyaW5nLCBrZXk6IHN0cmluZywgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgd2hlcmUgPSBwYXRoID09PSAnJyA/IGtleSA6IGAke2tleX0uJHtwYXRofWAucmVwbGFjZSgvXFwuXFxbL2csICdbJyk7XG4gIHJldHVybiAoXG4gICAgYFtmb290cHJpbnRdIFN0YWdlIFwiJHtzdGFnZU5hbWV9XCIgY2hhbmdlZCBcXGAke3doZXJlfVxcYCBJTiBQTEFDRSBvbiB0aGUgY29tbWl0dGVkIHZhbHVlIGl0IHJlYWQgYmVmb3JlIGAgK1xuICAgICdpdHMgZmlyc3Qgd3JpdGUsIHRoZW4gd3JvdGUgdGhlIGtleS4gVGhlIGNvbW1pdCBjb21wYXJlcyB0aGUgd3JpdHRlbiB2YWx1ZSB3aXRoIGNvbW1pdHRlZCBzdGF0ZSDigJQgJyArXG4gICAgJ3doaWNoIHRoZSBpbi1wbGFjZSBjaGFuZ2UgYWxzbyBtb3ZlZCDigJQgc28gaXQgcmVjb3JkcyBOTyBjaGFuZ2U6IGxpdmUgc3RhdGUga2VlcHMgdGhlIGVkaXQsIHRoZSBjb21taXQgJyArXG4gICAgJ2xvZyBhbmQgZXZlcnkgcmVhZGVyIHRoYXQgZm9sZHMgaXQgZG8gbm90LiBSZWFkcyBhcmUgQk9SUk9XRUQuIEJ1aWxkIHRoZSBuZXh0IHZhbHVlIGluc3RlYWQgJyArXG4gICAgYChcXGBzY29wZS4kc2V0VmFsdWUoJyR7a2V5fScsIHsgLi4udmFsdWUsIOKApiB9KVxcYCksIG9yIHJlYWQgdGhlIGtleSBhZ2FpbiBhZnRlciB0aGUgc3RhZ2UncyBmaXJzdCBgICtcbiAgICBcIndyaXRlIOKAlCB0aGF0IHJlYWQgaXMgdGhlIHN0YWdlJ3Mgb3duIGNvcHkuXCJcbiAgKTtcbn1cblxuLyoqXG4gKiBUaGUgd2FybmluZyB0ZXh0LiBOYW1lcyB0aGUgc3RhZ2UsIHRoZSBleGFjdCBwYXRoIHRoYXQgbW92ZWQsIGFuZCB0aGUgdHdvXG4gKiB3YXlzIHRvIHdyaXRlIGl0IGJhY2sg4oCUIGJlY2F1c2UgXCJ5b3UgbXV0YXRlZCBzb21ldGhpbmdcIiBpcyBub3QgYWN0aW9uYWJsZVxuICogYW5kIHRoaXMgaXMgdGhlIG9uZSBmYWlsdXJlIG1vZGUgdGhlIHdob2xlIGRlc2lnbiBleGlzdHMgdG8gcHJldmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJvcnJvd2VkTXV0YXRpb25NZXNzYWdlKHN0YWdlTmFtZTogc3RyaW5nLCBrZXk6IHN0cmluZywgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgd2hlcmUgPSBwYXRoID09PSAnJyA/IGtleSA6IGAke2tleX0uJHtwYXRofWAucmVwbGFjZSgvXFwuXFxbL2csICdbJyk7XG4gIHJldHVybiAoXG4gICAgYFtmb290cHJpbnRdIFN0YWdlIFwiJHtzdGFnZU5hbWV9XCIgY2hhbmdlZCBcXGAke3doZXJlfVxcYCBJTiBQTEFDRSwgb24gYSB2YWx1ZSBpdCBvbmx5IHJlYWQuIGAgK1xuICAgICdmb290cHJpbnQgbmV2ZXIgc2F3IHRoYXQgd3JpdGU6IHRoZXJlIGlzIG5vIHRyYWNlIHJvdyBmb3IgaXQsIHNvIHRoZSBjb21taXQgbG9nLCB0aGUgY2F1c2FsIGNoYWluICcgK1xuICAgICdhbmQgZXZlcnkgcmVhZGVyIHRoYXQgZm9sZHMgdGhlIGxvZyB3aWxsIGRpc2FncmVlIHdpdGggZmluYWwgc3RhdGUg4oCUIGFuZCB1bmRlciBhIGRpZmZlcmVudCB3cml0ZSAnICtcbiAgICAnb3JkZXIgdGhlIGNoYW5nZSBpcyBkcm9wcGVkIGVudGlyZWx5LiBSZWFkcyBhcmUgQk9SUk9XRUQuICcgK1xuICAgICdXcml0ZSB0aHJvdWdoIHRoZSBzY29wZSBpbnN0ZWFkIChgc2NvcGUuJyArXG4gICAgd2hlcmUgK1xuICAgICcgPSDigKZgIOKAlCBwcm9wZXJ0eSBhbmQgaW5kZXhlZCBhY2Nlc3MgYXJlIGJvdGggdHJhY2tlZCksICcgK1xuICAgIGBvciBoYW5kIGJhY2sgdGhlIHdob2xlIHZhbHVlIHdpdGggXFxgc2NvcGUuJHNldFZhbHVlKCcke2tleX0nLCBuZXh0KVxcYC4gYCArXG4gICAgJ1RoaXMgdXN1YWxseSBjb21lcyBmcm9tIG11dGF0aW5nIGFuIGVsZW1lbnQgcmVhY2hlZCBieSBgZmluZGAvYGZpbHRlcmAvYGZvcuKApm9mYC9gZm9yRWFjaGAsICcgK1xuICAgICd3aGljaCB0aGUgc2NvcGUgcHJveHkgY2Fubm90IGludGVyY2VwdC4nXG4gICk7XG59XG4iXX0=
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9ycm93ZWRNdXRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWVtb3J5L2JvcnJvd2VkTXV0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdkMsOEVBQThFO0FBQzlFLFNBQVMsV0FBVyxDQUFDLE1BQWMsRUFBRSxPQUFlLEVBQUUsU0FBa0I7SUFDdEUsSUFBSSxTQUFTO1FBQUUsT0FBTyxHQUFHLE1BQU0sSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUM5QyxPQUFPLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7QUFDMUQsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBZSxFQUFFLEtBQWMsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDO0lBQ3hGLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDekQsSUFBSSxLQUFLLElBQUksRUFBRTtRQUFFLE9BQU8sTUFBTSxDQUFDLENBQUMsMkNBQTJDO0lBQzNFLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFFaEgsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxJQUFJLGFBQWEsS0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8s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QUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekUsT0FBTyxDQUNMLHNCQUFzQixTQUFTLGVBQWUsS0FBSyx3Q0FBd0M7UUFDM0Ysb0dBQW9HO1FBQ3BHLG1HQUFtRztRQUNuRyw0REFBNEQ7UUFDNUQsMENBQTBDO1FBQzFDLEtBQUs7UUFDTCx5REFBeUQ7UUFDekQsd0RBQXdELEdBQUcsY0FBYztRQUN6RSw2RkFBNkY7UUFDN0YseUNBQXlDLENBQzFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBtZW1vcnkvYm9ycm93ZWRNdXRhdGlvbiDigJQgdGhlIGhvbmVzdCBib3VuZGFyeSdzIHR3byB0ZXh0czogdGhlIGRldi1tb2RlXG4gKiBSRVBPUlQgZm9yIGEgd3JpdGUgdGhlIGVuZ2luZSBjYW5ub3Qgc2VlICh7QGxpbmsgYm9ycm93ZWRNdXRhdGlvbk1lc3NhZ2V9KVxuICogYW5kIHRoZSBSRUZVU0FMIGZvciBhIHdyaXRlIGZyb20gYSBoYW5kbGUgaGVsZCBwYXN0IGl0cyBzdGFnZVxuICogKHtAbGluayBkZWFkRnJhbWVNZXNzYWdlfSwgdGhyb3duIGJ5IGBTY29wZUZhY2FkZSDCtyBhc3NlcnRMaXZlYCkuXG4gKlxuICog4pSA4pSAIFRoZSBob25lc3QgYm91bmRhcnkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gKiBUaGUgdHlwZWQgc2NvcGUgaW50ZXJjZXB0cyBldmVyeSB3cml0ZSBpdCBjYW4gcmVhY2g6IGEgcHJvcGVydHkgYXQgYW55XG4gKiBkZXB0aCwgYW4gaW5kZXhlZCBlbGVtZW50LCBhbiBhcnJheSBtZXRob2QuIFdoYXQgaXQgY2Fubm90IHJlYWNoIGlzIGFuXG4gKiBlbGVtZW50IGhhbmRlZCBvdXQgYnkgYSBSRUFEIE1FVEhPRCDigJQgYGZpbmRgLCBgZmlsdGVyYCwgYGZvcuKApm9mYCwgYGZvckVhY2hgLFxuICogZGVzdHJ1Y3R1cmluZyDigJQgYmVjYXVzZSB3cmFwcGluZyB0aG9zZSB3b3VsZCBtZWFuIHJldHVybmluZyBwcm94aWVzIG91dCBvZlxuICogZXZlcnkgcmVhZCAoYG1hcGAgd291bGQgYnVpbGQgYW4gYXJyYXkgb2YgcHJveGllcywgYGZpbHRlcmAgd291bGQgY29tcGFyZVxuICogcHJveGllcywgYSByZXR1cm5lZCB2YWx1ZSB3b3VsZCBlc2NhcGUgdGhlIHN0YWdlIHN0aWxsIGJvdW5kIHRvIGl0KS4gVGhhdCBpc1xuICogYSBjb3N0IHRoZSBsaWJyYXJ5IHNob3VsZCBub3QgcGF5LCBhbmQgYSBzZW1hbnRpYyBjaGFuZ2UgaXQgc2hvdWxkIG5vdCBtYWtlLlxuICpcbiAqIFNvIHRoZSBhbnN3ZXIgZm9yIHRoYXQgZmFtaWx5IGlzIG5vdCBpbnRlcmNlcHRpb24g4oCUIGl0IGlzIGEgUkVQT1JULiBBIHJlYWRcbiAqIGlzIEJPUlJPV0VEOyBtdXRhdGluZyBpdCBpbiBwbGFjZSBpcyBvdXQgb2YgY29udHJhY3QuIFRoaXMgbW9kdWxlIGRldGVjdHMgdGhlXG4gKiB2aW9sYXRpb24gYWZ0ZXIgdGhlIGZhY3QgYW5kIG5hbWVzIGl0IChhIGRldi1tb2RlIHdhcm5pbmcgYXQgY29tbWl0IOKAlCB0aGVcbiAqIHdyaXRlIGFscmVhZHkgaGFwcGVuZWQsIHNvIGl0IGNhbm5vdCBiZSByZWZ1c2VkKSwgaW5zdGVhZCBvZiBsZXR0aW5nIHRoZSBydW5cbiAqIGVuZCB3aXRoIGEgY29tbWl0IGxvZyB0aGF0IGRpc2FncmVlcyB3aXRoIGZpbmFsIHN0YXRlIGFuZCBub3RoaW5nIHNheWluZyBzby5cbiAqXG4gKiDilIDilIAgSG93IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICogYHJlYWRUcmFja2luZzogJ2Z1bGwnYCAodGhlIGRlZmF1bHQpIGFscmVhZHkgcmV0YWlucyBhIENMT05FIG9mIGV2ZXJ5IHZhbHVlXG4gKiBhIHN0YWdlIHJlYWQuIEF0IGNvbW1pdCwgYSBrZXkgdGhlIHN0YWdlIHJlYWQgYnV0IG5ldmVyIFdST1RFIG11c3Qgc3RpbGxcbiAqIGhvbGQgd2hhdCBpdCBoZWxkIGF0IHJlYWQgdGltZSDigJQgY29tbWl0dGVkIHN0YXRlIGlzIGltbXV0YWJsZS1hZnRlci1zd2FwIGFuZFxuICogdGhlIGJ1ZmZlcidzIHdvcmtpbmcgY29weSBpcyBwcml2YXRlLiBJZiBpdCBkaWZmZXJzLCB0aGUgb25seSB0aGluZyB0aGF0IGNhblxuICogaGF2ZSBjaGFuZ2VkIGl0IGlzIHRoZSBzdGFnZSBpdHNlbGYsIGluIHBsYWNlLlxuICpcbiAqIERldi1tb2RlIG9ubHkgKGBlbmFibGVEZXZNb2RlKClgKSwgc28gdGhlIGRlZmF1bHQgcnVuIHBheXMgbm90aGluZyBhbmQgaXRzXG4gKiBieXRlcyBhcmUgdW5jaGFuZ2VkLlxuICovXG5cbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJy4vdXRpbHMuanMnO1xuXG4vKiogUmVuZGVyIG9uZSBwYXRoIHNlZ21lbnQgZm9yIGEgaHVtYW46IGBsaW5lc1swXS5xdHlgLCBub3QgYGxpbmVzLjAucXR5YC4gKi9cbmZ1bmN0aW9uIGpvaW5TZWdtZW50KHByZWZpeDogc3RyaW5nLCBzZWdtZW50OiBzdHJpbmcsIGludG9BcnJheTogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChpbnRvQXJyYXkpIHJldHVybiBgJHtwcmVmaXh9WyR7c2VnbWVudH1dYDtcbiAgcmV0dXJuIHByZWZpeCA9PT0gJycgPyBzZWdtZW50IDogYCR7cHJlZml4fS4ke3NlZ21lbnR9YDtcbn1cblxuLyoqXG4gKiBUaGUgZmlyc3QgcGF0aCBhdCB3aGljaCBgYWZ0ZXJgIHN0b3BzIGFncmVlaW5nIHdpdGggYGJlZm9yZWAsIG9yIGB1bmRlZmluZWRgXG4gKiB3aGVuIHRoZXkgYXJlIHN0cnVjdHVyYWxseSBlcXVhbC4gRGVwdGgtZmlyc3QsIG93biBrZXlzIG9ubHkg4oCUIHRoZSBzYW1lXG4gKiBzaGFwZXMgYGRlZXBFcXVhbGAgaGFuZGxlcywgc2luY2UgY29tbWl0dGVkIHN0YXRlIGlzIEpTT04tc2hhcGVkLlxuICpcbiAqIEN5Y2xlLXNhZmUgYnkgY29uc3RydWN0aW9uOiBpdCBvbmx5IHJlY3Vyc2VzIGludG8gcGFpcnMgdGhhdCBhcmUgbm90IGFscmVhZHlcbiAqIGBkZWVwRXF1YWxgLCBhbmQgc3RvcHMgYXQgdGhlIGZpcnN0IGRpc2FncmVlbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpcnN0RGlmZmVyaW5nUGF0aChiZWZvcmU6IHVua25vd24sIGFmdGVyOiB1bmtub3duLCBwcmVmaXggPSAnJywgZGVwdGggPSAwKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGRlZXBFcXVhbChiZWZvcmUsIGFmdGVyLCAnY29waWVzJykpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmIChkZXB0aCA+PSAyNCkgcmV0dXJuIHByZWZpeDsgLy8gcGF0aG9sb2dpY2FsIG5lc3Rpbmcg4oCUIG5hbWUgd2hhdCB3ZSBoYXZlXG4gIGlmIChiZWZvcmUgPT09IG51bGwgfHwgYWZ0ZXIgPT09IG51bGwgfHwgdHlwZW9mIGJlZm9yZSAhPT0gJ29iamVjdCcgfHwgdHlwZW9mIGFmdGVyICE9PSAnb2JqZWN0JykgcmV0dXJuIHByZWZpeDtcblxuICBjb25zdCBiZWZvcmVJc0FycmF5ID0gQXJyYXkuaXNBcnJheShiZWZvcmUpO1xuICBpZiAoYmVmb3JlSXNBcnJheSAhPT0gQXJyYXkuaXNBcnJheShhZnRlcikpIHJldHVybiBwcmVmaXg7XG5cbiAgaWYgKGJlZm9yZUlzQXJyYXkpIHtcbiAgICBjb25zdCBhID0gYmVmb3JlIGFzIHVua25vd25bXTtcbiAgICBjb25zdCBiID0gYWZ0ZXIgYXMgdW5rbm93bltdO1xuICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBwcmVmaXg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBkZWVwZXIgPSBmaXJzdERpZmZlcmluZ1BhdGgoYVtpXSwgYltpXSwgam9pblNlZ21lbnQocHJlZml4LCBTdHJpbmcoaSksIHRydWUpLCBkZXB0aCArIDEpO1xuICAgICAgaWYgKGRlZXBlciAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZGVlcGVyO1xuICAgIH1cbiAgICByZXR1cm4gcHJlZml4O1xuICB9XG5cbiAgY29uc3QgYSA9IGJlZm9yZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgYiA9IGFmdGVyIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBrZXlzID0gbmV3IFNldChbLi4uT2JqZWN0LmtleXMoYSksIC4uLk9iamVjdC5rZXlzKGIpXSk7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCBkZWVwZXIgPSBmaXJzdERpZmZlcmluZ1BhdGgoYVtrZXldLCBiW2tleV0sIGpvaW5TZWdtZW50KHByZWZpeCwga2V5LCBmYWxzZSksIGRlcHRoICsgMSk7XG4gICAgaWYgKGRlZXBlciAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZGVlcGVyO1xuICB9XG4gIHJldHVybiBwcmVmaXg7XG59XG5cbi8qKlxuICogVGhlIHJlZnVzYWwgdGV4dCBmb3IgYSB3cml0ZSB0aGF0IHJlYWNoZWQgYSBmcmFtZSBBRlRFUiBpdHMgc3RhZ2UgY29tbWl0dGVkLlxuICogQSBzY29wZSwgYW5kIGV2ZXJ5IHByb3h5IHJlYWQgb3V0IG9mIGl0LCBpcyBib3VuZCB0byB0aGUgc3RhZ2UgaXQgd2FzIGhhbmRlZFxuICogdG87IGtlcHQgcGFzdCB0aGF0IHN0YWdlJ3MgY29tbWl0IGl0IGhhcyBubyBmcmFtZSB0byBsYW5kIGluLCBzbyB0aGUgd3JpdGVcbiAqIHdvdWxkIHNpdCBpbiBhIGJ1ZmZlciBub3RoaW5nIGV2ZXIgY29tbWl0cyDigJQgbm8gdHJhY2Ugcm93LCBzdGF0ZSB1bmNoYW5nZWQuXG4gKiBUaGUgdGhyb3cgc3VyZmFjZXMgaW4gdGhlIHN0YWdlIHRoYXQgbWFkZSB0aGUgd3JpdGUgKHRoZSBlbmdpbmUncyBlcnJvclxuICogcGF0aCBuYW1lcyBpdCk7IHRoaXMgdGV4dCBuYW1lcyB0aGUgc3RhZ2UgdGhlIGhhbmRsZSBjYW1lIGZyb20uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWFkRnJhbWVNZXNzYWdlKHN0YWdlTmFtZTogc3RyaW5nLCBydW50aW1lU3RhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGZyb20gPSBydW50aW1lU3RhZ2VJZCA/IGBcIiR7c3RhZ2VOYW1lfVwiICgke3J1bnRpbWVTdGFnZUlkfSlgIDogYFwiJHtzdGFnZU5hbWV9XCJgO1xuICByZXR1cm4gKFxuICAgIGBbZm9vdHByaW50XSBTdGFnZSAke2Zyb219IGhhcyBhbHJlYWR5IGNvbW1pdHRlZCDigJQgaXRzIHNjb3BlIGlzIGRlYWQsIGFuZCBhIHdyaXRlIHRvIFxcYCR7a2V5fVxcYCBgICtcbiAgICAnanVzdCByZWFjaGVkIGl0IGZyb20gYSBsYXRlciBzdGFnZSAodGhpcyBlcnJvciBpcyByYWlzZWQgaW4gdGhhdCBzdGFnZSkuIEEgc2NvcGUsIGFuZCBhbnl0aGluZyByZWFkICcgK1xuICAgICdvdXQgb2YgaXQgKGBzY29wZS5rYCwgYHNjb3BlLmsuYXJyWzBdYCksIGJlbG9uZ3MgdG8gdGhlIHN0YWdlIGl0IHdhcyBoYW5kZWQgdG87IGhlbGQgcGFzdCB0aGF0ICcgK1xuICAgIFwic3RhZ2UncyBjb21taXQgaXQgaGFzIG5vIGZyYW1lIHRvIGxhbmQgaW4sIHNvIHRoZSB3cml0ZSB3b3VsZCB2YW5pc2ggd2l0aCBubyB0cmFjZSByb3cuIFwiICtcbiAgICBcIlJlYWQgdGhlIGtleSBhZ2FpbiB0aHJvdWdoIHRoZSBDVVJSRU5UIHN0YWdlJ3Mgc2NvcGUgYW5kIHdyaXRlIHRoZXJlLlwiXG4gICk7XG59XG5cbi8qKlxuICogVGhlIHdhcm5pbmcgdGV4dCBmb3IgYSBrZXkgdGhlIHN0YWdlIFdST1RFIGFmdGVyIGNoYW5naW5nLCBpbiBwbGFjZSwgdGhlXG4gKiBjb21taXR0ZWQgdmFsdWUgaXQgaGFkIHJlYWQgYmVmb3JlIGl0cyBmaXJzdCB3cml0ZSAoY29weS1vbi13cml0ZSwgOS4yOS4wKS5cbiAqIFRoZSBjb21taXQgY29tcGFyZXMgd2hhdCB0aGUgc3RhZ2Ugd3JvdGUgYWdhaW5zdCBjb21taXR0ZWQgc3RhdGUg4oCUIHRoZVxuICogb2JqZWN0IHRoZSBpbi1wbGFjZSBjaGFuZ2UgYWxzbyBtb3ZlZCDigJQgc28gaXQgcmVjb3JkcyBubyBjaGFuZ2U6IGxpdmUgc3RhdGVcbiAqIGtlZXBzIHRoZSBlZGl0LCB0aGUgbG9nIGFuZCBldmVyeSBmb2xkIGRvIG5vdC4gKDkuMjguMCByZWNvcmRlZCBpdCB3aGVuIHRoZVxuICogZWRpdCBjYW1lIGFmdGVyIHRoZSBmaXJzdCB3cml0ZSwgYnkgYWNjaWRlbnQgb2YgYSB3aG9sZS1zdGF0ZSBjbG9uZS4pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21taXR0ZWRNdXRhdGlvbk1lc3NhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB3aGVyZSA9IHBhdGggPT09ICcnID8ga2V5IDogYCR7a2V5fS4ke3BhdGh9YC5yZXBsYWNlKC9cXC5cXFsvZywgJ1snKTtcbiAgcmV0dXJuIChcbiAgICBgW2Zvb3RwcmludF0gU3RhZ2UgXCIke3N0YWdlTmFtZX1cIiBjaGFuZ2VkIFxcYCR7d2hlcmV9XFxgIElOIFBMQUNFIG9uIHRoZSBjb21taXR0ZWQgdmFsdWUgaXQgcmVhZCBiZWZvcmUgYCArXG4gICAgJ2l0cyBmaXJzdCB3cml0ZSwgdGhlbiB3cm90ZSB0aGUga2V5LiBUaGUgY29tbWl0IGNvbXBhcmVzIHRoZSB3cml0dGVuIHZhbHVlIHdpdGggY29tbWl0dGVkIHN0YXRlIOKAlCAnICtcbiAgICAnd2hpY2ggdGhlIGluLXBsYWNlIGNoYW5nZSBhbHNvIG1vdmVkIOKAlCBzbyBpdCByZWNvcmRzIE5PIGNoYW5nZTogbGl2ZSBzdGF0ZSBrZWVwcyB0aGUgZWRpdCwgdGhlIGNvbW1pdCAnICtcbiAgICAnbG9nIGFuZCBldmVyeSByZWFkZXIgdGhhdCBmb2xkcyBpdCBkbyBub3QuIFJlYWRzIGFyZSBCT1JST1dFRC4gQnVpbGQgdGhlIG5leHQgdmFsdWUgaW5zdGVhZCAnICtcbiAgICBgKFxcYHNjb3BlLiRzZXRWYWx1ZSgnJHtrZXl9JywgeyAuLi52YWx1ZSwg4oCmIH0pXFxgKSwgb3IgcmVhZCB0aGUga2V5IGFnYWluIGFmdGVyIHRoZSBzdGFnZSdzIGZpcnN0IGAgK1xuICAgIFwid3JpdGUg4oCUIHRoYXQgcmVhZCBpcyB0aGUgc3RhZ2UncyBvd24gY29weS5cIlxuICApO1xufVxuXG4vKipcbiAqIFRoZSB3YXJuaW5nIHRleHQuIE5hbWVzIHRoZSBzdGFnZSwgdGhlIGV4YWN0IHBhdGggdGhhdCBtb3ZlZCwgYW5kIHRoZSB0d29cbiAqIHdheXMgdG8gd3JpdGUgaXQgYmFjayDigJQgYmVjYXVzZSBcInlvdSBtdXRhdGVkIHNvbWV0aGluZ1wiIGlzIG5vdCBhY3Rpb25hYmxlXG4gKiBhbmQgdGhpcyBpcyB0aGUgb25lIGZhaWx1cmUgbW9kZSB0aGUgd2hvbGUgZGVzaWduIGV4aXN0cyB0byBwcmV2ZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYm9ycm93ZWRNdXRhdGlvbk1lc3NhZ2Uoc3RhZ2VOYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB3aGVyZSA9IHBhdGggPT09ICcnID8ga2V5IDogYCR7a2V5fS4ke3BhdGh9YC5yZXBsYWNlKC9cXC5cXFsvZywgJ1snKTtcbiAgcmV0dXJuIChcbiAgICBgW2Zvb3RwcmludF0gU3RhZ2UgXCIke3N0YWdlTmFtZX1cIiBjaGFuZ2VkIFxcYCR7d2hlcmV9XFxgIElOIFBMQUNFLCBvbiBhIHZhbHVlIGl0IG9ubHkgcmVhZC4gYCArXG4gICAgJ2Zvb3RwcmludCBuZXZlciBzYXcgdGhhdCB3cml0ZTogdGhlcmUgaXMgbm8gdHJhY2Ugcm93IGZvciBpdCwgc28gdGhlIGNvbW1pdCBsb2csIHRoZSBjYXVzYWwgY2hhaW4gJyArXG4gICAgJ2FuZCBldmVyeSByZWFkZXIgdGhhdCBmb2xkcyB0aGUgbG9nIHdpbGwgZGlzYWdyZWUgd2l0aCBmaW5hbCBzdGF0ZSDigJQgYW5kIHVuZGVyIGEgZGlmZmVyZW50IHdyaXRlICcgK1xuICAgICdvcmRlciB0aGUgY2hhbmdlIGlzIGRyb3BwZWQgZW50aXJlbHkuIFJlYWRzIGFyZSBCT1JST1dFRC4gJyArXG4gICAgJ1dyaXRlIHRocm91Z2ggdGhlIHNjb3BlIGluc3RlYWQgKGBzY29wZS4nICtcbiAgICB3aGVyZSArXG4gICAgJyA9IOKApmAg4oCUIHByb3BlcnR5IGFuZCBpbmRleGVkIGFjY2VzcyBhcmUgYm90aCB0cmFja2VkKSwgJyArXG4gICAgYG9yIGhhbmQgYmFjayB0aGUgd2hvbGUgdmFsdWUgd2l0aCBcXGBzY29wZS4kc2V0VmFsdWUoJyR7a2V5fScsIG5leHQpXFxgLiBgICtcbiAgICAnVGhpcyB1c3VhbGx5IGNvbWVzIGZyb20gbXV0YXRpbmcgYW4gZWxlbWVudCByZWFjaGVkIGJ5IGBmaW5kYC9gZmlsdGVyYC9gZm9y4oCmb2ZgL2Bmb3JFYWNoYCwgJyArXG4gICAgJ3doaWNoIHRoZSBzY29wZSBwcm94eSBjYW5ub3QgaW50ZXJjZXB0LidcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -29,9 +29,10 @@
|
|
|
29
29
|
* field means `'truncated'`; they are registered so a reader explains them from the same place.
|
|
30
30
|
*
|
|
31
31
|
* NOT HERE: the two strings a redaction leaves where a value was. The engine writes those on every
|
|
32
|
-
* redacted run;
|
|
33
|
-
*
|
|
34
|
-
* so a bundler drops it wherever
|
|
32
|
+
* redacted run; the log's lives in its own leaf, `memory/placeholders.ts` (the scope channel's with
|
|
33
|
+
* the verdict, `memory/redaction.ts`), so that an app which only runs charts does not carry these
|
|
34
|
+
* sentences in its bundle (`HONESTY_CODES` is a pure expression, so a bundler drops it wherever
|
|
35
|
+
* nothing reads it).
|
|
35
36
|
*
|
|
36
37
|
* WHY L0. This file imports NOTHING, and `slice/` and `time-travel/` (L3) type their codes through
|
|
37
38
|
* it, so it sits below them — the layer table is `scripts/layering.config.cjs`.
|
|
@@ -29,9 +29,10 @@
|
|
|
29
29
|
* field means `'truncated'`; they are registered so a reader explains them from the same place.
|
|
30
30
|
*
|
|
31
31
|
* NOT HERE: the two strings a redaction leaves where a value was. The engine writes those on every
|
|
32
|
-
* redacted run;
|
|
33
|
-
*
|
|
34
|
-
* so a bundler drops it wherever
|
|
32
|
+
* redacted run; the log's lives in its own leaf, `memory/placeholders.ts` (the scope channel's with
|
|
33
|
+
* the verdict, `memory/redaction.ts`), so that an app which only runs charts does not carry these
|
|
34
|
+
* sentences in its bundle (`HONESTY_CODES` is a pure expression, so a bundler drops it wherever
|
|
35
|
+
* nothing reads it).
|
|
35
36
|
*
|
|
36
37
|
* WHY L0. This file imports NOTHING, and `slice/` and `time-travel/` (L3) type their codes through
|
|
37
38
|
* it, so it sits below them — the layer table is `scripts/layering.config.cjs`.
|
|
@@ -88,4 +89,4 @@ export const HONESTY_CODES = /* @__PURE__ */ Object.freeze({
|
|
|
88
89
|
deleted: "The key's last write in the range asked about left it absent (a delete of the key or of a container around it, or a set of a container that no longer holds it), so the answer is undefined because the record says the key was gone at that point, not because nothing was recorded.",
|
|
89
90
|
'from-initial-state': "No set or delete of the key, or of a container around it, is in the range asked about, so the answer rests on the value the key had before the run: folded from the initialState passed in when there was one, and otherwise only what the log's merges, appends and nested writes added to it (or nothing), which is partial for a key seeded before the run.",
|
|
90
91
|
});
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9uZXN0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWVtb3J5L2hvbmVzdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Q0c7QUFFSDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pELDZFQUE2RTtJQUM3RSx3QkFBd0IsRUFDdEIsK0xBQStMO0lBQ2pNLGFBQWEsRUFDWCxpVUFBaVU7SUFDblUsZ0JBQWdCLEVBQ2QsNkxBQTZMO0lBQy9MLG9CQUFvQixFQUNsQiwwSUFBMEk7SUFDNUksYUFBYSxFQUNYLG1KQUFtSjtJQUNySixTQUFTLEVBQ1AsOEdBQThHO0lBQ2hILG1HQUFtRztJQUNuRyxXQUFXLEVBQ1QscUlBQXFJO0lBQ3ZJLGVBQWUsRUFDYix1WUFBdVk7SUFDelksY0FBYyxFQUNaLDBOQUEwTjtJQUM1Tiw4RUFBOEU7SUFDOUUsV0FBVyxFQUNULG9PQUFvTztJQUN0TyxLQUFLLEVBQ0gseVFBQXlRO0lBQzNRLCtGQUErRjtJQUMvRixhQUFhLEVBQ1gsNEtBQTRLO0lBQzlLLGtCQUFrQixFQUNoQix1T0FBdU87SUFDek8sYUFBYSxFQUNYLGdMQUFnTDtJQUNsTCw2RUFBNkU7SUFDN0UsYUFBYSxFQUNYLHVOQUF1TjtJQUN6TixVQUFVLEVBQ1IsNlVBQTZVO0lBQy9VLDZFQUE2RTtJQUM3RSxTQUFTLEVBQ1AsZ0xBQWdMO0lBQ2xMLDhFQUE4RTtJQUM5RSxvQkFBb0IsRUFDbEIsc01BQXNNO0lBQ3hNLCtGQUErRjtJQUMvRixRQUFRLEVBQ04sNFdBQTRXO0lBQzlXLHdGQUF3RjtJQUN4RixPQUFPLEVBQ0wsdVJBQXVSO0lBQ3pSLG9CQUFvQixFQUNsQixnV0FBZ1c7Q0FDbFUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBob25lc3R5LnRzIOKAlCB0aGUgT05FIHZvY2FidWxhcnkgZm9yIHdoYXQgYSByZWFkZXIgY2Fubm90IHNlZS5cbiAqXG4gKiBXSFkgVEhJUyBGSUxFIEVYSVNUUy4gQSByZWNvcmRpbmcgY2Fubm90IGFsd2F5cyBhbnN3ZXIgd2hhdCBpdCBpcyBhc2tlZCwgYW5kIHRoZSBsaWJyYXJ5IHNheXNcbiAqIHNvIGluIHNldmVyYWwgcGxhY2VzLCBlYWNoIGluIGl0cyBvd24gd29yZHM6IGEgc2xpY2UgY2FycmllcyBgSG9uZXN0eU5vdGVgcyBhbmQsIHdoZW4gaXQgaGFzIG5vXG4gKiBhbnN3ZXIsIGEgYG1pc3NpbmdgIHJlYXNvbjsgYSBmZWQgZWRnZSBhbmQgYW4gZWxlbWVudCBiaXJ0aCBjYXJyeSBhIGBiYXNpc2A7IGEgZm9sZCBjYXJyaWVzIGFcbiAqIGBiYXNpc2AgYW5kIGl0cyBgcmVkYWN0ZWRgIHBhdGhzOyBhIHN0b3JlZCBsb2cgcmVwb3J0cyBgTG9nR2FwYHM7IGEgY2F1c2FsIG5vZGUgY2Fycmllc1xuICogYGluY29tcGxldGVTb3VyY2VzYCBhbmQgYHRydW5jYXRlZGAuIEEgcmVhZGVyIHRoYXQgd2FudHMgdG8gRVhQTEFJTiBhbnkgb2YgdGhlbSB0byBhIHBlcnNvbiAoYVxuICogd2h5LXBhbmVsLCBhbiBhZ2VudCB0b29sKSBrZXB0IGl0cyBvd24gdGFibGUgb2YgY29kZSDihpIgc2VudGVuY2UsIGFuZCB0YWJsZXMga2VwdCBhcGFydCBkcmlmdC5cbiAqIFRoaXMgZmlsZSBpcyB0aGF0IHRhYmxlLCBvbmNlLlxuICpcbiAqIFdIQVQgSVQgSE9MRFMuXG4gKiAgIC0gYEhPTkVTVFlfQ09ERVNgIOKAlCBhIGZyb3plbiwgY2xvc2VkIHJlZ2lzdHJ5OiBjb2RlIOKGkiB0aGUgT05FIHNlbnRlbmNlIHRoYXQgc2F5cyB3aGF0IHRoZSBjb2RlXG4gKiAgICAgbWVhbnMuIFRoZSBzaGFwZSBvZiBydXN0YydzIGAtLWV4cGxhaW5gIGFuZCBMU1AncyBgRGlhZ25vc3RpYy5jb2RlYDogdGhlIGNvZGUgaXMgdGhlIHN0YWJsZVxuICogICAgIGtleSBhIGNvbnN1bWVyIEJSQU5DSEVTIG9uOyB0aGUgc2VudGVuY2UgaXMgZm9yIHdob2V2ZXIgcmVhZHMgdGhlIHNjcmVlbi4gSXQgaXMgbm90IHRoZVxuICogICAgIHBlci1pbnN0YW5jZSBgZGV0YWlsYCBhIG5vdGUgY2FycmllcyAodGhhdCBuYW1lcyB0aGUga2V5LCB0aGUgYnVkZ2V0LCB0aGUgcm93cykuXG4gKiAgIC0gYEhvbmVzdHlDb2RlYCAvIGBSZWdpc3RlcmVkQ29kZWAg4oCUIHdoYXQgbWFrZXMgdGhlIHJlZ2lzdHJ5IHRoZSBvd25lciBhbmQgbm90IGEgc3VnZ2VzdGlvbjpcbiAqICAgICBlYWNoIHB1YmxpYyB1bmlvbiBvZiB0aGVzZSBjb2RlcyAoYEhvbmVzdHlOb3RlQ29kZWAsIGBNaXNzaW5nU2xpY2VSZWFzb25gLFxuICogICAgIGBNaXNzaW5nUHJvdmVuYW5jZVJlYXNvbmAsIGBGZWRCYXNpc2AsIGBBdHRyaWJ1dGlvbkJhc2lzYCwgYEZvbGRCYXNpc2AsIGFuZCBzaW5jZSA5LjMzLjAgYFZhbHVlQmFzaXNgIC9cbiAqICAgICBgV3JpdGVyQmFzaXNgIOKAlCB0aGUgYmFzaXMgdHdpbnMgb2YgYGNvbW1pdFZhbHVlQXRgIC8gYGZpbmRMYXN0V3JpdGVyYCkgZGVjbGFyZXMgaXRzIG1lbWJlcnNcbiAqICAgICB0aHJvdWdoIGBSZWdpc3RlcmVkQ29kZWAsIHNvIGEgbWVtYmVyIHRoZSByZWdpc3RyeSBkb2VzIG5vdCBob2xkIGZhaWxzIHRvIENPTVBJTEUuIEFuZFxuICogICAgIGB0ZXN0L2FyY2hpdGVjdHVyZS9ob25lc3R5LXZvY2FidWxhcnkudGVzdC50c2AgYXNrcyB0aGUgdHlwZSBjaGVja2VyIGZvciBldmVyeSBleHBvcnRlZCB0eXBlXG4gKiAgICAgYWxpYXMgb2YgYGZvb3RwcmludGpzL3RyYWNlYCB0aGF0IGlzIGEgdW5pb24gb2Ygc3RyaW5nIGxpdGVyYWxzOiBlYWNoIG9uZSBpcyBpbnNpZGUgdGhlXG4gKiAgICAgcmVnaXN0cnkgb3IgaXMgbmFtZWQsIHdpdGggaXRzIHJlYXNvbiwgYXMgbm90IGFuIGhvbmVzdHkgdm9jYWJ1bGFyeS5cbiAqXG4gKiBOTyBPQkpFQ1QgR0FJTlMgQSBGSUVMRCBmcm9tIGJlaW5nIHJlZ2lzdGVyZWQuIFRocmVlIHNpZ25hbHMgY2Fycnkgbm8gY29kZSBvZiB0aGVpciBvd24g4oCUIGFcbiAqIGBMb2dHYXBgIChgJ2xvZy1nYXAnYCksIGBDYXVzYWxOb2RlLmluY29tcGxldGVTb3VyY2VzYCAoYCdpbmNvbXBsZXRlLXNvdXJjZXMnYCkgYW5kXG4gKiBgRm9sZGVkU3RhdGUucmVkYWN0ZWRgIC8gYHJlZGFjdGVkUGF0aHNgIChgJ3JlZGFjdGVkJ2ApIOKAlCBhbmQgYSBgdHJ1bmNhdGVkOiB7IGJ5RGVwdGgsIGJ5Tm9kZXMgfWBcbiAqIGZpZWxkIG1lYW5zIGAndHJ1bmNhdGVkJ2A7IHRoZXkgYXJlIHJlZ2lzdGVyZWQgc28gYSByZWFkZXIgZXhwbGFpbnMgdGhlbSBmcm9tIHRoZSBzYW1lIHBsYWNlLlxuICpcbiAqIE5PVCBIRVJFOiB0aGUgdHdvIHN0cmluZ3MgYSByZWRhY3Rpb24gbGVhdmVzIHdoZXJlIGEgdmFsdWUgd2FzLiBUaGUgZW5naW5lIHdyaXRlcyB0aG9zZSBvbiBldmVyeVxuICogcmVkYWN0ZWQgcnVuOyB0aGV5IGxpdmUgaW4gdGhlaXIgb3duIGxlYWYsIGBtZW1vcnkvcGxhY2Vob2xkZXJzLnRzYCwgc28gdGhhdCBhbiBhcHAgd2hpY2ggb25seVxuICogcnVucyBjaGFydHMgZG9lcyBub3QgY2FycnkgdGhlc2Ugc2VudGVuY2VzIGluIGl0cyBidW5kbGUgKGBIT05FU1RZX0NPREVTYCBpcyBhIHB1cmUgZXhwcmVzc2lvbixcbiAqIHNvIGEgYnVuZGxlciBkcm9wcyBpdCB3aGVyZXZlciBub3RoaW5nIHJlYWRzIGl0KS5cbiAqXG4gKiBXSFkgTDAuIFRoaXMgZmlsZSBpbXBvcnRzIE5PVEhJTkcsIGFuZCBgc2xpY2UvYCBhbmQgYHRpbWUtdHJhdmVsL2AgKEwzKSB0eXBlIHRoZWlyIGNvZGVzIHRocm91Z2hcbiAqIGl0LCBzbyBpdCBzaXRzIGJlbG93IHRoZW0g4oCUIHRoZSBsYXllciB0YWJsZSBpcyBgc2NyaXB0cy9sYXllcmluZy5jb25maWcuY2pzYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgSE9ORVNUWV9DT0RFUyB9IGZyb20gJ2Zvb3RwcmludGpzL3RyYWNlJztcbiAqXG4gKiBmb3IgKGNvbnN0IHsgY29kZSB9IG9mIGZvcndhcmRTbGljZS5ub3RlcykgY29uc29sZS5sb2coY29kZSwgJ+KGkicsIEhPTkVTVFlfQ09ERVNbY29kZV0pO1xuICogLy8gcmVhZHMtbm90LXJlY29yZGVkIOKGkiBUaGlzIGxvZyBjYXJyaWVzIG5vIHJlY29yZGVkIHJlYWQgYXQgYWxsICh0aGUgcmVhZFRyYWNraW5nOiAnb2ZmJyBzaWduYXR1cmUpLCDigKZcbiAqIEhPTkVTVFlfQ09ERVNbZm9sZGVkU3RhdGUuYmFzaXNdOyAvLyAnbG9nLW9ubHknIOKGkiBObyBpbml0aWFsU3RhdGUgdHJhdmVsbGVkIHdpdGggdGhpcyBsb2cgKOKApiksIOKAplxuICogYGBgXG4gKi9cblxuLyoqXG4gKiBFdmVyeSBob25lc3R5IGNvZGUgdGhlIHRyYWNlIHJlYWRlcnMgKGBmb290cHJpbnRqcy90cmFjZWApIHNwZWFrLCB3aXRoIHRoZSBvbmUgc2VudGVuY2UgdGhhdCBzYXlzXG4gKiB3aGF0IGl0IG1lYW5zLlxuICpcbiAqIEZyb3plbiBhbmQgY2xvc2VkOiB0aGUga2V5cyBhcmUgZXhhY3RseSB0aGUgY29kZXMgYmVsb3csIGFuZCB7QGxpbmsgSG9uZXN0eUNvZGV9IGlzIGRlcml2ZWQgZnJvbVxuICogdGhlbS4gQSBuZXcgY29kZSBpcyBvbmUgbmV3IGxpbmUgaGVyZTogYSB1bmlvbiBkZWNsYXJlZCB0aHJvdWdoIHtAbGluayBSZWdpc3RlcmVkQ29kZX0gY2Fubm90IGhvbGRcbiAqIGEgY29kZSB0aGF0IGlzIG5vdCBvbiBpdCwgYW5kIGB0ZXN0L2FyY2hpdGVjdHVyZS9ob25lc3R5LXZvY2FidWxhcnkudGVzdC50c2AgZmFpbHMgb24gYW4gZXhwb3J0ZWRcbiAqIHR5cGUgYWxpYXMgb2YgYGZvb3RwcmludGpzL3RyYWNlYCB0aGF0IGlzIGEgdW5pb24gb2Ygc3RyaW5nIGxpdGVyYWxzIG5laXRoZXIgaW5zaWRlIHRoZSByZWdpc3RyeVxuICogbm9yIG5hbWVkIHRoZXJlIGFzIG5vdCBhbiBob25lc3R5IHZvY2FidWxhcnkuIFRoZSB2YWx1ZXMgYXJlIHR5cGVkIGBzdHJpbmdgLCBub3QgbGl0ZXJhbCB0eXBlcyxcbiAqIG9uIHB1cnBvc2U6IHRoZSBzZW50ZW5jZXMgYXJlIGZvciBhIHNjcmVlbiBhbmQgbWF5IGJlIHJld29yZGVkOyBhIGNvbnN1bWVyIGJyYW5jaGVzIG9uIHRoZSBLRVkuXG4gKi9cbmV4cG9ydCBjb25zdCBIT05FU1RZX0NPREVTID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5mcmVlemUoe1xuICAvLyDilIDilIAgYSBzbGljZSdzIG5vdGVzIOKAlCBgSG9uZXN0eU5vdGUuY29kZWAgKHNsaWNlLykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICdjb25zZXJ2YXRpdmUtZmVkLWVkZ2VzJzpcbiAgICBcIkF0IGxlYXN0IG9uZSAnZmVkJyBlZGdlIGlzIHN0YWdlLWxldmVsIChjb25zZXJ2YXRpdmUpOiBpdHMgd3JpdGUgY2FycmllcyBubyBwZXItd3JpdGUgcmVhZCBwcm92ZW5hbmNlLCBzbyB0aGUgZWRnZSBtYXkgbm90IGJlIHJlYWwg4oCUIHR1cm4gb24gd3JpdGVQcm92ZW5hbmNlOiAncmVhZHMtcHJlZml4JyBmb3IgZXhhY3QgZWRnZXMuXCIsXG4gICduZXN0ZWQtcm93cyc6XG4gICAgXCJBIHdyaXRlIHRoaXMgYW5zd2VyIHJlc3RzIG9uIHJlYWNoZWQgdGhlIGtleSBvbmx5IHRocm91Z2ggcGF0aHMgaW5zaWRlIGl0IChhIHN1YmZsb3cncyBpbnB1dCBzZWVkLCBhbiBvdXRwdXRNYXBwZXIgbWVyZ2UtYmFjaywgYSBmb3JrIGNoaWxkJ3MgbmFtZXNwYWNlKSwgc28gaXQgY2hhbmdlZCBwYXJ0IG9mIHRoZSBrZXkncyB2YWx1ZSwgbm90IHRoZSB3aG9sZTogZWFybGllciB3cml0ZXMgbWF5IGFjY291bnQgZm9yIHRoZSByZXN0LCBhbmQgYSByZWFkZXIgb2YgdGhlIGtleSBtYXkgbm90IGhhdmUgcmVhZCB0aGUgcGFydCB0aGF0IHdyaXRlIGNoYW5nZWQuXCIsXG4gICdwcmUtcnVuLW9yaWdpbic6XG4gICAgJ1RoZSB2YWx1ZSBiZWluZyBmb2xsb3dlZCB3YXMgYWJzZW50IG9yIGFscmVhZHkgdGhlcmUgYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSB0aGlzIGxvZyBjYW4gc2VlIChpbml0aWFsIHN0YXRlLCBmcm96ZW4gcnVuIGlucHV0IG9yIGEgY2xvc3VyZSksIHNvIHdobyBwdXQgaXQgdGhlcmUgaXMgb3V0c2lkZSB0aGUgY29tbWl0IGxvZy4nLFxuICAncmVhZHMtbm90LXJlY29yZGVkJzpcbiAgICBcIlRoaXMgbG9nIGNhcnJpZXMgbm8gcmVjb3JkZWQgcmVhZCBhdCBhbGwgKHRoZSByZWFkVHJhY2tpbmc6ICdvZmYnIHNpZ25hdHVyZSksIHNvICdub3RoaW5nIHJlYWQgdGhpcyB2YWx1ZScgaXMgdW5rbm93YWJsZSBoZXJlLCBub3QgdHJ1ZS5cIixcbiAgJ3Vua25vd24ta2V5JzpcbiAgICBcIlRoaXMgbG9nIGhhcyBubyB3cml0ZSBhbmQgbm8gcmVjb3JkZWQgcmVhZCBvZiB0aGUga2V5LCB3aGljaCBpcyBtb3N0IGxpa2VseSBhIHR5cG8gb3IgdGhlIHdyb25nIHJ1bidzIGxvZyByYXRoZXIgdGhhbiBhIHZhcmlhYmxlIHdpdGggbm8gaGlzdG9yeS5cIixcbiAgdHJ1bmNhdGVkOlxuICAgICdBIGJ1ZGdldCAobWF4RGVwdGggb3IgbWF4Tm9kZXMpIGN1dCB0aGUgd2Fsaywgc28gbW9yZSBvZiB0aGUgYW5zd2VyIGV4aXN0cyBiZXlvbmQgdGhlIGhvcml6b24gaXQgc3RvcHBlZCBhdC4nLFxuICAvLyDilIDilIAgd2h5IGEgc2xpY2UgaGFzIG5vIGFuc3dlciDigJQgYG1pc3NpbmdgIChzbGljZS86IE1pc3NpbmdTbGljZVJlYXNvbiwgTWlzc2luZ1Byb3ZlbmFuY2VSZWFzb24pIOKUgFxuICAnZW1wdHktbG9nJzpcbiAgICAnVGhlIGNvbW1pdCBsb2cgaG9sZHMgbm8gY29tbWl0IGF0IGFsbCAobm90aGluZyBoYXMgZXhlY3V0ZWQsIG9yIHRoZSBsb2cgaGFuZGVkIGluIGlzIGVtcHR5KSwgc28gdGhlcmUgaXMgbm8gaGlzdG9yeSB0byBhbnN3ZXIgZnJvbS4nLFxuICAnbmV2ZXItd3JpdHRlbic6XG4gICAgJ05vIGNvbW1pdCBpbiB0aGUgcmFuZ2UgYXNrZWQgYWJvdXQgd3JvdGUgdGhlIGtleSDigJQgbm90IGl0cyB3aG9sZSB2YWx1ZSwgbm90IGEgcGF0aCBpbnNpZGUgaXQsIGFuZCBub3QgYSBjb250YWluZXIgYXJvdW5kIGl0IGluIGEgd2F5IHRoYXQgY2hhbmdlZCBpdCAoYSBmb3J3YXJkIHNsaWNlIG9yIGEgdGltZWxpbmUgYWxzbyBmb3VuZCBubyByZWNvcmRlZCByZWFkIG9uLCBpbnNpZGUgb3IgYXJvdW5kIGl0KSDigJQgc28gdGhlcmUgaXMgbm8gd3JpdGUgdG8gc3RhcnQgZnJvbTogYW55IHZhbHVlIGl0IGhhcyBjYW1lIGZyb20gdGhlIGluaXRpYWwgc3RhdGUsIHRoZSBmcm96ZW4gcnVuIGlucHV0IG9yIGEgY2xvc3VyZSwgbm9uZSBvZiB3aGljaCB0aGUgY29tbWl0IGxvZyBjYW4gc2VlLicsXG4gICdub3QtYW4tYXJyYXknOlxuICAgICdUaGUga2V5IHdhcyB3cml0dGVuLCBidXQgaXRzIHZhbHVlIGF0IHRoZSBwb2ludCBhc2tlZCBhYm91dCBpcyBub3QgYW4gYXJyYXkgKGEgc2NhbGFyIG9yIG9iamVjdCBrZXksIGEgZGVsZXRlZCBrZXksIG9yIGEgbWVyZ2UgdGhhdCBkZWdyYWRlZCBpdCksIHNvIGVsZW1lbnQgcHJvdmVuYW5jZSBkb2VzIG5vdCBhcHBseTogc2xpY2VGb3JLZXkgaXMgdGhlIHF1ZXJ5IGZvciBpdC4nLFxuICAvLyDilIDilIAgaG93IGEgZmVkIGVkZ2Ugd2FzIGF0dHJpYnV0ZWQg4oCUIGBGb3J3YXJkRWRnZS5iYXNpc2AgKHNsaWNlLzogRmVkQmFzaXMpIOKUgFxuICAncGVyLXdyaXRlJzpcbiAgICBcIlRoaXMgZmVkIGVkZ2UgaXMgZXhhY3Q6IHRoZSBkb3duc3RyZWFtIHdyaXRlIGNhcnJpZXMgcGVyLXdyaXRlIHJlYWQgcHJvdmVuYW5jZSAoVHJhY2VFbnRyeS5yZWFkS2V5cywgcmVjb3JkZWQgdW5kZXIgd3JpdGVQcm92ZW5hbmNlOiAncmVhZHMtcHJlZml4JykgYW5kIHRoYXQgbGlzdCBuYW1lcyB0aGUga2V5LCBzbyB0aGUgdmFsdWUgd2FzIHJlYWQgYmVmb3JlIHRoZSB3cml0ZSBpdCBmZWVkcy5cIixcbiAgc3RhZ2U6XG4gICAgJ1RoaXMgZmVkIGVkZ2UgaXMgY29uc2VydmF0aXZlOiB0aGUgZG93bnN0cmVhbSB3cml0ZSBjYXJyaWVzIG5vIHBlci13cml0ZSByZWFkIHByb3ZlbmFuY2UgKHRoZSB3cml0ZVByb3ZlbmFuY2UgZGlhbCB3YXMgb2ZmLCBvciB0aGUgbG9nIGlzIG1peGVkKSwgc28gYWxsIHRoYXQgaXMga25vd24gaXMgdGhhdCBpdHMgc3RhZ2UgcmVhZCB0aGlzIGtleSBhbmQgd3JvdGUgdGhhdCBwYXRoIGluIHNvbWUgb3JkZXIsIGFuZCB0aGUgZWRnZSBtYXkgbm90IGJlIHJlYWwuJyxcbiAgLy8g4pSA4pSAIGhvdyBhbiBlbGVtZW50J3MgYmlydGggd2FzIGF0dHJpYnV0ZWQg4oCUIGBFbGVtZW50QmlydGguYmFzaXNgIChzbGljZS86IEF0dHJpYnV0aW9uQmFzaXMpIOKUgFxuICAnYXBwZW5kLXZlcmInOlxuICAgIFwiVGhlIGVuZ2luZSByZWNvcmRlZCB0aGUgZWxlbWVudCBpbiBhbiBhcHBlbmQgcm93J3MgdGFpbCAoaG93IGNvbW1pdFZhbHVlczogJ2RlbHRhJyByZWNvcmRzIGFuIGFycmF5J3MgZ3Jvd3RoKSwgc28gdGhlIGNvbW1pdCB0aGF0IGFkZGVkIGl0IGlzIGtub3duIGV4YWN0bHksIG5vdCBpbmZlcnJlZC5cIixcbiAgJ3ByZWZpeC1pbmZlcmVuY2UnOlxuICAgICdBIHdob2xlLXZhbHVlIHdyaXRlIChhIHNldCBvciBhIG1lcmdlKSBrZXB0IHRoZSBwcmV2aW91cyBhcnJheSBhcyBpdHMgcHJlZml4LCBzbyB0aGUgbmV3IHRhaWwgaXMgYXR0cmlidXRlZCB0byB0aGF0IGNvbW1pdCBieSBpbmZlcmVuY2U6IGEgd3JpdGUgdGhhdCByZXBsYWNlZCB0aGUgYXJyYXkgd2l0aCBvbmUgdGhhdCBoYXBwZW5zIHRvIGJlZ2luIHRoZSBzYW1lIHdheSBsb29rcyBpZGVudGljYWwuJyxcbiAgJ3dob2xlLXZhbHVlJzpcbiAgICBcIlRoaXMgY29tbWl0IHBsYWNlZCB0aGUgYXJyYXkgd2hvbGVzYWxlICh0aGVyZSB3YXMgbm8gZWFybGllciBhcnJheSwgb3IgdGhlIG5ldyBvbmUgZG9lcyBub3QgYmVnaW4gd2l0aCBpdCksIHNvIGV2ZXJ5IGVsZW1lbnQncyBiaXJ0aCByZXNldHMgdG8gdGhpcyBjb21taXQ6IGV4YWN0LCBidXQgY29hcnNlLlwiLFxuICAvLyDilIDilIAgaG93IGEgZm9sZCB3YXMgZGVyaXZlZCDigJQgYEZvbGRlZFN0YXRlLmJhc2lzYCAodGltZS10cmF2ZWwvKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgJ2luaXRpYWwrbG9nJzpcbiAgICAnVGhlIGZvbGQgc3RhcnRlZCBmcm9tIHRoZSBmb2xkIGJhc2UgdGhhdCB0cmF2ZWxsZWQgd2l0aCB0aGUgbG9nIChpbml0aWFsU3RhdGUpIGFuZCByZXBsYXllZCB0aGUgY29tbWl0IGxvZyBvbnRvIGl0LCBzbyBub3RoaW5nIHNlZWRlZCBiZWZvcmUgdGhlIHJ1biBpcyBtaXNzaW5nOyByb3dzIGl0IGNvdWxkIG5vdCByZWFkIGFyZSBsaXN0ZWQgYXBhcnQsIGluIHNraXBwZWQuJyxcbiAgJ2xvZy1vbmx5JzpcbiAgICAnTm8gaW5pdGlhbFN0YXRlIHRyYXZlbGxlZCB3aXRoIHRoaXMgbG9nIChhIHNuYXBzaG90IHN0b3JlZCBiZWZvcmUgOS4xNywgYSByZWRhY3RlZCBzbmFwc2hvdCBvciBhIGhhbmQtYnVpbHQgbG9nKSwgc28gdGhlIGZvbGQgc3RhcnRlZCBmcm9tIGFuIGVtcHR5IG9iamVjdDogYSBrZXkgc2VlZGVkIGJlZm9yZSB0aGUgcnVuIGlzIHdob2xlIG9ubHkgb25jZSBhIGNvbW1pdCBzaW5jZSB3cm90ZSBpdHMgd2hvbGUgdmFsdWUsIGFuZCB1bnRpbCB0aGVuIGl0IGhvbGRzIGp1c3Qgd2hhdCBpdHMgbWVyZ2VzLCBhcHBlbmRzIGFuZCBuZXN0ZWQgd3JpdGVzIGFkZGVkLCBvciBub3RoaW5nLicsXG4gIC8vIOKUgOKUgCBhIHJvdyBvZiBhIHN0b3JlZCBsb2cgdGhhdCBpcyBub3QgYSBjb21taXQgYnVuZGxlIOKAlCBgTG9nR2FwYCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgJ2xvZy1nYXAnOlxuICAgICdBIHJvdyBvZiB0aGUgc3RvcmVkIGxvZyBjb3VsZCBub3QgYmUgcmVhZCBhcyBhIGNvbW1pdCBidW5kbGUsIHNvIGl0IGtlZXBzIGl0cyBpbmRleCBidXQgY29udHJpYnV0ZXMgbm8gc3RhdGUsIGFuZCBhbnkgZm9sZCB0aGF0IGNyb3NzZXMgaXQgaXMgbWlzc2luZyB3aGF0ZXZlciB0aGF0IHJvdyB3cm90ZS4nLFxuICAvLyDilIDilIAgdW50cmFja2VkIHJlYWRzIGEgc3RhZ2UgYWxzbyBjb25zdW1lZCDigJQgYENhdXNhbE5vZGUuaW5jb21wbGV0ZVNvdXJjZXNgIOKUgFxuICAnaW5jb21wbGV0ZS1zb3VyY2VzJzpcbiAgICAnVGhlIHN0YWdlIGFsc28gY29uc3VtZWQgcmVhZCBwYXRocyB0aGF0IGJ5cGFzcyByZWFkIHRyYWNraW5nIChhcmdzLCBlbnYgb3IgYW4gdW5zaGFkb3dlZCBzaWxlbnQgcmVhZCksIHNvIGEgc2xpY2UgdGhyb3VnaCBpdCBtYXkgYmUgaW5jb21wbGV0ZTogdGhvc2UgcmVhZHMgcHJvZHVjZSBubyByZWFkLXRvLXdyaXRlIGVkZ2UgdG8gZm9sbG93LicsXG4gIC8vIOKUgOKUgCB2YWx1ZXMgc2NydWJiZWQgYXQgd3JpdGUgdGltZSDigJQgYEZvbGRlZFN0YXRlLnJlZGFjdGVkYCAvIGByZWRhY3RlZFBhdGhzYCwgYSB2YWx1ZSBiYXNpcyDilIBcbiAgcmVkYWN0ZWQ6XG4gICAgXCJWYWx1ZXMgYXQgdGhlIHBhdGhzIGxpc3RlZCBpbiByZWRhY3RlZFBhdGhzIChhIGZvbGQncywgb3IgYSBjb21taXQncyBpbiB0aGUgcmFuZ2UgYSBrZXkncyB2YWx1ZSByZXN0cyBvbikgd2VyZSBzY3J1YmJlZCB3aGVuIHRoZXkgd2VyZSB3cml0dGVuIChieSBhIHJlZGFjdGlvbiBwb2xpY3ksIG9yIGEgd3JpdGUgbWFya2VkIHJlZGFjdGVkKSwgc28gd2hlcmUgdGhlIGFuc3dlciBob2xkcyB0aGUgbG9nJ3MgcGxhY2Vob2xkZXIgJ1JFREFDVEVEJywgb3IgbG9zdCBhIGtleSB1bmRlciBhIGNvbnRhaW5lciB0aGUgcGxhY2Vob2xkZXIgcmVwbGFjZWQsIGl0IHN0YW5kcyBpbiBmb3IgYSB2YWx1ZSB0aGUgbG9nIG5ldmVyIHJlY29yZGVkLlwiLFxuICAvLyDilIDilIAgaG93IG9uZSBrZXkncyB2YWx1ZSB3YXMgcmVhZCBvZmYgdGhlIGxvZyDigJQgYFZhbHVlQmFzaXNgIChjb21taXRWYWx1ZUF0V2l0aEJhc2lzKSDilIBcbiAgZGVsZXRlZDpcbiAgICBcIlRoZSBrZXkncyBsYXN0IHdyaXRlIGluIHRoZSByYW5nZSBhc2tlZCBhYm91dCBsZWZ0IGl0IGFic2VudCAoYSBkZWxldGUgb2YgdGhlIGtleSBvciBvZiBhIGNvbnRhaW5lciBhcm91bmQgaXQsIG9yIGEgc2V0IG9mIGEgY29udGFpbmVyIHRoYXQgbm8gbG9uZ2VyIGhvbGRzIGl0KSwgc28gdGhlIGFuc3dlciBpcyB1bmRlZmluZWQgYmVjYXVzZSB0aGUgcmVjb3JkIHNheXMgdGhlIGtleSB3YXMgZ29uZSBhdCB0aGF0IHBvaW50LCBub3QgYmVjYXVzZSBub3RoaW5nIHdhcyByZWNvcmRlZC5cIixcbiAgJ2Zyb20taW5pdGlhbC1zdGF0ZSc6XG4gICAgXCJObyBzZXQgb3IgZGVsZXRlIG9mIHRoZSBrZXksIG9yIG9mIGEgY29udGFpbmVyIGFyb3VuZCBpdCwgaXMgaW4gdGhlIHJhbmdlIGFza2VkIGFib3V0LCBzbyB0aGUgYW5zd2VyIHJlc3RzIG9uIHRoZSB2YWx1ZSB0aGUga2V5IGhhZCBiZWZvcmUgdGhlIHJ1bjogZm9sZGVkIGZyb20gdGhlIGluaXRpYWxTdGF0ZSBwYXNzZWQgaW4gd2hlbiB0aGVyZSB3YXMgb25lLCBhbmQgb3RoZXJ3aXNlIG9ubHkgd2hhdCB0aGUgbG9nJ3MgbWVyZ2VzLCBhcHBlbmRzIGFuZCBuZXN0ZWQgd3JpdGVzIGFkZGVkIHRvIGl0IChvciBub3RoaW5nKSwgd2hpY2ggaXMgcGFydGlhbCBmb3IgYSBrZXkgc2VlZGVkIGJlZm9yZSB0aGUgcnVuLlwiLFxufSBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG5cbi8qKiBBbnkgY29kZSBpbiB7QGxpbmsgSE9ORVNUWV9DT0RFU30g4oCUIHRoZSBrZXkgYSByZWFkZXIgbG9va3MgYW4gZXhwbGFuYXRpb24gdXAgYnkuICovXG5leHBvcnQgdHlwZSBIb25lc3R5Q29kZSA9IGtleW9mIHR5cGVvZiBIT05FU1RZX0NPREVTO1xuXG4vKipcbiAqIEEgdW5pb24gb2YgaG9uZXN0eSBjb2RlcyBhIHR5cGUgREVDTEFSRVM6IGBUYCBtdXN0IGJlIGEgc3Vic2V0IG9mIHtAbGluayBIb25lc3R5Q29kZX0sIG9yIHRoZVxuICogZGVjbGFyYXRpb24gZmFpbHMgdG8gY29tcGlsZSAoVFMyMzQ0KS5cbiAqXG4gKiBgUmVnaXN0ZXJlZENvZGU8VD5gIGlzIGBUYCDigJQgYW4gaWRlbnRpdHkgYXQgdGhlIHR5cGUgbGV2ZWwg4oCUIHNvIHRoZSB1bmlvbiBrZWVwcyBleGFjdGx5IHRoZVxuICogbWVtYmVycyBpdCB3YXMgd3JpdHRlbiB3aXRoIGFuZCBkb2VzIE5PVCB3aWRlbiB0byBldmVyeSBjb2RlOlxuICogYHR5cGUgRm9sZEJhc2lzID0gUmVnaXN0ZXJlZENvZGU8J2luaXRpYWwrbG9nJyB8ICdsb2ctb25seSc+YC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVnaXN0ZXJlZENvZGU8VCBleHRlbmRzIEhvbmVzdHlDb2RlPiA9IFQ7XG4iXX0=
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9uZXN0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbWVtb3J5L2hvbmVzdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0NHO0FBRUg7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN6RCw2RUFBNkU7SUFDN0Usd0JBQXdCLEVBQ3RCLCtMQUErTDtJQUNqTSxhQUFhLEVBQ1gsaVVBQWlVO0lBQ25VLGdCQUFnQixFQUNkLDZMQUE2TDtJQUMvTCxvQkFBb0IsRUFDbEIsMElBQTBJO0lBQzVJLGFBQWEsRUFDWCxtSkFBbUo7SUFDckosU0FBUyxFQUNQLDhHQUE4RztJQUNoSCxtR0FBbUc7SUFDbkcsV0FBVyxFQUNULHFJQUFxSTtJQUN2SSxlQUFlLEVBQ2IsdVlBQXVZO0lBQ3pZLGNBQWMsRUFDWiwwTkFBME47SUFDNU4sOEVBQThFO0lBQzlFLFdBQVcsRUFDVCxvT0FBb087SUFDdE8sS0FBSyxFQUNILHlRQUF5UTtJQUMzUSwrRkFBK0Y7SUFDL0YsYUFBYSxFQUNYLDRLQUE0SztJQUM5SyxrQkFBa0IsRUFDaEIsdU9BQXVPO0lBQ3pPLGFBQWEsRUFDWCxnTEFBZ0w7SUFDbEwsNkVBQTZFO0lBQzdFLGFBQWEsRUFDWCx1TkFBdU47SUFDek4sVUFBVSxFQUNSLDZVQUE2VTtJQUMvVSw2RUFBNkU7SUFDN0UsU0FBUyxFQUNQLGdMQUFnTDtJQUNsTCw4RUFBOEU7SUFDOUUsb0JBQW9CLEVBQ2xCLHNNQUFzTTtJQUN4TSwrRkFBK0Y7SUFDL0YsUUFBUSxFQUNOLDRXQUE0VztJQUM5Vyx3RkFBd0Y7SUFDeEYsT0FBTyxFQUNMLHVSQUF1UjtJQUN6UixvQkFBb0IsRUFDbEIsZ1dBQWdXO0NBQ2xVLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogaG9uZXN0eS50cyDigJQgdGhlIE9ORSB2b2NhYnVsYXJ5IGZvciB3aGF0IGEgcmVhZGVyIGNhbm5vdCBzZWUuXG4gKlxuICogV0hZIFRISVMgRklMRSBFWElTVFMuIEEgcmVjb3JkaW5nIGNhbm5vdCBhbHdheXMgYW5zd2VyIHdoYXQgaXQgaXMgYXNrZWQsIGFuZCB0aGUgbGlicmFyeSBzYXlzXG4gKiBzbyBpbiBzZXZlcmFsIHBsYWNlcywgZWFjaCBpbiBpdHMgb3duIHdvcmRzOiBhIHNsaWNlIGNhcnJpZXMgYEhvbmVzdHlOb3RlYHMgYW5kLCB3aGVuIGl0IGhhcyBub1xuICogYW5zd2VyLCBhIGBtaXNzaW5nYCByZWFzb247IGEgZmVkIGVkZ2UgYW5kIGFuIGVsZW1lbnQgYmlydGggY2FycnkgYSBgYmFzaXNgOyBhIGZvbGQgY2FycmllcyBhXG4gKiBgYmFzaXNgIGFuZCBpdHMgYHJlZGFjdGVkYCBwYXRoczsgYSBzdG9yZWQgbG9nIHJlcG9ydHMgYExvZ0dhcGBzOyBhIGNhdXNhbCBub2RlIGNhcnJpZXNcbiAqIGBpbmNvbXBsZXRlU291cmNlc2AgYW5kIGB0cnVuY2F0ZWRgLiBBIHJlYWRlciB0aGF0IHdhbnRzIHRvIEVYUExBSU4gYW55IG9mIHRoZW0gdG8gYSBwZXJzb24gKGFcbiAqIHdoeS1wYW5lbCwgYW4gYWdlbnQgdG9vbCkga2VwdCBpdHMgb3duIHRhYmxlIG9mIGNvZGUg4oaSIHNlbnRlbmNlLCBhbmQgdGFibGVzIGtlcHQgYXBhcnQgZHJpZnQuXG4gKiBUaGlzIGZpbGUgaXMgdGhhdCB0YWJsZSwgb25jZS5cbiAqXG4gKiBXSEFUIElUIEhPTERTLlxuICogICAtIGBIT05FU1RZX0NPREVTYCDigJQgYSBmcm96ZW4sIGNsb3NlZCByZWdpc3RyeTogY29kZSDihpIgdGhlIE9ORSBzZW50ZW5jZSB0aGF0IHNheXMgd2hhdCB0aGUgY29kZVxuICogICAgIG1lYW5zLiBUaGUgc2hhcGUgb2YgcnVzdGMncyBgLS1leHBsYWluYCBhbmQgTFNQJ3MgYERpYWdub3N0aWMuY29kZWA6IHRoZSBjb2RlIGlzIHRoZSBzdGFibGVcbiAqICAgICBrZXkgYSBjb25zdW1lciBCUkFOQ0hFUyBvbjsgdGhlIHNlbnRlbmNlIGlzIGZvciB3aG9ldmVyIHJlYWRzIHRoZSBzY3JlZW4uIEl0IGlzIG5vdCB0aGVcbiAqICAgICBwZXItaW5zdGFuY2UgYGRldGFpbGAgYSBub3RlIGNhcnJpZXMgKHRoYXQgbmFtZXMgdGhlIGtleSwgdGhlIGJ1ZGdldCwgdGhlIHJvd3MpLlxuICogICAtIGBIb25lc3R5Q29kZWAgLyBgUmVnaXN0ZXJlZENvZGVgIOKAlCB3aGF0IG1ha2VzIHRoZSByZWdpc3RyeSB0aGUgb3duZXIgYW5kIG5vdCBhIHN1Z2dlc3Rpb246XG4gKiAgICAgZWFjaCBwdWJsaWMgdW5pb24gb2YgdGhlc2UgY29kZXMgKGBIb25lc3R5Tm90ZUNvZGVgLCBgTWlzc2luZ1NsaWNlUmVhc29uYCxcbiAqICAgICBgTWlzc2luZ1Byb3ZlbmFuY2VSZWFzb25gLCBgRmVkQmFzaXNgLCBgQXR0cmlidXRpb25CYXNpc2AsIGBGb2xkQmFzaXNgLCBhbmQgc2luY2UgOS4zMy4wIGBWYWx1ZUJhc2lzYCAvXG4gKiAgICAgYFdyaXRlckJhc2lzYCDigJQgdGhlIGJhc2lzIHR3aW5zIG9mIGBjb21taXRWYWx1ZUF0YCAvIGBmaW5kTGFzdFdyaXRlcmApIGRlY2xhcmVzIGl0cyBtZW1iZXJzXG4gKiAgICAgdGhyb3VnaCBgUmVnaXN0ZXJlZENvZGVgLCBzbyBhIG1lbWJlciB0aGUgcmVnaXN0cnkgZG9lcyBub3QgaG9sZCBmYWlscyB0byBDT01QSUxFLiBBbmRcbiAqICAgICBgdGVzdC9hcmNoaXRlY3R1cmUvaG9uZXN0eS12b2NhYnVsYXJ5LnRlc3QudHNgIGFza3MgdGhlIHR5cGUgY2hlY2tlciBmb3IgZXZlcnkgZXhwb3J0ZWQgdHlwZVxuICogICAgIGFsaWFzIG9mIGBmb290cHJpbnRqcy90cmFjZWAgdGhhdCBpcyBhIHVuaW9uIG9mIHN0cmluZyBsaXRlcmFsczogZWFjaCBvbmUgaXMgaW5zaWRlIHRoZVxuICogICAgIHJlZ2lzdHJ5IG9yIGlzIG5hbWVkLCB3aXRoIGl0cyByZWFzb24sIGFzIG5vdCBhbiBob25lc3R5IHZvY2FidWxhcnkuXG4gKlxuICogTk8gT0JKRUNUIEdBSU5TIEEgRklFTEQgZnJvbSBiZWluZyByZWdpc3RlcmVkLiBUaHJlZSBzaWduYWxzIGNhcnJ5IG5vIGNvZGUgb2YgdGhlaXIgb3duIOKAlCBhXG4gKiBgTG9nR2FwYCAoYCdsb2ctZ2FwJ2ApLCBgQ2F1c2FsTm9kZS5pbmNvbXBsZXRlU291cmNlc2AgKGAnaW5jb21wbGV0ZS1zb3VyY2VzJ2ApIGFuZFxuICogYEZvbGRlZFN0YXRlLnJlZGFjdGVkYCAvIGByZWRhY3RlZFBhdGhzYCAoYCdyZWRhY3RlZCdgKSDigJQgYW5kIGEgYHRydW5jYXRlZDogeyBieURlcHRoLCBieU5vZGVzIH1gXG4gKiBmaWVsZCBtZWFucyBgJ3RydW5jYXRlZCdgOyB0aGV5IGFyZSByZWdpc3RlcmVkIHNvIGEgcmVhZGVyIGV4cGxhaW5zIHRoZW0gZnJvbSB0aGUgc2FtZSBwbGFjZS5cbiAqXG4gKiBOT1QgSEVSRTogdGhlIHR3byBzdHJpbmdzIGEgcmVkYWN0aW9uIGxlYXZlcyB3aGVyZSBhIHZhbHVlIHdhcy4gVGhlIGVuZ2luZSB3cml0ZXMgdGhvc2Ugb24gZXZlcnlcbiAqIHJlZGFjdGVkIHJ1bjsgdGhlIGxvZydzIGxpdmVzIGluIGl0cyBvd24gbGVhZiwgYG1lbW9yeS9wbGFjZWhvbGRlcnMudHNgICh0aGUgc2NvcGUgY2hhbm5lbCdzIHdpdGhcbiAqIHRoZSB2ZXJkaWN0LCBgbWVtb3J5L3JlZGFjdGlvbi50c2ApLCBzbyB0aGF0IGFuIGFwcCB3aGljaCBvbmx5IHJ1bnMgY2hhcnRzIGRvZXMgbm90IGNhcnJ5IHRoZXNlXG4gKiBzZW50ZW5jZXMgaW4gaXRzIGJ1bmRsZSAoYEhPTkVTVFlfQ09ERVNgIGlzIGEgcHVyZSBleHByZXNzaW9uLCBzbyBhIGJ1bmRsZXIgZHJvcHMgaXQgd2hlcmV2ZXJcbiAqIG5vdGhpbmcgcmVhZHMgaXQpLlxuICpcbiAqIFdIWSBMMC4gVGhpcyBmaWxlIGltcG9ydHMgTk9USElORywgYW5kIGBzbGljZS9gIGFuZCBgdGltZS10cmF2ZWwvYCAoTDMpIHR5cGUgdGhlaXIgY29kZXMgdGhyb3VnaFxuICogaXQsIHNvIGl0IHNpdHMgYmVsb3cgdGhlbSDigJQgdGhlIGxheWVyIHRhYmxlIGlzIGBzY3JpcHRzL2xheWVyaW5nLmNvbmZpZy5janNgLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBIT05FU1RZX0NPREVTIH0gZnJvbSAnZm9vdHByaW50anMvdHJhY2UnO1xuICpcbiAqIGZvciAoY29uc3QgeyBjb2RlIH0gb2YgZm9yd2FyZFNsaWNlLm5vdGVzKSBjb25zb2xlLmxvZyhjb2RlLCAn4oaSJywgSE9ORVNUWV9DT0RFU1tjb2RlXSk7XG4gKiAvLyByZWFkcy1ub3QtcmVjb3JkZWQg4oaSIFRoaXMgbG9nIGNhcnJpZXMgbm8gcmVjb3JkZWQgcmVhZCBhdCBhbGwgKHRoZSByZWFkVHJhY2tpbmc6ICdvZmYnIHNpZ25hdHVyZSksIOKAplxuICogSE9ORVNUWV9DT0RFU1tmb2xkZWRTdGF0ZS5iYXNpc107IC8vICdsb2ctb25seScg4oaSIE5vIGluaXRpYWxTdGF0ZSB0cmF2ZWxsZWQgd2l0aCB0aGlzIGxvZyAo4oCmKSwg4oCmXG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIEV2ZXJ5IGhvbmVzdHkgY29kZSB0aGUgdHJhY2UgcmVhZGVycyAoYGZvb3RwcmludGpzL3RyYWNlYCkgc3BlYWssIHdpdGggdGhlIG9uZSBzZW50ZW5jZSB0aGF0IHNheXNcbiAqIHdoYXQgaXQgbWVhbnMuXG4gKlxuICogRnJvemVuIGFuZCBjbG9zZWQ6IHRoZSBrZXlzIGFyZSBleGFjdGx5IHRoZSBjb2RlcyBiZWxvdywgYW5kIHtAbGluayBIb25lc3R5Q29kZX0gaXMgZGVyaXZlZCBmcm9tXG4gKiB0aGVtLiBBIG5ldyBjb2RlIGlzIG9uZSBuZXcgbGluZSBoZXJlOiBhIHVuaW9uIGRlY2xhcmVkIHRocm91Z2gge0BsaW5rIFJlZ2lzdGVyZWRDb2RlfSBjYW5ub3QgaG9sZFxuICogYSBjb2RlIHRoYXQgaXMgbm90IG9uIGl0LCBhbmQgYHRlc3QvYXJjaGl0ZWN0dXJlL2hvbmVzdHktdm9jYWJ1bGFyeS50ZXN0LnRzYCBmYWlscyBvbiBhbiBleHBvcnRlZFxuICogdHlwZSBhbGlhcyBvZiBgZm9vdHByaW50anMvdHJhY2VgIHRoYXQgaXMgYSB1bmlvbiBvZiBzdHJpbmcgbGl0ZXJhbHMgbmVpdGhlciBpbnNpZGUgdGhlIHJlZ2lzdHJ5XG4gKiBub3IgbmFtZWQgdGhlcmUgYXMgbm90IGFuIGhvbmVzdHkgdm9jYWJ1bGFyeS4gVGhlIHZhbHVlcyBhcmUgdHlwZWQgYHN0cmluZ2AsIG5vdCBsaXRlcmFsIHR5cGVzLFxuICogb24gcHVycG9zZTogdGhlIHNlbnRlbmNlcyBhcmUgZm9yIGEgc2NyZWVuIGFuZCBtYXkgYmUgcmV3b3JkZWQ7IGEgY29uc3VtZXIgYnJhbmNoZXMgb24gdGhlIEtFWS5cbiAqL1xuZXhwb3J0IGNvbnN0IEhPTkVTVFlfQ09ERVMgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmZyZWV6ZSh7XG4gIC8vIOKUgOKUgCBhIHNsaWNlJ3Mgbm90ZXMg4oCUIGBIb25lc3R5Tm90ZS5jb2RlYCAoc2xpY2UvKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgJ2NvbnNlcnZhdGl2ZS1mZWQtZWRnZXMnOlxuICAgIFwiQXQgbGVhc3Qgb25lICdmZWQnIGVkZ2UgaXMgc3RhZ2UtbGV2ZWwgKGNvbnNlcnZhdGl2ZSk6IGl0cyB3cml0ZSBjYXJyaWVzIG5vIHBlci13cml0ZSByZWFkIHByb3ZlbmFuY2UsIHNvIHRoZSBlZGdlIG1heSBub3QgYmUgcmVhbCDigJQgdHVybiBvbiB3cml0ZVByb3ZlbmFuY2U6ICdyZWFkcy1wcmVmaXgnIGZvciBleGFjdCBlZGdlcy5cIixcbiAgJ25lc3RlZC1yb3dzJzpcbiAgICBcIkEgd3JpdGUgdGhpcyBhbnN3ZXIgcmVzdHMgb24gcmVhY2hlZCB0aGUga2V5IG9ubHkgdGhyb3VnaCBwYXRocyBpbnNpZGUgaXQgKGEgc3ViZmxvdydzIGlucHV0IHNlZWQsIGFuIG91dHB1dE1hcHBlciBtZXJnZS1iYWNrLCBhIGZvcmsgY2hpbGQncyBuYW1lc3BhY2UpLCBzbyBpdCBjaGFuZ2VkIHBhcnQgb2YgdGhlIGtleSdzIHZhbHVlLCBub3QgdGhlIHdob2xlOiBlYXJsaWVyIHdyaXRlcyBtYXkgYWNjb3VudCBmb3IgdGhlIHJlc3QsIGFuZCBhIHJlYWRlciBvZiB0aGUga2V5IG1heSBub3QgaGF2ZSByZWFkIHRoZSBwYXJ0IHRoYXQgd3JpdGUgY2hhbmdlZC5cIixcbiAgJ3ByZS1ydW4tb3JpZ2luJzpcbiAgICAnVGhlIHZhbHVlIGJlaW5nIGZvbGxvd2VkIHdhcyBhYnNlbnQgb3IgYWxyZWFkeSB0aGVyZSBiZWZvcmUgdGhlIGZpcnN0IHdyaXRlIHRoaXMgbG9nIGNhbiBzZWUgKGluaXRpYWwgc3RhdGUsIGZyb3plbiBydW4gaW5wdXQgb3IgYSBjbG9zdXJlKSwgc28gd2hvIHB1dCBpdCB0aGVyZSBpcyBvdXRzaWRlIHRoZSBjb21taXQgbG9nLicsXG4gICdyZWFkcy1ub3QtcmVjb3JkZWQnOlxuICAgIFwiVGhpcyBsb2cgY2FycmllcyBubyByZWNvcmRlZCByZWFkIGF0IGFsbCAodGhlIHJlYWRUcmFja2luZzogJ29mZicgc2lnbmF0dXJlKSwgc28gJ25vdGhpbmcgcmVhZCB0aGlzIHZhbHVlJyBpcyB1bmtub3dhYmxlIGhlcmUsIG5vdCB0cnVlLlwiLFxuICAndW5rbm93bi1rZXknOlxuICAgIFwiVGhpcyBsb2cgaGFzIG5vIHdyaXRlIGFuZCBubyByZWNvcmRlZCByZWFkIG9mIHRoZSBrZXksIHdoaWNoIGlzIG1vc3QgbGlrZWx5IGEgdHlwbyBvciB0aGUgd3JvbmcgcnVuJ3MgbG9nIHJhdGhlciB0aGFuIGEgdmFyaWFibGUgd2l0aCBubyBoaXN0b3J5LlwiLFxuICB0cnVuY2F0ZWQ6XG4gICAgJ0EgYnVkZ2V0IChtYXhEZXB0aCBvciBtYXhOb2RlcykgY3V0IHRoZSB3YWxrLCBzbyBtb3JlIG9mIHRoZSBhbnN3ZXIgZXhpc3RzIGJleW9uZCB0aGUgaG9yaXpvbiBpdCBzdG9wcGVkIGF0LicsXG4gIC8vIOKUgOKUgCB3aHkgYSBzbGljZSBoYXMgbm8gYW5zd2VyIOKAlCBgbWlzc2luZ2AgKHNsaWNlLzogTWlzc2luZ1NsaWNlUmVhc29uLCBNaXNzaW5nUHJvdmVuYW5jZVJlYXNvbikg4pSAXG4gICdlbXB0eS1sb2cnOlxuICAgICdUaGUgY29tbWl0IGxvZyBob2xkcyBubyBjb21taXQgYXQgYWxsIChub3RoaW5nIGhhcyBleGVjdXRlZCwgb3IgdGhlIGxvZyBoYW5kZWQgaW4gaXMgZW1wdHkpLCBzbyB0aGVyZSBpcyBubyBoaXN0b3J5IHRvIGFuc3dlciBmcm9tLicsXG4gICduZXZlci13cml0dGVuJzpcbiAgICAnTm8gY29tbWl0IGluIHRoZSByYW5nZSBhc2tlZCBhYm91dCB3cm90ZSB0aGUga2V5IOKAlCBub3QgaXRzIHdob2xlIHZhbHVlLCBub3QgYSBwYXRoIGluc2lkZSBpdCwgYW5kIG5vdCBhIGNvbnRhaW5lciBhcm91bmQgaXQgaW4gYSB3YXkgdGhhdCBjaGFuZ2VkIGl0IChhIGZvcndhcmQgc2xpY2Ugb3IgYSB0aW1lbGluZSBhbHNvIGZvdW5kIG5vIHJlY29yZGVkIHJlYWQgb24sIGluc2lkZSBvciBhcm91bmQgaXQpIOKAlCBzbyB0aGVyZSBpcyBubyB3cml0ZSB0byBzdGFydCBmcm9tOiBhbnkgdmFsdWUgaXQgaGFzIGNhbWUgZnJvbSB0aGUgaW5pdGlhbCBzdGF0ZSwgdGhlIGZyb3plbiBydW4gaW5wdXQgb3IgYSBjbG9zdXJlLCBub25lIG9mIHdoaWNoIHRoZSBjb21taXQgbG9nIGNhbiBzZWUuJyxcbiAgJ25vdC1hbi1hcnJheSc6XG4gICAgJ1RoZSBrZXkgd2FzIHdyaXR0ZW4sIGJ1dCBpdHMgdmFsdWUgYXQgdGhlIHBvaW50IGFza2VkIGFib3V0IGlzIG5vdCBhbiBhcnJheSAoYSBzY2FsYXIgb3Igb2JqZWN0IGtleSwgYSBkZWxldGVkIGtleSwgb3IgYSBtZXJnZSB0aGF0IGRlZ3JhZGVkIGl0KSwgc28gZWxlbWVudCBwcm92ZW5hbmNlIGRvZXMgbm90IGFwcGx5OiBzbGljZUZvcktleSBpcyB0aGUgcXVlcnkgZm9yIGl0LicsXG4gIC8vIOKUgOKUgCBob3cgYSBmZWQgZWRnZSB3YXMgYXR0cmlidXRlZCDigJQgYEZvcndhcmRFZGdlLmJhc2lzYCAoc2xpY2UvOiBGZWRCYXNpcykg4pSAXG4gICdwZXItd3JpdGUnOlxuICAgIFwiVGhpcyBmZWQgZWRnZSBpcyBleGFjdDogdGhlIGRvd25zdHJlYW0gd3JpdGUgY2FycmllcyBwZXItd3JpdGUgcmVhZCBwcm92ZW5hbmNlIChUcmFjZUVudHJ5LnJlYWRLZXlzLCByZWNvcmRlZCB1bmRlciB3cml0ZVByb3ZlbmFuY2U6ICdyZWFkcy1wcmVmaXgnKSBhbmQgdGhhdCBsaXN0IG5hbWVzIHRoZSBrZXksIHNvIHRoZSB2YWx1ZSB3YXMgcmVhZCBiZWZvcmUgdGhlIHdyaXRlIGl0IGZlZWRzLlwiLFxuICBzdGFnZTpcbiAgICAnVGhpcyBmZWQgZWRnZSBpcyBjb25zZXJ2YXRpdmU6IHRoZSBkb3duc3RyZWFtIHdyaXRlIGNhcnJpZXMgbm8gcGVyLXdyaXRlIHJlYWQgcHJvdmVuYW5jZSAodGhlIHdyaXRlUHJvdmVuYW5jZSBkaWFsIHdhcyBvZmYsIG9yIHRoZSBsb2cgaXMgbWl4ZWQpLCBzbyBhbGwgdGhhdCBpcyBrbm93biBpcyB0aGF0IGl0cyBzdGFnZSByZWFkIHRoaXMga2V5IGFuZCB3cm90ZSB0aGF0IHBhdGggaW4gc29tZSBvcmRlciwgYW5kIHRoZSBlZGdlIG1heSBub3QgYmUgcmVhbC4nLFxuICAvLyDilIDilIAgaG93IGFuIGVsZW1lbnQncyBiaXJ0aCB3YXMgYXR0cmlidXRlZCDigJQgYEVsZW1lbnRCaXJ0aC5iYXNpc2AgKHNsaWNlLzogQXR0cmlidXRpb25CYXNpcykg4pSAXG4gICdhcHBlbmQtdmVyYic6XG4gICAgXCJUaGUgZW5naW5lIHJlY29yZGVkIHRoZSBlbGVtZW50IGluIGFuIGFwcGVuZCByb3cncyB0YWlsIChob3cgY29tbWl0VmFsdWVzOiAnZGVsdGEnIHJlY29yZHMgYW4gYXJyYXkncyBncm93dGgpLCBzbyB0aGUgY29tbWl0IHRoYXQgYWRkZWQgaXQgaXMga25vd24gZXhhY3RseSwgbm90IGluZmVycmVkLlwiLFxuICAncHJlZml4LWluZmVyZW5jZSc6XG4gICAgJ0Egd2hvbGUtdmFsdWUgd3JpdGUgKGEgc2V0IG9yIGEgbWVyZ2UpIGtlcHQgdGhlIHByZXZpb3VzIGFycmF5IGFzIGl0cyBwcmVmaXgsIHNvIHRoZSBuZXcgdGFpbCBpcyBhdHRyaWJ1dGVkIHRvIHRoYXQgY29tbWl0IGJ5IGluZmVyZW5jZTogYSB3cml0ZSB0aGF0IHJlcGxhY2VkIHRoZSBhcnJheSB3aXRoIG9uZSB0aGF0IGhhcHBlbnMgdG8gYmVnaW4gdGhlIHNhbWUgd2F5IGxvb2tzIGlkZW50aWNhbC4nLFxuICAnd2hvbGUtdmFsdWUnOlxuICAgIFwiVGhpcyBjb21taXQgcGxhY2VkIHRoZSBhcnJheSB3aG9sZXNhbGUgKHRoZXJlIHdhcyBubyBlYXJsaWVyIGFycmF5LCBvciB0aGUgbmV3IG9uZSBkb2VzIG5vdCBiZWdpbiB3aXRoIGl0KSwgc28gZXZlcnkgZWxlbWVudCdzIGJpcnRoIHJlc2V0cyB0byB0aGlzIGNvbW1pdDogZXhhY3QsIGJ1dCBjb2Fyc2UuXCIsXG4gIC8vIOKUgOKUgCBob3cgYSBmb2xkIHdhcyBkZXJpdmVkIOKAlCBgRm9sZGVkU3RhdGUuYmFzaXNgICh0aW1lLXRyYXZlbC8pIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAnaW5pdGlhbCtsb2cnOlxuICAgICdUaGUgZm9sZCBzdGFydGVkIGZyb20gdGhlIGZvbGQgYmFzZSB0aGF0IHRyYXZlbGxlZCB3aXRoIHRoZSBsb2cgKGluaXRpYWxTdGF0ZSkgYW5kIHJlcGxheWVkIHRoZSBjb21taXQgbG9nIG9udG8gaXQsIHNvIG5vdGhpbmcgc2VlZGVkIGJlZm9yZSB0aGUgcnVuIGlzIG1pc3Npbmc7IHJvd3MgaXQgY291bGQgbm90IHJlYWQgYXJlIGxpc3RlZCBhcGFydCwgaW4gc2tpcHBlZC4nLFxuICAnbG9nLW9ubHknOlxuICAgICdObyBpbml0aWFsU3RhdGUgdHJhdmVsbGVkIHdpdGggdGhpcyBsb2cgKGEgc25hcHNob3Qgc3RvcmVkIGJlZm9yZSA5LjE3LCBhIHJlZGFjdGVkIHNuYXBzaG90IG9yIGEgaGFuZC1idWlsdCBsb2cpLCBzbyB0aGUgZm9sZCBzdGFydGVkIGZyb20gYW4gZW1wdHkgb2JqZWN0OiBhIGtleSBzZWVkZWQgYmVmb3JlIHRoZSBydW4gaXMgd2hvbGUgb25seSBvbmNlIGEgY29tbWl0IHNpbmNlIHdyb3RlIGl0cyB3aG9sZSB2YWx1ZSwgYW5kIHVudGlsIHRoZW4gaXQgaG9sZHMganVzdCB3aGF0IGl0cyBtZXJnZXMsIGFwcGVuZHMgYW5kIG5lc3RlZCB3cml0ZXMgYWRkZWQsIG9yIG5vdGhpbmcuJyxcbiAgLy8g4pSA4pSAIGEgcm93IG9mIGEgc3RvcmVkIGxvZyB0aGF0IGlzIG5vdCBhIGNvbW1pdCBidW5kbGUg4oCUIGBMb2dHYXBgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAnbG9nLWdhcCc6XG4gICAgJ0Egcm93IG9mIHRoZSBzdG9yZWQgbG9nIGNvdWxkIG5vdCBiZSByZWFkIGFzIGEgY29tbWl0IGJ1bmRsZSwgc28gaXQga2VlcHMgaXRzIGluZGV4IGJ1dCBjb250cmlidXRlcyBubyBzdGF0ZSwgYW5kIGFueSBmb2xkIHRoYXQgY3Jvc3NlcyBpdCBpcyBtaXNzaW5nIHdoYXRldmVyIHRoYXQgcm93IHdyb3RlLicsXG4gIC8vIOKUgOKUgCB1bnRyYWNrZWQgcmVhZHMgYSBzdGFnZSBhbHNvIGNvbnN1bWVkIOKAlCBgQ2F1c2FsTm9kZS5pbmNvbXBsZXRlU291cmNlc2Ag4pSAXG4gICdpbmNvbXBsZXRlLXNvdXJjZXMnOlxuICAgICdUaGUgc3RhZ2UgYWxzbyBjb25zdW1lZCByZWFkIHBhdGhzIHRoYXQgYnlwYXNzIHJlYWQgdHJhY2tpbmcgKGFyZ3MsIGVudiBvciBhbiB1bnNoYWRvd2VkIHNpbGVudCByZWFkKSwgc28gYSBzbGljZSB0aHJvdWdoIGl0IG1heSBiZSBpbmNvbXBsZXRlOiB0aG9zZSByZWFkcyBwcm9kdWNlIG5vIHJlYWQtdG8td3JpdGUgZWRnZSB0byBmb2xsb3cuJyxcbiAgLy8g4pSA4pSAIHZhbHVlcyBzY3J1YmJlZCBhdCB3cml0ZSB0aW1lIOKAlCBgRm9sZGVkU3RhdGUucmVkYWN0ZWRgIC8gYHJlZGFjdGVkUGF0aHNgLCBhIHZhbHVlIGJhc2lzIOKUgFxuICByZWRhY3RlZDpcbiAgICBcIlZhbHVlcyBhdCB0aGUgcGF0aHMgbGlzdGVkIGluIHJlZGFjdGVkUGF0aHMgKGEgZm9sZCdzLCBvciBhIGNvbW1pdCdzIGluIHRoZSByYW5nZSBhIGtleSdzIHZhbHVlIHJlc3RzIG9uKSB3ZXJlIHNjcnViYmVkIHdoZW4gdGhleSB3ZXJlIHdyaXR0ZW4gKGJ5IGEgcmVkYWN0aW9uIHBvbGljeSwgb3IgYSB3cml0ZSBtYXJrZWQgcmVkYWN0ZWQpLCBzbyB3aGVyZSB0aGUgYW5zd2VyIGhvbGRzIHRoZSBsb2cncyBwbGFjZWhvbGRlciAnUkVEQUNURUQnLCBvciBsb3N0IGEga2V5IHVuZGVyIGEgY29udGFpbmVyIHRoZSBwbGFjZWhvbGRlciByZXBsYWNlZCwgaXQgc3RhbmRzIGluIGZvciBhIHZhbHVlIHRoZSBsb2cgbmV2ZXIgcmVjb3JkZWQuXCIsXG4gIC8vIOKUgOKUgCBob3cgb25lIGtleSdzIHZhbHVlIHdhcyByZWFkIG9mZiB0aGUgbG9nIOKAlCBgVmFsdWVCYXNpc2AgKGNvbW1pdFZhbHVlQXRXaXRoQmFzaXMpIOKUgFxuICBkZWxldGVkOlxuICAgIFwiVGhlIGtleSdzIGxhc3Qgd3JpdGUgaW4gdGhlIHJhbmdlIGFza2VkIGFib3V0IGxlZnQgaXQgYWJzZW50IChhIGRlbGV0ZSBvZiB0aGUga2V5IG9yIG9mIGEgY29udGFpbmVyIGFyb3VuZCBpdCwgb3IgYSBzZXQgb2YgYSBjb250YWluZXIgdGhhdCBubyBsb25nZXIgaG9sZHMgaXQpLCBzbyB0aGUgYW5zd2VyIGlzIHVuZGVmaW5lZCBiZWNhdXNlIHRoZSByZWNvcmQgc2F5cyB0aGUga2V5IHdhcyBnb25lIGF0IHRoYXQgcG9pbnQsIG5vdCBiZWNhdXNlIG5vdGhpbmcgd2FzIHJlY29yZGVkLlwiLFxuICAnZnJvbS1pbml0aWFsLXN0YXRlJzpcbiAgICBcIk5vIHNldCBvciBkZWxldGUgb2YgdGhlIGtleSwgb3Igb2YgYSBjb250YWluZXIgYXJvdW5kIGl0LCBpcyBpbiB0aGUgcmFuZ2UgYXNrZWQgYWJvdXQsIHNvIHRoZSBhbnN3ZXIgcmVzdHMgb24gdGhlIHZhbHVlIHRoZSBrZXkgaGFkIGJlZm9yZSB0aGUgcnVuOiBmb2xkZWQgZnJvbSB0aGUgaW5pdGlhbFN0YXRlIHBhc3NlZCBpbiB3aGVuIHRoZXJlIHdhcyBvbmUsIGFuZCBvdGhlcndpc2Ugb25seSB3aGF0IHRoZSBsb2cncyBtZXJnZXMsIGFwcGVuZHMgYW5kIG5lc3RlZCB3cml0ZXMgYWRkZWQgdG8gaXQgKG9yIG5vdGhpbmcpLCB3aGljaCBpcyBwYXJ0aWFsIGZvciBhIGtleSBzZWVkZWQgYmVmb3JlIHRoZSBydW4uXCIsXG59IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcblxuLyoqIEFueSBjb2RlIGluIHtAbGluayBIT05FU1RZX0NPREVTfSDigJQgdGhlIGtleSBhIHJlYWRlciBsb29rcyBhbiBleHBsYW5hdGlvbiB1cCBieS4gKi9cbmV4cG9ydCB0eXBlIEhvbmVzdHlDb2RlID0ga2V5b2YgdHlwZW9mIEhPTkVTVFlfQ09ERVM7XG5cbi8qKlxuICogQSB1bmlvbiBvZiBob25lc3R5IGNvZGVzIGEgdHlwZSBERUNMQVJFUzogYFRgIG11c3QgYmUgYSBzdWJzZXQgb2Yge0BsaW5rIEhvbmVzdHlDb2RlfSwgb3IgdGhlXG4gKiBkZWNsYXJhdGlvbiBmYWlscyB0byBjb21waWxlIChUUzIzNDQpLlxuICpcbiAqIGBSZWdpc3RlcmVkQ29kZTxUPmAgaXMgYFRgIOKAlCBhbiBpZGVudGl0eSBhdCB0aGUgdHlwZSBsZXZlbCDigJQgc28gdGhlIHVuaW9uIGtlZXBzIGV4YWN0bHkgdGhlXG4gKiBtZW1iZXJzIGl0IHdhcyB3cml0dGVuIHdpdGggYW5kIGRvZXMgTk9UIHdpZGVuIHRvIGV2ZXJ5IGNvZGU6XG4gKiBgdHlwZSBGb2xkQmFzaXMgPSBSZWdpc3RlcmVkQ29kZTwnaW5pdGlhbCtsb2cnIHwgJ2xvZy1vbmx5Jz5gLlxuICovXG5leHBvcnQgdHlwZSBSZWdpc3RlcmVkQ29kZTxUIGV4dGVuZHMgSG9uZXN0eUNvZGU+ID0gVDtcbiJdfQ==
|
|
@@ -10,12 +10,14 @@ export { SharedMemory } from './SharedMemory.js';
|
|
|
10
10
|
export { StageContext } from './StageContext.js';
|
|
11
11
|
export { TransactionBuffer } from './TransactionBuffer.js';
|
|
12
12
|
export type { RedactionVerdict } from './redaction.js';
|
|
13
|
-
export { RedactionRule
|
|
13
|
+
export { RedactionRule } from './redaction.js';
|
|
14
|
+
export { redactPatch } from './scrub.js';
|
|
14
15
|
export type { RunDials, RunPolicy } from './runPolicy.js';
|
|
15
16
|
export { DEFAULT_RUN_POLICY, runPolicy } from './runPolicy.js';
|
|
16
17
|
export type { HonestyCode } from './honesty.js';
|
|
17
18
|
export { HONESTY_CODES } from './honesty.js';
|
|
18
|
-
export { LOG_PLACEHOLDER
|
|
19
|
+
export { LOG_PLACEHOLDER } from './placeholders.js';
|
|
20
|
+
export { SCOPE_PLACEHOLDER } from './redaction.js';
|
|
19
21
|
export type { CommitBundle, CommitValuesMode, FlowControlType, FlowMessage, MemoryPatch, ReadSummaryMarker, ReadTrackingMode, RetentionPolicy, ScopeFactory, StageSnapshot, TraceEntry, UntrackedSource, WriteSummaryMarker, WriteTrackingMode, } from './types.js';
|
|
20
22
|
export { READ_PREVIEW_LENGTH, SUMMARY_PREVIEW_LENGTH } from './types.js';
|
|
21
23
|
export { UnknownVerbError } from './verbs.js';
|
|
@@ -11,14 +11,16 @@ export { EventLog } from './EventLog.js';
|
|
|
11
11
|
export { SharedMemory } from './SharedMemory.js';
|
|
12
12
|
export { StageContext } from './StageContext.js';
|
|
13
13
|
export { TransactionBuffer } from './TransactionBuffer.js';
|
|
14
|
-
export { RedactionRule
|
|
14
|
+
export { RedactionRule } from './redaction.js';
|
|
15
|
+
export { redactPatch } from './scrub.js';
|
|
15
16
|
export { DEFAULT_RUN_POLICY, runPolicy } from './runPolicy.js';
|
|
16
17
|
export { HONESTY_CODES } from './honesty.js';
|
|
17
|
-
// The two strings a redaction leaves where a value was (F4a;
|
|
18
|
-
export { LOG_PLACEHOLDER
|
|
18
|
+
// The two strings a redaction leaves where a value was, one per owner (F4a; split in C4): the record's, the verdict's
|
|
19
|
+
export { LOG_PLACEHOLDER } from './placeholders.js';
|
|
20
|
+
export { SCOPE_PLACEHOLDER } from './redaction.js';
|
|
19
21
|
export { READ_PREVIEW_LENGTH, SUMMARY_PREVIEW_LENGTH } from './types.js';
|
|
20
22
|
// The verb law's refusal: a commit row whose verb is not set | merge | append | delete
|
|
21
23
|
export { UnknownVerbError } from './verbs.js';
|
|
22
24
|
// Utilities
|
|
23
25
|
export { applySmartMerge, deepSmartMerge, DELIM, getNestedValue, getRunAndGlobalPaths, normalisePath, pathSegments, setNestedValue, updateNestedValue, updateValue, } from './utils.js';
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21lbW9yeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFDMUI7Ozs7O0dBS0c7QUFFSCxVQUFVO0FBQ1YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSXpDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUkvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdDLHNIQUFzSDtBQUN0SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFtQm5ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV6RSx1RkFBdUY7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTlDLFlBQVk7QUFDWixPQUFPLEVBQ0wsZUFBZSxFQUNmLGNBQWMsRUFDZCxLQUFLLEVBQ0wsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsWUFBWSxFQUNaLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsV0FBVyxHQUNaLE1BQU0sWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbi8qKlxuICogbWVtb3J5LyDigJQgRm91bmRhdGlvbiBsaWJyYXJ5ICh6ZXJvIGV4dGVybmFsIGRlcHMpXG4gKlxuICogVHJhbnNhY3Rpb25hbCBzdGF0ZSBtYW5hZ2VtZW50IHdpdGggbmFtZXNwYWNlIGlzb2xhdGlvbixcbiAqIGF0b21pYyBjb21taXRzLCBhbmQgZXZlbnQtc291cmNlZCB0aW1lLXRyYXZlbC5cbiAqL1xuXG4vLyBDbGFzc2VzXG5leHBvcnQgeyBEaWFnbm9zdGljQ29sbGVjdG9yIH0gZnJvbSAnLi9EaWFnbm9zdGljQ29sbGVjdG9yLmpzJztcbmV4cG9ydCB7IEV2ZW50TG9nIH0gZnJvbSAnLi9FdmVudExvZy5qcyc7XG5leHBvcnQgeyBTaGFyZWRNZW1vcnkgfSBmcm9tICcuL1NoYXJlZE1lbW9yeS5qcyc7XG5leHBvcnQgeyBTdGFnZUNvbnRleHQgfSBmcm9tICcuL1N0YWdlQ29udGV4dC5qcyc7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1ZmZlciB9IGZyb20gJy4vVHJhbnNhY3Rpb25CdWZmZXIuanMnO1xuXG4vLyBSZWRhY3Rpb24g4oCUIHRoZSBPTkUgb3duZXIgb2YgdGhlIHZlcmRpY3QgKDkuMTkuMCk7IHRoZSBsb2cncyBzY3J1YiBpcyB0aGUgcmVjb3JkJ3MgKHNjcnViLnRzLCBDNClcbmV4cG9ydCB0eXBlIHsgUmVkYWN0aW9uVmVyZGljdCB9IGZyb20gJy4vcmVkYWN0aW9uLmpzJztcbmV4cG9ydCB7IFJlZGFjdGlvblJ1bGUgfSBmcm9tICcuL3JlZGFjdGlvbi5qcyc7XG5leHBvcnQgeyByZWRhY3RQYXRjaCB9IGZyb20gJy4vc2NydWIuanMnO1xuXG4vLyBUaGUgcnVuJ3MgcG9saWN5IOKAlCB0aGUgZm91ciBkaWFscywgdGhlIHJ1bGUsIHRoZSBtaXJyb3IgZmxhZyBhcyBPTkUgb2JqZWN0IChGNSlcbmV4cG9ydCB0eXBlIHsgUnVuRGlhbHMsIFJ1blBvbGljeSB9IGZyb20gJy4vcnVuUG9saWN5LmpzJztcbmV4cG9ydCB7IERFRkFVTFRfUlVOX1BPTElDWSwgcnVuUG9saWN5IH0gZnJvbSAnLi9ydW5Qb2xpY3kuanMnO1xuXG4vLyBIb25lc3R5IOKAlCB0aGUgT05FIHZvY2FidWxhcnkgZm9yIHdoYXQgYSByZWFkZXIgY2Fubm90IHNlZSAoRjRhKTogY29kZSDihpIgdGhlIG9uZSBzZW50ZW5jZVxuZXhwb3J0IHR5cGUgeyBIb25lc3R5Q29kZSB9IGZyb20gJy4vaG9uZXN0eS5qcyc7XG5leHBvcnQgeyBIT05FU1RZX0NPREVTIH0gZnJvbSAnLi9ob25lc3R5LmpzJztcblxuLy8gVGhlIHR3byBzdHJpbmdzIGEgcmVkYWN0aW9uIGxlYXZlcyB3aGVyZSBhIHZhbHVlIHdhcywgb25lIHBlciBvd25lciAoRjRhOyBzcGxpdCBpbiBDNCk6IHRoZSByZWNvcmQncywgdGhlIHZlcmRpY3Qnc1xuZXhwb3J0IHsgTE9HX1BMQUNFSE9MREVSIH0gZnJvbSAnLi9wbGFjZWhvbGRlcnMuanMnO1xuZXhwb3J0IHsgU0NPUEVfUExBQ0VIT0xERVIgfSBmcm9tICcuL3JlZGFjdGlvbi5qcyc7XG5cbi8vIFR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEJ1bmRsZSxcbiAgQ29tbWl0VmFsdWVzTW9kZSxcbiAgRmxvd0NvbnRyb2xUeXBlLFxuICBGbG93TWVzc2FnZSxcbiAgTWVtb3J5UGF0Y2gsXG4gIFJlYWRTdW1tYXJ5TWFya2VyLFxuICBSZWFkVHJhY2tpbmdNb2RlLFxuICBSZXRlbnRpb25Qb2xpY3ksXG4gIFNjb3BlRmFjdG9yeSxcbiAgU3RhZ2VTbmFwc2hvdCxcbiAgVHJhY2VFbnRyeSxcbiAgVW50cmFja2VkU291cmNlLFxuICBXcml0ZVN1bW1hcnlNYXJrZXIsXG4gIFdyaXRlVHJhY2tpbmdNb2RlLFxufSBmcm9tICcuL3R5cGVzLmpzJztcbmV4cG9ydCB7IFJFQURfUFJFVklFV19MRU5HVEgsIFNVTU1BUllfUFJFVklFV19MRU5HVEggfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLy8gVGhlIHZlcmIgbGF3J3MgcmVmdXNhbDogYSBjb21taXQgcm93IHdob3NlIHZlcmIgaXMgbm90IHNldCB8IG1lcmdlIHwgYXBwZW5kIHwgZGVsZXRlXG5leHBvcnQgeyBVbmtub3duVmVyYkVycm9yIH0gZnJvbSAnLi92ZXJicy5qcyc7XG5cbi8vIFV0aWxpdGllc1xuZXhwb3J0IHtcbiAgYXBwbHlTbWFydE1lcmdlLFxuICBkZWVwU21hcnRNZXJnZSxcbiAgREVMSU0sXG4gIGdldE5lc3RlZFZhbHVlLFxuICBnZXRSdW5BbmRHbG9iYWxQYXRocyxcbiAgbm9ybWFsaXNlUGF0aCxcbiAgcGF0aFNlZ21lbnRzLFxuICBzZXROZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlTmVzdGVkVmFsdWUsXG4gIHVwZGF0ZVZhbHVlLFxufSBmcm9tICcuL3V0aWxzLmpzJztcbiJdfQ==
|
|
@@ -1,44 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* placeholders.ts — the
|
|
2
|
+
* placeholders.ts — the string a redaction leaves where a value was, in the RECORD.
|
|
3
3
|
*
|
|
4
|
-
* WHY THIS FILE EXISTS. Before F4a six files each spelled
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* no other `src/` file spells
|
|
4
|
+
* WHY THIS FILE EXISTS. Before F4a six files each spelled a placeholder as a literal, and a spelling
|
|
5
|
+
* kept in six places is a placeholder a reader can no longer match on. Every `src/` file that writes
|
|
6
|
+
* the log's placeholder imports it from here, and `test/architecture/placeholders.test.ts` pins that
|
|
7
|
+
* no other `src/` file spells it.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* {@link
|
|
13
|
-
*
|
|
9
|
+
* ONE STRING HERE, ITS TWIN ON THE VERDICT'S SIDE (C4, review N2). A redaction leaves one of two
|
|
10
|
+
* strings, and both are historical, so neither may change (stored recordings hold this one). Which
|
|
11
|
+
* one a reader sees depends on WHERE it reads, and each has the owner its reader has:
|
|
12
|
+
* - {@link LOG_PLACEHOLDER} (`'REDACTED'`, here) is a RECORD byte: the commit log and everything
|
|
13
|
+
* served from it — written into the log by the record's scrub (`memory/scrub.ts`, L2), and
|
|
14
|
+
* passed by the two places that serve a mirror (`runner/ExecutionRuntime.ts`, the mirror's
|
|
15
|
+
* seed; `engine/handlers/SubflowExecutor.ts`, a subflow's served state). The readers
|
|
16
|
+
* (`slice/`, `time-travel/`) only name it in their docs: they meet it as data in the log;
|
|
17
|
+
* - `SCOPE_PLACEHOLDER` (`'[REDACTED]'`) is the ENGINE's: the scope channel's retained reads and
|
|
18
|
+
* writes, recorder events, the narrative. It lives beside the verdict that writes it
|
|
19
|
+
* (`memory/redaction.ts`, L4). Until C4 both sat in this file ("two placeholders, one leaf");
|
|
20
|
+
* the record took the engine's string with it.
|
|
14
21
|
*
|
|
15
22
|
* WHY A LEAF OF ITS OWN (and not beside `honesty.ts · HONESTY_CODES`). Different readers, different
|
|
16
|
-
* reasons to change:
|
|
17
|
-
*
|
|
18
|
-
* business in the bundle of an app that only runs charts. This file imports NOTHING, so it is L0
|
|
19
|
-
*
|
|
20
|
-
* (`redactPatch` lived in `memory/utils.ts`, L1, until 9.33.0) — the layer table is `scripts/layering.config.cjs`.
|
|
23
|
+
* reasons to change: this string is written on the engine's WRITE path on every redacted run, the
|
|
24
|
+
* honesty registry is read by a reader that explains a recording — and the registry's sentences have
|
|
25
|
+
* no business in the bundle of an app that only runs charts. This file imports NOTHING, so it is L0
|
|
26
|
+
* (the layer table is `scripts/layering.config.cjs`).
|
|
21
27
|
*/
|
|
22
28
|
/**
|
|
23
29
|
* What the COMMIT LOG and the redacted MIRROR carry where a value was scrubbed.
|
|
24
30
|
*
|
|
25
|
-
* `memory/
|
|
31
|
+
* `memory/scrub.ts · scrubPatch` writes it into the patch the log records (both encodings), and the
|
|
26
32
|
* mirror's seed is scrubbed with the same string (`runner/ExecutionRuntime.ts`), so a fold of the log
|
|
27
33
|
* reproduces it (`stateAt` → `FoldedState.redactedPaths`) and a slice or an element birth, which
|
|
28
34
|
* re-serve the log's bytes, show it too. A subflow's SERVED state is the subflow's own nested mirror
|
|
29
35
|
* (9.20.0): `subflowResults[*].treeContext.globalContext` under `getSnapshot({ redact: true })`, and
|
|
30
36
|
* `onSubflowExit.outputState` whenever a policy keeps that mirror — so those carry this string as
|
|
31
|
-
* well, not
|
|
37
|
+
* well, not the scope channel's `SCOPE_PLACEHOLDER` (`memory/redaction.ts`).
|
|
32
38
|
*/
|
|
33
39
|
export declare const LOG_PLACEHOLDER = "REDACTED";
|
|
34
|
-
/**
|
|
35
|
-
* What the SCOPE CHANNEL carries where a value was scrubbed: a scope recorder's read, write and
|
|
36
|
-
* commit events, the `stageReads` / `stageWrites` retention, the narrative, a decision's evidence, an
|
|
37
|
-
* emit payload matched by `emitPatterns`, and a subflow's narrated seed (`onSubflowEntry`).
|
|
38
|
-
*
|
|
39
|
-
* NOT every recorder event: `onSubflowExit.outputState` serves the subflow's redacted mirror when a
|
|
40
|
-
* policy keeps one, and so carries {@link LOG_PLACEHOLDER} (without a mirror — per-call marks alone —
|
|
41
|
-
* it is the subflow's heap retained under the rule, with this string). The string did not change
|
|
42
|
-
* when it moved here — it was `REDACTED`, in `memory/redaction.ts`, until then.
|
|
43
|
-
*/
|
|
44
|
-
export declare const SCOPE_PLACEHOLDER = "[REDACTED]";
|
|
@@ -1,45 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* placeholders.ts — the
|
|
2
|
+
* placeholders.ts — the string a redaction leaves where a value was, in the RECORD.
|
|
3
3
|
*
|
|
4
|
-
* WHY THIS FILE EXISTS. Before F4a six files each spelled
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* no other `src/` file spells
|
|
4
|
+
* WHY THIS FILE EXISTS. Before F4a six files each spelled a placeholder as a literal, and a spelling
|
|
5
|
+
* kept in six places is a placeholder a reader can no longer match on. Every `src/` file that writes
|
|
6
|
+
* the log's placeholder imports it from here, and `test/architecture/placeholders.test.ts` pins that
|
|
7
|
+
* no other `src/` file spells it.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* {@link
|
|
13
|
-
*
|
|
9
|
+
* ONE STRING HERE, ITS TWIN ON THE VERDICT'S SIDE (C4, review N2). A redaction leaves one of two
|
|
10
|
+
* strings, and both are historical, so neither may change (stored recordings hold this one). Which
|
|
11
|
+
* one a reader sees depends on WHERE it reads, and each has the owner its reader has:
|
|
12
|
+
* - {@link LOG_PLACEHOLDER} (`'REDACTED'`, here) is a RECORD byte: the commit log and everything
|
|
13
|
+
* served from it — written into the log by the record's scrub (`memory/scrub.ts`, L2), and
|
|
14
|
+
* passed by the two places that serve a mirror (`runner/ExecutionRuntime.ts`, the mirror's
|
|
15
|
+
* seed; `engine/handlers/SubflowExecutor.ts`, a subflow's served state). The readers
|
|
16
|
+
* (`slice/`, `time-travel/`) only name it in their docs: they meet it as data in the log;
|
|
17
|
+
* - `SCOPE_PLACEHOLDER` (`'[REDACTED]'`) is the ENGINE's: the scope channel's retained reads and
|
|
18
|
+
* writes, recorder events, the narrative. It lives beside the verdict that writes it
|
|
19
|
+
* (`memory/redaction.ts`, L4). Until C4 both sat in this file ("two placeholders, one leaf");
|
|
20
|
+
* the record took the engine's string with it.
|
|
14
21
|
*
|
|
15
22
|
* WHY A LEAF OF ITS OWN (and not beside `honesty.ts · HONESTY_CODES`). Different readers, different
|
|
16
|
-
* reasons to change:
|
|
17
|
-
*
|
|
18
|
-
* business in the bundle of an app that only runs charts. This file imports NOTHING, so it is L0
|
|
19
|
-
*
|
|
20
|
-
* (`redactPatch` lived in `memory/utils.ts`, L1, until 9.33.0) — the layer table is `scripts/layering.config.cjs`.
|
|
23
|
+
* reasons to change: this string is written on the engine's WRITE path on every redacted run, the
|
|
24
|
+
* honesty registry is read by a reader that explains a recording — and the registry's sentences have
|
|
25
|
+
* no business in the bundle of an app that only runs charts. This file imports NOTHING, so it is L0
|
|
26
|
+
* (the layer table is `scripts/layering.config.cjs`).
|
|
21
27
|
*/
|
|
22
28
|
/**
|
|
23
29
|
* What the COMMIT LOG and the redacted MIRROR carry where a value was scrubbed.
|
|
24
30
|
*
|
|
25
|
-
* `memory/
|
|
31
|
+
* `memory/scrub.ts · scrubPatch` writes it into the patch the log records (both encodings), and the
|
|
26
32
|
* mirror's seed is scrubbed with the same string (`runner/ExecutionRuntime.ts`), so a fold of the log
|
|
27
33
|
* reproduces it (`stateAt` → `FoldedState.redactedPaths`) and a slice or an element birth, which
|
|
28
34
|
* re-serve the log's bytes, show it too. A subflow's SERVED state is the subflow's own nested mirror
|
|
29
35
|
* (9.20.0): `subflowResults[*].treeContext.globalContext` under `getSnapshot({ redact: true })`, and
|
|
30
36
|
* `onSubflowExit.outputState` whenever a policy keeps that mirror — so those carry this string as
|
|
31
|
-
* well, not
|
|
37
|
+
* well, not the scope channel's `SCOPE_PLACEHOLDER` (`memory/redaction.ts`).
|
|
32
38
|
*/
|
|
33
39
|
export const LOG_PLACEHOLDER = 'REDACTED';
|
|
34
|
-
|
|
35
|
-
* What the SCOPE CHANNEL carries where a value was scrubbed: a scope recorder's read, write and
|
|
36
|
-
* commit events, the `stageReads` / `stageWrites` retention, the narrative, a decision's evidence, an
|
|
37
|
-
* emit payload matched by `emitPatterns`, and a subflow's narrated seed (`onSubflowEntry`).
|
|
38
|
-
*
|
|
39
|
-
* NOT every recorder event: `onSubflowExit.outputState` serves the subflow's redacted mirror when a
|
|
40
|
-
* policy keeps one, and so carries {@link LOG_PLACEHOLDER} (without a mirror — per-call marks alone —
|
|
41
|
-
* it is the subflow's heap retained under the rule, with this string). The string did not change
|
|
42
|
-
* when it moved here — it was `REDACTED`, in `memory/redaction.ts`, until then.
|
|
43
|
-
*/
|
|
44
|
-
export const SCOPE_PLACEHOLDER = '[REDACTED]';
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tZW1vcnkvcGxhY2Vob2xkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUVIOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDO0FBRTFDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogcGxhY2Vob2xkZXJzLnRzIOKAlCB0aGUgdHdvIHN0cmluZ3MgYSByZWRhY3Rpb24gbGVhdmVzIHdoZXJlIGEgdmFsdWUgd2FzLlxuICpcbiAqIFdIWSBUSElTIEZJTEUgRVhJU1RTLiBCZWZvcmUgRjRhIHNpeCBmaWxlcyBlYWNoIHNwZWxsZWQgb25lIG9mIHRoZXNlIHN0cmluZ3MgYXMgYSBsaXRlcmFsLCBhbmQgYVxuICogc3BlbGxpbmcga2VwdCBpbiBzaXggcGxhY2VzIGlzIGEgcGxhY2Vob2xkZXIgYSByZWFkZXIgY2FuIG5vIGxvbmdlciBtYXRjaCBvbi4gRXZlcnkgYHNyYy9gIGZpbGVcbiAqIHRoYXQgd3JpdGVzIG9uZSBub3cgaW1wb3J0cyBpdCBmcm9tIGhlcmUsIGFuZCBgdGVzdC9hcmNoaXRlY3R1cmUvcGxhY2Vob2xkZXJzLnRlc3QudHNgIHBpbnMgdGhhdFxuICogbm8gb3RoZXIgYHNyYy9gIGZpbGUgc3BlbGxzIGVpdGhlci5cbiAqXG4gKiBXSFkgVFdPLCBBTkQgV0hZIE5PVCBVTklGSUVELiBCb3RoIGFyZSBoaXN0b3JpY2FsIGFuZCBzdG9yZWQgcmVjb3JkaW5ncyBob2xkIHRoZSBsb2cgb25lLCBzb1xuICogbmVpdGhlciBzdHJpbmcgbWF5IGNoYW5nZS4gV2hpY2ggb25lIGEgcmVhZGVyIHNlZXMgZGVwZW5kcyBvbiBXSEVSRSBpdCByZWFkczogdGhlIGNvbW1pdCBsb2cgYW5kXG4gKiBldmVyeXRoaW5nIHNlcnZlZCBmcm9tIGl0IHNheSB7QGxpbmsgTE9HX1BMQUNFSE9MREVSfTsgdGhlIHNjb3BlIGNoYW5uZWwgc2F5c1xuICoge0BsaW5rIFNDT1BFX1BMQUNFSE9MREVSfSDigJQgZXhjZXB0IGBvblN1YmZsb3dFeGl0Lm91dHB1dFN0YXRlYCwgd2hpY2ggY2FycmllcyB0aGUgbG9nJ3Mgc3RyaW5nXG4gKiB3aGVuZXZlciBhIHBvbGljeSBrZWVwcyBhIG1pcnJvciAoc2VlIHtAbGluayBTQ09QRV9QTEFDRUhPTERFUn0pLlxuICpcbiAqIFdIWSBBIExFQUYgT0YgSVRTIE9XTiAoYW5kIG5vdCBiZXNpZGUgYGhvbmVzdHkudHMgwrcgSE9ORVNUWV9DT0RFU2ApLiBEaWZmZXJlbnQgcmVhZGVycywgZGlmZmVyZW50XG4gKiByZWFzb25zIHRvIGNoYW5nZTogdGhlc2UgdHdvIHN0cmluZ3MgYXJlIHJlYWQgYnkgdGhlIGVuZ2luZSdzIFdSSVRFIHBhdGggb24gZXZlcnkgcmVkYWN0ZWQgcnVuLFxuICogdGhlIGhvbmVzdHkgcmVnaXN0cnkgYnkgYSByZWFkZXIgdGhhdCBleHBsYWlucyBhIHJlY29yZGluZyDigJQgYW5kIHRoZSByZWdpc3RyeSdzIHNlbnRlbmNlcyBoYXZlIG5vXG4gKiBidXNpbmVzcyBpbiB0aGUgYnVuZGxlIG9mIGFuIGFwcCB0aGF0IG9ubHkgcnVucyBjaGFydHMuIFRoaXMgZmlsZSBpbXBvcnRzIE5PVEhJTkcsIHNvIGl0IGlzIEwwOlxuICogYG1lbW9yeS9yZWRhY3Rpb24udHNgIChMMikgd3JpdGVzIGJvdGgg4oCUIHRoZSBsb2cgb25lIGluIGBzY3J1YlBhdGNoYCAoYW5kIHRoZSBwdWJsaWMgYHJlZGFjdFBhdGNoYCksIHRoZSBzY29wZSBvbmUgaW4gYFJlZGFjdGlvblJ1bGVgXG4gKiAoYHJlZGFjdFBhdGNoYCBsaXZlZCBpbiBgbWVtb3J5L3V0aWxzLnRzYCwgTDEsIHVudGlsIDkuMzMuMCkg4oCUIHRoZSBsYXllciB0YWJsZSBpcyBgc2NyaXB0cy9sYXllcmluZy5jb25maWcuY2pzYC5cbiAqL1xuXG4vKipcbiAqIFdoYXQgdGhlIENPTU1JVCBMT0cgYW5kIHRoZSByZWRhY3RlZCBNSVJST1IgY2Fycnkgd2hlcmUgYSB2YWx1ZSB3YXMgc2NydWJiZWQuXG4gKlxuICogYG1lbW9yeS9yZWRhY3Rpb24udHMgwrcgc2NydWJQYXRjaGAgd3JpdGVzIGl0IGludG8gdGhlIHBhdGNoIHRoZSBsb2cgcmVjb3JkcyAoYm90aCBlbmNvZGluZ3MpLCBhbmQgdGhlXG4gKiBtaXJyb3IncyBzZWVkIGlzIHNjcnViYmVkIHdpdGggdGhlIHNhbWUgc3RyaW5nIChgcnVubmVyL0V4ZWN1dGlvblJ1bnRpbWUudHNgKSwgc28gYSBmb2xkIG9mIHRoZSBsb2dcbiAqIHJlcHJvZHVjZXMgaXQgKGBzdGF0ZUF0YCDihpIgYEZvbGRlZFN0YXRlLnJlZGFjdGVkUGF0aHNgKSBhbmQgYSBzbGljZSBvciBhbiBlbGVtZW50IGJpcnRoLCB3aGljaFxuICogcmUtc2VydmUgdGhlIGxvZydzIGJ5dGVzLCBzaG93IGl0IHRvby4gQSBzdWJmbG93J3MgU0VSVkVEIHN0YXRlIGlzIHRoZSBzdWJmbG93J3Mgb3duIG5lc3RlZCBtaXJyb3JcbiAqICg5LjIwLjApOiBgc3ViZmxvd1Jlc3VsdHNbKl0udHJlZUNvbnRleHQuZ2xvYmFsQ29udGV4dGAgdW5kZXIgYGdldFNuYXBzaG90KHsgcmVkYWN0OiB0cnVlIH0pYCwgYW5kXG4gKiBgb25TdWJmbG93RXhpdC5vdXRwdXRTdGF0ZWAgd2hlbmV2ZXIgYSBwb2xpY3kga2VlcHMgdGhhdCBtaXJyb3Ig4oCUIHNvIHRob3NlIGNhcnJ5IHRoaXMgc3RyaW5nIGFzXG4gKiB3ZWxsLCBub3Qge0BsaW5rIFNDT1BFX1BMQUNFSE9MREVSfS5cbiAqL1xuZXhwb3J0IGNvbnN0IExPR19QTEFDRUhPTERFUiA9ICdSRURBQ1RFRCc7XG5cbi8qKlxuICogV2hhdCB0aGUgU0NPUEUgQ0hBTk5FTCBjYXJyaWVzIHdoZXJlIGEgdmFsdWUgd2FzIHNjcnViYmVkOiBhIHNjb3BlIHJlY29yZGVyJ3MgcmVhZCwgd3JpdGUgYW5kXG4gKiBjb21taXQgZXZlbnRzLCB0aGUgYHN0YWdlUmVhZHNgIC8gYHN0YWdlV3JpdGVzYCByZXRlbnRpb24sIHRoZSBuYXJyYXRpdmUsIGEgZGVjaXNpb24ncyBldmlkZW5jZSwgYW5cbiAqIGVtaXQgcGF5bG9hZCBtYXRjaGVkIGJ5IGBlbWl0UGF0dGVybnNgLCBhbmQgYSBzdWJmbG93J3MgbmFycmF0ZWQgc2VlZCAoYG9uU3ViZmxvd0VudHJ5YCkuXG4gKlxuICogTk9UIGV2ZXJ5IHJlY29yZGVyIGV2ZW50OiBgb25TdWJmbG93RXhpdC5vdXRwdXRTdGF0ZWAgc2VydmVzIHRoZSBzdWJmbG93J3MgcmVkYWN0ZWQgbWlycm9yIHdoZW4gYVxuICogcG9saWN5IGtlZXBzIG9uZSwgYW5kIHNvIGNhcnJpZXMge0BsaW5rIExPR19QTEFDRUhPTERFUn0gKHdpdGhvdXQgYSBtaXJyb3Ig4oCUIHBlci1jYWxsIG1hcmtzIGFsb25lIOKAlFxuICogaXQgaXMgdGhlIHN1YmZsb3cncyBoZWFwIHJldGFpbmVkIHVuZGVyIHRoZSBydWxlLCB3aXRoIHRoaXMgc3RyaW5nKS4gVGhlIHN0cmluZyBkaWQgbm90IGNoYW5nZVxuICogd2hlbiBpdCBtb3ZlZCBoZXJlIOKAlCBpdCB3YXMgYFJFREFDVEVEYCwgaW4gYG1lbW9yeS9yZWRhY3Rpb24udHNgLCB1bnRpbCB0aGVuLlxuICovXG5leHBvcnQgY29uc3QgU0NPUEVfUExBQ0VIT0xERVIgPSAnW1JFREFDVEVEXSc7XG4iXX0=
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tZW1vcnkvcGxhY2Vob2xkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUVIOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBwbGFjZWhvbGRlcnMudHMg4oCUIHRoZSBzdHJpbmcgYSByZWRhY3Rpb24gbGVhdmVzIHdoZXJlIGEgdmFsdWUgd2FzLCBpbiB0aGUgUkVDT1JELlxuICpcbiAqIFdIWSBUSElTIEZJTEUgRVhJU1RTLiBCZWZvcmUgRjRhIHNpeCBmaWxlcyBlYWNoIHNwZWxsZWQgYSBwbGFjZWhvbGRlciBhcyBhIGxpdGVyYWwsIGFuZCBhIHNwZWxsaW5nXG4gKiBrZXB0IGluIHNpeCBwbGFjZXMgaXMgYSBwbGFjZWhvbGRlciBhIHJlYWRlciBjYW4gbm8gbG9uZ2VyIG1hdGNoIG9uLiBFdmVyeSBgc3JjL2AgZmlsZSB0aGF0IHdyaXRlc1xuICogdGhlIGxvZydzIHBsYWNlaG9sZGVyIGltcG9ydHMgaXQgZnJvbSBoZXJlLCBhbmQgYHRlc3QvYXJjaGl0ZWN0dXJlL3BsYWNlaG9sZGVycy50ZXN0LnRzYCBwaW5zIHRoYXRcbiAqIG5vIG90aGVyIGBzcmMvYCBmaWxlIHNwZWxscyBpdC5cbiAqXG4gKiBPTkUgU1RSSU5HIEhFUkUsIElUUyBUV0lOIE9OIFRIRSBWRVJESUNUJ1MgU0lERSAoQzQsIHJldmlldyBOMikuIEEgcmVkYWN0aW9uIGxlYXZlcyBvbmUgb2YgdHdvXG4gKiBzdHJpbmdzLCBhbmQgYm90aCBhcmUgaGlzdG9yaWNhbCwgc28gbmVpdGhlciBtYXkgY2hhbmdlIChzdG9yZWQgcmVjb3JkaW5ncyBob2xkIHRoaXMgb25lKS4gV2hpY2hcbiAqIG9uZSBhIHJlYWRlciBzZWVzIGRlcGVuZHMgb24gV0hFUkUgaXQgcmVhZHMsIGFuZCBlYWNoIGhhcyB0aGUgb3duZXIgaXRzIHJlYWRlciBoYXM6XG4gKiAgIC0ge0BsaW5rIExPR19QTEFDRUhPTERFUn0gKGAnUkVEQUNURUQnYCwgaGVyZSkgaXMgYSBSRUNPUkQgYnl0ZTogdGhlIGNvbW1pdCBsb2cgYW5kIGV2ZXJ5dGhpbmdcbiAqICAgICBzZXJ2ZWQgZnJvbSBpdCDigJQgd3JpdHRlbiBpbnRvIHRoZSBsb2cgYnkgdGhlIHJlY29yZCdzIHNjcnViIChgbWVtb3J5L3NjcnViLnRzYCwgTDIpLCBhbmRcbiAqICAgICBwYXNzZWQgYnkgdGhlIHR3byBwbGFjZXMgdGhhdCBzZXJ2ZSBhIG1pcnJvciAoYHJ1bm5lci9FeGVjdXRpb25SdW50aW1lLnRzYCwgdGhlIG1pcnJvcidzXG4gKiAgICAgc2VlZDsgYGVuZ2luZS9oYW5kbGVycy9TdWJmbG93RXhlY3V0b3IudHNgLCBhIHN1YmZsb3cncyBzZXJ2ZWQgc3RhdGUpLiBUaGUgcmVhZGVyc1xuICogICAgIChgc2xpY2UvYCwgYHRpbWUtdHJhdmVsL2ApIG9ubHkgbmFtZSBpdCBpbiB0aGVpciBkb2NzOiB0aGV5IG1lZXQgaXQgYXMgZGF0YSBpbiB0aGUgbG9nO1xuICogICAtIGBTQ09QRV9QTEFDRUhPTERFUmAgKGAnW1JFREFDVEVEXSdgKSBpcyB0aGUgRU5HSU5FJ3M6IHRoZSBzY29wZSBjaGFubmVsJ3MgcmV0YWluZWQgcmVhZHMgYW5kXG4gKiAgICAgd3JpdGVzLCByZWNvcmRlciBldmVudHMsIHRoZSBuYXJyYXRpdmUuIEl0IGxpdmVzIGJlc2lkZSB0aGUgdmVyZGljdCB0aGF0IHdyaXRlcyBpdFxuICogICAgIChgbWVtb3J5L3JlZGFjdGlvbi50c2AsIEw0KS4gVW50aWwgQzQgYm90aCBzYXQgaW4gdGhpcyBmaWxlIChcInR3byBwbGFjZWhvbGRlcnMsIG9uZSBsZWFmXCIpO1xuICogICAgIHRoZSByZWNvcmQgdG9vayB0aGUgZW5naW5lJ3Mgc3RyaW5nIHdpdGggaXQuXG4gKlxuICogV0hZIEEgTEVBRiBPRiBJVFMgT1dOIChhbmQgbm90IGJlc2lkZSBgaG9uZXN0eS50cyDCtyBIT05FU1RZX0NPREVTYCkuIERpZmZlcmVudCByZWFkZXJzLCBkaWZmZXJlbnRcbiAqIHJlYXNvbnMgdG8gY2hhbmdlOiB0aGlzIHN0cmluZyBpcyB3cml0dGVuIG9uIHRoZSBlbmdpbmUncyBXUklURSBwYXRoIG9uIGV2ZXJ5IHJlZGFjdGVkIHJ1biwgdGhlXG4gKiBob25lc3R5IHJlZ2lzdHJ5IGlzIHJlYWQgYnkgYSByZWFkZXIgdGhhdCBleHBsYWlucyBhIHJlY29yZGluZyDigJQgYW5kIHRoZSByZWdpc3RyeSdzIHNlbnRlbmNlcyBoYXZlXG4gKiBubyBidXNpbmVzcyBpbiB0aGUgYnVuZGxlIG9mIGFuIGFwcCB0aGF0IG9ubHkgcnVucyBjaGFydHMuIFRoaXMgZmlsZSBpbXBvcnRzIE5PVEhJTkcsIHNvIGl0IGlzIEwwXG4gKiAodGhlIGxheWVyIHRhYmxlIGlzIGBzY3JpcHRzL2xheWVyaW5nLmNvbmZpZy5janNgKS5cbiAqL1xuXG4vKipcbiAqIFdoYXQgdGhlIENPTU1JVCBMT0cgYW5kIHRoZSByZWRhY3RlZCBNSVJST1IgY2Fycnkgd2hlcmUgYSB2YWx1ZSB3YXMgc2NydWJiZWQuXG4gKlxuICogYG1lbW9yeS9zY3J1Yi50cyDCtyBzY3J1YlBhdGNoYCB3cml0ZXMgaXQgaW50byB0aGUgcGF0Y2ggdGhlIGxvZyByZWNvcmRzIChib3RoIGVuY29kaW5ncyksIGFuZCB0aGVcbiAqIG1pcnJvcidzIHNlZWQgaXMgc2NydWJiZWQgd2l0aCB0aGUgc2FtZSBzdHJpbmcgKGBydW5uZXIvRXhlY3V0aW9uUnVudGltZS50c2ApLCBzbyBhIGZvbGQgb2YgdGhlIGxvZ1xuICogcmVwcm9kdWNlcyBpdCAoYHN0YXRlQXRgIOKGkiBgRm9sZGVkU3RhdGUucmVkYWN0ZWRQYXRoc2ApIGFuZCBhIHNsaWNlIG9yIGFuIGVsZW1lbnQgYmlydGgsIHdoaWNoXG4gKiByZS1zZXJ2ZSB0aGUgbG9nJ3MgYnl0ZXMsIHNob3cgaXQgdG9vLiBBIHN1YmZsb3cncyBTRVJWRUQgc3RhdGUgaXMgdGhlIHN1YmZsb3cncyBvd24gbmVzdGVkIG1pcnJvclxuICogKDkuMjAuMCk6IGBzdWJmbG93UmVzdWx0c1sqXS50cmVlQ29udGV4dC5nbG9iYWxDb250ZXh0YCB1bmRlciBgZ2V0U25hcHNob3QoeyByZWRhY3Q6IHRydWUgfSlgLCBhbmRcbiAqIGBvblN1YmZsb3dFeGl0Lm91dHB1dFN0YXRlYCB3aGVuZXZlciBhIHBvbGljeSBrZWVwcyB0aGF0IG1pcnJvciDigJQgc28gdGhvc2UgY2FycnkgdGhpcyBzdHJpbmcgYXNcbiAqIHdlbGwsIG5vdCB0aGUgc2NvcGUgY2hhbm5lbCdzIGBTQ09QRV9QTEFDRUhPTERFUmAgKGBtZW1vcnkvcmVkYWN0aW9uLnRzYCkuXG4gKi9cbmV4cG9ydCBjb25zdCBMT0dfUExBQ0VIT0xERVIgPSAnUkVEQUNURUQnO1xuIl19
|
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
* 1. No payload (the stage staged no write) → an EMPTY bundle goes to the log, and nothing else
|
|
7
7
|
* moves: live state and the mirror keep their generation. Every executed stage is a cursor stop.
|
|
8
8
|
* 2. A payload → its names are read first, so a stamp that cannot be read fails the commit before
|
|
9
|
-
* anything moves; then its raw rows build live state's next generation, `scrubPatch`
|
|
10
|
-
* placeholder at each redacted path that holds a value
|
|
11
|
-
* patch), and the mirror and the log take the scrubbed rows —
|
|
9
|
+
* anything moves; then its raw rows build live state's next generation, `scrubPatch`
|
|
10
|
+
* (`scrub.ts`, the record's own) puts the placeholder at each redacted path that holds a value
|
|
11
|
+
* (in a spine copy, never in the raw patch), and the mirror and the log take the scrubbed rows —
|
|
12
|
+
* never the raw ones. The redacted paths are data by now: the engine decided them per write
|
|
13
|
+
* (`RecordFrame · write`); nothing here imports the engine's verdict (C4).
|
|
12
14
|
* 3. The bundle's KEY ORDER is the record's bytes: `overwrite`, `updates`, `redactedPaths`, `trace`,
|
|
13
15
|
* `stage`, `stageId`, `runtimeStageId`, then `untrackedSources`, `tags` and `phase`, each only
|
|
14
16
|
* when it has something to say (absent, never empty). `EventLog · record` appends `idx`. The
|
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
* 1. No payload (the stage staged no write) → an EMPTY bundle goes to the log, and nothing else
|
|
7
7
|
* moves: live state and the mirror keep their generation. Every executed stage is a cursor stop.
|
|
8
8
|
* 2. A payload → its names are read first, so a stamp that cannot be read fails the commit before
|
|
9
|
-
* anything moves; then its raw rows build live state's next generation, `scrubPatch`
|
|
10
|
-
* placeholder at each redacted path that holds a value
|
|
11
|
-
* patch), and the mirror and the log take the scrubbed rows —
|
|
9
|
+
* anything moves; then its raw rows build live state's next generation, `scrubPatch`
|
|
10
|
+
* (`scrub.ts`, the record's own) puts the placeholder at each redacted path that holds a value
|
|
11
|
+
* (in a spine copy, never in the raw patch), and the mirror and the log take the scrubbed rows —
|
|
12
|
+
* never the raw ones. The redacted paths are data by now: the engine decided them per write
|
|
13
|
+
* (`RecordFrame · write`); nothing here imports the engine's verdict (C4).
|
|
12
14
|
* 3. The bundle's KEY ORDER is the record's bytes: `overwrite`, `updates`, `redactedPaths`, `trace`,
|
|
13
15
|
* `stage`, `stageId`, `runtimeStageId`, then `untrackedSources`, `tags` and `phase`, each only
|
|
14
16
|
* when it has something to say (absent, never empty). `EventLog · record` appends `idx`. The
|
|
@@ -18,7 +20,7 @@
|
|
|
18
20
|
* is a continuation — and keeps what is not the record: retention, diagnostics, the dev-mode
|
|
19
21
|
* warnings and the commit observer.
|
|
20
22
|
*/
|
|
21
|
-
import { scrubPatch } from './
|
|
23
|
+
import { scrubPatch } from './scrub.js';
|
|
22
24
|
/** Record one commit (the module law). `payload` absent = the empty commit. */
|
|
23
25
|
export function recordCommit(payload, stamp, into) {
|
|
24
26
|
if (payload === undefined) {
|
|
@@ -56,4 +58,4 @@ function namesOf({ stage, stageId, runtimeStageId, untrackedSources, tags, phase
|
|
|
56
58
|
phase: phase || undefined,
|
|
57
59
|
};
|
|
58
60
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkQ29tbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tZW1vcnkvcmVjb3JkQ29tbWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFHSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBMkJ4QywrRUFBK0U7QUFDL0UsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFrQyxFQUFFLEtBQWtCLEVBQUUsSUFBbUI7SUFDdEcsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELE9BQU87SUFDVCxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMvRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMzRCxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBRUQsdUhBQXVIO0FBQ3ZILFNBQVMsUUFBUSxDQUNmLFNBQXNCLEVBQ3RCLE9BQW9CLEVBQ3BCLGFBQXVCLEVBQ3ZCLEtBQW1CLEVBQ25CLEtBQVk7SUFFWixNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQztJQUNoRixNQUFNLE1BQU0sR0FBaUIsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQztJQUMxRyxJQUFJLGdCQUFnQjtRQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUNqRSxJQUFJLElBQUk7UUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUM3QixJQUFJLEtBQUs7UUFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNoQyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsZ0hBQWdIO0FBQ2hILFNBQVMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBZTtJQUM3RixPQUFPO1FBQ0wsS0FBSztRQUNMLE9BQU87UUFDUCxjQUFjO1FBQ2QsZ0JBQWdCLEVBQUUsQ0FBQyxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztRQUN0RyxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtRQUNuRCxLQUFLLEVBQUUsS0FBSyxJQUFJLFNBQVM7S0FDMUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHJlY29yZENvbW1pdCDigJQgb25lIHN0YWdlJ3MgY29tbWl0IG9udG8gdGhlIHJlY29yZCAoQzEsIEwzKS4gVGhlIG9uZSBvd25lciBvZiBhIGJ1bmRsZSdzIGJ5dGVzIGFuZFxuICogb2Ygd2hlcmUgYSBjb21taXQgbGFuZHM6IGxpdmUgc3RhdGUsIHRoZSByZWRhY3RlZCBtaXJyb3IsIHRoZSBsb2cuXG4gKlxuICogVEhFIExBVzpcbiAqICAgMS4gTm8gcGF5bG9hZCAodGhlIHN0YWdlIHN0YWdlZCBubyB3cml0ZSkg4oaSIGFuIEVNUFRZIGJ1bmRsZSBnb2VzIHRvIHRoZSBsb2csIGFuZCBub3RoaW5nIGVsc2VcbiAqICAgICAgbW92ZXM6IGxpdmUgc3RhdGUgYW5kIHRoZSBtaXJyb3Iga2VlcCB0aGVpciBnZW5lcmF0aW9uLiBFdmVyeSBleGVjdXRlZCBzdGFnZSBpcyBhIGN1cnNvciBzdG9wLlxuICogICAyLiBBIHBheWxvYWQg4oaSIGl0cyBuYW1lcyBhcmUgcmVhZCBmaXJzdCwgc28gYSBzdGFtcCB0aGF0IGNhbm5vdCBiZSByZWFkIGZhaWxzIHRoZSBjb21taXQgYmVmb3JlXG4gKiAgICAgIGFueXRoaW5nIG1vdmVzOyB0aGVuIGl0cyByYXcgcm93cyBidWlsZCBsaXZlIHN0YXRlJ3MgbmV4dCBnZW5lcmF0aW9uLCBgc2NydWJQYXRjaGBcbiAqICAgICAgKGBzY3J1Yi50c2AsIHRoZSByZWNvcmQncyBvd24pIHB1dHMgdGhlIHBsYWNlaG9sZGVyIGF0IGVhY2ggcmVkYWN0ZWQgcGF0aCB0aGF0IGhvbGRzIGEgdmFsdWVcbiAqICAgICAgKGluIGEgc3BpbmUgY29weSwgbmV2ZXIgaW4gdGhlIHJhdyBwYXRjaCksIGFuZCB0aGUgbWlycm9yIGFuZCB0aGUgbG9nIHRha2UgdGhlIHNjcnViYmVkIHJvd3Mg4oCUXG4gKiAgICAgIG5ldmVyIHRoZSByYXcgb25lcy4gVGhlIHJlZGFjdGVkIHBhdGhzIGFyZSBkYXRhIGJ5IG5vdzogdGhlIGVuZ2luZSBkZWNpZGVkIHRoZW0gcGVyIHdyaXRlXG4gKiAgICAgIChgUmVjb3JkRnJhbWUgwrcgd3JpdGVgKTsgbm90aGluZyBoZXJlIGltcG9ydHMgdGhlIGVuZ2luZSdzIHZlcmRpY3QgKEM0KS5cbiAqICAgMy4gVGhlIGJ1bmRsZSdzIEtFWSBPUkRFUiBpcyB0aGUgcmVjb3JkJ3MgYnl0ZXM6IGBvdmVyd3JpdGVgLCBgdXBkYXRlc2AsIGByZWRhY3RlZFBhdGhzYCwgYHRyYWNlYCxcbiAqICAgICAgYHN0YWdlYCwgYHN0YWdlSWRgLCBgcnVudGltZVN0YWdlSWRgLCB0aGVuIGB1bnRyYWNrZWRTb3VyY2VzYCwgYHRhZ3NgIGFuZCBgcGhhc2VgLCBlYWNoIG9ubHlcbiAqICAgICAgd2hlbiBpdCBoYXMgc29tZXRoaW5nIHRvIHNheSAoYWJzZW50LCBuZXZlciBlbXB0eSkuIGBFdmVudExvZyDCtyByZWNvcmRgIGFwcGVuZHMgYGlkeGAuIFRoZVxuICogICAgICBuYW1lcyBhcmUgbmFtZXM6IG5vIHJlZGFjdGlvbiByZWFkcyB0aGVtLCBhbmQgbm8gZW5jb2RpbmcgKGBjb21taXRWYWx1ZXNgKSBjaGFuZ2VzIHRoZW0uXG4gKlxuICogVGhlIGZyYW1lIChgU3RhZ2VDb250ZXh0YCkgZGVjaWRlcyBXSEFUIGlzIGNvbW1pdHRlZCDigJQgdGhlIHBheWxvYWQsIHRoZSBuYW1lcywgd2hldGhlciB0aGUgYnVuZGxlXG4gKiBpcyBhIGNvbnRpbnVhdGlvbiDigJQgYW5kIGtlZXBzIHdoYXQgaXMgbm90IHRoZSByZWNvcmQ6IHJldGVudGlvbiwgZGlhZ25vc3RpY3MsIHRoZSBkZXYtbW9kZVxuICogd2FybmluZ3MgYW5kIHRoZSBjb21taXQgb2JzZXJ2ZXIuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBFdmVudExvZyB9IGZyb20gJy4vRXZlbnRMb2cuanMnO1xuaW1wb3J0IHsgc2NydWJQYXRjaCB9IGZyb20gJy4vc2NydWIuanMnO1xuaW1wb3J0IHR5cGUgeyBTaGFyZWRNZW1vcnkgfSBmcm9tICcuL1NoYXJlZE1lbW9yeS5qcyc7XG5pbXBvcnQgdHlwZSB7IFRyYW5zYWN0aW9uQnVmZmVyIH0gZnJvbSAnLi9UcmFuc2FjdGlvbkJ1ZmZlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEJ1bmRsZSwgQ29tbWl0UGhhc2UsIE1lbW9yeVBhdGNoLCBUcmFjZUVudHJ5LCBVbnRyYWNrZWRTb3VyY2UgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqIE9uZSBzdGFnZSdzIG5ldCBjaGFuZ2UsIGFzIGBUcmFuc2FjdGlvbkJ1ZmZlciDCtyBjb21taXRgIGhhbmRzIGl0IG92ZXIuICovXG5leHBvcnQgdHlwZSBDb21taXRQYXlsb2FkID0gUmV0dXJuVHlwZTxUcmFuc2FjdGlvbkJ1ZmZlclsnY29tbWl0J10+O1xuXG4vKiogV2hhdCBuYW1lcyBhIGNvbW1pdCBvbiB0aGUgcmVjb3JkLCBiZXNpZGUgaXRzIHBheWxvYWQgKGxhdyAzKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWl0U3RhbXAge1xuICBzdGFnZTogc3RyaW5nO1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmc7XG4gIHVudHJhY2tlZFNvdXJjZXM/OiBSZWFkb25seVNldDxVbnRyYWNrZWRTb3VyY2U+O1xuICB0YWdzPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIHBoYXNlPzogQ29tbWl0UGhhc2U7XG59XG5cbi8qKiBXaGVyZSBhIGNvbW1pdCBsYW5kczogbGl2ZSBzdGF0ZSBhbHdheXM7IHRoZSBtaXJyb3IgYW5kIHRoZSBsb2cgd2hlbiB0aGUgcnVuIGtlZXBzIHRoZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1pdFRhcmdldHMge1xuICBzdGF0ZTogU2hhcmVkTWVtb3J5O1xuICBtaXJyb3I/OiBTaGFyZWRNZW1vcnk7XG4gIGxvZz86IEV2ZW50TG9nO1xufVxuXG50eXBlIE5hbWVzID0gUGljazxDb21taXRCdW5kbGUsICdzdGFnZScgfCAnc3RhZ2VJZCcgfCAncnVudGltZVN0YWdlSWQnIHwgJ3VudHJhY2tlZFNvdXJjZXMnIHwgJ3RhZ3MnIHwgJ3BoYXNlJz47XG5cbi8qKiBSZWNvcmQgb25lIGNvbW1pdCAodGhlIG1vZHVsZSBsYXcpLiBgcGF5bG9hZGAgYWJzZW50ID0gdGhlIGVtcHR5IGNvbW1pdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvcmRDb21taXQocGF5bG9hZDogQ29tbWl0UGF5bG9hZCB8IHVuZGVmaW5lZCwgc3RhbXA6IENvbW1pdFN0YW1wLCBpbnRvOiBDb21taXRUYXJnZXRzKTogdm9pZCB7XG4gIGlmIChwYXlsb2FkID09PSB1bmRlZmluZWQpIHtcbiAgICBpbnRvLmxvZz8ucmVjb3JkKGJ1bmRsZU9mKHt9LCB7fSwgW10sIFtdLCBuYW1lc09mKHN0YW1wKSkpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBuYW1lcyA9IG5hbWVzT2Yoc3RhbXApO1xuICBjb25zdCB7IHJlZGFjdGVkUGF0aHMsIHRyYWNlIH0gPSBwYXlsb2FkO1xuICBpbnRvLnN0YXRlLmFwcGx5UGF0Y2gocGF5bG9hZC5vdmVyd3JpdGUsIHBheWxvYWQudXBkYXRlcywgdHJhY2UpO1xuICBjb25zdCBvdmVyd3JpdGUgPSBzY3J1YlBhdGNoKHBheWxvYWQub3ZlcndyaXRlLCByZWRhY3RlZFBhdGhzKTtcbiAgY29uc3QgdXBkYXRlcyA9IHNjcnViUGF0Y2gocGF5bG9hZC51cGRhdGVzLCByZWRhY3RlZFBhdGhzKTtcbiAgaW50by5taXJyb3I/LmFwcGx5UGF0Y2gob3ZlcndyaXRlLCB1cGRhdGVzLCB0cmFjZSk7XG4gIGludG8ubG9nPy5yZWNvcmQoYnVuZGxlT2Yob3ZlcndyaXRlLCB1cGRhdGVzLCBbLi4ucmVkYWN0ZWRQYXRoc10sIHRyYWNlLCBuYW1lcykpO1xufVxuXG4vKiogVEhFIGJ1bmRsZSAobGF3IDMpOiB0aGUgcGF5bG9hZCdzIGZvdXIga2V5cywgdGhlIHRocmVlIG5hbWVzLCB0aGVuIGVhY2ggb3B0aW9uYWwgbmFtZSB0aGF0IGhhcyBzb21ldGhpbmcgdG8gc2F5LiAqL1xuZnVuY3Rpb24gYnVuZGxlT2YoXG4gIG92ZXJ3cml0ZTogTWVtb3J5UGF0Y2gsXG4gIHVwZGF0ZXM6IE1lbW9yeVBhdGNoLFxuICByZWRhY3RlZFBhdGhzOiBzdHJpbmdbXSxcbiAgdHJhY2U6IFRyYWNlRW50cnlbXSxcbiAgbmFtZXM6IE5hbWVzLFxuKTogQ29tbWl0QnVuZGxlIHtcbiAgY29uc3QgeyBzdGFnZSwgc3RhZ2VJZCwgcnVudGltZVN0YWdlSWQsIHVudHJhY2tlZFNvdXJjZXMsIHRhZ3MsIHBoYXNlIH0gPSBuYW1lcztcbiAgY29uc3QgYnVuZGxlOiBDb21taXRCdW5kbGUgPSB7IG92ZXJ3cml0ZSwgdXBkYXRlcywgcmVkYWN0ZWRQYXRocywgdHJhY2UsIHN0YWdlLCBzdGFnZUlkLCBydW50aW1lU3RhZ2VJZCB9O1xuICBpZiAodW50cmFja2VkU291cmNlcykgYnVuZGxlLnVudHJhY2tlZFNvdXJjZXMgPSB1bnRyYWNrZWRTb3VyY2VzO1xuICBpZiAodGFncykgYnVuZGxlLnRhZ3MgPSB0YWdzO1xuICBpZiAocGhhc2UpIGJ1bmRsZS5waGFzZSA9IHBoYXNlO1xuICByZXR1cm4gYnVuZGxlO1xufVxuXG4vKiogVGhlIG5hbWVzLCByZWFkIG9uY2Ug4oCUIGJlZm9yZSBhbnl0aGluZyBtb3ZlcyAobGF3IDIpLiBBbiBvcHRpb25hbCBvbmUgd2l0aCBub3RoaW5nIHRvIHNheSBpcyBgdW5kZWZpbmVkYC4gKi9cbmZ1bmN0aW9uIG5hbWVzT2YoeyBzdGFnZSwgc3RhZ2VJZCwgcnVudGltZVN0YWdlSWQsIHVudHJhY2tlZFNvdXJjZXMsIHRhZ3MsIHBoYXNlIH06IENvbW1pdFN0YW1wKTogTmFtZXMge1xuICByZXR1cm4ge1xuICAgIHN0YWdlLFxuICAgIHN0YWdlSWQsXG4gICAgcnVudGltZVN0YWdlSWQsXG4gICAgdW50cmFja2VkU291cmNlczogIXVudHJhY2tlZFNvdXJjZXMgfHwgdW50cmFja2VkU291cmNlcy5zaXplID09PSAwID8gdW5kZWZpbmVkIDogWy4uLnVudHJhY2tlZFNvdXJjZXNdLFxuICAgIHRhZ3M6ICF0YWdzIHx8IHRhZ3MubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogdGFncyxcbiAgICBwaGFzZTogcGhhc2UgfHwgdW5kZWZpbmVkLFxuICB9O1xufVxuIl19
|