footprintjs 9.44.2 → 9.44.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +2 -2
- package/dist/esm/lib/memory/EventLog.d.ts +1 -1
- package/dist/esm/lib/memory/EventLog.js +2 -2
- package/dist/esm/lib/memory/StageContext.d.ts +4 -33
- package/dist/esm/lib/memory/StageContext.js +18 -81
- package/dist/esm/lib/memory/TransactionBuffer.js +2 -2
- package/dist/esm/lib/memory/recordCommit.d.ts +43 -0
- package/dist/esm/lib/memory/recordCommit.js +59 -0
- package/dist/esm/lib/memory/redaction.d.ts +1 -1
- package/dist/esm/lib/memory/redaction.js +2 -2
- package/dist/esm/lib/runner/ExecutionRuntime.d.ts +2 -2
- package/dist/esm/lib/runner/ExecutionRuntime.js +3 -3
- package/dist/lib/memory/EventLog.js +2 -2
- package/dist/lib/memory/StageContext.js +17 -80
- package/dist/lib/memory/TransactionBuffer.js +2 -2
- package/dist/lib/memory/recordCommit.js +63 -0
- package/dist/lib/memory/redaction.js +2 -2
- package/dist/lib/runner/ExecutionRuntime.js +3 -3
- package/dist/types/lib/memory/EventLog.d.ts +1 -1
- package/dist/types/lib/memory/StageContext.d.ts +4 -33
- package/dist/types/lib/memory/recordCommit.d.ts +43 -0
- package/dist/types/lib/memory/redaction.d.ts +1 -1
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +2 -2
- package/package.json +1 -1
|
@@ -128,8 +128,8 @@ export type RuntimeSnapshot = {
|
|
|
128
128
|
export declare class ExecutionRuntime {
|
|
129
129
|
globalStore: SharedMemory;
|
|
130
130
|
/**
|
|
131
|
-
* Parallel redacted mirror of `globalStore`. Populated
|
|
132
|
-
* `
|
|
131
|
+
* Parallel redacted mirror of `globalStore`. Populated by every commit that
|
|
132
|
+
* staged a write (`memory/recordCommit.ts · recordCommit`), with the already-computed redacted patches.
|
|
133
133
|
* Only exists when the run's policy keeps a mirror (`RunPolicy.mirror` —
|
|
134
134
|
* `FlowChartExecutor` sets it when a `RedactionPolicy` is configured).
|
|
135
135
|
* Otherwise undefined and zero cost.
|
|
@@ -18,8 +18,8 @@ import { StageContext } from '../memory/StageContext.js';
|
|
|
18
18
|
export class ExecutionRuntime {
|
|
19
19
|
globalStore;
|
|
20
20
|
/**
|
|
21
|
-
* Parallel redacted mirror of `globalStore`. Populated
|
|
22
|
-
* `
|
|
21
|
+
* Parallel redacted mirror of `globalStore`. Populated by every commit that
|
|
22
|
+
* staged a write (`memory/recordCommit.ts · recordCommit`), with the already-computed redacted patches.
|
|
23
23
|
* Only exists when the run's policy keeps a mirror (`RunPolicy.mirror` —
|
|
24
24
|
* `FlowChartExecutor` sets it when a `RedactionPolicy` is configured).
|
|
25
25
|
* Otherwise undefined and zero cost.
|
|
@@ -188,4 +188,4 @@ export class ExecutionRuntime {
|
|
|
188
188
|
};
|
|
189
189
|
}
|
|
190
190
|
}
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhlY3V0aW9uUnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL0V4ZWN1dGlvblJ1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFtSHpELE1BQU0sT0FBTyxnQkFBZ0I7SUFDcEIsV0FBVyxDQUFlO0lBQ2pDOzs7Ozs7OztPQVFHO0lBQ0ksYUFBYSxDQUFnQjtJQUM3QixnQkFBZ0IsQ0FBZTtJQUMvQixnQkFBZ0IsQ0FBVztJQUNsQyxvRkFBb0Y7SUFDNUUsYUFBYSxDQUFnQjtJQUM3QixhQUFhLENBQVU7SUFDdkIsY0FBYyxDQUFVO0lBQ2hDO21GQUMrRTtJQUN2RSxNQUFNLENBQVk7SUFFMUIsNEVBQTRFO0lBQ3BFLFNBQVMsQ0FBMkI7SUFFNUM7Ozs7OztPQU1HO0lBQ0gsWUFDRSxRQUFnQixFQUNoQixNQUFjLEVBQ2QsYUFBdUIsRUFDdkIsWUFBc0IsRUFDdEIsU0FBb0Isa0JBQWtCO1FBRXRDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxZQUFZLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLHlFQUF5RTtRQUN6RSwwRUFBMEU7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QyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckcsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWTtZQUN0QyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlO1NBQzdDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV4ZWN1dGlvblJ1bnRpbWUg4oCUIFRoZSBydW50aW1lIGVudmlyb25tZW50IGZvciBvbmUgZmxvd2NoYXJ0IGV4ZWN1dGlvbi5cbiAqXG4gKiBXaXJlcyB1cCB0aGUgdGhyZWUgbWVtb3J5IHByaW1pdGl2ZXMgaW50byBhIHNpbmdsZSBjb250YWluZXI6XG4gKiAgIC0gU2hhcmVkTWVtb3J5ICh0aGUgaGVhcCDigJQgc2hhcmVkIHN0YXRlIGFjcm9zcyBhbGwgc3RhZ2VzKVxuICogICAtIFN0YWdlQ29udGV4dCAgKHRoZSBjYWxsIHN0YWNrIOKAlCBwZXItc3RhZ2UgZXhlY3V0aW9uIHRyZWUpXG4gKiAgIC0gRXZlbnRMb2cgICAgICAodGhlIHRyYW5zYWN0aW9uIGxvZyDigJQgY29tbWl0IGhpc3RvcnkgZm9yIHJlcGxheSlcbiAqXG4gKiBUaGUgZW5naW5lIChGbG93Y2hhcnRUcmF2ZXJzZXIpIHJlY2VpdmVzIHRoaXMgYXMgaXRzIHJ1bnRpbWUgcGFyYW1ldGVyLlxuICogQWZ0ZXIgZXhlY3V0aW9uLCBjb25zdW1lcnMgcXVlcnkgaXQgZm9yIHRoZSBmdWxsIGV4ZWN1dGlvbiBzdGF0ZS5cbiAqL1xuXG5pbXBvcnQgeyBmcmVlemVSZWNvcmQgfSBmcm9tICcuLi9jYXB0dXJlL2ZyZWV6ZS5qcyc7XG5pbXBvcnQgeyBFdmVudExvZyB9IGZyb20gJy4uL21lbW9yeS9FdmVudExvZy5qcyc7XG5pbXBvcnQgdHlwZSB7IExvZ0FkZHJlc3MgfSBmcm9tICcuLi9tZW1vcnkvZXZlbnRQb3NpdGlvbi5qcyc7XG5pbXBvcnQgeyBMT0dfUExBQ0VIT0xERVIgfSBmcm9tICcuLi9tZW1vcnkvcGxhY2Vob2xkZXJzLmpzJztcbmltcG9ydCB0eXBlIHsgUnVuUG9saWN5IH0gZnJvbSAnLi4vbWVtb3J5L3J1blBvbGljeS5qcyc7XG5pbXBvcnQgeyBERUZBVUxUX1JVTl9QT0xJQ1kgfSBmcm9tICcuLi9tZW1vcnkvcnVuUG9saWN5LmpzJztcbmltcG9ydCB7IFNoYXJlZE1lbW9yeSB9IGZyb20gJy4uL21lbW9yeS9TaGFyZWRNZW1vcnkuanMnO1xuaW1wb3J0IHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEJ1bmRsZSwgQ29tbWl0VmFsdWVzTW9kZSwgU3RhZ2VTbmFwc2hvdCwgV3JpdGVQcm92ZW5hbmNlTW9kZSB9IGZyb20gJy4uL21lbW9yeS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmVyU3RhdHMgfSBmcm9tICcuL0RlZmVycmVkT2JzZXJ2ZXJUaWVyLmpzJztcblxuLyoqIFNuYXBzaG90IG9mIGEgc2luZ2xlIHJlY29yZGVyJ3MgY29sbGVjdGVkIGRhdGEuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZGVyU25hcHNob3Qge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBTY29wZVJlY29yZGVyIHR5cGUgYW5kIHBhdHRlcm4gZGVzY3JpcHRpb24gKGUuZy4sIFwiVHJhbnNsYXRvciAoS2V5ZWRTdG9yZSkg4oCUIHBlci1zdGVwIHRva2VuIHVzYWdlXCIpLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIFByZWZlcnJlZCByZWFkLXRpbWUgb3BlcmF0aW9uIOKAlCBoaW50cyB0aGUgVUkgYWJvdXQgd2hpY2ggdmlldyB0byBzaG93IHByb21pbmVudGx5LiAqL1xuICBwcmVmZXJyZWRPcGVyYXRpb24/OiAndHJhbnNsYXRlJyB8ICdhY2N1bXVsYXRlJyB8ICdhZ2dyZWdhdGUnO1xuICBkYXRhOiB1bmtub3duO1xuICAvKipcbiAgICogU21hbGwgbWFjaGluZS1yZWFkYWJsZSBmYWN0cyBhYm91dCB0aGUgQlVORExFIOKAlCBob3cgaXQgd2FzIHByb2R1Y2VkLFxuICAgKiB3aGljaCBwcm9qZWN0aW9uIG9mIHRoZSByZWNvcmRlcidzIGRhdGEgaXQgaXMsIHdoYXQgaXQgZGVsaWJlcmF0ZWx5XG4gICAqIGxlZnQgb3V0LiBXaGF0ZXZlciB0aGUgcmVjb3JkZXIncyBgdG9TbmFwc2hvdCgpYCBwdXQgaGVyZSwgY29waWVkXG4gICAqIHRocm91Z2ggdW5jaGFuZ2VkLlxuICAgKlxuICAgKiBUaGUgc3BsaXQgd2l0aCBgZGVzY3JpcHRpb25gOiBgZGVzY3JpcHRpb25gIGlzIHRoZSBzZW50ZW5jZSBhIGh1bWFuXG4gICAqIHJlYWRzOyBgbWV0YWAgaXMgd2hhdCBhbiBvZmZsaW5lIGNvbnN1bWVyIEJSQU5DSEVTIG9uLiBBIHJlY29yZGVyIHdpdGhcbiAgICogYSBcImZ1bGxcIiBhbmQgYSBcImxlYW5cIiBidW5kbGUgc2hhcGUgdGhhdCBzYXlzIHNvIG9ubHkgaW4gaXRzXG4gICAqIGRlc2NyaXB0aW9uIGZvcmNlcyBldmVyeSByZWFkZXIgdG8gc3RyaW5nLW1hdGNoIHByb3NlIOKAlCBhbmQgYSByZWFkZXJcbiAgICogdGhhdCBkb2Vzbid0IHJlbmRlcnMgYW4gZW1wdHkgcGFuZWwgaW5zdGVhZCBvZiBzYXlpbmcgXCJ0aGlzIHJlY29yZGluZ1xuICAgKiBjYXJyaWVzIHN0cnVjdHVyZSBvbmx5XCIuXG4gICAqXG4gICAqIE5vdCBpbnRlcnByZXRlZCBieSB0aGUgZW5naW5lLCBzbyBrZXlzIGFyZSB0aGUgcmVjb3JkZXIncyB0byBjaG9vc2U7XG4gICAqIGtlZXAgdGhlIHZhbHVlcyBKU09OLXNhZmUsIHNpbmNlIHRoaXMgcmlkZXMgdGhlIHNuYXBzaG90IG91dCB0byBkaXNrLlxuICAgKi9cbiAgbWV0YT86IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pjtcbn1cblxuZXhwb3J0IHR5cGUgUnVudGltZVNuYXBzaG90ID0ge1xuICAvKipcbiAgICogVGhlIHJ1biB0aGlzIHNuYXBzaG90IGJlbG9uZ3MgdG8g4oCUIHRoZSBzYW1lIGBydW5JZGAgc3RhbXBlZCBvbiBldmVyeVxuICAgKiBgVHJhdmVyc2FsQ29udGV4dGAgKGFuZCB0aHVzIGV2ZXJ5IHJlY29yZGVyIGV2ZW50KSBvZiB0aGUgcnVuLCBzbyBhXG4gICAqIHNuYXBzaG90IGNhbiBiZSBqb2luZWQgYWdhaW5zdCBhbiBldmVudCBzdHJlYW0gb3IgYW4gZXh0ZXJuYWxcbiAgICogY29ycmVsYXRpb24gdGFibGUuIFJlYWQtb25seSBieSBjb250cmFjdDogZ2VuZXJhdGVkIGJ5IHRoZSBleGVjdXRvclxuICAgKiAoYHJ1bm5lci9ydW5JZC50c2ApLCBuZXZlciBkZXJpdmVkIGZyb20gc25hcHNob3QgY29udGVudHMuXG4gICAqXG4gICAqIExpZmVjeWNsZSAobWF0Y2hlcyB0aGUgZXZlbnQgbW9kZWwpOiBmcmVzaCBwZXIgYHJ1bigpYCBBTkQgcGVyXG4gICAqIGByZXN1bWUoKWAg4oCUIHJlc3VtZSBpcyBsb2dpY2FsbHkgYSBkaXN0aW5jdCBydW4sIHNvIGEgcG9zdC1yZXN1bWVcbiAgICogc25hcHNob3QgY2FycmllcyBhIERJRkZFUkVOVCBydW5JZCB0aGFuIHRoZSBwYXVzZWQgcnVuJ3Mgc25hcHNob3QuXG4gICAqL1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICBzaGFyZWRTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGV4ZWN1dGlvblRyZWU6IFN0YWdlU25hcHNob3Q7XG4gIC8qKlxuICAgKiBUaGUgY29tbWl0IGxvZydzIGZvbGQgQkFTRSDigJQgdGhlIHJ1bidzIHN0YXRlIGJlZm9yZSBpdHMgZmlyc3QgY29tbWl0XG4gICAqIChgaW5pdGlhbENvbnRleHRgIG1lcmdlZCB3aXRoIGBkZWZhdWx0VmFsdWVzRm9yQ29udGV4dGA7IG9uIGEgcmVzdW1lLCB0aGVcbiAgICogY2hlY2twb2ludCdzIHN0YXRlKS4gRGVlcGx5IGZyb3plbiBhbmQgZnVsbHkgZGV0YWNoZWQgZnJvbSB0aGUgZW5naW5lLlxuICAgKlxuICAgKiBDb21taXQgYnVuZGxlcyBhcmUgRElGRlMsIHNvIHRoZSBsb2cgYWxvbmUgY2Fubm90IHJlYnVpbGQgYSB2YWx1ZSB0aGF0XG4gICAqIHdhcyBzZWVkZWQgYmVmb3JlIHRoZSBydW4gYW5kIG9ubHkgZXZlciBtZXJnZWQgYWZ0ZXJ3YXJkcy4gU2hpcHBpbmcgdGhlXG4gICAqIGJhc2UgV0lUSCB0aGUgbG9nIGlzIHdoYXQgbWFrZXMgYW4gb2ZmbGluZSBmb2xkIOKAlCBgc3RhdGVBdChzbmFwc2hvdCwgaSlgXG4gICAqIGZyb20gYGZvb3RwcmludGpzL3RyYWNlYCDigJQgcmVwcm9kdWNlIHRoZSBzdGF0ZSBhIHN0YWdlIGFjdHVhbGx5IHNhdy5cbiAgICpcbiAgICogT1BUSU9OQUwgQlkgVFlQRSwgYW5kIGFic2VudCBpbiBleGFjdGx5IHR3byBjYXNlcy4gQSBwbGFpbiBgZ2V0U25hcHNob3QoKWBcbiAgICogYWx3YXlzIGNhcnJpZXMgaXQsIHNvIGEgbGl2ZSBmb2xkIHJlcG9ydHMgYGJhc2lzOiAnaW5pdGlhbCtsb2cnYC4gVW5kZXJcbiAgICogYGdldFNuYXBzaG90KHsgcmVkYWN0OiB0cnVlIH0pYCBpdCBpcyBPTUlUVEVEIOKAlCB0aGUgYmFzZSBpcyB0aGUgcmF3IHByZS1ydW5cbiAgICogc2VlZCBhbmQgdGhlIHJlZGFjdGlvbiBwb2xpY3kgaXMgbm90IHBsdW1iZWQgaW50byB0aGUgZm9sZCDigJQgc28gYSBmb2xkIG9mXG4gICAqIGEgcmVkYWN0ZWQgc25hcHNob3QgZGVncmFkZXMgaG9uZXN0bHkgdG8gYGJhc2lzOiAnbG9nLW9ubHknYC4gQW5kIGl0IGlzXG4gICAqIGRlY2xhcmVkIG9wdGlvbmFsIHNvIHRoYXQgY29kZSB3cml0dGVuIGFnYWluc3QgOS4xNi54IOKAlCBhIHRlc3QgZml4dHVyZSBvclxuICAgKiBhIFVJIG1vY2sgdGhhdCBDT05TVFJVQ1RTIGEgYFJ1bnRpbWVTbmFwc2hvdGAgbGl0ZXJhbCDigJQgc3RpbGwgY29tcGlsZXMuXG4gICAqIGBzdGF0ZUF0YCBoYW5kbGVzIGFic2VuY2UgYnkgc2F5aW5nIHNvLCBuZXZlciBieSBmb2xkaW5nIGEgbGllLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5pdGlhbFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKlxuICAgKiBUaGUgcnVuJ3MgY29tbWl0IGJ1bmRsZXMsIG9uZSBwZXIgZXhlY3V0ZWQgc3RhZ2UsIGluIGV4ZWN1dGlvbiBvcmRlciDigJRcbiAgICogYSBERVRBQ0hFRCwgZnJvemVuIGNvcHkgb2YgdGhlIGVuZ2luZSdzIGxpdmUgbG9nIChhIHNuYXBzaG90IGlzIGEgZm9sZFxuICAgKiByZXN1bHQ6IGl0IG11c3Qgbm90IGtlZXAgY2hhbmdpbmcgdW5kZXIgdGhlIGNvbnN1bWVyIHRoYXQgaG9sZHMgaXQpLlxuICAgKiBUaGUgYnVuZGxlcyBpbnNpZGUgYXJlIHRoZSBlbmdpbmUncyBvd24gb2JqZWN0cywgaW1tdXRhYmxlIGFmdGVyIHJlY29yZC5cbiAgICovXG4gIGNvbW1pdExvZzogQ29tbWl0QnVuZGxlW107XG4gIC8qKiBJZGVudGl0eSBvZiB0aGlzIGxvZywgc3RhYmxlIGFjcm9zcyBzYW1lLWV4ZWN1dG9yIHJlc3VtZS4gQWJzZW50IGJlZm9yZSBiaW5kaW5nIG9yIGluIG9sZGVyIHNvdXJjZXMuICovXG4gIHJlYWRvbmx5IGxvZ0FkZHJlc3M/OiBMb2dBZGRyZXNzO1xuICAvKipcbiAgICogRW5jb2RpbmcgZGlzY3JpbWluYW50IGZvciBgY29tbWl0TG9nYCAoIzEzYy1CKTogYCdmdWxsJ2Ag4oCUIGV2ZXJ5IGBzZXRgXG4gICAqIGJ1bmRsZSBzdG9yZXMgdGhlIGZ1bGwgZmluYWwgdmFsdWUgKGhpc3RvcmljYWwpOyBgJ2RlbHRhJ2Ag4oCUIGJ1bmRsZXMgbWF5XG4gICAqIGNhcnJ5IGBhcHBlbmRgL2BkZWxldGVgIHRyYWNlIHZlcmJzIHdpdGggdmVyYi1xdWFsaWZpZWQgYG92ZXJ3cml0ZWBcbiAgICogcGF5bG9hZHMgKHRhaWxzKS4gT2ZmbGluZSB0b29saW5nIGtleXMgb24gdGhpcyBmaWVsZDsgYSBidW5kbGUgc3RyZWFtXG4gICAqIHdpdGhvdXQgY29udGV4dCByZW1haW5zIHNlbGYtZGVzY3JpYmluZyB2aWEgdGhlIHZlcmJzIHRoZW1zZWx2ZXMuXG4gICAqL1xuICBjb21taXRWYWx1ZXM6IENvbW1pdFZhbHVlc01vZGU7XG4gIC8qKiBQZXItd3JpdGUgcmVhZC1wcm92ZW5hbmNlIGRpYWwgKCNQMSkgdGhlIHJ1biBleGVjdXRlZCB1bmRlciDigJQgdGhlXG4gICAqICBvZmZsaW5lLXRvb2xpbmcgZGlzY3JpbWluYW50IGZvciBgVHJhY2VFbnRyeS5yZWFkS2V5c2AgYXZhaWxhYmlsaXR5LiAqL1xuICB3cml0ZVByb3ZlbmFuY2U6IFdyaXRlUHJvdmVuYW5jZU1vZGU7XG4gIC8qKlxuICAgKiBQZXItc3ViZmxvdyBleGVjdXRpb24gcmVzdWx0cywgRFVBTC1LRVlFRCAoZGVzaWduOiBkb2NzL2Rlc2lnbi9zdWJmbG93LWNvbW1pdC12aXNpYmlsaXR5Lm1kKTpcbiAgICogICAtIGJ5IHN1YmZsb3cgUEFUSCAoYHN1YmZsb3dJZGAsIGUuZy4gYCdzZi1wYXknYCkg4oaSIHRoZSBMQVNUIGl0ZXJhdGlvbiAoYmFjay1jb21wYXQpOyB0aGlzXG4gICAqICAgICBpcyB3aGF0IGBnZXRTdWJ0cmVlU25hcHNob3QocGF0aClgIGFuZCBgbGlzdFN1YmZsb3dQYXRocygpYCByZXNvbHZlLlxuICAgKiAgIC0gYnkgcGVyLWV4ZWN1dGlvbiBtb3VudCBgcnVudGltZVN0YWdlSWRgIChlLmcuIGAnc2YtcGF5IzUnYCkg4oaSIFRIQVQgaXRlcmF0aW9uJ3MgcmVzdWx0LCBzb1xuICAgKiAgICAgYSBMT09QSU5HIHN1YmZsb3cgcmV0YWlucyBFVkVSWSBpdGVyYXRpb24gKG5vdCBqdXN0IHRoZSBsYXN0KS4gTG9vayB1cCBhIHNwZWNpZmljXG4gICAqICAgICBpdGVyYXRpb24gYXMgYHN1YmZsb3dSZXN1bHRzW25vZGUucnVudGltZVN0YWdlSWRdID8/IHN1YmZsb3dSZXN1bHRzW25vZGUuc3ViZmxvd0lkXWAuXG4gICAqIEJvdGgga2V5cyBwb2ludCBhdCB0aGUgc2FtZSBvYmplY3QgZm9yIGEgc2luZ2xlIG1vdW50OyBpdGVyYXRlIHdpdGggY2FyZSAoY291bnQgdmlhIHRoZVxuICAgKiBwYXRoIGtleXMg4oCUIHRob3NlIHdpdGhvdXQgYCcjJ2ApLiBUaGUgcGF1c2UgY2hlY2twb2ludCBjYXJyaWVzIG9ubHkgdGhlIHBhdGgga2V5cywgbGVhbi5cbiAgICpcbiAgICogVW5kZXIgYGdldFNuYXBzaG90KHsgcmVkYWN0OiB0cnVlIH0pYCBlYWNoIGVudHJ5J3MgYHRyZWVDb250ZXh0Lmdsb2JhbENvbnRleHRgIGlzIHRoYXRcbiAgICogc3ViZmxvdydzIE9XTiByZWRhY3RlZCBtaXJyb3IgKDkuMjAuMCkg4oCUIHRoZSBmb2xkIG9mIGl0cyBzY3J1YmJlZCBgaGlzdG9yeWAg4oCUIHNlcnZlZCBhc1xuICAgKiBvbmUgc3Vic3RpdHV0ZWQgb2JqZWN0IHBlciBtb3VudCAoYm90aCBrZXlzIHN0aWxsIGFncmVlKSDigJQgdGhlIHdyYXBwZXIgaXMgZnJlc2ggcGVyXG4gICAqIGBnZXRTbmFwc2hvdGAgY2FsbCwgdGhlIGBnbG9iYWxDb250ZXh0YCBpbnNpZGUgaXQgaXMgdGhlIHN0YWJsZSBtaXJyb3I7IHBsYWluLCBpdCBpcyB0aGUgc3ViZmxvdydzXG4gICAqIGxpdmUgaGVhcC4gV2l0aG91dCBhIHBvbGljeSB0aGVyZSBpcyBubyBtaXJyb3IgYW5kIHRoZSB0d28gdmlld3MgYXJlIHRoZSBzYW1lIG9iamVjdHMuXG4gICAqL1xuICBzdWJmbG93UmVzdWx0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogU25hcHNob3QgZGF0YSBmcm9tIHJlY29yZGVycyB0aGF0IGltcGxlbWVudCB0b1NuYXBzaG90KCkuICovXG4gIHJlY29yZGVycz86IFJlY29yZGVyU25hcHNob3RbXTtcbiAgLyoqXG4gICAqIERlZmVycmVkLW9ic2VydmVyIGFjY291bnRpbmcgKFJGQy0wMDEgQmxvY2sgOSkg4oCUIHF1ZXVlIGRlcHRoLCBkcm9wcyxcbiAgICogZmx1c2gvYnVkZ2V0IGNvdW50ZXJzLCBwZXItbGlzdGVuZXIgdGltZSBhdHRyaWJ1dGlvbiwgYW5kIHRoZVxuICAgKiB0ZXJtaW5hbC1mbHVzaCBzdHJhbmRpbmcgY291bnQuIEFCU0VOVCB1bmxlc3MgYSByZWNvcmRlciB3YXMgYXR0YWNoZWRcbiAgICogd2l0aCBgeyBkZWxpdmVyeTogJ2RlZmVycmVkJyB9YCBvbiB0aGlzIGV4ZWN1dG9yICh6ZXJvLWNvc3QgZGlzY2lwbGluZSkuXG4gICAqL1xuICBvYnNlcnZlclN0YXRzPzogT2JzZXJ2ZXJTdGF0cztcbn07XG5cbmV4cG9ydCBjbGFzcyBFeGVjdXRpb25SdW50aW1lIHtcbiAgcHVibGljIGdsb2JhbFN0b3JlOiBTaGFyZWRNZW1vcnk7XG4gIC8qKlxuICAgKiBQYXJhbGxlbCByZWRhY3RlZCBtaXJyb3Igb2YgYGdsb2JhbFN0b3JlYC4gUG9wdWxhdGVkIGR1cmluZyB0cmF2ZXJzYWwgdmlhXG4gICAqIGBTdGFnZUNvbnRleHQuY29tbWl0KClgIHVzaW5nIHRoZSBhbHJlYWR5LWNvbXB1dGVkIHJlZGFjdGVkIHBhdGNoZXMuXG4gICAqIE9ubHkgZXhpc3RzIHdoZW4gdGhlIHJ1bidzIHBvbGljeSBrZWVwcyBhIG1pcnJvciAoYFJ1blBvbGljeS5taXJyb3JgIOKAlFxuICAgKiBgRmxvd0NoYXJ0RXhlY3V0b3JgIHNldHMgaXQgd2hlbiBhIGBSZWRhY3Rpb25Qb2xpY3lgIGlzIGNvbmZpZ3VyZWQpLlxuICAgKiBPdGhlcndpc2UgdW5kZWZpbmVkIGFuZCB6ZXJvIGNvc3QuXG4gICAqXG4gICAqIFJlYWQgdmlhIGBnZXRTbmFwc2hvdCh7IHJlZGFjdDogdHJ1ZSB9KWAuXG4gICAqL1xuICBwdWJsaWMgcmVkYWN0ZWRTdG9yZT86IFNoYXJlZE1lbW9yeTtcbiAgcHVibGljIHJvb3RTdGFnZUNvbnRleHQ6IFN0YWdlQ29udGV4dDtcbiAgcHVibGljIGV4ZWN1dGlvbkhpc3Rvcnk6IEV2ZW50TG9nO1xuICAvKiogT3JpZ2luYWwgcm9vdCBmb3IgZ2V0U25hcHNob3QoKSDigJQgc2V0IGJlZm9yZSByZXN1bWUgY2hhbmdlcyByb290U3RhZ2VDb250ZXh0LiAqL1xuICBwcml2YXRlIF9zbmFwc2hvdFJvb3Q/OiBTdGFnZUNvbnRleHQ7XG4gIHByaXZhdGUgX2luaXRpYWxTdGF0ZTogdW5rbm93bjtcbiAgcHJpdmF0ZSBfZGVmYXVsdFZhbHVlczogdW5rbm93bjtcbiAgLyoqIFRoZSBydW4ncyBwb2xpY3kgKGBtZW1vcnkvcnVuUG9saWN5LnRzYCkg4oCUIGluc3RhbGxlZCBvbiB0aGUgcm9vdCBmcmFtZTtcbiAgICogIGl0cyBgY29tbWl0VmFsdWVzYCBhbmQgYHdyaXRlUHJvdmVuYW5jZWAgYXJlIHRoZSBzbmFwc2hvdCBkaXNjcmltaW5hbnRzLiAqL1xuICBwcml2YXRlIHBvbGljeTogUnVuUG9saWN5O1xuXG4gIC8qKiBNZW1vaXplZCBmcm96ZW4gZm9sZCBiYXNlIOKAlCBzZWUge0BsaW5rIFJ1bnRpbWVTbmFwc2hvdC5pbml0aWFsU3RhdGV9LiAqL1xuICBwcml2YXRlIF9mb2xkQmFzZT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcG9saWN5IFRoZSBydW4ncyBwb2xpY3kgKGBydW5Qb2xpY3kudHNgLCBGNSkg4oCUIHRoZSBmb3VyIGRpYWxzLCB0aGVcbiAgICogICByZWRhY3Rpb24gcnVsZSwgdGhlIG1pcnJvciBmbGFnLiBJbnN0YWxsZWQgb24gdGhlIHJvb3QgZnJhbWUgaGVyZSwgc29cbiAgICogICB0aGUgRklSU1QgY29tbWl0IChhIHN1YmZsb3cncyBzZWVkLCBgaGlzdG9yeVswXWApIGFscmVhZHkgcnVucyB1bmRlciBpdDtcbiAgICogICBldmVyeSBmcmFtZSBhZnRlciBpbmhlcml0cyB0aGUgc2FtZSByZWZlcmVuY2UuIERlZmF1bHQ6IGV2ZXJ5IGRpYWwgYXRcbiAgICogICBpdHMgZGVmYXVsdCwgbm8gcnVsZSwgbm8gbWlycm9yLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcm9vdE5hbWU6IHN0cmluZyxcbiAgICByb290SWQ6IHN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWVzPzogdW5rbm93bixcbiAgICBpbml0aWFsU3RhdGU/OiB1bmtub3duLFxuICAgIHBvbGljeTogUnVuUG9saWN5ID0gREVGQVVMVF9SVU5fUE9MSUNZLFxuICApIHtcbiAgICB0aGlzLl9pbml0aWFsU3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gICAgdGhpcy5fZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRWYWx1ZXM7XG4gICAgdGhpcy5nbG9iYWxTdG9yZSA9IG5ldyBTaGFyZWRNZW1vcnkoZGVmYXVsdFZhbHVlcywgaW5pdGlhbFN0YXRlKTtcbiAgICAvLyBUaGUgZXZlbnQgbG9nJ3MgZm9sZCBiYXNlIG11c3QgYmUgdGhlIFNBTUUgc3RhdGUgdGhlIHN0b3JlIHN0YXJ0cyBmcm9tXG4gICAgLy8g4oCUIGBpbml0aWFsQ29udGV4dGAgbWVyZ2VkIHdpdGggYGRlZmF1bHRWYWx1ZXNGb3JDb250ZXh0YCwgd2hpY2ggaXMgd2hhdFxuICAgIC8vIGBTaGFyZWRNZW1vcnlgIGNvbXB1dGVkIGFib3ZlLiBTZWVkaW5nIHRoZSBsb2cgZnJvbSBgaW5pdGlhbFN0YXRlYCBhbG9uZVxuICAgIC8vIGxlZnQgYGRlZmF1bHRWYWx1ZXNgIG91dCBvZiBldmVyeSByZXBsYXksIHNvIGEgZm9sZCBjb3VsZCBub3QgcmVwcm9kdWNlXG4gICAgLy8gdGhlIHN0YXRlIGEgc3RhZ2UgYWN0dWFsbHkgc2F3LiBgZ2V0U3RhdGUoKWAgaXMgdGhlIGxpdmUgY29udGV4dDsgdGhlXG4gICAgLy8gRXZlbnRMb2cgY29uc3RydWN0b3IgY2xvbmVzIGl0LCBzbyB0aGUgYmFzZSBzdGF5cyBkZXRhY2hlZC5cbiAgICB0aGlzLmV4ZWN1dGlvbkhpc3RvcnkgPSBuZXcgRXZlbnRMb2codGhpcy5nbG9iYWxTdG9yZS5nZXRTdGF0ZSgpKTtcbiAgICB0aGlzLnBvbGljeSA9IHBvbGljeTtcbiAgICB0aGlzLnJvb3RTdGFnZUNvbnRleHQgPSB0aGlzLm5ld1Jvb3Qocm9vdE5hbWUsIHJvb3RJZCk7XG4gIH1cblxuICAvKipcbiAgICogQSBmcmVzaCByb290IGZyYW1lIGZvciB0aGlzIHJ1bnRpbWUg4oCUIGBnbG9iYWxTdG9yZWAsIGBleGVjdXRpb25IaXN0b3J5YCxcbiAgICogdGhlIHJ1bidzIHBvbGljeSBhbmQgKHdoZW4ga2VwdCkgdGhlIG1pcnJvci4gQWxzbyBob3cgYFN1YmZsb3dFeGVjdXRvcmBcbiAgICogcmVwbGFjZXMgYSBzdWJmbG93J3Mgc2VlZCBmcmFtZSB3aXRoIHRoZSBmcmFtZSBpdHMgZmlyc3Qgc3RhZ2UgcnVucyBvbi5cbiAgICovXG4gIG5ld1Jvb3QobmFtZTogc3RyaW5nLCBpZDogc3RyaW5nKTogU3RhZ2VDb250ZXh0IHtcbiAgICBjb25zdCByb290ID0gbmV3IFN0YWdlQ29udGV4dCgnJywgbmFtZSwgaWQsIHRoaXMuZ2xvYmFsU3RvcmUsICcnLCB0aGlzLmV4ZWN1dGlvbkhpc3RvcnkpO1xuICAgIHRoaXMuaW5zdGFsbFBvbGljeShyb290KTtcbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxsIHRoZSBydW4ncyBwb2xpY3kgb24gdGhlIENVUlJFTlQgcm9vdCBmcmFtZSDigJQgYSBzYW1lLWV4ZWN1dG9yXG4gICAqIHJlc3VtZSwgd2hvc2UgY29udGludWF0aW9uIHJvb3QgKGBsZWFmLmNyZWF0ZU5leHRgKSBpcyBhZHZhbmNlZCBiZWZvcmVcbiAgICogdGhlIGV4ZWN1dG9yIGJ1aWxkcyB0aGlzIGxlZydzIHBvbGljeSAoYSBmcmVzaCBydWxlIHBlciBsZWcpLiBFdmVyeVxuICAgKiBkZXNjZW5kYW50IHRha2VzIHRoZSByZWZlcmVuY2UgZnJvbSB0aGVyZS5cbiAgICovXG4gIHVzZVBvbGljeShwb2xpY3k6IFJ1blBvbGljeSk6IHZvaWQge1xuICAgIHRoaXMucG9saWN5ID0gcG9saWN5O1xuICAgIHRoaXMuaW5zdGFsbFBvbGljeSh0aGlzLnJvb3RTdGFnZUNvbnRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwb2xpY3kgb24gYHJvb3RgLCBhbmQgdGhlIG1pcnJvciBzdG9yZSB3aGVuIHRoZSBwb2xpY3kga2VlcHMgb25lLlxuICAgKiBUaGUgbWlycm9yIGlzIGEgU0VSVkVEIHN1cmZhY2UsIHNvIGl0cyBzZWVkIG11c3QgYWxyZWFkeSBiZSB0aGUgcG9saWN5J3NcbiAgICogdmlldyBvZiB0aGUgc3RhcnRpbmcgc3RhdGU6IGEgcG9saWN5IGtleSB0aGF0IGFycml2ZXMgYnkgYGluaXRpYWxDb250ZXh0YFxuICAgKiAvIGBkZWZhdWx0VmFsdWVzRm9yQ29udGV4dGAgKG9yLCBvbiBhIGNyb3NzLWV4ZWN1dG9yIHJlc3VtZSwgYnkgdGhlXG4gICAqIGNoZWNrcG9pbnQncyBgc2hhcmVkU3RhdGVgKSBhbmQgaXMgbmV2ZXIgcmUtd3JpdHRlbiB3b3VsZCBvdGhlcndpc2Ugc2l0XG4gICAqIGluIGBnZXRTbmFwc2hvdCh7IHJlZGFjdDogdHJ1ZSB9KWAgaW4gcGxhaW50ZXh0IOKAlCBzbyB0aGUgc2VlZCBpcyBzY3J1YmJlZFxuICAgKiB3aXRoIHRoZSBMT0cncyBwbGFjZWhvbGRlciwgdGhlIHNhbWUgc3RyaW5nIHRoZSByZWRhY3RlZCBwYXRjaGVzIGNhcnJ5LlxuICAgKiBDcmVhdGVkIG9uY2UgcGVyIHJ1bnRpbWUgKGEgc3ViZmxvdydzIHJ1bnRpbWUga2VlcHMgaXRzIG93bjsgaXRzIHNlZWQgaXNcbiAgICogZW1wdHkg4oCUIHRoZSBpbnB1dCBhcnJpdmVzIGFzIGEgY29tbWl0KS5cbiAgICovXG4gIHByaXZhdGUgaW5zdGFsbFBvbGljeShyb290OiBTdGFnZUNvbnRleHQpOiB2b2lkIHtcbiAgICByb290LnVzZVBvbGljeSh0aGlzLnBvbGljeSk7XG4gICAgaWYgKCF0aGlzLnBvbGljeS5taXJyb3IpIHJldHVybjtcbiAgICBpZiAoIXRoaXMucmVkYWN0ZWRTdG9yZSkge1xuICAgICAgY29uc3QgcnVsZSA9IHRoaXMucG9saWN5LnJlZGFjdGlvbjtcbiAgICAgIHRoaXMucmVkYWN0ZWRTdG9yZSA9IG5ldyBTaGFyZWRNZW1vcnkoXG4gICAgICAgIHJ1bGUgPyBydWxlLnJldGFpblN0YXRlKHRoaXMuX2RlZmF1bHRWYWx1ZXMsIExPR19QTEFDRUhPTERFUikgOiB0aGlzLl9kZWZhdWx0VmFsdWVzLFxuICAgICAgICBydWxlID8gcnVsZS5yZXRhaW5TdGF0ZSh0aGlzLl9pbml0aWFsU3RhdGUsIExPR19QTEFDRUhPTERFUikgOiB0aGlzLl9pbml0aWFsU3RhdGUsXG4gICAgICApO1xuICAgIH1cbiAgICByb290LnVzZVJlZGFjdGVkTWlycm9yKHRoaXMucmVkYWN0ZWRTdG9yZSk7XG4gIH1cblxuICAvKiogUHJlc2VydmUgdGhlIGN1cnJlbnQgcm9vdFN0YWdlQ29udGV4dCBmb3Igc25hcHNob3RzIGJlZm9yZSBjaGFuZ2luZyBpdCBmb3IgcmVzdW1lLiAqL1xuICBwcmVzZXJ2ZVNuYXBzaG90Um9vdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3NuYXBzaG90Um9vdCkge1xuICAgICAgdGhpcy5fc25hcHNob3RSb290ID0gdGhpcy5yb290U3RhZ2VDb250ZXh0O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnJvemVuLCBkZXRhY2hlZCBmb2xkIGJhc2Ugc2VydmVkIGFzIHtAbGluayBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlfS5cbiAgICogQ29tcHV0ZWQgb25jZSAodGhlIGJhc2UgbmV2ZXIgY2hhbmdlcyBhZnRlciBjb25zdHJ1Y3Rpb24pIGFuZCBzaGFyZWQg4oCUXG4gICAqIHNhZmUgYmVjYXVzZSBpdCBpcyBkZWVwbHkgZnJvemVuLCBzbyBubyBob2xkZXIgY2FuIG11dGF0ZSBpdCBvciByZWFjaCB0aGVcbiAgICogZW5naW5lIHRocm91Z2ggaXQ7IGEgYmFzZSBob2xkaW5nIGEgRGF0ZSwgTWFwLCBidWZmZXIg4oCmICh3aGF0IGZyZWV6aW5nXG4gICAqIGNhbm5vdCBzZWFsKSBpcyBzZXJ2ZWQgYnkgdGhlIHB1YmxpYyBzbmFwc2hvdCBhcyBhIGNvcHkgb2YgaXRzIG9wZW4gcGF0aHNcbiAgICogKGBydW5uZXIvc25hcHNob3QudHMgwrcgc2VydmVkU25hcHNob3RgLCBgY2FwdHVyZS9mcmVlemUudHMgwrcgc2VydmVSZWNvcmRgLFxuICAgKiA5LjQ0LjIpLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRGb2xkQmFzZSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgaWYgKCF0aGlzLl9mb2xkQmFzZSkge1xuICAgICAgY29uc3QgYmFzZSA9IHRoaXMuZXhlY3V0aW9uSGlzdG9yeS5nZXRJbml0aWFsU3RhdGUoKTtcbiAgICAgIHRoaXMuX2ZvbGRCYXNlID0gZnJlZXplUmVjb3JkKGJhc2UgJiYgdHlwZW9mIGJhc2UgPT09ICdvYmplY3QnID8gYmFzZSA6IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2ZvbGRCYXNlO1xuICB9XG5cbiAgZ2V0UGlwZWxpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICByZXR1cm4gc3RhdGUucGlwZWxpbmVzID8gT2JqZWN0LmtleXMoc3RhdGUucGlwZWxpbmVzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA6IFtdO1xuICB9XG5cbiAgc2V0Um9vdE9iamVjdChwYXRoOiBzdHJpbmdbXSwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5yb290U3RhZ2VDb250ZXh0LnNldE9iamVjdChwYXRoLCBrZXksIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHJ1bnRpbWUgc25hcHNob3QuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zLnJlZGFjdCAgV2hlbiBgdHJ1ZWAsIHJldHVybnMgYHNoYXJlZFN0YXRlYCBmcm9tIHRoZVxuICAgKiAgIHBhcmFsbGVsIHJlZGFjdGVkIG1pcnJvciAoaWYgb25lIHdhcyBlbmFibGVkKS4gVGhpcyBpcyB0aGUgc2FmZSB2aWV3XG4gICAqICAgZm9yIHNoYXJpbmcgdHJhY2VzIGV4dGVybmFsbHkg4oCUIHBhc3RlIGludG8gYSB2aWV3ZXIsIHNoaXAgdG8gc3VwcG9ydCxcbiAgICogICBldGMuIFdoZW4gdGhlIG1pcnJvciB3YXMgbmV2ZXIgZW5hYmxlZCwgZmFsbHMgYmFjayB0byByYXcgYGdsb2JhbFN0b3JlYFxuICAgKiAgIGFuZCBhIGRldi1tb2RlIHdhcm5pbmcgaXMgZW1pdHRlZCAoc2lsZW50IGluIHByb2R1Y3Rpb24pLlxuICAgKlxuICAgKiAgIERlZmF1bHQgYGZhbHNlYCBwcmVzZXJ2ZXMgdGhlIHJ1bnRpbWUgdmlldyDigJQgbmVjZXNzYXJ5IGZvciBwYXVzZSAvXG4gICAqICAgcmVzdW1lIChyZXN1bXB0aW9uIG11c3QgcmVwbGF5IGFnYWluc3QgdGhlIHJlYWwgdmFsdWVzLCBub3RcbiAgICogICAnW1JFREFDVEVEXScpLlxuICAgKlxuICAgKiBPdGhlciBmaWVsZHMgKGBleGVjdXRpb25UcmVlYCwgYGNvbW1pdExvZ2ApIGFyZSB0aGUgc2FtZSBlaXRoZXIgd2F5IOKAlFxuICAgKiB0aGUgY29tbWl0IGxvZyBpcyBhbHJlYWR5IHJlZGFjdGVkIGF0IHdyaXRlLXRpbWUsIGFuZCB0aGUgZXhlY3V0aW9uXG4gICAqIHRyZWUgb25seSBjYXJyaWVzIHN0cnVjdHVyYWwgbWV0YWRhdGEuXG4gICAqXG4gICAqIGBpbml0aWFsU3RhdGVgICh0aGUgZm9sZCBiYXNlKSBpcyBPTUlUVEVEIHVuZGVyIGByZWRhY3Q6IHRydWVgLiBJdCBpcyB0aGVcbiAgICogcnVuJ3MgcmF3IHByZS1ydW4gc2VlZCDigJQgYGluaXRpYWxDb250ZXh0YCBtZXJnZWQgd2l0aFxuICAgKiBgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHRgIOKAlCBhbmQgaXQgbmV2ZXIgcGFzc2VkIHRocm91Z2ggYSByZWRhY3Rpb25cbiAgICogcG9saWN5OiB0aGUgcG9saWN5IHNjcnVicyBXUklURVMgYXQgdGhlIHNjb3BlIGZhY2FkZSwgYW5kIHRoZSBiYXNlIHdhc1xuICAgKiBuZXZlciB3cml0dGVuIGJ5IGEgc3RhZ2UuIFNlcnZpbmcgaXQgb24gdGhlIHJlZGFjdGVkIHN1cmZhY2Ugd291bGQgaGFuZFxuICAgKiBiYWNrIHRoZSBvcmlnaW5hbCB2YWx1ZSBvZiBhIHNlZWRlZCBzZWNyZXQgdGhhdCBhIGxhdGVyIGNvbW1pdCBoYWRcbiAgICogc2NydWJiZWQuIEEgY29uc3VtZXIgZm9sZGluZyB3aXRob3V0IGl0IGdldHMgYGJhc2lzOiAnbG9nLW9ubHknYCBmcm9tXG4gICAqIGBzdGF0ZUF0YCwgd2hpY2ggaXMgdGhlIGhvbmVzdCBzaWduYWwgdGhhdCB0aGUgYmFzZSBkaWQgbm90IHRyYXZlbCB3aXRoXG4gICAqIHRoaXMgbG9nIOKAlCBhIHBhcnRpYWwgYW5zd2VyIHRoYXQgc2F5cyBpdCBpcyBwYXJ0aWFsLCBuZXZlciBhIHNpbGVudCBvbmUuXG4gICAqXG4gICAqIFJldHVybnMgYE9taXQ8UnVudGltZVNuYXBzaG90LCAncnVuSWQnPmA6IHRoZSBydW50aW1lIGlzIHRoZSBtZW1vcnlcbiAgICogY29udGFpbmVyIGFuZCBkb2Vzbid0IGtub3cgd2hpY2ggcnVuIGl0IHNlcnZlcyDigJQgYHJ1bklkYCBpcyBwZXItcnVuXG4gICAqIGV4ZWN1dG9yIHN0YXRlLCBzdGFtcGVkIGJ5IGBGbG93Y2hhcnRUcmF2ZXJzZXIuZ2V0U25hcHNob3QoKWAgKHdoaWNoXG4gICAqIG93bnMgdGhlIHJ1bidzIGlkIGFuZCBhbHJlYWR5IHN0YW1wcyBpdCBvbiBldmVyeSBldmVudCkuIFN1YmZsb3dzJ1xuICAgKiBuZXN0ZWQgcnVudGltZXMgZGVsaWJlcmF0ZWx5IGhhdmUgTk8gcnVuSWQgb2YgdGhlaXIgb3duIChhIHN1YmZsb3cgaXNcbiAgICogcGFydCBvZiB0aGUgcGFyZW50J3MgbG9naWNhbCBydW4pLlxuICAgKi9cbiAgZ2V0U25hcHNob3Qob3B0aW9ucz86IHsgcmVkYWN0PzogYm9vbGVhbiB9KTogT21pdDxSdW50aW1lU25hcHNob3QsICdydW5JZCc+IHtcbiAgICBjb25zdCBzbmFwc2hvdFJvb3QgPSB0aGlzLl9zbmFwc2hvdFJvb3QgPz8gdGhpcy5yb290U3RhZ2VDb250ZXh0O1xuICAgIGNvbnN0IHVzZVJlZGFjdGVkID0gb3B0aW9ucz8ucmVkYWN0ID09PSB0cnVlICYmIHRoaXMucmVkYWN0ZWRTdG9yZSAhPT0gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICBzaGFyZWRTdGF0ZTogdXNlUmVkYWN0ZWQgPyB0aGlzLnJlZGFjdGVkU3RvcmUhLmdldFN0YXRlKCkgOiB0aGlzLmdsb2JhbFN0b3JlLmdldFN0YXRlKCksXG4gICAgICBleGVjdXRpb25UcmVlOiBzbmFwc2hvdFJvb3QuZ2V0U25hcHNob3QoKSxcbiAgICAgIC8vIFJFREFDVElPTjogdGhlIGZvbGQgYmFzZSBpcyB0aGUgcmF3IHByZS1ydW4gc2VlZCBhbmQgbm8gcG9saWN5IGV2ZXJcbiAgICAgIC8vIHRvdWNoZWQgaXQgKHBvbGljaWVzIHNjcnViIHdyaXRlczsgbm90aGluZyB3cm90ZSB0aGUgYmFzZSkuIE9taXQgaXRcbiAgICAgIC8vIHJhdGhlciB0aGFuIGxlYWsgaXQg4oCUIGBzdGF0ZUF0YCBkZWdyYWRlcyB0byBgYmFzaXM6ICdsb2ctb25seSdgLlxuICAgICAgLi4uKHVzZVJlZGFjdGVkID8ge30gOiB7IGluaXRpYWxTdGF0ZTogdGhpcy5nZXRGb2xkQmFzZSgpIH0pLFxuICAgICAgLy8gREVUQUNIRUQ6IHRoZSBlbmdpbmUga2VlcHMgaXRzIGxpdmUgRXZlbnRMb2c7IHRoZSBzbmFwc2hvdCBnZXRzIGFcbiAgICAgIC8vIGZyb3plbiBhcnJheSBvZiBpdHMgb3duIChgcmVjb3JkZWQoKWAgYnVpbGRzIGEgbmV3IG9uZSkuIFNlcnZpbmcgdGhlXG4gICAgICAvLyBpbnRlcm5hbCBhcnJheSBhbGlhc2VkIGl0LCBzbyBhIHNuYXBzaG90IHRha2VuIG1pZC1ydW4ga2VwdCBncm93aW5nXG4gICAgICAvLyB1bmRlciBpdHMgaG9sZGVyIGFuZCBhIGNvbnN1bWVyIGNvdWxkIHNwbGljZSB0aGUgZW5naW5lJ3Mgb3duIGhpc3RvcnkuXG4gICAgICAvLyBUaGUgYnVuZGxlcyBpbiBpdCBhcmUgdGhlIGxvZydzIG93biwgZnJvemVuIGF0IGBFdmVudExvZyDCtyByZWNvcmRgXG4gICAgICAvLyAoRjMpLiBUaGUgcHVibGljIHNuYXBzaG90IHNlcnZlcyB0aGVtIChgcnVubmVyL3NuYXBzaG90LnRzIMK3XG4gICAgICAvLyBzZXJ2ZWRTbmFwc2hvdGAsIDkuNDQuMik7IHRoaXMgb25lIGlzIGFsc28gdGhlIGVuZ2luZSdzIG93biDigJQgYVxuICAgICAgLy8gc3ViZmxvdyBtb3VudCB0YWtlcyBpdCBvbmNlIHBlciBtb3VudCDigJQgc28gdGhlIHJ1biBwYXRoIHNlcnZlcyBub3RoaW5nLlxuICAgICAgY29tbWl0TG9nOiBPYmplY3QuZnJlZXplKHRoaXMuZXhlY3V0aW9uSGlzdG9yeS5yZWNvcmRlZCgpKSBhcyBDb21taXRCdW5kbGVbXSxcbiAgICAgIC4uLih0aGlzLmV4ZWN1dGlvbkhpc3RvcnkuYWRkcmVzcyA9PT0gdW5kZWZpbmVkID8ge30gOiB7IGxvZ0FkZHJlc3M6IHRoaXMuZXhlY3V0aW9uSGlzdG9yeS5hZGRyZXNzIH0pLFxuICAgICAgY29tbWl0VmFsdWVzOiB0aGlzLnBvbGljeS5jb21taXRWYWx1ZXMsXG4gICAgICB3cml0ZVByb3ZlbmFuY2U6IHRoaXMucG9saWN5LndyaXRlUHJvdmVuYW5jZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhlY3V0aW9uUnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL0V4ZWN1dGlvblJ1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFtSHpELE1BQU0sT0FBTyxnQkFBZ0I7SUFDcEIsV0FBVyxDQUFlO0lBQ2pDOzs7Ozs7OztPQVFHO0lBQ0ksYUFBYSxDQUFnQjtJQUM3QixnQkFBZ0IsQ0FBZTtJQUMvQixnQkFBZ0IsQ0FBVztJQUNsQyxvRkFBb0Y7SUFDNUUsYUFBYSxDQUFnQjtJQUM3QixhQUFhLENBQVU7SUFDdkIsY0FBYyxDQUFVO0lBQ2hDO21GQUMrRTtJQUN2RSxNQUFNLENBQVk7SUFFMUIsNEVBQTRFO0lBQ3BFLFNBQVMsQ0FBMkI7SUFFNUM7Ozs7OztPQU1HO0lBQ0gsWUFDRSxRQUFnQixFQUNoQixNQUFjLEVBQ2QsYUFBdUIsRUFDdkIsWUFBc0IsRUFDdEIsU0FBb0Isa0JBQWtCO1FBRXRDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxZQUFZLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLHlFQUF5RTtRQUN6RSwwRUFBMEU7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QyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckcsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWTtZQUN0QyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlO1NBQzdDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV4ZWN1dGlvblJ1bnRpbWUg4oCUIFRoZSBydW50aW1lIGVudmlyb25tZW50IGZvciBvbmUgZmxvd2NoYXJ0IGV4ZWN1dGlvbi5cbiAqXG4gKiBXaXJlcyB1cCB0aGUgdGhyZWUgbWVtb3J5IHByaW1pdGl2ZXMgaW50byBhIHNpbmdsZSBjb250YWluZXI6XG4gKiAgIC0gU2hhcmVkTWVtb3J5ICh0aGUgaGVhcCDigJQgc2hhcmVkIHN0YXRlIGFjcm9zcyBhbGwgc3RhZ2VzKVxuICogICAtIFN0YWdlQ29udGV4dCAgKHRoZSBjYWxsIHN0YWNrIOKAlCBwZXItc3RhZ2UgZXhlY3V0aW9uIHRyZWUpXG4gKiAgIC0gRXZlbnRMb2cgICAgICAodGhlIHRyYW5zYWN0aW9uIGxvZyDigJQgY29tbWl0IGhpc3RvcnkgZm9yIHJlcGxheSlcbiAqXG4gKiBUaGUgZW5naW5lIChGbG93Y2hhcnRUcmF2ZXJzZXIpIHJlY2VpdmVzIHRoaXMgYXMgaXRzIHJ1bnRpbWUgcGFyYW1ldGVyLlxuICogQWZ0ZXIgZXhlY3V0aW9uLCBjb25zdW1lcnMgcXVlcnkgaXQgZm9yIHRoZSBmdWxsIGV4ZWN1dGlvbiBzdGF0ZS5cbiAqL1xuXG5pbXBvcnQgeyBmcmVlemVSZWNvcmQgfSBmcm9tICcuLi9jYXB0dXJlL2ZyZWV6ZS5qcyc7XG5pbXBvcnQgeyBFdmVudExvZyB9IGZyb20gJy4uL21lbW9yeS9FdmVudExvZy5qcyc7XG5pbXBvcnQgdHlwZSB7IExvZ0FkZHJlc3MgfSBmcm9tICcuLi9tZW1vcnkvZXZlbnRQb3NpdGlvbi5qcyc7XG5pbXBvcnQgeyBMT0dfUExBQ0VIT0xERVIgfSBmcm9tICcuLi9tZW1vcnkvcGxhY2Vob2xkZXJzLmpzJztcbmltcG9ydCB0eXBlIHsgUnVuUG9saWN5IH0gZnJvbSAnLi4vbWVtb3J5L3J1blBvbGljeS5qcyc7XG5pbXBvcnQgeyBERUZBVUxUX1JVTl9QT0xJQ1kgfSBmcm9tICcuLi9tZW1vcnkvcnVuUG9saWN5LmpzJztcbmltcG9ydCB7IFNoYXJlZE1lbW9yeSB9IGZyb20gJy4uL21lbW9yeS9TaGFyZWRNZW1vcnkuanMnO1xuaW1wb3J0IHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEJ1bmRsZSwgQ29tbWl0VmFsdWVzTW9kZSwgU3RhZ2VTbmFwc2hvdCwgV3JpdGVQcm92ZW5hbmNlTW9kZSB9IGZyb20gJy4uL21lbW9yeS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2VydmVyU3RhdHMgfSBmcm9tICcuL0RlZmVycmVkT2JzZXJ2ZXJUaWVyLmpzJztcblxuLyoqIFNuYXBzaG90IG9mIGEgc2luZ2xlIHJlY29yZGVyJ3MgY29sbGVjdGVkIGRhdGEuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZGVyU25hcHNob3Qge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBTY29wZVJlY29yZGVyIHR5cGUgYW5kIHBhdHRlcm4gZGVzY3JpcHRpb24gKGUuZy4sIFwiVHJhbnNsYXRvciAoS2V5ZWRTdG9yZSkg4oCUIHBlci1zdGVwIHRva2VuIHVzYWdlXCIpLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIFByZWZlcnJlZCByZWFkLXRpbWUgb3BlcmF0aW9uIOKAlCBoaW50cyB0aGUgVUkgYWJvdXQgd2hpY2ggdmlldyB0byBzaG93IHByb21pbmVudGx5LiAqL1xuICBwcmVmZXJyZWRPcGVyYXRpb24/OiAndHJhbnNsYXRlJyB8ICdhY2N1bXVsYXRlJyB8ICdhZ2dyZWdhdGUnO1xuICBkYXRhOiB1bmtub3duO1xuICAvKipcbiAgICogU21hbGwgbWFjaGluZS1yZWFkYWJsZSBmYWN0cyBhYm91dCB0aGUgQlVORExFIOKAlCBob3cgaXQgd2FzIHByb2R1Y2VkLFxuICAgKiB3aGljaCBwcm9qZWN0aW9uIG9mIHRoZSByZWNvcmRlcidzIGRhdGEgaXQgaXMsIHdoYXQgaXQgZGVsaWJlcmF0ZWx5XG4gICAqIGxlZnQgb3V0LiBXaGF0ZXZlciB0aGUgcmVjb3JkZXIncyBgdG9TbmFwc2hvdCgpYCBwdXQgaGVyZSwgY29waWVkXG4gICAqIHRocm91Z2ggdW5jaGFuZ2VkLlxuICAgKlxuICAgKiBUaGUgc3BsaXQgd2l0aCBgZGVzY3JpcHRpb25gOiBgZGVzY3JpcHRpb25gIGlzIHRoZSBzZW50ZW5jZSBhIGh1bWFuXG4gICAqIHJlYWRzOyBgbWV0YWAgaXMgd2hhdCBhbiBvZmZsaW5lIGNvbnN1bWVyIEJSQU5DSEVTIG9uLiBBIHJlY29yZGVyIHdpdGhcbiAgICogYSBcImZ1bGxcIiBhbmQgYSBcImxlYW5cIiBidW5kbGUgc2hhcGUgdGhhdCBzYXlzIHNvIG9ubHkgaW4gaXRzXG4gICAqIGRlc2NyaXB0aW9uIGZvcmNlcyBldmVyeSByZWFkZXIgdG8gc3RyaW5nLW1hdGNoIHByb3NlIOKAlCBhbmQgYSByZWFkZXJcbiAgICogdGhhdCBkb2Vzbid0IHJlbmRlcnMgYW4gZW1wdHkgcGFuZWwgaW5zdGVhZCBvZiBzYXlpbmcgXCJ0aGlzIHJlY29yZGluZ1xuICAgKiBjYXJyaWVzIHN0cnVjdHVyZSBvbmx5XCIuXG4gICAqXG4gICAqIE5vdCBpbnRlcnByZXRlZCBieSB0aGUgZW5naW5lLCBzbyBrZXlzIGFyZSB0aGUgcmVjb3JkZXIncyB0byBjaG9vc2U7XG4gICAqIGtlZXAgdGhlIHZhbHVlcyBKU09OLXNhZmUsIHNpbmNlIHRoaXMgcmlkZXMgdGhlIHNuYXBzaG90IG91dCB0byBkaXNrLlxuICAgKi9cbiAgbWV0YT86IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+Pjtcbn1cblxuZXhwb3J0IHR5cGUgUnVudGltZVNuYXBzaG90ID0ge1xuICAvKipcbiAgICogVGhlIHJ1biB0aGlzIHNuYXBzaG90IGJlbG9uZ3MgdG8g4oCUIHRoZSBzYW1lIGBydW5JZGAgc3RhbXBlZCBvbiBldmVyeVxuICAgKiBgVHJhdmVyc2FsQ29udGV4dGAgKGFuZCB0aHVzIGV2ZXJ5IHJlY29yZGVyIGV2ZW50KSBvZiB0aGUgcnVuLCBzbyBhXG4gICAqIHNuYXBzaG90IGNhbiBiZSBqb2luZWQgYWdhaW5zdCBhbiBldmVudCBzdHJlYW0gb3IgYW4gZXh0ZXJuYWxcbiAgICogY29ycmVsYXRpb24gdGFibGUuIFJlYWQtb25seSBieSBjb250cmFjdDogZ2VuZXJhdGVkIGJ5IHRoZSBleGVjdXRvclxuICAgKiAoYHJ1bm5lci9ydW5JZC50c2ApLCBuZXZlciBkZXJpdmVkIGZyb20gc25hcHNob3QgY29udGVudHMuXG4gICAqXG4gICAqIExpZmVjeWNsZSAobWF0Y2hlcyB0aGUgZXZlbnQgbW9kZWwpOiBmcmVzaCBwZXIgYHJ1bigpYCBBTkQgcGVyXG4gICAqIGByZXN1bWUoKWAg4oCUIHJlc3VtZSBpcyBsb2dpY2FsbHkgYSBkaXN0aW5jdCBydW4sIHNvIGEgcG9zdC1yZXN1bWVcbiAgICogc25hcHNob3QgY2FycmllcyBhIERJRkZFUkVOVCBydW5JZCB0aGFuIHRoZSBwYXVzZWQgcnVuJ3Mgc25hcHNob3QuXG4gICAqL1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICBzaGFyZWRTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGV4ZWN1dGlvblRyZWU6IFN0YWdlU25hcHNob3Q7XG4gIC8qKlxuICAgKiBUaGUgY29tbWl0IGxvZydzIGZvbGQgQkFTRSDigJQgdGhlIHJ1bidzIHN0YXRlIGJlZm9yZSBpdHMgZmlyc3QgY29tbWl0XG4gICAqIChgaW5pdGlhbENvbnRleHRgIG1lcmdlZCB3aXRoIGBkZWZhdWx0VmFsdWVzRm9yQ29udGV4dGA7IG9uIGEgcmVzdW1lLCB0aGVcbiAgICogY2hlY2twb2ludCdzIHN0YXRlKS4gRGVlcGx5IGZyb3plbiBhbmQgZnVsbHkgZGV0YWNoZWQgZnJvbSB0aGUgZW5naW5lLlxuICAgKlxuICAgKiBDb21taXQgYnVuZGxlcyBhcmUgRElGRlMsIHNvIHRoZSBsb2cgYWxvbmUgY2Fubm90IHJlYnVpbGQgYSB2YWx1ZSB0aGF0XG4gICAqIHdhcyBzZWVkZWQgYmVmb3JlIHRoZSBydW4gYW5kIG9ubHkgZXZlciBtZXJnZWQgYWZ0ZXJ3YXJkcy4gU2hpcHBpbmcgdGhlXG4gICAqIGJhc2UgV0lUSCB0aGUgbG9nIGlzIHdoYXQgbWFrZXMgYW4gb2ZmbGluZSBmb2xkIOKAlCBgc3RhdGVBdChzbmFwc2hvdCwgaSlgXG4gICAqIGZyb20gYGZvb3RwcmludGpzL3RyYWNlYCDigJQgcmVwcm9kdWNlIHRoZSBzdGF0ZSBhIHN0YWdlIGFjdHVhbGx5IHNhdy5cbiAgICpcbiAgICogT1BUSU9OQUwgQlkgVFlQRSwgYW5kIGFic2VudCBpbiBleGFjdGx5IHR3byBjYXNlcy4gQSBwbGFpbiBgZ2V0U25hcHNob3QoKWBcbiAgICogYWx3YXlzIGNhcnJpZXMgaXQsIHNvIGEgbGl2ZSBmb2xkIHJlcG9ydHMgYGJhc2lzOiAnaW5pdGlhbCtsb2cnYC4gVW5kZXJcbiAgICogYGdldFNuYXBzaG90KHsgcmVkYWN0OiB0cnVlIH0pYCBpdCBpcyBPTUlUVEVEIOKAlCB0aGUgYmFzZSBpcyB0aGUgcmF3IHByZS1ydW5cbiAgICogc2VlZCBhbmQgdGhlIHJlZGFjdGlvbiBwb2xpY3kgaXMgbm90IHBsdW1iZWQgaW50byB0aGUgZm9sZCDigJQgc28gYSBmb2xkIG9mXG4gICAqIGEgcmVkYWN0ZWQgc25hcHNob3QgZGVncmFkZXMgaG9uZXN0bHkgdG8gYGJhc2lzOiAnbG9nLW9ubHknYC4gQW5kIGl0IGlzXG4gICAqIGRlY2xhcmVkIG9wdGlvbmFsIHNvIHRoYXQgY29kZSB3cml0dGVuIGFnYWluc3QgOS4xNi54IOKAlCBhIHRlc3QgZml4dHVyZSBvclxuICAgKiBhIFVJIG1vY2sgdGhhdCBDT05TVFJVQ1RTIGEgYFJ1bnRpbWVTbmFwc2hvdGAgbGl0ZXJhbCDigJQgc3RpbGwgY29tcGlsZXMuXG4gICAqIGBzdGF0ZUF0YCBoYW5kbGVzIGFic2VuY2UgYnkgc2F5aW5nIHNvLCBuZXZlciBieSBmb2xkaW5nIGEgbGllLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5pdGlhbFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKlxuICAgKiBUaGUgcnVuJ3MgY29tbWl0IGJ1bmRsZXMsIG9uZSBwZXIgZXhlY3V0ZWQgc3RhZ2UsIGluIGV4ZWN1dGlvbiBvcmRlciDigJRcbiAgICogYSBERVRBQ0hFRCwgZnJvemVuIGNvcHkgb2YgdGhlIGVuZ2luZSdzIGxpdmUgbG9nIChhIHNuYXBzaG90IGlzIGEgZm9sZFxuICAgKiByZXN1bHQ6IGl0IG11c3Qgbm90IGtlZXAgY2hhbmdpbmcgdW5kZXIgdGhlIGNvbnN1bWVyIHRoYXQgaG9sZHMgaXQpLlxuICAgKiBUaGUgYnVuZGxlcyBpbnNpZGUgYXJlIHRoZSBlbmdpbmUncyBvd24gb2JqZWN0cywgaW1tdXRhYmxlIGFmdGVyIHJlY29yZC5cbiAgICovXG4gIGNvbW1pdExvZzogQ29tbWl0QnVuZGxlW107XG4gIC8qKiBJZGVudGl0eSBvZiB0aGlzIGxvZywgc3RhYmxlIGFjcm9zcyBzYW1lLWV4ZWN1dG9yIHJlc3VtZS4gQWJzZW50IGJlZm9yZSBiaW5kaW5nIG9yIGluIG9sZGVyIHNvdXJjZXMuICovXG4gIHJlYWRvbmx5IGxvZ0FkZHJlc3M/OiBMb2dBZGRyZXNzO1xuICAvKipcbiAgICogRW5jb2RpbmcgZGlzY3JpbWluYW50IGZvciBgY29tbWl0TG9nYCAoIzEzYy1CKTogYCdmdWxsJ2Ag4oCUIGV2ZXJ5IGBzZXRgXG4gICAqIGJ1bmRsZSBzdG9yZXMgdGhlIGZ1bGwgZmluYWwgdmFsdWUgKGhpc3RvcmljYWwpOyBgJ2RlbHRhJ2Ag4oCUIGJ1bmRsZXMgbWF5XG4gICAqIGNhcnJ5IGBhcHBlbmRgL2BkZWxldGVgIHRyYWNlIHZlcmJzIHdpdGggdmVyYi1xdWFsaWZpZWQgYG92ZXJ3cml0ZWBcbiAgICogcGF5bG9hZHMgKHRhaWxzKS4gT2ZmbGluZSB0b29saW5nIGtleXMgb24gdGhpcyBmaWVsZDsgYSBidW5kbGUgc3RyZWFtXG4gICAqIHdpdGhvdXQgY29udGV4dCByZW1haW5zIHNlbGYtZGVzY3JpYmluZyB2aWEgdGhlIHZlcmJzIHRoZW1zZWx2ZXMuXG4gICAqL1xuICBjb21taXRWYWx1ZXM6IENvbW1pdFZhbHVlc01vZGU7XG4gIC8qKiBQZXItd3JpdGUgcmVhZC1wcm92ZW5hbmNlIGRpYWwgKCNQMSkgdGhlIHJ1biBleGVjdXRlZCB1bmRlciDigJQgdGhlXG4gICAqICBvZmZsaW5lLXRvb2xpbmcgZGlzY3JpbWluYW50IGZvciBgVHJhY2VFbnRyeS5yZWFkS2V5c2AgYXZhaWxhYmlsaXR5LiAqL1xuICB3cml0ZVByb3ZlbmFuY2U6IFdyaXRlUHJvdmVuYW5jZU1vZGU7XG4gIC8qKlxuICAgKiBQZXItc3ViZmxvdyBleGVjdXRpb24gcmVzdWx0cywgRFVBTC1LRVlFRCAoZGVzaWduOiBkb2NzL2Rlc2lnbi9zdWJmbG93LWNvbW1pdC12aXNpYmlsaXR5Lm1kKTpcbiAgICogICAtIGJ5IHN1YmZsb3cgUEFUSCAoYHN1YmZsb3dJZGAsIGUuZy4gYCdzZi1wYXknYCkg4oaSIHRoZSBMQVNUIGl0ZXJhdGlvbiAoYmFjay1jb21wYXQpOyB0aGlzXG4gICAqICAgICBpcyB3aGF0IGBnZXRTdWJ0cmVlU25hcHNob3QocGF0aClgIGFuZCBgbGlzdFN1YmZsb3dQYXRocygpYCByZXNvbHZlLlxuICAgKiAgIC0gYnkgcGVyLWV4ZWN1dGlvbiBtb3VudCBgcnVudGltZVN0YWdlSWRgIChlLmcuIGAnc2YtcGF5IzUnYCkg4oaSIFRIQVQgaXRlcmF0aW9uJ3MgcmVzdWx0LCBzb1xuICAgKiAgICAgYSBMT09QSU5HIHN1YmZsb3cgcmV0YWlucyBFVkVSWSBpdGVyYXRpb24gKG5vdCBqdXN0IHRoZSBsYXN0KS4gTG9vayB1cCBhIHNwZWNpZmljXG4gICAqICAgICBpdGVyYXRpb24gYXMgYHN1YmZsb3dSZXN1bHRzW25vZGUucnVudGltZVN0YWdlSWRdID8/IHN1YmZsb3dSZXN1bHRzW25vZGUuc3ViZmxvd0lkXWAuXG4gICAqIEJvdGgga2V5cyBwb2ludCBhdCB0aGUgc2FtZSBvYmplY3QgZm9yIGEgc2luZ2xlIG1vdW50OyBpdGVyYXRlIHdpdGggY2FyZSAoY291bnQgdmlhIHRoZVxuICAgKiBwYXRoIGtleXMg4oCUIHRob3NlIHdpdGhvdXQgYCcjJ2ApLiBUaGUgcGF1c2UgY2hlY2twb2ludCBjYXJyaWVzIG9ubHkgdGhlIHBhdGgga2V5cywgbGVhbi5cbiAgICpcbiAgICogVW5kZXIgYGdldFNuYXBzaG90KHsgcmVkYWN0OiB0cnVlIH0pYCBlYWNoIGVudHJ5J3MgYHRyZWVDb250ZXh0Lmdsb2JhbENvbnRleHRgIGlzIHRoYXRcbiAgICogc3ViZmxvdydzIE9XTiByZWRhY3RlZCBtaXJyb3IgKDkuMjAuMCkg4oCUIHRoZSBmb2xkIG9mIGl0cyBzY3J1YmJlZCBgaGlzdG9yeWAg4oCUIHNlcnZlZCBhc1xuICAgKiBvbmUgc3Vic3RpdHV0ZWQgb2JqZWN0IHBlciBtb3VudCAoYm90aCBrZXlzIHN0aWxsIGFncmVlKSDigJQgdGhlIHdyYXBwZXIgaXMgZnJlc2ggcGVyXG4gICAqIGBnZXRTbmFwc2hvdGAgY2FsbCwgdGhlIGBnbG9iYWxDb250ZXh0YCBpbnNpZGUgaXQgaXMgdGhlIHN0YWJsZSBtaXJyb3I7IHBsYWluLCBpdCBpcyB0aGUgc3ViZmxvdydzXG4gICAqIGxpdmUgaGVhcC4gV2l0aG91dCBhIHBvbGljeSB0aGVyZSBpcyBubyBtaXJyb3IgYW5kIHRoZSB0d28gdmlld3MgYXJlIHRoZSBzYW1lIG9iamVjdHMuXG4gICAqL1xuICBzdWJmbG93UmVzdWx0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogU25hcHNob3QgZGF0YSBmcm9tIHJlY29yZGVycyB0aGF0IGltcGxlbWVudCB0b1NuYXBzaG90KCkuICovXG4gIHJlY29yZGVycz86IFJlY29yZGVyU25hcHNob3RbXTtcbiAgLyoqXG4gICAqIERlZmVycmVkLW9ic2VydmVyIGFjY291bnRpbmcgKFJGQy0wMDEgQmxvY2sgOSkg4oCUIHF1ZXVlIGRlcHRoLCBkcm9wcyxcbiAgICogZmx1c2gvYnVkZ2V0IGNvdW50ZXJzLCBwZXItbGlzdGVuZXIgdGltZSBhdHRyaWJ1dGlvbiwgYW5kIHRoZVxuICAgKiB0ZXJtaW5hbC1mbHVzaCBzdHJhbmRpbmcgY291bnQuIEFCU0VOVCB1bmxlc3MgYSByZWNvcmRlciB3YXMgYXR0YWNoZWRcbiAgICogd2l0aCBgeyBkZWxpdmVyeTogJ2RlZmVycmVkJyB9YCBvbiB0aGlzIGV4ZWN1dG9yICh6ZXJvLWNvc3QgZGlzY2lwbGluZSkuXG4gICAqL1xuICBvYnNlcnZlclN0YXRzPzogT2JzZXJ2ZXJTdGF0cztcbn07XG5cbmV4cG9ydCBjbGFzcyBFeGVjdXRpb25SdW50aW1lIHtcbiAgcHVibGljIGdsb2JhbFN0b3JlOiBTaGFyZWRNZW1vcnk7XG4gIC8qKlxuICAgKiBQYXJhbGxlbCByZWRhY3RlZCBtaXJyb3Igb2YgYGdsb2JhbFN0b3JlYC4gUG9wdWxhdGVkIGJ5IGV2ZXJ5IGNvbW1pdCB0aGF0XG4gICAqIHN0YWdlZCBhIHdyaXRlIChgbWVtb3J5L3JlY29yZENvbW1pdC50cyDCtyByZWNvcmRDb21taXRgKSwgd2l0aCB0aGUgYWxyZWFkeS1jb21wdXRlZCByZWRhY3RlZCBwYXRjaGVzLlxuICAgKiBPbmx5IGV4aXN0cyB3aGVuIHRoZSBydW4ncyBwb2xpY3kga2VlcHMgYSBtaXJyb3IgKGBSdW5Qb2xpY3kubWlycm9yYCDigJRcbiAgICogYEZsb3dDaGFydEV4ZWN1dG9yYCBzZXRzIGl0IHdoZW4gYSBgUmVkYWN0aW9uUG9saWN5YCBpcyBjb25maWd1cmVkKS5cbiAgICogT3RoZXJ3aXNlIHVuZGVmaW5lZCBhbmQgemVybyBjb3N0LlxuICAgKlxuICAgKiBSZWFkIHZpYSBgZ2V0U25hcHNob3QoeyByZWRhY3Q6IHRydWUgfSlgLlxuICAgKi9cbiAgcHVibGljIHJlZGFjdGVkU3RvcmU/OiBTaGFyZWRNZW1vcnk7XG4gIHB1YmxpYyByb290U3RhZ2VDb250ZXh0OiBTdGFnZUNvbnRleHQ7XG4gIHB1YmxpYyBleGVjdXRpb25IaXN0b3J5OiBFdmVudExvZztcbiAgLyoqIE9yaWdpbmFsIHJvb3QgZm9yIGdldFNuYXBzaG90KCkg4oCUIHNldCBiZWZvcmUgcmVzdW1lIGNoYW5nZXMgcm9vdFN0YWdlQ29udGV4dC4gKi9cbiAgcHJpdmF0ZSBfc25hcHNob3RSb290PzogU3RhZ2VDb250ZXh0O1xuICBwcml2YXRlIF9pbml0aWFsU3RhdGU6IHVua25vd247XG4gIHByaXZhdGUgX2RlZmF1bHRWYWx1ZXM6IHVua25vd247XG4gIC8qKiBUaGUgcnVuJ3MgcG9saWN5IChgbWVtb3J5L3J1blBvbGljeS50c2ApIOKAlCBpbnN0YWxsZWQgb24gdGhlIHJvb3QgZnJhbWU7XG4gICAqICBpdHMgYGNvbW1pdFZhbHVlc2AgYW5kIGB3cml0ZVByb3ZlbmFuY2VgIGFyZSB0aGUgc25hcHNob3QgZGlzY3JpbWluYW50cy4gKi9cbiAgcHJpdmF0ZSBwb2xpY3k6IFJ1blBvbGljeTtcblxuICAvKiogTWVtb2l6ZWQgZnJvemVuIGZvbGQgYmFzZSDigJQgc2VlIHtAbGluayBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlfS4gKi9cbiAgcHJpdmF0ZSBfZm9sZEJhc2U/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKipcbiAgICogQHBhcmFtIHBvbGljeSBUaGUgcnVuJ3MgcG9saWN5IChgcnVuUG9saWN5LnRzYCwgRjUpIOKAlCB0aGUgZm91ciBkaWFscywgdGhlXG4gICAqICAgcmVkYWN0aW9uIHJ1bGUsIHRoZSBtaXJyb3IgZmxhZy4gSW5zdGFsbGVkIG9uIHRoZSByb290IGZyYW1lIGhlcmUsIHNvXG4gICAqICAgdGhlIEZJUlNUIGNvbW1pdCAoYSBzdWJmbG93J3Mgc2VlZCwgYGhpc3RvcnlbMF1gKSBhbHJlYWR5IHJ1bnMgdW5kZXIgaXQ7XG4gICAqICAgZXZlcnkgZnJhbWUgYWZ0ZXIgaW5oZXJpdHMgdGhlIHNhbWUgcmVmZXJlbmNlLiBEZWZhdWx0OiBldmVyeSBkaWFsIGF0XG4gICAqICAgaXRzIGRlZmF1bHQsIG5vIHJ1bGUsIG5vIG1pcnJvci5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvb3ROYW1lOiBzdHJpbmcsXG4gICAgcm9vdElkOiBzdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlcz86IHVua25vd24sXG4gICAgaW5pdGlhbFN0YXRlPzogdW5rbm93bixcbiAgICBwb2xpY3k6IFJ1blBvbGljeSA9IERFRkFVTFRfUlVOX1BPTElDWSxcbiAgKSB7XG4gICAgdGhpcy5faW5pdGlhbFN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAgIHRoaXMuX2RlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0VmFsdWVzO1xuICAgIHRoaXMuZ2xvYmFsU3RvcmUgPSBuZXcgU2hhcmVkTWVtb3J5KGRlZmF1bHRWYWx1ZXMsIGluaXRpYWxTdGF0ZSk7XG4gICAgLy8gVGhlIGV2ZW50IGxvZydzIGZvbGQgYmFzZSBtdXN0IGJlIHRoZSBTQU1FIHN0YXRlIHRoZSBzdG9yZSBzdGFydHMgZnJvbVxuICAgIC8vIOKAlCBgaW5pdGlhbENvbnRleHRgIG1lcmdlZCB3aXRoIGBkZWZhdWx0VmFsdWVzRm9yQ29udGV4dGAsIHdoaWNoIGlzIHdoYXRcbiAgICAvLyBgU2hhcmVkTWVtb3J5YCBjb21wdXRlZCBhYm92ZS4gU2VlZGluZyB0aGUgbG9nIGZyb20gYGluaXRpYWxTdGF0ZWAgYWxvbmVcbiAgICAvLyBsZWZ0IGBkZWZhdWx0VmFsdWVzYCBvdXQgb2YgZXZlcnkgcmVwbGF5LCBzbyBhIGZvbGQgY291bGQgbm90IHJlcHJvZHVjZVxuICAgIC8vIHRoZSBzdGF0ZSBhIHN0YWdlIGFjdHVhbGx5IHNhdy4gYGdldFN0YXRlKClgIGlzIHRoZSBsaXZlIGNvbnRleHQ7IHRoZVxuICAgIC8vIEV2ZW50TG9nIGNvbnN0cnVjdG9yIGNsb25lcyBpdCwgc28gdGhlIGJhc2Ugc3RheXMgZGV0YWNoZWQuXG4gICAgdGhpcy5leGVjdXRpb25IaXN0b3J5ID0gbmV3IEV2ZW50TG9nKHRoaXMuZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgdGhpcy5wb2xpY3kgPSBwb2xpY3k7XG4gICAgdGhpcy5yb290U3RhZ2VDb250ZXh0ID0gdGhpcy5uZXdSb290KHJvb3ROYW1lLCByb290SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZnJlc2ggcm9vdCBmcmFtZSBmb3IgdGhpcyBydW50aW1lIOKAlCBgZ2xvYmFsU3RvcmVgLCBgZXhlY3V0aW9uSGlzdG9yeWAsXG4gICAqIHRoZSBydW4ncyBwb2xpY3kgYW5kICh3aGVuIGtlcHQpIHRoZSBtaXJyb3IuIEFsc28gaG93IGBTdWJmbG93RXhlY3V0b3JgXG4gICAqIHJlcGxhY2VzIGEgc3ViZmxvdydzIHNlZWQgZnJhbWUgd2l0aCB0aGUgZnJhbWUgaXRzIGZpcnN0IHN0YWdlIHJ1bnMgb24uXG4gICAqL1xuICBuZXdSb290KG5hbWU6IHN0cmluZywgaWQ6IHN0cmluZyk6IFN0YWdlQ29udGV4dCB7XG4gICAgY29uc3Qgcm9vdCA9IG5ldyBTdGFnZUNvbnRleHQoJycsIG5hbWUsIGlkLCB0aGlzLmdsb2JhbFN0b3JlLCAnJywgdGhpcy5leGVjdXRpb25IaXN0b3J5KTtcbiAgICB0aGlzLmluc3RhbGxQb2xpY3kocm9vdCk7XG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICAvKipcbiAgICogSW5zdGFsbCB0aGUgcnVuJ3MgcG9saWN5IG9uIHRoZSBDVVJSRU5UIHJvb3QgZnJhbWUg4oCUIGEgc2FtZS1leGVjdXRvclxuICAgKiByZXN1bWUsIHdob3NlIGNvbnRpbnVhdGlvbiByb290IChgbGVhZi5jcmVhdGVOZXh0YCkgaXMgYWR2YW5jZWQgYmVmb3JlXG4gICAqIHRoZSBleGVjdXRvciBidWlsZHMgdGhpcyBsZWcncyBwb2xpY3kgKGEgZnJlc2ggcnVsZSBwZXIgbGVnKS4gRXZlcnlcbiAgICogZGVzY2VuZGFudCB0YWtlcyB0aGUgcmVmZXJlbmNlIGZyb20gdGhlcmUuXG4gICAqL1xuICB1c2VQb2xpY3kocG9saWN5OiBSdW5Qb2xpY3kpOiB2b2lkIHtcbiAgICB0aGlzLnBvbGljeSA9IHBvbGljeTtcbiAgICB0aGlzLmluc3RhbGxQb2xpY3kodGhpcy5yb290U3RhZ2VDb250ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcG9saWN5IG9uIGByb290YCwgYW5kIHRoZSBtaXJyb3Igc3RvcmUgd2hlbiB0aGUgcG9saWN5IGtlZXBzIG9uZS5cbiAgICogVGhlIG1pcnJvciBpcyBhIFNFUlZFRCBzdXJmYWNlLCBzbyBpdHMgc2VlZCBtdXN0IGFscmVhZHkgYmUgdGhlIHBvbGljeSdzXG4gICAqIHZpZXcgb2YgdGhlIHN0YXJ0aW5nIHN0YXRlOiBhIHBvbGljeSBrZXkgdGhhdCBhcnJpdmVzIGJ5IGBpbml0aWFsQ29udGV4dGBcbiAgICogLyBgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHRgIChvciwgb24gYSBjcm9zcy1leGVjdXRvciByZXN1bWUsIGJ5IHRoZVxuICAgKiBjaGVja3BvaW50J3MgYHNoYXJlZFN0YXRlYCkgYW5kIGlzIG5ldmVyIHJlLXdyaXR0ZW4gd291bGQgb3RoZXJ3aXNlIHNpdFxuICAgKiBpbiBgZ2V0U25hcHNob3QoeyByZWRhY3Q6IHRydWUgfSlgIGluIHBsYWludGV4dCDigJQgc28gdGhlIHNlZWQgaXMgc2NydWJiZWRcbiAgICogd2l0aCB0aGUgTE9HJ3MgcGxhY2Vob2xkZXIsIHRoZSBzYW1lIHN0cmluZyB0aGUgcmVkYWN0ZWQgcGF0Y2hlcyBjYXJyeS5cbiAgICogQ3JlYXRlZCBvbmNlIHBlciBydW50aW1lIChhIHN1YmZsb3cncyBydW50aW1lIGtlZXBzIGl0cyBvd247IGl0cyBzZWVkIGlzXG4gICAqIGVtcHR5IOKAlCB0aGUgaW5wdXQgYXJyaXZlcyBhcyBhIGNvbW1pdCkuXG4gICAqL1xuICBwcml2YXRlIGluc3RhbGxQb2xpY3kocm9vdDogU3RhZ2VDb250ZXh0KTogdm9pZCB7XG4gICAgcm9vdC51c2VQb2xpY3kodGhpcy5wb2xpY3kpO1xuICAgIGlmICghdGhpcy5wb2xpY3kubWlycm9yKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLnJlZGFjdGVkU3RvcmUpIHtcbiAgICAgIGNvbnN0IHJ1bGUgPSB0aGlzLnBvbGljeS5yZWRhY3Rpb247XG4gICAgICB0aGlzLnJlZGFjdGVkU3RvcmUgPSBuZXcgU2hhcmVkTWVtb3J5KFxuICAgICAgICBydWxlID8gcnVsZS5yZXRhaW5TdGF0ZSh0aGlzLl9kZWZhdWx0VmFsdWVzLCBMT0dfUExBQ0VIT0xERVIpIDogdGhpcy5fZGVmYXVsdFZhbHVlcyxcbiAgICAgICAgcnVsZSA/IHJ1bGUucmV0YWluU3RhdGUodGhpcy5faW5pdGlhbFN0YXRlLCBMT0dfUExBQ0VIT0xERVIpIDogdGhpcy5faW5pdGlhbFN0YXRlLFxuICAgICAgKTtcbiAgICB9XG4gICAgcm9vdC51c2VSZWRhY3RlZE1pcnJvcih0aGlzLnJlZGFjdGVkU3RvcmUpO1xuICB9XG5cbiAgLyoqIFByZXNlcnZlIHRoZSBjdXJyZW50IHJvb3RTdGFnZUNvbnRleHQgZm9yIHNuYXBzaG90cyBiZWZvcmUgY2hhbmdpbmcgaXQgZm9yIHJlc3VtZS4gKi9cbiAgcHJlc2VydmVTbmFwc2hvdFJvb3QoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9zbmFwc2hvdFJvb3QpIHtcbiAgICAgIHRoaXMuX3NuYXBzaG90Um9vdCA9IHRoaXMucm9vdFN0YWdlQ29udGV4dDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZyb3plbiwgZGV0YWNoZWQgZm9sZCBiYXNlIHNlcnZlZCBhcyB7QGxpbmsgUnVudGltZVNuYXBzaG90LmluaXRpYWxTdGF0ZX0uXG4gICAqIENvbXB1dGVkIG9uY2UgKHRoZSBiYXNlIG5ldmVyIGNoYW5nZXMgYWZ0ZXIgY29uc3RydWN0aW9uKSBhbmQgc2hhcmVkIOKAlFxuICAgKiBzYWZlIGJlY2F1c2UgaXQgaXMgZGVlcGx5IGZyb3plbiwgc28gbm8gaG9sZGVyIGNhbiBtdXRhdGUgaXQgb3IgcmVhY2ggdGhlXG4gICAqIGVuZ2luZSB0aHJvdWdoIGl0OyBhIGJhc2UgaG9sZGluZyBhIERhdGUsIE1hcCwgYnVmZmVyIOKApiAod2hhdCBmcmVlemluZ1xuICAgKiBjYW5ub3Qgc2VhbCkgaXMgc2VydmVkIGJ5IHRoZSBwdWJsaWMgc25hcHNob3QgYXMgYSBjb3B5IG9mIGl0cyBvcGVuIHBhdGhzXG4gICAqIChgcnVubmVyL3NuYXBzaG90LnRzIMK3IHNlcnZlZFNuYXBzaG90YCwgYGNhcHR1cmUvZnJlZXplLnRzIMK3IHNlcnZlUmVjb3JkYCxcbiAgICogOS40NC4yKS5cbiAgICovXG4gIHByaXZhdGUgZ2V0Rm9sZEJhc2UoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGlmICghdGhpcy5fZm9sZEJhc2UpIHtcbiAgICAgIGNvbnN0IGJhc2UgPSB0aGlzLmV4ZWN1dGlvbkhpc3RvcnkuZ2V0SW5pdGlhbFN0YXRlKCk7XG4gICAgICB0aGlzLl9mb2xkQmFzZSA9IGZyZWV6ZVJlY29yZChiYXNlICYmIHR5cGVvZiBiYXNlID09PSAnb2JqZWN0JyA/IGJhc2UgOiB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mb2xkQmFzZTtcbiAgfVxuXG4gIGdldFBpcGVsaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdsb2JhbFN0b3JlLmdldFN0YXRlKCk7XG4gICAgcmV0dXJuIHN0YXRlLnBpcGVsaW5lcyA/IE9iamVjdC5rZXlzKHN0YXRlLnBpcGVsaW5lcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgOiBbXTtcbiAgfVxuXG4gIHNldFJvb3RPYmplY3QocGF0aDogc3RyaW5nW10sIGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMucm9vdFN0YWdlQ29udGV4dC5zZXRPYmplY3QocGF0aCwga2V5LCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBydW50aW1lIHNuYXBzaG90LlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucy5yZWRhY3QgIFdoZW4gYHRydWVgLCByZXR1cm5zIGBzaGFyZWRTdGF0ZWAgZnJvbSB0aGVcbiAgICogICBwYXJhbGxlbCByZWRhY3RlZCBtaXJyb3IgKGlmIG9uZSB3YXMgZW5hYmxlZCkuIFRoaXMgaXMgdGhlIHNhZmUgdmlld1xuICAgKiAgIGZvciBzaGFyaW5nIHRyYWNlcyBleHRlcm5hbGx5IOKAlCBwYXN0ZSBpbnRvIGEgdmlld2VyLCBzaGlwIHRvIHN1cHBvcnQsXG4gICAqICAgZXRjLiBXaGVuIHRoZSBtaXJyb3Igd2FzIG5ldmVyIGVuYWJsZWQsIGZhbGxzIGJhY2sgdG8gcmF3IGBnbG9iYWxTdG9yZWBcbiAgICogICBhbmQgYSBkZXYtbW9kZSB3YXJuaW5nIGlzIGVtaXR0ZWQgKHNpbGVudCBpbiBwcm9kdWN0aW9uKS5cbiAgICpcbiAgICogICBEZWZhdWx0IGBmYWxzZWAgcHJlc2VydmVzIHRoZSBydW50aW1lIHZpZXcg4oCUIG5lY2Vzc2FyeSBmb3IgcGF1c2UgL1xuICAgKiAgIHJlc3VtZSAocmVzdW1wdGlvbiBtdXN0IHJlcGxheSBhZ2FpbnN0IHRoZSByZWFsIHZhbHVlcywgbm90XG4gICAqICAgJ1tSRURBQ1RFRF0nKS5cbiAgICpcbiAgICogT3RoZXIgZmllbGRzIChgZXhlY3V0aW9uVHJlZWAsIGBjb21taXRMb2dgKSBhcmUgdGhlIHNhbWUgZWl0aGVyIHdheSDigJRcbiAgICogdGhlIGNvbW1pdCBsb2cgaXMgYWxyZWFkeSByZWRhY3RlZCBhdCB3cml0ZS10aW1lLCBhbmQgdGhlIGV4ZWN1dGlvblxuICAgKiB0cmVlIG9ubHkgY2FycmllcyBzdHJ1Y3R1cmFsIG1ldGFkYXRhLlxuICAgKlxuICAgKiBgaW5pdGlhbFN0YXRlYCAodGhlIGZvbGQgYmFzZSkgaXMgT01JVFRFRCB1bmRlciBgcmVkYWN0OiB0cnVlYC4gSXQgaXMgdGhlXG4gICAqIHJ1bidzIHJhdyBwcmUtcnVuIHNlZWQg4oCUIGBpbml0aWFsQ29udGV4dGAgbWVyZ2VkIHdpdGhcbiAgICogYGRlZmF1bHRWYWx1ZXNGb3JDb250ZXh0YCDigJQgYW5kIGl0IG5ldmVyIHBhc3NlZCB0aHJvdWdoIGEgcmVkYWN0aW9uXG4gICAqIHBvbGljeTogdGhlIHBvbGljeSBzY3J1YnMgV1JJVEVTIGF0IHRoZSBzY29wZSBmYWNhZGUsIGFuZCB0aGUgYmFzZSB3YXNcbiAgICogbmV2ZXIgd3JpdHRlbiBieSBhIHN0YWdlLiBTZXJ2aW5nIGl0IG9uIHRoZSByZWRhY3RlZCBzdXJmYWNlIHdvdWxkIGhhbmRcbiAgICogYmFjayB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgYSBzZWVkZWQgc2VjcmV0IHRoYXQgYSBsYXRlciBjb21taXQgaGFkXG4gICAqIHNjcnViYmVkLiBBIGNvbnN1bWVyIGZvbGRpbmcgd2l0aG91dCBpdCBnZXRzIGBiYXNpczogJ2xvZy1vbmx5J2AgZnJvbVxuICAgKiBgc3RhdGVBdGAsIHdoaWNoIGlzIHRoZSBob25lc3Qgc2lnbmFsIHRoYXQgdGhlIGJhc2UgZGlkIG5vdCB0cmF2ZWwgd2l0aFxuICAgKiB0aGlzIGxvZyDigJQgYSBwYXJ0aWFsIGFuc3dlciB0aGF0IHNheXMgaXQgaXMgcGFydGlhbCwgbmV2ZXIgYSBzaWxlbnQgb25lLlxuICAgKlxuICAgKiBSZXR1cm5zIGBPbWl0PFJ1bnRpbWVTbmFwc2hvdCwgJ3J1bklkJz5gOiB0aGUgcnVudGltZSBpcyB0aGUgbWVtb3J5XG4gICAqIGNvbnRhaW5lciBhbmQgZG9lc24ndCBrbm93IHdoaWNoIHJ1biBpdCBzZXJ2ZXMg4oCUIGBydW5JZGAgaXMgcGVyLXJ1blxuICAgKiBleGVjdXRvciBzdGF0ZSwgc3RhbXBlZCBieSBgRmxvd2NoYXJ0VHJhdmVyc2VyLmdldFNuYXBzaG90KClgICh3aGljaFxuICAgKiBvd25zIHRoZSBydW4ncyBpZCBhbmQgYWxyZWFkeSBzdGFtcHMgaXQgb24gZXZlcnkgZXZlbnQpLiBTdWJmbG93cydcbiAgICogbmVzdGVkIHJ1bnRpbWVzIGRlbGliZXJhdGVseSBoYXZlIE5PIHJ1bklkIG9mIHRoZWlyIG93biAoYSBzdWJmbG93IGlzXG4gICAqIHBhcnQgb2YgdGhlIHBhcmVudCdzIGxvZ2ljYWwgcnVuKS5cbiAgICovXG4gIGdldFNuYXBzaG90KG9wdGlvbnM/OiB7IHJlZGFjdD86IGJvb2xlYW4gfSk6IE9taXQ8UnVudGltZVNuYXBzaG90LCAncnVuSWQnPiB7XG4gICAgY29uc3Qgc25hcHNob3RSb290ID0gdGhpcy5fc25hcHNob3RSb290ID8/IHRoaXMucm9vdFN0YWdlQ29udGV4dDtcbiAgICBjb25zdCB1c2VSZWRhY3RlZCA9IG9wdGlvbnM/LnJlZGFjdCA9PT0gdHJ1ZSAmJiB0aGlzLnJlZGFjdGVkU3RvcmUgIT09IHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgc2hhcmVkU3RhdGU6IHVzZVJlZGFjdGVkID8gdGhpcy5yZWRhY3RlZFN0b3JlIS5nZXRTdGF0ZSgpIDogdGhpcy5nbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLFxuICAgICAgZXhlY3V0aW9uVHJlZTogc25hcHNob3RSb290LmdldFNuYXBzaG90KCksXG4gICAgICAvLyBSRURBQ1RJT046IHRoZSBmb2xkIGJhc2UgaXMgdGhlIHJhdyBwcmUtcnVuIHNlZWQgYW5kIG5vIHBvbGljeSBldmVyXG4gICAgICAvLyB0b3VjaGVkIGl0IChwb2xpY2llcyBzY3J1YiB3cml0ZXM7IG5vdGhpbmcgd3JvdGUgdGhlIGJhc2UpLiBPbWl0IGl0XG4gICAgICAvLyByYXRoZXIgdGhhbiBsZWFrIGl0IOKAlCBgc3RhdGVBdGAgZGVncmFkZXMgdG8gYGJhc2lzOiAnbG9nLW9ubHknYC5cbiAgICAgIC4uLih1c2VSZWRhY3RlZCA/IHt9IDogeyBpbml0aWFsU3RhdGU6IHRoaXMuZ2V0Rm9sZEJhc2UoKSB9KSxcbiAgICAgIC8vIERFVEFDSEVEOiB0aGUgZW5naW5lIGtlZXBzIGl0cyBsaXZlIEV2ZW50TG9nOyB0aGUgc25hcHNob3QgZ2V0cyBhXG4gICAgICAvLyBmcm96ZW4gYXJyYXkgb2YgaXRzIG93biAoYHJlY29yZGVkKClgIGJ1aWxkcyBhIG5ldyBvbmUpLiBTZXJ2aW5nIHRoZVxuICAgICAgLy8gaW50ZXJuYWwgYXJyYXkgYWxpYXNlZCBpdCwgc28gYSBzbmFwc2hvdCB0YWtlbiBtaWQtcnVuIGtlcHQgZ3Jvd2luZ1xuICAgICAgLy8gdW5kZXIgaXRzIGhvbGRlciBhbmQgYSBjb25zdW1lciBjb3VsZCBzcGxpY2UgdGhlIGVuZ2luZSdzIG93biBoaXN0b3J5LlxuICAgICAgLy8gVGhlIGJ1bmRsZXMgaW4gaXQgYXJlIHRoZSBsb2cncyBvd24sIGZyb3plbiBhdCBgRXZlbnRMb2cgwrcgcmVjb3JkYFxuICAgICAgLy8gKEYzKS4gVGhlIHB1YmxpYyBzbmFwc2hvdCBzZXJ2ZXMgdGhlbSAoYHJ1bm5lci9zbmFwc2hvdC50cyDCt1xuICAgICAgLy8gc2VydmVkU25hcHNob3RgLCA5LjQ0LjIpOyB0aGlzIG9uZSBpcyBhbHNvIHRoZSBlbmdpbmUncyBvd24g4oCUIGFcbiAgICAgIC8vIHN1YmZsb3cgbW91bnQgdGFrZXMgaXQgb25jZSBwZXIgbW91bnQg4oCUIHNvIHRoZSBydW4gcGF0aCBzZXJ2ZXMgbm90aGluZy5cbiAgICAgIGNvbW1pdExvZzogT2JqZWN0LmZyZWV6ZSh0aGlzLmV4ZWN1dGlvbkhpc3RvcnkucmVjb3JkZWQoKSkgYXMgQ29tbWl0QnVuZGxlW10sXG4gICAgICAuLi4odGhpcy5leGVjdXRpb25IaXN0b3J5LmFkZHJlc3MgPT09IHVuZGVmaW5lZCA/IHt9IDogeyBsb2dBZGRyZXNzOiB0aGlzLmV4ZWN1dGlvbkhpc3RvcnkuYWRkcmVzcyB9KSxcbiAgICAgIGNvbW1pdFZhbHVlczogdGhpcy5wb2xpY3kuY29tbWl0VmFsdWVzLFxuICAgICAgd3JpdGVQcm92ZW5hbmNlOiB0aGlzLnBvbGljeS53cml0ZVByb3ZlbmFuY2UsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* row's `readKeys`, `redactedPaths`, `tags`, `untrackedSources` — so a holder of a snapshot can no
|
|
10
10
|
* longer rewrite the history every later answer is folded from: an assignment into a bundle throws
|
|
11
11
|
* a `TypeError` in strict code. Safe because nothing outside the log holds a bundle's containers:
|
|
12
|
-
* the log's payload is the commit's own copy (`
|
|
12
|
+
* the log's payload is the commit's own copy (`recordCommit` hands it the output of
|
|
13
13
|
* `scrubPatch`), and live state, the redacted mirror and write retention each take their own copy
|
|
14
14
|
* (`verbs.ts · foldRows` detaches, `StageContext · retainedForm` clones) — pinned by
|
|
15
15
|
* test/lib/memory/property/record-reachability.property.test.ts.
|
|
@@ -149,4 +149,4 @@ class EventLog {
|
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
exports.EventLog = EventLog;
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRMb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21lbW9yeS9FdmVudExvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHOzs7QUFFSCxvREFBaUU7QUFHakUseUNBQWlEO0FBRWpELE1BQWEsUUFBUTtJQUNuQiw2REFBNkQ7SUFDckQsSUFBSSxDQUFNO0lBQ2xCLHNDQUFzQztJQUM5QixLQUFLLEdBQW1CLEVBQUUsQ0FBQztJQUMzQixhQUFhLENBQWM7SUFDM0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBRXJDLFlBQVksYUFBa0I7UUFDNUIsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGVBQWU7UUFDYixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBQSw4QkFBbUIsRUFBQyxHQUFHLEVBQUUsT0FBc0IsRUFBRSxTQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxNQUFvQjtRQUN6QixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUEsd0JBQVksRUFBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyx1QkFBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCx3RkFBd0Y7SUFDeEYsV0FBVyxDQUFDLFFBQWdCLEVBQUUsU0FBNEI7UUFDeEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CO1lBQUUsT0FBTztRQUN0QyxJQUFJLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCwrRkFBK0Y7SUFDL0YsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHdFQUF3RTtRQUN4RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBOUhELDRCQThIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXZlbnRMb2cg4oCUIFRpbWUtdHJhdmVsIHNuYXBzaG90IHN0b3JhZ2UgZm9yIGZsb3djaGFydCBleGVjdXRpb25cbiAqXG4gKiBMaWtlIGdpdCBoaXN0b3J5OiBzdG9yZXMgY29tbWl0IGJ1bmRsZXMgKGRpZmZzKSwgbm90IGZ1bGwgc25hcHNob3RzLlxuICpcbiAqIFRIRSBSRUNPUkQgSVMgSU1NVVRBQkxFIEZST00gYHJlY29yZGAgKEYzLCBydWxpbmcgUjMpLiBFdmVyeSBidW5kbGUgaXMgZGVlcC1mcm96ZW4gYXMgaXQgaXNcbiAqIHJlY29yZGVkIOKAlCB0aGUgYnVuZGxlLCBgb3ZlcndyaXRlYCBhbmQgYHVwZGF0ZXNgIGF0IGV2ZXJ5IGRlcHRoLCB0aGUgdHJhY2UgYW5kIGVhY2ggcm93LCB0aGVcbiAqIHJvdydzIGByZWFkS2V5c2AsIGByZWRhY3RlZFBhdGhzYCwgYHRhZ3NgLCBgdW50cmFja2VkU291cmNlc2Ag4oCUIHNvIGEgaG9sZGVyIG9mIGEgc25hcHNob3QgY2FuIG5vXG4gKiBsb25nZXIgcmV3cml0ZSB0aGUgaGlzdG9yeSBldmVyeSBsYXRlciBhbnN3ZXIgaXMgZm9sZGVkIGZyb206IGFuIGFzc2lnbm1lbnQgaW50byBhIGJ1bmRsZSB0aHJvd3NcbiAqIGEgYFR5cGVFcnJvcmAgaW4gc3RyaWN0IGNvZGUuIFNhZmUgYmVjYXVzZSBub3RoaW5nIG91dHNpZGUgdGhlIGxvZyBob2xkcyBhIGJ1bmRsZSdzIGNvbnRhaW5lcnM6XG4gKiB0aGUgbG9nJ3MgcGF5bG9hZCBpcyB0aGUgY29tbWl0J3Mgb3duIGNvcHkgKGBTdGFnZUNvbnRleHQgwrcgY29tbWl0YCBoYW5kcyBpdCB0aGUgb3V0cHV0IG9mXG4gKiBgc2NydWJQYXRjaGApLCBhbmQgbGl2ZSBzdGF0ZSwgdGhlIHJlZGFjdGVkIG1pcnJvciBhbmQgd3JpdGUgcmV0ZW50aW9uIGVhY2ggdGFrZSB0aGVpciBvd24gY29weVxuICogKGB2ZXJicy50cyDCtyBmb2xkUm93c2AgZGV0YWNoZXMsIGBTdGFnZUNvbnRleHQgwrcgcmV0YWluZWRGb3JtYCBjbG9uZXMpIOKAlCBwaW5uZWQgYnlcbiAqIHRlc3QvbGliL21lbW9yeS9wcm9wZXJ0eS9yZWNvcmQtcmVhY2hhYmlsaXR5LnByb3BlcnR5LnRlc3QudHMuXG4gKlxuICogV2hhdCBgT2JqZWN0LmZyZWV6ZWAgY2Fubm90IHNlYWwg4oCUIGEgRGF0ZSdzIHRpbWUsIGEgTWFwJ3Mgb3IgU2V0J3MgZW50cmllcywgYSBidWZmZXIncyBieXRlcywgYVxuICogUmVnRXhwLCBhbiBFcnJvcidzIHN0YWNrIOKAlCBpcyBuZXZlciBoYW5kZWQgb3V0IHRvIGEgcmVhZGVyICg5LjQ0LjIpOiBgcmVjb3JkYCByZW1lbWJlcnMgdGhhdCBhXG4gKiBidW5kbGUgaG9sZHMgc3VjaCBhIHZhbHVlIChgY2FwdHVyZS9mcmVlemUudHMgwrcgZnJlZXplUmVjb3JkYCksIGFuZCBgbGlzdCgpYCDigJQgbGlrZSB0aGUgcHVibGljXG4gKiBzbmFwc2hvdCwgYHJ1bm5lci9zbmFwc2hvdC50cyDCtyBzZXJ2ZWRTbmFwc2hvdGAg4oCUIHNlcnZlcyB0aGF0IGJ1bmRsZSBhcyBhIGNvcHkgb2YgaXRzIG9wZW4gcGF0aHNcbiAqIChgc2VydmVSZWNvcmRgLCBtYXBwZWQgYXQgaXRzIGZpcnN0IHNlcnZlKTogZnJlc2ggZnJvemVuIGNvbnRhaW5lcnMgZG93biB0byBlYWNoIHN1Y2ggdmFsdWUsIGFcbiAqIGZyZXNoIGNvcHkgb2YgaXQsIGV2ZXJ5IG90aGVyIHBhcnQgdGhlIGxvZydzIG93bi4gQSByZWFkZXIgZWRpdHMgb25seSBpdHMgb3duIGNvcHk7IGV2ZXJ5IGxhdGVyXG4gKiBzZXJ2ZSByZWFkcyB0aGUgcmVjb3JkIGFzIHJlY29yZGVkLiBgcmVjb3JkZWQoKWAgaXMgdGhlIGVuZ2luZSdzIG93biwgdW5zZXJ2ZWQgcmVhZC4gTmFtZWQgaG9sZXM6IGFuIG9iamVjdCBodW5nIG9uIGFuIGFycmF5IEVYUEFORE8gKGFycmF5cyBhcmUgd2Fsa2VkXG4gKiBieSBpbmRleCDigJQgdGhlIGAnaW5kaWNlcydgIHdhbGssIHdoaWNoIGtlZXBzIHRoZSBmcmVlemUgaW5zaWRlIGl0cyBidWRnZXQ7IGFuIGV4cGFuZG8gaXMgb3V0IG9mXG4gKiBjb250cmFjdCBmb3Igc3RhdGUpIGFuZCBhIGBTaGFyZWRBcnJheUJ1ZmZlcmAgKGV2ZXJ5IGNvcHkgc2hhcmVzIGl0cyBtZW1vcnkpLiBBIGZyb3plbiBSZWdFeHAnc1xuICogYGxhc3RJbmRleGAgaXMgcmVhZC1vbmx5LCBzbyBhIGAvZ2Agb3IgYC95YCByZWdleCByZWFkIGZyb20gYSBidW5kbGUgdGhyb3dzIHdoZW4gYGV4ZWNgIG9yXG4gKiBgcmVwbGFjZWAgYWR2YW5jZSBpdC5cbiAqL1xuXG5pbXBvcnQgeyBmcmVlemVSZWNvcmQsIHNlcnZlUmVjb3JkIH0gZnJvbSAnLi4vY2FwdHVyZS9mcmVlemUuanMnO1xuaW1wb3J0IHR5cGUgeyBFbWl0U291cmNlUG9zaXRpb24sIExvZ0FkZHJlc3MgfSBmcm9tICcuL2V2ZW50UG9zaXRpb24uanMnO1xuaW1wb3J0IHR5cGUgeyBDb21taXRCdW5kbGUsIE1lbW9yeVBhdGNoIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBhcHBseVNtYXJ0TWVyZ2VJbnRvIH0gZnJvbSAnLi91dGlscy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBFdmVudExvZyB7XG4gIC8qKiBCYXNlIHNuYXBzaG90IEJFRk9SRSB0aGUgZmlyc3Qgc3RhZ2UgbXV0YXRlcyBhbnl0aGluZy4gKi9cbiAgcHJpdmF0ZSBiYXNlOiBhbnk7XG4gIC8qKiBPcmRlcmVkIGxpc3Qgb2YgY29tbWl0IGJ1bmRsZXMuICovXG4gIHByaXZhdGUgc3RlcHM6IENvbW1pdEJ1bmRsZVtdID0gW107XG4gIHByaXZhdGUgc291cmNlQWRkcmVzcz86IExvZ0FkZHJlc3M7XG4gIHByaXZhdGUgc291cmNlQWRkcmVzc1JldGlyZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihpbml0aWFsTWVtb3J5OiBhbnkpIHtcbiAgICAvLyBOb3JtYWxpc2VkIHRvIGFuIG9iamVjdDogdGhlIGJhc2UgaXMgYSBTVEFURSwgYW5kIGV2ZXJ5IGZvbGQgb3ZlciBpdFxuICAgIC8vIChgbWF0ZXJpYWxpc2VgLCBgc3RhdGVBdGApIGFwcGxpZXMgcGF0aCB3cml0ZXMgdG8gaXQuIGB1bmRlZmluZWRgIOKAlFxuICAgIC8vIHdoYXQgYSBydW4gd2l0aCBubyBgaW5pdGlhbENvbnRleHRgIHVzZWQgdG8gc3RvcmUgaGVyZSDigJQgbWFkZSBldmVyeVxuICAgIC8vIG9uZSBvZiB0aG9zZSBmb2xkcyB0aHJvdyBvbiB0aGUgZmlyc3QgYHNldGAuXG4gICAgdGhpcy5iYXNlID0gaW5pdGlhbE1lbW9yeSA9PT0gdW5kZWZpbmVkID8ge30gOiBzdHJ1Y3R1cmVkQ2xvbmUoaW5pdGlhbE1lbW9yeSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZvbGQgQkFTRSDigJQgdGhlIHN0YXRlIGFzIGl0IHN0b29kIGJlZm9yZSB0aGUgZmlyc3QgY29tbWl0LlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBvdGhlciBoYWxmIG9mIHRoZSBjb21taXQgbG9nOiBidW5kbGVzIGFyZSBESUZGUywgc28gYSBsb2dcbiAgICogYWxvbmUgY2Fubm90IHJlY29uc3RydWN0IHN0YXRlIHRoYXQgd2FzIHNlZWRlZCBiZWZvcmUgdGhlIHJ1biAoYW5cbiAgICogZXhlY3V0b3IgYGluaXRpYWxDb250ZXh0YCwgYGRlZmF1bHRWYWx1ZXNGb3JDb250ZXh0YCwgYSByZXN1bWUnc1xuICAgKiBgY2hlY2twb2ludC5zaGFyZWRTdGF0ZWAsIGEgc3ViZmxvdydzIGBpbnB1dE1hcHBlcmAgc2VlZCkuIFRyYXZlbGxpbmdcbiAgICogd2l0aCB0aGUgbG9nIOKAlCBgUnVudGltZVNuYXBzaG90LmluaXRpYWxTdGF0ZWAg4oCUIGlzIHdoYXQgbGV0cyBhbiBPRkZMSU5FXG4gICAqIGNvbnN1bWVyIGZvbGQ7IHdpdGhvdXQgaXQgdGhlIGhvbmVzdCBhbnN3ZXIgaXMgYSBwYXJ0aWFsIG9uZVxuICAgKiAoYHN0YXRlQXRgJ3MgYGJhc2lzOiAnbG9nLW9ubHknYCkuXG4gICAqXG4gICAqIFJldHVybnMgYSBmcmVzaCBkZXRhY2hlZCBjbG9uZSBvbiBldmVyeSBjYWxsIOKAlCB0aGUgY2FsbGVyIG93bnMgaXQuXG4gICAqL1xuICBnZXRJbml0aWFsU3RhdGUoKTogYW55IHtcbiAgICByZXR1cm4gc3RydWN0dXJlZENsb25lKHRoaXMuYmFzZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb25zdHJ1Y3RzIHRoZSBmdWxsIHN0YXRlIGF0IGFueSBnaXZlbiBzdGVwLlxuICAgKiBSZXBsYXlzIGNvbW1pdHMgZnJvbSB0aGUgYmVnaW5uaW5nIOKAlCBPKG4pIGJ1dCBsb3cgbWVtb3J5IGZvb3RwcmludC5cbiAgICpcbiAgICogSU5ERVggQ09OVkVOVElPTiDigJQgYHN0ZXBJZHhgIGlzIEVYQ0xVU0lWRTogYG1hdGVyaWFsaXNlKDMpYCBmb2xkcyBjb21taXRzXG4gICAqIDAsIDEgYW5kIDIuIGBzdGF0ZUF0KHNvdXJjZSwgY29tbWl0SWR4KWAgKGZvb3RwcmludGpzL3RyYWNlKSBmb2xkcyB0aGVcbiAgICogc2FtZSBsb2cgYnV0IGl0cyBgY29tbWl0SWR4YCBpcyBJTkNMVVNJVkUsIGJlY2F1c2UgYSByZWFkZXIncyBjdXJzb3IgYXNrc1xuICAgKiBcInRoZSBzdGF0ZSBBVCB0aGlzIHN0b3BcIiwgd2hpY2ggbXVzdCBpbmNsdWRlIHRoYXQgc3RvcCdzIG93biBjb21taXQuIFR3b1xuICAgKiBmb2xkcyBvdmVyIG9uZSBsb2cgd2l0aCBvcHBvc2l0ZSBjb252ZW50aW9uczogY2hlY2sgd2hpY2ggb25lIHlvdSBob2xkLlxuICAgKlxuICAgKiBPbmUgY2xvbmUgb2YgdGhlIGJhc2UgcGVyIGNhbGwsIHRoZW4gZXZlcnkgYnVuZGxlIHJlcGxheWVkIElOVE8gdGhhdFxuICAgKiBwcml2YXRlIGNvcHkgKGBhcHBseVNtYXJ0TWVyZ2VJbnRvYCDigJQgdGhlIGxpdmUgY29tbWl0J3MgY29weS1vbi13cml0ZSBsYXdcbiAgICogYmVsb3cgdGhlIHJvb3QsIDkuMjkuMCwgc28gdGhlIGZvbGQgYW5kIHRoZSBsaXZlIHN0YXRlIGFncmVlIGF0IGV2ZXJ5XG4gICAqIHBhdGgpLiBUaGUgcmVzdWx0IGlzIHRoZSBjYWxsZXInczogaXQgc2hhcmVzIG5vdGhpbmcgd2l0aCB0aGUgYmFzZSBvclxuICAgKiB0aGUgbG9nLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSA5LjMzLjAg4oCUIHVzZSBgc3RhdGVBdGAgZnJvbSBgZm9vdHByaW50anMvdHJhY2VgLCB3aGljaCBmb2xkcyB0aGUgc2FtZSBsb2dcbiAgICogZnJvbSB0aGUgc2FtZSBiYXNlIChgUnVudGltZVNuYXBzaG90LmluaXRpYWxTdGF0ZWApIGFuZCBzYXlzIGhvdyBpdCB3YXMgZGVyaXZlZCAoYGJhc2lzYCkuXG4gICAqIE5vdGhpbmcgaW4gdGhlIGxpYnJhcnkgY2FsbHMgdGhpczsgaXQgc3RheXMgZm9yIG9uZSBtaW5vciBhbmQgaXMgdGhlbiByZW1vdmVkLiBNaW5kIHRoZVxuICAgKiBpbmRleDogYG1hdGVyaWFsaXNlKG4pYCBmb2xkcyBjb21taXRzIGAwLi5uLTFgLCBgc3RhdGVBdChzb3VyY2UsIG4gLSAxKWAgdGhlIHNhbWUgY29tbWl0cy5cbiAgICovXG4gIG1hdGVyaWFsaXNlKHN0ZXBJZHggPSB0aGlzLnN0ZXBzLmxlbmd0aCk6IGFueSB7XG4gICAgY29uc3Qgb3V0ID0gc3RydWN0dXJlZENsb25lKHRoaXMuYmFzZSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGVwSWR4OyBpKyspIHtcbiAgICAgIGNvbnN0IHsgb3ZlcndyaXRlLCB1cGRhdGVzLCB0cmFjZSB9ID0gdGhpcy5zdGVwc1tpXTtcbiAgICAgIGFwcGx5U21hcnRNZXJnZUludG8ob3V0LCB1cGRhdGVzIGFzIE1lbW9yeVBhdGNoLCBvdmVyd3JpdGUgYXMgTWVtb3J5UGF0Y2gsIHRyYWNlKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJzaXN0cyBhIGNvbW1pdCBidW5kbGUgZm9yIGEgZmluaXNoZWQgc3RhZ2UsIGFuZCBGUkVFWkVTIGl0IChzZWUgdGhlIG1vZHVsZSBkb2MpOiB0aGUgYnVuZGxlXG4gICAqIGlzIHN0YW1wZWQgd2l0aCBpdHMgcG9zaXRpb24sIHRoZW4gZGVlcC1mcm96ZW4sIHRoZW4gYXBwZW5kZWQuIFRoZSBlbmdpbmUgaGFuZHMgaXQgYSBidW5kbGVcbiAgICogYnVpbHQgZm9yIHRoZSBsb2cgYWxvbmU7IGEgY2FsbGVyIG9mIHRoaXMgY2xhc3MgKGBmb290cHJpbnRqcy9hZHZhbmNlZGApIGhhbmRzIG92ZXIgYSBidW5kbGUgaXRcbiAgICogd2lsbCBubyBsb25nZXIgZWRpdCDigJQgaXRzIG93biBvYmplY3QgaXMgdGhlIG9uZSBmcm96ZW4uXG4gICAqL1xuICByZWNvcmQoYnVuZGxlOiBDb21taXRCdW5kbGUpOiB2b2lkIHtcbiAgICBidW5kbGUuaWR4ID0gdGhpcy5zdGVwcy5sZW5ndGg7XG4gICAgZnJlZXplUmVjb3JkKGJ1bmRsZSwgJ2luZGljZXMnKTtcbiAgICB0aGlzLnN0ZXBzLnB1c2goYnVuZGxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVyeSByZWNvcmRlZCBjb21taXQgYnVuZGxlLCBBUyBTRVJWRUQgKDkuNDQuMik6IGEgbmV3IGFycmF5IGVhY2ggY2FsbDsgYSBidW5kbGUgZnJlZXppbmcgc2VhbGVkXG4gICAqIHdob2xlIGlzIHRoZSBsb2cncyBvd24gKGZyb3plbikgb2JqZWN0LCBvbmUgaG9sZGluZyBhIERhdGUsIE1hcCwgYnVmZmVyIOKApiBpcyBhIGNvcHkgb2YgaXRzIG9wZW5cbiAgICogcGF0aHMgKGBjYXB0dXJlL2ZyZWV6ZS50cyDCtyBzZXJ2ZVJlY29yZGApIOKAlCB0aGUgcmVhZGVyJ3Mgb3duLCBzbyBubyBlZGl0IHJlYWNoZXMgdGhlIGxvZy5cbiAgICovXG4gIGxpc3QoKTogQ29tbWl0QnVuZGxlW10ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzLm1hcChzZXJ2ZVJlY29yZCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsIFRoZSBidW5kbGVzIGFzIHRoZSBsb2cgaG9sZHMgdGhlbSDigJQgZWFjaCBmcm96ZW4sIE5PVCBzZXJ2ZWQg4oCUIGluIGEgbmV3IGFycmF5LCBzbyBhIGhvbGRlcidzXG4gICAqIGBzcGxpY2VgIHJlYWNoZXMgb25seSBpdHMgb3duLiBGb3IgdGhlIGVuZ2luZSdzIG93biBzbmFwc2hvdCAoYEV4ZWN1dGlvblJ1bnRpbWUgwrcgZ2V0U25hcHNob3RgLCB3aGljaFxuICAgKiBhIHN1YmZsb3cgbW91bnQgdGFrZXMgb25jZSBwZXIgbW91bnQpLCBzbyB0aGUgcnVuIHNlcnZlcyBub3RoaW5nOyBhIHJlYWRlciBpcyBzZXJ2ZWQgYnkgYGxpc3QoKWAgYW5kXG4gICAqIGBnZXRTbmFwc2hvdCgpLmNvbW1pdExvZ2AuIEEga25vd24gb3BlbiBkb29yIChDSEFOR0VMT0cgOS40NC4yKTogYSBob2xkZXIgb2YgdGhlc2UgYnVuZGxlcyBjYW4gc3RpbGxcbiAgICogZWRpdCBhIERhdGUsIE1hcCBvciBidWZmZXIgaW5zaWRlIHRoZW0uXG4gICAqL1xuICByZWNvcmRlZCgpOiBDb21taXRCdW5kbGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMuc2xpY2UoKTtcbiAgfVxuXG4gIC8qKiBOdW1iZXIgb2YgcmVjb3JkZWQgY29tbWl0cy4gKi9cbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiBJbW11dGFibGUgaWRlbnRpdHkgb2YgdGhpcyBsb2csIGFic2VudCB1bnRpbCB0aGUgZW5naW5lIGJpbmRzIGl0LiAqL1xuICBnZXQgYWRkcmVzcygpOiBMb2dBZGRyZXNzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2VBZGRyZXNzO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCBCaW5kIG9uY2U7IHJlc3VtaW5nIHRoZSBzYW1lIGxvZyBtdXN0IG5vdCByZW5hbWUgaXRzIGVhcmxpZXIgcG9zaXRpb25zLiAqL1xuICBiaW5kQWRkcmVzcyhsb2dSdW5JZDogc3RyaW5nLCBkcmlsbFBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc291cmNlQWRkcmVzc1JldGlyZWQpIHJldHVybjtcbiAgICB0aGlzLnNvdXJjZUFkZHJlc3MgPz89IE9iamVjdC5mcmVlemUoeyBsb2dSdW5JZCwgZHJpbGxQYXRoOiBPYmplY3QuZnJlZXplKFsuLi5kcmlsbFBhdGhdKSB9KTtcbiAgfVxuXG4gIC8qKiBPKDEpIHNvdXJjZS10aW1lIGNhcHR1cmUuIE5vIGNvdW50ZXIsIG9ic2VydmVyIGJvb2trZWVwaW5nLCBvciBmdXR1cmUgY29tbWl0IHByZWRpY3Rpb24uICovXG4gIGNhcHR1cmVQb3NpdGlvbihydW5JZDogc3RyaW5nKTogRW1pdFNvdXJjZVBvc2l0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuc291cmNlQWRkcmVzcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZSh7IHJ1bklkLCAuLi50aGlzLnNvdXJjZUFkZHJlc3MsIGNvbW1pdHRlZFRocm91Z2hJZHg6IHRoaXMuc3RlcHMubGVuZ3RoIC0gMSB9KTtcbiAgfVxuXG4gIC8qKiBXaXBlcyBoaXN0b3J5ICh1c2VmdWwgZm9yIHRlc3QgcmVzZXRzKS4gKi9cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwcyA9IFtdO1xuICAgIC8vIEEgcmVzZXQgcHJlZml4IGNhbm5vdCByZXVzZSBvbGQgY29vcmRpbmF0ZXMsIGV2ZW4gaWYgYW5vdGhlciBzdGFnZSBvZlxuICAgIC8vIHRoZSBTQU1FIGxlZyBiaW5kcyBpdCBhZ2Fpbi4gS2VlcCBjbGVhcidzIGRhdGEgYmVoYXZpb3IsIGJ1dCByZXRpcmVcbiAgICAvLyBhZGRyZXNzaW5nIGZvciB0aGlzIGxvZzsga25vd24gY29vcmRpbmF0ZXMgcmVxdWlyZSBhIGZyZXNoIEV2ZW50TG9nLlxuICAgIHRoaXMuc291cmNlQWRkcmVzcyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNvdXJjZUFkZHJlc3NSZXRpcmVkID0gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRMb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21lbW9yeS9FdmVudExvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHOzs7QUFFSCxvREFBaUU7QUFHakUseUNBQWlEO0FBRWpELE1BQWEsUUFBUTtJQUNuQiw2REFBNkQ7SUFDckQsSUFBSSxDQUFNO0lBQ2xCLHNDQUFzQztJQUM5QixLQUFLLEdBQW1CLEVBQUUsQ0FBQztJQUMzQixhQUFhLENBQWM7SUFDM0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBRXJDLFlBQVksYUFBa0I7UUFDNUIsdUVBQXVFO1FBQ3ZFLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGVBQWU7UUFDYixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBQSw4QkFBbUIsRUFBQyxHQUFHLEVBQUUsT0FBc0IsRUFBRSxTQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxNQUFvQjtRQUN6QixNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUEsd0JBQVksRUFBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyx1QkFBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCx3RkFBd0Y7SUFDeEYsV0FBVyxDQUFDLFFBQWdCLEVBQUUsU0FBNEI7UUFDeEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CO1lBQUUsT0FBTztRQUN0QyxJQUFJLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCwrRkFBK0Y7SUFDL0YsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHdFQUF3RTtRQUN4RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBOUhELDRCQThIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXZlbnRMb2cg4oCUIFRpbWUtdHJhdmVsIHNuYXBzaG90IHN0b3JhZ2UgZm9yIGZsb3djaGFydCBleGVjdXRpb25cbiAqXG4gKiBMaWtlIGdpdCBoaXN0b3J5OiBzdG9yZXMgY29tbWl0IGJ1bmRsZXMgKGRpZmZzKSwgbm90IGZ1bGwgc25hcHNob3RzLlxuICpcbiAqIFRIRSBSRUNPUkQgSVMgSU1NVVRBQkxFIEZST00gYHJlY29yZGAgKEYzLCBydWxpbmcgUjMpLiBFdmVyeSBidW5kbGUgaXMgZGVlcC1mcm96ZW4gYXMgaXQgaXNcbiAqIHJlY29yZGVkIOKAlCB0aGUgYnVuZGxlLCBgb3ZlcndyaXRlYCBhbmQgYHVwZGF0ZXNgIGF0IGV2ZXJ5IGRlcHRoLCB0aGUgdHJhY2UgYW5kIGVhY2ggcm93LCB0aGVcbiAqIHJvdydzIGByZWFkS2V5c2AsIGByZWRhY3RlZFBhdGhzYCwgYHRhZ3NgLCBgdW50cmFja2VkU291cmNlc2Ag4oCUIHNvIGEgaG9sZGVyIG9mIGEgc25hcHNob3QgY2FuIG5vXG4gKiBsb25nZXIgcmV3cml0ZSB0aGUgaGlzdG9yeSBldmVyeSBsYXRlciBhbnN3ZXIgaXMgZm9sZGVkIGZyb206IGFuIGFzc2lnbm1lbnQgaW50byBhIGJ1bmRsZSB0aHJvd3NcbiAqIGEgYFR5cGVFcnJvcmAgaW4gc3RyaWN0IGNvZGUuIFNhZmUgYmVjYXVzZSBub3RoaW5nIG91dHNpZGUgdGhlIGxvZyBob2xkcyBhIGJ1bmRsZSdzIGNvbnRhaW5lcnM6XG4gKiB0aGUgbG9nJ3MgcGF5bG9hZCBpcyB0aGUgY29tbWl0J3Mgb3duIGNvcHkgKGByZWNvcmRDb21taXRgIGhhbmRzIGl0IHRoZSBvdXRwdXQgb2ZcbiAqIGBzY3J1YlBhdGNoYCksIGFuZCBsaXZlIHN0YXRlLCB0aGUgcmVkYWN0ZWQgbWlycm9yIGFuZCB3cml0ZSByZXRlbnRpb24gZWFjaCB0YWtlIHRoZWlyIG93biBjb3B5XG4gKiAoYHZlcmJzLnRzIMK3IGZvbGRSb3dzYCBkZXRhY2hlcywgYFN0YWdlQ29udGV4dCDCtyByZXRhaW5lZEZvcm1gIGNsb25lcykg4oCUIHBpbm5lZCBieVxuICogdGVzdC9saWIvbWVtb3J5L3Byb3BlcnR5L3JlY29yZC1yZWFjaGFiaWxpdHkucHJvcGVydHkudGVzdC50cy5cbiAqXG4gKiBXaGF0IGBPYmplY3QuZnJlZXplYCBjYW5ub3Qgc2VhbCDigJQgYSBEYXRlJ3MgdGltZSwgYSBNYXAncyBvciBTZXQncyBlbnRyaWVzLCBhIGJ1ZmZlcidzIGJ5dGVzLCBhXG4gKiBSZWdFeHAsIGFuIEVycm9yJ3Mgc3RhY2sg4oCUIGlzIG5ldmVyIGhhbmRlZCBvdXQgdG8gYSByZWFkZXIgKDkuNDQuMik6IGByZWNvcmRgIHJlbWVtYmVycyB0aGF0IGFcbiAqIGJ1bmRsZSBob2xkcyBzdWNoIGEgdmFsdWUgKGBjYXB0dXJlL2ZyZWV6ZS50cyDCtyBmcmVlemVSZWNvcmRgKSwgYW5kIGBsaXN0KClgIOKAlCBsaWtlIHRoZSBwdWJsaWNcbiAqIHNuYXBzaG90LCBgcnVubmVyL3NuYXBzaG90LnRzIMK3IHNlcnZlZFNuYXBzaG90YCDigJQgc2VydmVzIHRoYXQgYnVuZGxlIGFzIGEgY29weSBvZiBpdHMgb3BlbiBwYXRoc1xuICogKGBzZXJ2ZVJlY29yZGAsIG1hcHBlZCBhdCBpdHMgZmlyc3Qgc2VydmUpOiBmcmVzaCBmcm96ZW4gY29udGFpbmVycyBkb3duIHRvIGVhY2ggc3VjaCB2YWx1ZSwgYVxuICogZnJlc2ggY29weSBvZiBpdCwgZXZlcnkgb3RoZXIgcGFydCB0aGUgbG9nJ3Mgb3duLiBBIHJlYWRlciBlZGl0cyBvbmx5IGl0cyBvd24gY29weTsgZXZlcnkgbGF0ZXJcbiAqIHNlcnZlIHJlYWRzIHRoZSByZWNvcmQgYXMgcmVjb3JkZWQuIGByZWNvcmRlZCgpYCBpcyB0aGUgZW5naW5lJ3Mgb3duLCB1bnNlcnZlZCByZWFkLiBOYW1lZCBob2xlczogYW4gb2JqZWN0IGh1bmcgb24gYW4gYXJyYXkgRVhQQU5ETyAoYXJyYXlzIGFyZSB3YWxrZWRcbiAqIGJ5IGluZGV4IOKAlCB0aGUgYCdpbmRpY2VzJ2Agd2Fsaywgd2hpY2gga2VlcHMgdGhlIGZyZWV6ZSBpbnNpZGUgaXRzIGJ1ZGdldDsgYW4gZXhwYW5kbyBpcyBvdXQgb2ZcbiAqIGNvbnRyYWN0IGZvciBzdGF0ZSkgYW5kIGEgYFNoYXJlZEFycmF5QnVmZmVyYCAoZXZlcnkgY29weSBzaGFyZXMgaXRzIG1lbW9yeSkuIEEgZnJvemVuIFJlZ0V4cCdzXG4gKiBgbGFzdEluZGV4YCBpcyByZWFkLW9ubHksIHNvIGEgYC9nYCBvciBgL3lgIHJlZ2V4IHJlYWQgZnJvbSBhIGJ1bmRsZSB0aHJvd3Mgd2hlbiBgZXhlY2Agb3JcbiAqIGByZXBsYWNlYCBhZHZhbmNlIGl0LlxuICovXG5cbmltcG9ydCB7IGZyZWV6ZVJlY29yZCwgc2VydmVSZWNvcmQgfSBmcm9tICcuLi9jYXB0dXJlL2ZyZWV6ZS5qcyc7XG5pbXBvcnQgdHlwZSB7IEVtaXRTb3VyY2VQb3NpdGlvbiwgTG9nQWRkcmVzcyB9IGZyb20gJy4vZXZlbnRQb3NpdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IENvbW1pdEJ1bmRsZSwgTWVtb3J5UGF0Y2ggfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IGFwcGx5U21hcnRNZXJnZUludG8gfSBmcm9tICcuL3V0aWxzLmpzJztcblxuZXhwb3J0IGNsYXNzIEV2ZW50TG9nIHtcbiAgLyoqIEJhc2Ugc25hcHNob3QgQkVGT1JFIHRoZSBmaXJzdCBzdGFnZSBtdXRhdGVzIGFueXRoaW5nLiAqL1xuICBwcml2YXRlIGJhc2U6IGFueTtcbiAgLyoqIE9yZGVyZWQgbGlzdCBvZiBjb21taXQgYnVuZGxlcy4gKi9cbiAgcHJpdmF0ZSBzdGVwczogQ29tbWl0QnVuZGxlW10gPSBbXTtcbiAgcHJpdmF0ZSBzb3VyY2VBZGRyZXNzPzogTG9nQWRkcmVzcztcbiAgcHJpdmF0ZSBzb3VyY2VBZGRyZXNzUmV0aXJlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxNZW1vcnk6IGFueSkge1xuICAgIC8vIE5vcm1hbGlzZWQgdG8gYW4gb2JqZWN0OiB0aGUgYmFzZSBpcyBhIFNUQVRFLCBhbmQgZXZlcnkgZm9sZCBvdmVyIGl0XG4gICAgLy8gKGBtYXRlcmlhbGlzZWAsIGBzdGF0ZUF0YCkgYXBwbGllcyBwYXRoIHdyaXRlcyB0byBpdC4gYHVuZGVmaW5lZGAg4oCUXG4gICAgLy8gd2hhdCBhIHJ1biB3aXRoIG5vIGBpbml0aWFsQ29udGV4dGAgdXNlZCB0byBzdG9yZSBoZXJlIOKAlCBtYWRlIGV2ZXJ5XG4gICAgLy8gb25lIG9mIHRob3NlIGZvbGRzIHRocm93IG9uIHRoZSBmaXJzdCBgc2V0YC5cbiAgICB0aGlzLmJhc2UgPSBpbml0aWFsTWVtb3J5ID09PSB1bmRlZmluZWQgPyB7fSA6IHN0cnVjdHVyZWRDbG9uZShpbml0aWFsTWVtb3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZm9sZCBCQVNFIOKAlCB0aGUgc3RhdGUgYXMgaXQgc3Rvb2QgYmVmb3JlIHRoZSBmaXJzdCBjb21taXQuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIG90aGVyIGhhbGYgb2YgdGhlIGNvbW1pdCBsb2c6IGJ1bmRsZXMgYXJlIERJRkZTLCBzbyBhIGxvZ1xuICAgKiBhbG9uZSBjYW5ub3QgcmVjb25zdHJ1Y3Qgc3RhdGUgdGhhdCB3YXMgc2VlZGVkIGJlZm9yZSB0aGUgcnVuIChhblxuICAgKiBleGVjdXRvciBgaW5pdGlhbENvbnRleHRgLCBgZGVmYXVsdFZhbHVlc0ZvckNvbnRleHRgLCBhIHJlc3VtZSdzXG4gICAqIGBjaGVja3BvaW50LnNoYXJlZFN0YXRlYCwgYSBzdWJmbG93J3MgYGlucHV0TWFwcGVyYCBzZWVkKS4gVHJhdmVsbGluZ1xuICAgKiB3aXRoIHRoZSBsb2cg4oCUIGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYCDigJQgaXMgd2hhdCBsZXRzIGFuIE9GRkxJTkVcbiAgICogY29uc3VtZXIgZm9sZDsgd2l0aG91dCBpdCB0aGUgaG9uZXN0IGFuc3dlciBpcyBhIHBhcnRpYWwgb25lXG4gICAqIChgc3RhdGVBdGAncyBgYmFzaXM6ICdsb2ctb25seSdgKS5cbiAgICpcbiAgICogUmV0dXJucyBhIGZyZXNoIGRldGFjaGVkIGNsb25lIG9uIGV2ZXJ5IGNhbGwg4oCUIHRoZSBjYWxsZXIgb3ducyBpdC5cbiAgICovXG4gIGdldEluaXRpYWxTdGF0ZSgpOiBhbnkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5iYXNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbnN0cnVjdHMgdGhlIGZ1bGwgc3RhdGUgYXQgYW55IGdpdmVuIHN0ZXAuXG4gICAqIFJlcGxheXMgY29tbWl0cyBmcm9tIHRoZSBiZWdpbm5pbmcg4oCUIE8obikgYnV0IGxvdyBtZW1vcnkgZm9vdHByaW50LlxuICAgKlxuICAgKiBJTkRFWCBDT05WRU5USU9OIOKAlCBgc3RlcElkeGAgaXMgRVhDTFVTSVZFOiBgbWF0ZXJpYWxpc2UoMylgIGZvbGRzIGNvbW1pdHNcbiAgICogMCwgMSBhbmQgMi4gYHN0YXRlQXQoc291cmNlLCBjb21taXRJZHgpYCAoZm9vdHByaW50anMvdHJhY2UpIGZvbGRzIHRoZVxuICAgKiBzYW1lIGxvZyBidXQgaXRzIGBjb21taXRJZHhgIGlzIElOQ0xVU0lWRSwgYmVjYXVzZSBhIHJlYWRlcidzIGN1cnNvciBhc2tzXG4gICAqIFwidGhlIHN0YXRlIEFUIHRoaXMgc3RvcFwiLCB3aGljaCBtdXN0IGluY2x1ZGUgdGhhdCBzdG9wJ3Mgb3duIGNvbW1pdC4gVHdvXG4gICAqIGZvbGRzIG92ZXIgb25lIGxvZyB3aXRoIG9wcG9zaXRlIGNvbnZlbnRpb25zOiBjaGVjayB3aGljaCBvbmUgeW91IGhvbGQuXG4gICAqXG4gICAqIE9uZSBjbG9uZSBvZiB0aGUgYmFzZSBwZXIgY2FsbCwgdGhlbiBldmVyeSBidW5kbGUgcmVwbGF5ZWQgSU5UTyB0aGF0XG4gICAqIHByaXZhdGUgY29weSAoYGFwcGx5U21hcnRNZXJnZUludG9gIOKAlCB0aGUgbGl2ZSBjb21taXQncyBjb3B5LW9uLXdyaXRlIGxhd1xuICAgKiBiZWxvdyB0aGUgcm9vdCwgOS4yOS4wLCBzbyB0aGUgZm9sZCBhbmQgdGhlIGxpdmUgc3RhdGUgYWdyZWUgYXQgZXZlcnlcbiAgICogcGF0aCkuIFRoZSByZXN1bHQgaXMgdGhlIGNhbGxlcidzOiBpdCBzaGFyZXMgbm90aGluZyB3aXRoIHRoZSBiYXNlIG9yXG4gICAqIHRoZSBsb2cuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIDkuMzMuMCDigJQgdXNlIGBzdGF0ZUF0YCBmcm9tIGBmb290cHJpbnRqcy90cmFjZWAsIHdoaWNoIGZvbGRzIHRoZSBzYW1lIGxvZ1xuICAgKiBmcm9tIHRoZSBzYW1lIGJhc2UgKGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYCkgYW5kIHNheXMgaG93IGl0IHdhcyBkZXJpdmVkIChgYmFzaXNgKS5cbiAgICogTm90aGluZyBpbiB0aGUgbGlicmFyeSBjYWxscyB0aGlzOyBpdCBzdGF5cyBmb3Igb25lIG1pbm9yIGFuZCBpcyB0aGVuIHJlbW92ZWQuIE1pbmQgdGhlXG4gICAqIGluZGV4OiBgbWF0ZXJpYWxpc2UobilgIGZvbGRzIGNvbW1pdHMgYDAuLm4tMWAsIGBzdGF0ZUF0KHNvdXJjZSwgbiAtIDEpYCB0aGUgc2FtZSBjb21taXRzLlxuICAgKi9cbiAgbWF0ZXJpYWxpc2Uoc3RlcElkeCA9IHRoaXMuc3RlcHMubGVuZ3RoKTogYW55IHtcbiAgICBjb25zdCBvdXQgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5iYXNlKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ZXBJZHg7IGkrKykge1xuICAgICAgY29uc3QgeyBvdmVyd3JpdGUsIHVwZGF0ZXMsIHRyYWNlIH0gPSB0aGlzLnN0ZXBzW2ldO1xuICAgICAgYXBwbHlTbWFydE1lcmdlSW50byhvdXQsIHVwZGF0ZXMgYXMgTWVtb3J5UGF0Y2gsIG92ZXJ3cml0ZSBhcyBNZW1vcnlQYXRjaCwgdHJhY2UpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIGEgY29tbWl0IGJ1bmRsZSBmb3IgYSBmaW5pc2hlZCBzdGFnZSwgYW5kIEZSRUVaRVMgaXQgKHNlZSB0aGUgbW9kdWxlIGRvYyk6IHRoZSBidW5kbGVcbiAgICogaXMgc3RhbXBlZCB3aXRoIGl0cyBwb3NpdGlvbiwgdGhlbiBkZWVwLWZyb3plbiwgdGhlbiBhcHBlbmRlZC4gVGhlIGVuZ2luZSBoYW5kcyBpdCBhIGJ1bmRsZVxuICAgKiBidWlsdCBmb3IgdGhlIGxvZyBhbG9uZTsgYSBjYWxsZXIgb2YgdGhpcyBjbGFzcyAoYGZvb3RwcmludGpzL2FkdmFuY2VkYCkgaGFuZHMgb3ZlciBhIGJ1bmRsZSBpdFxuICAgKiB3aWxsIG5vIGxvbmdlciBlZGl0IOKAlCBpdHMgb3duIG9iamVjdCBpcyB0aGUgb25lIGZyb3plbi5cbiAgICovXG4gIHJlY29yZChidW5kbGU6IENvbW1pdEJ1bmRsZSk6IHZvaWQge1xuICAgIGJ1bmRsZS5pZHggPSB0aGlzLnN0ZXBzLmxlbmd0aDtcbiAgICBmcmVlemVSZWNvcmQoYnVuZGxlLCAnaW5kaWNlcycpO1xuICAgIHRoaXMuc3RlcHMucHVzaChidW5kbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZXJ5IHJlY29yZGVkIGNvbW1pdCBidW5kbGUsIEFTIFNFUlZFRCAoOS40NC4yKTogYSBuZXcgYXJyYXkgZWFjaCBjYWxsOyBhIGJ1bmRsZSBmcmVlemluZyBzZWFsZWRcbiAgICogd2hvbGUgaXMgdGhlIGxvZydzIG93biAoZnJvemVuKSBvYmplY3QsIG9uZSBob2xkaW5nIGEgRGF0ZSwgTWFwLCBidWZmZXIg4oCmIGlzIGEgY29weSBvZiBpdHMgb3BlblxuICAgKiBwYXRocyAoYGNhcHR1cmUvZnJlZXplLnRzIMK3IHNlcnZlUmVjb3JkYCkg4oCUIHRoZSByZWFkZXIncyBvd24sIHNvIG5vIGVkaXQgcmVhY2hlcyB0aGUgbG9nLlxuICAgKi9cbiAgbGlzdCgpOiBDb21taXRCdW5kbGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMubWFwKHNlcnZlUmVjb3JkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWwgVGhlIGJ1bmRsZXMgYXMgdGhlIGxvZyBob2xkcyB0aGVtIOKAlCBlYWNoIGZyb3plbiwgTk9UIHNlcnZlZCDigJQgaW4gYSBuZXcgYXJyYXksIHNvIGEgaG9sZGVyJ3NcbiAgICogYHNwbGljZWAgcmVhY2hlcyBvbmx5IGl0cyBvd24uIEZvciB0aGUgZW5naW5lJ3Mgb3duIHNuYXBzaG90IChgRXhlY3V0aW9uUnVudGltZSDCtyBnZXRTbmFwc2hvdGAsIHdoaWNoXG4gICAqIGEgc3ViZmxvdyBtb3VudCB0YWtlcyBvbmNlIHBlciBtb3VudCksIHNvIHRoZSBydW4gc2VydmVzIG5vdGhpbmc7IGEgcmVhZGVyIGlzIHNlcnZlZCBieSBgbGlzdCgpYCBhbmRcbiAgICogYGdldFNuYXBzaG90KCkuY29tbWl0TG9nYC4gQSBrbm93biBvcGVuIGRvb3IgKENIQU5HRUxPRyA5LjQ0LjIpOiBhIGhvbGRlciBvZiB0aGVzZSBidW5kbGVzIGNhbiBzdGlsbFxuICAgKiBlZGl0IGEgRGF0ZSwgTWFwIG9yIGJ1ZmZlciBpbnNpZGUgdGhlbS5cbiAgICovXG4gIHJlY29yZGVkKCk6IENvbW1pdEJ1bmRsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5zbGljZSgpO1xuICB9XG5cbiAgLyoqIE51bWJlciBvZiByZWNvcmRlZCBjb21taXRzLiAqL1xuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIEltbXV0YWJsZSBpZGVudGl0eSBvZiB0aGlzIGxvZywgYWJzZW50IHVudGlsIHRoZSBlbmdpbmUgYmluZHMgaXQuICovXG4gIGdldCBhZGRyZXNzKCk6IExvZ0FkZHJlc3MgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZUFkZHJlc3M7XG4gIH1cblxuICAvKiogQGludGVybmFsIEJpbmQgb25jZTsgcmVzdW1pbmcgdGhlIHNhbWUgbG9nIG11c3Qgbm90IHJlbmFtZSBpdHMgZWFybGllciBwb3NpdGlvbnMuICovXG4gIGJpbmRBZGRyZXNzKGxvZ1J1bklkOiBzdHJpbmcsIGRyaWxsUGF0aDogcmVhZG9ubHkgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb3VyY2VBZGRyZXNzUmV0aXJlZCkgcmV0dXJuO1xuICAgIHRoaXMuc291cmNlQWRkcmVzcyA/Pz0gT2JqZWN0LmZyZWV6ZSh7IGxvZ1J1bklkLCBkcmlsbFBhdGg6IE9iamVjdC5mcmVlemUoWy4uLmRyaWxsUGF0aF0pIH0pO1xuICB9XG5cbiAgLyoqIE8oMSkgc291cmNlLXRpbWUgY2FwdHVyZS4gTm8gY291bnRlciwgb2JzZXJ2ZXIgYm9va2tlZXBpbmcsIG9yIGZ1dHVyZSBjb21taXQgcHJlZGljdGlvbi4gKi9cbiAgY2FwdHVyZVBvc2l0aW9uKHJ1bklkOiBzdHJpbmcpOiBFbWl0U291cmNlUG9zaXRpb24gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5zb3VyY2VBZGRyZXNzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBPYmplY3QuZnJlZXplKHsgcnVuSWQsIC4uLnRoaXMuc291cmNlQWRkcmVzcywgY29tbWl0dGVkVGhyb3VnaElkeDogdGhpcy5zdGVwcy5sZW5ndGggLSAxIH0pO1xuICB9XG5cbiAgLyoqIFdpcGVzIGhpc3RvcnkgKHVzZWZ1bCBmb3IgdGVzdCByZXNldHMpLiAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzID0gW107XG4gICAgLy8gQSByZXNldCBwcmVmaXggY2Fubm90IHJldXNlIG9sZCBjb29yZGluYXRlcywgZXZlbiBpZiBhbm90aGVyIHN0YWdlIG9mXG4gICAgLy8gdGhlIFNBTUUgbGVnIGJpbmRzIGl0IGFnYWluLiBLZWVwIGNsZWFyJ3MgZGF0YSBiZWhhdmlvciwgYnV0IHJldGlyZVxuICAgIC8vIGFkZHJlc3NpbmcgZm9yIHRoaXMgbG9nOyBrbm93biBjb29yZGluYXRlcyByZXF1aXJlIGEgZnJlc2ggRXZlbnRMb2cuXG4gICAgdGhpcy5zb3VyY2VBZGRyZXNzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc291cmNlQWRkcmVzc1JldGlyZWQgPSB0cnVlO1xuICB9XG59XG4iXX0=
|