@po-ui/ng-components 14.1.0 → 14.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/po-field/po-datepicker/po-datepicker-base.component.mjs +3 -8
- package/esm2020/lib/utils/util.mjs +2 -12
- package/fesm2015/po-ui-ng-components.mjs +2 -17
- package/fesm2015/po-ui-ng-components.mjs.map +1 -1
- package/fesm2020/po-ui-ng-components.mjs +2 -17
- package/fesm2020/po-ui-ng-components.mjs.map +1 -1
- package/lib/utils/util.d.ts +0 -1
- package/package.json +4 -4
- package/po-ui-ng-components-14.2.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-14.1.0.tgz +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { EventEmitter, Input, Output, Directive } from '@angular/core';
|
|
3
|
-
import { convertDateToISODate, convertDateToISOExtended, convertIsoToDate,
|
|
3
|
+
import { convertDateToISODate, convertDateToISOExtended, convertIsoToDate, convertToBoolean, formatYear, isTypeof, setYearFrom0To100, validateDateRange } from '../../../utils/util';
|
|
4
4
|
import { dateFailed, requiredFailed } from './../validators';
|
|
5
5
|
import { InputBoolean } from '../../../decorators';
|
|
6
6
|
import { PoMask } from '../po-input/po-mask';
|
|
@@ -256,12 +256,7 @@ export class PoDatepickerBaseComponent {
|
|
|
256
256
|
return this._locale || this.shortLanguage;
|
|
257
257
|
}
|
|
258
258
|
set date(value) {
|
|
259
|
-
|
|
260
|
-
this._date = typeof value === 'string' ? convertIsoToDate(value, false, false) : value;
|
|
261
|
-
}
|
|
262
|
-
else {
|
|
263
|
-
this._date = typeof value === 'string' ? convertIsoToDateNoTimezone(value) : value;
|
|
264
|
-
}
|
|
259
|
+
this._date = typeof value === 'string' ? convertIsoToDate(value, false, false) : value;
|
|
265
260
|
}
|
|
266
261
|
get date() {
|
|
267
262
|
return this._date;
|
|
@@ -430,4 +425,4 @@ __decorate([
|
|
|
430
425
|
type: Input,
|
|
431
426
|
args: ['p-locale']
|
|
432
427
|
}] }); })();
|
|
433
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kYXRlcGlja2VyL3BvLWRhdGVwaWNrZXItYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUNMLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLDBCQUEwQixFQUMxQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7O0FBRXJGLE1BQU0seUJBQXlCLEdBQVcsWUFBWSxDQUFDO0FBRXZEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlDRztBQUVILE1BQU0sT0FBZ0IseUJBQXlCO0lBeVE3QyxZQUFvQixlQUFrQztRQUFsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUF4UXREOzs7Ozs7Ozs7O1dBVUc7UUFDb0MsY0FBUyxHQUFZLEtBQUssQ0FBQztRQW9CbEU7Ozs7V0FJRztRQUN1QixpQkFBWSxHQUFZLEVBQUUsQ0FBQztRQUVyRDs7Ozs7O1dBTUc7UUFDZSxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFdEU7Ozs7OztXQU1HO1FBQ2lCLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVoRSxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLFNBQUksR0FBVyxpQkFBaUIsQ0FBQztRQUNqQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUUvQixrQkFBYSxHQUFRLElBQUksQ0FBQztRQUUxQixtQkFBYyxHQUFRLElBQUksQ0FBQztRQUU3QixZQUFPLEdBQVkseUJBQXlCLENBQUM7UUFJN0Msb0JBQWUsR0FBYSxLQUFLLENBQUM7UUFDbEMsaUJBQVksR0FBWSxFQUFFLENBQUM7UUFxQ25DLDBCQUEwQjtRQUMxQiw4REFBOEQ7UUFDOUQsYUFBUSxHQUFhLEtBQUssQ0FBQztRQU8zQix3Q0FBd0M7UUFDeEMsOERBQThEO1FBQzlELGFBQVEsR0FBYSxLQUFLLENBQUM7UUFLM0IsNENBQTRDO1FBQzVDLDhEQUE4RDtRQUM5RCxhQUFRLEdBQWEsS0FBSyxDQUFDO1FBTzNCLHlDQUF5QztRQUN6Qyw4REFBOEQ7UUFDOUQsVUFBSyxHQUFhLEtBQUssQ0FBQztRQW9JdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDL0QsQ0FBQztJQWhNRDs7Ozs7Ozs7T0FRRztJQUNILElBQWdDLGNBQWMsQ0FBQyxLQUFjO1FBQzNELElBQUksQ0FBQyxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQTRCLFdBQVcsQ0FBQyxXQUFtQjtRQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUtELElBQXlCLFdBQVcsQ0FBQyxRQUFnQjtRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFLRCxJQUF5QixXQUFXLENBQUMsUUFBZ0I7UUFDbkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFLRCxJQUF5QixXQUFXLENBQUMsUUFBZ0I7UUFDbkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBFLElBQUksQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBS0QsSUFBc0IsUUFBUSxDQUFDLEtBQWE7UUFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUF5QixPQUFPLENBQUMsS0FBb0I7UUFDbkQsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVqQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUU5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN0QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3REO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQXlCLE9BQU8sQ0FBQyxLQUFvQjtRQUNuRCxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUU7WUFDekIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRWpDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0UsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTlCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEQ7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILElBQXVCLE1BQU0sQ0FBQyxLQUFhO1FBQ3pDLElBQUksS0FBSyxFQUFFO1lBQ1QsS0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNqRSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixPQUFPO2FBQ1I7U0FDRjtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcseUJBQXlCLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxJQUEyQixTQUFTLENBQUMsS0FBNEI7UUFDL0QsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxLQUFLLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztTQUMvRDtJQUNILENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQWFELElBQXVCLE1BQU0sQ0FBQyxLQUFhO1FBQ3pDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7U0FDNUQ7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUNuQztJQUNILENBQUM7SUFDRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QyxDQUFDO0lBTUQsSUFBSSxJQUFJLENBQUMsS0FBVTtRQUNqQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUN4RjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDcEY7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRO1FBQ04sb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxvQ0FBb0M7SUFDcEMsaUJBQWlCLENBQUMsVUFBa0I7UUFDbEMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkcsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdHLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXhHLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFeEMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTlCLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzFHLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsWUFBWSxDQUFDLEtBQVc7UUFDdEIsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUVoQyxhQUFhLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRSxhQUFhLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvRSxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLFlBQVksQ0FBQyxJQUFVO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ25FO2FBQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNMLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDakY7SUFDSCxDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLFlBQVksQ0FBQyxLQUFVLEVBQUUsUUFBaUIsSUFBSTtRQUM1QyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztTQUM1QjthQUFNLElBQUksS0FBSyxFQUFFO1lBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVELDhDQUE4QztJQUM5QyxnRUFBZ0U7SUFDaEUsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELDhDQUE4QztJQUM5Qyw2RUFBNkU7SUFDN0UsZ0JBQWdCLENBQUMsSUFBUztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQsOENBQThDO0lBQzlDLDZFQUE2RTtJQUM3RSxpQkFBaUIsQ0FBQyxJQUFTO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxFQUFjO1FBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxRQUFRLENBQUMsQ0FBa0I7UUFDekIsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxZQUFZO1lBQ2YsSUFBSSxDQUFDLFlBQVksS0FBSyxlQUFlLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRWpILElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksZUFBZSxDQUFDO1lBRXpELE9BQU87Z0JBQ0wsSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxLQUFLO2lCQUNiO2FBQ0YsQ0FBQztTQUNIO1FBRUQsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6RCxPQUFPO2dCQUNMLFFBQVEsRUFBRTtvQkFDUixLQUFLLEVBQUUsS0FBSztpQkFDYjthQUNGLENBQUM7U0FDSDtRQUVELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDNUUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLHNCQUFzQixDQUFDO1lBRWhFLE9BQU87Z0JBQ0wsSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxLQUFLO2lCQUNiO2FBQ0YsQ0FBQztTQUNIO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRVMsYUFBYSxDQUFDLEtBQVU7UUFDaEMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsOERBQThEO0lBQ3BELFNBQVM7UUFDakIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVyQyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDOztrR0FyWm1CLHlCQUF5Qjs0RUFBekIseUJBQXlCO0FBWU47SUFBZixZQUFZLEVBQUU7NERBQTRCO3VGQVo5Qyx5QkFBeUI7Y0FEOUMsU0FBUztvRUFhK0IsU0FBUztrQkFBL0MsS0FBSzttQkFBQyxjQUFjO1lBR04sSUFBSTtrQkFBbEIsS0FBSzttQkFBQyxNQUFNO1lBZVEsUUFBUTtrQkFBNUIsS0FBSzttQkFBQyxZQUFZO1lBT08sWUFBWTtrQkFBckMsS0FBSzttQkFBQyxpQkFBaUI7WUFTTixNQUFNO2tCQUF2QixNQUFNO21CQUFDLFFBQVE7WUFTSSxRQUFRO2tCQUEzQixNQUFNO21CQUFDLFVBQVU7WUE2QmMsY0FBYztrQkFBN0MsS0FBSzttQkFBQyxtQkFBbUI7WUFlRSxXQUFXO2tCQUF0QyxLQUFLO21CQUFDLGVBQWU7WUFXRyxXQUFXO2tCQUFuQyxLQUFLO21CQUFDLFlBQVk7WUFTTSxXQUFXO2tCQUFuQyxLQUFLO21CQUFDLFlBQVk7WUFPTSxXQUFXO2tCQUFuQyxLQUFLO21CQUFDLFlBQVk7WUFTRyxRQUFRO2tCQUE3QixLQUFLO21CQUFDLFNBQVM7WUFXUyxPQUFPO2tCQUEvQixLQUFLO21CQUFDLFlBQVk7WUEwQk0sT0FBTztrQkFBL0IsS0FBSzttQkFBQyxZQUFZO1lBaUNJLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVTtZQTJCVSxTQUFTO2tCQUFuQyxLQUFLO21CQUFDLGNBQWM7WUFzQkUsTUFBTTtrQkFBNUIsS0FBSzttQkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0RGF0ZVRvSVNPRGF0ZSxcbiAgY29udmVydERhdGVUb0lTT0V4dGVuZGVkLFxuICBjb252ZXJ0SXNvVG9EYXRlLFxuICBjb252ZXJ0SXNvVG9EYXRlTm9UaW1lem9uZSxcbiAgY29udmVydFRvQm9vbGVhbixcbiAgZm9ybWF0WWVhcixcbiAgaXNUeXBlb2YsXG4gIHNldFllYXJGcm9tMFRvMTAwLFxuICB2YWxpZGF0ZURhdGVSYW5nZVxufSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IGRhdGVGYWlsZWQsIHJlcXVpcmVkRmFpbGVkIH0gZnJvbSAnLi8uLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgUG9NYXNrIH0gZnJvbSAnLi4vcG8taW5wdXQvcG8tbWFzayc7XG5cbmltcG9ydCB7IFBvRGF0ZXBpY2tlcklzb0Zvcm1hdCB9IGZyb20gJy4vZW51bXMvcG8tZGF0ZXBpY2tlci1pc28tZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcblxuY29uc3QgcG9EYXRlcGlja2VyRm9ybWF0RGVmYXVsdDogc3RyaW5nID0gJ2RkL21tL3l5eXknO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gYHBvLWRhdGVwaWNrZXJgIMOpIHVtIGNvbXBvbmVudGUgZXNwZWPDrWZpY28gcGFyYSBtYW5pcHVsYcOnw6NvIGRlIGRhdGFzIHBlcm1pdGluZG8gYSBkaWdpdGHDp8OjbyBlIC8gb3Ugc2VsZcOnw6NvLlxuICpcbiAqIE8gZm9ybWF0byBkZSBleGliacOnw6NvIGRhIGRhdGEsIG91IHNlamEsIG8gZm9ybWF0byBxdWUgw6kgYXByZXNlbnRhZG8gYW8gdXN1w6FyaW8gw6kgbyBkZC9tbS95eXl5LFxuICogbWFzIHBvZGVtIHNlciBkZWZpbmlkb3Mgb3V0cm9zIHBhZHLDtWVzICh2ZWphIG1haXMgbmEgcHJvcHJpZWRhZGUgYHAtZm9ybWF0YCkuXG4gKlxuICogTyBpZGlvbWEgcGFkcsOjbyBkbyBjYWxlbmTDoXJpbyBzZXLDoSBleGliaWRvIGRlIGFjb3JkbyBjb20gbyBuYXZlZ2Fkb3IsIGNhc28gdGVuaGEgbmVjZXNzaWRhZGUgZGUgYWx0ZXJhclxuICogdXNlIGEgcHJvcHJpZWRhZGUgYHAtbG9jYWxlYC5cbiAqXG4gKiBPIGRhdGVwaWNrZXIgYWNlaXRhIHRyw6pzIGZvcm1hdG9zIGRlIGRhdGE6IG8gRTg2MDFEWncgKHl5eXktbW0tZGRUaGg6bW06c3MrfC1oaDptbSksIG8gRTg2MDFEQXcgKHl5eXktbW0tZGQpIGUgb1xuICogRGF0ZSBwYWRyw6NvIGRvIEphdmFzY3JpcHQuXG4gKlxuICogPiBQb3IgcGFkcsOjbywgbyBmb3JtYXRvIGRlIHNhw61kYSBkbyAqbW9kZWwqIHNlIGFqdXN0YXLDoSBjb25mb3JtZSBvIGZvcm1hdG8gZGUgZW50cmFkYS4gU2UgcG9yIGFjYXNvIHByZWNpc2FyIGNvbnRyb2xhciBvIHZhbG9yIGRlIHNhw61kYSxcbiAqIGEgcHJvcHJpZWRhZGUgYHAtaXNvLWZvcm1hdGAgcHJvdsOqIGVzc2UgY29udHJvbGUgaW5kZXBlbmRlbnRlbWVudGUgZG8gZm9ybWF0byBkZSBlbnRyYWRhLiBWZWphIGFiYWl4byBvcyBmb3JtYXRvcyBkaXNwb27DrXZlaXM6XG4gKlxuICogLSBGb3JtYXRvIGRlIGVudHJhZGEgZSBzYcOtZGEgKEU4NjAxRFp3KSAtIGAnMjAxNy0xMS0yOFQwMDowMDowMC0wMjowMCdgO1xuICpcbiAqIC0gRm9ybWF0byBkZSBlbnRyYWRhIGUgc2HDrWRhIChFODYwMURBdykgLSBgJzIwMTctMTEtMjgnYDtcbiAqXG4gKiAtIEZvcm1hdG8gZGUgZW50cmFkYSAoRGF0ZSkgLSBgbmV3IERhdGUoMjAxNywgMTAsIDI4KWAgZSBzYcOtZGEgKEU4NjAxREF3KSAtIGAnMjAxNy0xMS0yOCdgO1xuICpcbiAqICoqSW1wb3J0YW50ZToqKlxuICpcbiAqIC0gUGFyYSB1dGlsaXphciBkYXRhcyBjb20gYW5vIGluZmVyaW9yIGEgMTAwLCB2ZXJpZmljYXIgbyBjb21wb3J0YW1lbnRvIGRvIFtgbmV3IERhdGVgXShodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2pzL2pzX2RhdGVzLmFzcClcbiAqIGUgdXRpbGl6YXIgbyBtw6l0b2RvIFtgc2V0RnVsbFllYXJgXShodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2pzcmVmL2pzcmVmX3NldGZ1bGx5ZWFyLmFzcCkuXG4gKiAtIENhc28gYSBkYXRhIGVzdGVqYSBpbnbDoWxpZGEsIG8gYG1vZGVsYCByZWNlYmVyw6EgKionRGF0YSBpbnbDoWxpZGEnKiouXG4gKiAtIENhc28gbyBgaW5wdXRgIGVzdGVqYSBwYXNzYW5kbyB1bSBgWyhuZ01vZGVsKV1gLCBtYXMgbsOjbyB0ZW5oYSB1bSBgbmFtZWAsIGVudMOjbyBpcsOhIG9jb3JyZXIgdW0gZXJyb1xuICogZG8gcHLDs3ByaW8gQW5ndWxhciAoYFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cImApLlxuICpcbiAqIEV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiA8cG8tZGF0ZXBpY2tlclxuICogICBbKG5nTW9kZWwpXT1cInBlc3NvYS5ub21lXCJcbiAqICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gKiA8L3BvLWRhdGVwaWNrZXI+XG4gKiBgYGBcbiAqXG4gKiA+IE7Do28gZXNxdWXDp2EgZGUgaW1wb3J0YXIgbyBgRm9ybXNNb2R1bGVgIGVtIHNldSBtw7NkdWxvLCB0YWwgY29tbyBwYXJhIHV0aWxpemFyIG8gYGlucHV0IGRlZmF1bHRgLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0RhdGVwaWNrZXJCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8tZm9jdXMnKSBASW5wdXRCb29sZWFuKCkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyogTm9tZSBkbyBjb21wb25lbnRlIGRhdGVwaWNrZXIuICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNZW5zYWdlbSBhcHJlc2VudGFkYSBxdWFuZG8gYSBkYXRhIGZvciBpbnbDoWxpZGEgb3UgZm9yYSBkbyBwZXLDrW9kby5cbiAgICpcbiAgICogPiBFc3RhIG1lbnNhZ2VtIG7Do28gw6kgYXByZXNlbnRhZGEgcXVhbmRvIG8gY2FtcG8gZXN0aXZlciB2YXppbywgbWVzbW8gcXVlIGVsZSBzZWphIG9icmlnYXTDs3Jpby5cbiAgICovXG4gIEBJbnB1dCgncC1lcnJvci1wYXR0ZXJuJykgZXJyb3JQYXR0ZXJuPzogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBzYWlyIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1ibHVyJykgb25ibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gYWx0ZXJhciB2YWxvciBkbyBjYW1wby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgb25jaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIGZpcnN0U3RhcnQgPSB0cnVlO1xuICBwcm90ZWN0ZWQgaG91cjogc3RyaW5nID0gJ1QwMDowMDowMS0wMDowMCc7XG4gIHByb3RlY3RlZCBpc0V4dGVuZGVkSVNPOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBvYmpNYXNrOiBhbnk7XG4gIHByb3RlY3RlZCBvbkNoYW5nZU1vZGVsOiBhbnkgPSBudWxsO1xuICBwcm90ZWN0ZWQgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XG4gIHByb3RlY3RlZCBvblRvdWNoZWRNb2RlbDogYW55ID0gbnVsbDtcblxuICBwcml2YXRlIF9mb3JtYXQ/OiBzdHJpbmcgPSBwb0RhdGVwaWNrZXJGb3JtYXREZWZhdWx0O1xuICBwcml2YXRlIF9pc29Gb3JtYXQ6IFBvRGF0ZXBpY2tlcklzb0Zvcm1hdDtcbiAgcHJpdmF0ZSBfbWF4RGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfbm9BdXRvY29tcGxldGU/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyPzogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgc2hvcnRMYW5ndWFnZTogc3RyaW5nO1xuICBwcml2YXRlIHByZXZpb3VzVmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfZGF0ZTogRGF0ZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgYSBwcm9wcmllZGFkZSBuYXRpdmEgYGF1dG9jb21wbGV0ZWAgZG8gY2FtcG8gY29tbyBgb2ZmYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW5vLWF1dG9jb21wbGV0ZScpIHNldCBub0F1dG9jb21wbGV0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25vQXV0b2NvbXBsZXRlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgbm9BdXRvY29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vQXV0b2NvbXBsZXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTWVuc2FnZW0gcXVlIGFwYXJlY2Vyw6EgZW5xdWFudG8gbyBjYW1wbyBuw6NvIGVzdGl2ZXIgcHJlZW5jaGlkby5cbiAgICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlcicpIHNldCBwbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSBpc1R5cGVvZihwbGFjZWhvbGRlciwgJ3N0cmluZycpID8gcGxhY2Vob2xkZXIgOiAnJztcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICAvKiogRGVzYWJpbGl0YSBvIGNhbXBvLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICBkaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IHNldERpc2FibGVkKGRpc2FibGVkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oZGlzYWJsZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICB9XG5cbiAgLyoqIFRvcm5hIG8gZWxlbWVudG8gc29tZW50ZSBsZWl0dXJhLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICByZWFkb25seT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdwLXJlYWRvbmx5Jykgc2V0IHNldFJlYWRvbmx5KHJlYWRvbmx5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlYWRvbmx5ID0gcmVhZG9ubHkgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4ocmVhZG9ubHkpO1xuICB9XG5cbiAgLyoqIEZheiBjb20gcXVlIG8gY2FtcG8gc2VqYSBvYnJpZ2F0w7NyaW8uICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIHJlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgc2V0UmVxdWlyZWQocmVxdWlyZWQ6IHN0cmluZykge1xuICAgIHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihyZXF1aXJlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoY29udmVydERhdGVUb0lTT0V4dGVuZGVkKHRoaXMuZGF0ZSwgdGhpcy5ob3VyKSk7XG4gIH1cblxuICAvKiogSGFiaWxpdGEgYcOnw6NvIHBhcmEgbGltcGFyIG8gY2FtcG8uICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIGNsZWFuPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3AtY2xlYW4nKSBzZXQgc2V0Q2xlYW4oY2xlYW46IHN0cmluZykge1xuICAgIHRoaXMuY2xlYW4gPSBjbGVhbiA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihjbGVhbik7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgdW1hIGRhdGEgbcOtbmltYSBwYXJhIG8gYHBvLWRhdGVwaWNrZXJgLlxuICAgKi9cbiAgQElucHV0KCdwLW1pbi1kYXRlJykgc2V0IG1pbkRhdGUodmFsdWU6IHN0cmluZyB8IERhdGUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCB5ZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcblxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSwgMCwgMCwgMCk7XG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgdGhpcy5fbWluRGF0ZSA9IGRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21pbkRhdGUgPSBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICB9XG5cbiAgZ2V0IG1pbkRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21pbkRhdGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgdW1hIGRhdGEgbcOheGltYSBwYXJhIG8gYHBvLWRhdGVwaWNrZXJgLlxuICAgKi9cbiAgQElucHV0KCdwLW1heC1kYXRlJykgc2V0IG1heERhdGUodmFsdWU6IHN0cmluZyB8IERhdGUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCB5ZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcblxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSwgMjMsIDU5LCA1OSk7XG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgdGhpcy5fbWF4RGF0ZSA9IGRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21heERhdGUgPSBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICB9XG5cbiAgZ2V0IG1heERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBGb3JtYXRvIGRlIGV4aWJpw6fDo28gZGEgZGF0YS5cbiAgICpcbiAgICogVmFsb3JlcyB2w6FsaWRvczpcbiAgICogIC0gYGRkL21tL3l5eXlgXG4gICAqICAtIGBtbS9kZC95eXl5YFxuICAgKiAgLSBgeXl5eS9tbS9kZGBcbiAgICpcbiAgICogQGRlZmF1bHQgYGRkL21tL3l5eXlgXG4gICAqL1xuICBASW5wdXQoJ3AtZm9ybWF0Jykgc2V0IGZvcm1hdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodmFsdWUubWF0Y2goL2RkLykgJiYgdmFsdWUubWF0Y2goL21tLykgJiYgdmFsdWUubWF0Y2goL3l5eXkvKSkge1xuICAgICAgICB0aGlzLl9mb3JtYXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vYmpNYXNrID0gdGhpcy5idWlsZE1hc2soKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoVmFsdWUodGhpcy5kYXRlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9mb3JtYXQgPSBwb0RhdGVwaWNrZXJGb3JtYXREZWZhdWx0O1xuICAgIHRoaXMub2JqTWFzayA9IHRoaXMuYnVpbGRNYXNrKCk7XG4gIH1cblxuICBnZXQgZm9ybWF0KCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQYWRyw6NvIGRlIGZvcm1hdGHDp8OjbyBwYXJhIHNhw61kYSBkbyAqbW9kZWwqLCBpbmRlcGVuZGVudGVtZW50ZSBkbyBmb3JtYXRvIGRlIGVudHJhZGEuXG4gICAqXG4gICAqID4gVmVqYSBvcyB2YWxvcmVzIHbDoWxpZG9zIG5vICplbnVtKiBgUG9EYXRlcGlja2VySXNvRm9ybWF0YC5cbiAgICovXG4gIEBJbnB1dCgncC1pc28tZm9ybWF0Jykgc2V0IGlzb0Zvcm1hdCh2YWx1ZTogUG9EYXRlcGlja2VySXNvRm9ybWF0KSB7XG4gICAgaWYgKE9iamVjdC52YWx1ZXMoUG9EYXRlcGlja2VySXNvRm9ybWF0KS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX2lzb0Zvcm1hdCA9IHZhbHVlO1xuICAgICAgdGhpcy5pc0V4dGVuZGVkSVNPID0gdmFsdWUgPT09IFBvRGF0ZXBpY2tlcklzb0Zvcm1hdC5FeHRlbmRlZDtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNvRm9ybWF0KCkge1xuICAgIHJldHVybiB0aGlzLl9pc29Gb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJZGlvbWEgZG8gRGF0ZXBpY2tlci5cbiAgICpcbiAgICogPiBPIGxvY2FsZSBwYWRyw6NvIHNlcmEgcmVjdXBlcmFkbyBjb20gYmFzZSBubyBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSAqYnJvd3NlciouXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICBfbG9jYWxlPzogc3RyaW5nO1xuICBASW5wdXQoJ3AtbG9jYWxlJykgc2V0IGxvY2FsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2NhbGUgPSB2YWx1ZS5sZW5ndGggPj0gMiA/IHZhbHVlIDogcG9Mb2NhbGVEZWZhdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2NhbGUgPSB0aGlzLnNob3J0TGFuZ3VhZ2U7XG4gICAgfVxuICB9XG4gIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZSB8fCB0aGlzLnNob3J0TGFuZ3VhZ2U7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UpIHtcbiAgICB0aGlzLnNob3J0TGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gIH1cblxuICBzZXQgZGF0ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMuaXNFeHRlbmRlZElTTykge1xuICAgICAgdGhpcy5fZGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlLCBmYWxzZSwgZmFsc2UpIDogdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2RhdGUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gY29udmVydElzb1RvRGF0ZU5vVGltZXpvbmUodmFsdWUpIDogdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGU7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBDbGFzc2UgZGUgbcOhc2NhcmFcbiAgICB0aGlzLm9iak1hc2sgPSB0aGlzLmJ1aWxkTWFzaygpO1xuICB9XG5cbiAgLy8gQ29udmVydGUgdW0gb2JqZXRvIHN0cmluZyBlbSBEYXRlXG4gIGdldERhdGVGcm9tU3RyaW5nKGRhdGVTdHJpbmc6IHN0cmluZykge1xuICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KGRhdGVTdHJpbmcuc3Vic3RyaW5nKHRoaXMuZm9ybWF0LmluZGV4T2YoJ2QnKSwgdGhpcy5mb3JtYXQuaW5kZXhPZignZCcpICsgMiksIDEwKTtcbiAgICBjb25zdCBtb250aCA9IHBhcnNlSW50KGRhdGVTdHJpbmcuc3Vic3RyaW5nKHRoaXMuZm9ybWF0LmluZGV4T2YoJ20nKSwgdGhpcy5mb3JtYXQuaW5kZXhPZignbScpICsgMiksIDEwKSAtIDE7XG4gICAgY29uc3QgeWVhciA9IHBhcnNlSW50KGRhdGVTdHJpbmcuc3Vic3RyaW5nKHRoaXMuZm9ybWF0LmluZGV4T2YoJ3knKSwgdGhpcy5mb3JtYXQuaW5kZXhPZigneScpICsgNCksIDEwKTtcblxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcblxuICAgIHNldFllYXJGcm9tMFRvMTAwKGRhdGUsIHllYXIpO1xuXG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0geWVhciAmJiBkYXRlLmdldE1vbnRoKCkgPT09IG1vbnRoICYmIGRhdGUuZ2V0RGF0ZSgpID09PSBkYXkgPyBkYXRlIDogbnVsbDtcbiAgfVxuXG4gIC8vIEZvcm1hdGEgYSBkYXRhLlxuICBmb3JtYXRUb0RhdGUodmFsdWU6IERhdGUpIHtcbiAgICBsZXQgZGF0ZUZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0O1xuXG4gICAgZGF0ZUZvcm1hdHRlZCA9IGRhdGVGb3JtYXR0ZWQucmVwbGFjZSgnZGQnLCAoJzAnICsgdmFsdWUuZ2V0RGF0ZSgpKS5zbGljZSgtMikpO1xuICAgIGRhdGVGb3JtYXR0ZWQgPSBkYXRlRm9ybWF0dGVkLnJlcGxhY2UoJ21tJywgKCcwJyArICh2YWx1ZS5nZXRNb250aCgpICsgMSkpLnNsaWNlKC0yKSk7XG4gICAgZGF0ZUZvcm1hdHRlZCA9IGRhdGVGb3JtYXR0ZWQucmVwbGFjZSgneXl5eScsIGZvcm1hdFllYXIodmFsdWUuZ2V0RnVsbFllYXIoKSkpO1xuXG4gICAgcmV0dXJuIGRhdGVGb3JtYXR0ZWQ7XG4gIH1cblxuICAvLyBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgY29udHJvbGFyIG8gbW9kZWxvLlxuICBjb250cm9sTW9kZWwoZGF0ZTogRGF0ZSkge1xuICAgIHRoaXMuZGF0ZSA9IGRhdGU7XG4gICAgaWYgKGRhdGUgJiYgdGhpcy5pc0V4dGVuZGVkSVNPKSB7XG4gICAgICB0aGlzLmNhbGxPbkNoYW5nZShjb252ZXJ0RGF0ZVRvSVNPRXh0ZW5kZWQodGhpcy5kYXRlLCB0aGlzLmhvdXIpKTtcbiAgICB9IGVsc2UgaWYgKGRhdGUgJiYgIXRoaXMuaXNFeHRlbmRlZElTTykge1xuICAgICAgdGhpcy5jYWxsT25DaGFuZ2UoY29udmVydERhdGVUb0lTT0RhdGUodGhpcy5kYXRlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGUgPT09IHVuZGVmaW5lZCA/IHRoaXMuY2FsbE9uQ2hhbmdlKCcnKSA6IHRoaXMuY2FsbE9uQ2hhbmdlKCdEYXRhIGludsOhbGlkYScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEV4ZWN1dGEgYSBmdW7Dp8OjbyBvbkNoYW5nZVxuICBjYWxsT25DaGFuZ2UodmFsdWU6IGFueSwgcmV0cnk6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMub25DaGFuZ2VNb2RlbCAmJiB2YWx1ZSAhPT0gdGhpcy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlTW9kZWwodmFsdWUpO1xuICAgICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gdmFsdWU7XG4gICAgfSBlbHNlIGlmIChyZXRyeSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNhbGxPbkNoYW5nZSh2YWx1ZSwgZmFsc2UpKTtcbiAgICB9XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBvcyBlc3RhZG9zIGRlIGhhYmlsaXRhZG8gdmlhIGZvcm1zIGFwaVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIGFzIG11ZGFuw6dhcyBlIG7Do28gYXR1YWxpemFyIGF1dG9tYXRpY2FtZW50ZSBvIE1vZGVsXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZU1vZGVsID0gZnVuYztcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIGFzIG11ZGFuw6dhcyBlIG7Do28gYXR1YWxpemFyIGF1dG9tYXRpY2FtZW50ZSBvIE1vZGVsXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkTW9kZWwgPSBmdW5jO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICAvLyBWZXJpZmljYSBzZSBqw6EgcG9zc3VpIGFsZ3VtIGVycm9yIHBhdHRlcm4gcGFkcsOjby5cbiAgICB0aGlzLmVycm9yUGF0dGVybiA9XG4gICAgICB0aGlzLmVycm9yUGF0dGVybiAhPT0gJ0RhdGEgaW52w6FsaWRhJyAmJiB0aGlzLmVycm9yUGF0dGVybiAhPT0gJ0RhdGEgZm9yYSBkbyBwZXLDrW9kbycgPyB0aGlzLmVycm9yUGF0dGVybiA6ICcnO1xuXG4gICAgaWYgKGRhdGVGYWlsZWQoYy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JQYXR0ZXJuID0gdGhpcy5lcnJvclBhdHRlcm4gfHwgJ0RhdGEgaW52w6FsaWRhJztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZToge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBjLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlICYmICF2YWxpZGF0ZURhdGVSYW5nZSh0aGlzLmRhdGUsIHRoaXMuX21pbkRhdGUsIHRoaXMuX21heERhdGUpKSB7XG4gICAgICB0aGlzLmVycm9yUGF0dGVybiA9IHRoaXMuZXJyb3JQYXR0ZXJuIHx8ICdEYXRhIGZvcmEgZG8gcGVyw61vZG8nO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVNb2RlbChtb2RlbDogYW55KSB7XG4gICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hhbmdlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRvckNoYW5nZShtb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmV0b3JuYSB1bSBvYmpldG8gZG8gdGlwbyBQb01hc2sgY29tIGEgbWFzY2FyYSBjb25maWd1cmFkYS5cbiAgcHJvdGVjdGVkIGJ1aWxkTWFzaygpIHtcbiAgICBsZXQgbWFzayA9IHRoaXMuZm9ybWF0LnRvVXBwZXJDYXNlKCk7XG5cbiAgICBtYXNrID0gbWFzay5yZXBsYWNlKC9ERC9nLCAnOTknKTtcbiAgICBtYXNrID0gbWFzay5yZXBsYWNlKC9NTS9nLCAnOTknKTtcbiAgICBtYXNrID0gbWFzay5yZXBsYWNlKC9ZWVlZL2csICc5OTk5Jyk7XG5cbiAgICByZXR1cm4gbmV3IFBvTWFzayhtYXNrLCB0cnVlKTtcbiAgfVxuXG4gIGFic3RyYWN0IHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQ7XG5cbiAgYWJzdHJhY3QgcmVmcmVzaFZhbHVlKHZhbHVlOiBEYXRlKTogdm9pZDtcbn1cbiJdfQ==
|
|
428
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kYXRlcGlja2VyL3BvLWRhdGVwaWNrZXItYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUNMLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7QUFFckYsTUFBTSx5QkFBeUIsR0FBVyxZQUFZLENBQUM7QUFFdkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBRUgsTUFBTSxPQUFnQix5QkFBeUI7SUF5UTdDLFlBQW9CLGVBQWtDO1FBQWxDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQXhRdEQ7Ozs7Ozs7Ozs7V0FVRztRQUNvQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBb0JsRTs7OztXQUlHO1FBQ3VCLGlCQUFZLEdBQVksRUFBRSxDQUFDO1FBRXJEOzs7Ozs7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QXJDLEtBQUs7bUJBQUMsaUJBQWlCO1lBU04sTUFBTTtrQkFBdkIsTUFBTTttQkFBQyxRQUFRO1lBU0ksUUFBUTtrQkFBM0IsTUFBTTttQkFBQyxVQUFVO1lBNkJjLGNBQWM7a0JBQTdDLEtBQUs7bUJBQUMsbUJBQW1CO1lBZUUsV0FBVztrQkFBdEMsS0FBSzttQkFBQyxlQUFlO1lBV0csV0FBVztrQkFBbkMsS0FBSzttQkFBQyxZQUFZO1lBU00sV0FBVztrQkFBbkMsS0FBSzttQkFBQyxZQUFZO1lBT00sV0FBVztrQkFBbkMsS0FBSzttQkFBQyxZQUFZO1lBU0csUUFBUTtrQkFBN0IsS0FBSzttQkFBQyxTQUFTO1lBV1MsT0FBTztrQkFBL0IsS0FBSzttQkFBQyxZQUFZO1lBMEJNLE9BQU87a0JBQS9CLEtBQUs7bUJBQUMsWUFBWTtZQWlDSSxNQUFNO2tCQUE1QixLQUFLO21CQUFDLFVBQVU7WUEyQlUsU0FBUztrQkFBbkMsS0FBSzttQkFBQyxjQUFjO1lBc0JFLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgY29udmVydERhdGVUb0lTT0RhdGUsXG4gIGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCxcbiAgY29udmVydElzb1RvRGF0ZSxcbiAgY29udmVydFRvQm9vbGVhbixcbiAgZm9ybWF0WWVhcixcbiAgaXNUeXBlb2YsXG4gIHNldFllYXJGcm9tMFRvMTAwLFxuICB2YWxpZGF0ZURhdGVSYW5nZVxufSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IGRhdGVGYWlsZWQsIHJlcXVpcmVkRmFpbGVkIH0gZnJvbSAnLi8uLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgUG9NYXNrIH0gZnJvbSAnLi4vcG8taW5wdXQvcG8tbWFzayc7XG5cbmltcG9ydCB7IFBvRGF0ZXBpY2tlcklzb0Zvcm1hdCB9IGZyb20gJy4vZW51bXMvcG8tZGF0ZXBpY2tlci1pc28tZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcblxuY29uc3QgcG9EYXRlcGlja2VyRm9ybWF0RGVmYXVsdDogc3RyaW5nID0gJ2RkL21tL3l5eXknO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gYHBvLWRhdGVwaWNrZXJgIMOpIHVtIGNvbXBvbmVudGUgZXNwZWPDrWZpY28gcGFyYSBtYW5pcHVsYcOnw6NvIGRlIGRhdGFzIHBlcm1pdGluZG8gYSBkaWdpdGHDp8OjbyBlIC8gb3Ugc2VsZcOnw6NvLlxuICpcbiAqIE8gZm9ybWF0byBkZSBleGliacOnw6NvIGRhIGRhdGEsIG91IHNlamEsIG8gZm9ybWF0byBxdWUgw6kgYXByZXNlbnRhZG8gYW8gdXN1w6FyaW8gw6kgbyBkZC9tbS95eXl5LFxuICogbWFzIHBvZGVtIHNlciBkZWZpbmlkb3Mgb3V0cm9zIHBhZHLDtWVzICh2ZWphIG1haXMgbmEgcHJvcHJpZWRhZGUgYHAtZm9ybWF0YCkuXG4gKlxuICogTyBpZGlvbWEgcGFkcsOjbyBkbyBjYWxlbmTDoXJpbyBzZXLDoSBleGliaWRvIGRlIGFjb3JkbyBjb20gbyBuYXZlZ2Fkb3IsIGNhc28gdGVuaGEgbmVjZXNzaWRhZGUgZGUgYWx0ZXJhclxuICogdXNlIGEgcHJvcHJpZWRhZGUgYHAtbG9jYWxlYC5cbiAqXG4gKiBPIGRhdGVwaWNrZXIgYWNlaXRhIHRyw6pzIGZvcm1hdG9zIGRlIGRhdGE6IG8gRTg2MDFEWncgKHl5eXktbW0tZGRUaGg6bW06c3MrfC1oaDptbSksIG8gRTg2MDFEQXcgKHl5eXktbW0tZGQpIGUgb1xuICogRGF0ZSBwYWRyw6NvIGRvIEphdmFzY3JpcHQuXG4gKlxuICogPiBQb3IgcGFkcsOjbywgbyBmb3JtYXRvIGRlIHNhw61kYSBkbyAqbW9kZWwqIHNlIGFqdXN0YXLDoSBjb25mb3JtZSBvIGZvcm1hdG8gZGUgZW50cmFkYS4gU2UgcG9yIGFjYXNvIHByZWNpc2FyIGNvbnRyb2xhciBvIHZhbG9yIGRlIHNhw61kYSxcbiAqIGEgcHJvcHJpZWRhZGUgYHAtaXNvLWZvcm1hdGAgcHJvdsOqIGVzc2UgY29udHJvbGUgaW5kZXBlbmRlbnRlbWVudGUgZG8gZm9ybWF0byBkZSBlbnRyYWRhLiBWZWphIGFiYWl4byBvcyBmb3JtYXRvcyBkaXNwb27DrXZlaXM6XG4gKlxuICogLSBGb3JtYXRvIGRlIGVudHJhZGEgZSBzYcOtZGEgKEU4NjAxRFp3KSAtIGAnMjAxNy0xMS0yOFQwMDowMDowMC0wMjowMCdgO1xuICpcbiAqIC0gRm9ybWF0byBkZSBlbnRyYWRhIGUgc2HDrWRhIChFODYwMURBdykgLSBgJzIwMTctMTEtMjgnYDtcbiAqXG4gKiAtIEZvcm1hdG8gZGUgZW50cmFkYSAoRGF0ZSkgLSBgbmV3IERhdGUoMjAxNywgMTAsIDI4KWAgZSBzYcOtZGEgKEU4NjAxREF3KSAtIGAnMjAxNy0xMS0yOCdgO1xuICpcbiAqICoqSW1wb3J0YW50ZToqKlxuICpcbiAqIC0gUGFyYSB1dGlsaXphciBkYXRhcyBjb20gYW5vIGluZmVyaW9yIGEgMTAwLCB2ZXJpZmljYXIgbyBjb21wb3J0YW1lbnRvIGRvIFtgbmV3IERhdGVgXShodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2pzL2pzX2RhdGVzLmFzcClcbiAqIGUgdXRpbGl6YXIgbyBtw6l0b2RvIFtgc2V0RnVsbFllYXJgXShodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2pzcmVmL2pzcmVmX3NldGZ1bGx5ZWFyLmFzcCkuXG4gKiAtIENhc28gYSBkYXRhIGVzdGVqYSBpbnbDoWxpZGEsIG8gYG1vZGVsYCByZWNlYmVyw6EgKionRGF0YSBpbnbDoWxpZGEnKiouXG4gKiAtIENhc28gbyBgaW5wdXRgIGVzdGVqYSBwYXNzYW5kbyB1bSBgWyhuZ01vZGVsKV1gLCBtYXMgbsOjbyB0ZW5oYSB1bSBgbmFtZWAsIGVudMOjbyBpcsOhIG9jb3JyZXIgdW0gZXJyb1xuICogZG8gcHLDs3ByaW8gQW5ndWxhciAoYFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cImApLlxuICpcbiAqIEV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiA8cG8tZGF0ZXBpY2tlclxuICogICBbKG5nTW9kZWwpXT1cInBlc3NvYS5ub21lXCJcbiAqICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gKiA8L3BvLWRhdGVwaWNrZXI+XG4gKiBgYGBcbiAqXG4gKiA+IE7Do28gZXNxdWXDp2EgZGUgaW1wb3J0YXIgbyBgRm9ybXNNb2R1bGVgIGVtIHNldSBtw7NkdWxvLCB0YWwgY29tbyBwYXJhIHV0aWxpemFyIG8gYGlucHV0IGRlZmF1bHRgLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0RhdGVwaWNrZXJCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8tZm9jdXMnKSBASW5wdXRCb29sZWFuKCkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyogTm9tZSBkbyBjb21wb25lbnRlIGRhdGVwaWNrZXIuICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNZW5zYWdlbSBhcHJlc2VudGFkYSBxdWFuZG8gYSBkYXRhIGZvciBpbnbDoWxpZGEgb3UgZm9yYSBkbyBwZXLDrW9kby5cbiAgICpcbiAgICogPiBFc3RhIG1lbnNhZ2VtIG7Do28gw6kgYXByZXNlbnRhZGEgcXVhbmRvIG8gY2FtcG8gZXN0aXZlciB2YXppbywgbWVzbW8gcXVlIGVsZSBzZWphIG9icmlnYXTDs3Jpby5cbiAgICovXG4gIEBJbnB1dCgncC1lcnJvci1wYXR0ZXJuJykgZXJyb3JQYXR0ZXJuPzogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBzYWlyIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1ibHVyJykgb25ibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gYWx0ZXJhciB2YWxvciBkbyBjYW1wby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgb25jaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIGZpcnN0U3RhcnQgPSB0cnVlO1xuICBwcm90ZWN0ZWQgaG91cjogc3RyaW5nID0gJ1QwMDowMDowMS0wMDowMCc7XG4gIHByb3RlY3RlZCBpc0V4dGVuZGVkSVNPOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBvYmpNYXNrOiBhbnk7XG4gIHByb3RlY3RlZCBvbkNoYW5nZU1vZGVsOiBhbnkgPSBudWxsO1xuICBwcm90ZWN0ZWQgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XG4gIHByb3RlY3RlZCBvblRvdWNoZWRNb2RlbDogYW55ID0gbnVsbDtcblxuICBwcml2YXRlIF9mb3JtYXQ/OiBzdHJpbmcgPSBwb0RhdGVwaWNrZXJGb3JtYXREZWZhdWx0O1xuICBwcml2YXRlIF9pc29Gb3JtYXQ6IFBvRGF0ZXBpY2tlcklzb0Zvcm1hdDtcbiAgcHJpdmF0ZSBfbWF4RGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZTtcbiAgcHJpdmF0ZSBfbm9BdXRvY29tcGxldGU/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyPzogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgc2hvcnRMYW5ndWFnZTogc3RyaW5nO1xuICBwcml2YXRlIHByZXZpb3VzVmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBfZGF0ZTogRGF0ZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgYSBwcm9wcmllZGFkZSBuYXRpdmEgYGF1dG9jb21wbGV0ZWAgZG8gY2FtcG8gY29tbyBgb2ZmYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW5vLWF1dG9jb21wbGV0ZScpIHNldCBub0F1dG9jb21wbGV0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25vQXV0b2NvbXBsZXRlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgbm9BdXRvY29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vQXV0b2NvbXBsZXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTWVuc2FnZW0gcXVlIGFwYXJlY2Vyw6EgZW5xdWFudG8gbyBjYW1wbyBuw6NvIGVzdGl2ZXIgcHJlZW5jaGlkby5cbiAgICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlcicpIHNldCBwbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSBpc1R5cGVvZihwbGFjZWhvbGRlciwgJ3N0cmluZycpID8gcGxhY2Vob2xkZXIgOiAnJztcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICAvKiogRGVzYWJpbGl0YSBvIGNhbXBvLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICBkaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IHNldERpc2FibGVkKGRpc2FibGVkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oZGlzYWJsZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICB9XG5cbiAgLyoqIFRvcm5hIG8gZWxlbWVudG8gc29tZW50ZSBsZWl0dXJhLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICByZWFkb25seT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCdwLXJlYWRvbmx5Jykgc2V0IHNldFJlYWRvbmx5KHJlYWRvbmx5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlYWRvbmx5ID0gcmVhZG9ubHkgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4ocmVhZG9ubHkpO1xuICB9XG5cbiAgLyoqIEZheiBjb20gcXVlIG8gY2FtcG8gc2VqYSBvYnJpZ2F0w7NyaW8uICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIHJlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgc2V0UmVxdWlyZWQocmVxdWlyZWQ6IHN0cmluZykge1xuICAgIHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihyZXF1aXJlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoY29udmVydERhdGVUb0lTT0V4dGVuZGVkKHRoaXMuZGF0ZSwgdGhpcy5ob3VyKSk7XG4gIH1cblxuICAvKiogSGFiaWxpdGEgYcOnw6NvIHBhcmEgbGltcGFyIG8gY2FtcG8uICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIGNsZWFuPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ3AtY2xlYW4nKSBzZXQgc2V0Q2xlYW4oY2xlYW46IHN0cmluZykge1xuICAgIHRoaXMuY2xlYW4gPSBjbGVhbiA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihjbGVhbik7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgdW1hIGRhdGEgbcOtbmltYSBwYXJhIG8gYHBvLWRhdGVwaWNrZXJgLlxuICAgKi9cbiAgQElucHV0KCdwLW1pbi1kYXRlJykgc2V0IG1pbkRhdGUodmFsdWU6IHN0cmluZyB8IERhdGUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCB5ZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcblxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSwgMCwgMCwgMCk7XG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgdGhpcy5fbWluRGF0ZSA9IGRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21pbkRhdGUgPSBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICB9XG5cbiAgZ2V0IG1pbkRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21pbkRhdGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgdW1hIGRhdGEgbcOheGltYSBwYXJhIG8gYHBvLWRhdGVwaWNrZXJgLlxuICAgKi9cbiAgQElucHV0KCdwLW1heC1kYXRlJykgc2V0IG1heERhdGUodmFsdWU6IHN0cmluZyB8IERhdGUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCB5ZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcblxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSwgMjMsIDU5LCA1OSk7XG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgdGhpcy5fbWF4RGF0ZSA9IGRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21heERhdGUgPSBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICB9XG5cbiAgZ2V0IG1heERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBGb3JtYXRvIGRlIGV4aWJpw6fDo28gZGEgZGF0YS5cbiAgICpcbiAgICogVmFsb3JlcyB2w6FsaWRvczpcbiAgICogIC0gYGRkL21tL3l5eXlgXG4gICAqICAtIGBtbS9kZC95eXl5YFxuICAgKiAgLSBgeXl5eS9tbS9kZGBcbiAgICpcbiAgICogQGRlZmF1bHQgYGRkL21tL3l5eXlgXG4gICAqL1xuICBASW5wdXQoJ3AtZm9ybWF0Jykgc2V0IGZvcm1hdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodmFsdWUubWF0Y2goL2RkLykgJiYgdmFsdWUubWF0Y2goL21tLykgJiYgdmFsdWUubWF0Y2goL3l5eXkvKSkge1xuICAgICAgICB0aGlzLl9mb3JtYXQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vYmpNYXNrID0gdGhpcy5idWlsZE1hc2soKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoVmFsdWUodGhpcy5kYXRlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9mb3JtYXQgPSBwb0RhdGVwaWNrZXJGb3JtYXREZWZhdWx0O1xuICAgIHRoaXMub2JqTWFzayA9IHRoaXMuYnVpbGRNYXNrKCk7XG4gIH1cblxuICBnZXQgZm9ybWF0KCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQYWRyw6NvIGRlIGZvcm1hdGHDp8OjbyBwYXJhIHNhw61kYSBkbyAqbW9kZWwqLCBpbmRlcGVuZGVudGVtZW50ZSBkbyBmb3JtYXRvIGRlIGVudHJhZGEuXG4gICAqXG4gICAqID4gVmVqYSBvcyB2YWxvcmVzIHbDoWxpZG9zIG5vICplbnVtKiBgUG9EYXRlcGlja2VySXNvRm9ybWF0YC5cbiAgICovXG4gIEBJbnB1dCgncC1pc28tZm9ybWF0Jykgc2V0IGlzb0Zvcm1hdCh2YWx1ZTogUG9EYXRlcGlja2VySXNvRm9ybWF0KSB7XG4gICAgaWYgKE9iamVjdC52YWx1ZXMoUG9EYXRlcGlja2VySXNvRm9ybWF0KS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX2lzb0Zvcm1hdCA9IHZhbHVlO1xuICAgICAgdGhpcy5pc0V4dGVuZGVkSVNPID0gdmFsdWUgPT09IFBvRGF0ZXBpY2tlcklzb0Zvcm1hdC5FeHRlbmRlZDtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNvRm9ybWF0KCkge1xuICAgIHJldHVybiB0aGlzLl9pc29Gb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJZGlvbWEgZG8gRGF0ZXBpY2tlci5cbiAgICpcbiAgICogPiBPIGxvY2FsZSBwYWRyw6NvIHNlcmEgcmVjdXBlcmFkbyBjb20gYmFzZSBubyBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSAqYnJvd3NlciouXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICBfbG9jYWxlPzogc3RyaW5nO1xuICBASW5wdXQoJ3AtbG9jYWxlJykgc2V0IGxvY2FsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2NhbGUgPSB2YWx1ZS5sZW5ndGggPj0gMiA/IHZhbHVlIDogcG9Mb2NhbGVEZWZhdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2NhbGUgPSB0aGlzLnNob3J0TGFuZ3VhZ2U7XG4gICAgfVxuICB9XG4gIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZSB8fCB0aGlzLnNob3J0TGFuZ3VhZ2U7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UpIHtcbiAgICB0aGlzLnNob3J0TGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gIH1cblxuICBzZXQgZGF0ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fZGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlLCBmYWxzZSwgZmFsc2UpIDogdmFsdWU7XG4gIH1cblxuICBnZXQgZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIENsYXNzZSBkZSBtw6FzY2FyYVxuICAgIHRoaXMub2JqTWFzayA9IHRoaXMuYnVpbGRNYXNrKCk7XG4gIH1cblxuICAvLyBDb252ZXJ0ZSB1bSBvYmpldG8gc3RyaW5nIGVtIERhdGVcbiAgZ2V0RGF0ZUZyb21TdHJpbmcoZGF0ZVN0cmluZzogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF5ID0gcGFyc2VJbnQoZGF0ZVN0cmluZy5zdWJzdHJpbmcodGhpcy5mb3JtYXQuaW5kZXhPZignZCcpLCB0aGlzLmZvcm1hdC5pbmRleE9mKCdkJykgKyAyKSwgMTApO1xuICAgIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQoZGF0ZVN0cmluZy5zdWJzdHJpbmcodGhpcy5mb3JtYXQuaW5kZXhPZignbScpLCB0aGlzLmZvcm1hdC5pbmRleE9mKCdtJykgKyAyKSwgMTApIC0gMTtcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQoZGF0ZVN0cmluZy5zdWJzdHJpbmcodGhpcy5mb3JtYXQuaW5kZXhPZigneScpLCB0aGlzLmZvcm1hdC5pbmRleE9mKCd5JykgKyA0KSwgMTApO1xuXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpO1xuXG4gICAgc2V0WWVhckZyb20wVG8xMDAoZGF0ZSwgeWVhcik7XG5cbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpID09PSB5ZWFyICYmIGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9udGggJiYgZGF0ZS5nZXREYXRlKCkgPT09IGRheSA/IGRhdGUgOiBudWxsO1xuICB9XG5cbiAgLy8gRm9ybWF0YSBhIGRhdGEuXG4gIGZvcm1hdFRvRGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgIGxldCBkYXRlRm9ybWF0dGVkID0gdGhpcy5mb3JtYXQ7XG5cbiAgICBkYXRlRm9ybWF0dGVkID0gZGF0ZUZvcm1hdHRlZC5yZXBsYWNlKCdkZCcsICgnMCcgKyB2YWx1ZS5nZXREYXRlKCkpLnNsaWNlKC0yKSk7XG4gICAgZGF0ZUZvcm1hdHRlZCA9IGRhdGVGb3JtYXR0ZWQucmVwbGFjZSgnbW0nLCAoJzAnICsgKHZhbHVlLmdldE1vbnRoKCkgKyAxKSkuc2xpY2UoLTIpKTtcbiAgICBkYXRlRm9ybWF0dGVkID0gZGF0ZUZvcm1hdHRlZC5yZXBsYWNlKCd5eXl5JywgZm9ybWF0WWVhcih2YWx1ZS5nZXRGdWxsWWVhcigpKSk7XG5cbiAgICByZXR1cm4gZGF0ZUZvcm1hdHRlZDtcbiAgfVxuXG4gIC8vIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBjb250cm9sYXIgbyBtb2RlbG8uXG4gIGNvbnRyb2xNb2RlbChkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy5kYXRlID0gZGF0ZTtcbiAgICBpZiAoZGF0ZSAmJiB0aGlzLmlzRXh0ZW5kZWRJU08pIHtcbiAgICAgIHRoaXMuY2FsbE9uQ2hhbmdlKGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZCh0aGlzLmRhdGUsIHRoaXMuaG91cikpO1xuICAgIH0gZWxzZSBpZiAoZGF0ZSAmJiAhdGhpcy5pc0V4dGVuZGVkSVNPKSB7XG4gICAgICB0aGlzLmNhbGxPbkNoYW5nZShjb252ZXJ0RGF0ZVRvSVNPRGF0ZSh0aGlzLmRhdGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZSA9PT0gdW5kZWZpbmVkID8gdGhpcy5jYWxsT25DaGFuZ2UoJycpIDogdGhpcy5jYWxsT25DaGFuZ2UoJ0RhdGEgaW52w6FsaWRhJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gRXhlY3V0YSBhIGZ1bsOnw6NvIG9uQ2hhbmdlXG4gIGNhbGxPbkNoYW5nZSh2YWx1ZTogYW55LCByZXRyeTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAodGhpcy5vbkNoYW5nZU1vZGVsICYmIHZhbHVlICE9PSB0aGlzLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgIHRoaXMub25DaGFuZ2VNb2RlbCh2YWx1ZSk7XG4gICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHJldHJ5KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2FsbE9uQ2hhbmdlKHZhbHVlLCBmYWxzZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPbkNoYW5nZShmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlTW9kZWwgPSBmdW5jO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRNb2RlbCA9IGZ1bmM7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIC8vIFZlcmlmaWNhIHNlIGrDoSBwb3NzdWkgYWxndW0gZXJyb3IgcGF0dGVybiBwYWRyw6NvLlxuICAgIHRoaXMuZXJyb3JQYXR0ZXJuID1cbiAgICAgIHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnRGF0YSBpbnbDoWxpZGEnICYmIHRoaXMuZXJyb3JQYXR0ZXJuICE9PSAnRGF0YSBmb3JhIGRvIHBlcsOtb2RvJyA/IHRoaXMuZXJyb3JQYXR0ZXJuIDogJyc7XG5cbiAgICBpZiAoZGF0ZUZhaWxlZChjLnZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvclBhdHRlcm4gPSB0aGlzLmVycm9yUGF0dGVybiB8fCAnRGF0YSBpbnbDoWxpZGEnO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHJlcXVpcmVkRmFpbGVkKHRoaXMucmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIGMudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGUgJiYgIXZhbGlkYXRlRGF0ZVJhbmdlKHRoaXMuZGF0ZSwgdGhpcy5fbWluRGF0ZSwgdGhpcy5fbWF4RGF0ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JQYXR0ZXJuID0gdGhpcy5lcnJvclBhdHRlcm4gfHwgJ0RhdGEgZm9yYSBkbyBwZXLDrW9kbyc7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGU6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKG1vZGVsOiBhbnkpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXRvcm5hIHVtIG9iamV0byBkbyB0aXBvIFBvTWFzayBjb20gYSBtYXNjYXJhIGNvbmZpZ3VyYWRhLlxuICBwcm90ZWN0ZWQgYnVpbGRNYXNrKCkge1xuICAgIGxldCBtYXNrID0gdGhpcy5mb3JtYXQudG9VcHBlckNhc2UoKTtcblxuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UoL0REL2csICc5OScpO1xuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UoL01NL2csICc5OScpO1xuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UoL1lZWVkvZywgJzk5OTknKTtcblxuICAgIHJldHVybiBuZXcgUG9NYXNrKG1hc2ssIHRydWUpO1xuICB9XG5cbiAgYWJzdHJhY3Qgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZDtcblxuICBhYnN0cmFjdCByZWZyZXNoVmFsdWUodmFsdWU6IERhdGUpOiB2b2lkO1xufVxuIl19
|
|
@@ -119,20 +119,10 @@ export function convertIsoToDate(value, start, end) {
|
|
|
119
119
|
return date;
|
|
120
120
|
}
|
|
121
121
|
else {
|
|
122
|
-
|
|
123
|
-
const timezone = new Date().getTimezoneOffset() * 60000;
|
|
124
|
-
return new Date(milliseconds + timezone);
|
|
122
|
+
return new Date(year, month - 1, day);
|
|
125
123
|
}
|
|
126
124
|
}
|
|
127
125
|
}
|
|
128
|
-
export function convertIsoToDateNoTimezone(value) {
|
|
129
|
-
if (value) {
|
|
130
|
-
const day = parseInt(value.substring(8, 10), 10);
|
|
131
|
-
const month = parseInt(value.substring(5, 7), 10);
|
|
132
|
-
const year = parseInt(value.substring(0, 4), 10);
|
|
133
|
-
return new Date(year, month - 1, day);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
126
|
export function convertDateToISODate(date) {
|
|
137
127
|
if (date) {
|
|
138
128
|
const getMonth = date.getMonth() + 1;
|
|
@@ -516,4 +506,4 @@ export function getFocusableElements(parentElement) {
|
|
|
516
506
|
const focusableElements = 'button:not([disabled]), [href], input, select, textarea, [tabindex]:not([tabindex="-1"]';
|
|
517
507
|
return parentElement.querySelectorAll(focusableElements);
|
|
518
508
|
}
|
|
519
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvdXRpbHMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTFGOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sdUJBQXVCLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBYSxFQUFFLFFBQVEsR0FBRyxDQUFDO0lBQ3JELElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQztJQUN4QixNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNsRSxRQUFRLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFdkMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ3BHLENBQUM7QUFFRDs7R0FFRztBQUNI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QUFFO1FBQ3JDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQy9ELFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBVTtJQUMzQyxPQUFPLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoRixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsYUFBc0I7SUFDekQsTUFBTSxpQkFBaUIsR0FBRyx5RkFBeUYsQ0FBQztJQUNwSCxPQUFPLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwb0xvY2FsZXMsIHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXRpbGl6ZSBvIG3DqXRvZG8gYGdldFNob3J0QnJvd3Nlckxhbmd1YWdlYC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldG9ybmEgaWRpb21hIGRvIGJyb3dzZXIgb3UgbyBpZGlvbWEgcGFkcsOjby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyb3dzZXJMYW5ndWFnZSgpIHtcbiAgcmV0dXJuIGdldFNob3J0QnJvd3Nlckxhbmd1YWdlKCk7XG59XG5cbi8qKlxuICogQ29udmVydGUgZSBmb3JtYXRhIG9zIGJ5dGVzIGVtIGZvcm1hdG8gbWFpcyBsZWfDrXZlbCBwYXJhIG8gdXN1w6FyaW8uXG4gKlxuICogUG9yIGV4ZW1wbG86XG4gKiAtIDMxNDU3MjgwIGVtIDMwIE1CLlxuICogLSAyMTQ3NDgzNjQ4MCBlbSAyMCBHQi5cbiAqIC0gMTIuNTY2NjY2NiBlbSAxMi41NyBCeXRlcyAoZHVhcyBjYXNhcyBkZWNpbWFpcykuXG4gKlxuICogQHBhcmFtIGJ5dGVzIHtudW1iZXJ9IFZhbG9yIGVtIGJ5dGVzXG4gKiBAcGFyYW0gZGVjaW1hbHMge251bWJlcn0gUXVhbnRpZGFkZSBkZSBjYXNhcyBkZWNpbWFpcyBxdWUgdGVyw6EgYXDDs3MgYSBjb252ZXJzw6NvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Qnl0ZXMoYnl0ZXM6IG51bWJlciwgZGVjaW1hbHMgPSAyKTogc3RyaW5nIHtcbiAgaWYgKCFieXRlcykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBtdWx0aXBsaWVyID0gMTAyNDtcbiAgY29uc3Qgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gIGNvbnN0IHJlc3VsdCA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2cobXVsdGlwbGllcikpO1xuICBkZWNpbWFscyA9IGRlY2ltYWxzIDwgMCA/IDAgOiBkZWNpbWFscztcblxuICByZXR1cm4gYCR7cGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhtdWx0aXBsaWVyLCByZXN1bHQpKS50b0ZpeGVkKGRlY2ltYWxzKSl9ICR7c2l6ZXNbcmVzdWx0XX1gO1xufVxuXG4vKipcbiAqIFJldG9ybmEgbyBpZGlvbWEgYXR1YWwgZG8gbmF2ZWdhZG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCcm93c2VyTGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgLy8gbmF2aWdhdG9yLnVzZXJMYW5ndWFnZSBpcyB0aGUgdmFsdWUgZm9yIElFMTBcbiAgY29uc3QgbGFuZ3VhZ2UgPSBuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgbmF2aWdhdG9yWyd1c2VyTGFuZ3VhZ2UnXTtcbiAgY29uc3Qgc2hvcnRMYW5ndWFnZSA9IGdldFNob3J0TGFuZ3VhZ2UobGFuZ3VhZ2UpO1xuXG4gIHJldHVybiBwb0xvY2FsZXMuaW5jbHVkZXMoc2hvcnRMYW5ndWFnZSkgPyBsYW5ndWFnZSA6IHBvTG9jYWxlRGVmYXVsdDtcbn1cblxuLyoqXG4gKiBSZXRvcm5hIG8gaWRpb21hIGRvIG5hdmVnYWRvciwgY29tIHNvbWVudGUgYXMgZHVhcyBwcmltZWlyYXMgbGV0cmFzLiBQb3IgZXhlbXBsbzogXCJwdFwiIG91IFwiZXNcIi5cbiAqXG4gKiBDYXNvIG8gdmFsb3IgcmV0b3JuYWRvIHBlbG8gbmF2ZWdhZG9yIG7Do28gZXN0aXZlciBkZW50cm8gZG9zIGlkaW9tYXMgc3Vwb3J0YWRvcyBwZWxvIFBPLFxuICogc2Vyw6EgcmV0b3JuYWRvIGEgbGluZ3VhZ2VtIHBhZHLDo28gKHBvTG9jYWxlRGVmYXVsdCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG9ydEJyb3dzZXJMYW5ndWFnZSgpOiBzdHJpbmcge1xuICByZXR1cm4gZ2V0U2hvcnRMYW5ndWFnZShnZXRCcm93c2VyTGFuZ3VhZ2UoKSk7XG59XG5cbi8qKlxuICogUmV0b3JuYSBvIGlkaW9tYSBjb20gc29tZW50ZSBhIGFicmV2aWHDp8OjbyBkbyBpZGlvbWEgKGR1YXMgcHJpbWVpcmFzIGxldHJhcykuXG4gKiBQb3IgZXhlbXBsbzogXCJwdFwiIG91IFwiZXNcIi5cbiAqXG4gKiBAcGFyYW0gbGFuZ3VhZ2Uge3N0cmluZ30gbGluZ3VhZ2VtLlxuICpcbiAqIEByZXR1cm5zIHNpZ2xhIGRvIGlkaW9tYSBwYWRyw6NvIHtzdHJpbmd9LlxuICpcbiAqIEBkZWZhdWx0IHB0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG9ydExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gKGxhbmd1YWdlIHx8IHBvTG9jYWxlRGVmYXVsdCkudG9Mb3dlckNhc2UoKS5zdWJzdHJpbmcoMCwgMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xhbmd1YWdlKHZhbHVlKSB7XG4gIGNvbnN0IGxhbmd1YWdlUmVnZXggPSBuZXcgUmVnRXhwKCdeW2Etel17Mn0oLVthLXpdezJ9KT8kJywgJ2knKTtcblxuICByZXR1cm4gbGFuZ3VhZ2VSZWdleC50ZXN0KHZhbHVlKTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmV4cG9ydCBmdW5jdGlvbiByZWxvYWRDdXJyZW50UGFnZSgpIHtcbiAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihsb2NhdGlvbi5ocmVmKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0Jvb2xlYW4odmFsOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gdmFsLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIHJldHVybiB2YWwgPT09ICd0cnVlJyB8fCB2YWwgPT09ICdvbicgfHwgdmFsID09PSAnJztcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWwgPT09IDE7XG4gIH1cblxuICByZXR1cm4gISF2YWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9JbnQodmFsdWU6IGFueSwgdmFsdWVEZWZhdWx0PzogYW55KTogbnVtYmVyIHtcbiAgY29uc3QgdmFsaWROdW1iZXIgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICBjb25zdCB2YWxpZERlZmF1bHRWYWx1ZSA9IHBhcnNlSW50KHZhbHVlRGVmYXVsdCwgMTApO1xuICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YWxpZERlZmF1bHRWYWx1ZSB8fCB2YWxpZERlZmF1bHRWYWx1ZSA9PT0gMCA/IHZhbGlkRGVmYXVsdFZhbHVlIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB2YWxpZE51bWJlciB8fCB2YWxpZE51bWJlciA9PT0gMCA/IHZhbGlkTnVtYmVyIDogZGVmYXVsdFZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlb2Yob2JqZWN0OiBhbnksIHR5cGU6IGFueSkge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gdHlwZTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGZuIEZ1bsOnw6NvIHF1ZSBzZXLDoSBleGVjdXRhZGEgZGVudHJvIGRvIGNvbnRleHRvLiBQb2RlbmRvIHNlciBvIG5vbWUgZGEgZnVuw6fDo29cbiAqIG91IGEgcmVmZXLDqm5jaWEgZGEgbWVzbWEuXG4gKlxuICogQHBhcmFtIGNvbnRleHQgQ29udGV4dG8gZG8gcXVhbCBhIGZ1bsOnw6NvIHNlcsOhIGV4ZWN1dGFkYS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGxGdW5jdGlvbihmbjogYW55LCBjb250ZXh0OiBhbnksIHBhcmFtPyk6IHZvaWQge1xuICBpZiAoaXNUeXBlb2YoZm4sICdmdW5jdGlvbicpKSB7XG4gICAgZm4uY2FsbChjb250ZXh0LCBwYXJhbSk7XG4gIH0gZWxzZSB7XG4gICAgY29udGV4dFtmbl0ocGFyYW0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlOiBzdHJpbmcsIHN0YXJ0OiBib29sZWFuLCBlbmQ6IGJvb2xlYW4pIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgY29uc3QgZGF5ID0gcGFyc2VJbnQodmFsdWUuc3Vic3RyaW5nKDgsIDEwKSwgMTApO1xuICAgIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQodmFsdWUuc3Vic3RyaW5nKDUsIDcpLCAxMCk7XG4gICAgY29uc3QgeWVhciA9IHBhcnNlSW50KHZhbHVlLnN1YnN0cmluZygwLCA0KSwgMTApO1xuICAgIGlmIChzdGFydCkge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5LCAwLCAwLCAwKTtcblxuICAgICAgc2V0WWVhckZyb20wVG8xMDAoZGF0ZSwgeWVhcik7XG5cbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH0gZWxzZSBpZiAoZW5kKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIDIzLCA1OSwgNTkpO1xuXG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IERhdGUucGFyc2UodmFsdWUpO1xuICAgICAgY29uc3QgdGltZXpvbmUgPSBuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMDtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShtaWxsaXNlY29uZHMgKyB0aW1lem9uZSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0SXNvVG9EYXRlTm9UaW1lem9uZSh2YWx1ZTogc3RyaW5nKSB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KHZhbHVlLnN1YnN0cmluZyg4LCAxMCksIDEwKTtcbiAgICBjb25zdCBtb250aCA9IHBhcnNlSW50KHZhbHVlLnN1YnN0cmluZyg1LCA3KSwgMTApO1xuICAgIGNvbnN0IHllYXIgPSBwYXJzZUludCh2YWx1ZS5zdWJzdHJpbmcoMCwgNCksIDEwKTtcblxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnREYXRlVG9JU09EYXRlKGRhdGU6IERhdGUpIHtcbiAgaWYgKGRhdGUpIHtcbiAgICBjb25zdCBnZXRNb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0RGF0ZSgpIDogZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGggPSBnZXRNb250aCA8IDEwID8gJzAnICsgZ2V0TW9udGggOiBnZXRNb250aDtcbiAgICBjb25zdCB5ZWFyID0gZm9ybWF0WWVhcihkYXRlLmdldEZ1bGxZZWFyKCkpO1xuXG4gICAgcmV0dXJuIHllYXIgKyAnLScgKyBtb250aCArICctJyArIGRheTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERhdGVUb0lTT0V4dGVuZGVkKGRhdGU6IERhdGUsIHRpbWU/OiBzdHJpbmcpIHtcbiAgaWYgKGRhdGUpIHtcbiAgICBjb25zdCBnZXRNb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0RGF0ZSgpIDogZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGggPSBnZXRNb250aCA8IDEwID8gJzAnICsgZ2V0TW9udGggOiBnZXRNb250aDtcbiAgICBjb25zdCB5ZWFyID0gZm9ybWF0WWVhcihkYXRlLmdldEZ1bGxZZWFyKCkpO1xuXG4gICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTtcblxuICAgIGlmICh0aW1lICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4geWVhciArICctJyArIG1vbnRoICsgJy0nICsgZGF5ICsgdGltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgeWVhciArXG4gICAgICAgICctJyArXG4gICAgICAgIG1vbnRoICtcbiAgICAgICAgJy0nICtcbiAgICAgICAgZGF5ICtcbiAgICAgICAgJ1QnICtcbiAgICAgICAgZGF0ZVN0cmluZy5zdWJzdHJpbmcoMTYsIDI0KSArXG4gICAgICAgIGRhdGVTdHJpbmcuc3Vic3RyaW5nKDI4LCAzMSkgK1xuICAgICAgICAnOicgK1xuICAgICAgICBkYXRlU3RyaW5nLnN1YnN0cmluZygzMSwgMzMpXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIFRyYW5zZm9ybWEgbyBhbm8gZW0gdW1hIHN0cmluZyBubyBmb3JtYXRvIHl5eXkgZSBjYXNvIG8gYW5vIHNlamEgbWVub3IgcXVlIDEwMDAgcHJlZW5jaGUgY29tIHplcm9zIGEgZXNxdWVyZGEuXG4gKlxuICogQHBhcmFtIHllYXIgQW5vXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRZZWFyKHllYXI6IG51bWJlcikge1xuICBpZiAoeWVhciA+PSAxMDAwKSB7XG4gICAgcmV0dXJuIHllYXIudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGlmICh5ZWFyID4gOTkgJiYgeWVhciA8IDEwMDApIHtcbiAgICByZXR1cm4gYDAke3llYXJ9YDtcbiAgfVxuXG4gIGlmICh5ZWFyID4gOSAmJiB5ZWFyIDwgMTAwKSB7XG4gICAgcmV0dXJuIGAwMCR7eWVhcn1gO1xuICB9XG5cbiAgaWYgKHllYXIgPj0gMCAmJiB5ZWFyIDwgMTApIHtcbiAgICByZXR1cm4gYDAwMCR7eWVhcn1gO1xuICB9XG59XG4vLyBWZXJpZmljYSBzZSBvIG5hdmVnYWRvciBlbSBxdWUgZXN0w6Egc2VuZG8gdXNhZG8gw6kgSW50ZXJuZXQgRXhwbG9yZXIgb3UgRWRnZVxuZXhwb3J0IGZ1bmN0aW9uIGlzSUVPckVkZ2UoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuXG4gIHJldHVybiAvbXNpZVxcc3x0cmlkZW50XFwvfGVkZ2VcXC8vaS50ZXN0KHVzZXJBZ2VudCk7XG59XG5cbi8vIFZlcmlmaWNhIHNlIG8gbmF2ZWdhZG9yIGVtIHF1ZSBlc3TDoSBzZW5kbyB1c2FkbyDDqSBJbnRlcm5ldCBFeHBsb3JlclxuZXhwb3J0IGZ1bmN0aW9uIGlzSUUoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuXG4gIHJldHVybiAvbXNpZVxcc3x0cmlkZW50L2kudGVzdCh1c2VyQWdlbnQpO1xufVxuXG4vLyBWZXJpZmljYSBzZSBvIG5hdmVnYWRvciBlbSBxdWUgZXN0w6Egc2VuZG8gdXNhZG8gw6kgRmlyZWZveFxuZXhwb3J0IGZ1bmN0aW9uIGlzRmlyZWZveCgpIHtcbiAgY29uc3QgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbiAgcmV0dXJuIHVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2ZpcmVmb3gnKSA+IC0xO1xufVxuXG4vLyBWZXJpZmljYSBxdWFsIG8gZGlzcG9zaXRpdm8gcXVlIGVzdMOhIHNlbmRvIHVzYWRvXG5leHBvcnQgZnVuY3Rpb24gaXNNb2JpbGUoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuXG4gIHJldHVybiB1c2VyQWdlbnQubWF0Y2goL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fFdpbmRvd3MgUGhvbmUvaSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VxdWFscyh2YWx1ZSwgY29tcGFyZWRWYWx1ZSkge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpID09PSBKU09OLnN0cmluZ2lmeShjb21wYXJlZFZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzS2V5Q29kZUVudGVyKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIGV2ZW50LmtleUNvZGUgPT09IDEzIHx8IGV2ZW50LndoaWNoID09PSAxMztcbn1cblxuLyoqXG4gKiBDYXNvIG8gYW5vIG9yaWdpbmFsIGRhIGRhdGEgc2VqYSBlbnRyZSAwIGUgMTAwIGF0cmlidWkgZXNzZSB2YWxvciBhbyBhbm8sIHBvaXMgbyBgbmV3IERhdGVgIGRvIGphdmFzY3JpcHQgdHJhbnNmb3JtYSBvIGFubyBwYXJhIDE5MFguXG4gKlxuICogQHBhcmFtIGRhdGUgRGF0YVxuICogQHBhcmFtIHllYXIgQW5vIG9yaWdpbmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRZZWFyRnJvbTBUbzEwMChkYXRlOiBEYXRlLCB5ZWFyOiBudW1iZXIpIHtcbiAgaWYgKHllYXIgPj0gMCAmJiB5ZWFyIDwgMTAwKSB7XG4gICAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydE9wdGlvbnNCeVByb3BlcnR5KG9wdGlvbnM6IEFycmF5PGFueT4sIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgb3B0aW9ucy5zb3J0KChvcHRpb25BLCBvcHRpb25CKSA9PiB7XG4gICAgb3B0aW9uQSA9IG9wdGlvbkFbcHJvcGVydHldLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICBvcHRpb25CID0gb3B0aW9uQltwcm9wZXJ0eV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKG9wdGlvbkEgPCBvcHRpb25CKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChvcHRpb25BID4gb3B0aW9uQikge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9KTtcbn1cblxuLyoqXG4gKiBPcmRlbmEgbyBjYW1wb3MgYmFzZWFkbyBubyB2YWxvciBkYSBwcm9wcmllZGFkZSBgb3JkZXJgLlxuICpcbiAqIFPDsyBzZXLDo28gYWNlaXRvcyB2YWxvcmVzIGNvbSBuw7ptZXJvcyBpbnRlaXJvcyBtYWlvcmVzIGRvIHF1ZSB6ZXJvIHBhcmEgYSBvcmRlbmHDp8Ojby5cbiAqXG4gKiBDYW1wb3Mgc2VtIGBvcmRlcmAgb3UgY29tIHZhbG9yZXMgbmVnYXRpdm9zLCB6ZXJhZG9zIG91IGludsOhbGlkb3NcbiAqIHJlY2ViZXLDo28gbyB2YWxvciBkZWZhdWx0IGUgc2VndWlyw6NvIG8gcG9zaWNpb25hbWVudG8gZGVudHJvIGRvXG4gKiBhcnJheS5cbiAqXG4gKiBAcGFyYW0gZmllbGRzIGNhbXBvIHF1ZSBzZSBkZXNlamEgb3JkZW5hci5cbiAqIEBwYXJhbSBkZWZhdWx0T3JkZXJpbmcgdmFsb3IgcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIG1hbnRlciBuYSBwb3Npw6fDo28gZG8gYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0RmllbGRzKGZpZWxkcyA9IFtdLCBkZWZhdWx0T3JkZXJpbmcgPSAtMSkge1xuICBjb25zdCByZXN1bHRDbGFzc2lmaWNhdGlvbiA9IHsgZmllbGRBQ29tZXNGaXJzdDogLTEsIGZpZWxkQUNvbWVzQWZ0ZXI6IDEsIGtlZXBQb3NpdGlvbnM6IDAgfTtcblxuICBjb25zdCBpc09yZGVyVmFsaWQgPSAob3JkZXI6IG51bWJlcikgPT4gaXNUeXBlb2Yob3JkZXIsICdudW1iZXInKSAmJiBvcmRlciA+IDA7XG4gIGNvbnN0IGFwcGx5RGVmYXVsdE9yZGVyaW5nID0gKG9yZGVyOiBudW1iZXIpID0+IChpc09yZGVyVmFsaWQob3JkZXIpID8gb3JkZXIgOiBkZWZhdWx0T3JkZXJpbmcpO1xuXG4gIHJldHVybiBmaWVsZHMuc29ydCgoZmllbGRBLCBmaWVsZEIpID0+IHtcbiAgICBjb25zdCBvcmRlckEgPSBhcHBseURlZmF1bHRPcmRlcmluZyhmaWVsZEEub3JkZXIpO1xuICAgIGNvbnN0IG9yZGVyQiA9IGFwcGx5RGVmYXVsdE9yZGVyaW5nKGZpZWxkQi5vcmRlcik7XG5cbiAgICBpZiAob3JkZXJBID09PSBvcmRlckIpIHtcbiAgICAgIHJldHVybiByZXN1bHRDbGFzc2lmaWNhdGlvbi5rZWVwUG9zaXRpb25zO1xuICAgIH1cblxuICAgIGlmIChvcmRlckEgPT09IGRlZmF1bHRPcmRlcmluZykge1xuICAgICAgcmV0dXJuIHJlc3VsdENsYXNzaWZpY2F0aW9uLmZpZWxkQUNvbWVzQWZ0ZXI7XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyQiA9PT0gZGVmYXVsdE9yZGVyaW5nKSB7XG4gICAgICByZXR1cm4gcmVzdWx0Q2xhc3NpZmljYXRpb24uZmllbGRBQ29tZXNGaXJzdDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JkZXJBIC0gb3JkZXJCO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUR1cGxpY2F0ZWRPcHRpb25zKGxpc3Q6IEFycmF5PGFueT4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChsaXN0LmZpbmRJbmRleChvcCA9PiBvcC52YWx1ZSA9PT0gbGlzdFtpXS52YWx1ZSkgIT09IGkpIHtcbiAgICAgIGxpc3Quc3BsaWNlKGksIDEpO1xuICAgICAgaS0tO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbE9wdGlvbnMobGlzdDogQXJyYXk8YW55Pikge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobGlzdFtpXS52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGxpc3RbaV0udmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGxpc3Quc3BsaWNlKGksIDEpO1xuICAgICAgaS0tO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gIHJldHVybiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycpIHx8IHZhbHVlID09PSBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZXJuYWxMaW5rKHVybCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdXJsID8gdXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSA6IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlbkV4dGVybmFsTGluayh1cmwpOiB2b2lkIHtcbiAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZWRMaW5rKGxpbms6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBmb3JtYXR0ZWRMaW5rID0gJyc7XG4gIC8vIFJldGlyYSB0b2RvcyBvcyBwb250b3Mgbm8gY29tZcOnbyBkYSBVUkwuXG4gIGlmIChsaW5rKSB7XG4gICAgZm9ybWF0dGVkTGluayA9IGxpbmsucmVwbGFjZSgvXihcXC4pKy9nLCAnJyk7XG4gIH1cbiAgLy8gVmVyaWZpY2Egc2UgZm9pIHV0aWxpemFkbyB1bWEgcm90YSBxdWUgbsOjbyBjb21lY2UgY29tIGJhcnJhLlxuICBpZiAoIWZvcm1hdHRlZExpbmsuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgZm9ybWF0dGVkTGluayA9ICcvJy5jb25jYXQoZm9ybWF0dGVkTGluayk7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdHRlZExpbms7XG59XG5cbi8qKlxuICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIG9yZGVuYXIgZG9pcyB2YWxvcmVzLlxuICpcbiAqIEBwYXJhbSBsZWZ0U2lkZSBQcmltZWlybyB2YWxvciBhIHNlciBjb21wYXJhZG8uXG4gKiBAcGFyYW0gcmlnaHRTaWRlIFNlZ3VuZG8gdmFsb3IgYSBzZXIgY29tcGFyYWRvLlxuICogQHBhcmFtIGFzY2VuZGluZyBEZXRlcm1pbmEgc2Ugc2Vyw6EgZW0gb3JkZW0gYXNjZW5kZW50ZSBvdSBkZXNjZW5kZW50ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRWYWx1ZXMobGVmdFNpZGU6IHN0cmluZyB8IERhdGUsIHJpZ2h0U2lkZTogc3RyaW5nIHwgRGF0ZSwgYXNjZW5kaW5nOiBib29sZWFuID0gdHJ1ZSk6IG51bWJlciB7XG4gIGNvbnN0IGxlZnQgPSBpc1R5cGVvZihsZWZ0U2lkZSwgJ3N0cmluZycpID8gKGxlZnRTaWRlIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKSA6IGxlZnRTaWRlO1xuICBjb25zdCByaWdodCA9IGlzVHlwZW9mKHJpZ2h0U2lkZSwgJ3N0cmluZycpID8gKHJpZ2h0U2lkZSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkgOiByaWdodFNpZGU7XG5cbiAgY29uc3QgbGVmdElzSW52YWxpZCA9IGxlZnQgPT09IG51bGwgfHwgbGVmdCA9PT0gdW5kZWZpbmVkIHx8IE51bWJlci5pc05hTihsZWZ0KTtcbiAgY29uc3QgcmlnaHRJc0ludmFsaWQgPSByaWdodCA9PT0gbnVsbCB8fCByaWdodCA9PT0gdW5kZWZpbmVkIHx8IE51bWJlci5pc05hTihyaWdodCk7XG5cbiAgaWYgKGFzY2VuZGluZykge1xuICAgIGlmIChsZWZ0IDwgcmlnaHQgfHwgbGVmdElzSW52YWxpZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSBpZiAobGVmdCA+IHJpZ2h0IHx8IHJpZ2h0SXNJbnZhbGlkKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXNjZW5kaW5nID09PSBmYWxzZSkge1xuICAgIGlmIChsZWZ0IDwgcmlnaHQgfHwgbGVmdElzSW52YWxpZCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmIChsZWZ0ID4gcmlnaHQgfHwgcmlnaHRJc0ludmFsaWQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURhdGVSYW5nZShkYXRlOiBEYXRlLCBkYXRlU3RhcnQ6IERhdGUsIGRhdGVFbmQ6IERhdGUpIHtcbiAgaWYgKGRhdGVTdGFydCAmJiBkYXRlRW5kKSB7XG4gICAgcmV0dXJuIGRhdGUgPj0gZGF0ZVN0YXJ0ICYmIGRhdGUgPD0gZGF0ZUVuZDtcbiAgfSBlbHNlIGlmIChkYXRlU3RhcnQgJiYgIWRhdGVFbmQpIHtcbiAgICByZXR1cm4gZGF0ZSA+PSBkYXRlU3RhcnQ7XG4gIH0gZWxzZSBpZiAoIWRhdGVTdGFydCAmJiBkYXRlRW5kKSB7XG4gICAgcmV0dXJuIGRhdGUgPD0gZGF0ZUVuZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXVpZCgpIHtcbiAgZnVuY3Rpb24gaGV4NCgpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcigoMSArIE1hdGgucmFuZG9tKCkpICogMHgxMDAwMClcbiAgICAgIC50b1N0cmluZygxNilcbiAgICAgIC5zdWJzdHJpbmcoMSk7XG4gIH1cblxuICByZXR1cm4gaGV4NCgpICsgaGV4NCgpICsgJy0nICsgaGV4NCgpICsgJy0nICsgaGV4NCgpICsgJy0nICsgaGV4NCgpICsgJy0nICsgaGV4NCgpICsgaGV4NCgpICsgaGV4NCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHt0ZXh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7dGV4dC5zbGljZSgxKX1gO1xufVxuXG4vKipcbiAqIE1hcGVpYSB1bSBub3ZvIGFycmF5IGFwZW5hcyBjb20gYXMgcHJvcHJpZWRhZGVzIGRlZmluaWRhcyBwZWxvIGRlc2Vudm9sdmVkb3IgYmFzZWFkbyBlbSB1bSBhcnJheSBkZVxuICogb3JpZ2VtLlxuICpcbiAqIEV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiBjb25zdCBwZW9wbGUgPSBbXG4gKiAgeyBpZDogMSwgbmFtZTogJ0Z1bGFubycsIGJpcnRoZGF0ZTogJzE5ODAtMTEtMDEnLCBnZW5yZTogJ01hbGUnLCBjaXR5OiAnU8OjbyBQYXVsbycsIGRlcGVuZGVudHM6IDIgfSxcbiAqICB7IGlkOiAyLCBuYW1lOiAnQmVsdHJhbm8nLCBiaXJ0aGRhdGU6ICcxOTk3LTAxLTIxJywgZ2VucmU6ICdGZW1hbGUnLCBjaXR5OiAnSm9pbnZpbGxlJywgZGVwZW5kZW50czogMCB9LFxuICogIHsgaWQ6IDMsIG5hbWU6ICdTaWNsYW5vJywgYmlydGhkYXRlOiAnMTk5NS0wNy0xNScsIGdlbnJlOiAnTWFsZScsIGNpdHk6ICdKb2ludmlsbGUnLCBkZXBlbmRlbnRzOiAwIH1cbiAqIF07XG4gKlxuICogY29uc3QgcHJvcGVydGllcyA9IFsnaWQnLCAnbmFtZSddO1xuICpcbiAqIGNvbnN0IGlkQW5kTmFtZSA9IG1hcEFycmF5QnlQcm9wZXJ0aWVzKHBlb3BsZSwgcHJvcGVydGllcyk7XG4gKlxuICogY29uc29sZS5sb2coaWRBbmROYW1lKTsgLy8gW3sgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nIH0sIHsgaWQ6IDIsIG5hbWU6ICdCZWx0cmFubycgfSwgeyBpZDogMywgbmFtZTogJ1NpY2xhbm8nIH1dXG4gKiBgYGBcbiAqXG4gKiBVbSBvdXRybyB1c28gcGFyYSBvIG3DqXRvZG8gw6kgXCJwYXJlYXJcIiB0b2RvcyBvcyBvYmpldG9zIGRvIGFycmF5IGNvbSBhcyBtZXNtYXMgcHJvcHJpZWRhZGVzLlxuICpcbiAqIGBgYFxuICogY29uc3QgY3VzdG9tZXJzID0gW1xuICogIHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nLCBjaXR5OiAnU8OjbyBQYXVsbycsIGRlcGVuZGVudHM6IDIgfSwgLy8gc2VtIGdlbnJlXG4gKiAgeyBpZDogMiwgbmFtZTogJ0JlbHRyYW5vJywgZ2VucmU6ICdGZW1hbGUnLCBjaXR5OiAnSm9pbnZpbGxlJyB9LCAvLyBzZW0gZGVwZW5kZW50c1xuICogIHsgaWQ6IDMsIG5hbWU6ICdTaWNsYW5vJywgZ2VucmU6ICdNYWxlJywgY2l0eTogJ0pvaW52aWxsZScsIGRlcGVuZGVudHM6IDAgfVxuICogXTtcbiAqIGNvbnN0IHByb3BlcnRpZXMgPSBbJ2lkJywgJ25hbWUnLCAnY2l0eScsICdnZW5yZScsICdkZXBlbmRlbnRzJ107XG4gKlxuICogY29uc3QgcGF0dGVybiA9IG1hcEFycmF5QnlQcm9wZXJ0aWVzKGN1c3RvbWVycywgcHJvcGVydGllcyk7XG4gKiBjb25zb2xlLmxvZyhwYXR0ZXJuKTtcbiAqXG4gKiAvLyBbXG4gKiAvLyAgIHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nLCBjaXR5OiAnU8OjbyBQYXVsbycsIGdlbnJlOiB1bmRlZmluZWQsIGRlcGVuZGVudHM6IDIgfSxcbiAqIC8vICAgeyBpZDogMiwgbmFtZTogJ0JlbHRyYW5vJywgY2l0eTogJ0pvaW52aWxsZScsIGdlbnJlOiAnRmVtYWxlJywgZGVwZW5kZW50czogdW5kZWZpbmVkIH0sXG4gKiAvLyAgIHsgaWQ6IDMsIG5hbWU6ICdTaWNsYW5vJywgY2l0eTogJ0pvaW52aWxsZScsIGdlbnJlOiAnTWFsZScsIGRlcGVuZGVudHM6IDAgfVxuICogLy8gXVxuICogYGBgXG4gKlxuICogQHBhcmFtIGl0ZW1zIHtBcnJheTxhbnk+fSBBcnJheSBkZSBpdGVtcyBvcmlnaW5hbC5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIHtBcnJheTxzdHJpbmc+fSBBcnJheSBkZSBzdHJpbmcgY29tIGEgbGlzdGEgZGUgcHJvcHJpZWRhZGVzIHF1ZSBkZXZlbSBzZXIgcmV0b3JuYWRhcy5cbiAqXG4gKiBAcmV0dXJucyBBcnJheTxhbnk+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBBcnJheUJ5UHJvcGVydGllcyhpdGVtczogQXJyYXk8YW55PiA9IFtdLCBwcm9wZXJ0aWVzOiBBcnJheTxzdHJpbmc+ID0gW10pOiBBcnJheTxhbnk+IHtcbiAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IG1hcE9iamVjdEJ5UHJvcGVydGllcyhpdGVtLCBwcm9wZXJ0aWVzKSk7XG59XG5cbi8qKlxuICogTWFwZWlhIHVtIG5vdm8gb2JqZXRvIGFwZW5hcyBjb20gYXMgcHJvcHJpZWRhZGVzIGRlZmluaWRhcyBwZWxvIGRlc2Vudm9sdmVkb3IuXG4gKlxuICogRXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIGNvbnN0IHBlcnNvbiA9IHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nLCBiaXJ0aGRhdGU6ICcxOTgwLTExLTAxJywgZ2VucmU6ICdNYWxlJywgY2l0eTogJ1PDo28gUGF1bG8nLCBkZXBlbmRlbnRzOiAyIH07XG4gKlxuICogY29uc3QgcHJvcGVydGllcyA9IFsnaWQnLCAnbmFtZSddO1xuICpcbiAqIGNvbnN0IGlkQW5kTmFtZSA9IG1hcE9iamVjdEJ5UHJvcGVydGllcyhwZXJzb24sIHByb3BlcnRpZXMpO1xuICpcbiAqIGNvbnNvbGUubG9nKGlkQW5kTmFtZSk7IC8vIHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBvYmplY3Qge0FycmF5PGFueT59IEFycmF5IGRlIGl0ZW1zIG9yaWdpbmFsLlxuICogQHBhcmFtIHByb3BlcnRpZXMge0FycmF5PHN0cmluZz59IEFycmF5IGRlIHN0cmluZyBjb20gYSBsaXN0YSBkZSBwcm9wcmllZGFkZXMgcXVlIGRldmVtIHNlciByZXRvcm5hZGFzLlxuICpcbiAqIEByZXR1cm5zIEFycmF5PGFueT5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcE9iamVjdEJ5UHJvcGVydGllcyhvYmplY3Q6IGFueSA9IHt9LCBwcm9wZXJ0aWVzOiBBcnJheTxzdHJpbmc+ID0gW10pIHtcbiAgY29uc3QgZ2V0U2VsZWN0ZWRQcm9wZXJ0aWVzID0gKHNlbGVjdGVkUHJvcGVydGllcywgcHJvcGVydHkpID0+ICh7XG4gICAgLi4uc2VsZWN0ZWRQcm9wZXJ0aWVzLFxuICAgIFtwcm9wZXJ0eV06IG9iamVjdFtwcm9wZXJ0eV1cbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXMucmVkdWNlKGdldFNlbGVjdGVkUHJvcGVydGllcywge30pO1xufVxuXG4vKipcbiAqIFJldG9ybmEgb3MgdmFsb3JlcyBkZSB1bSBvYmpldG8gZGVudHJvIGRlIHVtIGFycmF5LlxuICpcbiAqID4gU2ltdWxhIG8gT2JqZWN0LnZhbHVlcyhvYmopLCBvIG1lc21vIGRldmUgc2VyIHJlbW92aWRvIGFzc2ltIHF1ZSBhIHZlcnPDo28gdHlwZXNjcml0IGZvciBhdHVhbGl6YWRhLlxuICpcbiAqIEBwYXJhbSBvYmplY3QgT2JqZXRvIGRlIG9uZGUgc2Vyw6EgcGVnbyBvcyB2YWxvcmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVzRnJvbU9iamVjdChvYmplY3Q6IGFueSA9IHt9KTogQXJyYXk8YW55PiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpLm1hcChwcm9wZXJ0eSA9PiBvYmplY3RbcHJvcGVydHldKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0ZSB1bSBhcnF1aXZvIGVtIGJhc2U2NC5cbiAqXG4gKiBAcGFyYW0gZmlsZSBhcnF1aXZvIHF1ZSBzZXLDoSBjb252ZXJ0aWRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEltYWdlVG9CYXNlNjQoZmlsZTogRmlsZSk6IFByb21pc2U8YW55PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmVhZGVyLm9uZXJyb3IgPSBlcnJvciA9PiByZWplY3QoZXJyb3IpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0ZSB1bSBuw7ptZXJvIGVtIGRlY2ltYWwgYmFzZWFkbyBuYSBxdWFudGlkYWRlIGRlIGNhc2FzIGRlY2ltYWlzLlxuICpcbiAqIENhc28gbyB2YWxvciBzZWphIGludsOhbGlkbywgc2Vyw6EgcmV0b3JuYWRvIG8gdmFsb3IgYHVuZGVmaW5lZGAuXG4gKiBWYWxvcmVzIGludsOhbGlkb3Mgc8OjbzogYGZhbHNlYCwgYE5hTmAsIGBzdHJpbmdzYCBxdWUgbsOjbyBudW3DqXJpY2FzLCBgdW5kZWZpbmVkYCBlIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gbnVtYmVyIHZhbG9yIHF1ZSBzZXLDoSBjb252ZXJ0aWRvXG4gKiBAcGFyYW0gZGVjaW1hbHNQbGFjZSBxdWFudGlkYWRlIGRlIGNhc2FzIGRlY2ltYWlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0TnVtYmVyVG9EZWNpbWFsKG51bWJlcjogYW55LCBkZWNpbWFsc1BsYWNlOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBpc1ZhbGlkVmFsdWUgPSAobnVtYmVyIHx8IG51bWJlciA9PT0gMCkgJiYgIWlzTmFOKG51bWJlcik7XG5cbiAgY29uc3QgZmxvYXRWYWx1ZSA9IGlzVmFsaWRWYWx1ZSA/IHBhcnNlRmxvYXQobnVtYmVyKSA6IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KGZsb2F0VmFsdWUudG9GaXhlZChkZWNpbWFsc1BsYWNlKSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmbG9hdFZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogUmV0b3JuYSB1bWEgY29waWEgZG8gb2JqZXRvIHN1am8sIHNlbSBhcyBwcm9wcmllZGFkZXMgbnVsYXMgb3UgaW5kZWZpbmlkYXMuXG4gKiBSZXRvcm5hIG8gb2JqZXRvIHNlbSBhcyBwcm9wcmllZGFkZXMgcXVlIGNvbnTDqW0gdmFsb3JlcyBudWxvcyBvdSBpbmRlZmluaWRvcy5cbiAqXG4gKiBAcGFyYW0gZGlydHlPYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyT2JqZWN0KGRpcnR5T2JqZWN0OiBvYmplY3QpOiBhbnkge1xuICBjb25zdCBjbGVhbk9iamVjdCA9IHt9O1xuXG4gIE9iamVjdC5rZXlzKGRpcnR5T2JqZWN0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgaWYgKGRpcnR5T2JqZWN0W2tleV0gIT09IG51bGwgJiYgZGlydHlPYmplY3Rba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhbk9iamVjdFtrZXldID0gZGlydHlPYmplY3Rba2V5XTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjbGVhbk9iamVjdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlT2JqZWN0VHlwZSh2YWx1ZTogYW55KSB7XG4gIHJldHVybiBpc1R5cGVvZih2YWx1ZSwgJ29iamVjdCcpICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldG9ybmEgb3MgZWxlbWVudG9zIERPTSBjYXBhemVzIGRlIHJlY2ViZXIgZm9jby5cbiAqXG4gKiA+IEF0dWFsbWVudGUgc8OjbyBjb25zaWRlcmFkb3MgXCJmb2PDoXZlaXNcIiBvcyBlbGVtZW50b3MgRE9NIGBpbnB1dGAsIGBzZWxlY3RgLFxuICogYHRleHRhcmVhYCwgYGJ1dHRvbmAgZSBgYWAuXG4gKlxuICogQHBhcmFtIHBhcmVudEVsZW1lbnQgRWxlbWVudG8gRE9NIHBhaS5cbiAqIEByZXR1cm5zIExpc3RhIGRvcyBlbGVtZW50b3MgRE9NIGZpbGhvcyBcImZvY8OhdmVpc1wiLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlRWxlbWVudHMocGFyZW50RWxlbWVudDogRWxlbWVudCk6IE5vZGVMaXN0T2Y8RWxlbWVudD4ge1xuICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9ICdidXR0b246bm90KFtkaXNhYmxlZF0pLCBbaHJlZl0sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSc7XG4gIHJldHVybiBwYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZm9jdXNhYmxlRWxlbWVudHMpO1xufVxuIl19
|
|
509
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvdXRpbHMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTFGOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sdUJBQXVCLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBYSxFQUFFLFFBQVEsR0FBRyxDQUFDO0lBQ3JELElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQztJQUN4QixNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNsRSxRQUFRLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFdkMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ3BHLENBQUM7QUFFRDs7R0FFRztBQUNI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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwb0xvY2FsZXMsIHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXRpbGl6ZSBvIG3DqXRvZG8gYGdldFNob3J0QnJvd3Nlckxhbmd1YWdlYC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldG9ybmEgaWRpb21hIGRvIGJyb3dzZXIgb3UgbyBpZGlvbWEgcGFkcsOjby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyb3dzZXJMYW5ndWFnZSgpIHtcbiAgcmV0dXJuIGdldFNob3J0QnJvd3Nlckxhbmd1YWdlKCk7XG59XG5cbi8qKlxuICogQ29udmVydGUgZSBmb3JtYXRhIG9zIGJ5dGVzIGVtIGZvcm1hdG8gbWFpcyBsZWfDrXZlbCBwYXJhIG8gdXN1w6FyaW8uXG4gKlxuICogUG9yIGV4ZW1wbG86XG4gKiAtIDMxNDU3MjgwIGVtIDMwIE1CLlxuICogLSAyMTQ3NDgzNjQ4MCBlbSAyMCBHQi5cbiAqIC0gMTIuNTY2NjY2NiBlbSAxMi41NyBCeXRlcyAoZHVhcyBjYXNhcyBkZWNpbWFpcykuXG4gKlxuICogQHBhcmFtIGJ5dGVzIHtudW1iZXJ9IFZhbG9yIGVtIGJ5dGVzXG4gKiBAcGFyYW0gZGVjaW1hbHMge251bWJlcn0gUXVhbnRpZGFkZSBkZSBjYXNhcyBkZWNpbWFpcyBxdWUgdGVyw6EgYXDDs3MgYSBjb252ZXJzw6NvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Qnl0ZXMoYnl0ZXM6IG51bWJlciwgZGVjaW1hbHMgPSAyKTogc3RyaW5nIHtcbiAgaWYgKCFieXRlcykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBtdWx0aXBsaWVyID0gMTAyNDtcbiAgY29uc3Qgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gIGNvbnN0IHJlc3VsdCA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2cobXVsdGlwbGllcikpO1xuICBkZWNpbWFscyA9IGRlY2ltYWxzIDwgMCA/IDAgOiBkZWNpbWFscztcblxuICByZXR1cm4gYCR7cGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhtdWx0aXBsaWVyLCByZXN1bHQpKS50b0ZpeGVkKGRlY2ltYWxzKSl9ICR7c2l6ZXNbcmVzdWx0XX1gO1xufVxuXG4vKipcbiAqIFJldG9ybmEgbyBpZGlvbWEgYXR1YWwgZG8gbmF2ZWdhZG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCcm93c2VyTGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgLy8gbmF2aWdhdG9yLnVzZXJMYW5ndWFnZSBpcyB0aGUgdmFsdWUgZm9yIElFMTBcbiAgY29uc3QgbGFuZ3VhZ2UgPSBuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgbmF2aWdhdG9yWyd1c2VyTGFuZ3VhZ2UnXTtcbiAgY29uc3Qgc2hvcnRMYW5ndWFnZSA9IGdldFNob3J0TGFuZ3VhZ2UobGFuZ3VhZ2UpO1xuXG4gIHJldHVybiBwb0xvY2FsZXMuaW5jbHVkZXMoc2hvcnRMYW5ndWFnZSkgPyBsYW5ndWFnZSA6IHBvTG9jYWxlRGVmYXVsdDtcbn1cblxuLyoqXG4gKiBSZXRvcm5hIG8gaWRpb21hIGRvIG5hdmVnYWRvciwgY29tIHNvbWVudGUgYXMgZHVhcyBwcmltZWlyYXMgbGV0cmFzLiBQb3IgZXhlbXBsbzogXCJwdFwiIG91IFwiZXNcIi5cbiAqXG4gKiBDYXNvIG8gdmFsb3IgcmV0b3JuYWRvIHBlbG8gbmF2ZWdhZG9yIG7Do28gZXN0aXZlciBkZW50cm8gZG9zIGlkaW9tYXMgc3Vwb3J0YWRvcyBwZWxvIFBPLFxuICogc2Vyw6EgcmV0b3JuYWRvIGEgbGluZ3VhZ2VtIHBhZHLDo28gKHBvTG9jYWxlRGVmYXVsdCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG9ydEJyb3dzZXJMYW5ndWFnZSgpOiBzdHJpbmcge1xuICByZXR1cm4gZ2V0U2hvcnRMYW5ndWFnZShnZXRCcm93c2VyTGFuZ3VhZ2UoKSk7XG59XG5cbi8qKlxuICogUmV0b3JuYSBvIGlkaW9tYSBjb20gc29tZW50ZSBhIGFicmV2aWHDp8OjbyBkbyBpZGlvbWEgKGR1YXMgcHJpbWVpcmFzIGxldHJhcykuXG4gKiBQb3IgZXhlbXBsbzogXCJwdFwiIG91IFwiZXNcIi5cbiAqXG4gKiBAcGFyYW0gbGFuZ3VhZ2Uge3N0cmluZ30gbGluZ3VhZ2VtLlxuICpcbiAqIEByZXR1cm5zIHNpZ2xhIGRvIGlkaW9tYSBwYWRyw6NvIHtzdHJpbmd9LlxuICpcbiAqIEBkZWZhdWx0IHB0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaG9ydExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gKGxhbmd1YWdlIHx8IHBvTG9jYWxlRGVmYXVsdCkudG9Mb3dlckNhc2UoKS5zdWJzdHJpbmcoMCwgMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xhbmd1YWdlKHZhbHVlKSB7XG4gIGNvbnN0IGxhbmd1YWdlUmVnZXggPSBuZXcgUmVnRXhwKCdeW2Etel17Mn0oLVthLXpdezJ9KT8kJywgJ2knKTtcblxuICByZXR1cm4gbGFuZ3VhZ2VSZWdleC50ZXN0KHZhbHVlKTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmV4cG9ydCBmdW5jdGlvbiByZWxvYWRDdXJyZW50UGFnZSgpIHtcbiAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihsb2NhdGlvbi5ocmVmKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0Jvb2xlYW4odmFsOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gdmFsLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIHJldHVybiB2YWwgPT09ICd0cnVlJyB8fCB2YWwgPT09ICdvbicgfHwgdmFsID09PSAnJztcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWwgPT09IDE7XG4gIH1cblxuICByZXR1cm4gISF2YWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9JbnQodmFsdWU6IGFueSwgdmFsdWVEZWZhdWx0PzogYW55KTogbnVtYmVyIHtcbiAgY29uc3QgdmFsaWROdW1iZXIgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICBjb25zdCB2YWxpZERlZmF1bHRWYWx1ZSA9IHBhcnNlSW50KHZhbHVlRGVmYXVsdCwgMTApO1xuICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YWxpZERlZmF1bHRWYWx1ZSB8fCB2YWxpZERlZmF1bHRWYWx1ZSA9PT0gMCA/IHZhbGlkRGVmYXVsdFZhbHVlIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB2YWxpZE51bWJlciB8fCB2YWxpZE51bWJlciA9PT0gMCA/IHZhbGlkTnVtYmVyIDogZGVmYXVsdFZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlb2Yob2JqZWN0OiBhbnksIHR5cGU6IGFueSkge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gdHlwZTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGZuIEZ1bsOnw6NvIHF1ZSBzZXLDoSBleGVjdXRhZGEgZGVudHJvIGRvIGNvbnRleHRvLiBQb2RlbmRvIHNlciBvIG5vbWUgZGEgZnVuw6fDo29cbiAqIG91IGEgcmVmZXLDqm5jaWEgZGEgbWVzbWEuXG4gKlxuICogQHBhcmFtIGNvbnRleHQgQ29udGV4dG8gZG8gcXVhbCBhIGZ1bsOnw6NvIHNlcsOhIGV4ZWN1dGFkYS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGxGdW5jdGlvbihmbjogYW55LCBjb250ZXh0OiBhbnksIHBhcmFtPyk6IHZvaWQge1xuICBpZiAoaXNUeXBlb2YoZm4sICdmdW5jdGlvbicpKSB7XG4gICAgZm4uY2FsbChjb250ZXh0LCBwYXJhbSk7XG4gIH0gZWxzZSB7XG4gICAgY29udGV4dFtmbl0ocGFyYW0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0SXNvVG9EYXRlKHZhbHVlOiBzdHJpbmcsIHN0YXJ0OiBib29sZWFuLCBlbmQ6IGJvb2xlYW4pIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgY29uc3QgZGF5ID0gcGFyc2VJbnQodmFsdWUuc3Vic3RyaW5nKDgsIDEwKSwgMTApO1xuICAgIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQodmFsdWUuc3Vic3RyaW5nKDUsIDcpLCAxMCk7XG4gICAgY29uc3QgeWVhciA9IHBhcnNlSW50KHZhbHVlLnN1YnN0cmluZygwLCA0KSwgMTApO1xuXG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIDAsIDAsIDApO1xuXG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfSBlbHNlIGlmIChlbmQpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSwgMjMsIDU5LCA1OSk7XG5cbiAgICAgIHNldFllYXJGcm9tMFRvMTAwKGRhdGUsIHllYXIpO1xuXG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnREYXRlVG9JU09EYXRlKGRhdGU6IERhdGUpIHtcbiAgaWYgKGRhdGUpIHtcbiAgICBjb25zdCBnZXRNb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0RGF0ZSgpIDogZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGggPSBnZXRNb250aCA8IDEwID8gJzAnICsgZ2V0TW9udGggOiBnZXRNb250aDtcbiAgICBjb25zdCB5ZWFyID0gZm9ybWF0WWVhcihkYXRlLmdldEZ1bGxZZWFyKCkpO1xuXG4gICAgcmV0dXJuIHllYXIgKyAnLScgKyBtb250aCArICctJyArIGRheTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERhdGVUb0lTT0V4dGVuZGVkKGRhdGU6IERhdGUsIHRpbWU/OiBzdHJpbmcpIHtcbiAgaWYgKGRhdGUpIHtcbiAgICBjb25zdCBnZXRNb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0RGF0ZSgpIDogZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgbW9udGggPSBnZXRNb250aCA8IDEwID8gJzAnICsgZ2V0TW9udGggOiBnZXRNb250aDtcbiAgICBjb25zdCB5ZWFyID0gZm9ybWF0WWVhcihkYXRlLmdldEZ1bGxZZWFyKCkpO1xuXG4gICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTtcblxuICAgIGlmICh0aW1lICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4geWVhciArICctJyArIG1vbnRoICsgJy0nICsgZGF5ICsgdGltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgeWVhciArXG4gICAgICAgICctJyArXG4gICAgICAgIG1vbnRoICtcbiAgICAgICAgJy0nICtcbiAgICAgICAgZGF5ICtcbiAgICAgICAgJ1QnICtcbiAgICAgICAgZGF0ZVN0cmluZy5zdWJzdHJpbmcoMTYsIDI0KSArXG4gICAgICAgIGRhdGVTdHJpbmcuc3Vic3RyaW5nKDI4LCAzMSkgK1xuICAgICAgICAnOicgK1xuICAgICAgICBkYXRlU3RyaW5nLnN1YnN0cmluZygzMSwgMzMpXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIFRyYW5zZm9ybWEgbyBhbm8gZW0gdW1hIHN0cmluZyBubyBmb3JtYXRvIHl5eXkgZSBjYXNvIG8gYW5vIHNlamEgbWVub3IgcXVlIDEwMDAgcHJlZW5jaGUgY29tIHplcm9zIGEgZXNxdWVyZGEuXG4gKlxuICogQHBhcmFtIHllYXIgQW5vXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRZZWFyKHllYXI6IG51bWJlcikge1xuICBpZiAoeWVhciA+PSAxMDAwKSB7XG4gICAgcmV0dXJuIHllYXIudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGlmICh5ZWFyID4gOTkgJiYgeWVhciA8IDEwMDApIHtcbiAgICByZXR1cm4gYDAke3llYXJ9YDtcbiAgfVxuXG4gIGlmICh5ZWFyID4gOSAmJiB5ZWFyIDwgMTAwKSB7XG4gICAgcmV0dXJuIGAwMCR7eWVhcn1gO1xuICB9XG5cbiAgaWYgKHllYXIgPj0gMCAmJiB5ZWFyIDwgMTApIHtcbiAgICByZXR1cm4gYDAwMCR7eWVhcn1gO1xuICB9XG59XG5cbi8vIFZlcmlmaWNhIHNlIG8gbmF2ZWdhZG9yIGVtIHF1ZSBlc3TDoSBzZW5kbyB1c2FkbyDDqSBJbnRlcm5ldCBFeHBsb3JlciBvdSBFZGdlXG5leHBvcnQgZnVuY3Rpb24gaXNJRU9yRWRnZSgpIHtcbiAgY29uc3QgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbiAgcmV0dXJuIC9tc2llXFxzfHRyaWRlbnRcXC98ZWRnZVxcLy9pLnRlc3QodXNlckFnZW50KTtcbn1cblxuLy8gVmVyaWZpY2Egc2UgbyBuYXZlZ2Fkb3IgZW0gcXVlIGVzdMOhIHNlbmRvIHVzYWRvIMOpIEludGVybmV0IEV4cGxvcmVyXG5leHBvcnQgZnVuY3Rpb24gaXNJRSgpIHtcbiAgY29uc3QgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbiAgcmV0dXJuIC9tc2llXFxzfHRyaWRlbnQvaS50ZXN0KHVzZXJBZ2VudCk7XG59XG5cbi8vIFZlcmlmaWNhIHNlIG8gbmF2ZWdhZG9yIGVtIHF1ZSBlc3TDoSBzZW5kbyB1c2FkbyDDqSBGaXJlZm94XG5leHBvcnQgZnVuY3Rpb24gaXNGaXJlZm94KCkge1xuICBjb25zdCB1c2VyQWdlbnQgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtcblxuICByZXR1cm4gdXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlyZWZveCcpID4gLTE7XG59XG5cbi8vIFZlcmlmaWNhIHF1YWwgbyBkaXNwb3NpdGl2byBxdWUgZXN0w6Egc2VuZG8gdXNhZG9cbmV4cG9ydCBmdW5jdGlvbiBpc01vYmlsZSgpIHtcbiAgY29uc3QgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbiAgcmV0dXJuIHVzZXJBZ2VudC5tYXRjaCgvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8V2luZG93cyBQaG9uZS9pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXF1YWxzKHZhbHVlLCBjb21wYXJlZFZhbHVlKSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbXBhcmVkVmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNLZXlDb2RlRW50ZXIoZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXZlbnQua2V5Q29kZSA9PT0gMTMgfHwgZXZlbnQud2hpY2ggPT09IDEzO1xufVxuXG4vKipcbiAqIENhc28gbyBhbm8gb3JpZ2luYWwgZGEgZGF0YSBzZWphIGVudHJlIDAgZSAxMDAgYXRyaWJ1aSBlc3NlIHZhbG9yIGFvIGFubywgcG9pcyBvIGBuZXcgRGF0ZWAgZG8gamF2YXNjcmlwdCB0cmFuc2Zvcm1hIG8gYW5vIHBhcmEgMTkwWC5cbiAqXG4gKiBAcGFyYW0gZGF0ZSBEYXRhXG4gKiBAcGFyYW0geWVhciBBbm8gb3JpZ2luYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFllYXJGcm9tMFRvMTAwKGRhdGU6IERhdGUsIHllYXI6IG51bWJlcikge1xuICBpZiAoeWVhciA+PSAwICYmIHllYXIgPCAxMDApIHtcbiAgICBkYXRlLnNldEZ1bGxZZWFyKHllYXIpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0T3B0aW9uc0J5UHJvcGVydHkob3B0aW9uczogQXJyYXk8YW55PiwgcHJvcGVydHk6IHN0cmluZykge1xuICBvcHRpb25zLnNvcnQoKG9wdGlvbkEsIG9wdGlvbkIpID0+IHtcbiAgICBvcHRpb25BID0gb3B0aW9uQVtwcm9wZXJ0eV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgIG9wdGlvbkIgPSBvcHRpb25CW3Byb3BlcnR5XS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAob3B0aW9uQSA8IG9wdGlvbkIpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbkEgPiBvcHRpb25CKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0pO1xufVxuXG4vKipcbiAqIE9yZGVuYSBvIGNhbXBvcyBiYXNlYWRvIG5vIHZhbG9yIGRhIHByb3ByaWVkYWRlIGBvcmRlcmAuXG4gKlxuICogU8OzIHNlcsOjbyBhY2VpdG9zIHZhbG9yZXMgY29tIG7Dum1lcm9zIGludGVpcm9zIG1haW9yZXMgZG8gcXVlIHplcm8gcGFyYSBhIG9yZGVuYcOnw6NvLlxuICpcbiAqIENhbXBvcyBzZW0gYG9yZGVyYCBvdSBjb20gdmFsb3JlcyBuZWdhdGl2b3MsIHplcmFkb3Mgb3UgaW52w6FsaWRvc1xuICogcmVjZWJlcsOjbyBvIHZhbG9yIGRlZmF1bHQgZSBzZWd1aXLDo28gbyBwb3NpY2lvbmFtZW50byBkZW50cm8gZG9cbiAqIGFycmF5LlxuICpcbiAqIEBwYXJhbSBmaWVsZHMgY2FtcG8gcXVlIHNlIGRlc2VqYSBvcmRlbmFyLlxuICogQHBhcmFtIGRlZmF1bHRPcmRlcmluZyB2YWxvciBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgbWFudGVyIG5hIHBvc2nDp8OjbyBkbyBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRGaWVsZHMoZmllbGRzID0gW10sIGRlZmF1bHRPcmRlcmluZyA9IC0xKSB7XG4gIGNvbnN0IHJlc3VsdENsYXNzaWZpY2F0aW9uID0geyBmaWVsZEFDb21lc0ZpcnN0OiAtMSwgZmllbGRBQ29tZXNBZnRlcjogMSwga2VlcFBvc2l0aW9uczogMCB9O1xuXG4gIGNvbnN0IGlzT3JkZXJWYWxpZCA9IChvcmRlcjogbnVtYmVyKSA9PiBpc1R5cGVvZihvcmRlciwgJ251bWJlcicpICYmIG9yZGVyID4gMDtcbiAgY29uc3QgYXBwbHlEZWZhdWx0T3JkZXJpbmcgPSAob3JkZXI6IG51bWJlcikgPT4gKGlzT3JkZXJWYWxpZChvcmRlcikgPyBvcmRlciA6IGRlZmF1bHRPcmRlcmluZyk7XG5cbiAgcmV0dXJuIGZpZWxkcy5zb3J0KChmaWVsZEEsIGZpZWxkQikgPT4ge1xuICAgIGNvbnN0IG9yZGVyQSA9IGFwcGx5RGVmYXVsdE9yZGVyaW5nKGZpZWxkQS5vcmRlcik7XG4gICAgY29uc3Qgb3JkZXJCID0gYXBwbHlEZWZhdWx0T3JkZXJpbmcoZmllbGRCLm9yZGVyKTtcblxuICAgIGlmIChvcmRlckEgPT09IG9yZGVyQikge1xuICAgICAgcmV0dXJuIHJlc3VsdENsYXNzaWZpY2F0aW9uLmtlZXBQb3NpdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyQSA9PT0gZGVmYXVsdE9yZGVyaW5nKSB7XG4gICAgICByZXR1cm4gcmVzdWx0Q2xhc3NpZmljYXRpb24uZmllbGRBQ29tZXNBZnRlcjtcbiAgICB9XG5cbiAgICBpZiAob3JkZXJCID09PSBkZWZhdWx0T3JkZXJpbmcpIHtcbiAgICAgIHJldHVybiByZXN1bHRDbGFzc2lmaWNhdGlvbi5maWVsZEFDb21lc0ZpcnN0O1xuICAgIH1cblxuICAgIHJldHVybiBvcmRlckEgLSBvcmRlckI7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRHVwbGljYXRlZE9wdGlvbnMobGlzdDogQXJyYXk8YW55Pikge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGxpc3QuZmluZEluZGV4KG9wID0+IG9wLnZhbHVlID09PSBsaXN0W2ldLnZhbHVlKSAhPT0gaSkge1xuICAgICAgbGlzdC5zcGxpY2UoaSwgMSk7XG4gICAgICBpLS07XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVVbmRlZmluZWRBbmROdWxsT3B0aW9ucyhsaXN0OiBBcnJheTxhbnk+KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChsaXN0W2ldLnZhbHVlID09PSB1bmRlZmluZWQgfHwgbGlzdFtpXS52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgbGlzdC5zcGxpY2UoaSwgMSk7XG4gICAgICBpLS07XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSAnJykgfHwgdmFsdWUgPT09IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFeHRlcm5hbExpbmsodXJsKTogYm9vbGVhbiB7XG4gIHJldHVybiB1cmwgPyB1cmwuc3RhcnRzV2l0aCgnaHR0cCcpIDogZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuRXh0ZXJuYWxMaW5rKHVybCk6IHZvaWQge1xuICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1hdHRlZExpbmsobGluazogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IGZvcm1hdHRlZExpbmsgPSAnJztcbiAgLy8gUmV0aXJhIHRvZG9zIG9zIHBvbnRvcyBubyBjb21lw6dvIGRhIFVSTC5cbiAgaWYgKGxpbmspIHtcbiAgICBmb3JtYXR0ZWRMaW5rID0gbGluay5yZXBsYWNlKC9eKFxcLikrL2csICcnKTtcbiAgfVxuICAvLyBWZXJpZmljYSBzZSBmb2kgdXRpbGl6YWRvIHVtYSByb3RhIHF1ZSBuw6NvIGNvbWVjZSBjb20gYmFycmEuXG4gIGlmICghZm9ybWF0dGVkTGluay5zdGFydHNXaXRoKCcvJykpIHtcbiAgICBmb3JtYXR0ZWRMaW5rID0gJy8nLmNvbmNhdChmb3JtYXR0ZWRMaW5rKTtcbiAgfVxuICByZXR1cm4gZm9ybWF0dGVkTGluaztcbn1cblxuLyoqXG4gKiBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3Igb3JkZW5hciBkb2lzIHZhbG9yZXMuXG4gKlxuICogQHBhcmFtIGxlZnRTaWRlIFByaW1laXJvIHZhbG9yIGEgc2VyIGNvbXBhcmFkby5cbiAqIEBwYXJhbSByaWdodFNpZGUgU2VndW5kbyB2YWxvciBhIHNlciBjb21wYXJhZG8uXG4gKiBAcGFyYW0gYXNjZW5kaW5nIERldGVybWluYSBzZSBzZXLDoSBlbSBvcmRlbSBhc2NlbmRlbnRlIG91IGRlc2NlbmRlbnRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFZhbHVlcyhsZWZ0U2lkZTogc3RyaW5nIHwgRGF0ZSwgcmlnaHRTaWRlOiBzdHJpbmcgfCBEYXRlLCBhc2NlbmRpbmc6IGJvb2xlYW4gPSB0cnVlKTogbnVtYmVyIHtcbiAgY29uc3QgbGVmdCA9IGlzVHlwZW9mKGxlZnRTaWRlLCAnc3RyaW5nJykgPyAobGVmdFNpZGUgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpIDogbGVmdFNpZGU7XG4gIGNvbnN0IHJpZ2h0ID0gaXNUeXBlb2YocmlnaHRTaWRlLCAnc3RyaW5nJykgPyAocmlnaHRTaWRlIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKSA6IHJpZ2h0U2lkZTtcblxuICBjb25zdCBsZWZ0SXNJbnZhbGlkID0gbGVmdCA9PT0gbnVsbCB8fCBsZWZ0ID09PSB1bmRlZmluZWQgfHwgTnVtYmVyLmlzTmFOKGxlZnQpO1xuICBjb25zdCByaWdodElzSW52YWxpZCA9IHJpZ2h0ID09PSBudWxsIHx8IHJpZ2h0ID09PSB1bmRlZmluZWQgfHwgTnVtYmVyLmlzTmFOKHJpZ2h0KTtcblxuICBpZiAoYXNjZW5kaW5nKSB7XG4gICAgaWYgKGxlZnQgPCByaWdodCB8fCBsZWZ0SXNJbnZhbGlkKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSBlbHNlIGlmIChsZWZ0ID4gcmlnaHQgfHwgcmlnaHRJc0ludmFsaWQpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfSBlbHNlIGlmIChhc2NlbmRpbmcgPT09IGZhbHNlKSB7XG4gICAgaWYgKGxlZnQgPCByaWdodCB8fCBsZWZ0SXNJbnZhbGlkKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKGxlZnQgPiByaWdodCB8fCByaWdodElzSW52YWxpZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRGF0ZVJhbmdlKGRhdGU6IERhdGUsIGRhdGVTdGFydDogRGF0ZSwgZGF0ZUVuZDogRGF0ZSkge1xuICBpZiAoZGF0ZVN0YXJ0ICYmIGRhdGVFbmQpIHtcbiAgICByZXR1cm4gZGF0ZSA+PSBkYXRlU3RhcnQgJiYgZGF0ZSA8PSBkYXRlRW5kO1xuICB9IGVsc2UgaWYgKGRhdGVTdGFydCAmJiAhZGF0ZUVuZCkge1xuICAgIHJldHVybiBkYXRlID49IGRhdGVTdGFydDtcbiAgfSBlbHNlIGlmICghZGF0ZVN0YXJ0ICYmIGRhdGVFbmQpIHtcbiAgICByZXR1cm4gZGF0ZSA8PSBkYXRlRW5kO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1dWlkKCkge1xuICBmdW5jdGlvbiBoZXg0KCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKCgxICsgTWF0aC5yYW5kb20oKSkgKiAweDEwMDAwKVxuICAgICAgLnRvU3RyaW5nKDE2KVxuICAgICAgLnN1YnN0cmluZygxKTtcbiAgfVxuXG4gIHJldHVybiBoZXg0KCkgKyBoZXg0KCkgKyAnLScgKyBoZXg0KCkgKyAnLScgKyBoZXg0KCkgKyAnLScgKyBoZXg0KCkgKyAnLScgKyBoZXg0KCkgKyBoZXg0KCkgKyBoZXg0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3RleHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHt0ZXh0LnNsaWNlKDEpfWA7XG59XG5cbi8qKlxuICogTWFwZWlhIHVtIG5vdm8gYXJyYXkgYXBlbmFzIGNvbSBhcyBwcm9wcmllZGFkZXMgZGVmaW5pZGFzIHBlbG8gZGVzZW52b2x2ZWRvciBiYXNlYWRvIGVtIHVtIGFycmF5IGRlXG4gKiBvcmlnZW0uXG4gKlxuICogRXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIGNvbnN0IHBlb3BsZSA9IFtcbiAqICB7IGlkOiAxLCBuYW1lOiAnRnVsYW5vJywgYmlydGhkYXRlOiAnMTk4MC0xMS0wMScsIGdlbnJlOiAnTWFsZScsIGNpdHk6ICdTw6NvIFBhdWxvJywgZGVwZW5kZW50czogMiB9LFxuICogIHsgaWQ6IDIsIG5hbWU6ICdCZWx0cmFubycsIGJpcnRoZGF0ZTogJzE5OTctMDEtMjEnLCBnZW5yZTogJ0ZlbWFsZScsIGNpdHk6ICdKb2ludmlsbGUnLCBkZXBlbmRlbnRzOiAwIH0sXG4gKiAgeyBpZDogMywgbmFtZTogJ1NpY2xhbm8nLCBiaXJ0aGRhdGU6ICcxOTk1LTA3LTE1JywgZ2VucmU6ICdNYWxlJywgY2l0eTogJ0pvaW52aWxsZScsIGRlcGVuZGVudHM6IDAgfVxuICogXTtcbiAqXG4gKiBjb25zdCBwcm9wZXJ0aWVzID0gWydpZCcsICduYW1lJ107XG4gKlxuICogY29uc3QgaWRBbmROYW1lID0gbWFwQXJyYXlCeVByb3BlcnRpZXMocGVvcGxlLCBwcm9wZXJ0aWVzKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhpZEFuZE5hbWUpOyAvLyBbeyBpZDogMSwgbmFtZTogJ0Z1bGFubycgfSwgeyBpZDogMiwgbmFtZTogJ0JlbHRyYW5vJyB9LCB7IGlkOiAzLCBuYW1lOiAnU2ljbGFubycgfV1cbiAqIGBgYFxuICpcbiAqIFVtIG91dHJvIHVzbyBwYXJhIG8gbcOpdG9kbyDDqSBcInBhcmVhclwiIHRvZG9zIG9zIG9iamV0b3MgZG8gYXJyYXkgY29tIGFzIG1lc21hcyBwcm9wcmllZGFkZXMuXG4gKlxuICogYGBgXG4gKiBjb25zdCBjdXN0b21lcnMgPSBbXG4gKiAgeyBpZDogMSwgbmFtZTogJ0Z1bGFubycsIGNpdHk6ICdTw6NvIFBhdWxvJywgZGVwZW5kZW50czogMiB9LCAvLyBzZW0gZ2VucmVcbiAqICB7IGlkOiAyLCBuYW1lOiAnQmVsdHJhbm8nLCBnZW5yZTogJ0ZlbWFsZScsIGNpdHk6ICdKb2ludmlsbGUnIH0sIC8vIHNlbSBkZXBlbmRlbnRzXG4gKiAgeyBpZDogMywgbmFtZTogJ1NpY2xhbm8nLCBnZW5yZTogJ01hbGUnLCBjaXR5OiAnSm9pbnZpbGxlJywgZGVwZW5kZW50czogMCB9XG4gKiBdO1xuICogY29uc3QgcHJvcGVydGllcyA9IFsnaWQnLCAnbmFtZScsICdjaXR5JywgJ2dlbnJlJywgJ2RlcGVuZGVudHMnXTtcbiAqXG4gKiBjb25zdCBwYXR0ZXJuID0gbWFwQXJyYXlCeVByb3BlcnRpZXMoY3VzdG9tZXJzLCBwcm9wZXJ0aWVzKTtcbiAqIGNvbnNvbGUubG9nKHBhdHRlcm4pO1xuICpcbiAqIC8vIFtcbiAqIC8vICAgeyBpZDogMSwgbmFtZTogJ0Z1bGFubycsIGNpdHk6ICdTw6NvIFBhdWxvJywgZ2VucmU6IHVuZGVmaW5lZCwgZGVwZW5kZW50czogMiB9LFxuICogLy8gICB7IGlkOiAyLCBuYW1lOiAnQmVsdHJhbm8nLCBjaXR5OiAnSm9pbnZpbGxlJywgZ2VucmU6ICdGZW1hbGUnLCBkZXBlbmRlbnRzOiB1bmRlZmluZWQgfSxcbiAqIC8vICAgeyBpZDogMywgbmFtZTogJ1NpY2xhbm8nLCBjaXR5OiAnSm9pbnZpbGxlJywgZ2VucmU6ICdNYWxlJywgZGVwZW5kZW50czogMCB9XG4gKiAvLyBdXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gaXRlbXMge0FycmF5PGFueT59IEFycmF5IGRlIGl0ZW1zIG9yaWdpbmFsLlxuICogQHBhcmFtIHByb3BlcnRpZXMge0FycmF5PHN0cmluZz59IEFycmF5IGRlIHN0cmluZyBjb20gYSBsaXN0YSBkZSBwcm9wcmllZGFkZXMgcXVlIGRldmVtIHNlciByZXRvcm5hZGFzLlxuICpcbiAqIEByZXR1cm5zIEFycmF5PGFueT5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcEFycmF5QnlQcm9wZXJ0aWVzKGl0ZW1zOiBBcnJheTxhbnk+ID0gW10sIHByb3BlcnRpZXM6IEFycmF5PHN0cmluZz4gPSBbXSk6IEFycmF5PGFueT4ge1xuICByZXR1cm4gaXRlbXMubWFwKGl0ZW0gPT4gbWFwT2JqZWN0QnlQcm9wZXJ0aWVzKGl0ZW0sIHByb3BlcnRpZXMpKTtcbn1cblxuLyoqXG4gKiBNYXBlaWEgdW0gbm92byBvYmpldG8gYXBlbmFzIGNvbSBhcyBwcm9wcmllZGFkZXMgZGVmaW5pZGFzIHBlbG8gZGVzZW52b2x2ZWRvci5cbiAqXG4gKiBFeGVtcGxvOlxuICpcbiAqIGBgYFxuICogY29uc3QgcGVyc29uID0geyBpZDogMSwgbmFtZTogJ0Z1bGFubycsIGJpcnRoZGF0ZTogJzE5ODAtMTEtMDEnLCBnZW5yZTogJ01hbGUnLCBjaXR5OiAnU8OjbyBQYXVsbycsIGRlcGVuZGVudHM6IDIgfTtcbiAqXG4gKiBjb25zdCBwcm9wZXJ0aWVzID0gWydpZCcsICduYW1lJ107XG4gKlxuICogY29uc3QgaWRBbmROYW1lID0gbWFwT2JqZWN0QnlQcm9wZXJ0aWVzKHBlcnNvbiwgcHJvcGVydGllcyk7XG4gKlxuICogY29uc29sZS5sb2coaWRBbmROYW1lKTsgLy8geyBpZDogMSwgbmFtZTogJ0Z1bGFubycgfVxuICogYGBgXG4gKlxuICogQHBhcmFtIG9iamVjdCB7QXJyYXk8YW55Pn0gQXJyYXkgZGUgaXRlbXMgb3JpZ2luYWwuXG4gKiBAcGFyYW0gcHJvcGVydGllcyB7QXJyYXk8c3RyaW5nPn0gQXJyYXkgZGUgc3RyaW5nIGNvbSBhIGxpc3RhIGRlIHByb3ByaWVkYWRlcyBxdWUgZGV2ZW0gc2VyIHJldG9ybmFkYXMuXG4gKlxuICogQHJldHVybnMgQXJyYXk8YW55PlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwT2JqZWN0QnlQcm9wZXJ0aWVzKG9iamVjdDogYW55ID0ge30sIHByb3BlcnRpZXM6IEFycmF5PHN0cmluZz4gPSBbXSkge1xuICBjb25zdCBnZXRTZWxlY3RlZFByb3BlcnRpZXMgPSAoc2VsZWN0ZWRQcm9wZXJ0aWVzLCBwcm9wZXJ0eSkgPT4gKHtcbiAgICAuLi5zZWxlY3RlZFByb3BlcnRpZXMsXG4gICAgW3Byb3BlcnR5XTogb2JqZWN0W3Byb3BlcnR5XVxuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcy5yZWR1Y2UoZ2V0U2VsZWN0ZWRQcm9wZXJ0aWVzLCB7fSk7XG59XG5cbi8qKlxuICogUmV0b3JuYSBvcyB2YWxvcmVzIGRlIHVtIG9iamV0byBkZW50cm8gZGUgdW0gYXJyYXkuXG4gKlxuICogPiBTaW11bGEgbyBPYmplY3QudmFsdWVzKG9iaiksIG8gbWVzbW8gZGV2ZSBzZXIgcmVtb3ZpZG8gYXNzaW0gcXVlIGEgdmVyc8OjbyB0eXBlc2NyaXQgZm9yIGF0dWFsaXphZGEuXG4gKlxuICogQHBhcmFtIG9iamVjdCBPYmpldG8gZGUgb25kZSBzZXLDoSBwZWdvIG9zIHZhbG9yZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZXNGcm9tT2JqZWN0KG9iamVjdDogYW55ID0ge30pOiBBcnJheTxhbnk+IHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCkubWFwKHByb3BlcnR5ID0+IG9iamVjdFtwcm9wZXJ0eV0pO1xufVxuXG4vKipcbiAqIENvbnZlcnRlIHVtIGFycXVpdm8gZW0gYmFzZTY0LlxuICpcbiAqIEBwYXJhbSBmaWxlIGFycXVpdm8gcXVlIHNlcsOhIGNvbnZlcnRpZG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0SW1hZ2VUb0Jhc2U2NChmaWxlOiBGaWxlKTogUHJvbWlzZTxhbnk+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnRlIHVtIG7Dum1lcm8gZW0gZGVjaW1hbCBiYXNlYWRvIG5hIHF1YW50aWRhZGUgZGUgY2FzYXMgZGVjaW1haXMuXG4gKlxuICogQ2FzbyBvIHZhbG9yIHNlamEgaW52w6FsaWRvLCBzZXLDoSByZXRvcm5hZG8gbyB2YWxvciBgdW5kZWZpbmVkYC5cbiAqIFZhbG9yZXMgaW52w6FsaWRvcyBzw6NvOiBgZmFsc2VgLCBgTmFOYCwgYHN0cmluZ3NgIHF1ZSBuw6NvIG51bcOpcmljYXMsIGB1bmRlZmluZWRgIGUgYG51bGxgLlxuICpcbiAqIEBwYXJhbSBudW1iZXIgdmFsb3IgcXVlIHNlcsOhIGNvbnZlcnRpZG9cbiAqIEBwYXJhbSBkZWNpbWFsc1BsYWNlIHF1YW50aWRhZGUgZGUgY2FzYXMgZGVjaW1haXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnROdW1iZXJUb0RlY2ltYWwobnVtYmVyOiBhbnksIGRlY2ltYWxzUGxhY2U6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IGlzVmFsaWRWYWx1ZSA9IChudW1iZXIgfHwgbnVtYmVyID09PSAwKSAmJiAhaXNOYU4obnVtYmVyKTtcblxuICBjb25zdCBmbG9hdFZhbHVlID0gaXNWYWxpZFZhbHVlID8gcGFyc2VGbG9hdChudW1iZXIpIDogdW5kZWZpbmVkO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoZmxvYXRWYWx1ZS50b0ZpeGVkKGRlY2ltYWxzUGxhY2UpKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZsb2F0VmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRvcm5hIHVtYSBjb3BpYSBkbyBvYmpldG8gc3Vqbywgc2VtIGFzIHByb3ByaWVkYWRlcyBudWxhcyBvdSBpbmRlZmluaWRhcy5cbiAqIFJldG9ybmEgbyBvYmpldG8gc2VtIGFzIHByb3ByaWVkYWRlcyBxdWUgY29udMOpbSB2YWxvcmVzIG51bG9zIG91IGluZGVmaW5pZG9zLlxuICpcbiAqIEBwYXJhbSBkaXJ0eU9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJPYmplY3QoZGlydHlPYmplY3Q6IG9iamVjdCk6IGFueSB7XG4gIGNvbnN0IGNsZWFuT2JqZWN0ID0ge307XG5cbiAgT2JqZWN0LmtleXMoZGlydHlPYmplY3QpLmZvckVhY2goa2V5ID0+IHtcbiAgICBpZiAoZGlydHlPYmplY3Rba2V5XSAhPT0gbnVsbCAmJiBkaXJ0eU9iamVjdFtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFuT2JqZWN0W2tleV0gPSBkaXJ0eU9iamVjdFtrZXldO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGNsZWFuT2JqZWN0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVPYmplY3RUeXBlKHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIGlzVHlwZW9mKHZhbHVlLCAnb2JqZWN0JykgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmV0b3JuYSBvcyBlbGVtZW50b3MgRE9NIGNhcGF6ZXMgZGUgcmVjZWJlciBmb2NvLlxuICpcbiAqID4gQXR1YWxtZW50ZSBzw6NvIGNvbnNpZGVyYWRvcyBcImZvY8OhdmVpc1wiIG9zIGVsZW1lbnRvcyBET00gYGlucHV0YCwgYHNlbGVjdGAsXG4gKiBgdGV4dGFyZWFgLCBgYnV0dG9uYCBlIGBhYC5cbiAqXG4gKiBAcGFyYW0gcGFyZW50RWxlbWVudCBFbGVtZW50byBET00gcGFpLlxuICogQHJldHVybnMgTGlzdGEgZG9zIGVsZW1lbnRvcyBET00gZmlsaG9zIFwiZm9jw6F2ZWlzXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2N1c2FibGVFbGVtZW50cyhwYXJlbnRFbGVtZW50OiBFbGVtZW50KTogTm9kZUxpc3RPZjxFbGVtZW50PiB7XG4gIGNvbnN0IGZvY3VzYWJsZUVsZW1lbnRzID0gJ2J1dHRvbjpub3QoW2Rpc2FibGVkXSksIFtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdJztcbiAgcmV0dXJuIHBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChmb2N1c2FibGVFbGVtZW50cyk7XG59XG4iXX0=
|
|
@@ -933,20 +933,10 @@ function convertIsoToDate(value, start, end) {
|
|
|
933
933
|
return date;
|
|
934
934
|
}
|
|
935
935
|
else {
|
|
936
|
-
|
|
937
|
-
const timezone = new Date().getTimezoneOffset() * 60000;
|
|
938
|
-
return new Date(milliseconds + timezone);
|
|
936
|
+
return new Date(year, month - 1, day);
|
|
939
937
|
}
|
|
940
938
|
}
|
|
941
939
|
}
|
|
942
|
-
function convertIsoToDateNoTimezone(value) {
|
|
943
|
-
if (value) {
|
|
944
|
-
const day = parseInt(value.substring(8, 10), 10);
|
|
945
|
-
const month = parseInt(value.substring(5, 7), 10);
|
|
946
|
-
const year = parseInt(value.substring(0, 4), 10);
|
|
947
|
-
return new Date(year, month - 1, day);
|
|
948
|
-
}
|
|
949
|
-
}
|
|
950
940
|
function convertDateToISODate(date) {
|
|
951
941
|
if (date) {
|
|
952
942
|
const getMonth = date.getMonth() + 1;
|
|
@@ -11511,12 +11501,7 @@ class PoDatepickerBaseComponent {
|
|
|
11511
11501
|
return this._locale || this.shortLanguage;
|
|
11512
11502
|
}
|
|
11513
11503
|
set date(value) {
|
|
11514
|
-
|
|
11515
|
-
this._date = typeof value === 'string' ? convertIsoToDate(value, false, false) : value;
|
|
11516
|
-
}
|
|
11517
|
-
else {
|
|
11518
|
-
this._date = typeof value === 'string' ? convertIsoToDateNoTimezone(value) : value;
|
|
11519
|
-
}
|
|
11504
|
+
this._date = typeof value === 'string' ? convertIsoToDate(value, false, false) : value;
|
|
11520
11505
|
}
|
|
11521
11506
|
get date() {
|
|
11522
11507
|
return this._date;
|