@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,4 +1,4 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation, signal } from '@angular/core';
2
2
  import { BehaviorSubject, Subscription, combineLatest } from 'rxjs';
3
3
  import { debounceTime } from 'rxjs/operators';
4
4
  import { DialogRef } from '@fundamental-ngx/core/dialog';
@@ -48,10 +48,8 @@ export class P13ColumnsDialogComponent {
48
48
  constructor(dialogRef, cdr) {
49
49
  this.dialogRef = dialogRef;
50
50
  this.cdr = cdr;
51
- /** @hidden */
52
- this._isResetAvailableSubject$ = new BehaviorSubject(false);
53
51
  /** Indicates when reset command is available */
54
- this.isResetAvailable$ = this._isResetAvailableSubject$.asObservable();
52
+ this.isResetAvailable$ = signal(false);
55
53
  /** Table columns available for grouping */
56
54
  this.availableColumns = [];
57
55
  /** All available columns for interacting */
@@ -85,7 +83,7 @@ export class P13ColumnsDialogComponent {
85
83
  /** Reset to the initial state */
86
84
  reset() {
87
85
  this._initiateColumns(this.availableColumns.map((c) => c.key));
88
- this._isResetAvailableSubject$.next(false);
86
+ this.isResetAvailable$.set(false);
89
87
  }
90
88
  /** Close dialog */
91
89
  cancel() {
@@ -123,7 +121,7 @@ export class P13ColumnsDialogComponent {
123
121
  }
124
122
  }
125
123
  }
126
- this._isResetAvailableSubject$.next(resettable);
124
+ this.isResetAvailable$.set(resettable);
127
125
  }
128
126
  /** @hidden */
129
127
  _searchInputChange({ text }) {
@@ -294,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
294
292
  FdTranslatePipe
295
293
  ], template: "<fd-dialog class=\"fdp-table-p13-columns-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\">\n {{ 'platformTable.P13ColumnsDialogHeader' | fdTranslate }}\n </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 <fd-toolbar>\n <fdp-search-field\n [placeholder]=\"'platformTable.P13ColumnsDialogSearchPlaceholder' | fdTranslate\"\n [inputText]=\"(_searchQuerySubject | async) || ''\"\n [suggestions]=\"[]\"\n (inputChange)=\"_searchInputChange($event)\"\n fdkInitialFocus\n ></fdp-search-field>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <!-- Show Selected/All -->\n <button fd-toolbar-item fd-button fdType=\"transparent\" (click)=\"_toggleShowAll()\">\n @if ((_showAllItemsSubject | async) === true) {\n {{ 'platformTable.P13ColumnsDialogsShowSelected' | fdTranslate }}\n } @else {\n {{ 'platformTable.P13ColumnsDialogShowAll' | fdTranslate }}\n }\n </button>\n <!-- Active Button Movement -->\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"collapse-group\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToTopBtn' | fdTranslate\"\n (click)=\"_moveActiveToTop()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-up\"\n [disabled]=\"_moveUpDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveUpBtn' | fdTranslate\"\n (click)=\"_moveActiveUp()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-down\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveDownBtn' | fdTranslate\"\n (click)=\"_moveActiveDown()\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n fdType=\"transparent\"\n glyph=\"expand-group\"\n [disabled]=\"_moveDownDisabled\"\n [attr.aria-label]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n [title]=\"'platformTable.P13ColumnsDialogMoveToBottomBtn' | fdTranslate\"\n (click)=\"_moveActiveToBottom()\"\n ></button>\n </fd-toolbar>\n <ul fd-list>\n <li fd-list-item>\n <fd-checkbox\n [ngModel]=\"_selectedColumnsCount === _selectableColumns.length\"\n (ngModelChange)=\"_toggleSelectAll($event)\"\n [disabled]=\"_selectAllDisabled\"\n ></fd-checkbox>\n <span fd-list-title>\n {{\n 'platformTable.P13ColumnsDialogSelectAll'\n | fdTranslate\n : {\n selectedColumnsCount: _selectedColumnsCount,\n selectableColumnsCount: _selectableColumns.length\n }\n }}\n </span>\n </li>\n @for (item of _filteredColumns; track _filterByColumnKy($index, item)) {\n <li\n fd-list-item\n [class.fd-select-item--selected]=\"item.selected\"\n [class.fd-select-item--active]=\"item.active\"\n (click)=\"_setActiveColumn(item)\"\n >\n <fd-checkbox [(ngModel)]=\"item.selected\" (ngModelChange)=\"_onToggleColumn()\"></fd-checkbox>\n <span fd-list-title>\n {{ item.column.label }}\n </span>\n </li>\n }\n </ul>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13ColumnsDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n [label]=\"'platformTable.P13ColumnsDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-table-p13-columns-dialog fd-toolbar{position:sticky;top:0;z-index:1}.fdp-table-p13-columns-dialog .fd-select-item--active{background:#e5f0fa;background:var(--sapList_SelectionBackgroundColor, #e5f0fa)}.fdp-table-p13-columns-dialog .group-row{display:flex;align-items:center;margin-bottom:.5rem}.fdp-table-p13-columns-dialog .group-row .fd-popover-custom{display:block}.fdp-table-p13-columns-dialog .group-row__checkbox,.fdp-table-p13-columns-dialog .group-row__actions,.fdp-table-p13-columns-dialog .group-row__select{margin-right:1rem}.fdp-table-p13-columns-dialog .group-row__select{flex:1 1 0}\n"] }]
