@theseam/ui-common 0.4.11 → 0.4.12-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
  2. package/datatable/datatable/datatable.component.d.ts +10 -1
  3. package/datatable/models/action-item-column-position.d.ts +13 -0
  4. package/datatable/services/columns-manager.service.d.ts +7 -0
  5. package/datatable/utils/create-action-menu-column.d.ts +1 -1
  6. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
  7. package/esm2020/carousel/carousel.component.mjs +2 -1
  8. package/esm2020/datatable/datatable/datatable.component.mjs +20 -4
  9. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
  10. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  11. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  12. package/esm2020/datatable/models/action-item-column-position.mjs +5 -0
  13. package/esm2020/datatable/services/columns-manager.service.mjs +27 -2
  14. package/esm2020/datatable/utils/create-action-menu-column.mjs +4 -3
  15. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  16. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
  17. package/esm2020/framework/base-layout/base-layout.component.mjs +14 -4
  18. package/esm2020/framework/base-layout/base-layout.module.mjs +6 -1
  19. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +21 -5
  20. package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +16 -0
  21. package/esm2020/framework/base-layout/index.mjs +2 -1
  22. package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +55 -0
  23. package/esm2020/framework/nav/index.mjs +6 -0
  24. package/esm2020/framework/nav/nav-item/nav-item.component.mjs +227 -0
  25. package/esm2020/framework/nav/nav-utils.mjs +107 -0
  26. package/esm2020/framework/nav/nav.models.mjs +2 -0
  27. package/esm2020/framework/nav/nav.module.mjs +67 -0
  28. package/esm2020/framework/nav/nav.service.mjs +204 -0
  29. package/esm2020/framework/public-api.mjs +2 -1
  30. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +1 -1
  31. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +28 -67
  32. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +12 -5
  33. package/esm2020/framework/side-nav/side-nav.component.mjs +116 -38
  34. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  35. package/esm2020/framework/side-nav/side-nav.module.mjs +9 -39
  36. package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
  37. package/esm2020/framework/top-bar/index.mjs +3 -1
  38. package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +16 -0
  39. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +10 -4
  40. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +6 -4
  41. package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +16 -0
  42. package/esm2020/framework/top-bar/top-bar.component.mjs +55 -11
  43. package/esm2020/framework/top-bar/top-bar.module.mjs +15 -5
  44. package/esm2020/layout/layout.service.mjs +12 -2
  45. package/esm2020/menu/menu-toggle.directive.mjs +7 -2
  46. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +4 -2
  47. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
  48. package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  49. package/fesm2015/theseam-ui-common-carousel.mjs +1 -0
  50. package/fesm2015/theseam-ui-common-carousel.mjs.map +1 -1
  51. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
  52. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  53. package/fesm2015/theseam-ui-common-datatable.mjs +56 -10
  54. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  55. package/fesm2015/theseam-ui-common-framework.mjs +905 -156
  56. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  57. package/fesm2015/theseam-ui-common-layout.mjs +11 -2
  58. package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
  59. package/fesm2015/theseam-ui-common-menu.mjs +6 -1
  60. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  61. package/fesm2015/theseam-ui-common-table-cell-types.mjs +3 -1
  62. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  63. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
  64. package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  65. package/fesm2020/theseam-ui-common-carousel.mjs +1 -0
  66. package/fesm2020/theseam-ui-common-carousel.mjs.map +1 -1
  67. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
  68. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  69. package/fesm2020/theseam-ui-common-datatable.mjs +56 -10
  70. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  71. package/fesm2020/theseam-ui-common-framework.mjs +907 -156
  72. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  73. package/fesm2020/theseam-ui-common-layout.mjs +11 -2
  74. package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
  75. package/fesm2020/theseam-ui-common-menu.mjs +6 -1
  76. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  77. package/fesm2020/theseam-ui-common-table-cell-types.mjs +3 -1
  78. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  79. package/framework/base-layout/base-layout.component.d.ts +4 -2
  80. package/framework/base-layout/base-layout.component.scss +18 -10
  81. package/framework/base-layout/base-layout.module.d.ts +11 -10
  82. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +8 -3
  83. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +9 -0
  84. package/framework/base-layout/index.d.ts +1 -0
  85. package/framework/base-layout/styles/_variables.scss +21 -0
  86. package/framework/nav/_nav-theme.scss +4 -0
  87. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +25 -0
  88. package/framework/nav/horizontal-nav/horizontal-nav.component.scss +50 -0
  89. package/framework/nav/index.d.ts +5 -0
  90. package/framework/nav/nav-item/nav-item.component.d.ts +74 -0
  91. package/framework/nav/nav-item/nav-item.component.scss +203 -0
  92. package/framework/nav/nav-utils.d.ts +20 -0
  93. package/framework/nav/nav.models.d.ts +77 -0
  94. package/framework/nav/nav.module.d.ts +17 -0
  95. package/framework/nav/nav.service.d.ts +27 -0
  96. package/framework/nav/styles/_themes/light/_variables.scss +56 -0
  97. package/framework/nav/styles/_themes/primary/_variables.scss +56 -0
  98. package/framework/nav/styles/_utilities.scss +3 -0
  99. package/framework/nav/styles/_variables.scss +2 -0
  100. package/framework/public-api.d.ts +1 -0
  101. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +7 -14
  102. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +7 -5
  103. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +5 -3
  104. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +3 -6
  105. package/framework/side-nav/side-nav.component.d.ts +13 -1
  106. package/framework/side-nav/side-nav.component.scss +0 -1
  107. package/framework/side-nav/side-nav.models.d.ts +7 -1
  108. package/framework/side-nav/side-nav.module.d.ts +1 -9
  109. package/framework/side-nav/styles/_themes/light/_variables.scss +24 -14
  110. package/framework/side-nav/styles/_themes/primary/_variables.scss +8 -0
  111. package/framework/top-bar/index.d.ts +2 -0
  112. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +8 -0
  113. package/framework/top-bar/top-bar-item.directive.d.ts +4 -1
  114. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +5 -2
  115. package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +8 -0
  116. package/framework/top-bar/top-bar.component.d.ts +25 -3
  117. package/framework/top-bar/top-bar.component.scss +7 -2
  118. package/framework/top-bar/top-bar.module.d.ts +10 -8
  119. package/layout/layout.service.d.ts +9 -1
  120. package/menu/menu-toggle.directive.d.ts +2 -1
  121. package/package.json +2 -2
  122. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +57 -14
  123. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +33 -5
@@ -4,7 +4,7 @@ seam-breadcrumbs {
4
4
  li {
5
5
  color: $breadcrumb-color;
6
6
  a {
7
- color: inherit;
7
+ color: $breadcrumb-color;
8
8
  }
9
9
  }
10
10
  }
@@ -20,6 +20,7 @@ import { TheSeamDatatableColumn } from '../models/table-column';
20
20
  import { ColumnsManagerService } from '../services/columns-manager.service';
21
21
  import { DatatablePreferencesService } from '../services/datatable-preferences.service';
22
22
  import { ColumnsAlterationsManagerService } from '../services/columns-alterations-manager.service';
