@ti-tecnologico-de-monterrey-oficial/ds-ng 1.5.1118-a → 1.5.1118-b

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 (22) hide show
  1. package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.component.mjs +15 -10
  2. package/esm2022/lib/components/bmb-calendar/bmb-calendar.component.mjs +26 -3
  3. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-header/bmb-calendar-header.component.mjs +2 -3
  4. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-schedule-cards/bmb-calendar-schedule-cards.component.mjs +3 -3
  5. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-month/bmb-calendar-template-month.component.mjs +3 -3
  6. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-week/bmb-calendar-template-week.component.mjs +3 -3
  7. package/esm2022/lib/components/bmb-checkbox/bmb-checkbox.component.mjs +3 -3
  8. package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.component.mjs +3 -3
  9. package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.interface.mjs +1 -1
  10. package/esm2022/lib/components/bmb-modal/bmb-modal.interface.mjs +1 -1
  11. package/esm2022/lib/components/bmb-modal/bmb-native-modal.component.mjs +17 -9
  12. package/esm2022/lib/components/bmb-portal/bmb-portal.component.mjs +3 -3
  13. package/esm2022/lib/components/bmb-radial/bmb-radial.component.mjs +3 -3
  14. package/esm2022/lib/components/bmb-step-progress-bar/bmb-step-progress-bar.component.mjs +3 -3
  15. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +68 -35
  16. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
  17. package/lib/components/bmb-alert-center/bmb-alert-center.component.d.ts +3 -3
  18. package/lib/components/bmb-calendar/bmb-calendar.component.d.ts +2 -0
  19. package/lib/components/bmb-filter-card/bmb-filter-card.interface.d.ts +2 -0
  20. package/lib/components/bmb-modal/bmb-modal.interface.d.ts +4 -1
  21. package/lib/components/bmb-modal/bmb-native-modal.component.d.ts +6 -5
  22. package/package.json +2 -2
@@ -7,17 +7,16 @@ import { DateTime } from 'luxon';
7
7
  import { BmbAlertCenterFormComponent } from './bmb-alert-center-form/bmb-alert-center-form.component';
8
8
  import { BmbButtonDirective } from '../../directives/bmb-button/button.directive';
9
9
  import { BmbImageComponent } from '../bmb-image/bmb-image.component';
10
- import { BmbModalComponent } from '../bmb-modal/bmb-modal.component';
11
10
  import { BmbAlertCenterAdsComponent } from './bmb-alert-center-ads/bmb-alert-center-ads.component';
12
11
  import { BmbAlertCenterEmptyComponent } from './bmb-alert-center-empty/bmb-alert-center-empty.component';
13
12
  import { BmbLoaderComponent } from '../bmb-loader/bmb-loader.component';
14
13
  import * as i0 from "@angular/core";
15
- import * as i1 from "@angular/material/dialog";
14
+ import * as i1 from "../../services/native-modal.service";
16
15
  import * as i2 from "./bmb-alert-center.service";
17
16
  import * as i3 from "@angular/common";
