@taiga-ui/cdk 4.45.0 → 4.46.0-canary.3415f27

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.
Files changed (29) hide show
  1. package/constants/empty.d.ts +1 -0
  2. package/constants/version.d.ts +1 -1
  3. package/constants/version.js +1 -1
  4. package/esm2022/constants/empty.mjs +2 -1
  5. package/esm2022/constants/version.mjs +2 -2
  6. package/esm2022/date-time/day.mjs +4 -2
  7. package/esm2022/date-time/month.mjs +5 -2
  8. package/esm2022/observables/close-watcher.mjs +2 -1
  9. package/esm2022/utils/dom/retarget-boundary-crossing.mjs +1 -1
  10. package/fesm2022/taiga-ui-cdk-constants.mjs +2 -1
  11. package/fesm2022/taiga-ui-cdk-constants.mjs.map +1 -1
  12. package/fesm2022/taiga-ui-cdk-date-time.mjs +7 -2
  13. package/fesm2022/taiga-ui-cdk-date-time.mjs.map +1 -1
  14. package/fesm2022/taiga-ui-cdk-observables.mjs +1 -0
  15. package/fesm2022/taiga-ui-cdk-observables.mjs.map +1 -1
  16. package/fesm2022/taiga-ui-cdk-utils-dom.mjs.map +1 -1
  17. package/package.json +2 -2
  18. package/schematics/collection.json +6 -0
  19. package/schematics/migration.json +5 -0
  20. package/schematics/ng-update/v5/index.d.ts +3 -0
  21. package/schematics/ng-update/v5/index.js +32 -0
  22. package/schematics/ng-update/v5/schema.json +7 -0
  23. package/schematics/ng-update/v5/steps/migrate-tokens/migrate-tokens.d.ts +13 -0
  24. package/schematics/ng-update/v5/steps/migrate-tokens/migrate-tokens.js +154 -0
  25. package/schematics/ng-update/v5/steps/migrate-tokens/update-tsconfig.d.ts +11 -0
  26. package/schematics/ng-update/v5/steps/migrate-tokens/update-tsconfig.js +75 -0
  27. package/schematics/ng-update/v5/tests/migrate-tokens/utils.d.ts +1 -0
  28. package/schematics/ng-update/v5/tests/migrate-tokens/utils.js +22 -0
  29. package/utils/dom/retarget-boundary-crossing.d.ts +1 -1
@@ -3,6 +3,7 @@ import { QueryList } from '@angular/core';
3
3
  * For type safety when using @ContentChildren and @ViewChildren
4
4
  *
5
5
  * NOTE: Be careful subscribing to 'changes'
6
+ * @deprecated use viewChild(), viewChildren(), contentChild() and contentChildren() for strict type checking
6
7
  */
7
8
  export declare const EMPTY_QUERY: QueryList<any>;
8
9
  export declare const EMPTY_ARRAY: [];
