@magic-xpa/engine 4.801.0-dev481.242 → 4.801.0-dev481.243
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/bundles/magic-xpa-engine.umd.js +45 -45
- package/bundles/magic-xpa-engine.umd.js.map +1 -1
- package/bundles/magic-xpa-engine.umd.min.js +2 -2
- package/bundles/magic-xpa-engine.umd.min.js.map +1 -1
- package/esm2015/src/CommandsProcessorBase.js +2 -2
- package/esm2015/src/CurrentClientVersion.js +2 -2
- package/esm2015/src/commands/ClientToServer/BrowserEscEventCommand.js +2 -3
- package/esm2015/src/data/DataView.js +2 -3
- package/esm2015/src/data/Field.js +2 -3
- package/esm2015/src/data/Record.js +2 -3
- package/esm2015/src/env/LanguageData.js +2 -3
- package/esm2015/src/event/EventHandler.js +2 -3
- package/esm2015/src/event/EventHandlerPosition.js +2 -2
- package/esm2015/src/event/EventsManager.js +2 -3
- package/esm2015/src/exp/ExpressionEvaluator.js +2 -3
- package/esm2015/src/gui/MgForm.js +2 -3
- package/esm2015/src/http/client/HttpClientBase.js +2 -3
- package/esm2015/src/remote/RemoteCommandsProcessor.js +2 -3
- package/esm2015/src/remote/ServerError.js +2 -3
- package/esm2015/src/rt/DataviewHeadersSaxHandler.js +2 -3
- package/esm2015/src/tasks/Task.js +2 -3
- package/fesm2015/magic-xpa-engine.js +2 -3
- package/fesm2015/magic-xpa-engine.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { InternalInterface, Logger } from "@magic-xpa/utils";
|
|
2
2
|
import { ConstInterface } from "../ConstInterface";
|
|
3
3
|
import { AccessHelper } from "../AccessHelper";
|
|
4
|
-
import { isNullOrUndefined } from "
|
|
4
|
+
import { isNullOrUndefined } from "@magic-xpa/mscorelib";
|
|
5
5
|
export class EventHandlerPosition {
|
|
6
6
|
constructor() {
|
|
7
7
|
this._handlerIdx = 0;
|
|
@@ -198,4 +198,4 @@ EventHandlerPosition.PHASE_CONTROL_SPECIFIC = 1;
|
|
|
198
198
|
EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC = 2;
|
|
199
199
|
EventHandlerPosition.PHASE_GLOBAL = 3;
|
|
200
200
|
EventHandlerPosition.PHASE_GLOBAL_SPECIFIC = 4;
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRIYW5kbGVyUG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2V2ZW50L0V2ZW50SGFuZGxlclBvc2l0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQU0zRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQU12QyxNQUFNLE9BQU8sb0JBQW9CO0lBZ0IvQjtRQVZRLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGlCQUFZLEdBQWtCLElBQUksQ0FBQztRQUNuQyxpQkFBWSxHQUFTLElBQUksQ0FBQztRQUMxQixhQUFRLEdBQVMsSUFBSSxDQUFDO1FBQ3RCLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFDbkIsY0FBUyxHQUFTLElBQUksQ0FBQztRQUN2QixXQUFNLEdBQWlCLElBQUksQ0FBQztRQUM1QixVQUFLLEdBQVMsSUFBSSxDQUFDO0lBSTNCLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBcUI7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxHQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2RCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFF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SUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDckQsSUFBSSxjQUFjLEtBQUssSUFBSSxFQUFFO1lBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLE9BQU87U0FDUjtRQUdELElBQUksTUFBTSxLQUFLLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUd6QyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFTLFlBQVksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDN0U7YUFDSTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUM7U0FDN0I7SUFDSCxDQUFDOztBQXBRYywyQ0FBc0IsR0FBVyxDQUFDLENBQUM7QUFDbkMsK0NBQTBCLEdBQVcsQ0FBQyxDQUFDO0FBQ3ZDLGlDQUFZLEdBQVcsQ0FBQyxDQUFDO0FBQ3pCLDBDQUFxQixHQUFXLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW50ZXJuYWxJbnRlcmZhY2UsIExvZ2dlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtIYW5kbGVyc1RhYmxlfSBmcm9tIFwiLi4vcnQvSGFuZGxlcnNUYWJsZVwiO1xyXG5pbXBvcnQge1J1blRpbWVFdmVudH0gZnJvbSBcIi4vUnVuVGltZUV2ZW50XCI7XHJcbmltcG9ydCB7VGFza30gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tcIjtcclxuaW1wb3J0IHtFdmVudEhhbmRsZXJ9IGZyb20gXCIuL0V2ZW50SGFuZGxlclwiO1xyXG5pbXBvcnQge01HRGF0YX0gZnJvbSBcIi4uL3Rhc2tzL01HRGF0YVwiO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tIFwiLi4vQ29uc3RJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgQWNjZXNzSGVscGVyIH0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5pbXBvcnQge2lzTnVsbE9yVW5kZWZpbmVkfSBmcm9tIFwidXRpbFwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBhbiBvYmplY3Qgb2YgdGhpcyBjbGFzcyBwb2ludHMgdG8gdGhlIHBvc2l0aW9uIG9mIGFuIGV2ZW50IGhhbmRsZXIgaW4gdGhlXHJcbi8vLyAgIGNoYWluIG9mIHRoZSBldmVudCBoYW5kbGVyc1xyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgRXZlbnRIYW5kbGVyUG9zaXRpb24ge1xyXG4gIHByaXZhdGUgc3RhdGljIFBIQVNFX0NPTlRST0xfU1BFQ0lGSUM6IG51bWJlciA9IDE7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgUEhBU0VfQ09OVFJPTF9OT05fU1BFQ0lGSUM6IG51bWJlciA9IDI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgUEhBU0VfR0xPQkFMOiBudW1iZXIgPSAzO1xyXG4gIHByaXZhdGUgc3RhdGljIFBIQVNFX0dMT0JBTF9TUEVDSUZJQzogbnVtYmVyID0gNDtcclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGxlcklkeDogbnVtYmVyID0gMDsgLy8gdGhlIGluZGV4IG9mIHRoZSBoYW5kbGVyIHdpdGhpbiB0aGUgdGFza1xyXG4gIHByaXZhdGUgX2hhbmRsZXJzVGFiOiBIYW5kbGVyc1RhYmxlID0gbnVsbDtcclxuICBwcml2YXRlIF9vcmdQcmV2VGFzazogVGFzayA9IG51bGw7IC8vIHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgY2hlY2tlZCB0YXNrXHJcbiAgcHJpdmF0ZSBfb3JnVGFzazogVGFzayA9IG51bGw7IC8vIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBjaGVja2VkIHRhc2tcclxuICBwcml2YXRlIF9waGFzZTogbnVtYmVyID0gMDsgLy8gdGhlIHBoYXNlIG9mIHRoZSBzZWFyY2g6IGNvbnRyb2wgc3BlY2lmaWMsIGNvbnRyb2wgbm9uLXNwZWNpZmljLCBnbG9iYWxcclxuICBwcml2YXRlIF9wcmV2VGFzazogVGFzayA9IG51bGw7IC8vIHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgY2hlY2tlZCB0YXNrXHJcbiAgcHJpdmF0ZSBfcnRFdnQ6IFJ1blRpbWVFdmVudCA9IG51bGw7IC8vIHRoZSBldmVudFxyXG4gIHByaXZhdGUgX3Rhc2s6IFRhc2sgPSBudWxsOyAvLyByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgY2hlY2tlZCB0YXNrXHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbiAgLy8vICAgaW5pdCB0aGUgcG9zaXRpb24gdG8gc3RhcnQgYSBuZXcgY2hhaW4gb2Ygc2VhcmNoXHJcbiAgaW5pdChydEV2ZW50OiBSdW5UaW1lRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3J0RXZ0ID0gcnRFdmVudDtcclxuICAgIHRoaXMuX3Rhc2sgPSA8VGFzaz50aGlzLl9ydEV2dC5nZXRUYXNrKCk7XHJcbiAgICBpZiAodGhpcy5fdGFzay5pc01haW5Qcm9nKCkpIHtcclxuICAgICAgdGhpcy5fcHJldlRhc2sgPSA8VGFzaz50aGlzLl9ydEV2dC5nZXRNYWluUHJnQ3JlYXRvcigpO1xyXG4gICAgICBpZiAodGhpcy5fcHJldlRhc2sgIT09IG51bGwgJiYgdGhpcy5fcHJldlRhc2suaXNNYWluUHJvZygpKVxyXG4gICAgICAgIHRoaXMuX3ByZXZUYXNrID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocnRFdmVudC5nZXRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUl9GVU5DKVxyXG4gICAgICB0aGlzLl9waGFzZSA9IEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0NPTlRST0xfTk9OX1NQRUNJRklDO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChydEV2ZW50LmdldFR5cGUoKSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSX0ZVTkMpXHJcbiAgICAgICAgdGhpcy5fcGhhc2UgPSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9DT05UUk9MX05PTl9TUEVDSUZJQztcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuX3BoYXNlID0gRXZlbnRIYW5kbGVyUG9zaXRpb24uUEhBU0VfQ09OVFJPTF9TUEVDSUZJQztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9vcmdUYXNrID0gdGhpcy5fdGFzaztcclxuICAgIHRoaXMuX29yZ1ByZXZUYXNrID0gdGhpcy5fcHJldlRhc2s7XHJcbiAgICB0aGlzLl9oYW5kbGVyc1RhYiA9IHRoaXMuX3Rhc2suZ2V0SGFuZGxlcnNUYWIoKTtcclxuICAgIGlmICh0aGlzLl9oYW5kbGVyc1RhYiA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmdvVXBUYXNrQ2hhaW4oKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9oYW5kbGVySWR4ID0gLTE7XHJcbiAgfVxyXG5cclxuICBnZXROZXh0KGV2dDogUnVuVGltZUV2ZW50KTogRXZlbnRIYW5kbGVyO1xyXG4gIGdldE5leHQoKTogRXZlbnRIYW5kbGVyO1xyXG4gIGdldE5leHQoZXZ0PzogUnVuVGltZUV2ZW50KTogRXZlbnRIYW5kbGVyIHtcclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoZXZ0KSlcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV4dF8wKGV2dCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB0aGlzLmdldE5leHRfMSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vICAgY2hhbmdlcyB0aGUgY3VycmVudCBydW4gdGltZSBldmVudCBhbmQgcmV0dXJucyB0aGUgbmV4dCBldmVudCBoYW5kbGVyXHJcbiAgcHJpdmF0ZSBnZXROZXh0XzAoZXZ0OiBSdW5UaW1lRXZlbnQpOiBFdmVudEhhbmRsZXIge1xyXG4gICAgdGhpcy5fcnRFdnQgPSBldnQ7XHJcbiAgICByZXR1cm4gdGhpcy5nZXROZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvLy8gICByZXR1cm5zIHRoZSBuZXh0IGV2ZW50IGhhbmRsZXJcclxuICBwcml2YXRlIGdldE5leHRfMSgpOiBFdmVudEhhbmRsZXIge1xyXG4gICAgaWYgKHRoaXMuX2hhbmRsZXJzVGFiID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBsZXQgcmVzdWx0OiBFdmVudEhhbmRsZXI7XHJcblxyXG4gICAgaWYgKHRoaXMuX3J0RXZ0LmdldFR5cGUoKSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTCAmJiB0aGlzLl9ydEV2dC5nZXRJbnRlcm5hbENvZGUoKSAhPT0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZBUklBQkxFKSB7XHJcbiAgICAgIC8vIHNwZWNpYWwgdHJlYXRtZW50IGZvciBUQVNLLCBSRUNPUkQgYW5kIENPTlRST0wgbGV2ZWwgUHJlZml4L1N1ZmZpeCBldmVudHNcclxuICAgICAgc3dpdGNoICh0aGlzLl9ydEV2dC5nZXRJbnRlcm5hbENvZGUoKSkge1xyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfUFJFRklYOlxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfU1VGRklYOlxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19QUkVGSVg6XHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1NVRkZJWDpcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWDpcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1NVRkZJWDoge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2hhbmRsZXJJZHggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGZvciAodGhpcy5faGFuZGxlcklkeCA9IHRoaXMuX2hhbmRsZXJzVGFiLmdldFNpemUoKSAtIDE7IHRoaXMuX2hhbmRsZXJJZHggPj0gMDsgdGhpcy5faGFuZGxlcklkeC0tKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGhhbmRsZXI6IEV2ZW50SGFuZGxlciA9IHRoaXMuX2hhbmRsZXJzVGFiLmdldEhhbmRsZXIodGhpcy5faGFuZGxlcklkeCk7XHJcbiAgICAgICAgICAgICAgaWYgKChoYW5kbGVyLmlzTm9uU3BlY2lmaWNIYW5kbGVyT2YodGhpcy5fcnRFdnQpKSB8fCAoaGFuZGxlci5pc1NwZWNpZmljSGFuZGxlck9mKHRoaXMuX3J0RXZ0KSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIGFuIGV2ZW50IGhhbmRsZXIgd2FzIG5vdCBmb3VuZCBvciB3YXMgcmV0dXJuZWQgaW4gYSBwcmV2aW91cyBjYWxsIHRvIHRoaXMgbWV0aG9kXHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAvLyBvdGhlciBpbnRlcm5hbCBldmVudHMgc2hvdWxkIGNvbnRpbnVlXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdoaWxlICh0aGlzLnNldE5leHRIYW5kbGVySWR4KCkpIHtcclxuICAgICAgbGV0IGhhbmRsZXI6IEV2ZW50SGFuZGxlciA9IHRoaXMuX2hhbmRsZXJzVGFiLmdldEhhbmRsZXIodGhpcy5faGFuZGxlcklkeCk7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5fcGhhc2UpIHtcclxuICAgICAgICBjYXNlIEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0NPTlRST0xfU1BFQ0lGSUM6XHJcbiAgICAgICAgICBpZiAoaGFuZGxlci5pc1NwZWNpZmljSGFuZGxlck9mKHRoaXMuX3J0RXZ0KSlcclxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXI7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgY2FzZSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9DT05UUk9MX05PTl9TUEVDSUZJQzpcclxuICAgICAgICAgIGlmIChoYW5kbGVyLmlzTm9uU3BlY2lmaWNIYW5kbGVyT2YodGhpcy5fcnRFdnQpKVxyXG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlcjtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBjYXNlIEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0dMT0JBTF9TUEVDSUZJQzpcclxuICAgICAgICAgIGlmIChoYW5kbGVyLmlzR2xvYmFsU3BlY2lmaWNIYW5kbGVyT2YodGhpcy5fcnRFdnQpKVxyXG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlcjtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBjYXNlIEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0dMT0JBTDpcclxuICAgICAgICAgIGlmIChoYW5kbGVyLmlzR2xvYmFsSGFuZGxlck9mKHRoaXMuX3J0RXZ0KSlcclxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXI7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIEV2ZW50SGFuZGxlclBvc2l0aW9uLmdldE5leHQoKSBpbnZhbGlkIHBoYXNlOiBcIiArIHRoaXMuX3BoYXNlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gICByZXR1cm5zIHRydWUgaWYgYSBuZXh0IGhhbmRsZXIgd2FzIGZvdW5kXHJcbiAgcHJpdmF0ZSBzZXROZXh0SGFuZGxlcklkeCgpOiBib29sZWFuIHtcclxuXHJcbiAgICAvLyB0aGUgaGFuZGxlciBpZHggaXMgKC0xKSB3aGVuIHN0YXJ0aW5nIHRvIHNlYXJjaCBpbiBhIHRhc2tcclxuICAgIGlmICh0aGlzLl9oYW5kbGVySWR4IDwgMClcclxuICAgICAgdGhpcy5faGFuZGxlcklkeCA9IHRoaXMuX2hhbmRsZXJzVGFiLmdldFNpemUoKSAtIDE7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX2hhbmRsZXJJZHggPSB0aGlzLl9oYW5kbGVySWR4IC0gMTtcclxuXHJcbiAgICBpZiAodGhpcy5faGFuZGxlcklkeCA8IDAgfHwgdGhpcy5fdGFzay5pc0Fib3J0aW5nKCkpIHtcclxuICAgICAgLy8gaWYgdGhlcmUgYXJlIG5vIG1vcmUgaGFuZGxlcnMgaW4gdGhlIHRhc2sgdGhlbiBnbyB1cCB0aGUgY2hhaW4gb2YgdGFza3NcclxuICAgICAgaWYgKHRoaXMuZ29VcFRhc2tDaGFpbigpKVxyXG4gICAgICAgIHJldHVybiB0aGlzLnNldE5leHRIYW5kbGVySWR4KCk7XHJcbiAgICAgIGVsc2UgLy8gbm8gbW9yZSB0YXNrcyBpbiB0aGUgY2hhaW5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gICBnZXQgdGhlIG5leHQgdGFzayBpbiB0aGUgdGFza3MgY2hhaW4gYW5kIHJldHVybnMgZmFsc2UgaWYgbm8gdGFzayB3YXMgZm91bmQuXHJcbiAgLy8vICAgdGhpcyBmdW5jdGlvbiBjaGFuZ2VzIHRoZSBwaGFzZSB2YXJpYWJsZSBhY2NvcmRpbmdseVxyXG4gIHByaXZhdGUgZ29VcFRhc2tDaGFpbigpOiBib29sZWFuIHtcclxuICAgIGxldCBtR0RhdGE6IE1HRGF0YSA9IHRoaXMuX3Rhc2suZ2V0TUdEYXRhKCk7XHJcbiAgICBsZXQgY3RsSWR4OiBudW1iZXIgPSB0aGlzLl90YXNrLmdldEN0bElkeCgpO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5fcGhhc2UpIHtcclxuICAgICAgY2FzZSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9DT05UUk9MX1NQRUNJRklDOlxyXG4gICAgICBjYXNlIEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0NPTlRST0xfTk9OX1NQRUNJRklDOiB7XHJcbiAgICAgICAgLy8gbm9uIHNwZWNpZmljIGhhbmRsZXJzIGFyZSBzZWFyY2hlZCB0aWxsIHdlIGhpdCBvdXIgbWFpbiBwcm9ncmFtIChpbmNsdXNpdmUpXHJcbiAgICAgICAgLy8gYWZ0ZXJ3YXJkcyB3ZSBzd2l0Y2ggdG8gZ2xvYmFsIHBoYXNlLlxyXG4gICAgICAgIGlmICghdGhpcy5fdGFzay5pc01haW5Qcm9nKCkpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0UGFyZW50T3JDb21wTWFpblByZygpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgLy8gaW50ZXJuYWwsIGludGVybmFsLCBzeXN0ZW0gYW5kIHVzZXIgZXZlbnRzIG1heSBjcm9zcyBjb21wb25lbnQgYm91bmRlcmllc1xyXG4gICAgICAgICAgaWYgKCh0aGlzLl9ydEV2dC5nZXRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfUFVCTElDIHx8XHJcbiAgICAgICAgICAgICAgIHRoaXMuX3J0RXZ0LmdldFR5cGUoKSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTCB8fFxyXG4gICAgICAgICAgICAgICB0aGlzLl9ydEV2dC5nZXRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNIHx8XHJcbiAgICAgICAgICAgICAgIHRoaXMuX3J0RXZ0LmdldFR5cGUoKSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSKSAmJiBjdGxJZHggPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIGxvYWQgdGhlIFJUIHBhcmVudCBvZiB0aGUgcHJldmlvdXMgdGFzay4gSWYgbm8gcHJldnRhc2sgZXhpc3RzIHRoZW4gd2UgYXJlXHJcbiAgICAgICAgICAgIC8vIHNpbXBseSBydW5uaW5nIG9uIHRoZSBtYWluIHByb2dzIGxpc3QgKGZvciBleGFtcGxlLCB3aGVuIGEgbWFpbiBwcmcgY2F0Y2hlc1xyXG4gICAgICAgICAgICAvLyBhIHRpbWVyIGV2ZW50LCBubyBwcmV2dGFzayBleGlzdHMuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9wcmV2VGFzayA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3Rhc2sgPSBtR0RhdGEuZ2V0TmV4dE1haW5Qcm9nKGN0bElkeCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3Rhc2sgPT09IG51bGwgJiYgY3RsSWR4ID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Rhc2sgPSA8VGFzaz5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0TWFpblByb2dCeUN0bElkeCgtMSwgQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIuZ2V0Q29tcE1haW5QcmdUYWIoKS5nZXRDdGxJZHgoMCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vIHRoZSBjb21wb25lbnQgbWFpbiBwcm9ncmFtIHRoYXQgd2FzIHNldCBpbiBnZXRQYXJlbnRPckNvbXBNYWluUHJnLCBpcyBub3cgcmVwbGFjZWQgYmFjayB0byB0aGUgcGF0aCBwYXJlbnQuXHJcbiAgICAgICAgICAgICAgdGhpcy5fdGFzayA9IHRoaXMuX3ByZXZUYXNrLlBhdGhQYXJlbnRUYXNrO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3ByZXZUYXNrID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9ydEV2dC5zZXRNYWluUHJnQ3JlYXRvcihudWxsKTsgLy8gbW92aW5nIG91dCBvZiBhIG1haW4gcHJvZ3JhbSB0byBhbm90aGVyIHRhc2tcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuX3BoYXNlID09PSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9DT05UUk9MX1NQRUNJRklDKSB7XHJcbiAgICAgICAgICAgIC8vIHNwZWNpZmljIHNlYXJjaCBpcyBvdmVyLiBzdGFydCB0aGUgbm9uIHNwZWNpZmljIHNlYXJjaCBmcm9tIHRoZSBmaXJzdCB0YXNrLlxyXG4gICAgICAgICAgICB0aGlzLl9waGFzZSA9IEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0dMT0JBTF9TUEVDSUZJQztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBoZXJlIHdlIHNjYW4gdGhlIG1haW4gcHJvZ3MgYWNjb3JkaW5nIHRvIHRoZSBsb2FkIHNlcXVlbmNlIChmaXJzdCB0byBsYXN0KS5cclxuICAgICAgICAgICAgdGhpcy5fcGhhc2UgPSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9HTE9CQUw7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5fdGFzayA9IDxUYXNrPkFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5HZXRNYWluUHJvZ0J5Q3RsSWR4KC0xLCBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5nZXRDb21wTWFpblByZ1RhYigpLmdldEN0bElkeCgwKSk7XHJcbiAgICAgICAgICB0aGlzLl9ydEV2dC5zZXRNYWluUHJnQ3JlYXRvcih0aGlzLl90YXNrKTtcclxuICAgICAgICAgIGlmICh0aGlzLl90YXNrID09PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9HTE9CQUxfU1BFQ0lGSUM6XHJcbiAgICAgIGNhc2UgRXZlbnRIYW5kbGVyUG9zaXRpb24uUEhBU0VfR0xPQkFMOiB7XHJcbiAgICAgICAgdGhpcy5fdGFzayA9IG1HRGF0YS5nZXROZXh0TWFpblByb2coY3RsSWR4KTtcclxuICAgICAgICBpZiAodGhpcy5fdGFzayA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX3BoYXNlID09PSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9HTE9CQUwpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgICAvLyBzcGVjaWZpYyBzZWFyY2ggaXMgb3Zlci4gc3RhcnQgdGhlIG5vbiBzcGVjaWZpYyBzZWFyY2ggZnJvbSB0aGUgZmlyc3QgdGFzay5cclxuICAgICAgICAgIHRoaXMuX3BoYXNlID0gRXZlbnRIYW5kbGVyUG9zaXRpb24uUEhBU0VfQ09OVFJPTF9OT05fU1BFQ0lGSUM7XHJcbiAgICAgICAgICB0aGlzLl90YXNrID0gdGhpcy5fb3JnVGFzaztcclxuICAgICAgICAgIHRoaXMuX3ByZXZUYXNrID0gdGhpcy5fb3JnUHJldlRhc2s7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gRXZlbnRIYW5kbGVyUG9zaXRpb24uZ29VcFRhc2tDaGFpbigpIGludmFsaWQgcGhhc2U6IFwiICsgdGhpcy5fcGhhc2UpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3Rhc2sgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICB0aGlzLl9oYW5kbGVyc1RhYiA9IHRoaXMuX3Rhc2suZ2V0SGFuZGxlcnNUYWIoKTtcclxuICAgIGlmICh0aGlzLl9oYW5kbGVyc1RhYiA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRoaXMuZ29VcFRhc2tDaGFpbigpO1xyXG5cclxuICAgIHRoaXMuX2hhbmRsZXJJZHggPSAtMTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vICAgaWYgdGhlIGN1cnJlbnQgdGFzayBhbmQgaXRzIHBhcmVudCBhcmUgZnJvbSBkaWZmZXJlbnQgY29tcG9uZW50cyB0aGVuXHJcbiAgLy8vICAgc2V0IHRoZSB0YXNrIHRvIHRoZSBtYWluIHByb2dyYW0gb2YgdGhlIGNvbXBvbmVudCBvZiB0aGUgY3VycmVudCB0YXNrLlxyXG4gIC8vLyAgIG90aGVyd2lzZSwgc2V0IHRoZSB0YXNrIHRvIGJlIHRoZSBwYXJlbnQgb2YgdGhlIGN1cnJlbnQgdGFza1xyXG4gIHByaXZhdGUgZ2V0UGFyZW50T3JDb21wTWFpblByZygpOiB2b2lkIHtcclxuICAgIGxldCBjdGxJZHg6IG51bWJlciA9IHRoaXMuX3Rhc2suZ2V0Q3RsSWR4KCk7XHJcbiAgICB0aGlzLl9wcmV2VGFzayA9IHRoaXMuX3Rhc2s7XHJcblxyXG4gICAgLy8gUmV0cmlldmUgdGhlIHRhc2sncyBjYWxsaW5nLXBhcmVudC4gV2UgbmVlZCB0aGUgdGFzayB3aG8gaW52b2tlZCB0aGUgY3VycmVudCB0YXNrXHJcbiAgICAvLyByYXRoZXIgdGhhbiB0aGUgdGFzaydzIHRyaWdnZXJpbmcgcGFyZW50LlxyXG4gICAgLy8gVGhlIFBhdGggUGFyZW50IGlzIHRoZSBwYXJlbnQgb2YgdGhhdCB0YXNrIGFzIGlmIHRoZSBzZXJ2ZXIgaGFkIGRvbmUgYnVpbGQgcGF0aC4gSXQgaXMgbW9yZSBsb2dpY2FsIHRvIHNlYXJjaCB1c2luZyB0aGUgdHJpZ2dlciB0YXNrIHRyZWVcclxuICAgIC8vIGJ1dCBzaW5jZSB0aGUgb25saW5lL3NlcnZlciBkb2VzIG5vdCB1c2UgdGhlIHRyaWdnZXIgdHJlZSwgd2UgZGVjaWRlZCBub3QgdG8gdXNlIGl0IGhlcmUgYXMgd2VsbC5cclxuICAgIC8vIElmIHRoZSBwYXRoIHBhcmVudCBpcyBmcm9tIGEgZGlmZmVyZW50IGNvbXAsIGl0IG1lYW5zIHRoYXQgYmV0d2VlbiBjdXJyIHRhc2sgYW5kIHBhcmVudCB0aGVyZSBzaG91bGQgYmUgYSBjb21wIG1haW4gcHJvZy5cclxuICAgIGxldCBwYXRoUGFyZW50VGFzazogVGFzayA9IHRoaXMuX3Rhc2suUGF0aFBhcmVudFRhc2s7XHJcbiAgICBpZiAocGF0aFBhcmVudFRhc2sgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5fdGFzayA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjaGVjayBpZiB0aGUgcGFyZW50IHRhc2sgaXMgZnJvbSBhbm90aGVyIGNvbXBvbmVudFxyXG4gICAgaWYgKGN0bElkeCAhPT0gcGF0aFBhcmVudFRhc2suZ2V0Q3RsSWR4KCkpIHtcclxuICAgICAgLy8gcmVwbGFjZSB0aGUgcGFyZW50IHRhc2sgdG8gc2VhcmNoIHdpdGggdGhlIGNvbXAgbWFpbiBwcm9ncmFtLiBsYXRlciBvbiwgdGhlIG1haW4gcHJvZyB3aWxsIGJlIHJlcGxhY2VkIHdpdGhcclxuICAgICAgLy8gdGhlIHJlYWwgUGF0aFBhcmVudFRhc2suXHJcbiAgICAgIHRoaXMuX3J0RXZ0LnNldE1haW5QcmdDcmVhdG9yKHRoaXMuX3Rhc2spO1xyXG4gICAgICB0aGlzLl90YXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldE1haW5Qcm9nQnlDdGxJZHgoLTEsIGN0bElkeCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fcnRFdnQuc2V0TWFpblByZ0NyZWF0b3IobnVsbCk7XHJcbiAgICAgIHRoaXMuX3Rhc2sgPSBwYXRoUGFyZW50VGFzaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRIYW5kbGVyUG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2V2ZW50L0V2ZW50SGFuZGxlclBvc2l0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQU0zRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBTXZELE1BQU0sT0FBTyxvQkFBb0I7SUFnQi9CO1FBVlEsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBQ25DLGlCQUFZLEdBQVMsSUFBSSxDQUFDO1FBQzFCLGFBQVEsR0FBUyxJQUFJLENBQUM7UUFDdEIsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUNuQixjQUFTLEdBQVMsSUFBSSxDQUFDO1FBQ3ZCLFdBQU0sR0FBaUIsSUFBSSxDQUFDO1FBQzVCLFVBQUssR0FBUyxJQUFJLENBQUM7SUFJM0IsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFxQjtRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3ZELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssY0FBYyxDQUFDLG9CQUFvQjtZQUMzRCxJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixDQUFDLDBCQUEwQixDQUFDO2FBQzNEO1lBQ0gsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssY0FBYyxDQUFDLG9CQUFvQjtnQkFDM0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQywwQkFBMEIsQ0FBQzs7Z0JBRTlELElBQUksQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLENBQUMsc0JBQXNCLENBQUM7U0FDN0Q7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNoRCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUlELE9BQU8sQ0FBQyxHQUFrQjtRQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7WUFFM0IsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUdPLFNBQVMsQ0FBQyxHQUFpQjtRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBR08sU0FBUztRQUNmLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBRWQsSUFBSSxNQUFvQixDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxjQUFjLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsS0FBSyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUU7WUFFdkksUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFO2dCQUNyQyxLQUFLLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDO2dCQUMxQyxLQUFLLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDO2dCQUMxQyxLQUFLLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDO2dCQUN6QyxLQUFLLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDO2dCQUN6QyxLQUFLLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDO2dCQUMxQyxLQUFLLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQ3pDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUMsRUFBRTt3QkFDM0IsS0FBSyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRTs0QkFDbEcsSUFBSSxPQUFPLEdBQWlCLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzs0QkFDM0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtnQ0FDL0YsT0FBTyxPQUFPLENBQUM7NkJBQ2hCO3lCQUNGO3FCQUNGO29CQUdELE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUVEO29CQUVFLE1BQU07YUFDVDtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUMvQixJQUFJLE9BQU8sR0FBaUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNFLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsS0FBSyxvQkFBb0IsQ0FBQyxzQkFBc0I7b0JBQzlDLElBQUksT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7d0JBQzFDLE9BQU8sT0FBTyxDQUFDO29CQUNqQixTQUFTO2dCQUVYLEtBQUssb0JBQW9CLENBQUMsMEJBQTBCO29CQUNsRCxJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO3dCQUM3QyxPQUFPLE9BQU8sQ0FBQztvQkFDakIsU0FBUztnQkFFWCxLQUFLLG9CQUFvQixDQUFDLHFCQUFxQjtvQkFDN0MsSUFBSSxPQUFPLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzt3QkFDaEQsT0FBTyxPQUFPLENBQUM7b0JBQ2pCLFNBQVM7Z0JBRVgsS0FBSyxvQkFBb0IsQ0FBQyxZQUFZO29CQUNwQyxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO3dCQUN4QyxPQUFPLE9BQU8sQ0FBQztvQkFDakIsU0FBUztnQkFFWDtvQkFDRSxNQUFNLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLG1EQUFtRCxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDOUcsTUFBTTthQUNUO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHTyxpQkFBaUI7UUFHdkIsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQzs7WUFFbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUUxQyxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFFbkQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDOztnQkFFaEMsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFJTyxhQUFhO1FBQ25CLElBQUksTUFBTSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUMsSUFBSSxNQUFNLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUU1QyxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDbkIsS0FBSyxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQztZQUNqRCxLQUFLLG9CQUFvQixDQUFDLDBCQUEwQixDQUFDLENBQUM7Z0JBR3BELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFO29CQUM1QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDOUIsTUFBTTtpQkFDUDtxQkFDSTtvQkFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxjQUFjLENBQUMsaUJBQWlCO3dCQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLGNBQWMsQ0FBQyxtQkFBbUI7d0JBQzVELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssY0FBYyxDQUFDLGlCQUFpQjt3QkFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFJNUUsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTs0QkFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUM1QyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLE1BQU0sR0FBRyxDQUFDO2dDQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFTLFlBQVksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUNwSTs2QkFDSTs0QkFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDOzRCQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzt5QkFDdkI7d0JBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDcEMsTUFBTTtxQkFDUDtvQkFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssb0JBQW9CLENBQUMsc0JBQXNCLEVBQUU7d0JBRS9ELElBQUksQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLENBQUMscUJBQXFCLENBQUM7cUJBQzFEO3lCQUNJO3dCQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLENBQUMsWUFBWSxDQUFDO3FCQUNqRDtvQkFFRCxJQUFJLENBQUMsS0FBSyxHQUFTLFlBQVksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNqSSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUk7d0JBQ3JCLE9BQU8sS0FBSyxDQUFDO29CQUNmLE1BQU07aUJBQ1A7YUFDRjtZQUNELEtBQUssb0JBQW9CLENBQUMscUJBQXFCLENBQUM7WUFDaEQsS0FBSyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO29CQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssb0JBQW9CLENBQUMsWUFBWTt3QkFDbkQsT0FBTyxLQUFLLENBQUM7b0JBR2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQywwQkFBMEIsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7aUJBQ3BDO2dCQUNELE1BQU07YUFDUDtZQUNEO2dCQUNFLE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMseURBQXlELEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNwSCxNQUFNO1NBQ1Q7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtZQUNyQixPQUFPLEtBQUssQ0FBQztRQUVmLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNoRCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSTtZQUM1QixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUtPLHNCQUFzQjtRQUM1QixJQUFJLE1BQU0sR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQU81QixJQUFJLGNBQWMsR0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUNyRCxJQUFJLGNBQWMsS0FBSyxJQUFJLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsT0FBTztTQUNSO1FBR0QsSUFBSSxNQUFNLEtBQUssY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBR3pDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxLQUFLLEdBQVMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM3RTthQUNJO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQztTQUM3QjtJQUNILENBQUM7O0FBcFFjLDJDQUFzQixHQUFXLENBQUMsQ0FBQztBQUNuQywrQ0FBMEIsR0FBVyxDQUFDLENBQUM7QUFDdkMsaUNBQVksR0FBVyxDQUFDLENBQUM7QUFDekIsMENBQXFCLEdBQVcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbnRlcm5hbEludGVyZmFjZSwgTG9nZ2VyfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0hhbmRsZXJzVGFibGV9IGZyb20gXCIuLi9ydC9IYW5kbGVyc1RhYmxlXCI7XHJcbmltcG9ydCB7UnVuVGltZUV2ZW50fSBmcm9tIFwiLi9SdW5UaW1lRXZlbnRcIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge0V2ZW50SGFuZGxlcn0gZnJvbSBcIi4vRXZlbnRIYW5kbGVyXCI7XHJcbmltcG9ydCB7TUdEYXRhfSBmcm9tIFwiLi4vdGFza3MvTUdEYXRhXCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBBY2Nlc3NIZWxwZXIgfSBmcm9tIFwiLi4vQWNjZXNzSGVscGVyXCI7XHJcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBhbiBvYmplY3Qgb2YgdGhpcyBjbGFzcyBwb2ludHMgdG8gdGhlIHBvc2l0aW9uIG9mIGFuIGV2ZW50IGhhbmRsZXIgaW4gdGhlXHJcbi8vLyAgIGNoYWluIG9mIHRoZSBldmVudCBoYW5kbGVyc1xyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgRXZlbnRIYW5kbGVyUG9zaXRpb24ge1xyXG4gIHByaXZhdGUgc3RhdGljIFBIQVNFX0NPTlRST0xfU1BFQ0lGSUM6IG51bWJlciA9IDE7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgUEhBU0VfQ09OVFJPTF9OT05fU1BFQ0lGSUM6IG51bWJlciA9IDI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgUEhBU0VfR0xPQkFMOiBudW1iZXIgPSAzO1xyXG4gIHByaXZhdGUgc3RhdGljIFBIQVNFX0dMT0JBTF9TUEVDSUZJQzogbnVtYmVyID0gNDtcclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGxlcklkeDogbnVtYmVyID0gMDsgLy8gdGhlIGluZGV4IG9mIHRoZSBoYW5kbGVyIHdpdGhpbiB0aGUgdGFza1xyXG4gIHByaXZhdGUgX2hhbmRsZXJzVGFiOiBIYW5kbGVyc1RhYmxlID0gbnVsbDtcclxuICBwcml2YXRlIF9vcmdQcmV2VGFzazogVGFzayA9IG51bGw7IC8vIHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgY2hlY2tlZCB0YXNrXHJcbiAgcHJpdmF0ZSBfb3JnVGFzazogVGFzayA9IG51bGw7IC8vIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBjaGVja2VkIHRhc2tcclxuICBwcml2YXRlIF9waGFzZTogbnVtYmVyID0gMDsgLy8gdGhlIHBoYXNlIG9mIHRoZSBzZWFyY2g6IGNvbnRyb2wgc3BlY2lmaWMsIGNvbnRyb2wgbm9uLXNwZWNpZmljLCBnbG9iYWxcclxuICBwcml2YXRlIF9wcmV2VGFzazogVGFzayA9IG51bGw7IC8vIHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgY2hlY2tlZCB0YXNrXHJcbiAgcHJpdmF0ZSBfcnRFdnQ6IFJ1blRpbWVFdmVudCA9IG51bGw7IC8vIHRoZSBldmVudFxyXG4gIHByaXZhdGUgX3Rhc2s6IFRhc2sgPSBudWxsOyAvLyByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgY2hlY2tlZCB0YXNrXHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbiAgLy8vICAgaW5pdCB0aGUgcG9zaXRpb24gdG8gc3RhcnQgYSBuZXcgY2hhaW4gb2Ygc2VhcmNoXHJcbiAgaW5pdChydEV2ZW50OiBSdW5UaW1lRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3J0RXZ0ID0gcnRFdmVudDtcclxuICAgIHRoaXMuX3Rhc2sgPSA8VGFzaz50aGlzLl9ydEV2dC5nZXRUYXNrKCk7XHJcbiAgICBpZiAodGhpcy5fdGFzay5pc01haW5Qcm9nKCkpIHtcclxuICAgICAgdGhpcy5fcHJldlRhc2sgPSA8VGFzaz50aGlzLl9ydEV2dC5nZXRNYWluUHJnQ3JlYXRvcigpO1xyXG4gICAgICBpZiAodGhpcy5fcHJldlRhc2sgIT09IG51bGwgJiYgdGhpcy5fcHJldlRhc2suaXNNYWluUHJvZygpKVxyXG4gICAgICAgIHRoaXMuX3ByZXZUYXNrID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocnRFdmVudC5nZXRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUl9GVU5DKVxyXG4gICAgICB0aGlzLl9waGFzZSA9IEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0NPTlRST0xfTk9OX1NQRUNJRklDO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChydEV2ZW50LmdldFR5cGUoKSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSX0ZVTkMpXHJcbiAgICAgICAgdGhpcy5fcGhhc2UgPSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9DT05UUk9MX05PTl9TUEVDSUZJQztcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuX3BoYXNlID0gRXZlbnRIYW5kbGVyUG9zaXRpb24uUEhBU0VfQ09OVFJPTF9TUEVDSUZJQztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9vcmdUYXNrID0gdGhpcy5fdGFzaztcclxuICAgIHRoaXMuX29yZ1ByZXZUYXNrID0gdGhpcy5fcHJldlRhc2s7XHJcbiAgICB0aGlzLl9oYW5kbGVyc1RhYiA9IHRoaXMuX3Rhc2suZ2V0SGFuZGxlcnNUYWIoKTtcclxuICAgIGlmICh0aGlzLl9oYW5kbGVyc1RhYiA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmdvVXBUYXNrQ2hhaW4oKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9oYW5kbGVySWR4ID0gLTE7XHJcbiAgfVxyXG5cclxuICBnZXROZXh0KGV2dDogUnVuVGltZUV2ZW50KTogRXZlbnRIYW5kbGVyO1xyXG4gIGdldE5leHQoKTogRXZlbnRIYW5kbGVyO1xyXG4gIGdldE5leHQoZXZ0PzogUnVuVGltZUV2ZW50KTogRXZlbnRIYW5kbGVyIHtcclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoZXZ0KSlcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV4dF8wKGV2dCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB0aGlzLmdldE5leHRfMSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vICAgY2hhbmdlcyB0aGUgY3VycmVudCBydW4gdGltZSBldmVudCBhbmQgcmV0dXJucyB0aGUgbmV4dCBldmVudCBoYW5kbGVyXHJcbiAgcHJpdmF0ZSBnZXROZXh0XzAoZXZ0OiBSdW5UaW1lRXZlbnQpOiBFdmVudEhhbmRsZXIge1xyXG4gICAgdGhpcy5fcnRFdnQgPSBldnQ7XHJcbiAgICByZXR1cm4gdGhpcy5nZXROZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvLy8gICByZXR1cm5zIHRoZSBuZXh0IGV2ZW50IGhhbmRsZXJcclxuICBwcml2YXRlIGdldE5leHRfMSgpOiBFdmVudEhhbmRsZXIge1xyXG4gICAgaWYgKHRoaXMuX2hhbmRsZXJzVGFiID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBsZXQgcmVzdWx0OiBFdmVudEhhbmRsZXI7XHJcblxyXG4gICAgaWYgKHRoaXMuX3J0RXZ0LmdldFR5cGUoKSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTCAmJiB0aGlzLl9ydEV2dC5nZXRJbnRlcm5hbENvZGUoKSAhPT0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZBUklBQkxFKSB7XHJcbiAgICAgIC8vIHNwZWNpYWwgdHJlYXRtZW50IGZvciBUQVNLLCBSRUNPUkQgYW5kIENPTlRST0wgbGV2ZWwgUHJlZml4L1N1ZmZpeCBldmVudHNcclxuICAgICAgc3dpdGNoICh0aGlzLl9ydEV2dC5nZXRJbnRlcm5hbENvZGUoKSkge1xyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfUFJFRklYOlxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfU1VGRklYOlxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19QUkVGSVg6XHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1NVRkZJWDpcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWDpcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1NVRkZJWDoge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2hhbmRsZXJJZHggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGZvciAodGhpcy5faGFuZGxlcklkeCA9IHRoaXMuX2hhbmRsZXJzVGFiLmdldFNpemUoKSAtIDE7IHRoaXMuX2hhbmRsZXJJZHggPj0gMDsgdGhpcy5faGFuZGxlcklkeC0tKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGhhbmRsZXI6IEV2ZW50SGFuZGxlciA9IHRoaXMuX2hhbmRsZXJzVGFiLmdldEhhbmRsZXIodGhpcy5faGFuZGxlcklkeCk7XHJcbiAgICAgICAgICAgICAgaWYgKChoYW5kbGVyLmlzTm9uU3BlY2lmaWNIYW5kbGVyT2YodGhpcy5fcnRFdnQpKSB8fCAoaGFuZGxlci5pc1NwZWNpZmljSGFuZGxlck9mKHRoaXMuX3J0RXZ0KSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIGFuIGV2ZW50IGhhbmRsZXIgd2FzIG5vdCBmb3VuZCBvciB3YXMgcmV0dXJuZWQgaW4gYSBwcmV2aW91cyBjYWxsIHRvIHRoaXMgbWV0aG9kXHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAvLyBvdGhlciBpbnRlcm5hbCBldmVudHMgc2hvdWxkIGNvbnRpbnVlXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdoaWxlICh0aGlzLnNldE5leHRIYW5kbGVySWR4KCkpIHtcclxuICAgICAgbGV0IGhhbmRsZXI6IEV2ZW50SGFuZGxlciA9IHRoaXMuX2hhbmRsZXJzVGFiLmdldEhhbmRsZXIodGhpcy5faGFuZGxlcklkeCk7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5fcGhhc2UpIHtcclxuICAgICAgICBjYXNlIEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0NPTlRST0xfU1BFQ0lGSUM6XHJcbiAgICAgICAgICBpZiAoaGFuZGxlci5pc1NwZWNpZmljSGFuZGxlck9mKHRoaXMuX3J0RXZ0KSlcclxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXI7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgY2FzZSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9DT05UUk9MX05PTl9TUEVDSUZJQzpcclxuICAgICAgICAgIGlmIChoYW5kbGVyLmlzTm9uU3BlY2lmaWNIYW5kbGVyT2YodGhpcy5fcnRFdnQpKVxyXG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlcjtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBjYXNlIEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0dMT0JBTF9TUEVDSUZJQzpcclxuICAgICAgICAgIGlmIChoYW5kbGVyLmlzR2xvYmFsU3BlY2lmaWNIYW5kbGVyT2YodGhpcy5fcnRFdnQpKVxyXG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlcjtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBjYXNlIEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0dMT0JBTDpcclxuICAgICAgICAgIGlmIChoYW5kbGVyLmlzR2xvYmFsSGFuZGxlck9mKHRoaXMuX3J0RXZ0KSlcclxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXI7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIEV2ZW50SGFuZGxlclBvc2l0aW9uLmdldE5leHQoKSBpbnZhbGlkIHBoYXNlOiBcIiArIHRoaXMuX3BoYXNlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gICByZXR1cm5zIHRydWUgaWYgYSBuZXh0IGhhbmRsZXIgd2FzIGZvdW5kXHJcbiAgcHJpdmF0ZSBzZXROZXh0SGFuZGxlcklkeCgpOiBib29sZWFuIHtcclxuXHJcbiAgICAvLyB0aGUgaGFuZGxlciBpZHggaXMgKC0xKSB3aGVuIHN0YXJ0aW5nIHRvIHNlYXJjaCBpbiBhIHRhc2tcclxuICAgIGlmICh0aGlzLl9oYW5kbGVySWR4IDwgMClcclxuICAgICAgdGhpcy5faGFuZGxlcklkeCA9IHRoaXMuX2hhbmRsZXJzVGFiLmdldFNpemUoKSAtIDE7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX2hhbmRsZXJJZHggPSB0aGlzLl9oYW5kbGVySWR4IC0gMTtcclxuXHJcbiAgICBpZiAodGhpcy5faGFuZGxlcklkeCA8IDAgfHwgdGhpcy5fdGFzay5pc0Fib3J0aW5nKCkpIHtcclxuICAgICAgLy8gaWYgdGhlcmUgYXJlIG5vIG1vcmUgaGFuZGxlcnMgaW4gdGhlIHRhc2sgdGhlbiBnbyB1cCB0aGUgY2hhaW4gb2YgdGFza3NcclxuICAgICAgaWYgKHRoaXMuZ29VcFRhc2tDaGFpbigpKVxyXG4gICAgICAgIHJldHVybiB0aGlzLnNldE5leHRIYW5kbGVySWR4KCk7XHJcbiAgICAgIGVsc2UgLy8gbm8gbW9yZSB0YXNrcyBpbiB0aGUgY2hhaW5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gICBnZXQgdGhlIG5leHQgdGFzayBpbiB0aGUgdGFza3MgY2hhaW4gYW5kIHJldHVybnMgZmFsc2UgaWYgbm8gdGFzayB3YXMgZm91bmQuXHJcbiAgLy8vICAgdGhpcyBmdW5jdGlvbiBjaGFuZ2VzIHRoZSBwaGFzZSB2YXJpYWJsZSBhY2NvcmRpbmdseVxyXG4gIHByaXZhdGUgZ29VcFRhc2tDaGFpbigpOiBib29sZWFuIHtcclxuICAgIGxldCBtR0RhdGE6IE1HRGF0YSA9IHRoaXMuX3Rhc2suZ2V0TUdEYXRhKCk7XHJcbiAgICBsZXQgY3RsSWR4OiBudW1iZXIgPSB0aGlzLl90YXNrLmdldEN0bElkeCgpO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5fcGhhc2UpIHtcclxuICAgICAgY2FzZSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9DT05UUk9MX1NQRUNJRklDOlxyXG4gICAgICBjYXNlIEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0NPTlRST0xfTk9OX1NQRUNJRklDOiB7XHJcbiAgICAgICAgLy8gbm9uIHNwZWNpZmljIGhhbmRsZXJzIGFyZSBzZWFyY2hlZCB0aWxsIHdlIGhpdCBvdXIgbWFpbiBwcm9ncmFtIChpbmNsdXNpdmUpXHJcbiAgICAgICAgLy8gYWZ0ZXJ3YXJkcyB3ZSBzd2l0Y2ggdG8gZ2xvYmFsIHBoYXNlLlxyXG4gICAgICAgIGlmICghdGhpcy5fdGFzay5pc01haW5Qcm9nKCkpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0UGFyZW50T3JDb21wTWFpblByZygpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgLy8gaW50ZXJuYWwsIGludGVybmFsLCBzeXN0ZW0gYW5kIHVzZXIgZXZlbnRzIG1heSBjcm9zcyBjb21wb25lbnQgYm91bmRlcmllc1xyXG4gICAgICAgICAgaWYgKCh0aGlzLl9ydEV2dC5nZXRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfUFVCTElDIHx8XHJcbiAgICAgICAgICAgICAgIHRoaXMuX3J0RXZ0LmdldFR5cGUoKSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTCB8fFxyXG4gICAgICAgICAgICAgICB0aGlzLl9ydEV2dC5nZXRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNIHx8XHJcbiAgICAgICAgICAgICAgIHRoaXMuX3J0RXZ0LmdldFR5cGUoKSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSKSAmJiBjdGxJZHggPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIGxvYWQgdGhlIFJUIHBhcmVudCBvZiB0aGUgcHJldmlvdXMgdGFzay4gSWYgbm8gcHJldnRhc2sgZXhpc3RzIHRoZW4gd2UgYXJlXHJcbiAgICAgICAgICAgIC8vIHNpbXBseSBydW5uaW5nIG9uIHRoZSBtYWluIHByb2dzIGxpc3QgKGZvciBleGFtcGxlLCB3aGVuIGEgbWFpbiBwcmcgY2F0Y2hlc1xyXG4gICAgICAgICAgICAvLyBhIHRpbWVyIGV2ZW50LCBubyBwcmV2dGFzayBleGlzdHMuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9wcmV2VGFzayA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3Rhc2sgPSBtR0RhdGEuZ2V0TmV4dE1haW5Qcm9nKGN0bElkeCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3Rhc2sgPT09IG51bGwgJiYgY3RsSWR4ID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Rhc2sgPSA8VGFzaz5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0TWFpblByb2dCeUN0bElkeCgtMSwgQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIuZ2V0Q29tcE1haW5QcmdUYWIoKS5nZXRDdGxJZHgoMCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vIHRoZSBjb21wb25lbnQgbWFpbiBwcm9ncmFtIHRoYXQgd2FzIHNldCBpbiBnZXRQYXJlbnRPckNvbXBNYWluUHJnLCBpcyBub3cgcmVwbGFjZWQgYmFjayB0byB0aGUgcGF0aCBwYXJlbnQuXHJcbiAgICAgICAgICAgICAgdGhpcy5fdGFzayA9IHRoaXMuX3ByZXZUYXNrLlBhdGhQYXJlbnRUYXNrO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3ByZXZUYXNrID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9ydEV2dC5zZXRNYWluUHJnQ3JlYXRvcihudWxsKTsgLy8gbW92aW5nIG91dCBvZiBhIG1haW4gcHJvZ3JhbSB0byBhbm90aGVyIHRhc2tcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuX3BoYXNlID09PSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9DT05UUk9MX1NQRUNJRklDKSB7XHJcbiAgICAgICAgICAgIC8vIHNwZWNpZmljIHNlYXJjaCBpcyBvdmVyLiBzdGFydCB0aGUgbm9uIHNwZWNpZmljIHNlYXJjaCBmcm9tIHRoZSBmaXJzdCB0YXNrLlxyXG4gICAgICAgICAgICB0aGlzLl9waGFzZSA9IEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0dMT0JBTF9TUEVDSUZJQztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBoZXJlIHdlIHNjYW4gdGhlIG1haW4gcHJvZ3MgYWNjb3JkaW5nIHRvIHRoZSBsb2FkIHNlcXVlbmNlIChmaXJzdCB0byBsYXN0KS5cclxuICAgICAgICAgICAgdGhpcy5fcGhhc2UgPSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9HTE9CQUw7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5fdGFzayA9IDxUYXNrPkFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5HZXRNYWluUHJvZ0J5Q3RsSWR4KC0xLCBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5nZXRDb21wTWFpblByZ1RhYigpLmdldEN0bElkeCgwKSk7XHJcbiAgICAgICAgICB0aGlzLl9ydEV2dC5zZXRNYWluUHJnQ3JlYXRvcih0aGlzLl90YXNrKTtcclxuICAgICAgICAgIGlmICh0aGlzLl90YXNrID09PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9HTE9CQUxfU1BFQ0lGSUM6XHJcbiAgICAgIGNhc2UgRXZlbnRIYW5kbGVyUG9zaXRpb24uUEhBU0VfR0xPQkFMOiB7XHJcbiAgICAgICAgdGhpcy5fdGFzayA9IG1HRGF0YS5nZXROZXh0TWFpblByb2coY3RsSWR4KTtcclxuICAgICAgICBpZiAodGhpcy5fdGFzayA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX3BoYXNlID09PSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9HTE9CQUwpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgICAvLyBzcGVjaWZpYyBzZWFyY2ggaXMgb3Zlci4gc3RhcnQgdGhlIG5vbiBzcGVjaWZpYyBzZWFyY2ggZnJvbSB0aGUgZmlyc3QgdGFzay5cclxuICAgICAgICAgIHRoaXMuX3BoYXNlID0gRXZlbnRIYW5kbGVyUG9zaXRpb24uUEhBU0VfQ09OVFJPTF9OT05fU1BFQ0lGSUM7XHJcbiAgICAgICAgICB0aGlzLl90YXNrID0gdGhpcy5fb3JnVGFzaztcclxuICAgICAgICAgIHRoaXMuX3ByZXZUYXNrID0gdGhpcy5fb3JnUHJldlRhc2s7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gRXZlbnRIYW5kbGVyUG9zaXRpb24uZ29VcFRhc2tDaGFpbigpIGludmFsaWQgcGhhc2U6IFwiICsgdGhpcy5fcGhhc2UpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3Rhc2sgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICB0aGlzLl9oYW5kbGVyc1RhYiA9IHRoaXMuX3Rhc2suZ2V0SGFuZGxlcnNUYWIoKTtcclxuICAgIGlmICh0aGlzLl9oYW5kbGVyc1RhYiA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRoaXMuZ29VcFRhc2tDaGFpbigpO1xyXG5cclxuICAgIHRoaXMuX2hhbmRsZXJJZHggPSAtMTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vICAgaWYgdGhlIGN1cnJlbnQgdGFzayBhbmQgaXRzIHBhcmVudCBhcmUgZnJvbSBkaWZmZXJlbnQgY29tcG9uZW50cyB0aGVuXHJcbiAgLy8vICAgc2V0IHRoZSB0YXNrIHRvIHRoZSBtYWluIHByb2dyYW0gb2YgdGhlIGNvbXBvbmVudCBvZiB0aGUgY3VycmVudCB0YXNrLlxyXG4gIC8vLyAgIG90aGVyd2lzZSwgc2V0IHRoZSB0YXNrIHRvIGJlIHRoZSBwYXJlbnQgb2YgdGhlIGN1cnJlbnQgdGFza1xyXG4gIHByaXZhdGUgZ2V0UGFyZW50T3JDb21wTWFpblByZygpOiB2b2lkIHtcclxuICAgIGxldCBjdGxJZHg6IG51bWJlciA9IHRoaXMuX3Rhc2suZ2V0Q3RsSWR4KCk7XHJcbiAgICB0aGlzLl9wcmV2VGFzayA9IHRoaXMuX3Rhc2s7XHJcblxyXG4gICAgLy8gUmV0cmlldmUgdGhlIHRhc2sncyBjYWxsaW5nLXBhcmVudC4gV2UgbmVlZCB0aGUgdGFzayB3aG8gaW52b2tlZCB0aGUgY3VycmVudCB0YXNrXHJcbiAgICAvLyByYXRoZXIgdGhhbiB0aGUgdGFzaydzIHRyaWdnZXJpbmcgcGFyZW50LlxyXG4gICAgLy8gVGhlIFBhdGggUGFyZW50IGlzIHRoZSBwYXJlbnQgb2YgdGhhdCB0YXNrIGFzIGlmIHRoZSBzZXJ2ZXIgaGFkIGRvbmUgYnVpbGQgcGF0aC4gSXQgaXMgbW9yZSBsb2dpY2FsIHRvIHNlYXJjaCB1c2luZyB0aGUgdHJpZ2dlciB0YXNrIHRyZWVcclxuICAgIC8vIGJ1dCBzaW5jZSB0aGUgb25saW5lL3NlcnZlciBkb2VzIG5vdCB1c2UgdGhlIHRyaWdnZXIgdHJlZSwgd2UgZGVjaWRlZCBub3QgdG8gdXNlIGl0IGhlcmUgYXMgd2VsbC5cclxuICAgIC8vIElmIHRoZSBwYXRoIHBhcmVudCBpcyBmcm9tIGEgZGlmZmVyZW50IGNvbXAsIGl0IG1lYW5zIHRoYXQgYmV0d2VlbiBjdXJyIHRhc2sgYW5kIHBhcmVudCB0aGVyZSBzaG91bGQgYmUgYSBjb21wIG1haW4gcHJvZy5cclxuICAgIGxldCBwYXRoUGFyZW50VGFzazogVGFzayA9IHRoaXMuX3Rhc2suUGF0aFBhcmVudFRhc2s7XHJcbiAgICBpZiAocGF0aFBhcmVudFRhc2sgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5fdGFzayA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjaGVjayBpZiB0aGUgcGFyZW50IHRhc2sgaXMgZnJvbSBhbm90aGVyIGNvbXBvbmVudFxyXG4gICAgaWYgKGN0bElkeCAhPT0gcGF0aFBhcmVudFRhc2suZ2V0Q3RsSWR4KCkpIHtcclxuICAgICAgLy8gcmVwbGFjZSB0aGUgcGFyZW50IHRhc2sgdG8gc2VhcmNoIHdpdGggdGhlIGNvbXAgbWFpbiBwcm9ncmFtLiBsYXRlciBvbiwgdGhlIG1haW4gcHJvZyB3aWxsIGJlIHJlcGxhY2VkIHdpdGhcclxuICAgICAgLy8gdGhlIHJlYWwgUGF0aFBhcmVudFRhc2suXHJcbiAgICAgIHRoaXMuX3J0RXZ0LnNldE1haW5QcmdDcmVhdG9yKHRoaXMuX3Rhc2spO1xyXG4gICAgICB0aGlzLl90YXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldE1haW5Qcm9nQnlDdGxJZHgoLTEsIGN0bElkeCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fcnRFdnQuc2V0TWFpblByZ0NyZWF0b3IobnVsbCk7XHJcbiAgICAgIHRoaXMuX3Rhc2sgPSBwYXRoUGFyZW50VGFzaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|