23
+ import { ActionItemColumnPosition } from '../models/action-item-column-position';
23
24
  import * as i0 from "@angular/core";
24
25
  /**
25
26
  * NOTE: This is still being worked on. I am trying to figure out this model
@@ -136,6 +137,14 @@ export declare class DatatableComponent implements OnInit, OnDestroy, TheSeamDat
136
137
  scrollbarV: boolean;
137
138
  scrollbarH: boolean;
138
139
  set dataSource(value: DataSource<any> | any[] | undefined | null);
140
+ /**
141
+ * Sets position behavior for optional Action Menu Button column.
142
+ *
143
+ * Defaults to `frozenRight`.
144
+ */
145
+ get actionItemColumnPosition(): ActionItemColumnPosition | undefined;
146
+ set actionItemColumnPosition(value: ActionItemColumnPosition | undefined);
147
+ private _actionItemColumnPosition;
139
148
  readonly scroll: EventEmitter<any>;
140
149
  readonly activate: EventEmitter<any>;
141
150
  readonly select: EventEmitter<any>;
@@ -210,5 +219,5 @@ export declare class DatatableComponent implements OnInit, OnDestroy, TheSeamDat
210
219
  */
211
220
  get pageInfo(): TheSeamPageInfo;
212
221
  static ɵfac: i0.ɵɵFactoryDeclaration<DatatableComponent, never>;
213
- static ɵcmp: i0.ɵɵComponentDeclaration<DatatableComponent, "seam-datatable", never, { "preferencesKey": "preferencesKey"; "targetMarkerTemplate": "targetMarkerTemplate"; "columns": "columns"; "rows": "rows"; "columnMode": "columnMode"; "groupRowsBy": "groupRowsBy"; "groupedRows": "groupedRows"; "selected": "selected"; "externalPaging": "externalPaging"; "externalSorting": "externalSorting"; "externalFiltering": "externalFiltering"; "limit": "limit"; "count": "count"; "offset": "offset"; "loadingIndicator": "loadingIndicator"; "selectionType": "selectionType"; "reorderable": "reorderable"; "swapColumns": "swapColumns"; "sortType": "sortType"; "sorts": "sorts"; "cssClasses": "cssClasses"; "messages": "messages"; "rowIdentity": "rowIdentity"; "rowClass": "rowClass"; "selectCheck": "selectCheck"; "displayCheck": "displayCheck"; "groupExpansionDefault": "groupExpansionDefault"; "trackByProp": "trackByProp"; "selectAllRowsOnPage": "selectAllRowsOnPage"; "treeFromRelation": "treeFromRelation"; "treeToRelation": "treeToRelation"; "summaryRow": "summaryRow"; "summaryHeight": "summaryHeight"; "summaryPosition": "summaryPosition"; "virtualization": "virtualization"; "headerHeight": "headerHeight"; "rowHeight": "rowHeight"; "footerHeight": "footerHeight"; "scrollbarV": "scrollbarV"; "scrollbarH": "scrollbarH"; "dataSource": "dataSource"; }, { "scroll": "scroll"; "activate": "activate"; "select": "select"; "sort": "sort"; "page": "page"; "reorder": "reorder"; "resize": "resize"; "tableContextmenu": "tableContextmenu"; "treeAction": "treeAction"; "actionRefreshRequest": "actionRefreshRequest"; "hiddenColumnsChange": "hiddenColumnsChange"; }, ["actionMenu", "rowActionItem", "rowDetail", "footer", "menuBarComponent", "columnComponents"], ["seam-datatable-menu-bar"], false, never>;
222
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatatableComponent, "seam-datatable", never, { "preferencesKey": "preferencesKey"; "targetMarkerTemplate": "targetMarkerTemplate"; "columns": "columns"; "rows": "rows"; "columnMode": "columnMode"; "groupRowsBy": "groupRowsBy"; "groupedRows": "groupedRows"; "selected": "selected"; "externalPaging": "externalPaging"; "externalSorting": "externalSorting"; "externalFiltering": "externalFiltering"; "limit": "limit"; "count": "count"; "offset": "offset"; "loadingIndicator": "loadingIndicator"; "selectionType": "selectionType"; "reorderable": "reorderable"; "swapColumns": "swapColumns"; "sortType": "sortType"; "sorts": "sorts"; "cssClasses": "cssClasses"; "messages": "messages"; "rowIdentity": "rowIdentity"; "rowClass": "rowClass"; "selectCheck": "selectCheck"; "displayCheck": "displayCheck"; "groupExpansionDefault": "groupExpansionDefault"; "trackByProp": "trackByProp"; "selectAllRowsOnPage": "selectAllRowsOnPage"; "treeFromRelation": "treeFromRelation"; "treeToRelation": "treeToRelation"; "summaryRow": "summaryRow"; "summaryHeight": "summaryHeight"; "summaryPosition": "summaryPosition"; "virtualization": "virtualization"; "headerHeight": "headerHeight"; "rowHeight": "rowHeight"; "footerHeight": "footerHeight"; "scrollbarV": "scrollbarV"; "scrollbarH": "scrollbarH"; "dataSource": "dataSource"; "actionItemColumnPosition": "actionItemColumnPosition"; }, { "scroll": "scroll"; "activate": "activate"; "select": "select"; "sort": "sort"; "page": "page"; "reorder": "reorder"; "resize": "resize"; "tableContextmenu": "tableContextmenu"; "treeAction": "treeAction"; "actionRefreshRequest": "actionRefreshRequest"; "hiddenColumnsChange": "hiddenColumnsChange"; }, ["actionMenu", "rowActionItem", "rowDetail", "footer", "menuBarComponent", "columnComponents"], ["seam-datatable-menu-bar"], false, never>;
214
223
  }
@@ -0,0 +1,13 @@
1
+ declare const ActionItemColumnPosition: readonly ["frozenLeft", "frozenRight", "staticLeft", "staticRight"];
2
+ /**
3
+ * If `frozenLeft`, action item column will be fixed to the left side of the table.
4
+ *
5
+ * If `frozenRight`, action item column will be fixed to the right side of the table.
6
+ *
7
+ * If `staticLeft`, action item column will be the first static column on the left side of the table.
8
+ *
9
+ * If `staticRight`, action item column will be the last static column on the right side of the table.
10
+ */
11
+ export type ActionItemColumnPosition = typeof ActionItemColumnPosition[number];
12
+ export declare function isActionItemColumnPosition(input: unknown): input is ActionItemColumnPosition;
13
+ export {};
@@ -5,6 +5,7 @@ import { DatatableColumnComponent } from '../datatable-column/datatable-column.c
5
5
  import { DatatableRowActionItemDirective } from '../directives/datatable-row-action-item.directive';
6
6
  import { TheSeamDatatableColumn } from '../models/table-column';
7
7
  import { DatatableColumnChangesService } from './datatable-column-changes.service';
8
+ import { ActionItemColumnPosition } from '../models/action-item-column-position';
8
9
  import * as i0 from "@angular/core";
9
10
  export type InternalColumnsGetter = () => TableColumn[];