@@ -1 +1 @@
1
- export declare const TUI_VERSION = "4.45.0";
1
+ export declare const TUI_VERSION = "4.46.0-canary.3415f27";
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TUI_VERSION = void 0;
4
- exports.TUI_VERSION = '4.45.0';
4
+ exports.TUI_VERSION = '4.46.0-canary.3415f27';
@@ -13,6 +13,7 @@ const rect = {
13
13
  * For type safety when using @ContentChildren and @ViewChildren
14
14
  *
15
15
  * NOTE: Be careful subscribing to 'changes'
16
+ * @deprecated use viewChild(), viewChildren(), contentChild() and contentChildren() for strict type checking
16
17
  */
17
18
  export const EMPTY_QUERY = new QueryList();
18
19
  export const EMPTY_ARRAY = [];
@@ -21,4 +22,4 @@ export const EMPTY_CLIENT_RECT = {
21
22
  ...rect,
22
23
  toJSON: () => rect,
23
24
  };
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvY29uc3RhbnRzL2VtcHR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEMsTUFBTSxJQUFJLEdBQUc7SUFDVCxNQUFNLEVBQUUsQ0FBQztJQUNULE1BQU0sRUFBRSxDQUFDO0lBQ1QsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsQ0FBQztJQUNSLEdBQUcsRUFBRSxDQUFDO0lBQ04sS0FBSyxFQUFFLENBQUM7SUFDUixDQUFDLEVBQUUsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDO0NBQ0UsQ0FBQztBQUVYOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxTQUFTLEVBQU8sQ0FBQztBQUNoRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQU8sRUFBRSxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBNkIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFZO0lBQ3RDLEdBQUcsSUFBSTtJQUNQLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO0NBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1F1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IHJlY3QgPSB7XG4gICAgYm90dG9tOiAwLFxuICAgIGhlaWdodDogMCxcbiAgICBsZWZ0OiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIHRvcDogMCxcbiAgICB3aWR0aDogMCxcbiAgICB4OiAwLFxuICAgIHk6IDAsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIEZvciB0eXBlIHNhZmV0eSB3aGVuIHVzaW5nIEBDb250ZW50Q2hpbGRyZW4gYW5kIEBWaWV3Q2hpbGRyZW5cbiAqXG4gKiBOT1RFOiBCZSBjYXJlZnVsIHN1YnNjcmliaW5nIHRvICdjaGFuZ2VzJ1xuICovXG5leHBvcnQgY29uc3QgRU1QVFlfUVVFUlkgPSBuZXcgUXVlcnlMaXN0PGFueT4oKTtcbmV4cG9ydCBjb25zdCBFTVBUWV9BUlJBWTogW10gPSBbXTtcbmV4cG9ydCBjb25zdCBFTVBUWV9GVU5DVElPTjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkID0gKCkgPT4ge307XG5leHBvcnQgY29uc3QgRU1QVFlfQ0xJRU5UX1JFQ1Q6IERPTVJlY3QgPSB7XG4gICAgLi4ucmVjdCxcbiAgICB0b0pTT046ICgpID0+IHJlY3QsXG59O1xuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvY29uc3RhbnRzL2VtcHR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEMsTUFBTSxJQUFJLEdBQUc7SUFDVCxNQUFNLEVBQUUsQ0FBQztJQUNULE1BQU0sRUFBRSxDQUFDO0lBQ1QsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsQ0FBQztJQUNSLEdBQUcsRUFBRSxDQUFDO0lBQ04sS0FBSyxFQUFFLENBQUM7SUFDUixDQUFDLEVBQUUsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDO0NBQ0UsQ0FBQztBQUVYOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksU0FBUyxFQUFPLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFPLEVBQUUsQ0FBQztBQUNsQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQTZCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBWTtJQUN0QyxHQUFHLElBQUk7SUFDUCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtDQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtRdWVyeUxpc3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jb25zdCByZWN0ID0ge1xuICAgIGJvdHRvbTogMCxcbiAgICBoZWlnaHQ6IDAsXG4gICAgbGVmdDogMCxcbiAgICByaWdodDogMCxcbiAgICB0b3A6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgeDogMCxcbiAgICB5OiAwLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBGb3IgdHlwZSBzYWZldHkgd2hlbiB1c2luZyBAQ29udGVudENoaWxkcmVuIGFuZCBAVmlld0NoaWxkcmVuXG4gKlxuICogTk9URTogQmUgY2FyZWZ1bCBzdWJzY3JpYmluZyB0byAnY2hhbmdlcydcbiAqIEBkZXByZWNhdGVkIHVzZSB2aWV3Q2hpbGQoKSwgdmlld0NoaWxkcmVuKCksIGNvbnRlbnRDaGlsZCgpIGFuZCBjb250ZW50Q2hpbGRyZW4oKSBmb3Igc3RyaWN0IHR5cGUgY2hlY2tpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IEVNUFRZX1FVRVJZID0gbmV3IFF1ZXJ5TGlzdDxhbnk+KCk7XG5leHBvcnQgY29uc3QgRU1QVFlfQVJSQVk6IFtdID0gW107XG5leHBvcnQgY29uc3QgRU1QVFlfRlVOQ1RJT046ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuZXhwb3J0IGNvbnN0IEVNUFRZX0NMSUVOVF9SRUNUOiBET01SZWN0ID0ge1xuICAgIC4uLnJlY3QsXG4gICAgdG9KU09OOiAoKSA9PiByZWN0LFxufTtcbiJdfQ==
@@ -1,2 +1,2 @@
1
- export const TUI_VERSION = '4.45.0';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9jb25zdGFudHMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRVSV9WRVJTSU9OID0gJzQuNDUuMCc7XG4iXX0=
1
+ export const TUI_VERSION = '4.46.0-canary.3415f27';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9jb25zdGFudHMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVFVJX1ZFUlNJT04gPSAnNC40Ni4wLWNhbmFyeS4zNDE1ZjI3JztcbiJdfQ==
@@ -275,7 +275,9 @@ export class TuiDay extends TuiMonth {
275
275
  * Returns native {@link Date} based on local time zone
276
276
  */
277
277
  toLocalNativeDate() {
278
- return new Date(this.year, this.month, this.day);
278
+ const date = super.toLocalNativeDate();
279
+ date.setDate(this.day);
280
+ return date;
279
281
  }
280
282
  /**
281
283
  * Returns native {@link Date} based on UTC
@@ -289,4 +291,4 @@ export class TuiInvalidDayException extends Error {
289
291
  super(ngDevMode ? `Invalid day: ${year}-${month}-${day}` : '');
290
292
  }
291
293
  }
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL2RhdGUtdGltZS9kYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBRXhELE9BQU8sRUFBQyxVQUFVLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUU3RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsT0FBTyxFQUFFLGNBQWMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFL0I7O0dBRUc7QUFDSCxNQUFNLE9BQU8sTUFBTyxTQUFRLFFBQVE7SUFDaEM7Ozs7T0FJRztJQUNILFlBQ0ksSUFBWSxFQUNaLEtBQWEsRUFDRyxHQUFXO1FBRTNCLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFGSCxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBRzNCLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFVO1FBQ3hDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENB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Q0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDYSxpQkFBaUI7UUFDN0IsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNhLGVBQWU7UUFDM0IsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsS0FBSztJQUM3QyxZQUFZLElBQVksRUFBRSxLQUFhLEVBQUUsR0FBVztRQUNoRCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJAdGFpZ2EtdWkvdHNjb25maWcvbmctZGV2LW1vZGVcIiAvPlxuXG5pbXBvcnQge3R1aUluUmFuZ2UsIHR1aU5vcm1hbGl6ZVRvSW50TnVtYmVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuXG5pbXBvcnQge0RBVEVfRklMTEVSX0xFTkdUSH0gZnJvbSAnLi9kYXRlLWZpbGxlcnMnO1xuaW1wb3J0IHtNSU5fREFZLCBNT05USFNfSU5fWUVBUn0gZnJvbSAnLi9kYXRlLXRpbWUnO1xuaW1wb3J0IHtUdWlEYXlPZldlZWt9IGZyb20gJy4vZGF5LW9mLXdlZWsnO1xuaW1wb3J0IHtUdWlNb250aH0gZnJvbSAnLi9tb250aCc7XG5pbXBvcnQge1R1aU1vbnRoTnVtYmVyfSBmcm9tICcuL21vbnRoLW51bWJlcic7XG5pbXBvcnQgdHlwZSB7VHVpRGF0ZU1vZGUsIFR1aURheUxpa2V9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtUdWlZZWFyfSBmcm9tICcuL3llYXInO1xuXG4vKipcbiAqIEltbXV0YWJsZSBkYXRlIG9iamVjdCwgY29uc2lzdGluZyBvZiBkYXksIG1vbnRoIGFuZCB5ZWFyXG4gKi9cbmV4cG9ydCBjbGFzcyBUdWlEYXkgZXh0ZW5kcyBUdWlNb250aCB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHllYXJcbiAgICAgKiBAcGFyYW0gbW9udGggKHN0YXJ0aW5nIHdpdGggMClcbiAgICAgKiBAcGFyYW0gZGF5XG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHllYXI6IG51bWJlcixcbiAgICAgICAgbW9udGg6IG51bWJlcixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGRheTogbnVtYmVyLFxuICAgICkge1xuICAgICAgICBzdXBlcih5ZWFyLCBtb250aCk7XG4gICAgICAgIG5nRGV2TW9kZSAmJiBjb25zb2xlLmFzc2VydChUdWlEYXkuaXNWYWxpZERheSh5ZWFyLCBtb250aCwgZGF5KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB7QGxpbmsgVHVpRGF5fSBmcm9tIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gbG9jYWwgdGltZSB6b25lXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmcm9tTG9jYWxOYXRpdmVEYXRlKGRhdGU6IERhdGUpOiBUdWlEYXkge1xuICAgICAgICByZXR1cm4gbmV3IFR1aURheShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMge0BsaW5rIFR1aURheX0gZnJvbSBuYXRpdmUge0BsaW5rIERhdGV9IHVzaW5nIFVUQ1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbVV0Y05hdGl2ZURhdGUoZGF0ZTogRGF0ZSk6IFR1aURheSB7XG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgdmFsaWRpdHkgb2YgeWVhciwgbW9udGggYW5kIGRheVxuICAgICAqXG4gICAgICogQHBhcmFtIHllYXJcbiAgICAgKiBAcGFyYW0gbW9udGhcbiAgICAgKiBAcGFyYW0gZGF5XG4gICAgICogQHJldHVybiBib29sZWFuIHZhbGlkaXR5XG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpc1ZhbGlkRGF5KHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIFR1aU1vbnRoLmlzVmFsaWRNb250aCh5ZWFyLCBtb250aCkgJiZcbiAgICAgICAgICAgIE51bWJlci5pc0ludGVnZXIoZGF5KSAmJlxuICAgICAgICAgICAgdHVpSW5SYW5nZShcbiAgICAgICAgICAgICAgICBkYXksXG4gICAgICAgICAgICAgICAgTUlOX0RBWSxcbiAgICAgICAgICAgICAgICBUdWlNb250aC5nZXRNb250aERheXNDb3VudChtb250aCwgVHVpWWVhci5pc0xlYXBZZWFyKHllYXIpKSArIDEsXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3VycmVudCBkYXkgYmFzZWQgb24gbG9jYWwgdGltZSB6b25lXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBjdXJyZW50TG9jYWwoKTogVHVpRGF5IHtcbiAgICAgICAgY29uc3QgbmF0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBuYXRpdmVEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gbmF0aXZlRGF0ZS5nZXRNb250aCgpO1xuICAgICAgICBjb25zdCBkYXkgPSBuYXRpdmVEYXRlLmdldERhdGUoKTtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheSh5ZWFyLCBtb250aCwgZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1cnJlbnQgZGF5IGJhc2VkIG9uIFVUQ1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgY3VycmVudFV0YygpOiBUdWlEYXkge1xuICAgICAgICBjb25zdCBuYXRpdmVEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgeWVhciA9IG5hdGl2ZURhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBuYXRpdmVEYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgICAgIGNvbnN0IGRheSA9IG5hdGl2ZURhdGUuZ2V0VVRDRGF0ZSgpO1xuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KHllYXIsIG1vbnRoLCBkYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMge0BsaW5rIFR1aURheX0gbm9ybWFsaXppbmcgeWVhciwgbW9udGggYW5kIGRheS4ge0BsaW5rIE5hTn0gaXMgdHVybmVkIGludG8gbWluaW1hbCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB5ZWFyIGFueSB5ZWFyIHZhbHVlLCBpbmNsdWRpbmcgaW52YWxpZFxuICAgICAqIEBwYXJhbSBtb250aCBhbnkgbW9udGggdmFsdWUsIGluY2x1ZGluZyBpbnZhbGlkIChtb250aHMgc3RhcnQgd2l0aCAwKVxuICAgICAqIEBwYXJhbSBkYXkgYW55IGRheSB2YWx1ZSwgaW5jbHVkaW5nIGludmFsaWRcbiAgICAgKiBAcmV0dXJuIG5vcm1hbGl6ZWQgZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbm9ybWFsaXplT2YoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlcik6IFR1aURheSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRZZWFyID0gVHVpWWVhci5ub3JtYWxpemVZZWFyUGFydCh5ZWFyKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZE1vbnRoID0gVHVpTW9udGgubm9ybWFsaXplTW9udGhQYXJ0KG1vbnRoKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZERheSA9IFR1aURheS5ub3JtYWxpemVEYXlQYXJ0KFxuICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgbm9ybWFsaXplZE1vbnRoLFxuICAgICAgICAgICAgbm9ybWFsaXplZFllYXIsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlEYXkobm9ybWFsaXplZFllYXIsIG5vcm1hbGl6ZWRNb250aCwgbm9ybWFsaXplZERheSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBsZW5ndGhCZXR3ZWVuKGZyb206IFR1aURheSwgdG86IFR1aURheSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgKHRvLnRvTG9jYWxOYXRpdmVEYXRlKCkuZ2V0VGltZSgpIC0gZnJvbS50b0xvY2FsTmF0aXZlRGF0ZSgpLmdldFRpbWUoKSkgL1xuICAgICAgICAgICAgICAgICgxMDAwICogNjAgKiA2MCAqIDI0KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHBhcnNlUmF3RGF0ZVN0cmluZyhcbiAgICAgICAgZGF0ZTogc3RyaW5nLFxuICAgICAgICBkYXRlTW9kZTogVHVpRGF0ZU1vZGUgPSAnRE1ZJyxcbiAgICApOiB7ZGF5OiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IHllYXI6IG51bWJlcn0ge1xuICAgICAgICBuZ0Rldk1vZGUgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFxuICAgICAgICAgICAgICAgIGRhdGUubGVuZ3RoID09PSBEQVRFX0ZJTExFUl9MRU5HVEgsXG4gICAgICAgICAgICAgICAgJ1twYXJzZVJhd0RhdGVTdHJpbmddOiB3cm9uZyBkYXRlIHN0cmluZyBsZW5ndGgnLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICBzd2l0Y2ggKGRhdGVNb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdNRFknOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRheTogcGFyc2VJbnQoZGF0ZS5zbGljZSgzLCA1KSwgMTApLFxuICAgICAgICAgICAgICAgICAgICBtb250aDogcGFyc2VJbnQoZGF0ZS5zbGljZSgwLCAyKSwgMTApIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogcGFyc2VJbnQoZGF0ZS5zbGljZSg2LCAxMCksIDEwKSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjYXNlICdZTUQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRheTogcGFyc2VJbnQoZGF0ZS5zbGljZSg4LCAxMCksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6IHBhcnNlSW50KGRhdGUuc2xpY2UoNSwgNyksIDEwKSAtIDEsXG4gICAgICAgICAgICAgICAgICAgIHllYXI6IHBhcnNlSW50KGRhdGUuc2xpY2UoMCwgNCksIDEwKSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjYXNlICdETVknOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkYXk6IHBhcnNlSW50KGRhdGUuc2xpY2UoMCwgMiksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6IHBhcnNlSW50KGRhdGUuc2xpY2UoMywgNSksIDEwKSAtIDEsXG4gICAgICAgICAgICAgICAgICAgIHllYXI6IHBhcnNlSW50KGRhdGUuc2xpY2UoNiwgMTApLCAxMCksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IE1vdmUgbW9udGggYW5kIHllYXIgcmVsYXRlZCBjb2RlIGNvcnJlc3BvbmRpbmcgY2xhc3Nlc1xuICAgIC8qKlxuICAgICAqIFBhcnNpbmcgYSBzdHJpbmcgd2l0aCBkYXRlIHdpdGggbm9ybWFsaXphdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIHJhd0RhdGUgZGF0ZSBzdHJpbmdcbiAgICAgKiBAcGFyYW0gZGF0ZU1vZGUgZGF0ZSBmb3JtYXQgb2YgdGhlIGRhdGUgc3RyaW5nIChETVkgfCBNRFkgfCBZTUQpXG4gICAgICogQHJldHVybiBub3JtYWxpemVkIGRhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIG5vcm1hbGl6ZVBhcnNlKHJhd0RhdGU6IHN0cmluZywgZGF0ZU1vZGU6IFR1aURhdGVNb2RlID0gJ0RNWScpOiBUdWlEYXkge1xuICAgICAgICBjb25zdCB7ZGF5LCBtb250aCwgeWVhcn0gPSB0aGlzLnBhcnNlUmF3RGF0ZVN0cmluZyhyYXdEYXRlLCBkYXRlTW9kZSk7XG5cbiAgICAgICAgcmV0dXJuIFR1aURheS5ub3JtYWxpemVPZih5ZWFyLCBtb250aCwgZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzaW5nIGEgZGF0ZSBzdHJpbmdpZmllZCBpbiBhIHRvSlNPTiBmb3JtYXRcbiAgICAgKiBAcGFyYW0geWVhck1vbnRoRGF5U3RyaW5nIGRhdGUgc3RyaW5nIGluIGZvcm1hdCBvZiBZWVlZLU1NLUREXG4gICAgICogQHJldHVybiBkYXRlXG4gICAgICogQHRocm93cyBleGNlcHRpb25zIGlmIGFueSBwYXJ0IG9mIHRoZSBkYXRlIGlzIGludmFsaWRcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGpzb25QYXJzZSh5ZWFyTW9udGhEYXlTdHJpbmc6IHN0cmluZyk6IFR1aURheSB7XG4gICAgICAgIGNvbnN0IHtkYXksIG1vbnRoLCB5ZWFyfSA9IHRoaXMucGFyc2VSYXdEYXRlU3RyaW5nKHllYXJNb250aERheVN0cmluZywgJ1lNRCcpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFUdWlNb250aC5pc1ZhbGlkTW9udGgoeWVhciwgbW9udGgpIHx8XG4gICAgICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihkYXkpIHx8XG4gICAgICAgICAgICAhdHVpSW5SYW5nZShcbiAgICAgICAgICAgICAgICBkYXksXG4gICAgICAgICAgICAgICAgTUlOX0RBWSxcbiAgICAgICAgICAgICAgICBUdWlNb250aC5nZXRNb250aERheXNDb3VudChtb250aCwgVHVpWWVhci5pc0xlYXBZZWFyKHllYXIpKSArIDEsXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR1aUludmFsaWREYXlFeGNlcHRpb24oeWVhciwgbW9udGgsIGRheSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheSh5ZWFyLCBtb250aCwgZGF5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG5vcm1hbGl6ZURheVBhcnQoZGF5OiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIG5nRGV2TW9kZSAmJiBjb25zb2xlLmFzc2VydChUdWlNb250aC5pc1ZhbGlkTW9udGgoeWVhciwgbW9udGgpKTtcblxuICAgICAgICBjb25zdCBtb250aERheXNDb3VudCA9IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KFxuICAgICAgICAgICAgbW9udGgsXG4gICAgICAgICAgICBUdWlZZWFyLmlzTGVhcFllYXIoeWVhciksXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHR1aU5vcm1hbGl6ZVRvSW50TnVtYmVyKGRheSwgMSwgbW9udGhEYXlzQ291bnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZm9ybWF0dGVkRGF5UGFydCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMuZGF5KS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNXZWVrZW5kKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkYXlPZldlZWsgPSB0aGlzLmRheU9mV2VlayhmYWxzZSk7XG5cbiAgICAgICAgcmV0dXJuIGRheU9mV2VlayA9PT0gVHVpRGF5T2ZXZWVrLlNhdHVyZGF5IHx8IGRheU9mV2VlayA9PT0gVHVpRGF5T2ZXZWVrLlN1bmRheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRheSBvZiB3ZWVrXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RhcnRGcm9tTW9uZGF5IHdoZXRoZXIgd2VlayBzdGFydHMgZnJvbSBNb25kYXkgYW5kIG5vdCBmcm9tIFN1bmRheVxuICAgICAqIEByZXR1cm4gZGF5IG9mIHdlZWsgKGZyb20gMCB0byA2KVxuICAgICAqL1xuICAgIHB1YmxpYyBkYXlPZldlZWsoc3RhcnRGcm9tTW9uZGF5ID0gdHJ1ZSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGRheU9mV2VlayA9IHN0YXJ0RnJvbU1vbmRheVxuICAgICAgICAgICAgPyB0aGlzLnRvTG9jYWxOYXRpdmVEYXRlKCkuZ2V0RGF5KCkgLSAxXG4gICAgICAgICAgICA6IHRoaXMudG9Mb2NhbE5hdGl2ZURhdGUoKS5nZXREYXkoKTtcblxuICAgICAgICByZXR1cm4gZGF5T2ZXZWVrIDwgMCA/IDYgOiBkYXlPZldlZWs7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIGRhdGUgaXMgYWZ0ZXIgY3VycmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBkYXlCZWZvcmUoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1vbnRoQmVmb3JlKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy5tb250aFNhbWUoYW5vdGhlcikgJiYgdGhpcy5kYXkgPCBhbm90aGVyLmRheSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyBhZnRlciBvciBlcXVhbHMgdG8gY3VycmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBkYXlTYW1lT3JCZWZvcmUoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1vbnRoQmVmb3JlKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy5tb250aFNhbWUoYW5vdGhlcikgJiYgdGhpcy5kYXkgPD0gYW5vdGhlci5kYXkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIGRhdGUgaXMgdGhlIHNhbWUgYXMgY3VycmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBkYXlTYW1lKGFub3RoZXI6IFR1aURheSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aFNhbWUoYW5vdGhlcikgJiYgdGhpcy5kYXkgPT09IGFub3RoZXIuZGF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBkYXRlIGlzIGVpdGhlciBiZWZvcmUgb3IgdGhlIHNhbWUgYXMgY3VycmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBkYXlTYW1lT3JBZnRlcihhbm90aGVyOiBUdWlEYXkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubW9udGhBZnRlcihhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMubW9udGhTYW1lKGFub3RoZXIpICYmIHRoaXMuZGF5ID49IGFub3RoZXIuZGF5KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBkYXRlIGlzIGJlZm9yZSBjdXJyZW50XG4gICAgICovXG4gICAgcHVibGljIGRheUFmdGVyKGFub3RoZXI6IFR1aURheSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tb250aEFmdGVyKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy5tb250aFNhbWUoYW5vdGhlcikgJiYgdGhpcy5kYXkgPiBhbm90aGVyLmRheSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGFtcGluZyBkYXRlIGJldHdlZW4gdHdvIGxpbWl0c1xuICAgICAqXG4gICAgICogQHBhcmFtIG1pblxuICAgICAqIEBwYXJhbSBtYXhcbiAgICAgKiBAcmV0dXJuIGNsYW1wZWQgZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBkYXlMaW1pdChtaW46IFR1aURheSB8IG51bGwsIG1heDogVHVpRGF5IHwgbnVsbCk6IFR1aURheSB7XG4gICAgICAgIGlmIChtaW4gIT09IG51bGwgJiYgdGhpcy5kYXlCZWZvcmUobWluKSkge1xuICAgICAgICAgICAgcmV0dXJuIG1pbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXggIT09IG51bGwgJiYgdGhpcy5kYXlBZnRlcihtYXgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW1tdXRhYmx5IGFsdGVycyBjdXJyZW50IGRheSBieSBwYXNzZWQgb2Zmc2V0XG4gICAgICpcbiAgICAgKiBJZiByZXN1bHRpbmcgbW9udGggaGFzIG1vcmUgZGF5cyB0aGFuIG9yaWdpbmFsIG9uZSwgZGF0ZSBpcyByb3VuZGVkIHRvIHRoZSBtYXhpbXVtIGRheVxuICAgICAqIGluIHRoZSByZXN1bHRpbmcgbW9udGguIE9mZnNldCBvZiBkYXlzIHdpbGwgYmUgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgcmVzdWx0ZWQgeWVhciBhbmQgbW9udGhcbiAgICAgKiB0byBub3QgaW50ZXJmZXJlIHdpdGggcGFyZW50IGNsYXNzZXMgbWV0aG9kc1xuICAgICAqXG4gICAgICogQHBhcmFtIG9mZnNldFxuICAgICAqIEByZXR1cm4gbmV3IGRhdGUgb2JqZWN0IGFzIGEgcmVzdWx0IG9mIG9mZnNldHRpbmcgY3VycmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBhcHBlbmQoe3llYXIgPSAwLCBtb250aCA9IDAsIGRheSA9IDB9OiBUdWlEYXlMaWtlKTogVHVpRGF5IHtcbiAgICAgICAgY29uc3QgdG90YWxNb250aHMgPSAodGhpcy55ZWFyICsgeWVhcikgKiBNT05USFNfSU5fWUVBUiArIHRoaXMubW9udGggKyBtb250aDtcbiAgICAgICAgbGV0IHllYXJzID0gTWF0aC5mbG9vcih0b3RhbE1vbnRocyAvIE1PTlRIU19JTl9ZRUFSKTtcbiAgICAgICAgbGV0IG1vbnRocyA9IHRvdGFsTW9udGhzICUgTU9OVEhTX0lOX1lFQVI7XG5cbiAgICAgICAgbGV0IGRheXMgPVxuICAgICAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgdGhpcy5kYXksXG4gICAgICAgICAgICAgICAgVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGhzLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcnMpKSxcbiAgICAgICAgICAgICkgKyBkYXk7XG5cbiAgICAgICAgd2hpbGUgKGRheXMgPiBUdWlNb250aC5nZXRNb250aERheXNDb3VudChtb250aHMsIFR1aVllYXIuaXNMZWFwWWVhcih5ZWFycykpKSB7XG4gICAgICAgICAgICBkYXlzIC09IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KG1vbnRocywgVHVpWWVhci5pc0xlYXBZZWFyKHllYXJzKSk7XG5cbiAgICAgICAgICAgIGlmIChtb250aHMgPT09IFR1aU1vbnRoTnVtYmVyLkRlY2VtYmVyKSB7XG4gICAgICAgICAgICAgICAgeWVhcnMrKztcbiAgICAgICAgICAgICAgICBtb250aHMgPSBUdWlNb250aE51bWJlci5KYW51YXJ5O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb250aHMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChkYXlzIDwgTUlOX0RBWSkge1xuICAgICAgICAgICAgaWYgKG1vbnRocyA9PT0gVHVpTW9udGhOdW1iZXIuSmFudWFyeSkge1xuICAgICAgICAgICAgICAgIHllYXJzLS07XG4gICAgICAgICAgICAgICAgbW9udGhzID0gVHVpTW9udGhOdW1iZXIuRGVjZW1iZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vbnRocy0tO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXlzICs9IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KG1vbnRocywgVHVpWWVhci5pc0xlYXBZZWFyKHllYXJzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheSh5ZWFycywgbW9udGhzLCBkYXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGZvcm1hdHRlZCB3aG9sZSBkYXRlXG4gICAgICovXG4gICAgcHVibGljIGdldEZvcm1hdHRlZERheShkYXRlRm9ybWF0OiBUdWlEYXRlTW9kZSwgc2VwYXJhdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBuZ0Rldk1vZGUgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFxuICAgICAgICAgICAgICAgIHNlcGFyYXRvci5sZW5ndGggPT09IDEsXG4gICAgICAgICAgICAgICAgJ1NlcGFyYXRvciBzaG91bGQgY29uc2lzdCBvZiBvbmx5IDEgc3ltYm9sJyxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgZGQgPSB0aGlzLmZvcm1hdHRlZERheVBhcnQ7XG4gICAgICAgIGNvbnN0IG1tID0gdGhpcy5mb3JtYXR0ZWRNb250aFBhcnQ7XG4gICAgICAgIGNvbnN0IHl5eXkgPSB0aGlzLmZvcm1hdHRlZFllYXI7XG5cbiAgICAgICAgc3dpdGNoIChkYXRlRm9ybWF0KSB7XG4gICAgICAgICAgICBjYXNlICdNRFknOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHttbX0ke3NlcGFyYXRvcn0ke2RkfSR7c2VwYXJhdG9yfSR7eXl5eX1gO1xuICAgICAgICAgICAgY2FzZSAnWU1EJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7eXl5eX0ke3NlcGFyYXRvcn0ke21tfSR7c2VwYXJhdG9yfSR7ZGR9YDtcbiAgICAgICAgICAgIGNhc2UgJ0RNWSc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtkZH0ke3NlcGFyYXRvcn0ke21tfSR7c2VwYXJhdG9yfSR7eXl5eX1gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHRvU3RyaW5nKGRhdGVGb3JtYXQ6IFR1aURhdGVNb2RlID0gJ0RNWScsIHNlcGFyYXRvciA9ICcuJyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZvcm1hdHRlZERheShkYXRlRm9ybWF0LCBzZXBhcmF0b3IpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB0b0pTT04oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3N1cGVyLnRvSlNPTigpfS0ke3RoaXMuZm9ybWF0dGVkRGF5UGFydH1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgbmF0aXZlIHtAbGluayBEYXRlfSBiYXNlZCBvbiBsb2NhbCB0aW1lIHpvbmVcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgdG9Mb2NhbE5hdGl2ZURhdGUoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgsIHRoaXMuZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHRvVXRjTmF0aXZlRGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHRoaXMueWVhciwgdGhpcy5tb250aCwgdGhpcy5kYXkpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUdWlJbnZhbGlkRGF5RXhjZXB0aW9uIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIobmdEZXZNb2RlID8gYEludmFsaWQgZGF5OiAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWAgOiAnJyk7XG4gICAgfVxufVxuIl19
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL2RhdGUtdGltZS9kYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBRXhELE9BQU8sRUFBQyxVQUFVLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUU3RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsT0FBTyxFQUFFLGNBQWMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFL0I7O0dBRUc7QUFDSCxNQUFNLE9BQU8sTUFBTyxTQUFRLFFBQVE7SUFDaEM7Ozs7T0FJRztJQUNILFlBQ0ksSUFBWSxFQUNaLEtBQWEsRUFDRyxHQUFXO1FBRTNCLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFGSCxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBRzNCLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFVO1FBQ3hDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBVTtRQUN0QyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsR0FBVztRQUM3RCxPQUFPLENBQ0gsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ3JCLFVBQVUsQ0FDTixHQUFHLEVBQ0gsT0FBTyxFQUNQLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDbEUsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFVLFlBQVk7UUFDL0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVqQyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFVLFVBQVU7UUFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVwQyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsR0FBVztRQUM5RCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDekMsR0FBRyxFQUNILGVBQWUsRUFDZixjQUFjLENBQ2pCLENBQUM7UUFFRixPQUFPLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVNLE1BQU0sQ0FBVSxhQUFhLENBQUMsSUFBWSxFQUFFLEVBQVU7UUFDekQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUNiLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FDNUIsQ0FBQztJQUNOLENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQzVCLElBQVksRUFDWixXQUF3QixLQUFLO1FBRTdCLFNBQVM7WUFDTCxPQUFPLENBQUMsTUFBTSxDQUNWLElBQUksQ0FBQyxNQUFNLEtBQUssa0JBQWtCLEVBQ2xDLGdEQUFnRCxDQUNuRCxDQUFDO1FBRU4sUUFBUSxRQUFRLEVBQUU7WUFDZCxLQUFLLEtBQUs7Z0JBQ04sT0FBTztvQkFDSCxHQUFHLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDbkMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDO29CQUN6QyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDeEMsQ0FBQztZQUVOLEtBQUssS0FBSztnQkFDTixPQUFPO29CQUNILEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNwQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUM7b0JBQ3pDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2lCQUN2QyxDQUFDO1lBRU4sS0FBSyxLQUFLLENBQUM7WUFDWDtnQkFDSSxPQUFPO29CQUNILEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNuQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUM7b0JBQ3pDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2lCQUN4QyxDQUFDO1NBQ1Q7SUFDTCxDQUFDO0lBRUQsK0RBQStEO0lBQy9EOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBZSxFQUFFLFdBQXdCLEtBQUs7UUFDdkUsTUFBTSxFQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUV0RSxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUEwQjtRQUM5QyxNQUFNLEVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFOUUsSUFDSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztZQUNuQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ3RCLENBQUMsVUFBVSxDQUNQLEdBQUcsRUFDSCxPQUFPLEVBQ1AsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUNsRSxFQUNIO1lBQ0UsTUFBTSxJQUFJLHNCQUFzQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDdEQ7UUFFRCxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFXLEVBQUUsS0FBYSxFQUFFLElBQVk7UUFDbkUsU0FBUyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVoRSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQzdDLEtBQUssRUFDTCxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUMzQixDQUFDO1FBRUYsT0FBTyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN2QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2hCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsT0FBTyxTQUFTLEtBQUssWUFBWSxDQUFDLFFBQVEsSUFBSSxTQUFTLEtBQUssWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxTQUFTLENBQUMsZUFBZSxHQUFHLElBQUk7UUFDbkMsTUFBTSxTQUFTLEdBQUcsZUFBZTtZQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztZQUN2QyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFeEMsT0FBTyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsT0FBZTtRQUM1QixPQUFPLENBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7WUFDekIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUN0RCxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZSxDQUFDLE9BQWU7UUFDbEMsT0FBTyxDQUNILElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO1lBQ3pCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FDdkQsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBQyxPQUFlO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYyxDQUFDLE9BQWU7UUFDakMsT0FBTyxDQUNILElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQ3hCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FDdkQsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVEsQ0FBQyxPQUFlO1FBQzNCLE9BQU8sQ0FDSCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUN4QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQ3RELENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksUUFBUSxDQUFDLEdBQWtCLEVBQUUsR0FBa0I7UUFDbEQsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDckMsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUVELElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sR0FBRyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ2EsTUFBTSxDQUFDLEVBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQWE7UUFDN0QsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUM3RSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUMsQ0FBQztRQUNyRCxJQUFJLE1BQU0sR0FBRyxXQUFXLEdBQUcsY0FBYyxDQUFDO1FBRTFDLElBQUksSUFBSSxHQUNKLElBQUksQ0FBQyxHQUFHLENBQ0osSUFBSSxDQUFDLEdBQUcsRUFDUixRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDaEUsR0FBRyxHQUFHLENBQUM7UUFFWixPQUFPLElBQUksR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN6RSxJQUFJLElBQUksUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFFdEUsSUFBSSxNQUFNLEtBQUssY0FBYyxDQUFDLFFBQVEsRUFBRTtnQkFDcEMsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUM7YUFDbkM7aUJBQU07Z0JBQ0gsTUFBTSxFQUFFLENBQUM7YUFDWjtTQUNKO1FBRUQsT0FBTyxJQUFJLEdBQUcsT0FBTyxFQUFFO1lBQ25CLElBQUksTUFBTSxLQUFLLGNBQWMsQ0FBQyxPQUFPLEVBQUU7Z0JBQ25DLEtBQUssRUFBRSxDQUFDO2dCQUNSLE1BQU0sR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDO2FBQ3BDO2lCQUFNO2dCQUNILE1BQU0sRUFBRSxDQUFDO2FBQ1o7WUFFRCxJQUFJLElBQUksUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDekU7UUFFRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZSxDQUFDLFVBQXVCLEVBQUUsU0FBaUI7UUFDN0QsU0FBUztZQUNMLE9BQU8sQ0FBQyxNQUFNLENBQ1YsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQ3RCLDJDQUEyQyxDQUM5QyxDQUFDO1FBRU4sTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ2pDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNuQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRWhDLFFBQVEsVUFBVSxFQUFFO1lBQ2hCLEtBQUssS0FBSztnQkFDTixPQUFPLEdBQUcsRUFBRSxHQUFHLFNBQVMsR0FBRyxFQUFFLEdBQUcsU0FBUyxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ3ZELEtBQUssS0FBSztnQkFDTixPQUFPLEdBQUcsSUFBSSxHQUFHLFNBQVMsR0FBRyxFQUFFLEdBQUcsU0FBUyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELEtBQUssS0FBSyxDQUFDO1lBQ1g7Z0JBQ0ksT0FBTyxHQUFHLEVBQUUsR0FBRyxTQUFTLEdBQUcsRUFBRSxHQUFHLFNBQVMsR0FBRyxJQUFJLEVBQUUsQ0FBQztTQUMxRDtJQUNMLENBQUM7SUFFZSxRQUFRLENBQUMsYUFBMEIsS0FBSyxFQUFFLFNBQVMsR0FBRyxHQUFHO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVlLE1BQU07UUFDbEIsT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDYSxpQkFBaUI7UUFDN0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdkIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ2EsZUFBZTtRQUMzQixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxLQUFLO0lBQzdDLFlBQVksSUFBWSxFQUFFLEtBQWEsRUFBRSxHQUFXO1FBQ2hELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIkB0YWlnYS11aS90c2NvbmZpZy9uZy1kZXYtbW9kZVwiIC8+XG5cbmltcG9ydCB7dHVpSW5SYW5nZSwgdHVpTm9ybWFsaXplVG9JbnROdW1iZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWF0aCc7XG5cbmltcG9ydCB7REFURV9GSUxMRVJfTEVOR1RIfSBmcm9tICcuL2RhdGUtZmlsbGVycyc7XG5pbXBvcnQge01JTl9EQVksIE1PTlRIU19JTl9ZRUFSfSBmcm9tICcuL2RhdGUtdGltZSc7XG5pbXBvcnQge1R1aURheU9mV2Vla30gZnJvbSAnLi9kYXktb2Ytd2Vlayc7XG5pbXBvcnQge1R1aU1vbnRofSBmcm9tICcuL21vbnRoJztcbmltcG9ydCB7VHVpTW9udGhOdW1iZXJ9IGZyb20gJy4vbW9udGgtbnVtYmVyJztcbmltcG9ydCB0eXBlIHtUdWlEYXRlTW9kZSwgVHVpRGF5TGlrZX0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1R1aVllYXJ9IGZyb20gJy4veWVhcic7XG5cbi8qKlxuICogSW1tdXRhYmxlIGRhdGUgb2JqZWN0LCBjb25zaXN0aW5nIG9mIGRheSwgbW9udGggYW5kIHllYXJcbiAqL1xuZXhwb3J0IGNsYXNzIFR1aURheSBleHRlbmRzIFR1aU1vbnRoIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0geWVhclxuICAgICAqIEBwYXJhbSBtb250aCAoc3RhcnRpbmcgd2l0aCAwKVxuICAgICAqIEBwYXJhbSBkYXlcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgeWVhcjogbnVtYmVyLFxuICAgICAgICBtb250aDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgZGF5OiBudW1iZXIsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHllYXIsIG1vbnRoKTtcbiAgICAgICAgbmdEZXZNb2RlICYmIGNvbnNvbGUuYXNzZXJ0KFR1aURheS5pc1ZhbGlkRGF5KHllYXIsIG1vbnRoLCBkYXkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHtAbGluayBUdWlEYXl9IGZyb20gbmF0aXZlIHtAbGluayBEYXRlfSBiYXNlZCBvbiBsb2NhbCB0aW1lIHpvbmVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21Mb2NhbE5hdGl2ZURhdGUoZGF0ZTogRGF0ZSk6IFR1aURheSB7XG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyB7QGxpbmsgVHVpRGF5fSBmcm9tIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gdXNpbmcgVVRDXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmcm9tVXRjTmF0aXZlRGF0ZShkYXRlOiBEYXRlKTogVHVpRGF5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUdWlEYXkoZGF0ZS5nZXRVVENGdWxsWWVhcigpLCBkYXRlLmdldFVUQ01vbnRoKCksIGRhdGUuZ2V0VVRDRGF0ZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayB2YWxpZGl0eSBvZiB5ZWFyLCBtb250aCBhbmQgZGF5XG4gICAgICpcbiAgICAgKiBAcGFyYW0geWVhclxuICAgICAqIEBwYXJhbSBtb250aFxuICAgICAqIEBwYXJhbSBkYXlcbiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gdmFsaWRpdHlcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGlzVmFsaWREYXkoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgVHVpTW9udGguaXNWYWxpZE1vbnRoKHllYXIsIG1vbnRoKSAmJlxuICAgICAgICAgICAgTnVtYmVyLmlzSW50ZWdlcihkYXkpICYmXG4gICAgICAgICAgICB0dWlJblJhbmdlKFxuICAgICAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgICAgICBNSU5fREFZLFxuICAgICAgICAgICAgICAgIFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KG1vbnRoLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcikpICsgMSxcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IGRheSBiYXNlZCBvbiBsb2NhbCB0aW1lIHpvbmVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIGN1cnJlbnRMb2NhbCgpOiBUdWlEYXkge1xuICAgICAgICBjb25zdCBuYXRpdmVEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgeWVhciA9IG5hdGl2ZURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBuYXRpdmVEYXRlLmdldE1vbnRoKCk7XG4gICAgICAgIGNvbnN0IGRheSA9IG5hdGl2ZURhdGUuZ2V0RGF0ZSgpO1xuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KHllYXIsIG1vbnRoLCBkYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgY3VycmVudCBkYXkgYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBjdXJyZW50VXRjKCk6IFR1aURheSB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCB5ZWFyID0gbmF0aXZlRGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCBtb250aCA9IG5hdGl2ZURhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgICAgY29uc3QgZGF5ID0gbmF0aXZlRGF0ZS5nZXRVVENEYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlEYXkoeWVhciwgbW9udGgsIGRheSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB7QGxpbmsgVHVpRGF5fSBub3JtYWxpemluZyB5ZWFyLCBtb250aCBhbmQgZGF5LiB7QGxpbmsgTmFOfSBpcyB0dXJuZWQgaW50byBtaW5pbWFsIHZhbHVlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHllYXIgYW55IHllYXIgdmFsdWUsIGluY2x1ZGluZyBpbnZhbGlkXG4gICAgICogQHBhcmFtIG1vbnRoIGFueSBtb250aCB2YWx1ZSwgaW5jbHVkaW5nIGludmFsaWQgKG1vbnRocyBzdGFydCB3aXRoIDApXG4gICAgICogQHBhcmFtIGRheSBhbnkgZGF5IHZhbHVlLCBpbmNsdWRpbmcgaW52YWxpZFxuICAgICAqIEByZXR1cm4gbm9ybWFsaXplZCBkYXRlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBub3JtYWxpemVPZih5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogVHVpRGF5IHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFllYXIgPSBUdWlZZWFyLm5vcm1hbGl6ZVllYXJQYXJ0KHllYXIpO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkTW9udGggPSBUdWlNb250aC5ub3JtYWxpemVNb250aFBhcnQobW9udGgpO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkRGF5ID0gVHVpRGF5Lm5vcm1hbGl6ZURheVBhcnQoXG4gICAgICAgICAgICBkYXksXG4gICAgICAgICAgICBub3JtYWxpemVkTW9udGgsXG4gICAgICAgICAgICBub3JtYWxpemVkWWVhcixcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheShub3JtYWxpemVkWWVhciwgbm9ybWFsaXplZE1vbnRoLCBub3JtYWxpemVkRGF5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIGxlbmd0aEJldHdlZW4oZnJvbTogVHVpRGF5LCB0bzogVHVpRGF5KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoXG4gICAgICAgICAgICAodG8udG9Mb2NhbE5hdGl2ZURhdGUoKS5nZXRUaW1lKCkgLSBmcm9tLnRvTG9jYWxOYXRpdmVEYXRlKCkuZ2V0VGltZSgpKSAvXG4gICAgICAgICAgICAgICAgKDEwMDAgKiA2MCAqIDYwICogMjQpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcGFyc2VSYXdEYXRlU3RyaW5nKFxuICAgICAgICBkYXRlOiBzdHJpbmcsXG4gICAgICAgIGRhdGVNb2RlOiBUdWlEYXRlTW9kZSA9ICdETVknLFxuICAgICk6IHtkYXk6IG51bWJlcjsgbW9udGg6IG51bWJlcjsgeWVhcjogbnVtYmVyfSB7XG4gICAgICAgIG5nRGV2TW9kZSAmJlxuICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoXG4gICAgICAgICAgICAgICAgZGF0ZS5sZW5ndGggPT09IERBVEVfRklMTEVSX0xFTkdUSCxcbiAgICAgICAgICAgICAgICAnW3BhcnNlUmF3RGF0ZVN0cmluZ106IHdyb25nIGRhdGUgc3RyaW5nIGxlbmd0aCcsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHN3aXRjaCAoZGF0ZU1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ01EWSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF5OiBwYXJzZUludChkYXRlLnNsaWNlKDMsIDUpLCAxMCksXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiBwYXJzZUludChkYXRlLnNsaWNlKDAsIDIpLCAxMCkgLSAxLFxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiBwYXJzZUludChkYXRlLnNsaWNlKDYsIDEwKSwgMTApLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNhc2UgJ1lNRCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF5OiBwYXJzZUludChkYXRlLnNsaWNlKDgsIDEwKSwgMTApLFxuICAgICAgICAgICAgICAgICAgICBtb250aDogcGFyc2VJbnQoZGF0ZS5zbGljZSg1LCA3KSwgMTApIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogcGFyc2VJbnQoZGF0ZS5zbGljZSgwLCA0KSwgMTApLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNhc2UgJ0RNWSc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRheTogcGFyc2VJbnQoZGF0ZS5zbGljZSgwLCAyKSwgMTApLFxuICAgICAgICAgICAgICAgICAgICBtb250aDogcGFyc2VJbnQoZGF0ZS5zbGljZSgzLCA1KSwgMTApIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogcGFyc2VJbnQoZGF0ZS5zbGljZSg2LCAxMCksIDEwKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogTW92ZSBtb250aCBhbmQgeWVhciByZWxhdGVkIGNvZGUgY29ycmVzcG9uZGluZyBjbGFzc2VzXG4gICAgLyoqXG4gICAgICogUGFyc2luZyBhIHN0cmluZyB3aXRoIGRhdGUgd2l0aCBub3JtYWxpemF0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmF3RGF0ZSBkYXRlIHN0cmluZ1xuICAgICAqIEBwYXJhbSBkYXRlTW9kZSBkYXRlIGZvcm1hdCBvZiB0aGUgZGF0ZSBzdHJpbmcgKERNWSB8IE1EWSB8IFlNRClcbiAgICAgKiBAcmV0dXJuIG5vcm1hbGl6ZWQgZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbm9ybWFsaXplUGFyc2UocmF3RGF0ZTogc3RyaW5nLCBkYXRlTW9kZTogVHVpRGF0ZU1vZGUgPSAnRE1ZJyk6IFR1aURheSB7XG4gICAgICAgIGNvbnN0IHtkYXksIG1vbnRoLCB5ZWFyfSA9IHRoaXMucGFyc2VSYXdEYXRlU3RyaW5nKHJhd0RhdGUsIGRhdGVNb2RlKTtcblxuICAgICAgICByZXR1cm4gVHVpRGF5Lm5vcm1hbGl6ZU9mKHllYXIsIG1vbnRoLCBkYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNpbmcgYSBkYXRlIHN0cmluZ2lmaWVkIGluIGEgdG9KU09OIGZvcm1hdFxuICAgICAqIEBwYXJhbSB5ZWFyTW9udGhEYXlTdHJpbmcgZGF0ZSBzdHJpbmcgaW4gZm9ybWF0IG9mIFlZWVktTU0tRERcbiAgICAgKiBAcmV0dXJuIGRhdGVcbiAgICAgKiBAdGhyb3dzIGV4Y2VwdGlvbnMgaWYgYW55IHBhcnQgb2YgdGhlIGRhdGUgaXMgaW52YWxpZFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMganNvblBhcnNlKHllYXJNb250aERheVN0cmluZzogc3RyaW5nKTogVHVpRGF5IHtcbiAgICAgICAgY29uc3Qge2RheSwgbW9udGgsIHllYXJ9ID0gdGhpcy5wYXJzZVJhd0RhdGVTdHJpbmcoeWVhck1vbnRoRGF5U3RyaW5nLCAnWU1EJyk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIVR1aU1vbnRoLmlzVmFsaWRNb250aCh5ZWFyLCBtb250aCkgfHxcbiAgICAgICAgICAgICFOdW1iZXIuaXNJbnRlZ2VyKGRheSkgfHxcbiAgICAgICAgICAgICF0dWlJblJhbmdlKFxuICAgICAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgICAgICBNSU5fREFZLFxuICAgICAgICAgICAgICAgIFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KG1vbnRoLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcikpICsgMSxcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHVpSW52YWxpZERheUV4Y2VwdGlvbih5ZWFyLCBtb250aCwgZGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KHllYXIsIG1vbnRoLCBkYXkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbm9ybWFsaXplRGF5UGFydChkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgbmdEZXZNb2RlICYmIGNvbnNvbGUuYXNzZXJ0KFR1aU1vbnRoLmlzVmFsaWRNb250aCh5ZWFyLCBtb250aCkpO1xuXG4gICAgICAgIGNvbnN0IG1vbnRoRGF5c0NvdW50ID0gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQoXG4gICAgICAgICAgICBtb250aCxcbiAgICAgICAgICAgIFR1aVllYXIuaXNMZWFwWWVhcih5ZWFyKSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdHVpTm9ybWFsaXplVG9JbnROdW1iZXIoZGF5LCAxLCBtb250aERheXNDb3VudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmb3JtYXR0ZWREYXlQYXJ0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBTdHJpbmcodGhpcy5kYXkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1dlZWtlbmQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRheU9mV2VlayA9IHRoaXMuZGF5T2ZXZWVrKGZhbHNlKTtcblxuICAgICAgICByZXR1cm4gZGF5T2ZXZWVrID09PSBUdWlEYXlPZldlZWsuU2F0dXJkYXkgfHwgZGF5T2ZXZWVrID09PSBUdWlEYXlPZldlZWsuU3VuZGF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGF5IG9mIHdlZWtcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGFydEZyb21Nb25kYXkgd2hldGhlciB3ZWVrIHN0YXJ0cyBmcm9tIE1vbmRheSBhbmQgbm90IGZyb20gU3VuZGF5XG4gICAgICogQHJldHVybiBkYXkgb2Ygd2VlayAoZnJvbSAwIHRvIDYpXG4gICAgICovXG4gICAgcHVibGljIGRheU9mV2VlayhzdGFydEZyb21Nb25kYXkgPSB0cnVlKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZGF5T2ZXZWVrID0gc3RhcnRGcm9tTW9uZGF5XG4gICAgICAgICAgICA/IHRoaXMudG9Mb2NhbE5hdGl2ZURhdGUoKS5nZXREYXkoKSAtIDFcbiAgICAgICAgICAgIDogdGhpcy50b0xvY2FsTmF0aXZlRGF0ZSgpLmdldERheSgpO1xuXG4gICAgICAgIHJldHVybiBkYXlPZldlZWsgPCAwID8gNiA6IGRheU9mV2VlaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyBhZnRlciBjdXJyZW50XG4gICAgICovXG4gICAgcHVibGljIGRheUJlZm9yZShhbm90aGVyOiBUdWlEYXkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubW9udGhCZWZvcmUoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLm1vbnRoU2FtZShhbm90aGVyKSAmJiB0aGlzLmRheSA8IGFub3RoZXIuZGF5KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBkYXRlIGlzIGFmdGVyIG9yIGVxdWFscyB0byBjdXJyZW50XG4gICAgICovXG4gICAgcHVibGljIGRheVNhbWVPckJlZm9yZShhbm90aGVyOiBUdWlEYXkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubW9udGhCZWZvcmUoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLm1vbnRoU2FtZShhbm90aGVyKSAmJiB0aGlzLmRheSA8PSBhbm90aGVyLmRheSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyB0aGUgc2FtZSBhcyBjdXJyZW50XG4gICAgICovXG4gICAgcHVibGljIGRheVNhbWUoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoU2FtZShhbm90aGVyKSAmJiB0aGlzLmRheSA9PT0gYW5vdGhlci5kYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIGRhdGUgaXMgZWl0aGVyIGJlZm9yZSBvciB0aGUgc2FtZSBhcyBjdXJyZW50XG4gICAgICovXG4gICAgcHVibGljIGRheVNhbWVPckFmdGVyKGFub3RoZXI6IFR1aURheSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tb250aEFmdGVyKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy5tb250aFNhbWUoYW5vdGhlcikgJiYgdGhpcy5kYXkgPj0gYW5vdGhlci5kYXkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIGRhdGUgaXMgYmVmb3JlIGN1cnJlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZGF5QWZ0ZXIoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1vbnRoQWZ0ZXIoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLm1vbnRoU2FtZShhbm90aGVyKSAmJiB0aGlzLmRheSA+IGFub3RoZXIuZGF5KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsYW1waW5nIGRhdGUgYmV0d2VlbiB0d28gbGltaXRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWluXG4gICAgICogQHBhcmFtIG1heFxuICAgICAqIEByZXR1cm4gY2xhbXBlZCBkYXRlXG4gICAgICovXG4gICAgcHVibGljIGRheUxpbWl0KG1pbjogVHVpRGF5IHwgbnVsbCwgbWF4OiBUdWlEYXkgfCBudWxsKTogVHVpRGF5IHtcbiAgICAgICAgaWYgKG1pbiAhPT0gbnVsbCAmJiB0aGlzLmRheUJlZm9yZShtaW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gbWluO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1heCAhPT0gbnVsbCAmJiB0aGlzLmRheUFmdGVyKG1heCkpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbW11dGFibHkgYWx0ZXJzIGN1cnJlbnQgZGF5IGJ5IHBhc3NlZCBvZmZzZXRcbiAgICAgKlxuICAgICAqIElmIHJlc3VsdGluZyBtb250aCBoYXMgbW9yZSBkYXlzIHRoYW4gb3JpZ2luYWwgb25lLCBkYXRlIGlzIHJvdW5kZWQgdG8gdGhlIG1heGltdW0gZGF5XG4gICAgICogaW4gdGhlIHJlc3VsdGluZyBtb250aC4gT2Zmc2V0IG9mIGRheXMgd2lsbCBiZSBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSByZXN1bHRlZCB5ZWFyIGFuZCBtb250aFxuICAgICAqIHRvIG5vdCBpbnRlcmZlcmUgd2l0aCBwYXJlbnQgY2xhc3NlcyBtZXRob2RzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAgICogQHJldHVybiBuZXcgZGF0ZSBvYmplY3QgYXMgYSByZXN1bHQgb2Ygb2Zmc2V0dGluZyBjdXJyZW50XG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGFwcGVuZCh7eWVhciA9IDAsIG1vbnRoID0gMCwgZGF5ID0gMH06IFR1aURheUxpa2UpOiBUdWlEYXkge1xuICAgICAgICBjb25zdCB0b3RhbE1vbnRocyA9ICh0aGlzLnllYXIgKyB5ZWFyKSAqIE1PTlRIU19JTl9ZRUFSICsgdGhpcy5tb250aCArIG1vbnRoO1xuICAgICAgICBsZXQgeWVhcnMgPSBNYXRoLmZsb29yKHRvdGFsTW9udGhzIC8gTU9OVEhTX0lOX1lFQVIpO1xuICAgICAgICBsZXQgbW9udGhzID0gdG90YWxNb250aHMgJSBNT05USFNfSU5fWUVBUjtcblxuICAgICAgICBsZXQgZGF5cyA9XG4gICAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICB0aGlzLmRheSxcbiAgICAgICAgICAgICAgICBUdWlNb250aC5nZXRNb250aERheXNDb3VudChtb250aHMsIFR1aVllYXIuaXNMZWFwWWVhcih5ZWFycykpLFxuICAgICAgICAgICAgKSArIGRheTtcblxuICAgICAgICB3aGlsZSAoZGF5cyA+IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KG1vbnRocywgVHVpWWVhci5pc0xlYXBZZWFyKHllYXJzKSkpIHtcbiAgICAgICAgICAgIGRheXMgLT0gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGhzLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcnMpKTtcblxuICAgICAgICAgICAgaWYgKG1vbnRocyA9PT0gVHVpTW9udGhOdW1iZXIuRGVjZW1iZXIpIHtcbiAgICAgICAgICAgICAgICB5ZWFycysrO1xuICAgICAgICAgICAgICAgIG1vbnRocyA9IFR1aU1vbnRoTnVtYmVyLkphbnVhcnk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vbnRocysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKGRheXMgPCBNSU5fREFZKSB7XG4gICAgICAgICAgICBpZiAobW9udGhzID09PSBUdWlNb250aE51bWJlci5KYW51YXJ5KSB7XG4gICAgICAgICAgICAgICAgeWVhcnMtLTtcbiAgICAgICAgICAgICAgICBtb250aHMgPSBUdWlNb250aE51bWJlci5EZWNlbWJlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9udGhzLS07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRheXMgKz0gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGhzLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcnMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KHllYXJzLCBtb250aHMsIGRheXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZm9ybWF0dGVkIHdob2xlIGRhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkRGF5KGRhdGVGb3JtYXQ6IFR1aURhdGVNb2RlLCBzZXBhcmF0b3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIG5nRGV2TW9kZSAmJlxuICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoXG4gICAgICAgICAgICAgICAgc2VwYXJhdG9yLmxlbmd0aCA9PT0gMSxcbiAgICAgICAgICAgICAgICAnU2VwYXJhdG9yIHNob3VsZCBjb25zaXN0IG9mIG9ubHkgMSBzeW1ib2wnLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBkZCA9IHRoaXMuZm9ybWF0dGVkRGF5UGFydDtcbiAgICAgICAgY29uc3QgbW0gPSB0aGlzLmZvcm1hdHRlZE1vbnRoUGFydDtcbiAgICAgICAgY29uc3QgeXl5eSA9IHRoaXMuZm9ybWF0dGVkWWVhcjtcblxuICAgICAgICBzd2l0Y2ggKGRhdGVGb3JtYXQpIHtcbiAgICAgICAgICAgIGNhc2UgJ01EWSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke21tfSR7c2VwYXJhdG9yfSR7ZGR9JHtzZXBhcmF0b3J9JHt5eXl5fWA7XG4gICAgICAgICAgICBjYXNlICdZTUQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt5eXl5fSR7c2VwYXJhdG9yfSR7bW19JHtzZXBhcmF0b3J9JHtkZH1gO1xuICAgICAgICAgICAgY2FzZSAnRE1ZJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2RkfSR7c2VwYXJhdG9yfSR7bW19JHtzZXBhcmF0b3J9JHt5eXl5fWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgdG9TdHJpbmcoZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUgPSAnRE1ZJywgc2VwYXJhdG9yID0gJy4nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0dGVkRGF5KGRhdGVGb3JtYXQsIHNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHRvSlNPTigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7c3VwZXIudG9KU09OKCl9LSR7dGhpcy5mb3JtYXR0ZWREYXlQYXJ0fWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBuYXRpdmUge0BsaW5rIERhdGV9IGJhc2VkIG9uIGxvY2FsIHRpbWUgem9uZVxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSB0b0xvY2FsTmF0aXZlRGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHN1cGVyLnRvTG9jYWxOYXRpdmVEYXRlKCk7XG5cbiAgICAgICAgZGF0ZS5zZXREYXRlKHRoaXMuZGF5KTtcblxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHRvVXRjTmF0aXZlRGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHRoaXMueWVhciwgdGhpcy5tb250aCwgdGhpcy5kYXkpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUdWlJbnZhbGlkRGF5RXhjZXB0aW9uIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIobmdEZXZNb2RlID8gYEludmFsaWQgZGF5OiAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWAgOiAnJyk7XG4gICAgfVxufVxuIl19
@@ -137,7 +137,10 @@ export class TuiMonth extends TuiYear {
137
137
  * Returns native {@link Date} based on local time zone
138
138
  */
139
139
  toLocalNativeDate() {
140
- return new Date(this.year, this.month);
140
+ const date = new Date(this.year, this.month);
141
+ // for years less than 1900
142
+ date.setFullYear(this.year);
143
+ return date;
141
144
  }
142
145
  /**
143
146
  * Returns native {@link Date} based on UTC
@@ -146,4 +149,4 @@ export class TuiMonth extends TuiYear {
146
149
  return new Date(Date.UTC(this.year, this.month));
147
150
  }
148
151
  }
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGF0ZS10aW1lL21vbnRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdEQUF3RDtBQUV4RCxPQUFPLEVBQUMsVUFBVSxFQUFFLHVCQUF1QixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFN0UsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRS9COztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVMsU0FBUSxPQUFPO0lBQ2pDOzs7T0FHRztJQUNILFlBQ0ksSUFBWSxFQUNJLEtBQWE7UUFFN0IsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRkksVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUc3QixTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDbEQsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBYSxFQUFFLFVBQW1CO1FBQzlELFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRTlELFFBQVEsS0FBSyxFQUFFO1lBQ1gsS0FBSyxjQUFjLENBQUMsS0FBSyxDQUFD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RUQ7O09BRUc7SUFDSSxpQkFBaUI7UUFDcEIsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ2xCLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwiQHRhaWdhLXVpL3RzY29uZmlnL25nLWRldi1tb2RlXCIgLz5cblxuaW1wb3J0IHt0dWlJblJhbmdlLCB0dWlOb3JtYWxpemVUb0ludE51bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcblxuaW1wb3J0IHtNQVhfTU9OVEgsIE1JTl9NT05USCwgTU9OVEhTX0lOX1lFQVJ9IGZyb20gJy4vZGF0ZS10aW1lJztcbmltcG9ydCB7VHVpTW9udGhOdW1iZXJ9IGZyb20gJy4vbW9udGgtbnVtYmVyJztcbmltcG9ydCB0eXBlIHtUdWlNb250aExpa2V9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtUdWlZZWFyfSBmcm9tICcuL3llYXInO1xuXG4vKipcbiAqIEltbXV0YWJsZSBvYmplY3QgY29uc2lzdGluZyBvZiB5ZWFyIGFuZCBtb250aFxuICovXG5leHBvcnQgY2xhc3MgVHVpTW9udGggZXh0ZW5kcyBUdWlZZWFyIGltcGxlbWVudHMgVHVpTW9udGhMaWtlIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0geWVhclxuICAgICAqIEBwYXJhbSBtb250aCAoc3RhcnRpbmcgd2l0aCAwKVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICB5ZWFyOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBtb250aDogbnVtYmVyLFxuICAgICkge1xuICAgICAgICBzdXBlcih5ZWFyKTtcbiAgICAgICAgbmdEZXZNb2RlICYmIGNvbnNvbGUuYXNzZXJ0KFR1aU1vbnRoLmlzVmFsaWRNb250aCh5ZWFyLCBtb250aCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIG1vbnRoIGFuZCB5ZWFyIGZvciB2YWxpZGl0eVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaXNWYWxpZE1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gVHVpWWVhci5pc1ZhbGlkWWVhcih5ZWFyKSAmJiBUdWlNb250aC5pc1ZhbGlkTW9udGhQYXJ0KG1vbnRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG51bWJlciBvZiBkYXlzIGluIGEgbW9udGhcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldE1vbnRoRGF5c0NvdW50KG1vbnRoOiBudW1iZXIsIGlzTGVhcFllYXI6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgICAgICBuZ0Rldk1vZGUgJiYgY29uc29sZS5hc3NlcnQoVHVpTW9udGguaXNWYWxpZE1vbnRoUGFydChtb250aCkpO1xuXG4gICAgICAgIHN3aXRjaCAobW9udGgpIHtcbiAgICAgICAgICAgIGNhc2UgVHVpTW9udGhOdW1iZXIuQXByaWw6XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLkp1bmU6XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLk5vdmVtYmVyOlxuICAgICAgICAgICAgY2FzZSBUdWlNb250aE51bWJlci5TZXB0ZW1iZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDMwO1xuICAgICAgICAgICAgY2FzZSBUdWlNb250aE51bWJlci5GZWJydWFyeTpcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNMZWFwWWVhciA/IDI5IDogMjg7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAzMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgY3VycmVudCBtb250aCBhbmQgeWVhciBiYXNlZCBvbiBsb2NhbCB0aW1lIHpvbmVcbiAgICAgKiBAbm9zaWRlZWZmZWN0c1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3VycmVudExvY2FsKCk6IFR1aU1vbnRoIHtcbiAgICAgICAgY29uc3QgbmF0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlNb250aChuYXRpdmVEYXRlLmdldEZ1bGxZZWFyKCksIG5hdGl2ZURhdGUuZ2V0TW9udGgoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyIGJhc2VkIG9uIFVUQ1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3VycmVudFV0YygpOiBUdWlNb250aCB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgICAgIHJldHVybiBuZXcgVHVpTW9udGgobmF0aXZlRGF0ZS5nZXRVVENGdWxsWWVhcigpLCBuYXRpdmVEYXRlLmdldFVUQ01vbnRoKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgbGVuZ3RoQmV0d2Vlbihmcm9tOiBUdWlNb250aCwgdG86IFR1aU1vbnRoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgYWJzb2x1dGVGcm9tID0gZnJvbS5tb250aCArIGZyb20ueWVhciAqIDEyO1xuICAgICAgICBjb25zdCBhYnNvbHV0ZVRvID0gdG8ubW9udGggKyB0by55ZWFyICogMTI7XG5cbiAgICAgICAgcmV0dXJuIGFic29sdXRlVG8gLSBhYnNvbHV0ZUZyb207XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTm9ybWFsaXplcyBudW1iZXIgYnkgY2xhbXBpbmcgaXQgYmV0d2VlbiBtaW4gYW5kIG1heCBtb250aFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbm9ybWFsaXplTW9udGhQYXJ0KG1vbnRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdHVpTm9ybWFsaXplVG9JbnROdW1iZXIobW9udGgsIE1JTl9NT05USCwgTUFYX01PTlRIKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBtb250aCBmb3IgdmFsaWRpdHlcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBpc1ZhbGlkTW9udGhQYXJ0KG1vbnRoOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc0ludGVnZXIobW9udGgpICYmIHR1aUluUmFuZ2UobW9udGgsIE1JTl9NT05USCwgTUFYX01PTlRIICsgMSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmb3JtYXR0ZWRNb250aFBhcnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzLm1vbnRoICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRheXMgaW4gYSBtb250aFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGF5c0NvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBUdWlNb250aC5nZXRNb250aERheXNDb3VudCh0aGlzLm1vbnRoLCB0aGlzLmlzTGVhcFllYXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBtb250aCBhbmQgeWVhciBhcmUgYWZ0ZXIgY3VycmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBtb250aEJlZm9yZShhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy55ZWFyQmVmb3JlKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy55ZWFyU2FtZShhbm90aGVyKSAmJiB0aGlzLm1vbnRoIDwgYW5vdGhlci5tb250aClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgbW9udGggYW5kIHllYXIgYXJlIGFmdGVyIG9yIHRoZSBzYW1lIGFzIGN1cnJlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgbW9udGhTYW1lT3JCZWZvcmUoYW5vdGhlcjogVHVpTW9udGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMueWVhckJlZm9yZShhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMueWVhclNhbWUoYW5vdGhlcikgJiYgdGhpcy5tb250aCA8PSBhbm90aGVyLm1vbnRoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBtb250aCBhbmQgeWVhciBhcmUgdGhlIHNhbWUgYXMgY3VycmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBtb250aFNhbWUoYW5vdGhlcjogVHVpTW9udGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueWVhclNhbWUoYW5vdGhlcikgJiYgdGhpcy5tb250aCA9PT0gYW5vdGhlci5tb250aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgbW9udGggYW5kIHllYXIgYXJlIGVpdGhlciBiZWZvcmUgb3IgZXF1YWwgdG8gY3VycmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBtb250aFNhbWVPckFmdGVyKGFub3RoZXI6IFR1aU1vbnRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnllYXJBZnRlcihhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMueWVhclNhbWUoYW5vdGhlcikgJiYgdGhpcy5tb250aCA+PSBhbm90aGVyLm1vbnRoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBtb250aCBhbmQgeWVhciBhcmUgYmVmb3JlIGN1cnJlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgbW9udGhBZnRlcihhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy55ZWFyQWZ0ZXIoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLnllYXJTYW1lKGFub3RoZXIpICYmIHRoaXMubW9udGggPiBhbm90aGVyLm1vbnRoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEltbXV0YWJseSBhbHRlcnMgY3VycmVudCBtb250aCBhbmQgeWVhciBieSBwYXNzZWQgb2Zmc2V0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAgICogQHJldHVybiBuZXcgbW9udGggYW5kIHllYXIgb2JqZWN0IGFzIGEgcmVzdWx0IG9mIG9mZnNldHRpbmcgY3VycmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBhcHBlbmQoe3llYXIgPSAwLCBtb250aCA9IDB9OiBUdWlNb250aExpa2UpOiBUdWlNb250aCB7XG4gICAgICAgIGNvbnN0IHRvdGFsTW9udGhzID0gKHRoaXMueWVhciArIHllYXIpICogTU9OVEhTX0lOX1lFQVIgKyB0aGlzLm1vbnRoICsgbW9udGg7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlNb250aChcbiAgICAgICAgICAgIE1hdGguZmxvb3IodG90YWxNb250aHMgLyBNT05USFNfSU5fWUVBUiksXG4gICAgICAgICAgICB0b3RhbE1vbnRocyAlIE1PTlRIU19JTl9ZRUFSLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5mb3JtYXR0ZWRNb250aFBhcnR9LiR7dGhpcy5mb3JtYXR0ZWRZZWFyfWA7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHZhbHVlT2YoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Mb2NhbE5hdGl2ZURhdGUoKS52YWx1ZU9mKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHRvSlNPTigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7c3VwZXIudG9KU09OKCl9LSR7dGhpcy5mb3JtYXR0ZWRNb250aFBhcnR9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gbG9jYWwgdGltZSB6b25lXG4gICAgICovXG4gICAgcHVibGljIHRvTG9jYWxOYXRpdmVEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgcHVibGljIHRvVXRjTmF0aXZlRGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHRoaXMueWVhciwgdGhpcy5tb250aCkpO1xuICAgIH1cbn1cbiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGF0ZS10aW1lL21vbnRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdEQUF3RDtBQUV4RCxPQUFPLEVBQUMsVUFBVSxFQUFFLHVCQUF1QixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFN0UsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRS9COztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVMsU0FBUSxPQUFPO0lBQ2pDOzs7T0FHRztJQUNILFlBQ0ksSUFBWSxFQUNJLEtBQWE7UUFFN0IsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRkksVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUc3QixTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDbEQsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBYSxFQUFFLFVBQW1CO1FBQzlELFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRTlELFFBQVEsS0FBSyxFQUFFO1lBQ1gsS0FBSyxjQUFjLENBQUMsS0FBSyxDQUFD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RUQ7O09BRUc7SUFDSSxpQkFBaUI7UUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFDbEIsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJAdGFpZ2EtdWkvdHNjb25maWcvbmctZGV2LW1vZGVcIiAvPlxuXG5pbXBvcnQge3R1aUluUmFuZ2UsIHR1aU5vcm1hbGl6ZVRvSW50TnVtYmVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuXG5pbXBvcnQge01BWF9NT05USCwgTUlOX01PTlRILCBNT05USFNfSU5fWUVBUn0gZnJvbSAnLi9kYXRlLXRpbWUnO1xuaW1wb3J0IHtUdWlNb250aE51bWJlcn0gZnJvbSAnLi9tb250aC1udW1iZXInO1xuaW1wb3J0IHR5cGUge1R1aU1vbnRoTGlrZX0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1R1aVllYXJ9IGZyb20gJy4veWVhcic7XG5cbi8qKlxuICogSW1tdXRhYmxlIG9iamVjdCBjb25zaXN0aW5nIG9mIHllYXIgYW5kIG1vbnRoXG4gKi9cbmV4cG9ydCBjbGFzcyBUdWlNb250aCBleHRlbmRzIFR1aVllYXIgaW1wbGVtZW50cyBUdWlNb250aExpa2Uge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB5ZWFyXG4gICAgICogQHBhcmFtIG1vbnRoIChzdGFydGluZyB3aXRoIDApXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHllYXI6IG51bWJlcixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IG1vbnRoOiBudW1iZXIsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHllYXIpO1xuICAgICAgICBuZ0Rldk1vZGUgJiYgY29uc29sZS5hc3NlcnQoVHVpTW9udGguaXNWYWxpZE1vbnRoKHllYXIsIG1vbnRoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgbW9udGggYW5kIHllYXIgZm9yIHZhbGlkaXR5XG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpc1ZhbGlkTW9udGgoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBUdWlZZWFyLmlzVmFsaWRZZWFyKHllYXIpICYmIFR1aU1vbnRoLmlzVmFsaWRNb250aFBhcnQobW9udGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgbnVtYmVyIG9mIGRheXMgaW4gYSBtb250aFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TW9udGhEYXlzQ291bnQobW9udGg6IG51bWJlciwgaXNMZWFwWWVhcjogYm9vbGVhbik6IG51bWJlciB7XG4gICAgICAgIG5nRGV2TW9kZSAmJiBjb25zb2xlLmFzc2VydChUdWlNb250aC5pc1ZhbGlkTW9udGhQYXJ0KG1vbnRoKSk7XG5cbiAgICAgICAgc3dpdGNoIChtb250aCkge1xuICAgICAgICAgICAgY2FzZSBUdWlNb250aE51bWJlci5BcHJpbDpcbiAgICAgICAgICAgIGNhc2UgVHVpTW9udGhOdW1iZXIuSnVuZTpcbiAgICAgICAgICAgIGNhc2UgVHVpTW9udGhOdW1iZXIuTm92ZW1iZXI6XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLlNlcHRlbWJlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gMzA7XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLkZlYnJ1YXJ5OlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0xlYXBZZWFyID8gMjkgOiAyODtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDMxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyIGJhc2VkIG9uIGxvY2FsIHRpbWUgem9uZVxuICAgICAqIEBub3NpZGVlZmZlY3RzXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjdXJyZW50TG9jYWwoKTogVHVpTW9udGgge1xuICAgICAgICBjb25zdCBuYXRpdmVEYXRlID0gbmV3IERhdGUoKTtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aU1vbnRoKG5hdGl2ZURhdGUuZ2V0RnVsbFllYXIoKSwgbmF0aXZlRGF0ZS5nZXRNb250aCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1cnJlbnQgbW9udGggYW5kIHllYXIgYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjdXJyZW50VXRjKCk6IFR1aU1vbnRoIHtcbiAgICAgICAgY29uc3QgbmF0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlNb250aChuYXRpdmVEYXRlLmdldFVUQ0Z1bGxZZWFyKCksIG5hdGl2ZURhdGUuZ2V0VVRDTW9udGgoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBsZW5ndGhCZXR3ZWVuKGZyb206IFR1aU1vbnRoLCB0bzogVHVpTW9udGgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBhYnNvbHV0ZUZyb20gPSBmcm9tLm1vbnRoICsgZnJvbS55ZWFyICogMTI7XG4gICAgICAgIGNvbnN0IGFic29sdXRlVG8gPSB0by5tb250aCArIHRvLnllYXIgKiAxMjtcblxuICAgICAgICByZXR1cm4gYWJzb2x1dGVUbyAtIGFic29sdXRlRnJvbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOb3JtYWxpemVzIG51bWJlciBieSBjbGFtcGluZyBpdCBiZXR3ZWVuIG1pbiBhbmQgbWF4IG1vbnRoXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBub3JtYWxpemVNb250aFBhcnQobW9udGg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0dWlOb3JtYWxpemVUb0ludE51bWJlcihtb250aCwgTUlOX01PTlRILCBNQVhfTU9OVEgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIG1vbnRoIGZvciB2YWxpZGl0eVxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIGlzVmFsaWRNb250aFBhcnQobW9udGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihtb250aCkgJiYgdHVpSW5SYW5nZShtb250aCwgTUlOX01PTlRILCBNQVhfTU9OVEggKyAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZvcm1hdHRlZE1vbnRoUGFydCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMubW9udGggKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGF5cyBpbiBhIG1vbnRoXG4gICAgICovXG4gICAgcHVibGljIGdldCBkYXlzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KHRoaXMubW9udGgsIHRoaXMuaXNMZWFwWWVhcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIG1vbnRoIGFuZCB5ZWFyIGFyZSBhZnRlciBjdXJyZW50XG4gICAgICovXG4gICAgcHVibGljIG1vbnRoQmVmb3JlKGFub3RoZXI6IFR1aU1vbnRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnllYXJCZWZvcmUoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLnllYXJTYW1lKGFub3RoZXIpICYmIHRoaXMubW9udGggPCBhbm90aGVyLm1vbnRoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBtb250aCBhbmQgeWVhciBhcmUgYWZ0ZXIgb3IgdGhlIHNhbWUgYXMgY3VycmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBtb250aFNhbWVPckJlZm9yZShhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy55ZWFyQmVmb3JlKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy55ZWFyU2FtZShhbm90aGVyKSAmJiB0aGlzLm1vbnRoIDw9IGFub3RoZXIubW9udGgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIG1vbnRoIGFuZCB5ZWFyIGFyZSB0aGUgc2FtZSBhcyBjdXJyZW50XG4gICAgICovXG4gICAgcHVibGljIG1vbnRoU2FtZShhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyU2FtZShhbm90aGVyKSAmJiB0aGlzLm1vbnRoID09PSBhbm90aGVyLm1vbnRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBtb250aCBhbmQgeWVhciBhcmUgZWl0aGVyIGJlZm9yZSBvciBlcXVhbCB0byBjdXJyZW50XG4gICAgICovXG4gICAgcHVibGljIG1vbnRoU2FtZU9yQWZ0ZXIoYW5vdGhlcjogVHVpTW9udGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMueWVhckFmdGVyKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy55ZWFyU2FtZShhbm90aGVyKSAmJiB0aGlzLm1vbnRoID49IGFub3RoZXIubW9udGgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIG1vbnRoIGFuZCB5ZWFyIGFyZSBiZWZvcmUgY3VycmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBtb250aEFmdGVyKGFub3RoZXI6IFR1aU1vbnRoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnllYXJBZnRlcihhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMueWVhclNhbWUoYW5vdGhlcikgJiYgdGhpcy5tb250aCA+IGFub3RoZXIubW9udGgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW1tdXRhYmx5IGFsdGVycyBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyIGJ5IHBhc3NlZCBvZmZzZXRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvZmZzZXRcbiAgICAgKiBAcmV0dXJuIG5ldyBtb250aCBhbmQgeWVhciBvYmplY3QgYXMgYSByZXN1bHQgb2Ygb2Zmc2V0dGluZyBjdXJyZW50XG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGFwcGVuZCh7eWVhciA9IDAsIG1vbnRoID0gMH06IFR1aU1vbnRoTGlrZSk6IFR1aU1vbnRoIHtcbiAgICAgICAgY29uc3QgdG90YWxNb250aHMgPSAodGhpcy55ZWFyICsgeWVhcikgKiBNT05USFNfSU5fWUVBUiArIHRoaXMubW9udGggKyBtb250aDtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aU1vbnRoKFxuICAgICAgICAgICAgTWF0aC5mbG9vcih0b3RhbE1vbnRocyAvIE1PTlRIU19JTl9ZRUFSKSxcbiAgICAgICAgICAgIHRvdGFsTW9udGhzICUgTU9OVEhTX0lOX1lFQVIsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmZvcm1hdHRlZE1vbnRoUGFydH0uJHt0aGlzLmZvcm1hdHRlZFllYXJ9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgdmFsdWVPZigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50b0xvY2FsTmF0aXZlRGF0ZSgpLnZhbHVlT2YoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtzdXBlci50b0pTT04oKX0tJHt0aGlzLmZvcm1hdHRlZE1vbnRoUGFydH1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgbmF0aXZlIHtAbGluayBEYXRlfSBiYXNlZCBvbiBsb2NhbCB0aW1lIHpvbmVcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9Mb2NhbE5hdGl2ZURhdGUoKTogRGF0ZSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgpO1xuXG4gICAgICAgIC8vIGZvciB5ZWFycyBsZXNzIHRoYW4gMTkwMFxuICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKHRoaXMueWVhcik7XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBuYXRpdmUge0BsaW5rIERhdGV9IGJhc2VkIG9uIFVUQ1xuICAgICAqL1xuICAgIHB1YmxpYyB0b1V0Y05hdGl2ZURhdGUoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0aGlzLnllYXIsIHRoaXMubW9udGgpKTtcbiAgICB9XG59XG4iXX0=
@@ -16,6 +16,7 @@ export function tuiCloseWatcher() {
16
16
  }
17
17
  function getWatcher() {
18
18
  // @ts-ignore
19
+ // eslint-disable-next-line unicorn/no-typeof-undefined
19
20
  return typeof CloseWatcher === 'undefined' ? { destroy: () => { } } : new CloseWatcher();
20
21
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2Utd2F0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9vYnNlcnZhYmxlcy9jbG9zZS13YXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFRaEMsTUFBTSxVQUFVLGVBQWU7SUFDM0IsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ2pDLElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBRTNCLE1BQU0sS0FBSyxHQUFHLEdBQVMsRUFBRTtZQUNyQixPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVoQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQztRQUVGLEtBQUssRUFBRSxDQUFDO1FBRVIsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsU0FBUyxVQUFVO0lBQ2YsYUFBYTtJQUNiLE9BQU8sT0FBTyxZQUFZLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUMxRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW50ZXJmYWNlIENsb3NlV2F0Y2hlciB7XG4gICAgZGVzdHJveTogKCkgPT4gdm9pZDtcbiAgICBvbmNsb3NlPzogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgICBvbmNhbmNlbD86IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlDbG9zZVdhdGNoZXIoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgIGxldCB3YXRjaGVyID0gZ2V0V2F0Y2hlcigpO1xuXG4gICAgICAgIGNvbnN0IHNldHVwID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgd2F0Y2hlciA9IGdldFdhdGNoZXIoKTtcbiAgICAgICAgICAgIHdhdGNoZXIub25jbG9zZSA9ICgpID0+IHNldHVwKCk7XG5cbiAgICAgICAgICAgIHdhdGNoZXIub25jYW5jZWwgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcblxuICAgICAgICBzZXR1cCgpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB3YXRjaGVyLmRlc3Ryb3koKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0V2F0Y2hlcigpOiBDbG9zZVdhdGNoZXIge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdHlwZW9mIENsb3NlV2F0Y2hlciA9PT0gJ3VuZGVmaW5lZCcgPyB7ZGVzdHJveTogKCkgPT4ge319IDogbmV3IENsb3NlV2F0Y2hlcigpO1xufVxuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2Utd2F0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9vYnNlcnZhYmxlcy9jbG9zZS13YXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFRaEMsTUFBTSxVQUFVLGVBQWU7SUFDM0IsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ2pDLElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBRTNCLE1BQU0sS0FBSyxHQUFHLEdBQVMsRUFBRTtZQUNyQixPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVoQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQztRQUVGLEtBQUssRUFBRSxDQUFDO1FBRVIsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsU0FBUyxVQUFVO0lBQ2YsYUFBYTtJQUNiLHVEQUF1RDtJQUN2RCxPQUFPLE9BQU8sWUFBWSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxFQUFFLENBQUM7QUFDMUYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmludGVyZmFjZSBDbG9zZVdhdGNoZXIge1xuICAgIGRlc3Ryb3k6ICgpID0+IHZvaWQ7XG4gICAgb25jbG9zZT86IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG4gICAgb25jYW5jZWw/OiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpQ2xvc2VXYXRjaGVyKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgICBsZXQgd2F0Y2hlciA9IGdldFdhdGNoZXIoKTtcblxuICAgICAgICBjb25zdCBzZXR1cCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHdhdGNoZXIgPSBnZXRXYXRjaGVyKCk7XG4gICAgICAgICAgICB3YXRjaGVyLm9uY2xvc2UgPSAoKSA9PiBzZXR1cCgpO1xuXG4gICAgICAgICAgICB3YXRjaGVyLm9uY2FuY2VsID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgc2V0dXAoKTtcblxuICAgICAgICByZXR1cm4gKCkgPT4gd2F0Y2hlci5kZXN0cm95KCk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFdhdGNoZXIoKTogQ2xvc2VXYXRjaGVyIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdHlwZW9mLXVuZGVmaW5lZFxuICAgIHJldHVybiB0eXBlb2YgQ2xvc2VXYXRjaGVyID09PSAndW5kZWZpbmVkJyA/IHtkZXN0cm95OiAoKSA9PiB7fX0gOiBuZXcgQ2xvc2VXYXRjaGVyKCk7XG59XG4iXX0=
@@ -13,4 +13,4 @@ export function tuiRetargetedBoundaryCrossing(event) {
13
13
  }
14
14
  return false;
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0YXJnZXQtYm91bmRhcnktY3Jvc3NpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvZG9tL3JldGFyZ2V0LWJvdW5kYXJ5LWNyb3NzaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxLQUFVO0lBQ3BELFVBQVU7SUFDVixJQUFJLHdCQUF3QixJQUFJLEtBQUssRUFBRTtRQUNuQyxPQUFPLEtBQUssRUFBRSxzQkFBc0IsS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDO0tBQ3pEO0lBRUQsU0FBUztJQUNULElBQUksV0FBVyxJQUFJLEtBQUssRUFBRTtRQUN0QixPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDakM7SUFFRCxTQUFTO0lBQ1QsSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLGFBQWEsSUFBSSxLQUFLLEVBQUU7UUFDN0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUMsQ0FBQztLQUM5QjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gdHVpUmV0YXJnZXRlZEJvdW5kYXJ5Q3Jvc3NpbmcoZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIC8vIGZpcmVmb3hcbiAgICBpZiAoJ2V4cGxpY2l0T3JpZ2luYWxUYXJnZXQnIGluIGV2ZW50KSB7XG4gICAgICAgIHJldHVybiBldmVudD8uZXhwbGljaXRPcmlnaW5hbFRhcmdldCAhPT0gZXZlbnQudGFyZ2V0O1xuICAgIH1cblxuICAgIC8vIGNocm9tZVxuICAgIGlmICgncG9pbnRlcklkJyBpbiBldmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQucG9pbnRlcklkID09PSAtMTtcbiAgICB9XG5cbiAgICAvLyBzYWZhcmlcbiAgICBpZiAoJ2RldGFpbCcgaW4gZXZlbnQgJiYgJ3dlYmtpdEZvcmNlJyBpbiBldmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQ/LmRldGFpbCA9PT0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0YXJnZXQtYm91bmRhcnktY3Jvc3NpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvZG9tL3JldGFyZ2V0LWJvdW5kYXJ5LWNyb3NzaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxLQUFZO0lBQ3RELFVBQVU7SUFDVixJQUFJLHdCQUF3QixJQUFJLEtBQUssRUFBRTtRQUNuQyxPQUFPLEtBQUssRUFBRSxzQkFBc0IsS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDO0tBQ3pEO0lBRUQsU0FBUztJQUNULElBQUksV0FBVyxJQUFJLEtBQUssRUFBRTtRQUN0QixPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDakM7SUFFRCxTQUFTO0lBQ1QsSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLGFBQWEsSUFBSSxLQUFLLEVBQUU7UUFDN0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUMsQ0FBQztLQUM5QjtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gdHVpUmV0YXJnZXRlZEJvdW5kYXJ5Q3Jvc3NpbmcoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgLy8gZmlyZWZveFxuICAgIGlmICgnZXhwbGljaXRPcmlnaW5hbFRhcmdldCcgaW4gZXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50Py5leHBsaWNpdE9yaWdpbmFsVGFyZ2V0ICE9PSBldmVudC50YXJnZXQ7XG4gICAgfVxuXG4gICAgLy8gY2hyb21lXG4gICAgaWYgKCdwb2ludGVySWQnIGluIGV2ZW50KSB7XG4gICAgICAgIHJldHVybiBldmVudC5wb2ludGVySWQgPT09IC0xO1xuICAgIH1cblxuICAgIC8vIHNhZmFyaVxuICAgIGlmICgnZGV0YWlsJyBpbiBldmVudCAmJiAnd2Via2l0Rm9yY2UnIGluIGV2ZW50KSB7XG4gICAgICAgIHJldHVybiBldmVudD8uZGV0YWlsID09PSAwO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cbiJdfQ==
@@ -16,6 +16,7 @@ const rect = {
16
16
  * For type safety when using @ContentChildren and @ViewChildren
17
17
  *
18
18
  * NOTE: Be careful subscribing to 'changes'
19
+ * @deprecated use viewChild(), viewChildren(), contentChild() and contentChildren() for strict type checking
19
20
  */
20
21
  const EMPTY_QUERY = new QueryList();
21
22
  const EMPTY_ARRAY = [];
@@ -214,7 +215,7 @@ const TUI_USED_ICONS = [
214
215
  '@tui.move-up',
215
216
  ];
216
217
 
217
- const TUI_VERSION = '4.45.0';
218
+ const TUI_VERSION = '4.46.0-canary.3415f27';
218
219
 
219
220
  /**
220
221
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-constants.mjs","sources":["../../../projects/cdk/constants/allow-signal-writes.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/matchers.ts","../../../projects/cdk/constants/regexp.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/used-icons.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["import type {CreateEffectOptions} from '@angular/core';\nimport {VERSION} from '@angular/core';\n\nexport const TUI_ALLOW_SIGNAL_WRITES: CreateEffectOptions =\n parseInt(VERSION.major, 10) >= 19 ? {} : {allowSignalWrites: true};\n","import {QueryList} from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n} as const;\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect,\n};\n","/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_TRUE_HANDLER = (): true => true;\n","import type {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n};\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = '\\u00A0';\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = '\\u2013';\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = '\\u2014';\n\n/**\n * {@link https://unicode-table.com/en/00AB/ Left-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_LAQUO = '\\u00AB';\n\n/**\n * {@link https://unicode-table.com/en/00BB/ Right-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_RAQUO = '\\u00BB';\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = '\\u002D';\n\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `&minus;`. Don't confuse with {@link CHAR_HYPHEN}\n */\nexport const CHAR_MINUS = '\\u2212';\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = '\\u002B';\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = '\\u2022';\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = '\\u2026';\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = '\\u00A4';\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = '\\u200B';\n","/**\n * @description:\n * AUTOGENERATED\n *\n * Array of icons used in taiga-ui components\n */\nexport const TUI_USED_ICONS = [\n '@tui.mir',\n '@tui.visa',\n '@tui.electron',\n '@tui.mastercard',\n '@tui.maestro',\n '@tui.amex',\n '@tui.diners-club',\n '@tui.discover',\n '@tui.humo',\n '@tui.jcb',\n '@tui.ru-pay',\n '@tui.union-pay',\n '@tui.uzcard',\n '@tui.verve',\n '@tui.external-link',\n '@tui.a-large-small',\n '@tui.arrow-right-left',\n '@tui.search',\n '@tui.sun',\n '@tui.moon',\n '@tui.code',\n '@tui.menu',\n '@tui.copy',\n '@tui.check',\n '@tui.link',\n '@tui.languages',\n '@tui.shrink',\n '@tui.expand',\n '@tui.eye-off',\n '@tui.eye',\n '@tui.grip-vertical',\n '@tui.chevron-up',\n '@tui.chevron-down',\n '@tui.chevrons-up-down',\n '@tui.info',\n '@tui.circle-check',\n '@tui.circle-x',\n '@tui.circle-alert',\n '@tui.circle-help',\n '@tui.x',\n '@tui.chevron-right',\n '@tui.ellipsis',\n '@tui.chevron-left',\n '@tui.clock',\n '@tui.trash',\n '@tui.minus',\n '@tui.file',\n '@tui.calendar',\n '@tui.plus',\n '@tui.phone',\n '@tui.heart',\n '@tui.heart-filled',\n '@tui.star',\n '@tui.rotate-ccw-square',\n '@tui.arrow-left',\n '@tui.arrow-right',\n '@tui.minimize',\n '@tui.filter',\n '@tui.layout-grid',\n '@tui.move-up-right',\n '@tui.move-right',\n '@tui.move-down-right',\n '@tui.move-down',\n '@tui.move-down-left',\n '@tui.move-left',\n '@tui.move-up-left',\n '@tui.move-up',\n] as const;\n","export const TUI_VERSION = '4.45.0';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-constants.mjs","sources":["../../../projects/cdk/constants/allow-signal-writes.ts","../../../projects/cdk/constants/empty.ts","../../../projects/cdk/constants/handlers.ts","../../../projects/cdk/constants/matchers.ts","../../../projects/cdk/constants/regexp.ts","../../../projects/cdk/constants/svg-node-filter.ts","../../../projects/cdk/constants/unicode-chars.ts","../../../projects/cdk/constants/used-icons.ts","../../../projects/cdk/constants/version.ts","../../../projects/cdk/constants/taiga-ui-cdk-constants.ts"],"sourcesContent":["import type {CreateEffectOptions} from '@angular/core';\nimport {VERSION} from '@angular/core';\n\nexport const TUI_ALLOW_SIGNAL_WRITES: CreateEffectOptions =\n parseInt(VERSION.major, 10) >= 19 ? {} : {allowSignalWrites: true};\n","import {QueryList} from '@angular/core';\n\nconst rect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n} as const;\n\n/**\n * For type safety when using @ContentChildren and @ViewChildren\n *\n * NOTE: Be careful subscribing to 'changes'\n * @deprecated use viewChild(), viewChildren(), contentChild() and contentChildren() for strict type checking\n */\nexport const EMPTY_QUERY = new QueryList<any>();\nexport const EMPTY_ARRAY: [] = [];\nexport const EMPTY_FUNCTION: (...args: any[]) => void = () => {};\nexport const EMPTY_CLIENT_RECT: DOMRect = {\n ...rect,\n toJSON: () => rect,\n};\n","/**\n * Handler that always returns `false`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_FALSE_HANDLER = (): false => false;\n\n/**\n * Handler that always returns `true`.\n */\n// eslint-disable-next-line no-restricted-syntax\nexport const TUI_TRUE_HANDLER = (): true => true;\n","import type {TuiHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\nfunction bothEmpty(item1: unknown, item2: unknown): boolean {\n return Array.isArray(item1) && Array.isArray(item2) && !item1.length && !item2.length;\n}\n\n/**\n * Default handler for matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_DEFAULT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase().includes(search.toLowerCase());\n\n/**\n * Default handler for strict matching stringified version of an item and a search query\n * @param item arbitrary element to match with a string\n * @param search search query\n * @param stringify handler to turn item into a string\n */\nexport const TUI_STRICT_MATCHER = <T>(\n item: T,\n search: string,\n stringify: TuiHandler<T, string> = String,\n): boolean => stringify(item).toLowerCase() === search.toLowerCase();\n\n/**\n * Default handler to match equality of two elements\n * ATTENTION: considers two empty arrays equal\n *\n * @param item1 first element\n * @param item2 second element\n */\nexport const TUI_DEFAULT_IDENTITY_MATCHER: TuiIdentityMatcher<unknown> = (item1, item2) =>\n item1 === item2 || bothEmpty(item1, item2);\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\n","export const svgNodeFilter: Exclude<NodeFilter, (node: Node) => number> = {\n acceptNode(node: Node): number {\n return 'ownerSVGElement' in node\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n};\n","/**\n * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.\n */\nexport const CHAR_NO_BREAK_SPACE = '\\u00A0';\n\n/**\n * {@link https://unicode-table.com/en/2013/ EN dash}\n * is used to indicate a range of numbers or a span of time.\n * @example 2006–2022\n * ___\n * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EN_DASH = '\\u2013';\n\n/**\n * {@link https://unicode-table.com/en/2014/ EM dash}\n * is used to mark a break in a sentence.\n * @example Taiga UI — powerful set of open source components for Angular\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!\n */\nexport const CHAR_EM_DASH = '\\u2014';\n\n/**\n * {@link https://unicode-table.com/en/00AB/ Left-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_LAQUO = '\\u00AB';\n\n/**\n * {@link https://unicode-table.com/en/00BB/ Right-Pointing Double Angle Quotation Mark}\n */\nexport const CHAR_RAQUO = '\\u00BB';\n\n/**\n * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}\n * is used to combine words.\n * @example well-behaved\n * ___\n * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!\n */\nexport const CHAR_HYPHEN = '\\u002D';\n\n/**\n * {@link https://unicode-table.com/en/2212/ Minus}\n * is used as math operator symbol or before negative digits.\n * ---\n * Can be used as `&minus;`. Don't confuse with {@link CHAR_HYPHEN}\n */\nexport const CHAR_MINUS = '\\u2212';\n\n/**\n * {@link https://unicode-table.com/en/002B/ Plus}\n */\nexport const CHAR_PLUS = '\\u002B';\n\n/**\n * {@link https://unicode-table.com/en/2022/ Bullet}.\n */\nexport const CHAR_BULLET = '\\u2022';\n\n/**\n * {@link https://unicode-table.com/en/2026/ Suspension points}.\n */\nexport const CHAR_ELLIPSIS = '\\u2026';\n\n/**\n * {@link https://unicode-table.com/en/00A4/ Suspension points}.\n */\nexport const CHAR_CURRENCY_SIGN = '\\u00A4';\n\n/**\n * {@link https://unicode-table.com/en/200b/ Suspension points}.\n */\nexport const CHAR_ZERO_WIDTH_SPACE = '\\u200B';\n","/**\n * @description:\n * AUTOGENERATED\n *\n * Array of icons used in taiga-ui components\n */\nexport const TUI_USED_ICONS = [\n '@tui.mir',\n '@tui.visa',\n '@tui.electron',\n '@tui.mastercard',\n '@tui.maestro',\n '@tui.amex',\n '@tui.diners-club',\n '@tui.discover',\n '@tui.humo',\n '@tui.jcb',\n '@tui.ru-pay',\n '@tui.union-pay',\n '@tui.uzcard',\n '@tui.verve',\n '@tui.external-link',\n '@tui.a-large-small',\n '@tui.arrow-right-left',\n '@tui.search',\n '@tui.sun',\n '@tui.moon',\n '@tui.code',\n '@tui.menu',\n '@tui.copy',\n '@tui.check',\n '@tui.link',\n '@tui.languages',\n '@tui.shrink',\n '@tui.expand',\n '@tui.eye-off',\n '@tui.eye',\n '@tui.grip-vertical',\n '@tui.chevron-up',\n '@tui.chevron-down',\n '@tui.chevrons-up-down',\n '@tui.info',\n '@tui.circle-check',\n '@tui.circle-x',\n '@tui.circle-alert',\n '@tui.circle-help',\n '@tui.x',\n '@tui.chevron-right',\n '@tui.ellipsis',\n '@tui.chevron-left',\n '@tui.clock',\n '@tui.trash',\n '@tui.minus',\n '@tui.file',\n '@tui.calendar',\n '@tui.plus',\n '@tui.phone',\n '@tui.heart',\n '@tui.heart-filled',\n '@tui.star',\n '@tui.rotate-ccw-square',\n '@tui.arrow-left',\n '@tui.arrow-right',\n '@tui.minimize',\n '@tui.filter',\n '@tui.layout-grid',\n '@tui.move-up-right',\n '@tui.move-right',\n '@tui.move-down-right',\n '@tui.move-down',\n '@tui.move-down-left',\n '@tui.move-left',\n '@tui.move-up-left',\n '@tui.move-up',\n] as const;\n","export const TUI_VERSION = '4.46.0-canary.3415f27';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -313,7 +313,10 @@ class TuiMonth extends TuiYear {
313
313
  * Returns native {@link Date} based on local time zone
314
314
  */
315
315
  toLocalNativeDate() {
316
- return new Date(this.year, this.month);
316
+ const date = new Date(this.year, this.month);
317
+ // for years less than 1900
318
+ date.setFullYear(this.year);
319
+ return date;
317
320
  }
318
321
  /**
319
322
  * Returns native {@link Date} based on UTC
@@ -593,7 +596,9 @@ class TuiDay extends TuiMonth {
593
596
  * Returns native {@link Date} based on local time zone
594
597
  */
595
598
  toLocalNativeDate() {
596
- return new Date(this.year, this.month, this.day);
599
+ const date = super.toLocalNativeDate();
600
+ date.setDate(this.day);
601
+ return date;
597
602
  }
598
603
  /**
599
604
  * Returns native {@link Date} based on UTC