@fundamental-ngx/platform 0.48.0-rc.21 → 0.48.0-rc.23

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 (147) hide show
  1. package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +6 -8
  2. package/esm2022/form/combobox/commons/base-combobox.mjs +6 -5
  3. package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +8 -8
  4. package/esm2022/form/form-generator/form-generator.service.mjs +8 -13
  5. package/esm2022/form/form-group/form-field/form-field.component.mjs +27 -29
  6. package/esm2022/form/form-group/form-group.component.mjs +37 -40
  7. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +9 -8
  8. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +3 -3
  9. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +10 -13
  10. package/esm2022/form/multi-combobox/multi-combobox.interface.mjs +1 -1
  11. package/esm2022/form/multi-input/base-multi-input.mjs +5 -4
  12. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +4 -7
  13. package/esm2022/form/radio-group/radio-group.component.mjs +23 -24
  14. package/esm2022/form/select/commons/base-select.mjs +3 -3
  15. package/esm2022/form/step-input/base.step-input.mjs +25 -35
  16. package/esm2022/form/step-input/number/number-step-input.component.mjs +3 -3
  17. package/esm2022/form/step-input/step-input-action-button.mjs +6 -10
  18. package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +6 -8
  19. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +10 -19
  20. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +7 -9
  21. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +7 -8
  22. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +9 -20
  23. package/esm2022/list/list.component.mjs +7 -8
  24. package/esm2022/menu/menu.component.mjs +3 -4
  25. package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +8 -11
  26. package/esm2022/message-popover/message-popover.component.mjs +52 -53
  27. package/esm2022/message-popover/models/message-popover-wrapper.interface.mjs +1 -1
  28. package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +3 -7
  29. package/esm2022/search-field/search-field.component.mjs +20 -21
  30. package/esm2022/settings-generator/settings-generator.service.mjs +9 -10
  31. package/esm2022/shared/form/base.input.mjs +7 -8
  32. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +10 -15
  33. package/esm2022/split-menu-button/split-menu-button.component.mjs +7 -18
  34. package/esm2022/table/components/reset-button/reset-button.component.mjs +5 -6
  35. package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +6 -7
  36. package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +6 -8
  37. package/esm2022/table/components/table-group-row/table-group-row.component.mjs +3 -7
  38. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +29 -13
  39. package/esm2022/table/components/table-header-row/table-header-row.component.mjs +7 -11
  40. package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +5 -7
  41. package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +5 -8
  42. package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +5 -8
  43. package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +5 -8
  44. package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +4 -5
  45. package/esm2022/table/components/table-row/table-row.component.mjs +6 -13
  46. package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +34 -21
  47. package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +5 -8
  48. package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +6 -9
  49. package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +6 -9
  50. package/esm2022/table/table.component.mjs +39 -49
  51. package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +1 -1
  52. package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +8 -10
  53. package/esm2022/table-helpers/directives/table-data-source.directive.mjs +6 -6
  54. package/esm2022/table-helpers/services/table-column-resize.service.mjs +14 -17
  55. package/esm2022/table-helpers/services/table-responsive.service.mjs +6 -11
  56. package/esm2022/table-helpers/services/table.service.mjs +20 -18
  57. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +10 -18
  58. package/esm2022/wizard-generator/base-wizard-generator.mjs +12 -19
  59. package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +5 -4
  60. package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +7 -13
  61. package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +8 -7
  62. package/fesm2022/fundamental-ngx-platform-form.mjs +137 -174
  63. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  64. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +24 -46
  65. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  66. package/fesm2022/fundamental-ngx-platform-list.mjs +6 -7
  67. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  68. package/fesm2022/fundamental-ngx-platform-menu.mjs +3 -3
  69. package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
  70. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +57 -60
  71. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  72. package/fesm2022/fundamental-ngx-platform-search-field.mjs +21 -38
  73. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  74. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +6 -8
  75. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  76. package/fesm2022/fundamental-ngx-platform-shared.mjs +6 -7
  77. package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
  78. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +9 -15
  79. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  80. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +6 -17
  81. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
  82. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +42 -52
  83. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  84. package/fesm2022/fundamental-ngx-platform-table.mjs +145 -157
  85. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  86. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +9 -17
  87. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  88. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +20 -33
  89. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  90. package/form/combobox/combobox-mobile/combobox/combobox-mobile.component.d.ts +2 -4
  91. package/form/form-generator/form-generator/form-generator.component.d.ts +1 -1
  92. package/form/form-generator/form-generator.service.d.ts +3 -7
  93. package/form/form-group/form-field/form-field.component.d.ts +12 -12
  94. package/form/form-group/form-group.component.d.ts +35 -31
  95. package/form/multi-combobox/commons/base-multi-combobox.d.ts +2 -2
  96. package/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.d.ts +3 -5
  97. package/form/multi-combobox/multi-combobox.interface.d.ts +3 -3
  98. package/form/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +2 -4
  99. package/form/radio-group/radio-group.component.d.ts +3 -3
  100. package/form/step-input/base.step-input.d.ts +5 -6
  101. package/form/step-input/step-input-action-button.d.ts +4 -7
  102. package/fundamental-ngx-platform-v0.48.0-rc.23.tgz +0 -0
  103. package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +1 -1
  104. package/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.d.ts +5 -8
  105. package/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.d.ts +1 -1
  106. package/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.d.ts +1 -1
  107. package/icon-tab-bar/icon-tab-bar.component.d.ts +4 -6
  108. package/list/list.component.d.ts +1 -3
  109. package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +2 -4
  110. package/message-popover/message-popover.component.d.ts +13 -20
  111. package/message-popover/models/message-popover-wrapper.interface.d.ts +2 -2
  112. package/package.json +4 -4
  113. package/search-field/search-field-mobile/search-field/search-field-mobile.component.d.ts +4 -6
  114. package/search-field/search-field.component.d.ts +6 -4
  115. package/settings-generator/settings-generator.service.d.ts +1 -1
  116. package/shared/form/base.input.d.ts +2 -2
  117. package/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.d.ts +4 -8
  118. package/split-menu-button/split-menu-button.component.d.ts +3 -8
  119. package/table/components/reset-button/reset-button.component.d.ts +2 -3
  120. package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +1 -2
  121. package/table/components/table-column-resizer/table-column-resizer.component.d.ts +1 -1
  122. package/table/components/table-group-row/table-group-row.component.d.ts +2 -5
  123. package/table/components/table-header-cell-content/table-header-cell-content.component.d.ts +11 -6
  124. package/table/components/table-header-row/table-header-row.component.d.ts +1 -1
  125. package/table/components/table-p13-dialog/columns/columns.component.d.ts +2 -4
  126. package/table/components/table-p13-dialog/filtering/filtering.component.d.ts +1 -4
  127. package/table/components/table-p13-dialog/grouping/grouping.component.d.ts +1 -4
  128. package/table/components/table-p13-dialog/sorting/sorting.component.d.ts +1 -4
  129. package/table/components/table-row/table-row.component.d.ts +2 -2
  130. package/table/components/table-toolbar/table-toolbar.component.d.ts +20 -7
  131. package/table/components/table-view-settings-dialog/filtering/filters.component.d.ts +1 -4
  132. package/table/components/table-view-settings-dialog/grouping/grouping.component.d.ts +1 -4
  133. package/table/components/table-view-settings-dialog/sorting/sorting.component.d.ts +1 -4
  134. package/table/table.component.d.ts +4 -18
  135. package/table-helpers/directives/table-cell-header-popover.directive.d.ts +2 -3
  136. package/table-helpers/directives/table-cell-resizable.directive.d.ts +1 -1
  137. package/table-helpers/directives/table-data-source.directive.d.ts +1 -1
  138. package/table-helpers/services/table-column-resize.service.d.ts +2 -2
  139. package/table-helpers/services/table-responsive.service.d.ts +3 -5
  140. package/table-helpers/services/table.service.d.ts +12 -10
  141. package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +2 -1
  142. package/wizard-generator/base-wizard-generator.d.ts +4 -8
  143. package/wizard-generator/components/wizard-body/wizard-body.component.d.ts +3 -7
  144. package/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.d.ts +1 -1
  145. package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +0 -16
  146. package/fundamental-ngx-platform-v0.48.0-rc.21.tgz +0 -0
  147. package/search-field/search-field-mobile/search-field-mobile.module.d.ts +0 -7
@@ -1,6 +1,5 @@
1
- import { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, forwardRef, signal, ViewEncapsulation } from '@angular/core';
2
2
  import equal from 'fast-deep-equal/es6';
3
- import { BehaviorSubject } from 'rxjs';
4
3
  import { DialogRef } from '@fundamental-ngx/core/dialog';
5
4
  import { CdkScrollable } from '@angular/cdk/overlay';
6
5
  import { FormsModule } from '@angular/forms';
