@esfaenza/es-charts 11.2.20 → 11.2.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/esfaenza-es-charts.umd.js +2 -2
- package/bundles/esfaenza-es-charts.umd.js.map +1 -1
- package/bundles/esfaenza-es-charts.umd.min.js +1 -1
- package/bundles/esfaenza-es-charts.umd.min.js.map +1 -1
- package/esm2015/lib/services/classes/LineChartService.js +3 -3
- package/fesm2015/esfaenza-es-charts.js +2 -2
- package/fesm2015/esfaenza-es-charts.js.map +1 -1
- package/package.json +1 -1
|
@@ -138,7 +138,7 @@ export class LineChartService {
|
|
|
138
138
|
series.strokeWidth = (_b = settings === null || settings === void 0 ? void 0 : settings.StrokeSize) !== null && _b !== void 0 ? _b : 1;
|
|
139
139
|
series.connect = !gapsAllowed;
|
|
140
140
|
series.minBulletDistance = 10;
|
|
141
|
-
series.tooltipText = this.singleDataSet ? "" : "{name}: [bold]{valueY}[/]";
|
|
141
|
+
series.tooltipText = this.singleDataSet ? "" : s.name ? "{name}: [bold]{valueY}[/]" : "[bold]{valueY}[/]";
|
|
142
142
|
series.tooltip.pointerOrientation = "vertical";
|
|
143
143
|
series.tooltip.background.fillOpacity = 0.5;
|
|
144
144
|
series.tooltip.label.padding(12, 12, 12, 12);
|
|
@@ -177,7 +177,7 @@ export class LineChartService {
|
|
|
177
177
|
var text = "[bold]{dateX.formatDate()}[/]\n";
|
|
178
178
|
this.ChartInstance.series.each((item) => {
|
|
179
179
|
let uom = " [font-style: italic]" + series.dataFields.measureUnit || "" + "[/]";
|
|
180
|
-
text += "[" + item.stroke.hex + "]●[/] " + item.name + ": [bold]{" + item.dataFields.valueY + "}[/]" + uom + "\n";
|
|
180
|
+
text += "[" + item.stroke.hex + "]●[/] " + (item.name ? (item.name + ": ") : "") + "[bold]{" + item.dataFields.valueY + "}[/]" + uom + "\n";
|
|
181
181
|
});
|
|
182
182
|
return text;
|
|
183
183
|
});
|
|
@@ -355,4 +355,4 @@ export class LineChartService {
|
|
|
355
355
|
this.executionTimers[id] = setTimeout(() => { func(); this.executionTimers[id] = null; }, throttleTime);
|
|
356
356
|
}
|
|
357
357
|
}
|
|
358
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL2NsYXNzZXMvTGluZUNoYXJ0U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEtBQUssT0FBTyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxTQUFTLE1BQU0sNEJBQTRCLENBQUM7QUFFeEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBU3pCLGNBQWM7SUFDZCxZQUFtQixPQUFvQixFQUFVLFFBQXFCO1FBQW5ELFlBQU8sR0FBUCxPQUFPLENBQWE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBUHRFLGNBQWM7UUFDTix3QkFBbUIsR0FBVyxJQUFJLENBQUM7UUFDM0MsY0FBYztRQUNOLHNCQUFpQixHQUFXLEdBQUcsQ0FBQztRQUN4QyxjQUFjO1FBQ04sa0JBQWEsR0FBWSxLQUFLLENBQUM7UUF5WHZDLHVHQUF1RztRQUN2RywrREFBK0Q7UUFDL0QsY0FBYztRQUNOLG9CQUFlLEdBQTZCLEVBQUUsQ0FBQztJQTFYbUIsQ0FBQztJQUUzRTs7T0FFRztJQUNJLFVBQVUsQ0FBQyxJQUF5QixFQUFFLFFBQTJCOztRQUNwRSxJQUFJLGFBQWEsR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xHLElBQUksU0FBUyxTQUFHLFFBQVEsQ0FBQyxxQkFBcUIsbUNBQUksSUFBSSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxhQUFhLFNBQUcsUUFBUSxDQUFDLGFBQWEsbUNBQUksS0FBSyxDQUFDO1FBQ3JELElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FB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WUFBWSxDQUFDLENBQUM7SUFDNUcsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuaW1wb3J0IHsgSUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlL0lCYXNlU2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMnO1xyXG5pbXBvcnQgeyBMaW5lQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RhdGEnO1xyXG5pbXBvcnQgeyBMaW5lQ2hhcnRTZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9zZXR0aW5ncyc7XHJcblxyXG5pbXBvcnQgKiBhcyBhbTRjb3JlIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW00Y2hhcnRzIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NoYXJ0c1wiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBpbCBjdWkgdW5pY28gc2NvcG8gw6ggZ2VzdGlyZSBpbCBzZXR1cCBlIHJlbmRlcmluZyBkaSB1biBMaW5lQ2hhcnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBMaW5lQ2hhcnRTZXJ2aWNlIGltcGxlbWVudHMgSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PntcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwdWJsaWMgQ2hhcnRJbnN0YW5jZTogYW00Y2hhcnRzLlhZQ2hhcnQ7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBEYXRhR3JvdXBCdWNrZXRTaXplOiBudW1iZXIgPSAxNTAwO1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgT3BhY2l0eU9uU2VsZWN0ZWQ6IG51bWJlciA9IDAuMztcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHNpbmdsZURhdGFTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgQWRhcHRlcjogQmFzZUFkYXB0ZXIsIHByaXZhdGUgZGF0ZUV4dHM6IERhdGVTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgZGF0YSB1bmEgY29wcGlhIERhdGkgLSBJbXBvc3RhemlvbmkgbGkgdXRpbGl6emEgcGVyIGNyZWFyZSBlIHZpc3VhbGl6emFyZSB1biBMaW5lQ2hhcnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdyYXBoaWNhdGUoZGF0YTogTGluZUNoYXJ0RGF0YSB8IGFueSwgc2V0dGluZ3M6IExpbmVDaGFydFNldHRpbmdzKTogSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PiB7XHJcbiAgICAgICAgbGV0IGRhdGFDb252ZXJ0ZWQ6IExpbmVDaGFydERhdGEgPSB0aGlzLkFkYXB0ZXIgPyB0aGlzLkFkYXB0ZXIuYWRhcHREYXRhRm9yTGluZUNoYXJ0KGRhdGEpIDogZGF0YTtcclxuICAgICAgICBsZXQgdGhyZXNob2xkID0gc2V0dGluZ3MuRGF0YUdyb3VwaW5nVGhyZXNob2xkID8/IDMwMDA7XHJcbiAgICAgICAgdGhpcy5zaW5nbGVEYXRhU2V0ID0gc2V0dGluZ3MuTWVyZ2VEYXRhc2V0cyA/PyBmYWxzZTtcclxuICAgICAgICBsZXQgc2hvd1RpY2tzID0gc2V0dGluZ3MuU2hvd1RpY2tzID09IG51bGwgPyB0cnVlIDogc2V0dGluZ3M/LlNob3dUaWNrcztcclxuICAgICAgICBsZXQgZGF0YVNob3VsZEJlR3JvdXBlZCA9IE1hdGgubWF4KC4uLmRhdGFDb252ZXJ0ZWQuc2VyaWVzLm1hcCh0ID0+IHQudmFsdWVzLmxlbmd0aCkpID4gdGhyZXNob2xkO1xyXG4gICAgICAgIGxldCBzaG93VGltZWxpbmUgPSBzZXR0aW5ncy5UaW1lbGluZSB8fCBkYXRhU2hvdWxkQmVHcm91cGVkO1xyXG4gICAgICAgIGxldCBzZXJpZXNXaXRoSW50ZXJ2YWwgPSBkYXRhQ29udmVydGVkLnNlcmllcy5zb21lKHQgPT4gdC5pbnRlcnZhbCk7XHJcbiAgICAgICAgbGV0IGludGVydmFsID0gc2VyaWVzV2l0aEludGVydmFsID8gZGF0YUNvbnZlcnRlZC5zZXJpZXMuZmluZCh0ID0+IHQuaW50ZXJ2YWwpLmludGVydmFsIDogbnVsbDtcclxuICAgICAgICBsZXQgZ2Fwc0FsbG93ZWQgPSBzZXR0aW5ncz8uQWxsb3dHYXBzID09IG51bGwgPyBzZXJpZXNXaXRoSW50ZXJ2YWwgOiBzZXR0aW5ncz8uQWxsb3dHYXBzO1xyXG4gICAgICAgIGxldCBmaW5hbEluc3RhbnQgPSBzZXR0aW5ncz8uRmluYWxJbnN0YW50cyA/PyB0cnVlO1xyXG5cclxuICAgICAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgICAgIGFtNGNvcmUub3B0aW9ucy5hdXRvRGlzcG9zZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIGFtNGNoYXJ0cy5YWUNoYXJ0KTtcclxuICAgICAgICBsZXQgQ2hhcnRJbnN0YW5jZUNhc3RlZCA9IDxhbTRjaGFydHMuWFlDaGFydD50aGlzLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgICAgIGxldCB5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueUF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLlZhbHVlQXhpcygpKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuWUF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWUF4aXNUaXRsZVxyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuTWluKVxyXG4gICAgICAgICAgICB5QXhpcy5taW4gPSBzZXR0aW5ncy5NaW47XHJcbiAgICAgICAgaWYgKHNldHRpbmdzLk1heClcclxuICAgICAgICAgICAgeUF4aXMubWF4ID0gc2V0dGluZ3MuTWF4O1xyXG5cclxuICAgICAgICBpZiAoZGF0YUNvbnZlcnRlZC5saW1pdCkge1xyXG4gICAgICAgICAgICBpZiAoZGF0YUNvbnZlcnRlZC5saW1pdC51cHBlciAhPSBudWxsICYmIGRhdGFDb252ZXJ0ZWQubGltaXQudXBwZXIgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB5QXhpcy5heGlzUmFuZ2VzLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UudmFsdWUgPSBkYXRhQ29udmVydGVkLmxpbWl0LnVwcGVyO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuaW5zaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnRleHQgPSBkYXRhQ29udmVydGVkLmxpbWl0LnVwcGVyTGFiZWw7XHJcbiAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5maWxsID0gcmFuZ2UuZ3JpZC5zdHJva2U7XHJcbiAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC52ZXJ0aWNhbENlbnRlciA9IFwiYm90dG9tXCI7XHJcbiAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGRhdGFDb252ZXJ0ZWQubGltaXQudXBwZXJDb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IoZGF0YUNvbnZlcnRlZC5saW1pdC51cHBlckNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VPcGFjaXR5ID0gMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGRhdGFDb252ZXJ0ZWQubGltaXQubG93ZXIgIT0gbnVsbCAmJiBkYXRhQ29udmVydGVkLmxpbWl0Lmxvd2VyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJhbmdlID0geUF4aXMuYXhpc1Jhbmdlcy5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgIHJhbmdlLnZhbHVlID0gZGF0YUNvbnZlcnRlZC5saW1pdC5sb3dlcjtcclxuICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmluc2lkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC50ZXh0ID0gZGF0YUNvbnZlcnRlZC5saW1pdC5sb3dlckxhYmVsO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuZmlsbCA9IHJhbmdlLmdyaWQuc3Ryb2tlO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudmVydGljYWxDZW50ZXIgPSBcImJvdHRvbVwiO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihkYXRhQ29udmVydGVkLmxpbWl0Lmxvd2VyQ29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGRhdGFDb252ZXJ0ZWQubGltaXQubG93ZXJDb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBkYXRlQXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueEF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLkRhdGVBeGlzKCkpO1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuWEF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICBkYXRlQXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICAgICAgICBkYXRlQXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2hvd1RpY2tzKSB7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKFwiIzQ5NUM0M1wiKTtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5sZW5ndGggPSAxMDtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUubG9jYXRpb24gPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIubWluR3JpZERpc3RhbmNlID0gc2V0dGluZ3M/Lk1pbkdyaWREaXN0YW5jZSA/PyA1MDtcclxuICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci5ncmlkLnRlbXBsYXRlLmxvY2F0aW9uID0gMDtcclxuICAgICAgICBkYXRlQXhpcy5taW5ab29tQ291bnQgPSA1O1xyXG4gICAgICAgIGRhdGVBeGlzLmdyb3VwRGF0YSA9IGRhdGFTaG91bGRCZUdyb3VwZWQ7XHJcbiAgICAgICAgZGF0ZUF4aXMuZ3JvdXBDb3VudCA9IHNldHRpbmdzLkRhdGFHcm91cEJ1Y2tldFNpemUgPz8gdGhpcy5EYXRhR3JvdXBCdWNrZXRTaXplO1xyXG5cclxuICAgICAgICAvL1NlIGhvIGFsbWVubyB1bmEgc2VyaWUgYWQgaW50ZXJ2YWxsbyBlIGkgc2V0dGluZ3Mgbm9uIG1pIGltcGVkaXNjb25vIGVzcGxpY2l0YW1lbnRlIGRpIHVzYXJlIGkgZ2FwcywgdmlzdWFsaXp6byBpIGRhdGkgY29sIGdhcFxyXG5cclxuICAgICAgICBpZiAoZ2Fwc0FsbG93ZWQpIHtcclxuICAgICAgICAgICAgaWYgKCFzZXJpZXNXaXRoSW50ZXJ2YWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJQZXIgdXRpbGl6emFyZSBsYSBmdW56aW9uYWxpdMOgIGRlaSBnYXAgw6ggb2JibGlnYXRvcmlvIGRlZmluaXJlIHVuIGludGVydmFsbG8gbmVsbGUgc2VyaWUgZGVsIGdyYWZpY29cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZGF0ZUF4aXMuYmFzZUludGVydmFsID0geyBjb3VudDogaW50ZXJ2YWwuY291bnQsIHRpbWVVbml0OiBpbnRlcnZhbC50aW1ldW5pdCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hvd1RpbWVsaW5lKVxyXG4gICAgICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNjcm9sbGJhclggPSBuZXcgYW00Y2hhcnRzLlhZQ2hhcnRTY3JvbGxiYXIoKTtcclxuXHJcbiAgICAgICAgbGV0IHNlcmllc1RvUHVzaCA9IFtdO1xyXG4gICAgICAgIGxldCBzZXJpZXNDb2xvcnM6IGFtNGNvcmUuQ29sb3JbXSA9IFtdO1xyXG4gICAgICAgIGxldCBkZWZhdWx0SW5kZXggPSAwO1xyXG5cclxuICAgICAgICAvLy0tIEdlbmVyYXppb25lIGRpIHVuIHVuaWNvIGRhdGFzZXQgaW52ZWNlIGNoZSBOLCBwZXIgcG90ZXIgZ2VzdGlyZSB1biB1bmljbyB0b29sdGlwXHJcbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuZGF0YSA9IHRoaXMuZ2VuZXJhdGVTaW5nbGVEYXRhc2V0KGRhdGFDb252ZXJ0ZWQpOztcclxuICAgICAgICAgICAgZGF0ZUF4aXMuY3Vyc29yVG9vbHRpcEVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8tLSBGaW5lIGdlbmVyYXppb25lXHJcblxyXG4gICAgICAgIGRhdGFDb252ZXJ0ZWQuc2VyaWVzLmZvckVhY2goKHMsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzLnZhbHVlc1swXSAmJiAhKHMudmFsdWVzWzBdLmQgaW5zdGFuY2VvZiBEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgdiA9IDA7IHYgPCBzLnZhbHVlcy5sZW5ndGg7IHYrKylcclxuICAgICAgICAgICAgICAgICAgICBzLnZhbHVlc1t2XS5kID0gbmV3IERhdGUocy52YWx1ZXNbdl0uZCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciBjb3JyZWN0T3JkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB2YXIgcHJldkRhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICBmb3IgKGxldCB2ID0gMDsgdiA8IHMudmFsdWVzLmxlbmd0aDsgdisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZEYXRlKVxyXG4gICAgICAgICAgICAgICAgICAgIHByZXZEYXRlID0gcy52YWx1ZXNbdl0uZDtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBpZiAocy52YWx1ZXNbdl0uZCA8IHByZXZEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3RPcmRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghY29ycmVjdE9yZGVyKVxyXG4gICAgICAgICAgICAgICAgcy52YWx1ZXMuc29ydCgoZDEsIGQyKSA9PiBkMS5kLmdldFRpbWUoKSAtIGQyLmQuZ2V0VGltZSgpKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBmaWxsID0gcy5maWxsICE9IG51bGwgJiYgcy5maWxsICE9IHVuZGVmaW5lZCA/IHMuZmlsbCA6IChzZXR0aW5ncz8uRmlsbCA/PyBmYWxzZSk7XHJcbiAgICAgICAgICAgIGxldCBzZXJpZXM6IGFtNGNoYXJ0cy5TdGVwTGluZVNlcmllcyB8IGFtNGNoYXJ0cy5MaW5lU2VyaWVzID0gc2V0dGluZ3M/LlN0ZXAgPyBuZXcgYW00Y2hhcnRzLlN0ZXBMaW5lU2VyaWVzKCkgOiBuZXcgYW00Y2hhcnRzLkxpbmVTZXJpZXMoKTtcclxuICAgICAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gXCJ2XCIgKyAodGhpcy5zaW5nbGVEYXRhU2V0ID8gaW5kZXggOiBcIlwiKTtcclxuICAgICAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMuZGF0ZVggPSBcImRcIjtcclxuICAgICAgICAgICAgKDxhbnk+c2VyaWVzLmRhdGFGaWVsZHMpLm1lYXN1cmVVbml0ID0gcy51b207XHJcbiAgICAgICAgICAgIHNlcmllcy5uYW1lID0gcy5uYW1lO1xyXG4gICAgICAgICAgICBzZXJpZXMuc3Ryb2tlV2lkdGggPSBzZXR0aW5ncz8uU3Ryb2tlU2l6ZSA/PyAxO1xyXG4gICAgICAgICAgICBzZXJpZXMuY29ubmVjdCA9ICFnYXBzQWxsb3dlZDtcclxuICAgICAgICAgICAgc2VyaWVzLm1pbkJ1bGxldERpc3RhbmNlID0gMTA7XHJcbiAgICAgICAgICAgIHNlcmllcy50b29sdGlwVGV4dCA9IHRoaXMuc2luZ2xlRGF0YVNldCA/IFwiXCIgOiBcIntuYW1lfTogW2JvbGRde3ZhbHVlWX1bL11cIjtcclxuICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAucG9pbnRlck9yaWVudGF0aW9uID0gXCJ2ZXJ0aWNhbFwiO1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5iYWNrZ3JvdW5kLmZpbGxPcGFjaXR5ID0gMC41O1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5sYWJlbC5wYWRkaW5nKDEyLCAxMiwgMTIsIDEyKTtcclxuICAgICAgICAgICAgc2VyaWVzLmZpbGxPcGFjaXR5ID0gZmlsbCA/IDEgOiAwLjAwMDE7XHJcbiAgICAgICAgICAgIHNlcmllcy5zdGFja2VkID0gZmlsbFxyXG5cclxuICAgICAgICAgICAgLy9EYXRhc2V0IHNpbmdvbG8sIGkgZGF0aSBzb25vIHJlZ2lzdHJhdGkgYSBsaXZlbGxvIGRpIGNoYXJ0LCBjcmVvIGlsIHRvb2x0aXAgY2hlIHBlcm1ldHRlIGRpIHZlZGVybGkgdHV0dGkgaW5zaWVtZVxyXG4gICAgICAgICAgICAvL2FsdHJpbWVudGkgYXNzZWdubyBpIGRhdGkgZGVsbGEgc2VyaWUgZGlyZXR0YW1lbnRlIGFsbGEgc2VyaWVcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAuZ2V0RmlsbEZyb21PYmplY3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmJhY2tncm91bmQuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjZWVlXCIpO1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAubGFiZWwuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjMDBcIik7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5kZWZhdWx0U3RhdGUudHJhbnNpdGlvbkR1cmF0aW9uID0gMDtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmhpZGRlblN0YXRlLnRyYW5zaXRpb25EdXJhdGlvbiA9IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgLy9VdGlsaXp6byBpbCBtaW8gZGF0ZVNlcnZpY2UgcGVyIGxhIGZvcm1hdHRhemlvbmUgZGVsbGEgZGF0YSBpbiBtb2RvIGNoZSBub24gZGViYmEgbWFpIGdlc3RpcmUgbiBmb3JtYXRpIGZyYSBuIGxpYnJlcmllLi4uIGJlbGxpc3NpbW9cclxuICAgICAgICAgICAgICAgIHNlcmllcy5kYXRlRm9ybWF0dGVyLmZvcm1hdCA9IChzb3VyY2U6IERhdGUpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnZhbCAmJiBmaW5hbEluc3RhbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWVwYXJ0OiBcIm1pbnV0ZVwiIHwgXCJob3VyXCIgfCBcImRheVwiID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcnZhbC50aW1ldW5pdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImhvdXJcIjogdGltZXBhcnQgPSAnZGF5JzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwibWludXRlXCI6IHRpbWVwYXJ0ID0gJ2hvdXInOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZWNvbmRcIjogdGltZXBhcnQgPSAnbWludXRlJzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVwYXJ0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZUV4dHMuYWRqdXN0RGF0ZVRvRmluYWxJbnN0YW50KHNvdXJjZSwgdGltZXBhcnQsIGludGVydmFsID8gaW50ZXJ2YWwudGltZXVuaXQgPT0gXCJzZWNvbmRcIiA6IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlRXh0cy5nZXRGb3JtYXR0ZWQoc291cmNlLCBmYWxzZSwgaW50ZXJ2YWwgPyBpbnRlcnZhbC50aW1ldW5pdCA9PSBcInNlY29uZFwiIDogZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICg8YW55PnNlcmllcy5hZGFwdGVyKS5hZGQoXCJ0b29sdGlwVGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRleHQgPSBcIltib2xkXXtkYXRlWC5mb3JtYXREYXRlKCl9Wy9dXFxuXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnNlcmllcy5lYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1b20gPSBcIiBbZm9udC1zdHlsZTogaXRhbGljXVwiICsgKDxhbnk+c2VyaWVzLmRhdGFGaWVsZHMpLm1lYXN1cmVVbml0IHx8IFwiXCIgKyBcIlsvXVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IFwiW1wiICsgKDxhbnk+aXRlbS5zdHJva2UpLmhleCArIFwiXeKXj1svXSBcIiArIGl0ZW0ubmFtZSArIFwiOiBbYm9sZF17XCIgKyBpdGVtLmRhdGFGaWVsZHMudmFsdWVZICsgXCJ9Wy9dXCIgKyB1b20gKyBcIlxcblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzLmRhdGEgPSBzLnZhbHVlcztcclxuXHJcbiAgICAgICAgICAgIGxldCBzZWdtZW50ID0gc2VyaWVzLnNlZ21lbnRzLnRlbXBsYXRlO1xyXG5cclxuICAgICAgICAgICAgbGV0IGhvdmVyU3RhdGUgPSBzZWdtZW50LnN0YXRlcy5jcmVhdGUoXCJob3ZlclwiKTtcclxuICAgICAgICAgICAgaG92ZXJTdGF0ZS5wcm9wZXJ0aWVzLnN0cm9rZVdpZHRoID0gKHNldHRpbmdzPy5TdHJva2VTaXplID8/IDEpICsgMTtcclxuXHJcbiAgICAgICAgICAgIGxldCBkaW1tZWQgPSBzZWdtZW50LnN0YXRlcy5jcmVhdGUoXCJkaW1tZWRcIik7XHJcbiAgICAgICAgICAgIGRpbW1lZC5wcm9wZXJ0aWVzLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IoXCIjZGFkYWRhXCIpO1xyXG5cclxuICAgICAgICAgICAgLy9TZSBsYSBzZXJpZSBoYSB1biBjb2xvcmUsIHVzbyBxdWVsbG8sIGFsdHJpbWVudGkgcGVzY28gZGFpIGNvbG9yaSBkaSBkZWZhdWx0IGFuZGFuZG8gaW4gb3JkaW5lXHJcbiAgICAgICAgICAgIGlmIChzLmNvbG9yKVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzQ29sb3JzLnB1c2goYW00Y29yZS5jb2xvcihzLmNvbG9yKSk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzQ29sb3JzLnB1c2goQ2hhcnRJbnN0YW5jZUNhc3RlZC5jb2xvcnMubGlzdFtkZWZhdWx0SW5kZXggJSBDaGFydEluc3RhbmNlQ2FzdGVkLmNvbG9ycy5saXN0Lmxlbmd0aF0pXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0SW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc2VyaWVzVG9QdXNoLnB1c2goc2VyaWVzKTtcclxuICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY29sb3JzLmxpc3QgPSBzZXJpZXNDb2xvcnM7XHJcbiAgICAgICAgLy9TY3Jpdm8gbGUgc2VyaWUgbmVsIGdyYWZpY29cclxuICAgICAgICBzZXJpZXNUb1B1c2guZm9yRWFjaChzID0+IHtcclxuICAgICAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5zZXJpZXMucHVzaChzKTtcclxuICAgICAgICAgICAgaWYgKHNob3dUaW1lbGluZSlcclxuICAgICAgICAgICAgICAgICg8YW00Y2hhcnRzLlhZQ2hhcnRTY3JvbGxiYXI+Q2hhcnRJbnN0YW5jZUNhc3RlZC5zY3JvbGxiYXJYKS5zZXJpZXMucHVzaChzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZCkge1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5wb3NpdGlvbiA9IHNldHRpbmdzPy5MZWdlbmRQb3NpdGlvbiA/PyAncmlnaHQnO1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLnNjcm9sbGFibGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie25hbWV9XCI7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwib3ZlclwiLCAoZXZlbnQpID0+IHsgdGhpcy5wcm9jZXNzT3Zlcig8YW00Y2hhcnRzLkxpbmVTZXJpZXM+ZXZlbnQudGFyZ2V0LmRhdGFJdGVtLmRhdGFDb250ZXh0KTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwib3V0XCIsICgpID0+IHsgdGhpcy5wcm9jZXNzT3V0KCk7IH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcpIHtcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nVG9wID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy50b3AgPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdCb3R0b20gPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmJvdHRvbSA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ0xlZnQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmxlZnQgPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdSaWdodCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcucmlnaHQgPz8gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvciA9IG5ldyBhbTRjaGFydHMuWFlDdXJzb3IoKTtcclxuXHJcbiAgICAgICAgLy9Qcm92ZSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgIC8vIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IuZXZlbnRzLm9uKFwiY3Vyc29ycG9zaXRpb25jaGFuZ2VkXCIsIChldikgPT4ge1xyXG4gICAgICAgIC8vICAgICAvL3ZhciB2YWx1ZSA9IGRhdGVBeGlzLnBvc2l0aW9uVG9EYXRlKGRhdGVBeGlzLnRvQXhpc1Bvc2l0aW9uKGV2LnRhcmdldC54UG9zaXRpb24pKTtcclxuICAgICAgICAvLyAgICAgdmFyIGR0ID0gZGF0ZUF4aXMuc2VyaWVzLnZhbHVlcy5maW5kKHQgPT4gdC5kYXRhSXRlbS52YWx1ZXMuZGF0ZVgpO1xyXG4gICAgICAgIC8vICAgICBpZiAoZHQgJiYgZHQuZGF0YUl0ZW0pIHtcclxuICAgICAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKGR0LmRhdGFJdGVtLnZhbHVlcyk7XHJcbiAgICAgICAgLy8gICAgICAgICAvLyB0aGlzLkNoYXJ0SW5zdGFuY2UudG9vbHRpcFRleHQgPSBkdDtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgICBlbHNlIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS50b29sdGlwVGV4dCA9IFwiXCI7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yLnhBeGlzID0gZGF0ZUF4aXM7XHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvci55QXhpcyA9IHlBeGlzO1xyXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZURhdGFTZXQpXHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IubWF4VG9vbHRpcERpc3RhbmNlID0gLTE7XHJcblxyXG4gICAgICAgIC8vVE9ETzogQ2VyY2FyZSBkaSBjYXBpcmUgcGVyY2jDqSDDqCBmaWdsaW8gZGkgcHV0dGFuYS4uLi4uLlxyXG4gICAgICAgIGRhdGVBeGlzLmV2ZW50cy5vbihcInN0YXJ0Y2hhbmdlZFwiLCB0ID0+IHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWQodCwgc2V0dGluZ3MpKTtcclxuICAgICAgICBkYXRlQXhpcy5ldmVudHMub24oXCJlbmRjaGFuZ2VkXCIsIHQgPT4gdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZCh0LCBzZXR0aW5ncykpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwdWJsaWMgcmVmcmVzaERhdGEoZGF0YTogTGluZUNoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgICAgIGxldCBkYXRhQ29udmVydGVkOiBMaW5lQ2hhcnREYXRhID0gdGhpcy5BZGFwdGVyID8gdGhpcy5BZGFwdGVyLmFkYXB0RGF0YUZvckxpbmVDaGFydChkYXRhKSA6IGRhdGE7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZURhdGFTZXQpIHtcclxuICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmdlbmVyYXRlU2luZ2xlRGF0YXNldChkYXRhQ29udmVydGVkKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmFkZERhdGEoZGF0YSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5zZXJpZXMuZWFjaChzID0+IHtcclxuICAgICAgICAgICAgdmFyIHJlbGF0aXZlU2VyaWUgPSBkYXRhQ29udmVydGVkLnNlcmllcy5maW5kKHQgPT4gdC5uYW1lID09IHMubmFtZSk7XHJcblxyXG4gICAgICAgICAgICAvLyBVbmEgc2VyaWUgZGVsIGdyYWZpY28gw6ggc3RhdGEgZ2dpb3JuYXRhLCBvcmRpbm8gaSBkYXRhcG9pbnQgZSBsaSBhZ2dpdW5nb1xyXG4gICAgICAgICAgICB2YXIgY29ycmVjdE9yZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdmFyIHByZXZEYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgZm9yIChsZXQgdiA9IDA7IHYgPCByZWxhdGl2ZVNlcmllLnZhbHVlcy5sZW5ndGg7IHYrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2RGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICBwcmV2RGF0ZSA9IHJlbGF0aXZlU2VyaWUudmFsdWVzW3ZdLmQ7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlbGF0aXZlU2VyaWUudmFsdWVzW3ZdLmQgPCBwcmV2RGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0T3JkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNvcnJlY3RPcmRlcilcclxuICAgICAgICAgICAgICAgIHJlbGF0aXZlU2VyaWUudmFsdWVzLnNvcnQoKGQxLCBkMikgPT4gZDEuZC5nZXRUaW1lKCkgLSBkMi5kLmdldFRpbWUoKSk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCB2ID0gMDsgdiA8IHJlbGF0aXZlU2VyaWUudmFsdWVzLmxlbmd0aDsgdisrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0gcmVsYXRpdmVTZXJpZS52YWx1ZXNbdl07XHJcbiAgICAgICAgICAgICAgICBzLmFkZERhdGEoeyBkYXRlOiBvYmouZCwgdmFsdWU6IG9iai52IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQYXJ0ZW5kbyBkYSBkYXRpIGRpdmlzaSBwZXIgc2VyaXVlIGdlbmVyYSB1biBkYXRhc2V0IHVuaXRvIGNvbiBsYSBkYXRhIGNvbWUgY2hpYXZlIGUgaSB2YXJpIHZhbG9yaSBkb3BvICovXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlU2luZ2xlRGF0YXNldChkYXRhOiBMaW5lQ2hhcnREYXRhKTogYW55IHtcclxuICAgICAgICBsZXQgZHRvOiB7IFtpbmRleDogbnVtYmVyXTogeyBbc2luZGV4OiBzdHJpbmddOiBudW1iZXIgfSB9ID0ge307XHJcbiAgICAgICAgZGF0YS5zZXJpZXMuZm9yRWFjaCgodnMsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdnMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGF0YWl0ZW0gPSB2cy52YWx1ZXNbaV07XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXhlciA9IG5ldyBEYXRlKGRhdGFpdGVtLmQpLnZhbHVlT2YoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIWR0b1tpbmRleGVyXSlcclxuICAgICAgICAgICAgICAgICAgICBkdG9baW5kZXhlcl0gPSB7fTtcclxuXHJcbiAgICAgICAgICAgICAgICBkdG9baW5kZXhlcl1bJ3YnICsgaW5kZXhdID0gZGF0YWl0ZW0udjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB2YXIgZGF0ZXMgPSBPYmplY3Qua2V5cyhkdG8pO1xyXG4gICAgICAgIHZhciByZXQgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZXM6IHsgW3NpbmRleDogc3RyaW5nXTogbnVtYmVyIH0gPSBkdG9bZGF0ZXNbaV1dO1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHsgZDogbmV3IERhdGUocGFyc2VJbnQoZGF0ZXNbaV0pKSB9XHJcblxyXG4gICAgICAgICAgICB2YXIgdmFscyA9IE9iamVjdC5rZXlzKHZhbHVlcyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCB2YWxzLmxlbmd0aDsgaWkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHNlcmllcyA9IHZhbHNbaWldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNpbmdsZVZhbCA9IHZhbHVlc1tzZXJpZXNdO1xyXG4gICAgICAgICAgICAgICAgaXRlbVtzZXJpZXNdID0gc2luZ2xlVmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2VkKGV2LCBzZXR0aW5ncykge1xyXG4gICAgICAgIGlmICgoPGFueT5zZXR0aW5ncykuT25TZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgdGhpcy50aHJvdHRsYShcInNlbGNoYW5nZVwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYXhpcyA9IDxhbTRjaGFydHMuRGF0ZUF4aXM+ZXYudGFyZ2V0XHJcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZShheGlzLm1pblpvb21lZCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoYXhpcy5tYXhab29tZWQpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGluaXRpYWwgPSBheGlzLm1pbiA9PSBheGlzLm1pblpvb21lZCAmJiBheGlzLm1heCA9PSBheGlzLm1heFpvb21lZDtcclxuICAgICAgICAgICAgICAgICg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayh7IGZyb206IHN0YXJ0LCB0bzogZW5kLCBpbml0aWFsOiBpbml0aWFsIH0pO1xyXG4gICAgICAgICAgICB9LCAxNTApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NPdmVyKGhvdmVyZWRTZXJpZXM6IGFtNGNoYXJ0cy5MaW5lU2VyaWVzKSB7XHJcbiAgICAgICAgaG92ZXJlZFNlcmllcy50b0Zyb250KCk7XHJcbiAgICAgICAgbGV0IGZpbGwgPSBob3ZlcmVkU2VyaWVzLnN0YWNrZWQ7XHJcbiAgICAgICAgaG92ZXJlZFNlcmllcy5zZWdtZW50cy5lYWNoKChzZWdtZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHNlZ21lbnQuc2V0U3RhdGUoXCJob3ZlclwiKTtcclxuICAgICAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gdGhpcy5PcGFjaXR5T25TZWxlY3RlZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgIGhvdmVyZWRTZXJpZXMubGVnZW5kRGF0YUl0ZW0ubWFya2VyLmNoaWxkcmVuLmdldEluZGV4KDEpLmZpbGxPcGFjaXR5ID0gdGhpcy5PcGFjaXR5T25TZWxlY3RlZDtcclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnNlcmllcy5lYWNoKChzZXJpZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHNlcmllcyAhPSBob3ZlcmVkU2VyaWVzKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsbCA9IHNlcmllcy5zdGFja2VkO1xyXG4gICAgICAgICAgICAgICAgKDxhbTRjaGFydHMuTGluZVNlcmllcz5zZXJpZXMpLnNlZ21lbnRzLmVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50LnNldFN0YXRlKFwiZGltbWVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc091dCgpIHtcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2Uuc2VyaWVzLmVhY2goKHNlcmllcykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZmlsbCA9IHNlcmllcy5zdGFja2VkO1xyXG4gICAgICAgICAgICAoPGFtNGNoYXJ0cy5MaW5lU2VyaWVzPnNlcmllcykuc2VnbWVudHMuZWFjaCgoc2VnbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudC5zZXRTdGF0ZShcImRlZmF1bHRcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgIHNlcmllcy5sZWdlbmREYXRhSXRlbS5tYXJrZXIuY2hpbGRyZW4uZ2V0SW5kZXgoMSkuZmlsbE9wYWNpdHkgPSAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqKiogRnVuemlvbmUgZGkgdGhyb3R0bGluZyBwZXIgbm9uIHNwYW1tYXJlIHJpY2hpZXN0ZSBpbiBjYXNvIGRpIGFuaW1hemlvbmkgYXR0aXZhdGVcclxuICAgIC8vVE9ETzogc3Bvc3RhcmxhIGluIHVuIG1ldG9kbyBkaSB1dGlsaXTDoCAoZXNmYWVuemEvZXh0ZW5zaW9ucylcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGV4ZWN1dGlvblRpbWVyczogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSB0aHJvdHRsYShpZDogc3RyaW5nLCBmdW5jOiBGdW5jdGlvbiwgdGhyb3R0bGVUaW1lOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICAvL1NlIGhvIGxhIGZ1bnppb25lIGNoZSB2dW9sZSBlc2VndWlyZSByaXB1bGlzY28gcXVlbCB0aW1lb3V0XHJcbiAgICAgICAgaWYgKHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSlcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSk7XHJcblxyXG4gICAgICAgIC8vUmljcmVvIGlsIHRpbWVvdXQgcGVyIGVzZWd1aXJlIHF1ZWxsYSBmdW56aW9uZSBkb3BvIHRocm90dGxlVGltZSBtaWxsaXNlY29uZGlcclxuICAgICAgICB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBzZXRUaW1lb3V0KCgpID0+IHsgZnVuYygpOyB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBudWxsOyB9LCB0aHJvdHRsZVRpbWUpO1xyXG4gICAgfVxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqXHJcbn0iXX0=
|
|
358
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL2NsYXNzZXMvTGluZUNoYXJ0U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEtBQUssT0FBTyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxTQUFTLE1BQU0sNEJBQTRCLENBQUM7QUFFeEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBU3pCLGNBQWM7SUFDZCxZQUFtQixPQUFvQixFQUFVLFFBQXFCO1FBQW5ELFlBQU8sR0FBUCxPQUFPLENBQWE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBUHRFLGNBQWM7UUFDTix3QkFBbUIsR0FBVyxJQUFJLENBQUM7UUFDM0MsY0FBYztRQUNOLHNCQUFpQixHQUFXLEdBQUcsQ0FBQztRQUN4QyxjQUFjO1FBQ04sa0JBQWEsR0FBWSxLQUFLLENBQUM7UUF5WHZDLHVHQUF1RztRQUN2RywrREFBK0Q7UUFDL0QsY0FBYztRQUNOLG9CQUFlLEdBQTZCLEVBQUUsQ0FBQztJQTFYbUIsQ0FBQztJQUUzRTs7T0FFRztJQUNJLFVBQVUsQ0FBQyxJQUF5QixFQUFFLFFBQTJCOztRQUNwRSxJQUFJLGFBQWEsR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xHLElBQUksU0FBUyxTQUFHLFFBQVEsQ0FBQyxxQkFBcUIsbUNBQUksSUFBSSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxhQUFhLFNBQUcsUUFBUSxDQUFDLGFBQWEsbUNBQUksS0FBSyxDQUFDO1FBQ3JELElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FB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QyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUcsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuaW1wb3J0IHsgSUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlL0lCYXNlU2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMnO1xyXG5pbXBvcnQgeyBMaW5lQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RhdGEnO1xyXG5pbXBvcnQgeyBMaW5lQ2hhcnRTZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9zZXR0aW5ncyc7XHJcblxyXG5pbXBvcnQgKiBhcyBhbTRjb3JlIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW00Y2hhcnRzIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NoYXJ0c1wiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBpbCBjdWkgdW5pY28gc2NvcG8gw6ggZ2VzdGlyZSBpbCBzZXR1cCBlIHJlbmRlcmluZyBkaSB1biBMaW5lQ2hhcnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBMaW5lQ2hhcnRTZXJ2aWNlIGltcGxlbWVudHMgSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PntcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwdWJsaWMgQ2hhcnRJbnN0YW5jZTogYW00Y2hhcnRzLlhZQ2hhcnQ7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBEYXRhR3JvdXBCdWNrZXRTaXplOiBudW1iZXIgPSAxNTAwO1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgT3BhY2l0eU9uU2VsZWN0ZWQ6IG51bWJlciA9IDAuMztcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHNpbmdsZURhdGFTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgQWRhcHRlcjogQmFzZUFkYXB0ZXIsIHByaXZhdGUgZGF0ZUV4dHM6IERhdGVTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgZGF0YSB1bmEgY29wcGlhIERhdGkgLSBJbXBvc3RhemlvbmkgbGkgdXRpbGl6emEgcGVyIGNyZWFyZSBlIHZpc3VhbGl6emFyZSB1biBMaW5lQ2hhcnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdyYXBoaWNhdGUoZGF0YTogTGluZUNoYXJ0RGF0YSB8IGFueSwgc2V0dGluZ3M6IExpbmVDaGFydFNldHRpbmdzKTogSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PiB7XHJcbiAgICAgICAgbGV0IGRhdGFDb252ZXJ0ZWQ6IExpbmVDaGFydERhdGEgPSB0aGlzLkFkYXB0ZXIgPyB0aGlzLkFkYXB0ZXIuYWRhcHREYXRhRm9yTGluZUNoYXJ0KGRhdGEpIDogZGF0YTtcclxuICAgICAgICBsZXQgdGhyZXNob2xkID0gc2V0dGluZ3MuRGF0YUdyb3VwaW5nVGhyZXNob2xkID8/IDMwMDA7XHJcbiAgICAgICAgdGhpcy5zaW5nbGVEYXRhU2V0ID0gc2V0dGluZ3MuTWVyZ2VEYXRhc2V0cyA/PyBmYWxzZTtcclxuICAgICAgICBsZXQgc2hvd1RpY2tzID0gc2V0dGluZ3MuU2hvd1RpY2tzID09IG51bGwgPyB0cnVlIDogc2V0dGluZ3M/LlNob3dUaWNrcztcclxuICAgICAgICBsZXQgZGF0YVNob3VsZEJlR3JvdXBlZCA9IE1hdGgubWF4KC4uLmRhdGFDb252ZXJ0ZWQuc2VyaWVzLm1hcCh0ID0+IHQudmFsdWVzLmxlbmd0aCkpID4gdGhyZXNob2xkO1xyXG4gICAgICAgIGxldCBzaG93VGltZWxpbmUgPSBzZXR0aW5ncy5UaW1lbGluZSB8fCBkYXRhU2hvdWxkQmVHcm91cGVkO1xyXG4gICAgICAgIGxldCBzZXJpZXNXaXRoSW50ZXJ2YWwgPSBkYXRhQ29udmVydGVkLnNlcmllcy5zb21lKHQgPT4gdC5pbnRlcnZhbCk7XHJcbiAgICAgICAgbGV0IGludGVydmFsID0gc2VyaWVzV2l0aEludGVydmFsID8gZGF0YUNvbnZlcnRlZC5zZXJpZXMuZmluZCh0ID0+IHQuaW50ZXJ2YWwpLmludGVydmFsIDogbnVsbDtcclxuICAgICAgICBsZXQgZ2Fwc0FsbG93ZWQgPSBzZXR0aW5ncz8uQWxsb3dHYXBzID09IG51bGwgPyBzZXJpZXNXaXRoSW50ZXJ2YWwgOiBzZXR0aW5ncz8uQWxsb3dHYXBzO1xyXG4gICAgICAgIGxldCBmaW5hbEluc3RhbnQgPSBzZXR0aW5ncz8uRmluYWxJbnN0YW50cyA/PyB0cnVlO1xyXG5cclxuICAgICAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgICAgIGFtNGNvcmUub3B0aW9ucy5hdXRvRGlzcG9zZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIGFtNGNoYXJ0cy5YWUNoYXJ0KTtcclxuICAgICAgICBsZXQgQ2hhcnRJbnN0YW5jZUNhc3RlZCA9IDxhbTRjaGFydHMuWFlDaGFydD50aGlzLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgICAgIGxldCB5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueUF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLlZhbHVlQXhpcygpKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuWUF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWUF4aXNUaXRsZVxyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuTWluKVxyXG4gICAgICAgICAgICB5QXhpcy5taW4gPSBzZXR0aW5ncy5NaW47XHJcbiAgICAgICAgaWYgKHNldHRpbmdzLk1heClcclxuICAgICAgICAgICAgeUF4aXMubWF4ID0gc2V0dGluZ3MuTWF4O1xyXG5cclxuICAgICAgICBpZiAoZGF0YUNvbnZlcnRlZC5saW1pdCkge1xyXG4gICAgICAgICAgICBpZiAoZGF0YUNvbnZlcnRlZC5saW1pdC51cHBlciAhPSBudWxsICYmIGRhdGFDb252ZXJ0ZWQubGltaXQudXBwZXIgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB5QXhpcy5heGlzUmFuZ2VzLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UudmFsdWUgPSBkYXRhQ29udmVydGVkLmxpbWl0LnVwcGVyO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuaW5zaWRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLnRleHQgPSBkYXRhQ29udmVydGVkLmxpbWl0LnVwcGVyTGFiZWw7XHJcbiAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5maWxsID0gcmFuZ2UuZ3JpZC5zdHJva2U7XHJcbiAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC52ZXJ0aWNhbENlbnRlciA9IFwiYm90dG9tXCI7XHJcbiAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGRhdGFDb252ZXJ0ZWQubGltaXQudXBwZXJDb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IoZGF0YUNvbnZlcnRlZC5saW1pdC51cHBlckNvbG9yIHx8IFwiI0Y5MjIwMFwiKTtcclxuICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2VPcGFjaXR5ID0gMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGRhdGFDb252ZXJ0ZWQubGltaXQubG93ZXIgIT0gbnVsbCAmJiBkYXRhQ29udmVydGVkLmxpbWl0Lmxvd2VyICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJhbmdlID0geUF4aXMuYXhpc1Jhbmdlcy5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgIHJhbmdlLnZhbHVlID0gZGF0YUNvbnZlcnRlZC5saW1pdC5sb3dlcjtcclxuICAgICAgICAgICAgICAgIHJhbmdlLmxhYmVsLmluc2lkZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByYW5nZS5sYWJlbC50ZXh0ID0gZGF0YUNvbnZlcnRlZC5saW1pdC5sb3dlckxhYmVsO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuZmlsbCA9IHJhbmdlLmdyaWQuc3Ryb2tlO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwudmVydGljYWxDZW50ZXIgPSBcImJvdHRvbVwiO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UubGFiZWwuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihkYXRhQ29udmVydGVkLmxpbWl0Lmxvd2VyQ29sb3IgfHwgXCIjRjkyMjAwXCIpO1xyXG4gICAgICAgICAgICAgICAgcmFuZ2UuZ3JpZC5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKGRhdGFDb252ZXJ0ZWQubGltaXQubG93ZXJDb2xvciB8fCBcIiNGOTIyMDBcIik7XHJcbiAgICAgICAgICAgICAgICByYW5nZS5ncmlkLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgICAgICAgICAgIHJhbmdlLmdyaWQuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBkYXRlQXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueEF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLkRhdGVBeGlzKCkpO1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuWEF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICBkYXRlQXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICAgICAgICBkYXRlQXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2hvd1RpY2tzKSB7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKFwiIzQ5NUM0M1wiKTtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5sZW5ndGggPSAxMDtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUubG9jYXRpb24gPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIubWluR3JpZERpc3RhbmNlID0gc2V0dGluZ3M/Lk1pbkdyaWREaXN0YW5jZSA/PyA1MDtcclxuICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci5ncmlkLnRlbXBsYXRlLmxvY2F0aW9uID0gMDtcclxuICAgICAgICBkYXRlQXhpcy5taW5ab29tQ291bnQgPSA1O1xyXG4gICAgICAgIGRhdGVBeGlzLmdyb3VwRGF0YSA9IGRhdGFTaG91bGRCZUdyb3VwZWQ7XHJcbiAgICAgICAgZGF0ZUF4aXMuZ3JvdXBDb3VudCA9IHNldHRpbmdzLkRhdGFHcm91cEJ1Y2tldFNpemUgPz8gdGhpcy5EYXRhR3JvdXBCdWNrZXRTaXplO1xyXG5cclxuICAgICAgICAvL1NlIGhvIGFsbWVubyB1bmEgc2VyaWUgYWQgaW50ZXJ2YWxsbyBlIGkgc2V0dGluZ3Mgbm9uIG1pIGltcGVkaXNjb25vIGVzcGxpY2l0YW1lbnRlIGRpIHVzYXJlIGkgZ2FwcywgdmlzdWFsaXp6byBpIGRhdGkgY29sIGdhcFxyXG5cclxuICAgICAgICBpZiAoZ2Fwc0FsbG93ZWQpIHtcclxuICAgICAgICAgICAgaWYgKCFzZXJpZXNXaXRoSW50ZXJ2YWwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJQZXIgdXRpbGl6emFyZSBsYSBmdW56aW9uYWxpdMOgIGRlaSBnYXAgw6ggb2JibGlnYXRvcmlvIGRlZmluaXJlIHVuIGludGVydmFsbG8gbmVsbGUgc2VyaWUgZGVsIGdyYWZpY29cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZGF0ZUF4aXMuYmFzZUludGVydmFsID0geyBjb3VudDogaW50ZXJ2YWwuY291bnQsIHRpbWVVbml0OiBpbnRlcnZhbC50aW1ldW5pdCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2hvd1RpbWVsaW5lKVxyXG4gICAgICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNjcm9sbGJhclggPSBuZXcgYW00Y2hhcnRzLlhZQ2hhcnRTY3JvbGxiYXIoKTtcclxuXHJcbiAgICAgICAgbGV0IHNlcmllc1RvUHVzaCA9IFtdO1xyXG4gICAgICAgIGxldCBzZXJpZXNDb2xvcnM6IGFtNGNvcmUuQ29sb3JbXSA9IFtdO1xyXG4gICAgICAgIGxldCBkZWZhdWx0SW5kZXggPSAwO1xyXG5cclxuICAgICAgICAvLy0tIEdlbmVyYXppb25lIGRpIHVuIHVuaWNvIGRhdGFzZXQgaW52ZWNlIGNoZSBOLCBwZXIgcG90ZXIgZ2VzdGlyZSB1biB1bmljbyB0b29sdGlwXHJcbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuZGF0YSA9IHRoaXMuZ2VuZXJhdGVTaW5nbGVEYXRhc2V0KGRhdGFDb252ZXJ0ZWQpOztcclxuICAgICAgICAgICAgZGF0ZUF4aXMuY3Vyc29yVG9vbHRpcEVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8tLSBGaW5lIGdlbmVyYXppb25lXHJcblxyXG4gICAgICAgIGRhdGFDb252ZXJ0ZWQuc2VyaWVzLmZvckVhY2goKHMsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzLnZhbHVlc1swXSAmJiAhKHMudmFsdWVzWzBdLmQgaW5zdGFuY2VvZiBEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgdiA9IDA7IHYgPCBzLnZhbHVlcy5sZW5ndGg7IHYrKylcclxuICAgICAgICAgICAgICAgICAgICBzLnZhbHVlc1t2XS5kID0gbmV3IERhdGUocy52YWx1ZXNbdl0uZCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciBjb3JyZWN0T3JkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICB2YXIgcHJldkRhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICBmb3IgKGxldCB2ID0gMDsgdiA8IHMudmFsdWVzLmxlbmd0aDsgdisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZEYXRlKVxyXG4gICAgICAgICAgICAgICAgICAgIHByZXZEYXRlID0gcy52YWx1ZXNbdl0uZDtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBpZiAocy52YWx1ZXNbdl0uZCA8IHByZXZEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3RPcmRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghY29ycmVjdE9yZGVyKVxyXG4gICAgICAgICAgICAgICAgcy52YWx1ZXMuc29ydCgoZDEsIGQyKSA9PiBkMS5kLmdldFRpbWUoKSAtIGQyLmQuZ2V0VGltZSgpKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBmaWxsID0gcy5maWxsICE9IG51bGwgJiYgcy5maWxsICE9IHVuZGVmaW5lZCA/IHMuZmlsbCA6IChzZXR0aW5ncz8uRmlsbCA/PyBmYWxzZSk7XHJcbiAgICAgICAgICAgIGxldCBzZXJpZXM6IGFtNGNoYXJ0cy5TdGVwTGluZVNlcmllcyB8IGFtNGNoYXJ0cy5MaW5lU2VyaWVzID0gc2V0dGluZ3M/LlN0ZXAgPyBuZXcgYW00Y2hhcnRzLlN0ZXBMaW5lU2VyaWVzKCkgOiBuZXcgYW00Y2hhcnRzLkxpbmVTZXJpZXMoKTtcclxuICAgICAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gXCJ2XCIgKyAodGhpcy5zaW5nbGVEYXRhU2V0ID8gaW5kZXggOiBcIlwiKTtcclxuICAgICAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMuZGF0ZVggPSBcImRcIjtcclxuICAgICAgICAgICAgKDxhbnk+c2VyaWVzLmRhdGFGaWVsZHMpLm1lYXN1cmVVbml0ID0gcy51b207XHJcbiAgICAgICAgICAgIHNlcmllcy5uYW1lID0gcy5uYW1lO1xyXG4gICAgICAgICAgICBzZXJpZXMuc3Ryb2tlV2lkdGggPSBzZXR0aW5ncz8uU3Ryb2tlU2l6ZSA/PyAxO1xyXG4gICAgICAgICAgICBzZXJpZXMuY29ubmVjdCA9ICFnYXBzQWxsb3dlZDtcclxuICAgICAgICAgICAgc2VyaWVzLm1pbkJ1bGxldERpc3RhbmNlID0gMTA7XHJcbiAgICAgICAgICAgIHNlcmllcy50b29sdGlwVGV4dCA9IHRoaXMuc2luZ2xlRGF0YVNldCA/IFwiXCIgOiBzLm5hbWUgPyBcIntuYW1lfTogW2JvbGRde3ZhbHVlWX1bL11cIiA6IFwiW2JvbGRde3ZhbHVlWX1bL11cIjtcclxuICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAucG9pbnRlck9yaWVudGF0aW9uID0gXCJ2ZXJ0aWNhbFwiO1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5iYWNrZ3JvdW5kLmZpbGxPcGFjaXR5ID0gMC41O1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5sYWJlbC5wYWRkaW5nKDEyLCAxMiwgMTIsIDEyKTtcclxuICAgICAgICAgICAgc2VyaWVzLmZpbGxPcGFjaXR5ID0gZmlsbCA/IDEgOiAwLjAwMDE7XHJcbiAgICAgICAgICAgIHNlcmllcy5zdGFja2VkID0gZmlsbFxyXG5cclxuICAgICAgICAgICAgLy9EYXRhc2V0IHNpbmdvbG8sIGkgZGF0aSBzb25vIHJlZ2lzdHJhdGkgYSBsaXZlbGxvIGRpIGNoYXJ0LCBjcmVvIGlsIHRvb2x0aXAgY2hlIHBlcm1ldHRlIGRpIHZlZGVybGkgdHV0dGkgaW5zaWVtZVxyXG4gICAgICAgICAgICAvL2FsdHJpbWVudGkgYXNzZWdubyBpIGRhdGkgZGVsbGEgc2VyaWUgZGlyZXR0YW1lbnRlIGFsbGEgc2VyaWVcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2luZ2xlRGF0YVNldCkge1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAuZ2V0RmlsbEZyb21PYmplY3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmJhY2tncm91bmQuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjZWVlXCIpO1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAubGFiZWwuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjMDBcIik7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5kZWZhdWx0U3RhdGUudHJhbnNpdGlvbkR1cmF0aW9uID0gMDtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmhpZGRlblN0YXRlLnRyYW5zaXRpb25EdXJhdGlvbiA9IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgLy9VdGlsaXp6byBpbCBtaW8gZGF0ZVNlcnZpY2UgcGVyIGxhIGZvcm1hdHRhemlvbmUgZGVsbGEgZGF0YSBpbiBtb2RvIGNoZSBub24gZGViYmEgbWFpIGdlc3RpcmUgbiBmb3JtYXRpIGZyYSBuIGxpYnJlcmllLi4uIGJlbGxpc3NpbW9cclxuICAgICAgICAgICAgICAgIHNlcmllcy5kYXRlRm9ybWF0dGVyLmZvcm1hdCA9IChzb3VyY2U6IERhdGUpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnZhbCAmJiBmaW5hbEluc3RhbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWVwYXJ0OiBcIm1pbnV0ZVwiIHwgXCJob3VyXCIgfCBcImRheVwiID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcnZhbC50aW1ldW5pdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImhvdXJcIjogdGltZXBhcnQgPSAnZGF5JzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwibWludXRlXCI6IHRpbWVwYXJ0ID0gJ2hvdXInOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZWNvbmRcIjogdGltZXBhcnQgPSAnbWludXRlJzsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVwYXJ0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZUV4dHMuYWRqdXN0RGF0ZVRvRmluYWxJbnN0YW50KHNvdXJjZSwgdGltZXBhcnQsIGludGVydmFsID8gaW50ZXJ2YWwudGltZXVuaXQgPT0gXCJzZWNvbmRcIiA6IGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlRXh0cy5nZXRGb3JtYXR0ZWQoc291cmNlLCBmYWxzZSwgaW50ZXJ2YWwgPyBpbnRlcnZhbC50aW1ldW5pdCA9PSBcInNlY29uZFwiIDogZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICg8YW55PnNlcmllcy5hZGFwdGVyKS5hZGQoXCJ0b29sdGlwVGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRleHQgPSBcIltib2xkXXtkYXRlWC5mb3JtYXREYXRlKCl9Wy9dXFxuXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnNlcmllcy5lYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1b20gPSBcIiBbZm9udC1zdHlsZTogaXRhbGljXVwiICsgKDxhbnk+c2VyaWVzLmRhdGFGaWVsZHMpLm1lYXN1cmVVbml0IHx8IFwiXCIgKyBcIlsvXVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IFwiW1wiICsgKDxhbnk+aXRlbS5zdHJva2UpLmhleCArIFwiXeKXj1svXSBcIiArIChpdGVtLm5hbWUgPyAoaXRlbS5uYW1lICsgXCI6IFwiKSA6IFwiXCIpICsgXCJbYm9sZF17XCIgKyBpdGVtLmRhdGFGaWVsZHMudmFsdWVZICsgXCJ9Wy9dXCIgKyB1b20gKyBcIlxcblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzLmRhdGEgPSBzLnZhbHVlcztcclxuXHJcbiAgICAgICAgICAgIGxldCBzZWdtZW50ID0gc2VyaWVzLnNlZ21lbnRzLnRlbXBsYXRlO1xyXG5cclxuICAgICAgICAgICAgbGV0IGhvdmVyU3RhdGUgPSBzZWdtZW50LnN0YXRlcy5jcmVhdGUoXCJob3ZlclwiKTtcclxuICAgICAgICAgICAgaG92ZXJTdGF0ZS5wcm9wZXJ0aWVzLnN0cm9rZVdpZHRoID0gKHNldHRpbmdzPy5TdHJva2VTaXplID8/IDEpICsgMTtcclxuXHJcbiAgICAgICAgICAgIGxldCBkaW1tZWQgPSBzZWdtZW50LnN0YXRlcy5jcmVhdGUoXCJkaW1tZWRcIik7XHJcbiAgICAgICAgICAgIGRpbW1lZC5wcm9wZXJ0aWVzLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IoXCIjZGFkYWRhXCIpO1xyXG5cclxuICAgICAgICAgICAgLy9TZSBsYSBzZXJpZSBoYSB1biBjb2xvcmUsIHVzbyBxdWVsbG8sIGFsdHJpbWVudGkgcGVzY28gZGFpIGNvbG9yaSBkaSBkZWZhdWx0IGFuZGFuZG8gaW4gb3JkaW5lXHJcbiAgICAgICAgICAgIGlmIChzLmNvbG9yKVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzQ29sb3JzLnB1c2goYW00Y29yZS5jb2xvcihzLmNvbG9yKSk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzQ29sb3JzLnB1c2goQ2hhcnRJbnN0YW5jZUNhc3RlZC5jb2xvcnMubGlzdFtkZWZhdWx0SW5kZXggJSBDaGFydEluc3RhbmNlQ2FzdGVkLmNvbG9ycy5saXN0Lmxlbmd0aF0pXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0SW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc2VyaWVzVG9QdXNoLnB1c2goc2VyaWVzKTtcclxuICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY29sb3JzLmxpc3QgPSBzZXJpZXNDb2xvcnM7XHJcbiAgICAgICAgLy9TY3Jpdm8gbGUgc2VyaWUgbmVsIGdyYWZpY29cclxuICAgICAgICBzZXJpZXNUb1B1c2guZm9yRWFjaChzID0+IHtcclxuICAgICAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5zZXJpZXMucHVzaChzKTtcclxuICAgICAgICAgICAgaWYgKHNob3dUaW1lbGluZSlcclxuICAgICAgICAgICAgICAgICg8YW00Y2hhcnRzLlhZQ2hhcnRTY3JvbGxiYXI+Q2hhcnRJbnN0YW5jZUNhc3RlZC5zY3JvbGxiYXJYKS5zZXJpZXMucHVzaChzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZCkge1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5wb3NpdGlvbiA9IHNldHRpbmdzPy5MZWdlbmRQb3NpdGlvbiA/PyAncmlnaHQnO1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLnNjcm9sbGFibGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie25hbWV9XCI7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwib3ZlclwiLCAoZXZlbnQpID0+IHsgdGhpcy5wcm9jZXNzT3Zlcig8YW00Y2hhcnRzLkxpbmVTZXJpZXM+ZXZlbnQudGFyZ2V0LmRhdGFJdGVtLmRhdGFDb250ZXh0KTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwib3V0XCIsICgpID0+IHsgdGhpcy5wcm9jZXNzT3V0KCk7IH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcpIHtcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nVG9wID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy50b3AgPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdCb3R0b20gPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmJvdHRvbSA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ0xlZnQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmxlZnQgPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdSaWdodCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcucmlnaHQgPz8gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvciA9IG5ldyBhbTRjaGFydHMuWFlDdXJzb3IoKTtcclxuXHJcbiAgICAgICAgLy9Qcm92ZSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgIC8vIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IuZXZlbnRzLm9uKFwiY3Vyc29ycG9zaXRpb25jaGFuZ2VkXCIsIChldikgPT4ge1xyXG4gICAgICAgIC8vICAgICAvL3ZhciB2YWx1ZSA9IGRhdGVBeGlzLnBvc2l0aW9uVG9EYXRlKGRhdGVBeGlzLnRvQXhpc1Bvc2l0aW9uKGV2LnRhcmdldC54UG9zaXRpb24pKTtcclxuICAgICAgICAvLyAgICAgdmFyIGR0ID0gZGF0ZUF4aXMuc2VyaWVzLnZhbHVlcy5maW5kKHQgPT4gdC5kYXRhSXRlbS52YWx1ZXMuZGF0ZVgpO1xyXG4gICAgICAgIC8vICAgICBpZiAoZHQgJiYgZHQuZGF0YUl0ZW0pIHtcclxuICAgICAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKGR0LmRhdGFJdGVtLnZhbHVlcyk7XHJcbiAgICAgICAgLy8gICAgICAgICAvLyB0aGlzLkNoYXJ0SW5zdGFuY2UudG9vbHRpcFRleHQgPSBkdDtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vICAgICBlbHNlIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS50b29sdGlwVGV4dCA9IFwiXCI7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yLnhBeGlzID0gZGF0ZUF4aXM7XHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvci55QXhpcyA9IHlBeGlzO1xyXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZURhdGFTZXQpXHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IubWF4VG9vbHRpcERpc3RhbmNlID0gLTE7XHJcblxyXG4gICAgICAgIC8vVE9ETzogQ2VyY2FyZSBkaSBjYXBpcmUgcGVyY2jDqSDDqCBmaWdsaW8gZGkgcHV0dGFuYS4uLi4uLlxyXG4gICAgICAgIGRhdGVBeGlzLmV2ZW50cy5vbihcInN0YXJ0Y2hhbmdlZFwiLCB0ID0+IHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWQodCwgc2V0dGluZ3MpKTtcclxuICAgICAgICBkYXRlQXhpcy5ldmVudHMub24oXCJlbmRjaGFuZ2VkXCIsIHQgPT4gdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZCh0LCBzZXR0aW5ncykpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwdWJsaWMgcmVmcmVzaERhdGEoZGF0YTogTGluZUNoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgICAgIGxldCBkYXRhQ29udmVydGVkOiBMaW5lQ2hhcnREYXRhID0gdGhpcy5BZGFwdGVyID8gdGhpcy5BZGFwdGVyLmFkYXB0RGF0YUZvckxpbmVDaGFydChkYXRhKSA6IGRhdGE7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZURhdGFTZXQpIHtcclxuICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmdlbmVyYXRlU2luZ2xlRGF0YXNldChkYXRhQ29udmVydGVkKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmFkZERhdGEoZGF0YSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5zZXJpZXMuZWFjaChzID0+IHtcclxuICAgICAgICAgICAgdmFyIHJlbGF0aXZlU2VyaWUgPSBkYXRhQ29udmVydGVkLnNlcmllcy5maW5kKHQgPT4gdC5uYW1lID09IHMubmFtZSk7XHJcblxyXG4gICAgICAgICAgICAvLyBVbmEgc2VyaWUgZGVsIGdyYWZpY28gw6ggc3RhdGEgZ2dpb3JuYXRhLCBvcmRpbm8gaSBkYXRhcG9pbnQgZSBsaSBhZ2dpdW5nb1xyXG4gICAgICAgICAgICB2YXIgY29ycmVjdE9yZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdmFyIHByZXZEYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgZm9yIChsZXQgdiA9IDA7IHYgPCByZWxhdGl2ZVNlcmllLnZhbHVlcy5sZW5ndGg7IHYrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2RGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICBwcmV2RGF0ZSA9IHJlbGF0aXZlU2VyaWUudmFsdWVzW3ZdLmQ7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlbGF0aXZlU2VyaWUudmFsdWVzW3ZdLmQgPCBwcmV2RGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0T3JkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNvcnJlY3RPcmRlcilcclxuICAgICAgICAgICAgICAgIHJlbGF0aXZlU2VyaWUudmFsdWVzLnNvcnQoKGQxLCBkMikgPT4gZDEuZC5nZXRUaW1lKCkgLSBkMi5kLmdldFRpbWUoKSk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCB2ID0gMDsgdiA8IHJlbGF0aXZlU2VyaWUudmFsdWVzLmxlbmd0aDsgdisrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0gcmVsYXRpdmVTZXJpZS52YWx1ZXNbdl07XHJcbiAgICAgICAgICAgICAgICBzLmFkZERhdGEoeyBkYXRlOiBvYmouZCwgdmFsdWU6IG9iai52IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQYXJ0ZW5kbyBkYSBkYXRpIGRpdmlzaSBwZXIgc2VyaXVlIGdlbmVyYSB1biBkYXRhc2V0IHVuaXRvIGNvbiBsYSBkYXRhIGNvbWUgY2hpYXZlIGUgaSB2YXJpIHZhbG9yaSBkb3BvICovXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlU2luZ2xlRGF0YXNldChkYXRhOiBMaW5lQ2hhcnREYXRhKTogYW55IHtcclxuICAgICAgICBsZXQgZHRvOiB7IFtpbmRleDogbnVtYmVyXTogeyBbc2luZGV4OiBzdHJpbmddOiBudW1iZXIgfSB9ID0ge307XHJcbiAgICAgICAgZGF0YS5zZXJpZXMuZm9yRWFjaCgodnMsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdnMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGF0YWl0ZW0gPSB2cy52YWx1ZXNbaV07XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXhlciA9IG5ldyBEYXRlKGRhdGFpdGVtLmQpLnZhbHVlT2YoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIWR0b1tpbmRleGVyXSlcclxuICAgICAgICAgICAgICAgICAgICBkdG9baW5kZXhlcl0gPSB7fTtcclxuXHJcbiAgICAgICAgICAgICAgICBkdG9baW5kZXhlcl1bJ3YnICsgaW5kZXhdID0gZGF0YWl0ZW0udjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB2YXIgZGF0ZXMgPSBPYmplY3Qua2V5cyhkdG8pO1xyXG4gICAgICAgIHZhciByZXQgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZXM6IHsgW3NpbmRleDogc3RyaW5nXTogbnVtYmVyIH0gPSBkdG9bZGF0ZXNbaV1dO1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHsgZDogbmV3IERhdGUocGFyc2VJbnQoZGF0ZXNbaV0pKSB9XHJcblxyXG4gICAgICAgICAgICB2YXIgdmFscyA9IE9iamVjdC5rZXlzKHZhbHVlcyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCB2YWxzLmxlbmd0aDsgaWkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHNlcmllcyA9IHZhbHNbaWldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNpbmdsZVZhbCA9IHZhbHVlc1tzZXJpZXNdO1xyXG4gICAgICAgICAgICAgICAgaXRlbVtzZXJpZXNdID0gc2luZ2xlVmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2VkKGV2LCBzZXR0aW5ncykge1xyXG4gICAgICAgIGlmICgoPGFueT5zZXR0aW5ncykuT25TZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgdGhpcy50aHJvdHRsYShcInNlbGNoYW5nZVwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYXhpcyA9IDxhbTRjaGFydHMuRGF0ZUF4aXM+ZXYudGFyZ2V0XHJcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZShheGlzLm1pblpvb21lZCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoYXhpcy5tYXhab29tZWQpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGluaXRpYWwgPSBheGlzLm1pbiA9PSBheGlzLm1pblpvb21lZCAmJiBheGlzLm1heCA9PSBheGlzLm1heFpvb21lZDtcclxuICAgICAgICAgICAgICAgICg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayh7IGZyb206IHN0YXJ0LCB0bzogZW5kLCBpbml0aWFsOiBpbml0aWFsIH0pO1xyXG4gICAgICAgICAgICB9LCAxNTApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NPdmVyKGhvdmVyZWRTZXJpZXM6IGFtNGNoYXJ0cy5MaW5lU2VyaWVzKSB7XHJcbiAgICAgICAgaG92ZXJlZFNlcmllcy50b0Zyb250KCk7XHJcbiAgICAgICAgbGV0IGZpbGwgPSBob3ZlcmVkU2VyaWVzLnN0YWNrZWQ7XHJcbiAgICAgICAgaG92ZXJlZFNlcmllcy5zZWdtZW50cy5lYWNoKChzZWdtZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHNlZ21lbnQuc2V0U3RhdGUoXCJob3ZlclwiKTtcclxuICAgICAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gdGhpcy5PcGFjaXR5T25TZWxlY3RlZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgIGhvdmVyZWRTZXJpZXMubGVnZW5kRGF0YUl0ZW0ubWFya2VyLmNoaWxkcmVuLmdldEluZGV4KDEpLmZpbGxPcGFjaXR5ID0gdGhpcy5PcGFjaXR5T25TZWxlY3RlZDtcclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnNlcmllcy5lYWNoKChzZXJpZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHNlcmllcyAhPSBob3ZlcmVkU2VyaWVzKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsbCA9IHNlcmllcy5zdGFja2VkO1xyXG4gICAgICAgICAgICAgICAgKDxhbTRjaGFydHMuTGluZVNlcmllcz5zZXJpZXMpLnNlZ21lbnRzLmVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50LnNldFN0YXRlKFwiZGltbWVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc091dCgpIHtcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2Uuc2VyaWVzLmVhY2goKHNlcmllcykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZmlsbCA9IHNlcmllcy5zdGFja2VkO1xyXG4gICAgICAgICAgICAoPGFtNGNoYXJ0cy5MaW5lU2VyaWVzPnNlcmllcykuc2VnbWVudHMuZWFjaCgoc2VnbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudC5zZXRTdGF0ZShcImRlZmF1bHRcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgIHNlcmllcy5sZWdlbmREYXRhSXRlbS5tYXJrZXIuY2hpbGRyZW4uZ2V0SW5kZXgoMSkuZmlsbE9wYWNpdHkgPSAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vKioqKioqKioqKioqKioqKioqKiogRnVuemlvbmUgZGkgdGhyb3R0bGluZyBwZXIgbm9uIHNwYW1tYXJlIHJpY2hpZXN0ZSBpbiBjYXNvIGRpIGFuaW1hemlvbmkgYXR0aXZhdGVcclxuICAgIC8vVE9ETzogc3Bvc3RhcmxhIGluIHVuIG1ldG9kbyBkaSB1dGlsaXTDoCAoZXNmYWVuemEvZXh0ZW5zaW9ucylcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGV4ZWN1dGlvblRpbWVyczogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSB0aHJvdHRsYShpZDogc3RyaW5nLCBmdW5jOiBGdW5jdGlvbiwgdGhyb3R0bGVUaW1lOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICAvL1NlIGhvIGxhIGZ1bnppb25lIGNoZSB2dW9sZSBlc2VndWlyZSByaXB1bGlzY28gcXVlbCB0aW1lb3V0XHJcbiAgICAgICAgaWYgKHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSlcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSk7XHJcblxyXG4gICAgICAgIC8vUmljcmVvIGlsIHRpbWVvdXQgcGVyIGVzZWd1aXJlIHF1ZWxsYSBmdW56aW9uZSBkb3BvIHRocm90dGxlVGltZSBtaWxsaXNlY29uZGlcclxuICAgICAgICB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBzZXRUaW1lb3V0KCgpID0+IHsgZnVuYygpOyB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBudWxsOyB9LCB0aHJvdHRsZVRpbWUpO1xyXG4gICAgfVxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqXHJcbn0iXX0=
|
|
@@ -1109,7 +1109,7 @@ class LineChartService {
|
|
|
1109
1109
|
series.strokeWidth = (_b = settings === null || settings === void 0 ? void 0 : settings.StrokeSize) !== null && _b !== void 0 ? _b : 1;
|
|
1110
1110
|
series.connect = !gapsAllowed;
|
|
1111
1111
|
series.minBulletDistance = 10;
|
|
1112
|
-
series.tooltipText = this.singleDataSet ? "" : "{name}: [bold]{valueY}[/]";
|
|
1112
|
+
series.tooltipText = this.singleDataSet ? "" : s.name ? "{name}: [bold]{valueY}[/]" : "[bold]{valueY}[/]";
|
|
1113
1113
|
series.tooltip.pointerOrientation = "vertical";
|
|
1114
1114
|
series.tooltip.background.fillOpacity = 0.5;
|
|
1115
1115
|
series.tooltip.label.padding(12, 12, 12, 12);
|
|
@@ -1148,7 +1148,7 @@ class LineChartService {
|
|
|
1148
1148
|
var text = "[bold]{dateX.formatDate()}[/]\n";
|
|
1149
1149
|
this.ChartInstance.series.each((item) => {
|
|
1150
1150
|
let uom = " [font-style: italic]" + series.dataFields.measureUnit || "" + "[/]";
|
|
1151
|
-
text += "[" + item.stroke.hex + "]●[/] " + item.name + ": [bold]{" + item.dataFields.valueY + "}[/]" + uom + "\n";
|
|
1151
|
+
text += "[" + item.stroke.hex + "]●[/] " + (item.name ? (item.name + ": ") : "") + "[bold]{" + item.dataFields.valueY + "}[/]" + uom + "\n";
|
|
1152
1152
|
});
|
|
1153
1153
|
return text;
|
|
1154
1154
|
});
|