igniteui-angular 11.1.45 → 11.1.46
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/igniteui-angular.umd.js +10 -8
- package/bundles/igniteui-angular.umd.js.map +1 -1
- package/bundles/igniteui-angular.umd.min.js +1 -1
- package/bundles/igniteui-angular.umd.min.js.map +1 -1
- package/esm2015/lib/directives/date-time-editor/date-time-editor.directive.js +7 -5
- package/fesm2015/igniteui-angular.js +6 -4
- package/fesm2015/igniteui-angular.js.map +1 -1
- package/igniteui-angular.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -151,10 +151,12 @@ export class IgxDateTimeEditorDirective extends IgxMaskDirective {
|
|
|
151
151
|
return this.maskParser.applyMask(null, this.maskOptions);
|
|
152
152
|
}
|
|
153
153
|
get targetDatePart() {
|
|
154
|
-
var _a;
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
154
|
+
var _a, _b, _c;
|
|
155
|
+
// V.K. May 16th, 2022 #11559 Get correct date part in shadow DOM
|
|
156
|
+
if (this.document.activeElement === this.nativeElement ||
|
|
157
|
+
((_b = (_a = this.document.activeElement) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.activeElement) === this.nativeElement) {
|
|
158
|
+
return (_c = this._inputDateParts
|
|
159
|
+
.find(p => p.start <= this.selectionStart && this.selectionStart <= p.end && p.type !== DatePart.Literal)) === null || _c === void 0 ? void 0 : _c.type;
|
|
158
160
|
}
|
|
159
161
|
else {
|
|
160
162
|
if (this._inputDateParts.some(p => p.type === DatePart.Date)) {
|
|
@@ -585,4 +587,4 @@ IgxDateTimeEditorModule.decorators = [
|
|
|
585
587
|
exports: [IgxDateTimeEditorDirective]
|
|
586
588
|
},] }
|
|
587
589
|
];
|
|
588
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWVkaXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy9kYXRlLXRpbWUtZWRpdG9yL2RhdGUtdGltZS1lZGl0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQzVCLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUM3RCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRXlDLGFBQWEsRUFBRSxpQkFBaUIsR0FDL0UsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbEUsT0FBTyxFQUNMLGNBQWMsRUFDZixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBNEMsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0YsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBU0gsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGdCQUFnQjtJQThMOUQsWUFDWSxRQUFtQixFQUNuQixVQUFzQixFQUN0QixVQUE4QixFQUNkLFNBQWMsRUFDYixPQUFZO1FBQ3ZDLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBTDlCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUs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SyxLQUFLLFNBQVMsQ0FBQyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2pGLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzs7O1lBMW1CRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsU0FBUyxFQUFFO29CQUNULEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO29CQUNwRixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7aUJBQ2pGO2FBQ0Y7OztZQW5EQyxTQUFTO1lBRFMsVUFBVTtZQVNyQixrQkFBa0I7NENBOE90QixNQUFNLFNBQUMsUUFBUTs0Q0FDZixNQUFNLFNBQUMsU0FBUzs7O3FCQXBMbEIsS0FBSzt1QkFrQkwsS0FBSzt1QkFxQkwsS0FBSzt5QkFjTCxLQUFLOzRCQVlMLEtBQUs7MEJBV0wsS0FBSyxTQUFDLG1CQUFtQjtvQkFzQnpCLEtBQUs7MEJBbUJMLE1BQU07K0JBV04sTUFBTTs7QUEwZFQsTUFBTSxPQUFPLHVCQUF1Qjs7O1lBSm5DLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztnQkFDMUMsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7YUFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlICovXG5pbXBvcnQge1xuICBEaXJlY3RpdmUsIElucHV0LCBFbGVtZW50UmVmLFxuICBSZW5kZXJlcjIsIE5nTW9kdWxlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBMT0NBTEVfSUQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgRG9DaGVja1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBWYWxpZGF0b3IsIEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElneE1hc2tEaXJlY3RpdmUgfSBmcm9tICcuLi9tYXNrL21hc2suZGlyZWN0aXZlJztcbmltcG9ydCB7IE1hc2tQYXJzaW5nU2VydmljZSB9IGZyb20gJy4uL21hc2svbWFzay1wYXJzaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgS0VZUyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHtcbiAgRGF0ZVBpY2tlclV0aWxcbn0gZnJvbSAnLi4vLi4vZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIudXRpbHMnO1xuaW1wb3J0IHsgSWd4RGF0ZVRpbWVFZGl0b3JFdmVudEFyZ3MsIERhdGVQYXJ0SW5mbywgRGF0ZVBhcnQgfSBmcm9tICcuL2RhdGUtdGltZS1lZGl0b3IuY29tbW9uJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBEYXRlIFRpbWUgRWRpdG9yIHByb3ZpZGVzIGEgZnVuY3Rpb25hbGl0eSB0byBpbnB1dCwgZWRpdCBhbmQgZm9ybWF0IGRhdGUgYW5kIHRpbWUuXG4gKlxuICogQGlneE1vZHVsZSBJZ3hEYXRlVGltZUVkaXRvck1vZHVsZVxuICpcbiAqIEBpZ3hQYXJlbnQgSWd4SW5wdXRHcm91cFxuICpcbiAqIEBpZ3hUaGVtZSBpZ3gtaW5wdXQtdGhlbWVcbiAqXG4gKiBAaWd4S2V5d29yZHMgZGF0ZSwgdGltZSwgZWRpdG9yXG4gKlxuICogQGlneEdyb3VwIFNjaGVkdWxpbmdcbiAqXG4gKiBAcmVtYXJrc1xuICpcbiAqIFRoZSBJZ25pdGUgVUkgRGF0ZSBUaW1lIEVkaXRvciBEaXJlY3RpdmUgbWFrZXMgaXQgZWFzeSBmb3IgZGV2ZWxvcGVycyB0byBtYW5pcHVsYXRlIGRhdGUvdGltZSB1c2VyIGlucHV0LlxuICogSXQgcmVxdWlyZXMgaW5wdXQgaW4gYSBzcGVjaWZpZWQgb3IgZGVmYXVsdCBpbnB1dCBmb3JtYXQgd2hpY2ggaXMgdmlzaWJsZSBpbiB0aGUgaW5wdXQgZWxlbWVudCBhcyBhIHBsYWNlaG9sZGVyLlxuICogSXQgYWxsb3dzIHRoZSBpbnB1dCBvZiBvbmx5IGRhdGUgKGV4OiAnZGQvTU0veXl5eScpLCBvbmx5IHRpbWUgKGV4OidISDptbSB0dCcpIG9yIGJvdGggYXQgb25jZSwgaWYgbmVlZGVkLlxuICogU3VwcG9ydHMgZGlzcGxheSBmb3JtYXQgdGhhdCBtYXkgZGlmZmVyIGZyb20gdGhlIGlucHV0IGZvcm1hdC5cbiAqIFByb3ZpZGVzIG1ldGhvZHMgdG8gaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYW55IHNwZWNpZmljL3RhcmdldGVkIGBEYXRlUGFydGAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxpZ3gtaW5wdXQtZ3JvdXA+XG4gKiAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlneElucHV0IFtpZ3hEYXRlVGltZUVkaXRvcl09XCInZGQvTU0veXl5eSdcIiBbZGlzcGxheUZvcm1hdF09XCInc2hvcnREYXRlJ1wiIFsobmdNb2RlbCldPVwiZGF0ZVwiLz5cbiAqIDwvaWd4LWlucHV0LWdyb3VwPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tpZ3hEYXRlVGltZUVkaXRvcl0nLFxuICBleHBvcnRBczogJ2lneERhdGVUaW1lRWRpdG9yJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IElneERhdGVUaW1lRWRpdG9yRGlyZWN0aXZlLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IElneERhdGVUaW1lRWRpdG9yRGlyZWN0aXZlLCBtdWx0aTogdHJ1ZSB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSWd4RGF0ZVRpbWVFZGl0b3JEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hNYXNrRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBEb0NoZWNrLCBWYWxpZGF0b3IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIExvY2FsZSBzZXR0aW5ncyB1c2VkIGZvciB2YWx1ZSBmb3JtYXR0aW5nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBVc2VzIEFuZ3VsYXIncyBgTE9DQUxFX0lEYCBieSBkZWZhdWx0LiBBZmZlY3RzIGJvdGggaW5wdXQgbWFzayBhbmQgZGlzcGxheSBmb3JtYXQgaWYgdGhvc2UgYXJlIG5vdCBzZXQuXG4gICAqIElmIGEgYGxvY2FsZWAgaXMgc2V0LCBpdCBtdXN0IGJlIHJlZ2lzdGVyZWQgdmlhIGByZWdpc3RlckxvY2FsZURhdGFgLlxuICAgKiBQbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2kxOG4jaTE4bi1waXBlcy5cbiAgICogSWYgaXQgaXMgbm90IHJlZ2lzdGVyZWQsIGBJbnRsYCB3aWxsIGJlIHVzZWQgZm9yIGZvcm1hdHRpbmcuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPGlucHV0IGlneERhdGVUaW1lRWRpdG9yIFtsb2NhbGVdPVwiJ2VuJ1wiPlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsb2NhbGU6IHN0cmluZztcblxuICAvKipcbiAgICogTWluaW11bSB2YWx1ZSByZXF1aXJlZCBmb3IgdGhlIGVkaXRvciB0byByZW1haW4gdmFsaWQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIGEgYHN0cmluZ2AgdmFsdWUgaXMgcGFzc2VkLCBpdCBtdXN0IGJlIGluIHRoZSBkZWZpbmVkIGlucHV0IGZvcm1hdC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgaHRtbFxuICAgKiA8aW5wdXQgaWd4RGF0ZVRpbWVFZGl0b3IgW21pblZhbHVlXT1cIm1pbkRhdGVcIj5cbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgZ2V0IG1pblZhbHVlKCk6IHN0cmluZyB8IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9taW5WYWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluVmFsdWUodmFsdWU6IHN0cmluZyB8IERhdGUpIHtcbiAgICB0aGlzLl9taW5WYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXhpbXVtIHZhbHVlIHJlcXVpcmVkIGZvciB0aGUgZWRpdG9yIHRvIHJlbWFpbiB2YWxpZC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSWYgYSBgc3RyaW5nYCB2YWx1ZSBpcyBwYXNzZWQgaW4sIGl0IG11c3QgYmUgaW4gdGhlIGRlZmluZWQgaW5wdXQgZm9ybWF0LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxpbnB1dCBpZ3hEYXRlVGltZUVkaXRvciBbbWF4VmFsdWVdPVwibWF4RGF0ZVwiPlxuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBnZXQgbWF4VmFsdWUoKTogc3RyaW5nIHwgRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX21heFZhbHVlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtYXhWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSkge1xuICAgIHRoaXMuX21heFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgaWYgdGhlIGN1cnJlbnRseSBzcHVuIGRhdGUgc2VnbWVudCBzaG91bGQgbG9vcCBvdmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxpbnB1dCBpZ3hEYXRlVGltZUVkaXRvciBbaXNTcGluTG9vcF09XCJmYWxzZVwiPlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc1NwaW5Mb29wID0gdHJ1ZTtcblxuICAvKipcbiAgICogU2V0IGJvdGggcHJlLWRlZmluZWQgZm9ybWF0IG9wdGlvbnMgc3VjaCBhcyBgc2hvcnREYXRlYCBhbmQgYGxvbmdEYXRlYCxcbiAgICogYXMgd2VsbCBhcyBjb25zdHJ1Y3RlZCBmb3JtYXQgc3RyaW5nIHVzaW5nIGNoYXJhY3RlcnMgc3VwcG9ydGVkIGJ5IGBEYXRlUGlwZWAsIGUuZy4gYEVFL01NL3l5eXlgLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxpbnB1dCBpZ3hEYXRlVGltZUVkaXRvciBbZGlzcGxheUZvcm1hdF09XCInc2hvcnREYXRlJ1wiPlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNwbGF5Rm9ybWF0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4cGVjdGVkIHVzZXIgaW5wdXQgZm9ybWF0IChhbmQgcGxhY2Vob2xkZXIpLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxpbnB1dCBbaWd4RGF0ZVRpbWVFZGl0b3JdPVwiJ2RkL01NL3l5eXknXCI+XG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KGBpZ3hEYXRlVGltZUVkaXRvcmApXG4gIHB1YmxpYyBzZXQgaW5wdXRGb3JtYXQodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fZm9ybWF0ID0gdmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IG1hc2sgPSAodGhpcy5pbnB1dEZvcm1hdCB8fCBEYXRlUGlja2VyVXRpbC5ERUZBVUxUX0lOUFVUX0ZPUk1BVClcbiAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoLyg/PVtedF0pW1xcd10vLCAnZycpLCAnMCcpO1xuICAgIHRoaXMubWFzayA9IG1hc2suaW5kZXhPZigndHQnKSAhPT0gLTEgPyBtYXNrLnJlcGxhY2UobmV3IFJlZ0V4cCgndHQnLCAnZycpLCAnTEwnKSA6IG1hc2s7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlucHV0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1hdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFZGl0b3IgdmFsdWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPGlucHV0IGlneERhdGVUaW1lRWRpdG9yIFt2YWx1ZV09XCJkYXRlXCI+XG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHZhbHVlKTtcbiAgICB0aGlzLnVwZGF0ZU1hc2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgZWRpdG9yJ3MgdmFsdWUgaGFzIGNoYW5nZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPGlucHV0IGlneERhdGVUaW1lRWRpdG9yICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlZCgkZXZlbnQpXCIvPlxuICAgKiBgYGBcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgZWRpdG9yIGlzIG5vdCB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2Ugb3Igd2hlbiB0aGUgZWRpdG9yJ3MgdmFsdWUgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgaHRtbFxuICAgKiA8aW5wdXQgaWd4RGF0ZVRpbWVFZGl0b3IgW21pblZhbHVlXT1cIm1pbkRhdGVcIiBbbWF4VmFsdWVdPVwibWF4RGF0ZVwiICh2YWxpZGF0aW9uRmFpbGVkKT1cIm9uVmFsaWRhdGlvbkZhaWxlZCgkZXZlbnQpXCIvPlxuICAgKiBgYGBcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdmFsaWRhdGlvbkZhaWxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SWd4RGF0ZVRpbWVFZGl0b3JFdmVudEFyZ3M+KCk7XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IERhdGU7XG4gIHByaXZhdGUgX2Zvcm1hdDogc3RyaW5nO1xuICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudDtcbiAgcHJpdmF0ZSBfaXNGb2N1c2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9pbnB1dEZvcm1hdDogc3RyaW5nO1xuICBwcml2YXRlIF9taW5WYWx1ZTogc3RyaW5nIHwgRGF0ZTtcbiAgcHJpdmF0ZSBfbWF4VmFsdWU6IHN0cmluZyB8IERhdGU7XG4gIHByaXZhdGUgX29sZFZhbHVlOiBEYXRlIHwgc3RyaW5nO1xuICBwcml2YXRlIF9pbnB1dERhdGVQYXJ0czogRGF0ZVBhcnRJbmZvW107XG4gIHByaXZhdGUgb25Ub3VjaENhbGxiYWNrOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgb25WYWxpZGF0b3JDaGFuZ2U6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgcHJpdmF0ZSBnZXQgZW1wdHlNYXNrKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWFza1BhcnNlci5hcHBseU1hc2sobnVsbCwgdGhpcy5tYXNrT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldCB0YXJnZXREYXRlUGFydCgpOiBEYXRlUGFydCB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXREYXRlUGFydHNcbiAgICAgICAgLmZpbmQocCA9PiBwLnN0YXJ0IDw9IHRoaXMuc2VsZWN0aW9uU3RhcnQgJiYgdGhpcy5zZWxlY3Rpb25TdGFydCA8PSBwLmVuZCAmJiBwLnR5cGUgIT09IERhdGVQYXJ0LkxpdGVyYWwpPy50eXBlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5faW5wdXREYXRlUGFydHMuc29tZShwID0+IHAudHlwZSA9PT0gRGF0ZVBhcnQuRGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIERhdGVQYXJ0LkRhdGU7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0RGF0ZVBhcnRzLnNvbWUocCA9PiBwLnR5cGUgPT09IERhdGVQYXJ0LkhvdXJzKSkge1xuICAgICAgICByZXR1cm4gRGF0ZVBhcnQuSG91cnM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaGFzRGF0ZVBhcnRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dERhdGVQYXJ0cy5zb21lKFxuICAgICAgcCA9PiBwLnR5cGUgPT09IERhdGVQYXJ0LkRhdGVcbiAgICAgICAgfHwgcC50eXBlID09PSBEYXRlUGFydC5Nb250aFxuICAgICAgICB8fCBwLnR5cGUgPT09IERhdGVQYXJ0LlllYXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaGFzVGltZVBhcnRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dERhdGVQYXJ0cy5zb21lKFxuICAgICAgcCA9PiBwLnR5cGUgPT09IERhdGVQYXJ0LkhvdXJzXG4gICAgICAgIHx8IHAudHlwZSA9PT0gRGF0ZVBhcnQuTWludXRlc1xuICAgICAgICB8fCBwLnR5cGUgPT09IERhdGVQYXJ0LlNlY29uZHMpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJvdGVjdGVkIG1hc2tQYXJzZXI6IE1hc2tQYXJzaW5nU2VydmljZSxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55LFxuICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIF9sb2NhbGU6IGFueSkge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYsIG1hc2tQYXJzZXIsIHJlbmRlcmVyKTtcbiAgICB0aGlzLmRvY3VtZW50ID0gdGhpcy5fZG9jdW1lbnQgYXMgRG9jdW1lbnQ7XG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLmxvY2FsZSB8fCB0aGlzLl9sb2NhbGU7XG4gIH1cblxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snaW5wdXRGb3JtYXQnXSB8fCBjaGFuZ2VzWydsb2NhbGUnXSkge1xuICAgICAgdGhpcy51cGRhdGVJbnB1dEZvcm1hdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbnB1dEZvcm1hdCAhPT0gdGhpcy5pbnB1dEZvcm1hdCkge1xuICAgICAgdGhpcy51cGRhdGVJbnB1dEZvcm1hdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbGVhciB0aGUgaW5wdXQgZWxlbWVudCB2YWx1ZS4gKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogSW5jcmVtZW50IHNwZWNpZmllZCBEYXRlUGFydC5cbiAgICpcbiAgICogQHBhcmFtIGRhdGVQYXJ0IFRoZSBvcHRpb25hbCBEYXRlUGFydCB0byBpbmNyZW1lbnQuIERlZmF1bHRzIHRvIERhdGUgb3IgSG91cnMod2hlbiBEYXRlIGlzIGFic2VudCBmcm9tIHRoZSBpbnB1dEZvcm1hdCAtIGV4OidISDptbScpLlxuICAgKi9cbiAgcHVibGljIGluY3JlbWVudChkYXRlUGFydD86IERhdGVQYXJ0KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0RGF0ZVBhcnQgPSB0aGlzLnRhcmdldERhdGVQYXJ0O1xuICAgIGlmICghdGFyZ2V0RGF0ZVBhcnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdWYWx1ZSA9IGRhdGVQYXJ0XG4gICAgICA/IHRoaXMuc3BpblZhbHVlKGRhdGVQYXJ0LCAxKVxuICAgICAgOiB0aGlzLnNwaW5WYWx1ZSh0YXJnZXREYXRlUGFydCwgMSk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSA/IG5ld1ZhbHVlIDogbmV3IERhdGUoKSk7XG4gIH1cblxuICAvKipcbiAgICogRGVjcmVtZW50IHNwZWNpZmllZCBEYXRlUGFydC5cbiAgICpcbiAgICogQHBhcmFtIGRhdGVQYXJ0IFRoZSBvcHRpb25hbCBEYXRlUGFydCB0byBkZWNyZW1lbnQuIERlZmF1bHRzIHRvIERhdGUgb3IgSG91cnMod2hlbiBEYXRlIGlzIGFic2VudCBmcm9tIHRoZSBpbnB1dEZvcm1hdCAtIGV4OidISDptbScpLlxuICAgKi9cbiAgcHVibGljIGRlY3JlbWVudChkYXRlUGFydD86IERhdGVQYXJ0KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0RGF0ZVBhcnQgPSB0aGlzLnRhcmdldERhdGVQYXJ0O1xuICAgIGlmICghdGFyZ2V0RGF0ZVBhcnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdWYWx1ZSA9IGRhdGVQYXJ0XG4gICAgICA/IHRoaXMuc3BpblZhbHVlKGRhdGVQYXJ0LCAtMSlcbiAgICAgIDogdGhpcy5zcGluVmFsdWUodGFyZ2V0RGF0ZVBhcnQsIC0xKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKG5ld1ZhbHVlID8gbmV3VmFsdWUgOiBuZXcgRGF0ZSgpKTtcbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZU1hc2soKTtcbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghdGhpcy5pbnB1dElzQ29tcGxldGUoKSB8fCAhY29udHJvbC52YWx1ZSkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IHRydWUgfTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXhWYWx1ZUFzRGF0ZSA9IHRoaXMuaXNEYXRlKHRoaXMubWF4VmFsdWUpID8gdGhpcy5tYXhWYWx1ZSA6IHRoaXMucGFyc2VEYXRlKHRoaXMubWF4VmFsdWUpO1xuICAgIGNvbnN0IG1pblZhbHVlQXNEYXRlID0gdGhpcy5pc0RhdGUodGhpcy5taW5WYWx1ZSkgPyB0aGlzLm1pblZhbHVlIDogdGhpcy5wYXJzZURhdGUodGhpcy5taW5WYWx1ZSk7XG4gICAgaWYgKG1pblZhbHVlQXNEYXRlXG4gICAgICAmJiBEYXRlUGlja2VyVXRpbC5sZXNzVGhhbk1pblZhbHVlKFxuICAgICAgICBjb250cm9sLnZhbHVlLCBtaW5WYWx1ZUFzRGF0ZSwgdGhpcy5oYXNUaW1lUGFydHMsIHRoaXMuaGFzRGF0ZVBhcnRzKSkge1xuICAgICAgcmV0dXJuIHsgbWluVmFsdWU6IHRydWUgfTtcbiAgICB9XG4gICAgaWYgKG1heFZhbHVlQXNEYXRlXG4gICAgICAmJiBEYXRlUGlja2VyVXRpbC5ncmVhdGVyVGhhbk1heFZhbHVlKFxuICAgICAgICBjb250cm9sLnZhbHVlLCBtYXhWYWx1ZUFzRGF0ZSwgdGhpcy5oYXNUaW1lUGFydHMsIHRoaXMuaGFzRGF0ZVBhcnRzKSkge1xuICAgICAgcmV0dXJuIHsgbWF4VmFsdWU6IHRydWUgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT8oZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XG59XG5cbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gdGhpcy5vblRvdWNoQ2FsbGJhY2sgPSBmbjtcbn1cblxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHsgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb25JbnB1dENoYW5nZWQoKSB7XG4gICAgc3VwZXIub25JbnB1dENoYW5nZWQoKTtcbiAgICBpZiAodGhpcy5pbnB1dElzQ29tcGxldGUoKSkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0ZSA9IHRoaXMucGFyc2VEYXRlKHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkRGF0ZShwYXJzZWREYXRlKSkge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHBhcnNlZERhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLnZhbHVlICYmIG5ldyBEYXRlKHRoaXMudmFsdWUuZ2V0VGltZSgpKTtcbiAgICAgICAgY29uc3QgYXJncyA9IHsgb2xkVmFsdWUsIG5ld1ZhbHVlOiBwYXJzZWREYXRlLCB1c2VySW5wdXQ6IHRoaXMuaW5wdXRWYWx1ZSB9O1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQuZW1pdChhcmdzKTtcbiAgICAgICAgaWYgKGFyZ3MubmV3VmFsdWU/LmdldFRpbWUgJiYgYXJncy5uZXdWYWx1ZS5nZXRUaW1lKCkgIT09IG9sZFZhbHVlLmdldFRpbWUoKSkge1xuICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoYXJncy5uZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgc3VwZXIub25LZXlEb3duKGV2ZW50KTtcbiAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZUy5VUF9BUlJPVyB8fCBldmVudC5rZXkgPT09IEtFWVMuVVBfQVJST1dfSUUgfHxcbiAgICAgIGV2ZW50LmtleSA9PT0gS0VZUy5ET1dOX0FSUk9XIHx8IGV2ZW50LmtleSA9PT0gS0VZUy5ET1dOX0FSUk9XX0lFKSB7XG4gICAgICB0aGlzLnNwaW4oZXZlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LmtleSA9PT0gS0VZUy5TRU1JQ09MT04pIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUobmV3IERhdGUoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5tb3ZlQ3Vyc29yKGV2ZW50KTtcbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb25Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLl9pc0ZvY3VzZWQgPSB0cnVlO1xuICAgIHRoaXMub25Ub3VjaENhbGxiYWNrKCk7XG4gICAgdGhpcy51cGRhdGVNYXNrKCk7XG4gICAgc3VwZXIub25Gb2N1cygpO1xuICB9XG5cbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gIHB1YmxpYyBvbkJsdXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2lzRm9jdXNlZCA9IGZhbHNlO1xuICAgIGlmICghdGhpcy5pbnB1dElzQ29tcGxldGUoKSAmJiB0aGlzLmlucHV0VmFsdWUgIT09IHRoaXMuZW1wdHlNYXNrKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMucGFyc2VEYXRlKHRoaXMuaW5wdXRWYWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZU1hc2soKTtcbiAgICB9XG5cbiAgICBzdXBlci5vbkJsdXIodmFsdWUpO1xuICB9XG5cbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gIHB1YmxpYyB1cGRhdGVNYXNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0ZvY3VzZWQpIHtcbiAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAvLyBzdG9yZSB0aGUgY3Vyc29yIHBvc2l0aW9uIGFzIGl0IHdpbGwgYmUgbW92ZWQgZHVyaW5nIG1hc2tpbmdcbiAgICAgIGNvbnN0IGN1cnNvciA9IHRoaXMuc2VsZWN0aW9uRW5kO1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5nZXRNYXNrZWRWYWx1ZSgpO1xuICAgICAgdGhpcy5zZXRTZWxlY3Rpb25SYW5nZShjdXJzb3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMudmFsdWUgfHwgIXRoaXMuaXNWYWxpZERhdGUodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuZGlzcGxheUZvcm1hdCB8fCB0aGlzLmlucHV0Rm9ybWF0O1xuICAgICAgaWYgKGZvcm1hdCkge1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSBEYXRlUGlja2VyVXRpbC5mb3JtYXREYXRlKHRoaXMudmFsdWUsIGZvcm1hdC5yZXBsYWNlKCd0dCcsICdhYScpLCB0aGlzLmxvY2FsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUT0RPOiBmb3JtYXR0ZXIgZnVuY3Rpb24/XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMudmFsdWUudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiBtb3ZlIHBhcnNlRGF0ZSB0byB1dGlsc1xuICBwdWJsaWMgcGFyc2VEYXRlKHZhbDogc3RyaW5nKTogRGF0ZSB8IG51bGwge1xuICAgIGlmICghdmFsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gRGF0ZVBpY2tlclV0aWwucGFyc2VWYWx1ZUZyb21NYXNrKHZhbCwgdGhpcy5faW5wdXREYXRlUGFydHMsIHRoaXMucHJvbXB0Q2hhcik7XG4gIH1cblxuICBwcml2YXRlIGdldE1hc2tlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgbGV0IG1hc2sgPSB0aGlzLmVtcHR5TWFzaztcbiAgICBmb3IgKGNvbnN0IHBhcnQgb2YgdGhpcy5faW5wdXREYXRlUGFydHMpIHtcbiAgICAgICAgaWYgKHBhcnQudHlwZSA9PT0gRGF0ZVBhcnQuTGl0ZXJhbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIGNvbnN0IHRhcmdldFZhbHVlID0gdGhpcy5nZXRQYXJ0VmFsdWUocGFydCwgcGFydC5mb3JtYXQubGVuZ3RoKTtcbiAgICAgIG1hc2sgPSB0aGlzLm1hc2tQYXJzZXIucmVwbGFjZUluTWFzayhtYXNrLCB0YXJnZXRWYWx1ZSwgdGhpcy5tYXNrT3B0aW9ucywgcGFydC5zdGFydCwgcGFydC5lbmQpLnZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBtYXNrO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbnB1dEZvcm1hdCgpOiB2b2lkIHtcbiAgICBjb25zdCBkZWZQbGFjZWhvbGRlciA9IHRoaXMuaW5wdXRGb3JtYXQgfHwgRGF0ZVBpY2tlclV0aWwuZ2V0RGVmYXVsdElucHV0Rm9ybWF0KHRoaXMubG9jYWxlKTtcbiAgICB0aGlzLl9pbnB1dERhdGVQYXJ0cyA9IERhdGVQaWNrZXJVdGlsLnBhcnNlRGF0ZVRpbWVGb3JtYXQodGhpcy5pbnB1dEZvcm1hdCk7XG4gICAgdGhpcy5pbnB1dEZvcm1hdCA9IHRoaXMuX2lucHV0RGF0ZVBhcnRzLm1hcChwID0+IHAuZm9ybWF0KS5qb2luKCcnKTtcbiAgICBpZiAoIXRoaXMubmF0aXZlRWxlbWVudC5wbGFjZWhvbGRlciB8fCB0aGlzLl9pbnB1dEZvcm1hdCAhPT0gdGhpcy5pbnB1dEZvcm1hdCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCAncGxhY2Vob2xkZXInLCBkZWZQbGFjZWhvbGRlcik7XG4gICAgfVxuICAgIC8vIFRPRE86IGZpbGwgaW4gcGFydGlhbCBkYXRlcz9cbiAgICB0aGlzLnVwZGF0ZU1hc2soKTtcbiAgICB0aGlzLl9pbnB1dEZvcm1hdCA9IHRoaXMuaW5wdXRGb3JtYXQ7XG4gIH1cblxuICAvLyBUT0RPOiBtb3ZlIGlzRGF0ZSB0byB1dGlsc1xuICBwcml2YXRlIGlzRGF0ZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgRGF0ZSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWx1ZUluUmFuZ2UodmFsdWU6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgbWF4VmFsdWVBc0RhdGUgPSB0aGlzLmlzRGF0ZSh0aGlzLm1heFZhbHVlKSA/IHRoaXMubWF4VmFsdWUgOiB0aGlzLnBhcnNlRGF0ZSh0aGlzLm1heFZhbHVlKTtcbiAgICBjb25zdCBtaW5WYWx1ZUFzRGF0ZSA9IHRoaXMuaXNEYXRlKHRoaXMubWluVmFsdWUpID8gdGhpcy5taW5WYWx1ZSA6IHRoaXMucGFyc2VEYXRlKHRoaXMubWluVmFsdWUpO1xuICAgIGlmIChtaW5WYWx1ZUFzRGF0ZVxuICAgICAgJiYgRGF0ZVBpY2tlclV0aWwubGVzc1RoYW5NaW5WYWx1ZShcbiAgICAgICAgdmFsdWUsIG1pblZhbHVlQXNEYXRlLCB0aGlzLmhhc1RpbWVQYXJ0cywgdGhpcy5oYXNEYXRlUGFydHMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChtYXhWYWx1ZUFzRGF0ZVxuICAgICAgJiYgRGF0ZVBpY2tlclV0aWwuZ3JlYXRlclRoYW5NYXhWYWx1ZShcbiAgICAgICAgdmFsdWUsIG1heFZhbHVlQXNEYXRlLCB0aGlzLmhhc1RpbWVQYXJ0cywgdGhpcy5oYXNEYXRlUGFydHMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIHNwaW5WYWx1ZShkYXRlUGFydDogRGF0ZVBhcnQsIGRlbHRhOiBudW1iZXIpOiBEYXRlIHtcbiAgICBpZiAoIXRoaXMudmFsdWUgfHwgIXRoaXMuaXNWYWxpZERhdGUodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh0aGlzLnZhbHVlLmdldFRpbWUoKSk7XG4gICAgc3dpdGNoIChkYXRlUGFydCkge1xuICAgICAgY2FzZSBEYXRlUGFydC5EYXRlOlxuICAgICAgICBEYXRlUGlja2VyVXRpbC5zcGluRGF0ZShkZWx0YSwgbmV3RGF0ZSwgdGhpcy5pc1NwaW5Mb29wKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERhdGVQYXJ0Lk1vbnRoOlxuICAgICAgICBEYXRlUGlja2VyVXRpbC5zcGluTW9udGgoZGVsdGEsIG5ld0RhdGUsIHRoaXMuaXNTcGluTG9vcCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYXRlUGFydC5ZZWFyOlxuICAgICAgICBEYXRlUGlja2VyVXRpbC5zcGluWWVhcihkZWx0YSwgbmV3RGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYXRlUGFydC5Ib3VyczpcbiAgICAgICAgRGF0ZVBpY2tlclV0aWwuc3BpbkhvdXJzKGRlbHRhLCBuZXdEYXRlLCB0aGlzLmlzU3Bpbkxvb3ApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGF0ZVBhcnQuTWludXRlczpcbiAgICAgICAgRGF0ZVBpY2tlclV0aWwuc3Bpbk1pbnV0ZXMoZGVsdGEsIG5ld0RhdGUsIHRoaXMuaXNTcGluTG9vcCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYXRlUGFydC5TZWNvbmRzOlxuICAgICAgICBEYXRlUGlja2VyVXRpbC5zcGluU2Vjb25kcyhkZWx0YSwgbmV3RGF0ZSwgdGhpcy5pc1NwaW5Mb29wKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERhdGVQYXJ0LkFtUG06XG4gICAgICAgIGNvbnN0IGZvcm1hdFBhcnQgPSB0aGlzLl9pbnB1dERhdGVQYXJ0cy5maW5kKGRwID0+IGRwLnR5cGUgPT09IERhdGVQYXJ0LkFtUG0pO1xuICAgICAgICBjb25zdCBhbVBtRnJvbU1hc2sgPSB0aGlzLmlucHV0VmFsdWUuc3Vic3RyaW5nKGZvcm1hdFBhcnQuc3RhcnQsIGZvcm1hdFBhcnQuZW5kKTtcbiAgICAgICAgcmV0dXJuIERhdGVQaWNrZXJVdGlsLnNwaW5BbVBtKG5ld0RhdGUsIHRoaXMudmFsdWUsIGFtUG1Gcm9tTWFzayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0RhdGU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZhbHVlKG5ld0RhdGU6IERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLl9vbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgdGhpcy52YWx1ZSA9IG5ld0RhdGU7XG5cbiAgICBpZiAodGhpcy52YWx1ZSAmJiAhdGhpcy52YWx1ZUluUmFuZ2UodGhpcy52YWx1ZSkpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZC5lbWl0KHsgb2xkVmFsdWU6IHRoaXMuX29sZFZhbHVlLCBuZXdWYWx1ZTogdGhpcy52YWx1ZSwgdXNlcklucHV0OiB0aGlzLmlucHV0VmFsdWUgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlucHV0SXNDb21wbGV0ZSgpIHx8IHRoaXMuaW5wdXRWYWx1ZSA9PT0gdGhpcy5lbXB0eU1hc2spIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvVHdlbHZlSG91ckZvcm1hdCh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgaG91ciA9IHBhcnNlSW50KHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLnByb21wdENoYXIsICdnJyksICcwJyksIDEwKTtcbiAgICBpZiAoaG91ciA+IDEyKSB7XG4gICAgICBob3VyIC09IDEyO1xuICAgIH0gZWxzZSBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgaG91ciA9IDEyO1xuICAgIH1cblxuICAgIHJldHVybiBob3VyO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJ0VmFsdWUoZGF0ZVBhcnRJbmZvOiBEYXRlUGFydEluZm8sIHBhcnRMZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IG1hc2tlZFZhbHVlO1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gZGF0ZVBhcnRJbmZvLnR5cGU7XG4gICAgc3dpdGNoIChkYXRlUGFydCkge1xuICAgICAgY2FzZSBEYXRlUGFydC5EYXRlOlxuICAgICAgICBtYXNrZWRWYWx1ZSA9IHRoaXMudmFsdWUuZ2V0RGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGF0ZVBhcnQuTW9udGg6XG4gICAgICAgIC8vIG1vbnRocyBhcmUgemVybyBiYXNlZFxuICAgICAgICBtYXNrZWRWYWx1ZSA9IHRoaXMudmFsdWUuZ2V0TW9udGgoKSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYXRlUGFydC5ZZWFyOlxuICAgICAgICBpZiAocGFydExlbmd0aCA9PT0gMikge1xuICAgICAgICAgIG1hc2tlZFZhbHVlID0gdGhpcy5wcmVwZW5kVmFsdWUoXG4gICAgICAgICAgICBwYXJzZUludCh0aGlzLnZhbHVlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKS5zbGljZSgtMiksIDEwKSwgcGFydExlbmd0aCwgJzAnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXNrZWRWYWx1ZSA9IHRoaXMudmFsdWUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGF0ZVBhcnQuSG91cnM6XG4gICAgICAgIGlmIChkYXRlUGFydEluZm8uZm9ybWF0LmluZGV4T2YoJ2gnKSAhPT0gLTEpIHtcbiAgICAgICAgICBtYXNrZWRWYWx1ZSA9IHRoaXMucHJlcGVuZFZhbHVlKFxuICAgICAgICAgICAgdGhpcy50b1R3ZWx2ZUhvdXJGb3JtYXQodGhpcy52YWx1ZS5nZXRIb3VycygpLnRvU3RyaW5nKCkpLCBwYXJ0TGVuZ3RoLCAnMCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hc2tlZFZhbHVlID0gdGhpcy52YWx1ZS5nZXRIb3VycygpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYXRlUGFydC5NaW51dGVzOlxuICAgICAgICBtYXNrZWRWYWx1ZSA9IHRoaXMudmFsdWUuZ2V0TWludXRlcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGF0ZVBhcnQuU2Vjb25kczpcbiAgICAgICAgbWFza2VkVmFsdWUgPSB0aGlzLnZhbHVlLmdldFNlY29uZHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERhdGVQYXJ0LkFtUG06XG4gICAgICAgIG1hc2tlZFZhbHVlID0gdGhpcy52YWx1ZS5nZXRIb3VycygpID49IDEyID8gJ1BNJyA6ICdBTSc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChkYXRlUGFydEluZm8udHlwZSAhPT0gRGF0ZVBhcnQuQW1QbSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJlcGVuZFZhbHVlKG1hc2tlZFZhbHVlLCBwYXJ0TGVuZ3RoLCAnMCcpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXNrZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGVuZFZhbHVlKHZhbHVlOiBudW1iZXIsIHBhcnRMZW5ndGg6IG51bWJlciwgcHJlcGVuZENoYXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChwcmVwZW5kQ2hhciArIHZhbHVlLnRvU3RyaW5nKCkpLnNsaWNlKC1wYXJ0TGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3BpbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgS0VZUy5VUF9BUlJPVzpcbiAgICAgIGNhc2UgS0VZUy5VUF9BUlJPV19JRTpcbiAgICAgICAgdGhpcy5pbmNyZW1lbnQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtFWVMuRE9XTl9BUlJPVzpcbiAgICAgIGNhc2UgS0VZUy5ET1dOX0FSUk9XX0lFOlxuICAgICAgICB0aGlzLmRlY3JlbWVudCgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlucHV0SXNDb21wbGV0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFZhbHVlLmluZGV4T2YodGhpcy5wcm9tcHRDaGFyKSA9PT0gLTE7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWREYXRlKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGF0ZSAmJiBkYXRlLmdldFRpbWUgJiYgIWlzTmFOKGRhdGUuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUN1cnNvcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSBLRVlTLkxFRlRfQVJST1c6XG4gICAgICBjYXNlIEtFWVMuTEVGVF9BUlJPV19JRTpcbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5nZXROZXdQb3NpdGlvbih2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLRVlTLlJJR0hUX0FSUk9XOlxuICAgICAgY2FzZSBLRVlTLlJJR0hUX0FSUk9XX0lFOlxuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLmdldE5ld1Bvc2l0aW9uKHZhbHVlLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgdGhlIGN1cnNvciBpbiBhIHNwZWNpZmljIGRpcmVjdGlvbiB1bnRpbCBpdCByZWFjaGVzIGEgZGF0ZS90aW1lIHNlcGFyYXRvci5cbiAgICogVGhlbiByZXR1cm4gaXRzIGluZGV4LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyBpdCBvcGVyYXRlcyBvbi5cbiAgICogQHBhcmFtIGRpcmVjdGlvbiAwIGlzIGxlZnQsIDEgaXMgcmlnaHQuIERlZmF1bHQgaXMgMC5cbiAgICovXG4gIHByaXZhdGUgZ2V0TmV3UG9zaXRpb24odmFsdWU6IHN0cmluZywgZGlyZWN0aW9uID0gMCk6IG51bWJlciB7XG4gICAgY29uc3QgbGl0ZXJhbHMgPSB0aGlzLl9pbnB1dERhdGVQYXJ0cy5maWx0ZXIocCA9PiBwLnR5cGUgPT09IERhdGVQYXJ0LkxpdGVyYWwpO1xuICAgIGxldCBjdXJzb3JQb3MgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xuICAgIGlmICghZGlyZWN0aW9uKSB7XG4gICAgICBkbyB7XG4gICAgICAgIGN1cnNvclBvcyA9IGN1cnNvclBvcyA+IDAgPyAtLWN1cnNvclBvcyA6IGN1cnNvclBvcztcbiAgICAgIH0gd2hpbGUgKCFsaXRlcmFscy5zb21lKGwgPT4gbC5lbmQgPT09IGN1cnNvclBvcykgJiYgY3Vyc29yUG9zID4gMCk7XG4gICAgICByZXR1cm4gY3Vyc29yUG9zO1xuICAgIH0gZWxzZSB7XG4gICAgICBkbyB7XG4gICAgICAgIGN1cnNvclBvcysrO1xuICAgICAgfSB3aGlsZSAoIWxpdGVyYWxzLnNvbWUobCA9PiBsLnN0YXJ0ID09PSBjdXJzb3JQb3MpICYmIGN1cnNvclBvcyA8IHZhbHVlLmxlbmd0aCk7XG4gICAgICByZXR1cm4gY3Vyc29yUG9zO1xuICAgIH1cbiAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtJZ3hEYXRlVGltZUVkaXRvckRpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtJZ3hEYXRlVGltZUVkaXRvckRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4RGF0ZVRpbWVFZGl0b3JNb2R1bGUgeyB9XG4iXX0=
|
|
590
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWVkaXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy9kYXRlLXRpbWUtZWRpdG9yL2RhdGUtdGltZS1lZGl0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQzVCLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUM3RCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRXlDLGFBQWEsRUFBRSxpQkFBaUIsR0FDL0UsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbEUsT0FBTyxFQUNMLGNBQWMsRUFDZixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBNEMsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0YsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBU0gsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGdCQUFnQjtJQWdNOUQsWUFDWSxRQUFtQixFQUNuQixVQUFzQixFQUN0QixVQUE4QixFQUNkLFNBQWMsRUFDYixPQUFZO1FBQ3ZDLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBTDlCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUs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RztnQkFDRCxTQUFTLEVBQUUsQ0FBQzthQUNiLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNqRixPQUFPLFNBQVMsQ0FBQztTQUNsQjtJQUNILENBQUM7OztZQTVtQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFNBQVMsRUFBRTtvQkFDVCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsMEJBQTBCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtvQkFDcEYsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2lCQUNqRjthQUNGOzs7WUFuREMsU0FBUztZQURTLFVBQVU7WUFTckIsa0JBQWtCOzRDQWdQdEIsTUFBTSxTQUFDLFFBQVE7NENBQ2YsTUFBTSxTQUFDLFNBQVM7OztxQkF0TGxCLEtBQUs7dUJBa0JMLEtBQUs7dUJBcUJMLEtBQUs7eUJBY0wsS0FBSzs0QkFZTCxLQUFLOzBCQVdMLEtBQUssU0FBQyxtQkFBbUI7b0JBc0J6QixLQUFLOzBCQW1CTCxNQUFNOytCQVdOLE1BQU07O0FBNGRULE1BQU0sT0FBTyx1QkFBdUI7OztZQUpuQyxRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7Z0JBQzFDLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2FBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWNvbmZsaWN0aW5nLWxpZmVjeWNsZSAqL1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLCBJbnB1dCwgRWxlbWVudFJlZixcbiAgUmVuZGVyZXIyLCBOZ01vZHVsZSwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgTE9DQUxFX0lELCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIERvQ2hlY2tcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgVmFsaWRhdG9yLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJZ3hNYXNrRGlyZWN0aXZlIH0gZnJvbSAnLi4vbWFzay9tYXNrLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNYXNrUGFyc2luZ1NlcnZpY2UgfSBmcm9tICcuLi9tYXNrL21hc2stcGFyc2luZy5zZXJ2aWNlJztcbmltcG9ydCB7IEtFWVMgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7XG4gIERhdGVQaWNrZXJVdGlsXG59IGZyb20gJy4uLy4uL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLnV0aWxzJztcbmltcG9ydCB7IElneERhdGVUaW1lRWRpdG9yRXZlbnRBcmdzLCBEYXRlUGFydEluZm8sIERhdGVQYXJ0IH0gZnJvbSAnLi9kYXRlLXRpbWUtZWRpdG9yLmNvbW1vbic7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogRGF0ZSBUaW1lIEVkaXRvciBwcm92aWRlcyBhIGZ1bmN0aW9uYWxpdHkgdG8gaW5wdXQsIGVkaXQgYW5kIGZvcm1hdCBkYXRlIGFuZCB0aW1lLlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4RGF0ZVRpbWVFZGl0b3JNb2R1bGVcbiAqXG4gKiBAaWd4UGFyZW50IElneElucHV0R3JvdXBcbiAqXG4gKiBAaWd4VGhlbWUgaWd4LWlucHV0LXRoZW1lXG4gKlxuICogQGlneEtleXdvcmRzIGRhdGUsIHRpbWUsIGVkaXRvclxuICpcbiAqIEBpZ3hHcm91cCBTY2hlZHVsaW5nXG4gKlxuICogQHJlbWFya3NcbiAqXG4gKiBUaGUgSWduaXRlIFVJIERhdGUgVGltZSBFZGl0b3IgRGlyZWN0aXZlIG1ha2VzIGl0IGVhc3kgZm9yIGRldmVsb3BlcnMgdG8gbWFuaXB1bGF0ZSBkYXRlL3RpbWUgdXNlciBpbnB1dC5cbiAqIEl0IHJlcXVpcmVzIGlucHV0IGluIGEgc3BlY2lmaWVkIG9yIGRlZmF1bHQgaW5wdXQgZm9ybWF0IHdoaWNoIGlzIHZpc2libGUgaW4gdGhlIGlucHV0IGVsZW1lbnQgYXMgYSBwbGFjZWhvbGRlci5cbiAqIEl0IGFsbG93cyB0aGUgaW5wdXQgb2Ygb25seSBkYXRlIChleDogJ2RkL01NL3l5eXknKSwgb25seSB0aW1lIChleDonSEg6bW0gdHQnKSBvciBib3RoIGF0IG9uY2UsIGlmIG5lZWRlZC5cbiAqIFN1cHBvcnRzIGRpc3BsYXkgZm9ybWF0IHRoYXQgbWF5IGRpZmZlciBmcm9tIHRoZSBpbnB1dCBmb3JtYXQuXG4gKiBQcm92aWRlcyBtZXRob2RzIHRvIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGFueSBzcGVjaWZpYy90YXJnZXRlZCBgRGF0ZVBhcnRgLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LWlucHV0LWdyb3VwPlxuICogICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZ3hJbnB1dCBbaWd4RGF0ZVRpbWVFZGl0b3JdPVwiJ2RkL01NL3l5eXknXCIgW2Rpc3BsYXlGb3JtYXRdPVwiJ3Nob3J0RGF0ZSdcIiBbKG5nTW9kZWwpXT1cImRhdGVcIi8+XG4gKiA8L2lneC1pbnB1dC1ncm91cD5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaWd4RGF0ZVRpbWVFZGl0b3JdJyxcbiAgZXhwb3J0QXM6ICdpZ3hEYXRlVGltZUVkaXRvcicsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBJZ3hEYXRlVGltZUVkaXRvckRpcmVjdGl2ZSwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBJZ3hEYXRlVGltZUVkaXRvckRpcmVjdGl2ZSwgbXVsdGk6IHRydWUgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIElneERhdGVUaW1lRWRpdG9yRGlyZWN0aXZlIGV4dGVuZHMgSWd4TWFza0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgRG9DaGVjaywgVmFsaWRhdG9yLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8qKlxuICAgKiBMb2NhbGUgc2V0dGluZ3MgdXNlZCBmb3IgdmFsdWUgZm9ybWF0dGluZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVXNlcyBBbmd1bGFyJ3MgYExPQ0FMRV9JRGAgYnkgZGVmYXVsdC4gQWZmZWN0cyBib3RoIGlucHV0IG1hc2sgYW5kIGRpc3BsYXkgZm9ybWF0IGlmIHRob3NlIGFyZSBub3Qgc2V0LlxuICAgKiBJZiBhIGBsb2NhbGVgIGlzIHNldCwgaXQgbXVzdCBiZSByZWdpc3RlcmVkIHZpYSBgcmVnaXN0ZXJMb2NhbGVEYXRhYC5cbiAgICogUGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9pMThuI2kxOG4tcGlwZXMuXG4gICAqIElmIGl0IGlzIG5vdCByZWdpc3RlcmVkLCBgSW50bGAgd2lsbCBiZSB1c2VkIGZvciBmb3JtYXR0aW5nLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxpbnB1dCBpZ3hEYXRlVGltZUVkaXRvciBbbG9jYWxlXT1cIidlbidcIj5cbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbG9jYWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gdmFsdWUgcmVxdWlyZWQgZm9yIHRoZSBlZGl0b3IgdG8gcmVtYWluIHZhbGlkLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiBhIGBzdHJpbmdgIHZhbHVlIGlzIHBhc3NlZCwgaXQgbXVzdCBiZSBpbiB0aGUgZGVmaW5lZCBpbnB1dCBmb3JtYXQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPGlucHV0IGlneERhdGVUaW1lRWRpdG9yIFttaW5WYWx1ZV09XCJtaW5EYXRlXCI+XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGdldCBtaW5WYWx1ZSgpOiBzdHJpbmcgfCBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fbWluVmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1pblZhbHVlKHZhbHVlOiBzdHJpbmcgfCBEYXRlKSB7XG4gICAgdGhpcy5fbWluVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogTWF4aW11bSB2YWx1ZSByZXF1aXJlZCBmb3IgdGhlIGVkaXRvciB0byByZW1haW4gdmFsaWQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIGEgYHN0cmluZ2AgdmFsdWUgaXMgcGFzc2VkIGluLCBpdCBtdXN0IGJlIGluIHRoZSBkZWZpbmVkIGlucHV0IGZvcm1hdC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgaHRtbFxuICAgKiA8aW5wdXQgaWd4RGF0ZVRpbWVFZGl0b3IgW21heFZhbHVlXT1cIm1heERhdGVcIj5cbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgZ2V0IG1heFZhbHVlKCk6IHN0cmluZyB8IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9tYXhWYWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWF4VmFsdWUodmFsdWU6IHN0cmluZyB8IERhdGUpIHtcbiAgICB0aGlzLl9tYXhWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGlmIHRoZSBjdXJyZW50bHkgc3B1biBkYXRlIHNlZ21lbnQgc2hvdWxkIGxvb3Agb3Zlci5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgaHRtbFxuICAgKiA8aW5wdXQgaWd4RGF0ZVRpbWVFZGl0b3IgW2lzU3Bpbkxvb3BdPVwiZmFsc2VcIj5cbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaXNTcGluTG9vcCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFNldCBib3RoIHByZS1kZWZpbmVkIGZvcm1hdCBvcHRpb25zIHN1Y2ggYXMgYHNob3J0RGF0ZWAgYW5kIGBsb25nRGF0ZWAsXG4gICAqIGFzIHdlbGwgYXMgY29uc3RydWN0ZWQgZm9ybWF0IHN0cmluZyB1c2luZyBjaGFyYWN0ZXJzIHN1cHBvcnRlZCBieSBgRGF0ZVBpcGVgLCBlLmcuIGBFRS9NTS95eXl5YC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgaHRtbFxuICAgKiA8aW5wdXQgaWd4RGF0ZVRpbWVFZGl0b3IgW2Rpc3BsYXlGb3JtYXRdPVwiJ3Nob3J0RGF0ZSdcIj5cbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGlzcGxheUZvcm1hdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHBlY3RlZCB1c2VyIGlucHV0IGZvcm1hdCAoYW5kIHBsYWNlaG9sZGVyKS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgaHRtbFxuICAgKiA8aW5wdXQgW2lneERhdGVUaW1lRWRpdG9yXT1cIidkZC9NTS95eXl5J1wiPlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dChgaWd4RGF0ZVRpbWVFZGl0b3JgKVxuICBwdWJsaWMgc2V0IGlucHV0Rm9ybWF0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX2Zvcm1hdCA9IHZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBtYXNrID0gKHRoaXMuaW5wdXRGb3JtYXQgfHwgRGF0ZVBpY2tlclV0aWwuREVGQVVMVF9JTlBVVF9GT1JNQVQpXG4gICAgICAucmVwbGFjZShuZXcgUmVnRXhwKC8oPz1bXnRdKVtcXHddLywgJ2cnKSwgJzAnKTtcbiAgICB0aGlzLm1hc2sgPSBtYXNrLmluZGV4T2YoJ3R0JykgIT09IC0xID8gbWFzay5yZXBsYWNlKG5ldyBSZWdFeHAoJ3R0JywgJ2cnKSwgJ0xMJykgOiBtYXNrO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnB1dEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogRWRpdG9yIHZhbHVlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxpbnB1dCBpZ3hEYXRlVGltZUVkaXRvciBbdmFsdWVdPVwiZGF0ZVwiPlxuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh2YWx1ZSk7XG4gICAgdGhpcy51cGRhdGVNYXNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGVkaXRvcidzIHZhbHVlIGhhcyBjaGFuZ2VkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxpbnB1dCBpZ3hEYXRlVGltZUVkaXRvciAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiLz5cbiAgICogYGBgXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGVkaXRvciBpcyBub3Qgd2l0aGluIGEgc3BlY2lmaWVkIHJhbmdlIG9yIHdoZW4gdGhlIGVkaXRvcidzIHZhbHVlIGlzIGluIGFuIGludmFsaWQgc3RhdGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPGlucHV0IGlneERhdGVUaW1lRWRpdG9yIFttaW5WYWx1ZV09XCJtaW5EYXRlXCIgW21heFZhbHVlXT1cIm1heERhdGVcIiAodmFsaWRhdGlvbkZhaWxlZCk9XCJvblZhbGlkYXRpb25GYWlsZWQoJGV2ZW50KVwiLz5cbiAgICogYGBgXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHZhbGlkYXRpb25GYWlsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElneERhdGVUaW1lRWRpdG9yRXZlbnRBcmdzPigpO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBEYXRlO1xuICBwcml2YXRlIF9mb3JtYXQ6IHN0cmluZztcbiAgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQ7XG4gIHByaXZhdGUgX2lzRm9jdXNlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfaW5wdXRGb3JtYXQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfbWluVmFsdWU6IHN0cmluZyB8IERhdGU7XG4gIHByaXZhdGUgX21heFZhbHVlOiBzdHJpbmcgfCBEYXRlO1xuICBwcml2YXRlIF9vbGRWYWx1ZTogRGF0ZSB8IHN0cmluZztcbiAgcHJpdmF0ZSBfaW5wdXREYXRlUGFydHM6IERhdGVQYXJ0SW5mb1tdO1xuICBwcml2YXRlIG9uVG91Y2hDYWxsYmFjazogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIG9uVmFsaWRhdG9yQ2hhbmdlOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQgPSBub29wO1xuXG4gIHByaXZhdGUgZ2V0IGVtcHR5TWFzaygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1hc2tQYXJzZXIuYXBwbHlNYXNrKG51bGwsIHRoaXMubWFza09wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdGFyZ2V0RGF0ZVBhcnQoKTogRGF0ZVBhcnQge1xuICAgIC8vIFYuSy4gTWF5IDE2dGgsIDIwMjIgIzExNTU5IEdldCBjb3JyZWN0IGRhdGUgcGFydCBpbiBzaGFkb3cgRE9NXG4gICAgaWYgKHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5uYXRpdmVFbGVtZW50IHx8XG4gICAgICB0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMubmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2lucHV0RGF0ZVBhcnRzXG4gICAgICAgIC5maW5kKHAgPT4gcC5zdGFydCA8PSB0aGlzLnNlbGVjdGlvblN0YXJ0ICYmIHRoaXMuc2VsZWN0aW9uU3RhcnQgPD0gcC5lbmQgJiYgcC50eXBlICE9PSBEYXRlUGFydC5MaXRlcmFsKT8udHlwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuX2lucHV0RGF0ZVBhcnRzLnNvbWUocCA9PiBwLnR5cGUgPT09IERhdGVQYXJ0LkRhdGUpKSB7XG4gICAgICAgIHJldHVybiBEYXRlUGFydC5EYXRlO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dERhdGVQYXJ0cy5zb21lKHAgPT4gcC50eXBlID09PSBEYXRlUGFydC5Ib3VycykpIHtcbiAgICAgICAgcmV0dXJuIERhdGVQYXJ0LkhvdXJzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc0RhdGVQYXJ0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXREYXRlUGFydHMuc29tZShcbiAgICAgIHAgPT4gcC50eXBlID09PSBEYXRlUGFydC5EYXRlXG4gICAgICAgIHx8IHAudHlwZSA9PT0gRGF0ZVBhcnQuTW9udGhcbiAgICAgICAgfHwgcC50eXBlID09PSBEYXRlUGFydC5ZZWFyKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc1RpbWVQYXJ0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXREYXRlUGFydHMuc29tZShcbiAgICAgIHAgPT4gcC50eXBlID09PSBEYXRlUGFydC5Ib3Vyc1xuICAgICAgICB8fCBwLnR5cGUgPT09IERhdGVQYXJ0Lk1pbnV0ZXNcbiAgICAgICAgfHwgcC50eXBlID09PSBEYXRlUGFydC5TZWNvbmRzKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBtYXNrUGFyc2VyOiBNYXNrUGFyc2luZ1NlcnZpY2UsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSxcbiAgICBASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBfbG9jYWxlOiBhbnkpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCBtYXNrUGFyc2VyLCByZW5kZXJlcik7XG4gICAgdGhpcy5kb2N1bWVudCA9IHRoaXMuX2RvY3VtZW50IGFzIERvY3VtZW50O1xuICAgIHRoaXMubG9jYWxlID0gdGhpcy5sb2NhbGUgfHwgdGhpcy5fbG9jYWxlO1xuICB9XG5cbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2lucHV0Rm9ybWF0J10gfHwgY2hhbmdlc1snbG9jYWxlJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlSW5wdXRGb3JtYXQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5wdXRGb3JtYXQgIT09IHRoaXMuaW5wdXRGb3JtYXQpIHtcbiAgICAgIHRoaXMudXBkYXRlSW5wdXRGb3JtYXQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xlYXIgdGhlIGlucHV0IGVsZW1lbnQgdmFsdWUuICovXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluY3JlbWVudCBzcGVjaWZpZWQgRGF0ZVBhcnQuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRlUGFydCBUaGUgb3B0aW9uYWwgRGF0ZVBhcnQgdG8gaW5jcmVtZW50LiBEZWZhdWx0cyB0byBEYXRlIG9yIEhvdXJzKHdoZW4gRGF0ZSBpcyBhYnNlbnQgZnJvbSB0aGUgaW5wdXRGb3JtYXQgLSBleDonSEg6bW0nKS5cbiAgICovXG4gIHB1YmxpYyBpbmNyZW1lbnQoZGF0ZVBhcnQ/OiBEYXRlUGFydCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldERhdGVQYXJ0ID0gdGhpcy50YXJnZXREYXRlUGFydDtcbiAgICBpZiAoIXRhcmdldERhdGVQYXJ0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3VmFsdWUgPSBkYXRlUGFydFxuICAgICAgPyB0aGlzLnNwaW5WYWx1ZShkYXRlUGFydCwgMSlcbiAgICAgIDogdGhpcy5zcGluVmFsdWUodGFyZ2V0RGF0ZVBhcnQsIDEpO1xuICAgIHRoaXMudXBkYXRlVmFsdWUobmV3VmFsdWUgPyBuZXdWYWx1ZSA6IG5ldyBEYXRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY3JlbWVudCBzcGVjaWZpZWQgRGF0ZVBhcnQuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRlUGFydCBUaGUgb3B0aW9uYWwgRGF0ZVBhcnQgdG8gZGVjcmVtZW50LiBEZWZhdWx0cyB0byBEYXRlIG9yIEhvdXJzKHdoZW4gRGF0ZSBpcyBhYnNlbnQgZnJvbSB0aGUgaW5wdXRGb3JtYXQgLSBleDonSEg6bW0nKS5cbiAgICovXG4gIHB1YmxpYyBkZWNyZW1lbnQoZGF0ZVBhcnQ/OiBEYXRlUGFydCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldERhdGVQYXJ0ID0gdGhpcy50YXJnZXREYXRlUGFydDtcbiAgICBpZiAoIXRhcmdldERhdGVQYXJ0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3VmFsdWUgPSBkYXRlUGFydFxuICAgICAgPyB0aGlzLnNwaW5WYWx1ZShkYXRlUGFydCwgLTEpXG4gICAgICA6IHRoaXMuc3BpblZhbHVlKHRhcmdldERhdGVQYXJ0LCAtMSk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSA/IG5ld1ZhbHVlIDogbmV3IERhdGUoKSk7XG4gIH1cblxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVNYXNrKCk7XG4gIH1cblxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuaW5wdXRJc0NvbXBsZXRlKCkgfHwgIWNvbnRyb2wudmFsdWUpIHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiB0cnVlIH07XG4gICAgfVxuXG4gICAgY29uc3QgbWF4VmFsdWVBc0RhdGUgPSB0aGlzLmlzRGF0ZSh0aGlzLm1heFZhbHVlKSA/IHRoaXMubWF4VmFsdWUgOiB0aGlzLnBhcnNlRGF0ZSh0aGlzLm1heFZhbHVlKTtcbiAgICBjb25zdCBtaW5WYWx1ZUFzRGF0ZSA9IHRoaXMuaXNEYXRlKHRoaXMubWluVmFsdWUpID8gdGhpcy5taW5WYWx1ZSA6IHRoaXMucGFyc2VEYXRlKHRoaXMubWluVmFsdWUpO1xuICAgIGlmIChtaW5WYWx1ZUFzRGF0ZVxuICAgICAgJiYgRGF0ZVBpY2tlclV0aWwubGVzc1RoYW5NaW5WYWx1ZShcbiAgICAgICAgY29udHJvbC52YWx1ZSwgbWluVmFsdWVBc0RhdGUsIHRoaXMuaGFzVGltZVBhcnRzLCB0aGlzLmhhc0RhdGVQYXJ0cykpIHtcbiAgICAgIHJldHVybiB7IG1pblZhbHVlOiB0cnVlIH07XG4gICAgfVxuICAgIGlmIChtYXhWYWx1ZUFzRGF0ZVxuICAgICAgJiYgRGF0ZVBpY2tlclV0aWwuZ3JlYXRlclRoYW5NYXhWYWx1ZShcbiAgICAgICAgY29udHJvbC52YWx1ZSwgbWF4VmFsdWVBc0RhdGUsIHRoaXMuaGFzVGltZVBhcnRzLCB0aGlzLmhhc0RhdGVQYXJ0cykpIHtcbiAgICAgIHJldHVybiB7IG1heFZhbHVlOiB0cnVlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U/KGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xufVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuIHRoaXMub25Ub3VjaENhbGxiYWNrID0gZm47XG59XG5cbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7IH1cblxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIG9uSW5wdXRDaGFuZ2VkKCkge1xuICAgIHN1cGVyLm9uSW5wdXRDaGFuZ2VkKCk7XG4gICAgaWYgKHRoaXMuaW5wdXRJc0NvbXBsZXRlKCkpIHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGUgPSB0aGlzLnBhcnNlRGF0ZSh0aGlzLmlucHV0VmFsdWUpO1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZERhdGUocGFyc2VkRGF0ZSkpIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShwYXJzZWREYXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy52YWx1ZSAmJiBuZXcgRGF0ZSh0aGlzLnZhbHVlLmdldFRpbWUoKSk7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB7IG9sZFZhbHVlLCBuZXdWYWx1ZTogcGFyc2VkRGF0ZSwgdXNlcklucHV0OiB0aGlzLmlucHV0VmFsdWUgfTtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkLmVtaXQoYXJncyk7XG4gICAgICAgIGlmIChhcmdzLm5ld1ZhbHVlPy5nZXRUaW1lICYmIGFyZ3MubmV3VmFsdWUuZ2V0VGltZSgpICE9PSBvbGRWYWx1ZS5nZXRUaW1lKCkpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGFyZ3MubmV3VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHN1cGVyLm9uS2V5RG93bihldmVudCk7XG4gICAgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09IEtFWVMuVVBfQVJST1cgfHwgZXZlbnQua2V5ID09PSBLRVlTLlVQX0FSUk9XX0lFIHx8XG4gICAgICBldmVudC5rZXkgPT09IEtFWVMuRE9XTl9BUlJPVyB8fCBldmVudC5rZXkgPT09IEtFWVMuRE9XTl9BUlJPV19JRSkge1xuICAgICAgdGhpcy5zcGluKGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuY3RybEtleSAmJiBldmVudC5rZXkgPT09IEtFWVMuU0VNSUNPTE9OKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKG5ldyBEYXRlKCkpO1xuICAgIH1cblxuICAgIHRoaXMubW92ZUN1cnNvcihldmVudCk7XG4gIH1cblxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5faXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB0aGlzLm9uVG91Y2hDYWxsYmFjaygpO1xuICAgIHRoaXMudXBkYXRlTWFzaygpO1xuICAgIHN1cGVyLm9uRm9jdXMoKTtcbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgb25CbHVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICBpZiAoIXRoaXMuaW5wdXRJc0NvbXBsZXRlKCkgJiYgdGhpcy5pbnB1dFZhbHVlICE9PSB0aGlzLmVtcHR5TWFzaykge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnBhcnNlRGF0ZSh0aGlzLmlucHV0VmFsdWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVNYXNrKCk7XG4gICAgfVxuXG4gICAgc3VwZXIub25CbHVyKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgdXBkYXRlTWFzaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNGb2N1c2VkKSB7XG4gICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgLy8gc3RvcmUgdGhlIGN1cnNvciBwb3NpdGlvbiBhcyBpdCB3aWxsIGJlIG1vdmVkIGR1cmluZyBtYXNraW5nXG4gICAgICBjb25zdCBjdXJzb3IgPSB0aGlzLnNlbGVjdGlvbkVuZDtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuZ2V0TWFza2VkVmFsdWUoKTtcbiAgICAgIHRoaXMuc2V0U2VsZWN0aW9uUmFuZ2UoY3Vyc29yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlIHx8ICF0aGlzLmlzVmFsaWREYXRlKHRoaXMudmFsdWUpKSB7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmRpc3BsYXlGb3JtYXQgfHwgdGhpcy5pbnB1dEZvcm1hdDtcbiAgICAgIGlmIChmb3JtYXQpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gRGF0ZVBpY2tlclV0aWwuZm9ybWF0RGF0ZSh0aGlzLnZhbHVlLCBmb3JtYXQucmVwbGFjZSgndHQnLCAnYWEnKSwgdGhpcy5sb2NhbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVE9ETzogZm9ybWF0dGVyIGZ1bmN0aW9uP1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLnZhbHVlLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVE9ETzogbW92ZSBwYXJzZURhdGUgdG8gdXRpbHNcbiAgcHVibGljIHBhcnNlRGF0ZSh2YWw6IHN0cmluZyk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIXZhbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIERhdGVQaWNrZXJVdGlsLnBhcnNlVmFsdWVGcm9tTWFzayh2YWwsIHRoaXMuX2lucHV0RGF0ZVBhcnRzLCB0aGlzLnByb21wdENoYXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXNrZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIGxldCBtYXNrID0gdGhpcy5lbXB0eU1hc2s7XG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIHRoaXMuX2lucHV0RGF0ZVBhcnRzKSB7XG4gICAgICAgIGlmIChwYXJ0LnR5cGUgPT09IERhdGVQYXJ0LkxpdGVyYWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICBjb25zdCB0YXJnZXRWYWx1ZSA9IHRoaXMuZ2V0UGFydFZhbHVlKHBhcnQsIHBhcnQuZm9ybWF0Lmxlbmd0aCk7XG4gICAgICBtYXNrID0gdGhpcy5tYXNrUGFyc2VyLnJlcGxhY2VJbk1hc2sobWFzaywgdGFyZ2V0VmFsdWUsIHRoaXMubWFza09wdGlvbnMsIHBhcnQuc3RhcnQsIHBhcnQuZW5kKS52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFzaztcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSW5wdXRGb3JtYXQoKTogdm9pZCB7XG4gICAgY29uc3QgZGVmUGxhY2Vob2xkZXIgPSB0aGlzLmlucHV0Rm9ybWF0IHx8IERhdGVQaWNrZXJVdGlsLmdldERlZmF1bHRJbnB1dEZvcm1hdCh0aGlzLmxvY2FsZSk7XG4gICAgdGhpcy5faW5wdXREYXRlUGFydHMgPSBEYXRlUGlja2VyVXRpbC5wYXJzZURhdGVUaW1lRm9ybWF0KHRoaXMuaW5wdXRGb3JtYXQpO1xuICAgIHRoaXMuaW5wdXRGb3JtYXQgPSB0aGlzLl9pbnB1dERhdGVQYXJ0cy5tYXAocCA9PiBwLmZvcm1hdCkuam9pbignJyk7XG4gICAgaWYgKCF0aGlzLm5hdGl2ZUVsZW1lbnQucGxhY2Vob2xkZXIgfHwgdGhpcy5faW5wdXRGb3JtYXQgIT09IHRoaXMuaW5wdXRGb3JtYXQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgJ3BsYWNlaG9sZGVyJywgZGVmUGxhY2Vob2xkZXIpO1xuICAgIH1cbiAgICAvLyBUT0RPOiBmaWxsIGluIHBhcnRpYWwgZGF0ZXM/XG4gICAgdGhpcy51cGRhdGVNYXNrKCk7XG4gICAgdGhpcy5faW5wdXRGb3JtYXQgPSB0aGlzLmlucHV0Rm9ybWF0O1xuICB9XG5cbiAgLy8gVE9ETzogbW92ZSBpc0RhdGUgdG8gdXRpbHNcbiAgcHJpdmF0ZSBpc0RhdGUodmFsdWU6IGFueSk6IHZhbHVlIGlzIERhdGUge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JztcbiAgfVxuXG4gIHByaXZhdGUgdmFsdWVJblJhbmdlKHZhbHVlOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IG1heFZhbHVlQXNEYXRlID0gdGhpcy5pc0RhdGUodGhpcy5tYXhWYWx1ZSkgPyB0aGlzLm1heFZhbHVlIDogdGhpcy5wYXJzZURhdGUodGhpcy5tYXhWYWx1ZSk7XG4gICAgY29uc3QgbWluVmFsdWVBc0RhdGUgPSB0aGlzLmlzRGF0ZSh0aGlzLm1pblZhbHVlKSA/IHRoaXMubWluVmFsdWUgOiB0aGlzLnBhcnNlRGF0ZSh0aGlzLm1pblZhbHVlKTtcbiAgICBpZiAobWluVmFsdWVBc0RhdGVcbiAgICAgICYmIERhdGVQaWNrZXJVdGlsLmxlc3NUaGFuTWluVmFsdWUoXG4gICAgICAgIHZhbHVlLCBtaW5WYWx1ZUFzRGF0ZSwgdGhpcy5oYXNUaW1lUGFydHMsIHRoaXMuaGFzRGF0ZVBhcnRzKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobWF4VmFsdWVBc0RhdGVcbiAgICAgICYmIERhdGVQaWNrZXJVdGlsLmdyZWF0ZXJUaGFuTWF4VmFsdWUoXG4gICAgICAgIHZhbHVlLCBtYXhWYWx1ZUFzRGF0ZSwgdGhpcy5oYXNUaW1lUGFydHMsIHRoaXMuaGFzRGF0ZVBhcnRzKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzcGluVmFsdWUoZGF0ZVBhcnQ6IERhdGVQYXJ0LCBkZWx0YTogbnVtYmVyKTogRGF0ZSB7XG4gICAgaWYgKCF0aGlzLnZhbHVlIHx8ICF0aGlzLmlzVmFsaWREYXRlKHRoaXMudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUodGhpcy52YWx1ZS5nZXRUaW1lKCkpO1xuICAgIHN3aXRjaCAoZGF0ZVBhcnQpIHtcbiAgICAgIGNhc2UgRGF0ZVBhcnQuRGF0ZTpcbiAgICAgICAgRGF0ZVBpY2tlclV0aWwuc3BpbkRhdGUoZGVsdGEsIG5ld0RhdGUsIHRoaXMuaXNTcGluTG9vcCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYXRlUGFydC5Nb250aDpcbiAgICAgICAgRGF0ZVBpY2tlclV0aWwuc3Bpbk1vbnRoKGRlbHRhLCBuZXdEYXRlLCB0aGlzLmlzU3Bpbkxvb3ApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGF0ZVBhcnQuWWVhcjpcbiAgICAgICAgRGF0ZVBpY2tlclV0aWwuc3BpblllYXIoZGVsdGEsIG5ld0RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGF0ZVBhcnQuSG91cnM6XG4gICAgICAgIERhdGVQaWNrZXJVdGlsLnNwaW5Ib3VycyhkZWx0YSwgbmV3RGF0ZSwgdGhpcy5pc1NwaW5Mb29wKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERhdGVQYXJ0Lk1pbnV0ZXM6XG4gICAgICAgIERhdGVQaWNrZXJVdGlsLnNwaW5NaW51dGVzKGRlbHRhLCBuZXdEYXRlLCB0aGlzLmlzU3Bpbkxvb3ApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGF0ZVBhcnQuU2Vjb25kczpcbiAgICAgICAgRGF0ZVBpY2tlclV0aWwuc3BpblNlY29uZHMoZGVsdGEsIG5ld0RhdGUsIHRoaXMuaXNTcGluTG9vcCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYXRlUGFydC5BbVBtOlxuICAgICAgICBjb25zdCBmb3JtYXRQYXJ0ID0gdGhpcy5faW5wdXREYXRlUGFydHMuZmluZChkcCA9PiBkcC50eXBlID09PSBEYXRlUGFydC5BbVBtKTtcbiAgICAgICAgY29uc3QgYW1QbUZyb21NYXNrID0gdGhpcy5pbnB1dFZhbHVlLnN1YnN0cmluZyhmb3JtYXRQYXJ0LnN0YXJ0LCBmb3JtYXRQYXJ0LmVuZCk7XG4gICAgICAgIHJldHVybiBEYXRlUGlja2VyVXRpbC5zcGluQW1QbShuZXdEYXRlLCB0aGlzLnZhbHVlLCBhbVBtRnJvbU1hc2spO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdEYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZShuZXdEYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5fb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMudmFsdWUgPSBuZXdEYXRlO1xuXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgIXRoaXMudmFsdWVJblJhbmdlKHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQuZW1pdCh7IG9sZFZhbHVlOiB0aGlzLl9vbGRWYWx1ZSwgbmV3VmFsdWU6IHRoaXMudmFsdWUsIHVzZXJJbnB1dDogdGhpcy5pbnB1dFZhbHVlIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbnB1dElzQ29tcGxldGUoKSB8fCB0aGlzLmlucHV0VmFsdWUgPT09IHRoaXMuZW1wdHlNYXNrKSB7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b1R3ZWx2ZUhvdXJGb3JtYXQodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IGhvdXIgPSBwYXJzZUludCh2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAodGhpcy5wcm9tcHRDaGFyLCAnZycpLCAnMCcpLCAxMCk7XG4gICAgaWYgKGhvdXIgPiAxMikge1xuICAgICAgaG91ciAtPSAxMjtcbiAgICB9IGVsc2UgaWYgKGhvdXIgPT09IDApIHtcbiAgICAgIGhvdXIgPSAxMjtcbiAgICB9XG5cbiAgICByZXR1cm4gaG91cjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFydFZhbHVlKGRhdGVQYXJ0SW5mbzogRGF0ZVBhcnRJbmZvLCBwYXJ0TGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGxldCBtYXNrZWRWYWx1ZTtcbiAgICBjb25zdCBkYXRlUGFydCA9IGRhdGVQYXJ0SW5mby50eXBlO1xuICAgIHN3aXRjaCAoZGF0ZVBhcnQpIHtcbiAgICAgIGNhc2UgRGF0ZVBhcnQuRGF0ZTpcbiAgICAgICAgbWFza2VkVmFsdWUgPSB0aGlzLnZhbHVlLmdldERhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERhdGVQYXJ0Lk1vbnRoOlxuICAgICAgICAvLyBtb250aHMgYXJlIHplcm8gYmFzZWRcbiAgICAgICAgbWFza2VkVmFsdWUgPSB0aGlzLnZhbHVlLmdldE1vbnRoKCkgKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGF0ZVBhcnQuWWVhcjpcbiAgICAgICAgaWYgKHBhcnRMZW5ndGggPT09IDIpIHtcbiAgICAgICAgICBtYXNrZWRWYWx1ZSA9IHRoaXMucHJlcGVuZFZhbHVlKFxuICAgICAgICAgICAgcGFyc2VJbnQodGhpcy52YWx1ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAxMCksIHBhcnRMZW5ndGgsICcwJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWFza2VkVmFsdWUgPSB0aGlzLnZhbHVlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERhdGVQYXJ0LkhvdXJzOlxuICAgICAgICBpZiAoZGF0ZVBhcnRJbmZvLmZvcm1hdC5pbmRleE9mKCdoJykgIT09IC0xKSB7XG4gICAgICAgICAgbWFza2VkVmFsdWUgPSB0aGlzLnByZXBlbmRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMudG9Ud2VsdmVIb3VyRm9ybWF0KHRoaXMudmFsdWUuZ2V0SG91cnMoKS50b1N0cmluZygpKSwgcGFydExlbmd0aCwgJzAnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXNrZWRWYWx1ZSA9IHRoaXMudmFsdWUuZ2V0SG91cnMoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRGF0ZVBhcnQuTWludXRlczpcbiAgICAgICAgbWFza2VkVmFsdWUgPSB0aGlzLnZhbHVlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERhdGVQYXJ0LlNlY29uZHM6XG4gICAgICAgIG1hc2tlZFZhbHVlID0gdGhpcy52YWx1ZS5nZXRTZWNvbmRzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEYXRlUGFydC5BbVBtOlxuICAgICAgICBtYXNrZWRWYWx1ZSA9IHRoaXMudmFsdWUuZ2V0SG91cnMoKSA+PSAxMiA/ICdQTScgOiAnQU0nO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoZGF0ZVBhcnRJbmZvLnR5cGUgIT09IERhdGVQYXJ0LkFtUG0pIHtcbiAgICAgIHJldHVybiB0aGlzLnByZXBlbmRWYWx1ZShtYXNrZWRWYWx1ZSwgcGFydExlbmd0aCwgJzAnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFza2VkVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHByZXBlbmRWYWx1ZSh2YWx1ZTogbnVtYmVyLCBwYXJ0TGVuZ3RoOiBudW1iZXIsIHByZXBlbmRDaGFyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiAocHJlcGVuZENoYXIgKyB2YWx1ZS50b1N0cmluZygpKS5zbGljZSgtcGFydExlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIHNwaW4oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlIEtFWVMuVVBfQVJST1c6XG4gICAgICBjYXNlIEtFWVMuVVBfQVJST1dfSUU6XG4gICAgICAgIHRoaXMuaW5jcmVtZW50KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLRVlTLkRPV05fQVJST1c6XG4gICAgICBjYXNlIEtFWVMuRE9XTl9BUlJPV19JRTpcbiAgICAgICAgdGhpcy5kZWNyZW1lbnQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnB1dElzQ29tcGxldGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRWYWx1ZS5pbmRleE9mKHRoaXMucHJvbXB0Q2hhcikgPT09IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkRGF0ZShkYXRlOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRhdGUgJiYgZGF0ZS5nZXRUaW1lICYmICFpc05hTihkYXRlLmdldFRpbWUoKSk7XG4gIH1cblxuICBwcml2YXRlIG1vdmVDdXJzb3IoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgS0VZUy5MRUZUX0FSUk9XOlxuICAgICAgY2FzZSBLRVlTLkxFRlRfQVJST1dfSUU6XG4gICAgICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGlvblJhbmdlKHRoaXMuZ2V0TmV3UG9zaXRpb24odmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS0VZUy5SSUdIVF9BUlJPVzpcbiAgICAgIGNhc2UgS0VZUy5SSUdIVF9BUlJPV19JRTpcbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5nZXROZXdQb3NpdGlvbih2YWx1ZSwgMSkpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIHRoZSBjdXJzb3IgaW4gYSBzcGVjaWZpYyBkaXJlY3Rpb24gdW50aWwgaXQgcmVhY2hlcyBhIGRhdGUvdGltZSBzZXBhcmF0b3IuXG4gICAqIFRoZW4gcmV0dXJuIGl0cyBpbmRleC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBzdHJpbmcgaXQgb3BlcmF0ZXMgb24uXG4gICAqIEBwYXJhbSBkaXJlY3Rpb24gMCBpcyBsZWZ0LCAxIGlzIHJpZ2h0LiBEZWZhdWx0IGlzIDAuXG4gICAqL1xuICBwcml2YXRlIGdldE5ld1Bvc2l0aW9uKHZhbHVlOiBzdHJpbmcsIGRpcmVjdGlvbiA9IDApOiBudW1iZXIge1xuICAgIGNvbnN0IGxpdGVyYWxzID0gdGhpcy5faW5wdXREYXRlUGFydHMuZmlsdGVyKHAgPT4gcC50eXBlID09PSBEYXRlUGFydC5MaXRlcmFsKTtcbiAgICBsZXQgY3Vyc29yUG9zID0gdGhpcy5zZWxlY3Rpb25TdGFydDtcbiAgICBpZiAoIWRpcmVjdGlvbikge1xuICAgICAgZG8ge1xuICAgICAgICBjdXJzb3JQb3MgPSBjdXJzb3JQb3MgPiAwID8gLS1jdXJzb3JQb3MgOiBjdXJzb3JQb3M7XG4gICAgICB9IHdoaWxlICghbGl0ZXJhbHMuc29tZShsID0+IGwuZW5kID09PSBjdXJzb3JQb3MpICYmIGN1cnNvclBvcyA+IDApO1xuICAgICAgcmV0dXJuIGN1cnNvclBvcztcbiAgICB9IGVsc2Uge1xuICAgICAgZG8ge1xuICAgICAgICBjdXJzb3JQb3MrKztcbiAgICAgIH0gd2hpbGUgKCFsaXRlcmFscy5zb21lKGwgPT4gbC5zdGFydCA9PT0gY3Vyc29yUG9zKSAmJiBjdXJzb3JQb3MgPCB2YWx1ZS5sZW5ndGgpO1xuICAgICAgcmV0dXJuIGN1cnNvclBvcztcbiAgICB9XG4gIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbSWd4RGF0ZVRpbWVFZGl0b3JEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbSWd4RGF0ZVRpbWVFZGl0b3JEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneERhdGVUaW1lRWRpdG9yTW9kdWxlIHsgfVxuIl19
|
|
@@ -18169,10 +18169,12 @@ class IgxDateTimeEditorDirective extends IgxMaskDirective {
|
|
|
18169
18169
|
return this.maskParser.applyMask(null, this.maskOptions);
|
|
18170
18170
|
}
|
|
18171
18171
|
get targetDatePart() {
|
|
18172
|
-
var _a;
|
|
18173
|
-
|
|
18174
|
-
|
|
18175
|
-
|
|
18172
|
+
var _a, _b, _c;
|
|
18173
|
+
// V.K. May 16th, 2022 #11559 Get correct date part in shadow DOM
|
|
18174
|
+
if (this.document.activeElement === this.nativeElement ||
|
|
18175
|
+
((_b = (_a = this.document.activeElement) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.activeElement) === this.nativeElement) {
|
|
18176
|
+
return (_c = this._inputDateParts
|
|
18177
|
+
.find(p => p.start <= this.selectionStart && this.selectionStart <= p.end && p.type !== DatePart.Literal)) === null || _c === void 0 ? void 0 : _c.type;
|
|
18176
18178
|
}
|
|
18177
18179
|
else {
|
|
18178
18180
|
if (this._inputDateParts.some(p => p.type === DatePart.Date)) {
|