296
294
  }], ctorParameters: () => [{ type: i1.DialogRef }, { type: i0.ChangeDetectorRef }] });
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtcDEzLWRpYWxvZy9jb2x1bW5zL2NvbHVtbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXAxMy1kaWFsb2cvY29sdW1ucy9jb2x1bW5zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUNILG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNyQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQ0gsbUJBQW1CLEVB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QUFTLHlDQUNULGVBQWU7OzJGQUdWLHlCQUF5QjtrQkFuQ3JDLFNBQVM7b0NBR1MsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsMkJBQTJCLEVBQUUsQ0FBQyxtQkFDakUsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ0wsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLFNBQVM7d0JBQ1QsZUFBZTtxQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVEaWFsb2dDb21tb25EYXRhIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NlYXJjaC1maWVsZCc7XG5cbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7XG4gICAgQmFyRWxlbWVudERpcmVjdGl2ZSxcbiAgICBCYXJMZWZ0RGlyZWN0aXZlLFxuICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgIEJ1dHRvbkJhckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY2hlY2tib3gnO1xuaW1wb3J0IHtcbiAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgTGlzdENvbXBvbmVudCwgTGlzdEl0ZW1Db21wb25lbnQsIExpc3RUaXRsZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHsgVG9vbGJhckNvbXBvbmVudCwgVG9vbGJhckl0ZW1EaXJlY3RpdmUsIFRvb2xiYXJTcGFjZXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdG9vbGJhcic7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU2VhcmNoRmllbGRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NlYXJjaC1maWVsZCc7XG5pbXBvcnQgeyBSRVNFVFRBQkxFX1RPS0VOLCBSZXNldEJ1dHRvbkNvbXBvbmVudCwgUmVzZXR0YWJsZSB9IGZyb20gJy4uLy4uL3Jlc2V0LWJ1dHRvbi9yZXNldC1idXR0b24uY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dUYWJsZUNvbHVtbiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBrZXk6IHN0cmluZztcbn1cblxudHlwZSBWaXNpYmxlQ29sdW1uVHlwZSA9IHN0cmluZzsgLy8gQ29sdW1uS2V5XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uc0RpYWxvZ0RhdGEgZXh0ZW5kcyBUYWJsZURpYWxvZ0NvbW1vbkRhdGEge1xuICAgIGF2YWlsYWJsZUNvbHVtbnM6IERpYWxvZ1RhYmxlQ29sdW1uW107XG4gICAgdmlzaWJsZUNvbHVtbnM6IFZpc2libGVDb2x1bW5UeXBlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uc0RpYWxvZ1Jlc3VsdERhdGEge1xuICAgIHZpc2libGVDb2x1bW5zOiBWaXNpYmxlQ29sdW1uVHlwZVtdO1xufVxuXG5jbGFzcyBTZWxlY3RhYmxlQ29sdW1uIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgLyoqIFNlbGVjdGVkICovXG4gICAgICAgIHB1YmxpYyBzZWxlY3RlZDogYm9vbGVhbixcbiAgICAgICAgLyoqIEFjdGl2ZSAqL1xuICAgICAgICBwdWJsaWMgYWN0aXZlOiBib29sZWFuLFxuICAgICAgICAvKiogVGFibGUgQ29sdW1uIGl0IGJlbG9uZ3MgdG8gKi9cbiAgICAgICAgcHVibGljIGNvbHVtbjogRGlhbG9nVGFibGVDb2x1bW5cbiAgICApIHt9XG59XG5cbmNvbnN0IElOSVRJQUxfU0VBUkNIX1RFWFQgPSAnJztcbmNvbnN0IElOSVRJQUxfU0hPV19BTExfSVRFTVMgPSB0cnVlO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sdW1ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2NvbHVtbnMuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBSRVNFVFRBQkxFX1RPS0VOLCB1c2VFeGlzdGluZzogUDEzQ29sdW1uc0RpYWxvZ0NvbXBvbmVudCB9XSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBEaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBCYXJMZWZ0RGlyZWN0aXZlLFxuICAgICAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgICAgICBUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgICAgIFJlc2V0QnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIFNlYXJjaEZpZWxkQ29tcG9uZW50LFxuICAgICAgICBUb29sYmFyU3BhY2VyRGlyZWN0aXZlLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJJdGVtRGlyZWN0aXZlLFxuICAgICAgICBMaXN0Q29tcG9uZW50LFxuICAgICAgICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBMaXN0VGl0bGVEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQmFyQ29tcG9uZW50LFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUDEzQ29sdW1uc0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIFJlc2V0dGFibGUsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzUmVzZXRBdmFpbGFibGVTdWJqZWN0JDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgLyoqIEluZGljYXRlcyB3aGVuIHJlc2V0IGNvbW1hbmQgaXMgYXZhaWxhYmxlICovXG4gICAgcmVhZG9ubHkgaXNSZXNldEF2YWlsYWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9pc1Jlc2V0QXZhaWxhYmxlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAvKiogVGFibGUgY29sdW1ucyBhdmFpbGFibGUgZm9yIGdyb3VwaW5nICovXG4gICAgcmVhZG9ubHkgYXZhaWxhYmxlQ29sdW1uczogRGlhbG9nVGFibGVDb2x1bW5bXSA9IFtdO1xuXG4gICAgLyoqIEFsbCBhdmFpbGFibGUgY29sdW1ucyBmb3IgaW50ZXJhY3RpbmcgKi9cbiAgICBfc2VsZWN0YWJsZUNvbHVtbnM6IFNlbGVjdGFibGVDb2x1bW5bXSA9IFtdO1xuXG4gICAgLyoqIGZpbHRlcmVkIGNvbHVtbnMgdGhhdCBhcmUgcmVuZGVyZWQgaW4gdGhlIGxpc3QgKi9cbiAgICBfZmlsdGVyZWRDb2x1bW5zOiBTZWxlY3RhYmxlQ29sdW1uW10gPSBbXTtcblxuICAgIC8qKiBTZWFyY2ggUXVlcnkgc3ViamVjdCAqL1xuICAgIF9zZWFyY2hRdWVyeVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oSU5JVElBTF9TRUFSQ0hfVEVYVCk7XG4gICAgLyoqIFNob3cgQWxsIGZsYWcgc3ViamVjdCAqL1xuICAgIF9zaG93QWxsSXRlbXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihJTklUSUFMX1NIT1dfQUxMX0lURU1TKTtcblxuICAgIC8qKiBTZWxlY3RlZCBjb2x1bW5zIGNvdW50ICovXG4gICAgX3NlbGVjdGVkQ29sdW1uc0NvdW50ID0gMDtcblxuICAgIC8qKiBGbGFnIHRvIHRyYWNrIGRpc2FibGVkIHN0YXRlIGZvciBtb3ZlLWRvd24gbW92ZS11cCBidXR0b25zICovXG4gICAgX21vdmVVcERpc2FibGVkID0gdHJ1ZTtcbiAgICAvKiogRmxhZyB0byB0cmFjayBkaXNhYmxlZCBzdGF0ZSBmb3IgbW92ZS1kb3duIG1vdmUtdXAgYnV0dG9ucyAqL1xuICAgIF9tb3ZlRG93bkRpc2FibGVkID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc1Nob3duQWxsSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93QWxsSXRlbXNTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3NlbGVjdEFsbERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuX2lzU2hvd25BbGxJdGVtcyB8fCB0aGlzLl9maWx0ZXJlZENvbHVtbnMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IERpYWxvZ1JlZjxDb2x1bW5zRGlhbG9nRGF0YT4sXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBjb25zdCB7IGF2YWlsYWJsZUNvbHVtbnMsIHZpc2libGVDb2x1bW5zIH0gPSB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuXG4gICAgICAgIHRoaXMuYXZhaWxhYmxlQ29sdW1ucyA9IGF2YWlsYWJsZUNvbHVtbnM/Lm1hcCgoeyBsYWJlbCwga2V5IH0pID0+ICh7IGxhYmVsLCBrZXkgfSkpIHx8IFtdO1xuXG4gICAgICAgIHRoaXMuX2luaXRpYXRlQ29sdW1ucyh2aXNpYmxlQ29sdW1ucyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuVG9GaWx0ZXJPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBSZXNldCB0byB0aGUgaW5pdGlhbCBzdGF0ZSAqL1xuICAgIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0aWF0ZUNvbHVtbnModGhpcy5hdmFpbGFibGVDb2x1bW5zLm1hcCgoYykgPT4gYy5rZXkpKTtcbiAgICAgICAgdGhpcy5faXNSZXNldEF2YWlsYWJsZVN1YmplY3QkLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBDbG9zZSBkaWFsb2cgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICAgIH1cblxuICAgIC8qKiBDb25maXJtIGNoYW5nZXMgYW5kIGNsb3NlIGRpYWxvZyAqL1xuICAgIGNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gdGhpcy5fZ2V0VmlzaWJsZUNvbHVtbnNGcm9tU2VsZWN0ZWRDb2x1bW5zKHRoaXMuX3NlbGVjdGFibGVDb2x1bW5zKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBDb2x1bW5zRGlhbG9nUmVzdWx0RGF0YSA9IHsgdmlzaWJsZUNvbHVtbnMgfTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzdWx0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b2dnbGVTZWxlY3RBbGwoc2VsZWN0QWxsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGFibGVDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4gKGNvbHVtbi5zZWxlY3RlZCA9IHNlbGVjdEFsbCkpO1xuICAgICAgICB0aGlzLl9vblRvZ2dsZUNvbHVtbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uVG9nZ2xlQ29sdW1uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb3VudFNlbGVjdGVkQ29sdW1ucygpO1xuICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmVjYWxjdWxhdGVSZXNldEF2YWlsYWJpbGl0eSgpOiB2b2lkIHtcbiAgICAgICAgbGV0IHJlc2V0dGFibGUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkQ29sdW1uc0NvdW50ICE9PSB0aGlzLmF2YWlsYWJsZUNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBJbml0aWFsbHkgYWxsIGNvbHVtbnMgYXJlIHNlbGVjdGVkLiBJZiBub3QsIHJlc2V0IHNob3VsZCBiZSBhY3RpdmVcbiAgICAgICAgICAgIHJlc2V0dGFibGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgYWxsIGFyZSBzZWxlY3RlZCwgY2hlY2sgZm9yIGNvbHVtbnMgb3JkZXIgdG8gbWF0Y2ggdGhlIGluaXRpYWwgb25lXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5hdmFpbGFibGVDb2x1bW5zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RhYmxlQ29sdW1uc1tpbmRleF0uY29sdW1uLmtleSAhPT0gdGhpcy5hdmFpbGFibGVDb2x1bW5zW2luZGV4XS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzZXR0YWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pc1Jlc2V0QXZhaWxhYmxlU3ViamVjdCQubmV4dChyZXNldHRhYmxlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWFyY2hJbnB1dENoYW5nZSh7IHRleHQgfTogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnlTdWJqZWN0Lm5leHQodGV4dCB8fCAnJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdG9nZ2xlU2hvd0FsbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2hvd0FsbEl0ZW1zID0gdGhpcy5fc2hvd0FsbEl0ZW1zU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLl9zaG93QWxsSXRlbXNTdWJqZWN0Lm5leHQoIXNob3dBbGxJdGVtcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0QWN0aXZlQ29sdW1uKGNvbHVtbjogU2VsZWN0YWJsZUNvbHVtbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RhYmxlQ29sdW1ucy5tYXAoKF9jb2x1bW4pID0+IHtcbiAgICAgICAgICAgIF9jb2x1bW4uYWN0aXZlID0gX2NvbHVtbiA9PT0gY29sdW1uO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVNb3ZlbWVudEJ1dHRvbnNTdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21vdmVBY3RpdmVUb1RvcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbW92ZUNvbHVtbkluRmlsdGVyZWRMaXN0QnlJbmRleCh0aGlzLl9nZXRBY3RpdmVDb2x1bW5JbmRleEluRmlsdGVyZWRMaXN0KCksIDApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21vdmVBY3RpdmVUb0JvdHRvbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbW92ZUNvbHVtbkluRmlsdGVyZWRMaXN0QnlJbmRleChcbiAgICAgICAgICAgIHRoaXMuX2dldEFjdGl2ZUNvbHVtbkluZGV4SW5GaWx0ZXJlZExpc3QoKSxcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlcmVkQ29sdW1ucy5sZW5ndGggLSAxXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbW92ZUFjdGl2ZVVwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVDb2x1bW5JbmRleCA9IHRoaXMuX2dldEFjdGl2ZUNvbHVtbkluZGV4SW5GaWx0ZXJlZExpc3QoKTtcbiAgICAgICAgdGhpcy5fbW92ZUNvbHVtbkluRmlsdGVyZWRMaXN0QnlJbmRleChhY3RpdmVDb2x1bW5JbmRleCwgYWN0aXZlQ29sdW1uSW5kZXggLSAxKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tb3ZlQWN0aXZlRG93bigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aXZlQ29sdW1uSW5kZXggPSB0aGlzLl9nZXRBY3RpdmVDb2x1bW5JbmRleEluRmlsdGVyZWRMaXN0KCk7XG4gICAgICAgIHRoaXMuX21vdmVDb2x1bW5JbkZpbHRlcmVkTGlzdEJ5SW5kZXgoYWN0aXZlQ29sdW1uSW5kZXgsIGFjdGl2ZUNvbHVtbkluZGV4ICsgMSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZmlsdGVyQnlDb2x1bW5LeShpbmRleDogbnVtYmVyLCBpdGVtOiBTZWxlY3RhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0/LmNvbHVtbi5rZXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSB2aXNpYmxlQ29sdW1uS2V5cyBrZXlzIG9mIGNvbHVtbnMgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkIGFzIHNlbGVjdGVkLlxuICAgICAqIEFsc28sIHRoZWlyIG9yZGVyIG1hdHRlcnM6IGl0IHdpbGwgYmUgdXNlZFxuICAgICAqL1xuICAgIHByaXZhdGUgX2luaXRpYXRlQ29sdW1ucyh2aXNpYmxlQ29sdW1uS2V5czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbkluZGV4TWFwID0gbmV3IE1hcCh2aXNpYmxlQ29sdW1uS2V5cy5tYXAoKGtleSwgaW5kZXgpID0+IFtrZXksIGluZGV4XSkpO1xuICAgICAgICB0aGlzLl9zZWxlY3RhYmxlQ29sdW1ucyA9IHRoaXMuYXZhaWxhYmxlQ29sdW1uc1xuICAgICAgICAgICAgLnNsaWNlKClcbiAgICAgICAgICAgIC8vIHNvcnRpbmcgY29sdW1ucyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIG9yZGVyIG9mIHZpc2libGUgY29sdW1uc1xuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhSW5kZXggPSB2aXNpYmxlQ29sdW1uSW5kZXhNYXAuZ2V0KGEua2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBiSW5kZXggPSB2aXNpYmxlQ29sdW1uSW5kZXhNYXAuZ2V0KGIua2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoYUluZGV4ID09PSB1bmRlZmluZWQgfHwgYkluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcHJlc2VydmluZyBpbml0aWFsIG9yZGVyIG9mIG5vdCBzZWxlY3RlZCBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhSW5kZXggLSBiSW5kZXg7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAoY29sdW1uLCBpbmRleDogbnVtYmVyKTogU2VsZWN0YWJsZUNvbHVtbiA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB2aXNpYmxlQ29sdW1uS2V5cy5pbmNsdWRlcyhjb2x1bW4ua2V5KSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBpbmRleCA9PT0gMFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIC8vIGtlZXAgY291bnQgb2Ygc2VsZWN0ZWRcbiAgICAgICAgdGhpcy5fY291bnRTZWxlY3RlZENvbHVtbnMoKTtcblxuICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KCk7XG5cbiAgICAgICAgLy8gcmVzZXQgZmlsdGVyIHNldHRpbmdzIHNldHRpbmdzXG4gICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5U3ViamVjdC5uZXh0KElOSVRJQUxfU0VBUkNIX1RFWFQpO1xuICAgICAgICB0aGlzLl9zaG93QWxsSXRlbXNTdWJqZWN0Lm5leHQoSU5JVElBTF9TSE9XX0FMTF9JVEVNUyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0ZpbHRlck9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5fc2hvd0FsbEl0ZW1zU3ViamVjdCwgdGhpcy5fc2VhcmNoUXVlcnlTdWJqZWN0XSlcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjApKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtzaG93QWxsLCBzZWFyY2hRdWVyeV0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5fc2VsZWN0YWJsZUNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jb2x1bW4ubGFiZWwudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hRdWVyeS50b0xvY2FsZUxvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gc2hvd0FsbCB8fCBpdGVtLnNlbGVjdGVkKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkNoYW5nZUZpbHRlcmVkQ29sdW1uc0xpc3QoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb25DaGFuZ2VGaWx0ZXJlZENvbHVtbnNMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVNb3ZlbWVudEJ1dHRvbnNTdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0VmlzaWJsZUNvbHVtbnNGcm9tU2VsZWN0ZWRDb2x1bW5zKGNvbHVtbnMgPSB0aGlzLl9zZWxlY3RhYmxlQ29sdW1ucyk6IFZpc2libGVDb2x1bW5UeXBlW10ge1xuICAgICAgICByZXR1cm4gY29sdW1ucy5maWx0ZXIoKHsgc2VsZWN0ZWQgfSkgPT4gc2VsZWN0ZWQpLm1hcCgoeyBjb2x1bW4gfSk6IFZpc2libGVDb2x1bW5UeXBlID0+IGNvbHVtbi5rZXkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0QWN0aXZlQ29sdW1uSW5kZXhJbkZpbHRlcmVkTGlzdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRDb2x1bW5zLmZpbmRJbmRleCgoeyBhY3RpdmUgfSkgPT4gYWN0aXZlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21vdmVDb2x1bW5JbkZpbHRlcmVkTGlzdEJ5SW5kZXgoZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgbW92ZWRJdGVtLCByZXBsYWNlZEl0ZW0gfSA9IHRoaXMuX21vdmVFbGVtZW50SW5UaGVMaXN0QnlJbmRleCh0aGlzLl9maWx0ZXJlZENvbHVtbnMsIGZyb20sIHRvKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIG5lZWQgdG8gcmVmbGVjdCBhbmFsb2dpY2FsIG1vdmVtZW50IGluIHRoZSBvcmlnaW5hbCBsaXN0XG4gICAgICAgICAqIHdpdGggcmVzcGVjdCB0byB0aGUgb3JpZ2luYWwgbGlzdCBvcmRlclxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fbW92ZUNvbHVtbkluU2VsZWN0YWJsZUxpc3QobW92ZWRJdGVtLCByZXBsYWNlZEl0ZW0pO1xuXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZU1vdmVtZW50QnV0dG9uc1N0YXRlKCk7XG5cbiAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGVSZXNldEF2YWlsYWJpbGl0eSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNb3ZlIGNvbHVtbiBpbiBzZWxlY3RhYmxlIGxpc3QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbW92ZUNvbHVtbkluU2VsZWN0YWJsZUxpc3QoaXRlbVRvTW92ZTogU2VsZWN0YWJsZUNvbHVtbiwgdGFyZ2V0SXRlbTogU2VsZWN0YWJsZUNvbHVtbik6IHZvaWQge1xuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5fc2VsZWN0YWJsZUNvbHVtbnM7XG4gICAgICAgIHRoaXMuX21vdmVFbGVtZW50SW5UaGVMaXN0QnlJbmRleChsaXN0LCBsaXN0LmluZGV4T2YoaXRlbVRvTW92ZSksIGxpc3QuaW5kZXhPZih0YXJnZXRJdGVtKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1vdmUgZWxlbWVudCBpbiB0aGUgbGlzdFxuICAgICAqIEByZXR1cm4gbW92ZWQgaXRlbSBhbmQgcmVwbGFjZWQgaXRlbS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9tb3ZlRWxlbWVudEluVGhlTGlzdEJ5SW5kZXg8VD4oXG4gICAgICAgIGxpc3Q6IFRbXSxcbiAgICAgICAgZnJvbUluZGV4OiBudW1iZXIsXG4gICAgICAgIHRvSW5kZXg6IG51bWJlclxuICAgICk6IHsgbW92ZWRJdGVtOiBUOyByZXBsYWNlZEl0ZW06IFQgfSB7XG4gICAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBsaXN0Lmxlbmd0aDtcblxuICAgICAgICBmcm9tSW5kZXggPSBNYXRoLm1pbihNYXRoLm1heChmcm9tSW5kZXgsIDApLCBsaXN0TGVuZ3RoIC0gMSk7XG4gICAgICAgIHRvSW5kZXggPSBNYXRoLm1pbihNYXRoLm1heCh0b0luZGV4LCAwKSwgbGlzdExlbmd0aCAtIDEpO1xuXG4gICAgICAgIGNvbnN0IHJlcGxhY2VkSXRlbSA9IGxpc3RbdG9JbmRleF07XG4gICAgICAgIGNvbnN0IG1vdmVkSXRlbSA9IGxpc3Quc3BsaWNlKGZyb21JbmRleCwgMSlbMF07XG5cbiAgICAgICAgbGlzdC5zcGxpY2UodG9JbmRleCwgMCwgbW92ZWRJdGVtKTtcblxuICAgICAgICByZXR1cm4geyBtb3ZlZEl0ZW0sIHJlcGxhY2VkSXRlbSB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY291bnRTZWxlY3RlZENvbHVtbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQ29sdW1uc0NvdW50ID0gdGhpcy5fc2VsZWN0YWJsZUNvbHVtbnMuZmlsdGVyKCh7IHNlbGVjdGVkIH0pID0+IHNlbGVjdGVkKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVNb3ZlbWVudEJ1dHRvbnNTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLl9nZXRBY3RpdmVDb2x1bW5JbmRleEluRmlsdGVyZWRMaXN0KCk7XG4gICAgICAgIHRoaXMuX21vdmVVcERpc2FibGVkID0gYWN0aXZlSW5kZXggPCAxO1xuICAgICAgICB0aGlzLl9tb3ZlRG93bkRpc2FibGVkID0gYWN0aXZlSW5kZXggPCAwIHx8IGFjdGl2ZUluZGV4ID49IHRoaXMuX2ZpbHRlcmVkQ29sdW1ucy5sZW5ndGggLSAxO1xuICAgIH1cbn1cbiIsIjxmZC1kaWFsb2cgY2xhc3M9XCJmZHAtdGFibGUtcDEzLWNvbHVtbnMtZGlhbG9nXCI+XG4gICAgPGZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxoNCBmZC10aXRsZSBbaGVhZGVyU2l6ZV09XCI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nSGVhZGVyJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLXJlc2V0LWJ1dHRvbj48L2ZkcC10YWJsZS1yZXNldC1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICA8ZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgIDxmZC10b29sYmFyPlxuICAgICAgICAgICAgPGZkcC1zZWFyY2gtZmllbGRcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtVGFibGUuUDEzQ29sdW1uc0RpYWxvZ1NlYXJjaFBsYWNlaG9sZGVyJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRUZXh0XT1cIihfc2VhcmNoUXVlcnlTdWJqZWN0IHwgYXN5bmMpIHx8ICcnXCJcbiAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwiW11cIlxuICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZSk9XCJfc2VhcmNoSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICA+PC9mZHAtc2VhcmNoLWZpZWxkPlxuICAgICAgICAgICAgPGZkLXRvb2xiYXItc3BhY2VyPjwvZmQtdG9vbGJhci1zcGFjZXI+XG4gICAgICAgICAgICA8IS0tIFNob3cgU2VsZWN0ZWQvQWxsIC0tPlxuICAgICAgICAgICAgPGJ1dHRvbiBmZC10b29sYmFyLWl0ZW0gZmQtYnV0dG9uIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgKGNsaWNrKT1cIl90b2dnbGVTaG93QWxsKClcIj5cbiAgICAgICAgICAgICAgICBAaWYgKChfc2hvd0FsbEl0ZW1zU3ViamVjdCB8IGFzeW5jKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nc1Nob3dTZWxlY3RlZCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nU2hvd0FsbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPCEtLSBBY3RpdmUgQnV0dG9uIE1vdmVtZW50IC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBnbHlwaD1cImNvbGxhcHNlLWdyb3VwXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX21vdmVVcERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlVG9Ub3BCdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZVRvVG9wQnRuJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX21vdmVBY3RpdmVUb1RvcCgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJzbGltLWFycm93LXVwXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX21vdmVVcERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlVXBCdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZVVwQnRuJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX21vdmVBY3RpdmVVcCgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJzbGltLWFycm93LWRvd25cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfbW92ZURvd25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZURvd25CdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZURvd25CdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfbW92ZUFjdGl2ZURvd24oKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIGdseXBoPVwiZXhwYW5kLWdyb3VwXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX21vdmVEb3duRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtVGFibGUuUDEzQ29sdW1uc0RpYWxvZ01vdmVUb0JvdHRvbUJ0bicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlVG9Cb3R0b21CdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfbW92ZUFjdGl2ZVRvQm90dG9tKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2ZkLXRvb2xiYXI+XG4gICAgICAgIDx1bCBmZC1saXN0PlxuICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICA8ZmQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiX3NlbGVjdGVkQ29sdW1uc0NvdW50ID09PSBfc2VsZWN0YWJsZUNvbHVtbnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3RvZ2dsZVNlbGVjdEFsbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9zZWxlY3RBbGxEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgPjwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dTZWxlY3RBbGwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2x1bW5zQ291bnQ6IF9zZWxlY3RlZENvbHVtbnNDb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0YWJsZUNvbHVtbnNDb3VudDogX3NlbGVjdGFibGVDb2x1bW5zLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBfZmlsdGVyZWRDb2x1bW5zOyB0cmFjayBfZmlsdGVyQnlDb2x1bW5LeSgkaW5kZXgsIGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGZkLWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtc2VsZWN0LWl0ZW0tLXNlbGVjdGVkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtc2VsZWN0LWl0ZW0tLWFjdGl2ZV09XCJpdGVtLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc2V0QWN0aXZlQ29sdW1uKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveCBbKG5nTW9kZWwpXT1cIml0ZW0uc2VsZWN0ZWRcIiAobmdNb2RlbENoYW5nZSk9XCJfb25Ub2dnbGVDb2x1bW4oKVwiPjwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmNvbHVtbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgIDxmZC1kaWFsb2ctZm9vdGVyPlxuICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVGFibGUuUDEzQ29sdW1uc0RpYWxvZ0NvbmZpcm1hdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtKClcIlxuICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dDYW5jZWxCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgIDwvZmQtZGlhbG9nLWZvb3Rlcj5cbjwvZmQtZGlhbG9nPlxuIl19
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtcDEzLWRpYWxvZy9jb2x1bW5zL2NvbHVtbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXAxMy1kaWFsb2cvY29sdW1ucy9jb2x1bW5zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDckIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUNI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QUksYUFDMUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLDJCQUEyQixFQUFFLENBQUMsbUJBQ2pFLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixTQUFTO3dCQUNULGVBQWU7cUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZURpYWxvZ0NvbW1vbkRhdGEgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcblxuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgQnV0dG9uQmFyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9iYXInO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jaGVja2JveCc7XG5pbXBvcnQge1xuICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgRGlhbG9nQ29tcG9uZW50LFxuICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICBEaWFsb2dIZWFkZXJDb21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50LCBMaXN0SXRlbUNvbXBvbmVudCwgTGlzdFRpdGxlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBUb29sYmFyQ29tcG9uZW50LCBUb29sYmFySXRlbURpcmVjdGl2ZSwgVG9vbGJhclNwYWNlckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90b29sYmFyJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBTZWFyY2hGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IFJFU0VUVEFCTEVfVE9LRU4sIFJlc2V0QnV0dG9uQ29tcG9uZW50LCBSZXNldHRhYmxlIH0gZnJvbSAnLi4vLi4vcmVzZXQtYnV0dG9uL3Jlc2V0LWJ1dHRvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ1RhYmxlQ29sdW1uIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xufVxuXG50eXBlIFZpc2libGVDb2x1bW5UeXBlID0gc3RyaW5nOyAvLyBDb2x1bW5LZXlcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zRGlhbG9nRGF0YSBleHRlbmRzIFRhYmxlRGlhbG9nQ29tbW9uRGF0YSB7XG4gICAgYXZhaWxhYmxlQ29sdW1uczogRGlhbG9nVGFibGVDb2x1bW5bXTtcbiAgICB2aXNpYmxlQ29sdW1uczogVmlzaWJsZUNvbHVtblR5cGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zRGlhbG9nUmVzdWx0RGF0YSB7XG4gICAgdmlzaWJsZUNvbHVtbnM6IFZpc2libGVDb2x1bW5UeXBlW107XG59XG5cbmNsYXNzIFNlbGVjdGFibGVDb2x1bW4ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICAvKiogU2VsZWN0ZWQgKi9cbiAgICAgICAgcHVibGljIHNlbGVjdGVkOiBib29sZWFuLFxuICAgICAgICAvKiogQWN0aXZlICovXG4gICAgICAgIHB1YmxpYyBhY3RpdmU6IGJvb2xlYW4sXG4gICAgICAgIC8qKiBUYWJsZSBDb2x1bW4gaXQgYmVsb25ncyB0byAqL1xuICAgICAgICBwdWJsaWMgY29sdW1uOiBEaWFsb2dUYWJsZUNvbHVtblxuICAgICkge31cbn1cblxuY29uc3QgSU5JVElBTF9TRUFSQ0hfVEVYVCA9ICcnO1xuY29uc3QgSU5JVElBTF9TSE9XX0FMTF9JVEVNUyA9IHRydWU7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW5zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vY29sdW1ucy5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFJFU0VUVEFCTEVfVE9LRU4sIHVzZUV4aXN0aW5nOiBQMTNDb2x1bW5zRGlhbG9nQ29tcG9uZW50IH1dLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudCxcbiAgICAgICAgVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBCYXJSaWdodERpcmVjdGl2ZSxcbiAgICAgICAgUmVzZXRCdXR0b25Db21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICAgICAgU2VhcmNoRmllbGRDb21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJTcGFjZXJEaXJlY3RpdmUsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhckl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIExpc3RDb21wb25lbnQsXG4gICAgICAgIExpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIExpc3RUaXRsZURpcmVjdGl2ZSxcbiAgICAgICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBQMTNDb2x1bW5zRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgUmVzZXR0YWJsZSwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hlbiByZXNldCBjb21tYW5kIGlzIGF2YWlsYWJsZSAqL1xuICAgIHJlYWRvbmx5IGlzUmVzZXRBdmFpbGFibGUkID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKiBUYWJsZSBjb2x1bW5zIGF2YWlsYWJsZSBmb3IgZ3JvdXBpbmcgKi9cbiAgICByZWFkb25seSBhdmFpbGFibGVDb2x1bW5zOiBEaWFsb2dUYWJsZUNvbHVtbltdID0gW107XG5cbiAgICAvKiogQWxsIGF2YWlsYWJsZSBjb2x1bW5zIGZvciBpbnRlcmFjdGluZyAqL1xuICAgIF9zZWxlY3RhYmxlQ29sdW1uczogU2VsZWN0YWJsZUNvbHVtbltdID0gW107XG5cbiAgICAvKiogZmlsdGVyZWQgY29sdW1ucyB0aGF0IGFyZSByZW5kZXJlZCBpbiB0aGUgbGlzdCAqL1xuICAgIF9maWx0ZXJlZENvbHVtbnM6IFNlbGVjdGFibGVDb2x1bW5bXSA9IFtdO1xuXG4gICAgLyoqIFNlYXJjaCBRdWVyeSBzdWJqZWN0ICovXG4gICAgX3NlYXJjaFF1ZXJ5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihJTklUSUFMX1NFQVJDSF9URVhUKTtcbiAgICAvKiogU2hvdyBBbGwgZmxhZyBzdWJqZWN0ICovXG4gICAgX3Nob3dBbGxJdGVtc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KElOSVRJQUxfU0hPV19BTExfSVRFTVMpO1xuXG4gICAgLyoqIFNlbGVjdGVkIGNvbHVtbnMgY291bnQgKi9cbiAgICBfc2VsZWN0ZWRDb2x1bW5zQ291bnQgPSAwO1xuXG4gICAgLyoqIEZsYWcgdG8gdHJhY2sgZGlzYWJsZWQgc3RhdGUgZm9yIG1vdmUtZG93biBtb3ZlLXVwIGJ1dHRvbnMgKi9cbiAgICBfbW92ZVVwRGlzYWJsZWQgPSB0cnVlO1xuICAgIC8qKiBGbGFnIHRvIHRyYWNrIGRpc2FibGVkIHN0YXRlIGZvciBtb3ZlLWRvd24gbW92ZS11cCBidXR0b25zICovXG4gICAgX21vdmVEb3duRGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2lzU2hvd25BbGxJdGVtcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dBbGxJdGVtc1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfc2VsZWN0QWxsRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5faXNTaG93bkFsbEl0ZW1zIHx8IHRoaXMuX2ZpbHRlcmVkQ29sdW1ucy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogRGlhbG9nUmVmPENvbHVtbnNEaWFsb2dEYXRhPixcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHsgYXZhaWxhYmxlQ29sdW1ucywgdmlzaWJsZUNvbHVtbnMgfSA9IHRoaXMuZGlhbG9nUmVmLmRhdGE7XG5cbiAgICAgICAgdGhpcy5hdmFpbGFibGVDb2x1bW5zID0gYXZhaWxhYmxlQ29sdW1ucz8ubWFwKCh7IGxhYmVsLCBrZXkgfSkgPT4gKHsgbGFiZWwsIGtleSB9KSkgfHwgW107XG5cbiAgICAgICAgdGhpcy5faW5pdGlhdGVDb2x1bW5zKHZpc2libGVDb2x1bW5zKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0ZpbHRlck9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIFJlc2V0IHRvIHRoZSBpbml0aWFsIHN0YXRlICovXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYXRlQ29sdW1ucyh0aGlzLmF2YWlsYWJsZUNvbHVtbnMubWFwKChjKSA9PiBjLmtleSkpO1xuICAgICAgICB0aGlzLmlzUmVzZXRBdmFpbGFibGUkLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIENsb3NlIGRpYWxvZyAqL1xuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UobnVsbCk7XG4gICAgfVxuXG4gICAgLyoqIENvbmZpcm0gY2hhbmdlcyBhbmQgY2xvc2UgZGlhbG9nICovXG4gICAgY29uZmlybSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSB0aGlzLl9nZXRWaXNpYmxlQ29sdW1uc0Zyb21TZWxlY3RlZENvbHVtbnModGhpcy5fc2VsZWN0YWJsZUNvbHVtbnMpO1xuICAgICAgICBjb25zdCByZXN1bHQ6IENvbHVtbnNEaWFsb2dSZXN1bHREYXRhID0geyB2aXNpYmxlQ29sdW1ucyB9O1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RvZ2dsZVNlbGVjdEFsbChzZWxlY3RBbGw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0YWJsZUNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiAoY29sdW1uLnNlbGVjdGVkID0gc2VsZWN0QWxsKSk7XG4gICAgICAgIHRoaXMuX29uVG9nZ2xlQ29sdW1uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25Ub2dnbGVDb2x1bW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvdW50U2VsZWN0ZWRDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KCk6IHZvaWQge1xuICAgICAgICBsZXQgcmVzZXR0YWJsZSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRDb2x1bW5zQ291bnQgIT09IHRoaXMuYXZhaWxhYmxlQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIEluaXRpYWxseSBhbGwgY29sdW1ucyBhcmUgc2VsZWN0ZWQuIElmIG5vdCwgcmVzZXQgc2hvdWxkIGJlIGFjdGl2ZVxuICAgICAgICAgICAgcmVzZXR0YWJsZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiBhbGwgYXJlIHNlbGVjdGVkLCBjaGVjayBmb3IgY29sdW1ucyBvcmRlciB0byBtYXRjaCB0aGUgaW5pdGlhbCBvbmVcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmF2YWlsYWJsZUNvbHVtbnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGFibGVDb2x1bW5zW2luZGV4XS5jb2x1bW4ua2V5ICE9PSB0aGlzLmF2YWlsYWJsZUNvbHVtbnNbaW5kZXhdLmtleSkge1xuICAgICAgICAgICAgICAgICAgICByZXNldHRhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNSZXNldEF2YWlsYWJsZSQuc2V0KHJlc2V0dGFibGUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlYXJjaElucHV0Q2hhbmdlKHsgdGV4dCB9OiBTZWFyY2hJbnB1dCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWFyY2hRdWVyeVN1YmplY3QubmV4dCh0ZXh0IHx8ICcnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b2dnbGVTaG93QWxsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzaG93QWxsSXRlbXMgPSB0aGlzLl9zaG93QWxsSXRlbXNTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIHRoaXMuX3Nob3dBbGxJdGVtc1N1YmplY3QubmV4dCghc2hvd0FsbEl0ZW1zKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRBY3RpdmVDb2x1bW4oY29sdW1uOiBTZWxlY3RhYmxlQ29sdW1uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGFibGVDb2x1bW5zLm1hcCgoX2NvbHVtbikgPT4ge1xuICAgICAgICAgICAgX2NvbHVtbi5hY3RpdmUgPSBfY29sdW1uID09PSBjb2x1bW47XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZU1vdmVtZW50QnV0dG9uc1N0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbW92ZUFjdGl2ZVRvVG9wKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tb3ZlQ29sdW1uSW5GaWx0ZXJlZExpc3RCeUluZGV4KHRoaXMuX2dldEFjdGl2ZUNvbHVtbkluZGV4SW5GaWx0ZXJlZExpc3QoKSwgMCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbW92ZUFjdGl2ZVRvQm90dG9tKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tb3ZlQ29sdW1uSW5GaWx0ZXJlZExpc3RCeUluZGV4KFxuICAgICAgICAgICAgdGhpcy5fZ2V0QWN0aXZlQ29sdW1uSW5kZXhJbkZpbHRlcmVkTGlzdCgpLFxuICAgICAgICAgICAgdGhpcy5fZmlsdGVyZWRDb2x1bW5zLmxlbmd0aCAtIDFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tb3ZlQWN0aXZlVXAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUNvbHVtbkluZGV4ID0gdGhpcy5fZ2V0QWN0aXZlQ29sdW1uSW5kZXhJbkZpbHRlcmVkTGlzdCgpO1xuICAgICAgICB0aGlzLl9tb3ZlQ29sdW1uSW5GaWx0ZXJlZExpc3RCeUluZGV4KGFjdGl2ZUNvbHVtbkluZGV4LCBhY3RpdmVDb2x1bW5JbmRleCAtIDEpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21vdmVBY3RpdmVEb3duKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVDb2x1bW5JbmRleCA9IHRoaXMuX2dldEFjdGl2ZUNvbHVtbkluZGV4SW5GaWx0ZXJlZExpc3QoKTtcbiAgICAgICAgdGhpcy5fbW92ZUNvbHVtbkluRmlsdGVyZWRMaXN0QnlJbmRleChhY3RpdmVDb2x1bW5JbmRleCwgYWN0aXZlQ29sdW1uSW5kZXggKyAxKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maWx0ZXJCeUNvbHVtbkt5KGluZGV4OiBudW1iZXIsIGl0ZW06IFNlbGVjdGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbT8uY29sdW1uLmtleTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIHZpc2libGVDb2x1bW5LZXlzIGtleXMgb2YgY29sdW1ucyB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgYXMgc2VsZWN0ZWQuXG4gICAgICogQWxzbywgdGhlaXIgb3JkZXIgbWF0dGVyczogaXQgd2lsbCBiZSB1c2VkXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhdGVDb2x1bW5zKHZpc2libGVDb2x1bW5LZXlzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCB2aXNpYmxlQ29sdW1uSW5kZXhNYXAgPSBuZXcgTWFwKHZpc2libGVDb2x1bW5LZXlzLm1hcCgoa2V5LCBpbmRleCkgPT4gW2tleSwgaW5kZXhdKSk7XG4gICAgICAgIHRoaXMuX3NlbGVjdGFibGVDb2x1bW5zID0gdGhpcy5hdmFpbGFibGVDb2x1bW5zXG4gICAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgICAgLy8gc29ydGluZyBjb2x1bW5zIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgb3JkZXIgb2YgdmlzaWJsZSBjb2x1bW5zXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFJbmRleCA9IHZpc2libGVDb2x1bW5JbmRleE1hcC5nZXQoYS5rZXkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJJbmRleCA9IHZpc2libGVDb2x1bW5JbmRleE1hcC5nZXQoYi5rZXkpO1xuICAgICAgICAgICAgICAgIGlmIChhSW5kZXggPT09IHVuZGVmaW5lZCB8fCBiSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBwcmVzZXJ2aW5nIGluaXRpYWwgb3JkZXIgb2Ygbm90IHNlbGVjdGVkIGNvbHVtblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFJbmRleCAtIGJJbmRleDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgIChjb2x1bW4sIGluZGV4OiBudW1iZXIpOiBTZWxlY3RhYmxlQ29sdW1uID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHZpc2libGVDb2x1bW5LZXlzLmluY2x1ZGVzKGNvbHVtbi5rZXkpLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGluZGV4ID09PSAwXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgLy8ga2VlcCBjb3VudCBvZiBzZWxlY3RlZFxuICAgICAgICB0aGlzLl9jb3VudFNlbGVjdGVkQ29sdW1ucygpO1xuXG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKTtcblxuICAgICAgICAvLyByZXNldCBmaWx0ZXIgc2V0dGluZ3Mgc2V0dGluZ3NcbiAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnlTdWJqZWN0Lm5leHQoSU5JVElBTF9TRUFSQ0hfVEVYVCk7XG4gICAgICAgIHRoaXMuX3Nob3dBbGxJdGVtc1N1YmplY3QubmV4dChJTklUSUFMX1NIT1dfQUxMX0lURU1TKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvRmlsdGVyT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9zaG93QWxsSXRlbXNTdWJqZWN0LCB0aGlzLl9zZWFyY2hRdWVyeVN1YmplY3RdKVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyMCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoW3Nob3dBbGwsIHNlYXJjaFF1ZXJ5XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJlZENvbHVtbnMgPSB0aGlzLl9zZWxlY3RhYmxlQ29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNvbHVtbi5sYWJlbC50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFF1ZXJ5LnRvTG9jYWxlTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBzaG93QWxsIHx8IGl0ZW0uc2VsZWN0ZWQpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlRmlsdGVyZWRDb2x1bW5zTGlzdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vbkNoYW5nZUZpbHRlcmVkQ29sdW1uc0xpc3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZU1vdmVtZW50QnV0dG9uc1N0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRWaXNpYmxlQ29sdW1uc0Zyb21TZWxlY3RlZENvbHVtbnMoY29sdW1ucyA9IHRoaXMuX3NlbGVjdGFibGVDb2x1bW5zKTogVmlzaWJsZUNvbHVtblR5cGVbXSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcigoeyBzZWxlY3RlZCB9KSA9PiBzZWxlY3RlZCkubWFwKCh7IGNvbHVtbiB9KTogVmlzaWJsZUNvbHVtblR5cGUgPT4gY29sdW1uLmtleSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRBY3RpdmVDb2x1bW5JbmRleEluRmlsdGVyZWRMaXN0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZENvbHVtbnMuZmluZEluZGV4KCh7IGFjdGl2ZSB9KSA9PiBhY3RpdmUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbW92ZUNvbHVtbkluRmlsdGVyZWRMaXN0QnlJbmRleChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBtb3ZlZEl0ZW0sIHJlcGxhY2VkSXRlbSB9ID0gdGhpcy5fbW92ZUVsZW1lbnRJblRoZUxpc3RCeUluZGV4KHRoaXMuX2ZpbHRlcmVkQ29sdW1ucywgZnJvbSwgdG8pO1xuICAgICAgICAvKipcbiAgICAgICAgICogbmVlZCB0byByZWZsZWN0IGFuYWxvZ2ljYWwgbW92ZW1lbnQgaW4gdGhlIG9yaWdpbmFsIGxpc3RcbiAgICAgICAgICogd2l0aCByZXNwZWN0IHRvIHRoZSBvcmlnaW5hbCBsaXN0IG9yZGVyXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9tb3ZlQ29sdW1uSW5TZWxlY3RhYmxlTGlzdChtb3ZlZEl0ZW0sIHJlcGxhY2VkSXRlbSk7XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlTW92ZW1lbnRCdXR0b25zU3RhdGUoKTtcblxuICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1vdmUgY29sdW1uIGluIHNlbGVjdGFibGUgbGlzdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9tb3ZlQ29sdW1uSW5TZWxlY3RhYmxlTGlzdChpdGVtVG9Nb3ZlOiBTZWxlY3RhYmxlQ29sdW1uLCB0YXJnZXRJdGVtOiBTZWxlY3RhYmxlQ29sdW1uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLl9zZWxlY3RhYmxlQ29sdW1ucztcbiAgICAgICAgdGhpcy5fbW92ZUVsZW1lbnRJblRoZUxpc3RCeUluZGV4KGxpc3QsIGxpc3QuaW5kZXhPZihpdGVtVG9Nb3ZlKSwgbGlzdC5pbmRleE9mKHRhcmdldEl0ZW0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTW92ZSBlbGVtZW50IGluIHRoZSBsaXN0XG4gICAgICogQHJldHVybiBtb3ZlZCBpdGVtIGFuZCByZXBsYWNlZCBpdGVtLlxuICAgICAqL1xuICAgIHByaXZhdGUgX21vdmVFbGVtZW50SW5UaGVMaXN0QnlJbmRleDxUPihcbiAgICAgICAgbGlzdDogVFtdLFxuICAgICAgICBmcm9tSW5kZXg6IG51bWJlcixcbiAgICAgICAgdG9JbmRleDogbnVtYmVyXG4gICAgKTogeyBtb3ZlZEl0ZW06IFQ7IHJlcGxhY2VkSXRlbTogVCB9IHtcbiAgICAgICAgY29uc3QgbGlzdExlbmd0aCA9IGxpc3QubGVuZ3RoO1xuXG4gICAgICAgIGZyb21JbmRleCA9IE1hdGgubWluKE1hdGgubWF4KGZyb21JbmRleCwgMCksIGxpc3RMZW5ndGggLSAxKTtcbiAgICAgICAgdG9JbmRleCA9IE1hdGgubWluKE1hdGgubWF4KHRvSW5kZXgsIDApLCBsaXN0TGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgY29uc3QgcmVwbGFjZWRJdGVtID0gbGlzdFt0b0luZGV4XTtcbiAgICAgICAgY29uc3QgbW92ZWRJdGVtID0gbGlzdC5zcGxpY2UoZnJvbUluZGV4LCAxKVswXTtcblxuICAgICAgICBsaXN0LnNwbGljZSh0b0luZGV4LCAwLCBtb3ZlZEl0ZW0pO1xuXG4gICAgICAgIHJldHVybiB7IG1vdmVkSXRlbSwgcmVwbGFjZWRJdGVtIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb3VudFNlbGVjdGVkQ29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb2x1bW5zQ291bnQgPSB0aGlzLl9zZWxlY3RhYmxlQ29sdW1ucy5maWx0ZXIoKHsgc2VsZWN0ZWQgfSkgPT4gc2VsZWN0ZWQpLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZU1vdmVtZW50QnV0dG9uc1N0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuX2dldEFjdGl2ZUNvbHVtbkluZGV4SW5GaWx0ZXJlZExpc3QoKTtcbiAgICAgICAgdGhpcy5fbW92ZVVwRGlzYWJsZWQgPSBhY3RpdmVJbmRleCA8IDE7XG4gICAgICAgIHRoaXMuX21vdmVEb3duRGlzYWJsZWQgPSBhY3RpdmVJbmRleCA8IDAgfHwgYWN0aXZlSW5kZXggPj0gdGhpcy5fZmlsdGVyZWRDb2x1bW5zLmxlbmd0aCAtIDE7XG4gICAgfVxufVxuIiwiPGZkLWRpYWxvZyBjbGFzcz1cImZkcC10YWJsZS1wMTMtY29sdW1ucy1kaWFsb2dcIj5cbiAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxuICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPGg0IGZkLXRpdGxlIFtoZWFkZXJTaXplXT1cIjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dIZWFkZXInIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtcmVzZXQtYnV0dG9uPjwvZmRwLXRhYmxlLXJlc2V0LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgIDxmZC1kaWFsb2ctYm9keT5cbiAgICAgICAgPGZkLXRvb2xiYXI+XG4gICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nU2VhcmNoUGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtpbnB1dFRleHRdPVwiKF9zZWFyY2hRdWVyeVN1YmplY3QgfCBhc3luYykgfHwgJydcIlxuICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJbXVwiXG4gICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlKT1cIl9zZWFyY2hJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGQ+XG4gICAgICAgICAgICA8ZmQtdG9vbGJhci1zcGFjZXI+PC9mZC10b29sYmFyLXNwYWNlcj5cbiAgICAgICAgICAgIDwhLS0gU2hvdyBTZWxlY3RlZC9BbGwgLS0+XG4gICAgICAgICAgICA8YnV0dG9uIGZkLXRvb2xiYXItaXRlbSBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiAoY2xpY2spPVwiX3RvZ2dsZVNob3dBbGwoKVwiPlxuICAgICAgICAgICAgICAgIEBpZiAoKF9zaG93QWxsSXRlbXNTdWJqZWN0IHwgYXN5bmMpID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dzU2hvd1NlbGVjdGVkJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dTaG93QWxsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8IS0tIEFjdGl2ZSBCdXR0b24gTW92ZW1lbnQgLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIGdseXBoPVwiY29sbGFwc2UtZ3JvdXBcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfbW92ZVVwRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtVGFibGUuUDEzQ29sdW1uc0RpYWxvZ01vdmVUb1RvcEJ0bicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlVG9Ub3BCdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfbW92ZUFjdGl2ZVRvVG9wKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBnbHlwaD1cInNsaW0tYXJyb3ctdXBcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfbW92ZVVwRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtVGFibGUuUDEzQ29sdW1uc0RpYWxvZ01vdmVVcEJ0bicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlVXBCdG4nIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfbW92ZUFjdGl2ZVVwKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBnbHlwaD1cInNsaW0tYXJyb3ctZG93blwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9tb3ZlRG93bkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlRG93bkJ0bicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0NvbHVtbnNEaWFsb2dNb3ZlRG93bkJ0bicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9tb3ZlQWN0aXZlRG93bigpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJleHBhbmQtZ3JvdXBcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfbW92ZURvd25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nTW92ZVRvQm90dG9tQnRuJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVGFibGUuUDEzQ29sdW1uc0RpYWxvZ01vdmVUb0JvdHRvbUJ0bicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9tb3ZlQWN0aXZlVG9Cb3R0b20oKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZmQtdG9vbGJhcj5cbiAgICAgICAgPHVsIGZkLWxpc3Q+XG4gICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfc2VsZWN0ZWRDb2x1bW5zQ291bnQgPT09IF9zZWxlY3RhYmxlQ29sdW1ucy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfdG9nZ2xlU2VsZWN0QWxsKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX3NlbGVjdEFsbERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVGFibGUuUDEzQ29sdW1uc0RpYWxvZ1NlbGVjdEFsbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbHVtbnNDb3VudDogX3NlbGVjdGVkQ29sdW1uc0NvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYmxlQ29sdW1uc0NvdW50OiBfc2VsZWN0YWJsZUNvbHVtbnMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIF9maWx0ZXJlZENvbHVtbnM7IHRyYWNrIF9maWx0ZXJCeUNvbHVtbkt5KCRpbmRleCwgaXRlbSkpIHtcbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgZmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1zZWxlY3QtaXRlbS0tc2VsZWN0ZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1zZWxlY3QtaXRlbS0tYWN0aXZlXT1cIml0ZW0uYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zZXRBY3RpdmVDb2x1bW4oaXRlbSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94IFsobmdNb2RlbCldPVwiaXRlbS5zZWxlY3RlZFwiIChuZ01vZGVsQ2hhbmdlKT1cIl9vblRvZ2dsZUNvbHVtbigpXCI+PC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uY29sdW1uLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3VsPlxuICAgIDwvZmQtZGlhbG9nLWJvZHk+XG4gICAgPGZkLWRpYWxvZy1mb290ZXI+XG4gICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1UYWJsZS5QMTNDb2x1bW5zRGlhbG9nQ29uZmlybWF0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm0oKVwiXG4gICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVGFibGUuUDEzQ29sdW1uc0RpYWxvZ0NhbmNlbEJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuPC9mZC1kaWFsb2c+XG4iXX0=
@@ -1,5 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
1
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, signal } from '@angular/core';
3
2
  import { DialogRef } from '@fundamental-ngx/core/dialog';