10
11
  export declare class ColumnsManagerService {
@@ -21,6 +22,7 @@ export declare class ColumnsManagerService {
21
22
  private _selectionType;
22
23
  private _rowActionItem;
23
24
  private _actionMenuCellTpl;
25
+ private _actionItemColumnPosition;
24
26
  private _blankHeaderTpl;
25
27
  private _treeToggleTpl;
26
28
  private _headerTpl;
@@ -33,6 +35,7 @@ export declare class ColumnsManagerService {
33
35
  setSelectionType(selectionType: SelectionType | undefined): void;
34
36
  getSelectionType(): SelectionType | undefined;
35
37
  setRowActionItem(rowActionItem: DatatableRowActionItemDirective | undefined): void;
38
+ setActionItemColumnPosition(actionItemColumnPosition: ActionItemColumnPosition | undefined): void;
36
39
  setActionMenuCellTpl(actionMenuCellTpl: TemplateRef<DataTableColumnDirective> | undefined): void;
37
40
  setBlankHeaderTpl(blankHeaderTpl: TemplateRef<DataTableColumnHeaderDirective> | undefined): void;
38
41
  setTreeToggleTpl(treeToggleTpl: TemplateRef<DataTableColumnCellTreeToggle> | undefined): void;
@@ -50,6 +53,10 @@ export declare class ColumnsManagerService {
50
53
  private _hasColumnsChanged;
51
54
  private _shouldAddCheckboxColumn;
52
55
  private _shouldAddRowActionColumn;
56
+ private _rowActionColumnIsFrozenLeft;
57
+ private _rowActionColumnIsFrozenRight;
58
+ private _rowActionColumnIsStaticLeft;
59
+ private _rowActionColumnIsStaticRight;
53
60
  private _shouldAddTreeToggleColumn;
54
61
  private _shouldAddHeaderTemplate;
55
62
  private _shouldAddCellTypeSelectorTpl;
@@ -1,3 +1,3 @@
1
1
  import { TheSeamDatatableColumn } from '../models/table-column';
2
2
  export declare const ACTION_MENU_COLUMN_PROP = "$$__actionMenu__";
3
- export declare function createActionMenuColumn(cellTemplate: any, headerTemplate: any): TheSeamDatatableColumn;
3
+ export declare function createActionMenuColumn(cellTemplate: any, headerTemplate: any, frozenLeft?: boolean, frozenRight?: boolean): TheSeamDatatableColumn;
@@ -10,9 +10,9 @@ export class BreadcrumbsComponent {
10
10
  }
11
11
  }
12
12
  BreadcrumbsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BreadcrumbsComponent, deps: [{ token: i1.TheSeamBreadcrumbsService }], target: i0.ɵɵFactoryTarget.Component });
13
- BreadcrumbsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BreadcrumbsComponent, selector: "seam-breadcrumbs", ngImport: i0, template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n", styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:inherit}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
13
+ BreadcrumbsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BreadcrumbsComponent, selector: "seam-breadcrumbs", ngImport: i0, template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n", styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
14
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BreadcrumbsComponent, decorators: [{
15
15
  type: Component,
16
- args: [{ selector: 'seam-breadcrumbs', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n", styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:inherit}\n"] }]
16
+ args: [{ selector: 'seam-breadcrumbs', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n", styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:#fff}\n"] }]
17
17
  }], ctorParameters: function () { return [{ type: i1.TheSeamBreadcrumbsService }]; } });
18
18
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9icmVhZGNydW1icy9icmVhZGNydW1icy9icmVhZGNydW1icy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFBOzs7OztBQWFyRixNQUFNLE9BQU8sb0JBQW9CO0lBSS9CLFlBQ1UsWUFBdUM7UUFBdkMsaUJBQVksR0FBWixZQUFZLENBQTJCO1FBRS9DLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUE7SUFDMUMsQ0FBQzs7aUhBUlUsb0JBQW9CO3FHQUFwQixvQkFBb0Isd0RDYmpDLGtjQVdBOzJGREVhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBUaGVTZWFtQnJlYWRjcnVtYiB9IGZyb20gJy4uL2JyZWFkY3J1bWInXG5pbXBvcnQgeyBUaGVTZWFtQnJlYWRjcnVtYnNTZXJ2aWNlIH0gZnJvbSAnLi4vYnJlYWRjcnVtYnMuc2VydmljZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS1icmVhZGNydW1icycsXG4gIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1icy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWJzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJzQ29tcG9uZW50IHtcblxuICBwdWJsaWMgY3J1bWJzJDogT2JzZXJ2YWJsZTxUaGVTZWFtQnJlYWRjcnVtYltdPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2JyZWFkY3J1bWJzOiBUaGVTZWFtQnJlYWRjcnVtYnNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY3J1bWJzJCA9IHRoaXMuX2JyZWFkY3J1bWJzLmNydW1icyRcbiAgfVxuXG59XG4iLCI8bmF2IGFyaWEtbGFiZWw9XCJicmVhZGNydW1iXCI+XG4gIDxvbCBjbGFzcz1cImJyZWFkY3J1bWIgbWItMFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgY3J1bWIgb2YgY3J1bWJzJCB8IGFzeW5jOyBsYXN0IGFzIGlzTGFzdFwiXG4gICAgICBjbGFzcz1cImJyZWFkY3J1bWItaXRlbVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBpc0xhc3QgfVwiXG4gICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaXNMYXN0ID8gJ3BhZ2UnIDogdW5kZWZpbmVkXCI+XG4gICAgICA8YSAqbmdJZj1cIiFpc0xhc3Q7IGVsc2Ugbm90TGlua1wiIFtyb3V0ZXJMaW5rXT1cImNydW1iLnBhdGhcIj57eyBjcnVtYi52YWx1ZSB9fTwvYT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm90TGluaz57eyBjcnVtYi52YWx1ZSB9fTwvbmctdGVtcGxhdGU+XG4gICAgPC9saT5cbiAgPC9vbD5cbjwvbmF2PlxuIl19
@@ -99,6 +99,7 @@ export class TheSeamCarouselComponent {
99
99
  this._resetInterval.complete();
100
100
  }
