@flogeez/angular-tiptap-editor 3.4.4 → 3.4.6

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.
@@ -1,4 +1,4 @@
1
- import { Component, input, inject, signal, computed, effect, untracked, ChangeDetectionStrategy, HostListener, } from "@angular/core";
1
+ import { Component, input, inject, signal, computed, effect, untracked, ChangeDetectionStrategy, HostListener, booleanAttribute, } from "@angular/core";
2
2
  import { AteEditorRef } from "../../models/ate-editor-ref";
3
3
  import { AteEditorRegistry } from "../../services/ate-editor-registry.service";
4
4
  import { AteI18nService } from "../../services/ate-i18n.service";
@@ -32,9 +32,9 @@ export class AteTableOfContentsComponent {
32
32
  // Optional custom title (if not provided, uses i18n translation)
33
33
  this.title = input(null);
34
34
  // Whether to show the header title
35
- this.showTitle = input(true);
35
+ this.showTitle = input(true, { transform: booleanAttribute });
36
36
  // Layout mode: floating on fixed position or inline inside parent container
37
- this.floating = input(true);
37
+ this.floating = input(true, { transform: booleanAttribute });
38
38
  // Positioning mode when floating: 'fixed' (relative to viewport, default) or 'absolute' (relative to parent container)
39
39
  this.positionMode = input("fixed");
40
40
  // Floating position: 'right' | 'left'
@@ -42,7 +42,7 @@ export class AteTableOfContentsComponent {
42
42
  // Visual variant: 'minimal' | 'card' | 'transparent'
43
43
  this.variant = input("minimal");
44
44
  // Notion-style hover expansion (collapses text into dashes until hovered)
45
- this.hoverExpand = input(true);
45
+ this.hoverExpand = input(true, { transform: booleanAttribute });
46
46
  // Maximum heading level depth to include (1-6, default: 6)
47
47
  this.maxDepth = input(6, {
48
48
  transform: (v) => {
@@ -382,4 +382,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
382
382
  type: HostListener,
383
383
  args: ["window:resize", []]
384
384
  }] } });
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtb2YtY29udGVudHMvYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULHVCQUF1QixFQUV2QixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFJakU7Ozs7R0FJRztBQTRYSCxNQUFNLE9BQU8sMkJBQTJCO0lBdUN0QyxrRUFBa0U7SUFDbEUsU0FBUyxDQUFDLEtBQWE7UUFDckIsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQztnQkFDSixPQUFPLEVBQUUsQ0FBQztZQUNaLEtBQUssQ0FBQztnQkFDSixPQUFPLEVBQUUsQ0FBQztZQUNaLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsQ0FBQztZQUNYLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsQ0FBQztZQUNYLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsQ0FBQztZQUNYO2dCQUNFLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFrQ0Q7UUF4RkEscUVBQXFFO1FBQ3JFLFdBQU0sR0FBRyxLQUFLLENBQW9ELElBQUksQ0FBQyxDQUFDO1FBRXhFLGlFQUFpRTtRQUNqRSxVQUFLLEdBQUcs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QUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMxRixJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBN1FVLDJCQUEyQjttR0FBM0IsMkJBQTJCLDZsREFoWDVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThEVDs7NEZBa1RVLDJCQUEyQjtrQkEzWHZDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxFQUFFLG1CQUNNLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osK0JBQStCLEVBQUUsWUFBWTt3QkFDN0MsaUNBQWlDLEVBQUUsb0NBQW9DO3dCQUN2RSwrQkFBK0IsRUFBRSw2Q0FBNkM7d0JBQzlFLDRCQUE0QixFQUFFLDBDQUEwQztxQkFDekUsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RFQ7d0RBbWFELFFBQVE7c0JBRlAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRTs7c0JBQ2hDLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgdW50cmFja2VkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT25EZXN0cm95LFxuICBIb3N0TGlzdGVuZXIsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgeyBBdGVFZGl0b3JSZWYgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2F0ZS1lZGl0b3ItcmVmXCI7XG5pbXBvcnQgeyBBdGVFZGl0b3JSZWdpc3RyeSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdGUtZWRpdG9yLXJlZ2lzdHJ5LnNlcnZpY2VcIjtcbmltcG9ydCB7IEF0ZUkxOG5TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2F0ZS1pMThuLnNlcnZpY2VcIjtcblxuaW1wb3J0IHsgQXRlVG9jSXRlbSwgQXRlVG9jVmFyaWFudCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXRlLXRvYy5tb2RlbFwiO1xuXG4vKipcbiAqIFRhYmxlIG9mIENvbnRlbnRzIENvbXBvbmVudCAoTm90aW9uLXN0eWxlKVxuICogRHluYW1pY2FsbHkgZXh0cmFjdHMgaGVhZGluZ3MgZnJvbSB0aGUgYWN0aXZlIGVkaXRvciBhbmQgZGlzcGxheXMgdGhlbS5cbiAqIENvbmZpZ3VyYWJsZSB2aWEgaW5wdXRzIChmbG9hdGluZywgcG9zaXRpb24sIHZhcmlhbnRzLCBob3ZlciBleHBhbnNpb24pIGFuZCBDU1MgdmFyaWFibGVzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXRlLXRhYmxlLW9mLWNvbnRlbnRzXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgIFwiW2NsYXNzLmF0ZS10b2MtaG9zdC1mbG9hdGluZ11cIjogXCJmbG9hdGluZygpXCIsXG4gICAgXCJbc3R5bGUuLS1hdGUtdG9jLXBvc2l0aW9uLW1vZGVdXCI6IFwiZmxvYXRpbmcoKSA/IHBvc2l0aW9uTW9kZSgpIDogbnVsbFwiLFxuICAgIFwiW2NsYXNzLmF0ZS10b2MtaG9zdC1hYnNvbHV0ZV1cIjogXCJmbG9hdGluZygpICYmIHBvc2l0aW9uTW9kZSgpID09PSAnYWJzb2x1dGUnXCIsXG4gICAgXCJbY2xhc3MuYXRlLXRvYy1ob3N0LWZpeGVkXVwiOiBcImZsb2F0aW5nKCkgJiYgcG9zaXRpb25Nb2RlKCkgPT09ICdmaXhlZCdcIixcbiAgfSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF0ZS10b2Mtd3JhcHBlclwiXG4gICAgICBbY2xhc3MuYXRlLXRvYy1mbG9hdGluZ109XCJmbG9hdGluZygpXCJcbiAgICAgIFtjbGFzcy5hdGUtdG9jLXBvc2l0aW9uLWFic29sdXRlXT1cImZsb2F0aW5nKCkgJiYgcG9zaXRpb25Nb2RlKCkgPT09ICdhYnNvbHV0ZSdcIlxuICAgICAgW2NsYXNzLmF0ZS10b2MtcG9zaXRpb24tZml4ZWRdPVwiZmxvYXRpbmcoKSAmJiBwb3NpdGlvbk1vZGUoKSA9PT0gJ2ZpeGVkJ1wiXG4gICAgICBbY2xhc3MuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0XT1cInBvc2l0aW9uKCkgPT09ICdsZWZ0J1wiXG4gICAgICBbY2xhc3MuYXRlLXRvYy1wb3NpdGlvbi1yaWdodF09XCJwb3NpdGlvbigpID09PSAncmlnaHQnXCJcbiAgICAgIChtb3VzZWVudGVyKT1cInNldE1vdXNlSG92ZXIodHJ1ZSlcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwic2V0TW91c2VIb3ZlcihmYWxzZSlcIlxuICAgICAgKGZvY3VzaW4pPVwic2V0Rm9jdXNlZCh0cnVlKVwiXG4gICAgICAoZm9jdXNvdXQpPVwic2V0Rm9jdXNlZChmYWxzZSlcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhdGUtdG9jXCJcbiAgICAgICAgW2NsYXNzLmF0ZS10b2MtZmxvYXRpbmddPVwiZmxvYXRpbmcoKVwiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLXBvc2l0aW9uLWxlZnRdPVwicG9zaXRpb24oKSA9PT0gJ2xlZnQnXCJcbiAgICAgICAgW2NsYXNzLmF0ZS10b2MtcG9zaXRpb24tcmlnaHRdPVwicG9zaXRpb24oKSA9PT0gJ3JpZ2h0J1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLXZhcmlhbnQtY2FyZF09XCJ2YXJpYW50KCkgPT09ICdjYXJkJ1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLXZhcmlhbnQtdHJhbnNwYXJlbnRdPVwidmFyaWFudCgpID09PSAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgW2NsYXNzLmF0ZS10b2MtdmFyaWFudC1taW5pbWFsXT1cInZhcmlhbnQoKSA9PT0gJ21pbmltYWwnXCJcbiAgICAgICAgW2NsYXNzLmF0ZS10b2MtaG92ZXItZXhwYW5kXT1cImZsb2F0aW5nKCkgJiYgaG92ZXJFeHBhbmQoKVwiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLWhvdmVyZWRdPVwiZmxvYXRpbmcoKSAmJiBob3ZlckV4cGFuZCgpICYmIGlzRXhwYW5kZWQoKVwiXG4gICAgICAgIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlRhYmxlIG9mIENvbnRlbnRzXCI+XG4gICAgICAgIEBpZiAoaXRlbXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgQGlmIChzaG93VGl0bGUoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0ZS10b2MtaGVhZGVyXCI+e3sgaGVhZGVyVGl0bGUoKSB9fTwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXRlLXRvYy1saXN0XCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zKCk7IHRyYWNrIGl0ZW0uaWQpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXRlLXRvYy1pdGVtXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYXRlLXRvYy1hY3RpdmVdPVwiaXRlbS5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJpdGVtLmFjdGl2ZSA/ICd0cnVlJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtbGV2ZWxdPVwiaXRlbS5sZXZlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNjcm9sbFRvSGVhZGluZyhpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50ZXh0XCI+XG4gICAgICAgICAgICAgICAgPCEtLSBQZXJmZWN0IG5hdGl2ZSB2ZWN0b3IgU1ZHIGRhc2ggd2l0aCBsZXZlbC1hZGFwdGVkIHZpZXdCb3ggJiB3aWR0aCAtLT5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICBbYXR0ci53aWR0aF09XCJkYXNoV2lkdGgoaXRlbS5sZXZlbClcIlxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMlwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci52aWV3Qm94XT1cIicwIDAgJyArIGRhc2hXaWR0aChpdGVtLmxldmVsKSArICcgMidcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF0ZS10b2MtZGFzaFwiPlxuICAgICAgICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiZGFzaFdpZHRoKGl0ZW0ubGV2ZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMlwiXG4gICAgICAgICAgICAgICAgICAgIHJ4PVwiMVwiXG4gICAgICAgICAgICAgICAgICAgIHJ5PVwiMVwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEZ1bGwgaGVhZGluZyB0ZXh0IC0tPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXRlLXRvYy10ZXh0XCI+e3sgaXRlbS50ZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIC8qIE91dGVyIEhpdGJveCBDb250YWluZXIgUG9zaXRpb25pbmcgKi9cbiAgICAgIC5hdGUtdG9jLXdyYXBwZXIuYXRlLXRvYy1mbG9hdGluZyB7XG4gICAgICAgIHBvc2l0aW9uOiB2YXIoLS1hdGUtdG9jLXBvc2l0aW9uLW1vZGUsIGZpeGVkKTtcbiAgICAgICAgdG9wOiB2YXIoLS1hdGUtdG9jLXRvcCwgNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB6LWluZGV4OiB2YXIoLS1hdGUtdG9jLXotaW5kZXgsIDk1KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtcG9zaXRpb24tYWJzb2x1dGUsXG4gICAgICA6aG9zdCguYXRlLXRvYy1ob3N0LWFic29sdXRlKSAuYXRlLXRvYy13cmFwcGVyLmF0ZS10b2MtZmxvYXRpbmcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLXdyYXBwZXIuYXRlLXRvYy1mbG9hdGluZy5hdGUtdG9jLXBvc2l0aW9uLWZpeGVkLFxuICAgICAgOmhvc3QoLmF0ZS10b2MtaG9zdC1maXhlZCkgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nIHtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy13cmFwcGVyLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1wb3NpdGlvbi1yaWdodCB7XG4gICAgICAgIHJpZ2h0OiB2YXIoLS1hdGUtdG9jLXJpZ2h0LCAycmVtKTtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLCAxNnB4KTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLWF0ZS10b2MtaGl0Ym94LXBhZGRpbmctdmVydGljYWwsIDhweCk7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLXZlcnRpY2FsLCA4cHgpO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy13cmFwcGVyLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0IHtcbiAgICAgICAgbGVmdDogdmFyKC0tYXRlLXRvYy1sZWZ0LCAycmVtKTtcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLWF0ZS10b2MtaGl0Ym94LXBhZGRpbmcsIDE2cHgpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLXZlcnRpY2FsLCA4cHgpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZy12ZXJ0aWNhbCwgOHB4KTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2Mge1xuICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgICB9XG5cbiAgICAgIC8qIEZsb2F0aW5nIE1vZGUgQ29udGFpbmVyIFBvc2l0aW9uaW5nICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWZsb2F0aW5nIHtcbiAgICAgICAgbWF4LWhlaWdodDogdmFyKC0tYXRlLXRvYy1tYXgtaGVpZ2h0LCA0MDBweCk7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG5cbiAgICAgIC8qIEZsb2F0aW5nIG1vZGUgd2lkdGggJiBwYWRkaW5nICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWZsb2F0aW5nOm5vdCguYXRlLXRvYy1ob3Zlci1leHBhbmQpLFxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpob3ZlcixcbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1ob3Zlci1leHBhbmQuYXRlLXRvYy1ob3ZlcmVkIHtcbiAgICAgICAgd2lkdGg6IHZhcigtLWF0ZS10b2Mtd2lkdGgsIDI0MHB4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYXRlLXRvYy1ib3JkZXItcmFkaXVzLCB2YXIoLS1hdGUtYm9yZGVyLXJhZGl1cywgMTZweCkpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1hdGUtdG9jLXBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKTpub3QoOmhvdmVyKSB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1hdGUtdG9jLWNvbGxhcHNlZC13aWR0aCwgMzJweCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS10b2MtY29sbGFwc2VkLXJhZGl1cywgMTZweCk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLWF0ZS10b2MtcGFkZGluZyk7XG4gICAgICB9XG5cbiAgICAgIC8qIFZhcmlhbnQ6IGNhcmQgKi9cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtdmFyaWFudC1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXRvYy1iZywgdmFyKC0tYXRlLXN1cmZhY2UsICNmZmZmZmYpKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXRlLXRvYy1ib3JkZXIsIHZhcigtLWF0ZS1ib3JkZXIsICNlMmU4ZjApKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYXRlLXRvYy1ib3JkZXItcmFkaXVzLCB2YXIoLS1hdGUtYm9yZGVyLXJhZGl1cywgMTJweCkpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1hdGUtdG9jLXNoYWRvdywgMCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMDYpKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLXRvYy1wYWRkaW5nKTtcbiAgICAgIH1cblxuICAgICAgLyogVmFyaWFudDogbWluaW1hbCAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy12YXJpYW50LW1pbmltYWwge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS10b2MtYm9yZGVyLXJhZGl1cywgdmFyKC0tYXRlLWJvcmRlci1yYWRpdXMsIDEycHgpKTtcbiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLXZhcmlhbnQtbWluaW1hbDpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b2MtaG92ZXItYmcsIHZhcigtLWF0ZS1zdXJmYWNlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpKSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYXRlLXRvYy1ob3Zlci1ib3JkZXIsIHZhcigtLWF0ZS1ib3JkZXIsICNlMmU4ZjApKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tYXRlLXRvYy1ob3Zlci1zaGFkb3csIDAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA2KSk7XG4gICAgICB9XG5cbiAgICAgIC8qIFZhcmlhbnQ6IHRyYW5zcGFyZW50ICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLXZhcmlhbnQtdHJhbnNwYXJlbnQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICAvKiBIZWFkZXIgc3R5bGluZyAqL1xuICAgICAgLmF0ZS10b2MtaGVhZGVyIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXRleHQtbXV0ZWQsICM5Y2EzYWYpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTJweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAvKiBMaXN0IGNvbnRhaW5lciAqL1xuICAgICAgLmF0ZS10b2MtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tYXRlLXRvYy10ZXh0LWdhcCwgdmFyKC0tYXRlLXRvYy1nYXAsIDJweCkpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRyYW5zaXRpb246IGdhcCAwLjJzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC8qIEJhc2UgSXRlbSAoRXhwYW5kZWQgLyBUZXh0IG1vZGUgZGVmYXVsdCkgKi9cbiAgICAgIC5hdGUtdG9jLWl0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IHZhcigtLWF0ZS10b2MtaXRlbS1ob3Zlci1oZWlnaHQsIDIycHgpO1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXRvb2xiYXItYnV0dG9uLWNvbG9yLCB2YXIoLS1hdGUtdGV4dC1zZWNvbmRhcnksICM2NDc0OGIpKTtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYXRlLXN1Yi1ib3JkZXItcmFkaXVzLCA4cHgpO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy1pdGVtOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tYXRlLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMXB4O1xuICAgICAgfVxuXG4gICAgICAvKiBMZXZlbCBJbmRlbnRhdGlvbnMgaW4gVGV4dCBtb2RlICovXG4gICAgICAuYXRlLXRvYy1pdGVtW2RhdGEtbGV2ZWw9XCIxXCJdIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gICAgICB9XG4gICAgICAuYXRlLXRvYy1pdGVtW2RhdGEtbGV2ZWw9XCIyXCJdIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNnB4O1xuICAgICAgfVxuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiM1wiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMjRweDtcbiAgICAgIH1cbiAgICAgIC5hdGUtdG9jLWl0ZW1bZGF0YS1sZXZlbD1cIjRcIl0ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDMycHg7XG4gICAgICB9XG4gICAgICAuYXRlLXRvYy1pdGVtW2RhdGEtbGV2ZWw9XCI1XCJdIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA0MHB4O1xuICAgICAgfVxuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiNlwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNDhweDtcbiAgICAgIH1cblxuICAgICAgLyogSXRlbSBob3ZlciBvdmVybGF5ICYgYWN0aXZlIHN0YXRlIChFeHBhbmRlZCAvIFRleHQgbW9kZSkgKi9cbiAgICAgIC5hdGUtdG9jLWl0ZW06OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS1zdWItYm9yZGVyLXJhZGl1cywgOHB4KTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLWl0ZW06aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXRvb2xiYXItYnV0dG9uLWFjdGl2ZS1jb2xvciwgdmFyKC0tYXRlLXByaW1hcnksICMyNTYzZWIpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXRvb2xiYXItYnV0dG9uLWhvdmVyLWJhY2tncm91bmQsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MtaXRlbTpob3Zlcjo6YmVmb3JlIHtcbiAgICAgICAgb3BhY2l0eTogMC4xO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy1pdGVtLmF0ZS10b2MtYWN0aXZlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1hY3RpdmUtY29sb3IsIHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcihcbiAgICAgICAgICAtLWF0ZS10b29sYmFyLWJ1dHRvbi1hY3RpdmUtYmFja2dyb3VuZCxcbiAgICAgICAgICB2YXIoLS1hdGUtcHJpbWFyeS1saWdodCwgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKSwgdHJhbnNwYXJlbnQgOTAlKSlcbiAgICAgICAgKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIH1cblxuICAgICAgLyogSGVhZGluZyBUZXh0IHN0eWxpbmcgKi9cbiAgICAgIC5hdGUtdG9jLXRleHQge1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgbWF4LXdpZHRoOiAyNTBweDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgICAgICBtYXJnaW4tbGVmdDogNHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgb3BhY2l0eSAwLjI1cyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCksXG4gICAgICAgICAgbWF4LXdpZHRoIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpLFxuICAgICAgICAgIHRyYW5zZm9ybSAwLjI1cyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCksXG4gICAgICAgICAgbWFyZ2luIDAuMjVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC8qIFNWRyBSZWN0IERhc2ggc3R5bGluZyAoSGlkZGVuIGluIFRleHQgbW9kZSkgKi9cbiAgICAgIC5hdGUtdG9jLWRhc2gge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBoZWlnaHQ6IDNweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b2MtZGFzaC1jb2xvciwgdmFyKC0tYXRlLWJvcmRlciwgI2NiZDVlMSkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcbiAgICAgIH1cblxuICAgICAgLyogLS0tIENPTExBUFNFRCBOT1RJT04gTU9ERSAoRGFzaGVzIG9ubHksIHdoZW4gaG92ZXItZXhwYW5kIGlzIGFjdGl2ZSAmIG5vdCBob3ZlcmVkKSAtLS0gKi9cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZCkgLmF0ZS10b2MtZGFzaCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWl0ZW0ge1xuICAgICAgICBoZWlnaHQ6IHZhcigtLWF0ZS10b2MtaXRlbS1oZWlnaHQsIDE4cHgpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZCkgLmF0ZS10b2MtaXRlbTo6YmVmb3JlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWl0ZW06aG92ZXIgLmF0ZS10b2MtZGFzaCxcbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKVxuICAgICAgICAuYXRlLXRvYy1pdGVtLmF0ZS10b2MtYWN0aXZlXG4gICAgICAgIC5hdGUtdG9jLWRhc2gge1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuXG4gICAgICAvKiBEaXJlY3Rpb24gJiB0ZXh0IGNvbGxhcHNlIGZvciBDb2xsYXBzZWQgUklHSFQgcG9zaXRpb24gKi9cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWl0ZW0ge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQuYXRlLXRvYy1wb3NpdGlvbi1yaWdodDpub3QoLmF0ZS10b2MtaG92ZXJlZCkgLmF0ZS10b2MtdGV4dCB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIG1heC13aWR0aDogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIH1cblxuICAgICAgLyogRGlyZWN0aW9uICYgdGV4dCBjb2xsYXBzZSBmb3IgQ29sbGFwc2VkIExFRlQgcG9zaXRpb24gKi9cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1wb3NpdGlvbi1yaWdodCk6bm90KC5hdGUtdG9jLWhvdmVyZWQpXG4gICAgICAgIC5hdGUtdG9jLWl0ZW0sXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZC5hdGUtdG9jLXBvc2l0aW9uLWxlZnQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWl0ZW0ge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1wb3NpdGlvbi1yaWdodCk6bm90KC5hdGUtdG9jLWhvdmVyZWQpXG4gICAgICAgIC5hdGUtdG9jLXRleHQsXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZC5hdGUtdG9jLXBvc2l0aW9uLWxlZnQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLXRleHQge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNHB4KTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXRlVGFibGVPZkNvbnRlbnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLy8gSW5wdXQgYWNjZXB0cyByYXcgRWRpdG9yLCBBdGVFZGl0b3JSZWYsIG9yIElEIG9mIHJlZ2lzdGVyZWQgZWRpdG9yXG4gIGVkaXRvciA9IGlucHV0PEVkaXRvciB8IEF0ZUVkaXRvclJlZiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KG51bGwpO1xuXG4gIC8vIE9wdGlvbmFsIGN1c3RvbSB0aXRsZSAoaWYgbm90IHByb3ZpZGVkLCB1c2VzIGkxOG4gdHJhbnNsYXRpb24pXG4gIHRpdGxlID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gV2hldGhlciB0byBzaG93IHRoZSBoZWFkZXIgdGl0bGVcbiAgc2hvd1RpdGxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgLy8gTGF5b3V0IG1vZGU6IGZsb2F0aW5nIG9uIGZpeGVkIHBvc2l0aW9uIG9yIGlubGluZSBpbnNpZGUgcGFyZW50IGNvbnRhaW5lclxuICBmbG9hdGluZyA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gIC8vIFBvc2l0aW9uaW5nIG1vZGUgd2hlbiBmbG9hdGluZzogJ2ZpeGVkJyAocmVsYXRpdmUgdG8gdmlld3BvcnQsIGRlZmF1bHQpIG9yICdhYnNvbHV0ZScgKHJlbGF0aXZlIHRvIHBhcmVudCBjb250YWluZXIpXG4gIHBvc2l0aW9uTW9kZSA9IGlucHV0PFwiYWJzb2x1dGVcIiB8IFwiZml4ZWRcIj4oXCJmaXhlZFwiKTtcblxuICAvLyBGbG9hdGluZyBwb3NpdGlvbjogJ3JpZ2h0JyB8ICdsZWZ0J1xuICBwb3NpdGlvbiA9IGlucHV0PFwibGVmdFwiIHwgXCJyaWdodFwiPihcInJpZ2h0XCIpO1xuXG4gIC8vIFZpc3VhbCB2YXJpYW50OiAnbWluaW1hbCcgfCAnY2FyZCcgfCAndHJhbnNwYXJlbnQnXG4gIHZhcmlhbnQgPSBpbnB1dDxBdGVUb2NWYXJpYW50PihcIm1pbmltYWxcIik7XG5cbiAgLy8gTm90aW9uLXN0eWxlIGhvdmVyIGV4cGFuc2lvbiAoY29sbGFwc2VzIHRleHQgaW50byBkYXNoZXMgdW50aWwgaG92ZXJlZClcbiAgaG92ZXJFeHBhbmQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICAvLyBNYXhpbXVtIGhlYWRpbmcgbGV2ZWwgZGVwdGggdG8gaW5jbHVkZSAoMS02LCBkZWZhdWx0OiA2KVxuICBtYXhEZXB0aCA9IGlucHV0PG51bWJlciwgbnVtYmVyIHwgc3RyaW5nPig2LCB7XG4gICAgdHJhbnNmb3JtOiAodjogbnVtYmVyIHwgc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlSW50KHYsIDEwKSA6IHY7XG4gICAgICBpZiAoaXNOYU4ocGFyc2VkKSkge1xuICAgICAgICByZXR1cm4gNjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCgxLCBwYXJzZWQpLCA2KTtcbiAgICB9LFxuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID0gaW5qZWN0KEF0ZUVkaXRvclJlZ2lzdHJ5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBpMThuID0gaW5qZWN0KEF0ZUkxOG5TZXJ2aWNlKTtcblxuICAvLyBIZWxwZXIgbWV0aG9kIGZvciBleGFjdCBuYXRpdmUgU1ZHIGRhc2ggd2lkdGggcGVyIGhlYWRpbmcgbGV2ZWxcbiAgZGFzaFdpZHRoKGxldmVsOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHN3aXRjaCAobGV2ZWwpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmV0dXJuIDE2O1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gMTI7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHJldHVybiA4O1xuICAgICAgY2FzZSA0OlxuICAgICAgICByZXR1cm4gNjtcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgcmV0dXJuIDQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gMztcbiAgICB9XG4gIH1cblxuICAvLyBDb21wdXRlZCBoZWFkZXIgdGl0bGUgd2l0aCBmYWxsYmFjayB0byBpMThuXG4gIHJlYWRvbmx5IGhlYWRlclRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbSA9IHRoaXMudGl0bGUoKTtcbiAgICBpZiAoY3VzdG9tICE9PSBudWxsICYmIGN1c3RvbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY3VzdG9tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pMThuLmVkaXRvcigpLnRhYmxlT2ZDb250ZW50cztcbiAgfSk7XG5cbiAgLy8gUmVzb2x2ZWQgZWRpdG9yIGluc3RhbmNlXG4gIHJlYWRvbmx5IHJlc29sdmVkRWRpdG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuZWRpdG9yKCk7XG4gICAgaWYgKCF2YWwpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LmFjdGl2ZUVkaXRvcigpPy5lZGl0b3IgfHwgbnVsbDtcbiAgICB9XG4gICAgaWYgKHZhbCBpbnN0YW5jZW9mIEF0ZUVkaXRvclJlZikge1xuICAgICAgcmV0dXJuIHZhbC5lZGl0b3I7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXQodmFsKT8uZWRpdG9yIHx8IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH0pO1xuXG4gIC8vIFRhYmxlIG9mIENvbnRlbnRzIGl0ZW1zXG4gIHJlYWRvbmx5IGl0ZW1zID0gc2lnbmFsPEF0ZVRvY0l0ZW1bXT4oW10pO1xuXG4gIC8vIERpc3RpbmN0IG1vdXNlIGhvdmVyIGFuZCBrZXlib2FyZCBmb2N1cyBzdGF0ZSB0cmFja2luZ1xuICBpc01vdXNlSG92ZXJlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGlzRm9jdXNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGlzRXhwYW5kZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzTW91c2VIb3ZlcmVkKCkgfHwgdGhpcy5pc0ZvY3VzZWQoKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gUmVhY3Qgc3RyaWN0bHkgdG8gZWRpdG9yIGluc3RhbmNlIGNoYW5nZXMgd2l0aG91dCB0cmFja2luZyBpbnRlcm5hbCBzaWduYWwgdXBkYXRlc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICBpZiAoZWRpdG9yKSB7XG4gICAgICAgICAgdGhpcy5iaW5kRWRpdG9yRXZlbnRzKGVkaXRvcik7XG4gICAgICAgICAgdGhpcy51cGRhdGVIZWFkaW5ncyhlZGl0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy51bmJpbmRFZGl0b3JFdmVudHMoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwid2luZG93OnNjcm9sbFwiLCBbXSlcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW10pXG4gIG9uU2Nyb2xsKCkge1xuICAgIHRoaXMuY2hlY2tBY3RpdmVIZWFkaW5nKCk7XG4gIH1cblxuICAvLyBIYW5kbGUgbW91c2UgaG92ZXIgc3RhdGUgaW5kZXBlbmRlbnRseVxuICBzZXRNb3VzZUhvdmVyKGhvdmVyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzTW91c2VIb3ZlcmVkLnNldChob3ZlcmVkKTtcbiAgfVxuXG4gIC8vIEhhbmRsZSBrZXlib2FyZCBmb2N1cyBzdGF0ZSBpbmRlcGVuZGVudGx5XG4gIHNldEZvY3VzZWQoZm9jdXNlZDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNGb2N1c2VkLnNldChmb2N1c2VkKTtcbiAgfVxuXG4gIC8vIE5hdmlnYXRlIHRvIGhlYWRpbmcgb24gY2xpY2tcbiAgc2Nyb2xsVG9IZWFkaW5nKGl0ZW06IEF0ZVRvY0l0ZW0sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMucmVzb2x2ZWRFZGl0b3IoKTtcbiAgICBpZiAoIWVkaXRvciB8fCAhZWRpdG9yLnZpZXcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gMS4gUG9zaXRpb24gY3Vyc29yIGluc2lkZSB0aGUgaGVhZGluZyB0ZXh0IChpdGVtLnBvcyArIDEgcG9pbnRzIHRvIGlubGluZSB0ZXh0KVxuICAgICAgY29uc3QgdGFyZ2V0UG9zID0gTWF0aC5taW4oaXRlbS5wb3MgKyAxLCBlZGl0b3Iuc3RhdGUuZG9jLmNvbnRlbnQuc2l6ZSk7XG4gICAgICBlZGl0b3IuY29tbWFuZHMuc2V0VGV4dFNlbGVjdGlvbih0YXJnZXRQb3MpO1xuICAgICAgZWRpdG9yLmNvbW1hbmRzLmZvY3VzKCk7XG4gICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgIC8vIFNhZmUtZ3VhcmQgYWdhaW5zdCBwb3NpdGlvbiBzZWxlY3Rpb24gZXJyb3JzXG4gICAgfVxuXG4gICAgLy8gMi4gU21vb3RobHkgc2Nyb2xsIERPTSBub2RlIGludG8gdmlld1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZG9tTm9kZSA9IGVkaXRvci52aWV3Lm5vZGVET00oaXRlbS5wb3MpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoZG9tTm9kZSkge1xuICAgICAgICAgIGRvbU5vZGUuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogXCJzbW9vdGhcIiwgYmxvY2s6IFwic3RhcnRcIiB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgICAgLy8gU2FmZS1ndWFyZFxuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfVxuXG4gIHByaXZhdGUgYmluZEVkaXRvckV2ZW50cyhlZGl0b3I6IEVkaXRvcikge1xuICAgIHRoaXMudW5iaW5kRWRpdG9yRXZlbnRzKGVkaXRvcik7XG4gICAgZWRpdG9yLm9uKFwidXBkYXRlXCIsIHRoaXMub25FZGl0b3JVcGRhdGUpO1xuICAgIGVkaXRvci5vbihcInNlbGVjdGlvblVwZGF0ZVwiLCB0aGlzLm9uRWRpdG9yVXBkYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5iaW5kRWRpdG9yRXZlbnRzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgZWRpdG9yLm9mZihcInVwZGF0ZVwiLCB0aGlzLm9uRWRpdG9yVXBkYXRlKTtcbiAgICBlZGl0b3Iub2ZmKFwic2VsZWN0aW9uVXBkYXRlXCIsIHRoaXMub25FZGl0b3JVcGRhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvbkVkaXRvclVwZGF0ZSA9ICgpID0+IHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy51cGRhdGVIZWFkaW5ncyhlZGl0b3IpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHVwZGF0ZUhlYWRpbmdzKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgY29uc3QgbmV4dEl0ZW1zOiBBdGVUb2NJdGVtW10gPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICBlZGl0b3Iuc3RhdGUuZG9jLmRlc2NlbmRhbnRzKChub2RlLCBwb3MpID0+IHtcbiAgICAgICAgaWYgKG5vZGUudHlwZS5uYW1lID09PSBcImhlYWRpbmdcIikge1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBub2RlLnRleHRDb250ZW50LnRyaW0oKTtcbiAgICAgICAgICBjb25zdCBsZXZlbCA9IG5vZGUuYXR0cnNbXCJsZXZlbFwiXSB8fCAxO1xuXG4gICAgICAgICAgY29uc3QgbWF4RGVwdGhMZXZlbCA9IHRoaXMubWF4RGVwdGgoKTtcbiAgICAgICAgICBpZiAodGV4dCAmJiBsZXZlbCA8PSBtYXhEZXB0aExldmVsKSB7XG4gICAgICAgICAgICBuZXh0SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICBwb3MsXG4gICAgICAgICAgICAgIGlkOiBgaGVhZGluZy0ke3Bvc31gLFxuICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChfZSkge1xuICAgICAgLy8gU2FmZSBndWFyZCBhZ2FpbnN0IGRvY3VtZW50IGFjY2VzcyBpc3N1ZXNcbiAgICB9XG5cbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5pdGVtcy5zZXQobmV4dEl0ZW1zKTtcbiAgICAgIHRoaXMuY2hlY2tBY3RpdmVIZWFkaW5nKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQWN0aXZlSGVhZGluZygpIHtcbiAgICAvLyBBY3RpdmUgaGVhZGluZyBzY3JvbGwgdHJhY2tpbmcgb25seSBhcHBsaWVzIHRvIGZsb2F0aW5nIFRPQyBtb2RlXG4gICAgaWYgKCF0aGlzLmZsb2F0aW5nKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRvci52aWV3KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtcyA9IHRoaXMuaXRlbXMoKTtcbiAgICAgIGlmIChjdXJyZW50SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGVhZGluZ3NXaXRoRG9tID0gY3VycmVudEl0ZW1zXG4gICAgICAgIC5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRvbSA9IGVkaXRvci52aWV3Lm5vZGVET00oaXRlbS5wb3MpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgcmV0dXJuIHsgaXRlbSwgZG9tIH07XG4gICAgICAgICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGl0ZW0sIGRvbTogbnVsbCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigoZW50cnkpOiBlbnRyeSBpcyB7IGl0ZW06IEF0ZVRvY0l0ZW07IGRvbTogSFRNTEVsZW1lbnQgfSA9PiBlbnRyeS5kb20gIT09IG51bGwpO1xuXG4gICAgICBpZiAoaGVhZGluZ3NXaXRoRG9tLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiA4MDA7XG4gICAgICBsZXQgYWN0aXZlSXRlbTogQXRlVG9jSXRlbSB8IG51bGwgPSBudWxsO1xuXG4gICAgICBmb3IgKGxldCBpID0gaGVhZGluZ3NXaXRoRG9tLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IHsgaXRlbSwgZG9tIH0gPSBoZWFkaW5nc1dpdGhEb21baV07XG4gICAgICAgIGNvbnN0IHJlY3QgPSBkb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKHJlY3QudG9wIDw9IHdpbmRvd0hlaWdodCAqIDAuMzUpIHtcbiAgICAgICAgICBhY3RpdmVJdGVtID0gaXRlbTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWFjdGl2ZUl0ZW0gJiYgaGVhZGluZ3NXaXRoRG9tLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYWN0aXZlSXRlbSA9IGhlYWRpbmdzV2l0aERvbVswXS5pdGVtO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICBjb25zdCB1cGRhdGVkID0gY3VycmVudEl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBhY3RpdmU6IGl0ZW0uaWQgPT09IGFjdGl2ZUl0ZW0hLmlkLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3QgaXNEaWZmZXJlbnQgPSB1cGRhdGVkLnNvbWUoKGl0ZW0sIGlkeCkgPT4gaXRlbS5hY3RpdmUgIT09IGN1cnJlbnRJdGVtc1tpZHhdLmFjdGl2ZSk7XG4gICAgICAgIGlmIChpc0RpZmZlcmVudCkge1xuICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KHVwZGF0ZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
385
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtb2YtY29udGVudHMvYXRlLXRhYmxlLW9mLWNvbnRlbnRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULHVCQUF1QixFQUV2QixZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBSWpFOzs7O0dBSUc7QUE0WEgsTUFBTSxPQUFPLDJCQUEyQjtJQXVDdEMsa0VBQWtFO0lBQ2xFLFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFDZCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxFQUFFLENBQUM7WUFDWixLQUFLLENBQUM7Z0JBQ0osT0FBTyxFQUFFLENBQUM7WUFDWixLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLENBQUM7WUFDWCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLENBQUM7WUFDWCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLENBQUM7WUFDWDtnQkFDRSxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDO0lBa0NEO1FBeEZBLHFFQUFxRTtRQUNyRSxXQUFNLEdBQUcsS0FBSyxDQUFvRCxJQUFJLENBQUMsQ0FBQztRQUV4RSxpRUFBaUU7UUFD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QyxDQUFDO29CQUN4QyxHQUFHLElBQUk7b0JBQ1AsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssVUFBVyxDQUFDLEVBQUU7aUJBQ25DLENBQUMsQ0FBQyxDQUFDO2dCQUVKLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUYsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTdRVSwyQkFBMkI7bUdBQTNCLDJCQUEyQiw2bERBaFg1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RFQ7OzRGQWtUVSwyQkFBMkI7a0JBM1h2QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsRUFBRSxtQkFDTSx1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLCtCQUErQixFQUFFLFlBQVk7d0JBQzdDLGlDQUFpQyxFQUFFLG9DQUFvQzt3QkFDdkUsK0JBQStCLEVBQUUsNkNBQTZDO3dCQUM5RSw0QkFBNEIsRUFBRSwwQ0FBMEM7cUJBQ3pFLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOERUO3dEQW1hRCxRQUFRO3NCQUZQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUU7O3NCQUNoQyxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIHVudHJhY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uRGVzdHJveSxcbiAgSG9zdExpc3RlbmVyLFxuICBib29sZWFuQXR0cmlidXRlLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yUmVmIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hdGUtZWRpdG9yLXJlZlwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yUmVnaXN0cnkgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXRlLWVkaXRvci1yZWdpc3RyeS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBdGVJMThuU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdGUtaTE4bi5zZXJ2aWNlXCI7XG5cbmltcG9ydCB7IEF0ZVRvY0l0ZW0sIEF0ZVRvY1ZhcmlhbnQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2F0ZS10b2MubW9kZWxcIjtcblxuLyoqXG4gKiBUYWJsZSBvZiBDb250ZW50cyBDb21wb25lbnQgKE5vdGlvbi1zdHlsZSlcbiAqIER5bmFtaWNhbGx5IGV4dHJhY3RzIGhlYWRpbmdzIGZyb20gdGhlIGFjdGl2ZSBlZGl0b3IgYW5kIGRpc3BsYXlzIHRoZW0uXG4gKiBDb25maWd1cmFibGUgdmlhIGlucHV0cyAoZmxvYXRpbmcsIHBvc2l0aW9uLCB2YXJpYW50cywgaG92ZXIgZXhwYW5zaW9uKSBhbmQgQ1NTIHZhcmlhYmxlcy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF0ZS10YWJsZS1vZi1jb250ZW50c1wiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBcIltjbGFzcy5hdGUtdG9jLWhvc3QtZmxvYXRpbmddXCI6IFwiZmxvYXRpbmcoKVwiLFxuICAgIFwiW3N0eWxlLi0tYXRlLXRvYy1wb3NpdGlvbi1tb2RlXVwiOiBcImZsb2F0aW5nKCkgPyBwb3NpdGlvbk1vZGUoKSA6IG51bGxcIixcbiAgICBcIltjbGFzcy5hdGUtdG9jLWhvc3QtYWJzb2x1dGVdXCI6IFwiZmxvYXRpbmcoKSAmJiBwb3NpdGlvbk1vZGUoKSA9PT0gJ2Fic29sdXRlJ1wiLFxuICAgIFwiW2NsYXNzLmF0ZS10b2MtaG9zdC1maXhlZF1cIjogXCJmbG9hdGluZygpICYmIHBvc2l0aW9uTW9kZSgpID09PSAnZml4ZWQnXCIsXG4gIH0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJhdGUtdG9jLXdyYXBwZXJcIlxuICAgICAgW2NsYXNzLmF0ZS10b2MtZmxvYXRpbmddPVwiZmxvYXRpbmcoKVwiXG4gICAgICBbY2xhc3MuYXRlLXRvYy1wb3NpdGlvbi1hYnNvbHV0ZV09XCJmbG9hdGluZygpICYmIHBvc2l0aW9uTW9kZSgpID09PSAnYWJzb2x1dGUnXCJcbiAgICAgIFtjbGFzcy5hdGUtdG9jLXBvc2l0aW9uLWZpeGVkXT1cImZsb2F0aW5nKCkgJiYgcG9zaXRpb25Nb2RlKCkgPT09ICdmaXhlZCdcIlxuICAgICAgW2NsYXNzLmF0ZS10b2MtcG9zaXRpb24tbGVmdF09XCJwb3NpdGlvbigpID09PSAnbGVmdCdcIlxuICAgICAgW2NsYXNzLmF0ZS10b2MtcG9zaXRpb24tcmlnaHRdPVwicG9zaXRpb24oKSA9PT0gJ3JpZ2h0J1wiXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRNb3VzZUhvdmVyKHRydWUpXCJcbiAgICAgIChtb3VzZWxlYXZlKT1cInNldE1vdXNlSG92ZXIoZmFsc2UpXCJcbiAgICAgIChmb2N1c2luKT1cInNldEZvY3VzZWQodHJ1ZSlcIlxuICAgICAgKGZvY3Vzb3V0KT1cInNldEZvY3VzZWQoZmFsc2UpXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYXRlLXRvY1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLWZsb2F0aW5nXT1cImZsb2F0aW5nKClcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0XT1cInBvc2l0aW9uKCkgPT09ICdsZWZ0J1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLXBvc2l0aW9uLXJpZ2h0XT1cInBvc2l0aW9uKCkgPT09ICdyaWdodCdcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy12YXJpYW50LWNhcmRdPVwidmFyaWFudCgpID09PSAnY2FyZCdcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy12YXJpYW50LXRyYW5zcGFyZW50XT1cInZhcmlhbnQoKSA9PT0gJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLXZhcmlhbnQtbWluaW1hbF09XCJ2YXJpYW50KCkgPT09ICdtaW5pbWFsJ1wiXG4gICAgICAgIFtjbGFzcy5hdGUtdG9jLWhvdmVyLWV4cGFuZF09XCJmbG9hdGluZygpICYmIGhvdmVyRXhwYW5kKClcIlxuICAgICAgICBbY2xhc3MuYXRlLXRvYy1ob3ZlcmVkXT1cImZsb2F0aW5nKCkgJiYgaG92ZXJFeHBhbmQoKSAmJiBpc0V4cGFuZGVkKClcIlxuICAgICAgICByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJUYWJsZSBvZiBDb250ZW50c1wiPlxuICAgICAgICBAaWYgKGl0ZW1zKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIEBpZiAoc2hvd1RpdGxlKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdGUtdG9jLWhlYWRlclwiPnt7IGhlYWRlclRpdGxlKCkgfX08L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF0ZS10b2MtbGlzdFwiPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF0ZS10b2MtaXRlbVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmF0ZS10b2MtYWN0aXZlXT1cIml0ZW0uYWN0aXZlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXRlbS5hY3RpdmUgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWxldmVsXT1cIml0ZW0ubGV2ZWxcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxUb0hlYWRpbmcoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGV4dFwiPlxuICAgICAgICAgICAgICAgIDwhLS0gUGVyZmVjdCBuYXRpdmUgdmVjdG9yIFNWRyBkYXNoIHdpdGggbGV2ZWwtYWRhcHRlZCB2aWV3Qm94ICYgd2lkdGggLS0+XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiZGFzaFdpZHRoKGl0ZW0ubGV2ZWwpXCJcbiAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjJcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIudmlld0JveF09XCInMCAwICcgKyBkYXNoV2lkdGgoaXRlbS5sZXZlbCkgKyAnIDInXCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdGUtdG9jLWRhc2hcIj5cbiAgICAgICAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImRhc2hXaWR0aChpdGVtLmxldmVsKVwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICByeD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICByeT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBGdWxsIGhlYWRpbmcgdGV4dCAtLT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF0ZS10b2MtdGV4dFwiPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAvKiBPdXRlciBIaXRib3ggQ29udGFpbmVyIFBvc2l0aW9uaW5nICovXG4gICAgICAuYXRlLXRvYy13cmFwcGVyLmF0ZS10b2MtZmxvYXRpbmcge1xuICAgICAgICBwb3NpdGlvbjogdmFyKC0tYXRlLXRvYy1wb3NpdGlvbi1tb2RlLCBmaXhlZCk7XG4gICAgICAgIHRvcDogdmFyKC0tYXRlLXRvYy10b3AsIDUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgei1pbmRleDogdmFyKC0tYXRlLXRvYy16LWluZGV4LCA5NSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLXdyYXBwZXIuYXRlLXRvYy1mbG9hdGluZy5hdGUtdG9jLXBvc2l0aW9uLWFic29sdXRlLFxuICAgICAgOmhvc3QoLmF0ZS10b2MtaG9zdC1hYnNvbHV0ZSkgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy13cmFwcGVyLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1wb3NpdGlvbi1maXhlZCxcbiAgICAgIDpob3N0KC5hdGUtdG9jLWhvc3QtZml4ZWQpIC5hdGUtdG9jLXdyYXBwZXIuYXRlLXRvYy1mbG9hdGluZyB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQge1xuICAgICAgICByaWdodDogdmFyKC0tYXRlLXRvYy1yaWdodCwgMnJlbSk7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZywgMTZweCk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLXZlcnRpY2FsLCA4cHgpO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZy12ZXJ0aWNhbCwgOHB4KTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2Mtd3JhcHBlci5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtcG9zaXRpb24tbGVmdCB7XG4gICAgICAgIGxlZnQ6IHZhcigtLWF0ZS10b2MtbGVmdCwgMnJlbSk7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1hdGUtdG9jLWhpdGJveC1wYWRkaW5nLCAxNnB4KTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tYXRlLXRvYy1oaXRib3gtcGFkZGluZy12ZXJ0aWNhbCwgOHB4KTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLWF0ZS10b2MtaGl0Ym94LXBhZGRpbmctdmVydGljYWwsIDhweCk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgICAgfVxuXG4gICAgICAvKiBGbG9hdGluZyBNb2RlIENvbnRhaW5lciBQb3NpdGlvbmluZyAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZyB7XG4gICAgICAgIG1heC1oZWlnaHQ6IHZhcigtLWF0ZS10b2MtbWF4LWhlaWdodCwgNDAwcHgpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgfVxuXG4gICAgICAvKiBGbG9hdGluZyBtb2RlIHdpZHRoICYgcGFkZGluZyAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZzpub3QoLmF0ZS10b2MtaG92ZXItZXhwYW5kKSxcbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtZmxvYXRpbmcuYXRlLXRvYy1ob3Zlci1leHBhbmQ6aG92ZXIsXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWZsb2F0aW5nLmF0ZS10b2MtaG92ZXItZXhwYW5kLmF0ZS10b2MtaG92ZXJlZCB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1hdGUtdG9jLXdpZHRoLCAyNDBweCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS10b2MtYm9yZGVyLXJhZGl1cywgdmFyKC0tYXRlLWJvcmRlci1yYWRpdXMsIDE2cHgpKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLXRvYy1wYWRkaW5nKTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1mbG9hdGluZy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZCk6bm90KDpob3Zlcikge1xuICAgICAgICB3aWR0aDogdmFyKC0tYXRlLXRvYy1jb2xsYXBzZWQtd2lkdGgsIDMycHgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtdG9jLWNvbGxhcHNlZC1yYWRpdXMsIDE2cHgpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1hdGUtdG9jLXBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICAvKiBWYXJpYW50OiBjYXJkICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLXZhcmlhbnQtY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b2MtYmcsIHZhcigtLWF0ZS1zdXJmYWNlLCAjZmZmZmZmKSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWF0ZS10b2MtYm9yZGVyLCB2YXIoLS1hdGUtYm9yZGVyLCAjZTJlOGYwKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS10b2MtYm9yZGVyLXJhZGl1cywgdmFyKC0tYXRlLWJvcmRlci1yYWRpdXMsIDEycHgpKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tYXRlLXRvYy1zaGFkb3csIDAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjA2KSk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLWF0ZS10b2MtcGFkZGluZyk7XG4gICAgICB9XG5cbiAgICAgIC8qIFZhcmlhbnQ6IG1pbmltYWwgKi9cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtdmFyaWFudC1taW5pbWFsIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtdG9jLWJvcmRlci1yYWRpdXMsIHZhcigtLWF0ZS1ib3JkZXItcmFkaXVzLCAxMnB4KSk7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy12YXJpYW50LW1pbmltYWw6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtdG9jLWhvdmVyLWJnLCB2YXIoLS1hdGUtc3VyZmFjZSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWF0ZS10b2MtaG92ZXItYm9yZGVyLCB2YXIoLS1hdGUtYm9yZGVyLCAjZTJlOGYwKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLWF0ZS10b2MtaG92ZXItc2hhZG93LCAwIDRweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4wNikpO1xuICAgICAgfVxuXG4gICAgICAvKiBWYXJpYW50OiB0cmFuc3BhcmVudCAqL1xuICAgICAgLmF0ZS10b2MuYXRlLXRvYy12YXJpYW50LXRyYW5zcGFyZW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cblxuICAgICAgLyogSGVhZGVyIHN0eWxpbmcgKi9cbiAgICAgIC5hdGUtdG9jLWhlYWRlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10ZXh0LW11dGVkLCAjOWNhM2FmKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLyogTGlzdCBjb250YWluZXIgKi9cbiAgICAgIC5hdGUtdG9jLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLWF0ZS10b2MtdGV4dC1nYXAsIHZhcigtLWF0ZS10b2MtZ2FwLCAycHgpKTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0cmFuc2l0aW9uOiBnYXAgMC4ycyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAvKiBCYXNlIEl0ZW0gKEV4cGFuZGVkIC8gVGV4dCBtb2RlIGRlZmF1bHQpICovXG4gICAgICAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1hdGUtdG9jLWl0ZW0taG92ZXItaGVpZ2h0LCAyMnB4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1jb2xvciwgdmFyKC0tYXRlLXRleHQtc2Vjb25kYXJ5LCAjNjQ3NDhiKSk7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS1zdWItYm9yZGVyLXJhZGl1cywgOHB4KTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MtaXRlbTpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDFweDtcbiAgICAgIH1cblxuICAgICAgLyogTGV2ZWwgSW5kZW50YXRpb25zIGluIFRleHQgbW9kZSAqL1xuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiMVwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xuICAgICAgfVxuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiMlwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTZweDtcbiAgICAgIH1cbiAgICAgIC5hdGUtdG9jLWl0ZW1bZGF0YS1sZXZlbD1cIjNcIl0ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XG4gICAgICB9XG4gICAgICAuYXRlLXRvYy1pdGVtW2RhdGEtbGV2ZWw9XCI0XCJdIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzMnB4O1xuICAgICAgfVxuICAgICAgLmF0ZS10b2MtaXRlbVtkYXRhLWxldmVsPVwiNVwiXSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNDBweDtcbiAgICAgIH1cbiAgICAgIC5hdGUtdG9jLWl0ZW1bZGF0YS1sZXZlbD1cIjZcIl0ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDQ4cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIEl0ZW0gaG92ZXIgb3ZlcmxheSAmIGFjdGl2ZSBzdGF0ZSAoRXhwYW5kZWQgLyBUZXh0IG1vZGUpICovXG4gICAgICAuYXRlLXRvYy1pdGVtOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtc3ViLWJvcmRlci1yYWRpdXMsIDhweCk7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy1pdGVtOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1hY3RpdmUtY29sb3IsIHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLCB0cmFuc3BhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLWl0ZW06aG92ZXI6OmJlZm9yZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuMTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MtaXRlbS5hdGUtdG9jLWFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdG9vbGJhci1idXR0b24tYWN0aXZlLWNvbG9yLCB2YXIoLS1hdGUtcHJpbWFyeSwgIzI1NjNlYikpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoXG4gICAgICAgICAgLS1hdGUtdG9vbGJhci1idXR0b24tYWN0aXZlLWJhY2tncm91bmQsXG4gICAgICAgICAgdmFyKC0tYXRlLXByaW1hcnktbGlnaHQsIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1hdGUtcHJpbWFyeSwgIzI1NjNlYiksIHRyYW5zcGFyZW50IDkwJSkpXG4gICAgICAgICk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICB9XG5cbiAgICAgIC8qIEhlYWRpbmcgVGV4dCBzdHlsaW5nICovXG4gICAgICAuYXRlLXRvYy10ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIG1heC13aWR0aDogMjUwcHg7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIG9wYWNpdHkgMC4yNXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpLFxuICAgICAgICAgIG1heC13aWR0aCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMC4yNXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpLFxuICAgICAgICAgIG1hcmdpbiAwLjI1cyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAvKiBTVkcgUmVjdCBEYXNoIHN0eWxpbmcgKEhpZGRlbiBpbiBUZXh0IG1vZGUpICovXG4gICAgICAuYXRlLXRvYy1kYXNoIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgaGVpZ2h0OiAzcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdG9jLWRhc2gtY29sb3IsIHZhcigtLWF0ZS1ib3JkZXIsICNjYmQ1ZTEpKTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgICB9XG5cbiAgICAgIC8qIC0tLSBDT0xMQVBTRUQgTk9USU9OIE1PREUgKERhc2hlcyBvbmx5LCB3aGVuIGhvdmVyLWV4cGFuZCBpcyBhY3RpdmUgJiBub3QgaG92ZXJlZCkgLS0tICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZCkgLmF0ZS10b2MtaGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWRhc2gge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1hdGUtdG9jLWl0ZW0taGVpZ2h0LCAxOHB4KTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLWl0ZW06OmJlZm9yZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kOm5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtOmhvdmVyIC5hdGUtdG9jLWRhc2gsXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtaG92ZXJlZClcbiAgICAgICAgLmF0ZS10b2MtaXRlbS5hdGUtdG9jLWFjdGl2ZVxuICAgICAgICAuYXRlLXRvYy1kYXNoIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLyogRGlyZWN0aW9uICYgdGV4dCBjb2xsYXBzZSBmb3IgQ29sbGFwc2VkIFJJR0hUIHBvc2l0aW9uICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZC5hdGUtdG9jLXBvc2l0aW9uLXJpZ2h0Om5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtdG9jLmF0ZS10b2MtaG92ZXItZXhwYW5kLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQ6bm90KC5hdGUtdG9jLWhvdmVyZWQpIC5hdGUtdG9jLXRleHQge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC8qIERpcmVjdGlvbiAmIHRleHQgY29sbGFwc2UgZm9yIENvbGxhcHNlZCBMRUZUIHBvc2l0aW9uICovXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQpOm5vdCguYXRlLXRvYy1ob3ZlcmVkKVxuICAgICAgICAuYXRlLXRvYy1pdGVtLFxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0Om5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy1pdGVtIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgfVxuXG4gICAgICAuYXRlLXRvYy5hdGUtdG9jLWhvdmVyLWV4cGFuZDpub3QoLmF0ZS10b2MtcG9zaXRpb24tcmlnaHQpOm5vdCguYXRlLXRvYy1ob3ZlcmVkKVxuICAgICAgICAuYXRlLXRvYy10ZXh0LFxuICAgICAgLmF0ZS10b2MuYXRlLXRvYy1ob3Zlci1leHBhbmQuYXRlLXRvYy1wb3NpdGlvbi1sZWZ0Om5vdCguYXRlLXRvYy1ob3ZlcmVkKSAuYXRlLXRvYy10ZXh0IHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgbWF4LXdpZHRoOiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTRweCk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF0ZVRhYmxlT2ZDb250ZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8vIElucHV0IGFjY2VwdHMgcmF3IEVkaXRvciwgQXRlRWRpdG9yUmVmLCBvciBJRCBvZiByZWdpc3RlcmVkIGVkaXRvclxuICBlZGl0b3IgPSBpbnB1dDxFZGl0b3IgfCBBdGVFZGl0b3JSZWYgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPihudWxsKTtcblxuICAvLyBPcHRpb25hbCBjdXN0b20gdGl0bGUgKGlmIG5vdCBwcm92aWRlZCwgdXNlcyBpMThuIHRyYW5zbGF0aW9uKVxuICB0aXRsZSA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8vIFdoZXRoZXIgdG8gc2hvdyB0aGUgaGVhZGVyIHRpdGxlXG4gIHNob3dUaXRsZSA9IGlucHV0KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8vIExheW91dCBtb2RlOiBmbG9hdGluZyBvbiBmaXhlZCBwb3NpdGlvbiBvciBpbmxpbmUgaW5zaWRlIHBhcmVudCBjb250YWluZXJcbiAgZmxvYXRpbmcgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvLyBQb3NpdGlvbmluZyBtb2RlIHdoZW4gZmxvYXRpbmc6ICdmaXhlZCcgKHJlbGF0aXZlIHRvIHZpZXdwb3J0LCBkZWZhdWx0KSBvciAnYWJzb2x1dGUnIChyZWxhdGl2ZSB0byBwYXJlbnQgY29udGFpbmVyKVxuICBwb3NpdGlvbk1vZGUgPSBpbnB1dDxcImFic29sdXRlXCIgfCBcImZpeGVkXCI+KFwiZml4ZWRcIik7XG5cbiAgLy8gRmxvYXRpbmcgcG9zaXRpb246ICdyaWdodCcgfCAnbGVmdCdcbiAgcG9zaXRpb24gPSBpbnB1dDxcImxlZnRcIiB8IFwicmlnaHRcIj4oXCJyaWdodFwiKTtcblxuICAvLyBWaXN1YWwgdmFyaWFudDogJ21pbmltYWwnIHwgJ2NhcmQnIHwgJ3RyYW5zcGFyZW50J1xuICB2YXJpYW50ID0gaW5wdXQ8QXRlVG9jVmFyaWFudD4oXCJtaW5pbWFsXCIpO1xuXG4gIC8vIE5vdGlvbi1zdHlsZSBob3ZlciBleHBhbnNpb24gKGNvbGxhcHNlcyB0ZXh0IGludG8gZGFzaGVzIHVudGlsIGhvdmVyZWQpXG4gIGhvdmVyRXhwYW5kID0gaW5wdXQodHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLy8gTWF4aW11bSBoZWFkaW5nIGxldmVsIGRlcHRoIHRvIGluY2x1ZGUgKDEtNiwgZGVmYXVsdDogNilcbiAgbWF4RGVwdGggPSBpbnB1dDxudW1iZXIsIG51bWJlciB8IHN0cmluZz4oNiwge1xuICAgIHRyYW5zZm9ybTogKHY6IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcGFyc2VkID0gdHlwZW9mIHYgPT09IFwic3RyaW5nXCIgPyBwYXJzZUludCh2LCAxMCkgOiB2O1xuICAgICAgaWYgKGlzTmFOKHBhcnNlZCkpIHtcbiAgICAgICAgcmV0dXJuIDY7XG4gICAgICB9XG4gICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoMSwgcGFyc2VkKSwgNik7XG4gICAgfSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWdpc3RyeSA9IGluamVjdChBdGVFZGl0b3JSZWdpc3RyeSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChBdGVJMThuU2VydmljZSk7XG5cbiAgLy8gSGVscGVyIG1ldGhvZCBmb3IgZXhhY3QgbmF0aXZlIFNWRyBkYXNoIHdpZHRoIHBlciBoZWFkaW5nIGxldmVsXG4gIGRhc2hXaWR0aChsZXZlbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKGxldmVsKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiAxNjtcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gODtcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgcmV0dXJuIDY7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIHJldHVybiA0O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDM7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29tcHV0ZWQgaGVhZGVyIHRpdGxlIHdpdGggZmFsbGJhY2sgdG8gaTE4blxuICByZWFkb25seSBoZWFkZXJUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjdXN0b20gPSB0aGlzLnRpdGxlKCk7XG4gICAgaWYgKGN1c3RvbSAhPT0gbnVsbCAmJiBjdXN0b20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGN1c3RvbTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaTE4bi5lZGl0b3IoKS50YWJsZU9mQ29udGVudHM7XG4gIH0pO1xuXG4gIC8vIFJlc29sdmVkIGVkaXRvciBpbnN0YW5jZVxuICByZWFkb25seSByZXNvbHZlZEVkaXRvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2YWwgPSB0aGlzLmVkaXRvcigpO1xuICAgIGlmICghdmFsKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5hY3RpdmVFZGl0b3IoKT8uZWRpdG9yIHx8IG51bGw7XG4gICAgfVxuICAgIGlmICh2YWwgaW5zdGFuY2VvZiBBdGVFZGl0b3JSZWYpIHtcbiAgICAgIHJldHVybiB2YWwuZWRpdG9yO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cnkuZ2V0KHZhbCk/LmVkaXRvciB8fCBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xuICB9KTtcblxuICAvLyBUYWJsZSBvZiBDb250ZW50cyBpdGVtc1xuICByZWFkb25seSBpdGVtcyA9IHNpZ25hbDxBdGVUb2NJdGVtW10+KFtdKTtcblxuICAvLyBEaXN0aW5jdCBtb3VzZSBob3ZlciBhbmQga2V5Ym9hcmQgZm9jdXMgc3RhdGUgdHJhY2tpbmdcbiAgaXNNb3VzZUhvdmVyZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0ZvY3VzZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBpc0V4cGFuZGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pc01vdXNlSG92ZXJlZCgpIHx8IHRoaXMuaXNGb2N1c2VkKCkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIFJlYWN0IHN0cmljdGx5IHRvIGVkaXRvciBpbnN0YW5jZSBjaGFuZ2VzIHdpdGhvdXQgdHJhY2tpbmcgaW50ZXJuYWwgc2lnbmFsIHVwZGF0ZXNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZWRpdG9yID0gdGhpcy5yZXNvbHZlZEVkaXRvcigpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgaWYgKGVkaXRvcikge1xuICAgICAgICAgIHRoaXMuYmluZEVkaXRvckV2ZW50cyhlZGl0b3IpO1xuICAgICAgICAgIHRoaXMudXBkYXRlSGVhZGluZ3MoZWRpdG9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldChbXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5yZXNvbHZlZEVkaXRvcigpO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMudW5iaW5kRWRpdG9yRXZlbnRzKGVkaXRvcik7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpzY3JvbGxcIiwgW10pXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIsIFtdKVxuICBvblNjcm9sbCgpIHtcbiAgICB0aGlzLmNoZWNrQWN0aXZlSGVhZGluZygpO1xuICB9XG5cbiAgLy8gSGFuZGxlIG1vdXNlIGhvdmVyIHN0YXRlIGluZGVwZW5kZW50bHlcbiAgc2V0TW91c2VIb3Zlcihob3ZlcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc01vdXNlSG92ZXJlZC5zZXQoaG92ZXJlZCk7XG4gIH1cblxuICAvLyBIYW5kbGUga2V5Ym9hcmQgZm9jdXMgc3RhdGUgaW5kZXBlbmRlbnRseVxuICBzZXRGb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzRm9jdXNlZC5zZXQoZm9jdXNlZCk7XG4gIH1cblxuICAvLyBOYXZpZ2F0ZSB0byBoZWFkaW5nIG9uIGNsaWNrXG4gIHNjcm9sbFRvSGVhZGluZyhpdGVtOiBBdGVUb2NJdGVtLCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLnJlc29sdmVkRWRpdG9yKCk7XG4gICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRvci52aWV3KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIDEuIFBvc2l0aW9uIGN1cnNvciBpbnNpZGUgdGhlIGhlYWRpbmcgdGV4dCAoaXRlbS5wb3MgKyAxIHBvaW50cyB0byBpbmxpbmUgdGV4dClcbiAgICAgIGNvbnN0IHRhcmdldFBvcyA9IE1hdGgubWluKGl0ZW0ucG9zICsgMSwgZWRpdG9yLnN0YXRlLmRvYy5jb250ZW50LnNpemUpO1xuICAgICAgZWRpdG9yLmNvbW1hbmRzLnNldFRleHRTZWxlY3Rpb24odGFyZ2V0UG9zKTtcbiAgICAgIGVkaXRvci5jb21tYW5kcy5mb2N1cygpO1xuICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICAvLyBTYWZlLWd1YXJkIGFnYWluc3QgcG9zaXRpb24gc2VsZWN0aW9uIGVycm9yc1xuICAgIH1cblxuICAgIC8vIDIuIFNtb290aGx5IHNjcm9sbCBET00gbm9kZSBpbnRvIHZpZXdcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRvbU5vZGUgPSBlZGl0b3Iudmlldy5ub2RlRE9NKGl0ZW0ucG9zKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKGRvbU5vZGUpIHtcbiAgICAgICAgICBkb21Ob2RlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6IFwic21vb3RoXCIsIGJsb2NrOiBcInN0YXJ0XCIgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICAgIC8vIFNhZmUtZ3VhcmRcbiAgICAgIH1cbiAgICB9LCAxMCk7XG4gIH1cblxuICBwcml2YXRlIGJpbmRFZGl0b3JFdmVudHMoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICB0aGlzLnVuYmluZEVkaXRvckV2ZW50cyhlZGl0b3IpO1xuICAgIGVkaXRvci5vbihcInVwZGF0ZVwiLCB0aGlzLm9uRWRpdG9yVXBkYXRlKTtcbiAgICBlZGl0b3Iub24oXCJzZWxlY3Rpb25VcGRhdGVcIiwgdGhpcy5vbkVkaXRvclVwZGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIHVuYmluZEVkaXRvckV2ZW50cyhlZGl0b3I6IEVkaXRvcikge1xuICAgIGVkaXRvci5vZmYoXCJ1cGRhdGVcIiwgdGhpcy5vbkVkaXRvclVwZGF0ZSk7XG4gICAgZWRpdG9yLm9mZihcInNlbGVjdGlvblVwZGF0ZVwiLCB0aGlzLm9uRWRpdG9yVXBkYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgb25FZGl0b3JVcGRhdGUgPSAoKSA9PiB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5yZXNvbHZlZEVkaXRvcigpO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMudXBkYXRlSGVhZGluZ3MoZWRpdG9yKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSB1cGRhdGVIZWFkaW5ncyhlZGl0b3I6IEVkaXRvcikge1xuICAgIGNvbnN0IG5leHRJdGVtczogQXRlVG9jSXRlbVtdID0gW107XG5cbiAgICB0cnkge1xuICAgICAgZWRpdG9yLnN0YXRlLmRvYy5kZXNjZW5kYW50cygobm9kZSwgcG9zKSA9PiB7XG4gICAgICAgIGlmIChub2RlLnR5cGUubmFtZSA9PT0gXCJoZWFkaW5nXCIpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gbm9kZS50ZXh0Q29udGVudC50cmltKCk7XG4gICAgICAgICAgY29uc3QgbGV2ZWwgPSBub2RlLmF0dHJzW1wibGV2ZWxcIl0gfHwgMTtcblxuICAgICAgICAgIGNvbnN0IG1heERlcHRoTGV2ZWwgPSB0aGlzLm1heERlcHRoKCk7XG4gICAgICAgICAgaWYgKHRleHQgJiYgbGV2ZWwgPD0gbWF4RGVwdGhMZXZlbCkge1xuICAgICAgICAgICAgbmV4dEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgcG9zLFxuICAgICAgICAgICAgICBpZDogYGhlYWRpbmctJHtwb3N9YCxcbiAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgIC8vIFNhZmUgZ3VhcmQgYWdhaW5zdCBkb2N1bWVudCBhY2Nlc3MgaXNzdWVzXG4gICAgfVxuXG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIHRoaXMuaXRlbXMuc2V0KG5leHRJdGVtcyk7XG4gICAgICB0aGlzLmNoZWNrQWN0aXZlSGVhZGluZygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0FjdGl2ZUhlYWRpbmcoKSB7XG4gICAgLy8gQWN0aXZlIGhlYWRpbmcgc2Nyb2xsIHRyYWNraW5nIG9ubHkgYXBwbGllcyB0byBmbG9hdGluZyBUT0MgbW9kZVxuICAgIGlmICghdGhpcy5mbG9hdGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5yZXNvbHZlZEVkaXRvcigpO1xuICAgIGlmICghZWRpdG9yIHx8ICFlZGl0b3Iudmlldykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50SXRlbXMgPSB0aGlzLml0ZW1zKCk7XG4gICAgICBpZiAoY3VycmVudEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhlYWRpbmdzV2l0aERvbSA9IGN1cnJlbnRJdGVtc1xuICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkb20gPSBlZGl0b3Iudmlldy5ub2RlRE9NKGl0ZW0ucG9zKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIHJldHVybiB7IGl0ZW0sIGRvbSB9O1xuICAgICAgICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpdGVtLCBkb206IG51bGwgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKGVudHJ5KTogZW50cnkgaXMgeyBpdGVtOiBBdGVUb2NJdGVtOyBkb206IEhUTUxFbGVtZW50IH0gPT4gZW50cnkuZG9tICE9PSBudWxsKTtcblxuICAgICAgaWYgKGhlYWRpbmdzV2l0aERvbS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93LmlubmVySGVpZ2h0IDogODAwO1xuICAgICAgbGV0IGFjdGl2ZUl0ZW06IEF0ZVRvY0l0ZW0gfCBudWxsID0gbnVsbDtcblxuICAgICAgZm9yIChsZXQgaSA9IGhlYWRpbmdzV2l0aERvbS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCB7IGl0ZW0sIGRvbSB9ID0gaGVhZGluZ3NXaXRoRG9tW2ldO1xuICAgICAgICBjb25zdCByZWN0ID0gZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmIChyZWN0LnRvcCA8PSB3aW5kb3dIZWlnaHQgKiAwLjM1KSB7XG4gICAgICAgICAgYWN0aXZlSXRlbSA9IGl0ZW07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFhY3RpdmVJdGVtICYmIGhlYWRpbmdzV2l0aERvbS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFjdGl2ZUl0ZW0gPSBoZWFkaW5nc1dpdGhEb21bMF0uaXRlbTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IGN1cnJlbnRJdGVtcy5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgYWN0aXZlOiBpdGVtLmlkID09PSBhY3RpdmVJdGVtIS5pZCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IGlzRGlmZmVyZW50ID0gdXBkYXRlZC5zb21lKChpdGVtLCBpZHgpID0+IGl0ZW0uYWN0aXZlICE9PSBjdXJyZW50SXRlbXNbaWR4XS5hY3RpdmUpO1xuICAgICAgICBpZiAoaXNEaWZmZXJlbnQpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldCh1cGRhdGVkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Component, input, output, ChangeDetectionStrategy } from "@angular/core";
1
+ import { Component, input, output, ChangeDetectionStrategy, booleanAttribute } from "@angular/core";
2
2
  import { AteTooltipDirective } from "../../directives/ate-tooltip.directive";
