@magic-xpa/gui 4.1100.0-dev4110.7 → 4.1100.0-dev4110.70
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/esm2020/src/Commands.mjs +9 -3
- package/esm2020/src/gui/low/GuiInteractive.mjs +12 -1
- package/esm2020/src/management/gui/MgFormBase.mjs +8 -5
- package/esm2020/src/management/tasks/GuiTaskBase.mjs +2 -2
- package/fesm2015/magic-xpa-gui.mjs +116 -89
- package/fesm2015/magic-xpa-gui.mjs.map +1 -1
- package/fesm2020/magic-xpa-gui.mjs +94 -73
- package/fesm2020/magic-xpa-gui.mjs.map +1 -1
- package/package.json +2 -2
- package/src/Commands.d.ts +1 -0
- package/src/gui/low/GuiInteractive.d.ts +3 -1
- package/src/management/gui/MgFormBase.d.ts +2 -2
|
@@ -269,7 +269,7 @@ export class GuiTaskBase {
|
|
|
269
269
|
async InitForm() {
|
|
270
270
|
if (this.Form !== null && this.isOpenWin()) {
|
|
271
271
|
this.Form.InInitForm = true;
|
|
272
|
-
this.Form.init();
|
|
272
|
+
await this.Form.init();
|
|
273
273
|
this.SetRefreshType(Constants.TASK_REFRESH_FORM);
|
|
274
274
|
await this.RefreshDisplay();
|
|
275
275
|
Commands.beginInvoke();
|
|
@@ -507,4 +507,4 @@ export class GuiTaskBase {
|
|
|
507
507
|
}
|
|
508
508
|
}
|
|
509
509
|
GuiTaskBase.MAIN_PRG_PARENT_ID = 32768;
|
|
510
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpVGFza0Jhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvdGFza3MvR3VpVGFza0Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFPLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDL0YsT0FBTyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBb0IsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBT3hHLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUkzQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdELE1BQU0sT0FBZ0IsV0FBVztJQTZDeEIsSUFBSTtRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQyxx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eEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFNTyxlQUFlLENBQUMsUUFBZ0I7UUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFNTyxVQUFVLENBQUMsUUFBZ0I7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFNRCxVQUFVLENBQUMsU0FBa0I7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDNUIsQ0FBQztJQU1ELGNBQWMsQ0FBQyxRQUFnQjtRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQU1PLFFBQVEsQ0FBQyxRQUFnQjtRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELDZCQUE2QixDQUFDLE1BQWM7UUFDMUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBUUQsa0JBQWtCLENBQUMsR0FBVztRQUU1QixJQUFJLEdBQUcsSUFBSSxJQUFJO1lBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBUUQseUJBQXlCLENBQUMsS0FBYTtRQUNyQyxJQUFJLEdBQUcsR0FBVyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7O0FBeDdCZ0IsOEJBQWtCLEdBQVcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMaXN0LCBOTnVtYmVyLCBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiwgTlN0cmluZywgUmVmUGFyYW19IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0NvbnN0YW50cywgTG9nZ2VyX0xvZ0xldmVscywgU3RvcmFnZUF0dHJpYnV0ZSwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXJ9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7SVRhc2t9IGZyb20gXCIuL0lUYXNrXCI7XHJcbmltcG9ydCB7UHJvcFBhcmVudEludGVyZmFjZX0gZnJvbSBcIi4uLy4uL2d1aS9Qcm9wUGFyZW50SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7SUZsb3dNb25pdG9yUXVldWV9IGZyb20gXCIuLi8uLi9JRmxvd01vbml0b3JRdWV1ZVwiO1xyXG5pbXBvcnQge01nQ29udHJvbEJhc2V9IGZyb20gXCIuLi9ndWkvTWdDb250cm9sQmFzZVwiO1xyXG5pbXBvcnQge0d1aUZpZWxkQmFzZX0gZnJvbSBcIi4uL2RhdGEvR3VpRmllbGRCYXNlXCI7XHJcbmltcG9ydCB7TWdGb3JtQmFzZX0gZnJvbSBcIi4uL2d1aS9NZ0Zvcm1CYXNlXCI7XHJcbmltcG9ydCB7UHJvcFRhYmxlfSBmcm9tIFwiLi4vZ3VpL1Byb3BUYWJsZVwiO1xyXG5pbXBvcnQge0hlbHBzLCBNYWdpY0hlbHB9IGZyb20gXCIuLi9ndWkvSGVscHNcIjtcclxuaW1wb3J0IHtHdWlEYXRhVmlld0Jhc2V9IGZyb20gXCIuLi9kYXRhL0d1aURhdGFWaWV3QmFzZVwiO1xyXG5pbXBvcnQge0lBY3Rpb25NYW5hZ2VyfSBmcm9tIFwiLi4vZXZlbnRzL0lBY3Rpb25NYW5hZ2VyXCI7XHJcbmltcG9ydCB7UHJvcGVydHl9IGZyb20gXCIuLi9ndWkvUHJvcGVydHlcIjtcclxuaW1wb3J0IHtQcm9wSW50ZXJmYWNlfSBmcm9tIFwiLi4vZ3VpL1Byb3BJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtGaWVsZERlZn0gZnJvbSBcIi4uL2RhdGEvRmllbGREZWZcIjtcclxuaW1wb3J0IHtDb21tYW5kc30gZnJvbSBcIi4uLy4uL0NvbW1hbmRzXCI7XHJcbmltcG9ydCB7RXZlbnRzfSBmcm9tIFwiLi4vLi4vRXZlbnRzXCI7XHJcbmltcG9ydCB7R3VpQ29uc3RhbnRzfSBmcm9tIFwiLi4vLi4vR3VpQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7R3VpRGF0YUNvbGxlY3Rpb259IGZyb20gXCIuL0d1aURhdGFDb2xsZWN0aW9uXCI7XHJcbmltcG9ydCB7IENvbW1hbmRUeXBlLCBIdG1sUHJvcGVydGllcyB9IGZyb20gXCIuLi8uLi9HdWlFbnVtc1wiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gdGFzayBwcm9wZXJ0aWVzICgrIGZldyBhY2Nlc3MgbWV0aG9kcykgcmVxdWlyZWQgYW5kIHJlbGV2YW50IGZvciB0aGUgR1VJIG5hbWVzcGFjZS5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEd1aVRhc2tCYXNlIGltcGxlbWVudHMgSVRhc2ssIFByb3BQYXJlbnRJbnRlcmZhY2Uge1xyXG4gIHByb3RlY3RlZCBzdGF0aWMgTUFJTl9QUkdfUEFSRU5UX0lEOiBudW1iZXIgPSAzMjc2ODtcclxuICBfZmxvd01vbml0b3I6IElGbG93TW9uaXRvclF1ZXVlID0gbnVsbDtcclxuICBwcml2YXRlIF9rZXlib2FyZE1hcHBpbmdTdGF0ZTogbnVtYmVyID0gMHhGRkZGMDAwMDtcclxuICBfcmVmcmVzaFR5cGU6IHN0cmluZyA9IFwiVFwiO1xyXG4gIF9sYXN0UGFya2VkQ3RybDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfYnJrTGV2ZWw6IHN0cmluZyA9IG51bGw7IC8vIHRoZSBydW50aW1lIGxldmVsIChSZWNvcmQgIFN1ZmZpeCwgR3VpVGFza0Jhc2UgUHJlZml4LCBldGMuKVxyXG4gIHByaXZhdGUgX2Jya0xldmVsSW5kZXg6IG51bWJlciA9IC0xO1xyXG4gIHByaXZhdGUgX21haW5MZXZlbDogc3RyaW5nID0gbnVsbDsgLy8gdGhlIHJ1bnRpbWUgbWFpbmxldmVsXHJcbiAgcHJpdmF0ZSBfbGV2ZWw6IHN0cmluZyA9IFwiXFwwXCI7IC8vICdDJyA9IGluIGNvbnRyb2wsICdSJyA9IGluIHJlY29yZCAob3V0IG9mIGNvbnRyb2wpLCAnVCcgPSBpbiB0YXNrIChvdXQgb2YgcmVjb3JkKVxyXG4gIF9lbnRlcmVkUmVjTGV2ZWw6IGJvb2xlYW4gPSBmYWxzZTsgLy8gVFJVRSBvbmx5IGlmIHRoZSB0YXNrIHdhcyBldmVyIG1vdmVkIHRvIHJlY29yZCBsZXZlbC5cclxuICBfY3VyclBhcmtlZEZsZDogR3VpRmllbGRCYXNlID0gbnVsbDtcclxuICBwcml2YXRlIGlzSW5SZWNvbXB1dGUgPSBmYWxzZTtcclxuICAvLyBUaGlzIGZsYWcgcmVwcmVzZW50cyB0aGUgY3VycmVudCBlZGl0aW5nIGNvbnRyb2wuXHJcbiAgLy8gSXQgaXMgcmVzZXQgdG8gbnVsbCB3aGVuIHdlIGFyZSBpbiBiZXR3ZWVuIHNldHRpbmcgdGhlIGZvY3VzIGFuZCBvbmNlIHdlIHNldCB0aGUgZm9jdXMgdG8gY29udHJvbCB0aGVuIHdlIHNldCB0aGlzIGZsYWcgdG8gY3VycmVudCBmb2N1c2VkIGNvbnRyb2wuXHJcbiAgQ3VycmVudEVkaXRpbmdDb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuICBwcml2YXRlIHNob3VsZFJlc3VtZVN1YmZvcm1MYXlvdXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEFwcGxpY2F0aW9uR3VpZDogc3RyaW5nID0gbnVsbDtcclxuICBQcm9ncmFtSXNuOiBudW1iZXIgPSAwO1xyXG4gIFRhc2tJc246IG51bWJlciA9IDA7XHJcbiAgQ29udGV4dElEOiBudW1iZXIgPSAwO1xyXG4gIElzU3ViRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIF9jdGxJZHg6IG51bWJlciA9IDA7XHJcbiAgX2NvbXBJZHg6IG51bWJlciA9IDA7XHJcbiAgX2lzUHJnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgX2lzTWFpblByZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIElzSW50ZXJhY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBfdGFza1RhZzogc3RyaW5nID0gbnVsbDtcclxuICBfb3BlbldpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2FsbG93RXZlbnRzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgRm9ybTogTWdGb3JtQmFzZSA9IG51bGw7XHJcbiAgX3Byb3BUYWI6IFByb3BUYWJsZSA9IG51bGw7XHJcbiAgX2hlbHBUYWI6IEhlbHBzID0gbnVsbDtcclxuICBfbnVsbEFyaXRobWV0aWM6IHN0cmluZztcclxuICBJY29uRmlsZU5hbWU6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIElzUGFyYWxsZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBEYXRhVmlldzogR3VpRGF0YVZpZXdCYXNlID0gbnVsbDtcclxuICBBY3Rpb25NYW5hZ2VyOiBJQWN0aW9uTWFuYWdlciA9IG51bGw7XHJcbiAgU3R1ZGlvUGFyZW50VGFzazogR3VpVGFza0Jhc2UgPSBudWxsOyAvLyBwYXJlbnQgdGFzayBvZiB0aGUgc3VidGFzayBieSB0b29sa2l0IHRyZWUuXHJcblxyXG4gIHByaXZhdGUgcm91dGVyUGF0aDogc3RyaW5nID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgcm91dGVQYXJhbXM6IExpc3Q8YW55PiA9IG51bGw7XHJcbiAgcHJpdmF0ZSBpbkRlZmF1bHRSb3V0ZXJPdXRsZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLkRhdGFWaWV3LkluaXQoKTtcclxuICB9XHJcblxyXG4gIGdldCBSb3V0ZXJQYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXJQYXRoO1xyXG4gIH1cclxuXHJcbiAgZ2V0IFJvdXRlclBhcmFtcygpOiBMaXN0PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBnZXQgSW5EZWZhdWx0Um91dGVyT3V0bGV0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5EZWZhdWx0Um91dGVyT3V0bGV0O1xyXG4gIH1cclxuXHJcbiAgSXNTdWJ0YXNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgRGF0YVZpZXdXYXNSZXRyaWV2ZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaW5kaWNhdGVzIHRoYXQgdGhlIGRhdGEgdmlldyB3YXMgcmV0cmlldmVkLCBpLmUuIGl0IGlzIHBvc3NpYmxlIHRvIGV2YWx1YXRlIGV4cHJlc3Npb25zXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRhc2sgcHJlZml4IHdhcyBwZXJmb3JtZWQgZm9yIHRoaXMgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgVGFza1ByZWZpeEV4ZWN1dGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJucyB0cnVlIGlmIHRoaXMgdGFzayBzaG91bGQgYmxvY2sgYWN0aXZhdGlvbiBvZiBpdHMgYWNzZXN0b3JzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXQgSXNCbG9ja2luZ0JhdGNoKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLl9pc01haW5QcmcgJiYgdGhpcy5pc09wZW5XaW4oKSAmJiAhdGhpcy5fYWxsb3dFdmVudHMgJiYgIXRoaXMuSXNJbnRlcmFjdGl2ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fbnVsbEFyaXRobWV0aWMgPSBDb25zdGFudHMuTlVMTF9BUklUSF9VU0VfREVGO1xyXG4gICAgdGhpcy5fcHJvcFRhYiA9IG5ldyBQcm9wVGFibGUodGhpcyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRhc2sgaWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFRhc2tUYWcoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90YXNrVGFnO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgY3RsIGlkeFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0Q3RsSWR4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3RsSWR4O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBpZiB0aGlzIHRhc2sgaXMgYSBtYWluIHByb2dyYW0gb2YgYW4gaW50ZXJuYWwgb3IgZXh0ZXJuYWwgY29tcG9uZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBpc01haW5Qcm9nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzTWFpblByZztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIHRvcG1vc3QgbWdmb3JtIG9mIHRoZSBzdWJmb3JtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGdldFRvcE1vc3RGb3JtKCk6IE1nRm9ybUJhc2Uge1xyXG4gICAgbGV0IGZvcm06IE1nRm9ybUJhc2UgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLkZvcm0gIT09IG51bGwpXHJcbiAgICAgIGZvcm0gPSB0aGlzLkZvcm0uZ2V0VG9wTW9zdEZvcm0oKTtcclxuICAgIC8vIGVsc2VcclxuICAgIC8vIEFzc2VydCBzaG91bGQgbm90IGJlIGhlcmUgYmVjYXVzZSB3ZSBoYXZlIGRpZmZlcmVudCBjb25kaXRpb25zIGZvciBSQyAmIE9MLlxyXG4gICAgLy8gT3RoZXIgdGhlbiBNYWluIFByb2dyYW0sIHRhc2sncyBmb3JtIHNob3VsZCBub3QgYmUgbnVsbC5cclxuICAgIC8vIERlYnVnLkFzc2VydChpc01haW5Qcm9nKCkpO1xyXG5cclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHJlcXVlc3RlZCBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRDdHJsKGN0cmxJZHg6IG51bWJlcik6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuRm9ybS5nZXRDdHJsKGN0cmxJZHgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0cyB0aGUgY3VycmVudCB0YXNrIG1vZGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbFwiPm5ldyB0YXNrIG1vZGU8L3BhcmFtPlxyXG4gIHNldE1vZGUodmFsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdldE1vZGUoKSAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMuc2V0UHJvcChQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UQVNLX01PREUsIHZhbCk7XHJcbiAgICAgIGlmICh0aGlzLl9mbG93TW9uaXRvciAhPT0gbnVsbClcclxuICAgICAgICB0aGlzLl9mbG93TW9uaXRvci5hZGRUYXNrQ25nTW9kZSh2YWwsIHRoaXMuR2V0VGFza0RldGFpbHMoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgdGFzayBtb2RlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRNb2RlKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdGFza01vZGU6IHN0cmluZyA9IENvbnN0YW50cy5UQVNLX01PREVfTU9ESUZZO1xyXG4gICAgbGV0IHByb3A6IFByb3BlcnR5ID0gdGhpcy5fcHJvcFRhYi5nZXRQcm9wQnlJZChQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UQVNLX01PREUpO1xyXG4gICAgaWYgKHByb3AgIT09IG51bGwpIHtcclxuICAgICAgdGFza01vZGUgPSBwcm9wLkdldENvbXB1dGVkVmFsdWUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0YXNrTW9kZTtcclxuICB9XHJcblxyXG4gIFNldEluUmVjb21wdXRlKGluUmVjb21wdXRlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmlzSW5SZWNvbXB1dGUgPSBpblJlY29tcHV0ZTtcclxuICB9XHJcblxyXG4gIElzSW5SZWNvbXB1dGUoKSA6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNJblJlY29tcHV0ZTtcclxuICB9XHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJlc2V0IHJlZnJlc2ggdHlwZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmVzZXRSZWZyZXNoVHlwZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlZnJlc2hUeXBlID0gQ29uc3RhbnRzLlRBU0tfUkVGUkVTSF9OT05FO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCByZWZyZXNoIHR5cGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0UmVmcmVzaFR5cGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9yZWZyZXNoVHlwZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHJlZnJlc2ggdHlwZSBmb3IgdGhlIG5leHQgUmVmcmVzaERpc3BsYXkoKSBjYWxsXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJlZnJlc2hUeXBlXCI+dGhlIG5ldyByZWZyZXNoIHR5cGU8L3BhcmFtPlxyXG4gIFNldFJlZnJlc2hUeXBlKHJlZnJlc2hUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAocmVmcmVzaFR5cGUpIHtcclxuICAgICAgY2FzZSBDb25zdGFudHMuVEFTS19SRUZSRVNIX0ZPUk06XHJcbiAgICAgIGNhc2UgQ29uc3RhbnRzLlRBU0tfUkVGUkVTSF9UQUJMRTpcclxuICAgICAgY2FzZSBDb25zdGFudHMuVEFTS19SRUZSRVNIX0NVUlJfUkVDOlxyXG4gICAgICAgIHRoaXMuX3JlZnJlc2hUeXBlID0gcmVmcmVzaFR5cGU7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgR2V0Um91dGVyUGFyYW1zKCk6IExpc3Q8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZVBhcmFtcztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgbGFzdCBwYXJrZWQgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TGFzdFBhcmtlZEN0cmwoKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFzdFBhcmtlZEN0cmw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGdldCB0aGUgb3BlbiB3aW5kb3dcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlzT3BlbldpbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9vcGVuV2luO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMgcmV0dXJucyBpdHMgYm9vbGVhbiB2YWx1ZSBvdGhlcndpc2UgcmV0dXJucyB0aGUgZGVmYXVsdCB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwcm9wSWRcIj5pZCBvZiB0aGUgcHJvcGVydHk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVmYXVsdFJldFZhbFwiPnRoZSB2YWx1ZSB0byByZXR1cm4gaW4gY2FzZSB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3Q8L3BhcmFtPlxyXG4gIGFzeW5jIGNoZWNrUHJvcChwcm9wSWQ6IG51bWJlciwgZGVmYXVsdFJldFZhbDogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IHByb3A6IFByb3BlcnR5ID0gdGhpcy5nZXRQcm9wKHByb3BJZCk7XHJcbiAgICBpZiAocHJvcCAhPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGF3YWl0IHByb3AuZ2V0VmFsdWVCb29sZWFuKCk7XHJcbiAgICByZXR1cm4gZGVmYXVsdFJldFZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBjbGlja2VkIGNvbnRyb2wgb24gdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldENsaWNrZWRDb250cm9sKCk6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgbGV0IGNsaWNrZWRDdHJsOiBNZ0NvbnRyb2xCYXNlID0gRXZlbnRzLkdldFJ1bnRpbWVDb250ZXh0KG51bGwpLkN1cnJlbnRDbGlja2VkQ3RybDtcclxuXHJcbiAgICBpZiAoY2xpY2tlZEN0cmwgIT09IG51bGwgJiYgY2xpY2tlZEN0cmwuZ2V0Rm9ybSgpLmdldFRhc2soKSAhPT0gdGhpcylcclxuICAgICAgY2xpY2tlZEN0cmwgPSBudWxsO1xyXG5cclxuICAgIHJldHVybiBjbGlja2VkQ3RybDtcclxuICB9XHJcblxyXG4gIC8vLyA8cmV0dXJucz4ga2V5Ym9hcmRNYXBwaW5nU3RhdGVcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIGdldEtleWJvYXJkTWFwcGluZ1N0YXRlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fa2V5Ym9hcmRNYXBwaW5nU3RhdGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlmIHN0YXRlIGVuYWJsZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RhdGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgaXNTdGF0ZUVuYWJsZWQoc3RhdGU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChzdGF0ZSAmIHRoaXMuX2tleWJvYXJkTWFwcGluZ1N0YXRlKSA+IDA7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgU2V0cyB0aGUgc3RhdGUgb24vb2ZmXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXRlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm9uXCI+PC9wYXJhbT5cclxuICBzZXRLZXlib2FyZE1hcHBpbmdTdGF0ZShzdGF0ZTogbnVtYmVyLCBvbjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fa2V5Ym9hcmRNYXBwaW5nU3RhdGUgPSBvblxyXG4gICAgICA/IEd1aVRhc2tCYXNlLm1rSW50KEd1aVRhc2tCYXNlLmhpU2hydCh0aGlzLl9rZXlib2FyZE1hcHBpbmdTdGF0ZSkgJiB+c3RhdGUsIEd1aVRhc2tCYXNlLmxvU2hydCh0aGlzLl9rZXlib2FyZE1hcHBpbmdTdGF0ZSkgfCBzdGF0ZSlcclxuICAgICAgOiBHdWlUYXNrQmFzZS5ta0ludChHdWlUYXNrQmFzZS5oaVNocnQodGhpcy5fa2V5Ym9hcmRNYXBwaW5nU3RhdGUpIHwgc3RhdGUsIEd1aVRhc2tCYXNlLmxvU2hydCh0aGlzLl9rZXlib2FyZE1hcHBpbmdTdGF0ZSkgJiB+c3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJuXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGhpZ2hlciBoYWxmIG9mIHRoZSBpbnRlZ2VyPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBoaVNocnQobjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAobiAmIDB4ZmZmZjAwMDApID4+IDE2O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJuXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGxvdyBoYWxmIG9mIHRoZSBpbnRlZ2VyPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBsb1NocnQobjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBuICYgMHgwMDAwZmZmZjtcclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibjFcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibjJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdW5pdGVzIGxvdyBoYWx2ZXMgb2YgMiBpbnRlZ2VycyAvLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIG1rSW50KG4xOiBudW1iZXIsIG4yOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIG4xIDw8IDE2IHwgbjI7XHJcbiAgfVxyXG5cclxuICBnZXRIZWxwSXRlbShpZHg6IG51bWJlcik6IE1hZ2ljSGVscCB7XHJcbiAgICBpZiAodGhpcy5faGVscFRhYiAhPT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRoaXMuX2hlbHBUYWIuZ2V0SGVscChpZHgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhIHByb3BlcnR5IG9mIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInByb3BJZFwiPnRoZSBpZCBvZiB0aGUgcHJvcGVydHk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsXCI+dGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eTwvcGFyYW0+XHJcbiAgc2V0UHJvcChwcm9wSWQ6IG51bWJlciwgdmFsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Byb3BUYWIuc2V0UHJvcChwcm9wSWQsIHZhbCwgdGhpcywgXCJUXCIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgcnVudGltZSBsZXZlbCBvZiB0aGUgdGFzayAoUmVjb3JkIFN1ZmZpeCwgR3VpVGFza0Jhc2UgUHJlZml4LCBldGMuKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0QnJrTGV2ZWwoY0Jya0xldmVsOiBzdHJpbmcsIE5ld0Jya0xldmVsSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fYnJrTGV2ZWwgPSBjQnJrTGV2ZWw7XHJcbiAgICB0aGlzLl9icmtMZXZlbEluZGV4ID0gTmV3QnJrTGV2ZWxJbmRleDtcclxuXHJcbiAgICB0aGlzLnNldE1haW5MZXZlbChjQnJrTGV2ZWwpOyAvLyBVcGRhdGUgdGhlIE1haW5MZXZlbCBhY2NvcmRpbmcgdG8gdGhlIG5ldyBMZXZlbFxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHJ1bnRpbWUgbGV2ZWwgb2YgdGhlIHRhc2sgKFJlY29yZCBTdWZmaXgsIEd1aVRhc2tCYXNlIFByZWZpeCwgZXRjLilcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEJya0xldmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnJrTGV2ZWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBpZCBvZiB0aGUgY3VycmVudCBleGVjdXRpbmcgaGFuZGxlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgaW50IGlkIG9mIHRoZSBjdXJyZW50IGV4ZWN1dGluZyBoYW5kbGVyPC9yZXR1cm5zPlxyXG4gIGdldEJya0xldmVsSW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9icmtMZXZlbEluZGV4O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgcnVudGltZSBtYWlubGV2ZWwgb2YgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldE1haW5MZXZlbChjQnJrTGV2ZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGNCcmtMZXZlbCAhPT0gbnVsbCAmJiBjQnJrTGV2ZWwubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgbGV2ZWw6IHN0cmluZyA9IGNCcmtMZXZlbC5jaGFyQXQoMCk7XHJcbiAgICAgIC8qIHRoZW4gTUFJTkxFVkVMIGlzIHVwZGF0ZWQgb25seSBpZiB0aGUgYWN0dWFsIExldmVsIGlzIGEgVEFTSyBvciBSRUNPUkQgKCBvciBub25lICkgbGV2ZWwgKi9cclxuICAgICAgaWYgKGxldmVsID09PSBDb25zdGFudHMuVEFTS19MRVZFTF9OT05FIHx8IGxldmVsID09PSBDb25zdGFudHMuVEFTS19MRVZFTF9UQVNLIHx8XHJcbiAgICAgICAgbGV2ZWwgPT09IENvbnN0YW50cy5UQVNLX0xFVkVMX1JFQ09SRClcclxuICAgICAgICB0aGlzLl9tYWluTGV2ZWwgPSBjQnJrTGV2ZWw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBydW50aW1lIG1haW5sZXZlbCBvZiB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TWFpbkxldmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWFpbkxldmVsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgbGV2ZWwgb2YgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY0xldmVsXCI+J0MnID0gaW4gY29udHJvbCwgJ1InID0gaW4gcmVjb3JkIChvdXQgb2YgY29udHJvbCksICdUJyA9IGluIHRhc2sgKG91dCBvZiByZWNvcmQpICAgICAgLy8vIDwvcGFyYW0+XHJcbiAgc2V0TGV2ZWwoY0xldmVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX2xldmVsID0gY0xldmVsO1xyXG5cclxuICAgIGlmICh0aGlzLl9sZXZlbCA9PT0gQ29uc3RhbnRzLlRBU0tfTEVWRUxfUkVDT1JEKVxyXG4gICAgICB0aGlzLl9lbnRlcmVkUmVjTGV2ZWwgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgbGV2ZWwgb2YgdGhlIHRhc2s6ICdDJyA9IGluIGNvbnRyb2wsICdSJyA9IGluIHJlY29yZCAob3V0IG9mIGNvbnRyb2wpLCAnVCcgPSBpbiB0YXNrIChvdXQgb2YgcmVjb3JkKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TGV2ZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sZXZlbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIERhdGFTeW5jZWQgcHJvcGVydHkgb2YgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0RGF0YVN5bmNlZChzeW5jZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHNjaGVtZSBmb3IgbnVsbCBhcml0aG1ldGljXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXROdWxsQXJpdGhtZXRpYygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX251bGxBcml0aG1ldGljO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgbGFzdCBwYXJrZWQgY29udHJvbCBpbiB0aGlzIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPmxhc3QgZm9jdXNlZCBjb250cm9sPC9wYXJhbT5cclxuICBzZXRMYXN0UGFya2VkQ3RybChjdHJsOiBNZ0NvbnRyb2xCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9sYXN0UGFya2VkQ3RybCA9IGN0cmw7XHJcbiAgICB0aGlzLl9jdXJyUGFya2VkRmxkID0gKCh0aGlzLl9sYXN0UGFya2VkQ3RybCAhPT0gbnVsbClcclxuICAgICAgPyB0aGlzLl9sYXN0UGFya2VkQ3RybC5nZXRGaWVsZCgpXHJcbiAgICAgIDogbnVsbCk7XHJcbiAgICB0aGlzLkN1cnJlbnRFZGl0aW5nQ29udHJvbCA9IGN0cmw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGN1cnJlbnQgZmllbGQgb2YgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEN1cnJGaWVsZCgpOiBHdWlGaWVsZEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJQYXJrZWRGbGQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGN1cnJlbnQgZmllbGQgb2YgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldEN1cnJGaWVsZChjdXJyRmllbGQ6IEd1aUZpZWxkQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VyclBhcmtlZEZsZCA9IGN1cnJGaWVsZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmllbGQgb2YgdGhlIGN1cnJlbnQgcGFya2VkIGNvbnRyb2wgb3IgLTEgaWYgdGhlcmUgaXMgbm8gc3VjaCBmaWVsZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0Q3VyckZpZWxkSWR4KCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5fY3VyclBhcmtlZEZsZCAhPT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRoaXMuX2N1cnJQYXJrZWRGbGQuZ2V0SWQoKTtcclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkQnlWYWx1ZVN0cih2YWx1ZVN0cjogc3RyaW5nKTogRmllbGREZWY7XHJcbiAgZ2V0RmllbGRCeVZhbHVlU3RyKHZhbHVlU3RyOiBzdHJpbmcsIHBhcmVudDogUmVmUGFyYW08bnVtYmVyPiwgdmVlOiBSZWZQYXJhbTxudW1iZXI+KTogRmllbGREZWY7XHJcbiAgZ2V0RmllbGRCeVZhbHVlU3RyKHZhbHVlU3RyOiBzdHJpbmcsIHBhcmVudD86IFJlZlBhcmFtPG51bWJlcj4sIHZlZT86IFJlZlBhcmFtPG51bWJlcj4pOiBGaWVsZERlZiB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSlcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRCeVZhbHVlU3RyXzAodmFsdWVTdHIpO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZEJ5VmFsdWVTdHJfMSh2YWx1ZVN0ciwgcGFyZW50LCB2ZWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWVsZEJ5VmFsdWVTdHJfMCh2YWx1ZVN0cjogc3RyaW5nKTogRmllbGREZWYge1xyXG4gICAgbGV0IHBhcmVudDogbnVtYmVyO1xyXG4gICAgbGV0IHZlZTogbnVtYmVyO1xyXG4gICAgbGV0IHJlZlBhcmVudDogUmVmUGFyYW08bnVtYmVyPiA9IG5ldyBSZWZQYXJhbShwYXJlbnQpO1xyXG4gICAgbGV0IHJlZlZlZTogUmVmUGFyYW08bnVtYmVyPiA9IG5ldyBSZWZQYXJhbSh2ZWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRCeVZhbHVlU3RyXzEodmFsdWVTdHIsIHJlZlBhcmVudCwgcmVmVmVlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IHRoZSBmaWVsZCBieSAndmFsdWVTdHInXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIGdldEZpZWxkQnlWYWx1ZVN0cl8xKHZhbHVlU3RyOiBzdHJpbmcsIHBhcmVudDogUmVmUGFyYW08bnVtYmVyPiwgdmVlOiBSZWZQYXJhbTxudW1iZXI+KTogRmllbGREZWYge1xyXG4gICAgcGFyZW50LnZhbHVlID0gdmVlLnZhbHVlID0gMDtcclxuICAgIGxldCB0ZW1wRmllbGQ6IEZpZWxkRGVmID0gbnVsbDtcclxuICAgIGxldCBjb21tYTogbnVtYmVyID0gdmFsdWVTdHIuaW5kZXhPZihcIixcIik7XHJcbiAgICBpZiAoY29tbWEgPiAwKSB7XHJcbiAgICAgIGxldCBwYXJlbnRJZDogbnVtYmVyID0gTk51bWJlci5QYXJzZSh2YWx1ZVN0ci5zdWJzdHIoMCwgY29tbWEpKTtcclxuICAgICAgbGV0IGZsZElkeDogbnVtYmVyID0gTk51bWJlci5QYXJzZSh2YWx1ZVN0ci5zdWJzdHIoY29tbWEgKyAxKSk7XHJcbiAgICAgIHRlbXBGaWVsZCA9ICgocGFyZW50SWQgIT09IDApXHJcbiAgICAgICAgPyB0aGlzLmdldEZpZWxkRGVmKHBhcmVudElkLCBmbGRJZHgpXHJcbiAgICAgICAgOiB0aGlzLmdldEZpZWxkRGVmKGZsZElkeCkpO1xyXG4gICAgICBwYXJlbnQudmFsdWUgPSBwYXJlbnRJZDtcclxuICAgICAgdmVlLnZhbHVlID0gZmxkSWR4O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRlbXBGaWVsZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IHRoZSBmaWVsZCBmcm9tIGEgMS1iYXNlZCBtYWluIHByb2cgYXJndW1lbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGdldE1haW5Qcm9nRmllbGRCeVZhbHVlU3RyKHZhbHVlU3RyOiBzdHJpbmcpOiBGaWVsZERlZiB7XHJcbiAgICAvLyBzdHJpbmcgaXMgMS1iYXNlZCAtIG5lZWQgdG8gc3VidHJhY3QgMSB0byBnZXQgdG8gMC1iYXNlZCB2YWx1ZVxyXG4gICAgbGV0IGZsZElkeDogbnVtYmVyID0gTk51bWJlci5QYXJzZSh2YWx1ZVN0cikgLSAxO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGREZWYoZmxkSWR4KTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkRGVmKGZsZElkOiBudW1iZXIpOiBGaWVsZERlZjtcclxuICBnZXRGaWVsZERlZihwYXJlbnQ6IG51bWJlciwgZmxkSWR4OiBudW1iZXIpOiBGaWVsZERlZjtcclxuICBnZXRGaWVsZERlZihmbGRJZE9yUGFyZW50OiBudW1iZXIsIGZsZElkeD86IG51bWJlcik6IEZpZWxkRGVmIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZF8wKGZsZElkT3JQYXJlbnQpO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZF8xKGZsZElkT3JQYXJlbnQsIGZsZElkeCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGEgZmllbGQgYnkgaXRzIGlkeFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmbGRJZFwiPmlkIG9mIHRoZSBmaWVsZCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgZ2V0RmllbGRfMChmbGRJZDogbnVtYmVyKTogRmllbGREZWYge1xyXG4gICAgcmV0dXJuIHRoaXMuRGF0YVZpZXcuZ2V0RmllbGQoZmxkSWQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpbml0aWFsaXplIHRoZSBjdXJyZW50IHRhc2sncyBmb3JtLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgSW5pdEZvcm0oKSB7XHJcbiAgICBpZiAodGhpcy5Gb3JtICE9PSBudWxsICYmIHRoaXMuaXNPcGVuV2luKCkpIHtcclxuICAgICAgdGhpcy5Gb3JtLkluSW5pdEZvcm0gPSB0cnVlO1xyXG4gICAgICB0aGlzLkZvcm0uaW5pdCgpO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuU2V0UmVmcmVzaFR5cGUoQ29uc3RhbnRzLlRBU0tfUkVGUkVTSF9GT1JNKTtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuUmVmcmVzaERpc3BsYXkoKTtcclxuXHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICAgIHRoaXMuRm9ybS5JbkluaXRGb3JtID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJlc3VtZSBzdWJmb3JtIGxheW91dFxyXG4gIC8vLyA8L3N1bW1hcnlcclxuICBSZXN1bWVTdWJmb3JtTGF5b3V0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuRm9ybSAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgc3ViRm9ybUN0cmw6IE1nQ29udHJvbEJhc2UgPSA8TWdDb250cm9sQmFzZT50aGlzLkZvcm0uZ2V0U3ViRm9ybUN0cmwoKTtcclxuICAgICAgaWYgKHN1YkZvcm1DdHJsICE9PSBudWxsICYmIHRoaXMuc2hvdWxkUmVzdW1lU3ViZm9ybUxheW91dCkge1xyXG4gICAgICAgIC8vIHJlZnJlc2ggdGhlIHZpc2libGUgcHJvcGVydHlcclxuICAgICAgICBDb21tYW5kcy5hZGRPcGVyYXRpb25XaXRoTGluZShDb21tYW5kVHlwZS5TRVRfUFJPUEVSVFksIHN1YkZvcm1DdHJsLCAwLFxyXG4gICAgICAgICAgIEh0bWxQcm9wZXJ0aWVzLlZpc2libGUgLCBzdWJGb3JtQ3RybC5pc1Zpc2libGUoKSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvdWxkUmVzdW1lU3ViZm9ybUxheW91dCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY29udHJvbCB3aGljaCB3YXMgbGFzdCBwYXJrZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVwdGhcIj50aGUgZ2VuZXJhdGlvbjwvcGFyYW0+XHJcbiAgR2V0TGFzdFBhcmtlZEN0cmxOYW1lKGRlcHRoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGFuY2VzdG9yOiBHdWlUYXNrQmFzZSA9IDxHdWlUYXNrQmFzZT50aGlzLkdldFRhc2tBbmNlc3RvcihkZXB0aCk7XHJcbiAgICBpZiAoYW5jZXN0b3IgPT09IG51bGwgfHwgYW5jZXN0b3IuX2xhc3RQYXJrZWRDdHJsID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIHJldHVybiBhbmNlc3Rvci5fbGFzdFBhcmtlZEN0cmwuTmFtZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGZvcm0gb2YgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gRm9ybSBpcyB0aGUgZm9ybSBvZiB0aGUgdGFzazwvcmV0dXJucz5cclxuICBnZXRGb3JtKCk6IE1nRm9ybUJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuRm9ybTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2V0IHRhc2sncyBmb3JtLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBGb3JtIGlzIHRoZSBmb3JtIG9mIHRoZSB0YXNrPC9yZXR1cm5zPlxyXG4gIFNldEZvcm0odmFsdWU6IE1nRm9ybUJhc2UpOiBNZ0Zvcm1CYXNlIHtcclxuICAgIHRoaXMuRm9ybSA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJZkV4aXN0UHJvcChwcm9wSWQ6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGV4aXN0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuX3Byb3BUYWIgIT09IG51bGwpIHtcclxuICAgICAgbGV0IHByb3A6IFByb3BlcnR5ID0gdGhpcy5fcHJvcFRhYi5nZXRQcm9wQnlJZChwcm9wSWQpO1xyXG4gICAgICBleGlzdCA9IChwcm9wICE9PSBudWxsKTtcclxuICAgIH1cclxuICAgIHJldHVybiBleGlzdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgYSB0YXNrIHByb3BlcnR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInByb3BJZFwiPklkIG9mIHRoZSByZXF1ZXN0ZWQgcHJvcGVydHlcclxuICAvLy8gPC9wYXJhbT5cclxuICBnZXRQcm9wKHByb3BJZDogbnVtYmVyKTogUHJvcGVydHkge1xyXG4gICAgbGV0IHByb3A6IFByb3BlcnR5ID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5fcHJvcFRhYiAhPT0gbnVsbCkge1xyXG4gICAgICBwcm9wID0gdGhpcy5fcHJvcFRhYi5nZXRQcm9wQnlJZChwcm9wSWQpO1xyXG5cclxuICAgICAgLy8gaWYgdGhlIHByb3BlcnR5IGRvZXNuJ3QgZXhpc3QgdGhlbiBjcmVhdGUgYSBuZXcgcHJvcGVydHkgYW5kIGdpdmUgaXQgdGhlIGRlZmF1bHQgdmFsdWVcclxuICAgICAgLy8gaW4gYWRkaXRpb24gYWRkIHRoaXMgcHJvcGVydHkgdG8gdGhlIHByb3BlcnRpZXMgdGFibGVcclxuICAgICAgaWYgKHByb3AgPT09IG51bGwpIHtcclxuICAgICAgICBwcm9wID0gUHJvcGVydHkuZ2V0RGVmYXVsdFByb3AocHJvcElkLCBHdWlDb25zdGFudHMuUEFSRU5UX1RZUEVfVEFTSywgdGhpcyk7XHJcbiAgICAgICAgaWYgKHByb3AgIT09IG51bGwpIHtcclxuICAgICAgICAgIHByb3AuU3R1ZGlvVmFsdWUgPSBwcm9wLmdldE9yZ1ZhbHVlKCk7XHJcbiAgICAgICAgICB0aGlzLl9wcm9wVGFiLmFkZFByb3AocHJvcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJvcDtcclxuICB9XHJcblxyXG4gIEdldENvbXB1dGVkUHJvcGVydHkocHJvcElkOiBudW1iZXIpOiBQcm9wZXJ0eSB7XHJcbiAgICBsZXQgcHJvcDogUHJvcGVydHkgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLl9wcm9wVGFiICE9PSBudWxsKVxyXG4gICAgICBwcm9wID0gdGhpcy5fcHJvcFRhYi5nZXRQcm9wQnlJZChwcm9wSWQpO1xyXG4gICAgcmV0dXJuIHByb3A7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBjb21wb25lbnQgaWR4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRDb21wSWR4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29tcElkeDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdHJ1ZSBpZiB0aGlzIGlzIGZpcnN0IHJlZnJlc2hcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgSXNGaXJzdFJlZnJlc2hPZlByb3BzKCk6IGJvb2xlYW4ge1xyXG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXNzZWQgSUQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJleHBJZFwiPkV4cCBJRDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVzVHlwZVwiPmV4cGVjdGVkIHJldHVybiB0eXBlPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZW5ndGhcIj5FeHBlY3RlZCBsZW4gLSBpcyBub3QgdXNlZCwgaXQgbXVzdCBiZSBoZXJlIGJlY2F1c2Ugb2YgY29tcHV0YWJpbGl0eSB3aXRoIFJpY2ggQ2xpZW50PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250ZW50VHlwZVVuaWNvZGVcIj5zaG91bGQgdGhlIHJlc3VsdCBiZSB1bmljb2RlPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXNDZWxsVHlwZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYWx3YXlzRXZhbHVhdGVcIj5mb3IgZm9ybSBwcm9wZXJ0aWVzIGFuZCBzb21lIGNvbnRyb2wgcHJvcGVydGllcyB3ZSBhbHdheXMgZXZhbHVhdGUgZXhwcmVzc2lvbnM8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIndhc0V2YWx1YXRlZFwiPmluZGljYXRlcyB3aGV0aGVyIHRoZSBleHByZXNzaW9uIHdhcyBldmFsdWF0ZWQ8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5ldmFsdWF0ZWQgdmFsdWU8L3JldHVybnM+XHJcbiAgYXN5bmMgRXZhbHVhdGVFeHByZXNzaW9uKGV4cElkOiBudW1iZXIsIHJlc1R5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIGxlbmd0aDogbnVtYmVyLCBjb250ZW50VHlwZVVuaWNvZGU6IGJvb2xlYW4sIHJlc0NlbGxUeXBlOiBTdG9yYWdlQXR0cmlidXRlLCBhbHdheXNFdmFsdWF0ZTogYm9vbGVhbiwgd2FzRXZhbHVhdGVkOiBSZWZQYXJhbTxib29sZWFuPik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmcgPSBudWxsO1xyXG4gICAgd2FzRXZhbHVhdGVkLnZhbHVlID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKGFsd2F5c0V2YWx1YXRlIHx8IHRoaXMuRGF0YVZpZXdXYXNSZXRyaWV2ZWQpIHtcclxuICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5DYWxjdWxhdGVFeHByZXNzaW9uKGV4cElkLCByZXNUeXBlLCBsZW5ndGgpO1xyXG4gICAgICB3YXNFdmFsdWF0ZWQudmFsdWUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIEdldEV4cHJlc3Npb25TdG9yYWdlKGV4cElkOiBudW1iZXIpOiBTdG9yYWdlQXR0cmlidXRlIHtcclxuICAgIHJldHVybiB0aGlzLkdldEV4cHJlc3Npb25TdG9yYWdlKGV4cElkKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ2FsY3VsYXRlIGV4cHJlc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZXhwSWRcIj5UaGUgZXhwcmVzc2lvbiB0byBldmFsdWF0ZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVzVHlwZVwiPlRoZSBleHBlY3RlZCByZXN1bHQgdHlwZS48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxlbmd0aFwiPlRoZSBleHBlY3RlZCBsZW5ndGggb2YgdGhlIHJlc3VsdC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRlbnRUeXBlVW5pY29kZVwiPkRlbm90ZXMgd2hldGhlciB0aGUgcmVzdWx0IGlzIGV4cGVjdGVkIHRvIGJlIGEgdW5pY29kZSBzdHJpbmcuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXNDZWxsVHlwZVwiPk5vdCB1c2VkLjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBhc3luYyBDYWxjdWxhdGVFeHByZXNzaW9uKGV4cElkOiBudW1iZXIsIHJlc1R5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIGxlbmd0aDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+e1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcIlwiKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY3JlYXRlcyBhIG1nZm9ybSBvYmplY3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgYWJzdHJhY3QgQ29uc3RydWN0TWdGb3JtKGFscmVhZHlTZXRQYXJlbnRGb3JtOiBSZWZQYXJhbTxib29sZWFuPik6IE1nRm9ybUJhc2UgO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlmIHRoZSB0YXNrIGlzIHN0YXJ0ZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlzU3RhcnRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHRlbGxzIHdoZXRoZXIgdGhlIHRhc2sgaXMgYWJvcnRpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlzQWJvcnRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBhbmNlc3RvciBvZiB0aGUgR3VpVGFza0Jhc2VcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ2VuZXJhdGlvblwiPm9mIHRoZSBhbmNlc3RvciB0YXNrPC9wYXJhbT5cclxuICBhYnN0cmFjdCBHZXRUYXNrQW5jZXN0b3IoZ2VuZXJhdGlvbjogbnVtYmVyKTogSVRhc2s7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IHRoZSBjb250ZXh0IHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgYWJzdHJhY3QgR2V0Q29udGV4dFRhc2soKTogSVRhc2s7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0dXJucyB0YXNrIGRlcHRoXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGFic3RyYWN0IEdldFRhc2tEZXB0aCgpOiBudW1iZXI7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcmVmcmVzaCB0aGUgZGlzcGxheSwgcGFpbnQgdGhlIGNvbnRyb2xzIGFuZCB0aGVpciBwcm9wZXJ0aWVzIGFnYWluIDwvc3VtbWFyeT5cclxuICBhYnN0cmFjdCBSZWZyZXNoRGlzcGxheSgpOiB2b2lkIDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBnZXQgdGhlIHZhbHVlIG9mIGEgZmllbGQuIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmaWVsZERlZlwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzTnVsbFwiPjwvcGFyYW0+XHJcbiAgLy8gVE9ETyBzYWRoYW4gcmVtb3ZlIHVudXNlZFxyXG4gIC8vIGFic3RyYWN0IGFzeW5jIGdldEZpZWxkVmFsdWUoZmllbGREZWY6IEZpZWxkRGVmLCB2YWx1ZTogUmVmUGFyYW08c3RyaW5nPiwgaXNOdWxsOiBSZWZQYXJhbTxib29sZWFuPik6IFByb21pc2U8dm9pZD4gO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGdldCB0aGUgZGlzcGxheSB2YWx1ZSBvZiBhIGZpZWxkLiA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZmllbGREZWZcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc051bGxcIj48L3BhcmFtPlxyXG4gIGFic3RyYWN0IGdldEZpZWxkRGlzcGxheVZhbHVlKGZpZWxkRGVmOiBGaWVsZERlZiwgdmFsdWU6IFJlZlBhcmFtPHN0cmluZz4sIGlzTnVsbDogUmVmUGFyYW08Ym9vbGVhbj4pOiB2b2lkIDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiB1cGRhdGVzIHRoZSBmaWVsZCdzIHZhbHVlIGFuZCBzdGFydHMgcmVjb21wdXRlLiA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZmllbGREZWZcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc051bGxcIj48L3BhcmFtPlxyXG4gIGFic3RyYWN0IFVwZGF0ZUZpZWxkVmFsdWVBbmRTdGFydFJlY29tcHV0ZShmaWVsZERlZjogRmllbGREZWYsIHZhbHVlOiBzdHJpbmcsIGlzTnVsbDogYm9vbGVhbik6IHZvaWQgO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+Z2V0IGEgZmllbGQgZnJvbSB0aGUgdGFzay50cmF2ZWwgYnkgcGFyZW50cyAoaS5lLiBOT1QgYnkgdHJpZ2dlcmluZyB0YXNrcykuPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicGFyZW50XCI+Z2VuZXJhdGlvbiBudW1iZXIgKDAgaXMgY3VycmVudCB0YXNrKTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmbGRJZHhcIj50aGUgZmllbGQgaW5kZXggd2l0aGluIGl0cyB0YXNrPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBpZCBvZiB0aGUgZmllbGQgZGVzY3JpYmVkIGJ5IHBhcmVudCArIGlkeDwvcmV0dXJucz5cclxuICBwcml2YXRlIGdldEZpZWxkXzEocGFyZW50OiBudW1iZXIsIGZsZElkeDogbnVtYmVyKTogRmllbGREZWYge1xyXG5cclxuICAgIHN3aXRjaCAocGFyZW50KSB7XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZERlZihmbGRJZHgpO1xyXG5cclxuICAgICAgY2FzZSBHdWlUYXNrQmFzZS5NQUlOX1BSR19QQVJFTlRfSUQ6XHJcbiAgICAgICAgLy8gZmluZCB0aGUgbWFpbiBwcm9ncmFtIHVzaW5nIHRoZSBjb21wb25lbnQgaWQgKGN0bCBpZHgpXHJcbiAgICAgICAgbGV0IGNvbXBNYWluUHJvZzogR3VpVGFza0Jhc2UgPSA8R3VpVGFza0Jhc2U+IEd1aURhdGFDb2xsZWN0aW9uLk1HRGF0YVRhYmxlLkdldE1haW5Qcm9nQnlDdGxJZHgodGhpcy5Db250ZXh0SUQsIHRoaXMuX2N0bElkeCk7XHJcbiAgICAgICAgcmV0dXJuIGNvbXBNYWluUHJvZy5nZXRGaWVsZERlZihmbGRJZHgpO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBwYXJlbnQtLTtcclxuICAgICAgICBpZiAodGhpcy5TdHVkaW9QYXJlbnRUYXNrICE9IG51bGwpXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5TdHVkaW9QYXJlbnRUYXNrLmdldEZpZWxkRGVmKHBhcmVudCwgZmxkSWR4KTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIHRhc2sgYXR0cmlidXRlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZmlsbEF0dHJpYnV0ZXMocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSBwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgcGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgLy8gbGFzdCBwb3NpdGlvbiBvZiBpdHMgdGFnXHJcbiAgICAgIGxldCB0YWc6IHN0cmluZyA9IHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKFhNTENvbnN0YW50cy5NR19UQUdfVEFTSykgKyBYTUxDb25zdGFudHMuTUdfVEFHX1RBU0subGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCB0b2tlbnM6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMocGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCB0b2tlbnMubGVuZ3RoOyBqID0gaiArIDIpIHtcclxuICAgICAgICBsZXQgYXR0cmlidXRlOiBzdHJpbmcgPSB0b2tlbnMuZ2V0X0l0ZW0oaik7XHJcbiAgICAgICAgbGV0IHZhbHVlU3RyOiBzdHJpbmcgPSB0b2tlbnMuZ2V0X0l0ZW0oaiArIDEpO1xyXG4gICAgICAgIGlmICghdGhpcy5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZVN0cikgJiYgRXZlbnRzLlNob3VsZExvZyhMb2dnZXJfTG9nTGV2ZWxzLkRldmVsb3BtZW50KSlcclxuICAgICAgICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiSW4gVGFza0Jhc2UuZmlsbEF0dHJpYnV0ZXMoKTogVW5wcm9jZXNzZWQoISkgYXR0cmlidXRlOiAnezB9JyA9ICd7MX0nXCIsIGF0dHJpYnV0ZSwgdmFsdWVTdHIpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcGFyc2VyLnNldEN1cnJJbmRleChwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKSArIDEpOyAvLyB0byBkZWxldGUgXCI+XCIgdG9vXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSB0YXNrIGF0dHJpYnV0ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWVTdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzVGFnUHJvY2Vzc2VkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0FQUExfR1VJRDpcclxuICAgICAgICB0aGlzLkFwcGxpY2F0aW9uR3VpZCA9IHZhbHVlU3RyO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9QUk9HUkFNX0lTTjpcclxuICAgICAgICB0aGlzLlByb2dyYW1Jc24gPSBOTnVtYmVyLlBhcnNlKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfVEFTS19JU046XHJcbiAgICAgICAgdGhpcy5UYXNrSXNuID0gTk51bWJlci5QYXJzZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1RPT0xLSVRfUEFSRU5UX1RBU0s6XHJcbiAgICAgICAgaWYgKE5OdW1iZXIuUGFyc2UodmFsdWVTdHIpICE9PSAwKVxyXG4gICAgICAgICAgdGhpcy5TdHVkaW9QYXJlbnRUYXNrID0gPEd1aVRhc2tCYXNlPkd1aURhdGFDb2xsZWN0aW9uLk1HRGF0YVRhYmxlLkdldFRhc2tCeUlEKHZhbHVlU3RyKTtcclxuXHJcbiAgICAgICAgdGhpcy5Jc1N1YnRhc2sgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9UQVNLSUQ6XHJcbiAgICAgICAgdGhpcy5zZXRUYXNrSWQodmFsdWVTdHIpO1xyXG4gICAgICAgIGlmIChFdmVudHMuU2hvdWxkTG9nKExvZ2dlcl9Mb2dMZXZlbHMuRGV2ZWxvcG1lbnQpKVxyXG4gICAgICAgICAgRXZlbnRzLldyaXRlRGV2VG9Mb2coXCJUQVNLOiBcIiArIHRoaXMuX3Rhc2tUYWcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9DVExfSURYOlxyXG4gICAgICAgIHRoaXMuc2V0Q3RsQW5kQ29tcElkeCh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX01BSU5QUkc6XHJcbiAgICAgICAgdGhpcy5zZXRNYWluUHJnKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfTlVMTF9BUklUSE1FVElDOlxyXG4gICAgICAgIHRoaXMuc2V0TnVsbEFyaXRobWV0aWModmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUkFDVElWRTpcclxuICAgICAgICB0aGlzLnNldElzSW50ZXJhY2l2ZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX09QRU5fV0lOOlxyXG4gICAgICAgIHRoaXMuc2V0T3Blbldpbih2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0FMTE9XX0VWRU5UUzpcclxuICAgICAgICB0aGlzLlNldEFsbG93RXZlbnRzKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSVNQUkc6XHJcbiAgICAgICAgdGhpcy5zZXRJc1ByZyh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0lDT05fRklMRV9OQU1FOlxyXG4gICAgICAgIHRoaXMuSWNvbkZpbGVOYW1lID0gdmFsdWVTdHI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9QQVJBTExFTDpcclxuICAgICAgICB0aGlzLklzUGFyYWxsZWwgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1JPVVRFUl9QQVRIOlxyXG4gICAgICAgIGlmICh2YWx1ZVN0ci50cmltKCkgIT0gXCJcIilcclxuICAgICAgICAgIHRoaXMucm91dGVyUGF0aCA9IHZhbHVlU3RyO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTl9ERUZBVUxUX1JPVVRFUl9PVVRMRVQ6XHJcbiAgICAgICAgdGhpcy5pbkRlZmF1bHRSb3V0ZXJPdXRsZXQgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlzVGFnUHJvY2Vzc2VkID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlzVGFnUHJvY2Vzc2VkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpbml0IGRhdGEgZm9yIGZvcm0gYW5kIHJldHVybiB0aGUgZm9ybVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZm91bmRUYWdOYW1lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwYXJlbnRGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEZvcm1Jbml0RGF0YShwYXJlbnRGb3JtOiBNZ0Zvcm1CYXNlKTogTWdGb3JtQmFzZSB7XHJcbiAgICBsZXQgYWxyZWFkeVNldFBhcmVudEZvcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCByZWZBbHJlYWR5U2V0UGFyZW50Rm9ybTogUmVmUGFyYW08Ym9vbGVhbj4gPSBuZXcgUmVmUGFyYW0oYWxyZWFkeVNldFBhcmVudEZvcm0pO1xyXG5cclxuICAgIGlmICh0aGlzLkZvcm0gPT09IG51bGwpXHJcbiAgICAgIHRoaXMuRm9ybSA9IHRoaXMuQ29uc3RydWN0TWdGb3JtKHJlZkFscmVhZHlTZXRQYXJlbnRGb3JtKTtcclxuXHJcbiAgICBpZiAoIWFscmVhZHlTZXRQYXJlbnRGb3JtKVxyXG4gICAgICB0aGlzLkZvcm0uUGFyZW50Rm9ybSA9IHBhcmVudEZvcm07XHJcblxyXG4gICAgaWYgKEV2ZW50cy5TaG91bGRMb2coTG9nZ2VyX0xvZ0xldmVscy5EZXZlbG9wbWVudCkpXHJcbiAgICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKFwiZm9ybVwiKTtcclxuXHJcbiAgICB0aGlzLkZvcm0uZmlsbERhdGEodGhpcyk7XHJcbiAgICByZXR1cm4gdGhpcy5Gb3JtO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0YXNrIGlkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRUYXNrSWQodmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGFza1RhZyA9IHZhbHVlU3RyO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBjdGxJZHggJiBjb21wSWR4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIHNldEN0bEFuZENvbXBJZHgodmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGk6IG51bWJlciA9IHZhbHVlU3RyLmluZGV4T2YoXCIsXCIpO1xyXG4gICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICB0aGlzLl9jdGxJZHggPSBOTnVtYmVyLlBhcnNlKHZhbHVlU3RyLnN1YnN0cigwLCBpKSk7XHJcbiAgICAgIHRoaXMuX2NvbXBJZHggPSBOTnVtYmVyLlBhcnNlKHZhbHVlU3RyLnN1YnN0cihpICsgMSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgYW5jZXN0b3IgdGFzayBjb250YWluaW5nIGZvcm1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz5HdWlUYXNrQmFzZTwvcmV0dXJucz5cclxuICBHZXRBbmNlc3RvclRhc2tDb250YWluaW5nRm9ybSgpOiBHdWlUYXNrQmFzZSB7XHJcbiAgICBsZXQgcGFyZW50VGFzazogR3VpVGFza0Jhc2UgPSA8R3VpVGFza0Jhc2U+dGhpcy5HZXRUYXNrQW5jZXN0b3IoMSk7XHJcbiAgICB3aGlsZSAocGFyZW50VGFzayAhPT0gbnVsbCAmJiBwYXJlbnRUYXNrLmdldEZvcm0oKSA9PT0gbnVsbCkge1xyXG4gICAgICBwYXJlbnRUYXNrID0gPEd1aVRhc2tCYXNlPnBhcmVudFRhc2suR2V0VGFza0FuY2VzdG9yKDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYXJlbnRUYXNrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzZXQgaXNNYWluUHJnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzZXRNYWluUHJnKHZhbHVlU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzTWFpblByZyA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0IG51bGxBcml0aG1ldGljXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzZXROdWxsQXJpdGhtZXRpYyh2YWx1ZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9udWxsQXJpdGhtZXRpYyA9IHZhbHVlU3RyLmNoYXJBdCgwKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0IGlzSW50ZXJhY3RpdmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIHNldElzSW50ZXJhY2l2ZSh2YWx1ZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLklzSW50ZXJhY3RpdmUgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldCBvcGVuV2luXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBzZXRPcGVuV2luKHZhbHVlU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX29wZW5XaW4gPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldCBvcGVuV2luXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgU2V0T3Blbldpbih2YWx1ZWJvb2w6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX29wZW5XaW4gPSB2YWx1ZWJvb2w7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldCBBbGxvd0V2ZW50c1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVTdHJcIj48L3BhcmFtPlxyXG4gIFNldEFsbG93RXZlbnRzKHZhbHVlU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FsbG93RXZlbnRzID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzZXQgaXNQcmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIHNldElzUHJnKHZhbHVlU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzUHJnID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gIH1cclxuXHJcbiAgU2hvdWxkRXZhbHVhdGVQcm9wZXJ0eUxvY2FsbHkocHJvcElkOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGFic3RyYWN0IEdldFRhc2tEZXRhaWxzKCk6IHN0cmluZztcclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gU2V0cyB0aGUgbWVzc2FnZSBvbiB0aGUgbWVzc2FnZSBwYW5lIG9mIHN0YXR1cyBiYXIuPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1zZ1wiPm1lc3NhZ2UgdG8gYmUgc2hvd248L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNvdW5kQmVlcFwiPnRvIGJlZXAgb3Igbm90PC9wYXJhbT5cclxuICBXcml0ZVRvTWVzc2FnZVBhbmUobXNnOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIFN0b3J5IDE0OTMxNiA6IHNlbmQgbWVzc2FnZSB0byBjb25zb2xlXHJcbiAgICBpZiAobXNnICE9IG51bGwpXHJcbiAgICAgIGNvbnNvbGUubG9nKG1zZyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHdyaXRlIGEgbWVzc2FnZSB0byBzdGF0dXMgYmFyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1zZ0lkXCI+aWQgb2YgbWVzc2FnZSB0byBiZSB3cml0dGVuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzb3VuZEJlZXBcIj48L3BhcmFtPlxyXG4gIFdyaXRlVG9NZXNzYWdlUGFuZWJ5TXNnSWQobXNnSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IG1zZzogc3RyaW5nID0gRXZlbnRzLkdldE1lc3NhZ2VTdHJpbmcobXNnSWQpO1xyXG4gICAgdGhpcy5Xcml0ZVRvTWVzc2FnZVBhbmUobXNnKTtcclxuICB9XHJcbn1cclxuIl19
|
|
510
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpVGFza0Jhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvdGFza3MvR3VpVGFza0Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFPLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDL0YsT0FBTyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBb0IsWUFBWSxFQUFFLFNBQVMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBT3hHLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUkzQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdELE1BQU0sT0FBZ0IsV0FBVztJQTZDeEIsSUFBSTtRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBYUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNGLENBQUM7SUFFRDtRQTFFQSxpQkFBWSxHQUFzQixJQUFJLENBQUM7UUFDL0IsMEJBQXFCLEdBQVcsVUFBVSxDQUFDO1FBQ25ELGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBQzNCLG9CQUFlLEdBQWtCLElBQUksQ0FBQztRQUM5QixjQUFTLEdBQVcsSUFBSSxDQUFDO1FBQ3pCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDNUIsZUFBVSxHQUFXLElBQUksQ0FBQztRQUMxQixXQUFNLEdBQVcsSUFBSSxDQUFDO1FBQzlCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxtQkFBYyxHQUFpQixJQUFJLENBQUM7UUFDNUIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFHOUIsMEJBQXFCLEdBQWtCLElBQUksQ0FBQztRQUNwQyw4QkFBeUIsR0FBWSxJQUFJLENBQUM7UUFDbEQsb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFDL0IsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUN2QixZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3BCLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFDdEIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3BCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGFBQVEsR0FBVyxJQUFJLENBQUM7UUFDeEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUNsQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUN0QyxTQUFJLEdBQWUsSUFBSSxDQUFDO1FBQ3hCLGFBQVEsR0FBYyxJQUFJLENBQUM7UUFDM0IsYUFBUSxHQUFVLElBQUksQ0FBQztRQUV2QixpQkFBWSxHQUFXLElBQUksQ0FBQztRQUU1QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGFBQVEsR0FBb0IsSUFBSSxDQUFDO1FBQ2pDLGtCQUFhLEdBQW1CLElBQUksQ0FBQztRQUNyQyxxQkFBZ0IsR0FBZ0IsSUFBSSxDQUFDO1FBRTdCLGVBQVUsR0FBVyxJQUFJLENBQUM7UUFDeEIsZ0JBQVcsR0FBYyxJQUFJLENBQUM7UUFDaEMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBa0IvQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUt0Qyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFVbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUM7UUFDcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBS0QsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBS0QsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBS0QsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBTUQsY0FBYztRQUNaLElBQUksSUFBSSxHQUFlLElBQUksQ0FBQztRQUU1QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSTtZQUNwQixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQU1wQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFLRCxPQUFPLENBQUMsT0FBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFPRCxPQUFPLENBQUMsR0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxHQUFHLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUk7Z0JBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztTQUNoRTtJQUNILENBQUM7SUFNRCxPQUFPO1FBQ0wsSUFBSSxRQUFRLEdBQVcsU0FBUyxDQUFDLGdCQUFnQixDQUFDO1FBQ2xELElBQUksSUFBSSxHQUFhLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xGLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNqQixRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDcEM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQW9CO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDO0lBQ25DLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFJRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUNsRCxDQUFDO0lBTUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBTUQsY0FBYyxDQUFDLFdBQW1CO1FBQ2hDLFFBQVEsV0FBVyxFQUFFO1lBQ25CLEtBQUssU0FBUyxDQUFDLGlCQUFpQixDQUFDO1lBQ2pDLEtBQUssU0FBUyxDQUFDLGtCQUFrQixDQUFDO1lBQ2xDLEtBQUssU0FBUyxDQUFDLHFCQUFxQjtnQkFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7Z0JBQ2hDLE1BQU07WUFFUjtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBS0QsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFJRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFPRCxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQWMsRUFBRSxhQUFzQjtRQUNwRCxJQUFJLElBQUksR0FBYSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLElBQUksSUFBSSxLQUFLLElBQUk7WUFDZixPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFLRCxpQkFBaUI7UUFDZixJQUFJLFdBQVcsR0FBa0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBRW5GLElBQUksV0FBVyxLQUFLLElBQUksSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSTtZQUNsRSxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRXJCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFJRCx1QkFBdUI7UUFDckIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQU9ELGNBQWMsQ0FBQyxLQUFhO1FBQzFCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFPRCx1QkFBdUIsQ0FBQyxLQUFhLEVBQUUsRUFBVztRQUNoRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRTtZQUM3QixDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3BJLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6SSxDQUFDO0lBSUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFTO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFJRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQVM7UUFDckIsT0FBTyxDQUFDLEdBQUcsVUFBVSxDQUFDO0lBQ3hCLENBQUM7SUFLRCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQVUsRUFBRSxFQUFVO1FBQ2pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQU9ELE9BQU8sQ0FBQyxNQUFjLEVBQUUsR0FBVztRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBS0QsV0FBVyxDQUFDLFNBQWlCLEVBQUUsZ0JBQXdCO1FBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7UUFFdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBS0QsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBTUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFLRCxZQUFZLENBQUMsU0FBaUI7UUFDNUIsSUFBSSxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlDLElBQUksS0FBSyxHQUFXLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFeEMsSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDLGVBQWUsSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDLGVBQWU7Z0JBQzVFLEtBQUssS0FBSyxTQUFTLENBQUMsaUJBQWlCO2dCQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFLRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFNRCxRQUFRLENBQUMsTUFBYztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLGlCQUFpQjtZQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFLRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFLRCxhQUFhLENBQUMsTUFBZTtJQUM3QixDQUFDO0lBS0QsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFNRCxpQkFBaUIsQ0FBQyxJQUFtQjtRQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQztZQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUU7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztJQUNwQyxDQUFDO0lBS0QsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBS0QsWUFBWSxDQUFDLFNBQXVCO1FBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFLRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUk7WUFDOUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBSUQsa0JBQWtCLENBQUMsUUFBZ0IsRUFBRSxNQUF5QixFQUFFLEdBQXNCO1FBQ3BGLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDOztZQUUzQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxRQUFnQjtRQUMzQyxJQUFJLE1BQWMsQ0FBQztRQUNuQixJQUFJLEdBQVcsQ0FBQztRQUNoQixJQUFJLFNBQVMsR0FBcUIsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsSUFBSSxNQUFNLEdBQXFCLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQU9PLG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsTUFBd0IsRUFBRSxHQUFxQjtRQUM1RixNQUFNLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksU0FBUyxHQUFhLElBQUksQ0FBQztRQUMvQixJQUFJLEtBQUssR0FBVyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNiLElBQUksUUFBUSxHQUFXLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoRSxJQUFJLE1BQU0sR0FBVyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDO2dCQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO2dCQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1lBQ3hCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1NBQ3BCO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQU9ELDBCQUEwQixDQUFDLFFBQWdCO1FBRXpDLElBQUksTUFBTSxHQUFXLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBSUQsV0FBVyxDQUFDLGFBQXFCLEVBQUUsTUFBZTtRQUNoRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7O1lBRXRDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQU1PLFVBQVUsQ0FBQyxLQUFhO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUtELEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUd2QixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBRWpELE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRTVCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBS0QsbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDdEIsSUFBSSxXQUFXLEdBQWlDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0UsSUFBSSxXQUFXLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtnQkFFMUQsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFDbkUsY0FBYyxDQUFDLE9BQU8sRUFBRyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFFckQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQzthQUN4QztTQUNGO0lBQ0gsQ0FBQztJQU1ELHFCQUFxQixDQUFDLEtBQWE7UUFDakMsSUFBSSxRQUFRLEdBQTZCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckUsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxlQUFlLEtBQUssSUFBSTtZQUN4RCxPQUFPLEVBQUUsQ0FBQztRQUNaLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQU1ELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQU1ELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLElBQUksS0FBSyxHQUFZLEtBQUssQ0FBQztRQUUzQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQzFCLElBQUksSUFBSSxHQUFhLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZELEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztTQUN6QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQU9ELE9BQU8sQ0FBQyxNQUFjO1FBQ3BCLElBQUksSUFBSSxHQUFhLElBQUksQ0FBQztRQUUxQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQzFCLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUl6QyxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzVFLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtvQkFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM3QjthQUNGO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFjO1FBQ2hDLElBQUksSUFBSSxHQUFhLElBQUksQ0FBQztRQUUxQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSTtZQUN4QixJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS0QsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBTUQscUJBQXFCO1FBQ25CLE1BQU0sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFhRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsS0FBYSxFQUFFLE9BQXlCLEVBQUUsTUFBYyxFQUFFLGtCQUEyQixFQUFFLFdBQTZCLEVBQUUsY0FBdUIsRUFBRSxZQUErQjtRQUNyTSxJQUFJLE1BQU0sR0FBVyxJQUFJLENBQUM7UUFDMUIsWUFBWSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFM0IsSUFBSSxjQUFjLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQy9DLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2hFLFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQWE7UUFDaEMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQVdELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxLQUFhLEVBQUUsT0FBeUIsRUFBRSxNQUFjO1FBQ2hGLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBV0QsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUtELFVBQVU7UUFDUixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUE4Q08sVUFBVSxDQUFDLE1BQWMsRUFBRSxNQUFjO1FBRS9DLFFBQVEsTUFBTSxFQUFFO1lBQ2QsS0FBSyxDQUFDO2dCQUNKLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVsQyxLQUFLLFdBQVcsQ0FBQyxrQkFBa0I7Z0JBRWpDLElBQUksWUFBWSxHQUE4QixpQkFBaUIsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlILE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUUxQztnQkFDRSxNQUFNLEVBQUUsQ0FBQztnQkFDVCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJO29CQUMvQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMzRCxPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0gsQ0FBQztJQUtELGNBQWMsQ0FBQyxNQUFpQjtRQUM5QixJQUFJLFVBQVUsR0FBVyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDcEcsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFFaEUsSUFBSSxHQUFHLEdBQVcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFOUYsSUFBSSxNQUFNLEdBQWlCLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFaEgsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3BELElBQUksU0FBUyxHQUFXLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLElBQUksUUFBUSxHQUFXLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7b0JBQzNGLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyx1RUFBdUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUN0STtZQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3JHO0lBQ0gsQ0FBQztJQUtELFlBQVksQ0FBQyxTQUFpQixFQUFFLFFBQWdCO1FBQzlDLElBQUksY0FBYyxHQUFZLElBQUksQ0FBQztRQUVuQyxRQUFRLFNBQVMsRUFBRTtZQUNqQixLQUFLLFlBQVksQ0FBQyxpQkFBaUI7Z0JBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDO2dCQUNoQyxNQUFNO1lBRVIsS0FBSyxZQUFZLENBQUMsbUJBQW1CO2dCQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFDLE1BQU07WUFFUixLQUFLLFlBQVksQ0FBQyxnQkFBZ0I7Z0JBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdkMsTUFBTTtZQUVSLEtBQUssWUFBWSxDQUFDLDJCQUEyQjtnQkFDM0MsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7b0JBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBZ0IsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFM0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLE1BQU07WUFFUixLQUFLLFlBQVksQ0FBQyxjQUFjO2dCQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO29CQUNoRCxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2pELE1BQU07WUFFUixLQUFLLFlBQVksQ0FBQyxlQUFlO2dCQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hDLE1BQU07WUFFUixLQUFLLFlBQVksQ0FBQyxlQUFlO2dCQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMxQixNQUFNO1lBRVIsS0FBSyxZQUFZLENBQUMsdUJBQXVCO2dCQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2pDLE1BQU07WUFFUixLQUFLLFlBQVksQ0FBQyxtQkFBbUI7Z0JBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFFUixLQUFLLFlBQVksQ0FBQyxnQkFBZ0I7Z0JBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFCLE1BQU07WUFFUixLQUFLLFlBQVksQ0FBQyxvQkFBb0I7Z0JBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzlCLE1BQU07WUFFUixLQUFLLFlBQVksQ0FBQyxhQUFhO2dCQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN4QixNQUFNO1lBRVIsS0FBSyxZQUFZLENBQUMsc0JBQXNCO2dCQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztnQkFDN0IsTUFBTTtZQUdSLEtBQUssWUFBWSxDQUFDLGdCQUFnQjtnQkFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNO1lBRVIsS0FBSyxZQUFZLENBQUMsbUJBQW1CO2dCQUNuQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO29CQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztnQkFDN0IsTUFBTTtZQUVSLEtBQUssWUFBWSxDQUFDLGdDQUFnQztnQkFDaEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVELE1BQU07WUFFUjtnQkFDRSxjQUFjLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixNQUFNO1NBQ1Q7UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBUUQsWUFBWSxDQUFDLFVBQXNCO1FBQ2pDLElBQUksb0JBQW9CLEdBQVksS0FBSyxDQUFDO1FBQzFDLElBQUksdUJBQXVCLEdBQXNCLElBQUksUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFcEYsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUk7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLG9CQUFvQjtZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFFcEMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztZQUNoRCxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRS9CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBS0QsU0FBUyxDQUFDLFFBQWdCO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFLTyxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUN2QyxJQUFJLENBQUMsR0FBVyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDO0lBTUQsNkJBQTZCO1FBQzNCLElBQUksVUFBVSxHQUE2QixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sVUFBVSxLQUFLLElBQUksSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzNELFVBQVUsR0FBZ0IsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6RDtRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFNTyxVQUFVLENBQUMsUUFBZ0I7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFNTyxpQkFBaUIsQ0FBQyxRQUFnQjtRQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQU1PLGVBQWUsQ0FBQyxRQUFnQjtRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQU1PLFVBQVUsQ0FBQyxRQUFnQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQU1ELFVBQVUsQ0FBQyxTQUFrQjtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBTUQsY0FBYyxDQUFDLFFBQWdCO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBTU8sUUFBUSxDQUFDLFFBQWdCO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsNkJBQTZCLENBQUMsTUFBYztRQUMxQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFRRCxrQkFBa0IsQ0FBQyxHQUFXO1FBRTVCLElBQUksR0FBRyxJQUFJLElBQUk7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFRRCx5QkFBeUIsQ0FBQyxLQUFhO1FBQ3JDLElBQUksR0FBRyxHQUFXLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7QUF4N0JnQiw4QkFBa0IsR0FBVyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3QsIE5OdW1iZXIsIE5vdEltcGxlbWVudGVkRXhjZXB0aW9uLCBOU3RyaW5nLCBSZWZQYXJhbX0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7Q29uc3RhbnRzLCBMb2dnZXJfTG9nTGV2ZWxzLCBTdG9yYWdlQXR0cmlidXRlLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtJVGFza30gZnJvbSBcIi4vSVRhc2tcIjtcclxuaW1wb3J0IHtQcm9wUGFyZW50SW50ZXJmYWNlfSBmcm9tIFwiLi4vLi4vZ3VpL1Byb3BQYXJlbnRJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtJRmxvd01vbml0b3JRdWV1ZX0gZnJvbSBcIi4uLy4uL0lGbG93TW9uaXRvclF1ZXVlXCI7XHJcbmltcG9ydCB7TWdDb250cm9sQmFzZX0gZnJvbSBcIi4uL2d1aS9NZ0NvbnRyb2xCYXNlXCI7XHJcbmltcG9ydCB7R3VpRmllbGRCYXNlfSBmcm9tIFwiLi4vZGF0YS9HdWlGaWVsZEJhc2VcIjtcclxuaW1wb3J0IHtNZ0Zvcm1CYXNlfSBmcm9tIFwiLi4vZ3VpL01nRm9ybUJhc2VcIjtcclxuaW1wb3J0IHtQcm9wVGFibGV9IGZyb20gXCIuLi9ndWkvUHJvcFRhYmxlXCI7XHJcbmltcG9ydCB7SGVscHMsIE1hZ2ljSGVscH0gZnJvbSBcIi4uL2d1aS9IZWxwc1wiO1xyXG5pbXBvcnQge0d1aURhdGFWaWV3QmFzZX0gZnJvbSBcIi4uL2RhdGEvR3VpRGF0YVZpZXdCYXNlXCI7XHJcbmltcG9ydCB7SUFjdGlvbk1hbmFnZXJ9IGZyb20gXCIuLi9ldmVudHMvSUFjdGlvbk1hbmFnZXJcIjtcclxuaW1wb3J0IHtQcm9wZXJ0eX0gZnJvbSBcIi4uL2d1aS9Qcm9wZXJ0eVwiO1xyXG5pbXBvcnQge1Byb3BJbnRlcmZhY2V9IGZyb20gXCIuLi9ndWkvUHJvcEludGVyZmFjZVwiO1xyXG5pbXBvcnQge0ZpZWxkRGVmfSBmcm9tIFwiLi4vZGF0YS9GaWVsZERlZlwiO1xyXG5pbXBvcnQge0NvbW1hbmRzfSBmcm9tIFwiLi4vLi4vQ29tbWFuZHNcIjtcclxuaW1wb3J0IHtFdmVudHN9IGZyb20gXCIuLi8uLi9FdmVudHNcIjtcclxuaW1wb3J0IHtHdWlDb25zdGFudHN9IGZyb20gXCIuLi8uLi9HdWlDb25zdGFudHNcIjtcclxuaW1wb3J0IHtHdWlEYXRhQ29sbGVjdGlvbn0gZnJvbSBcIi4vR3VpRGF0YUNvbGxlY3Rpb25cIjtcclxuaW1wb3J0IHsgQ29tbWFuZFR5cGUsIEh0bWxQcm9wZXJ0aWVzIH0gZnJvbSBcIi4uLy4uL0d1aUVudW1zXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyB0YXNrIHByb3BlcnRpZXMgKCsgZmV3IGFjY2VzcyBtZXRob2RzKSByZXF1aXJlZCBhbmQgcmVsZXZhbnQgZm9yIHRoZSBHVUkgbmFtZXNwYWNlLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR3VpVGFza0Jhc2UgaW1wbGVtZW50cyBJVGFzaywgUHJvcFBhcmVudEludGVyZmFjZSB7XHJcbiAgcHJvdGVjdGVkIHN0YXRpYyBNQUlOX1BSR19QQVJFTlRfSUQ6IG51bWJlciA9IDMyNzY4O1xyXG4gIF9mbG93TW9uaXRvcjogSUZsb3dNb25pdG9yUXVldWUgPSBudWxsO1xyXG4gIHByaXZhdGUgX2tleWJvYXJkTWFwcGluZ1N0YXRlOiBudW1iZXIgPSAweEZGRkYwMDAwO1xyXG4gIF9yZWZyZXNoVHlwZTogc3RyaW5nID0gXCJUXCI7XHJcbiAgX2xhc3RQYXJrZWRDdHJsOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuICBwcml2YXRlIF9icmtMZXZlbDogc3RyaW5nID0gbnVsbDsgLy8gdGhlIHJ1bnRpbWUgbGV2ZWwgKFJlY29yZCAgU3VmZml4LCBHdWlUYXNrQmFzZSBQcmVmaXgsIGV0Yy4pXHJcbiAgcHJpdmF0ZSBfYnJrTGV2ZWxJbmRleDogbnVtYmVyID0gLTE7XHJcbiAgcHJpdmF0ZSBfbWFpbkxldmVsOiBzdHJpbmcgPSBudWxsOyAvLyB0aGUgcnVudGltZSBtYWlubGV2ZWxcclxuICBwcml2YXRlIF9sZXZlbDogc3RyaW5nID0gXCJcXDBcIjsgLy8gJ0MnID0gaW4gY29udHJvbCwgJ1InID0gaW4gcmVjb3JkIChvdXQgb2YgY29udHJvbCksICdUJyA9IGluIHRhc2sgKG91dCBvZiByZWNvcmQpXHJcbiAgX2VudGVyZWRSZWNMZXZlbDogYm9vbGVhbiA9IGZhbHNlOyAvLyBUUlVFIG9ubHkgaWYgdGhlIHRhc2sgd2FzIGV2ZXIgbW92ZWQgdG8gcmVjb3JkIGxldmVsLlxyXG4gIF9jdXJyUGFya2VkRmxkOiBHdWlGaWVsZEJhc2UgPSBudWxsO1xyXG4gIHByaXZhdGUgaXNJblJlY29tcHV0ZSA9IGZhbHNlO1xyXG4gIC8vIFRoaXMgZmxhZyByZXByZXNlbnRzIHRoZSBjdXJyZW50IGVkaXRpbmcgY29udHJvbC5cclxuICAvLyBJdCBpcyByZXNldCB0byBudWxsIHdoZW4gd2UgYXJlIGluIGJldHdlZW4gc2V0dGluZyB0aGUgZm9jdXMgYW5kIG9uY2Ugd2Ugc2V0IHRoZSBmb2N1cyB0byBjb250cm9sIHRoZW4gd2Ugc2V0IHRoaXMgZmxhZyB0byBjdXJyZW50IGZvY3VzZWQgY29udHJvbC5cclxuICBDdXJyZW50RWRpdGluZ0NvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gIHByaXZhdGUgc2hvdWxkUmVzdW1lU3ViZm9ybUxheW91dDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQXBwbGljYXRpb25HdWlkOiBzdHJpbmcgPSBudWxsO1xyXG4gIFByb2dyYW1Jc246IG51bWJlciA9IDA7XHJcbiAgVGFza0lzbjogbnVtYmVyID0gMDtcclxuICBDb250ZXh0SUQ6IG51bWJlciA9IDA7XHJcbiAgSXNTdWJGb3JtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgX2N0bElkeDogbnVtYmVyID0gMDtcclxuICBfY29tcElkeDogbnVtYmVyID0gMDtcclxuICBfaXNQcmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBfaXNNYWluUHJnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgSXNJbnRlcmFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIF90YXNrVGFnOiBzdHJpbmcgPSBudWxsO1xyXG4gIF9vcGVuV2luOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfYWxsb3dFdmVudHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBGb3JtOiBNZ0Zvcm1CYXNlID0gbnVsbDtcclxuICBfcHJvcFRhYjogUHJvcFRhYmxlID0gbnVsbDtcclxuICBfaGVscFRhYjogSGVscHMgPSBudWxsO1xyXG4gIF9udWxsQXJpdGhtZXRpYzogc3RyaW5nO1xyXG4gIEljb25GaWxlTmFtZTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgSXNQYXJhbGxlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIERhdGFWaWV3OiBHdWlEYXRhVmlld0Jhc2UgPSBudWxsO1xyXG4gIEFjdGlvbk1hbmFnZXI6IElBY3Rpb25NYW5hZ2VyID0gbnVsbDtcclxuICBTdHVkaW9QYXJlbnRUYXNrOiBHdWlUYXNrQmFzZSA9IG51bGw7IC8vIHBhcmVudCB0YXNrIG9mIHRoZSBzdWJ0YXNrIGJ5IHRvb2xraXQgdHJlZS5cclxuXHJcbiAgcHJpdmF0ZSByb3V0ZXJQYXRoOiBzdHJpbmcgPSBudWxsO1xyXG4gIHByb3RlY3RlZCByb3V0ZVBhcmFtczogTGlzdDxhbnk+ID0gbnVsbDtcclxuICBwcml2YXRlIGluRGVmYXVsdFJvdXRlck91dGxldDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuRGF0YVZpZXcuSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IFJvdXRlclBhdGgoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJvdXRlclBhdGg7XHJcbiAgfVxyXG5cclxuICBnZXQgUm91dGVyUGFyYW1zKCk6IExpc3Q8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZVBhcmFtcztcclxuICB9XHJcblxyXG4gIGdldCBJbkRlZmF1bHRSb3V0ZXJPdXRsZXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbkRlZmF1bHRSb3V0ZXJPdXRsZXQ7XHJcbiAgfVxyXG5cclxuICBJc1N1YnRhc2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBEYXRhVmlld1dhc1JldHJpZXZlZDogYm9vbGVhbiA9IGZhbHNlOyAvLyBpbmRpY2F0ZXMgdGhhdCB0aGUgZGF0YSB2aWV3IHdhcyByZXRyaWV2ZWQsIGkuZS4gaXQgaXMgcG9zc2libGUgdG8gZXZhbHVhdGUgZXhwcmVzc2lvbnNcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpbmRpY2F0ZXMgd2hldGhlciB0aGUgdGFzayBwcmVmaXggd2FzIHBlcmZvcm1lZCBmb3IgdGhpcyB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBUYXNrUHJlZml4RXhlY3V0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm5zIHRydWUgaWYgdGhpcyB0YXNrIHNob3VsZCBibG9jayBhY3RpdmF0aW9uIG9mIGl0cyBhY3Nlc3RvcnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldCBJc0Jsb2NraW5nQmF0Y2goKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuX2lzTWFpblByZyAmJiB0aGlzLmlzT3BlbldpbigpICYmICF0aGlzLl9hbGxvd0V2ZW50cyAmJiAhdGhpcy5Jc0ludGVyYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9udWxsQXJpdGhtZXRpYyA9IENvbnN0YW50cy5OVUxMX0FSSVRIX1VTRV9ERUY7XHJcbiAgICB0aGlzLl9wcm9wVGFiID0gbmV3IFByb3BUYWJsZSh0aGlzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGFzayBpZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VGFza1RhZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Rhc2tUYWc7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBjdGwgaWR4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRDdGxJZHgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jdGxJZHg7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlmIHRoaXMgdGFzayBpcyBhIG1haW4gcHJvZ3JhbSBvZiBhbiBpbnRlcm5hbCBvciBleHRlcm5hbCBjb21wb25lbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlzTWFpblByb2coKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNNYWluUHJnO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgdG9wbW9zdCBtZ2Zvcm0gb2YgdGhlIHN1YmZvcm1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0VG9wTW9zdEZvcm0oKTogTWdGb3JtQmFzZSB7XHJcbiAgICBsZXQgZm9ybTogTWdGb3JtQmFzZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuRm9ybSAhPT0gbnVsbClcclxuICAgICAgZm9ybSA9IHRoaXMuRm9ybS5nZXRUb3BNb3N0Rm9ybSgpO1xyXG4gICAgLy8gZWxzZVxyXG4gICAgLy8gQXNzZXJ0IHNob3VsZCBub3QgYmUgaGVyZSBiZWNhdXNlIHdlIGhhdmUgZGlmZmVyZW50IGNvbmRpdGlvbnMgZm9yIFJDICYgT0wuXHJcbiAgICAvLyBPdGhlciB0aGVuIE1haW4gUHJvZ3JhbSwgdGFzaydzIGZvcm0gc2hvdWxkIG5vdCBiZSBudWxsLlxyXG4gICAgLy8gRGVidWcuQXNzZXJ0KGlzTWFpblByb2coKSk7XHJcblxyXG4gICAgcmV0dXJuIGZvcm07XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgcmVxdWVzdGVkIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEN0cmwoY3RybElkeDogbnVtYmVyKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5Gb3JtLmdldEN0cmwoY3RybElkeCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzZXRzIHRoZSBjdXJyZW50IHRhc2sgbW9kZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsXCI+bmV3IHRhc2sgbW9kZTwvcGFyYW0+XHJcbiAgc2V0TW9kZSh2YWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZ2V0TW9kZSgpICE9PSB2YWwpIHtcclxuICAgICAgdGhpcy5zZXRQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RBU0tfTU9ERSwgdmFsKTtcclxuICAgICAgaWYgKHRoaXMuX2Zsb3dNb25pdG9yICE9PSBudWxsKVxyXG4gICAgICAgIHRoaXMuX2Zsb3dNb25pdG9yLmFkZFRhc2tDbmdNb2RlKHZhbCwgdGhpcy5HZXRUYXNrRGV0YWlscygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSB0YXNrIG1vZGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldE1vZGUoKTogc3RyaW5nIHtcclxuICAgIGxldCB0YXNrTW9kZTogc3RyaW5nID0gQ29uc3RhbnRzLlRBU0tfTU9ERV9NT0RJRlk7XHJcbiAgICBsZXQgcHJvcDogUHJvcGVydHkgPSB0aGlzLl9wcm9wVGFiLmdldFByb3BCeUlkKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RBU0tfTU9ERSk7XHJcbiAgICBpZiAocHJvcCAhPT0gbnVsbCkge1xyXG4gICAgICB0YXNrTW9kZSA9IHByb3AuR2V0Q29tcHV0ZWRWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRhc2tNb2RlO1xyXG4gIH1cclxuXHJcbiAgU2V0SW5SZWNvbXB1dGUoaW5SZWNvbXB1dGU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNJblJlY29tcHV0ZSA9IGluUmVjb21wdXRlO1xyXG4gIH1cclxuXHJcbiAgSXNJblJlY29tcHV0ZSgpIDogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0luUmVjb21wdXRlO1xyXG4gIH1cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmVzZXQgcmVmcmVzaCB0eXBlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICByZXNldFJlZnJlc2hUeXBlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVmcmVzaFR5cGUgPSBDb25zdGFudHMuVEFTS19SRUZSRVNIX05PTkU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHJlZnJlc2ggdHlwZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBnZXRSZWZyZXNoVHlwZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlZnJlc2hUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgcmVmcmVzaCB0eXBlIGZvciB0aGUgbmV4dCBSZWZyZXNoRGlzcGxheSgpIGNhbGxcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmVmcmVzaFR5cGVcIj50aGUgbmV3IHJlZnJlc2ggdHlwZTwvcGFyYW0+XHJcbiAgU2V0UmVmcmVzaFR5cGUocmVmcmVzaFR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChyZWZyZXNoVHlwZSkge1xyXG4gICAgICBjYXNlIENvbnN0YW50cy5UQVNLX1JFRlJFU0hfRk9STTpcclxuICAgICAgY2FzZSBDb25zdGFudHMuVEFTS19SRUZSRVNIX1RBQkxFOlxyXG4gICAgICBjYXNlIENvbnN0YW50cy5UQVNLX1JFRlJFU0hfQ1VSUl9SRUM6XHJcbiAgICAgICAgdGhpcy5fcmVmcmVzaFR5cGUgPSByZWZyZXNoVHlwZTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBHZXRSb3V0ZXJQYXJhbXMoKTogTGlzdDxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnJvdXRlUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBsYXN0IHBhcmtlZCBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRMYXN0UGFya2VkQ3RybCgpOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIHJldHVybiB0aGlzLl9sYXN0UGFya2VkQ3RybDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gZ2V0IHRoZSBvcGVuIHdpbmRvd1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgaXNPcGVuV2luKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wZW5XaW47XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaWYgdGhlIHByb3BlcnR5IGV4aXN0cyByZXR1cm5zIGl0cyBib29sZWFuIHZhbHVlIG90aGVyd2lzZSByZXR1cm5zIHRoZSBkZWZhdWx0IHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInByb3BJZFwiPmlkIG9mIHRoZSBwcm9wZXJ0eTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkZWZhdWx0UmV0VmFsXCI+dGhlIHZhbHVlIHRvIHJldHVybiBpbiBjYXNlIHRoZSBwcm9wZXJ0eSBkb2VzIG5vdCBleGlzdDwvcGFyYW0+XHJcbiAgYXN5bmMgY2hlY2tQcm9wKHByb3BJZDogbnVtYmVyLCBkZWZhdWx0UmV0VmFsOiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBsZXQgcHJvcDogUHJvcGVydHkgPSB0aGlzLmdldFByb3AocHJvcElkKTtcclxuICAgIGlmIChwcm9wICE9PSBudWxsKVxyXG4gICAgICByZXR1cm4gYXdhaXQgcHJvcC5nZXRWYWx1ZUJvb2xlYW4oKTtcclxuICAgIHJldHVybiBkZWZhdWx0UmV0VmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIGNsaWNrZWQgY29udHJvbCBvbiB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0Q2xpY2tlZENvbnRyb2woKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICBsZXQgY2xpY2tlZEN0cmw6IE1nQ29udHJvbEJhc2UgPSBFdmVudHMuR2V0UnVudGltZUNvbnRleHQobnVsbCkuQ3VycmVudENsaWNrZWRDdHJsO1xyXG5cclxuICAgIGlmIChjbGlja2VkQ3RybCAhPT0gbnVsbCAmJiBjbGlja2VkQ3RybC5nZXRGb3JtKCkuZ2V0VGFzaygpICE9PSB0aGlzKVxyXG4gICAgICBjbGlja2VkQ3RybCA9IG51bGw7XHJcblxyXG4gICAgcmV0dXJuIGNsaWNrZWRDdHJsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxyZXR1cm5zPiBrZXlib2FyZE1hcHBpbmdTdGF0ZVxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgZ2V0S2V5Ym9hcmRNYXBwaW5nU3RhdGUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9rZXlib2FyZE1hcHBpbmdTdGF0ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUgaWYgc3RhdGUgZW5hYmxlZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGF0ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBpc1N0YXRlRW5hYmxlZChzdGF0ZTogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKHN0YXRlICYgdGhpcy5fa2V5Ym9hcmRNYXBwaW5nU3RhdGUpID4gMDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTZXRzIHRoZSBzdGF0ZSBvbi9vZmZcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RhdGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwib25cIj48L3BhcmFtPlxyXG4gIHNldEtleWJvYXJkTWFwcGluZ1N0YXRlKHN0YXRlOiBudW1iZXIsIG9uOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9rZXlib2FyZE1hcHBpbmdTdGF0ZSA9IG9uXHJcbiAgICAgID8gR3VpVGFza0Jhc2UubWtJbnQoR3VpVGFza0Jhc2UuaGlTaHJ0KHRoaXMuX2tleWJvYXJkTWFwcGluZ1N0YXRlKSAmIH5zdGF0ZSwgR3VpVGFza0Jhc2UubG9TaHJ0KHRoaXMuX2tleWJvYXJkTWFwcGluZ1N0YXRlKSB8IHN0YXRlKVxyXG4gICAgICA6IEd1aVRhc2tCYXNlLm1rSW50KEd1aVRhc2tCYXNlLmhpU2hydCh0aGlzLl9rZXlib2FyZE1hcHBpbmdTdGF0ZSkgfCBzdGF0ZSwgR3VpVGFza0Jhc2UubG9TaHJ0KHRoaXMuX2tleWJvYXJkTWFwcGluZ1N0YXRlKSAmIH5zdGF0ZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm5cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gaGlnaGVyIGhhbGYgb2YgdGhlIGludGVnZXI8L3JldHVybnM+XHJcbiAgc3RhdGljIGhpU2hydChuOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChuICYgMHhmZmZmMDAwMCkgPj4gMTY7XHJcbiAgfVxyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm5cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gbG93IGhhbGYgb2YgdGhlIGludGVnZXI8L3JldHVybnM+XHJcbiAgc3RhdGljIGxvU2hydChuOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIG4gJiAweDAwMDBmZmZmO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJuMVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJuMlwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB1bml0ZXMgbG93IGhhbHZlcyBvZiAyIGludGVnZXJzIC8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgbWtJbnQobjE6IG51bWJlciwgbjI6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gbjEgPDwgMTYgfCBuMjtcclxuICB9XHJcblxyXG4gIGdldEhlbHBJdGVtKGlkeDogbnVtYmVyKTogTWFnaWNIZWxwIHtcclxuICAgIGlmICh0aGlzLl9oZWxwVGFiICE9PSBudWxsKVxyXG4gICAgICByZXR1cm4gdGhpcy5faGVscFRhYi5nZXRIZWxwKGlkeCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGEgcHJvcGVydHkgb2YgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJvcElkXCI+dGhlIGlkIG9mIHRoZSBwcm9wZXJ0eTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxcIj50aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5PC9wYXJhbT5cclxuICBzZXRQcm9wKHByb3BJZDogbnVtYmVyLCB2YWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcHJvcFRhYi5zZXRQcm9wKHByb3BJZCwgdmFsLCB0aGlzLCBcIlRcIik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSBydW50aW1lIGxldmVsIG9mIHRoZSB0YXNrIChSZWNvcmQgU3VmZml4LCBHdWlUYXNrQmFzZSBQcmVmaXgsIGV0Yy4pXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRCcmtMZXZlbChjQnJrTGV2ZWw6IHN0cmluZywgTmV3QnJrTGV2ZWxJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9icmtMZXZlbCA9IGNCcmtMZXZlbDtcclxuICAgIHRoaXMuX2Jya0xldmVsSW5kZXggPSBOZXdCcmtMZXZlbEluZGV4O1xyXG5cclxuICAgIHRoaXMuc2V0TWFpbkxldmVsKGNCcmtMZXZlbCk7IC8vIFVwZGF0ZSB0aGUgTWFpbkxldmVsIGFjY29yZGluZyB0byB0aGUgbmV3IExldmVsXHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgcnVudGltZSBsZXZlbCBvZiB0aGUgdGFzayAoUmVjb3JkIFN1ZmZpeCwgR3VpVGFza0Jhc2UgUHJlZml4LCBldGMuKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0QnJrTGV2ZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9icmtMZXZlbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIGlkIG9mIHRoZSBjdXJyZW50IGV4ZWN1dGluZyBoYW5kbGVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBpbnQgaWQgb2YgdGhlIGN1cnJlbnQgZXhlY3V0aW5nIGhhbmRsZXI8L3JldHVybnM+XHJcbiAgZ2V0QnJrTGV2ZWxJbmRleCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Jya0xldmVsSW5kZXg7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSBydW50aW1lIG1haW5sZXZlbCBvZiB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0TWFpbkxldmVsKGNCcmtMZXZlbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoY0Jya0xldmVsICE9PSBudWxsICYmIGNCcmtMZXZlbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBsZXZlbDogc3RyaW5nID0gY0Jya0xldmVsLmNoYXJBdCgwKTtcclxuICAgICAgLyogdGhlbiBNQUlOTEVWRUwgaXMgdXBkYXRlZCBvbmx5IGlmIHRoZSBhY3R1YWwgTGV2ZWwgaXMgYSBUQVNLIG9yIFJFQ09SRCAoIG9yIG5vbmUgKSBsZXZlbCAqL1xyXG4gICAgICBpZiAobGV2ZWwgPT09IENvbnN0YW50cy5UQVNLX0xFVkVMX05PTkUgfHwgbGV2ZWwgPT09IENvbnN0YW50cy5UQVNLX0xFVkVMX1RBU0sgfHxcclxuICAgICAgICBsZXZlbCA9PT0gQ29uc3RhbnRzLlRBU0tfTEVWRUxfUkVDT1JEKVxyXG4gICAgICAgIHRoaXMuX21haW5MZXZlbCA9IGNCcmtMZXZlbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIHJ1bnRpbWUgbWFpbmxldmVsIG9mIHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRNYWluTGV2ZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9tYWluTGV2ZWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSBsZXZlbCBvZiB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjTGV2ZWxcIj4nQycgPSBpbiBjb250cm9sLCAnUicgPSBpbiByZWNvcmQgKG91dCBvZiBjb250cm9sKSwgJ1QnID0gaW4gdGFzayAob3V0IG9mIHJlY29yZCkgICAgICAvLy8gPC9wYXJhbT5cclxuICBzZXRMZXZlbChjTGV2ZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fbGV2ZWwgPSBjTGV2ZWw7XHJcblxyXG4gICAgaWYgKHRoaXMuX2xldmVsID09PSBDb25zdGFudHMuVEFTS19MRVZFTF9SRUNPUkQpXHJcbiAgICAgIHRoaXMuX2VudGVyZWRSZWNMZXZlbCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBsZXZlbCBvZiB0aGUgdGFzazogJ0MnID0gaW4gY29udHJvbCwgJ1InID0gaW4gcmVjb3JkIChvdXQgb2YgY29udHJvbCksICdUJyA9IGluIHRhc2sgKG91dCBvZiByZWNvcmQpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRMZXZlbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xldmVsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgRGF0YVN5bmNlZCBwcm9wZXJ0eSBvZiB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXREYXRhU3luY2VkKHN5bmNlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgc2NoZW1lIGZvciBudWxsIGFyaXRobWV0aWNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldE51bGxBcml0aG1ldGljKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbnVsbEFyaXRobWV0aWM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSBsYXN0IHBhcmtlZCBjb250cm9sIGluIHRoaXMgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+bGFzdCBmb2N1c2VkIGNvbnRyb2w8L3BhcmFtPlxyXG4gIHNldExhc3RQYXJrZWRDdHJsKGN0cmw6IE1nQ29udHJvbEJhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX2xhc3RQYXJrZWRDdHJsID0gY3RybDtcclxuICAgIHRoaXMuX2N1cnJQYXJrZWRGbGQgPSAoKHRoaXMuX2xhc3RQYXJrZWRDdHJsICE9PSBudWxsKVxyXG4gICAgICA/IHRoaXMuX2xhc3RQYXJrZWRDdHJsLmdldEZpZWxkKClcclxuICAgICAgOiBudWxsKTtcclxuICAgIHRoaXMuQ3VycmVudEVkaXRpbmdDb250cm9sID0gY3RybDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgY3VycmVudCBmaWVsZCBvZiB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0Q3VyckZpZWxkKCk6IEd1aUZpZWxkQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VyclBhcmtlZEZsZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgY3VycmVudCBmaWVsZCBvZiB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0Q3VyckZpZWxkKGN1cnJGaWVsZDogR3VpRmllbGRCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdXJyUGFya2VkRmxkID0gY3VyckZpZWxkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaWVsZCBvZiB0aGUgY3VycmVudCBwYXJrZWQgY29udHJvbCBvciAtMSBpZiB0aGVyZSBpcyBubyBzdWNoIGZpZWxkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRDdXJyRmllbGRJZHgoKTogbnVtYmVyIHtcclxuICAgIGlmICh0aGlzLl9jdXJyUGFya2VkRmxkICE9PSBudWxsKVxyXG4gICAgICByZXR1cm4gdGhpcy5fY3VyclBhcmtlZEZsZC5nZXRJZCgpO1xyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmllbGRCeVZhbHVlU3RyKHZhbHVlU3RyOiBzdHJpbmcpOiBGaWVsZERlZjtcclxuICBnZXRGaWVsZEJ5VmFsdWVTdHIodmFsdWVTdHI6IHN0cmluZywgcGFyZW50OiBSZWZQYXJhbTxudW1iZXI+LCB2ZWU6IFJlZlBhcmFtPG51bWJlcj4pOiBGaWVsZERlZjtcclxuICBnZXRGaWVsZEJ5VmFsdWVTdHIodmFsdWVTdHI6IHN0cmluZywgcGFyZW50PzogUmVmUGFyYW08bnVtYmVyPiwgdmVlPzogUmVmUGFyYW08bnVtYmVyPik6IEZpZWxkRGVmIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZEJ5VmFsdWVTdHJfMCh2YWx1ZVN0cik7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkQnlWYWx1ZVN0cl8xKHZhbHVlU3RyLCBwYXJlbnQsIHZlZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpZWxkQnlWYWx1ZVN0cl8wKHZhbHVlU3RyOiBzdHJpbmcpOiBGaWVsZERlZiB7XHJcbiAgICBsZXQgcGFyZW50OiBudW1iZXI7XHJcbiAgICBsZXQgdmVlOiBudW1iZXI7XHJcbiAgICBsZXQgcmVmUGFyZW50OiBSZWZQYXJhbTxudW1iZXI+ID0gbmV3IFJlZlBhcmFtKHBhcmVudCk7XHJcbiAgICBsZXQgcmVmVmVlOiBSZWZQYXJhbTxudW1iZXI+ID0gbmV3IFJlZlBhcmFtKHZlZSk7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZEJ5VmFsdWVTdHJfMSh2YWx1ZVN0ciwgcmVmUGFyZW50LCByZWZWZWUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBnZXQgdGhlIGZpZWxkIGJ5ICd2YWx1ZVN0cidcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgZ2V0RmllbGRCeVZhbHVlU3RyXzEodmFsdWVTdHI6IHN0cmluZywgcGFyZW50OiBSZWZQYXJhbTxudW1iZXI+LCB2ZWU6IFJlZlBhcmFtPG51bWJlcj4pOiBGaWVsZERlZiB7XHJcbiAgICBwYXJlbnQudmFsdWUgPSB2ZWUudmFsdWUgPSAwO1xyXG4gICAgbGV0IHRlbXBGaWVsZDogRmllbGREZWYgPSBudWxsO1xyXG4gICAgbGV0IGNvbW1hOiBudW1iZXIgPSB2YWx1ZVN0ci5pbmRleE9mKFwiLFwiKTtcclxuICAgIGlmIChjb21tYSA+IDApIHtcclxuICAgICAgbGV0IHBhcmVudElkOiBudW1iZXIgPSBOTnVtYmVyLlBhcnNlKHZhbHVlU3RyLnN1YnN0cigwLCBjb21tYSkpO1xyXG4gICAgICBsZXQgZmxkSWR4OiBudW1iZXIgPSBOTnVtYmVyLlBhcnNlKHZhbHVlU3RyLnN1YnN0cihjb21tYSArIDEpKTtcclxuICAgICAgdGVtcEZpZWxkID0gKChwYXJlbnRJZCAhPT0gMClcclxuICAgICAgICA/IHRoaXMuZ2V0RmllbGREZWYocGFyZW50SWQsIGZsZElkeClcclxuICAgICAgICA6IHRoaXMuZ2V0RmllbGREZWYoZmxkSWR4KSk7XHJcbiAgICAgIHBhcmVudC52YWx1ZSA9IHBhcmVudElkO1xyXG4gICAgICB2ZWUudmFsdWUgPSBmbGRJZHg7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGVtcEZpZWxkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBnZXQgdGhlIGZpZWxkIGZyb20gYSAxLWJhc2VkIG1haW4gcHJvZyBhcmd1bWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVTdHJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0TWFpblByb2dGaWVsZEJ5VmFsdWVTdHIodmFsdWVTdHI6IHN0cmluZyk6IEZpZWxkRGVmIHtcclxuICAgIC8vIHN0cmluZyBpcyAxLWJhc2VkIC0gbmVlZCB0byBzdWJ0cmFjdCAxIHRvIGdldCB0byAwLWJhc2VkIHZhbHVlXHJcbiAgICBsZXQgZmxkSWR4OiBudW1iZXIgPSBOTnVtYmVyLlBhcnNlKHZhbHVlU3RyKSAtIDE7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZERlZihmbGRJZHgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmllbGREZWYoZmxkSWQ6IG51bWJlcik6IEZpZWxkRGVmO1xyXG4gIGdldEZpZWxkRGVmKHBhcmVudDogbnVtYmVyLCBmbGRJZHg6IG51bWJlcik6IEZpZWxkRGVmO1xyXG4gIGdldEZpZWxkRGVmKGZsZElkT3JQYXJlbnQ6IG51bWJlciwgZmxkSWR4PzogbnVtYmVyKTogRmllbGREZWYge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpXHJcbiAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkXzAoZmxkSWRPclBhcmVudCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkXzEoZmxkSWRPclBhcmVudCwgZmxkSWR4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgYSBmaWVsZCBieSBpdHMgaWR4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZsZElkXCI+aWQgb2YgdGhlIGZpZWxkIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBnZXRGaWVsZF8wKGZsZElkOiBudW1iZXIpOiBGaWVsZERlZiB7XHJcbiAgICByZXR1cm4gdGhpcy5EYXRhVmlldy5nZXRGaWVsZChmbGRJZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGluaXRpYWxpemUgdGhlIGN1cnJlbnQgdGFzaydzIGZvcm0uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBJbml0Rm9ybSgpIHtcclxuICAgIGlmICh0aGlzLkZvcm0gIT09IG51bGwgJiYgdGhpcy5pc09wZW5XaW4oKSkge1xyXG4gICAgICB0aGlzLkZvcm0uSW5Jbml0Rm9ybSA9IHRydWU7XHJcbiAgICAgIGF3YWl0IHRoaXMuRm9ybS5pbml0KCk7XHJcblxyXG5cclxuICAgICAgdGhpcy5TZXRSZWZyZXNoVHlwZShDb25zdGFudHMuVEFTS19SRUZSRVNIX0ZPUk0pO1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy5SZWZyZXNoRGlzcGxheSgpO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgICAgdGhpcy5Gb3JtLkluSW5pdEZvcm0gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmVzdW1lIHN1YmZvcm0gbGF5b3V0XHJcbiAgLy8vIDwvc3VtbWFyeVxyXG4gIFJlc3VtZVN1YmZvcm1MYXlvdXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5Gb3JtICE9PSBudWxsKSB7XHJcbiAgICAgIGxldCBzdWJGb3JtQ3RybDogTWdDb250cm9sQmFzZSA9IDxNZ0NvbnRyb2xCYXNlPnRoaXMuRm9ybS5nZXRTdWJGb3JtQ3RybCgpO1xyXG4gICAgICBpZiAoc3ViRm9ybUN0cmwgIT09IG51bGwgJiYgdGhpcy5zaG91bGRSZXN1bWVTdWJmb3JtTGF5b3V0KSB7XHJcbiAgICAgICAgLy8gcmVmcmVzaCB0aGUgdmlzaWJsZSBwcm9wZXJ0eVxyXG4gICAgICAgIENvbW1hbmRzLmFkZE9wZXJhdGlvbldpdGhMaW5lKENvbW1hbmRUeXBlLlNFVF9QUk9QRVJUWSwgc3ViRm9ybUN0cmwsIDAsXHJcbiAgICAgICAgICAgSHRtbFByb3BlcnRpZXMuVmlzaWJsZSAsIHN1YkZvcm1DdHJsLmlzVmlzaWJsZSgpKTtcclxuXHJcbiAgICAgICAgdGhpcy5zaG91bGRSZXN1bWVTdWJmb3JtTGF5b3V0ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sIHdoaWNoIHdhcyBsYXN0IHBhcmtlZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkZXB0aFwiPnRoZSBnZW5lcmF0aW9uPC9wYXJhbT5cclxuICBHZXRMYXN0UGFya2VkQ3RybE5hbWUoZGVwdGg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgYW5jZXN0b3I6IEd1aVRhc2tCYXNlID0gPEd1aVRhc2tCYXNlPnRoaXMuR2V0VGFza0FuY2VzdG9yKGRlcHRoKTtcclxuICAgIGlmIChhbmNlc3RvciA9PT0gbnVsbCB8fCBhbmNlc3Rvci5fbGFzdFBhcmtlZEN0cmwgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgcmV0dXJuIGFuY2VzdG9yLl9sYXN0UGFya2VkQ3RybC5OYW1lO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgZm9ybSBvZiB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBGb3JtIGlzIHRoZSBmb3JtIG9mIHRoZSB0YXNrPC9yZXR1cm5zPlxyXG4gIGdldEZvcm0oKTogTWdGb3JtQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5Gb3JtO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTZXQgdGFzaydzIGZvcm0uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IEZvcm0gaXMgdGhlIGZvcm0gb2YgdGhlIHRhc2s8L3JldHVybnM+XHJcbiAgU2V0Rm9ybSh2YWx1ZTogTWdGb3JtQmFzZSk6IE1nRm9ybUJhc2Uge1xyXG4gICAgdGhpcy5Gb3JtID0gdmFsdWU7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBjaGVja0lmRXhpc3RQcm9wKHByb3BJZDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgZXhpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5fcHJvcFRhYiAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgcHJvcDogUHJvcGVydHkgPSB0aGlzLl9wcm9wVGFiLmdldFByb3BCeUlkKHByb3BJZCk7XHJcbiAgICAgIGV4aXN0ID0gKHByb3AgIT09IG51bGwpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGV4aXN0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBhIHRhc2sgcHJvcGVydHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJvcElkXCI+SWQgb2YgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIGdldFByb3AocHJvcElkOiBudW1iZXIpOiBQcm9wZXJ0eSB7XHJcbiAgICBsZXQgcHJvcDogUHJvcGVydHkgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLl9wcm9wVGFiICE9PSBudWxsKSB7XHJcbiAgICAgIHByb3AgPSB0aGlzLl9wcm9wVGFiLmdldFByb3BCeUlkKHByb3BJZCk7XHJcblxyXG4gICAgICAvLyBpZiB0aGUgcHJvcGVydHkgZG9lc24ndCBleGlzdCB0aGVuIGNyZWF0ZSBhIG5ldyBwcm9wZXJ0eSBhbmQgZ2l2ZSBpdCB0aGUgZGVmYXVsdCB2YWx1ZVxyXG4gICAgICAvLyBpbiBhZGRpdGlvbiBhZGQgdGhpcyBwcm9wZXJ0eSB0byB0aGUgcHJvcGVydGllcyB0YWJsZVxyXG4gICAgICBpZiAocHJvcCA9PT0gbnVsbCkge1xyXG4gICAgICAgIHByb3AgPSBQcm9wZXJ0eS5nZXREZWZhdWx0UHJvcChwcm9wSWQsIEd1aUNvbnN0YW50cy5QQVJFTlRfVFlQRV9UQVNLLCB0aGlzKTtcclxuICAgICAgICBpZiAocHJvcCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgcHJvcC5TdHVkaW9WYWx1ZSA9IHByb3AuZ2V0T3JnVmFsdWUoKTtcclxuICAgICAgICAgIHRoaXMuX3Byb3BUYWIuYWRkUHJvcChwcm9wKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwcm9wO1xyXG4gIH1cclxuXHJcbiAgR2V0Q29tcHV0ZWRQcm9wZXJ0eShwcm9wSWQ6IG51bWJlcik6IFByb3BlcnR5IHtcclxuICAgIGxldCBwcm9wOiBQcm9wZXJ0eSA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuX3Byb3BUYWIgIT09IG51bGwpXHJcbiAgICAgIHByb3AgPSB0aGlzLl9wcm9wVGFiLmdldFByb3BCeUlkKHByb3BJZCk7XHJcbiAgICByZXR1cm4gcHJvcDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIGNvbXBvbmVudCBpZHhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldENvbXBJZHgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jb21wSWR4O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0cnVlIGlmIHRoaXMgaXMgZmlyc3QgcmVmcmVzaFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBJc0ZpcnN0UmVmcmVzaE9mUHJvcHMoKTogYm9vbGVhbiB7XHJcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24oKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gRXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhc3NlZCBJRC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImV4cElkXCI+RXhwIElEPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXNUeXBlXCI+ZXhwZWN0ZWQgcmV0dXJuIHR5cGU8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxlbmd0aFwiPkV4cGVjdGVkIGxlbiAtIGlzIG5vdCB1c2VkLCBpdCBtdXN0IGJlIGhlcmUgYmVjYXVzZSBvZiBjb21wdXRhYmlsaXR5IHdpdGggUmljaCBDbGllbnQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRlbnRUeXBlVW5pY29kZVwiPnNob3VsZCB0aGUgcmVzdWx0IGJlIHVuaWNvZGU8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlc0NlbGxUeXBlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhbHdheXNFdmFsdWF0ZVwiPmZvciBmb3JtIHByb3BlcnRpZXMgYW5kIHNvbWUgY29udHJvbCBwcm9wZXJ0aWVzIHdlIGFsd2F5cyBldmFsdWF0ZSBleHByZXNzaW9uczwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwid2FzRXZhbHVhdGVkXCI+aW5kaWNhdGVzIHdoZXRoZXIgdGhlIGV4cHJlc3Npb24gd2FzIGV2YWx1YXRlZDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPmV2YWx1YXRlZCB2YWx1ZTwvcmV0dXJucz5cclxuICBhc3luYyBFdmFsdWF0ZUV4cHJlc3Npb24oZXhwSWQ6IG51bWJlciwgcmVzVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSwgbGVuZ3RoOiBudW1iZXIsIGNvbnRlbnRUeXBlVW5pY29kZTogYm9vbGVhbiwgcmVzQ2VsbFR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIGFsd2F5c0V2YWx1YXRlOiBib29sZWFuLCB3YXNFdmFsdWF0ZWQ6IFJlZlBhcmFtPGJvb2xlYW4+KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9IG51bGw7XHJcbiAgICB3YXNFdmFsdWF0ZWQudmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoYWx3YXlzRXZhbHVhdGUgfHwgdGhpcy5EYXRhVmlld1dhc1JldHJpZXZlZCkge1xyXG4gICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLkNhbGN1bGF0ZUV4cHJlc3Npb24oZXhwSWQsIHJlc1R5cGUsIGxlbmd0aCk7XHJcbiAgICAgIHdhc0V2YWx1YXRlZC52YWx1ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgR2V0RXhwcmVzc2lvblN0b3JhZ2UoZXhwSWQ6IG51bWJlcik6IFN0b3JhZ2VBdHRyaWJ1dGUge1xyXG4gICAgcmV0dXJuIHRoaXMuR2V0RXhwcmVzc2lvblN0b3JhZ2UoZXhwSWQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDYWxjdWxhdGUgZXhwcmVzaW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJleHBJZFwiPlRoZSBleHByZXNzaW9uIHRvIGV2YWx1YXRlPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyZXNUeXBlXCI+VGhlIGV4cGVjdGVkIHJlc3VsdCB0eXBlLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuZ3RoXCI+VGhlIGV4cGVjdGVkIGxlbmd0aCBvZiB0aGUgcmVzdWx0LjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udGVudFR5cGVVbmljb2RlXCI+RGVub3RlcyB3aGV0aGVyIHRoZSByZXN1bHQgaXMgZXhwZWN0ZWQgdG8gYmUgYSB1bmljb2RlIHN0cmluZy48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlc0NlbGxUeXBlXCI+Tm90IHVzZWQuPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGFzeW5jIENhbGN1bGF0ZUV4cHJlc3Npb24oZXhwSWQ6IG51bWJlciwgcmVzVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSwgbGVuZ3RoOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz57XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFwiXCIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBjcmVhdGVzIGEgbWdmb3JtIG9iamVjdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBhYnN0cmFjdCBDb25zdHJ1Y3RNZ0Zvcm0oYWxyZWFkeVNldFBhcmVudEZvcm06IFJlZlBhcmFtPGJvb2xlYW4+KTogTWdGb3JtQmFzZSA7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUgaWYgdGhlIHRhc2sgaXMgc3RhcnRlZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgaXNTdGFydGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgdGVsbHMgd2hldGhlciB0aGUgdGFzayBpcyBhYm9ydGluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgaXNBYm9ydGluZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGFuY2VzdG9yIG9mIHRoZSBHdWlUYXNrQmFzZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJnZW5lcmF0aW9uXCI+b2YgdGhlIGFuY2VzdG9yIHRhc2s8L3BhcmFtPlxyXG4gIGFic3RyYWN0IEdldFRhc2tBbmNlc3RvcihnZW5lcmF0aW9uOiBudW1iZXIpOiBJVGFzaztcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBnZXQgdGhlIGNvbnRleHQgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBhYnN0cmFjdCBHZXRDb250ZXh0VGFzaygpOiBJVGFzaztcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZXR1cm5zIHRhc2sgZGVwdGhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgYWJzdHJhY3QgR2V0VGFza0RlcHRoKCk6IG51bWJlcjtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiByZWZyZXNoIHRoZSBkaXNwbGF5LCBwYWludCB0aGUgY29udHJvbHMgYW5kIHRoZWlyIHByb3BlcnRpZXMgYWdhaW4gPC9zdW1tYXJ5PlxyXG4gIGFic3RyYWN0IFJlZnJlc2hEaXNwbGF5KCk6IHZvaWQgO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGdldCB0aGUgdmFsdWUgb2YgYSBmaWVsZC4gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZpZWxkRGVmXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNOdWxsXCI+PC9wYXJhbT5cclxuICAvLyBUT0RPIHNhZGhhbiByZW1vdmUgdW51c2VkXHJcbiAgLy8gYWJzdHJhY3QgYXN5bmMgZ2V0RmllbGRWYWx1ZShmaWVsZERlZjogRmllbGREZWYsIHZhbHVlOiBSZWZQYXJhbTxzdHJpbmc+LCBpc051bGw6IFJlZlBhcmFtPGJvb2xlYW4+KTogUHJvbWlzZTx2b2lkPiA7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gZ2V0IHRoZSBkaXNwbGF5IHZhbHVlIG9mIGEgZmllbGQuIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmaWVsZERlZlwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzTnVsbFwiPjwvcGFyYW0+XHJcbiAgYWJzdHJhY3QgZ2V0RmllbGREaXNwbGF5VmFsdWUoZmllbGREZWY6IEZpZWxkRGVmLCB2YWx1ZTogUmVmUGFyYW08c3RyaW5nPiwgaXNOdWxsOiBSZWZQYXJhbTxib29sZWFuPik6IHZvaWQgO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IHVwZGF0ZXMgdGhlIGZpZWxkJ3MgdmFsdWUgYW5kIHN0YXJ0cyByZWNvbXB1dGUuIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmaWVsZERlZlwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzTnVsbFwiPjwvcGFyYW0+XHJcbiAgYWJzdHJhY3QgVXBkYXRlRmllbGRWYWx1ZUFuZFN0YXJ0UmVjb21wdXRlKGZpZWxkRGVmOiBGaWVsZERlZiwgdmFsdWU6IHN0cmluZywgaXNOdWxsOiBib29sZWFuKTogdm9pZCA7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5nZXQgYSBmaWVsZCBmcm9tIHRoZSB0YXNrLnRyYXZlbCBieSBwYXJlbnRzIChpLmUuIE5PVCBieSB0cmlnZ2VyaW5nIHRhc2tzKS48L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwYXJlbnRcIj5nZW5lcmF0aW9uIG51bWJlciAoMCBpcyBjdXJyZW50IHRhc2spPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZsZElkeFwiPnRoZSBmaWVsZCBpbmRleCB3aXRoaW4gaXRzIHRhc2s8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGlkIG9mIHRoZSBmaWVsZCBkZXNjcmliZWQgYnkgcGFyZW50ICsgaWR4PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgZ2V0RmllbGRfMShwYXJlbnQ6IG51bWJlciwgZmxkSWR4OiBudW1iZXIpOiBGaWVsZERlZiB7XHJcblxyXG4gICAgc3dpdGNoIChwYXJlbnQpIHtcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkRGVmKGZsZElkeCk7XHJcblxyXG4gICAgICBjYXNlIEd1aVRhc2tCYXNlLk1BSU5fUFJHX1BBUkVOVF9JRDpcclxuICAgICAgICAvLyBmaW5kIHRoZSBtYWluIHByb2dyYW0gdXNpbmcgdGhlIGNvbXBvbmVudCBpZCAoY3RsIGlkeClcclxuICAgICAgICBsZXQgY29tcE1haW5Qcm9nOiBHdWlUYXNrQmFzZSA9IDxHdWlUYXNrQmFzZT4gR3VpRGF0YUNvbGxlY3Rpb24uTUdEYXRhVGFibGUuR2V0TWFpblByb2dCeUN0bElkeCh0aGlzLkNvbnRleHRJRCwgdGhpcy5fY3RsSWR4KTtcclxuICAgICAgICByZXR1cm4gY29tcE1haW5Qcm9nLmdldEZpZWxkRGVmKGZsZElkeCk7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHBhcmVudC0tO1xyXG4gICAgICAgIGlmICh0aGlzLlN0dWRpb1BhcmVudFRhc2sgIT0gbnVsbClcclxuICAgICAgICAgIHJldHVybiB0aGlzLlN0dWRpb1BhcmVudFRhc2suZ2V0RmllbGREZWYocGFyZW50LCBmbGRJZHgpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgdGFzayBhdHRyaWJ1dGVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBmaWxsQXR0cmlidXRlcyhwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgbGV0IGVuZENvbnRleHQ6IG51bWJlciA9IHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpO1xyXG4gICAgaWYgKGVuZENvbnRleHQgIT09IC0xICYmIGVuZENvbnRleHQgPCBwYXJzZXIuZ2V0WE1MZGF0YSgpLmxlbmd0aCkge1xyXG4gICAgICAvLyBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgbGV0IHRhZzogc3RyaW5nID0gcGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KTtcclxuICAgICAgcGFyc2VyLmFkZDJDdXJySW5kZXgodGFnLmluZGV4T2YoWE1MQ29uc3RhbnRzLk1HX1RBR19UQVNLKSArIFhNTENvbnN0YW50cy5NR19UQUdfVEFTSy5sZW5ndGgpO1xyXG5cclxuICAgICAgbGV0IHRva2VuczogTGlzdDxzdHJpbmc+ID0gWG1sUGFyc2VyLmdldFRva2VucyhwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpLCBYTUxDb25zdGFudHMuWE1MX0FUVFJfREVMSU0pO1xyXG5cclxuICAgICAgZm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHRva2Vucy5sZW5ndGg7IGogPSBqICsgMikge1xyXG4gICAgICAgIGxldCBhdHRyaWJ1dGU6IHN0cmluZyA9IHRva2Vucy5nZXRfSXRlbShqKTtcclxuICAgICAgICBsZXQgdmFsdWVTdHI6IHN0cmluZyA9IHRva2Vucy5nZXRfSXRlbShqICsgMSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlU3RyKSAmJiBFdmVudHMuU2hvdWxkTG9nKExvZ2dlcl9Mb2dMZXZlbHMuRGV2ZWxvcG1lbnQpKVxyXG4gICAgICAgICAgRXZlbnRzLldyaXRlRGV2VG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJJbiBUYXNrQmFzZS5maWxsQXR0cmlidXRlcygpOiBVbnByb2Nlc3NlZCghKSBhdHRyaWJ1dGU6ICd7MH0nID0gJ3sxfSdcIiwgYXR0cmlidXRlLCB2YWx1ZVN0cikpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpICsgMSk7IC8vIHRvIGRlbGV0ZSBcIj5cIiB0b29cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIHRhc2sgYXR0cmlidXRlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0QXR0cmlidXRlKGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZVN0cjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNUYWdQcm9jZXNzZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHN3aXRjaCAoYXR0cmlidXRlKSB7XHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfQVBQTF9HVUlEOlxyXG4gICAgICAgIHRoaXMuQXBwbGljYXRpb25HdWlkID0gdmFsdWVTdHI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1BST0dSQU1fSVNOOlxyXG4gICAgICAgIHRoaXMuUHJvZ3JhbUlzbiA9IE5OdW1iZXIuUGFyc2UodmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9UQVNLX0lTTjpcclxuICAgICAgICB0aGlzLlRhc2tJc24gPSBOTnVtYmVyLlBhcnNlKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfVE9PTEtJVF9QQVJFTlRfVEFTSzpcclxuICAgICAgICBpZiAoTk51bWJlci5QYXJzZSh2YWx1ZVN0cikgIT09IDApXHJcbiAgICAgICAgICB0aGlzLlN0dWRpb1BhcmVudFRhc2sgPSA8R3VpVGFza0Jhc2U+R3VpRGF0YUNvbGxlY3Rpb24uTUdEYXRhVGFibGUuR2V0VGFza0J5SUQodmFsdWVTdHIpO1xyXG5cclxuICAgICAgICB0aGlzLklzU3VidGFzayA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1RBU0tJRDpcclxuICAgICAgICB0aGlzLnNldFRhc2tJZCh2YWx1ZVN0cik7XHJcbiAgICAgICAgaWYgKEV2ZW50cy5TaG91bGRMb2coTG9nZ2VyX0xvZ0xldmVscy5EZXZlbG9wbWVudCkpXHJcbiAgICAgICAgICBFdmVudHMuV3JpdGVEZXZUb0xvZyhcIlRBU0s6IFwiICsgdGhpcy5fdGFza1RhZyk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0NUTF9JRFg6XHJcbiAgICAgICAgdGhpcy5zZXRDdGxBbmRDb21wSWR4KHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfTUFJTlBSRzpcclxuICAgICAgICB0aGlzLnNldE1haW5QcmcodmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9OVUxMX0FSSVRITUVUSUM6XHJcbiAgICAgICAgdGhpcy5zZXROdWxsQXJpdGhtZXRpYyh2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSQUNUSVZFOlxyXG4gICAgICAgIHRoaXMuc2V0SXNJbnRlcmFjaXZlKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfT1BFTl9XSU46XHJcbiAgICAgICAgdGhpcy5zZXRPcGVuV2luKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfQUxMT1dfRVZFTlRTOlxyXG4gICAgICAgIHRoaXMuU2V0QWxsb3dFdmVudHModmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9JU1BSRzpcclxuICAgICAgICB0aGlzLnNldElzUHJnKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSUNPTl9GSUxFX05BTUU6XHJcbiAgICAgICAgdGhpcy5JY29uRmlsZU5hbWUgPSB2YWx1ZVN0cjtcclxuICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1BBUkFMTEVMOlxyXG4gICAgICAgIHRoaXMuSXNQYXJhbGxlbCA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfUk9VVEVSX1BBVEg6XHJcbiAgICAgICAgaWYgKHZhbHVlU3RyLnRyaW0oKSAhPSBcIlwiKVxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXJQYXRoID0gdmFsdWVTdHI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0lOX0RFRkFVTFRfUk9VVEVSX09VVExFVDpcclxuICAgICAgICB0aGlzLmluRGVmYXVsdFJvdXRlck91dGxldCA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgaXNUYWdQcm9jZXNzZWQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNUYWdQcm9jZXNzZWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGluaXQgZGF0YSBmb3IgZm9ybSBhbmQgcmV0dXJuIHRoZSBmb3JtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmb3VuZFRhZ05hbWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInBhcmVudEZvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgRm9ybUluaXREYXRhKHBhcmVudEZvcm06IE1nRm9ybUJhc2UpOiBNZ0Zvcm1CYXNlIHtcclxuICAgIGxldCBhbHJlYWR5U2V0UGFyZW50Rm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbGV0IHJlZkFscmVhZHlTZXRQYXJlbnRGb3JtOiBSZWZQYXJhbTxib29sZWFuPiA9IG5ldyBSZWZQYXJhbShhbHJlYWR5U2V0UGFyZW50Rm9ybSk7XHJcblxyXG4gICAgaWYgKHRoaXMuRm9ybSA9PT0gbnVsbClcclxuICAgICAgdGhpcy5Gb3JtID0gdGhpcy5Db25zdHJ1Y3RNZ0Zvcm0ocmVmQWxyZWFkeVNldFBhcmVudEZvcm0pO1xyXG5cclxuICAgIGlmICghYWxyZWFkeVNldFBhcmVudEZvcm0pXHJcbiAgICAgIHRoaXMuRm9ybS5QYXJlbnRGb3JtID0gcGFyZW50Rm9ybTtcclxuXHJcbiAgICBpZiAoRXZlbnRzLlNob3VsZExvZyhMb2dnZXJfTG9nTGV2ZWxzLkRldmVsb3BtZW50KSlcclxuICAgICAgRXZlbnRzLldyaXRlRGV2VG9Mb2coXCJmb3JtXCIpO1xyXG5cclxuICAgIHRoaXMuRm9ybS5maWxsRGF0YSh0aGlzKTtcclxuICAgIHJldHVybiB0aGlzLkZvcm07XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRhc2sgaWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFRhc2tJZCh2YWx1ZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl90YXNrVGFnID0gdmFsdWVTdHI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGN0bElkeCAmIGNvbXBJZHhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgc2V0Q3RsQW5kQ29tcElkeCh2YWx1ZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgaTogbnVtYmVyID0gdmFsdWVTdHIuaW5kZXhPZihcIixcIik7XHJcbiAgICBpZiAoaSA+IC0xKSB7XHJcbiAgICAgIHRoaXMuX2N0bElkeCA9IE5OdW1iZXIuUGFyc2UodmFsdWVTdHIuc3Vic3RyKDAsIGkpKTtcclxuICAgICAgdGhpcy5fY29tcElkeCA9IE5OdW1iZXIuUGFyc2UodmFsdWVTdHIuc3Vic3RyKGkgKyAxKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldCBhbmNlc3RvciB0YXNrIGNvbnRhaW5pbmcgZm9ybVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPkd1aVRhc2tCYXNlPC9yZXR1cm5zPlxyXG4gIEdldEFuY2VzdG9yVGFza0NvbnRhaW5pbmdGb3JtKCk6IEd1aVRhc2tCYXNlIHtcclxuICAgIGxldCBwYXJlbnRUYXNrOiBHdWlUYXNrQmFzZSA9IDxHdWlUYXNrQmFzZT50aGlzLkdldFRhc2tBbmNlc3RvcigxKTtcclxuICAgIHdoaWxlIChwYXJlbnRUYXNrICE9PSBudWxsICYmIHBhcmVudFRhc2suZ2V0Rm9ybSgpID09PSBudWxsKSB7XHJcbiAgICAgIHBhcmVudFRhc2sgPSA8R3VpVGFza0Jhc2U+cGFyZW50VGFzay5HZXRUYXNrQW5jZXN0b3IoMSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhcmVudFRhc2s7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldCBpc01haW5QcmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIHNldE1haW5QcmcodmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5faXNNYWluUHJnID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzZXQgbnVsbEFyaXRobWV0aWNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIHNldE51bGxBcml0aG1ldGljKHZhbHVlU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX251bGxBcml0aG1ldGljID0gdmFsdWVTdHIuY2hhckF0KDApO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzZXQgaXNJbnRlcmFjdGl2ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVTdHJcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgc2V0SXNJbnRlcmFjaXZlKHZhbHVlU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuSXNJbnRlcmFjdGl2ZSA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0IG9wZW5XaW5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIHNldE9wZW5XaW4odmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3BlbldpbiA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0IG9wZW5XaW5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICBTZXRPcGVuV2luKHZhbHVlYm9vbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fb3BlbldpbiA9IHZhbHVlYm9vbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0IEFsbG93RXZlbnRzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgU2V0QWxsb3dFdmVudHModmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fYWxsb3dFdmVudHMgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldCBpc1ByZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVTdHJcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgc2V0SXNQcmcodmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5faXNQcmcgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgfVxyXG5cclxuICBTaG91bGRFdmFsdWF0ZVByb3BlcnR5TG9jYWxseShwcm9wSWQ6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYWJzdHJhY3QgR2V0VGFza0RldGFpbHMoKTogc3RyaW5nO1xyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBTZXRzIHRoZSBtZXNzYWdlIG9uIHRoZSBtZXNzYWdlIHBhbmUgb2Ygc3RhdHVzIGJhci48L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibXNnXCI+bWVzc2FnZSB0byBiZSBzaG93bjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic291bmRCZWVwXCI+dG8gYmVlcCBvciBub3Q8L3BhcmFtPlxyXG4gIFdyaXRlVG9NZXNzYWdlUGFuZShtc2c6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgLy8gU3RvcnkgMTQ5MzE2IDogc2VuZCBtZXNzYWdlIHRvIGNvbnNvbGVcclxuICAgIGlmIChtc2cgIT0gbnVsbClcclxuICAgICAgY29uc29sZS5sb2cobXNnKTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgd3JpdGUgYSBtZXNzYWdlIHRvIHN0YXR1cyBiYXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnSWRcIj5pZCBvZiBtZXNzYWdlIHRvIGJlIHdyaXR0ZW48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNvdW5kQmVlcFwiPjwvcGFyYW0+XHJcbiAgV3JpdGVUb01lc3NhZ2VQYW5lYnlNc2dJZChtc2dJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgbXNnOiBzdHJpbmcgPSBFdmVudHMuR2V0TWVzc2FnZVN0cmluZyhtc2dJZCk7XHJcbiAgICB0aGlzLldyaXRlVG9NZXNzYWdlUGFuZShtc2cpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -525,6 +525,7 @@ var InteractiveCommandType;
|
|
|
525
525
|
InteractiveCommandType[InteractiveCommandType["GET_MAX_ROWS_IN_PAGINATED_TABLE"] = 11] = "GET_MAX_ROWS_IN_PAGINATED_TABLE";
|
|
526
526
|
InteractiveCommandType[InteractiveCommandType["CALL_JS"] = 12] = "CALL_JS";
|
|
527
527
|
InteractiveCommandType[InteractiveCommandType["GET_LAST_ROUTE"] = 13] = "GET_LAST_ROUTE";
|
|
528
|
+
InteractiveCommandType[InteractiveCommandType["OPEN_FORM"] = 14] = "OPEN_FORM";
|
|
528
529
|
})(InteractiveCommandType || (InteractiveCommandType = {}));
|
|
529
530
|
class GuiInteractiveBase {
|
|
530
531
|
constructor() {
|
|
@@ -647,6 +648,16 @@ class GuiInteractiveBase {
|
|
|
647
648
|
this.Invoke();
|
|
648
649
|
return this.resultString;
|
|
649
650
|
}
|
|
651
|
+
ExecuteOpenOverlayForm(obj, formName, handlerTaskTag, calledTaskTag, inputControls, isDialog) {
|
|
652
|
+
this._commandType = InteractiveCommandType.OPEN_FORM;
|
|
653
|
+
this.controlName = formName;
|
|
654
|
+
this._str = handlerTaskTag;
|
|
655
|
+
this._mgValue = new MgValue();
|
|
656
|
+
this._mgValue.str = calledTaskTag;
|
|
657
|
+
this._mgValue.path = inputControls;
|
|
658
|
+
this._boolVal = isDialog;
|
|
659
|
+
this.Invoke();
|
|
660
|
+
}
|
|
650
661
|
Invoke() {
|
|
651
662
|
GuiCommandQueue.getInstance().invoke();
|
|
652
663
|
if (this._obj2 instanceof ControlBase) {
|
|
@@ -1155,73 +1166,6 @@ class GuiCommand {
|
|
|
1155
1166
|
}
|
|
1156
1167
|
}
|
|
1157
1168
|
|
|
1158
|
-
class GuiConstants {
|
|
1159
|
-
constructor() {
|
|
1160
|
-
}
|
|
1161
|
-
}
|
|
1162
|
-
GuiConstants.DEFAULT_LIST_VALUE = -1;
|
|
1163
|
-
GuiConstants.DEFAULT_VALUE_INT = -999999;
|
|
1164
|
-
GuiConstants.ALL_LINES = -1;
|
|
1165
|
-
GuiConstants.NO_ROW_SELECTED = Int32.MinValue;
|
|
1166
|
-
GuiConstants.RIA_MOBILE_UNSUPPORTED_CONTROL_ERROR = "control is not supported for mobile RIA deployment";
|
|
1167
|
-
GuiConstants.RIA_MOBILE_UNSUPPORTED_CONTROL_ERROR_WINDOW_6 = "control is not supported for mobile RIA deployment on Window 6 standard";
|
|
1168
|
-
GuiConstants.TOOL_HEIGHT = 17;
|
|
1169
|
-
GuiConstants.TOOL_WIDTH = 16;
|
|
1170
|
-
GuiConstants.STR_DISPLAY_MEMBER = "DisplayMember";
|
|
1171
|
-
GuiConstants.STR_VALUE_MEMBER = "ValueMember";
|
|
1172
|
-
GuiConstants.PARENT_TYPE_TASK = 'T';
|
|
1173
|
-
GuiConstants.PARENT_TYPE_FORM = 'F';
|
|
1174
|
-
GuiConstants.PARENT_TYPE_CONTROL = 'C';
|
|
1175
|
-
GuiConstants.GENERIC_PROPERTY_BASE_ID = 10000;
|
|
1176
|
-
GuiConstants.TABBING_CYCLE_REMAIN_IN_CURRENT_RECORD = 'R';
|
|
1177
|
-
GuiConstants.TABBING_CYCLE_MOVE_TO_NEXT_RECORD = 'N';
|
|
1178
|
-
GuiConstants.TABBING_CYCLE_MOVE_TO_PARENT_TASK = 'P';
|
|
1179
|
-
GuiConstants.BLOB_PREFIX_ELEMENTS_COUNT = 5;
|
|
1180
|
-
GuiConstants.KEY_DOWN = 40;
|
|
1181
|
-
GuiConstants.KEY_RIGHT = 39;
|
|
1182
|
-
GuiConstants.KEY_UP = 38;
|
|
1183
|
-
GuiConstants.KEY_LEFT = 37;
|
|
1184
|
-
GuiConstants.KEY_HOME = 36;
|
|
1185
|
-
GuiConstants.KEY_END = 35;
|
|
1186
|
-
GuiConstants.KEY_PG_DOWN = 34;
|
|
1187
|
-
GuiConstants.KEY_PG_UP = 33;
|
|
1188
|
-
GuiConstants.KEY_SPACE = 32;
|
|
1189
|
-
GuiConstants.KEY_F12 = 123;
|
|
1190
|
-
GuiConstants.KEY_F1 = 112;
|
|
1191
|
-
GuiConstants.KEY_9 = 57;
|
|
1192
|
-
GuiConstants.KEY_0 = 48;
|
|
1193
|
-
GuiConstants.KEY_Z = 90;
|
|
1194
|
-
GuiConstants.KEY_A = 65;
|
|
1195
|
-
GuiConstants.KEY_DELETE = 46;
|
|
1196
|
-
GuiConstants.KEY_INSERT = 45;
|
|
1197
|
-
GuiConstants.KEY_BACKSPACE = 8;
|
|
1198
|
-
GuiConstants.KEY_TAB = 9;
|
|
1199
|
-
GuiConstants.KEY_RETURN = 13;
|
|
1200
|
-
GuiConstants.KEY_ESC = 27;
|
|
1201
|
-
GuiConstants.KEY_CAPS_LOCK = 20;
|
|
1202
|
-
GuiConstants.KEY_POINT1 = 190;
|
|
1203
|
-
GuiConstants.KEY_POINT2 = 110;
|
|
1204
|
-
GuiConstants.KEY_COMMA = 188;
|
|
1205
|
-
GuiConstants.KEY_CTRL = 17;
|
|
1206
|
-
GuiConstants.KEY_ALT = 18;
|
|
1207
|
-
GuiConstants.LOGON_CAPTION = "Logon - ";
|
|
1208
|
-
GuiConstants.ENTER_UID_TTL = "Please enter your user ID and password.";
|
|
1209
|
-
GuiConstants.GROUP_BOX_TITLE_MAX_SIZE = 62;
|
|
1210
|
-
GuiConstants.MSG_CAPTION_MAX_SIZE = 56;
|
|
1211
|
-
GuiConstants.LABEL_CAPTION_MAX_SIZE = 9;
|
|
1212
|
-
GuiConstants.PASSWORD_CAPTION_MAX_SIZE = 19;
|
|
1213
|
-
GuiConstants.REPLACE_ALL_TEXT = -1;
|
|
1214
|
-
GuiConstants.STR_LOGON_RTL = "LogonRTL";
|
|
1215
|
-
GuiConstants.STR_LOGO_WIN_ICON_URL = "LogonWindowIconURL";
|
|
1216
|
-
GuiConstants.STR_LOGON_IMAGE_URL = "LogonImageURL";
|
|
1217
|
-
GuiConstants.STR_LOGON_WIN_TITLE = "LogonWindowTitle";
|
|
1218
|
-
GuiConstants.STR_LOGON_GROUP_TITLE = "LogonGroupTitle";
|
|
1219
|
-
GuiConstants.STR_LOGON_MSG_CAPTION = "LogonMessageCaption";
|
|
1220
|
-
GuiConstants.STR_LOGON_USER_ID_CAPTION = "LogonUserIDCaption";
|
|
1221
|
-
GuiConstants.STR_LOGON_PASS_CAPTION = "LogonPasswordCaption";
|
|
1222
|
-
GuiConstants.STR_LOGON_OK_CAPTION = "LogonOKCaption";
|
|
1223
|
-
GuiConstants.STR_LOGON_CANCEL_CAPTION = "LogonCancelCaption";
|
|
1224
|
-
|
|
1225
1169
|
class Commands {
|
|
1226
1170
|
static SetResolveCallback(resolveCallback) {
|
|
1227
1171
|
this.resolveCallback = resolveCallback;
|
|
@@ -1240,6 +1184,15 @@ class Commands {
|
|
|
1240
1184
|
return returnValue;
|
|
1241
1185
|
});
|
|
1242
1186
|
}
|
|
1187
|
+
static openOverlayForm(obj, formName, handlerTaskTag, calledTaskTag, inputControls, isDialog) {
|
|
1188
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1189
|
+
let guiInteractive = new GuiInteractive();
|
|
1190
|
+
yield new Promise((resolve) => {
|
|
1191
|
+
this.SetResolveCallback(resolve);
|
|
1192
|
+
guiInteractive.ExecuteOpenOverlayForm(obj, formName, handlerTaskTag, calledTaskTag, inputControls, isDialog);
|
|
1193
|
+
}).then();
|
|
1194
|
+
});
|
|
1195
|
+
}
|
|
1243
1196
|
static setTitle(topMostForm, title) {
|
|
1244
1197
|
let guiInteractive = new GuiInteractive();
|
|
1245
1198
|
guiInteractive.setTitle(topMostForm, title);
|
|
@@ -1313,7 +1266,7 @@ class Commands {
|
|
|
1313
1266
|
if (obj instanceof GuiMgControl && obj.isChoiceControl()) {
|
|
1314
1267
|
if (value < 0)
|
|
1315
1268
|
if (obj.isComboBox())
|
|
1316
|
-
guiCommand.value =
|
|
1269
|
+
guiCommand.value = undefined;
|
|
1317
1270
|
else
|
|
1318
1271
|
guiCommand.value = '';
|
|
1319
1272
|
}
|
|
@@ -1733,6 +1686,73 @@ Manager.DefaultServerName = null;
|
|
|
1733
1686
|
Manager.UtilImeJpn = (UtilStrByteMode.isLocaleDefLangJPN() ? new UtilImeJpn() : null);
|
|
1734
1687
|
Manager.EventsManager = null;
|
|
1735
1688
|
|
|
1689
|
+
class GuiConstants {
|
|
1690
|
+
constructor() {
|
|
1691
|
+
}
|
|
1692
|
+
}
|
|
1693
|
+
GuiConstants.DEFAULT_LIST_VALUE = -1;
|
|
1694
|
+
GuiConstants.DEFAULT_VALUE_INT = -999999;
|
|
1695
|
+
GuiConstants.ALL_LINES = -1;
|
|
1696
|
+
GuiConstants.NO_ROW_SELECTED = Int32.MinValue;
|
|
1697
|
+
GuiConstants.RIA_MOBILE_UNSUPPORTED_CONTROL_ERROR = "control is not supported for mobile RIA deployment";
|
|
1698
|
+
GuiConstants.RIA_MOBILE_UNSUPPORTED_CONTROL_ERROR_WINDOW_6 = "control is not supported for mobile RIA deployment on Window 6 standard";
|
|
1699
|
+
GuiConstants.TOOL_HEIGHT = 17;
|
|
1700
|
+
GuiConstants.TOOL_WIDTH = 16;
|
|
1701
|
+
GuiConstants.STR_DISPLAY_MEMBER = "DisplayMember";
|
|
1702
|
+
GuiConstants.STR_VALUE_MEMBER = "ValueMember";
|
|
1703
|
+
GuiConstants.PARENT_TYPE_TASK = 'T';
|
|
1704
|
+
GuiConstants.PARENT_TYPE_FORM = 'F';
|
|
1705
|
+
GuiConstants.PARENT_TYPE_CONTROL = 'C';
|
|
1706
|
+
GuiConstants.GENERIC_PROPERTY_BASE_ID = 10000;
|
|
1707
|
+
GuiConstants.TABBING_CYCLE_REMAIN_IN_CURRENT_RECORD = 'R';
|
|
1708
|
+
GuiConstants.TABBING_CYCLE_MOVE_TO_NEXT_RECORD = 'N';
|
|
1709
|
+
GuiConstants.TABBING_CYCLE_MOVE_TO_PARENT_TASK = 'P';
|
|
1710
|
+
GuiConstants.BLOB_PREFIX_ELEMENTS_COUNT = 5;
|
|
1711
|
+
GuiConstants.KEY_DOWN = 40;
|
|
1712
|
+
GuiConstants.KEY_RIGHT = 39;
|
|
1713
|
+
GuiConstants.KEY_UP = 38;
|
|
1714
|
+
GuiConstants.KEY_LEFT = 37;
|
|
1715
|
+
GuiConstants.KEY_HOME = 36;
|
|
1716
|
+
GuiConstants.KEY_END = 35;
|
|
1717
|
+
GuiConstants.KEY_PG_DOWN = 34;
|
|
1718
|
+
GuiConstants.KEY_PG_UP = 33;
|
|
1719
|
+
GuiConstants.KEY_SPACE = 32;
|
|
1720
|
+
GuiConstants.KEY_F12 = 123;
|
|
1721
|
+
GuiConstants.KEY_F1 = 112;
|
|
1722
|
+
GuiConstants.KEY_9 = 57;
|
|
1723
|
+
GuiConstants.KEY_0 = 48;
|
|
1724
|
+
GuiConstants.KEY_Z = 90;
|
|
1725
|
+
GuiConstants.KEY_A = 65;
|
|
1726
|
+
GuiConstants.KEY_DELETE = 46;
|
|
1727
|
+
GuiConstants.KEY_INSERT = 45;
|
|
1728
|
+
GuiConstants.KEY_BACKSPACE = 8;
|
|
1729
|
+
GuiConstants.KEY_TAB = 9;
|
|
1730
|
+
GuiConstants.KEY_RETURN = 13;
|
|
1731
|
+
GuiConstants.KEY_ESC = 27;
|
|
1732
|
+
GuiConstants.KEY_CAPS_LOCK = 20;
|
|
1733
|
+
GuiConstants.KEY_POINT1 = 190;
|
|
1734
|
+
GuiConstants.KEY_POINT2 = 110;
|
|
1735
|
+
GuiConstants.KEY_COMMA = 188;
|
|
1736
|
+
GuiConstants.KEY_CTRL = 17;
|
|
1737
|
+
GuiConstants.KEY_ALT = 18;
|
|
1738
|
+
GuiConstants.LOGON_CAPTION = "Logon - ";
|
|
1739
|
+
GuiConstants.ENTER_UID_TTL = "Please enter your user ID and password.";
|
|
1740
|
+
GuiConstants.GROUP_BOX_TITLE_MAX_SIZE = 62;
|
|
1741
|
+
GuiConstants.MSG_CAPTION_MAX_SIZE = 56;
|
|
1742
|
+
GuiConstants.LABEL_CAPTION_MAX_SIZE = 9;
|
|
1743
|
+
GuiConstants.PASSWORD_CAPTION_MAX_SIZE = 19;
|
|
1744
|
+
GuiConstants.REPLACE_ALL_TEXT = -1;
|
|
1745
|
+
GuiConstants.STR_LOGON_RTL = "LogonRTL";
|
|
1746
|
+
GuiConstants.STR_LOGO_WIN_ICON_URL = "LogonWindowIconURL";
|
|
1747
|
+
GuiConstants.STR_LOGON_IMAGE_URL = "LogonImageURL";
|
|
1748
|
+
GuiConstants.STR_LOGON_WIN_TITLE = "LogonWindowTitle";
|
|
1749
|
+
GuiConstants.STR_LOGON_GROUP_TITLE = "LogonGroupTitle";
|
|
1750
|
+
GuiConstants.STR_LOGON_MSG_CAPTION = "LogonMessageCaption";
|
|
1751
|
+
GuiConstants.STR_LOGON_USER_ID_CAPTION = "LogonUserIDCaption";
|
|
1752
|
+
GuiConstants.STR_LOGON_PASS_CAPTION = "LogonPasswordCaption";
|
|
1753
|
+
GuiConstants.STR_LOGON_OK_CAPTION = "LogonOKCaption";
|
|
1754
|
+
GuiConstants.STR_LOGON_CANCEL_CAPTION = "LogonCancelCaption";
|
|
1755
|
+
|
|
1736
1756
|
class BlobType {
|
|
1737
1757
|
static getContentType(blob) {
|
|
1738
1758
|
try {
|
|
@@ -13872,15 +13892,17 @@ class MgFormBase extends GuiFormPropertyAdapter {
|
|
|
13872
13892
|
}
|
|
13873
13893
|
}
|
|
13874
13894
|
init() {
|
|
13875
|
-
|
|
13876
|
-
let
|
|
13877
|
-
|
|
13878
|
-
|
|
13879
|
-
|
|
13880
|
-
|
|
13881
|
-
|
|
13882
|
-
|
|
13883
|
-
|
|
13895
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13896
|
+
for (let i = 0; i < this.CtrlTab.getSize(); i = i + 1) {
|
|
13897
|
+
let ctrl = this.CtrlTab.getCtrl(i);
|
|
13898
|
+
ctrl.Init();
|
|
13899
|
+
}
|
|
13900
|
+
this.buildLinkedControlsLists();
|
|
13901
|
+
this.buildTableColumnsList();
|
|
13902
|
+
yield this.createForm();
|
|
13903
|
+
this._task.setKeyboardMappingState(Constants.ACT_STT_TBL_SCREEN_MODE, this.isScreenMode());
|
|
13904
|
+
this._task.setKeyboardMappingState(Constants.ACT_STT_TBL_LEFT_TO_RIGHT, !this.GetComputedProperty(PropInterface.PROP_TYPE_HEBREW).GetComputedValueBoolean());
|
|
13905
|
+
});
|
|
13884
13906
|
}
|
|
13885
13907
|
fillName(formTag) {
|
|
13886
13908
|
let parser = Manager.GetCurrentRuntimeContext().Parser;
|
|
@@ -13925,17 +13947,22 @@ class MgFormBase extends GuiFormPropertyAdapter {
|
|
|
13925
13947
|
Events.WriteExceptionToLog('in Form.FillName() out of bounds');
|
|
13926
13948
|
}
|
|
13927
13949
|
createForm() {
|
|
13928
|
-
|
|
13929
|
-
|
|
13930
|
-
|
|
13931
|
-
|
|
13932
|
-
|
|
13933
|
-
|
|
13934
|
-
|
|
13935
|
-
|
|
13936
|
-
|
|
13937
|
-
|
|
13938
|
-
|
|
13950
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13951
|
+
let inputControls = this.GetListOfInputControls();
|
|
13952
|
+
let formName = this.buildFormName();
|
|
13953
|
+
if (!this.isSubForm()) {
|
|
13954
|
+
if (this.isDialog())
|
|
13955
|
+
yield Commands.openOverlayForm(this, formName, '0', this.getTask().getTaskTag(), inputControls, this.isDialog());
|
|
13956
|
+
else
|
|
13957
|
+
Commands.addOpenForm(this, formName, '0', this.getTask().getTaskTag(), inputControls, this.isDialog());
|
|
13958
|
+
}
|
|
13959
|
+
else {
|
|
13960
|
+
Commands.addOpensubform(CommandType.CREATE_SUB_FORM, this.getSubFormCtrl(), this.getTask().getTaskTag(), this.getSubFormCtrl().getName(), formName, inputControls, this.getTask().RouterPath, this.getTask().GetRouterParams(), this.getTask().InDefaultRouterOutlet);
|
|
13961
|
+
}
|
|
13962
|
+
if (this.HasTable())
|
|
13963
|
+
this.InitTableControl();
|
|
13964
|
+
Commands.beginInvoke();
|
|
13965
|
+
});
|
|
13939
13966
|
}
|
|
13940
13967
|
CallJS(methodName, args) {
|
|
13941
13968
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -16046,7 +16073,7 @@ class GuiTaskBase {
|
|
|
16046
16073
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16047
16074
|
if (this.Form !== null && this.isOpenWin()) {
|
|
16048
16075
|
this.Form.InInitForm = true;
|
|
16049
|
-
this.Form.init();
|
|
16076
|
+
yield this.Form.init();
|
|
16050
16077
|
this.SetRefreshType(Constants.TASK_REFRESH_FORM);
|
|
16051
16078
|
yield this.RefreshDisplay();
|
|
16052
16079
|
Commands.beginInvoke();
|