@rivet-health/design-system 40.44.2 → 40.44.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/esm2022/lib/accessibility/sr-only/sr-only.component.mjs +3 -3
  2. package/esm2022/lib/download/download.service.mjs +3 -3
  3. package/esm2022/lib/format/pipes/date.pipe.mjs +3 -3
  4. package/esm2022/lib/format/pipes/days.pipe.mjs +3 -3
  5. package/esm2022/lib/format/pipes/dollars.pipe.mjs +3 -3
  6. package/esm2022/lib/format/pipes/number.pipe.mjs +3 -3
  7. package/esm2022/lib/format/pipes/percentage.pipe.mjs +3 -3
  8. package/esm2022/lib/format/pipes/sentence-case.pipe.mjs +3 -3
  9. package/esm2022/lib/format/pipes/small-currency.pipe.mjs +3 -3
  10. package/esm2022/lib/format/pipes/small-number.pipe.mjs +3 -3
  11. package/esm2022/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +3 -3
  12. package/esm2022/lib/format/truncate/truncate.component.mjs +3 -3
  13. package/esm2022/lib/icon/icon.component.mjs +3 -3
  14. package/esm2022/lib/input/alphabetic-field/alphabetic-field.component.mjs +3 -3
  15. package/esm2022/lib/input/auto-focus/auto-focus.directive.mjs +3 -3
  16. package/esm2022/lib/input/button/button.component.mjs +3 -3
  17. package/esm2022/lib/input/button-group/button-group.component.mjs +3 -3
  18. package/esm2022/lib/input/calendar/calendar.component.mjs +3 -3
  19. package/esm2022/lib/input/card-checkbox/card-checkbox.component.mjs +3 -3
  20. package/esm2022/lib/input/checkbox/checkbox.component.mjs +3 -3
  21. package/esm2022/lib/input/currency-field/currency-field.component.mjs +3 -3
  22. package/esm2022/lib/input/date/date.component.mjs +3 -3
  23. package/esm2022/lib/input/date-range/date-range.component.mjs +6 -5
  24. package/esm2022/lib/input/filter-chip/filter-chip.component.mjs +3 -3
  25. package/esm2022/lib/input/filter-dropdown/filter-dropdown.component.mjs +3 -3
  26. package/esm2022/lib/input/input-label/input-label.component.mjs +3 -3
  27. package/esm2022/lib/input/mentions-input/mentions-input.component.mjs +3 -3
  28. package/esm2022/lib/input/number-field/number-field.component.mjs +3 -3
  29. package/esm2022/lib/input/percentage-field/percentage-field.component.mjs +3 -3
  30. package/esm2022/lib/input/phone-field/phone-field.component.mjs +3 -3
  31. package/esm2022/lib/input/radio/radio.component.mjs +3 -3
  32. package/esm2022/lib/input/search/search.component.mjs +3 -3
  33. package/esm2022/lib/input/search-select/search-select.component.mjs +3 -3
  34. package/esm2022/lib/input/select/select/select.component.mjs +6 -5
  35. package/esm2022/lib/input/select/select-node/select-node.component.mjs +3 -3
  36. package/esm2022/lib/input/simple-select/option-group.pipe.mjs +3 -3
  37. package/esm2022/lib/input/simple-select/simple-select.component.mjs +3 -3
  38. package/esm2022/lib/input/switch-checkbox/switch-checkbox.component.mjs +3 -3
  39. package/esm2022/lib/input/text-field/text-field.component.mjs +3 -3
  40. package/esm2022/lib/input/textarea-field/textarea-field.component.mjs +3 -3
  41. package/esm2022/lib/input/validation-message/validation-message.component.mjs +3 -3
  42. package/esm2022/lib/layout/card/card-actions.component.mjs +3 -3
  43. package/esm2022/lib/layout/card/card-content.component.mjs +3 -3
  44. package/esm2022/lib/layout/card/card-header.component.mjs +3 -3
  45. package/esm2022/lib/layout/card/card-link.component.mjs +29 -8
  46. package/esm2022/lib/layout/card/card-media.component.mjs +3 -3
  47. package/esm2022/lib/layout/card/card.component.mjs +23 -8
  48. package/esm2022/lib/layout/setting-row/setting-row.component.mjs +3 -3
  49. package/esm2022/lib/load/loading/loading.component.mjs +3 -3
  50. package/esm2022/lib/load/loading-cover/loading-cover.component.mjs +3 -3
  51. package/esm2022/lib/navigation/editable-heading/editable-heading.component.mjs +3 -3
  52. package/esm2022/lib/navigation/link/link.component.mjs +3 -3
  53. package/esm2022/lib/navigation/page-header/page-header.component.mjs +3 -3
  54. package/esm2022/lib/navigation/simple-tabs/simple-tab/simple-tab.component.mjs +3 -3
  55. package/esm2022/lib/navigation/simple-tabs/simple-tabs/simple-tabs.component.mjs +3 -3
  56. package/esm2022/lib/navigation/tabs/tab/tab.component.mjs +3 -3
  57. package/esm2022/lib/navigation/tabs/tabs/tabs.component.mjs +3 -3
  58. package/esm2022/lib/navigation/views/all-views-modal/all-views-modal.component.mjs +3 -3
  59. package/esm2022/lib/navigation/views/edit-view/edit-view.component.mjs +3 -3
  60. package/esm2022/lib/navigation/views/permission-picker/permission-picker.component.mjs +3 -3
  61. package/esm2022/lib/navigation/views/view-menu/view-menu.component.mjs +3 -3
  62. package/esm2022/lib/navigation/views/views/views.component.mjs +3 -3
  63. package/esm2022/lib/notification/badge/badge.component.mjs +3 -3
  64. package/esm2022/lib/notification/banner/banner-action.component.mjs +3 -3
  65. package/esm2022/lib/notification/banner/banner.component.mjs +3 -3
  66. package/esm2022/lib/notification/map-indicator/map-indicator.component.mjs +3 -3
  67. package/esm2022/lib/notification/notification-badge/notification-badge.component.mjs +3 -3
  68. package/esm2022/lib/overlay/callout/callout.component.mjs +5 -5
  69. package/esm2022/lib/overlay/callout/help/help.component.mjs +3 -3
  70. package/esm2022/lib/overlay/callout/lock-scroll.directive.mjs +6 -6
  71. package/esm2022/lib/overlay/callout/menu/menu-item/menu-item.component.mjs +3 -3
  72. package/esm2022/lib/overlay/callout/menu/menu.component.mjs +6 -5
  73. package/esm2022/lib/overlay/callout/tooltip/locked-tooltip.directive.mjs +3 -3
  74. package/esm2022/lib/overlay/callout/tooltip/tooltip.component.mjs +3 -3
  75. package/esm2022/lib/overlay/callout/tooltip/tooltip.directive.mjs +3 -3
  76. package/esm2022/lib/overlay/modal/dialog/dialog.component.mjs +3 -3
  77. package/esm2022/lib/overlay/modal/dialog-stack.service.mjs +3 -3
  78. package/esm2022/lib/overlay/modal/form-dialog/form-dialog.component.mjs +3 -3
  79. package/esm2022/lib/overlay/modal/modal.component.mjs +3 -3
  80. package/esm2022/lib/overlay/modal/side-sheet/side-sheet.component.mjs +3 -3
  81. package/esm2022/lib/overlay/overlay-outlet.component.mjs +3 -3
  82. package/esm2022/lib/overlay/overlay.directive.mjs +3 -3
  83. package/esm2022/lib/overlay/overlay.service.mjs +3 -3
  84. package/esm2022/lib/overlay/toast/toast-action.component.mjs +3 -3
  85. package/esm2022/lib/overlay/toast/toast.component.mjs +3 -3
  86. package/esm2022/lib/riv.module.mjs +4 -4
  87. package/esm2022/lib/size/size.directive.mjs +3 -3
  88. package/esm2022/lib/table/simple-table/simple-table-cell.component.mjs +3 -3
  89. package/esm2022/lib/table/simple-table/simple-table-header-cell.component.mjs +3 -3
  90. package/esm2022/lib/table/simple-table/simple-table-row.component.mjs +3 -3
  91. package/esm2022/lib/table/simple-table/simple-table.component.mjs +3 -3
  92. package/esm2022/lib/table/table/table/table.component.mjs +3 -3
  93. package/esm2022/lib/table/table/table-collapse-all/table-collapse-all.component.mjs +3 -3
  94. package/esm2022/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +3 -3
  95. package/esm2022/lib/table/table/table-column-settings/table-column-settings.component.mjs +3 -3
  96. package/esm2022/lib/table/table/table-csv-export/table-csv-export.component.mjs +3 -3
  97. package/esm2022/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.mjs +3 -3
  98. package/esm2022/lib/table/table/table-search/table-search.component.mjs +3 -3
  99. package/esm2022/lib/table/table/table-search-columns/table-search-columns.component.mjs +3 -3
  100. package/esm2022/lib/visibility/visibility.directive.mjs +3 -3
  101. package/esm2022/lib/visualization/chart/chart.component.mjs +3 -3
  102. package/esm2022/lib/visualization/data-table/data-table-cell.component.mjs +3 -3
  103. package/esm2022/lib/visualization/data-table/data-table-header-cell.component.mjs +3 -3
  104. package/esm2022/lib/visualization/data-table/data-table-row.component.mjs +3 -3
  105. package/esm2022/lib/visualization/data-table/data-table.component.mjs +3 -3
  106. package/esm2022/lib/visualization/donut/donut.component.mjs +3 -3
  107. package/esm2022/lib/visualization/funnel-chart/funnel-chart.component.mjs +3 -3
  108. package/esm2022/lib/visualization/highlight/highlight.component.mjs +3 -3
  109. package/esm2022/lib/visualization/issue/issue.component.mjs +3 -3
  110. package/esm2022/lib/visualization/legend-item/legend-item.component.mjs +3 -3
  111. package/esm2022/lib/visualization/metric/metric.component.mjs +3 -3
  112. package/esm2022/lib/visualization/mini-pie/mini-pie.component.mjs +3 -3
  113. package/esm2022/lib/visualization/progress/progress.component.mjs +3 -3
  114. package/esm2022/lib/visualization/stacked-column/stacked-column.component.mjs +3 -3
  115. package/esm2022/lib/visualization/stacked-row/stacked-row.component.mjs +3 -3
  116. package/esm2022/lib/visualization/time-series/time-series.component.mjs +3 -3
  117. package/esm2022/lib/visualization/trend/trend.component.mjs +3 -3
  118. package/esm2022/lib/visualization/zero-state/zero-state.component.mjs +3 -3
  119. package/fesm2022/rivet-health-design-system.mjs +409 -371
  120. package/fesm2022/rivet-health-design-system.mjs.map +1 -1
  121. package/lib/layout/card/card-link.component.d.ts +14 -4
  122. package/lib/layout/card/card.component.d.ts +16 -6
  123. package/package.json +1 -1
@@ -176,10 +176,10 @@ export class DateComponent extends InputLabelComponent {
176
176
  this.valueChange.emit(next);
177
177
  this.cdr.markForCheck();
178
178
  }