18
17
  export class BmbAlertCenterComponent {
19
- constructor(matDialog, bmbAlertCenterService) {
20
- this.matDialog = matDialog;
18
+ constructor(nativeModalService, bmbAlertCenterService) {
19
+ this.nativeModalService = nativeModalService;
21
20
  this.bmbAlertCenterService = bmbAlertCenterService;
22
21
  this.dateFormat = input('dd/MM/yyyy');
23
22
  this.tabsName = input([
@@ -125,17 +124,23 @@ export class BmbAlertCenterComponent {
125
124
  title: item.title,
126
125
  content: this.detailContent,
127
126
  size: 'small',
128
- type: 'informative',
129
127
  scrollable: true,
130
- closeAction: this.handleCloseDetail.bind(this, item),
128
+ actions: [{
129
+ buttonName: 'close',
130
+ label: 'Cerrar',
131
+ appearance: 'secondary-outlined',
132
+ action: this.handleCloseDetail.bind(this, item),
133
+ }],
134
+ closeModalClicked: this.handleCloseDetail.bind(this, item),
131
135
  };
132
- this.matDialog.open(BmbModalComponent, { data });
136
+ this.nativeModalService.openModal(data);
133
137
  }
134
138
  this.showAlertDetail.emit(alertData);
135
139
  }
136
140
  handleCloseDetail(alert) {
137
141
  const { pDate, ...alertData } = alert;
138
142
  this.closeAlertDetail.emit(alertData);
143
+ this.nativeModalService.closeAllModals();
139
144
  }
140
145
  handleAlertEvent(alert) {
141
146
  this.alertEvent.emit(alert);
@@ -169,7 +174,7 @@ export class BmbAlertCenterComponent {
169
174
  event: eventType,
170
175
  });
171
176
  }
172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbAlertCenterComponent, deps: [{ token: i1.MatDialog }, { token: i2.BmbAlertCenterService }], target: i0.ɵɵFactoryTarget.Component }); }
177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbAlertCenterComponent, deps: [{ token: i1.BmbNativeModalService }, { token: i2.BmbAlertCenterService }], target: i0.ɵɵFactoryTarget.Component }); }
173
178
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BmbAlertCenterComponent, isStandalone: true, selector: "bmb-alert-center", inputs: { dateFormat: { classPropertyName: "dateFormat", publicName: "dateFormat", isSignal: true, isRequired: false, transformFunction: null }, tabsName: { classPropertyName: "tabsName", publicName: "tabsName", isSignal: true, isRequired: false, transformFunction: null }, hideTabs: { classPropertyName: "hideTabs", publicName: "hideTabs", isSignal: true, isRequired: false, transformFunction: null }, enableMultipleSelection: { classPropertyName: "enableMultipleSelection", publicName: "enableMultipleSelection", isSignal: true, isRequired: false, transformFunction: null }, showMobileVersion: { classPropertyName: "showMobileVersion", publicName: "showMobileVersion", isSignal: true, isRequired: false, transformFunction: null }, emptyStateData: { classPropertyName: "emptyStateData", publicName: "emptyStateData", isSignal: true, isRequired: false, transformFunction: null }, alerts: { classPropertyName: "alerts", publicName: "alerts", isSignal: true, isRequired: false, transformFunction: null }, advertisements: { classPropertyName: "advertisements", publicName: "advertisements", isSignal: true, isRequired: false, transformFunction: null }, selectedTab: { classPropertyName: "selectedTab", publicName: "selectedTab", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChangeAlertStatus: "onChangeAlertStatus", alertEvent: "alertEvent", showAlertDetail: "showAlertDetail", closeAlertDetail: "closeAlertDetail", navigationBarEvents: "navigationBarEvents", selectedTab: "selectedTabChange" }, viewQueries: [{ propertyName: "detailContent", first: true, predicate: ["detailContent"], descendants: true, read: TemplateRef }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<section class=\"bmb_alert-center\" #container bmbLayout margin=\"none\">\n <div\n bmbLayoutItem\n [colSm]=\"4\"\n [colLg]=\"showMobileVersion() ? 12 : 5\"\n class=\"bmb_alert-center-main\"\n [ngClass]=\"{ 'bmb_alert-center-main-no-border': showMobileVersion() }\"\n >\n @if (isLoading()) {\n <bmb-loader\n title=\"Cargando...\"\n subtitle=\"Cargando las notificaciones\"\n [overlay]=\"false\"\n [isVisible]=\"true\"\n [errorState]=\"false\"\n appearance=\"normal\"\n icon=\"wifi_off\"\n [actions]=\"false\"\n buttonPrimary=\"Reintentar\"\n buttonSecondary=\"Salir\"\n [showInline]=\"true\"\n />\n } @else {\n @if (!hideTabs()) {\n <bmb-tabs [tabs]=\"tabs()\" [(selectedTabId)]=\"selectedTab\" />\n }\n @if (selectedTab() === 1) {\n <bmb-alert-center-form\n (showAlertDetail)=\"handleShowAlert($event)\"\n [eventsInCategories]=\"eventsInCategories()\"\n [enableMultipleSelection]=\"enableMultipleSelection()\"\n (changeAlertStatus)=\"handleChangeAlertStatus($event)\"\n [emptyStateData]=\"emptyStateData()\"\n (navigationBarEvents)=\"handleNavigationBarEvents($event)\"\n filterBy=\"all\"\n />\n } @else if (selectedTab() === 2) {\n <bmb-alert-center-form\n (showAlertDetail)=\"handleShowAlert($event)\"\n [eventsInCategories]=\"eventsInCategories()\"\n [enableMultipleSelection]=\"enableMultipleSelection()\"\n (changeAlertStatus)=\"handleChangeAlertStatus($event)\"\n [emptyStateData]=\"emptyStateData()\"\n (navigationBarEvents)=\"handleNavigationBarEvents($event)\"\n filterBy=\"unread\"\n />\n } @else if (selectedTab() === 3) {\n <bmb-alert-center-form\n (showAlertDetail)=\"handleShowAlert($event)\"\n [eventsInCategories]=\"eventsInCategories()\"\n [enableMultipleSelection]=\"enableMultipleSelection()\"\n (changeAlertStatus)=\"handleChangeAlertStatus($event)\"\n [emptyStateData]=\"emptyStateData()\"\n (navigationBarEvents)=\"handleNavigationBarEvents($event)\"\n filterBy=\"favorites\"\n />\n } @else if (selectedTab() === 4) {\n <bmb-alert-center-form\n (showAlertDetail)=\"handleShowAlert($event)\"\n [eventsInCategories]=\"eventsInCategories()\"\n (changeAlertStatus)=\"handleChangeAlertStatus($event)\"\n [emptyStateData]=\"emptyStateData()\"\n (navigationBarEvents)=\"handleNavigationBarEvents($event)\"\n filterBy=\"archived\"\n />\n } @else if (selectedTab() === 5) {\n <bmb-alert-center-ads\n [advertisements]=\"advertisementsList()\"\n (alertEvent)=\"handleAlertEvent($event)\"\n />\n } @else {\n <section bmbLayoutItem [colSm]=\"4\" [colLg]=\"12\">\n <bmb-alert-center-empty [data]=\"emptyStateData()\" />\n </section>\n }\n }\n </div>\n @if (!showMobileVersion() && alertList().length) {\n <section\n class=\"bmb_alert-center-content\"\n bmbLayoutItem\n [colSm]=\"4\"\n [colLg]=\"7\"\n >\n <ng-container [ngTemplateOutlet]=\"detailContent\" />\n </section>\n }\n</section>\n\n<ng-template #detailContent>\n @if (visibleAlert) {\n <section class=\"bmb_alert-center-content-modal\">\n <h1 class=\"font-bold-7 bmb_alert-center-content-modal-title\">\n {{ visibleAlert.title }}\n </h1>\n @for (item of visibleAlert.description; track $index) {\n @switch (item.type) {\n @case (\"paragraph\") {\n <p\n [ngClass]=\"'bmb_alert-center-content-' + (item.style ?? 'normal')\"\n >\n {{ item.text }}\n </p>\n }\n @case (\"image\") {\n <bmb-image\n [src]=\"item.href || ''\"\n [alt]=\"item.text\"\n borderRadius=\"none\"\n />\n }\n @case (\"video\") {\n <video [src]=\"item.href\" controls></video>\n }\n @case (\"title\") {\n <h3\n [ngClass]=\"'bmb_alert-center-content-' + (item.style ?? 'normal')\"\n >\n {{ item.text }}\n </h3>\n }\n @case (\"button\") {\n <button\n bmbButton\n type=\"button\"\n [appearance]=\"item.variant ?? 'primary'\"\n (click)=\"\n item.event\n ? item?.event(visibleAlert.id)\n : handleAlertEvent(visibleAlert)\n \"\n >\n {{ item.text }}\n </button>\n }\n @case (\"link\") {\n <a\n [ngClass]=\"'bmb_alert-center-content-' + (item.style ?? 'normal')\"\n [href]=\"item.href\"\n >{{ item.text }}</a\n >\n }\n }\n }\n </section>\n }\n</ng-template>\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_alert-center{height:100%;container-type:inline-size}.bmb_alert-center-main,.bmb_alert-center-content{height:100%}.bmb_alert-center-main{position:relative}@media (min-width: 1000px){.bmb_alert-center-main{border-right:.0625rem solid var(--general_contrasts-15)}}.bmb_alert-center-main-no-border{border-right:none!important}.bmb_alert-center .bmb-bottom-navigation-bar{justify-content:center}.bmb_alert-center .bmb-bottom-navigation-bar .bmb_interactive_icon-icon{height:auto;width:auto}.bmb_alert-center-content{display:flex;flex-direction:column;gap:var(--bmb-spacing-m);padding:var(--bmb-spacing-m);overflow:auto}@container (max-width: 350px){.bmb_alert-center-content{display:none}}@media (max-width: 1000px){.bmb_alert-center-content{display:none}}.bmb_alert-center-content-modal{display:flex;flex-direction:column;gap:var(--bmb-spacing-m);padding:var(--bmb-spacing-m)}@media (max-width: 1001px){.bmb_alert-center-content-modal-title{display:none}}.bmb_alert-center-content figure,.bmb_alert-center-content p{margin:0}.bmb_alert-center-content figure img,.bmb_alert-center-content p img{max-width:100%}\n"], dependencies: [{ kind: "component", type: BmbTabsComponent, selector: "bmb-tabs", inputs: ["appearanceContrast", "format", "tabs", "selectedTabId"], outputs: ["selectedTabIdChange", "selected"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: BmbLayoutDirective, selector: "[bmbLayout]", inputs: ["gapSize", "margin", "dynamicCols", "justify", "alignItems"] }, { kind: "directive", type: BmbLayoutItemDirective, selector: "[bmbLayoutItem]", inputs: ["colSm", "colLg", "marginLeft", "marginRight", "colGrow", "isDynamicItem"] }, { kind: "component", type: BmbAlertCenterFormComponent, selector: "bmb-alert-center-form", inputs: ["eventsInCategories", "filterBy", "enableMultipleSelection", "emptyStateData"], outputs: ["showAlertDetail", "changeAlertStatus", "navigationBarEvents"] }, { kind: "directive", type: BmbButtonDirective, selector: "[bmbButton]", inputs: ["icon", "iconSize", "position", "case", "appearance", "size", "isToggleActive", "enableButtonToggle", "isRounded", "isMobile", "iconAlt"] }, { kind: "component", type: BmbImageComponent, selector: "bmb-image", inputs: ["src", "mobileSrc", "alt", "width", "ratio", "borderRadius", "loading", "enableZoom", "isBlurredBackdrop"] }, { kind: "component", type: BmbAlertCenterAdsComponent, selector: "bmb-alert-center-ads", inputs: ["advertisements", "emptyStateData"], outputs: ["alertEvent"] }, { kind: "component", type: BmbAlertCenterEmptyComponent, selector: "bmb-alert-center-empty", inputs: ["data"] }, { kind: "component", type: BmbLoaderComponent, selector: "bmb-loader", inputs: ["appearance", "title", "icon", "subtitle", "overlay", "isVisible", "errorState", "actions", "buttonPrimary", "buttonSecondary", "showInline"], outputs: ["onButtonPrimary", "onButtonSecondary"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
174
179
  }
175
180
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbAlertCenterComponent, decorators: [{
@@ -186,11 +191,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
186
191
  BmbAlertCenterEmptyComponent,
187
192
  BmbLoaderComponent,
188
193
  ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"bmb_alert-center\" #container bmbLayout margin=\"none\">\n <div\n bmbLayoutItem\n [colSm]=\"4\"\n [colLg]=\"showMobileVersion() ? 12 : 5\"\n class=\"bmb_alert-center-main\"\n [ngClass]=\"{ 'bmb_alert-center-main-no-border': showMobileVersion() }\"\n >\n @if (isLoading()) {\n <bmb-loader\n title=\"Cargando...\"\n subtitle=\"Cargando las notificaciones\"\n [overlay]=\"false\"\n [isVisible]=\"true\"\n [errorState]=\"false\"\n appearance=\"normal\"\n icon=\"wifi_off\"\n [actions]=\"false\"\n buttonPrimary=\"Reintentar\"\n buttonSecondary=\"Salir\"\n [showInline]=\"true\"\n />\n } @else {\n @if (!hideTabs()) {\n <bmb-tabs [tabs]=\"tabs()\" [(selectedTabId)]=\"selectedTab\" />\n }\n @if (selectedTab() === 1) {\n <bmb-alert-center-form\n (showAlertDetail)=\"handleShowAlert($event)\"\n [eventsInCategories]=\"eventsInCategories()\"\n [enableMultipleSelection]=\"enableMultipleSelection()\"\n (changeAlertStatus)=\"handleChangeAlertStatus($event)\"\n [emptyStateData]=\"emptyStateData()\"\n (navigationBarEvents)=\"handleNavigationBarEvents($event)\"\n filterBy=\"all\"\n />\n } @else if (selectedTab() === 2) {\n <bmb-alert-center-form\n (showAlertDetail)=\"handleShowAlert($event)\"\n [eventsInCategories]=\"eventsInCategories()\"\n [enableMultipleSelection]=\"enableMultipleSelection()\"\n (changeAlertStatus)=\"handleChangeAlertStatus($event)\"\n [emptyStateData]=\"emptyStateData()\"\n (navigationBarEvents)=\"handleNavigationBarEvents($event)\"\n filterBy=\"unread\"\n />\n } @else if (selectedTab() === 3) {\n <bmb-alert-center-form\n (showAlertDetail)=\"handleShowAlert($event)\"\n [eventsInCategories]=\"eventsInCategories()\"\n [enableMultipleSelection]=\"enableMultipleSelection()\"\n (changeAlertStatus)=\"handleChangeAlertStatus($event)\"\n [emptyStateData]=\"emptyStateData()\"\n (navigationBarEvents)=\"handleNavigationBarEvents($event)\"\n filterBy=\"favorites\"\n />\n } @else if (selectedTab() === 4) {\n <bmb-alert-center-form\n (showAlertDetail)=\"handleShowAlert($event)\"\n [eventsInCategories]=\"eventsInCategories()\"\n (changeAlertStatus)=\"handleChangeAlertStatus($event)\"\n [emptyStateData]=\"emptyStateData()\"\n (navigationBarEvents)=\"handleNavigationBarEvents($event)\"\n filterBy=\"archived\"\n />\n } @else if (selectedTab() === 5) {\n <bmb-alert-center-ads\n [advertisements]=\"advertisementsList()\"\n (alertEvent)=\"handleAlertEvent($event)\"\n />\n } @else {\n <section bmbLayoutItem [colSm]=\"4\" [colLg]=\"12\">\n <bmb-alert-center-empty [data]=\"emptyStateData()\" />\n </section>\n }\n }\n </div>\n @if (!showMobileVersion() && alertList().length) {\n <section\n class=\"bmb_alert-center-content\"\n bmbLayoutItem\n [colSm]=\"4\"\n [colLg]=\"7\"\n >\n <ng-container [ngTemplateOutlet]=\"detailContent\" />\n </section>\n }\n</section>\n\n<ng-template #detailContent>\n @if (visibleAlert) {\n <section class=\"bmb_alert-center-content-modal\">\n <h1 class=\"font-bold-7 bmb_alert-center-content-modal-title\">\n {{ visibleAlert.title }}\n </h1>\n @for (item of visibleAlert.description; track $index) {\n @switch (item.type) {\n @case (\"paragraph\") {\n <p\n [ngClass]=\"'bmb_alert-center-content-' + (item.style ?? 'normal')\"\n >\n {{ item.text }}\n </p>\n }\n @case (\"image\") {\n <bmb-image\n [src]=\"item.href || ''\"\n [alt]=\"item.text\"\n borderRadius=\"none\"\n />\n }\n @case (\"video\") {\n <video [src]=\"item.href\" controls></video>\n }\n @case (\"title\") {\n <h3\n [ngClass]=\"'bmb_alert-center-content-' + (item.style ?? 'normal')\"\n >\n {{ item.text }}\n </h3>\n }\n @case (\"button\") {\n <button\n bmbButton\n type=\"button\"\n [appearance]=\"item.variant ?? 'primary'\"\n (click)=\"\n item.event\n ? item?.event(visibleAlert.id)\n : handleAlertEvent(visibleAlert)\n \"\n >\n {{ item.text }}\n </button>\n }\n @case (\"link\") {\n <a\n [ngClass]=\"'bmb_alert-center-content-' + (item.style ?? 'normal')\"\n [href]=\"item.href\"\n >{{ item.text }}</a\n >\n }\n }\n }\n </section>\n }\n</ng-template>\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_alert-center{height:100%;container-type:inline-size}.bmb_alert-center-main,.bmb_alert-center-content{height:100%}.bmb_alert-center-main{position:relative}@media (min-width: 1000px){.bmb_alert-center-main{border-right:.0625rem solid var(--general_contrasts-15)}}.bmb_alert-center-main-no-border{border-right:none!important}.bmb_alert-center .bmb-bottom-navigation-bar{justify-content:center}.bmb_alert-center .bmb-bottom-navigation-bar .bmb_interactive_icon-icon{height:auto;width:auto}.bmb_alert-center-content{display:flex;flex-direction:column;gap:var(--bmb-spacing-m);padding:var(--bmb-spacing-m);overflow:auto}@container (max-width: 350px){.bmb_alert-center-content{display:none}}@media (max-width: 1000px){.bmb_alert-center-content{display:none}}.bmb_alert-center-content-modal{display:flex;flex-direction:column;gap:var(--bmb-spacing-m);padding:var(--bmb-spacing-m)}@media (max-width: 1001px){.bmb_alert-center-content-modal-title{display:none}}.bmb_alert-center-content figure,.bmb_alert-center-content p{margin:0}.bmb_alert-center-content figure img,.bmb_alert-center-content p img{max-width:100%}\n"] }]
189
- }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.BmbAlertCenterService }], propDecorators: { detailContent: [{
194
+ }], ctorParameters: () => [{ type: i1.BmbNativeModalService }, { type: i2.BmbAlertCenterService }], propDecorators: { detailContent: [{
190
195
  type: ViewChild,
191
196
  args: ['detailContent', { read: TemplateRef }]
192
197
  }], container: [{
193
198
  type: ViewChild,
194
199
  args: ['container']
195
200
  }] } });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWFsZXJ0LWNlbnRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kcy1uZy9zcmMvbGliL2NvbXBvbmVudHMvYm1iLWFsZXJ0LWNlbnRlci9ibWItYWxlcnQtY2VudGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItYWxlcnQtY2VudGVyL2JtYi1hbGVydC1jZW50ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBVyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBWXRHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3JFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRXpHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7OztBQXNCeEUsTUFBTSxPQUFPLHVCQUF1QjtJQW9DbEMsWUFDVSxTQUFvQixFQUNwQixxQkFBNEM7UUFENUMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBckN0RCxlQUFVLEdBQUcsS0FBSyxDQUFTLFlBQVksQ0FBQyxDQUFDO1FBQ3pDLGFBQVEsR0FBRyxLQUFLLENBQXdDO1lBQ3RELEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRTtZQUM1RCxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO1lBQ3hELEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUU7WUFDeEQsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRTtZQUN6RCxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO1NBQ3ZELENBQUMsQ0FBQztRQUNILGFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDakMsNEJBQXVCLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQy9DLHNCQUFpQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMxQyxhQUFhO1FBQ2IsbUJBQWMsR0FBRyxLQUFLLENBQXNCO1lBQzFDLFdBQVcsRUFBRSx1Q0FBdUM7WUFDcEQsYUFBYSxFQUFFLEVBQUU7WUFDakIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsVUFBVSxFQUFFLEVBQUU7WUFDZCxJQUFJLEVBQUUsT0FBTztZQUNiLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUMsQ0FBQztRQUVILHdCQUF3QjtRQUN4QixXQUFNLEdBQUcsS0FBSyxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUNwQyxtQkFBYyxHQUFHLEtBQUssQ0FBa0IsRUFBRSxDQUFDLENBQUM7UUFFNUMsd0JBQW1CLEdBQUcsTUFBTSxFQUF3QixDQUFDO1FBQ3JELGVBQVUsR0FBRyxNQUFNLEVBQWlCLENBQUM7UUFDckMsb0JBQWUsR0FBRyxNQUFNLEVBQWlCLENBQUM7UUFDMUMscUJBQWdCLEdBQUcsTUFBTSxFQUFpQixDQUFDO1FBQzNDLHdCQUFtQixHQUFHLE1BQU0sRUFBOEIsQ0FBQztRQVczRCxjQUFTLEdBQUcsUUFBUSxDQUFrQixHQUFHLEVBQUU7WUFDekMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvRCxPQUFPLENBQUMsR0FBRyxhQUFhLEVBQUUsR0FBRyxlQUFlLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztRQUNILHVCQUFrQixHQUFHLFFBQVEsQ0FBa0IsR0FBRyxFQUFFO1lBQ2xELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sdUJBQXVCLEdBQzNCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pELE9BQU8sQ0FBQyxHQUFHLHFCQUFxQixFQUFFLEdBQUcsdUJBQXVCLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUNILGNBQVMsR0FBRyxRQUFRLENBQVUsR0FBRyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBRUgsU0FBSSxHQUFHLFFBQVEsQ0FBWSxHQUFHLEVBQUU7WUFDOUIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUN4QyxNQUFNLFVBQVUsR0FBWTtvQkFDMUIsRUFBRSxFQUFFLEtBQUs7b0JBQ1QsS0FBSyxFQUFFLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSztvQkFDaEQsUUFBUSxFQUFFLEtBQUssS0FBSyxDQUFDO29CQUNyQixLQUFLLEVBQ0gsS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQzt3QkFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU07d0JBQzFELENBQUMsQ0FBQyxDQUFDO29CQUNQLFFBQVEsRUFBRSxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVE7b0JBQ3ZELFNBQVMsRUFBRSxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVM7aUJBQzFELENBQUM7Z0JBQ0YsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILGdCQUFXLEdBQUcsS0FBSyxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQy9CLGtCQUFhLEdBQW9CLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLFFBQVEsQ0FBeUIsR0FBRyxFQUFFO1lBQ3BELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztRQUNILFFBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDckIsdUJBQWtCLEdBQUcsUUFBUSxDQUE0QixHQUFHLEVBQUU7WUFDNUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO1FBQ0gsaUJBQVksR0FBZ0MsSUFBSSxDQUFDO0lBMUM5QyxDQUFDO0lBNENKLFdBQVcsQ0FBQyxNQUF1QjtRQUNqQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLEdBQUcsS0FBSztZQUNSLEtBQUssRUFBRSxRQUFRLENBQUMsVUFBVSxDQUN4QixHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxFQUM3QixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUM3QjtTQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUosT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUE4QjtRQUM1QyxNQUFNLFdBQVcsR0FBOEI7WUFDN0MsTUFBTSxFQUFFLEVBQUU7WUFDVixTQUFTLEVBQUUsRUFBRTtZQUNiLEtBQUssRUFBRSxFQUFFO1lBQ1QsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDO1FBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdEUsSUFBSSxJQUFJLEtBQUssQ0FBQztnQkFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDMUMsSUFBSSxJQUFJLElBQUksQ0FBQztnQkFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDakQsSUFBSSxJQUFJLElBQUksRUFBRTtnQkFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs7Z0JBQzlDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUEwQjtRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRXJDLElBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLEdBQUc7WUFDOUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUN4QixDQUFDO1lBQ0QsTUFBTSxJQUFJLEdBQW9CO2dCQUM1QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDM0IsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO2FBQ3JELENBQUM7WUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUEyQjtRQUMzQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQW9CO1FBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxLQUEyQjtRQUNqRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxLQUFzQztRQUM5RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDL0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUMzQyxDQUFDO1FBRUYsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQ2hDLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUM1QixNQUFNLEVBQUUsTUFBTTtnQkFDZCxLQUFLLEVBQUUsTUFBTTthQUNkLENBQUMsQ0FBQztZQUNILE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUc7WUFDWixNQUFNLEVBQUUsTUFBTTtZQUNkLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLFVBQVUsRUFBRSxVQUFVO1NBQ3ZCLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RSxNQUFNLFNBQVMsR0FBRyxtQkFBbUI7WUFDbkMsQ0FBQyxDQUFDLE9BQU8sU0FBUyxFQUFFO1lBQ3BCLENBQUMsQ0FBQyxVQUFVLFNBQVMsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7WUFDNUIsTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsU0FBMkM7U0FDbkQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FqTFUsdUJBQXVCO21HQUF2Qix1QkFBdUIsNHBEQWdDRSxXQUFXLHNIQzNGakQscS9KQW1KQSxtNk9EeEdJLGdCQUFnQixxS0FDaEIsWUFBWSxvU0FDWixrQkFBa0IsK0hBQ2xCLHNCQUFzQixpSkFDdEIsMkJBQTJCLHFPQUMzQixrQkFBa0IsNE1BQ2xCLGlCQUFpQiwyS0FDakIsMEJBQTBCLHdJQUMxQiw0QkFBNEIscUZBQzVCLGtCQUFrQjs7NEZBT1QsdUJBQXVCO2tCQXBCbkMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQixrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIsMEJBQTBCO3dCQUMxQiw0QkFBNEI7d0JBQzVCLGtCQUFrQjtxQkFDbkIsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTtrSEFtQy9DLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUV6QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIG1vZGVsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJtYlRhYnNDb21wb25lbnQsIElCbWJUYWIgfSBmcm9tICcuLi9ibWItdGFicy9ibWItdGFicy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJtYkxheW91dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWxheW91dC9ibWItbGF5b3V0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCbWJMYXlvdXRJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9ibWItbGF5b3V0L2JtYi1sYXlvdXQtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBCbWJBbGVydENlbnRlckZvcm1Db21wb25lbnQgfSBmcm9tICcuL2JtYi1hbGVydC1jZW50ZXItZm9ybS9ibWItYWxlcnQtY2VudGVyLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIElCbWJEYXRhQWxlcnQsXG4gIElCbWJEYXRhQWxlcnRzUGFyc2VkLFxuICBJQm1iQWxlcnRDZW50ZXJDYXRlZ29yaWVzLFxuICBJQm1iRGF0YUFsZXJ0c091dHB1dCxcbiAgSUJtYkFsZXJ0RW1wdHlTdGF0ZSxcbiAgSUJtYkFsZXJ0Q2VudGVyVGFiQ29uZmlnLFxuICBJQm1iQWxlcnRDZW50ZXJGb290ZXJFdmVudCxcbiAgSUJtYkFsZXJ0Q2VudGVyUHJvdG9FdmVudEZvb3RlcixcbiAgSUJtYkFsZXJ0Q2VudGVyRm9vdGVyRXZlbnROYW1lLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEJtYkJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWJ1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJtYkltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWltYWdlL2JtYi1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9ibWItbW9kYWwvYm1iLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbERhdGFDb25maWcgfSBmcm9tICcuLi9ibWItbW9kYWwvYm1iLW1vZGFsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQm1iQWxlcnRDZW50ZXJBZHNDb21wb25lbnQgfSBmcm9tICcuL2JtYi1hbGVydC1jZW50ZXItYWRzL2JtYi1hbGVydC1jZW50ZXItYWRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJBbGVydENlbnRlckVtcHR5Q29tcG9uZW50IH0gZnJvbSAnLi9ibWItYWxlcnQtY2VudGVyLWVtcHR5L2JtYi1hbGVydC1jZW50ZXItZW1wdHkuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkFsZXJ0Q2VudGVyU2VydmljZSB9IGZyb20gJy4vYm1iLWFsZXJ0LWNlbnRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJtYkxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1sb2FkZXIvYm1iLWxvYWRlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdibWItYWxlcnQtY2VudGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEJtYlRhYnNDb21wb25lbnQsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJtYkxheW91dERpcmVjdGl2ZSxcbiAgICBCbWJMYXlvdXRJdGVtRGlyZWN0aXZlLFxuICAgIEJtYkFsZXJ0Q2VudGVyRm9ybUNvbXBvbmVudCxcbiAgICBCbWJCdXR0b25EaXJlY3RpdmUsXG4gICAgQm1iSW1hZ2VDb21wb25lbnQsXG4gICAgQm1iQWxlcnRDZW50ZXJBZHNDb21wb25lbnQsXG4gICAgQm1iQWxlcnRDZW50ZXJFbXB0eUNvbXBvbmVudCxcbiAgICBCbWJMb2FkZXJDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9ibWItYWxlcnQtY2VudGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi1hbGVydC1jZW50ZXIuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQm1iQWxlcnRDZW50ZXJDb21wb25lbnQge1xuICBkYXRlRm9ybWF0ID0gaW5wdXQ8c3RyaW5nPignZGQvTU0veXl5eScpO1xuICB0YWJzTmFtZSA9IGlucHV0PHN0cmluZ1tdIHwgSUJtYkFsZXJ0Q2VudGVyVGFiQ29uZmlnW10+KFtcbiAgICB7IHRpdGxlOiAnTm90aWZpY2FjaW9uZXMnLCBpc01vYmlsZTogdHJ1ZSwgaXNEZXNrdG9wOiB0cnVlIH0sXG4gICAgeyB0aXRsZTogJ05vIGxlw61kb3MnLCBpc01vYmlsZTogZmFsc2UsIGlzRGVza3RvcDogdHJ1ZSB9LFxuICAgIHsgdGl0bGU6ICdGYXZvcml0b3MnLCBpc01vYmlsZTogZmFsc2UsIGlzRGVza3RvcDogdHJ1ZSB9LFxuICAgIHsgdGl0bGU6ICdBcmNoaXZhZG9zJywgaXNNb2JpbGU6IGZhbHNlLCBpc0Rlc2t0b3A6IHRydWUgfSxcbiAgICB7IHRpdGxlOiAnQW51bmNpb3MnLCBpc01vYmlsZTogdHJ1ZSwgaXNEZXNrdG9wOiB0cnVlIH0sXG4gIF0pO1xuICBoaWRlVGFicyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZW5hYmxlTXVsdGlwbGVTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgc2hvd01vYmlsZVZlcnNpb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIC8vRW1wdHkgc3RhdGVcbiAgZW1wdHlTdGF0ZURhdGEgPSBpbnB1dDxJQm1iQWxlcnRFbXB0eVN0YXRlPih7XG4gICAgcHJpbWFyeVRleHQ6ICdObyB0aWVuZXMgbm90aWZpY2FjaW9uZXMgcGFyYSBtb3N0cmFyJyxcbiAgICBzZWNvbmRhcnlUZXh0OiAnJyxcbiAgICB0ZXJ0aWFyeVRleHQ6ICcnLFxuICAgIGJ1dHRvblRleHQ6ICcnLFxuICAgIHNpemU6ICdsYXJnZScsXG4gICAgc2hvd0J1dHRvbjogZmFsc2UsXG4gIH0pO1xuXG4gIC8vIGRlcHJlY2F0ZWQgcHJvcGVydGllc1xuICBhbGVydHMgPSBpbnB1dDxJQm1iRGF0YUFsZXJ0W10+KFtdKTtcbiAgYWR2ZXJ0aXNlbWVudHMgPSBpbnB1dDxJQm1iRGF0YUFsZXJ0W10+KFtdKTtcblxuICBvbkNoYW5nZUFsZXJ0U3RhdHVzID0gb3V0cHV0PElCbWJEYXRhQWxlcnRzT3V0cHV0PigpO1xuICBhbGVydEV2ZW50ID0gb3V0cHV0PElCbWJEYXRhQWxlcnQ+KCk7XG4gIHNob3dBbGVydERldGFpbCA9IG91dHB1dDxJQm1iRGF0YUFsZXJ0PigpO1xuICBjbG9zZUFsZXJ0RGV0YWlsID0gb3V0cHV0PElCbWJEYXRhQWxlcnQ+KCk7XG4gIG5hdmlnYXRpb25CYXJFdmVudHMgPSBvdXRwdXQ8SUJtYkFsZXJ0Q2VudGVyRm9vdGVyRXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZGV0YWlsQ29udGVudCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgZGV0YWlsQ29udGVudD86IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYXREaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIGJtYkFsZXJ0Q2VudGVyU2VydmljZTogQm1iQWxlcnRDZW50ZXJTZXJ2aWNlLFxuICApIHt9XG5cbiAgYWxlcnRMaXN0ID0gY29tcHV0ZWQ8SUJtYkRhdGFBbGVydFtdPigoKSA9PiB7XG4gICAgY29uc3QgYWxlcnRzT25JbnB1dCA9IHRoaXMuYWxlcnRzKCk7XG4gICAgY29uc3QgYWxlcnRzT25TZXJ2aWNlID0gdGhpcy5ibWJBbGVydENlbnRlclNlcnZpY2UuZ2V0QWxlcnRzKCk7XG4gICAgcmV0dXJuIFsuLi5hbGVydHNPbklucHV0LCAuLi5hbGVydHNPblNlcnZpY2VdO1xuICB9KTtcbiAgYWR2ZXJ0aXNlbWVudHNMaXN0ID0gY29tcHV0ZWQ8SUJtYkRhdGFBbGVydFtdPigoKSA9PiB7XG4gICAgY29uc3QgYWR2ZXJ0aXNlbWVudHNPbklucHV0ID0gdGhpcy5hZHZlcnRpc2VtZW50cygpO1xuICAgIGNvbnN0IGFkdmVydGlzZW1lbnRzT25TZXJ2aWNlID1cbiAgICAgIHRoaXMuYm1iQWxlcnRDZW50ZXJTZXJ2aWNlLmdldEFkdmVydGlzZW1lbnRzKCk7XG4gICAgcmV0dXJuIFsuLi5hZHZlcnRpc2VtZW50c09uSW5wdXQsIC4uLmFkdmVydGlzZW1lbnRzT25TZXJ2aWNlXTtcbiAgfSk7XG4gIGlzTG9hZGluZyA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5ibWJBbGVydENlbnRlclNlcnZpY2UuZ2V0TG9hZGluZ1N0YXRlKCk7XG4gIH0pO1xuXG4gIHRhYnMgPSBjb21wdXRlZDxJQm1iVGFiW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy50YWJzTmFtZSgpLm1hcCgodGFiLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29tcGxleFRhYjogSUJtYlRhYiA9IHtcbiAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICB0aXRsZTogdHlwZW9mIHRhYiA9PT0gJ3N0cmluZycgPyB0YWIgOiB0YWIudGl0bGUsXG4gICAgICAgIGlzQWN0aXZlOiBpbmRleCA9PT0gMCxcbiAgICAgICAgYmFkZ2U6XG4gICAgICAgICAgaW5kZXggPT09IDAgfHwgaW5kZXggPT09IDFcbiAgICAgICAgICAgID8gdGhpcy5hbGVydExpc3QoKS5maWx0ZXIoKGFsZXJ0KSA9PiAhYWxlcnQuaXNSZWFkKS5sZW5ndGhcbiAgICAgICAgICAgIDogMCxcbiAgICAgICAgaXNNb2JpbGU6IHR5cGVvZiB0YWIgPT09ICdzdHJpbmcnID8gdHJ1ZSA6IHRhYi5pc01vYmlsZSxcbiAgICAgICAgaXNEZXNrdG9wOiB0eXBlb2YgdGFiID09PSAnc3RyaW5nJyA/IHRydWUgOiB0YWIuaXNEZXNrdG9wLFxuICAgICAgfTtcbiAgICAgIHJldHVybiBjb21wbGV4VGFiO1xuICAgIH0pO1xuICB9KTtcbiAgc2VsZWN0ZWRUYWIgPSBtb2RlbDxudW1iZXI+KDEpO1xuICBzZWxlY3RlZEFsZXJ0OiBJQm1iRGF0YUFsZXJ0W10gPSBbXTtcbiAgb3JkZXJlZEV2ZW50cyA9IGNvbXB1dGVkPElCbWJEYXRhQWxlcnRzUGFyc2VkW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcmRlckV2ZW50cyh0aGlzLmFsZXJ0TGlzdCgpKTtcbiAgfSk7XG4gIG5vdyA9IERhdGVUaW1lLm5vdygpO1xuICBldmVudHNJbkNhdGVnb3JpZXMgPSBjb21wdXRlZDxJQm1iQWxlcnRDZW50ZXJDYXRlZ29yaWVzPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMub3JkZXJDYXRlZ29yaWVzKHRoaXMub3JkZXJlZEV2ZW50cygpKTtcbiAgfSk7XG4gIHZpc2libGVBbGVydDogSUJtYkRhdGFBbGVydHNQYXJzZWQgfCBudWxsID0gbnVsbDtcblxuICBvcmRlckV2ZW50cyhhbGVydHM6IElCbWJEYXRhQWxlcnRbXSk6IElCbWJEYXRhQWxlcnRzUGFyc2VkW10ge1xuICAgIGNvbnN0IHBhcnNlckRhdGVzID0gYWxlcnRzLm1hcCgoYWxlcnQpID0+ICh7XG4gICAgICAuLi5hbGVydCxcbiAgICAgIHBEYXRlOiBEYXRlVGltZS5mcm9tRm9ybWF0KFxuICAgICAgICBgJHthbGVydC5kYXRlfSAke2FsZXJ0LnRpbWV9YCxcbiAgICAgICAgYCR7dGhpcy5kYXRlRm9ybWF0KCl9IEhIOm1tYCxcbiAgICAgICksXG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIHBhcnNlckRhdGVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIHJldHVybiBiLnBEYXRlLnRvTWlsbGlzKCkgLSBhLnBEYXRlLnRvTWlsbGlzKCk7XG4gICAgfSk7XG4gIH1cblxuICBvcmRlckNhdGVnb3JpZXMoYWxlcnRzOiBJQm1iRGF0YUFsZXJ0c1BhcnNlZFtdKTogSUJtYkFsZXJ0Q2VudGVyQ2F0ZWdvcmllcyB7XG4gICAgY29uc3Qgb2JqZWN0RXZlbnQ6IElCbWJBbGVydENlbnRlckNhdGVnb3JpZXMgPSB7XG4gICAgICByZWNlbnQ6IFtdLFxuICAgICAgc2V2ZW5EYXlzOiBbXSxcbiAgICAgIG1vbnRoOiBbXSxcbiAgICAgIHJlc3Q6IFtdLFxuICAgIH07XG4gICAgYWxlcnRzLmZvckVhY2goKGFsZXJ0KSA9PiB7XG4gICAgICBjb25zdCBkaWZmID0gTWF0aC50cnVuYyh0aGlzLm5vdy5kaWZmKGFsZXJ0LnBEYXRlLCAnZGF5cycpLmRheXMgfHwgMCk7XG4gICAgICBpZiAoZGlmZiA9PT0gMCkgb2JqZWN0RXZlbnQucmVjZW50LnB1c2goYWxlcnQpO1xuICAgICAgZWxzZSBpZiAoZGlmZiA8PSA3KSBvYmplY3RFdmVudC5zZXZlbkRheXMucHVzaChhbGVydCk7XG4gICAgICBlbHNlIGlmIChkaWZmIDw9IDMwKSBvYmplY3RFdmVudC5tb250aC5wdXNoKGFsZXJ0KTtcbiAgICAgIGVsc2Ugb2JqZWN0RXZlbnQucmVzdC5wdXNoKGFsZXJ0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqZWN0RXZlbnQ7XG4gIH1cblxuICBoYW5kbGVTaG93QWxlcnQoaXRlbTogSUJtYkRhdGFBbGVydHNQYXJzZWQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGVBbGVydCA9IGl0ZW07XG4gICAgY29uc3QgeyBwRGF0ZSwgLi4uYWxlcnREYXRhIH0gPSBpdGVtO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCA8IDM1MCB8fFxuICAgICAgd2luZG93LmlubmVyV2lkdGggPCAxMDAwIHx8XG4gICAgICB0aGlzLnNob3dNb2JpbGVWZXJzaW9uKClcbiAgICApIHtcbiAgICAgIGNvbnN0IGRhdGE6IE1vZGFsRGF0YUNvbmZpZyA9IHtcbiAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuZGV0YWlsQ29udGVudCxcbiAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgdHlwZTogJ2luZm9ybWF0aXZlJyxcbiAgICAgICAgc2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICAgICAgY2xvc2VBY3Rpb246IHRoaXMuaGFuZGxlQ2xvc2VEZXRhaWwuYmluZCh0aGlzLCBpdGVtKSxcbiAgICAgIH07XG4gICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKEJtYk1vZGFsQ29tcG9uZW50LCB7IGRhdGEgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93QWxlcnREZXRhaWwuZW1pdChhbGVydERhdGEpO1xuICB9XG5cbiAgaGFuZGxlQ2xvc2VEZXRhaWwoYWxlcnQ6IElCbWJEYXRhQWxlcnRzUGFyc2VkKTogdm9pZCB7XG4gICAgY29uc3QgeyBwRGF0ZSwgLi4uYWxlcnREYXRhIH0gPSBhbGVydDtcbiAgICB0aGlzLmNsb3NlQWxlcnREZXRhaWwuZW1pdChhbGVydERhdGEpO1xuICB9XG5cbiAgaGFuZGxlQWxlcnRFdmVudChhbGVydDogSUJtYkRhdGFBbGVydCk6IHZvaWQge1xuICAgIHRoaXMuYWxlcnRFdmVudC5lbWl0KGFsZXJ0KTtcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZUFsZXJ0U3RhdHVzKGFsZXJ0OiBJQm1iRGF0YUFsZXJ0c091dHB1dCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VBbGVydFN0YXR1cy5lbWl0KGFsZXJ0KTtcbiAgfVxuXG4gIGhhbmRsZU5hdmlnYXRpb25CYXJFdmVudHMoZXZlbnQ6IElCbWJBbGVydENlbnRlclByb3RvRXZlbnRGb290ZXIpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudHMgPSB0aGlzLmFsZXJ0TGlzdCgpLmZpbHRlcigoYWxlcnQpID0+XG4gICAgICBldmVudC5hbGVydHMuaW5jbHVkZXMoYWxlcnQuaWQudG9TdHJpbmcoKSksXG4gICAgKTtcblxuICAgIGlmIChldmVudHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgaWYgKGV2ZW50LmV2ZW50ID09PSAndGFncycpIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbkJhckV2ZW50cy5lbWl0KHtcbiAgICAgICAgYWxlcnRzOiBldmVudHMsXG4gICAgICAgIGV2ZW50OiAndGFncycsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmFtZXMgPSB7XG4gICAgICBpc1JlYWQ6ICdyZWFkJyxcbiAgICAgIGlzRmF2b3JpdGU6ICdmYXZvcml0ZScsXG4gICAgICBpc0FyY2hpdmVkOiAnYXJjaGl2ZWQnLFxuICAgIH07XG4gICAgY29uc3QgZXZlbnROYW1lID0gbmFtZXNbZXZlbnQuZXZlbnRdIHx8IGV2ZW50LmV2ZW50O1xuICAgIGNvbnN0IGlzUG9zaXRpdmVPcGVyYXRpb24gPSBldmVudHMuc29tZSgoYWxlcnQpID0+ICFhbGVydFtldmVudC5ldmVudF0pO1xuICAgIGNvbnN0IGV2ZW50VHlwZSA9IGlzUG9zaXRpdmVPcGVyYXRpb25cbiAgICAgID8gYGFkZF8ke2V2ZW50TmFtZX1gXG4gICAgICA6IGByZW1vdmVfJHtldmVudE5hbWV9YDtcbiAgICB0aGlzLm5hdmlnYXRpb25CYXJFdmVudHMuZW1pdCh7XG4gICAgICBhbGVydHM6IGV2ZW50cyxcbiAgICAgIGV2ZW50OiBldmVudFR5cGUgYXMgSUJtYkFsZXJ0Q2VudGVyRm9vdGVyRXZlbnROYW1lLFxuICAgIH0pO1xuICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImJtYl9hbGVydC1jZW50ZXJcIiAjY29udGFpbmVyIGJtYkxheW91dCBtYXJnaW49XCJub25lXCI+XG4gIDxkaXZcbiAgICBibWJMYXlvdXRJdGVtXG4gICAgW2NvbFNtXT1cIjRcIlxuICAgIFtjb2xMZ109XCJzaG93TW9iaWxlVmVyc2lvbigpID8gMTIgOiA1XCJcbiAgICBjbGFzcz1cImJtYl9hbGVydC1jZW50ZXItbWFpblwiXG4gICAgW25nQ2xhc3NdPVwieyAnYm1iX2FsZXJ0LWNlbnRlci1tYWluLW5vLWJvcmRlcic6IHNob3dNb2JpbGVWZXJzaW9uKCkgfVwiXG4gID5cbiAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICA8Ym1iLWxvYWRlclxuICAgICAgICB0aXRsZT1cIkNhcmdhbmRvLi4uXCJcbiAgICAgICAgc3VidGl0bGU9XCJDYXJnYW5kbyBsYXMgbm90aWZpY2FjaW9uZXNcIlxuICAgICAgICBbb3ZlcmxheV09XCJmYWxzZVwiXG4gICAgICAgIFtpc1Zpc2libGVdPVwidHJ1ZVwiXG4gICAgICAgIFtlcnJvclN0YXRlXT1cImZhbHNlXCJcbiAgICAgICAgYXBwZWFyYW5jZT1cIm5vcm1hbFwiXG4gICAgICAgIGljb249XCJ3aWZpX29mZlwiXG4gICAgICAgIFthY3Rpb25zXT1cImZhbHNlXCJcbiAgICAgICAgYnV0dG9uUHJpbWFyeT1cIlJlaW50ZW50YXJcIlxuICAgICAgICBidXR0b25TZWNvbmRhcnk9XCJTYWxpclwiXG4gICAgICAgIFtzaG93SW5saW5lXT1cInRydWVcIlxuICAgICAgLz5cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiAoIWhpZGVUYWJzKCkpIHtcbiAgICAgICAgPGJtYi10YWJzIFt0YWJzXT1cInRhYnMoKVwiIFsoc2VsZWN0ZWRUYWJJZCldPVwic2VsZWN0ZWRUYWJcIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChzZWxlY3RlZFRhYigpID09PSAxKSB7XG4gICAgICAgIDxibWItYWxlcnQtY2VudGVyLWZvcm1cbiAgICAgICAgICAoc2hvd0FsZXJ0RGV0YWlsKT1cImhhbmRsZVNob3dBbGVydCgkZXZlbnQpXCJcbiAgICAgICAgICBbZXZlbnRzSW5DYXRlZ29yaWVzXT1cImV2ZW50c0luQ2F0ZWdvcmllcygpXCJcbiAgICAgICAgICBbZW5hYmxlTXVsdGlwbGVTZWxlY3Rpb25dPVwiZW5hYmxlTXVsdGlwbGVTZWxlY3Rpb24oKVwiXG4gICAgICAgICAgKGNoYW5nZUFsZXJ0U3RhdHVzKT1cImhhbmRsZUNoYW5nZUFsZXJ0U3RhdHVzKCRldmVudClcIlxuICAgICAgICAgIFtlbXB0eVN0YXRlRGF0YV09XCJlbXB0eVN0YXRlRGF0YSgpXCJcbiAgICAgICAgICAobmF2aWdhdGlvbkJhckV2ZW50cyk9XCJoYW5kbGVOYXZpZ2F0aW9uQmFyRXZlbnRzKCRldmVudClcIlxuICAgICAgICAgIGZpbHRlckJ5PVwiYWxsXCJcbiAgICAgICAgLz5cbiAgICAgIH0gQGVsc2UgaWYgKHNlbGVjdGVkVGFiKCkgPT09IDIpIHtcbiAgICAgICAgPGJtYi1hbGVydC1jZW50ZXItZm9ybVxuICAgICAgICAgIChzaG93QWxlcnREZXRhaWwpPVwiaGFuZGxlU2hvd0FsZXJ0KCRldmVudClcIlxuICAgICAgICAgIFtldmVudHNJbkNhdGVnb3JpZXNdPVwiZXZlbnRzSW5DYXRlZ29yaWVzKClcIlxuICAgICAgICAgIFtlbmFibGVNdWx0aXBsZVNlbGVjdGlvbl09XCJlbmFibGVNdWx0aXBsZVNlbGVjdGlvbigpXCJcbiAgICAgICAgICAoY2hhbmdlQWxlcnRTdGF0dXMpPVwiaGFuZGxlQ2hhbmdlQWxlcnRTdGF0dXMoJGV2ZW50KVwiXG4gICAgICAgICAgW2VtcHR5U3RhdGVEYXRhXT1cImVtcHR5U3RhdGVEYXRhKClcIlxuICAgICAgICAgIChuYXZpZ2F0aW9uQmFyRXZlbnRzKT1cImhhbmRsZU5hdmlnYXRpb25CYXJFdmVudHMoJGV2ZW50KVwiXG4gICAgICAgICAgZmlsdGVyQnk9XCJ1bnJlYWRcIlxuICAgICAgICAvPlxuICAgICAgfSBAZWxzZSBpZiAoc2VsZWN0ZWRUYWIoKSA9PT0gMykge1xuICAgICAgICA8Ym1iLWFsZXJ0LWNlbnRlci1mb3JtXG4gICAgICAgICAgKHNob3dBbGVydERldGFpbCk9XCJoYW5kbGVTaG93QWxlcnQoJGV2ZW50KVwiXG4gICAgICAgICAgW2V2ZW50c0luQ2F0ZWdvcmllc109XCJldmVudHNJbkNhdGVnb3JpZXMoKVwiXG4gICAgICAgICAgW2VuYWJsZU11bHRpcGxlU2VsZWN0aW9uXT1cImVuYWJsZU11bHRpcGxlU2VsZWN0aW9uKClcIlxuICAgICAgICAgIChjaGFuZ2VBbGVydFN0YXR1cyk9XCJoYW5kbGVDaGFuZ2VBbGVydFN0YXR1cygkZXZlbnQpXCJcbiAgICAgICAgICBbZW1wdHlTdGF0ZURhdGFdPVwiZW1wdHlTdGF0ZURhdGEoKVwiXG4gICAgICAgICAgKG5hdmlnYXRpb25CYXJFdmVudHMpPVwiaGFuZGxlTmF2aWdhdGlvbkJhckV2ZW50cygkZXZlbnQpXCJcbiAgICAgICAgICBmaWx0ZXJCeT1cImZhdm9yaXRlc1wiXG4gICAgICAgIC8+XG4gICAgICB9IEBlbHNlIGlmIChzZWxlY3RlZFRhYigpID09PSA0KSB7XG4gICAgICAgIDxibWItYWxlcnQtY2VudGVyLWZvcm1cbiAgICAgICAgICAoc2hvd0FsZXJ0RGV0YWlsKT1cImhhbmRsZVNob3dBbGVydCgkZXZlbnQpXCJcbiAgICAgICAgICBbZXZlbnRzSW5DYXRlZ29yaWVzXT1cImV2ZW50c0luQ2F0ZWdvcmllcygpXCJcbiAgICAgICAgICAoY2hhbmdlQWxlcnRTdGF0dXMpPVwiaGFuZGxlQ2hhbmdlQWxlcnRTdGF0dXMoJGV2ZW50KVwiXG4gICAgICAgICAgW2VtcHR5U3RhdGVEYXRhXT1cImVtcHR5U3RhdGVEYXRhKClcIlxuICAgICAgICAgIChuYXZpZ2F0aW9uQmFyRXZlbnRzKT1cImhhbmRsZU5hdmlnYXRpb25CYXJFdmVudHMoJGV2ZW50KVwiXG4gICAgICAgICAgZmlsdGVyQnk9XCJhcmNoaXZlZFwiXG4gICAgICAgIC8+XG4gICAgICB9IEBlbHNlIGlmIChzZWxlY3RlZFRhYigpID09PSA1KSB7XG4gICAgICAgIDxibWItYWxlcnQtY2VudGVyLWFkc1xuICAgICAgICAgIFthZHZlcnRpc2VtZW50c109XCJhZHZlcnRpc2VtZW50c0xpc3QoKVwiXG4gICAgICAgICAgKGFsZXJ0RXZlbnQpPVwiaGFuZGxlQWxlcnRFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c2VjdGlvbiBibWJMYXlvdXRJdGVtIFtjb2xTbV09XCI0XCIgW2NvbExnXT1cIjEyXCI+XG4gICAgICAgICAgPGJtYi1hbGVydC1jZW50ZXItZW1wdHkgW2RhdGFdPVwiZW1wdHlTdGF0ZURhdGEoKVwiIC8+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuICBAaWYgKCFzaG93TW9iaWxlVmVyc2lvbigpICYmIGFsZXJ0TGlzdCgpLmxlbmd0aCkge1xuICAgIDxzZWN0aW9uXG4gICAgICBjbGFzcz1cImJtYl9hbGVydC1jZW50ZXItY29udGVudFwiXG4gICAgICBibWJMYXlvdXRJdGVtXG4gICAgICBbY29sU21dPVwiNFwiXG4gICAgICBbY29sTGddPVwiN1wiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkZXRhaWxDb250ZW50XCIgLz5cbiAgICA8L3NlY3Rpb24+XG4gIH1cbjwvc2VjdGlvbj5cblxuPG5nLXRlbXBsYXRlICNkZXRhaWxDb250ZW50PlxuICBAaWYgKHZpc2libGVBbGVydCkge1xuICAgIDxzZWN0aW9uIGNsYXNzPVwiYm1iX2FsZXJ0LWNlbnRlci1jb250ZW50LW1vZGFsXCI+XG4gICAgICA8aDEgY2xhc3M9XCJmb250LWJvbGQtNyBibWJfYWxlcnQtY2VudGVyLWNvbnRlbnQtbW9kYWwtdGl0bGVcIj5cbiAgICAgICAge3sgdmlzaWJsZUFsZXJ0LnRpdGxlIH19XG4gICAgICA8L2gxPlxuICAgICAgQGZvciAoaXRlbSBvZiB2aXNpYmxlQWxlcnQuZGVzY3JpcHRpb247IHRyYWNrICRpbmRleCkge1xuICAgICAgICBAc3dpdGNoIChpdGVtLnR5cGUpIHtcbiAgICAgICAgICBAY2FzZSAoXCJwYXJhZ3JhcGhcIikge1xuICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2JtYl9hbGVydC1jZW50ZXItY29udGVudC0nICsgKGl0ZW0uc3R5bGUgPz8gJ25vcm1hbCcpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaXRlbS50ZXh0IH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBjYXNlIChcImltYWdlXCIpIHtcbiAgICAgICAgICAgIDxibWItaW1hZ2VcbiAgICAgICAgICAgICAgW3NyY109XCJpdGVtLmhyZWYgfHwgJydcIlxuICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0udGV4dFwiXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cIm5vbmVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGNhc2UgKFwidmlkZW9cIikge1xuICAgICAgICAgICAgPHZpZGVvIFtzcmNdPVwiaXRlbS5ocmVmXCIgY29udHJvbHM+PC92aWRlbz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGNhc2UgKFwidGl0bGVcIikge1xuICAgICAgICAgICAgPGgzXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidibWJfYWxlcnQtY2VudGVyLWNvbnRlbnQtJyArIChpdGVtLnN0eWxlID8/ICdub3JtYWwnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGl0ZW0udGV4dCB9fVxuICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGNhc2UgKFwiYnV0dG9uXCIpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgYm1iQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJpdGVtLnZhcmlhbnQgPz8gJ3ByaW1hcnknXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIGl0ZW0uZXZlbnRcbiAgICAgICAgICAgICAgICAgID8gaXRlbT8uZXZlbnQodmlzaWJsZUFsZXJ0LmlkKVxuICAgICAgICAgICAgICAgICAgOiBoYW5kbGVBbGVydEV2ZW50KHZpc2libGVBbGVydClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaXRlbS50ZXh0IH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGNhc2UgKFwibGlua1wiKSB7XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBbbmdDbGFzc109XCInYm1iX2FsZXJ0LWNlbnRlci1jb250ZW50LScgKyAoaXRlbS5zdHlsZSA/PyAnbm9ybWFsJylcIlxuICAgICAgICAgICAgICBbaHJlZl09XCJpdGVtLmhyZWZcIlxuICAgICAgICAgICAgICA+e3sgaXRlbS50ZXh0IH19PC9hXG4gICAgICAgICAgICA+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9zZWN0aW9uPlxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWFsZXJ0LWNlbnRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kcy1uZy9zcmMvbGliL2NvbXBvbmVudHMvYm1iLWFsZXJ0LWNlbnRlci9ibWItYWxlcnQtY2VudGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItYWxlcnQtY2VudGVyL2JtYi1hbGVydC1jZW50ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBVyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBWXRHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRXpHLE9BQU8sRUFBRSxrQkFBa0Is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dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFFekIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBpbnB1dCxcclxuICBvdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIGNvbXB1dGVkLFxyXG4gIG1vZGVsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCbWJUYWJzQ29tcG9uZW50LCBJQm1iVGFiIH0gZnJvbSAnLi4vYm1iLXRhYnMvYm1iLXRhYnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQm1iTGF5b3V0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9ibWItbGF5b3V0L2JtYi1sYXlvdXQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQm1iTGF5b3V0SXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYm1iLWxheW91dC9ibWItbGF5b3V0LWl0ZW0uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XHJcbmltcG9ydCB7IEJtYkFsZXJ0Q2VudGVyRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vYm1iLWFsZXJ0LWNlbnRlci1mb3JtL2JtYi1hbGVydC1jZW50ZXItZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIElCbWJEYXRhQWxlcnQsXHJcbiAgSUJtYkRhdGFBbGVydHNQYXJzZWQsXHJcbiAgSUJtYkFsZXJ0Q2VudGVyQ2F0ZWdvcmllcyxcclxuICBJQm1iRGF0YUFsZXJ0c091dHB1dCxcclxuICBJQm1iQWxlcnRFbXB0eVN0YXRlLFxyXG4gIElCbWJBbGVydENlbnRlclRhYkNvbmZpZyxcclxuICBJQm1iQWxlcnRDZW50ZXJGb290ZXJFdmVudCxcclxuICBJQm1iQWxlcnRDZW50ZXJQcm90b0V2ZW50Rm9vdGVyLFxyXG4gIElCbWJBbGVydENlbnRlckZvb3RlckV2ZW50TmFtZSxcclxufSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQm1iQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9ibWItYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCbWJJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pbWFnZS9ibWItaW1hZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQm1iQWxlcnRDZW50ZXJBZHNDb21wb25lbnQgfSBmcm9tICcuL2JtYi1hbGVydC1jZW50ZXItYWRzL2JtYi1hbGVydC1jZW50ZXItYWRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJtYkFsZXJ0Q2VudGVyRW1wdHlDb21wb25lbnQgfSBmcm9tICcuL2JtYi1hbGVydC1jZW50ZXItZW1wdHkvYm1iLWFsZXJ0LWNlbnRlci1lbXB0eS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCbWJBbGVydENlbnRlclNlcnZpY2UgfSBmcm9tICcuL2JtYi1hbGVydC1jZW50ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEJtYkxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1sb2FkZXIvYm1iLWxvYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCbWJOYXRpdmVNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uYXRpdmUtbW9kYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IElCbWJOYXRpdmVNb2RhbCB9IGZyb20gJy4uL2JtYi1tb2RhbC9ibWItbW9kYWwuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYm1iLWFsZXJ0LWNlbnRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBCbWJUYWJzQ29tcG9uZW50LFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQm1iTGF5b3V0RGlyZWN0aXZlLFxyXG4gICAgQm1iTGF5b3V0SXRlbURpcmVjdGl2ZSxcclxuICAgIEJtYkFsZXJ0Q2VudGVyRm9ybUNvbXBvbmVudCxcclxuICAgIEJtYkJ1dHRvbkRpcmVjdGl2ZSxcclxuICAgIEJtYkltYWdlQ29tcG9uZW50LFxyXG4gICAgQm1iQWxlcnRDZW50ZXJBZHNDb21wb25lbnQsXHJcbiAgICBCbWJBbGVydENlbnRlckVtcHR5Q29tcG9uZW50LFxyXG4gICAgQm1iTG9hZGVyQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JtYi1hbGVydC1jZW50ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9ibWItYWxlcnQtY2VudGVyLmNvbXBvbmVudC5zY3NzJyxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQm1iQWxlcnRDZW50ZXJDb21wb25lbnQge1xyXG4gIGRhdGVGb3JtYXQgPSBpbnB1dDxzdHJpbmc+KCdkZC9NTS95eXl5Jyk7XHJcbiAgdGFic05hbWUgPSBpbnB1dDxzdHJpbmdbXSB8IElCbWJBbGVydENlbnRlclRhYkNvbmZpZ1tdPihbXHJcbiAgICB7IHRpdGxlOiAnTm90aWZpY2FjaW9uZXMnLCBpc01vYmlsZTogdHJ1ZSwgaXNEZXNrdG9wOiB0cnVlIH0sXHJcbiAgICB7IHRpdGxlOiAnTm8gbGXDrWRvcycsIGlzTW9iaWxlOiBmYWxzZSwgaXNEZXNrdG9wOiB0cnVlIH0sXHJcbiAgICB7IHRpdGxlOiAnRmF2b3JpdG9zJywgaXNNb2JpbGU6IGZhbHNlLCBpc0Rlc2t0b3A6IHRydWUgfSxcclxuICAgIHsgdGl0bGU6ICdBcmNoaXZhZG9zJywgaXNNb2JpbGU6IGZhbHNlLCBpc0Rlc2t0b3A6IHRydWUgfSxcclxuICAgIHsgdGl0bGU6ICdBbnVuY2lvcycsIGlzTW9iaWxlOiB0cnVlLCBpc0Rlc2t0b3A6IHRydWUgfSxcclxuICBdKTtcclxuICBoaWRlVGFicyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBlbmFibGVNdWx0aXBsZVNlbGVjdGlvbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNob3dNb2JpbGVWZXJzaW9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIC8vRW1wdHkgc3RhdGVcclxuICBlbXB0eVN0YXRlRGF0YSA9IGlucHV0PElCbWJBbGVydEVtcHR5U3RhdGU+KHtcclxuICAgIHByaW1hcnlUZXh0OiAnTm8gdGllbmVzIG5vdGlmaWNhY2lvbmVzIHBhcmEgbW9zdHJhcicsXHJcbiAgICBzZWNvbmRhcnlUZXh0OiAnJyxcclxuICAgIHRlcnRpYXJ5VGV4dDogJycsXHJcbiAgICBidXR0b25UZXh0OiAnJyxcclxuICAgIHNpemU6ICdsYXJnZScsXHJcbiAgICBzaG93QnV0dG9uOiBmYWxzZSxcclxuICB9KTtcclxuXHJcbiAgLy8gZGVwcmVjYXRlZCBwcm9wZXJ0aWVzXHJcbiAgYWxlcnRzID0gaW5wdXQ8SUJtYkRhdGFBbGVydFtdPihbXSk7XHJcbiAgYWR2ZXJ0aXNlbWVudHMgPSBpbnB1dDxJQm1iRGF0YUFsZXJ0W10+KFtdKTtcclxuXHJcbiAgb25DaGFuZ2VBbGVydFN0YXR1cyA9IG91dHB1dDxJQm1iRGF0YUFsZXJ0c091dHB1dD4oKTtcclxuICBhbGVydEV2ZW50ID0gb3V0cHV0PElCbWJEYXRhQWxlcnQ+KCk7XHJcbiAgc2hvd0FsZXJ0RGV0YWlsID0gb3V0cHV0PElCbWJEYXRhQWxlcnQ+KCk7XHJcbiAgY2xvc2VBbGVydERldGFpbCA9IG91dHB1dDxJQm1iRGF0YUFsZXJ0PigpO1xyXG4gIG5hdmlnYXRpb25CYXJFdmVudHMgPSBvdXRwdXQ8SUJtYkFsZXJ0Q2VudGVyRm9vdGVyRXZlbnQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RldGFpbENvbnRlbnQnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcbiAgZGV0YWlsQ29udGVudD86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyITogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5hdGl2ZU1vZGFsU2VydmljZTogQm1iTmF0aXZlTW9kYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBibWJBbGVydENlbnRlclNlcnZpY2U6IEJtYkFsZXJ0Q2VudGVyU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIGFsZXJ0TGlzdCA9IGNvbXB1dGVkPElCbWJEYXRhQWxlcnRbXT4oKCkgPT4ge1xyXG4gICAgY29uc3QgYWxlcnRzT25JbnB1dCA9IHRoaXMuYWxlcnRzKCk7XHJcbiAgICBjb25zdCBhbGVydHNPblNlcnZpY2UgPSB0aGlzLmJtYkFsZXJ0Q2VudGVyU2VydmljZS5nZXRBbGVydHMoKTtcclxuICAgIHJldHVybiBbLi4uYWxlcnRzT25JbnB1dCwgLi4uYWxlcnRzT25TZXJ2aWNlXTtcclxuICB9KTtcclxuICBhZHZlcnRpc2VtZW50c0xpc3QgPSBjb21wdXRlZDxJQm1iRGF0YUFsZXJ0W10+KCgpID0+IHtcclxuICAgIGNvbnN0IGFkdmVydGlzZW1lbnRzT25JbnB1dCA9IHRoaXMuYWR2ZXJ0aXNlbWVudHMoKTtcclxuICAgIGNvbnN0IGFkdmVydGlzZW1lbnRzT25TZXJ2aWNlID1cclxuICAgICAgdGhpcy5ibWJBbGVydENlbnRlclNlcnZpY2UuZ2V0QWR2ZXJ0aXNlbWVudHMoKTtcclxuICAgIHJldHVybiBbLi4uYWR2ZXJ0aXNlbWVudHNPbklucHV0LCAuLi5hZHZlcnRpc2VtZW50c09uU2VydmljZV07XHJcbiAgfSk7XHJcbiAgaXNMb2FkaW5nID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYm1iQWxlcnRDZW50ZXJTZXJ2aWNlLmdldExvYWRpbmdTdGF0ZSgpO1xyXG4gIH0pO1xyXG5cclxuICB0YWJzID0gY29tcHV0ZWQ8SUJtYlRhYltdPigoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJzTmFtZSgpLm1hcCgodGFiLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCBjb21wbGV4VGFiOiBJQm1iVGFiID0ge1xyXG4gICAgICAgIGlkOiBpbmRleCxcclxuICAgICAgICB0aXRsZTogdHlwZW9mIHRhYiA9PT0gJ3N0cmluZycgPyB0YWIgOiB0YWIudGl0bGUsXHJcbiAgICAgICAgaXNBY3RpdmU6IGluZGV4ID09PSAwLFxyXG4gICAgICAgIGJhZGdlOlxyXG4gICAgICAgICAgaW5kZXggPT09IDAgfHwgaW5kZXggPT09IDFcclxuICAgICAgICAgICAgPyB0aGlzLmFsZXJ0TGlzdCgpLmZpbHRlcigoYWxlcnQpID0+ICFhbGVydC5pc1JlYWQpLmxlbmd0aFxyXG4gICAgICAgICAgICA6IDAsXHJcbiAgICAgICAgaXNNb2JpbGU6IHR5cGVvZiB0YWIgPT09ICdzdHJpbmcnID8gdHJ1ZSA6IHRhYi5pc01vYmlsZSxcclxuICAgICAgICBpc0Rlc2t0b3A6IHR5cGVvZiB0YWIgPT09ICdzdHJpbmcnID8gdHJ1ZSA6IHRhYi5pc0Rlc2t0b3AsXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiBjb21wbGV4VGFiO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcbiAgc2VsZWN0ZWRUYWIgPSBtb2RlbDxudW1iZXI+KDEpO1xyXG4gIHNlbGVjdGVkQWxlcnQ6IElCbWJEYXRhQWxlcnRbXSA9IFtdO1xyXG4gIG9yZGVyZWRFdmVudHMgPSBjb21wdXRlZDxJQm1iRGF0YUFsZXJ0c1BhcnNlZFtdPigoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5vcmRlckV2ZW50cyh0aGlzLmFsZXJ0TGlzdCgpKTtcclxuICB9KTtcclxuICBub3cgPSBEYXRlVGltZS5ub3coKTtcclxuICBldmVudHNJbkNhdGVnb3JpZXMgPSBjb21wdXRlZDxJQm1iQWxlcnRDZW50ZXJDYXRlZ29yaWVzPigoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5vcmRlckNhdGVnb3JpZXModGhpcy5vcmRlcmVkRXZlbnRzKCkpO1xyXG4gIH0pO1xyXG4gIHZpc2libGVBbGVydDogSUJtYkRhdGFBbGVydHNQYXJzZWQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgb3JkZXJFdmVudHMoYWxlcnRzOiBJQm1iRGF0YUFsZXJ0W10pOiBJQm1iRGF0YUFsZXJ0c1BhcnNlZFtdIHtcclxuICAgIGNvbnN0IHBhcnNlckRhdGVzID0gYWxlcnRzLm1hcCgoYWxlcnQpID0+ICh7XHJcbiAgICAgIC4uLmFsZXJ0LFxyXG4gICAgICBwRGF0ZTogRGF0ZVRpbWUuZnJvbUZvcm1hdChcclxuICAgICAgICBgJHthbGVydC5kYXRlfSAke2FsZXJ0LnRpbWV9YCxcclxuICAgICAgICBgJHt0aGlzLmRhdGVGb3JtYXQoKX0gSEg6bW1gLFxyXG4gICAgICApLFxyXG4gICAgfSkpO1xyXG5cclxuICAgIHJldHVybiBwYXJzZXJEYXRlcy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIHJldHVybiBiLnBEYXRlLnRvTWlsbGlzKCkgLSBhLnBEYXRlLnRvTWlsbGlzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9yZGVyQ2F0ZWdvcmllcyhhbGVydHM6IElCbWJEYXRhQWxlcnRzUGFyc2VkW10pOiBJQm1iQWxlcnRDZW50ZXJDYXRlZ29yaWVzIHtcclxuICAgIGNvbnN0IG9iamVjdEV2ZW50OiBJQm1iQWxlcnRDZW50ZXJDYXRlZ29yaWVzID0ge1xyXG4gICAgICByZWNlbnQ6IFtdLFxyXG4gICAgICBzZXZlbkRheXM6IFtdLFxyXG4gICAgICBtb250aDogW10sXHJcbiAgICAgIHJlc3Q6IFtdLFxyXG4gICAgfTtcclxuICAgIGFsZXJ0cy5mb3JFYWNoKChhbGVydCkgPT4ge1xyXG4gICAgICBjb25zdCBkaWZmID0gTWF0aC50cnVuYyh0aGlzLm5vdy5kaWZmKGFsZXJ0LnBEYXRlLCAnZGF5cycpLmRheXMgfHwgMCk7XHJcbiAgICAgIGlmIChkaWZmID09PSAwKSBvYmplY3RFdmVudC5yZWNlbnQucHVzaChhbGVydCk7XHJcbiAgICAgIGVsc2UgaWYgKGRpZmYgPD0gNykgb2JqZWN0RXZlbnQuc2V2ZW5EYXlzLnB1c2goYWxlcnQpO1xyXG4gICAgICBlbHNlIGlmIChkaWZmIDw9IDMwKSBvYmplY3RFdmVudC5tb250aC5wdXNoKGFsZXJ0KTtcclxuICAgICAgZWxzZSBvYmplY3RFdmVudC5yZXN0LnB1c2goYWxlcnQpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gb2JqZWN0RXZlbnQ7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTaG93QWxlcnQoaXRlbTogSUJtYkRhdGFBbGVydHNQYXJzZWQpOiB2b2lkIHtcclxuICAgIHRoaXMudmlzaWJsZUFsZXJ0ID0gaXRlbTtcclxuICAgIGNvbnN0IHsgcERhdGUsIC4uLmFsZXJ0RGF0YSB9ID0gaXRlbTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggPCAzNTAgfHxcclxuICAgICAgd2luZG93LmlubmVyV2lkdGggPCAxMDAwIHx8XHJcbiAgICAgIHRoaXMuc2hvd01vYmlsZVZlcnNpb24oKVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IGRhdGE6IElCbWJOYXRpdmVNb2RhbCA9IHtcclxuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcclxuICAgICAgICBjb250ZW50OiB0aGlzLmRldGFpbENvbnRlbnQsXHJcbiAgICAgICAgc2l6ZTogJ3NtYWxsJyxcclxuICAgICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgICAgIGFjdGlvbnM6IFt7XHJcbiAgICAgICAgICBidXR0b25OYW1lOiAnY2xvc2UnLFxyXG4gICAgICAgICAgbGFiZWw6ICdDZXJyYXInLFxyXG4gICAgICAgICAgYXBwZWFyYW5jZTogJ3NlY29uZGFyeS1vdXRsaW5lZCcsXHJcbiAgICAgICAgICBhY3Rpb246IHRoaXMuaGFuZGxlQ2xvc2VEZXRhaWwuYmluZCh0aGlzLCBpdGVtKSxcclxuICAgICAgICB9XSxcclxuICAgICAgICBjbG9zZU1vZGFsQ2xpY2tlZDogdGhpcy5oYW5kbGVDbG9zZURldGFpbC5iaW5kKHRoaXMsIGl0ZW0pLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLm5hdGl2ZU1vZGFsU2VydmljZS5vcGVuTW9kYWwoZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaG93QWxlcnREZXRhaWwuZW1pdChhbGVydERhdGEpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xvc2VEZXRhaWwoYWxlcnQ6IElCbWJEYXRhQWxlcnRzUGFyc2VkKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHBEYXRlLCAuLi5hbGVydERhdGEgfSA9IGFsZXJ0O1xyXG4gICAgdGhpcy5jbG9zZUFsZXJ0RGV0YWlsLmVtaXQoYWxlcnREYXRhKTtcclxuICAgIHRoaXMubmF0aXZlTW9kYWxTZXJ2aWNlLmNsb3NlQWxsTW9kYWxzKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVBbGVydEV2ZW50KGFsZXJ0OiBJQm1iRGF0YUFsZXJ0KTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0RXZlbnQuZW1pdChhbGVydCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDaGFuZ2VBbGVydFN0YXR1cyhhbGVydDogSUJtYkRhdGFBbGVydHNPdXRwdXQpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2VBbGVydFN0YXR1cy5lbWl0KGFsZXJ0KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU5hdmlnYXRpb25CYXJFdmVudHMoZXZlbnQ6IElCbWJBbGVydENlbnRlclByb3RvRXZlbnRGb290ZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV2ZW50cyA9IHRoaXMuYWxlcnRMaXN0KCkuZmlsdGVyKChhbGVydCkgPT5cclxuICAgICAgZXZlbnQuYWxlcnRzLmluY2x1ZGVzKGFsZXJ0LmlkLnRvU3RyaW5nKCkpLFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoZXZlbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgaWYgKGV2ZW50LmV2ZW50ID09PSAndGFncycpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uQmFyRXZlbnRzLmVtaXQoe1xyXG4gICAgICAgIGFsZXJ0czogZXZlbnRzLFxyXG4gICAgICAgIGV2ZW50OiAndGFncycsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBuYW1lcyA9IHtcclxuICAgICAgaXNSZWFkOiAncmVhZCcsXHJcbiAgICAgIGlzRmF2b3JpdGU6ICdmYXZvcml0ZScsXHJcbiAgICAgIGlzQXJjaGl2ZWQ6ICdhcmNoaXZlZCcsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgZXZlbnROYW1lID0gbmFtZXNbZXZlbnQuZXZlbnRdIHx8IGV2ZW50LmV2ZW50O1xyXG4gICAgY29uc3QgaXNQb3NpdGl2ZU9wZXJhdGlvbiA9IGV2ZW50cy5zb21lKChhbGVydCkgPT4gIWFsZXJ0W2V2ZW50LmV2ZW50XSk7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBpc1Bvc2l0aXZlT3BlcmF0aW9uXHJcbiAgICAgID8gYGFkZF8ke2V2ZW50TmFtZX1gXHJcbiAgICAgIDogYHJlbW92ZV8ke2V2ZW50TmFtZX1gO1xyXG4gICAgdGhpcy5uYXZpZ2F0aW9uQmFyRXZlbnRzLmVtaXQoe1xyXG4gICAgICBhbGVydHM6IGV2ZW50cyxcclxuICAgICAgZXZlbnQ6IGV2ZW50VHlwZSBhcyBJQm1iQWxlcnRDZW50ZXJGb290ZXJFdmVudE5hbWUsXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJibWJfYWxlcnQtY2VudGVyXCIgI2NvbnRhaW5lciBibWJMYXlvdXQgbWFyZ2luPVwibm9uZVwiPlxuICA8ZGl2XG4gICAgYm1iTGF5b3V0SXRlbVxuICAgIFtjb2xTbV09XCI0XCJcbiAgICBbY29sTGddPVwic2hvd01vYmlsZVZlcnNpb24oKSA/IDEyIDogNVwiXG4gICAgY2xhc3M9XCJibWJfYWxlcnQtY2VudGVyLW1haW5cIlxuICAgIFtuZ0NsYXNzXT1cInsgJ2JtYl9hbGVydC1jZW50ZXItbWFpbi1uby1ib3JkZXInOiBzaG93TW9iaWxlVmVyc2lvbigpIH1cIlxuICA+XG4gICAgQGlmIChpc0xvYWRpbmcoKSkge1xuICAgICAgPGJtYi1sb2FkZXJcbiAgICAgICAgdGl0bGU9XCJDYXJnYW5kby4uLlwiXG4gICAgICAgIHN1YnRpdGxlPVwiQ2FyZ2FuZG8gbGFzIG5vdGlmaWNhY2lvbmVzXCJcbiAgICAgICAgW292ZXJsYXldPVwiZmFsc2VcIlxuICAgICAgICBbaXNWaXNpYmxlXT1cInRydWVcIlxuICAgICAgICBbZXJyb3JTdGF0ZV09XCJmYWxzZVwiXG4gICAgICAgIGFwcGVhcmFuY2U9XCJub3JtYWxcIlxuICAgICAgICBpY29uPVwid2lmaV9vZmZcIlxuICAgICAgICBbYWN0aW9uc109XCJmYWxzZVwiXG4gICAgICAgIGJ1dHRvblByaW1hcnk9XCJSZWludGVudGFyXCJcbiAgICAgICAgYnV0dG9uU2Vjb25kYXJ5PVwiU2FsaXJcIlxuICAgICAgICBbc2hvd0lubGluZV09XCJ0cnVlXCJcbiAgICAgIC8+XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaWYgKCFoaWRlVGFicygpKSB7XG4gICAgICAgIDxibWItdGFicyBbdGFic109XCJ0YWJzKClcIiBbKHNlbGVjdGVkVGFiSWQpXT1cInNlbGVjdGVkVGFiXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoc2VsZWN0ZWRUYWIoKSA9PT0gMSkge1xuICAgICAgICA8Ym1iLWFsZXJ0LWNlbnRlci1mb3JtXG4gICAgICAgICAgKHNob3dBbGVydERldGFpbCk9XCJoYW5kbGVTaG93QWxlcnQoJGV2ZW50KVwiXG4gICAgICAgICAgW2V2ZW50c0luQ2F0ZWdvcmllc109XCJldmVudHNJbkNhdGVnb3JpZXMoKVwiXG4gICAgICAgICAgW2VuYWJsZU11bHRpcGxlU2VsZWN0aW9uXT1cImVuYWJsZU11bHRpcGxlU2VsZWN0aW9uKClcIlxuICAgICAgICAgIChjaGFuZ2VBbGVydFN0YXR1cyk9XCJoYW5kbGVDaGFuZ2VBbGVydFN0YXR1cygkZXZlbnQpXCJcbiAgICAgICAgICBbZW1wdHlTdGF0ZURhdGFdPVwiZW1wdHlTdGF0ZURhdGEoKVwiXG4gICAgICAgICAgKG5hdmlnYXRpb25CYXJFdmVudHMpPVwiaGFuZGxlTmF2aWdhdGlvbkJhckV2ZW50cygkZXZlbnQpXCJcbiAgICAgICAgICBmaWx0ZXJCeT1cImFsbFwiXG4gICAgICAgIC8+XG4gICAgICB9IEBlbHNlIGlmIChzZWxlY3RlZFRhYigpID09PSAyKSB7XG4gICAgICAgIDxibWItYWxlcnQtY2VudGVyLWZvcm1cbiAgICAgICAgICAoc2hvd0FsZXJ0RGV0YWlsKT1cImhhbmRsZVNob3dBbGVydCgkZXZlbnQpXCJcbiAgICAgICAgICBbZXZlbnRzSW5DYXRlZ29yaWVzXT1cImV2ZW50c0luQ2F0ZWdvcmllcygpXCJcbiAgICAgICAgICBbZW5hYmxlTXVsdGlwbGVTZWxlY3Rpb25dPVwiZW5hYmxlTXVsdGlwbGVTZWxlY3Rpb24oKVwiXG4gICAgICAgICAgKGNoYW5nZUFsZXJ0U3RhdHVzKT1cImhhbmRsZUNoYW5nZUFsZXJ0U3RhdHVzKCRldmVudClcIlxuICAgICAgICAgIFtlbXB0eVN0YXRlRGF0YV09XCJlbXB0eVN0YXRlRGF0YSgpXCJcbiAgICAgICAgICAobmF2aWdhdGlvbkJhckV2ZW50cyk9XCJoYW5kbGVOYXZpZ2F0aW9uQmFyRXZlbnRzKCRldmVudClcIlxuICAgICAgICAgIGZpbHRlckJ5PVwidW5yZWFkXCJcbiAgICAgICAgLz5cbiAgICAgIH0gQGVsc2UgaWYgKHNlbGVjdGVkVGFiKCkgPT09IDMpIHtcbiAgICAgICAgPGJtYi1hbGVydC1jZW50ZXItZm9ybVxuICAgICAgICAgIChzaG93QWxlcnREZXRhaWwpPVwiaGFuZGxlU2hvd0FsZXJ0KCRldmVudClcIlxuICAgICAgICAgIFtldmVudHNJbkNhdGVnb3JpZXNdPVwiZXZlbnRzSW5DYXRlZ29yaWVzKClcIlxuICAgICAgICAgIFtlbmFibGVNdWx0aXBsZVNlbGVjdGlvbl09XCJlbmFibGVNdWx0aXBsZVNlbGVjdGlvbigpXCJcbiAgICAgICAgICAoY2hhbmdlQWxlcnRTdGF0dXMpPVwiaGFuZGxlQ2hhbmdlQWxlcnRTdGF0dXMoJGV2ZW50KVwiXG4gICAgICAgICAgW2VtcHR5U3RhdGVEYXRhXT1cImVtcHR5U3RhdGVEYXRhKClcIlxuICAgICAgICAgIChuYXZpZ2F0aW9uQmFyRXZlbnRzKT1cImhhbmRsZU5hdmlnYXRpb25CYXJFdmVudHMoJGV2ZW50KVwiXG4gICAgICAgICAgZmlsdGVyQnk9XCJmYXZvcml0ZXNcIlxuICAgICAgICAvPlxuICAgICAgfSBAZWxzZSBpZiAoc2VsZWN0ZWRUYWIoKSA9PT0gNCkge1xuICAgICAgICA8Ym1iLWFsZXJ0LWNlbnRlci1mb3JtXG4gICAgICAgICAgKHNob3dBbGVydERldGFpbCk9XCJoYW5kbGVTaG93QWxlcnQoJGV2ZW50KVwiXG4gICAgICAgICAgW2V2ZW50c0luQ2F0ZWdvcmllc109XCJldmVudHNJbkNhdGVnb3JpZXMoKVwiXG4gICAgICAgICAgKGNoYW5nZUFsZXJ0U3RhdHVzKT1cImhhbmRsZUNoYW5nZUFsZXJ0U3RhdHVzKCRldmVudClcIlxuICAgICAgICAgIFtlbXB0eVN0YXRlRGF0YV09XCJlbXB0eVN0YXRlRGF0YSgpXCJcbiAgICAgICAgICAobmF2aWdhdGlvbkJhckV2ZW50cyk9XCJoYW5kbGVOYXZpZ2F0aW9uQmFyRXZlbnRzKCRldmVudClcIlxuICAgICAgICAgIGZpbHRlckJ5PVwiYXJjaGl2ZWRcIlxuICAgICAgICAvPlxuICAgICAgfSBAZWxzZSBpZiAoc2VsZWN0ZWRUYWIoKSA9PT0gNSkge1xuICAgICAgICA8Ym1iLWFsZXJ0LWNlbnRlci1hZHNcbiAgICAgICAgICBbYWR2ZXJ0aXNlbWVudHNdPVwiYWR2ZXJ0aXNlbWVudHNMaXN0KClcIlxuICAgICAgICAgIChhbGVydEV2ZW50KT1cImhhbmRsZUFsZXJ0RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNlY3Rpb24gYm1iTGF5b3V0SXRlbSBbY29sU21dPVwiNFwiIFtjb2xMZ109XCIxMlwiPlxuICAgICAgICAgIDxibWItYWxlcnQtY2VudGVyLWVtcHR5IFtkYXRhXT1cImVtcHR5U3RhdGVEYXRhKClcIiAvPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgfVxuICA8L2Rpdj5cbiAgQGlmICghc2hvd01vYmlsZVZlcnNpb24oKSAmJiBhbGVydExpc3QoKS5sZW5ndGgpIHtcbiAgICA8c2VjdGlvblxuICAgICAgY2xhc3M9XCJibWJfYWxlcnQtY2VudGVyLWNvbnRlbnRcIlxuICAgICAgYm1iTGF5b3V0SXRlbVxuICAgICAgW2NvbFNtXT1cIjRcIlxuICAgICAgW2NvbExnXT1cIjdcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGV0YWlsQ29udGVudFwiIC8+XG4gICAgPC9zZWN0aW9uPlxuICB9XG48L3NlY3Rpb24+XG5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlsQ29udGVudD5cbiAgQGlmICh2aXNpYmxlQWxlcnQpIHtcbiAgICA8c2VjdGlvbiBjbGFzcz1cImJtYl9hbGVydC1jZW50ZXItY29udGVudC1tb2RhbFwiPlxuICAgICAgPGgxIGNsYXNzPVwiZm9udC1ib2xkLTcgYm1iX2FsZXJ0LWNlbnRlci1jb250ZW50LW1vZGFsLXRpdGxlXCI+XG4gICAgICAgIHt7IHZpc2libGVBbGVydC50aXRsZSB9fVxuICAgICAgPC9oMT5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgdmlzaWJsZUFsZXJ0LmRlc2NyaXB0aW9uOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgQHN3aXRjaCAoaXRlbS50eXBlKSB7XG4gICAgICAgICAgQGNhc2UgKFwicGFyYWdyYXBoXCIpIHtcbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidibWJfYWxlcnQtY2VudGVyLWNvbnRlbnQtJyArIChpdGVtLnN0eWxlID8/ICdub3JtYWwnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGl0ZW0udGV4dCB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoXCJpbWFnZVwiKSB7XG4gICAgICAgICAgICA8Ym1iLWltYWdlXG4gICAgICAgICAgICAgIFtzcmNdPVwiaXRlbS5ocmVmIHx8ICcnXCJcbiAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLnRleHRcIlxuICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJub25lXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBjYXNlIChcInZpZGVvXCIpIHtcbiAgICAgICAgICAgIDx2aWRlbyBbc3JjXT1cIml0ZW0uaHJlZlwiIGNvbnRyb2xzPjwvdmlkZW8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBjYXNlIChcInRpdGxlXCIpIHtcbiAgICAgICAgICAgIDxoM1xuICAgICAgICAgICAgICBbbmdDbGFzc109XCInYm1iX2FsZXJ0LWNlbnRlci1jb250ZW50LScgKyAoaXRlbS5zdHlsZSA/PyAnbm9ybWFsJylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBpdGVtLnRleHQgfX1cbiAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBjYXNlIChcImJ1dHRvblwiKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGJtYkJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiaXRlbS52YXJpYW50ID8/ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICBpdGVtLmV2ZW50XG4gICAgICAgICAgICAgICAgICA/IGl0ZW0/LmV2ZW50KHZpc2libGVBbGVydC5pZClcbiAgICAgICAgICAgICAgICAgIDogaGFuZGxlQWxlcnRFdmVudCh2aXNpYmxlQWxlcnQpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGl0ZW0udGV4dCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBjYXNlIChcImxpbmtcIikge1xuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2JtYl9hbGVydC1jZW50ZXItY29udGVudC0nICsgKGl0ZW0uc3R5bGUgPz8gJ25vcm1hbCcpXCJcbiAgICAgICAgICAgICAgW2hyZWZdPVwiaXRlbS5ocmVmXCJcbiAgICAgICAgICAgICAgPnt7IGl0ZW0udGV4dCB9fTwvYVxuICAgICAgICAgICAgPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvc2VjdGlvbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==