101
101
  _startInterval() {
102
+ this._resetInterval.next(undefined);
102
103
  if (this.autoPlay) {
103
104
  interval(this.slideInterval).pipe(takeUntil(this._resetInterval), tap(() => {
104
105
  this.pageCarousel(1);
@@ -208,4 +209,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
208
209
  type: ContentChildren,
209
210
  args: [TheSeamCarouselSlideDirective]
210
211
  }] } });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUE7QUFFL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNwRixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFN0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNEJBQTRCLENBQUE7Ozs7O0FBZ0IxRSxNQUFNLE9BQU8sd0JBQXdCO0lBNkRuQyxJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFBO0lBQzNCLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUEyRDtRQUNwRSxvRkFBb0Y7UUFDcEYsTUFBTSxLQUFL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cnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgaW50ZXJ2YWwsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBmYUFuZ2xlTGVmdCwgZmFBbmdsZVJpZ2h0LCBmYVBhdXNlLCBmYVBsYXkgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5pbXBvcnQgeyBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXG5cbmltcG9ydCB7IFRoZVNlYW1DYXJvdXNlbFNsaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi9jYXJvdXNlbC1zbGlkZS5kaXJlY3RpdmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tY2Fyb3VzZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXJvdXNlbC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZmFkZUluT3V0JywgW1xuICAgICAgdHJhbnNpdGlvbignKiA9PiAqJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6ICcwJywgaGVpZ2h0OiAnKicgfSksXG4gICAgICAgIGFuaW1hdGUoMjUwLCBzdHlsZSh7IG9wYWNpdHk6ICcxJywgaGVpZ2h0OiAnKicgfSkpLFxuICAgICAgXSksXG4gICAgXSlcbiAgXSxcbiAgZXhwb3J0QXM6ICdzZWFtQ2Fyb3VzZWwnLFxufSlcbmV4cG9ydCBjbGFzcyBUaGVTZWFtQ2Fyb3VzZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zbGlkZUludGVydmFsOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYXV0b1BsYXk6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcGF1c2VPbkhvdmVyOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3BhdXNlT25Gb2N1czogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zaG93UGFnZXI6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2hvd05hdkJ1dHRvbnM6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2hvd1BhdXNlQnV0dG9uOiBCb29sZWFuSW5wdXRcblxuICByZWFkb25seSBmYUFuZ2xlUmlnaHQgPSBmYUFuZ2xlUmlnaHRcbiAgcmVhZG9ubHkgZmFBbmdsZUxlZnQgPSBmYUFuZ2xlTGVmdFxuICByZWFkb25seSBmYVBhdXNlID0gZmFQYXVzZVxuICByZWFkb25seSBmYVBsYXkgPSBmYVBsYXlcblxuICAvKipcbiAgICogRHVyYXRpb24gaW4gbXMgdGhhdCBzbGlkZSBpcyBkaXNwbGF5ZWQgYmVmb3JlIHBhZ2luZy5cbiAgICogT25seSBhcHBsaWNhYmxlIHdoZW4gYGF1dG9QbGF5ID09PSB0cnVlYC5cbiAgICogRGVmYXVsdHMgdG8gMTAwMDBtcy5cbiAgICovXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigxMDAwMCkgc2xpZGVJbnRlcnZhbCA9IDEwMDAwXG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCBjYXJvdXNlbCB3aWxsIHBhZ2UgYXV0b21hdGljYWxseS5cbiAgICogRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgKi9cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGF1dG9QbGF5ID0gdHJ1ZVxuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgd2lsbCBwYXVzZSBhdXRvbWF0aWMgcGFnaW5nIHdoZW4gdXNlciBtb3VzZXMgb3ZlciBjYXJvdXNlbC5cbiAgICogVGltZXIgd2lsbCByZXN0YXJ0IHdoZW4gdXNlciBtb3VzZXMgb3V0LlxuICAgKiBPbmx5IGFwcGxpY2FibGUgd2hlbiBgYXV0b1BsYXkgPT09IHRydWVgLlxuICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgcGF1c2VPbkhvdmVyID0gdHJ1ZVxuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgd2lsbCBwYXVzZSBhdXRvbWF0aWMgcGFnaW5nIHdoZW4gdXNlciBmb2N1c2VzIGluIG9uIGl0ZW0gaW4gY2Fyb3VzZWwuXG4gICAqIFRpbWVyIHdpbGwgcmVzdGFydCB3aGVuIHVzZXIgZm9jdXNlcyBvdXQuXG4gICAqIE9ubHkgYXBwbGljYWJsZSB3aGVuIGBhdXRvUGxheSA9PT0gdHJ1ZWAuXG4gICAqIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBwYXVzZU9uRm9jdXMgPSB0cnVlXG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB3aWxsIHNob3cgcGFnZXIgcm93IGF0IHRoZSBib3R0b20gb2YgdGhlIGNhcm91c2VsIHdpdGggY2xpY2thYmxlIGJ1dHRvbnMgdG8gbmF2aWdhdGUgZGlyZWN0bHkgdG8gYSBwYWdlLlxuICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc2hvd1BhZ2VyID0gdHJ1ZVxuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgd2lsbCBzaG93IGxlZnQgYW5kIHJpZ2h0IG5hdiBidXR0b24gb24gZWl0aGVyIHNpZGUgb2YgdGhlIGNhcm91c2VsIHRvIG5hdmlnYXRlIHRocm91Z2ggcGFnZXMuXG4gICAqIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzaG93TmF2QnV0dG9ucyA9IHRydWVcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHdpbGwgc2hvdyBwYXVzZS9wbGF5IGJ1dHRvbiB0byBzdG9wL3Jlc3RhcnQgYXV0b21hdGljIHBhZ2luZy5cbiAgICogRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgKi9cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNob3dQYXVzZUJ1dHRvbiA9IHRydWVcblxuICBAQ29udGVudENoaWxkcmVuKFRoZVNlYW1DYXJvdXNlbFNsaWRlRGlyZWN0aXZlKVxuICBnZXQgc2xpZGVzKCk6IFF1ZXJ5TGlzdDxUaGVTZWFtQ2Fyb3VzZWxTbGlkZURpcmVjdGl2ZT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zbGlkZXMudmFsdWVcbiAgfVxuICBzZXQgc2xpZGVzKHZhbHVlOiBRdWVyeUxpc3Q8VGhlU2VhbUNhcm91c2VsU2xpZGVEaXJlY3RpdmU+IHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gQ2hlY2sgaWYgc2xpZGVzIHdlcmUgYWRkZWQgb3IgcmVtb3ZlZCB0aGF0IHdvdWxkIG1ha2UgdGhlIGFjdGl2ZSBpbmRleCBub3QgZXhpc3QuXG4gICAgY29uc3QgY291bnQgPSB2YWx1ZT8ubGVuZ3RoIHx8IDBcbiAgICBjb25zdCBtYXhJZHggPSBjb3VudCA+PSAwID8gY291bnQgLSAxIDogMFxuICAgIGNvbnN0IGFjdGl2ZUlkeCA9IHRoaXMuX3BvbGxBY3RpdmVJbmRleC52YWx1ZVxuICAgIGlmIChhY3RpdmVJZHggPiBtYXhJZHgpIHtcbiAgICAgIHRoaXMuX3BvbGxBY3RpdmVJbmRleC5uZXh0KG1heElkeClcbiAgICB9IGVsc2UgaWYgKGNvdW50ID4gMCAmJiBhY3RpdmVJZHggPCAwKSB7XG4gICAgICB0aGlzLl9wb2xsQWN0aXZlSW5kZXgubmV4dCgwKVxuICAgIH1cblxuICAgIHRoaXMuX3NsaWRlcy5uZXh0KHZhbHVlKVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NsaWRlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PFRoZVNlYW1DYXJvdXNlbFNsaWRlRGlyZWN0aXZlPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwdWJsaWMgcmVhZG9ubHkgc2xpZGVzJCA9IHRoaXMuX3NsaWRlcy5hc09ic2VydmFibGUoKVxuXG4gIHB1YmxpYyByZWFkb25seSBhY3RpdmVTbGlkZSQ6IE9ic2VydmFibGU8YW55IHwgdW5kZWZpbmVkPlxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BvbGxBY3RpdmVJbmRleCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKVxuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlSW5kZXgkID0gdGhpcy5fcG9sbEFjdGl2ZUluZGV4LmFzT2JzZXJ2YWJsZSgpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2Fyb3VzZWxQYXVzZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBwdWJsaWMgcmVhZG9ubHkgY2Fyb3VzZWxQYXVzZWQkID0gdGhpcy5fY2Fyb3VzZWxQYXVzZWQuYXNPYnNlcnZhYmxlKClcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jYXJvdXNlbFN0b3BwZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBwdWJsaWMgcmVhZG9ubHkgY2Fyb3VzZWxTdG9wcGVkJCA9IHRoaXMuX2Nhcm91c2VsU3RvcHBlZC5hc09ic2VydmFibGUoKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc2V0SW50ZXJ2YWwgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5hY3RpdmVTbGlkZSQgPSB0aGlzLl9wb2xsQWN0aXZlSW5kZXgucGlwZShcbiAgICAgIHN0YXJ0V2l0aCgwKSxcbiAgICAgIHN3aXRjaE1hcChpID0+IHRoaXMuc2xpZGVzJC5waXBlKFxuICAgICAgICBtYXAoc2xpZGVzID0+IHNsaWRlcz8uZ2V0KGkpKSxcbiAgICAgICkpXG4gICAgKVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5jYXJvdXNlbFBhdXNlZCQsIHRoaXMuY2Fyb3VzZWxTdG9wcGVkJF0pLnBpcGUoXG4gICAgICB0YXAoKFtwYXVzZWQsIHN0b3BwZWRdKSA9PiB7XG4gICAgICAgIGlmIChwYXVzZWQgfHwgc3RvcHBlZCkge1xuICAgICAgICAgIHRoaXMuX3Jlc2V0SW50ZXJ2YWwubmV4dCh1bmRlZmluZWQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fc3RhcnRJbnRlcnZhbCgpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKS5zdWJzY3JpYmUoKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzZXRJbnRlcnZhbC5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9yZXNldEludGVydmFsLmNvbXBsZXRlKClcbiAgfVxuXG4gIHByaXZhdGUgX3N0YXJ0SW50ZXJ2YWwoKSB7XG4gICAgaWYgKHRoaXMuYXV0b1BsYXkpIHtcbiAgICAgIGludGVydmFsKHRoaXMuc2xpZGVJbnRlcnZhbCkucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Jlc2V0SW50ZXJ2YWwpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucGFnZUNhcm91c2VsKDEpXG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpXG4gICAgfVxuICB9XG5cbiAgZm9jdXNJbigpIHtcbiAgICBpZiAodGhpcy5wYXVzZU9uRm9jdXMpIHtcbiAgICAgIHRoaXMucGF1c2VUaW1lcigpXG4gICAgfVxuICB9XG5cbiAgZm9jdXNPdXQoKSB7XG4gICAgaWYgKHRoaXMucGF1c2VPbkZvY3VzKSB7XG4gICAgICB0aGlzLnN0YXJ0VGltZXIoKVxuICAgIH1cbiAgfVxuXG4gIG1vdXNlRW50ZXIoKSB7XG4gICAgaWYgKHRoaXMucGF1c2VPbkhvdmVyKSB7XG4gICAgICB0aGlzLnBhdXNlVGltZXIoKVxuICAgIH1cbiAgfVxuXG4gIG1vdXNlTGVhdmUoKSB7XG4gICAgaWYgKHRoaXMucGF1c2VPbkhvdmVyKSB7XG4gICAgICB0aGlzLnN0YXJ0VGltZXIoKVxuICAgIH1cbiAgfVxuXG4gIHBhdXNlVGltZXIoKSB7XG4gICAgdGhpcy5fY2Fyb3VzZWxQYXVzZWQubmV4dCh0cnVlKVxuICB9XG5cbiAgc3RhcnRUaW1lcigpIHtcbiAgICBpZiAoIXRoaXMuX2Nhcm91c2VsU3RvcHBlZC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2Fyb3VzZWxQYXVzZWQubmV4dChmYWxzZSlcbiAgICB9XG4gIH1cblxuICBzZXRDYXJvdXNlbChpOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wb2xsQWN0aXZlSW5kZXgubmV4dChpKVxuICB9XG5cbiAgcGFnZUNhcm91c2VsKHN0ZXA6IG51bWJlcikge1xuICAgIHRoaXMuc2xpZGVzJC5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIGZpbHRlcihzbGlkZXMgPT4gbm90TnVsbE9yVW5kZWZpbmVkKHNsaWRlcykpLFxuICAgICAgbWFwKHNsaWRlcyA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlc0xlbiA9IHNsaWRlcz8ubGVuZ3RoIHx8IDFcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5fcG9sbEFjdGl2ZUluZGV4LnZhbHVlXG4gICAgICAgIGluZGV4ID0gaW5kZXggKyBzdGVwXG4gICAgICAgIGluZGV4ID0gaW5kZXggPCAwID8gc2xpZGVzTGVuICsgaW5kZXggOiBpbmRleCAlIHNsaWRlc0xlblxuICAgICAgICB0aGlzLl9wb2xsQWN0aXZlSW5kZXgubmV4dChpbmRleClcbiAgICAgIH0pXG4gICAgKS5zdWJzY3JpYmUoKVxuICB9XG5cbiAgdG9nZ2xlQ2Fyb3VzZWxTdG9wKCkge1xuICAgIGNvbnN0IGNhcm91c2VsU3RvcHBlZCA9IHRoaXMuX2Nhcm91c2VsU3RvcHBlZC52YWx1ZVxuICAgIHRoaXMuX2Nhcm91c2VsU3RvcHBlZC5uZXh0KCFjYXJvdXNlbFN0b3BwZWQpXG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJzbGlkZXMkIHwgYXN5bmMgYXMgc2xpZGVzXCI+XG4gIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gICAgKm5nSWY9XCJzbGlkZXMubGVuZ3RoXCJcbiAgICAoZm9jdXNpbik9XCJmb2N1c0luKClcIlxuICAgIChtb3VzZWVudGVyKT1cIm1vdXNlRW50ZXIoKVwiXG4gICAgKGZvY3Vzb3V0KT1cImZvY3VzT3V0KClcIlxuICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlTGVhdmUoKVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIHN0eWxlPVwibWluLWhlaWdodDogMTUwcHg7XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd05hdkJ1dHRvbnMgJiYgc2xpZGVzLmxlbmd0aCA+IDFcIlxuICAgICAgICBzZWFtQnV0dG9uXG4gICAgICAgIGNsYXNzPVwiY2Fyb3VzZWwtYXJyb3cgcHgtMlwiXG4gICAgICAgIChjbGljayk9XCJwYWdlQ2Fyb3VzZWwoLTEpXCJcbiAgICAgICAgdGl0bGU9XCJHbyB0byBwcmV2aW91cyBzbGlkZVwiPlxuICAgICAgICA8c2VhbS1pY29uIFtpY29uXT1cImZhQW5nbGVMZWZ0XCI+PC9zZWFtLWljb24+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZVNsaWRlJCB8IGFzeW5jIGFzIHNsaWRlXCIgW0BmYWRlSW5PdXRdPVwic2xpZGUudGVtcGxhdGVcIiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWNvbnRlbnQgdy0xMDAgcHktMSBweC0yXCIgW2F0dHIuZGF0YS1zbGlkZS1pbmRleF09XCJhY3RpdmVJbmRleCQgfCBhc3luY1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KHNsaWRlLnRlbXBsYXRlKVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJzaG93TmF2QnV0dG9ucyAmJiBzbGlkZXMubGVuZ3RoID4gMVwiXG4gICAgICAgIHNlYW1CdXR0b25cbiAgICAgICAgY2xhc3M9XCJjYXJvdXNlbC1hcnJvdyBweC0yXCJcbiAgICAgICAgKGNsaWNrKT1cInBhZ2VDYXJvdXNlbCgxKVwiXG4gICAgICAgIHRpdGxlPVwiR28gdG8gbmV4dCBzbGlkZVwiPlxuICAgICAgICA8c2VhbS1pY29uIFtpY29uXT1cImZhQW5nbGVSaWdodFwiPjwvc2VhbS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtcGFnZXMgZC1mbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTMgbXgtYXV0b1wiICpuZ0lmPVwic2hvd1BhZ2VyICYmIHNsaWRlcy5sZW5ndGggPiAxXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBxIG9mIHNsaWRlczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIHNlYW1CdXR0b25cbiAgICAgICAgdGhlbWU9XCJsaWdodFwiXG4gICAgICAgIGNsYXNzPVwiY2Fyb3VzZWwtcGFnZVwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiKGFjdGl2ZUluZGV4JCB8IGFzeW5jKSA9PSBpXCJcbiAgICAgICAgKGNsaWNrKT1cInNldENhcm91c2VsKGkpXCJcbiAgICAgICAgW3RpdGxlXT1cIidHbyB0byBzbGlkZSAnICsgKGkgKyAxKVwiPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWNvbnRyb2xzXCIgKm5nSWY9XCJzaG93UGF1c2VCdXR0b24gJiYgYXV0b1BsYXlcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJzbGlkZXMubGVuZ3RoID4gMVwiXG4gICAgICAgIHNlYW1CdXR0b25cbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNhcm91c2VsU3RvcCgpXCJcbiAgICAgICAgW3RpdGxlXT1cIihjYXJvdXNlbFN0b3BwZWQkIHwgYXN5bmMpID8gJ1BsYXknIDogJ1BhdXNlJ1wiPlxuICAgICAgICA8c2VhbS1pY29uIFtpY29uXT1cImZhUGxheVwiICpuZ0lmPVwiY2Fyb3VzZWxTdG9wcGVkJCB8IGFzeW5jOyBlbHNlIHBhdXNlQnV0dG9uXCI+PC9zZWFtLWljb24+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjcGF1c2VCdXR0b24+XG4gICAgICAgICAgPHNlYW0taWNvbiBbaWNvbl09XCJmYVBhdXNlXCI+PC9zZWFtLWljb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUE7QUFFL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNwRixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFN0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNEJBQTRCLENBQUE7Ozs7O0FBZ0IxRSxNQUFNLE9BQU8sd0JBQXdCO0lBNkRuQyxJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFBO0lBQzNCLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUEyRDtRQUNwRSxvRkFBb0Y7UUFDcEYsTUFBTSxLQUFL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QU07c0JBRFQsZUFBZTt1QkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgaW50ZXJ2YWwsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBmYUFuZ2xlTGVmdCwgZmFBbmdsZVJpZ2h0LCBmYVBhdXNlLCBmYVBsYXkgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5pbXBvcnQgeyBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXG5cbmltcG9ydCB7IFRoZVNlYW1DYXJvdXNlbFNsaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi9jYXJvdXNlbC1zbGlkZS5kaXJlY3RpdmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tY2Fyb3VzZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXJvdXNlbC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZmFkZUluT3V0JywgW1xuICAgICAgdHJhbnNpdGlvbignKiA9PiAqJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6ICcwJywgaGVpZ2h0OiAnKicgfSksXG4gICAgICAgIGFuaW1hdGUoMjUwLCBzdHlsZSh7IG9wYWNpdHk6ICcxJywgaGVpZ2h0OiAnKicgfSkpLFxuICAgICAgXSksXG4gICAgXSlcbiAgXSxcbiAgZXhwb3J0QXM6ICdzZWFtQ2Fyb3VzZWwnLFxufSlcbmV4cG9ydCBjbGFzcyBUaGVTZWFtQ2Fyb3VzZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zbGlkZUludGVydmFsOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYXV0b1BsYXk6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcGF1c2VPbkhvdmVyOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3BhdXNlT25Gb2N1czogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zaG93UGFnZXI6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2hvd05hdkJ1dHRvbnM6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2hvd1BhdXNlQnV0dG9uOiBCb29sZWFuSW5wdXRcblxuICByZWFkb25seSBmYUFuZ2xlUmlnaHQgPSBmYUFuZ2xlUmlnaHRcbiAgcmVhZG9ubHkgZmFBbmdsZUxlZnQgPSBmYUFuZ2xlTGVmdFxuICByZWFkb25seSBmYVBhdXNlID0gZmFQYXVzZVxuICByZWFkb25seSBmYVBsYXkgPSBmYVBsYXlcblxuICAvKipcbiAgICogRHVyYXRpb24gaW4gbXMgdGhhdCBzbGlkZSBpcyBkaXNwbGF5ZWQgYmVmb3JlIHBhZ2luZy5cbiAgICogT25seSBhcHBsaWNhYmxlIHdoZW4gYGF1dG9QbGF5ID09PSB0cnVlYC5cbiAgICogRGVmYXVsdHMgdG8gMTAwMDBtcy5cbiAgICovXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigxMDAwMCkgc2xpZGVJbnRlcnZhbCA9IDEwMDAwXG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCBjYXJvdXNlbCB3aWxsIHBhZ2UgYXV0b21hdGljYWxseS5cbiAgICogRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgKi9cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGF1dG9QbGF5ID0gdHJ1ZVxuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgd2lsbCBwYXVzZSBhdXRvbWF0aWMgcGFnaW5nIHdoZW4gdXNlciBtb3VzZXMgb3ZlciBjYXJvdXNlbC5cbiAgICogVGltZXIgd2lsbCByZXN0YXJ0IHdoZW4gdXNlciBtb3VzZXMgb3V0LlxuICAgKiBPbmx5IGFwcGxpY2FibGUgd2hlbiBgYXV0b1BsYXkgPT09IHRydWVgLlxuICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgcGF1c2VPbkhvdmVyID0gdHJ1ZVxuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgd2lsbCBwYXVzZSBhdXRvbWF0aWMgcGFnaW5nIHdoZW4gdXNlciBmb2N1c2VzIGluIG9uIGl0ZW0gaW4gY2Fyb3VzZWwuXG4gICAqIFRpbWVyIHdpbGwgcmVzdGFydCB3aGVuIHVzZXIgZm9jdXNlcyBvdXQuXG4gICAqIE9ubHkgYXBwbGljYWJsZSB3aGVuIGBhdXRvUGxheSA9PT0gdHJ1ZWAuXG4gICAqIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBwYXVzZU9uRm9jdXMgPSB0cnVlXG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB3aWxsIHNob3cgcGFnZXIgcm93IGF0IHRoZSBib3R0b20gb2YgdGhlIGNhcm91c2VsIHdpdGggY2xpY2thYmxlIGJ1dHRvbnMgdG8gbmF2aWdhdGUgZGlyZWN0bHkgdG8gYSBwYWdlLlxuICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc2hvd1BhZ2VyID0gdHJ1ZVxuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgd2lsbCBzaG93IGxlZnQgYW5kIHJpZ2h0IG5hdiBidXR0b24gb24gZWl0aGVyIHNpZGUgb2YgdGhlIGNhcm91c2VsIHRvIG5hdmlnYXRlIHRocm91Z2ggcGFnZXMuXG4gICAqIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzaG93TmF2QnV0dG9ucyA9IHRydWVcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHdpbGwgc2hvdyBwYXVzZS9wbGF5IGJ1dHRvbiB0byBzdG9wL3Jlc3RhcnQgYXV0b21hdGljIHBhZ2luZy5cbiAgICogRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgKi9cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNob3dQYXVzZUJ1dHRvbiA9IHRydWVcblxuICBAQ29udGVudENoaWxkcmVuKFRoZVNlYW1DYXJvdXNlbFNsaWRlRGlyZWN0aXZlKVxuICBnZXQgc2xpZGVzKCk6IFF1ZXJ5TGlzdDxUaGVTZWFtQ2Fyb3VzZWxTbGlkZURpcmVjdGl2ZT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zbGlkZXMudmFsdWVcbiAgfVxuICBzZXQgc2xpZGVzKHZhbHVlOiBRdWVyeUxpc3Q8VGhlU2VhbUNhcm91c2VsU2xpZGVEaXJlY3RpdmU+IHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gQ2hlY2sgaWYgc2xpZGVzIHdlcmUgYWRkZWQgb3IgcmVtb3ZlZCB0aGF0IHdvdWxkIG1ha2UgdGhlIGFjdGl2ZSBpbmRleCBub3QgZXhpc3QuXG4gICAgY29uc3QgY291bnQgPSB2YWx1ZT8ubGVuZ3RoIHx8IDBcbiAgICBjb25zdCBtYXhJZHggPSBjb3VudCA+PSAwID8gY291bnQgLSAxIDogMFxuICAgIGNvbnN0IGFjdGl2ZUlkeCA9IHRoaXMuX3BvbGxBY3RpdmVJbmRleC52YWx1ZVxuICAgIGlmIChhY3RpdmVJZHggPiBtYXhJZHgpIHtcbiAgICAgIHRoaXMuX3BvbGxBY3RpdmVJbmRleC5uZXh0KG1heElkeClcbiAgICB9IGVsc2UgaWYgKGNvdW50ID4gMCAmJiBhY3RpdmVJZHggPCAwKSB7XG4gICAgICB0aGlzLl9wb2xsQWN0aXZlSW5kZXgubmV4dCgwKVxuICAgIH1cblxuICAgIHRoaXMuX3NsaWRlcy5uZXh0KHZhbHVlKVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NsaWRlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PFRoZVNlYW1DYXJvdXNlbFNsaWRlRGlyZWN0aXZlPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwdWJsaWMgcmVhZG9ubHkgc2xpZGVzJCA9IHRoaXMuX3NsaWRlcy5hc09ic2VydmFibGUoKVxuXG4gIHB1YmxpYyByZWFkb25seSBhY3RpdmVTbGlkZSQ6IE9ic2VydmFibGU8YW55IHwgdW5kZWZpbmVkPlxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BvbGxBY3RpdmVJbmRleCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKVxuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlSW5kZXgkID0gdGhpcy5fcG9sbEFjdGl2ZUluZGV4LmFzT2JzZXJ2YWJsZSgpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2Fyb3VzZWxQYXVzZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBwdWJsaWMgcmVhZG9ubHkgY2Fyb3VzZWxQYXVzZWQkID0gdGhpcy5fY2Fyb3VzZWxQYXVzZWQuYXNPYnNlcnZhYmxlKClcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jYXJvdXNlbFN0b3BwZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBwdWJsaWMgcmVhZG9ubHkgY2Fyb3VzZWxTdG9wcGVkJCA9IHRoaXMuX2Nhcm91c2VsU3RvcHBlZC5hc09ic2VydmFibGUoKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc2V0SW50ZXJ2YWwgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5hY3RpdmVTbGlkZSQgPSB0aGlzLl9wb2xsQWN0aXZlSW5kZXgucGlwZShcbiAgICAgIHN0YXJ0V2l0aCgwKSxcbiAgICAgIHN3aXRjaE1hcChpID0+IHRoaXMuc2xpZGVzJC5waXBlKFxuICAgICAgICBtYXAoc2xpZGVzID0+IHNsaWRlcz8uZ2V0KGkpKSxcbiAgICAgICkpXG4gICAgKVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5jYXJvdXNlbFBhdXNlZCQsIHRoaXMuY2Fyb3VzZWxTdG9wcGVkJF0pLnBpcGUoXG4gICAgICB0YXAoKFtwYXVzZWQsIHN0b3BwZWRdKSA9PiB7XG4gICAgICAgIGlmIChwYXVzZWQgfHwgc3RvcHBlZCkge1xuICAgICAgICAgIHRoaXMuX3Jlc2V0SW50ZXJ2YWwubmV4dCh1bmRlZmluZWQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fc3RhcnRJbnRlcnZhbCgpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKS5zdWJzY3JpYmUoKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzZXRJbnRlcnZhbC5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9yZXNldEludGVydmFsLmNvbXBsZXRlKClcbiAgfVxuXG4gIHByaXZhdGUgX3N0YXJ0SW50ZXJ2YWwoKSB7XG4gICAgdGhpcy5fcmVzZXRJbnRlcnZhbC5uZXh0KHVuZGVmaW5lZClcbiAgICBpZiAodGhpcy5hdXRvUGxheSkge1xuICAgICAgaW50ZXJ2YWwodGhpcy5zbGlkZUludGVydmFsKS5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fcmVzZXRJbnRlcnZhbCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5wYWdlQ2Fyb3VzZWwoMSlcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKClcbiAgICB9XG4gIH1cblxuICBmb2N1c0luKCkge1xuICAgIGlmICh0aGlzLnBhdXNlT25Gb2N1cykge1xuICAgICAgdGhpcy5wYXVzZVRpbWVyKClcbiAgICB9XG4gIH1cblxuICBmb2N1c091dCgpIHtcbiAgICBpZiAodGhpcy5wYXVzZU9uRm9jdXMpIHtcbiAgICAgIHRoaXMuc3RhcnRUaW1lcigpXG4gICAgfVxuICB9XG5cbiAgbW91c2VFbnRlcigpIHtcbiAgICBpZiAodGhpcy5wYXVzZU9uSG92ZXIpIHtcbiAgICAgIHRoaXMucGF1c2VUaW1lcigpXG4gICAgfVxuICB9XG5cbiAgbW91c2VMZWF2ZSgpIHtcbiAgICBpZiAodGhpcy5wYXVzZU9uSG92ZXIpIHtcbiAgICAgIHRoaXMuc3RhcnRUaW1lcigpXG4gICAgfVxuICB9XG5cbiAgcGF1c2VUaW1lcigpIHtcbiAgICB0aGlzLl9jYXJvdXNlbFBhdXNlZC5uZXh0KHRydWUpXG4gIH1cblxuICBzdGFydFRpbWVyKCkge1xuICAgIGlmICghdGhpcy5fY2Fyb3VzZWxTdG9wcGVkLnZhbHVlKSB7XG4gICAgICB0aGlzLl9jYXJvdXNlbFBhdXNlZC5uZXh0KGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIHNldENhcm91c2VsKGk6IG51bWJlcikge1xuICAgIHRoaXMuX3BvbGxBY3RpdmVJbmRleC5uZXh0KGkpXG4gIH1cblxuICBwYWdlQ2Fyb3VzZWwoc3RlcDogbnVtYmVyKSB7XG4gICAgdGhpcy5zbGlkZXMkLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgZmlsdGVyKHNsaWRlcyA9PiBub3ROdWxsT3JVbmRlZmluZWQoc2xpZGVzKSksXG4gICAgICBtYXAoc2xpZGVzID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVzTGVuID0gc2xpZGVzPy5sZW5ndGggfHwgMVxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLl9wb2xsQWN0aXZlSW5kZXgudmFsdWVcbiAgICAgICAgaW5kZXggPSBpbmRleCArIHN0ZXBcbiAgICAgICAgaW5kZXggPSBpbmRleCA8IDAgPyBzbGlkZXNMZW4gKyBpbmRleCA6IGluZGV4ICUgc2xpZGVzTGVuXG4gICAgICAgIHRoaXMuX3BvbGxBY3RpdmVJbmRleC5uZXh0KGluZGV4KVxuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgpXG4gIH1cblxuICB0b2dnbGVDYXJvdXNlbFN0b3AoKSB7XG4gICAgY29uc3QgY2Fyb3VzZWxTdG9wcGVkID0gdGhpcy5fY2Fyb3VzZWxTdG9wcGVkLnZhbHVlXG4gICAgdGhpcy5fY2Fyb3VzZWxTdG9wcGVkLm5leHQoIWNhcm91c2VsU3RvcHBlZClcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInNsaWRlcyQgfCBhc3luYyBhcyBzbGlkZXNcIj5cbiAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCJcbiAgICAqbmdJZj1cInNsaWRlcy5sZW5ndGhcIlxuICAgIChmb2N1c2luKT1cImZvY3VzSW4oKVwiXG4gICAgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlcigpXCJcbiAgICAoZm9jdXNvdXQpPVwiZm9jdXNPdXQoKVwiXG4gICAgKG1vdXNlbGVhdmUpPVwibW91c2VMZWF2ZSgpXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgc3R5bGU9XCJtaW4taGVpZ2h0OiAxNTBweDtcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJzaG93TmF2QnV0dG9ucyAmJiBzbGlkZXMubGVuZ3RoID4gMVwiXG4gICAgICAgIHNlYW1CdXR0b25cbiAgICAgICAgY2xhc3M9XCJjYXJvdXNlbC1hcnJvdyBweC0yXCJcbiAgICAgICAgKGNsaWNrKT1cInBhZ2VDYXJvdXNlbCgtMSlcIlxuICAgICAgICB0aXRsZT1cIkdvIHRvIHByZXZpb3VzIHNsaWRlXCI+XG4gICAgICAgIDxzZWFtLWljb24gW2ljb25dPVwiZmFBbmdsZUxlZnRcIj48L3NlYW0taWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlU2xpZGUkIHwgYXN5bmMgYXMgc2xpZGVcIiBbQGZhZGVJbk91dF09XCJzbGlkZS50ZW1wbGF0ZVwiIGNsYXNzPVwiZmxleC1ncm93LTEgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtY29udGVudCB3LTEwMCBweS0xIHB4LTJcIiBbYXR0ci5kYXRhLXNsaWRlLWluZGV4XT1cImFjdGl2ZUluZGV4JCB8IGFzeW5jXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoc2xpZGUudGVtcGxhdGUpXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dOYXZCdXR0b25zICYmIHNsaWRlcy5sZW5ndGggPiAxXCJcbiAgICAgICAgc2VhbUJ1dHRvblxuICAgICAgICBjbGFzcz1cImNhcm91c2VsLWFycm93IHB4LTJcIlxuICAgICAgICAoY2xpY2spPVwicGFnZUNhcm91c2VsKDEpXCJcbiAgICAgICAgdGl0bGU9XCJHbyB0byBuZXh0IHNsaWRlXCI+XG4gICAgICAgIDxzZWFtLWljb24gW2ljb25dPVwiZmFBbmdsZVJpZ2h0XCI+PC9zZWFtLWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1wYWdlcyBkLWZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMyBteC1hdXRvXCIgKm5nSWY9XCJzaG93UGFnZXIgJiYgc2xpZGVzLmxlbmd0aCA+IDFcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nRm9yPVwibGV0IHEgb2Ygc2xpZGVzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgc2VhbUJ1dHRvblxuICAgICAgICB0aGVtZT1cImxpZ2h0XCJcbiAgICAgICAgY2xhc3M9XCJjYXJvdXNlbC1wYWdlXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCIoYWN0aXZlSW5kZXgkIHwgYXN5bmMpID09IGlcIlxuICAgICAgICAoY2xpY2spPVwic2V0Q2Fyb3VzZWwoaSlcIlxuICAgICAgICBbdGl0bGVdPVwiJ0dvIHRvIHNsaWRlICcgKyAoaSArIDEpXCI+PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtY29udHJvbHNcIiAqbmdJZj1cInNob3dQYXVzZUJ1dHRvbiAmJiBhdXRvUGxheVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNsaWRlcy5sZW5ndGggPiAxXCJcbiAgICAgICAgc2VhbUJ1dHRvblxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2Fyb3VzZWxTdG9wKClcIlxuICAgICAgICBbdGl0bGVdPVwiKGNhcm91c2VsU3RvcHBlZCQgfCBhc3luYykgPyAnUGxheScgOiAnUGF1c2UnXCI+XG4gICAgICAgIDxzZWFtLWljb24gW2ljb25dPVwiZmFQbGF5XCIgKm5nSWY9XCJjYXJvdXNlbFN0b3BwZWQkIHwgYXN5bmM7IGVsc2UgcGF1c2VCdXR0b25cIj48L3NlYW0taWNvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNwYXVzZUJ1dHRvbj5cbiAgICAgICAgICA8c2VhbS1pY29uIFtpY29uXT1cImZhUGF1c2VcIj48L3NlYW0taWNvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=