@@ -29,10 +28,8 @@ export class GroupingComponent {
29
28
  this.field = null;
30
29
  /** Table columns */
31
30
  this.columns = [];
32
- /** @hidden */
33
- this._isResetAvailableSubject$ = new BehaviorSubject(false);
34
31
  /** Indicates if reset command is active */
35
- this.isResetAvailable$ = this._isResetAvailableSubject$.asObservable();
32
+ this.isResetAvailable$ = signal(false);
36
33
  /** @hidden */
37
34
  this.SORT_DIRECTION = SortDirection;
38
35
  /** Not Grouped Option model value */
@@ -48,7 +45,7 @@ export class GroupingComponent {
48
45
  reset() {
49
46
  this.direction = this._initialGrouping.direction;
50
47
  this.field = this._initialGrouping.field;
51
- this._isResetAvailableSubject$.next(false);
48
+ this.isResetAvailable$.set(false);
52
49
  }
53
50
  /** Close dialog */
54
51
  cancel() {
@@ -73,7 +70,7 @@ export class GroupingComponent {
73
70
  _onModelChange() {
74
71
  // Use this coercion cause fd-radio-button triggers extra ngModelChange events on initial phase
75
72
  const isInitialDiffers = this.direction !== this._initialGrouping.direction || this.field !== this._initialGrouping.field;
76
- this._isResetAvailableSubject$.next(isInitialDiffers);
73
+ this.isResetAvailable$.set(isInitialDiffers);
77
74
  }
78
75
  /** @hidden */
79
76
  _setInitialGrouping() {
@@ -92,7 +89,7 @@ export class GroupingComponent {
92
89
  if (equal(this._initialGrouping, appliedGrouping)) {
93
90
  return;
94
91
  }
95
- this._isResetAvailableSubject$.next(true);
92
+ this.isResetAvailable$.set(true);
96
93
  }
97
94
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: GroupingComponent, deps: [{ token: i1.DialogRef }, { token: i2.Table }], target: i0.ɵɵFactoryTarget.Component }); }
98
95
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.4", type: GroupingComponent, isStandalone: true, selector: "ng-component", providers: [{ provide: RESETTABLE_TOKEN, useExisting: forwardRef(() => GroupingComponent) }], ngImport: i0, template: "<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.groupDialogHeader' | fdTranslate }}</h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupOrderHeader' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.ASC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"asc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_groupOrderChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupOrderAsc' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.DESC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"desc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_groupOrderChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupOrderDesc' | fdTranslate }}</span>\n </li>\n </ul>\n\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupByHeader' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"NOT_GROUPED_OPTION_VALUE === field\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"NOT_GROUPED_OPTION_VALUE\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_groupFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.groupDialogNotGroupedLabel' | fdTranslate }}</span>\n </li>\n @for (column of columns; track column) {\n <li fd-list-item [selected]=\"column.key === field\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"column.key\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_groupFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ column.label }}</span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.groupDialogConfirmBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'platformTable.groupDialogCancelBtnLabel' | fdTranslate\"\n fdkInitialFocus\n (click)=\"cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: ResetButtonComponent, selector: "fdp-table-reset-button" }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "directive", type: ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole"], outputs: ["keyDown"] }, { kind: "component", type: RadioButtonComponent, selector: "fd-radio-button", inputs: ["ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "title", "tabIndex", "state", "disabled", "selectedValue", "name", "id", "value", "required", "standalone"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
@@ -122,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
122
119
  FdTranslatePipe
123
120
  ], template: "<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.groupDialogHeader' | fdTranslate }}</h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupOrderHeader' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.ASC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"asc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_groupOrderChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupOrderAsc' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.DESC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"desc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_groupOrderChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupOrderDesc' | fdTranslate }}</span>\n </li>\n </ul>\n\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.groupDialogGroupByHeader' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"NOT_GROUPED_OPTION_VALUE === field\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"NOT_GROUPED_OPTION_VALUE\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_groupFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.groupDialogNotGroupedLabel' | fdTranslate }}</span>\n </li>\n @for (column of columns; track column) {\n <li fd-list-item [selected]=\"column.key === field\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"column.key\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_groupFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ column.label }}</span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.groupDialogConfirmBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'platformTable.groupDialogCancelBtnLabel' | fdTranslate\"\n fdkInitialFocus\n (click)=\"cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n" }]