179
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
180
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DateComponent, selector: "riv-date", inputs: { min: "min", max: "max", value: "value", placeholder: "placeholder", disabled: "disabled", size: "size", showClearButton: "showClearButton", showTodayButton: "showTodayButton", rollingTodayLabel: "rollingTodayLabel", open: "open" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:mousedown": "onDocumentMouseDown($event.target)" } }, queries: [{ propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <div\n #trigger\n class=\"trigger\"\n [class.xsmall]=\"size === 'xsmall'\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [class.xlarge]=\"size === 'xlarge'\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [class.disabled]=\"disabled\"\n >\n <input\n #input\n class=\"value\"\n [placeholder]=\"placeholder\"\n [value]=\"inputText\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-label]=\"label || null\"\n [attr.aria-controls]=\"calendarId\"\n [attr.aria-expanded]=\"open$ | async\"\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-autocomplete=\"none\"\n (input)=\"onInputChange(input.value)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus()\"\n (keydown.enter)=\"input.blur(); open$.next(false); $event.preventDefault()\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n <button\n class=\"chevron\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"toggleCalendar()\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-label]=\"(open$ | async) ? 'Close calendar' : 'Open calendar'\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </button>\n </div>\n</riv-input-label>\n<ng-container *ngIf=\"open$ | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [isModal]=\"false\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-right',\n 'bottom-right',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open$.next(false)\"\n >\n <div [attr.id]=\"calendarId\" (mousedown)=\"$event.preventDefault()\">\n <header *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </header>\n <div class=\"content\">\n <riv-calendar\n [activeYearMonth]=\"activeYearMonth\"\n (activeYearMonthChange)=\"activeYearMonth = $event\"\n [displayMin]=\"min\"\n [displayMax]=\"max\"\n [selectableMin]=\"min\"\n [selectableMax]=\"max\"\n [selectedValue]=\"selectedCalendarValue\"\n (dateSelect)=\"onDateSelect($event); input.blur()\"\n ></riv-calendar>\n </div>\n <footer *ngIf=\"showClearButton || showTodayButton\" class=\"buttons\">\n <button\n *ngIf=\"showClearButton\"\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n (click)=\"clearValue(); input.blur()\"\n type=\"button\"\n >\n Clear\n </button>\n <button\n *ngIf=\"showTodayButton\"\n class=\"today\"\n rivButton\n [size]=\"'small'\"\n [variant]=\"'basic'\"\n [disabled]=\"!isTodaySelectable\"\n (click)=\"selectToday(); input.blur()\"\n type=\"button\"\n >\n Today\n </button>\n </footer>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [".trigger{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);display:flex;gap:var(--size-small);background-color:var(--surface-light-0);padding-left:var(--size-small);position:relative}.trigger:focus-within{outline:none;border:var(--border-width) solid var(--purp-60)}.trigger.disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}.value{font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) 0;flex-grow:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:pre;border:none;background:transparent;outline:none;width:100%}.value::placeholder{color:var(--type-light-low-contrast)}.value:disabled{color:var(--type-light-disabled)}.trigger.xsmall .value{font:var(--input-small);padding:var(--size-xsmall) 0}.trigger.small .value{font:var(--input-small)}.trigger.large .value{font:var(--input-large);padding:var(--size-medium) var(--size-xsmall)}.trigger.xlarge .value{font:var(--input-large);padding:var(--size-large) var(--size-small)}.chevron{display:flex;justify-content:center;align-items:center;padding:var(--size-xsmall) calc(var(--base-grid-size) * 1.5);border:none;background:transparent;cursor:pointer;color:var(--type-light-high-contrast)}.chevron:disabled{color:var(--type-light-disabled);cursor:not-allowed}.trigger.warning{border-color:var(--surface-dark-caution)}.trigger.error{border-color:var(--surface-dark-danger);box-shadow:inset 0 0 0 var(--border-width-large) var(--surface-dark-danger)}.content{padding:var(--size-xlarge)}.buttons{padding:0 var(--size-xlarge) var(--size-xlarge);display:flex;justify-content:space-between}.buttons .today{margin-left:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i3.CalendarComponent, selector: "riv-calendar", inputs: ["activeYearMonth", "displayMin", "displayMax", "selectableMin", "selectableMax", "omitRange", "selectedValue"], outputs: ["activeYearMonthChange", "dateSelect"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i6.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText", "errorMessage", "state"], outputs: ["labelAction"] }, { kind: "directive", type: i7.OverlayDirective, selector: "[riv-overlay]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
179
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
180
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DateComponent, selector: "riv-date", inputs: { min: "min", max: "max", value: "value", placeholder: "placeholder", disabled: "disabled", size: "size", showClearButton: "showClearButton", showTodayButton: "showTodayButton", rollingTodayLabel: "rollingTodayLabel", open: "open" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:mousedown": "onDocumentMouseDown($event.target)" } }, queries: [{ propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <div\n #trigger\n class=\"trigger\"\n [class.xsmall]=\"size === 'xsmall'\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [class.xlarge]=\"size === 'xlarge'\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [class.disabled]=\"disabled\"\n >\n <input\n #input\n class=\"value\"\n [placeholder]=\"placeholder\"\n [value]=\"inputText\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-label]=\"label || null\"\n [attr.aria-controls]=\"calendarId\"\n [attr.aria-expanded]=\"open$ | async\"\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-autocomplete=\"none\"\n (input)=\"onInputChange(input.value)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus()\"\n (keydown.enter)=\"input.blur(); open$.next(false); $event.preventDefault()\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n <button\n class=\"chevron\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"toggleCalendar()\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-label]=\"(open$ | async) ? 'Close calendar' : 'Open calendar'\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </button>\n </div>\n</riv-input-label>\n<ng-container *ngIf=\"open$ | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [isModal]=\"false\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-right',\n 'bottom-right',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open$.next(false)\"\n >\n <div [attr.id]=\"calendarId\" (mousedown)=\"$event.preventDefault()\">\n <header *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </header>\n <div class=\"content\">\n <riv-calendar\n [activeYearMonth]=\"activeYearMonth\"\n (activeYearMonthChange)=\"activeYearMonth = $event\"\n [displayMin]=\"min\"\n [displayMax]=\"max\"\n [selectableMin]=\"min\"\n [selectableMax]=\"max\"\n [selectedValue]=\"selectedCalendarValue\"\n (dateSelect)=\"onDateSelect($event); input.blur()\"\n ></riv-calendar>\n </div>\n <footer *ngIf=\"showClearButton || showTodayButton\" class=\"buttons\">\n <button\n *ngIf=\"showClearButton\"\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n (click)=\"clearValue(); input.blur()\"\n type=\"button\"\n >\n Clear\n </button>\n <button\n *ngIf=\"showTodayButton\"\n class=\"today\"\n rivButton\n [size]=\"'small'\"\n [variant]=\"'basic'\"\n [disabled]=\"!isTodaySelectable\"\n (click)=\"selectToday(); input.blur()\"\n type=\"button\"\n >\n Today\n </button>\n </footer>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [".trigger{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);display:flex;gap:var(--size-small);background-color:var(--surface-light-0);padding-left:var(--size-small);position:relative}.trigger:focus-within{outline:none;border:var(--border-width) solid var(--purp-60)}.trigger.disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}.value{font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) 0;flex-grow:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:pre;border:none;background:transparent;outline:none;width:100%}.value::placeholder{color:var(--type-light-low-contrast)}.value:disabled{color:var(--type-light-disabled)}.trigger.xsmall .value{font:var(--input-small);padding:var(--size-xsmall) 0}.trigger.small .value{font:var(--input-small)}.trigger.large .value{font:var(--input-large);padding:var(--size-medium) var(--size-xsmall)}.trigger.xlarge .value{font:var(--input-large);padding:var(--size-large) var(--size-small)}.chevron{display:flex;justify-content:center;align-items:center;padding:var(--size-xsmall) calc(var(--base-grid-size) * 1.5);border:none;background:transparent;cursor:pointer;color:var(--type-light-high-contrast)}.chevron:disabled{color:var(--type-light-disabled);cursor:not-allowed}.trigger.warning{border-color:var(--surface-dark-caution)}.trigger.error{border-color:var(--surface-dark-danger);box-shadow:inset 0 0 0 var(--border-width-large) var(--surface-dark-danger)}.content{padding:var(--size-xlarge)}.buttons{padding:0 var(--size-xlarge) var(--size-xlarge);display:flex;justify-content:space-between}.buttons .today{margin-left:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i3.CalendarComponent, selector: "riv-calendar", inputs: ["activeYearMonth", "displayMin", "displayMax", "selectableMin", "selectableMax", "omitRange", "selectedValue"], outputs: ["activeYearMonthChange", "dateSelect"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i6.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText", "errorMessage", "state"], outputs: ["labelAction"] }, { kind: "directive", type: i7.OverlayDirective, selector: "[riv-overlay]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
181
181
  }
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateComponent, decorators: [{
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateComponent, decorators: [{
183
183
  type: Component,
184
184
  args: [{ selector: 'riv-date', changeDetection: ChangeDetectionStrategy.OnPush, template: "<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <div\n #trigger\n class=\"trigger\"\n [class.xsmall]=\"size === 'xsmall'\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [class.xlarge]=\"size === 'xlarge'\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [class.disabled]=\"disabled\"\n >\n <input\n #input\n class=\"value\"\n [placeholder]=\"placeholder\"\n [value]=\"inputText\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-label]=\"label || null\"\n [attr.aria-controls]=\"calendarId\"\n [attr.aria-expanded]=\"open$ | async\"\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-autocomplete=\"none\"\n (input)=\"onInputChange(input.value)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus()\"\n (keydown.enter)=\"input.blur(); open$.next(false); $event.preventDefault()\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n <button\n class=\"chevron\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"toggleCalendar()\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-label]=\"(open$ | async) ? 'Close calendar' : 'Open calendar'\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </button>\n </div>\n</riv-input-label>\n<ng-container *ngIf=\"open$ | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [isModal]=\"false\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-right',\n 'bottom-right',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open$.next(false)\"\n >\n <div [attr.id]=\"calendarId\" (mousedown)=\"$event.preventDefault()\">\n <header *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </header>\n <div class=\"content\">\n <riv-calendar\n [activeYearMonth]=\"activeYearMonth\"\n (activeYearMonthChange)=\"activeYearMonth = $event\"\n [displayMin]=\"min\"\n [displayMax]=\"max\"\n [selectableMin]=\"min\"\n [selectableMax]=\"max\"\n [selectedValue]=\"selectedCalendarValue\"\n (dateSelect)=\"onDateSelect($event); input.blur()\"\n ></riv-calendar>\n </div>\n <footer *ngIf=\"showClearButton || showTodayButton\" class=\"buttons\">\n <button\n *ngIf=\"showClearButton\"\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n (click)=\"clearValue(); input.blur()\"\n type=\"button\"\n >\n Clear\n </button>\n <button\n *ngIf=\"showTodayButton\"\n class=\"today\"\n rivButton\n [size]=\"'small'\"\n [variant]=\"'basic'\"\n [disabled]=\"!isTodaySelectable\"\n (click)=\"selectToday(); input.blur()\"\n type=\"button\"\n >\n Today\n </button>\n </footer>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [".trigger{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);display:flex;gap:var(--size-small);background-color:var(--surface-light-0);padding-left:var(--size-small);position:relative}.trigger:focus-within{outline:none;border:var(--border-width) solid var(--purp-60)}.trigger.disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}.value{font:var(--input-medium);color:var(--type-light-high-contrast);padding:var(--size-small) 0;flex-grow:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:pre;border:none;background:transparent;outline:none;width:100%}.value::placeholder{color:var(--type-light-low-contrast)}.value:disabled{color:var(--type-light-disabled)}.trigger.xsmall .value{font:var(--input-small);padding:var(--size-xsmall) 0}.trigger.small .value{font:var(--input-small)}.trigger.large .value{font:var(--input-large);padding:var(--size-medium) var(--size-xsmall)}.trigger.xlarge .value{font:var(--input-large);padding:var(--size-large) var(--size-small)}.chevron{display:flex;justify-content:center;align-items:center;padding:var(--size-xsmall) calc(var(--base-grid-size) * 1.5);border:none;background:transparent;cursor:pointer;color:var(--type-light-high-contrast)}.chevron:disabled{color:var(--type-light-disabled);cursor:not-allowed}.trigger.warning{border-color:var(--surface-dark-caution)}.trigger.error{border-color:var(--surface-dark-danger);box-shadow:inset 0 0 0 var(--border-width-large) var(--surface-dark-danger)}.content{padding:var(--size-xlarge)}.buttons{padding:0 var(--size-xlarge) var(--size-xlarge);display:flex;justify-content:space-between}.buttons .today{margin-left:auto}\n"] }]
185
185
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { min: [{
@@ -180,7 +180,8 @@ export class DateRangeComponent extends InputLabelComponent {
180
180
  }
181
181
  getTrigger() {
182
182
  return (this.customTriggerButton?.nativeElement ??
183
- this.standardTriggerButton?.nativeElement);
183
+ this.standardTriggerButton?.nativeElement ??
184
+ null);
184
185
  }
185
186
  set alternativePresetList(v) {
186
187
  this.alternativePresetList$.next(v);
@@ -198,10 +199,10 @@ export class DateRangeComponent extends InputLabelComponent {
198
199
  }
199
200
  this.favoritePresetIds$.next([...ids]);
200
201
  }
201
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
202
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DateRangeComponent, selector: "riv-date-range", inputs: { showPresets: "showPresets", min: "min", max: "max", value: "value", placeholder: "placeholder", disabled: "disabled", alternativePresetList: "alternativePresetList" }, outputs: { valueChange: "valueChange" }, queries: [{ propertyName: "triggerTemplate", first: true, predicate: ["trigger"], descendants: true }], viewQueries: [{ propertyName: "customTriggerButton", first: true, predicate: ["customTriggerButton"], descendants: true, read: ElementRef }, { propertyName: "standardTriggerButton", first: true, predicate: ["standardTriggerButton"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"open$.next(true)\"\n [disabled]=\"disabled$ | async\"\n [attr.aria-disabled]=\"(disabled$ | async) ? 'true' : null\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ open: open$ | async }\"\n ></ng-container>\n </button>\n</ng-container>\n<ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n (click)=\"open$.next(true)\"\n [disabled]=\"disabled$ | async\"\n [attr.aria-disabled]=\"(disabled$ | async) ? 'true' : null\"\n type=\"button\"\n >\n <ng-container\n *ngIf=\"displayValue$ | async; else placeholderValue; let display\"\n >\n <span class=\"value\">{{ display }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder$ | async }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n</ng-template>\n\n<ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-inputValue\n [ngTemplateOutletContext]=\"{ $implicit: (distinctValue$ | async) }\"\n>\n <ng-container *ngIf=\"open$ | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-right',\n 'bottom-right',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open$.next(false); userSelectedDate$.next(inputValue)\"\n >\n <div class=\"content\" [class.include-preset]=\"showPresets\">\n <div *ngIf=\"showPresets\" class=\"presets\">\n <riv-simple-select\n [label]=\"'Date presets'\"\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Search' }\"\n [orderBy]=\"'source'\"\n [optionGroups]=\"\n (filteredPresetOptions$ | async) ?? [] | rivOptionGroup\n \"\n [selectedOption]=\"selectedPreset$ | async\"\n (selectedOptionChange)=\"userSelectedPreset$.next($event)\"\n >\n <ng-template #option let-node=\"node\">\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-isFavorite\n [ngTemplateOutletContext]=\"{\n $implicit: (favoritePresetIds$ | async)?.includes(node.id)\n }\"\n >\n <div class=\"preset\" [class.favorite]=\"isFavorite\">\n <div class=\"description\">\n <riv-highlight\n class=\"title\"\n [text]=\"node.title\"\n [indices]=\"node.titleHighlightIndices || []\"\n ></riv-highlight>\n <riv-highlight\n class=\"subtitle\"\n [text]=\"node.subtitle\"\n [indices]=\"node.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </div>\n <button\n (click)=\"\n setFavorite(node, !isFavorite); $event.stopPropagation()\n \"\n type=\"button\"\n >\n <riv-icon\n [name]=\"isFavorite ? 'HeartActive' : 'Heart'\"\n [size]=\"16\"\n [rivTooltip]=\"'Mark as favorite'\"\n ></riv-icon>\n </button>\n </div>\n </ng-template>\n </ng-template>\n </riv-simple-select>\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-favorites\n [ngTemplateOutletContext]=\"{ $implicit: favoritePresets$ | async }\"\n >\n <riv-input-label *ngIf=\"favorites.length\" [label]=\"'Favorites'\">\n <div class=\"shortcuts\">\n <button\n *ngFor=\"let favorite of favorites\"\n class=\"shortcut\"\n [class.active]=\"(selectedPreset$ | async)?.id === favorite.id\"\n (click)=\"userSelectedPreset$.next(favorite)\"\n type=\"button\"\n >\n <span class=\"title\">{{ favorite.title }}</span>\n <button\n (click)=\"setFavorite(favorite, false)\"\n [rivTooltip]=\"'Remove favorite'\"\n type=\"button\"\n >\n <riv-icon [name]=\"'HeartActive'\" [size]=\"16\"></riv-icon>\n </button>\n </button>\n </div>\n </riv-input-label>\n </ng-template>\n </div>\n\n <div class=\"calendars\">\n <riv-calendar\n class=\"left\"\n [activeYearMonth]=\"(leftActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userLeftActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(leftMin$ | async) || TODAY\"\n [selectableMax]=\"(leftMax$ | async) || TODAY\"\n [omitRange]=\"(leftOmitRange$ | async) || [TODAY, TODAY]\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n <riv-calendar\n class=\"right\"\n [activeYearMonth]=\"(rightActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userRightActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(rightMin$ | async) || TODAY\"\n [selectableMax]=\"(rightMax$ | async) || TODAY\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n </div>\n\n <footer class=\"buttons\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n (click)=\"userSelectedDate$.next(undefined)\"\n type=\"button\"\n >\n Clear\n </button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'primary'\"\n (click)=\"open$.next(false)\"\n type=\"button\"\n >\n Done\n </button>\n </footer>\n </div>\n </riv-callout>\n </ng-container>\n</ng-template>\n", styles: [".trigger{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);display:flex;gap:var(--size-small);background-color:var(--surface-light-0);cursor:pointer}.trigger:focus{outline:none;border:var(--border-width) solid var(--purp-60)}.trigger:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}.value{font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);color:var(--type-light-high-contrast);padding:var(--size-small);flex-grow:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:pre}.value.placeholder{color:var(--type-light-low-contrast)}.chevron{display:flex;justify-content:center;align-items:center;padding:var(--size-xsmall) calc(var(--base-grid-size) * 1.5)}.trigger.warning{border-color:var(--surface-dark-caution)}.trigger.error{border-color:var(--surface-dark-danger);box-shadow:inset 0 0 0 var(--border-width-large) var(--surface-dark-danger)}.content{display:inline-grid;grid-template-rows:1fr auto}.content.include-preset{grid-template-columns:calc(var(--base-grid-size) * 50) 1fr 1fr}.presets{grid-area:1 / 1 / 3 / 2;background-color:var(--surface-light-1);padding:var(--size-xlarge) var(--size-large);border-right:var(--border-width) solid var(--border-light);display:flex;flex-direction:column;gap:var(--size-medium)}.preset{display:flex;transition:background-color var(--short-transition)}.preset:hover{background-color:var(--surface-light-2)}.preset button{color:transparent;transition:color var(--short-transition);padding:var(--size-medium) var(--size-large) var(--size-medium) var(--size-small);cursor:pointer}.preset:hover button{color:var(--type-light-low-contrast)}.preset button:hover{color:var(--type-light-high-contrast)}.preset.favorite button{color:var(--type-light-link)}.preset .description{flex-grow:1;padding:var(--size-medium) var(--size-small) var(--size-medium) var(--size-medium)}.preset .title{display:block;font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-1)}.preset .subtitle{display:block;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-1);color:var(--type-light-low-contrast)}.shortcuts{display:flex;flex-direction:column;gap:var(--size-xsmall);overflow-y:auto}.shortcut{display:flex;align-items:center;padding:var(--size-small) var(--size-small) var(--size-small) var(--size-medium);gap:var(--size-small);border-radius:var(--border-radius-small);transition:background-color var(--short-transition);cursor:pointer}.shortcut:hover{background-color:var(--black-20)}.shortcut.active{background-color:var(--baloo-05)}.shortcut .title{flex-grow:1;text-align:left;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-2)}.shortcut button{color:transparent;transition:color var(--short-transition);cursor:pointer}.shortcut:hover button{color:var(--type-light-link)}.calendars{grid-column:2 / 4;display:grid;grid-template-columns:subgrid;grid-template-rows:subgrid;padding:var(--size-large)}.left{grid-area:1 / 1 / 2 / 2;padding-right:var(--size-large);border-right:var(--border-width) solid var(--border-light)}.right{padding-left:var(--size-large);grid-area:1 / 2 / 2 / 3}.buttons{grid-area:2 / 2 / 3 / 4;padding:var(--size-small);display:flex;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i3.CalendarComponent, selector: "riv-calendar", inputs: ["activeYearMonth", "displayMin", "displayMax", "selectableMin", "selectableMax", "omitRange", "selectedValue"], outputs: ["activeYearMonthChange", "dateSelect"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i6.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i7.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText", "errorMessage", "state"], outputs: ["labelAction"] }, { kind: "directive", type: i8.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i9.SimpleSelectComponent, selector: "riv-simple-select", inputs: ["optionGroups", "selectedOption", "size", "disabled", "locked", "filterabilityOptions", "orderBy", "placeholder", "maxHeight", "maxWidth", "minHeight", "minWidth", "dividers", "sortSelectedToTop", "grow", "preferredCalloutPosition", "allowedCalloutPositions"], outputs: ["selectedOptionChange"] }, { kind: "directive", type: i10.TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipAnchor", "rivTooltipCloseDelay", "rivTooltipOpenDelay", "rivTooltipGracePeriod"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.OptionGroupPipe, name: "rivOptionGroup" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
202
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
203
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DateRangeComponent, selector: "riv-date-range", inputs: { showPresets: "showPresets", min: "min", max: "max", value: "value", placeholder: "placeholder", disabled: "disabled", alternativePresetList: "alternativePresetList" }, outputs: { valueChange: "valueChange" }, queries: [{ propertyName: "triggerTemplate", first: true, predicate: ["trigger"], descendants: true }], viewQueries: [{ propertyName: "customTriggerButton", first: true, predicate: ["customTriggerButton"], descendants: true, read: ElementRef }, { propertyName: "standardTriggerButton", first: true, predicate: ["standardTriggerButton"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"open$.next(true)\"\n [disabled]=\"disabled$ | async\"\n [attr.aria-disabled]=\"(disabled$ | async) ? 'true' : null\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ open: open$ | async }\"\n ></ng-container>\n </button>\n</ng-container>\n<ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n (click)=\"open$.next(true)\"\n [disabled]=\"disabled$ | async\"\n [attr.aria-disabled]=\"(disabled$ | async) ? 'true' : null\"\n type=\"button\"\n >\n <ng-container\n *ngIf=\"displayValue$ | async; else placeholderValue; let display\"\n >\n <span class=\"value\">{{ display }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder$ | async }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n</ng-template>\n\n<ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-inputValue\n [ngTemplateOutletContext]=\"{ $implicit: (distinctValue$ | async) }\"\n>\n <ng-container *ngIf=\"open$ | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-right',\n 'bottom-right',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open$.next(false); userSelectedDate$.next(inputValue)\"\n >\n <div class=\"content\" [class.include-preset]=\"showPresets\">\n <div *ngIf=\"showPresets\" class=\"presets\">\n <riv-simple-select\n [label]=\"'Date presets'\"\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Search' }\"\n [orderBy]=\"'source'\"\n [optionGroups]=\"\n (filteredPresetOptions$ | async) ?? [] | rivOptionGroup\n \"\n [selectedOption]=\"selectedPreset$ | async\"\n (selectedOptionChange)=\"userSelectedPreset$.next($event)\"\n >\n <ng-template #option let-node=\"node\">\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-isFavorite\n [ngTemplateOutletContext]=\"{\n $implicit: (favoritePresetIds$ | async)?.includes(node.id)\n }\"\n >\n <div class=\"preset\" [class.favorite]=\"isFavorite\">\n <div class=\"description\">\n <riv-highlight\n class=\"title\"\n [text]=\"node.title\"\n [indices]=\"node.titleHighlightIndices || []\"\n ></riv-highlight>\n <riv-highlight\n class=\"subtitle\"\n [text]=\"node.subtitle\"\n [indices]=\"node.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </div>\n <button\n (click)=\"\n setFavorite(node, !isFavorite); $event.stopPropagation()\n \"\n type=\"button\"\n >\n <riv-icon\n [name]=\"isFavorite ? 'HeartActive' : 'Heart'\"\n [size]=\"16\"\n [rivTooltip]=\"'Mark as favorite'\"\n ></riv-icon>\n </button>\n </div>\n </ng-template>\n </ng-template>\n </riv-simple-select>\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-favorites\n [ngTemplateOutletContext]=\"{ $implicit: favoritePresets$ | async }\"\n >\n <riv-input-label *ngIf=\"favorites.length\" [label]=\"'Favorites'\">\n <div class=\"shortcuts\">\n <button\n *ngFor=\"let favorite of favorites\"\n class=\"shortcut\"\n [class.active]=\"(selectedPreset$ | async)?.id === favorite.id\"\n (click)=\"userSelectedPreset$.next(favorite)\"\n type=\"button\"\n >\n <span class=\"title\">{{ favorite.title }}</span>\n <button\n (click)=\"setFavorite(favorite, false)\"\n [rivTooltip]=\"'Remove favorite'\"\n type=\"button\"\n >\n <riv-icon [name]=\"'HeartActive'\" [size]=\"16\"></riv-icon>\n </button>\n </button>\n </div>\n </riv-input-label>\n </ng-template>\n </div>\n\n <div class=\"calendars\">\n <riv-calendar\n class=\"left\"\n [activeYearMonth]=\"(leftActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userLeftActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(leftMin$ | async) || TODAY\"\n [selectableMax]=\"(leftMax$ | async) || TODAY\"\n [omitRange]=\"(leftOmitRange$ | async) || [TODAY, TODAY]\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n <riv-calendar\n class=\"right\"\n [activeYearMonth]=\"(rightActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userRightActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(rightMin$ | async) || TODAY\"\n [selectableMax]=\"(rightMax$ | async) || TODAY\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n </div>\n\n <footer class=\"buttons\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n (click)=\"userSelectedDate$.next(undefined)\"\n type=\"button\"\n >\n Clear\n </button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'primary'\"\n (click)=\"open$.next(false)\"\n type=\"button\"\n >\n Done\n </button>\n </footer>\n </div>\n </riv-callout>\n </ng-container>\n</ng-template>\n", styles: [".trigger{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);display:flex;gap:var(--size-small);background-color:var(--surface-light-0);cursor:pointer}.trigger:focus{outline:none;border:var(--border-width) solid var(--purp-60)}.trigger:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}.value{font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);color:var(--type-light-high-contrast);padding:var(--size-small);flex-grow:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:pre}.value.placeholder{color:var(--type-light-low-contrast)}.chevron{display:flex;justify-content:center;align-items:center;padding:var(--size-xsmall) calc(var(--base-grid-size) * 1.5)}.trigger.warning{border-color:var(--surface-dark-caution)}.trigger.error{border-color:var(--surface-dark-danger);box-shadow:inset 0 0 0 var(--border-width-large) var(--surface-dark-danger)}.content{display:inline-grid;grid-template-rows:1fr auto}.content.include-preset{grid-template-columns:calc(var(--base-grid-size) * 50) 1fr 1fr}.presets{grid-area:1 / 1 / 3 / 2;background-color:var(--surface-light-1);padding:var(--size-xlarge) var(--size-large);border-right:var(--border-width) solid var(--border-light);display:flex;flex-direction:column;gap:var(--size-medium)}.preset{display:flex;transition:background-color var(--short-transition)}.preset:hover{background-color:var(--surface-light-2)}.preset button{color:transparent;transition:color var(--short-transition);padding:var(--size-medium) var(--size-large) var(--size-medium) var(--size-small);cursor:pointer}.preset:hover button{color:var(--type-light-low-contrast)}.preset button:hover{color:var(--type-light-high-contrast)}.preset.favorite button{color:var(--type-light-link)}.preset .description{flex-grow:1;padding:var(--size-medium) var(--size-small) var(--size-medium) var(--size-medium)}.preset .title{display:block;font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-1)}.preset .subtitle{display:block;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-1);color:var(--type-light-low-contrast)}.shortcuts{display:flex;flex-direction:column;gap:var(--size-xsmall);overflow-y:auto}.shortcut{display:flex;align-items:center;padding:var(--size-small) var(--size-small) var(--size-small) var(--size-medium);gap:var(--size-small);border-radius:var(--border-radius-small);transition:background-color var(--short-transition);cursor:pointer}.shortcut:hover{background-color:var(--black-20)}.shortcut.active{background-color:var(--baloo-05)}.shortcut .title{flex-grow:1;text-align:left;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-2)}.shortcut button{color:transparent;transition:color var(--short-transition);cursor:pointer}.shortcut:hover button{color:var(--type-light-link)}.calendars{grid-column:2 / 4;display:grid;grid-template-columns:subgrid;grid-template-rows:subgrid;padding:var(--size-large)}.left{grid-area:1 / 1 / 2 / 2;padding-right:var(--size-large);border-right:var(--border-width) solid var(--border-light)}.right{padding-left:var(--size-large);grid-area:1 / 2 / 2 / 3}.buttons{grid-area:2 / 2 / 3 / 4;padding:var(--size-small);display:flex;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i3.CalendarComponent, selector: "riv-calendar", inputs: ["activeYearMonth", "displayMin", "displayMax", "selectableMin", "selectableMax", "omitRange", "selectedValue"], outputs: ["activeYearMonthChange", "dateSelect"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i6.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }, { kind: "component", type: i7.InputLabelComponent, selector: "riv-input-label", inputs: ["label", "help", "required", "labelActionText", "errorMessage", "state"], outputs: ["labelAction"] }, { kind: "directive", type: i8.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i9.SimpleSelectComponent, selector: "riv-simple-select", inputs: ["optionGroups", "selectedOption", "size", "disabled", "locked", "filterabilityOptions", "orderBy", "placeholder", "maxHeight", "maxWidth", "minHeight", "minWidth", "dividers", "sortSelectedToTop", "grow", "preferredCalloutPosition", "allowedCalloutPositions"], outputs: ["selectedOptionChange"] }, { kind: "directive", type: i10.TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipAnchor", "rivTooltipCloseDelay", "rivTooltipOpenDelay", "rivTooltipGracePeriod"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.OptionGroupPipe, name: "rivOptionGroup" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
203
204
  }
204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateRangeComponent, decorators: [{
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateRangeComponent, decorators: [{
205
206
  type: Component,
206
207
  args: [{ selector: 'riv-date-range', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"open$.next(true)\"\n [disabled]=\"disabled$ | async\"\n [attr.aria-disabled]=\"(disabled$ | async) ? 'true' : null\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ open: open$ | async }\"\n ></ng-container>\n </button>\n</ng-container>\n<ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [state]=\"state\"\n [errorMessage]=\"errorMessage\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n (click)=\"open$.next(true)\"\n [disabled]=\"disabled$ | async\"\n [attr.aria-disabled]=\"(disabled$ | async) ? 'true' : null\"\n type=\"button\"\n >\n <ng-container\n *ngIf=\"displayValue$ | async; else placeholderValue; let display\"\n >\n <span class=\"value\">{{ display }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder$ | async }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n</ng-template>\n\n<ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-inputValue\n [ngTemplateOutletContext]=\"{ $implicit: (distinctValue$ | async) }\"\n>\n <ng-container *ngIf=\"open$ | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-right',\n 'bottom-right',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open$.next(false); userSelectedDate$.next(inputValue)\"\n >\n <div class=\"content\" [class.include-preset]=\"showPresets\">\n <div *ngIf=\"showPresets\" class=\"presets\">\n <riv-simple-select\n [label]=\"'Date presets'\"\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Search' }\"\n [orderBy]=\"'source'\"\n [optionGroups]=\"\n (filteredPresetOptions$ | async) ?? [] | rivOptionGroup\n \"\n [selectedOption]=\"selectedPreset$ | async\"\n (selectedOptionChange)=\"userSelectedPreset$.next($event)\"\n >\n <ng-template #option let-node=\"node\">\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-isFavorite\n [ngTemplateOutletContext]=\"{\n $implicit: (favoritePresetIds$ | async)?.includes(node.id)\n }\"\n >\n <div class=\"preset\" [class.favorite]=\"isFavorite\">\n <div class=\"description\">\n <riv-highlight\n class=\"title\"\n [text]=\"node.title\"\n [indices]=\"node.titleHighlightIndices || []\"\n ></riv-highlight>\n <riv-highlight\n class=\"subtitle\"\n [text]=\"node.subtitle\"\n [indices]=\"node.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </div>\n <button\n (click)=\"\n setFavorite(node, !isFavorite); $event.stopPropagation()\n \"\n type=\"button\"\n >\n <riv-icon\n [name]=\"isFavorite ? 'HeartActive' : 'Heart'\"\n [size]=\"16\"\n [rivTooltip]=\"'Mark as favorite'\"\n ></riv-icon>\n </button>\n </div>\n </ng-template>\n </ng-template>\n </riv-simple-select>\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-favorites\n [ngTemplateOutletContext]=\"{ $implicit: favoritePresets$ | async }\"\n >\n <riv-input-label *ngIf=\"favorites.length\" [label]=\"'Favorites'\">\n <div class=\"shortcuts\">\n <button\n *ngFor=\"let favorite of favorites\"\n class=\"shortcut\"\n [class.active]=\"(selectedPreset$ | async)?.id === favorite.id\"\n (click)=\"userSelectedPreset$.next(favorite)\"\n type=\"button\"\n >\n <span class=\"title\">{{ favorite.title }}</span>\n <button\n (click)=\"setFavorite(favorite, false)\"\n [rivTooltip]=\"'Remove favorite'\"\n type=\"button\"\n >\n <riv-icon [name]=\"'HeartActive'\" [size]=\"16\"></riv-icon>\n </button>\n </button>\n </div>\n </riv-input-label>\n </ng-template>\n </div>\n\n <div class=\"calendars\">\n <riv-calendar\n class=\"left\"\n [activeYearMonth]=\"(leftActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userLeftActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(leftMin$ | async) || TODAY\"\n [selectableMax]=\"(leftMax$ | async) || TODAY\"\n [omitRange]=\"(leftOmitRange$ | async) || [TODAY, TODAY]\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n <riv-calendar\n class=\"right\"\n [activeYearMonth]=\"(rightActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userRightActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(rightMin$ | async) || TODAY\"\n [selectableMax]=\"(rightMax$ | async) || TODAY\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n </div>\n\n <footer class=\"buttons\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n (click)=\"userSelectedDate$.next(undefined)\"\n type=\"button\"\n >\n Clear\n </button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'primary'\"\n (click)=\"open$.next(false)\"\n type=\"button\"\n >\n Done\n </button>\n </footer>\n </div>\n </riv-callout>\n </ng-container>\n</ng-template>\n", styles: [".trigger{width:100%;border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-small);display:flex;gap:var(--size-small);background-color:var(--surface-light-0);cursor:pointer}.trigger:focus{outline:none;border:var(--border-width) solid var(--purp-60)}.trigger:disabled{color:var(--type-light-disabled);background-color:var(--surface-light-1)}.value{font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);color:var(--type-light-high-contrast);padding:var(--size-small);flex-grow:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:pre}.value.placeholder{color:var(--type-light-low-contrast)}.chevron{display:flex;justify-content:center;align-items:center;padding:var(--size-xsmall) calc(var(--base-grid-size) * 1.5)}.trigger.warning{border-color:var(--surface-dark-caution)}.trigger.error{border-color:var(--surface-dark-danger);box-shadow:inset 0 0 0 var(--border-width-large) var(--surface-dark-danger)}.content{display:inline-grid;grid-template-rows:1fr auto}.content.include-preset{grid-template-columns:calc(var(--base-grid-size) * 50) 1fr 1fr}.presets{grid-area:1 / 1 / 3 / 2;background-color:var(--surface-light-1);padding:var(--size-xlarge) var(--size-large);border-right:var(--border-width) solid var(--border-light);display:flex;flex-direction:column;gap:var(--size-medium)}.preset{display:flex;transition:background-color var(--short-transition)}.preset:hover{background-color:var(--surface-light-2)}.preset button{color:transparent;transition:color var(--short-transition);padding:var(--size-medium) var(--size-large) var(--size-medium) var(--size-small);cursor:pointer}.preset:hover button{color:var(--type-light-low-contrast)}.preset button:hover{color:var(--type-light-high-contrast)}.preset.favorite button{color:var(--type-light-link)}.preset .description{flex-grow:1;padding:var(--size-medium) var(--size-small) var(--size-medium) var(--size-medium)}.preset .title{display:block;font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-1)}.preset .subtitle{display:block;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-1);color:var(--type-light-low-contrast)}.shortcuts{display:flex;flex-direction:column;gap:var(--size-xsmall);overflow-y:auto}.shortcut{display:flex;align-items:center;padding:var(--size-small) var(--size-small) var(--size-small) var(--size-medium);gap:var(--size-small);border-radius:var(--border-radius-small);transition:background-color var(--short-transition);cursor:pointer}.shortcut:hover{background-color:var(--black-20)}.shortcut.active{background-color:var(--baloo-05)}.shortcut .title{flex-grow:1;text-align:left;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-2)}.shortcut button{color:transparent;transition:color var(--short-transition);cursor:pointer}.shortcut:hover button{color:var(--type-light-link)}.calendars{grid-column:2 / 4;display:grid;grid-template-columns:subgrid;grid-template-rows:subgrid;padding:var(--size-large)}.left{grid-area:1 / 1 / 2 / 2;padding-right:var(--size-large);border-right:var(--border-width) solid var(--border-light)}.right{padding-left:var(--size-large);grid-area:1 / 2 / 2 / 3}.buttons{grid-area:2 / 2 / 3 / 4;padding:var(--size-small);display:flex;justify-content:space-between}\n"] }]
207
208
  }], propDecorators: { showPresets: [{
@@ -474,4 +475,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
474
475
  },
475
476
  ];
476
477
  })(DateRangeComponent || (DateRangeComponent = {}));
477
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0UsT0FBTyxFQUNMLGVBQWUsRUFFZixPQUFPLEVBQ1AsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBQzNFLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUM7QUFFeEMsNkVBQTZFO0FBQzdFLDJCQUEyQjtBQUMzQixtR0FBbUc7QUFPbkcsTUFBTSxPQUFPLGtCQUFtQixTQUFR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QzNCLEtBQUssRUFBRSxjQUFjO1lBQ3JCLFFBQVEsRUFBRSxtQ0FBbUM7WUFDN0MsS0FBSyxFQUFFO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pDO1NBQ0Y7UUFDRDtZQUNFLEVBQUUsRUFBRSxVQUFVLENBQUMsYUFBYTtZQUM1QixLQUFLLEVBQUUsZUFBZTtZQUN0QixRQUFRLEVBQUUsb0NBQW9DO1lBQzlDLEtBQUssRUFBRTtnQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN6QztTQUNGO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsVUFBVSxDQUFDLGFBQWE7WUFDNUIsS0FBSyxFQUFFLGVBQWU7WUFDdEIsUUFBUSxFQUFFLG9DQUFvQztZQUM5QyxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekM7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDLEVBM1BnQixrQkFBa0IsS0FBbEIsa0JBQWtCLFFBMlBsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0aW1lRGF5LCB0aW1lTW9udGgsIHRpbWVTdW5kYXksIHRpbWVXZWVrLCB0aW1lWWVhciB9IGZyb20gJ2QzLXRpbWUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIG1lcmdlLFxuICBzY2FuLFxuICBzaGFyZVJlcGxheSxcbiAgc2tpcFVudGlsLFxuICBzdGFydFdpdGgsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9mb3JtYXQvcGlwZXMvZGF0ZS5waXBlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZSB9IGZyb20gJy4uLy4uL3V0aWwvbG9jYWwtc3RvcmFnZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4uL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtbGFiZWwvaW5wdXQtbGFiZWwuY29tcG9uZW50JztcbmNvbnN0IHRpbWVRdWFydGVyID0gdGltZU1vbnRoLmV2ZXJ5KDMpITtcblxuLy8gVE9ETzogb25jZSB3ZSB1cGdyYWRlIHRvIEFuZ3VsYXIgMTYsIHRoaXMgY29tcG9uZW50IGNhbiBiZSBjbGVhbmVkIHVwIHdpdGhcbi8vIHNpZ25hbHMgaW5zdGVhZCBvZiBSeEpTLlxuLy8gaHR0cHM6Ly93d3cubm90aW9uLnNvL3JpdmV0L1Jlc29sdmUtVE9ET3MtYWZ0ZXItQW5ndWxhci11cGdyYWRlLTFmMjY2N2ViMmEzMTgwYjc5ZjZhZDkyYTdlNTc2ZjA4XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtZGF0ZS1yYW5nZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VDb21wb25lbnQgZXh0ZW5kcyBJbnB1dExhYmVsQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgVE9EQVkgPSBuZXcgRGF0ZSgpO1xuICByZWFkb25seSBTVE9SQUdFX0tFWSA9ICdkYXRlLXJhbmdlLmRlZmF1bHQnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd1ByZXNldHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgQElucHV0KClcbiAgc2V0IHNob3dQcmVzZXRzKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dQcmVzZXRzJC5uZXh0KHYpO1xuICB9XG4gIGdldCBzaG93UHJlc2V0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93UHJlc2V0cyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IG1pbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KENhbGVuZGFyQ29tcG9uZW50LmRlZmF1bHRNaW4pO1xuICBASW5wdXQoKVxuICBzZXQgbWluKHY6IERhdGUpIHtcbiAgICB0aGlzLm1pbiQubmV4dCh2KTtcbiAgfVxuICBnZXQgbWluKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLm1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IG1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KENhbGVuZGFyQ29tcG9uZW50LmRlZmF1bHRNYXgpO1xuICBASW5wdXQoKVxuICBzZXQgbWF4KHY6IERhdGUpIHtcbiAgICB0aGlzLm1heCQubmV4dCh2KTtcbiAgfVxuICBnZXQgbWF4KCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLm1heCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8W0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodjogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy52YWx1ZSQubmV4dCh2KTtcbiAgfVxuICBnZXQgdmFsdWUoKTogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGRpc3RpbmN0VmFsdWUkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgIChwcmV2aW91cywgY3VycmVudCkgPT5cbiAgICAgICAgcHJldmlvdXM/LlswXS52YWx1ZU9mKCkgPT09IGN1cnJlbnQ/LlswXS52YWx1ZU9mKCkgJiZcbiAgICAgICAgcHJldmlvdXM/LlsxXS52YWx1ZU9mKCkgPT09IGN1cnJlbnQ/LlsxXS52YWx1ZU9mKCksXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignU2VsZWN0IGRhdGUgcmFuZ2UnKTtcbiAgQElucHV0KClcbiAgc2V0IHBsYWNlaG9sZGVyKHY6IHN0cmluZykge1xuICAgIHRoaXMucGxhY2Vob2xkZXIkLm5leHQodik7XG4gIH1cbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXIkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBkaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KHYpO1xuICB9XG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoJ3RyaWdnZXInKVxuICB0cmlnZ2VyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IG9wZW46IGJvb2xlYW4gfT47XG5cbiAgQFZpZXdDaGlsZCgnY3VzdG9tVHJpZ2dlckJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBjdXN0b21UcmlnZ2VyQnV0dG9uPzogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzdGFuZGFyZFRyaWdnZXJCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgc3RhbmRhcmRUcmlnZ2VyQnV0dG9uPzogRWxlbWVudFJlZjtcblxuICBnZXRUcmlnZ2VyKCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jdXN0b21UcmlnZ2VyQnV0dG9uPy5uYXRpdmVFbGVtZW50ID8/XG4gICAgICB0aGlzLnN0YW5kYXJkVHJpZ2dlckJ1dHRvbj8ubmF0aXZlRWxlbWVudFxuICAgICk7XG4gIH1cblxuICByZWFkb25seSBhbHRlcm5hdGl2ZVByZXNldExpc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0VHlwZVtdXG4gID4oW10pO1xuICBASW5wdXQoKVxuICBzZXQgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0KHY6IERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRUeXBlW10pIHtcbiAgICB0aGlzLmFsdGVybmF0aXZlUHJlc2V0TGlzdCQubmV4dCh2KTtcbiAgfVxuICBnZXQgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0KCk6IERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRUeXBlW10ge1xuICAgIHJldHVybiB0aGlzLmFsdGVybmF0aXZlUHJlc2V0TGlzdCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IG9wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgdXNlclNlbGVjdGVkUHJlc2V0JCA9XG4gICAgbmV3IFN1YmplY3Q8RGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldCB8IG51bGw+KCk7XG5cbiAgcmVhZG9ubHkgdXNlclNlbGVjdGVkRGF0ZSQgPSBuZXcgU3ViamVjdDxEYXRlIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBzZWxlY3RlZFZhbHVlJDogT2JzZXJ2YWJsZTxEYXRlIHwgW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkPiA9IG1lcmdlKFxuICAgIHRoaXMuZGlzdGluY3RWYWx1ZSQsXG4gICAgdGhpcy51c2VyU2VsZWN0ZWREYXRlJC5waXBlKFxuICAgICAgc2NhbihcbiAgICAgICAgKHByZXZpb3VzOiBEYXRlIHwgW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkLCBkYXRlOiBEYXRlIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgaWYgKHByZXZpb3VzIGluc3RhbmNlb2YgRGF0ZSAmJiBkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgaWYgKGRhdGUudmFsdWVPZigpID49IHByZXZpb3VzLnZhbHVlT2YoKSkge1xuICAgICAgICAgICAgICBjb25zdCBwYWlyOiBbRGF0ZSwgRGF0ZV0gPSBbcHJldmlvdXMsIGRhdGVdO1xuICAgICAgICAgICAgICByZXR1cm4gcGFpcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICAgIH0sXG4gICAgICApLFxuICAgICksXG4gICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLnBpcGUoXG4gICAgICBmaWx0ZXIoKHByZXNldCk6IHByZXNldCBpcyBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0ID0+IHByZXNldCAhPT0gbnVsbCksXG4gICAgICBtYXAocHJlc2V0ID0+IHByZXNldC5kYXRlcyksXG4gICAgKSxcbiAgKS5waXBlKHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSkpO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkUHJlc2V0T3B0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLm1pbiQsXG4gICAgdGhpcy5tYXgkLFxuICAgIHRoaXMuYWx0ZXJuYXRpdmVQcmVzZXRMaXN0JCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFttaW4sIG1heCwgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0XSkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uc0ZpbHRlcmVkT25NaW5NYXggPSBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0cy5maWx0ZXIoXG4gICAgICAgIHAgPT5cbiAgICAgICAgICBwLmRhdGVzWzBdLnZhbHVlT2YoKSA+PSBtaW4udmFsdWVPZigpICYmXG4gICAgICAgICAgcC5kYXRlc1sxXS52YWx1ZU9mKCkgPD0gbWF4LnZhbHVlT2YoKSxcbiAgICAgICk7XG4gICAgICBpZiAoYWx0ZXJuYXRpdmVQcmVzZXRMaXN0Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zRmlsdGVyZWRPbk1pbk1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNGaWx0ZXJlZE9uQWx0ZXJuYXRpdmVQcmVzZXRMaXN0ID1cbiAgICAgICAgICBvcHRpb25zRmlsdGVyZWRPbk1pbk1heC5maWx0ZXIocCA9PlxuICAgICAgICAgICAgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0LmluY2x1ZGVzKHAuaWQpLFxuICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiBvcHRpb25zRmlsdGVyZWRPbkFsdGVybmF0aXZlUHJlc2V0TGlzdDtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkUHJlc2V0JDogT2JzZXJ2YWJsZTxEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0IHwgbnVsbD4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlJCxcbiAgICAgIHRoaXMudXNlclNlbGVjdGVkUHJlc2V0JC5waXBlKHN0YXJ0V2l0aChudWxsKSksXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3NlbGVjdGVkVmFsdWUsIHVzZXJTZWxlY3RlZFByZXNldF0pID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkVmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0cy5maWx0ZXIoXG4gICAgICAgICAgICBwcmVzZXQgPT5cbiAgICAgICAgICAgICAgcHJlc2V0LmRhdGVzWzBdLnZhbHVlT2YoKSA9PT0gc2VsZWN0ZWRWYWx1ZVswXS52YWx1ZU9mKCkgJiZcbiAgICAgICAgICAgICAgcHJlc2V0LmRhdGVzWzFdLnZhbHVlT2YoKSA9PT0gc2VsZWN0ZWRWYWx1ZVsxXS52YWx1ZU9mKCksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIFNvbWUgZGF0ZSByYW5nZXMgbWF0Y2ggbXVsdGlwbGUgcHJlc2V0cywgZS5nLiBvbiBKYW4gMTl0aCwgYVxuICAgICAgICAgICAgLy8gc2VsZWN0ZWQgZGF0ZSByYW5nZSBvZiBKYW4gMS0xOSB3b3VsZCBjb3JyZXNwb25kIHRvIFwidGhpcyBtb250aFxuICAgICAgICAgICAgLy8gc28gZmFyLFwiIFwidGhpcyBxdWFydGVyIHNvIGZhcixcIiBhbmQgXCJ0aGlzIHllYXIgc28gZmFyLlwiIFdlJ2xsXG4gICAgICAgICAgICAvLyB1c2UgdGhlIHVzZXIncyBtb3N0IHJlY2VudCBtYW51YWwgc2VsZWN0aW9uIGFzIGEgdGllIGJyZWFrZXJcbiAgICAgICAgICAgIC8vIHdoZXJlIHBvc3NpYmxlLlxuICAgICAgICAgICAgY29uc3QgbW9zdFJlY2VudCA9IG9wdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgb3B0aW9uID0+IG9wdGlvbi5pZCA9PT0gdXNlclNlbGVjdGVkUHJlc2V0Py5pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobW9zdFJlY2VudCkgcmV0dXJuIG1vc3RSZWNlbnQ7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uc1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KSxcbiAgICApO1xuXG4gIHJlYWRvbmx5IGZhdm9yaXRlUHJlc2V0SWRzJCA9IG5ldyBMb2NhbFN0b3JhZ2U8c3RyaW5nW10+KFxuICAgIHRoaXMuU1RPUkFHRV9LRVksXG4gICAgW10sXG4gICk7XG5cbiAgc2V0RmF2b3JpdGUocHJlc2V0OiBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0LCBmYXZvcml0ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IGlkcyA9IG5ldyBTZXQodGhpcy5mYXZvcml0ZVByZXNldElkcyQuZ2V0VmFsdWUoKSk7XG4gICAgaWYgKGZhdm9yaXRlKSB7XG4gICAgICBpZHMuYWRkKHByZXNldC5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkcy5kZWxldGUocHJlc2V0LmlkKTtcbiAgICB9XG4gICAgdGhpcy5mYXZvcml0ZVByZXNldElkcyQubmV4dChbLi4uaWRzXSk7XG4gIH1cblxuICByZWFkb25seSBmYXZvcml0ZVByZXNldHMkOiBPYnNlcnZhYmxlPERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRbXT4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mYXZvcml0ZVByZXNldElkcyQsXG4gICAgICB0aGlzLmZpbHRlcmVkUHJlc2V0T3B0aW9ucyQsXG4gICAgICB0aGlzLmFsdGVybmF0aXZlUHJlc2V0TGlzdCQsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2lkcywgcHJlc2V0cywgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0XSkgPT4ge1xuICAgICAgICBjb25zdCBmYXZvcml0ZVByZXNldHMgPSBpZHNcbiAgICAgICAgICAubWFwKGlkID0+IHByZXNldHMuZmluZChwcmVzZXQgPT4gcHJlc2V0LmlkID09PSBpZCkpXG4gICAgICAgICAgLmZpbHRlcigocCk6IHAgaXMgRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldCA9PiBwICE9PSB1bmRlZmluZWQpO1xuXG4gICAgICAgIGlmIChhbHRlcm5hdGl2ZVByZXNldExpc3QubGVuZ3RoID09IDApIHtcbiAgICAgICAgICByZXR1cm4gZmF2b3JpdGVQcmVzZXRzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGZhdm9yaXRlc0ZpbHRlcmVkT25BbHRlcm5hdGl2ZVByZXNldExpc3QgPVxuICAgICAgICAgICAgZmF2b3JpdGVQcmVzZXRzLmZpbHRlcihwID0+XG4gICAgICAgICAgICAgIGFsdGVybmF0aXZlUHJlc2V0TGlzdC5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICA8RGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldFR5cGU+cC5pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGZhdm9yaXRlc0ZpbHRlcmVkT25BbHRlcm5hdGl2ZVByZXNldExpc3Q7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgICApO1xuXG4gIHJlYWRvbmx5IHVzZXJMZWZ0QWN0aXZlWWVhck1vbnRoJCA9IG5ldyBTdWJqZWN0PERhdGU+KCk7XG4gIHJlYWRvbmx5IHVzZXJSaWdodEFjdGl2ZVllYXJNb250aCQgPSBuZXcgU3ViamVjdDxEYXRlPigpO1xuXG4gIHJlYWRvbmx5IGxlZnRNaW4kID0gdGhpcy5taW4kLnBpcGUoXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcbiAgcmVhZG9ubHkgbGVmdE1heCQgPSB0aGlzLm1heCQucGlwZShcbiAgICBtYXAobWF4ID0+IHRpbWVEYXkub2Zmc2V0KHRpbWVNb250aC5mbG9vcihtYXgpLCAtMSkpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG4gIHJlYWRvbmx5IHJpZ2h0TWF4JCA9IHRoaXMubWF4JC5waXBlKFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbGVmdEFjdGl2ZVllYXJNb250aCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmxlZnRNYXgkLFxuICAgIG1lcmdlKFxuICAgICAgdGhpcy51c2VyTGVmdEFjdGl2ZVllYXJNb250aCQucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRpbWVNb250aC5mbG9vcih0aGlzLlRPREFZKSksXG4gICAgICApLFxuICAgICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLnBpcGUoXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICAocHJlc2V0KTogcHJlc2V0IGlzIERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXQgPT4gcHJlc2V0ICE9PSBudWxsLFxuICAgICAgICApLFxuICAgICAgICBtYXAocHJlc2V0ID0+IHRpbWVNb250aC5mbG9vcihwcmVzZXQuZGF0ZXNbMF0pKSxcbiAgICAgICksXG4gICAgICB0aGlzLmRpc3RpbmN0VmFsdWUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigodik6IHYgaXMgW0RhdGUsIERhdGVdID0+IHYgIT09IHVuZGVmaW5lZCksXG4gICAgICAgIG1hcCh2ID0+IHRpbWVNb250aC5mbG9vcih2WzBdKSksXG4gICAgICApLFxuICAgICksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbbGVmdE1heCwgbGVmdF0pID0+IHtcbiAgICAgIGlmIChsZWZ0LnZhbHVlT2YoKSA+PSBsZWZ0TWF4LnZhbHVlT2YoKSkgcmV0dXJuIHRpbWVNb250aC5mbG9vcihsZWZ0TWF4KTtcbiAgICAgIGVsc2UgcmV0dXJuIGxlZnQ7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSByaWdodEFjdGl2ZVllYXJNb250aCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmxlZnRBY3RpdmVZZWFyTW9udGgkLFxuICAgIG1lcmdlKFxuICAgICAgdGhpcy51c2VyUmlnaHRBY3RpdmVZZWFyTW9udGgkLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aW1lTW9udGguY2VpbCh0aGlzLlRPREFZKSksXG4gICAgICApLFxuICAgICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLnBpcGUoXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICAocHJlc2V0KTogcHJlc2V0IGlzIERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXQgPT4gcHJlc2V0ICE9PSBudWxsLFxuICAgICAgICApLFxuICAgICAgICBtYXAocHJlc2V0ID0+IHRpbWVNb250aC5mbG9vcihwcmVzZXQuZGF0ZXNbMV0pKSxcbiAgICAgICksXG4gICAgICB0aGlzLmRpc3RpbmN0VmFsdWUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigodik6IHYgaXMgW0RhdGUsIERhdGVdID0+IHYgIT09IHVuZGVmaW5lZCksXG4gICAgICAgIG1hcCh2ID0+IHRpbWVNb250aC5mbG9vcih2WzFdKSksXG4gICAgICApLFxuICAgICksXG4gICAgdGhpcy5yaWdodE1heCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbbGVmdCwgdXNlclJpZ2h0LCByaWdodE1heCRdKSA9PiB7XG4gICAgICBpZiAobGVmdC52YWx1ZU9mKCkgPj0gdXNlclJpZ2h0LnZhbHVlT2YoKSlcbiAgICAgICAgcmV0dXJuIHRpbWVNb250aC5mbG9vcih0aW1lTW9udGgub2Zmc2V0KGxlZnQsIDEpKTtcbiAgICAgIGVsc2UgaWYgKHVzZXJSaWdodC52YWx1ZU9mKCkgPj0gcmlnaHRNYXgkLnZhbHVlT2YoKSlcbiAgICAgICAgcmV0dXJuIHRpbWVNb250aC5mbG9vcihyaWdodE1heCQpO1xuICAgICAgZWxzZSByZXR1cm4gdXNlclJpZ2h0O1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgcmlnaHRNaW4kID0gdGhpcy5sZWZ0QWN0aXZlWWVhck1vbnRoJC5waXBlKFxuICAgIG1hcChsZWZ0ID0+IHRpbWVNb250aC5mbG9vcih0aW1lTW9udGgub2Zmc2V0KGxlZnQsIDEpKSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBsZWZ0T21pdFJhbmdlJDogT2JzZXJ2YWJsZTxbRGF0ZSwgRGF0ZV0+ID1cbiAgICB0aGlzLnJpZ2h0QWN0aXZlWWVhck1vbnRoJC5waXBlKFxuICAgICAgbWFwPERhdGUsIFtEYXRlLCBEYXRlXT4ocmlnaHRBY3RpdmVZZWFyTW9udGggPT4ge1xuICAgICAgICBjb25zdCBmaXJzdCA9IHRpbWVNb250aC5mbG9vcihyaWdodEFjdGl2ZVllYXJNb250aCk7XG4gICAgICAgIGNvbnN0IGxhc3QgPSB0aW1lRGF5Lm9mZnNldChcbiAgICAgICAgICB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldChyaWdodEFjdGl2ZVllYXJNb250aCwgMSkpLFxuICAgICAgICAgIC0xLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gW2ZpcnN0LCBsYXN0XTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgICApO1xuXG4gIHJlYWRvbmx5IHVzZXJJbnRlcmFjdGVkJCA9IG1lcmdlKFxuICAgIHRoaXMudXNlclNlbGVjdGVkRGF0ZSQsXG4gICAgdGhpcy51c2VyU2VsZWN0ZWRQcmVzZXQkLFxuICApO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSB2YWx1ZUNoYW5nZTogT2JzZXJ2YWJsZTxbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQ+ID1cbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLnBpcGUoXG4gICAgICBza2lwVW50aWwoXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgIHRoaXMudXNlckludGVyYWN0ZWQkLFxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQucGlwZShmaWx0ZXIodiA9PiB2ICE9PSB1bmRlZmluZWQpKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBmaWx0ZXIoKHYpOiB2IGlzIFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCA9PiAhKHYgaW5zdGFuY2VvZiBEYXRlKSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgKHByZXZpb3VzLCBjdXJyZW50KSA9PlxuICAgICAgICAgIHByZXZpb3VzPy5bMF0udmFsdWVPZigpID09PSBjdXJyZW50Py5bMF0udmFsdWVPZigpICYmXG4gICAgICAgICAgcHJldmlvdXM/LlsxXS52YWx1ZU9mKCkgPT09IGN1cnJlbnQ/LlsxXS52YWx1ZU9mKCksXG4gICAgICApLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgICApO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZSQ6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPiA9XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5waXBlKFxuICAgICAgbWFwKHYgPT4ge1xuICAgICAgICBpZiAodikge1xuICAgICAgICAgIHJldHVybiB2Lm1hcChkYXRlID0+IG5ldyBEYXRlUGlwZSgpLnRyYW5zZm9ybShkYXRlKSkuam9pbignIOKAlCAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICAgICk7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgRGF0ZVJhbmdlQ29tcG9uZW50IHtcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuXG4gIGV4cG9ydCBlbnVtIFByZXNldFR5cGUge1xuICAgIFRPREFZID0gJ3RvZGF5JyxcbiAgICBZRVNURVJEQVkgPSAneWVzdGVyZGF5JyxcbiAgICBUT01PUlJPVyA9ICd0b21vcnJvdycsXG4gICAgVEhJU19XRUVLID0gJ3RoaXNfd2VlaycsXG4gICAgVEhJU19XRUVLX1NPX0ZBUiA9ICd0aGlzX3dlZWtfc29fZmFyJyxcbiAgICBMQVNUX1dFRUsgPSAnbGFzdF93ZWVrJyxcbiAgICBORVhUX1dFRUsgPSAnbmV4dF93ZWVrJyxcbiAgICBUSElTX01PTlRIID0gJ3RoaXNfbW9udGgnLFxuICAgIFRISVNfTU9OVEhfU09fRkFSID0gJ3RoaXNfbW9udGhfc29fZmFyJyxcbiAgICBMQVNUX01PTlRIID0gJ2xhc3RfbW9udGgnLFxuICAgIE5FWFRfTU9OVEggPSAnbmV4dF9tb250aCcsXG4gICAgVEhJU19RVUFSVEVSID0gJ3RoaXNfcXVhcnRlcicsXG4gICAgVEhJU19RVUFSVEVSX1NPX0ZBUiA9ICd0aGlzX3F1YXJ0ZXJfc29fZmFyJyxcbiAgICBMQVNUX1FVQVJURVIgPSAnbGFzdF9xdWFydGVyJyxcbiAgICBORVhUX1FVQVJURVIgPSAnbmV4dF9xdWFydGVyJyxcbiAgICBUSElTX1lFQVIgPSAndGhpc195ZWFyJyxcbiAgICBUSElTX1lFQVJfU09fRkFSID0gJ3RoaXNfeWVhcl9zb19mYXInLFxuICAgIExBU1RfWUVBUiA9ICdsYXN0X3llYXInLFxuICAgIE5FWFRfWUVBUiA9ICduZXh0X3llYXInLFxuICAgIExBU1RfN19EQVlTID0gJ2xhc3RfN19kYXlzJyxcbiAgICBMQVNUXzE0X0RBWVMgPSAnbGFzdF8xNF9kYXlzJyxcbiAgICBMQVNUXzMwX0RBWVMgPSAnbGFzdF8zMF9kYXlzJyxcbiAgICBMQVNUXzYwX0RBWVMgPSAnbGFzdF82MF9kYXlzJyxcbiAgICBMQVNUXzkwX0RBWVMgPSAnbGFzdF85MF9kYXlzJyxcbiAgICBMQVNUXzE4MF9EQVlTID0gJ2xhc3RfMTgwX2RheXMnLFxuICAgIExBU1RfMzY1X0RBWVMgPSAnbGFzdF8zNjVfZGF5cycsXG4gIH1cblxuICBleHBvcnQgdHlwZSBQcmVzZXQgPSB7XG4gICAgaWQ6IFByZXNldFR5cGU7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBzdWJ0aXRsZTogc3RyaW5nO1xuICAgIGRhdGVzOiBbRGF0ZSwgRGF0ZV07XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IFByZXNldHM6IFByZXNldFtdID0gW1xuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRPREFZLFxuICAgICAgdGl0bGU6ICdUb2RheScsXG4gICAgICBzdWJ0aXRsZTogJ1RvZGF5IGZyb20gbWlkbmlnaHQgdW50aWwgdGhlIGN1cnJlbnQgdGltZScsXG4gICAgICBkYXRlczogW3RpbWVEYXkoKSwgdGltZURheSgpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLllFU1RFUkRBWSxcbiAgICAgIHRpdGxlOiAnWWVzdGVyZGF5JyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDI0IGhvdXIgZGF5JyxcbiAgICAgIGRhdGVzOiBbdGltZURheS5vZmZzZXQodGltZURheSgpLCAtMSksIHRpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgLTEpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRPTU9SUk9XLFxuICAgICAgdGl0bGU6ICdUb21vcnJvdycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBuZXh0IDI0IGhvdXIgZGF5JyxcbiAgICAgIGRhdGVzOiBbdGltZURheS5vZmZzZXQodGltZURheSgpLCAxKSwgdGltZURheS5vZmZzZXQodGltZURheSgpLCAxKV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX1dFRUssXG4gICAgICB0aXRsZTogJ1RoaXMgd2VlaycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHdlZWsnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVN1bmRheS5mbG9vcih0b2RheSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVTdW5kYXkuY2VpbCh0b2RheSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX1dFRUtfU09fRkFSLFxuICAgICAgdGl0bGU6ICdUaGlzIHdlZWsgc28gZmFyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIGN1cnJlbnQgY2FsZW5kYXIgd2VlayB1cCB0byBub3cnLFxuICAgICAgZGF0ZXM6IFt0aW1lU3VuZGF5LmZsb29yKHRvZGF5KSwgdGltZURheS5mbG9vcih0b2RheSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTEFTVF9XRUVLLFxuICAgICAgdGl0bGU6ICdMYXN0IHdlZWsnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgY2FsZW5kYXIgd2VlaycsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lU3VuZGF5Lm9mZnNldCh0aW1lV2Vlay5mbG9vcih0b2RheSksIC0xKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuY2VpbCh0b2RheSksIC0xKSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLk5FWFRfV0VFSyxcbiAgICAgIHRpdGxlOiAnTmV4dCB3ZWVrJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIG5leHQgY2FsZW5kYXIgd2VlaycsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lU3VuZGF5Lm9mZnNldCh0aW1lV2Vlay5mbG9vcih0b2RheSksIDEpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lU3VuZGF5Lm9mZnNldCh0aW1lV2Vlay5jZWlsKHRvZGF5KSwgMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX01PTlRILFxuICAgICAgdGl0bGU6ICdUaGlzIG1vbnRoJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIGN1cnJlbnQgY2FsZW5kYXIgbW9udGgnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZU1vbnRoLmZsb29yKHRvZGF5KSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZU1vbnRoLmNlaWwodG9kYXkpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19NT05USF9TT19GQVIsXG4gICAgICB0aXRsZTogJ1RoaXMgbW9udGggc28gZmFyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIGN1cnJlbnQgY2FsZW5kYXIgbW9udGggdXAgdG8gbm93JyxcbiAgICAgIGRhdGVzOiBbdGltZU1vbnRoLmZsb29yKHRvZGF5KSwgdGltZURheS5mbG9vcih0b2RheSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTEFTVF9NT05USCxcbiAgICAgIHRpdGxlOiAnTGFzdCBtb250aCcsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyBjYWxlbmRhciBtb250aCcsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lTW9udGgub2Zmc2V0KHRpbWVNb250aC5mbG9vcih0b2RheSksIC0xKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguY2VpbCh0b2RheSksIC0xKSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLk5FWFRfTU9OVEgsXG4gICAgICB0aXRsZTogJ05leHQgbW9udGgnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgbmV4dCBjYWxlbmRhciBtb250aCcsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lTW9udGgub2Zmc2V0KHRpbWVNb250aC5mbG9vcih0b2RheSksIDEpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lTW9udGgub2Zmc2V0KHRpbWVNb250aC5jZWlsKHRvZGF5KSwgMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX1FVQVJURVIsXG4gICAgICB0aXRsZTogJ1RoaXMgcXVhcnRlcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IHF1YXJ0ZXInLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVF1YXJ0ZXIuZmxvb3IodG9kYXkpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lUXVhcnRlci5jZWlsKHRvZGF5KSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRISVNfUVVBUlRFUl9TT19GQVIsXG4gICAgICB0aXRsZTogJ1RoaXMgcXVhcnRlciBzbyBmYXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBxdWFydGVyIHVwIHRvIG5vdycsXG4gICAgICBkYXRlczogW3RpbWVRdWFydGVyLmZsb29yKHRvZGF5KSwgdGltZURheS5mbG9vcih0b2RheSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTEFTVF9RVUFSVEVSLFxuICAgICAgdGl0bGU6ICdMYXN0IHF1YXJ0ZXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgZnVsbCBxdWFydGVyJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVRdWFydGVyLm9mZnNldCh0aW1lUXVhcnRlci5mbG9vcih0b2RheSksIC0xKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVF1YXJ0ZXIub2Zmc2V0KHRpbWVRdWFydGVyLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX1FVQVJURVIsXG4gICAgICB0aXRsZTogJ05leHQgcXVhcnRlcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBuZXh0IGZ1bGwgcXVhcnRlcicsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lUXVhcnRlci5vZmZzZXQodGltZVF1YXJ0ZXIuZmxvb3IodG9kYXkpLCAxKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVF1YXJ0ZXIub2Zmc2V0KHRpbWVRdWFydGVyLmNlaWwodG9kYXkpLCAxKSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRISVNfWUVBUixcbiAgICAgIHRpdGxlOiAnVGhpcyB5ZWFyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIGN1cnJlbnQgY2FsZW5kYXIgeWVhcicsXG4gICAgICBkYXRlczogW3RpbWVZZWFyLmZsb29yKHRvZGF5KSwgdGltZURheS5vZmZzZXQodGltZVllYXIuY2VpbCh0b2RheSksIC0xKV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX1lFQVJfU09fRkFSLFxuICAgICAgdGl0bGU6ICdUaGlzIHllYXIgc28gZmFyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIGN1cnJlbnQgY2FsZW5kYXIgeWVhciB1cCB0byBub3cnLFxuICAgICAgZGF0ZXM6IFt0aW1lWWVhci5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfWUVBUixcbiAgICAgIHRpdGxlOiAnTGFzdCB5ZWFyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIGNhbGVuZGFyIHllYXInLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVllYXIub2Zmc2V0KHRpbWVZZWFyLmZsb29yKHRvZGF5KSwgLTEpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lWWVhci5vZmZzZXQodGltZVllYXIuY2VpbCh0b2RheSksIC0xKSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLk5FWFRfWUVBUixcbiAgICAgIHRpdGxlOiAnTmV4dCB5ZWFyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIG5leHQgY2FsZW5kYXIgeWVhcicsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lWWVhci5vZmZzZXQodGltZVllYXIuZmxvb3IodG9kYXkpLCAxKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVllYXIub2Zmc2V0KHRpbWVZZWFyLmNlaWwodG9kYXkpLCAxKSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfN19EQVlTLFxuICAgICAgdGl0bGU6ICdMYXN0IDcgZGF5cycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyA3IGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC04KSksXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xKSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTEFTVF8xNF9EQVlTLFxuICAgICAgdGl0bGU6ICdMYXN0IDE0IGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgMTQgZGF5cyBiZWZvcmUgdG9kYXknLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTE1KSksXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xKSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTEFTVF8zMF9EQVlTLFxuICAgICAgdGl0bGU6ICdMYXN0IDMwIGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgMzAgZGF5cyBiZWZvcmUgdG9kYXknLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTMxKSksXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xKSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTEFTVF82MF9EQVlTLFxuICAgICAgdGl0bGU6ICdMYXN0IDYwIGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgNjAgZGF5cyBiZWZvcmUgdG9kYXknLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTYxKSksXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xKSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTEFTVF85MF9EQVlTLFxuICAgICAgdGl0bGU6ICdMYXN0IDkwIGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgOTAgZGF5cyBiZWZvcmUgdG9kYXknLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTkxKSksXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xKSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTEFTVF8xODBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCAxODAgZGF5cycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyAxODAgZGF5cyBiZWZvcmUgdG9kYXknLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTE4MSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMzY1X0RBWVMsXG4gICAgICB0aXRsZTogJ0xhc3QgMzY1IGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgMzY1IGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0zNjYpKSxcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTEpKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmlnZ2VyVGVtcGxhdGU7IGVsc2Ugc3RhbmRhcmRUcmlnZ2VyXCI+XG4gIDxidXR0b25cbiAgICAjY3VzdG9tVHJpZ2dlckJ1dHRvblxuICAgIChjbGljayk9XCJvcGVuJC5uZXh0KHRydWUpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiKGRpc2FibGVkJCB8IGFzeW5jKSA/ICd0cnVlJyA6IG51bGxcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJpZ2dlclRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wZW46IG9wZW4kIHwgYXN5bmMgfVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNzdGFuZGFyZFRyaWdnZXI+XG4gIDxyaXYtaW5wdXQtbGFiZWxcbiAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgIFtoZWxwXT1cImhlbHBcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW3N0YXRlXT1cInN0YXRlXCJcbiAgICBbZXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZVwiXG4gICAgW2xhYmVsQWN0aW9uVGV4dF09XCJsYWJlbEFjdGlvblRleHRcIlxuICAgIChsYWJlbEFjdGlvbik9XCJsYWJlbEFjdGlvbi5lbWl0KCRldmVudClcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgI3N0YW5kYXJkVHJpZ2dlckJ1dHRvblxuICAgICAgY2xhc3M9XCJ0cmlnZ2VyXCJcbiAgICAgIFtjbGFzcy53YXJuaW5nXT1cInN0YXRlID09PSAnd2FybmluZydcIlxuICAgICAgW2NsYXNzLmVycm9yXT1cInN0YXRlID09PSAnZXJyb3InXCJcbiAgICAgIChjbGljayk9XCJvcGVuJC5uZXh0KHRydWUpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCQgfCBhc3luY1wiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIihkaXNhYmxlZCQgfCBhc3luYykgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJkaXNwbGF5VmFsdWUkIHwgYXN5bmM7IGVsc2UgcGxhY2Vob2xkZXJWYWx1ZTsgbGV0IGRpc3BsYXlcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgZGlzcGxheSB9fTwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlclZhbHVlPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlIHBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIkIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjaGV2cm9uXCI+XG4gICAgICAgIDxyaXYtaWNvbiBbbmFtZV09XCInQ2FsZW5kYXInXCIgW3NpemVdPVwiMTZcIj48L3Jpdi1pY29uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L3Jpdi1pbnB1dC1sYWJlbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjc2VsZlxuICBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxmXCJcbiAgbGV0LWlucHV0VmFsdWVcbiAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiAoZGlzdGluY3RWYWx1ZSQgfCBhc3luYykgfVwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcGVuJCB8IGFzeW5jXCI+XG4gICAgPHJpdi1jYWxsb3V0XG4gICAgICAqcml2LW92ZXJsYXlcbiAgICAgIFthbmNob3JdPVwiZ2V0VHJpZ2dlcigpXCJcbiAgICAgIFtzaG93Q2FyZXRdPVwiZmFsc2VcIlxuICAgICAgW3RoZW1lXT1cIidsaWdodCdcIlxuICAgICAgW2FsbG93ZWRQb3NpdGlvbnNdPVwiW1xuICAgICAgICAndG9wLWxlZnQnLFxuICAgICAgICAndG9wLXJpZ2h0JyxcbiAgICAgICAgJ2JvdHRvbS1yaWdodCcsXG4gICAgICAgICdib3R0b20tbGVmdCdcbiAgICAgIF1cIlxuICAgICAgW3ByZWZlcnJlZFBvc2l0aW9uXT1cIidib3R0b20tcmlnaHQnXCJcbiAgICAgIChjbG9zZSk9XCJvcGVuJC5uZXh0KGZhbHNlKTsgdXNlclNlbGVjdGVkRGF0ZSQubmV4dChpbnB1dFZhbHVlKVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBbY2xhc3MuaW5jbHVkZS1wcmVzZXRdPVwic2hvd1ByZXNldHNcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dQcmVzZXRzXCIgY2xhc3M9XCJwcmVzZXRzXCI+XG4gICAgICAgICAgPHJpdi1zaW1wbGUtc2VsZWN0XG4gICAgICAgICAgICBbbGFiZWxdPVwiJ0RhdGUgcHJlc2V0cydcIlxuICAgICAgICAgICAgW2ZpbHRlcmFiaWxpdHlPcHRpb25zXT1cInsgZW5hYmxlZDogdHJ1ZSwgcGxhY2Vob2xkZXI6ICdTZWFyY2gnIH1cIlxuICAgICAgICAgICAgW29yZGVyQnldPVwiJ3NvdXJjZSdcIlxuICAgICAgICAgICAgW29wdGlvbkdyb3Vwc109XCJcbiAgICAgICAgICAgICAgKGZpbHRlcmVkUHJlc2V0T3B0aW9ucyQgfCBhc3luYykgPz8gW10gfCByaXZPcHRpb25Hcm91cFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZE9wdGlvbl09XCJzZWxlY3RlZFByZXNldCQgfCBhc3luY1wiXG4gICAgICAgICAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwidXNlclNlbGVjdGVkUHJlc2V0JC5uZXh0KCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uIGxldC1ub2RlPVwibm9kZVwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAjc2VsZlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGZcIlxuICAgICAgICAgICAgICAgIGxldC1pc0Zhdm9yaXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogKGZhdm9yaXRlUHJlc2V0SWRzJCB8IGFzeW5jKT8uaW5jbHVkZXMobm9kZS5pZClcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmVzZXRcIiBbY2xhc3MuZmF2b3JpdGVdPVwiaXNGYXZvcml0ZVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxyaXYtaGlnaGxpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwibm9kZS50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2luZGljZXNdPVwibm9kZS50aXRsZUhpZ2hsaWdodEluZGljZXMgfHwgW11cIlxuICAgICAgICAgICAgICAgICAgICA+PC9yaXYtaGlnaGxpZ2h0PlxuICAgICAgICAgICAgICAgICAgICA8cml2LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIm5vZGUuc3VidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbmRpY2VzXT1cIm5vZGUuc3VidGl0bGVIaWdobGlnaHRJbmRpY2VzIHx8IFtdXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcml2LWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2V0RmF2b3JpdGUobm9kZSwgIWlzRmF2b3JpdGUpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImlzRmF2b3JpdGUgPyAnSGVhcnRBY3RpdmUnIDogJ0hlYXJ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICAgIFtyaXZUb29sdGlwXT1cIidNYXJrIGFzIGZhdm9yaXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvcml2LXNpbXBsZS1zZWxlY3Q+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAjc2VsZlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZlwiXG4gICAgICAgICAgICBsZXQtZmF2b3JpdGVzXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGZhdm9yaXRlUHJlc2V0cyQgfCBhc3luYyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cml2LWlucHV0LWxhYmVsICpuZ0lmPVwiZmF2b3JpdGVzLmxlbmd0aFwiIFtsYWJlbF09XCInRmF2b3JpdGVzJ1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hvcnRjdXRzXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZhdm9yaXRlIG9mIGZhdm9yaXRlc1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNob3J0Y3V0XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiKHNlbGVjdGVkUHJlc2V0JCB8IGFzeW5jKT8uaWQgPT09IGZhdm9yaXRlLmlkXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ1c2VyU2VsZWN0ZWRQcmVzZXQkLm5leHQoZmF2b3JpdGUpXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj57eyBmYXZvcml0ZS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEZhdm9yaXRlKGZhdm9yaXRlLCBmYWxzZSlcIlxuICAgICAgICAgICAgICAgICAgICBbcml2VG9vbHRpcF09XCInUmVtb3ZlIGZhdm9yaXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cml2LWljb24gW25hbWVdPVwiJ0hlYXJ0QWN0aXZlJ1wiIFtzaXplXT1cIjE2XCI+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvcml2LWlucHV0LWxhYmVsPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhcnNcIj5cbiAgICAgICAgICA8cml2LWNhbGVuZGFyXG4gICAgICAgICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgICAgICAgW2FjdGl2ZVllYXJNb250aF09XCIobGVmdEFjdGl2ZVllYXJNb250aCQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgKGFjdGl2ZVllYXJNb250aENoYW5nZSk9XCJ1c2VyTGVmdEFjdGl2ZVllYXJNb250aCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtkaXNwbGF5TWluXT1cIihtaW4kIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtkaXNwbGF5TWF4XT1cIihtYXgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtzZWxlY3RhYmxlTWluXT1cIihsZWZ0TWluJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbc2VsZWN0YWJsZU1heF09XCIobGVmdE1heCQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW29taXRSYW5nZV09XCIobGVmdE9taXRSYW5nZSQgfCBhc3luYykgfHwgW1RPREFZLCBUT0RBWV1cIlxuICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwiKHNlbGVjdGVkVmFsdWUkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIChkYXRlU2VsZWN0KT1cInVzZXJTZWxlY3RlZERhdGUkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvcml2LWNhbGVuZGFyPlxuICAgICAgICAgIDxyaXYtY2FsZW5kYXJcbiAgICAgICAgICAgIGNsYXNzPVwicmlnaHRcIlxuICAgICAgICAgICAgW2FjdGl2ZVllYXJNb250aF09XCIocmlnaHRBY3RpdmVZZWFyTW9udGgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIChhY3RpdmVZZWFyTW9udGhDaGFuZ2UpPVwidXNlclJpZ2h0QWN0aXZlWWVhck1vbnRoJC5uZXh0KCRldmVudClcIlxuICAgICAgICAgICAgW2Rpc3BsYXlNaW5dPVwiKG1pbiQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW2Rpc3BsYXlNYXhdPVwiKG1heCQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW3NlbGVjdGFibGVNaW5dPVwiKHJpZ2h0TWluJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbc2VsZWN0YWJsZU1heF09XCIocmlnaHRNYXgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cIihzZWxlY3RlZFZhbHVlJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICAoZGF0ZVNlbGVjdCk9XCJ1c2VyU2VsZWN0ZWREYXRlJC5uZXh0KCRldmVudClcIlxuICAgICAgICAgID48L3Jpdi1jYWxlbmRhcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGZvb3RlciBjbGFzcz1cImJ1dHRvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICByaXZCdXR0b25cbiAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwidXNlclNlbGVjdGVkRGF0ZSQubmV4dCh1bmRlZmluZWQpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIENsZWFyXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgICAgIFt2YXJpYW50XT1cIidwcmltYXJ5J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbiQubmV4dChmYWxzZSlcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgRG9uZVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvcml2LWNhbGxvdXQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
478
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9pbnB1dC9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0UsT0FBTyxFQUNMLGVBQWUsRUFFZixPQUFPLEVBQ1AsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBQzNFLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUM7QUFFeEMsNkVBQTZFO0FBQzdFLDJCQUEyQjtBQUMzQixtR0FBbUc7QUFPbkcsTUFBTSxPQUFPLGtCQUFtQixTQUFR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QUMsWUFBWTtZQUMzQixLQUFLLEVBQUUsY0FBYztZQUNyQixRQUFRLEVBQUUsbUNBQW1DO1lBQzdDLEtBQUssRUFBRTtnQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN6QztTQUNGO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsVUFBVSxDQUFDLGFBQWE7WUFDNUIsS0FBSyxFQUFFLGVBQWU7WUFDdEIsUUFBUSxFQUFFLG9DQUFvQztZQUM5QyxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekM7U0FDRjtRQUNEO1lBQ0UsRUFBRSxFQUFFLFVBQVUsQ0FBQyxhQUFhO1lBQzVCLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFFBQVEsRUFBRSxvQ0FBb0M7WUFDOUMsS0FBSyxFQUFFO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyxFQTNQZ0Isa0JBQWtCLEtBQWxCLGtCQUFrQixRQTJQbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGltZURheSwgdGltZU1vbnRoLCB0aW1lU3VuZGF5LCB0aW1lV2VlaywgdGltZVllYXIgfSBmcm9tICdkMy10aW1lJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBtZXJnZSxcbiAgc2NhbixcbiAgc2hhcmVSZXBsYXksXG4gIHNraXBVbnRpbCxcbiAgc3RhcnRXaXRoLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnLi4vLi4vZm9ybWF0L3BpcGVzL2RhdGUucGlwZSc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2UgfSBmcm9tICcuLi8uLi91dGlsL2xvY2FsLXN0b3JhZ2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0LWxhYmVsL2lucHV0LWxhYmVsLmNvbXBvbmVudCc7XG5jb25zdCB0aW1lUXVhcnRlciA9IHRpbWVNb250aC5ldmVyeSgzKSE7XG5cbi8vIFRPRE86IG9uY2Ugd2UgdXBncmFkZSB0byBBbmd1bGFyIDE2LCB0aGlzIGNvbXBvbmVudCBjYW4gYmUgY2xlYW5lZCB1cCB3aXRoXG4vLyBzaWduYWxzIGluc3RlYWQgb2YgUnhKUy5cbi8vIGh0dHBzOi8vd3d3Lm5vdGlvbi5zby9yaXZldC9SZXNvbHZlLVRPRE9zLWFmdGVyLUFuZ3VsYXItdXBncmFkZS0xZjI2NjdlYjJhMzE4MGI3OWY2YWQ5MmE3ZTU3NmYwOFxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LWRhdGUtcmFuZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcmFuZ2UuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlQ29tcG9uZW50IGV4dGVuZHMgSW5wdXRMYWJlbENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IFRPREFZID0gbmV3IERhdGUoKTtcbiAgcmVhZG9ubHkgU1RPUkFHRV9LRVkgPSAnZGF0ZS1yYW5nZS5kZWZhdWx0JztcblxuICBwcml2YXRlIHJlYWRvbmx5IHNob3dQcmVzZXRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIEBJbnB1dCgpXG4gIHNldCBzaG93UHJlc2V0cyh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG93UHJlc2V0cyQubmV4dCh2KTtcbiAgfVxuICBnZXQgc2hvd1ByZXNldHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1ByZXNldHMkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBtaW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihDYWxlbmRhckNvbXBvbmVudC5kZWZhdWx0TWluKTtcbiAgQElucHV0KClcbiAgc2V0IG1pbih2OiBEYXRlKSB7XG4gICAgdGhpcy5taW4kLm5leHQodik7XG4gIH1cbiAgZ2V0IG1pbigpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5taW4kLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBtYXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihDYWxlbmRhckNvbXBvbmVudC5kZWZhdWx0TWF4KTtcbiAgQElucHV0KClcbiAgc2V0IG1heCh2OiBEYXRlKSB7XG4gICAgdGhpcy5tYXgkLm5leHQodik7XG4gIH1cbiAgZ2V0IG1heCgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5tYXgkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSB2YWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudmFsdWUkLm5leHQodik7XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBkaXN0aW5jdFZhbHVlJCA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAocHJldmlvdXMsIGN1cnJlbnQpID0+XG4gICAgICAgIHByZXZpb3VzPy5bMF0udmFsdWVPZigpID09PSBjdXJyZW50Py5bMF0udmFsdWVPZigpICYmXG4gICAgICAgIHByZXZpb3VzPy5bMV0udmFsdWVPZigpID09PSBjdXJyZW50Py5bMV0udmFsdWVPZigpLFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBwbGFjZWhvbGRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ1NlbGVjdCBkYXRlIHJhbmdlJyk7XG4gIEBJbnB1dCgpXG4gIHNldCBwbGFjZWhvbGRlcih2OiBzdHJpbmcpIHtcbiAgICB0aGlzLnBsYWNlaG9sZGVyJC5uZXh0KHYpO1xuICB9XG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZCh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dCh2KTtcbiAgfVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBAQ29udGVudENoaWxkKCd0cmlnZ2VyJylcbiAgdHJpZ2dlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBvcGVuOiBib29sZWFuIH0+O1xuXG4gIEBWaWV3Q2hpbGQoJ2N1c3RvbVRyaWdnZXJCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgY3VzdG9tVHJpZ2dlckJ1dHRvbj86IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnc3RhbmRhcmRUcmlnZ2VyQnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHN0YW5kYXJkVHJpZ2dlckJ1dHRvbj86IEVsZW1lbnRSZWY7XG5cbiAgZ2V0VHJpZ2dlcigpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY3VzdG9tVHJpZ2dlckJ1dHRvbj8ubmF0aXZlRWxlbWVudCA/P1xuICAgICAgdGhpcy5zdGFuZGFyZFRyaWdnZXJCdXR0b24/Lm5hdGl2ZUVsZW1lbnQgPz9cbiAgICAgIG51bGxcbiAgICApO1xuICB9XG5cbiAgcmVhZG9ubHkgYWx0ZXJuYXRpdmVQcmVzZXRMaXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldFR5cGVbXVxuICA+KFtdKTtcbiAgQElucHV0KClcbiAgc2V0IGFsdGVybmF0aXZlUHJlc2V0TGlzdCh2OiBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0VHlwZVtdKSB7XG4gICAgdGhpcy5hbHRlcm5hdGl2ZVByZXNldExpc3QkLm5leHQodik7XG4gIH1cbiAgZ2V0IGFsdGVybmF0aXZlUHJlc2V0TGlzdCgpOiBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0VHlwZVtdIHtcbiAgICByZXR1cm4gdGhpcy5hbHRlcm5hdGl2ZVByZXNldExpc3QkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBvcGVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHVzZXJTZWxlY3RlZFByZXNldCQgPVxuICAgIG5ldyBTdWJqZWN0PERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXQgfCBudWxsPigpO1xuXG4gIHJlYWRvbmx5IHVzZXJTZWxlY3RlZERhdGUkID0gbmV3IFN1YmplY3Q8RGF0ZSB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRWYWx1ZSQ6IE9ic2VydmFibGU8RGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZD4gPSBtZXJnZShcbiAgICB0aGlzLmRpc3RpbmN0VmFsdWUkLFxuICAgIHRoaXMudXNlclNlbGVjdGVkRGF0ZSQucGlwZShcbiAgICAgIHNjYW4oXG4gICAgICAgIChwcmV2aW91czogRGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCwgZGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICAgIGlmIChwcmV2aW91cyBpbnN0YW5jZW9mIERhdGUgJiYgZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgIGlmIChkYXRlLnZhbHVlT2YoKSA+PSBwcmV2aW91cy52YWx1ZU9mKCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGFpcjogW0RhdGUsIERhdGVdID0gW3ByZXZpb3VzLCBkYXRlXTtcbiAgICAgICAgICAgICAgcmV0dXJuIHBhaXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgICB9LFxuICAgICAgKSxcbiAgICApLFxuICAgIHRoaXMudXNlclNlbGVjdGVkUHJlc2V0JC5waXBlKFxuICAgICAgZmlsdGVyKChwcmVzZXQpOiBwcmVzZXQgaXMgRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldCA9PiBwcmVzZXQgIT09IG51bGwpLFxuICAgICAgbWFwKHByZXNldCA9PiBwcmVzZXQuZGF0ZXMpLFxuICAgICksXG4gICkucGlwZShzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pKTtcblxuICByZWFkb25seSBmaWx0ZXJlZFByZXNldE9wdGlvbnMkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5taW4kLFxuICAgIHRoaXMubWF4JCxcbiAgICB0aGlzLmFsdGVybmF0aXZlUHJlc2V0TGlzdCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbbWluLCBtYXgsIGFsdGVybmF0aXZlUHJlc2V0TGlzdF0pID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnNGaWx0ZXJlZE9uTWluTWF4ID0gRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldHMuZmlsdGVyKFxuICAgICAgICBwID0+XG4gICAgICAgICAgcC5kYXRlc1swXS52YWx1ZU9mKCkgPj0gbWluLnZhbHVlT2YoKSAmJlxuICAgICAgICAgIHAuZGF0ZXNbMV0udmFsdWVPZigpIDw9IG1heC52YWx1ZU9mKCksXG4gICAgICApO1xuICAgICAgaWYgKGFsdGVybmF0aXZlUHJlc2V0TGlzdC5sZW5ndGggPT0gMCkge1xuICAgICAgICByZXR1cm4gb3B0aW9uc0ZpbHRlcmVkT25NaW5NYXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBvcHRpb25zRmlsdGVyZWRPbkFsdGVybmF0aXZlUHJlc2V0TGlzdCA9XG4gICAgICAgICAgb3B0aW9uc0ZpbHRlcmVkT25NaW5NYXguZmlsdGVyKHAgPT5cbiAgICAgICAgICAgIGFsdGVybmF0aXZlUHJlc2V0TGlzdC5pbmNsdWRlcyhwLmlkKSxcbiAgICAgICAgICApO1xuICAgICAgICByZXR1cm4gb3B0aW9uc0ZpbHRlcmVkT25BbHRlcm5hdGl2ZVByZXNldExpc3Q7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3RlZFByZXNldCQ6IE9ic2VydmFibGU8RGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldCB8IG51bGw+ID1cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQsXG4gICAgICB0aGlzLnVzZXJTZWxlY3RlZFByZXNldCQucGlwZShzdGFydFdpdGgobnVsbCkpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtzZWxlY3RlZFZhbHVlLCB1c2VyU2VsZWN0ZWRQcmVzZXRdKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZFZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldHMuZmlsdGVyKFxuICAgICAgICAgICAgcHJlc2V0ID0+XG4gICAgICAgICAgICAgIHByZXNldC5kYXRlc1swXS52YWx1ZU9mKCkgPT09IHNlbGVjdGVkVmFsdWVbMF0udmFsdWVPZigpICYmXG4gICAgICAgICAgICAgIHByZXNldC5kYXRlc1sxXS52YWx1ZU9mKCkgPT09IHNlbGVjdGVkVmFsdWVbMV0udmFsdWVPZigpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBTb21lIGRhdGUgcmFuZ2VzIG1hdGNoIG11bHRpcGxlIHByZXNldHMsIGUuZy4gb24gSmFuIDE5dGgsIGFcbiAgICAgICAgICAgIC8vIHNlbGVjdGVkIGRhdGUgcmFuZ2Ugb2YgSmFuIDEtMTkgd291bGQgY29ycmVzcG9uZCB0byBcInRoaXMgbW9udGhcbiAgICAgICAgICAgIC8vIHNvIGZhcixcIiBcInRoaXMgcXVhcnRlciBzbyBmYXIsXCIgYW5kIFwidGhpcyB5ZWFyIHNvIGZhci5cIiBXZSdsbFxuICAgICAgICAgICAgLy8gdXNlIHRoZSB1c2VyJ3MgbW9zdCByZWNlbnQgbWFudWFsIHNlbGVjdGlvbiBhcyBhIHRpZSBicmVha2VyXG4gICAgICAgICAgICAvLyB3aGVyZSBwb3NzaWJsZS5cbiAgICAgICAgICAgIGNvbnN0IG1vc3RSZWNlbnQgPSBvcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAgIG9wdGlvbiA9PiBvcHRpb24uaWQgPT09IHVzZXJTZWxlY3RlZFByZXNldD8uaWQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG1vc3RSZWNlbnQpIHJldHVybiBtb3N0UmVjZW50O1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnNbMF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSksXG4gICAgKTtcblxuICByZWFkb25seSBmYXZvcml0ZVByZXNldElkcyQgPSBuZXcgTG9jYWxTdG9yYWdlPHN0cmluZ1tdPihcbiAgICB0aGlzLlNUT1JBR0VfS0VZLFxuICAgIFtdLFxuICApO1xuXG4gIHNldEZhdm9yaXRlKHByZXNldDogRGF0ZVJhbmdlQ29tcG9uZW50LlByZXNldCwgZmF2b3JpdGU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpZHMgPSBuZXcgU2V0KHRoaXMuZmF2b3JpdGVQcmVzZXRJZHMkLmdldFZhbHVlKCkpO1xuICAgIGlmIChmYXZvcml0ZSkge1xuICAgICAgaWRzLmFkZChwcmVzZXQuaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZHMuZGVsZXRlKHByZXNldC5pZCk7XG4gICAgfVxuICAgIHRoaXMuZmF2b3JpdGVQcmVzZXRJZHMkLm5leHQoWy4uLmlkc10pO1xuICB9XG5cbiAgcmVhZG9ubHkgZmF2b3JpdGVQcmVzZXRzJDogT2JzZXJ2YWJsZTxEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0W10+ID1cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZmF2b3JpdGVQcmVzZXRJZHMkLFxuICAgICAgdGhpcy5maWx0ZXJlZFByZXNldE9wdGlvbnMkLFxuICAgICAgdGhpcy5hbHRlcm5hdGl2ZVByZXNldExpc3QkLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtpZHMsIHByZXNldHMsIGFsdGVybmF0aXZlUHJlc2V0TGlzdF0pID0+IHtcbiAgICAgICAgY29uc3QgZmF2b3JpdGVQcmVzZXRzID0gaWRzXG4gICAgICAgICAgLm1hcChpZCA9PiBwcmVzZXRzLmZpbmQocHJlc2V0ID0+IHByZXNldC5pZCA9PT0gaWQpKVxuICAgICAgICAgIC5maWx0ZXIoKHApOiBwIGlzIERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXQgPT4gcCAhPT0gdW5kZWZpbmVkKTtcblxuICAgICAgICBpZiAoYWx0ZXJuYXRpdmVQcmVzZXRMaXN0Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGZhdm9yaXRlUHJlc2V0cztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBmYXZvcml0ZXNGaWx0ZXJlZE9uQWx0ZXJuYXRpdmVQcmVzZXRMaXN0ID1cbiAgICAgICAgICAgIGZhdm9yaXRlUHJlc2V0cy5maWx0ZXIocCA9PlxuICAgICAgICAgICAgICBhbHRlcm5hdGl2ZVByZXNldExpc3QuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgPERhdGVSYW5nZUNvbXBvbmVudC5QcmVzZXRUeXBlPnAuaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBmYXZvcml0ZXNGaWx0ZXJlZE9uQWx0ZXJuYXRpdmVQcmVzZXRMaXN0O1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICAgKTtcblxuICByZWFkb25seSB1c2VyTGVmdEFjdGl2ZVllYXJNb250aCQgPSBuZXcgU3ViamVjdDxEYXRlPigpO1xuICByZWFkb25seSB1c2VyUmlnaHRBY3RpdmVZZWFyTW9udGgkID0gbmV3IFN1YmplY3Q8RGF0ZT4oKTtcblxuICByZWFkb25seSBsZWZ0TWluJCA9IHRoaXMubWluJC5waXBlKFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG4gIHJlYWRvbmx5IGxlZnRNYXgkID0gdGhpcy5tYXgkLnBpcGUoXG4gICAgbWFwKG1heCA9PiB0aW1lRGF5Lm9mZnNldCh0aW1lTW9udGguZmxvb3IobWF4KSwgLTEpKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuICByZWFkb25seSByaWdodE1heCQgPSB0aGlzLm1heCQucGlwZShcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IGxlZnRBY3RpdmVZZWFyTW9udGgkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5sZWZ0TWF4JCxcbiAgICBtZXJnZShcbiAgICAgIHRoaXMudXNlckxlZnRBY3RpdmVZZWFyTW9udGgkLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aW1lTW9udGguZmxvb3IodGhpcy5UT0RBWSkpLFxuICAgICAgKSxcbiAgICAgIHRoaXMudXNlclNlbGVjdGVkUHJlc2V0JC5waXBlKFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKHByZXNldCk6IHByZXNldCBpcyBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0ID0+IHByZXNldCAhPT0gbnVsbCxcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKHByZXNldCA9PiB0aW1lTW9udGguZmxvb3IocHJlc2V0LmRhdGVzWzBdKSksXG4gICAgICApLFxuICAgICAgdGhpcy5kaXN0aW5jdFZhbHVlJC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHYpOiB2IGlzIFtEYXRlLCBEYXRlXSA9PiB2ICE9PSB1bmRlZmluZWQpLFxuICAgICAgICBtYXAodiA9PiB0aW1lTW9udGguZmxvb3IodlswXSkpLFxuICAgICAgKSxcbiAgICApLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2xlZnRNYXgsIGxlZnRdKSA9PiB7XG4gICAgICBpZiAobGVmdC52YWx1ZU9mKCkgPj0gbGVmdE1heC52YWx1ZU9mKCkpIHJldHVybiB0aW1lTW9udGguZmxvb3IobGVmdE1heCk7XG4gICAgICBlbHNlIHJldHVybiBsZWZ0O1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgcmlnaHRBY3RpdmVZZWFyTW9udGgkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5sZWZ0QWN0aXZlWWVhck1vbnRoJCxcbiAgICBtZXJnZShcbiAgICAgIHRoaXMudXNlclJpZ2h0QWN0aXZlWWVhck1vbnRoJC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGltZU1vbnRoLmNlaWwodGhpcy5UT0RBWSkpLFxuICAgICAgKSxcbiAgICAgIHRoaXMudXNlclNlbGVjdGVkUHJlc2V0JC5waXBlKFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKHByZXNldCk6IHByZXNldCBpcyBEYXRlUmFuZ2VDb21wb25lbnQuUHJlc2V0ID0+IHByZXNldCAhPT0gbnVsbCxcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKHByZXNldCA9PiB0aW1lTW9udGguZmxvb3IocHJlc2V0LmRhdGVzWzFdKSksXG4gICAgICApLFxuICAgICAgdGhpcy5kaXN0aW5jdFZhbHVlJC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHYpOiB2IGlzIFtEYXRlLCBEYXRlXSA9PiB2ICE9PSB1bmRlZmluZWQpLFxuICAgICAgICBtYXAodiA9PiB0aW1lTW9udGguZmxvb3IodlsxXSkpLFxuICAgICAgKSxcbiAgICApLFxuICAgIHRoaXMucmlnaHRNYXgkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2xlZnQsIHVzZXJSaWdodCwgcmlnaHRNYXgkXSkgPT4ge1xuICAgICAgaWYgKGxlZnQudmFsdWVPZigpID49IHVzZXJSaWdodC52YWx1ZU9mKCkpXG4gICAgICAgIHJldHVybiB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldChsZWZ0LCAxKSk7XG4gICAgICBlbHNlIGlmICh1c2VyUmlnaHQudmFsdWVPZigpID49IHJpZ2h0TWF4JC52YWx1ZU9mKCkpXG4gICAgICAgIHJldHVybiB0aW1lTW9udGguZmxvb3IocmlnaHRNYXgkKTtcbiAgICAgIGVsc2UgcmV0dXJuIHVzZXJSaWdodDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHJpZ2h0TWluJCA9IHRoaXMubGVmdEFjdGl2ZVllYXJNb250aCQucGlwZShcbiAgICBtYXAobGVmdCA9PiB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldChsZWZ0LCAxKSkpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbGVmdE9taXRSYW5nZSQ6IE9ic2VydmFibGU8W0RhdGUsIERhdGVdPiA9XG4gICAgdGhpcy5yaWdodEFjdGl2ZVllYXJNb250aCQucGlwZShcbiAgICAgIG1hcDxEYXRlLCBbRGF0ZSwgRGF0ZV0+KHJpZ2h0QWN0aXZlWWVhck1vbnRoID0+IHtcbiAgICAgICAgY29uc3QgZmlyc3QgPSB0aW1lTW9udGguZmxvb3IocmlnaHRBY3RpdmVZZWFyTW9udGgpO1xuICAgICAgICBjb25zdCBsYXN0ID0gdGltZURheS5vZmZzZXQoXG4gICAgICAgICAgdGltZU1vbnRoLmZsb29yKHRpbWVNb250aC5vZmZzZXQocmlnaHRBY3RpdmVZZWFyTW9udGgsIDEpKSxcbiAgICAgICAgICAtMSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIFtmaXJzdCwgbGFzdF07XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICAgKTtcblxuICByZWFkb25seSB1c2VySW50ZXJhY3RlZCQgPSBtZXJnZShcbiAgICB0aGlzLnVzZXJTZWxlY3RlZERhdGUkLFxuICAgIHRoaXMudXNlclNlbGVjdGVkUHJlc2V0JCxcbiAgKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IE9ic2VydmFibGU8W0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkPiA9XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlJC5waXBlKFxuICAgICAgc2tpcFVudGlsKFxuICAgICAgICBtZXJnZShcbiAgICAgICAgICB0aGlzLnVzZXJJbnRlcmFjdGVkJCxcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLnBpcGUoZmlsdGVyKHYgPT4gdiAhPT0gdW5kZWZpbmVkKSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgZmlsdGVyKCh2KTogdiBpcyBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQgPT4gISh2IGluc3RhbmNlb2YgRGF0ZSkpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgIChwcmV2aW91cywgY3VycmVudCkgPT5cbiAgICAgICAgICBwcmV2aW91cz8uWzBdLnZhbHVlT2YoKSA9PT0gY3VycmVudD8uWzBdLnZhbHVlT2YoKSAmJlxuICAgICAgICAgIHByZXZpb3VzPy5bMV0udmFsdWVPZigpID09PSBjdXJyZW50Py5bMV0udmFsdWVPZigpLFxuICAgICAgKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICAgKTtcblxuICByZWFkb25seSBkaXNwbGF5VmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gPVxuICAgIHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgIG1hcCh2ID0+IHtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICByZXR1cm4gdi5tYXAoZGF0ZSA9PiBuZXcgRGF0ZVBpcGUoKS50cmFuc2Zvcm0oZGF0ZSkpLmpvaW4oJyDigJQgJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgICApO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIERhdGVSYW5nZUNvbXBvbmVudCB7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICBleHBvcnQgZW51bSBQcmVzZXRUeXBlIHtcbiAgICBUT0RBWSA9ICd0b2RheScsXG4gICAgWUVTVEVSREFZID0gJ3llc3RlcmRheScsXG4gICAgVE9NT1JST1cgPSAndG9tb3Jyb3cnLFxuICAgIFRISVNfV0VFSyA9ICd0aGlzX3dlZWsnLFxuICAgIFRISVNfV0VFS19TT19GQVIgPSAndGhpc193ZWVrX3NvX2ZhcicsXG4gICAgTEFTVF9XRUVLID0gJ2xhc3Rfd2VlaycsXG4gICAgTkVYVF9XRUVLID0gJ25leHRfd2VlaycsXG4gICAgVEhJU19NT05USCA9ICd0aGlzX21vbnRoJyxcbiAgICBUSElTX01PTlRIX1NPX0ZBUiA9ICd0aGlzX21vbnRoX3NvX2ZhcicsXG4gICAgTEFTVF9NT05USCA9ICdsYXN0X21vbnRoJyxcbiAgICBORVhUX01PTlRIID0gJ25leHRfbW9udGgnLFxuICAgIFRISVNfUVVBUlRFUiA9ICd0aGlzX3F1YXJ0ZXInLFxuICAgIFRISVNfUVVBUlRFUl9TT19GQVIgPSAndGhpc19xdWFydGVyX3NvX2ZhcicsXG4gICAgTEFTVF9RVUFSVEVSID0gJ2xhc3RfcXVhcnRlcicsXG4gICAgTkVYVF9RVUFSVEVSID0gJ25leHRfcXVhcnRlcicsXG4gICAgVEhJU19ZRUFSID0gJ3RoaXNfeWVhcicsXG4gICAgVEhJU19ZRUFSX1NPX0ZBUiA9ICd0aGlzX3llYXJfc29fZmFyJyxcbiAgICBMQVNUX1lFQVIgPSAnbGFzdF95ZWFyJyxcbiAgICBORVhUX1lFQVIgPSAnbmV4dF95ZWFyJyxcbiAgICBMQVNUXzdfREFZUyA9ICdsYXN0XzdfZGF5cycsXG4gICAgTEFTVF8xNF9EQVlTID0gJ2xhc3RfMTRfZGF5cycsXG4gICAgTEFTVF8zMF9EQVlTID0gJ2xhc3RfMzBfZGF5cycsXG4gICAgTEFTVF82MF9EQVlTID0gJ2xhc3RfNjBfZGF5cycsXG4gICAgTEFTVF85MF9EQVlTID0gJ2xhc3RfOTBfZGF5cycsXG4gICAgTEFTVF8xODBfREFZUyA9ICdsYXN0XzE4MF9kYXlzJyxcbiAgICBMQVNUXzM2NV9EQVlTID0gJ2xhc3RfMzY1X2RheXMnLFxuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHJlc2V0ID0ge1xuICAgIGlkOiBQcmVzZXRUeXBlO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgc3VidGl0bGU6IHN0cmluZztcbiAgICBkYXRlczogW0RhdGUsIERhdGVdO1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBQcmVzZXRzOiBQcmVzZXRbXSA9IFtcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5UT0RBWSxcbiAgICAgIHRpdGxlOiAnVG9kYXknLFxuICAgICAgc3VidGl0bGU6ICdUb2RheSBmcm9tIG1pZG5pZ2h0IHVudGlsIHRoZSBjdXJyZW50IHRpbWUnLFxuICAgICAgZGF0ZXM6IFt0aW1lRGF5KCksIHRpbWVEYXkoKV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ZRVNURVJEQVksXG4gICAgICB0aXRsZTogJ1llc3RlcmRheScsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyAyNCBob3VyIGRheScsXG4gICAgICBkYXRlczogW3RpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgLTEpLCB0aW1lRGF5Lm9mZnNldCh0aW1lRGF5KCksIC0xKV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5UT01PUlJPVyxcbiAgICAgIHRpdGxlOiAnVG9tb3Jyb3cnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgbmV4dCAyNCBob3VyIGRheScsXG4gICAgICBkYXRlczogW3RpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgMSksIHRpbWVEYXkub2Zmc2V0KHRpbWVEYXkoKSwgMSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19XRUVLLFxuICAgICAgdGl0bGU6ICdUaGlzIHdlZWsnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBjYWxlbmRhciB3ZWVrJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVTdW5kYXkuZmxvb3IodG9kYXkpLFxuICAgICAgICB0aW1lRGF5Lm9mZnNldCh0aW1lU3VuZGF5LmNlaWwodG9kYXkpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19XRUVLX1NPX0ZBUixcbiAgICAgIHRpdGxlOiAnVGhpcyB3ZWVrIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHdlZWsgdXAgdG8gbm93JyxcbiAgICAgIGRhdGVzOiBbdGltZVN1bmRheS5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfV0VFSyxcbiAgICAgIHRpdGxlOiAnTGFzdCB3ZWVrJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIGNhbGVuZGFyIHdlZWsnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVTdW5kYXkub2Zmc2V0KHRpbWVXZWVrLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX1dFRUssXG4gICAgICB0aXRsZTogJ05leHQgd2VlaycsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBuZXh0IGNhbGVuZGFyIHdlZWsnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuZmxvb3IodG9kYXkpLCAxKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVN1bmRheS5vZmZzZXQodGltZVdlZWsuY2VpbCh0b2RheSksIDEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19NT05USCxcbiAgICAgIHRpdGxlOiAnVGhpcyBtb250aCcsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIG1vbnRoJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVNb250aC5mbG9vcih0b2RheSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVNb250aC5jZWlsKHRvZGF5KSwgLTEpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLlRISVNfTU9OVEhfU09fRkFSLFxuICAgICAgdGl0bGU6ICdUaGlzIG1vbnRoIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIG1vbnRoIHVwIHRvIG5vdycsXG4gICAgICBkYXRlczogW3RpbWVNb250aC5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfTU9OVEgsXG4gICAgICB0aXRsZTogJ0xhc3QgbW9udGgnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgY2FsZW5kYXIgbW9udGgnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVNb250aC5vZmZzZXQodGltZU1vbnRoLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX01PTlRILFxuICAgICAgdGl0bGU6ICdOZXh0IG1vbnRoJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIG5leHQgY2FsZW5kYXIgbW9udGgnLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguZmxvb3IodG9kYXkpLCAxKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZU1vbnRoLm9mZnNldCh0aW1lTW9udGguY2VpbCh0b2RheSksIDEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19RVUFSVEVSLFxuICAgICAgdGl0bGU6ICdUaGlzIHF1YXJ0ZXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgY3VycmVudCBxdWFydGVyJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVRdWFydGVyLmZsb29yKHRvZGF5KSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVF1YXJ0ZXIuY2VpbCh0b2RheSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX1FVQVJURVJfU09fRkFSLFxuICAgICAgdGl0bGU6ICdUaGlzIHF1YXJ0ZXIgc28gZmFyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIGN1cnJlbnQgcXVhcnRlciB1cCB0byBub3cnLFxuICAgICAgZGF0ZXM6IFt0aW1lUXVhcnRlci5mbG9vcih0b2RheSksIHRpbWVEYXkuZmxvb3IodG9kYXkpXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfUVVBUlRFUixcbiAgICAgIHRpdGxlOiAnTGFzdCBxdWFydGVyJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIGZ1bGwgcXVhcnRlcicsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lUXVhcnRlci5vZmZzZXQodGltZVF1YXJ0ZXIuZmxvb3IodG9kYXkpLCAtMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVRdWFydGVyLm9mZnNldCh0aW1lUXVhcnRlci5jZWlsKHRvZGF5KSwgLTEpLCAtMSksXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuTkVYVF9RVUFSVEVSLFxuICAgICAgdGl0bGU6ICdOZXh0IHF1YXJ0ZXInLFxuICAgICAgc3VidGl0bGU6ICdUaGUgbmV4dCBmdWxsIHF1YXJ0ZXInLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVF1YXJ0ZXIub2Zmc2V0KHRpbWVRdWFydGVyLmZsb29yKHRvZGF5KSwgMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVRdWFydGVyLm9mZnNldCh0aW1lUXVhcnRlci5jZWlsKHRvZGF5KSwgMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5USElTX1lFQVIsXG4gICAgICB0aXRsZTogJ1RoaXMgeWVhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHllYXInLFxuICAgICAgZGF0ZXM6IFt0aW1lWWVhci5mbG9vcih0b2RheSksIHRpbWVEYXkub2Zmc2V0KHRpbWVZZWFyLmNlaWwodG9kYXkpLCAtMSldLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFByZXNldFR5cGUuVEhJU19ZRUFSX1NPX0ZBUixcbiAgICAgIHRpdGxlOiAnVGhpcyB5ZWFyIHNvIGZhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBjdXJyZW50IGNhbGVuZGFyIHllYXIgdXAgdG8gbm93JyxcbiAgICAgIGRhdGVzOiBbdGltZVllYXIuZmxvb3IodG9kYXkpLCB0aW1lRGF5LmZsb29yKHRvZGF5KV0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUX1lFQVIsXG4gICAgICB0aXRsZTogJ0xhc3QgeWVhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBwcmV2aW91cyBjYWxlbmRhciB5ZWFyJyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVZZWFyLm9mZnNldCh0aW1lWWVhci5mbG9vcih0b2RheSksIC0xKSxcbiAgICAgICAgdGltZURheS5vZmZzZXQodGltZVllYXIub2Zmc2V0KHRpbWVZZWFyLmNlaWwodG9kYXkpLCAtMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5ORVhUX1lFQVIsXG4gICAgICB0aXRsZTogJ05leHQgeWVhcicsXG4gICAgICBzdWJ0aXRsZTogJ1RoZSBuZXh0IGNhbGVuZGFyIHllYXInLFxuICAgICAgZGF0ZXM6IFtcbiAgICAgICAgdGltZVllYXIub2Zmc2V0KHRpbWVZZWFyLmZsb29yKHRvZGF5KSwgMSksXG4gICAgICAgIHRpbWVEYXkub2Zmc2V0KHRpbWVZZWFyLm9mZnNldCh0aW1lWWVhci5jZWlsKHRvZGF5KSwgMSksIC0xKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzdfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCA3IGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgNyBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtOCkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMTRfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCAxNCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDE0IGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xNSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMzBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCAzMCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDMwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0zMSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfNjBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCA2MCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDYwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC02MSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfOTBfREFZUyxcbiAgICAgIHRpdGxlOiAnTGFzdCA5MCBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDkwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC05MSkpLFxuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMSkpLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBQcmVzZXRUeXBlLkxBU1RfMTgwX0RBWVMsXG4gICAgICB0aXRsZTogJ0xhc3QgMTgwIGRheXMnLFxuICAgICAgc3VidGl0bGU6ICdUaGUgcHJldmlvdXMgMTgwIGRheXMgYmVmb3JlIHRvZGF5JyxcbiAgICAgIGRhdGVzOiBbXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xODEpKSxcbiAgICAgICAgdGltZURheS5mbG9vcih0aW1lRGF5Lm9mZnNldCh0b2RheSwgLTEpKSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogUHJlc2V0VHlwZS5MQVNUXzM2NV9EQVlTLFxuICAgICAgdGl0bGU6ICdMYXN0IDM2NSBkYXlzJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhlIHByZXZpb3VzIDM2NSBkYXlzIGJlZm9yZSB0b2RheScsXG4gICAgICBkYXRlczogW1xuICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHRvZGF5LCAtMzY2KSksXG4gICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQodG9kYXksIC0xKSksXG4gICAgICBdLFxuICAgIH0sXG4gIF07XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidHJpZ2dlclRlbXBsYXRlOyBlbHNlIHN0YW5kYXJkVHJpZ2dlclwiPlxuICA8YnV0dG9uXG4gICAgI2N1c3RvbVRyaWdnZXJCdXR0b25cbiAgICAoY2xpY2spPVwib3BlbiQubmV4dCh0cnVlKVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIihkaXNhYmxlZCQgfCBhc3luYykgPyAndHJ1ZScgOiBudWxsXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyaWdnZXJUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcGVuOiBvcGVuJCB8IGFzeW5jIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRUcmlnZ2VyPlxuICA8cml2LWlucHV0LWxhYmVsXG4gICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICBbaGVscF09XCJoZWxwXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtzdGF0ZV09XCJzdGF0ZVwiXG4gICAgW2Vycm9yTWVzc2FnZV09XCJlcnJvck1lc3NhZ2VcIlxuICAgIFtsYWJlbEFjdGlvblRleHRdPVwibGFiZWxBY3Rpb25UZXh0XCJcbiAgICAobGFiZWxBY3Rpb24pPVwibGFiZWxBY3Rpb24uZW1pdCgkZXZlbnQpXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgICNzdGFuZGFyZFRyaWdnZXJCdXR0b25cbiAgICAgIGNsYXNzPVwidHJpZ2dlclwiXG4gICAgICBbY2xhc3Mud2FybmluZ109XCJzdGF0ZSA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgIFtjbGFzcy5lcnJvcl09XCJzdGF0ZSA9PT0gJ2Vycm9yJ1wiXG4gICAgICAoY2xpY2spPVwib3BlbiQubmV4dCh0cnVlKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCIoZGlzYWJsZWQkIHwgYXN5bmMpID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheVZhbHVlJCB8IGFzeW5jOyBlbHNlIHBsYWNlaG9sZGVyVmFsdWU7IGxldCBkaXNwbGF5XCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7IGRpc3BsYXkgfX08L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXJWYWx1ZT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZSBwbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyJCB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvblwiPlxuICAgICAgICA8cml2LWljb24gW25hbWVdPVwiJ0NhbGVuZGFyJ1wiIFtzaXplXT1cIjE2XCI+PC9yaXYtaWNvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9yaXYtaW5wdXQtbGFiZWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGVcbiAgI3NlbGZcbiAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZlwiXG4gIGxldC1pbnB1dFZhbHVlXG4gIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogKGRpc3RpbmN0VmFsdWUkIHwgYXN5bmMpIH1cIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib3BlbiQgfCBhc3luY1wiPlxuICAgIDxyaXYtY2FsbG91dFxuICAgICAgKnJpdi1vdmVybGF5XG4gICAgICBbYW5jaG9yXT1cImdldFRyaWdnZXIoKVwiXG4gICAgICBbc2hvd0NhcmV0XT1cImZhbHNlXCJcbiAgICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgICAgIFthbGxvd2VkUG9zaXRpb25zXT1cIltcbiAgICAgICAgJ3RvcC1sZWZ0JyxcbiAgICAgICAgJ3RvcC1yaWdodCcsXG4gICAgICAgICdib3R0b20tcmlnaHQnLFxuICAgICAgICAnYm90dG9tLWxlZnQnXG4gICAgICBdXCJcbiAgICAgIFtwcmVmZXJyZWRQb3NpdGlvbl09XCInYm90dG9tLXJpZ2h0J1wiXG4gICAgICAoY2xvc2UpPVwib3BlbiQubmV4dChmYWxzZSk7IHVzZXJTZWxlY3RlZERhdGUkLm5leHQoaW5wdXRWYWx1ZSlcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgW2NsYXNzLmluY2x1ZGUtcHJlc2V0XT1cInNob3dQcmVzZXRzXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UHJlc2V0c1wiIGNsYXNzPVwicHJlc2V0c1wiPlxuICAgICAgICAgIDxyaXYtc2ltcGxlLXNlbGVjdFxuICAgICAgICAgICAgW2xhYmVsXT1cIidEYXRlIHByZXNldHMnXCJcbiAgICAgICAgICAgIFtmaWx0ZXJhYmlsaXR5T3B0aW9uc109XCJ7IGVuYWJsZWQ6IHRydWUsIHBsYWNlaG9sZGVyOiAnU2VhcmNoJyB9XCJcbiAgICAgICAgICAgIFtvcmRlckJ5XT1cIidzb3VyY2UnXCJcbiAgICAgICAgICAgIFtvcHRpb25Hcm91cHNdPVwiXG4gICAgICAgICAgICAgIChmaWx0ZXJlZFByZXNldE9wdGlvbnMkIHwgYXN5bmMpID8/IFtdIHwgcml2T3B0aW9uR3JvdXBcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRPcHRpb25dPVwic2VsZWN0ZWRQcmVzZXQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgKHNlbGVjdGVkT3B0aW9uQ2hhbmdlKT1cInVzZXJTZWxlY3RlZFByZXNldCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI29wdGlvbiBsZXQtbm9kZT1cIm5vZGVcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgI3NlbGZcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxmXCJcbiAgICAgICAgICAgICAgICBsZXQtaXNGYXZvcml0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IChmYXZvcml0ZVByZXNldElkcyQgfCBhc3luYyk/LmluY2x1ZGVzKG5vZGUuaWQpXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJlc2V0XCIgW2NsYXNzLmZhdm9yaXRlXT1cImlzRmF2b3JpdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8cml2LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIm5vZGUudGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpbmRpY2VzXT1cIm5vZGUudGl0bGVIaWdobGlnaHRJbmRpY2VzIHx8IFtdXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcml2LWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN1YnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJub2RlLnN1YnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5kaWNlc109XCJub2RlLnN1YnRpdGxlSGlnaGxpZ2h0SW5kaWNlcyB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgID48L3Jpdi1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNldEZhdm9yaXRlKG5vZGUsICFpc0Zhdm9yaXRlKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cml2LWljb25cbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJpc0Zhdm9yaXRlID8gJ0hlYXJ0QWN0aXZlJyA6ICdIZWFydCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIjE2XCJcbiAgICAgICAgICAgICAgICAgICAgICBbcml2VG9vbHRpcF09XCInTWFyayBhcyBmYXZvcml0ZSdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3Jpdi1zaW1wbGUtc2VsZWN0PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI3NlbGZcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGZcIlxuICAgICAgICAgICAgbGV0LWZhdm9yaXRlc1xuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBmYXZvcml0ZVByZXNldHMkIHwgYXN5bmMgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHJpdi1pbnB1dC1sYWJlbCAqbmdJZj1cImZhdm9yaXRlcy5sZW5ndGhcIiBbbGFiZWxdPVwiJ0Zhdm9yaXRlcydcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNob3J0Y3V0c1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmYXZvcml0ZSBvZiBmYXZvcml0ZXNcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIihzZWxlY3RlZFByZXNldCQgfCBhc3luYyk/LmlkID09PSBmYXZvcml0ZS5pZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXNlclNlbGVjdGVkUHJlc2V0JC5uZXh0KGZhdm9yaXRlKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgZmF2b3JpdGUudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRGYXZvcml0ZShmYXZvcml0ZSwgZmFsc2UpXCJcbiAgICAgICAgICAgICAgICAgICAgW3JpdlRvb2x0aXBdPVwiJ1JlbW92ZSBmYXZvcml0ZSdcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHJpdi1pY29uIFtuYW1lXT1cIidIZWFydEFjdGl2ZSdcIiBbc2l6ZV09XCIxNlwiPjwvcml2LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3Jpdi1pbnB1dC1sYWJlbD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXJzXCI+XG4gICAgICAgICAgPHJpdi1jYWxlbmRhclxuICAgICAgICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgICAgICAgIFthY3RpdmVZZWFyTW9udGhdPVwiKGxlZnRBY3RpdmVZZWFyTW9udGgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIChhY3RpdmVZZWFyTW9udGhDaGFuZ2UpPVwidXNlckxlZnRBY3RpdmVZZWFyTW9udGgkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZGlzcGxheU1pbl09XCIobWluJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbZGlzcGxheU1heF09XCIobWF4JCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbc2VsZWN0YWJsZU1pbl09XCIobGVmdE1pbiQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW3NlbGVjdGFibGVNYXhdPVwiKGxlZnRNYXgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtvbWl0UmFuZ2VdPVwiKGxlZnRPbWl0UmFuZ2UkIHwgYXN5bmMpIHx8IFtUT0RBWSwgVE9EQVldXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cIihzZWxlY3RlZFZhbHVlJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICAoZGF0ZVNlbGVjdCk9XCJ1c2VyU2VsZWN0ZWREYXRlJC5uZXh0KCRldmVudClcIlxuICAgICAgICAgID48L3Jpdi1jYWxlbmRhcj5cbiAgICAgICAgICA8cml2LWNhbGVuZGFyXG4gICAgICAgICAgICBjbGFzcz1cInJpZ2h0XCJcbiAgICAgICAgICAgIFthY3RpdmVZZWFyTW9udGhdPVwiKHJpZ2h0QWN0aXZlWWVhck1vbnRoJCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICAoYWN0aXZlWWVhck1vbnRoQ2hhbmdlKT1cInVzZXJSaWdodEFjdGl2ZVllYXJNb250aCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtkaXNwbGF5TWluXT1cIihtaW4kIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtkaXNwbGF5TWF4XT1cIihtYXgkIHwgYXN5bmMpIHx8IFRPREFZXCJcbiAgICAgICAgICAgIFtzZWxlY3RhYmxlTWluXT1cIihyaWdodE1pbiQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgW3NlbGVjdGFibGVNYXhdPVwiKHJpZ2h0TWF4JCB8IGFzeW5jKSB8fCBUT0RBWVwiXG4gICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZV09XCIoc2VsZWN0ZWRWYWx1ZSQgfCBhc3luYykgfHwgVE9EQVlcIlxuICAgICAgICAgICAgKGRhdGVTZWxlY3QpPVwidXNlclNlbGVjdGVkRGF0ZSQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9yaXYtY2FsZW5kYXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxmb290ZXIgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInVzZXJTZWxlY3RlZERhdGUkLm5leHQodW5kZWZpbmVkKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDbGVhclxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgICBbdmFyaWFudF09XCIncHJpbWFyeSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW4kLm5leHQoZmFsc2UpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIERvbmVcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L3Jpdi1jYWxsb3V0PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -27,10 +27,10 @@ export class FilterChipComponent {
27
27
  onClick(e) {
28
28
  this.chipClicked.emit(!this.selected);
29
29
  }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterChipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FilterChipComponent, selector: "riv-filter-chip", inputs: { selected: "selected" }, outputs: { chipClicked: "chipClicked" }, host: { listeners: { "click": "onClick($event)" }, properties: { "class": "this.classes" } }, ngImport: i0, template: "<riv-icon\n *ngIf=\"selected\"\n class=\"checkmark\"\n [name]=\"'Check'\"\n [size]=\"12\"\n></riv-icon>\n<ng-content></ng-content>\n", styles: [":host{--badge-multiplier: 4;display:inline-flex;align-items:center;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-1);font-weight:var(--font-weight-heavy);white-space:nowrap;border-radius:calc(var(--base-grid-size) * var(--badge-multiplier));min-width:calc(var(--base-grid-size) * var(--badge-multiplier));min-height:calc(var(--base-grid-size) * var(--badge-multiplier));max-width:100%;background-color:var(--badge-background-color);border:var(--border-width) solid var(--border-light);padding:var(--size-xsmall) var(--size-medium)}:host:not(.selected){--badge-background-color: var(--surface-light-0)}:host.selected{--badge-background-color: var(--baloo-05)}.checkmark{padding-right:var(--size-xsmall)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterChipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FilterChipComponent, selector: "riv-filter-chip", inputs: { selected: "selected" }, outputs: { chipClicked: "chipClicked" }, host: { listeners: { "click": "onClick($event)" }, properties: { "class": "this.classes" } }, ngImport: i0, template: "<riv-icon\n *ngIf=\"selected\"\n class=\"checkmark\"\n [name]=\"'Check'\"\n [size]=\"12\"\n></riv-icon>\n<ng-content></ng-content>\n", styles: [":host{--badge-multiplier: 4;display:inline-flex;align-items:center;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-1);font-weight:var(--font-weight-heavy);white-space:nowrap;border-radius:calc(var(--base-grid-size) * var(--badge-multiplier));min-width:calc(var(--base-grid-size) * var(--badge-multiplier));min-height:calc(var(--base-grid-size) * var(--badge-multiplier));max-width:100%;background-color:var(--badge-background-color);border:var(--border-width) solid var(--border-light);padding:var(--size-xsmall) var(--size-medium)}:host:not(.selected){--badge-background-color: var(--surface-light-0)}:host.selected{--badge-background-color: var(--baloo-05)}.checkmark{padding-right:var(--size-xsmall)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterChipComponent, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterChipComponent, decorators: [{
34
34
  type: Component,
35
35
  args: [{ selector: 'riv-filter-chip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<riv-icon\n *ngIf=\"selected\"\n class=\"checkmark\"\n [name]=\"'Check'\"\n [size]=\"12\"\n></riv-icon>\n<ng-content></ng-content>\n", styles: [":host{--badge-multiplier: 4;display:inline-flex;align-items:center;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-1);font-weight:var(--font-weight-heavy);white-space:nowrap;border-radius:calc(var(--base-grid-size) * var(--badge-multiplier));min-width:calc(var(--base-grid-size) * var(--badge-multiplier));min-height:calc(var(--base-grid-size) * var(--badge-multiplier));max-width:100%;background-color:var(--badge-background-color);border:var(--border-width) solid var(--border-light);padding:var(--size-xsmall) var(--size-medium)}:host:not(.selected){--badge-background-color: var(--surface-light-0)}:host.selected{--badge-background-color: var(--baloo-05)}.checkmark{padding-right:var(--size-xsmall)}\n"] }]
36
36
  }], ctorParameters: () => [], propDecorators: { selected: [{
@@ -44,10 +44,10 @@ export class FilterDropdownComponent {
44
44
  this.openChange.emit(open);
45
45
  this.cdr.markForCheck();
46
46
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FilterDropdownComponent, selector: "riv-filter-dropdown", inputs: { label: "label", value: "value", valueExtraWidth: "valueExtraWidth", count: "count", active: "active", removable: "removable", disabled: "disabled", tooltip: "tooltip", open: "open", preferredPosition: "preferredPosition", allowedPositions: "allowedPositions" }, outputs: { openChange: "openChange", remove: "remove" }, host: { properties: { "class": "this.classes" } }, queries: [{ propertyName: "triggerTemplate", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "contentTemplate", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<span #anchor>\n <button\n *ngIf=\"triggerTemplate; else defaultTrigger\"\n class=\"custom-trigger\"\n type=\"button\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"label || null\"\n [attr.aria-expanded]=\"open\"\n (click)=\"setOpen(!open)\"\n >\n <ng-container\n *ngTemplateOutlet=\"triggerTemplate; context: { open: open }\"\n ></ng-container>\n </button>\n <ng-template #defaultTrigger>\n <div\n class=\"trigger\"\n [rivTooltip]=\"tooltip ?? undefined\"\n (click)=\"!disabled && setOpen(!open)\"\n >\n <button\n *ngIf=\"removable && !disabled\"\n rivButton\n type=\"button\"\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n [attr.aria-label]=\"'Remove ' + label\"\n (click)=\"$event.stopPropagation(); remove.emit()\"\n ></button>\n <span class=\"label\">{{ label }}</span>\n <ng-container *ngIf=\"value !== null\">\n <div class=\"divider\"></div>\n <span class=\"value\" [style.max-width.px]=\"120 + valueExtraWidth\">{{\n value\n }}</span>\n </ng-container>\n <span *ngIf=\"(count ?? 0) > 0\" class=\"count\">\n <riv-badge\n [size]=\"'xsmall'\"\n [variant]=\"disabled ? 'disabled' : 'brand'\"\n >{{ count }}</riv-badge\n >\n </span>\n <button\n *ngIf=\"!disabled\"\n rivButton\n type=\"button\"\n [variant]=\"'ghost'\"\n [icon]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [attr.aria-label]=\"label\"\n [attr.aria-expanded]=\"open\"\n ></button>\n </div>\n </ng-template>\n</span>\n\n<ng-container *ngIf=\"open && !disabled\">\n <riv-callout\n *riv-overlay\n [anchor]=\"anchor\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"preferredPosition\"\n [allowedPositions]=\"allowedPositions\"\n (close)=\"setOpen(false)\"\n >\n <div class=\"content\">\n <ng-container *ngTemplateOutlet=\"contentTemplate ?? null\"></ng-container>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [":host{flex:0 0 auto}.custom-trigger{display:inline-flex;font:inherit;color:inherit}.trigger{display:inline-flex;align-items:center;box-sizing:content-box;height:var(--type-2-line-height-0);padding:calc(var(--base-grid-size) * 2) 0;border:var(--border-width) solid var(--border-light-blend);border-radius:var(--border-radius-small);background-color:transparent;font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);cursor:pointer;transition:background-color var(--medium-transition)}.trigger:hover{background-color:var(--black-20)}.trigger:active{background-color:var(--black-40)}:host(.active) .trigger{background-color:var(--purp-10)}:host(.active) .trigger:hover{background-color:var(--purp-20)}:host(.active) .trigger:active{background-color:var(--purp-30)}:host(.removable:not(.active)) .trigger{border-style:dashed}:host(:not(.removable)) .trigger,:host(.disabled) .trigger{padding-left:var(--size-medium)}:host(.disabled) .trigger{padding-right:var(--size-medium);border-color:var(--surface-light-4);background-color:transparent;color:var(--type-light-disabled);cursor:default}:host(.disabled.active) .trigger{background-color:var(--surface-light-1)}.label{flex:1 0 auto;font-weight:var(--font-weight-heavy)}.divider{width:var(--border-width);height:var(--type-3-font-size);margin:0 var(--size-small);background-color:var(--border-light)}.value{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.count{padding-left:var(--size-small)}.content{min-width:calc(var(--base-grid-size) * 74);padding:var(--size-large)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.BadgeComponent, selector: "riv-badge", inputs: ["variant", "size"] }, { kind: "component", type: i3.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "directive", type: i5.OverlayDirective, selector: "[riv-overlay]" }, { kind: "directive", type: i6.TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipAnchor", "rivTooltipCloseDelay", "rivTooltipOpenDelay", "rivTooltipGracePeriod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FilterDropdownComponent, selector: "riv-filter-dropdown", inputs: { label: "label", value: "value", valueExtraWidth: "valueExtraWidth", count: "count", active: "active", removable: "removable", disabled: "disabled", tooltip: "tooltip", open: "open", preferredPosition: "preferredPosition", allowedPositions: "allowedPositions" }, outputs: { openChange: "openChange", remove: "remove" }, host: { properties: { "class": "this.classes" } }, queries: [{ propertyName: "triggerTemplate", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "contentTemplate", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<span #anchor>\n <button\n *ngIf=\"triggerTemplate; else defaultTrigger\"\n class=\"custom-trigger\"\n type=\"button\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"label || null\"\n [attr.aria-expanded]=\"open\"\n (click)=\"setOpen(!open)\"\n >\n <ng-container\n *ngTemplateOutlet=\"triggerTemplate; context: { open: open }\"\n ></ng-container>\n </button>\n <ng-template #defaultTrigger>\n <div\n class=\"trigger\"\n [rivTooltip]=\"tooltip ?? undefined\"\n (click)=\"!disabled && setOpen(!open)\"\n >\n <button\n *ngIf=\"removable && !disabled\"\n rivButton\n type=\"button\"\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n [attr.aria-label]=\"'Remove ' + label\"\n (click)=\"$event.stopPropagation(); remove.emit()\"\n ></button>\n <span class=\"label\">{{ label }}</span>\n <ng-container *ngIf=\"value !== null\">\n <div class=\"divider\"></div>\n <span class=\"value\" [style.max-width.px]=\"120 + valueExtraWidth\">{{\n value\n }}</span>\n </ng-container>\n <span *ngIf=\"(count ?? 0) > 0\" class=\"count\">\n <riv-badge\n [size]=\"'xsmall'\"\n [variant]=\"disabled ? 'disabled' : 'brand'\"\n >{{ count }}</riv-badge\n >\n </span>\n <button\n *ngIf=\"!disabled\"\n rivButton\n type=\"button\"\n [variant]=\"'ghost'\"\n [icon]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [attr.aria-label]=\"label\"\n [attr.aria-expanded]=\"open\"\n ></button>\n </div>\n </ng-template>\n</span>\n\n<ng-container *ngIf=\"open && !disabled\">\n <riv-callout\n *riv-overlay\n [anchor]=\"anchor\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"preferredPosition\"\n [allowedPositions]=\"allowedPositions\"\n (close)=\"setOpen(false)\"\n >\n <div class=\"content\">\n <ng-container *ngTemplateOutlet=\"contentTemplate ?? null\"></ng-container>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [":host{flex:0 0 auto}.custom-trigger{display:inline-flex;font:inherit;color:inherit}.trigger{display:inline-flex;align-items:center;box-sizing:content-box;height:var(--type-2-line-height-0);padding:calc(var(--base-grid-size) * 2) 0;border:var(--border-width) solid var(--border-light-blend);border-radius:var(--border-radius-small);background-color:transparent;font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);cursor:pointer;transition:background-color var(--medium-transition)}.trigger:hover{background-color:var(--black-20)}.trigger:active{background-color:var(--black-40)}:host(.active) .trigger{background-color:var(--purp-10)}:host(.active) .trigger:hover{background-color:var(--purp-20)}:host(.active) .trigger:active{background-color:var(--purp-30)}:host(.removable:not(.active)) .trigger{border-style:dashed}:host(:not(.removable)) .trigger,:host(.disabled) .trigger{padding-left:var(--size-medium)}:host(.disabled) .trigger{padding-right:var(--size-medium);border-color:var(--surface-light-4);background-color:transparent;color:var(--type-light-disabled);cursor:default}:host(.disabled.active) .trigger{background-color:var(--surface-light-1)}.label{flex:1 0 auto;font-weight:var(--font-weight-heavy)}.divider{width:var(--border-width);height:var(--type-3-font-size);margin:0 var(--size-small);background-color:var(--border-light)}.value{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.count{padding-left:var(--size-small)}.content{min-width:calc(var(--base-grid-size) * 74);padding:var(--size-large)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.BadgeComponent, selector: "riv-badge", inputs: ["variant", "size"] }, { kind: "component", type: i3.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "directive", type: i5.OverlayDirective, selector: "[riv-overlay]" }, { kind: "directive", type: i6.TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipAnchor", "rivTooltipCloseDelay", "rivTooltipOpenDelay", "rivTooltipGracePeriod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterDropdownComponent, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterDropdownComponent, decorators: [{
51
51
  type: Component,
52
52
  args: [{ selector: 'riv-filter-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span #anchor>\n <button\n *ngIf=\"triggerTemplate; else defaultTrigger\"\n class=\"custom-trigger\"\n type=\"button\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"label || null\"\n [attr.aria-expanded]=\"open\"\n (click)=\"setOpen(!open)\"\n >\n <ng-container\n *ngTemplateOutlet=\"triggerTemplate; context: { open: open }\"\n ></ng-container>\n </button>\n <ng-template #defaultTrigger>\n <div\n class=\"trigger\"\n [rivTooltip]=\"tooltip ?? undefined\"\n (click)=\"!disabled && setOpen(!open)\"\n >\n <button\n *ngIf=\"removable && !disabled\"\n rivButton\n type=\"button\"\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n [attr.aria-label]=\"'Remove ' + label\"\n (click)=\"$event.stopPropagation(); remove.emit()\"\n ></button>\n <span class=\"label\">{{ label }}</span>\n <ng-container *ngIf=\"value !== null\">\n <div class=\"divider\"></div>\n <span class=\"value\" [style.max-width.px]=\"120 + valueExtraWidth\">{{\n value\n }}</span>\n </ng-container>\n <span *ngIf=\"(count ?? 0) > 0\" class=\"count\">\n <riv-badge\n [size]=\"'xsmall'\"\n [variant]=\"disabled ? 'disabled' : 'brand'\"\n >{{ count }}</riv-badge\n >\n </span>\n <button\n *ngIf=\"!disabled\"\n rivButton\n type=\"button\"\n [variant]=\"'ghost'\"\n [icon]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [attr.aria-label]=\"label\"\n [attr.aria-expanded]=\"open\"\n ></button>\n </div>\n </ng-template>\n</span>\n\n<ng-container *ngIf=\"open && !disabled\">\n <riv-callout\n *riv-overlay\n [anchor]=\"anchor\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"preferredPosition\"\n [allowedPositions]=\"allowedPositions\"\n (close)=\"setOpen(false)\"\n >\n <div class=\"content\">\n <ng-container *ngTemplateOutlet=\"contentTemplate ?? null\"></ng-container>\n </div>\n </riv-callout>\n</ng-container>\n", styles: [":host{flex:0 0 auto}.custom-trigger{display:inline-flex;font:inherit;color:inherit}.trigger{display:inline-flex;align-items:center;box-sizing:content-box;height:var(--type-2-line-height-0);padding:calc(var(--base-grid-size) * 2) 0;border:var(--border-width) solid var(--border-light-blend);border-radius:var(--border-radius-small);background-color:transparent;font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);cursor:pointer;transition:background-color var(--medium-transition)}.trigger:hover{background-color:var(--black-20)}.trigger:active{background-color:var(--black-40)}:host(.active) .trigger{background-color:var(--purp-10)}:host(.active) .trigger:hover{background-color:var(--purp-20)}:host(.active) .trigger:active{background-color:var(--purp-30)}:host(.removable:not(.active)) .trigger{border-style:dashed}:host(:not(.removable)) .trigger,:host(.disabled) .trigger{padding-left:var(--size-medium)}:host(.disabled) .trigger{padding-right:var(--size-medium);border-color:var(--surface-light-4);background-color:transparent;color:var(--type-light-disabled);cursor:default}:host(.disabled.active) .trigger{background-color:var(--surface-light-1)}.label{flex:1 0 auto;font-weight:var(--font-weight-heavy)}.divider{width:var(--border-width);height:var(--type-3-font-size);margin:0 var(--size-small);background-color:var(--border-light)}.value{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.count{padding-left:var(--size-small)}.content{min-width:calc(var(--base-grid-size) * 74);padding:var(--size-large)}\n"] }]
53
53
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { label: [{
@@ -11,10 +11,10 @@ export class InputLabelComponent {
11
11
  this.state = 'valid';
12
12
  this.labelAction = new EventEmitter();
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: InputLabelComponent, selector: "riv-input-label", inputs: { label: "label", help: "help", required: "required", labelActionText: "labelActionText", errorMessage: "errorMessage", state: "state" }, outputs: { labelAction: "labelAction" }, ngImport: i0, template: "<label *ngIf=\"label\">\n <span class=\"title\">\n {{ label }}\n <span *ngIf=\"required\">*</span>\n </span>\n <button\n *ngIf=\"labelActionText\"\n rivLink\n type=\"button\"\n (click)=\"labelAction.emit($event)\"\n type=\"button\"\n >\n {{ labelActionText }}\n </button>\n <riv-help *ngIf=\"help\" [help]=\"help\" [size]=\"12\"></riv-help>\n</label>\n<div class=\"content\"><ng-content></ng-content></div>\n<riv-validation-message\n *ngIf=\"errorMessage\"\n [message]=\"errorMessage\"\n></riv-validation-message>\n", styles: [":host{max-width:100%;display:flex;flex-direction:column}label{display:flex;justify-content:space-between;align-items:center;gap:var(--size-small);font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-1);font-weight:var(--font-weight-heavy);color:var(--type-light-high-contrast);margin-bottom:var(--base-grid-size)}label .title{flex-grow:1}label .action{margin:0 var(--size-xxsmall)}label riv-icon{color:var(--type-light-low-contrast)}riv-help{margin-left:var(--size-xsmall)}.content{display:flex;flex-direction:column;flex:1;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.HelpComponent, selector: "riv-help", inputs: ["help", "size"] }, { kind: "component", type: i3.LinkComponent, selector: "[rivLink]", inputs: ["disabled", "locked", "theme", "variant"] }, { kind: "component", type: i4.ValidationMessageComponent, selector: "riv-validation-message", inputs: ["message"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InputLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: InputLabelComponent, selector: "riv-input-label", inputs: { label: "label", help: "help", required: "required", labelActionText: "labelActionText", errorMessage: "errorMessage", state: "state" }, outputs: { labelAction: "labelAction" }, ngImport: i0, template: "<label *ngIf=\"label\">\n <span class=\"title\">\n {{ label }}\n <span *ngIf=\"required\">*</span>\n </span>\n <button\n *ngIf=\"labelActionText\"\n rivLink\n type=\"button\"\n (click)=\"labelAction.emit($event)\"\n type=\"button\"\n >\n {{ labelActionText }}\n </button>\n <riv-help *ngIf=\"help\" [help]=\"help\" [size]=\"12\"></riv-help>\n</label>\n<div class=\"content\"><ng-content></ng-content></div>\n<riv-validation-message\n *ngIf=\"errorMessage\"\n [message]=\"errorMessage\"\n></riv-validation-message>\n", styles: [":host{max-width:100%;display:flex;flex-direction:column}label{display:flex;justify-content:space-between;align-items:center;gap:var(--size-small);font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-1);font-weight:var(--font-weight-heavy);color:var(--type-light-high-contrast);margin-bottom:var(--base-grid-size)}label .title{flex-grow:1}label .action{margin:0 var(--size-xxsmall)}label riv-icon{color:var(--type-light-low-contrast)}riv-help{margin-left:var(--size-xsmall)}.content{display:flex;flex-direction:column;flex:1;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.HelpComponent, selector: "riv-help", inputs: ["help", "size"] }, { kind: "component", type: i3.LinkComponent, selector: "[rivLink]", inputs: ["disabled", "locked", "theme", "variant"] }, { kind: "component", type: i4.ValidationMessageComponent, selector: "riv-validation-message", inputs: ["message"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputLabelComponent, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InputLabelComponent, decorators: [{
18
18
  type: Component,
19
19
  args: [{ selector: 'riv-input-label', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label *ngIf=\"label\">\n <span class=\"title\">\n {{ label }}\n <span *ngIf=\"required\">*</span>\n </span>\n <button\n *ngIf=\"labelActionText\"\n rivLink\n type=\"button\"\n (click)=\"labelAction.emit($event)\"\n type=\"button\"\n >\n {{ labelActionText }}\n </button>\n <riv-help *ngIf=\"help\" [help]=\"help\" [size]=\"12\"></riv-help>\n</label>\n<div class=\"content\"><ng-content></ng-content></div>\n<riv-validation-message\n *ngIf=\"errorMessage\"\n [message]=\"errorMessage\"\n></riv-validation-message>\n", styles: [":host{max-width:100%;display:flex;flex-direction:column}label{display:flex;justify-content:space-between;align-items:center;gap:var(--size-small);font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-1);font-weight:var(--font-weight-heavy);color:var(--type-light-high-contrast);margin-bottom:var(--base-grid-size)}label .title{flex-grow:1}label .action{margin:0 var(--size-xxsmall)}label riv-icon{color:var(--type-light-low-contrast)}riv-help{margin-left:var(--size-xsmall)}.content{display:flex;flex-direction:column;flex:1;justify-content:center}\n"] }]
20
20
  }], propDecorators: { label: [{