4
3
  import { RESETTABLE_TOKEN, ResetButtonComponent } from '../../reset-button/reset-button.component';
5
4
  import { CdkScrollable } from '@angular/cdk/overlay';
@@ -20,10 +19,8 @@ export class P13FilteringDialogComponent {
20
19
  /** @hidden */
21
20
  constructor(dialogRef) {
22
21
  this.dialogRef = dialogRef;
23
- /** @hidden */
24
- this._isResetAvailableSubject$ = new BehaviorSubject(false);
25
22
  /** Indicates when reset command is available */
26
- this.isResetAvailable$ = this._isResetAvailableSubject$.asObservable();
23
+ this.isResetAvailable$ = signal(false);
27
24
  /** Table columns available for filtering */
28
25
  this.columns = [];
29
26
  /**
@@ -73,7 +70,7 @@ export class P13FilteringDialogComponent {
73
70
  /** Reset changes to the initial state */
74
71
  reset() {
75
72
  this._initiateRules();
76
- this._isResetAvailableSubject$.next(false);
73
+ this.isResetAvailable$.set(false);
77
74
  }
78
75
  /** Close dialog */
79
76
  cancel() {
@@ -109,7 +106,7 @@ export class P13FilteringDialogComponent {
109
106
  _recalculateResetAvailability() {
110
107
  const hasOnlyOneEmptyIncludeRule = this._includeRules.length === 1 && !this._includeRules[0].hasValue;
111
108
  const hasOnlyOneEmptyExcludeRule = this._excludeRules.length === 1 && !this._excludeRules[0].hasValue;
112
- this._isResetAvailableSubject$.next(!hasOnlyOneEmptyIncludeRule || !hasOnlyOneEmptyExcludeRule);
109
+ this.isResetAvailable$.set(!hasOnlyOneEmptyIncludeRule || !hasOnlyOneEmptyExcludeRule);
113
110
  }
114
111
  /** @hidden */
115
112
  _onRuleStateChange() {
@@ -185,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
185
182
  FdTranslatePipe
186
183
  ], template: "<fd-dialog class=\"fdp-table-p13-filtering-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.P13FilterDialogHeader' | 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 <!-- Include Rules -->\n <fd-panel [expanded]=\"_includePanelExpanded\">\n <div fd-panel-title>\n {{\n (_validIncludeRulesCount > 0\n ? 'platformTable.P13FilterDialogIncludePanelTitleWithCount'\n : 'platformTable.P13FilterDialogIncludePanelTitleWithoutCount'\n ) | fdTranslate: { count: _validIncludeRulesCount }\n }}\n </div>\n <div fd-panel-content>\n @for (rule of _includeRules; track rule) {\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <fdp-table-filter-rule\n [fdLayoutGridCol]=\"10\"\n [rule]=\"rule\"\n (ruleChange)=\"_recalculateResetAvailability()\"\n (ruleStateChange)=\"_onRuleStateChange()\"\n ></fdp-table-filter-rule>\n <!-- Actions buttons -->\n <div [fdLayoutGridCol]=\"2\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"\n 'platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate\n \"\n [title]=\"'platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate\"\n (click)=\"_removeRule(rule, _includeRules)\"\n ></button>\n @if (_includeRules.length - 1 === $index) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"\n 'platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate\n \"\n [title]=\"'platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate\"\n (click)=\"_addNewRule(_includeRules)\"\n ></button>\n }\n </div>\n </div>\n </fd-layout-grid>\n }\n </div>\n </fd-panel>\n <!-- Exclude Rules -->\n <fd-panel [expanded]=\"_excludePanelExpanded\">\n <div fd-panel-title>\n {{\n (_validExcludeRulesCount > 0\n ? 'platformTable.P13FilterDialogExcludePanelTitleWithCount'\n : 'platformTable.P13FilterDialogExcludePanelTitleWithoutCount'\n ) | fdTranslate: { count: _validExcludeRulesCount }\n }}\n </div>\n <div fd-panel-content>\n @for (rule of _excludeRules; track rule) {\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <fdp-table-filter-rule\n [fdLayoutGridCol]=\"10\"\n [rule]=\"rule\"\n (ruleChange)=\"_recalculateResetAvailability()\"\n (ruleStateChange)=\"_onRuleStateChange()\"\n ></fdp-table-filter-rule>\n <!-- Actions buttons -->\n <div [fdLayoutGridCol]=\"2\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"\n 'platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate\n \"\n [title]=\"'platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate\"\n (click)=\"_removeRule(rule, _excludeRules)\"\n ></button>\n @if (_excludeRules.length - 1 === $index) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"\n 'platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate\n \"\n [title]=\"'platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate\"\n (click)=\"_addNewRule(_excludeRules)\"\n ></button>\n }\n </div>\n </div>\n </fd-layout-grid>\n }\n </div>\n </fd-panel>\n </fd-dialog-body>\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13FilterDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n fdType=\"transparent\"\n fdkInitialFocus\n [label]=\"'platformTable.P13FilterDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-table-p13-filtering-dialog .filter-row__input,.fdp-table-p13-filtering-dialog .filter-row__select{display:block;max-width:100%}.fdp-table-p13-filtering-dialog .fd-popover-custom{display:block}\n"] }]
187
184
  }], ctorParameters: () => [{ type: i1.DialogRef }] });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUvY29tcG9uZW50cy90YWJsZS1wMTMtZGlhbG9nL2ZpbHRlcmluZy9maWx0ZXJpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXAxMy1kaWFsb2cvZmlsdGVyaW5nL2ZpbHRlcmluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRGLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBYyxNQUFNLDJDQUEyQyxDQUFDO0FBRS9HLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ3JCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDeEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4SCxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQTRDLFVBQVUsRUFBb0IsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBb0MzRyxNQUFNLE9BQU8sMkJBQTJCO0lBNkNwQyxjQUFjO0lBQ2QsWUFBbUIsU0FBc0M7UUFBdEMsY0FBUyxHQUFULFNBQVMsQ0FBNkI7UUE3Q3pELGNBQWM7UUFDTiw4QkFBeUIsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEcsZ0RBQWdEO1FBQ3ZDLHNCQUFpQixHQUF3QixJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFaEcsNENBQTRDO1FBQ25DLFlBQU8sR0FBdUIsRUFBRSxDQUFDO1FBRTFDOzs7V0FHRztRQUNILGtCQUFhLEdBQWlCLEVBQUUsQ0FBQztRQUVqQzs7O1dBR0c7UUFDSCxrQkFBYSxHQUFpQixFQUFFLENBQUM7UUFFakM7OztXQUdHO1FBQ0gsNEJBQXVCLEdBQUcsQ0FBQyxDQUFDO1FBRTVCOzs7V0FHRztRQUNILDRCQUF1QixHQUFHLENBQUMsQ0FBQztRQUU1Qjs7O1dBR0c7UUFDSCwwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFFN0I7OztXQUdHO1FBQ0gsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBbUk5QixjQUFjO1FBQ04sOEJBQXlCLEdBQUcsR0FBUyxFQUFFO1lBQzNDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ25GLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3ZGLENBQUMsQ0FBQztRQUVGLGNBQWM7UUFDTixpQkFBWSxHQUFHLENBQUMsSUFBZ0IsRUFBVyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztRQXRJaEUsTUFBTSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBRTFELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVuRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFFakMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxLQUFLO1FBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixNQUFNO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxPQUFPO1FBQ0gsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLENBQUM7UUFDcEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLENBQUM7UUFFcEUsTUFBTSxNQUFNLEdBQTJCLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLGNBQWMsRUFBRSxHQUFHLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFFcEcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXLENBQUMsSUFBZ0IsRUFBRSxLQUFtQjtRQUM3QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2QsT0FBTztTQUNWO1FBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdkIscUNBQXFDO1FBQ3JDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDcEIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUM1QztRQUVELElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBRXJDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVyxDQUFDLEtBQW1CO1FBQzNCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsY0FBYztJQUNkLDZCQUE2QjtRQUN6QixNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3RHLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDdEcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDLDBCQUEwQixJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQjtRQUNkLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxjQUFjO0lBQ04sY0FBYyxDQUFDLFlBQWlDO1FBQ3BELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUV2RixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZELGlEQUFpRDtZQUNqRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0MscUNBQXFDO1lBQ3JDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDNUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ04sWUFBWSxDQUFDLG1CQUF1QyxFQUFFO1FBQzFELE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUN2QixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQWMsRUFBRSxDQUMvQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUNuRSxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDTiw4QkFBOEIsQ0FBQyxLQUFtQjtRQUN0RCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FDdEMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFvQixFQUFFLENBQUMsQ0FBQztZQUMzRCxLQUFLLEVBQUUsU0FBVTtZQUNqQixLQUFLO1lBQ0wsTUFBTTtZQUNOLFFBQVEsRUFBRSxRQUFTO1NBQ3RCLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDTixxQ0FBcUM7UUFDekMsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FDOUQsQ0FBQyxnQkFBZ0IsRUFBb0IsRUFBRSxDQUFDLENBQUM7WUFDckMsR0FBRyxnQkFBZ0I7WUFDbkIsT0FBTyxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNOLHFDQUFxQztRQUN6QyxPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUM5RCxDQUFDLGdCQUFnQixFQUFvQixFQUFFLENBQUMsQ0FBQztZQUNyQyxHQUFHLGdCQUFnQjtZQUNuQixPQUFPLEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7OEdBNUtRLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDJEQTVCekIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsQ0FBQywwQkN0Q3hGLGdnTkFtSUEsaVFEekZRLGVBQWUsc0dBQ2YscUJBQXFCLDZEQUNyQixpQkFBaUIsbUZBQ2pCLGdCQUFnQiwwREFDaEIsbUJBQW1CLGtGQUNuQixjQUFjLHVMQUNkLGlCQUFpQiwyREFDakIsb0JBQW9CLG1FQUdwQixtQkFBbUIsMkRBQ25CLGNBQWMsdUxBQ2QsbUJBQW1CLDZFQUNuQixxQkFBcUIsMEpBQ3JCLG1CQUFtQiwySUFDbkIsc0JBQXNCLG9GQUN0QixtQkFBbUIsZ0lBQ25CLHNCQUFzQiwwTkFDdEIsZUFBZSx3SEFDZixxQkFBcUIsNkRBQ3JCLGtCQUFrQixvSUFDbEIsZUFBZTs7MkZBR1YsMkJBQTJCO2tCQWhDdkMsU0FBUztvQ0FHUyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyw2QkFBNkIsRUFBRSxDQUFDLG1CQUNuRSx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDTCxlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QixlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixlQUFlO3FCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcblxuaW1wb3J0IHsgUkVTRVRUQUJMRV9UT0tFTiwgUmVzZXRCdXR0b25Db21wb25lbnQsIFJlc2V0dGFibGUgfSBmcm9tICcuLi8uLi9yZXNldC1idXR0b24vcmVzZXQtYnV0dG9uLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgQnV0dG9uQmFyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9iYXInO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQge1xuICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgRGlhbG9nQ29tcG9uZW50LFxuICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICBEaWFsb2dIZWFkZXJDb21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLCBMYXlvdXRHcmlkQ29tcG9uZW50LCBMYXlvdXRHcmlkUm93RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xheW91dC1ncmlkJztcbmltcG9ydCB7IFBhbmVsQ29tcG9uZW50LCBQYW5lbENvbnRlbnREaXJlY3RpdmUsIFBhbmVsVGl0bGVEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcGFuZWwnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgRmlsdGVyUnVsZUNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVyLXJ1bGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbHRlckRpYWxvZ0RhdGEsIEZpbHRlckRpYWxvZ1Jlc3VsdERhdGEsIEZpbHRlclJ1bGUsIEZpbHRlcmFibGVDb2x1bW4gfSBmcm9tICcuL2ZpbHRlcmluZy5tb2RlbCc7XG5cbmV4cG9ydCB7IEZpbHRlckRpYWxvZ0RhdGEsIEZpbHRlckRpYWxvZ1Jlc3VsdERhdGEgfTtcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlcmluZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2ZpbHRlcmluZy5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFJFU0VUVEFCTEVfVE9LRU4sIHVzZUV4aXN0aW5nOiBQMTNGaWx0ZXJpbmdEaWFsb2dDb21wb25lbnQgfV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgQmFyTGVmdERpcmVjdGl2ZSxcbiAgICAgICAgQmFyRWxlbWVudERpcmVjdGl2ZSxcbiAgICAgICAgVGl0bGVDb21wb25lbnQsXG4gICAgICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgICAgICBSZXNldEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgU2Nyb2xsYmFyRGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgICAgICBQYW5lbENvbXBvbmVudCxcbiAgICAgICAgUGFuZWxUaXRsZURpcmVjdGl2ZSxcbiAgICAgICAgUGFuZWxDb250ZW50RGlyZWN0aXZlLFxuICAgICAgICBMYXlvdXRHcmlkQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkUm93RGlyZWN0aXZlLFxuICAgICAgICBGaWx0ZXJSdWxlQ29tcG9uZW50LFxuICAgICAgICBMYXlvdXRHcmlkQ29sRGlyZWN0aXZlLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQmFyQ29tcG9uZW50LFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFAxM0ZpbHRlcmluZ0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIFJlc2V0dGFibGUge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNSZXNldEF2YWlsYWJsZVN1YmplY3QkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogSW5kaWNhdGVzIHdoZW4gcmVzZXQgY29tbWFuZCBpcyBhdmFpbGFibGUgKi9cbiAgICByZWFkb25seSBpc1Jlc2V0QXZhaWxhYmxlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2lzUmVzZXRBdmFpbGFibGVTdWJqZWN0JC5hc09ic2VydmFibGUoKTtcblxuICAgIC8qKiBUYWJsZSBjb2x1bW5zIGF2YWlsYWJsZSBmb3IgZmlsdGVyaW5nICovXG4gICAgcmVhZG9ubHkgY29sdW1uczogRmlsdGVyYWJsZUNvbHVtbltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSW5jbHVkZSBSdWxlc1xuICAgICAqL1xuICAgIF9pbmNsdWRlUnVsZXM6IEZpbHRlclJ1bGVbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEV4Y2x1ZGUgUnVsZXNcbiAgICAgKi9cbiAgICBfZXhjbHVkZVJ1bGVzOiBGaWx0ZXJSdWxlW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDb3VudCBvZiB2YWxpZCBpbmNsdWRlZCBydWxlc1xuICAgICAqL1xuICAgIF92YWxpZEluY2x1ZGVSdWxlc0NvdW50ID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDb3VudCBvZiB2YWxpZCBleGNsdWRlZCBydWxlc1xuICAgICAqL1xuICAgIF92YWxpZEV4Y2x1ZGVSdWxlc0NvdW50ID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBQYW5lbCBvcGVuZWQvY2xvc2VkIGZsYWdcbiAgICAgKi9cbiAgICBfaW5jbHVkZVBhbmVsRXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFBhbmVsIG9wZW5lZC9jbG9zZWQgZmxhZ1xuICAgICAqL1xuICAgIF9leGNsdWRlUGFuZWxFeHBhbmRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBEaWFsb2dSZWY8RmlsdGVyRGlhbG9nRGF0YT4pIHtcbiAgICAgICAgY29uc3QgeyBjb2x1bW5zLCBjb2xsZWN0aW9uRmlsdGVyIH0gPSB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuXG4gICAgICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChjb2x1bW4pID0+IGNvbHVtbi5maWx0ZXJhYmxlKSB8fCBbXTtcblxuICAgICAgICB0aGlzLl9pbml0aWF0ZVJ1bGVzKGNvbGxlY3Rpb25GaWx0ZXIpO1xuXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVZhbGlkUnVsZXNDb3VudCgpO1xuXG4gICAgICAgIHRoaXMuX2V4Y2x1ZGVQYW5lbEV4cGFuZGVkID0gdGhpcy5fdmFsaWRFeGNsdWRlUnVsZXNDb3VudCA+IDA7XG5cbiAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGVSZXNldEF2YWlsYWJpbGl0eSgpO1xuICAgIH1cblxuICAgIC8qKiBSZXNldCBjaGFuZ2VzIHRvIHRoZSBpbml0aWFsIHN0YXRlICovXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYXRlUnVsZXMoKTtcbiAgICAgICAgdGhpcy5faXNSZXNldEF2YWlsYWJsZVN1YmplY3QkLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBDbG9zZSBkaWFsb2cgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICAgIH1cblxuICAgIC8qKiBDb25maXJtIGNoYW5nZXMgYW5kIGNsb3NlIGRpYWxvZyAqL1xuICAgIGNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGluY2x1ZGVGaWx0ZXJzID0gdGhpcy5fZ2V0Q29sbGVjdGlvbkZpbHRlcnNGcm9tSW5jbHVkZVJ1bGVzKCk7XG4gICAgICAgIGNvbnN0IGV4Y2x1ZGVGaWx0ZXJzID0gdGhpcy5fZ2V0Q29sbGVjdGlvbkZpbHRlcnNGcm9tRXhjbHVkZVJ1bGVzKCk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiBGaWx0ZXJEaWFsb2dSZXN1bHREYXRhID0geyBjb2xsZWN0aW9uRmlsdGVyOiBbLi4uaW5jbHVkZUZpbHRlcnMsIC4uLmV4Y2x1ZGVGaWx0ZXJzXSB9O1xuXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmVtb3ZlUnVsZShydWxlOiBGaWx0ZXJSdWxlLCBydWxlczogRmlsdGVyUnVsZVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gcnVsZXMuaW5kZXhPZihydWxlKTtcblxuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBydWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIC8vIEtlZXAgYXQgbGVhc3Qgb25lIGl0ZW0gaW4gdGhlIGxpc3RcbiAgICAgICAgaWYgKHJ1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcnVsZXMucHVzaChuZXcgRmlsdGVyUnVsZSh0aGlzLmNvbHVtbnMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKTtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVWYWxpZFJ1bGVzQ291bnQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hZGROZXdSdWxlKHJ1bGVzOiBGaWx0ZXJSdWxlW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdFJ1bGUgPSBydWxlcy5zbGljZSgtMSlbMF07XG4gICAgICAgIHJ1bGVzLnB1c2gobmV3IEZpbHRlclJ1bGUodGhpcy5jb2x1bW5zLCBsYXN0UnVsZT8uY29sdW1uS2V5LCBsYXN0UnVsZT8uc3RyYXRlZ3kpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBoYXNPbmx5T25lRW1wdHlJbmNsdWRlUnVsZSA9IHRoaXMuX2luY2x1ZGVSdWxlcy5sZW5ndGggPT09IDEgJiYgIXRoaXMuX2luY2x1ZGVSdWxlc1swXS5oYXNWYWx1ZTtcbiAgICAgICAgY29uc3QgaGFzT25seU9uZUVtcHR5RXhjbHVkZVJ1bGUgPSB0aGlzLl9leGNsdWRlUnVsZXMubGVuZ3RoID09PSAxICYmICF0aGlzLl9leGNsdWRlUnVsZXNbMF0uaGFzVmFsdWU7XG4gICAgICAgIHRoaXMuX2lzUmVzZXRBdmFpbGFibGVTdWJqZWN0JC5uZXh0KCFoYXNPbmx5T25lRW1wdHlJbmNsdWRlUnVsZSB8fCAhaGFzT25seU9uZUVtcHR5RXhjbHVkZVJ1bGUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uUnVsZVN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVWYWxpZFJ1bGVzQ291bnQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYXRlUnVsZXMoaW5pdGlhbFJ1bGVzPzogQ29sbGVjdGlvbkZpbHRlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luY2x1ZGVSdWxlcyA9IHRoaXMuX2NyZWF0ZVJ1bGVzKGluaXRpYWxSdWxlcz8uZmlsdGVyKCh7IGV4Y2x1ZGUgfSkgPT4gIWV4Y2x1ZGUpKTtcbiAgICAgICAgdGhpcy5fZXhjbHVkZVJ1bGVzID0gdGhpcy5fY3JlYXRlUnVsZXMoaW5pdGlhbFJ1bGVzPy5maWx0ZXIoKHsgZXhjbHVkZSB9KSA9PiBleGNsdWRlKSk7XG5cbiAgICAgICAgW3RoaXMuX2luY2x1ZGVSdWxlcywgdGhpcy5fZXhjbHVkZVJ1bGVzXS5mb3JFYWNoKChydWxlcykgPT4ge1xuICAgICAgICAgICAgLy8gUnVsZXMgb24gaW5pdGlhbCBwaGFzZSBhcmUgY29uc2lkZXJlZCBhcyB2YWxpZFxuICAgICAgICAgICAgcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4gcnVsZS5zZXRWYWxpZCh0cnVlKSk7XG4gICAgICAgICAgICAvLyBLZWVwIGF0IGxlYXN0IG9uZSBpdGVtIGluIHRoZSBsaXN0XG4gICAgICAgICAgICBpZiAocnVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcnVsZXMucHVzaChuZXcgRmlsdGVyUnVsZSh0aGlzLmNvbHVtbnMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jcmVhdGVSdWxlcyhjb2xsZWN0aW9uRmlsdGVyOiBDb2xsZWN0aW9uRmlsdGVyW10gPSBbXSk6IEZpbHRlclJ1bGVbXSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uRmlsdGVyLm1hcChcbiAgICAgICAgICAgICh7IGZpZWxkLCB2YWx1ZSwgdmFsdWUyLCBzdHJhdGVneSB9KTogRmlsdGVyUnVsZSA9PlxuICAgICAgICAgICAgICAgIG5ldyBGaWx0ZXJSdWxlKHRoaXMuY29sdW1ucywgZmllbGQsIHN0cmF0ZWd5LCB2YWx1ZSwgdmFsdWUyKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q29sbGVjdGlvbkZpbHRlcnNGcm9tUnVsZXMocnVsZXM6IEZpbHRlclJ1bGVbXSk6IENvbGxlY3Rpb25GaWx0ZXJbXSB7XG4gICAgICAgIHJldHVybiBydWxlcy5maWx0ZXIodGhpcy5faXNSdWxlVmFsaWQpLm1hcChcbiAgICAgICAgICAgICh7IGNvbHVtbktleSwgc3RyYXRlZ3ksIHZhbHVlLCB2YWx1ZTIgfSk6IENvbGxlY3Rpb25GaWx0ZXIgPT4gKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogY29sdW1uS2V5ISxcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTIsXG4gICAgICAgICAgICAgICAgc3RyYXRlZ3k6IHN0cmF0ZWd5IVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldENvbGxlY3Rpb25GaWx0ZXJzRnJvbUluY2x1ZGVSdWxlcygpOiBDb2xsZWN0aW9uRmlsdGVyW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0Q29sbGVjdGlvbkZpbHRlcnNGcm9tUnVsZXModGhpcy5faW5jbHVkZVJ1bGVzKS5tYXAoXG4gICAgICAgICAgICAoY29sbGVjdGlvbkZpbHRlcik6IENvbGxlY3Rpb25GaWx0ZXIgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5jb2xsZWN0aW9uRmlsdGVyLFxuICAgICAgICAgICAgICAgIGV4Y2x1ZGU6IGZhbHNlXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q29sbGVjdGlvbkZpbHRlcnNGcm9tRXhjbHVkZVJ1bGVzKCk6IENvbGxlY3Rpb25GaWx0ZXJbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDb2xsZWN0aW9uRmlsdGVyc0Zyb21SdWxlcyh0aGlzLl9leGNsdWRlUnVsZXMpLm1hcChcbiAgICAgICAgICAgIChjb2xsZWN0aW9uRmlsdGVyKTogQ29sbGVjdGlvbkZpbHRlciA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLmNvbGxlY3Rpb25GaWx0ZXIsXG4gICAgICAgICAgICAgICAgZXhjbHVkZTogdHJ1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVZhbGlkUnVsZXNDb3VudCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5fdmFsaWRJbmNsdWRlUnVsZXNDb3VudCA9IHRoaXMuX2luY2x1ZGVSdWxlcy5maWx0ZXIodGhpcy5faXNSdWxlVmFsaWQpLmxlbmd0aDtcbiAgICAgICAgdGhpcy5fdmFsaWRFeGNsdWRlUnVsZXNDb3VudCA9IHRoaXMuX2V4Y2x1ZGVSdWxlcy5maWx0ZXIodGhpcy5faXNSdWxlVmFsaWQpLmxlbmd0aDtcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc1J1bGVWYWxpZCA9IChydWxlOiBGaWx0ZXJSdWxlKTogYm9vbGVhbiA9PiBydWxlPy5pc1ZhbGlkO1xufVxuIiwiPGZkLWRpYWxvZyBjbGFzcz1cImZkcC10YWJsZS1wMTMtZmlsdGVyaW5nLWRpYWxvZ1wiPlxuICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8aDQgZmQtdGl0bGUgW2hlYWRlclNpemVdPVwiNFwiPnt7ICdwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlckRpYWxvZ0hlYWRlcicgfCBmZFRyYW5zbGF0ZSB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLXJlc2V0LWJ1dHRvbj48L2ZkcC10YWJsZS1yZXNldC1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9mZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICA8ZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgIDwhLS0gSW5jbHVkZSBSdWxlcyAtLT5cbiAgICAgICAgPGZkLXBhbmVsIFtleHBhbmRlZF09XCJfaW5jbHVkZVBhbmVsRXhwYW5kZWRcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgKF92YWxpZEluY2x1ZGVSdWxlc0NvdW50ID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJEaWFsb2dJbmNsdWRlUGFuZWxUaXRsZVdpdGhDb3VudCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyRGlhbG9nSW5jbHVkZVBhbmVsVGl0bGVXaXRob3V0Q291bnQnXG4gICAgICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZTogeyBjb3VudDogX3ZhbGlkSW5jbHVkZVJ1bGVzQ291bnQgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgZmQtcGFuZWwtY29udGVudD5cbiAgICAgICAgICAgICAgICBAZm9yIChydWxlIG9mIF9pbmNsdWRlUnVsZXM7IHRyYWNrIHJ1bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkLWxheW91dC1ncmlkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC10YWJsZS1maWx0ZXItcnVsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3J1bGVdPVwicnVsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydWxlQ2hhbmdlKT1cIl9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVsZVN0YXRlQ2hhbmdlKT1cIl9vblJ1bGVTdGF0ZUNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtdGFibGUtZmlsdGVyLXJ1bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb25zIGJ1dHRvbnMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cInN5cy1jYW5jZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJEaWFsb2dSZW1vdmVGaWx0ZXJCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJEaWFsb2dSZW1vdmVGaWx0ZXJCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3JlbW92ZVJ1bGUocnVsZSwgX2luY2x1ZGVSdWxlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX2luY2x1ZGVSdWxlcy5sZW5ndGggLSAxID09PSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJhZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlckRpYWxvZ0FkZEZpbHRlckJ0blRpdGxlJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyRGlhbG9nQWRkRmlsdGVyQnRuVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfYWRkTmV3UnVsZShfaW5jbHVkZVJ1bGVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWxheW91dC1ncmlkPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZkLXBhbmVsPlxuICAgICAgICA8IS0tIEV4Y2x1ZGUgUnVsZXMgLS0+XG4gICAgICAgIDxmZC1wYW5lbCBbZXhwYW5kZWRdPVwiX2V4Y2x1ZGVQYW5lbEV4cGFuZGVkXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIChfdmFsaWRFeGNsdWRlUnVsZXNDb3VudCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyRGlhbG9nRXhjbHVkZVBhbmVsVGl0bGVXaXRoQ291bnQnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlckRpYWxvZ0V4Y2x1ZGVQYW5lbFRpdGxlV2l0aG91dENvdW50J1xuICAgICAgICAgICAgICAgICAgICApIHwgZmRUcmFuc2xhdGU6IHsgY291bnQ6IF92YWxpZEV4Y2x1ZGVSdWxlc0NvdW50IH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLXBhbmVsLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgQGZvciAocnVsZSBvZiBfZXhjbHVkZVJ1bGVzOyB0cmFjayBydWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1sYXlvdXQtZ3JpZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmRMYXlvdXRHcmlkUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtZmlsdGVyLXJ1bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkTGF5b3V0R3JpZENvbF09XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtydWxlXT1cInJ1bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVsZUNoYW5nZSk9XCJfcmVjYWxjdWxhdGVSZXNldEF2YWlsYWJpbGl0eSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJ1bGVTdGF0ZUNoYW5nZSk9XCJfb25SdWxlU3RhdGVDaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLXRhYmxlLWZpbHRlci1ydWxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aW9ucyBidXR0b25zIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2ZkTGF5b3V0R3JpZENvbF09XCIyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJzeXMtY2FuY2VsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyRGlhbG9nUmVtb3ZlRmlsdGVyQnRuVGl0bGUnIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyRGlhbG9nUmVtb3ZlRmlsdGVyQnRuVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9yZW1vdmVSdWxlKHJ1bGUsIF9leGNsdWRlUnVsZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKF9leGNsdWRlUnVsZXMubGVuZ3RoIC0gMSA9PT0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwiYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJEaWFsb2dBZGRGaWx0ZXJCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlckRpYWxvZ0FkZEZpbHRlckJ0blRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2FkZE5ld1J1bGUoX2V4Y2x1ZGVSdWxlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1sYXlvdXQtZ3JpZD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mZC1wYW5lbD5cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuICAgIDxmZC1kaWFsb2ctZm9vdGVyPlxuICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyRGlhbG9nQ29uZmlybWF0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm0oKVwiXG4gICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJEaWFsb2dDYW5jZWxCdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgIDwvZmQtZGlhbG9nLWZvb3Rlcj5cbjwvZmQtZGlhbG9nPlxuIl19
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUvY29tcG9uZW50cy90YWJsZS1wMTMtZGlhbG9nL2ZpbHRlcmluZy9maWx0ZXJpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXAxMy1kaWFsb2cvZmlsdGVyaW5nL2ZpbHRlcmluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc5RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFjLE1BQU0sMkNBQTJDLENBQUM7QUFFL0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDckIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUNILG1CQUFtQixFQUNuQixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUN4QixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hILE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVB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RkFDakIsZ0JBQWdCLDBEQUNoQixtQkFBbUIsa0ZBQ25CLGNBQWMsdUxBQ2QsaUJBQWlCLDJEQUNqQixvQkFBb0IsbUVBR3BCLG1CQUFtQiwyREFDbkIsY0FBYyx1TEFDZCxtQkFBbUIsNkVBQ25CLHFCQUFxQiwwSkFDckIsbUJBQW1CLDJJQUNuQixzQkFBc0Isb0ZBQ3RCLG1CQUFtQixnSUFDbkIsc0JBQXNCLDBOQUN0QixlQUFlLHdIQUNmLHFCQUFxQiw2REFDckIsa0JBQWtCLG9JQUNsQixlQUFlOzsyRkFHViwyQkFBMkI7a0JBaEN2QyxTQUFTO29DQUdTLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLDZCQUE2QixFQUFFLENBQUMsbUJBQ25FLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGVBQWU7cUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkZpbHRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vdGFibGUtaGVscGVycyc7XG5cbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuXG5pbXBvcnQgeyBSRVNFVFRBQkxFX1RPS0VOLCBSZXNldEJ1dHRvbkNvbXBvbmVudCwgUmVzZXR0YWJsZSB9IGZyb20gJy4uLy4uL3Jlc2V0LWJ1dHRvbi9yZXNldC1idXR0b24uY29tcG9uZW50JztcblxuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcblxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQge1xuICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgQmFyTGVmdERpcmVjdGl2ZSxcbiAgICBCYXJSaWdodERpcmVjdGl2ZSxcbiAgICBCdXR0b25CYXJDb21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IExheW91dEdyaWRDb2xEaXJlY3RpdmUsIExheW91dEdyaWRDb21wb25lbnQsIExheW91dEdyaWRSb3dEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbGF5b3V0LWdyaWQnO1xuaW1wb3J0IHsgUGFuZWxDb21wb25lbnQsIFBhbmVsQ29udGVudERpcmVjdGl2ZSwgUGFuZWxUaXRsZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wYW5lbCc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RpdGxlJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBGaWx0ZXJSdWxlQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXItcnVsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsdGVyRGlhbG9nRGF0YSwgRmlsdGVyRGlhbG9nUmVzdWx0RGF0YSwgRmlsdGVyUnVsZSwgRmlsdGVyYWJsZUNvbHVtbiB9IGZyb20gJy4vZmlsdGVyaW5nLm1vZGVsJztcblxuZXhwb3J0IHsgRmlsdGVyRGlhbG9nRGF0YSwgRmlsdGVyRGlhbG9nUmVzdWx0RGF0YSB9O1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vZmlsdGVyaW5nLmNvbXBvbmVudC5zY3NzJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogUkVTRVRUQUJMRV9UT0tFTiwgdXNlRXhpc3Rpbmc6IFAxM0ZpbHRlcmluZ0RpYWxvZ0NvbXBvbmVudCB9XSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBEaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBCYXJMZWZ0RGlyZWN0aXZlLFxuICAgICAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgICAgICBUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgICAgIFJlc2V0QnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgICAgIFBhbmVsQ29tcG9uZW50LFxuICAgICAgICBQYW5lbFRpdGxlRGlyZWN0aXZlLFxuICAgICAgICBQYW5lbENvbnRlbnREaXJlY3RpdmUsXG4gICAgICAgIExheW91dEdyaWRDb21wb25lbnQsXG4gICAgICAgIExheW91dEdyaWRSb3dEaXJlY3RpdmUsXG4gICAgICAgIEZpbHRlclJ1bGVDb21wb25lbnQsXG4gICAgICAgIExheW91dEdyaWRDb2xEaXJlY3RpdmUsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUDEzRmlsdGVyaW5nRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgUmVzZXR0YWJsZSB7XG4gICAgLyoqIEluZGljYXRlcyB3aGVuIHJlc2V0IGNvbW1hbmQgaXMgYXZhaWxhYmxlICovXG4gICAgcmVhZG9ubHkgaXNSZXNldEF2YWlsYWJsZSQgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgLyoqIFRhYmxlIGNvbHVtbnMgYXZhaWxhYmxlIGZvciBmaWx0ZXJpbmcgKi9cbiAgICByZWFkb25seSBjb2x1bW5zOiBGaWx0ZXJhYmxlQ29sdW1uW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBJbmNsdWRlIFJ1bGVzXG4gICAgICovXG4gICAgX2luY2x1ZGVSdWxlczogRmlsdGVyUnVsZVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRXhjbHVkZSBSdWxlc1xuICAgICAqL1xuICAgIF9leGNsdWRlUnVsZXM6IEZpbHRlclJ1bGVbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENvdW50IG9mIHZhbGlkIGluY2x1ZGVkIHJ1bGVzXG4gICAgICovXG4gICAgX3ZhbGlkSW5jbHVkZVJ1bGVzQ291bnQgPSAwO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENvdW50IG9mIHZhbGlkIGV4Y2x1ZGVkIHJ1bGVzXG4gICAgICovXG4gICAgX3ZhbGlkRXhjbHVkZVJ1bGVzQ291bnQgPSAwO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFBhbmVsIG9wZW5lZC9jbG9zZWQgZmxhZ1xuICAgICAqL1xuICAgIF9pbmNsdWRlUGFuZWxFeHBhbmRlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUGFuZWwgb3BlbmVkL2Nsb3NlZCBmbGFnXG4gICAgICovXG4gICAgX2V4Y2x1ZGVQYW5lbEV4cGFuZGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IERpYWxvZ1JlZjxGaWx0ZXJEaWFsb2dEYXRhPikge1xuICAgICAgICBjb25zdCB7IGNvbHVtbnMsIGNvbGxlY3Rpb25GaWx0ZXIgfSA9IHRoaXMuZGlhbG9nUmVmLmRhdGE7XG5cbiAgICAgICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucy5maWx0ZXIoKGNvbHVtbikgPT4gY29sdW1uLmZpbHRlcmFibGUpIHx8IFtdO1xuXG4gICAgICAgIHRoaXMuX2luaXRpYXRlUnVsZXMoY29sbGVjdGlvbkZpbHRlcik7XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlVmFsaWRSdWxlc0NvdW50KCk7XG5cbiAgICAgICAgdGhpcy5fZXhjbHVkZVBhbmVsRXhwYW5kZWQgPSB0aGlzLl92YWxpZEV4Y2x1ZGVSdWxlc0NvdW50ID4gMDtcblxuICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqIFJlc2V0IGNoYW5nZXMgdG8gdGhlIGluaXRpYWwgc3RhdGUgKi9cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdGlhdGVSdWxlcygpO1xuICAgICAgICB0aGlzLmlzUmVzZXRBdmFpbGFibGUkLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIENsb3NlIGRpYWxvZyAqL1xuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UobnVsbCk7XG4gICAgfVxuXG4gICAgLyoqIENvbmZpcm0gY2hhbmdlcyBhbmQgY2xvc2UgZGlhbG9nICovXG4gICAgY29uZmlybSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5jbHVkZUZpbHRlcnMgPSB0aGlzLl9nZXRDb2xsZWN0aW9uRmlsdGVyc0Zyb21JbmNsdWRlUnVsZXMoKTtcbiAgICAgICAgY29uc3QgZXhjbHVkZUZpbHRlcnMgPSB0aGlzLl9nZXRDb2xsZWN0aW9uRmlsdGVyc0Zyb21FeGNsdWRlUnVsZXMoKTtcblxuICAgICAgICBjb25zdCByZXN1bHQ6IEZpbHRlckRpYWxvZ1Jlc3VsdERhdGEgPSB7IGNvbGxlY3Rpb25GaWx0ZXI6IFsuLi5pbmNsdWRlRmlsdGVycywgLi4uZXhjbHVkZUZpbHRlcnNdIH07XG5cbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzdWx0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yZW1vdmVSdWxlKHJ1bGU6IEZpbHRlclJ1bGUsIHJ1bGVzOiBGaWx0ZXJSdWxlW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBydWxlcy5pbmRleE9mKHJ1bGUpO1xuXG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bGVzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgLy8gS2VlcCBhdCBsZWFzdCBvbmUgaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgICBpZiAocnVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBydWxlcy5wdXNoKG5ldyBGaWx0ZXJSdWxlKHRoaXMuY29sdW1ucykpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGVSZXNldEF2YWlsYWJpbGl0eSgpO1xuXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVZhbGlkUnVsZXNDb3VudCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FkZE5ld1J1bGUocnVsZXM6IEZpbHRlclJ1bGVbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXN0UnVsZSA9IHJ1bGVzLnNsaWNlKC0xKVswXTtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgRmlsdGVyUnVsZSh0aGlzLmNvbHVtbnMsIGxhc3RSdWxlPy5jb2x1bW5LZXksIGxhc3RSdWxlPy5zdHJhdGVneSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGhhc09ubHlPbmVFbXB0eUluY2x1ZGVSdWxlID0gdGhpcy5faW5jbHVkZVJ1bGVzLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5faW5jbHVkZVJ1bGVzWzBdLmhhc1ZhbHVlO1xuICAgICAgICBjb25zdCBoYXNPbmx5T25lRW1wdHlFeGNsdWRlUnVsZSA9IHRoaXMuX2V4Y2x1ZGVSdWxlcy5sZW5ndGggPT09IDEgJiYgIXRoaXMuX2V4Y2x1ZGVSdWxlc1swXS5oYXNWYWx1ZTtcbiAgICAgICAgdGhpcy5pc1Jlc2V0QXZhaWxhYmxlJC5zZXQoIWhhc09ubHlPbmVFbXB0eUluY2x1ZGVSdWxlIHx8ICFoYXNPbmx5T25lRW1wdHlFeGNsdWRlUnVsZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25SdWxlU3RhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVZhbGlkUnVsZXNDb3VudCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhdGVSdWxlcyhpbml0aWFsUnVsZXM/OiBDb2xsZWN0aW9uRmlsdGVyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5jbHVkZVJ1bGVzID0gdGhpcy5fY3JlYXRlUnVsZXMoaW5pdGlhbFJ1bGVzPy5maWx0ZXIoKHsgZXhjbHVkZSB9KSA9PiAhZXhjbHVkZSkpO1xuICAgICAgICB0aGlzLl9leGNsdWRlUnVsZXMgPSB0aGlzLl9jcmVhdGVSdWxlcyhpbml0aWFsUnVsZXM/LmZpbHRlcigoeyBleGNsdWRlIH0pID0+IGV4Y2x1ZGUpKTtcblxuICAgICAgICBbdGhpcy5faW5jbHVkZVJ1bGVzLCB0aGlzLl9leGNsdWRlUnVsZXNdLmZvckVhY2goKHJ1bGVzKSA9PiB7XG4gICAgICAgICAgICAvLyBSdWxlcyBvbiBpbml0aWFsIHBoYXNlIGFyZSBjb25zaWRlcmVkIGFzIHZhbGlkXG4gICAgICAgICAgICBydWxlcy5mb3JFYWNoKChydWxlKSA9PiBydWxlLnNldFZhbGlkKHRydWUpKTtcbiAgICAgICAgICAgIC8vIEtlZXAgYXQgbGVhc3Qgb25lIGl0ZW0gaW4gdGhlIGxpc3RcbiAgICAgICAgICAgIGlmIChydWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBydWxlcy5wdXNoKG5ldyBGaWx0ZXJSdWxlKHRoaXMuY29sdW1ucykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZVJ1bGVzKGNvbGxlY3Rpb25GaWx0ZXI6IENvbGxlY3Rpb25GaWx0ZXJbXSA9IFtdKTogRmlsdGVyUnVsZVtdIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25GaWx0ZXIubWFwKFxuICAgICAgICAgICAgKHsgZmllbGQsIHZhbHVlLCB2YWx1ZTIsIHN0cmF0ZWd5IH0pOiBGaWx0ZXJSdWxlID0+XG4gICAgICAgICAgICAgICAgbmV3IEZpbHRlclJ1bGUodGhpcy5jb2x1bW5zLCBmaWVsZCwgc3RyYXRlZ3ksIHZhbHVlLCB2YWx1ZTIpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRDb2xsZWN0aW9uRmlsdGVyc0Zyb21SdWxlcyhydWxlczogRmlsdGVyUnVsZVtdKTogQ29sbGVjdGlvbkZpbHRlcltdIHtcbiAgICAgICAgcmV0dXJuIHJ1bGVzLmZpbHRlcih0aGlzLl9pc1J1bGVWYWxpZCkubWFwKFxuICAgICAgICAgICAgKHsgY29sdW1uS2V5LCBzdHJhdGVneSwgdmFsdWUsIHZhbHVlMiB9KTogQ29sbGVjdGlvbkZpbHRlciA9PiAoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW5LZXkhLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIHZhbHVlMixcbiAgICAgICAgICAgICAgICBzdHJhdGVneTogc3RyYXRlZ3khXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q29sbGVjdGlvbkZpbHRlcnNGcm9tSW5jbHVkZVJ1bGVzKCk6IENvbGxlY3Rpb25GaWx0ZXJbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDb2xsZWN0aW9uRmlsdGVyc0Zyb21SdWxlcyh0aGlzLl9pbmNsdWRlUnVsZXMpLm1hcChcbiAgICAgICAgICAgIChjb2xsZWN0aW9uRmlsdGVyKTogQ29sbGVjdGlvbkZpbHRlciA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLmNvbGxlY3Rpb25GaWx0ZXIsXG4gICAgICAgICAgICAgICAgZXhjbHVkZTogZmFsc2VcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRDb2xsZWN0aW9uRmlsdGVyc0Zyb21FeGNsdWRlUnVsZXMoKTogQ29sbGVjdGlvbkZpbHRlcltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldENvbGxlY3Rpb25GaWx0ZXJzRnJvbVJ1bGVzKHRoaXMuX2V4Y2x1ZGVSdWxlcykubWFwKFxuICAgICAgICAgICAgKGNvbGxlY3Rpb25GaWx0ZXIpOiBDb2xsZWN0aW9uRmlsdGVyID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uY29sbGVjdGlvbkZpbHRlcixcbiAgICAgICAgICAgICAgICBleGNsdWRlOiB0cnVlXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlVmFsaWRSdWxlc0NvdW50ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLl92YWxpZEluY2x1ZGVSdWxlc0NvdW50ID0gdGhpcy5faW5jbHVkZVJ1bGVzLmZpbHRlcih0aGlzLl9pc1J1bGVWYWxpZCkubGVuZ3RoO1xuICAgICAgICB0aGlzLl92YWxpZEV4Y2x1ZGVSdWxlc0NvdW50ID0gdGhpcy5fZXhjbHVkZVJ1bGVzLmZpbHRlcih0aGlzLl9pc1J1bGVWYWxpZCkubGVuZ3RoO1xuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzUnVsZVZhbGlkID0gKHJ1bGU6IEZpbHRlclJ1bGUpOiBib29sZWFuID0+IHJ1bGU/LmlzVmFsaWQ7XG59XG4iLCI8ZmQtZGlhbG9nIGNsYXNzPVwiZmRwLXRhYmxlLXAxMy1maWx0ZXJpbmctZGlhbG9nXCI+XG4gICAgPGZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxoNCBmZC10aXRsZSBbaGVhZGVyU2l6ZV09XCI0XCI+e3sgJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyRGlhbG9nSGVhZGVyJyB8IGZkVHJhbnNsYXRlIH19PC9oND5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtcmVzZXQtYnV0dG9uPjwvZmRwLXRhYmxlLXJlc2V0LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgIDxmZC1kaWFsb2ctYm9keT5cbiAgICAgICAgPCEtLSBJbmNsdWRlIFJ1bGVzIC0tPlxuICAgICAgICA8ZmQtcGFuZWwgW2V4cGFuZGVkXT1cIl9pbmNsdWRlUGFuZWxFeHBhbmRlZFwiPlxuICAgICAgICAgICAgPGRpdiBmZC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAoX3ZhbGlkSW5jbHVkZVJ1bGVzQ291bnQgPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlckRpYWxvZ0luY2x1ZGVQYW5lbFRpdGxlV2l0aENvdW50J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJEaWFsb2dJbmNsdWRlUGFuZWxUaXRsZVdpdGhvdXRDb3VudCdcbiAgICAgICAgICAgICAgICAgICAgKSB8IGZkVHJhbnNsYXRlOiB7IGNvdW50OiBfdmFsaWRJbmNsdWRlUnVsZXNDb3VudCB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBmZC1wYW5lbC1jb250ZW50PlxuICAgICAgICAgICAgICAgIEBmb3IgKHJ1bGUgb2YgX2luY2x1ZGVSdWxlczsgdHJhY2sgcnVsZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtbGF5b3V0LWdyaWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLWZpbHRlci1ydWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcnVsZV09XCJydWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJ1bGVDaGFuZ2UpPVwiX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydWxlU3RhdGVDaGFuZ2UpPVwiX29uUnVsZVN0YXRlQ2hhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC10YWJsZS1maWx0ZXItcnVsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGlvbnMgYnV0dG9ucyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtmZExheW91dEdyaWRDb2xdPVwiMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoPVwic3lzLWNhbmNlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlckRpYWxvZ1JlbW92ZUZpbHRlckJ0blRpdGxlJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlckRpYWxvZ1JlbW92ZUZpbHRlckJ0blRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfcmVtb3ZlUnVsZShydWxlLCBfaW5jbHVkZVJ1bGVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChfaW5jbHVkZVJ1bGVzLmxlbmd0aCAtIDEgPT09ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImFkZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyRGlhbG9nQWRkRmlsdGVyQnRuVGl0bGUnIHwgZmRUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJEaWFsb2dBZGRGaWx0ZXJCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9hZGROZXdSdWxlKF9pbmNsdWRlUnVsZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtbGF5b3V0LWdyaWQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmQtcGFuZWw+XG4gICAgICAgIDwhLS0gRXhjbHVkZSBSdWxlcyAtLT5cbiAgICAgICAgPGZkLXBhbmVsIFtleHBhbmRlZF09XCJfZXhjbHVkZVBhbmVsRXhwYW5kZWRcIj5cbiAgICAgICAgICAgIDxkaXYgZmQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgKF92YWxpZEV4Y2x1ZGVSdWxlc0NvdW50ID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJEaWFsb2dFeGNsdWRlUGFuZWxUaXRsZVdpdGhDb3VudCdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyRGlhbG9nRXhjbHVkZVBhbmVsVGl0bGVXaXRob3V0Q291bnQnXG4gICAgICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZTogeyBjb3VudDogX3ZhbGlkRXhjbHVkZVJ1bGVzQ291bnQgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgZmQtcGFuZWwtY29udGVudD5cbiAgICAgICAgICAgICAgICBAZm9yIChydWxlIG9mIF9leGNsdWRlUnVsZXM7IHRyYWNrIHJ1bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkLWxheW91dC1ncmlkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC10YWJsZS1maWx0ZXItcnVsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3J1bGVdPVwicnVsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydWxlQ2hhbmdlKT1cIl9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVsZVN0YXRlQ2hhbmdlKT1cIl9vblJ1bGVTdGF0ZUNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtdGFibGUtZmlsdGVyLXJ1bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb25zIGJ1dHRvbnMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cInN5cy1jYW5jZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJEaWFsb2dSZW1vdmVGaWx0ZXJCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJEaWFsb2dSZW1vdmVGaWx0ZXJCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3JlbW92ZVJ1bGUocnVsZSwgX2V4Y2x1ZGVSdWxlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoX2V4Y2x1ZGVSdWxlcy5sZW5ndGggLSAxID09PSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGg9XCJhZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlckRpYWxvZ0FkZEZpbHRlckJ0blRpdGxlJyB8IGZkVHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyRGlhbG9nQWRkRmlsdGVyQnRuVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfYWRkTmV3UnVsZShfZXhjbHVkZVJ1bGVzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWxheW91dC1ncmlkPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZkLXBhbmVsPlxuICAgIDwvZmQtZGlhbG9nLWJvZHk+XG4gICAgPGZkLWRpYWxvZy1mb290ZXI+XG4gICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJEaWFsb2dDb25maXJtYXRpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybSgpXCJcbiAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlckRpYWxvZ0NhbmNlbEJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuPC9mZC1kaWFsb2c+XG4iXX0=
@@ -1,6 +1,5 @@
1
- import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, signal } from '@angular/core';
2
2
  import { SortDirection, getUniqueListValuesByKey } from '@fundamental-ngx/platform/table-helpers';
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';
@@ -37,10 +36,8 @@ export class P13GroupingDialogComponent {
37
36
  this.dialogRef = dialogRef;
38
37
  /** Table columns available for grouping */
39
38
  this.columns = [];
40
- /** @hidden */
41
- this._isResetAvailableSubject$ = new BehaviorSubject(false);
42
39
  /** Indicates when reset command is available */
43
- this.isResetAvailable$ = this._isResetAvailableSubject$.asObservable();
40
+ this.isResetAvailable$ = signal(false);
44
41
  /** Group rules to render */
45
42
  this.rules = [];
46
43
  /** @hidden */
@@ -52,7 +49,7 @@ export class P13GroupingDialogComponent {
52
49
  /** Reset changes to the initial state */
53
50
  reset() {
54
51
  this._initiateRules();
55
- this._isResetAvailableSubject$.next(false);
52
+ this.isResetAvailable$.set(false);
56
53
  }
57
54
  /** Close dialog */
58
55
  cancel() {
@@ -67,7 +64,7 @@ export class P13GroupingDialogComponent {
67
64
  /** @hidden */
68
65
  _recalculateResetAvailability() {
69
66
  const hasOnlyOneEmptyRule = this.rules.length === 1 && !this.rules[0].isValid;
70
- this._isResetAvailableSubject$.next(!hasOnlyOneEmptyRule);
67
+ this.isResetAvailable$.set(!hasOnlyOneEmptyRule);
71
68
  }
72
69
  /** @hidden */
73
70
  _removeRule(rule) {
@@ -144,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
144
141
  FdTranslatePipe
145
142
  ], template: "<fd-dialog class=\"fdp-table-p13-grouping-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.P13GroupDialogHeader' | 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 @for (rule of rules; track rule) {\n <div class=\"group-row\">\n <fd-select\n class=\"group-row__select\"\n [value]=\"rule.columnKey\"\n (valueChange)=\"_onRuleColumnKeyChange(rule, $event)\"\n [placeholder]=\"'platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder' | fdTranslate\"\n >\n @for (column of columns; track column) {\n <li fd-option [value]=\"column.key\">\n {{ column.label }}\n </li>\n }\n </fd-select>\n\n <fd-checkbox\n class=\"group-row__checkbox\"\n [ngModel]=\"rule.showAsColumn\"\n (ngModelChange)=\"_onRuleShowAsColumnChange(rule, $event)\"\n [label]=\"'platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel' | fdTranslate\"\n ></fd-checkbox>\n\n <div class=\"group-row__actions\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"'platformTable.P13GroupDialogRemoveGroupBtnTitle' | fdTranslate\"\n [title]=\"'platformTable.P13GroupDialogRemoveGroupBtnTitle' | fdTranslate\"\n (click)=\"_removeRule(rule)\"\n ></button>\n\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"'platformTable.P13GroupDialogAddNewGroupBtnTitle' | fdTranslate\"\n [title]=\"'platformTable.P13GroupDialogAddNewGroupBtnTitle' | fdTranslate\"\n (click)=\"_addNew($index)\"\n ></button>\n </div>\n </div>\n }\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformTable.P13GroupDialogConfirmationBtnLabel' | fdTranslate\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdType=\"transparent\"\n fdkInitialFocus\n [label]=\"'platformTable.P13GroupDialogCancelBtnLabel' | fdTranslate\"\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-table-p13-grouping-dialog .group-row{display:flex;align-items:center;margin-bottom:.5rem}.fdp-table-p13-grouping-dialog .group-row .fd-popover-custom{display:block}.fdp-table-p13-grouping-dialog .group-row__checkbox,.fdp-table-p13-grouping-dialog .group-row__actions,.fdp-table-p13-grouping-dialog .group-row__select{margin-right:1rem}.fdp-table-p13-grouping-dialog .group-row__select{flex:1 1 0}\n"] }]
146
143
  }], ctorParameters: () => [{ type: i1.DialogRef }] });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXAxMy1kaWFsb2cvZ3JvdXBpbmcvZ3JvdXBpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXAxMy1kaWFsb2cvZ3JvdXBpbmcvZ3JvdXBpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBRUgsYUFBYSxFQUViLHdCQUF3QixFQUMzQixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUNILG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNyQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3hCLE1BQU0sOEJBQThCLENBQUM7QUFD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SSxXQUNQO3dCQUNMLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGVBQWU7cUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ29sbGVjdGlvbkdyb3VwLFxuICAgIFNvcnREaXJlY3Rpb24sXG4gICAgVGFibGVEaWFsb2dDb21tb25EYXRhLFxuICAgIGdldFVuaXF1ZUxpc3RWYWx1ZXNCeUtleVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgQnV0dG9uQmFyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9iYXInO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jaGVja2JveCc7XG5pbXBvcnQge1xuICAgIERpYWxvZ0JvZHlDb21wb25lbnQsXG4gICAgRGlhbG9nQ29tcG9uZW50LFxuICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICBEaWFsb2dIZWFkZXJDb21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCwgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NlbGVjdCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgUkVTRVRUQUJMRV9UT0tFTiwgUmVzZXRCdXR0b25Db21wb25lbnQsIFJlc2V0dGFibGUgfSBmcm9tICcuLi8uLi9yZXNldC1idXR0b24vcmVzZXQtYnV0dG9uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBEaWFsb2dDb2x1bW4ge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAga2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBEaWFsb2dEYXRhIGV4dGVuZHMgVGFibGVEaWFsb2dDb21tb25EYXRhIHtcbiAgICBjb2xsZWN0aW9uR3JvdXA6IENvbGxlY3Rpb25Hcm91cFtdO1xuICAgIGNvbHVtbnM6IEdyb3VwRGlhbG9nQ29sdW1uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBEaWFsb2dSZXN1bHREYXRhIHtcbiAgICBjb2xsZWN0aW9uR3JvdXA6IENvbGxlY3Rpb25Hcm91cFtdO1xufVxuXG5jb25zdCBOT1RfU0VMRUNURURfT1BUSU9OX1ZBTFVFID0gbnVsbDtcblxuY2xhc3MgR3JvdXBSdWxlIHtcbiAgICBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uS2V5ICE9PSBOT1RfU0VMRUNURURfT1BUSU9OX1ZBTFVFO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICAvKiogQ29sdW1uIGtleSB0aGUgcnVsZSBiZWxvbmdzIHRvICovXG4gICAgICAgIHB1YmxpYyBjb2x1bW5LZXk6IHN0cmluZyB8IG51bGwgPSBOT1RfU0VMRUNURURfT1BUSU9OX1ZBTFVFLFxuICAgICAgICAvKiogU2hvdyBGaWVsZCBhcyBDb2x1bW4gKi9cbiAgICAgICAgcHVibGljIHNob3dBc0NvbHVtbiA9IHRydWVcbiAgICApIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9ncm91cGluZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2dyb3VwaW5nLmNvbXBvbmVudC5zY3NzJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogUkVTRVRUQUJMRV9UT0tFTiwgdXNlRXhpc3Rpbmc6IFAxM0dyb3VwaW5nRGlhbG9nQ29tcG9uZW50IH1dLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudCxcbiAgICAgICAgVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBCYXJSaWdodERpcmVjdGl2ZSxcbiAgICAgICAgUmVzZXRCdXR0b25Db21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICAgICAgU2VsZWN0Q29tcG9uZW50LFxuICAgICAgICBPcHRpb25Db21wb25lbnQsXG4gICAgICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgICAgIEJ1dHRvbkJhckNvbXBvbmVudCxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBQMTNHcm91cGluZ0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIFJlc2V0dGFibGUge1xuICAgIC8qKiBUYWJsZSBjb2x1bW5zIGF2YWlsYWJsZSBmb3IgZ3JvdXBpbmcgKi9cbiAgICByZWFkb25seSBjb2x1bW5zOiBHcm91cERpYWxvZ0NvbHVtbltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzUmVzZXRBdmFpbGFibGVTdWJqZWN0JDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgLyoqIEluZGljYXRlcyB3aGVuIHJlc2V0IGNvbW1hbmQgaXMgYXZhaWxhYmxlICovXG4gICAgcmVhZG9ubHkgaXNSZXNldEF2YWlsYWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9pc1Jlc2V0QXZhaWxhYmxlU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAvKiogR3JvdXAgcnVsZXMgdG8gcmVuZGVyICovXG4gICAgcnVsZXM6IEdyb3VwUnVsZVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IERpYWxvZ1JlZjxHcm91cERpYWxvZ0RhdGE+KSB7XG4gICAgICAgIGNvbnN0IHsgY29sdW1ucywgY29sbGVjdGlvbkdyb3VwIH0gPSB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuXG4gICAgICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnMgfHwgW107XG5cbiAgICAgICAgdGhpcy5faW5pdGlhdGVSdWxlcyhjb2xsZWN0aW9uR3JvdXApO1xuICAgIH1cblxuICAgIC8qKiBSZXNldCBjaGFuZ2VzIHRvIHRoZSBpbml0aWFsIHN0YXRlICovXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYXRlUnVsZXMoKTtcbiAgICAgICAgdGhpcy5faXNSZXNldEF2YWlsYWJsZVN1YmplY3QkLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBDbG9zZSBkaWFsb2cgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICAgIH1cblxuICAgIC8qKiBDb25maXJtIGNoYW5nZXMgYW5kIGNsb3NlIGRpYWxvZyAqL1xuICAgIGNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25Hcm91cCA9IHRoaXMuX2dldENvbGxlY3Rpb25Hcm91cEZyb21Hcm91cFJ1bGVzKHRoaXMuX2dldFVuaXF1ZVJ1bGVzKHRoaXMucnVsZXMpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBHcm91cERpYWxvZ1Jlc3VsdERhdGEgPSB7IGNvbGxlY3Rpb25Hcm91cCB9O1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGhhc09ubHlPbmVFbXB0eVJ1bGUgPSB0aGlzLnJ1bGVzLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5ydWxlc1swXS5pc1ZhbGlkO1xuICAgICAgICB0aGlzLl9pc1Jlc2V0QXZhaWxhYmxlU3ViamVjdCQubmV4dCghaGFzT25seU9uZUVtcHR5UnVsZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmVtb3ZlUnVsZShydWxlOiBHcm91cFJ1bGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ydWxlcyA9IHRoaXMucnVsZXMuZmlsdGVyKChfcnVsZSkgPT4gX3J1bGUgIT09IHJ1bGUpO1xuXG4gICAgICAgIC8vIEtlZXAgYXQgbGVhc3Qgb25lIGl0ZW0gaW4gdGhlIGxpc3RcbiAgICAgICAgaWYgKHRoaXMucnVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnJ1bGVzLnB1c2gobmV3IEdyb3VwUnVsZSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hZGROZXcoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnJ1bGVzLnNwbGljZShpbmRleCArIDEsIDAsIG5ldyBHcm91cFJ1bGUoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25SdWxlQ29sdW1uS2V5Q2hhbmdlKHJ1bGU6IEdyb3VwUnVsZSwgY29sdW1uS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgcnVsZS5jb2x1bW5LZXkgPSBjb2x1bW5LZXk7XG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblJ1bGVTaG93QXNDb2x1bW5DaGFuZ2UocnVsZTogR3JvdXBSdWxlLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBydWxlLnNob3dBc0NvbHVtbiA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWF0ZVJ1bGVzKGNvbGxlY3Rpb25Hcm91cD86IENvbGxlY3Rpb25Hcm91cFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucnVsZXMgPSB0aGlzLl9jcmVhdGVHcm91cFJ1bGVzKGNvbGxlY3Rpb25Hcm91cCk7XG5cbiAgICAgICAgLy8gS2VlcCBhdCBsZWFzdCBvbmUgaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgICBpZiAodGhpcy5ydWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMucnVsZXMucHVzaChuZXcgR3JvdXBSdWxlKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGVSZXNldEF2YWlsYWJpbGl0eSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlR3JvdXBSdWxlcyhjb2xsZWN0aW9uR3JvdXA6IENvbGxlY3Rpb25Hcm91cFtdID0gW10pOiBHcm91cFJ1bGVbXSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uR3JvdXAubWFwKCh7IGZpZWxkLCBzaG93QXNDb2x1bW4gfSk6IEdyb3VwUnVsZSA9PiBuZXcgR3JvdXBSdWxlKGZpZWxkLCBzaG93QXNDb2x1bW4pKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldENvbGxlY3Rpb25Hcm91cEZyb21Hcm91cFJ1bGVzKHJ1bGVzID0gdGhpcy5ydWxlcyk6IENvbGxlY3Rpb25Hcm91cFtdIHtcbiAgICAgICAgcmV0dXJuIHJ1bGVzLmZpbHRlcih0aGlzLl9pc1J1bGVWYWxpZCkubWFwKFxuICAgICAgICAgICAgKHsgY29sdW1uS2V5LCBzaG93QXNDb2x1bW4gfSk6IENvbGxlY3Rpb25Hcm91cCA9PiAoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW5LZXkhLFxuICAgICAgICAgICAgICAgIHNob3dBc0NvbHVtbixcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb24uTk9ORVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFVuaXF1ZVJ1bGVzKHJ1bGVzOiBHcm91cFJ1bGVbXSk6IEdyb3VwUnVsZVtdIHtcbiAgICAgICAgcmV0dXJuIGdldFVuaXF1ZUxpc3RWYWx1ZXNCeUtleShydWxlcywgJ2NvbHVtbktleScpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNSdWxlVmFsaWQgPSAocnVsZTogR3JvdXBSdWxlKTogYm9vbGVhbiA9PiBydWxlPy5pc1ZhbGlkO1xufVxuIiwiPGZkLWRpYWxvZyBjbGFzcz1cImZkcC10YWJsZS1wMTMtZ3JvdXBpbmctZGlhbG9nXCI+XG4gICAgPGZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxoNCBmZC10aXRsZSBbaGVhZGVyU2l6ZV09XCI0XCI+e3sgJ3BsYXRmb3JtVGFibGUuUDEzR3JvdXBEaWFsb2dIZWFkZXInIHwgZmRUcmFuc2xhdGUgfX08L2g0PlxuICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyLXJpZ2h0PlxuICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPGZkcC10YWJsZS1yZXNldC1idXR0b24+PC9mZHAtdGFibGUtcmVzZXQtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XG5cbiAgICA8ZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgIEBmb3IgKHJ1bGUgb2YgcnVsZXM7IHRyYWNrIHJ1bGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1yb3dcIj5cbiAgICAgICAgICAgICAgICA8ZmQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtcm93X19zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicnVsZS5jb2x1bW5LZXlcIlxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiX29uUnVsZUNvbHVtbktleUNoYW5nZShydWxlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0dyb3VwRGlhbG9nTm9uZVNlbGVjdGVkQ29sdW1uU2VsZWN0UGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrIGNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiBbdmFsdWVdPVwiY29sdW1uLmtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZmQtc2VsZWN0PlxuXG4gICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtcm93X19jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJ1bGUuc2hvd0FzQ29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX29uUnVsZVNob3dBc0NvbHVtbkNoYW5nZShydWxlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0dyb3VwRGlhbG9nU2hvd0ZpZWxkQXNDb2x1bW5DaGVja2JveExhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1yb3dfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cInN5cy1jYW5jZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm1UYWJsZS5QMTNHcm91cERpYWxvZ1JlbW92ZUdyb3VwQnRuVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0dyb3VwRGlhbG9nUmVtb3ZlR3JvdXBCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3JlbW92ZVJ1bGUocnVsZSlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImFkZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0dyb3VwRGlhbG9nQWRkTmV3R3JvdXBCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVGFibGUuUDEzR3JvdXBEaWFsb2dBZGROZXdHcm91cEJ0blRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfYWRkTmV3KCRpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZmQtZGlhbG9nLWJvZHk+XG5cbiAgICA8ZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0dyb3VwRGlhbG9nQ29uZmlybWF0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm0oKVwiXG4gICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0dyb3VwRGlhbG9nQ2FuY2VsQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG48L2ZkLWRpYWxvZz5cbiJdfQ==
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXAxMy1kaWFsb2cvZ3JvdXBpbmcvZ3JvdXBpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS9jb21wb25lbnRzL3RhYmxlLXAxMy1kaWFsb2cvZ3JvdXBpbmcvZ3JvdXBpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUVILGFBQWEsRUFFYix3QkFBd0IsRUFDM0IsTUFBTSx5Q0FBeUMsQ0FBQztBQUVqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ3JCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDeEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxp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QixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLGtCQUFrQjt3QkFDbEIsZUFBZTtxQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENvbGxlY3Rpb25Hcm91cCxcbiAgICBTb3J0RGlyZWN0aW9uLFxuICAgIFRhYmxlRGlhbG9nQ29tbW9uRGF0YSxcbiAgICBnZXRVbmlxdWVMaXN0VmFsdWVzQnlLZXlcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzJztcblxuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5cbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQge1xuICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgQmFyTGVmdERpcmVjdGl2ZSxcbiAgICBCYXJSaWdodERpcmVjdGl2ZSxcbiAgICBCdXR0b25CYXJDb21wb25lbnRcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7XG4gICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgT3B0aW9uQ29tcG9uZW50LCBTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2VsZWN0JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RpdGxlJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBSRVNFVFRBQkxFX1RPS0VOLCBSZXNldEJ1dHRvbkNvbXBvbmVudCwgUmVzZXR0YWJsZSB9IGZyb20gJy4uLy4uL3Jlc2V0LWJ1dHRvbi9yZXNldC1idXR0b24uY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBHcm91cERpYWxvZ0NvbHVtbiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBrZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcm91cERpYWxvZ0RhdGEgZXh0ZW5kcyBUYWJsZURpYWxvZ0NvbW1vbkRhdGEge1xuICAgIGNvbGxlY3Rpb25Hcm91cDogQ29sbGVjdGlvbkdyb3VwW107XG4gICAgY29sdW1uczogR3JvdXBEaWFsb2dDb2x1bW5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcm91cERpYWxvZ1Jlc3VsdERhdGEge1xuICAgIGNvbGxlY3Rpb25Hcm91cDogQ29sbGVjdGlvbkdyb3VwW107XG59XG5cbmNvbnN0IE5PVF9TRUxFQ1RFRF9PUFRJT05fVkFMVUUgPSBudWxsO1xuXG5jbGFzcyBHcm91cFJ1bGUge1xuICAgIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5LZXkgIT09IE5PVF9TRUxFQ1RFRF9PUFRJT05fVkFMVUU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIC8qKiBDb2x1bW4ga2V5IHRoZSBydWxlIGJlbG9uZ3MgdG8gKi9cbiAgICAgICAgcHVibGljIGNvbHVtbktleTogc3RyaW5nIHwgbnVsbCA9IE5PVF9TRUxFQ1RFRF9PUFRJT05fVkFMVUUsXG4gICAgICAgIC8qKiBTaG93IEZpZWxkIGFzIENvbHVtbiAqL1xuICAgICAgICBwdWJsaWMgc2hvd0FzQ29sdW1uID0gdHJ1ZVxuICAgICkge31cbn1cblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL2dyb3VwaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vZ3JvdXBpbmcuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBSRVNFVFRBQkxFX1RPS0VOLCB1c2VFeGlzdGluZzogUDEzR3JvdXBpbmdEaWFsb2dDb21wb25lbnQgfV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgQmFyTGVmdERpcmVjdGl2ZSxcbiAgICAgICAgQmFyRWxlbWVudERpcmVjdGl2ZSxcbiAgICAgICAgVGl0bGVDb21wb25lbnQsXG4gICAgICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgICAgICBSZXNldEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgU2Nyb2xsYmFyRGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgICAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgICAgIE9wdGlvbkNvbXBvbmVudCxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQmFyQ29tcG9uZW50LFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFAxM0dyb3VwaW5nRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgUmVzZXR0YWJsZSB7XG4gICAgLyoqIFRhYmxlIGNvbHVtbnMgYXZhaWxhYmxlIGZvciBncm91cGluZyAqL1xuICAgIHJlYWRvbmx5IGNvbHVtbnM6IEdyb3VwRGlhbG9nQ29sdW1uW10gPSBbXTtcbiAgICAvKiogSW5kaWNhdGVzIHdoZW4gcmVzZXQgY29tbWFuZCBpcyBhdmFpbGFibGUgKi9cbiAgICByZWFkb25seSBpc1Jlc2V0QXZhaWxhYmxlJCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogR3JvdXAgcnVsZXMgdG8gcmVuZGVyICovXG4gICAgcnVsZXM6IEdyb3VwUnVsZVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IERpYWxvZ1JlZjxHcm91cERpYWxvZ0RhdGE+KSB7XG4gICAgICAgIGNvbnN0IHsgY29sdW1ucywgY29sbGVjdGlvbkdyb3VwIH0gPSB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuXG4gICAgICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnMgfHwgW107XG5cbiAgICAgICAgdGhpcy5faW5pdGlhdGVSdWxlcyhjb2xsZWN0aW9uR3JvdXApO1xuICAgIH1cblxuICAgIC8qKiBSZXNldCBjaGFuZ2VzIHRvIHRoZSBpbml0aWFsIHN0YXRlICovXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYXRlUnVsZXMoKTtcbiAgICAgICAgdGhpcy5pc1Jlc2V0QXZhaWxhYmxlJC5zZXQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBDbG9zZSBkaWFsb2cgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICAgIH1cblxuICAgIC8qKiBDb25maXJtIGNoYW5nZXMgYW5kIGNsb3NlIGRpYWxvZyAqL1xuICAgIGNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25Hcm91cCA9IHRoaXMuX2dldENvbGxlY3Rpb25Hcm91cEZyb21Hcm91cFJ1bGVzKHRoaXMuX2dldFVuaXF1ZVJ1bGVzKHRoaXMucnVsZXMpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBHcm91cERpYWxvZ1Jlc3VsdERhdGEgPSB7IGNvbGxlY3Rpb25Hcm91cCB9O1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGhhc09ubHlPbmVFbXB0eVJ1bGUgPSB0aGlzLnJ1bGVzLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5ydWxlc1swXS5pc1ZhbGlkO1xuICAgICAgICB0aGlzLmlzUmVzZXRBdmFpbGFibGUkLnNldCghaGFzT25seU9uZUVtcHR5UnVsZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmVtb3ZlUnVsZShydWxlOiBHcm91cFJ1bGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ydWxlcyA9IHRoaXMucnVsZXMuZmlsdGVyKChfcnVsZSkgPT4gX3J1bGUgIT09IHJ1bGUpO1xuXG4gICAgICAgIC8vIEtlZXAgYXQgbGVhc3Qgb25lIGl0ZW0gaW4gdGhlIGxpc3RcbiAgICAgICAgaWYgKHRoaXMucnVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnJ1bGVzLnB1c2gobmV3IEdyb3VwUnVsZSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hZGROZXcoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnJ1bGVzLnNwbGljZShpbmRleCArIDEsIDAsIG5ldyBHcm91cFJ1bGUoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25SdWxlQ29sdW1uS2V5Q2hhbmdlKHJ1bGU6IEdyb3VwUnVsZSwgY29sdW1uS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgcnVsZS5jb2x1bW5LZXkgPSBjb2x1bW5LZXk7XG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlUmVzZXRBdmFpbGFiaWxpdHkoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vblJ1bGVTaG93QXNDb2x1bW5DaGFuZ2UocnVsZTogR3JvdXBSdWxlLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBydWxlLnNob3dBc0NvbHVtbiA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZVJlc2V0QXZhaWxhYmlsaXR5KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWF0ZVJ1bGVzKGNvbGxlY3Rpb25Hcm91cD86IENvbGxlY3Rpb25Hcm91cFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucnVsZXMgPSB0aGlzLl9jcmVhdGVHcm91cFJ1bGVzKGNvbGxlY3Rpb25Hcm91cCk7XG5cbiAgICAgICAgLy8gS2VlcCBhdCBsZWFzdCBvbmUgaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgICBpZiAodGhpcy5ydWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMucnVsZXMucHVzaChuZXcgR3JvdXBSdWxlKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGVSZXNldEF2YWlsYWJpbGl0eSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlR3JvdXBSdWxlcyhjb2xsZWN0aW9uR3JvdXA6IENvbGxlY3Rpb25Hcm91cFtdID0gW10pOiBHcm91cFJ1bGVbXSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uR3JvdXAubWFwKCh7IGZpZWxkLCBzaG93QXNDb2x1bW4gfSk6IEdyb3VwUnVsZSA9PiBuZXcgR3JvdXBSdWxlKGZpZWxkLCBzaG93QXNDb2x1bW4pKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldENvbGxlY3Rpb25Hcm91cEZyb21Hcm91cFJ1bGVzKHJ1bGVzID0gdGhpcy5ydWxlcyk6IENvbGxlY3Rpb25Hcm91cFtdIHtcbiAgICAgICAgcmV0dXJuIHJ1bGVzLmZpbHRlcih0aGlzLl9pc1J1bGVWYWxpZCkubWFwKFxuICAgICAgICAgICAgKHsgY29sdW1uS2V5LCBzaG93QXNDb2x1bW4gfSk6IENvbGxlY3Rpb25Hcm91cCA9PiAoe1xuICAgICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW5LZXkhLFxuICAgICAgICAgICAgICAgIHNob3dBc0NvbHVtbixcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb24uTk9ORVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFVuaXF1ZVJ1bGVzKHJ1bGVzOiBHcm91cFJ1bGVbXSk6IEdyb3VwUnVsZVtdIHtcbiAgICAgICAgcmV0dXJuIGdldFVuaXF1ZUxpc3RWYWx1ZXNCeUtleShydWxlcywgJ2NvbHVtbktleScpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNSdWxlVmFsaWQgPSAocnVsZTogR3JvdXBSdWxlKTogYm9vbGVhbiA9PiBydWxlPy5pc1ZhbGlkO1xufVxuIiwiPGZkLWRpYWxvZyBjbGFzcz1cImZkcC10YWJsZS1wMTMtZ3JvdXBpbmctZGlhbG9nXCI+XG4gICAgPGZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cbiAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxoNCBmZC10aXRsZSBbaGVhZGVyU2l6ZV09XCI0XCI+e3sgJ3BsYXRmb3JtVGFibGUuUDEzR3JvdXBEaWFsb2dIZWFkZXInIHwgZmRUcmFuc2xhdGUgfX08L2g0PlxuICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyLXJpZ2h0PlxuICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPGZkcC10YWJsZS1yZXNldC1idXR0b24+PC9mZHAtdGFibGUtcmVzZXQtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XG5cbiAgICA8ZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgIEBmb3IgKHJ1bGUgb2YgcnVsZXM7IHRyYWNrIHJ1bGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1yb3dcIj5cbiAgICAgICAgICAgICAgICA8ZmQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtcm93X19zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicnVsZS5jb2x1bW5LZXlcIlxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiX29uUnVsZUNvbHVtbktleUNoYW5nZShydWxlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0dyb3VwRGlhbG9nTm9uZVNlbGVjdGVkQ29sdW1uU2VsZWN0UGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrIGNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiBbdmFsdWVdPVwiY29sdW1uLmtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZmQtc2VsZWN0PlxuXG4gICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtcm93X19jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJ1bGUuc2hvd0FzQ29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX29uUnVsZVNob3dBc0NvbHVtbkNoYW5nZShydWxlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0dyb3VwRGlhbG9nU2hvd0ZpZWxkQXNDb2x1bW5DaGVja2JveExhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1jaGVja2JveD5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1yb3dfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cInN5cy1jYW5jZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm1UYWJsZS5QMTNHcm91cERpYWxvZ1JlbW92ZUdyb3VwQnRuVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0dyb3VwRGlhbG9nUmVtb3ZlR3JvdXBCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3JlbW92ZVJ1bGUocnVsZSlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cImFkZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0dyb3VwRGlhbG9nQWRkTmV3R3JvdXBCdG5UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtVGFibGUuUDEzR3JvdXBEaWFsb2dBZGROZXdHcm91cEJ0blRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfYWRkTmV3KCRpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZmQtZGlhbG9nLWJvZHk+XG5cbiAgICA8ZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0dyb3VwRGlhbG9nQ29uZmlybWF0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm0oKVwiXG4gICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG5cbiAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVRhYmxlLlAxM0dyb3VwRGlhbG9nQ2FuY2VsQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG48L2ZkLWRpYWxvZz5cbiJdfQ==