3
3
  import * as i0 from "@angular/core";
4
4
  export class AteButtonComponent {
@@ -6,8 +6,8 @@ export class AteButtonComponent {
6
6
  // Inputs
7
7
  this.icon = input("");
8
8
  this.title = input.required();
9
- this.active = input(false);
10
- this.disabled = input(false);
9
+ this.active = input(false, { transform: booleanAttribute });
10
+ this.disabled = input(false, { transform: booleanAttribute });
11
11
  this.color = input();
12
12
  this.backgroundColor = input();
13
13
  this.variant = input("default");
@@ -88,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
88
88
  </button>
89
89
  `, styles: [".ate-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:var(--ate-sub-border-radius, 8px);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);color:var(--ate-toolbar-button-color, var(--ate-text-secondary));position:relative;overflow:hidden}.ate-button:before{content:\"\";position:absolute;inset:0;background:var(--ate-primary);opacity:0;transition:opacity .2s ease;border-radius:var(--ate-sub-border-radius, 8px)}.ate-button:hover:not(.has-custom-color){color:var(--ate-toolbar-button-active-color, var(--ate-primary));background:var(--ate-toolbar-button-hover-background, transparent);transform:translateY(-1px)}.ate-button.has-custom-color:hover:not(.has-custom-bg){background:var(--ate-toolbar-button-hover-background, transparent);transform:translateY(-1px)}.ate-button.has-custom-bg:hover{transform:translateY(-1px);filter:brightness(.9)}.ate-button:hover:before{opacity:.1}.ate-button:active{transform:translateY(0)}.ate-button.is-active:not(.has-custom-color){color:var(--ate-toolbar-button-active-color, var(--ate-primary));background:var(--ate-toolbar-button-active-background, var(--ate-primary-light))}.ate-button.is-active.has-custom-color{background:var(--ate-toolbar-button-active-background, var(--ate-primary-light))}.ate-button:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.ate-button .material-symbols-outlined{font-size:20px;position:relative;z-index:1}.ate-button .material-symbols-outlined.icon-small{font-size:16px}.ate-button .material-symbols-outlined.icon-medium{font-size:20px}.ate-button .material-symbols-outlined.icon-large{font-size:24px}.ate-button.text-button{width:auto;padding:0 12px;font-size:14px;font-weight:500;gap:8px}.ate-button.color-button{width:28px;height:28px;border-radius:50%;border:2px solid transparent;transition:all .2s ease}.ate-button.color-button:hover{border-color:var(--ate-border);transform:scale(1.1)}.ate-button.color-button.is-active{border-color:var(--ate-primary);box-shadow:0 0 0 2px var(--ate-primary-light)}.ate-button.danger{color:var(--ate-error-color, #ef4444)}.ate-button.danger:hover{color:var(--ate-error-color, #ef4444);background:var(--ate-error-bg, rgba(239, 68, 68, .1))}.ate-button.danger:before{background:var(--ate-error-color, #ef4444)}.ate-button.small{width:24px;height:24px}.ate-button.medium{width:32px;height:32px}.ate-button.large{width:40px;height:40px}@keyframes pulse{0%,to{box-shadow:0 0 0 0 var(--ate-primary-light-alpha)}50%{box-shadow:0 0 0 4px transparent}}.ate-button.is-active.pulse{animation:pulse 2s infinite}@media (max-width: 768px){.ate-button{width:32px;height:32px}.ate-button .material-symbols-outlined{font-size:18px}.ate-button.text-button{padding:0 8px;font-size:13px}}\n"] }]
90
90
  }] });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3VpL2F0ZS1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUF5TzdFLE1BQU0sT0FBTyxrQkFBa0I7SUE3Ti9CO1FBOE5FLFNBQVM7UUFDVCxTQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDakMsV0FBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLFVBQUssR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUN4QixvQkFBZSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ2xDLFlBQU8sR0FBRyxLQUFLLENBQWdDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELFNBQUksR0FBRyxLQUFLLENBQStCLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELGFBQVEsR0FBRyxLQUFLLENBQStCLFFBQVEsQ0FBQyxDQUFDO1FBRXpELFVBQVU7UUFDVixnQkFBVyxHQUFHLE1BQU0sRUFBUyxDQUFDO0tBSy9CO0lBSEMsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDOytHQWpCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixxdUNBeE5uQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVCx3eUZBaENTLG1CQUFtQjs7NEZBeU5sQixrQkFBa0I7a0JBN045QixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUNwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIG91dHB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQXRlVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL2F0ZS10b29sdGlwLmRpcmVjdGl2ZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0ZUJ1dHRvbkNvbmZpZyB7XG4gIGljb246IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgYWN0aXZlPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB2YXJpYW50PzogXCJkZWZhdWx0XCIgfCBcInRleHRcIiB8IFwiZGFuZ2VyXCI7XG4gIHNpemU/OiBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiO1xuICBpY29uU2l6ZT86IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhdGUtYnV0dG9uXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQXRlVG9vbHRpcERpcmVjdGl2ZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJhdGUtYnV0dG9uXCJcbiAgICAgIFtjbGFzcy5pcy1hY3RpdmVdPVwiYWN0aXZlKClcIlxuICAgICAgW2NsYXNzLmlzLWRpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW2NsYXNzLnRleHQtYnV0dG9uXT1cInZhcmlhbnQoKSA9PT0gJ3RleHQnXCJcbiAgICAgIFtjbGFzcy5kYW5nZXJdPVwidmFyaWFudCgpID09PSAnZGFuZ2VyJ1wiXG4gICAgICBbY2xhc3Muc21hbGxdPVwic2l6ZSgpID09PSAnc21hbGwnXCJcbiAgICAgIFtjbGFzcy5tZWRpdW1dPVwic2l6ZSgpID09PSAnbWVkaXVtJ1wiXG4gICAgICBbY2xhc3MubGFyZ2VdPVwic2l6ZSgpID09PSAnbGFyZ2UnXCJcbiAgICAgIFtjbGFzcy5oYXMtY3VzdG9tLWNvbG9yXT1cIiEhY29sb3IoKVwiXG4gICAgICBbY2xhc3MuaGFzLWN1c3RvbS1iZ109XCIhIWJhY2tncm91bmRDb2xvcigpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJjb2xvcigpXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJhY2tncm91bmRDb2xvcigpXCJcbiAgICAgIFthdGVUb29sdGlwXT1cInRpdGxlKClcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0aXRsZSgpXCJcbiAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwiYnV0dG9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgIEBpZiAoaWNvbigpKSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCJcbiAgICAgICAgICBbY2xhc3MuaWNvbi1zbWFsbF09XCJpY29uU2l6ZSgpID09PSAnc21hbGwnXCJcbiAgICAgICAgICBbY2xhc3MuaWNvbi1tZWRpdW1dPVwiaWNvblNpemUoKSA9PT0gJ21lZGl1bSdcIlxuICAgICAgICAgIFtjbGFzcy5pY29uLWxhcmdlXT1cImljb25TaXplKCkgPT09ICdsYXJnZSdcIlxuICAgICAgICAgID57eyBpY29uKCkgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgfVxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvYnV0dG9uPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAvKiBTdHlsZXMgZGUgYmFzZSBwb3VyIGxlcyBib3V0b25zIFRpcHRhcCAqL1xuICAgICAgLmF0ZS1idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYXRlLXN1Yi1ib3JkZXItcmFkaXVzLCA4cHgpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdG9vbGJhci1idXR0b24tY29sb3IsIHZhcigtLWF0ZS10ZXh0LXNlY29uZGFyeSkpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC5hdGUtYnV0dG9uOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXByaW1hcnkpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYXRlLXN1Yi1ib3JkZXItcmFkaXVzLCA4cHgpO1xuICAgICAgfVxuXG4gICAgICAuYXRlLWJ1dHRvbjpob3Zlcjpub3QoLmhhcy1jdXN0b20tY29sb3IpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1hY3RpdmUtY29sb3IsIHZhcigtLWF0ZS1wcmltYXJ5KSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgIH1cblxuICAgICAgLyogSWYgaGFzIGN1c3RvbSBjb2xvciwgd2Ugc3RpbGwgd2FudCB0aGUgaG92ZXIgYmFja2dyb3VuZCBidXQgbm90IHRoZSBjb2xvciBjaGFuZ2UgKi9cbiAgICAgIC5hdGUtYnV0dG9uLmhhcy1jdXN0b20tY29sb3I6aG92ZXI6bm90KC5oYXMtY3VzdG9tLWJnKSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b24uaGFzLWN1c3RvbS1iZzpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDAuOSk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtYnV0dG9uOmhvdmVyOjpiZWZvcmUge1xuICAgICAgICBvcGFjaXR5OiAwLjE7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtYnV0dG9uOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b24uaXMtYWN0aXZlOm5vdCguaGFzLWN1c3RvbS1jb2xvcikge1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXRvb2xiYXItYnV0dG9uLWFjdGl2ZS1jb2xvciwgdmFyKC0tYXRlLXByaW1hcnkpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXRvb2xiYXItYnV0dG9uLWFjdGl2ZS1iYWNrZ3JvdW5kLCB2YXIoLS1hdGUtcHJpbWFyeS1saWdodCkpO1xuICAgICAgfVxuXG4gICAgICAvKiBJZiBoYXMgY3VzdG9tIGNvbG9yIGFuZCBhY3RpdmUsIHByaW9yaXRpemUgdGhlIGN1c3RvbSBjb2xvciAqL1xuICAgICAgLmF0ZS1idXR0b24uaXMtYWN0aXZlLmhhcy1jdXN0b20tY29sb3Ige1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtdG9vbGJhci1idXR0b24tYWN0aXZlLWJhY2tncm91bmQsIHZhcigtLWF0ZS1wcmltYXJ5LWxpZ2h0KSk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtYnV0dG9uOmRpc2FibGVkIHtcbiAgICAgICAgb3BhY2l0eTogMC40O1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLyogSWPDtG5lcyBNYXRlcmlhbCBTeW1ib2xzICovXG4gICAgICAuYXRlLWJ1dHRvbiAubWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgfVxuXG4gICAgICAuYXRlLWJ1dHRvbiAubWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZC5pY29uLXNtYWxsIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgfVxuXG4gICAgICAuYXRlLWJ1dHRvbiAubWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZC5pY29uLW1lZGl1bSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b24gLm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQuaWNvbi1sYXJnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgIH1cblxuICAgICAgLyogQm91dG9ucyBhdmVjIHRleHRlICovXG4gICAgICAuYXRlLWJ1dHRvbi50ZXh0LWJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAwIDEycHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIEJvdXRvbnMgZGUgY291bGV1ciAqL1xuICAgICAgLmF0ZS1idXR0b24uY29sb3ItYnV0dG9uIHtcbiAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b24uY29sb3ItYnV0dG9uOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hdGUtYm9yZGVyKTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgICAgfVxuXG4gICAgICAuYXRlLWJ1dHRvbi5jb2xvci1idXR0b24uaXMtYWN0aXZlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hdGUtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1hdGUtcHJpbWFyeS1saWdodCk7XG4gICAgICB9XG5cbiAgICAgIC8qIEJvdXRvbnMgYXZlYyB2YXJpYW50ZXMgKi9cbiAgICAgIC5hdGUtYnV0dG9uLmRhbmdlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtZXJyb3ItY29sb3IsICNlZjQ0NDQpO1xuICAgICAgfVxuXG4gICAgICAuYXRlLWJ1dHRvbi5kYW5nZXI6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLWVycm9yLWNvbG9yLCAjZWY0NDQ0KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLWVycm9yLWJnLCByZ2JhKDIzOSwgNjgsIDY4LCAwLjEpKTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b24uZGFuZ2VyOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtZXJyb3ItY29sb3IsICNlZjQ0NDQpO1xuICAgICAgfVxuXG4gICAgICAvKiBCb3V0b25zIGRlIHRhaWxsZSBkaWZmw6lyZW50ZSAqL1xuICAgICAgLmF0ZS1idXR0b24uc21hbGwge1xuICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgfVxuXG4gICAgICAuYXRlLWJ1dHRvbi5tZWRpdW0ge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgfVxuXG4gICAgICAuYXRlLWJ1dHRvbi5sYXJnZSB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICB9XG5cbiAgICAgIC8qIEFuaW1hdGlvbiBkZSBwdWxzYXRpb24gcG91ciBsZXMgYm91dG9ucyBhY3RpZnMgKi9cbiAgICAgIEBrZXlmcmFtZXMgcHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMCB2YXIoLS1hdGUtcHJpbWFyeS1saWdodC1hbHBoYSk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b24uaXMtYWN0aXZlLnB1bHNlIHtcbiAgICAgICAgYW5pbWF0aW9uOiBwdWxzZSAycyBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLyogUmVzcG9uc2l2ZSAqL1xuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgICAgIC5hdGUtYnV0dG9uIHtcbiAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIH1cblxuICAgICAgICAuYXRlLWJ1dHRvbiAubWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmF0ZS1idXR0b24udGV4dC1idXR0b24ge1xuICAgICAgICAgIHBhZGRpbmc6IDAgOHB4O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF0ZUJ1dHRvbkNvbXBvbmVudCB7XG4gIC8vIElucHV0c1xuICBpY29uID0gaW5wdXQ8c3RyaW5nPihcIlwiKTtcbiAgdGl0bGUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIGFjdGl2ZSA9IGlucHV0KGZhbHNlKTtcbiAgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIGNvbG9yID0gaW5wdXQ8c3RyaW5nPigpO1xuICBiYWNrZ3JvdW5kQ29sb3IgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHZhcmlhbnQgPSBpbnB1dDxcImRlZmF1bHRcIiB8IFwidGV4dFwiIHwgXCJkYW5nZXJcIj4oXCJkZWZhdWx0XCIpO1xuICBzaXplID0gaW5wdXQ8XCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIj4oXCJtZWRpdW1cIik7XG4gIGljb25TaXplID0gaW5wdXQ8XCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIj4oXCJtZWRpdW1cIik7XG5cbiAgLy8gT3V0cHV0c1xuICBidXR0b25DbGljayA9IG91dHB1dDxFdmVudD4oKTtcblxuICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbn1cbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3VpL2F0ZS1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUF5TzdFLE1BQU0sT0FBTyxrQkFBa0I7SUE3Ti9CO1FBOE5FLFNBQVM7UUFDVCxTQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDakMsV0FBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUN6RCxVQUFLLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDeEIsb0JBQWUsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNsQyxZQUFPLEdBQUcsS0FBSyxDQUFnQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxTQUFJLEdBQUcsS0FBSyxDQUErQixRQUFRLENBQUMsQ0FBQztRQUNyRCxhQUFRLEdBQUcsS0FBSyxDQUErQixRQUFRLENBQUMsQ0FBQztRQUV6RCxVQUFVO1FBQ1YsZ0JBQVcsR0FBRyxNQUFNLEVBQVMsQ0FBQztLQUsvQjtJQUhDLFdBQVcsQ0FBQyxLQUFpQjtRQUMzQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsQ0FBQzsrR0FqQlUsa0JBQWtCO21HQUFsQixrQkFBa0IscXVDQXhObkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQlQsd3lGQWhDUyxtQkFBbUI7OzRGQXlObEIsa0JBQWtCO2tCQTdOOUIsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsbUJBQW1CLENBQUMsWUFDcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBib29sZWFuQXR0cmlidXRlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEF0ZVRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9hdGUtdG9vbHRpcC5kaXJlY3RpdmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBdGVCdXR0b25Db25maWcge1xuICBpY29uOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGFjdGl2ZT86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdmFyaWFudD86IFwiZGVmYXVsdFwiIHwgXCJ0ZXh0XCIgfCBcImRhbmdlclwiO1xuICBzaXplPzogXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIjtcbiAgaWNvblNpemU/OiBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXRlLWJ1dHRvblwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0F0ZVRvb2x0aXBEaXJlY3RpdmVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYXRlLWJ1dHRvblwiXG4gICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cImFjdGl2ZSgpXCJcbiAgICAgIFtjbGFzcy5pcy1kaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgIFtjbGFzcy50ZXh0LWJ1dHRvbl09XCJ2YXJpYW50KCkgPT09ICd0ZXh0J1wiXG4gICAgICBbY2xhc3MuZGFuZ2VyXT1cInZhcmlhbnQoKSA9PT0gJ2RhbmdlcidcIlxuICAgICAgW2NsYXNzLnNtYWxsXT1cInNpemUoKSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3MubWVkaXVtXT1cInNpemUoKSA9PT0gJ21lZGl1bSdcIlxuICAgICAgW2NsYXNzLmxhcmdlXT1cInNpemUoKSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbY2xhc3MuaGFzLWN1c3RvbS1jb2xvcl09XCIhIWNvbG9yKClcIlxuICAgICAgW2NsYXNzLmhhcy1jdXN0b20tYmddPVwiISFiYWNrZ3JvdW5kQ29sb3IoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3IoKVwiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJiYWNrZ3JvdW5kQ29sb3IoKVwiXG4gICAgICBbYXRlVG9vbHRpcF09XCJ0aXRsZSgpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGl0bGUoKVwiXG4gICAgICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICBAaWYgKGljb24oKSkge1xuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiXG4gICAgICAgICAgW2NsYXNzLmljb24tc21hbGxdPVwiaWNvblNpemUoKSA9PT0gJ3NtYWxsJ1wiXG4gICAgICAgICAgW2NsYXNzLmljb24tbWVkaXVtXT1cImljb25TaXplKCkgPT09ICdtZWRpdW0nXCJcbiAgICAgICAgICBbY2xhc3MuaWNvbi1sYXJnZV09XCJpY29uU2l6ZSgpID09PSAnbGFyZ2UnXCJcbiAgICAgICAgICA+e3sgaWNvbigpIH19PC9zcGFuXG4gICAgICAgID5cbiAgICAgIH1cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2J1dHRvbj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLyogU3R5bGVzIGRlIGJhc2UgcG91ciBsZXMgYm91dG9ucyBUaXB0YXAgKi9cbiAgICAgIC5hdGUtYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS1zdWItYm9yZGVyLXJhZGl1cywgOHB4KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXRvb2xiYXItYnV0dG9uLWNvbG9yLCB2YXIoLS1hdGUtdGV4dC1zZWNvbmRhcnkpKTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAuYXRlLWJ1dHRvbjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS1zdWItYm9yZGVyLXJhZGl1cywgOHB4KTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b246aG92ZXI6bm90KC5oYXMtY3VzdG9tLWNvbG9yKSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdG9vbGJhci1idXR0b24tYWN0aXZlLWNvbG9yLCB2YXIoLS1hdGUtcHJpbWFyeSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtdG9vbGJhci1idXR0b24taG92ZXItYmFja2dyb3VuZCwgdHJhbnNwYXJlbnQpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICB9XG5cbiAgICAgIC8qIElmIGhhcyBjdXN0b20gY29sb3IsIHdlIHN0aWxsIHdhbnQgdGhlIGhvdmVyIGJhY2tncm91bmQgYnV0IG5vdCB0aGUgY29sb3IgY2hhbmdlICovXG4gICAgICAuYXRlLWJ1dHRvbi5oYXMtY3VzdG9tLWNvbG9yOmhvdmVyOm5vdCguaGFzLWN1c3RvbS1iZykge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hdGUtdG9vbGJhci1idXR0b24taG92ZXItYmFja2dyb3VuZCwgdHJhbnNwYXJlbnQpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtYnV0dG9uLmhhcy1jdXN0b20tYmc6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygwLjkpO1xuICAgICAgfVxuXG4gICAgICAuYXRlLWJ1dHRvbjpob3Zlcjo6YmVmb3JlIHtcbiAgICAgICAgb3BhY2l0eTogMC4xO1xuICAgICAgfVxuXG4gICAgICAuYXRlLWJ1dHRvbjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtYnV0dG9uLmlzLWFjdGl2ZTpub3QoLmhhcy1jdXN0b20tY29sb3IpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1hY3RpdmUtY29sb3IsIHZhcigtLWF0ZS1wcmltYXJ5KSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS10b29sYmFyLWJ1dHRvbi1hY3RpdmUtYmFja2dyb3VuZCwgdmFyKC0tYXRlLXByaW1hcnktbGlnaHQpKTtcbiAgICAgIH1cblxuICAgICAgLyogSWYgaGFzIGN1c3RvbSBjb2xvciBhbmQgYWN0aXZlLCBwcmlvcml0aXplIHRoZSBjdXN0b20gY29sb3IgKi9cbiAgICAgIC5hdGUtYnV0dG9uLmlzLWFjdGl2ZS5oYXMtY3VzdG9tLWNvbG9yIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXRvb2xiYXItYnV0dG9uLWFjdGl2ZS1iYWNrZ3JvdW5kLCB2YXIoLS1hdGUtcHJpbWFyeS1saWdodCkpO1xuICAgICAgfVxuXG4gICAgICAuYXRlLWJ1dHRvbjpkaXNhYmxlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC8qIEljw7RuZXMgTWF0ZXJpYWwgU3ltYm9scyAqL1xuICAgICAgLmF0ZS1idXR0b24gLm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b24gLm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQuaWNvbi1zbWFsbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b24gLm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQuaWNvbi1tZWRpdW0ge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtYnV0dG9uIC5tYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkLmljb24tbGFyZ2Uge1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIEJvdXRvbnMgYXZlYyB0ZXh0ZSAqL1xuICAgICAgLmF0ZS1idXR0b24udGV4dC1idXR0b24ge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgcGFkZGluZzogMCAxMnB4O1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAvKiBCb3V0b25zIGRlIGNvdWxldXIgKi9cbiAgICAgIC5hdGUtYnV0dG9uLmNvbG9yLWJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtYnV0dG9uLmNvbG9yLWJ1dHRvbjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYXRlLWJvcmRlcik7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b24uY29sb3ItYnV0dG9uLmlzLWFjdGl2ZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYXRlLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tYXRlLXByaW1hcnktbGlnaHQpO1xuICAgICAgfVxuXG4gICAgICAvKiBCb3V0b25zIGF2ZWMgdmFyaWFudGVzICovXG4gICAgICAuYXRlLWJ1dHRvbi5kYW5nZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLWVycm9yLWNvbG9yLCAjZWY0NDQ0KTtcbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b24uZGFuZ2VyOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWF0ZS1lcnJvci1jb2xvciwgI2VmNDQ0NCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS1lcnJvci1iZywgcmdiYSgyMzksIDY4LCA2OCwgMC4xKSk7XG4gICAgICB9XG5cbiAgICAgIC5hdGUtYnV0dG9uLmRhbmdlcjo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLWVycm9yLWNvbG9yLCAjZWY0NDQ0KTtcbiAgICAgIH1cblxuICAgICAgLyogQm91dG9ucyBkZSB0YWlsbGUgZGlmZsOpcmVudGUgKi9cbiAgICAgIC5hdGUtYnV0dG9uLnNtYWxsIHtcbiAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b24ubWVkaXVtIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgIH1cblxuICAgICAgLmF0ZS1idXR0b24ubGFyZ2Uge1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgfVxuXG4gICAgICAvKiBBbmltYXRpb24gZGUgcHVsc2F0aW9uIHBvdXIgbGVzIGJvdXRvbnMgYWN0aWZzICovXG4gICAgICBAa2V5ZnJhbWVzIHB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDAgdmFyKC0tYXRlLXByaW1hcnktbGlnaHQtYWxwaGEpO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5hdGUtYnV0dG9uLmlzLWFjdGl2ZS5wdWxzZSB7XG4gICAgICAgIGFuaW1hdGlvbjogcHVsc2UgMnMgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC8qIFJlc3BvbnNpdmUgKi9cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgICAgICAuYXRlLWJ1dHRvbiB7XG4gICAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmF0ZS1idXR0b24gLm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hdGUtYnV0dG9uLnRleHQtYnV0dG9uIHtcbiAgICAgICAgICBwYWRkaW5nOiAwIDhweDtcbiAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBdGVCdXR0b25Db21wb25lbnQge1xuICAvLyBJbnB1dHNcbiAgaWNvbiA9IGlucHV0PHN0cmluZz4oXCJcIik7XG4gIHRpdGxlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBhY3RpdmUgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG4gIGRpc2FibGVkID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuICBjb2xvciA9IGlucHV0PHN0cmluZz4oKTtcbiAgYmFja2dyb3VuZENvbG9yID0gaW5wdXQ8c3RyaW5nPigpO1xuICB2YXJpYW50ID0gaW5wdXQ8XCJkZWZhdWx0XCIgfCBcInRleHRcIiB8IFwiZGFuZ2VyXCI+KFwiZGVmYXVsdFwiKTtcbiAgc2l6ZSA9IGlucHV0PFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCI+KFwibWVkaXVtXCIpO1xuICBpY29uU2l6ZSA9IGlucHV0PFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCI+KFwibWVkaXVtXCIpO1xuXG4gIC8vIE91dHB1dHNcbiAgYnV0dG9uQ2xpY2sgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { computed, signal, Directive, ApplicationRef, EnvironmentInjector, createComponent, Injectable, input, inject, effect, untracked, Component, ChangeDetectionStrategy, HostListener, ElementRef, output, viewChild, InjectionToken, DestroyRef, Injector, makeEnvironmentProviders, APP_INITIALIZER } from '@angular/core';
2
+ import { computed, signal, Directive, ApplicationRef, EnvironmentInjector, createComponent, Injectable, input, booleanAttribute, inject, effect, untracked, Component, ChangeDetectionStrategy, HostListener, ElementRef, output, viewChild, InjectionToken, DestroyRef, Injector, makeEnvironmentProviders, APP_INITIALIZER } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { Node as Node$1, mergeAttributes, nodeInputRule, Extension, getAttributes, Editor } from '@tiptap/core';
5
5
  import StarterKit from '@tiptap/starter-kit';
@@ -2065,9 +2065,9 @@ class AteTableOfContentsComponent {
2065
2065
  // Optional custom title (if not provided, uses i18n translation)
2066
2066
  this.title = input(null);
2067
2067
  // Whether to show the header title
2068
- this.showTitle = input(true);
2068
+ this.showTitle = input(true, { transform: booleanAttribute });
2069
2069
  // Layout mode: floating on fixed position or inline inside parent container
2070
- this.floating = input(true);
2070
+ this.floating = input(true, { transform: booleanAttribute });
2071
2071
  // Positioning mode when floating: 'fixed' (relative to viewport, default) or 'absolute' (relative to parent container)
2072
2072
  this.positionMode = input("fixed");
2073
2073
  // Floating position: 'right' | 'left'
@@ -2075,7 +2075,7 @@ class AteTableOfContentsComponent {
2075
2075
  // Visual variant: 'minimal' | 'card' | 'transparent'
2076
2076
  this.variant = input("minimal");
2077
2077
  // Notion-style hover expansion (collapses text into dashes until hovered)
2078
- this.hoverExpand = input(true);
2078
+ this.hoverExpand = input(true, { transform: booleanAttribute });
2079
2079
  // Maximum heading level depth to include (1-6, default: 6)
2080
2080
  this.maxDepth = input(6, {
2081
2081
  transform: (v) => {
@@ -2787,8 +2787,8 @@ class AteButtonComponent {
2787
2787
  // Inputs
2788
2788
  this.icon = input("");
2789
2789
  this.title = input.required();
2790
- this.active = input(false);
2791
- this.disabled = input(false);
2790
+ this.active = input(false, { transform: booleanAttribute });
2791
+ this.disabled = input(false, { transform: booleanAttribute });
2792
2792
  this.color = input();
2793
2793
  this.backgroundColor = input();
2794
2794
  this.variant = input("default");
@@ -8384,6 +8384,12 @@ const AteBlockControlsExtension = Extension.create({
8384
8384
  },
8385
8385
  });
8386
8386
 
8387
+ function transformBooleanInput(val) {
8388
+ if (val === undefined || val === null) {
8389
+ return undefined;
8390
+ }
8391
+ return booleanAttribute(val);
8392
+ }
8387
8393
  // Slash commands configuration is handled dynamically via slashCommandsConfigComputed
8388
8394
  /**
8389
8395
  * The main rich-text editor component for Angular.
@@ -8408,41 +8414,42 @@ class AngularTiptapEditorComponent {
8408
8414
  this.config = input({});
8409
8415
  this.content = input("");
8410
8416
  this.placeholder = input(undefined);
8411
- this.editable = input(undefined);
8412
- this.disabled = input(undefined);
8417
+ this.editable = input(undefined, { transform: transformBooleanInput });
8418
+ this.disabled = input(undefined, { transform: transformBooleanInput });
8413
8419
  this.minHeight = input(undefined);
8414
8420
  this.height = input(undefined);
8415
8421
  this.maxHeight = input(undefined);
8416
- this.fillContainer = input(undefined);
8417
- this.showToolbar = input(undefined);
8418
- this.showFooter = input(undefined);
8419
- this.showCharacterCount = input(undefined);
8420
- this.showWordCount = input(undefined);
8422
+ this.fillContainer = input(undefined, { transform: transformBooleanInput });
8423
+ this.showToolbar = input(undefined, { transform: transformBooleanInput });
8424
+ this.showFooter = input(undefined, { transform: transformBooleanInput });
8425
+ this.showCharacterCount = input(undefined, { transform: transformBooleanInput });
8426
+ this.showWordCount = input(undefined, { transform: transformBooleanInput });
8421
8427
  this.maxCharacters = input(undefined);
8422
- this.enableOfficePaste = input(undefined);
8423
- this.enableSlashCommands = input(undefined);
8428
+ this.enableOfficePaste = input(undefined, { transform: transformBooleanInput });
8429
+ this.enableSlashCommands = input(undefined, { transform: transformBooleanInput });
8424
8430
  this.slashCommands = input(undefined);
8425
8431
  this.customSlashCommands = input(undefined);
8426
8432
  this.blockControls = input();
8427
8433
  this.locale = input(undefined);
8428
8434
  this.autofocus = input(undefined);
8429
- this.seamless = input(undefined);
8430
- this.floatingToolbar = input(undefined);
8431
- this.showEditToggle = input(undefined);
8432
- this.spellcheck = input(undefined);
8435
+ this.mode = input(undefined);
8436
+ this.seamless = input(undefined, { transform: transformBooleanInput });
8437
+ this.floatingToolbar = input(undefined, { transform: transformBooleanInput });
8438
+ this.showEditToggle = input(undefined, { transform: transformBooleanInput });
8439
+ this.spellcheck = input(undefined, { transform: transformBooleanInput });
8433
8440
  this.tiptapExtensions = input(undefined);
8434
8441
  this.tiptapOptions = input(undefined);
8435
8442
  // Nouveaux inputs pour les bubble menus
8436
- this.showBubbleMenu = input(undefined);
8443
+ this.showBubbleMenu = input(undefined, { transform: transformBooleanInput });
8437
8444
  this.bubbleMenu = input(undefined);
8438
- this.showImageBubbleMenu = input(undefined);
8445
+ this.showImageBubbleMenu = input(undefined, { transform: transformBooleanInput });
8439
8446
  this.imageBubbleMenu = input(undefined);
8440
8447
  // Configuration de la toolbar
8441
8448
  this.toolbar = input(undefined);
8442
8449
  // Configuration des menus de table
8443
- this.showTableBubbleMenu = input(undefined);
8450
+ this.showTableBubbleMenu = input(undefined, { transform: transformBooleanInput });
8444
8451
  this.tableBubbleMenu = input(undefined);
8445
- this.showCellBubbleMenu = input(undefined);
8452
+ this.showCellBubbleMenu = input(undefined, { transform: transformBooleanInput });
8446
8453
  this.cellBubbleMenu = input(undefined);
8447
8454
  /**
8448
8455
  * Additionnal state calculators to extend the reactive editor state.
@@ -8516,6 +8523,10 @@ class AngularTiptapEditorComponent {
8516
8523
  if (inputVal !== undefined) {
8517
8524
  return inputVal;
8518
8525
  }
8526
+ const modeVal = this.mode();
8527
+ if (modeVal !== undefined) {
8528
+ return modeVal === "seamless";
8529
+ }
8519
8530
  const fromConfig = this.effectiveConfig().mode;
8520
8531
  return fromConfig === "seamless";
8521
8532
  });
@@ -9107,7 +9118,7 @@ class AngularTiptapEditorComponent {
9107
9118
  }
9108
9119
  }
9109
9120
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AngularTiptapEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AngularTiptapEditorComponent, isStandalone: true, selector: "angular-tiptap-editor", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, fillContainer: { classPropertyName: "fillContainer", publicName: "fillContainer", isSignal: true, isRequired: false, transformFunction: null }, showToolbar: { classPropertyName: "showToolbar", publicName: "showToolbar", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, showCharacterCount: { classPropertyName: "showCharacterCount", publicName: "showCharacterCount", isSignal: true, isRequired: false, transformFunction: null }, showWordCount: { classPropertyName: "showWordCount", publicName: "showWordCount", isSignal: true, isRequired: false, transformFunction: null }, maxCharacters: { classPropertyName: "maxCharacters", publicName: "maxCharacters", isSignal: true, isRequired: false, transformFunction: null }, enableOfficePaste: { classPropertyName: "enableOfficePaste", publicName: "enableOfficePaste", isSignal: true, isRequired: false, transformFunction: null }, enableSlashCommands: { classPropertyName: "enableSlashCommands", publicName: "enableSlashCommands", isSignal: true, isRequired: false, transformFunction: null }, slashCommands: { classPropertyName: "slashCommands", publicName: "slashCommands", isSignal: true, isRequired: false, transformFunction: null }, customSlashCommands: { classPropertyName: "customSlashCommands", publicName: "customSlashCommands", isSignal: true, isRequired: false, transformFunction: null }, blockControls: { classPropertyName: "blockControls", publicName: "blockControls", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, seamless: { classPropertyName: "seamless", publicName: "seamless", isSignal: true, isRequired: false, transformFunction: null }, floatingToolbar: { classPropertyName: "floatingToolbar", publicName: "floatingToolbar", isSignal: true, isRequired: false, transformFunction: null }, showEditToggle: { classPropertyName: "showEditToggle", publicName: "showEditToggle", isSignal: true, isRequired: false, transformFunction: null }, spellcheck: { classPropertyName: "spellcheck", publicName: "spellcheck", isSignal: true, isRequired: false, transformFunction: null }, tiptapExtensions: { classPropertyName: "tiptapExtensions", publicName: "tiptapExtensions", isSignal: true, isRequired: false, transformFunction: null }, tiptapOptions: { classPropertyName: "tiptapOptions", publicName: "tiptapOptions", isSignal: true, isRequired: false, transformFunction: null }, showBubbleMenu: { classPropertyName: "showBubbleMenu", publicName: "showBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, bubbleMenu: { classPropertyName: "bubbleMenu", publicName: "bubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, showImageBubbleMenu: { classPropertyName: "showImageBubbleMenu", publicName: "showImageBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, imageBubbleMenu: { classPropertyName: "imageBubbleMenu", publicName: "imageBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, toolbar: { classPropertyName: "toolbar", publicName: "toolbar", isSignal: true, isRequired: false, transformFunction: null }, showTableBubbleMenu: { classPropertyName: "showTableBubbleMenu", publicName: "showTableBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, tableBubbleMenu: { classPropertyName: "tableBubbleMenu", publicName: "tableBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, showCellBubbleMenu: { classPropertyName: "showCellBubbleMenu", publicName: "showCellBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, cellBubbleMenu: { classPropertyName: "cellBubbleMenu", publicName: "cellBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, stateCalculators: { classPropertyName: "stateCalculators", publicName: "stateCalculators", isSignal: true, isRequired: false, transformFunction: null }, imageUpload: { classPropertyName: "imageUpload", publicName: "imageUpload", isSignal: true, isRequired: false, transformFunction: null }, imageUploadHandler: { classPropertyName: "imageUploadHandler", publicName: "imageUploadHandler", isSignal: true, isRequired: false, transformFunction: null }, editorId: { classPropertyName: "editorId", publicName: "editorId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contentChange: "contentChange", editorCreated: "editorCreated", editorUpdate: "editorUpdate", editorFocus: "editorFocus", editorBlur: "editorBlur", editableChange: "editableChange", imageUploaded: "imageUploaded" }, host: { properties: { "class.fill-container": "finalFillContainer()", "class.floating-toolbar": "finalFloatingToolbar()", "class.is-readonly": "!finalEditable() && !mergedDisabled()", "class.is-disabled": "mergedDisabled()", "style.--ate-border-width": "finalSeamless() || mergedDisabled() ? '0' : null", "style.--ate-background": "finalSeamless() ? 'transparent' : (mergedDisabled() ? 'var(--ate-surface-tertiary)' : null)", "style.--ate-toolbar-border-color": "finalSeamless() ? 'transparent' : null", "style.--ate-counter-background": "finalSeamless() ? 'transparent' : null", "style.--ate-counter-border-color": "finalSeamless() ? 'transparent' : null", "class.dark": "config().theme === 'dark'", "class.ate-blocks-inside": "finalBlockControls() === 'inside'", "class.ate-blocks-outside": "finalBlockControls() === 'outside'", "attr.data-theme": "config().theme" } }, providers: [
9121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AngularTiptapEditorComponent, isStandalone: true, selector: "angular-tiptap-editor", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, fillContainer: { classPropertyName: "fillContainer", publicName: "fillContainer", isSignal: true, isRequired: false, transformFunction: null }, showToolbar: { classPropertyName: "showToolbar", publicName: "showToolbar", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, showCharacterCount: { classPropertyName: "showCharacterCount", publicName: "showCharacterCount", isSignal: true, isRequired: false, transformFunction: null }, showWordCount: { classPropertyName: "showWordCount", publicName: "showWordCount", isSignal: true, isRequired: false, transformFunction: null }, maxCharacters: { classPropertyName: "maxCharacters", publicName: "maxCharacters", isSignal: true, isRequired: false, transformFunction: null }, enableOfficePaste: { classPropertyName: "enableOfficePaste", publicName: "enableOfficePaste", isSignal: true, isRequired: false, transformFunction: null }, enableSlashCommands: { classPropertyName: "enableSlashCommands", publicName: "enableSlashCommands", isSignal: true, isRequired: false, transformFunction: null }, slashCommands: { classPropertyName: "slashCommands", publicName: "slashCommands", isSignal: true, isRequired: false, transformFunction: null }, customSlashCommands: { classPropertyName: "customSlashCommands", publicName: "customSlashCommands", isSignal: true, isRequired: false, transformFunction: null }, blockControls: { classPropertyName: "blockControls", publicName: "blockControls", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, seamless: { classPropertyName: "seamless", publicName: "seamless", isSignal: true, isRequired: false, transformFunction: null }, floatingToolbar: { classPropertyName: "floatingToolbar", publicName: "floatingToolbar", isSignal: true, isRequired: false, transformFunction: null }, showEditToggle: { classPropertyName: "showEditToggle", publicName: "showEditToggle", isSignal: true, isRequired: false, transformFunction: null }, spellcheck: { classPropertyName: "spellcheck", publicName: "spellcheck", isSignal: true, isRequired: false, transformFunction: null }, tiptapExtensions: { classPropertyName: "tiptapExtensions", publicName: "tiptapExtensions", isSignal: true, isRequired: false, transformFunction: null }, tiptapOptions: { classPropertyName: "tiptapOptions", publicName: "tiptapOptions", isSignal: true, isRequired: false, transformFunction: null }, showBubbleMenu: { classPropertyName: "showBubbleMenu", publicName: "showBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, bubbleMenu: { classPropertyName: "bubbleMenu", publicName: "bubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, showImageBubbleMenu: { classPropertyName: "showImageBubbleMenu", publicName: "showImageBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, imageBubbleMenu: { classPropertyName: "imageBubbleMenu", publicName: "imageBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, toolbar: { classPropertyName: "toolbar", publicName: "toolbar", isSignal: true, isRequired: false, transformFunction: null }, showTableBubbleMenu: { classPropertyName: "showTableBubbleMenu", publicName: "showTableBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, tableBubbleMenu: { classPropertyName: "tableBubbleMenu", publicName: "tableBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, showCellBubbleMenu: { classPropertyName: "showCellBubbleMenu", publicName: "showCellBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, cellBubbleMenu: { classPropertyName: "cellBubbleMenu", publicName: "cellBubbleMenu", isSignal: true, isRequired: false, transformFunction: null }, stateCalculators: { classPropertyName: "stateCalculators", publicName: "stateCalculators", isSignal: true, isRequired: false, transformFunction: null }, imageUpload: { classPropertyName: "imageUpload", publicName: "imageUpload", isSignal: true, isRequired: false, transformFunction: null }, imageUploadHandler: { classPropertyName: "imageUploadHandler", publicName: "imageUploadHandler", isSignal: true, isRequired: false, transformFunction: null }, editorId: { classPropertyName: "editorId", publicName: "editorId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contentChange: "contentChange", editorCreated: "editorCreated", editorUpdate: "editorUpdate", editorFocus: "editorFocus", editorBlur: "editorBlur", editableChange: "editableChange", imageUploaded: "imageUploaded" }, host: { properties: { "class.fill-container": "finalFillContainer()", "class.floating-toolbar": "finalFloatingToolbar()", "class.is-readonly": "!finalEditable() && !mergedDisabled()", "class.is-disabled": "mergedDisabled()", "style.--ate-border-width": "finalSeamless() || mergedDisabled() ? '0' : null", "style.--ate-background": "finalSeamless() ? 'transparent' : (mergedDisabled() ? 'var(--ate-surface-tertiary)' : null)", "style.--ate-toolbar-border-color": "finalSeamless() ? 'transparent' : null", "style.--ate-counter-background": "finalSeamless() ? 'transparent' : null", "style.--ate-counter-border-color": "finalSeamless() ? 'transparent' : null", "class.dark": "config().theme === 'dark'", "class.ate-blocks-inside": "finalBlockControls() === 'inside'", "class.ate-blocks-outside": "finalBlockControls() === 'outside'", "attr.data-theme": "config().theme" } }, providers: [
9111
9122
  AteEditorCommandsService,
9112
9123
  AteImageService,
9113
9124
  AteColorPickerService,