124
121
  }], ctorParameters: () => [{ type: i1.DialogRef }, { type: i2.Table }] });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXZpZXctc2V0dGluZ3MtZGlhbG9nL2dyb3VwaW5nL2dyb3VwaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUvY29tcG9uZW50cy90YWJsZS12aWV3LXNldHRpbmdzLWRpYWxvZy9ncm91cGluZy9ncm91cGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEtBQUssTUFBTSxxQkFBcUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDckIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3hCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUNILGFBQWEsRUFDYix3QkFBd0IsRUFDeEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNyQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQXlCLE1BQU0seUNBQXlDLENBQUM7QUFDdEcsT0FBTyxFQUFFLG9CQUFvQixFQUFjLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7O0FBa0IvRyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUN0QyxNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUM7QUErQjVDLE1BQU0sT0FBTyxpQkFBaUI7SUF5QjFCLGNBQWM7SUFDZCxZQUNXLFNBQTZDLEVBQ25DLE1BQWE7UUFEdkIsY0FBUyxHQUFULFNBQVMsQ0FBb0M7UUFDbkMsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQXhCbEMsNkJBQTZCO1FBQzdCLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBRTVCLG9CQUFvQjtRQUNYLFlBQU8sR0FBZ0MsRUFBRSxDQUFDO1FBRW5ELGNBQWM7UUFDTiw4QkFBeUIsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFbEcsMkNBQTJDO1FBQ2xDLHNCQUFpQixHQUF3QixJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFaEcsY0FBYztRQUNMLG1CQUFjLEdBQUcsYUFBYSxDQUFDO1FBRXhDLHFDQUFxQztRQUM1Qiw2QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztRQVV6RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUVqQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxpQkFBaUIsQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksd0JBQXdCLENBQUM7UUFFcEQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxLQUFLO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO1FBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUN6QyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsTUFBTTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsT0FBTztRQUNILE1BQU0sTUFBTSxHQUFrQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDL0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWM7SUFDZCxpQkFBaUIsQ0FBQyxTQUF3QjtRQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7SUFDZCxpQkFBaUIsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNkLGNBQWM7UUFDViwrRkFBK0Y7UUFDL0YsTUFBTSxnQkFBZ0IsR0FDbEIsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUNyRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGNBQWM7SUFDTixtQkFBbUI7UUFDdkIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxjQUFjLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3BCLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxJQUFJLHdCQUF3QjtZQUN6RCxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsSUFBSSxpQkFBaUI7U0FDN0QsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ04sdUJBQXVCO1FBQzNCLE1BQU0sZUFBZSxHQUFrQztZQUNuRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzVCLENBQUM7UUFFRixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLEVBQUU7WUFDL0MsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDOzhHQXJHUSxpQkFBaUI7a0dBQWpCLGlCQUFpQiwyREEzQmYsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQywwQkN4RGhHLG1pSEF1RkEsNENEMUJRLGVBQWUsc0dBQ2YscUJBQXFCLDZEQUNyQixpQkFBaUIsbUZBQ2pCLGdCQUFnQiwwREFDaEIsbUJBQW1CLGtGQUNuQixjQUFjLHVMQUNkLGlCQUFpQiwyREFDakIsb0JBQW9CLG1FQUdwQixtQkFBbUIsMkRBQ25CLGFBQWEsOFFBQ2Isd0JBQXdCLDJJQUN4QixrQkFBa0IsNkZBQ2xCLGlCQUFpQiw4TUFDakIsb0JBQW9CLG1PQUNwQixXQUFXLCtWQUNYLHFCQUFxQiw2REFDckIsa0JBQWtCLG9JQUNsQixlQUFlOzsyRkFHVixpQkFBaUI7a0JBN0I3QixTQUFTO2dDQUVLLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDLG1CQUMzRSx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUDt3QkFDTCxlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYix3QkFBd0I7d0JBQ3hCLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGVBQWU7cUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwvZXM2JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcblxuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcblxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7XG4gICAgQmFyRWxlbWVudERpcmVjdGl2ZSxcbiAgICBCYXJMZWZ0RGlyZWN0aXZlLFxuICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgIEJ1dHRvbkJhckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7XG4gICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7XG4gICAgTGlzdENvbXBvbmVudCxcbiAgICBMaXN0R3JvdXBIZWFkZXJEaXJlY3RpdmUsXG4gICAgTGlzdEl0ZW1Db21wb25lbnQsXG4gICAgTGlzdFRpdGxlRGlyZWN0aXZlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IFJhZGlvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3JhZGlvJztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24sIFRhYmxlLCBUYWJsZURpYWxvZ0NvbW1vbkRhdGEgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMnO1xuaW1wb3J0IHsgUmVzZXRCdXR0b25Db21wb25lbnQsIFJlc2V0dGFibGUsIFJFU0VUVEFCTEVfVE9LRU4gfSBmcm9tICcuLi8uLi9yZXNldC1idXR0b24vcmVzZXQtYnV0dG9uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0dGluZ3NHcm91cERpYWxvZ0NvbHVtbiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBrZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXR0aW5nc0dyb3VwRGlhbG9nRGF0YSBleHRlbmRzIFRhYmxlRGlhbG9nQ29tbW9uRGF0YSB7XG4gICAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xuICAgIGZpZWxkOiBzdHJpbmcgfCBudWxsO1xuICAgIGNvbHVtbnM6IFNldHRpbmdzR3JvdXBEaWFsb2dDb2x1bW5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXR0aW5nc0dyb3VwRGlhbG9nUmVzdWx0RGF0YSB7XG4gICAgZmllbGQ6IHN0cmluZyB8IG51bGw7XG4gICAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xufVxuXG5jb25zdCBOT1RfR1JPVVBFRF9PUFRJT05fVkFMVUUgPSBudWxsO1xuY29uc3QgSU5JVElBTF9ESVJFQ1RJT04gPSBTb3J0RGlyZWN0aW9uLkFTQztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL2dyb3VwaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFJFU0VUVEFCTEVfVE9LRU4sIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEdyb3VwaW5nQ29tcG9uZW50KSB9XSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudCxcbiAgICAgICAgVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBCYXJSaWdodERpcmVjdGl2ZSxcbiAgICAgICAgUmVzZXRCdXR0b25Db21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICAgICAgTGlzdENvbXBvbmVudCxcbiAgICAgICAgTGlzdEdyb3VwSGVhZGVyRGlyZWN0aXZlLFxuICAgICAgICBMaXN0VGl0bGVEaXJlY3RpdmUsXG4gICAgICAgIExpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBSYWRpb0J1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQmFyQ29tcG9uZW50LFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEdyb3VwaW5nQ29tcG9uZW50IGltcGxlbWVudHMgUmVzZXR0YWJsZSB7XG4gICAgLyoqIEN1cnJlbnQgc2VsZWN0ZWQgZGlyZWN0aW9uICovXG4gICAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xuXG4gICAgLyoqIEN1cnJlbnQgc2VsZWN0ZWQgZmllbGQgKi9cbiAgICBmaWVsZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogVGFibGUgY29sdW1ucyAqL1xuICAgIHJlYWRvbmx5IGNvbHVtbnM6IFNldHRpbmdzR3JvdXBEaWFsb2dDb2x1bW5bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc1Jlc2V0QXZhaWxhYmxlU3ViamVjdCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIEluZGljYXRlcyBpZiByZXNldCBjb21tYW5kIGlzIGFjdGl2ZSAqL1xuICAgIHJlYWRvbmx5IGlzUmVzZXRBdmFpbGFibGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5faXNSZXNldEF2YWlsYWJsZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBTT1JUX0RJUkVDVElPTiA9IFNvcnREaXJlY3Rpb247XG5cbiAgICAvKiogTm90IEdyb3VwZWQgT3B0aW9uIG1vZGVsIHZhbHVlICovXG4gICAgcmVhZG9ubHkgTk9UX0dST1VQRURfT1BUSU9OX1ZBTFVFID0gTk9UX0dST1VQRURfT1BUSU9OX1ZBTFVFO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsR3JvdXBpbmc6IFNldHRpbmdzR3JvdXBEaWFsb2dSZXN1bHREYXRhO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogRGlhbG9nUmVmPFNldHRpbmdzR3JvdXBEaWFsb2dEYXRhPixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGU6IFRhYmxlXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuXG4gICAgICAgIHRoaXMuY29sdW1ucyA9IGRhdGEuY29sdW1ucyB8fCBbXTtcblxuICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IGRhdGEuZGlyZWN0aW9uID8/IElOSVRJQUxfRElSRUNUSU9OO1xuICAgICAgICB0aGlzLmZpZWxkID0gZGF0YS5maWVsZCA/PyBOT1RfR1JPVVBFRF9PUFRJT05fVkFMVUU7XG5cbiAgICAgICAgdGhpcy5fc2V0SW5pdGlhbEdyb3VwaW5nKCk7XG5cbiAgICAgICAgdGhpcy5fY29tcGFyZUluaXRpYWxHcm91cGluZygpO1xuICAgIH1cblxuICAgIC8qKiBSZXNldCBjaGFuZ2VzIHRvIHRoZSBpbml0aWFsIHN0YXRlICovXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gdGhpcy5faW5pdGlhbEdyb3VwaW5nLmRpcmVjdGlvbjtcbiAgICAgICAgdGhpcy5maWVsZCA9IHRoaXMuX2luaXRpYWxHcm91cGluZy5maWVsZDtcbiAgICAgICAgdGhpcy5faXNSZXNldEF2YWlsYWJsZVN1YmplY3QkLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBDbG9zZSBkaWFsb2cgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICAgIH1cblxuICAgIC8qKiBDb25maXJtIGNoYW5nZXMgYW5kIGNsb3NlIGRpYWxvZyAqL1xuICAgIGNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogU2V0dGluZ3NHcm91cERpYWxvZ1Jlc3VsdERhdGEgPSB7IGZpZWxkOiB0aGlzLmZpZWxkLCBkaXJlY3Rpb246IHRoaXMuZGlyZWN0aW9uIH07XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ3JvdXBPcmRlckNoYW5nZShkaXJlY3Rpb246IFNvcnREaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgICAgIHRoaXMuX29uTW9kZWxDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ncm91cEZpZWxkQ2hhbmdlKGZpZWxkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWVsZCA9IGZpZWxkO1xuICAgICAgICB0aGlzLl9vbk1vZGVsQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Nb2RlbENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVXNlIHRoaXMgY29lcmNpb24gY2F1c2UgZmQtcmFkaW8tYnV0dG9uIHRyaWdnZXJzIGV4dHJhIG5nTW9kZWxDaGFuZ2UgZXZlbnRzIG9uIGluaXRpYWwgcGhhc2VcbiAgICAgICAgY29uc3QgaXNJbml0aWFsRGlmZmVycyA9XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbiAhPT0gdGhpcy5faW5pdGlhbEdyb3VwaW5nLmRpcmVjdGlvbiB8fCB0aGlzLmZpZWxkICE9PSB0aGlzLl9pbml0aWFsR3JvdXBpbmcuZmllbGQ7XG4gICAgICAgIHRoaXMuX2lzUmVzZXRBdmFpbGFibGVTdWJqZWN0JC5uZXh0KGlzSW5pdGlhbERpZmZlcnMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0SW5pdGlhbEdyb3VwaW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbml0aWFsR3JvdXBpbmcgPSAodGhpcy5fdGFibGUuaW5pdGlhbFN0YXRlPy5pbml0aWFsR3JvdXBCeSB8fCBbXSlbMF07XG4gICAgICAgIHRoaXMuX2luaXRpYWxHcm91cGluZyA9IHtcbiAgICAgICAgICAgIGZpZWxkOiBpbml0aWFsR3JvdXBpbmc/LmZpZWxkID8/IE5PVF9HUk9VUEVEX09QVElPTl9WQUxVRSxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogaW5pdGlhbEdyb3VwaW5nPy5kaXJlY3Rpb24gPz8gSU5JVElBTF9ESVJFQ1RJT05cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbXBhcmVJbml0aWFsR3JvdXBpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFwcGxpZWRHcm91cGluZzogU2V0dGluZ3NHcm91cERpYWxvZ1Jlc3VsdERhdGEgPSB7XG4gICAgICAgICAgICBmaWVsZDogdGhpcy5maWVsZCxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5kaXJlY3Rpb25cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZXF1YWwodGhpcy5faW5pdGlhbEdyb3VwaW5nLCBhcHBsaWVkR3JvdXBpbmcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pc1Jlc2V0QXZhaWxhYmxlU3ViamVjdCQubmV4dCh0cnVlKTtcbiAgICB9XG59XG4iLCI8ZmQtZGlhbG9nPlxuICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8aDQgZmQtdGl0bGUgW2hlYWRlclNpemVdPVwiNFwiPnt7ICdwbGF0Zm9ybVRhYmxlLmdyb3VwRGlhbG9nSGVhZGVyJyB8IGZkVHJhbnNsYXRlIH19PC9oND5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtcmVzZXQtYnV0dG9uPjwvZmRwLXRhYmxlLXJlc2V0LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuXG4gICAgPGZkLWRpYWxvZy1ib2R5PlxuICAgICAgICA8dWwgZmQtbGlzdCBbc2VsZWN0aW9uXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7ICdwbGF0Zm9ybVRhYmxlLmdyb3VwRGlhbG9nR3JvdXBPcmRlckhlYWRlcicgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtIFtzZWxlY3RlZF09XCJkaXJlY3Rpb24gPT09IFNPUlRfRElSRUNUSU9OLkFTQ1wiPlxuICAgICAgICAgICAgICAgIDxmZC1yYWRpby1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNvcnQtb3JkZXJcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImRpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9ncm91cE9yZGVyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2ZkLXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7ICdwbGF0Zm9ybVRhYmxlLmdyb3VwRGlhbG9nR3JvdXBPcmRlckFzYycgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtIFtzZWxlY3RlZF09XCJkaXJlY3Rpb24gPT09IFNPUlRfRElSRUNUSU9OLkRFU0NcIj5cbiAgICAgICAgICAgICAgICA8ZmQtcmFkaW8tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzb3J0LW9yZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJkZXNjXCJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX2dyb3VwT3JkZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgJ3BsYXRmb3JtVGFibGUuZ3JvdXBEaWFsb2dHcm91cE9yZGVyRGVzYycgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG5cbiAgICAgICAgPHVsIGZkLWxpc3QgW3NlbGVjdGlvbl09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8bGkgZmQtbGlzdC1ncm91cC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAncGxhdGZvcm1UYWJsZS5ncm91cERpYWxvZ0dyb3VwQnlIZWFkZXInIHwgZmRUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSBbc2VsZWN0ZWRdPVwiTk9UX0dST1VQRURfT1BUSU9OX1ZBTFVFID09PSBmaWVsZFwiPlxuICAgICAgICAgICAgICAgIDxmZC1yYWRpby1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNvcnQtYnlcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiTk9UX0dST1VQRURfT1BUSU9OX1ZBTFVFXCJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfZ3JvdXBGaWVsZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAncGxhdGZvcm1UYWJsZS5ncm91cERpYWxvZ05vdEdyb3VwZWRMYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSBbc2VsZWN0ZWRdPVwiY29sdW1uLmtleSA9PT0gZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNvcnQtYnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9ncm91cEZpZWxkQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgY29sdW1uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgPC9mZC1kaWFsb2ctYm9keT5cblxuICAgIDxmZC1kaWFsb2ctZm9vdGVyPlxuICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVGFibGUuZ3JvdXBEaWFsb2dDb25maXJtQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm0oKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLmdyb3VwRGlhbG9nQ2FuY2VsQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICA+XG4gICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG48L2ZkLWRpYWxvZz5cbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXZpZXctc2V0dGluZ3MtZGlhbG9nL2dyb3VwaW5nL2dyb3VwaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUvY29tcG9uZW50cy90YWJsZS12aWV3LXNldHRpbmdzLWRpYWxvZy9ncm91cGluZy9ncm91cGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxLQUFLLE1BQU0scUJBQXFCLENBQUM7QUFFeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUNILG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNyQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDeEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQ0gsYUFBYSxFQUNiLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ3JCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBeUIsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RyxPQUFPLEVBQUUsb0JBQW9CLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7QUFrQi9HLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQztBQStCNUMsTUFBTSxPQUFPLGlCQUFpQjtJQXNCMUIsY0FBYztJQUNkLFlBQ1csU0FBNkMsRUFDbkMsTUFBYTtRQUR2QixjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUNuQyxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBckJsQyw2QkFBNkI7UUFDN0IsVUFBSyxHQUFrQixJQUFJLENBQUM7UUFFNUIsb0JBQW9CO1FBQ1gsWUFBTyxHQUFnQyxFQUFFLENBQUM7UUFFbkQsMkNBQTJDO1FBQ2xDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQyxjQUFjO1FBQ0wsbUJBQWMsR0FBRyxhQUFhLENBQUM7UUFFeEMscUNBQXFDO1FBQzVCLDZCQUF3QixHQUFHLHdCQUF3QixDQUFDO1FBVXpELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBRWpDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLGlCQUFpQixDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSx3QkFBd0IsQ0FBQztRQUVwRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUUzQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLEtBQUs7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7UUFDakQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixNQUFNO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxPQUFPO1FBQ0gsTUFBTSxNQUFNLEdBQWtDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvRixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsY0FBYztJQUNkLGlCQUFpQixDQUFDLFNBQXdCO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNkLGlCQUFpQixDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjO0lBQ2QsY0FBYztRQUNWLCtGQUErRjtRQUMvRixNQUFNLGdCQUFnQixHQUNsQixJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1FBQ3JHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYztJQUNOLG1CQUFtQjtRQUN2QixNQUFNLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDcEIsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLElBQUksd0JBQXdCO1lBQ3pELFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxJQUFJLGlCQUFpQjtTQUM3RCxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDTix1QkFBdUI7UUFDM0IsTUFBTSxlQUFlLEdBQWtDO1lBQ25ELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDNUIsQ0FBQztRQUVGLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsRUFBRTtZQUMvQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OEdBbEdRLGlCQUFpQjtrR0FBakIsaUJBQWlCLDJEQTNCZixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLDBCQ3ZEaEcsbWlIQXVGQSw0Q0QzQlEsZUFBZSxzR0FDZixxQkFBcUIsNkRBQ3JCLGlCQUFpQixtRkFDakIsZ0JBQWdCLDBEQUNoQixtQkFBbUIsa0ZBQ25CLGNBQWMsdUxBQ2QsaUJBQWlCLDJEQUNqQixvQkFBb0IsbUVBR3BCLG1CQUFtQiwyREFDbkIsYUFBYSw4UUFDYix3QkFBd0IsMklBQ3hCLGtCQUFrQiw2RkFDbEIsaUJBQWlCLDhNQUNqQixvQkFBb0IsbU9BQ3BCLFdBQVcsK1ZBQ1gscUJBQXFCLDZEQUNyQixrQkFBa0Isb0lBQ2xCLGVBQWU7OzJGQUdWLGlCQUFpQjtrQkE3QjdCLFNBQVM7Z0NBRUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsbUJBQzNFLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQO3dCQUNMLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLHdCQUF3Qjt3QkFDeEIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsV0FBVzt3QkFDWCxxQkFBcUI7d0JBQ3JCLGtCQUFrQjt3QkFDbEIsZUFBZTtxQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBzaWduYWwsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsL2VzNic7XG5cbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgQnV0dG9uQmFyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9iYXInO1xuaW1wb3J0IHtcbiAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHtcbiAgICBMaXN0Q29tcG9uZW50LFxuICAgIExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSxcbiAgICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgICBMaXN0VGl0bGVEaXJlY3RpdmVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHsgUmFkaW9CdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcmFkaW8nO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiwgVGFibGUsIFRhYmxlRGlhbG9nQ29tbW9uRGF0YSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vdGFibGUtaGVscGVycyc7XG5pbXBvcnQgeyBSZXNldEJ1dHRvbkNvbXBvbmVudCwgUmVzZXR0YWJsZSwgUkVTRVRUQUJMRV9UT0tFTiB9IGZyb20gJy4uLy4uL3Jlc2V0LWJ1dHRvbi9yZXNldC1idXR0b24uY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBTZXR0aW5nc0dyb3VwRGlhbG9nQ29sdW1uIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdzR3JvdXBEaWFsb2dEYXRhIGV4dGVuZHMgVGFibGVEaWFsb2dDb21tb25EYXRhIHtcbiAgICBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG4gICAgZmllbGQ6IHN0cmluZyB8IG51bGw7XG4gICAgY29sdW1uczogU2V0dGluZ3NHcm91cERpYWxvZ0NvbHVtbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdzR3JvdXBEaWFsb2dSZXN1bHREYXRhIHtcbiAgICBmaWVsZDogc3RyaW5nIHwgbnVsbDtcbiAgICBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG59XG5cbmNvbnN0IE5PVF9HUk9VUEVEX09QVElPTl9WQUxVRSA9IG51bGw7XG5jb25zdCBJTklUSUFMX0RJUkVDVElPTiA9IFNvcnREaXJlY3Rpb24uQVNDO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXBpbmcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogUkVTRVRUQUJMRV9UT0tFTiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gR3JvdXBpbmdDb21wb25lbnQpIH1dLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgQmFyTGVmdERpcmVjdGl2ZSxcbiAgICAgICAgQmFyRWxlbWVudERpcmVjdGl2ZSxcbiAgICAgICAgVGl0bGVDb21wb25lbnQsXG4gICAgICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgICAgICBSZXNldEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgU2Nyb2xsYmFyRGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgICAgICBMaXN0Q29tcG9uZW50LFxuICAgICAgICBMaXN0R3JvdXBIZWFkZXJEaXJlY3RpdmUsXG4gICAgICAgIExpc3RUaXRsZURpcmVjdGl2ZSxcbiAgICAgICAgTGlzdEl0ZW1Db21wb25lbnQsXG4gICAgICAgIFJhZGlvQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgR3JvdXBpbmdDb21wb25lbnQgaW1wbGVtZW50cyBSZXNldHRhYmxlIHtcbiAgICAvKiogQ3VycmVudCBzZWxlY3RlZCBkaXJlY3Rpb24gKi9cbiAgICBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG5cbiAgICAvKiogQ3VycmVudCBzZWxlY3RlZCBmaWVsZCAqL1xuICAgIGZpZWxkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBUYWJsZSBjb2x1bW5zICovXG4gICAgcmVhZG9ubHkgY29sdW1uczogU2V0dGluZ3NHcm91cERpYWxvZ0NvbHVtbltdID0gW107XG5cbiAgICAvKiogSW5kaWNhdGVzIGlmIHJlc2V0IGNvbW1hbmQgaXMgYWN0aXZlICovXG4gICAgcmVhZG9ubHkgaXNSZXNldEF2YWlsYWJsZSQgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBTT1JUX0RJUkVDVElPTiA9IFNvcnREaXJlY3Rpb247XG5cbiAgICAvKiogTm90IEdyb3VwZWQgT3B0aW9uIG1vZGVsIHZhbHVlICovXG4gICAgcmVhZG9ubHkgTk9UX0dST1VQRURfT1BUSU9OX1ZBTFVFID0gTk9UX0dST1VQRURfT1BUSU9OX1ZBTFVFO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsR3JvdXBpbmc6IFNldHRpbmdzR3JvdXBEaWFsb2dSZXN1bHREYXRhO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogRGlhbG9nUmVmPFNldHRpbmdzR3JvdXBEaWFsb2dEYXRhPixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGU6IFRhYmxlXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuXG4gICAgICAgIHRoaXMuY29sdW1ucyA9IGRhdGEuY29sdW1ucyB8fCBbXTtcblxuICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IGRhdGEuZGlyZWN0aW9uID8/IElOSVRJQUxfRElSRUNUSU9OO1xuICAgICAgICB0aGlzLmZpZWxkID0gZGF0YS5maWVsZCA/PyBOT1RfR1JPVVBFRF9PUFRJT05fVkFMVUU7XG5cbiAgICAgICAgdGhpcy5fc2V0SW5pdGlhbEdyb3VwaW5nKCk7XG5cbiAgICAgICAgdGhpcy5fY29tcGFyZUluaXRpYWxHcm91cGluZygpO1xuICAgIH1cblxuICAgIC8qKiBSZXNldCBjaGFuZ2VzIHRvIHRoZSBpbml0aWFsIHN0YXRlICovXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gdGhpcy5faW5pdGlhbEdyb3VwaW5nLmRpcmVjdGlvbjtcbiAgICAgICAgdGhpcy5maWVsZCA9IHRoaXMuX2luaXRpYWxHcm91cGluZy5maWVsZDtcbiAgICAgICAgdGhpcy5pc1Jlc2V0QXZhaWxhYmxlJC5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBDbG9zZSBkaWFsb2cgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICAgIH1cblxuICAgIC8qKiBDb25maXJtIGNoYW5nZXMgYW5kIGNsb3NlIGRpYWxvZyAqL1xuICAgIGNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogU2V0dGluZ3NHcm91cERpYWxvZ1Jlc3VsdERhdGEgPSB7IGZpZWxkOiB0aGlzLmZpZWxkLCBkaXJlY3Rpb246IHRoaXMuZGlyZWN0aW9uIH07XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ3JvdXBPcmRlckNoYW5nZShkaXJlY3Rpb246IFNvcnREaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgICAgIHRoaXMuX29uTW9kZWxDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ncm91cEZpZWxkQ2hhbmdlKGZpZWxkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWVsZCA9IGZpZWxkO1xuICAgICAgICB0aGlzLl9vbk1vZGVsQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Nb2RlbENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVXNlIHRoaXMgY29lcmNpb24gY2F1c2UgZmQtcmFkaW8tYnV0dG9uIHRyaWdnZXJzIGV4dHJhIG5nTW9kZWxDaGFuZ2UgZXZlbnRzIG9uIGluaXRpYWwgcGhhc2VcbiAgICAgICAgY29uc3QgaXNJbml0aWFsRGlmZmVycyA9XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbiAhPT0gdGhpcy5faW5pdGlhbEdyb3VwaW5nLmRpcmVjdGlvbiB8fCB0aGlzLmZpZWxkICE9PSB0aGlzLl9pbml0aWFsR3JvdXBpbmcuZmllbGQ7XG4gICAgICAgIHRoaXMuaXNSZXNldEF2YWlsYWJsZSQuc2V0KGlzSW5pdGlhbERpZmZlcnMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0SW5pdGlhbEdyb3VwaW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbml0aWFsR3JvdXBpbmcgPSAodGhpcy5fdGFibGUuaW5pdGlhbFN0YXRlPy5pbml0aWFsR3JvdXBCeSB8fCBbXSlbMF07XG4gICAgICAgIHRoaXMuX2luaXRpYWxHcm91cGluZyA9IHtcbiAgICAgICAgICAgIGZpZWxkOiBpbml0aWFsR3JvdXBpbmc/LmZpZWxkID8/IE5PVF9HUk9VUEVEX09QVElPTl9WQUxVRSxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogaW5pdGlhbEdyb3VwaW5nPy5kaXJlY3Rpb24gPz8gSU5JVElBTF9ESVJFQ1RJT05cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbXBhcmVJbml0aWFsR3JvdXBpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFwcGxpZWRHcm91cGluZzogU2V0dGluZ3NHcm91cERpYWxvZ1Jlc3VsdERhdGEgPSB7XG4gICAgICAgICAgICBmaWVsZDogdGhpcy5maWVsZCxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5kaXJlY3Rpb25cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZXF1YWwodGhpcy5faW5pdGlhbEdyb3VwaW5nLCBhcHBsaWVkR3JvdXBpbmcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzUmVzZXRBdmFpbGFibGUkLnNldCh0cnVlKTtcbiAgICB9XG59XG4iLCI8ZmQtZGlhbG9nPlxuICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8aDQgZmQtdGl0bGUgW2hlYWRlclNpemVdPVwiNFwiPnt7ICdwbGF0Zm9ybVRhYmxlLmdyb3VwRGlhbG9nSGVhZGVyJyB8IGZkVHJhbnNsYXRlIH19PC9oND5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtcmVzZXQtYnV0dG9uPjwvZmRwLXRhYmxlLXJlc2V0LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuXG4gICAgPGZkLWRpYWxvZy1ib2R5PlxuICAgICAgICA8dWwgZmQtbGlzdCBbc2VsZWN0aW9uXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7ICdwbGF0Zm9ybVRhYmxlLmdyb3VwRGlhbG9nR3JvdXBPcmRlckhlYWRlcicgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtIFtzZWxlY3RlZF09XCJkaXJlY3Rpb24gPT09IFNPUlRfRElSRUNUSU9OLkFTQ1wiPlxuICAgICAgICAgICAgICAgIDxmZC1yYWRpby1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNvcnQtb3JkZXJcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImRpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9ncm91cE9yZGVyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2ZkLXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7ICdwbGF0Zm9ybVRhYmxlLmdyb3VwRGlhbG9nR3JvdXBPcmRlckFzYycgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtIFtzZWxlY3RlZF09XCJkaXJlY3Rpb24gPT09IFNPUlRfRElSRUNUSU9OLkRFU0NcIj5cbiAgICAgICAgICAgICAgICA8ZmQtcmFkaW8tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzb3J0LW9yZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJkZXNjXCJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX2dyb3VwT3JkZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgJ3BsYXRmb3JtVGFibGUuZ3JvdXBEaWFsb2dHcm91cE9yZGVyRGVzYycgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG5cbiAgICAgICAgPHVsIGZkLWxpc3QgW3NlbGVjdGlvbl09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8bGkgZmQtbGlzdC1ncm91cC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAncGxhdGZvcm1UYWJsZS5ncm91cERpYWxvZ0dyb3VwQnlIZWFkZXInIHwgZmRUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSBbc2VsZWN0ZWRdPVwiTk9UX0dST1VQRURfT1BUSU9OX1ZBTFVFID09PSBmaWVsZFwiPlxuICAgICAgICAgICAgICAgIDxmZC1yYWRpby1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNvcnQtYnlcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiTk9UX0dST1VQRURfT1BUSU9OX1ZBTFVFXCJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfZ3JvdXBGaWVsZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAncGxhdGZvcm1UYWJsZS5ncm91cERpYWxvZ05vdEdyb3VwZWRMYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSBbc2VsZWN0ZWRdPVwiY29sdW1uLmtleSA9PT0gZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNvcnQtYnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9ncm91cEZpZWxkQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgY29sdW1uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgPC9mZC1kaWFsb2ctYm9keT5cblxuICAgIDxmZC1kaWFsb2ctZm9vdGVyPlxuICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVGFibGUuZ3JvdXBEaWFsb2dDb25maXJtQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm0oKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLmdyb3VwRGlhbG9nQ2FuY2VsQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICA+XG4gICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG48L2ZkLWRpYWxvZz5cbiJdfQ==
@@ -1,6 +1,5 @@
1
- import { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, forwardRef, signal, ViewEncapsulation } from '@angular/core';
2
2
  import equal from 'fast-deep-equal/es6';
3
- import { BehaviorSubject } from 'rxjs';
4
3
  import { DialogRef } from '@fundamental-ngx/core/dialog';
5
4
  import { CdkScrollable } from '@angular/cdk/overlay';
6
5
  import { FormsModule } from '@angular/forms';
@@ -27,10 +26,8 @@ export class SortingComponent {
27
26
  this._table = _table;
28
27
  /** Table columns */
29
28
  this.columns = [];
30
- /** @hidden */
31
- this._isResetAvailableSubject$ = new BehaviorSubject(false);
32
29
  /** Indicates when reset command is available */
33
- this.isResetAvailable$ = this._isResetAvailableSubject$.asObservable();
30
+ this.isResetAvailable$ = signal(false);
34
31
  /** @hidden */
35
32
  this.SORT_DIRECTION = SortDirection;
36
33
  /** @hidden */
@@ -47,7 +44,7 @@ export class SortingComponent {
47
44
  reset() {
48
45
  this.direction = this._initialSorting.direction;
49
46
  this.field = this._initialSorting.field;
50
- this._isResetAvailableSubject$.next(false);
47
+ this.isResetAvailable$.set(false);
51
48
  }
52
49
  /** Close dialog */
53
50
  cancel() {
@@ -72,7 +69,7 @@ export class SortingComponent {
72
69
  _onModelChange() {
73
70
  // Use this coercion cause fd-radio-button triggers extra ngModelChange events on initial phase
74
71
  const isInitialDiffers = this.direction !== this._initialSorting.direction || this.field !== this._initialSorting.field;
75
- this._isResetAvailableSubject$.next(isInitialDiffers);
72
+ this.isResetAvailable$.set(isInitialDiffers);
76
73
  }
77
74
  /**
78
75
  * @hidden
@@ -97,7 +94,7 @@ export class SortingComponent {
97
94
  if (equal(this._initialSorting, appliedSorting)) {
98
95
  return;
99
96
  }
100
- this._isResetAvailableSubject$.next(true);
97
+ this.isResetAvailable$.set(true);
101
98
  }
102
99
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SortingComponent, deps: [{ token: i1.DialogRef }, { token: i2.Table }], target: i0.ɵɵFactoryTarget.Component }); }
103
100
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.4", type: SortingComponent, isStandalone: true, selector: "ng-component", providers: [{ provide: RESETTABLE_TOKEN, useExisting: forwardRef(() => SortingComponent) }], ngImport: i0, template: "<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.sortDialogHeader' | fdTranslate }}</h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.sortDialogSortOrderHeader' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.ASC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"asc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_sortDirectionChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.sortDialogSortOrderAsc' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.DESC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"desc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_sortDirectionChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.sortDialogSortOrderDesc' | fdTranslate }}</span>\n </li>\n </ul>\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.sortDialogSortByHeader' | fdTranslate }}</span>\n </li>\n @if (allowDisablingSorting) {\n <li fd-list-item [selected]=\"field === NOT_SORTED_OPTION_VALUE\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"NOT_SORTED_OPTION_VALUE\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_sortFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.sortDialogNotSortedLabel' | fdTranslate }}</span>\n </li>\n }\n @for (column of columns; track column) {\n <li fd-list-item [selected]=\"column.key === field\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"column.key\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_sortFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ column.label }}</span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.sortDialogConfirmBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'platformTable.sortDialogCancelBtnLabel' | fdTranslate\"\n fdkInitialFocus\n (click)=\"cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: ResetButtonComponent, selector: "fdp-table-reset-button" }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "directive", type: ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole"], outputs: ["keyDown"] }, { kind: "component", type: RadioButtonComponent, selector: "fd-radio-button", inputs: ["ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "title", "tabIndex", "state", "disabled", "selectedValue", "name", "id", "value", "required", "standalone"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
@@ -127,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
127
124
  FdTranslatePipe
128
125
  ], template: "<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h4 fd-title [headerSize]=\"4\">{{ 'platformTable.sortDialogHeader' | fdTranslate }}</h4>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body>\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.sortDialogSortOrderHeader' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.ASC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"asc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_sortDirectionChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.sortDialogSortOrderAsc' | fdTranslate }}</span>\n </li>\n <li fd-list-item [selected]=\"direction === SORT_DIRECTION.DESC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"desc\"\n state=\"default\"\n [ngModel]=\"direction\"\n (ngModelChange)=\"_sortDirectionChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.sortDialogSortOrderDesc' | fdTranslate }}</span>\n </li>\n </ul>\n <ul fd-list [selection]=\"true\">\n <li fd-list-group-header>\n <span fd-list-title>{{ 'platformTable.sortDialogSortByHeader' | fdTranslate }}</span>\n </li>\n @if (allowDisablingSorting) {\n <li fd-list-item [selected]=\"field === NOT_SORTED_OPTION_VALUE\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"NOT_SORTED_OPTION_VALUE\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_sortFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ 'platformTable.sortDialogNotSortedLabel' | fdTranslate }}</span>\n </li>\n }\n @for (column of columns; track column) {\n <li fd-list-item [selected]=\"column.key === field\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"column.key\"\n state=\"default\"\n [ngModel]=\"field\"\n (ngModelChange)=\"_sortFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ column.label }}</span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.sortDialogConfirmBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'platformTable.sortDialogCancelBtnLabel' | fdTranslate\"\n fdkInitialFocus\n (click)=\"cancel()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n" }]
129
126
  }], ctorParameters: () => [{ type: i1.DialogRef }, { type: i2.Table }] });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtdmlldy1zZXR0aW5ncy1kaWFsb2cvc29ydGluZy9zb3J0aW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUvY29tcG9uZW50cy90YWJsZS12aWV3LXNldHRpbmdzLWRpYWxvZy9zb3J0aW5nL3NvcnRpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxLQUFLLE1BQU0scUJBQXFCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ3JCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNILG1CQUFtQixFQUNuQixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUN4QixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFDSCxhQUFhLEVBQ2Isd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDckIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxP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QUNkLGlCQUFpQiwyREFDakIsb0JBQW9CLG1FQUdwQixtQkFBbUIsMkRBQ25CLGFBQWEsOFFBQ2Isd0JBQXdCLDJJQUN4QixrQkFBa0IsNkZBQ2xCLGlCQUFpQiw4TUFDakIsb0JBQW9CLG1PQUNwQixXQUFXLCtWQUNYLHFCQUFxQiw2REFDckIsa0JBQWtCLG9JQUNsQixlQUFlOzsyRkFHVixnQkFBZ0I7a0JBN0I1QixTQUFTO2dDQUVLLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxDQUFDLG1CQUMxRSx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUDt3QkFDTCxlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYix3QkFBd0I7d0JBQ3hCLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGVBQWU7cUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwvZXM2JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcblxuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcblxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7XG4gICAgQmFyRWxlbWVudERpcmVjdGl2ZSxcbiAgICBCYXJMZWZ0RGlyZWN0aXZlLFxuICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgIEJ1dHRvbkJhckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7XG4gICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7XG4gICAgTGlzdENvbXBvbmVudCxcbiAgICBMaXN0R3JvdXBIZWFkZXJEaXJlY3RpdmUsXG4gICAgTGlzdEl0ZW1Db21wb25lbnQsXG4gICAgTGlzdFRpdGxlRGlyZWN0aXZlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IFJhZGlvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3JhZGlvJztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IENvbGxlY3Rpb25Tb3J0LCBTb3J0RGlyZWN0aW9uLCBUYWJsZSwgVGFibGVEaWFsb2dDb21tb25EYXRhIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzJztcbmltcG9ydCB7IFJlc2V0QnV0dG9uQ29tcG9uZW50LCBSZXNldHRhYmxlLCBSRVNFVFRBQkxFX1RPS0VOIH0gZnJvbSAnLi4vLi4vcmVzZXQtYnV0dG9uL3Jlc2V0LWJ1dHRvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdzU29ydERpYWxvZ0NvbHVtbiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBrZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXR0aW5nc1NvcnREaWFsb2dEYXRhIGV4dGVuZHMgVGFibGVEaWFsb2dDb21tb25EYXRhIHtcbiAgICBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG4gICAgZmllbGQ6IHN0cmluZyB8IG51bGw7XG4gICAgY29sdW1uczogU2V0dGluZ3NTb3J0RGlhbG9nQ29sdW1uW107XG4gICAgYWxsb3dEaXNhYmxpbmdTb3J0aW5nOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdzU29ydERpYWxvZ1Jlc3VsdERhdGEge1xuICAgIGZpZWxkOiBzdHJpbmcgfCBudWxsO1xuICAgIGRpcmVjdGlvbjogU29ydERpcmVjdGlvbjtcbn1cblxuY29uc3QgTk9UX1NPUlRFRF9PUFRJT05fVkFMVUUgPSBudWxsO1xuY29uc3QgSU5JVElBTF9ESVJFQ1RJT04gPSBTb3J0RGlyZWN0aW9uLkFTQztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL3NvcnRpbmcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogUkVTRVRUQUJMRV9UT0tFTiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU29ydGluZ0NvbXBvbmVudCkgfV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBEaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBCYXJMZWZ0RGlyZWN0aXZlLFxuICAgICAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgICAgICBUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgICAgIFJlc2V0QnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgICAgIExpc3RDb21wb25lbnQsXG4gICAgICAgIExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgTGlzdFRpdGxlRGlyZWN0aXZlLFxuICAgICAgICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgUmFkaW9CdXR0b25Db21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgICAgIEJ1dHRvbkJhckNvbXBvbmVudCxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTb3J0aW5nQ29tcG9uZW50IGltcGxlbWVudHMgUmVzZXR0YWJsZSB7XG4gICAgLyoqIEN1cnJlbnQgc2VsZWN0ZWQgZGlyZWN0aW9uICovXG4gICAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xuXG4gICAgLyoqIEN1cnJlbnQgc2VsZWN0ZWQgZmllbGQgKi9cbiAgICBmaWVsZDogc3RyaW5nIHwgbnVsbDtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFsbG93IHNlbGVjdGluZyAnKE5vdCBzb3J0ZWQpJyBvcHRpb24gaW4gc29ydGluZyBkaWFsb2cuICovXG4gICAgYWxsb3dEaXNhYmxpbmdTb3J0aW5nOiBib29sZWFuO1xuXG4gICAgLyoqIFRhYmxlIGNvbHVtbnMgKi9cbiAgICByZWFkb25seSBjb2x1bW5zOiBTZXR0aW5nc1NvcnREaWFsb2dDb2x1bW5bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfaXNSZXNldEF2YWlsYWJsZVN1YmplY3QkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogSW5kaWNhdGVzIHdoZW4gcmVzZXQgY29tbWFuZCBpcyBhdmFpbGFibGUgKi9cbiAgICByZWFkb25seSBpc1Jlc2V0QXZhaWxhYmxlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2lzUmVzZXRBdmFpbGFibGVTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgU09SVF9ESVJFQ1RJT04gPSBTb3J0RGlyZWN0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBOT1RfU09SVEVEX09QVElPTl9WQUxVRSA9IE5PVF9TT1JURURfT1BUSU9OX1ZBTFVFO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsU29ydGluZzogQ29sbGVjdGlvblNvcnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBEaWFsb2dSZWY8U2V0dGluZ3NTb3J0RGlhbG9nRGF0YT4sXG4gICAgICAgIHByaXZhdGUgX3RhYmxlOiBUYWJsZVxuICAgICkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5kaWFsb2dSZWYuZGF0YTtcblxuICAgICAgICB0aGlzLmNvbHVtbnMgPSBkYXRhLmNvbHVtbnMgfHwgW107XG5cbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBkYXRhLmRpcmVjdGlvbiA/PyBJTklUSUFMX0RJUkVDVElPTjtcbiAgICAgICAgdGhpcy5maWVsZCA9IGRhdGEuZmllbGQgPz8gTk9UX1NPUlRFRF9PUFRJT05fVkFMVUU7XG4gICAgICAgIHRoaXMuYWxsb3dEaXNhYmxpbmdTb3J0aW5nID0gZGF0YS5hbGxvd0Rpc2FibGluZ1NvcnRpbmc7XG5cbiAgICAgICAgdGhpcy5fc2V0SW5pdGlhbFNvcnRpbmcoKTtcblxuICAgICAgICB0aGlzLl9jb21wYXJlSW5pdGlhbFNvcnRpbmcoKTtcbiAgICB9XG5cbiAgICAvKiogUmVzZXQgY2hhbmdlcyB0byB0aGUgaW5pdGlhbCBzdGF0ZSAqL1xuICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IHRoaXMuX2luaXRpYWxTb3J0aW5nLmRpcmVjdGlvbjtcbiAgICAgICAgdGhpcy5maWVsZCA9IHRoaXMuX2luaXRpYWxTb3J0aW5nLmZpZWxkO1xuICAgICAgICB0aGlzLl9pc1Jlc2V0QXZhaWxhYmxlU3ViamVjdCQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIENsb3NlIGRpYWxvZyAqL1xuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UobnVsbCk7XG4gICAgfVxuXG4gICAgLyoqIENvbmZpcm0gY2hhbmdlcyBhbmQgY2xvc2UgZGlhbG9nICovXG4gICAgY29uZmlybSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBTZXR0aW5nc1NvcnREaWFsb2dSZXN1bHREYXRhID0geyBkaXJlY3Rpb246IHRoaXMuZGlyZWN0aW9uLCBmaWVsZDogdGhpcy5maWVsZCB9O1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NvcnREaXJlY3Rpb25DaGFuZ2UoZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICB0aGlzLl9vbk1vZGVsQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc29ydEZpZWxkQ2hhbmdlKGZpZWxkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWVsZCA9IGZpZWxkO1xuICAgICAgICB0aGlzLl9vbk1vZGVsQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Nb2RlbENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVXNlIHRoaXMgY29lcmNpb24gY2F1c2UgZmQtcmFkaW8tYnV0dG9uIHRyaWdnZXJzIGV4dHJhIG5nTW9kZWxDaGFuZ2UgZXZlbnRzIG9uIGluaXRpYWwgcGhhc2VcbiAgICAgICAgY29uc3QgaXNJbml0aWFsRGlmZmVycyA9XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbiAhPT0gdGhpcy5faW5pdGlhbFNvcnRpbmcuZGlyZWN0aW9uIHx8IHRoaXMuZmllbGQgIT09IHRoaXMuX2luaXRpYWxTb3J0aW5nLmZpZWxkO1xuICAgICAgICB0aGlzLl9pc1Jlc2V0QXZhaWxhYmxlU3ViamVjdCQubmV4dChpc0luaXRpYWxEaWZmZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2luY2UgdmlldyBzZXR0aW5ncyBkaWFsb2cgc3VwcG9ydHMgb25seSBvbmUgc29ydGluZywgZ2V0IHRoZSBmaXJzdCBvbmUgaWYgYXZhaWxhYmxlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3NldEluaXRpYWxTb3J0aW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbml0aWFsU29ydGluZyA9ICh0aGlzLl90YWJsZS5pbml0aWFsU3RhdGU/LmluaXRpYWxTb3J0QnkgfHwgW10pWzBdO1xuXG4gICAgICAgIHRoaXMuX2luaXRpYWxTb3J0aW5nID0ge1xuICAgICAgICAgICAgZmllbGQ6IGluaXRpYWxTb3J0aW5nPy5maWVsZCA/PyBOT1RfU09SVEVEX09QVElPTl9WQUxVRSxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogaW5pdGlhbFNvcnRpbmc/LmRpcmVjdGlvbiA/PyBJTklUSUFMX0RJUkVDVElPTlxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDb21wYXJlIGluaXRpYWwgc29ydGluZyB3aXRoIHNlbGVjdGVkIG9uZSBhbmQgc2V0IHJlc2V0IGJ1dHRvbiBpZiBuZWVkZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29tcGFyZUluaXRpYWxTb3J0aW5nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhcHBsaWVkU29ydGluZzogQ29sbGVjdGlvblNvcnQgPSB7XG4gICAgICAgICAgICBmaWVsZDogdGhpcy5maWVsZCxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5kaXJlY3Rpb25cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZXF1YWwodGhpcy5faW5pdGlhbFNvcnRpbmcsIGFwcGxpZWRTb3J0aW5nKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faXNSZXNldEF2YWlsYWJsZVN1YmplY3QkLm5leHQodHJ1ZSk7XG4gICAgfVxufVxuIiwiPGZkLWRpYWxvZz5cbiAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxuICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPGg0IGZkLXRpdGxlIFtoZWFkZXJTaXplXT1cIjRcIj57eyAncGxhdGZvcm1UYWJsZS5zb3J0RGlhbG9nSGVhZGVyJyB8IGZkVHJhbnNsYXRlIH19PC9oND5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtcmVzZXQtYnV0dG9uPjwvZmRwLXRhYmxlLXJlc2V0LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgIDxmZC1kaWFsb2ctYm9keT5cbiAgICAgICAgPHVsIGZkLWxpc3QgW3NlbGVjdGlvbl09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8bGkgZmQtbGlzdC1ncm91cC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAncGxhdGZvcm1UYWJsZS5zb3J0RGlhbG9nU29ydE9yZGVySGVhZGVyJyB8IGZkVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0gW3NlbGVjdGVkXT1cImRpcmVjdGlvbiA9PT0gU09SVF9ESVJFQ1RJT04uQVNDXCI+XG4gICAgICAgICAgICAgICAgPGZkLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwic29ydC1vcmRlclwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiYXNjXCJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3NvcnREaXJlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgJ3BsYXRmb3JtVGFibGUuc29ydERpYWxvZ1NvcnRPcmRlckFzYycgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtIFtzZWxlY3RlZF09XCJkaXJlY3Rpb24gPT09IFNPUlRfRElSRUNUSU9OLkRFU0NcIj5cbiAgICAgICAgICAgICAgICA8ZmQtcmFkaW8tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzb3J0LW9yZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJkZXNjXCJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3NvcnREaXJlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgJ3BsYXRmb3JtVGFibGUuc29ydERpYWxvZ1NvcnRPcmRlckRlc2MnIHwgZmRUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgICA8dWwgZmQtbGlzdCBbc2VsZWN0aW9uXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7ICdwbGF0Zm9ybVRhYmxlLnNvcnREaWFsb2dTb3J0QnlIZWFkZXInIHwgZmRUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgQGlmIChhbGxvd0Rpc2FibGluZ1NvcnRpbmcpIHtcbiAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtIFtzZWxlY3RlZF09XCJmaWVsZCA9PT0gTk9UX1NPUlRFRF9PUFRJT05fVkFMVUVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNvcnQtYnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIk5PVF9TT1JURURfT1BUSU9OX1ZBTFVFXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfc29ydEZpZWxkQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgJ3BsYXRmb3JtVGFibGUuc29ydERpYWxvZ05vdFNvcnRlZExhYmVsJyB8IGZkVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSBbc2VsZWN0ZWRdPVwiY29sdW1uLmtleSA9PT0gZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNvcnQtYnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9zb3J0RmllbGRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkLXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyBjb2x1bW4ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgIDxmZC1kaWFsb2ctZm9vdGVyPlxuICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVGFibGUuc29ydERpYWxvZ0NvbmZpcm1CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybSgpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVGFibGUuc29ydERpYWxvZ0NhbmNlbEJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuPC9mZC1kaWFsb2c+XG4iXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtdmlldy1zZXR0aW5ncy1kaWFsb2cvc29ydGluZy9zb3J0aW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUvY29tcG9uZW50cy90YWJsZS12aWV3LXNldHRpbmdzLWRpYWxvZy9zb3J0aW5nL3NvcnRpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDckIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3hCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUNILGFBQWEsRUFDYix3QkFBd0IsRUFDeEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNyQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2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b0IsbU9BQ3BCLFdBQVcsK1ZBQ1gscUJBQXFCLDZEQUNyQixrQkFBa0Isb0lBQ2xCLGVBQWU7OzJGQUdWLGdCQUFnQjtrQkE3QjVCLFNBQVM7Z0NBRUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsbUJBQzFFLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQO3dCQUNMLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLHdCQUF3Qjt3QkFDeEIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsV0FBVzt3QkFDWCxxQkFBcUI7d0JBQ3JCLGtCQUFrQjt3QkFDbEIsZUFBZTtxQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBzaWduYWwsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsL2VzNic7XG5cbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgQnV0dG9uQmFyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9iYXInO1xuaW1wb3J0IHtcbiAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHtcbiAgICBMaXN0Q29tcG9uZW50LFxuICAgIExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSxcbiAgICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgICBMaXN0VGl0bGVEaXJlY3RpdmVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHsgUmFkaW9CdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcmFkaW8nO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgQ29sbGVjdGlvblNvcnQsIFNvcnREaXJlY3Rpb24sIFRhYmxlLCBUYWJsZURpYWxvZ0NvbW1vbkRhdGEgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMnO1xuaW1wb3J0IHsgUmVzZXRCdXR0b25Db21wb25lbnQsIFJlc2V0dGFibGUsIFJFU0VUVEFCTEVfVE9LRU4gfSBmcm9tICcuLi8uLi9yZXNldC1idXR0b24vcmVzZXQtYnV0dG9uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0dGluZ3NTb3J0RGlhbG9nQ29sdW1uIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdzU29ydERpYWxvZ0RhdGEgZXh0ZW5kcyBUYWJsZURpYWxvZ0NvbW1vbkRhdGEge1xuICAgIGRpcmVjdGlvbjogU29ydERpcmVjdGlvbjtcbiAgICBmaWVsZDogc3RyaW5nIHwgbnVsbDtcbiAgICBjb2x1bW5zOiBTZXR0aW5nc1NvcnREaWFsb2dDb2x1bW5bXTtcbiAgICBhbGxvd0Rpc2FibGluZ1NvcnRpbmc6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0dGluZ3NTb3J0RGlhbG9nUmVzdWx0RGF0YSB7XG4gICAgZmllbGQ6IHN0cmluZyB8IG51bGw7XG4gICAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xufVxuXG5jb25zdCBOT1RfU09SVEVEX09QVElPTl9WQUxVRSA9IG51bGw7XG5jb25zdCBJTklUSUFMX0RJUkVDVElPTiA9IFNvcnREaXJlY3Rpb24uQVNDO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vc29ydGluZy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBSRVNFVFRBQkxFX1RPS0VOLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTb3J0aW5nQ29tcG9uZW50KSB9XSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudCxcbiAgICAgICAgVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBCYXJSaWdodERpcmVjdGl2ZSxcbiAgICAgICAgUmVzZXRCdXR0b25Db21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICAgICAgTGlzdENvbXBvbmVudCxcbiAgICAgICAgTGlzdEdyb3VwSGVhZGVyRGlyZWN0aXZlLFxuICAgICAgICBMaXN0VGl0bGVEaXJlY3RpdmUsXG4gICAgICAgIExpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBSYWRpb0J1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQmFyQ29tcG9uZW50LFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNvcnRpbmdDb21wb25lbnQgaW1wbGVtZW50cyBSZXNldHRhYmxlIHtcbiAgICAvKiogQ3VycmVudCBzZWxlY3RlZCBkaXJlY3Rpb24gKi9cbiAgICBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG5cbiAgICAvKiogQ3VycmVudCBzZWxlY3RlZCBmaWVsZCAqL1xuICAgIGZpZWxkOiBzdHJpbmcgfCBudWxsO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gYWxsb3cgc2VsZWN0aW5nICcoTm90IHNvcnRlZCknIG9wdGlvbiBpbiBzb3J0aW5nIGRpYWxvZy4gKi9cbiAgICBhbGxvd0Rpc2FibGluZ1NvcnRpbmc6IGJvb2xlYW47XG5cbiAgICAvKiogVGFibGUgY29sdW1ucyAqL1xuICAgIHJlYWRvbmx5IGNvbHVtbnM6IFNldHRpbmdzU29ydERpYWxvZ0NvbHVtbltdID0gW107XG5cbiAgICAvKiogSW5kaWNhdGVzIHdoZW4gcmVzZXQgY29tbWFuZCBpcyBhdmFpbGFibGUgKi9cbiAgICByZWFkb25seSBpc1Jlc2V0QXZhaWxhYmxlJCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IFNPUlRfRElSRUNUSU9OID0gU29ydERpcmVjdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgTk9UX1NPUlRFRF9PUFRJT05fVkFMVUUgPSBOT1RfU09SVEVEX09QVElPTl9WQUxVRTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbFNvcnRpbmc6IENvbGxlY3Rpb25Tb3J0O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogRGlhbG9nUmVmPFNldHRpbmdzU29ydERpYWxvZ0RhdGE+LFxuICAgICAgICBwcml2YXRlIF90YWJsZTogVGFibGVcbiAgICApIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZGlhbG9nUmVmLmRhdGE7XG5cbiAgICAgICAgdGhpcy5jb2x1bW5zID0gZGF0YS5jb2x1bW5zIHx8IFtdO1xuXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGF0YS5kaXJlY3Rpb24gPz8gSU5JVElBTF9ESVJFQ1RJT047XG4gICAgICAgIHRoaXMuZmllbGQgPSBkYXRhLmZpZWxkID8/IE5PVF9TT1JURURfT1BUSU9OX1ZBTFVFO1xuICAgICAgICB0aGlzLmFsbG93RGlzYWJsaW5nU29ydGluZyA9IGRhdGEuYWxsb3dEaXNhYmxpbmdTb3J0aW5nO1xuXG4gICAgICAgIHRoaXMuX3NldEluaXRpYWxTb3J0aW5nKCk7XG5cbiAgICAgICAgdGhpcy5fY29tcGFyZUluaXRpYWxTb3J0aW5nKCk7XG4gICAgfVxuXG4gICAgLyoqIFJlc2V0IGNoYW5nZXMgdG8gdGhlIGluaXRpYWwgc3RhdGUgKi9cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSB0aGlzLl9pbml0aWFsU29ydGluZy5kaXJlY3Rpb247XG4gICAgICAgIHRoaXMuZmllbGQgPSB0aGlzLl9pbml0aWFsU29ydGluZy5maWVsZDtcbiAgICAgICAgdGhpcy5pc1Jlc2V0QXZhaWxhYmxlJC5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBDbG9zZSBkaWFsb2cgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICAgIH1cblxuICAgIC8qKiBDb25maXJtIGNoYW5nZXMgYW5kIGNsb3NlIGRpYWxvZyAqL1xuICAgIGNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogU2V0dGluZ3NTb3J0RGlhbG9nUmVzdWx0RGF0YSA9IHsgZGlyZWN0aW9uOiB0aGlzLmRpcmVjdGlvbiwgZmllbGQ6IHRoaXMuZmllbGQgfTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzdWx0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zb3J0RGlyZWN0aW9uQ2hhbmdlKGRpcmVjdGlvbjogU29ydERpcmVjdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjtcbiAgICAgICAgdGhpcy5fb25Nb2RlbENoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NvcnRGaWVsZENoYW5nZShmaWVsZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZDtcbiAgICAgICAgdGhpcy5fb25Nb2RlbENoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uTW9kZWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIC8vIFVzZSB0aGlzIGNvZXJjaW9uIGNhdXNlIGZkLXJhZGlvLWJ1dHRvbiB0cmlnZ2VycyBleHRyYSBuZ01vZGVsQ2hhbmdlIGV2ZW50cyBvbiBpbml0aWFsIHBoYXNlXG4gICAgICAgIGNvbnN0IGlzSW5pdGlhbERpZmZlcnMgPVxuICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb24gIT09IHRoaXMuX2luaXRpYWxTb3J0aW5nLmRpcmVjdGlvbiB8fCB0aGlzLmZpZWxkICE9PSB0aGlzLl9pbml0aWFsU29ydGluZy5maWVsZDtcbiAgICAgICAgdGhpcy5pc1Jlc2V0QXZhaWxhYmxlJC5zZXQoaXNJbml0aWFsRGlmZmVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNpbmNlIHZpZXcgc2V0dGluZ3MgZGlhbG9nIHN1cHBvcnRzIG9ubHkgb25lIHNvcnRpbmcsIGdldCB0aGUgZmlyc3Qgb25lIGlmIGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zZXRJbml0aWFsU29ydGluZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5pdGlhbFNvcnRpbmcgPSAodGhpcy5fdGFibGUuaW5pdGlhbFN0YXRlPy5pbml0aWFsU29ydEJ5IHx8IFtdKVswXTtcblxuICAgICAgICB0aGlzLl9pbml0aWFsU29ydGluZyA9IHtcbiAgICAgICAgICAgIGZpZWxkOiBpbml0aWFsU29ydGluZz8uZmllbGQgPz8gTk9UX1NPUlRFRF9PUFRJT05fVkFMVUUsXG4gICAgICAgICAgICBkaXJlY3Rpb246IGluaXRpYWxTb3J0aW5nPy5kaXJlY3Rpb24gPz8gSU5JVElBTF9ESVJFQ1RJT05cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ29tcGFyZSBpbml0aWFsIHNvcnRpbmcgd2l0aCBzZWxlY3RlZCBvbmUgYW5kIHNldCByZXNldCBidXR0b24gaWYgbmVlZGVkLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbXBhcmVJbml0aWFsU29ydGluZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXBwbGllZFNvcnRpbmc6IENvbGxlY3Rpb25Tb3J0ID0ge1xuICAgICAgICAgICAgZmllbGQ6IHRoaXMuZmllbGQsXG4gICAgICAgICAgICBkaXJlY3Rpb246IHRoaXMuZGlyZWN0aW9uXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGVxdWFsKHRoaXMuX2luaXRpYWxTb3J0aW5nLCBhcHBsaWVkU29ydGluZykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNSZXNldEF2YWlsYWJsZSQuc2V0KHRydWUpO1xuICAgIH1cbn1cbiIsIjxmZC1kaWFsb2c+XG4gICAgPGZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxoNCBmZC10aXRsZSBbaGVhZGVyU2l6ZV09XCI0XCI+e3sgJ3BsYXRmb3JtVGFibGUuc29ydERpYWxvZ0hlYWRlcicgfCBmZFRyYW5zbGF0ZSB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLXJlc2V0LWJ1dHRvbj48L2ZkcC10YWJsZS1yZXNldC1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICA8ZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgIDx1bCBmZC1saXN0IFtzZWxlY3Rpb25dPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGxpIGZkLWxpc3QtZ3JvdXAtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgJ3BsYXRmb3JtVGFibGUuc29ydERpYWxvZ1NvcnRPcmRlckhlYWRlcicgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtIFtzZWxlY3RlZF09XCJkaXJlY3Rpb24gPT09IFNPUlRfRElSRUNUSU9OLkFTQ1wiPlxuICAgICAgICAgICAgICAgIDxmZC1yYWRpby1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNvcnQtb3JkZXJcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImFzY1wiXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImRpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9zb3J0RGlyZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2ZkLXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7ICdwbGF0Zm9ybVRhYmxlLnNvcnREaWFsb2dTb3J0T3JkZXJBc2MnIHwgZmRUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSBbc2VsZWN0ZWRdPVwiZGlyZWN0aW9uID09PSBTT1JUX0RJUkVDVElPTi5ERVNDXCI+XG4gICAgICAgICAgICAgICAgPGZkLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwic29ydC1vcmRlclwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiZGVzY1wiXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImRpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9zb3J0RGlyZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2ZkLXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7ICdwbGF0Zm9ybVRhYmxlLnNvcnREaWFsb2dTb3J0T3JkZXJEZXNjJyB8IGZkVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgICAgPHVsIGZkLWxpc3QgW3NlbGVjdGlvbl09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8bGkgZmQtbGlzdC1ncm91cC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyAncGxhdGZvcm1UYWJsZS5zb3J0RGlhbG9nU29ydEJ5SGVhZGVyJyB8IGZkVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIEBpZiAoYWxsb3dEaXNhYmxpbmdTb3J0aW5nKSB7XG4gICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSBbc2VsZWN0ZWRdPVwiZmllbGQgPT09IE5PVF9TT1JURURfT1BUSU9OX1ZBTFVFXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1yYWRpby1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzb3J0LWJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJOT1RfU09SVEVEX09QVElPTl9WQUxVRVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZT1cImRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3NvcnRGaWVsZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7ICdwbGF0Zm9ybVRhYmxlLnNvcnREaWFsb2dOb3RTb3J0ZWRMYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrIGNvbHVtbikge1xuICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0gW3NlbGVjdGVkXT1cImNvbHVtbi5rZXkgPT09IGZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1yYWRpby1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzb3J0LWJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfc29ydEZpZWxkQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgY29sdW1uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgPC9mZC1kaWFsb2ctYm9keT5cbiAgICA8ZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLnNvcnREaWFsb2dDb25maXJtQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm0oKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLnNvcnREaWFsb2dDYW5jZWxCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgIDwvZmQtZGlhbG9nLWZvb3Rlcj5cbjwvZmQtZGlhbG9nPlxuIl19