barsa-sap-ui 2.0.87 → 2.0.89

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.
@@ -65,7 +65,7 @@ export class BarsaSimpleFormComponent extends BaseComponent {
65
65
  this.layout2 = GetFormLayoutGrid(false, this.colXl, this.colLg, this.colMd);
66
66
  }
67
67
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaSimpleFormComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
68
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaSimpleFormComponent, selector: "bsu-barsa-simple-form", inputs: { breadCrumbs: "breadCrumbs", toolbarVisible: "toolbarVisible", toolbarItems: "toolbarItems", layoutActions: "layoutActions", layout94: "layout94", parameters: "parameters", workflowPanelUi: "workflowPanelUi", context: "context", title: "title", subtitle: "subtitle", description: "description", facetList: "facetList", fieldDict: "fieldDict", removeHeaderBorder: "removeHeaderBorder", removeContentPadding: "removeContentPadding", isMobile: "isMobile", mo: "mo", avatar: "avatar", rtl: "rtl", isModal: "isModal", hideTitle: "hideTitle", hideClose: "hideClose", hidePin: "hidePin", mask: "mask", canSend: "canSend", contentIsPage: "contentIsPage", contentDensity: "contentDensity", deviceSize: "deviceSize", dirValue: "dirValue", landscape: "landscape", standalone: "standalone", modernTabs: "modernTabs", workflowButtons: "workflowButtons", layoutGridCol: "layoutGridCol", colLg: "colLg", colXl: "colXl", colMd: "colMd", formContentMaxWidth: "formContentMaxWidth", formVisibilityStatus: "formVisibilityStatus" }, outputs: { toolbarClick: "toolbarClick", workflowChoiceClick: "workflowChoiceClick", close: "close" }, viewQueries: [{ propertyName: "_toolbarComponent", first: true, predicate: ["formToolbar"], descendants: true }, { propertyName: "titleRef", first: true, predicate: ["titleRef"], descendants: true, read: ViewContainerRef }, { propertyName: "headerAvatarRef", first: true, predicate: ["headerAvatar"], descendants: true }, { propertyName: "closeFormTemplate", first: true, predicate: ["closeForm"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (mask) {\n<bsu-mask> </bsu-mask>\n}\n<fd-layout-grid>\n <div fdLayoutGridRow>\n <div\n class=\"grid-col\"\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout1.colMd\"\n [colLg]=\"layout1.colLg\"\n [colXl]=\"layout1.colXl\"\n ></div>\n <div class=\"grid-col\" [fdLayoutGridCol]=\"12\" [colMd]=\"colMd\" [colLg]=\"colLg\" [colXl]=\"colXl\">\n <ng-container\n *ngTemplateOutlet=\"\n parameters?.LayoutComponent ? renderLayoutComponent : renderDefaultLayout;\n context: {\n $implicit: parameters?.LayoutComponent,\n layout94: layout94\n }\n \"\n ></ng-container>\n </div>\n <div\n class=\"grid-col\"\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout2.colMd\"\n [colLg]=\"layout2.colLg\"\n [colXl]=\"layout2.colXl\"\n ></div>\n </div>\n</fd-layout-grid>\n\n<ng-template #renderDefaultLayout let-layout94=\"layout94\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n @if (workflowButtons && !isModal) { @if (workflowButtons.length) {\n <div class=\"workflow-buttons\">\n <div style=\"flex-grow: 1\"></div>\n <bsu-layout-actions\n style=\"display: flex; column-gap: 1rem\"\n [simple]=\"true\"\n [buttons]=\"[]\"\n [workflowButtons]=\"workflowButtons\"\n (toolClick)=\"onToolbarClick($event)\"\n >\n </bsu-layout-actions>\n </div>\n } }\n</ng-template>\n<ng-template #renderLayoutComponent let-component let-layout94=\"layout94\">\n <bnrc-dynamic-form-component\n [component]=\"component\"\n [removeContentPadding]=\"removeContentPadding\"\n [breadCrumbs]=\"breadCrumbs\"\n [description]=\"description\"\n [title]=\"title\"\n [subtitle]=\"subtitle\"\n [toolbarItems]=\"toolbarItems\"\n [layoutActions]=\"layoutActions\"\n [facetList]=\"facetList\"\n [settings]=\"component.Settings\"\n [workflowPanelUi]=\"workflowPanelUi\"\n [isMobile]=\"isMobile\"\n [mo]=\"mo\"\n [layout94]=\"layout94\"\n [context]=\"context\"\n [rtl]=\"rtl\"\n [fieldDict]=\"fieldDict\"\n [mask]=\"mask\"\n [dirValue]=\"dirValue\"\n [deviceSize]=\"deviceSize\"\n [contentDensity]=\"contentDensity\"\n [modernTabs]=\"modernTabs\"\n [avatar]=\"avatar\"\n (events)=\"onDynamicComponentEvents($event)\"\n ></bnrc-dynamic-form-component>\n</ng-template>\n", styles: [":host{display:block;height:auto;min-height:100%;width:100%}:host ::ng-deep fd-dynamic-page[contentIsPage=true] .fd-dynamic-page{height:auto!important}:host ::ng-deep .fd-progress-indicator__container,:host ::ng-deep .fd-progress-indicator__progress-bar{height:1.5rem}:host ::ng-deep fd-facet .fd-object-status--large{font-size:1.1rem}.hide-title ::ng-deep .fd-dynamic-page__title-container{display:none!important}.no-pin ::ng-deep .fd-dynamic-page__collapsible-header-visibility-container{display:none!important}fd-toolbar.firefox ::ng-deep .fd-toolbar{flex-direction:row-reverse}fd-toolbar.firefox ::ng-deep .fd-toolbar>:first-child{margin-right:5px}bsu-ly-layout-container-of-root{padding-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DynamicFormComponent, selector: "bnrc-dynamic-form-component", inputs: ["breadCrumbs", "toolbarVisible", "toolbarItems", "layoutActions", "workflowButtons", "buttons", "layout94", "footerDesign", "settings", "workflowPanelUi", "title", "subtitle", "description", "facetList", "removeHeaderBorder", "removeContentPadding", "isMobile", "avatar", "rtl", "mask", "mo", "contentDensity", "deviceSize", "dirValue", "fieldDict", "modernTabs"] }, { kind: "component", type: i3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i3.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i4.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i5.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i6.LayoutActionsComponent, selector: "bsu-layout-actions", inputs: ["workflowButtons", "workflowButtonsComboMode", "canSend", "simple", "footerDesign"], outputs: ["workflowChoiceSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaSimpleFormComponent, selector: "bsu-barsa-simple-form", inputs: { breadCrumbs: "breadCrumbs", toolbarVisible: "toolbarVisible", toolbarItems: "toolbarItems", layoutActions: "layoutActions", layout94: "layout94", parameters: "parameters", workflowPanelUi: "workflowPanelUi", context: "context", title: "title", subtitle: "subtitle", description: "description", facetList: "facetList", fieldDict: "fieldDict", removeHeaderBorder: "removeHeaderBorder", removeContentPadding: "removeContentPadding", isMobile: "isMobile", mo: "mo", avatar: "avatar", rtl: "rtl", isModal: "isModal", hideTitle: "hideTitle", hideClose: "hideClose", hidePin: "hidePin", mask: "mask", canSend: "canSend", contentIsPage: "contentIsPage", contentDensity: "contentDensity", deviceSize: "deviceSize", dirValue: "dirValue", landscape: "landscape", standalone: "standalone", modernTabs: "modernTabs", workflowButtons: "workflowButtons", layoutGridCol: "layoutGridCol", colLg: "colLg", colXl: "colXl", colMd: "colMd", formContentMaxWidth: "formContentMaxWidth", formVisibilityStatus: "formVisibilityStatus" }, outputs: { toolbarClick: "toolbarClick", workflowChoiceClick: "workflowChoiceClick", close: "close" }, viewQueries: [{ propertyName: "_toolbarComponent", first: true, predicate: ["formToolbar"], descendants: true }, { propertyName: "titleRef", first: true, predicate: ["titleRef"], descendants: true, read: ViewContainerRef }, { propertyName: "headerAvatarRef", first: true, predicate: ["headerAvatar"], descendants: true }, { propertyName: "closeFormTemplate", first: true, predicate: ["closeForm"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (mask) {\n<bsu-mask> </bsu-mask>\n}\n<fd-layout-grid>\n <div fdLayoutGridRow>\n <div\n class=\"grid-col\"\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout1.colMd\"\n [colLg]=\"layout1.colLg\"\n [colXl]=\"layout1.colXl\"\n ></div>\n <div class=\"grid-col\" [fdLayoutGridCol]=\"12\" [colMd]=\"colMd\" [colLg]=\"colLg\" [colXl]=\"colXl\">\n <ng-container\n *ngTemplateOutlet=\"\n parameters?.LayoutComponent ? renderLayoutComponent : renderDefaultLayout;\n context: {\n $implicit: parameters?.LayoutComponent,\n layout94: layout94\n }\n \"\n ></ng-container>\n </div>\n <div\n class=\"grid-col\"\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout2.colMd\"\n [colLg]=\"layout2.colLg\"\n [colXl]=\"layout2.colXl\"\n ></div>\n </div>\n</fd-layout-grid>\n\n<ng-template #renderDefaultLayout let-layout94=\"layout94\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n @if (workflowButtons && !isModal) { @if (workflowButtons.length) {\n <div class=\"workflow-buttons\">\n <div style=\"flex-grow: 1\"></div>\n <bsu-layout-actions\n style=\"display: flex; column-gap: 1rem\"\n [simple]=\"true\"\n [buttons]=\"[]\"\n [workflowButtons]=\"workflowButtons\"\n (toolClick)=\"onToolbarClick($event)\"\n >\n </bsu-layout-actions>\n </div>\n } }\n</ng-template>\n<ng-template #renderLayoutComponent let-component let-layout94=\"layout94\">\n <bnrc-dynamic-form-component\n [component]=\"component\"\n [removeContentPadding]=\"removeContentPadding\"\n [breadCrumbs]=\"breadCrumbs\"\n [description]=\"description\"\n [title]=\"title\"\n [subtitle]=\"subtitle\"\n [toolbarItems]=\"toolbarItems\"\n [layoutActions]=\"layoutActions\"\n [facetList]=\"facetList\"\n [settings]=\"component.Settings\"\n [workflowPanelUi]=\"workflowPanelUi\"\n [isMobile]=\"isMobile\"\n [mo]=\"mo\"\n [layout94]=\"layout94\"\n [context]=\"context\"\n [rtl]=\"rtl\"\n [fieldDict]=\"fieldDict\"\n [mask]=\"mask\"\n [dirValue]=\"dirValue\"\n [deviceSize]=\"deviceSize\"\n [contentDensity]=\"contentDensity\"\n [modernTabs]=\"modernTabs\"\n [avatar]=\"avatar\"\n (events)=\"onDynamicComponentEvents($event)\"\n ></bnrc-dynamic-form-component>\n</ng-template>\n", styles: [":host{display:block;height:auto;min-height:100%;width:100%}:host ::ng-deep fd-dynamic-page[contentIsPage=true] .fd-dynamic-page{height:auto!important}:host ::ng-deep .fd-progress-indicator__container,:host ::ng-deep .fd-progress-indicator__progress-bar{height:1.5rem}:host ::ng-deep fd-facet .fd-object-status--large{font-size:1.1rem}.hide-title ::ng-deep .fd-dynamic-page__title-container{display:none!important}.no-pin ::ng-deep .fd-dynamic-page__collapsible-header-visibility-container{display:none!important}fd-toolbar.firefox ::ng-deep .fd-toolbar{flex-direction:row-reverse}fd-toolbar.firefox ::ng-deep .fd-toolbar>:first-child{margin-right:5px}bsu-ly-layout-container-of-root{padding-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DynamicFormComponent, selector: "bnrc-dynamic-form-component", inputs: ["breadCrumbs", "toolbarVisible", "toolbarItems", "layoutActions", "workflowButtons", "layout94", "footerDesign", "settings", "workflowPanelUi", "title", "subtitle", "description", "facetList", "removeHeaderBorder", "removeContentPadding", "isMobile", "avatar", "rtl", "mask", "mo", "contentDensity", "deviceSize", "dirValue", "fieldDict", "modernTabs"] }, { kind: "component", type: i3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i3.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i4.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i5.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i6.LayoutActionsComponent, selector: "bsu-layout-actions", inputs: ["workflowButtons", "workflowButtonsComboMode", "canSend", "simple", "footerDesign"], outputs: ["workflowChoiceSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
69
  }
70
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaSimpleFormComponent, decorators: [{
71
71
  type: Component,
@@ -94,11 +94,11 @@ export class FundamentalDynamicFormComponent extends BaseComponent {
94
94
  this.layout2 = GetFormLayoutGrid(false, this.colXl, this.colLg, this.colMd);
95
95
  }
96
96
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FundamentalDynamicFormComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
97
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: FundamentalDynamicFormComponent, selector: "bsu-fundamental-dynamic-form", inputs: { breadCrumbs: "breadCrumbs", toolbarVisible: "toolbarVisible", toolbarItems: "toolbarItems", layoutActions: "layoutActions", layout94: "layout94", parameters: "parameters", workflowPanelUi: "workflowPanelUi", context: "context", title: "title", subtitle: "subtitle", description: "description", facetList: "facetList", fieldDict: "fieldDict", removeHeaderBorder: "removeHeaderBorder", removeContentPadding: "removeContentPadding", isMobile: "isMobile", mo: "mo", avatar: "avatar", circleAvatar: "circleAvatar", rtl: "rtl", hideFooter: "hideFooter", hideTitle: "hideTitle", hideClose: "hideClose", hidePin: "hidePin", fullscreen: "fullscreen", mask: "mask", canSend: "canSend", contentIsPage: "contentIsPage", contentDensity: "contentDensity", deviceSize: "deviceSize", dirValue: "dirValue", landscape: "landscape", standalone: "standalone", modernTabs: "modernTabs", formVisibilityStatus: "formVisibilityStatus", layoutGridCol: "layoutGridCol", colLg: "colLg", colXl: "colXl", colMd: "colMd", footerDesign: "footerDesign", formContentMaxWidth: "formContentMaxWidth" }, outputs: { toolbarClick: "toolbarClick", workflowChoiceClick: "workflowChoiceClick", close: "close", fullscreenRequest: "fullscreenRequest" }, viewQueries: [{ propertyName: "_dynamicPageComponent", first: true, predicate: DynamicPageComponent, descendants: true, static: true }, { propertyName: "_tabListComponent", first: true, predicate: TabListComponent, descendants: true }, { propertyName: "_toolbarComponent", first: true, predicate: ["formToolbar"], descendants: true }, { propertyName: "titleRef", first: true, predicate: ["titleRef"], descendants: true, read: ViewContainerRef }, { propertyName: "headerAvatarRef", first: true, predicate: ["headerAvatar"], descendants: true }, { propertyName: "closeFormTemplate", first: true, predicate: ["closeForm"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (mask) {\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%\">\n <bsu-mask size=\"m\"></bsu-mask>\n</div>\n}\n\n<fd-dynamic-page\n [size]=\"isMobile ? 'small' : 'large'\"\n [class.header-border]=\"!removeHeaderBorder\"\n [attr.isMobile]=\"isMobile\"\n [attr.contentIsPage]=\"contentIsPage\"\n mobile\n formClose\n [isMobile]=\"isMobile\"\n>\n <fd-dynamic-page-header\n [class.simple-title]=\"!description\"\n [title]=\"(hideTitle === true ? '' : title) | bbbTranslate\"\n [subtitle]=\"subtitle | bbbTranslate\"\n [class.p-b0]=\"removeContentPadding\"\n [class.hide-title]=\"hideTitle === true && hideClose === true\"\n #titleRef\n >\n <fd-dynamic-page-breadcrumb [class.hide]=\"isMobile\">\n <fd-breadcrumb>\n @if (breadCrumbs && !isMobile) { @for (breadCrumb of breadCrumbs | slice: 0:breadCrumbs.length; track\n breadCrumb.url; let i = $index; let last = $last) {\n <fd-breadcrumb-item>\n <bsu-breadcrumb\n [index]=\"i\"\n [isLast]=\"last\"\n [breadCrumb]=\"breadCrumb\"\n [allBreadCrumb]=\"breadCrumbs\"\n ></bsu-breadcrumb>\n </fd-breadcrumb-item>\n } }\n </fd-breadcrumb>\n </fd-dynamic-page-breadcrumb>\n <fd-dynamic-page-global-actions>\n <!-- global actions -->\n\n <fd-toolbar [shouldOverflow]=\"true\" Style=\"display:none\"> </fd-toolbar>\n <!-- added this because in mobile landscape toolbar disapper -->\n @if (toolbarVisible) {\n <bsu-form-toolbar\n [deviceSize]=\"deviceSize\"\n [buttons]=\"toolbarItems\"\n [dirValue]=\"dirValue\"\n [isFirefox]=\"isFirefox\"\n (toolbarClick)=\"toolbarClick.emit($event)\"\n #formToolbar\n ></bsu-form-toolbar>\n }\n </fd-dynamic-page-global-actions>\n <fd-dynamic-page-layout-actions>\n <!-- layout actions -->\n <!-- <div [formActions]=\"this.toolbar\"></div> -->\n @if (!hideClose) {\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\n @if (deviceSize !== 's') {\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n <ng-container *ngTemplateOutlet=\"fullscreenForm\"></ng-container>\n <ng-container *ngTemplateOutlet=\"closeForm\"></ng-container>\n </fd-toolbar>\n }\n </fd-dynamic-page-layout-actions>\n </fd-dynamic-page-header>\n @if (description || facetList.length > 0 || workflowInfoText || avatar) {\n <fd-dynamic-page-subheader\n [class.header-no-description]=\"!(description || workflowInfoText)\"\n [class.no-pin]=\"hidePin\"\n [collapsible]=\"!!workflowInfoText || (facetList && facetList.length > 0)\"\n [pinnable]=\"true\"\n [collapsed]=\"(!facetList || facetList.length === 0) && !workflowInfoText\"\n >\n @if (workflowInfoText) {\n <fd-message-strip [type]=\"'warning'\" [dismissible]=\"false\">\n {{ workflowInfoText | bbbTranslate }}\n </fd-message-strip>\n }\n <fd-facet-group ariaLabel=\"Facet Group\">\n @if (avatar) {\n <fd-facet type=\"image\">\n <fd-avatar\n title=\"avatar\"\n [glyph]=\"avatar\"\n [image]=\"!avatar?.FileId ? null : (avatar?.FileId | picFieldSrc: 'ID':null)\"\n [size]=\"deviceSize === 'xl' ? 'l' : deviceSize\"\n [transparent]=\"true\"\n [circle]=\"circleAvatar\"\n ></fd-avatar>\n <!-- <div\n class=\"fd-avatar fd-avatar--circle\"\n [class]=\"'fd-avatar--' + (deviceSize === 'xl' ? 'l' : deviceSize)\"\n >\n <i *ngIf=\"avatar\" class=\"fd-avatar__icon\" [class]=\"avatar | sapFontClass\" role=\"presentation\"> </i>\n </div> -->\n </fd-facet>\n } @for (facet of facetList; track facet) {\n <fd-facet\n [type]=\"facet.type\"\n [facetTitle]=\"facet.mo.Title | bbbTranslate\"\n [subtitle]=\"facet.mo.SubTitle | facetValue | bbbTranslate\"\n >\n @for (item of facet.mo.ItemList?.MoDataList; track item) {\n <fd-facet-content>\n <label fd-form-label [colon]=\"true\" for=\"form-value-10\">{{ item.Title }}</label>\n <fd-text [text]=\"item.Value | facetValue\" id=\"form-value-10\"></fd-text>\n </fd-facet-content>\n } @if ( !facet.mo.IsNumber && facet.type === 'key-value' && !facet.mo.Component?.Selector) {\n <span\n fd-object-status\n [status]=\"facet.mo.Status | facetValue\"\n [label]=\"facet.mo.Component?.Selector ? '' : (facet.mo.Text | facetValue)\"\n [large]=\"facet.mo.IsLarge\"\n [title]=\"facet.mo.Text | facetValue\"\n [aria-label]=\"facet.mo.Text | facetValue\"\n [glyph]=\"facet.mo.Icon\"\n >\n </span>\n } @else {\n <bnrc-dynamic-component\n [class]=\"'fd-object-status--' + facet.mo.Status | facetValue\"\n [class.fd-object-status--large]=\"facet.mo.IsLarge\"\n [component]=\"facet.mo.Component\"\n [value]=\"facet.mo.Text\"\n ></bnrc-dynamic-component>\n } @if (facet.mo.IsNumber && facet.type === 'key-value') {\n <fd-object-number\n [number]=\"facet.mo.Text | facetValue\"\n [large]=\"facet.mo.IsLarge\"\n [unit]=\"facet.mo.Unit | facetValue\"\n [status]=\"facet.mo.Status | facetValue\"\n [decimal]=\"facet.mo.DecimalValue | facetValue\"\n ></fd-object-number>\n } @if (facet.type === 'plain-text') {\n <div [style.width.px]=\"facet.mo.Width\" style=\"white-space: normal\">\n <fd-text [text]=\"facet.mo.Text | facetValue\" hyphenation=\"auto\"></fd-text>\n </div>\n } @if (facet.type === 'rating-indicator') {\n <fd-facet-content>\n <fd-rating-indicator\n style=\"pointer-events: none\"\n size=\"md\"\n [dynamicTextIndicator]=\"facet.mo.Footer\"\n [displayMode]=\"true\"\n [value]=\"facet.mo | facetValue: facet.type\"\n ></fd-rating-indicator>\n </fd-facet-content>\n } @if (facet.type === 'progress') {\n <div [style.width]=\"'10rem'\">\n <!-- <span fd-form-label>{{ facet.mo.Subtitle | facetValue }}</span> -->\n <fd-progress-indicator\n style=\"width: 10r em\"\n [state]=\"facet.mo.State\"\n [valueText]=\"(facet.mo | facetValue: facet.type) + ' \u0627\u0632 10 \u0645\u0631\u062D\u0644\u0647'\"\n [valueNow]=\"facet.mo | facetValue: facet.type\"\n [valueMax]=\"10\"\n [unit]=\"'\u0645\u0631\u062D\u0644\u0647'\"\n ></fd-progress-indicator>\n <!-- <ui5-progress-indicator\n style=\"width: 10rem\"\n [valueState]=\"facet.mo.State\"\n [value]=\"getNumber(facet.mo.Value)\"\n ></ui5-progress-indicator> -->\n </div>\n } @if (facet.type === 'microcharts') {\n <div>\n <label wrap>in progress ...</label>\n </div>\n }\n </fd-facet>\n }\n </fd-facet-group>\n @if (description) {\n <span>{{ description }}</span>\n }\n </fd-dynamic-page-subheader>\n } @if (!contentIsPage && modernTabs && modernTabs.length > 0 && !parameters?.LayoutComponent) {\n <fd-tab-list\n (selectedTabChange)=\"onTabChanged($event)\"\n [collapseOverflow]=\"true\"\n [stackContent]=\"false\"\n maxContentHeight=\"auto\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n #tablist\n >\n @for (tab of modernTabs; track tab.Title; let i = $index) {\n <fd-tab [title]=\"tab.Title!! | bbbTranslate\" [class.is-expanded]=\"selectedTab === tab.Title\">\n <fd-dynamic-page-content [id]=\"tab.id\" [class.limit-content-width]=\"formContentMaxWidth > 0\">\n <fd-layout-grid [style.max-width.px]=\"formContentMaxWidth\">\n <div fdLayoutGridRow>\n <div\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout1.colMd\"\n [colLg]=\"layout1.colLg\"\n [colXl]=\"layout1.colXl\"\n ></div>\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"colMd\" [colLg]=\"colLg\" [colXl]=\"colXl\">\n <bsu-ly-tab-page [config]=\"tab\" [tablist]=\"tablist\"></bsu-ly-tab-page>\n </div>\n <div\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout2.colMd\"\n [colLg]=\"layout2.colLg\"\n [colXl]=\"layout2.colXl\"\n ></div>\n </div>\n </fd-layout-grid>\n </fd-dynamic-page-content>\n </fd-tab>\n }\n </fd-tab-list>\n } @else { @if (!contentIsPage) {\n <fd-tab-list\n [collapseOverflow]=\"true\"\n [stackContent]=\"false\"\n maxContentHeight=\"auto\"\n #tablist\n class=\"extra-hide-tabs\"\n >\n <fd-tab title=\"\">\n <fd-dynamic-page-content [class.limit-content-width]=\"formContentMaxWidth > 0\">\n <fd-layout-grid style=\"min-height: 100%\" [style.max-width.px]=\"formContentMaxWidth\">\n <div fdLayoutGridRow>\n <div\n style=\"padding: 0\"\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout1.colMd\"\n [colLg]=\"layout1.colLg\"\n [colXl]=\"layout1.colXl\"\n ></div>\n <div\n style=\"min-height: 100%\"\n [fdLayoutGridCol]=\"12\"\n [colMd]=\"colMd\"\n [colLg]=\"colLg\"\n [colXl]=\"colXl\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n parameters?.LayoutComponent ? renderLayoutComponent : renderDefaultLayout;\n context: {\n $implicit: parameters?.LayoutComponent,\n layout94: layout94\n }\n \"\n ></ng-container>\n </div>\n <div\n style=\"padding: 0\"\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout2.colMd\"\n [colLg]=\"layout2.colLg\"\n [colXl]=\"layout2.colXl\"\n ></div>\n </div>\n </fd-layout-grid>\n </fd-dynamic-page-content>\n </fd-tab>\n </fd-tab-list>\n } } @if(!hideFooter){\n <fd-dynamic-page-footer>\n <bsu-layout-actions\n [canSend]=\"canSend\"\n [buttons]=\"layoutActions\"\n [isMobile]=\"isMobile\"\n [landscape]=\"landscape\"\n [standalone]=\"standalone\"\n [footerDesign]=\"footerDesign\"\n [workflowButtons]=\"workflowButtons\"\n [workflowButtonsComboMode]=\"workflowButtonsComboMode\"\n [deviceSize]=\"deviceSize\"\n [rtl]=\"rtl\"\n (toolClick)=\"toolbarClick.emit($event)\"\n (workflowChoiceSelect)=\"onWfChoiceSelect($event)\"\n >\n </bsu-layout-actions>\n </fd-dynamic-page-footer>\n }\n</fd-dynamic-page>\n@if (contentIsPage) {\n<ng-container\n *ngTemplateOutlet=\"\n renderLayoutComponent;\n context: {\n $implicit: parameters?.LayoutComponent,\n layout94: layout94\n }\n \"\n></ng-container>\n}\n<ng-template #renderDefaultLayout let-layout94=\"layout94\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n</ng-template>\n<ng-template #renderLayoutComponent let-component let-layout94=\"layout94\">\n <bnrc-dynamic-form-component\n [component]=\"component\"\n [removeContentPadding]=\"removeContentPadding\"\n [breadCrumbs]=\"breadCrumbs\"\n [description]=\"description\"\n [buttons]=\"layoutActions\"\n [title]=\"title\"\n [subtitle]=\"subtitle\"\n [toolbarItems]=\"toolbarItems\"\n [layoutActions]=\"layoutActions\"\n [footerDesign]=\"footerDesign\"\n [facetList]=\"facetList\"\n [settings]=\"component.Settings\"\n [workflowButtons]=\"workflowButtons\"\n [workflowPanelUi]=\"workflowPanelUi\"\n [isMobile]=\"isMobile\"\n [mo]=\"mo\"\n [layout94]=\"layout94\"\n [context]=\"context\"\n [rtl]=\"rtl\"\n [fieldDict]=\"fieldDict\"\n [mask]=\"mask\"\n [dirValue]=\"dirValue\"\n [deviceSize]=\"deviceSize\"\n [contentDensity]=\"contentDensity\"\n [modernTabs]=\"modernTabs\"\n [avatar]=\"avatar\"\n (events)=\"onDynamicComponentEvents($event)\"\n ></bnrc-dynamic-form-component>\n</ng-template>\n<ng-template #closeForm>\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"close.emit()\" title=\"Close\">\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\n </button>\n</ng-template>\n<ng-template #fullscreenForm>\n @if (canFullscreen) {\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"fullscreen ? 'exit fullscreen' : 'fullscreen'\"\n (click)=\"fullscreenRequest.emit()\"\n [title]=\"fullscreen ? 'exit fullscreen' : 'fullscreen'\"\n [glyph]=\"fullscreen ? 'exitfullscreen' : 'resize'\"\n ></button>\n }\n</ng-template>\n", styles: [":host{display:block;height:auto;width:100%}:host ::ng-deep fd-dynamic-page[contentIsPage=true] .fd-dynamic-page{height:auto!important}:host ::ng-deep .fd-progress-indicator__container,:host ::ng-deep .fd-progress-indicator__progress-bar{height:1.5rem}:host ::ng-deep fd-facet .fd-object-status--large{font-size:1.1rem}fd-dynamic-page ::ng-deep>article>fd-tab-list>.fd-tabs__content fd-tab.is-expanded{min-height:100%;display:flex}fd-dynamic-page ::ng-deep>article>fd-tab-list>.fd-tabs__content fd-tab.is-expanded>fd-dynamic-page-content{min-height:100%;overflow:hidden}fd-dynamic-page ::ng-deep>article>fd-tab-list>.fd-tabs__content fd-tab.is-expanded bsu-ly-layout-container-of-root{min-height:100%}fd-dynamic-page fd-dynamic-page-content.limit-content-width{display:flex;justify-content:center}fd-facet{display:flex;flex-direction:column}.hide-title ::ng-deep .fd-dynamic-page__title-container{display:none!important}.no-pin ::ng-deep .fd-dynamic-page__collapsible-header-visibility-container{display:none!important}fd-toolbar.firefox ::ng-deep .fd-toolbar{flex-direction:row-reverse}fd-toolbar.firefox ::ng-deep .fd-toolbar>:first-child{margin-right:5px}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DynamicFormComponent, selector: "bnrc-dynamic-form-component", inputs: ["breadCrumbs", "toolbarVisible", "toolbarItems", "layoutActions", "workflowButtons", "buttons", "layout94", "footerDesign", "settings", "workflowPanelUi", "title", "subtitle", "description", "facetList", "removeHeaderBorder", "removeContentPadding", "isMobile", "avatar", "rtl", "mask", "mo", "contentDensity", "deviceSize", "dirValue", "fieldDict", "modernTabs"] }, { kind: "component", type: i2.BaseDynamicComponent, selector: "bnrc-dynamic-component", inputs: ["component", "value"], outputs: ["events"] }, { kind: "directive", type: i2.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "directive", type: i2.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i3.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i4.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i6.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap", "headingLevel", "titleId"] }, { kind: "component", type: i6.DynamicPageGlobalActionsComponent, selector: "fd-dynamic-page-global-actions" }, { kind: "component", type: i6.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i6.DynamicPageSubheaderComponent, selector: "fd-dynamic-page-subheader", inputs: ["collapsible", "pinnable", "collapsed", "expandLabel", "collapseLabel", "id", "headerAriaLabel", "pinAriaLabel", "unpinAriaLabel"], outputs: ["collapsedChange"] }, { kind: "component", type: i6.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i6.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i6.DynamicPageBreadcrumbComponent, selector: "fd-dynamic-page-breadcrumb" }, { kind: "component", type: i7.FacetComponent, selector: "fd-facet", inputs: ["type", "facetTitle", "subtitle", "headingLevel", "id", "alignEnd"] }, { kind: "component", type: i7.FacetGroupComponent, selector: "fd-facet-group", inputs: ["ariaLabel"] }, { kind: "component", type: i7.FacetContentComponent, selector: "fd-facet-content" }, { kind: "component", type: i8.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i9.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i9.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i9.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i10.MessageStripComponent, selector: "fd-message-strip", inputs: ["class", "dismissible", "noIcon", "type", "id", "ariaLabelledBy", "ariaLabel", "width", "minWidth", "marginBottom", "indicationColor"], outputs: ["onDismiss"] }, { kind: "component", type: i11.ObjectNumberComponent, selector: "fd-object-number", inputs: ["number", "decimal", "unit", "emphasized", "large", "status", "class", "ariaLabelledBy", "ariaLabel"] }, { kind: "component", type: i12.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }, { kind: "component", type: i13.RatingIndicatorComponent, selector: "fd-rating-indicator", inputs: ["class", "name", "ariaLabel", "ariaLabelledBy", "disabled", "displayMode", "nonInteractive", "indicatorCapacity", "allowHalves", "value", "totalRatings", "ratingAverage", "ratings", "displayAllRatings", "ratedIcon", "unratedIcon", "size", "dynamicTextIndicator"], outputs: ["ratingChanged"] }, { kind: "component", type: i14.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "selectedTabIndexChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i14.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "component", type: i15.TextComponent, selector: "fd-text", inputs: ["text", "maxLines", "whitespaces", "hyphenation", "expandable", "isCollapsed"], outputs: ["isCollapsedChange"] }, { kind: "component", type: i16.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i16.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "component", type: i17.ProgressIndicatorComponent, selector: "fd-progress-indicator", inputs: ["valueText", "unit", "valueMin", "valueMax", "valueNow", "state", "animate"] }, { kind: "component", type: i18.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i19.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i20.LyTabPageComponent, selector: "bsu-ly-tab-page", inputs: ["renderItems", "tablist"] }, { kind: "component", type: i21.LayoutActionsComponent, selector: "bsu-layout-actions", inputs: ["workflowButtons", "workflowButtonsComboMode", "canSend", "simple", "footerDesign"], outputs: ["workflowChoiceSelect"] }, { kind: "component", type: i22.BreadcrumbComponent, selector: "bsu-breadcrumb", inputs: ["breadCrumb", "allBreadCrumb", "isLast", "index"] }, { kind: "component", type: i23.FormToolbarComponent, selector: "bsu-form-toolbar", outputs: ["toolbarClick"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i2.HeaderFacetValuePipe, name: "facetValue" }, { kind: "pipe", type: i2.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
97
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: FundamentalDynamicFormComponent, selector: "bsu-fundamental-dynamic-form", inputs: { breadCrumbs: "breadCrumbs", toolbarVisible: "toolbarVisible", toolbarItems: "toolbarItems", layoutActions: "layoutActions", layout94: "layout94", parameters: "parameters", workflowPanelUi: "workflowPanelUi", context: "context", title: "title", subtitle: "subtitle", description: "description", facetList: "facetList", fieldDict: "fieldDict", removeHeaderBorder: "removeHeaderBorder", removeContentPadding: "removeContentPadding", isMobile: "isMobile", mo: "mo", avatar: "avatar", circleAvatar: "circleAvatar", rtl: "rtl", hideFooter: "hideFooter", hideTitle: "hideTitle", hideClose: "hideClose", hidePin: "hidePin", fullscreen: "fullscreen", mask: "mask", canSend: "canSend", contentIsPage: "contentIsPage", contentDensity: "contentDensity", deviceSize: "deviceSize", dirValue: "dirValue", landscape: "landscape", standalone: "standalone", modernTabs: "modernTabs", formVisibilityStatus: "formVisibilityStatus", layoutGridCol: "layoutGridCol", colLg: "colLg", colXl: "colXl", colMd: "colMd", footerDesign: "footerDesign", formContentMaxWidth: "formContentMaxWidth" }, outputs: { toolbarClick: "toolbarClick", workflowChoiceClick: "workflowChoiceClick", close: "close", fullscreenRequest: "fullscreenRequest" }, viewQueries: [{ propertyName: "_dynamicPageComponent", first: true, predicate: DynamicPageComponent, descendants: true, static: true }, { propertyName: "_tabListComponent", first: true, predicate: TabListComponent, descendants: true }, { propertyName: "_toolbarComponent", first: true, predicate: ["formToolbar"], descendants: true }, { propertyName: "titleRef", first: true, predicate: ["titleRef"], descendants: true, read: ViewContainerRef }, { propertyName: "headerAvatarRef", first: true, predicate: ["headerAvatar"], descendants: true }, { propertyName: "closeFormTemplate", first: true, predicate: ["closeForm"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (mask) {\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%\">\n <bsu-mask size=\"m\"></bsu-mask>\n</div>\n}\n\n<fd-dynamic-page\n [size]=\"isMobile ? 'small' : 'large'\"\n [class.header-border]=\"!removeHeaderBorder\"\n [attr.isMobile]=\"isMobile\"\n [attr.contentIsPage]=\"contentIsPage\"\n mobile\n formClose\n [isMobile]=\"isMobile\"\n>\n <fd-dynamic-page-header\n [class.simple-title]=\"!description\"\n [title]=\"(hideTitle === true ? '' : title) | bbbTranslate\"\n [subtitle]=\"subtitle | bbbTranslate\"\n [class.p-b0]=\"removeContentPadding\"\n [class.hide-title]=\"hideTitle === true && hideClose === true\"\n #titleRef\n >\n <fd-dynamic-page-breadcrumb [class.hide]=\"isMobile\">\n <fd-breadcrumb>\n @if (breadCrumbs && !isMobile) { @for (breadCrumb of breadCrumbs | slice: 0:breadCrumbs.length; track\n breadCrumb.url; let i = $index; let last = $last) {\n <fd-breadcrumb-item>\n <bsu-breadcrumb\n [index]=\"i\"\n [isLast]=\"last\"\n [breadCrumb]=\"breadCrumb\"\n [allBreadCrumb]=\"breadCrumbs\"\n ></bsu-breadcrumb>\n </fd-breadcrumb-item>\n } }\n </fd-breadcrumb>\n </fd-dynamic-page-breadcrumb>\n <fd-dynamic-page-global-actions>\n <!-- global actions -->\n\n <fd-toolbar [shouldOverflow]=\"true\" Style=\"display:none\"> </fd-toolbar>\n <!-- added this because in mobile landscape toolbar disapper -->\n @if (toolbarVisible) {\n <bsu-form-toolbar\n [deviceSize]=\"deviceSize\"\n [buttons]=\"toolbarItems\"\n [dirValue]=\"dirValue\"\n [isFirefox]=\"isFirefox\"\n (toolbarClick)=\"toolbarClick.emit($event)\"\n #formToolbar\n ></bsu-form-toolbar>\n }\n </fd-dynamic-page-global-actions>\n <fd-dynamic-page-layout-actions>\n <!-- layout actions -->\n <!-- <div [formActions]=\"this.toolbar\"></div> -->\n @if (!hideClose) {\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\n @if (deviceSize !== 's') {\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n <ng-container *ngTemplateOutlet=\"fullscreenForm\"></ng-container>\n <ng-container *ngTemplateOutlet=\"closeForm\"></ng-container>\n </fd-toolbar>\n }\n </fd-dynamic-page-layout-actions>\n </fd-dynamic-page-header>\n @if (description || facetList.length > 0 || workflowInfoText || avatar) {\n <fd-dynamic-page-subheader\n [class.header-no-description]=\"!(description || workflowInfoText)\"\n [class.no-pin]=\"hidePin\"\n [collapsible]=\"!!workflowInfoText || (facetList && facetList.length > 0)\"\n [pinnable]=\"true\"\n [collapsed]=\"(!facetList || facetList.length === 0) && !workflowInfoText\"\n >\n @if (workflowInfoText) {\n <fd-message-strip [type]=\"'warning'\" [dismissible]=\"false\">\n {{ workflowInfoText | bbbTranslate }}\n </fd-message-strip>\n }\n <fd-facet-group ariaLabel=\"Facet Group\">\n @if (avatar) {\n <fd-facet type=\"image\">\n <fd-avatar\n title=\"avatar\"\n [glyph]=\"avatar\"\n [image]=\"!avatar?.FileId ? null : (avatar?.FileId | picFieldSrc: 'ID':null)\"\n [size]=\"deviceSize === 'xl' ? 'l' : deviceSize\"\n [transparent]=\"true\"\n [circle]=\"circleAvatar\"\n ></fd-avatar>\n <!-- <div\n class=\"fd-avatar fd-avatar--circle\"\n [class]=\"'fd-avatar--' + (deviceSize === 'xl' ? 'l' : deviceSize)\"\n >\n <i *ngIf=\"avatar\" class=\"fd-avatar__icon\" [class]=\"avatar | sapFontClass\" role=\"presentation\"> </i>\n </div> -->\n </fd-facet>\n } @for (facet of facetList; track facet) {\n <fd-facet\n [type]=\"facet.type\"\n [facetTitle]=\"facet.mo.Title | bbbTranslate\"\n [subtitle]=\"facet.mo.SubTitle | facetValue | bbbTranslate\"\n >\n @for (item of facet.mo.ItemList?.MoDataList; track item) {\n <fd-facet-content>\n <label fd-form-label [colon]=\"true\" for=\"form-value-10\">{{ item.Title }}</label>\n <fd-text [text]=\"item.Value | facetValue\" id=\"form-value-10\"></fd-text>\n </fd-facet-content>\n } @if ( !facet.mo.IsNumber && facet.type === 'key-value' && !facet.mo.Component?.Selector) {\n <span\n fd-object-status\n [status]=\"facet.mo.Status | facetValue\"\n [label]=\"facet.mo.Component?.Selector ? '' : (facet.mo.Text | facetValue)\"\n [large]=\"facet.mo.IsLarge\"\n [title]=\"facet.mo.Text | facetValue\"\n [aria-label]=\"facet.mo.Text | facetValue\"\n [glyph]=\"facet.mo.Icon\"\n >\n </span>\n } @else {\n <bnrc-dynamic-component\n [class]=\"'fd-object-status--' + facet.mo.Status | facetValue\"\n [class.fd-object-status--large]=\"facet.mo.IsLarge\"\n [component]=\"facet.mo.Component\"\n [value]=\"facet.mo.Text\"\n ></bnrc-dynamic-component>\n } @if (facet.mo.IsNumber && facet.type === 'key-value') {\n <fd-object-number\n [number]=\"facet.mo.Text | facetValue\"\n [large]=\"facet.mo.IsLarge\"\n [unit]=\"facet.mo.Unit | facetValue\"\n [status]=\"facet.mo.Status | facetValue\"\n [decimal]=\"facet.mo.DecimalValue | facetValue\"\n ></fd-object-number>\n } @if (facet.type === 'plain-text') {\n <div [style.width.px]=\"facet.mo.Width\" style=\"white-space: normal\">\n <fd-text [text]=\"facet.mo.Text | facetValue\" hyphenation=\"auto\"></fd-text>\n </div>\n } @if (facet.type === 'rating-indicator') {\n <fd-facet-content>\n <fd-rating-indicator\n style=\"pointer-events: none\"\n size=\"md\"\n [dynamicTextIndicator]=\"facet.mo.Footer\"\n [displayMode]=\"true\"\n [value]=\"facet.mo | facetValue: facet.type\"\n ></fd-rating-indicator>\n </fd-facet-content>\n } @if (facet.type === 'progress') {\n <div [style.width]=\"'10rem'\">\n <!-- <span fd-form-label>{{ facet.mo.Subtitle | facetValue }}</span> -->\n <fd-progress-indicator\n style=\"width: 10r em\"\n [state]=\"facet.mo.State\"\n [valueText]=\"(facet.mo | facetValue: facet.type) + ' \u0627\u0632 10 \u0645\u0631\u062D\u0644\u0647'\"\n [valueNow]=\"facet.mo | facetValue: facet.type\"\n [valueMax]=\"10\"\n [unit]=\"'\u0645\u0631\u062D\u0644\u0647'\"\n ></fd-progress-indicator>\n <!-- <ui5-progress-indicator\n style=\"width: 10rem\"\n [valueState]=\"facet.mo.State\"\n [value]=\"getNumber(facet.mo.Value)\"\n ></ui5-progress-indicator> -->\n </div>\n } @if (facet.type === 'microcharts') {\n <div>\n <label wrap>in progress ...</label>\n </div>\n }\n </fd-facet>\n }\n </fd-facet-group>\n @if (description) {\n <span>{{ description }}</span>\n }\n </fd-dynamic-page-subheader>\n } @if (!contentIsPage && modernTabs && modernTabs.length > 0 && !parameters?.LayoutComponent) {\n <fd-tab-list\n (selectedTabChange)=\"onTabChanged($event)\"\n [collapseOverflow]=\"true\"\n [stackContent]=\"false\"\n maxContentHeight=\"auto\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n #tablist\n >\n @for (tab of modernTabs; track tab.Title; let i = $index) {\n <fd-tab [title]=\"tab.Title!! | bbbTranslate\" [class.is-expanded]=\"selectedTab === tab.Title\">\n <fd-dynamic-page-content [id]=\"tab.id\" [class.limit-content-width]=\"formContentMaxWidth > 0\">\n <fd-layout-grid [style.max-width.px]=\"formContentMaxWidth\">\n <div fdLayoutGridRow>\n <div\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout1.colMd\"\n [colLg]=\"layout1.colLg\"\n [colXl]=\"layout1.colXl\"\n ></div>\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"colMd\" [colLg]=\"colLg\" [colXl]=\"colXl\">\n <bsu-ly-tab-page [config]=\"tab\" [tablist]=\"tablist\"></bsu-ly-tab-page>\n </div>\n <div\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout2.colMd\"\n [colLg]=\"layout2.colLg\"\n [colXl]=\"layout2.colXl\"\n ></div>\n </div>\n </fd-layout-grid>\n </fd-dynamic-page-content>\n </fd-tab>\n }\n </fd-tab-list>\n } @else { @if (!contentIsPage) {\n <fd-tab-list\n [collapseOverflow]=\"true\"\n [stackContent]=\"false\"\n maxContentHeight=\"auto\"\n #tablist\n class=\"extra-hide-tabs\"\n >\n <fd-tab title=\"\">\n <fd-dynamic-page-content [class.limit-content-width]=\"formContentMaxWidth > 0\">\n <fd-layout-grid style=\"min-height: 100%\" [style.max-width.px]=\"formContentMaxWidth\">\n <div fdLayoutGridRow>\n <div\n style=\"padding: 0\"\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout1.colMd\"\n [colLg]=\"layout1.colLg\"\n [colXl]=\"layout1.colXl\"\n ></div>\n <div\n style=\"min-height: 100%\"\n [fdLayoutGridCol]=\"12\"\n [colMd]=\"colMd\"\n [colLg]=\"colLg\"\n [colXl]=\"colXl\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n parameters?.LayoutComponent ? renderLayoutComponent : renderDefaultLayout;\n context: {\n $implicit: parameters?.LayoutComponent,\n layout94: layout94\n }\n \"\n ></ng-container>\n </div>\n <div\n style=\"padding: 0\"\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout2.colMd\"\n [colLg]=\"layout2.colLg\"\n [colXl]=\"layout2.colXl\"\n ></div>\n </div>\n </fd-layout-grid>\n </fd-dynamic-page-content>\n </fd-tab>\n </fd-tab-list>\n } } @if(!hideFooter){\n <fd-dynamic-page-footer>\n <bsu-layout-actions\n [canSend]=\"canSend\"\n [buttons]=\"layoutActions\"\n [isMobile]=\"isMobile\"\n [landscape]=\"landscape\"\n [standalone]=\"standalone\"\n [footerDesign]=\"footerDesign\"\n [workflowButtons]=\"workflowButtons\"\n [workflowButtonsComboMode]=\"workflowButtonsComboMode\"\n [deviceSize]=\"deviceSize\"\n [rtl]=\"rtl\"\n (toolClick)=\"toolbarClick.emit($event)\"\n (workflowChoiceSelect)=\"onWfChoiceSelect($event)\"\n >\n </bsu-layout-actions>\n </fd-dynamic-page-footer>\n }\n</fd-dynamic-page>\n@if (contentIsPage) {\n<ng-container\n *ngTemplateOutlet=\"\n renderLayoutComponent;\n context: {\n $implicit: parameters?.LayoutComponent,\n layout94: layout94\n }\n \"\n></ng-container>\n}\n<ng-template #renderDefaultLayout let-layout94=\"layout94\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n</ng-template>\n<ng-template #renderLayoutComponent let-component let-layout94=\"layout94\">\n <bnrc-dynamic-form-component\n [component]=\"component\"\n [removeContentPadding]=\"removeContentPadding\"\n [breadCrumbs]=\"breadCrumbs\"\n [description]=\"description\"\n [title]=\"title\"\n [subtitle]=\"subtitle\"\n [toolbarItems]=\"toolbarItems\"\n [layoutActions]=\"layoutActions\"\n [footerDesign]=\"footerDesign\"\n [facetList]=\"facetList\"\n [settings]=\"component.Settings\"\n [workflowButtons]=\"workflowButtons\"\n [workflowPanelUi]=\"workflowPanelUi\"\n [isMobile]=\"isMobile\"\n [mo]=\"mo\"\n [layout94]=\"layout94\"\n [context]=\"context\"\n [rtl]=\"rtl\"\n [fieldDict]=\"fieldDict\"\n [mask]=\"mask\"\n [dirValue]=\"dirValue\"\n [deviceSize]=\"deviceSize\"\n [contentDensity]=\"contentDensity\"\n [modernTabs]=\"modernTabs\"\n [avatar]=\"avatar\"\n (events)=\"onDynamicComponentEvents($event)\"\n ></bnrc-dynamic-form-component>\n</ng-template>\n<ng-template #closeForm>\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"close.emit()\" title=\"Close\">\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\n </button>\n</ng-template>\n<ng-template #fullscreenForm>\n @if (canFullscreen) {\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"fullscreen ? 'exit fullscreen' : 'fullscreen'\"\n (click)=\"fullscreenRequest.emit()\"\n [title]=\"fullscreen ? 'exit fullscreen' : 'fullscreen'\"\n [glyph]=\"fullscreen ? 'exitfullscreen' : 'resize'\"\n ></button>\n }\n</ng-template>\n", styles: [":host{display:block;height:auto;width:100%}:host ::ng-deep fd-dynamic-page[contentIsPage=true] .fd-dynamic-page{height:auto!important}:host ::ng-deep .fd-progress-indicator__container,:host ::ng-deep .fd-progress-indicator__progress-bar{height:1.5rem}:host ::ng-deep fd-facet .fd-object-status--large{font-size:1.1rem}fd-dynamic-page ::ng-deep>article>fd-tab-list>.fd-tabs__content fd-tab.is-expanded{min-height:100%;display:flex}fd-dynamic-page ::ng-deep>article>fd-tab-list>.fd-tabs__content fd-tab.is-expanded>fd-dynamic-page-content{min-height:100%;overflow:hidden}fd-dynamic-page ::ng-deep>article>fd-tab-list>.fd-tabs__content fd-tab.is-expanded bsu-ly-layout-container-of-root{min-height:100%}fd-dynamic-page fd-dynamic-page-content.limit-content-width{display:flex;justify-content:center}fd-facet{display:flex;flex-direction:column}.hide-title ::ng-deep .fd-dynamic-page__title-container{display:none!important}.no-pin ::ng-deep .fd-dynamic-page__collapsible-header-visibility-container{display:none!important}fd-toolbar.firefox ::ng-deep .fd-toolbar{flex-direction:row-reverse}fd-toolbar.firefox ::ng-deep .fd-toolbar>:first-child{margin-right:5px}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DynamicFormComponent, selector: "bnrc-dynamic-form-component", inputs: ["breadCrumbs", "toolbarVisible", "toolbarItems", "layoutActions", "workflowButtons", "layout94", "footerDesign", "settings", "workflowPanelUi", "title", "subtitle", "description", "facetList", "removeHeaderBorder", "removeContentPadding", "isMobile", "avatar", "rtl", "mask", "mo", "contentDensity", "deviceSize", "dirValue", "fieldDict", "modernTabs"] }, { kind: "component", type: i2.BaseDynamicComponent, selector: "bnrc-dynamic-component", inputs: ["component", "value"], outputs: ["events"] }, { kind: "directive", type: i2.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "directive", type: i2.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i3.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i4.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i4.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i6.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap", "headingLevel", "titleId"] }, { kind: "component", type: i6.DynamicPageGlobalActionsComponent, selector: "fd-dynamic-page-global-actions" }, { kind: "component", type: i6.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i6.DynamicPageSubheaderComponent, selector: "fd-dynamic-page-subheader", inputs: ["collapsible", "pinnable", "collapsed", "expandLabel", "collapseLabel", "id", "headerAriaLabel", "pinAriaLabel", "unpinAriaLabel"], outputs: ["collapsedChange"] }, { kind: "component", type: i6.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i6.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i6.DynamicPageBreadcrumbComponent, selector: "fd-dynamic-page-breadcrumb" }, { kind: "component", type: i7.FacetComponent, selector: "fd-facet", inputs: ["type", "facetTitle", "subtitle", "headingLevel", "id", "alignEnd"] }, { kind: "component", type: i7.FacetGroupComponent, selector: "fd-facet-group", inputs: ["ariaLabel"] }, { kind: "component", type: i7.FacetContentComponent, selector: "fd-facet-content" }, { kind: "component", type: i8.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i9.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i9.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i9.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i10.MessageStripComponent, selector: "fd-message-strip", inputs: ["class", "dismissible", "noIcon", "type", "id", "ariaLabelledBy", "ariaLabel", "width", "minWidth", "marginBottom", "indicationColor"], outputs: ["onDismiss"] }, { kind: "component", type: i11.ObjectNumberComponent, selector: "fd-object-number", inputs: ["number", "decimal", "unit", "emphasized", "large", "status", "class", "ariaLabelledBy", "ariaLabel"] }, { kind: "component", type: i12.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "glyphFont", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large", "secondaryIndication", "textTemplate"] }, { kind: "component", type: i13.RatingIndicatorComponent, selector: "fd-rating-indicator", inputs: ["class", "name", "ariaLabel", "ariaLabelledBy", "disabled", "displayMode", "nonInteractive", "indicatorCapacity", "allowHalves", "value", "totalRatings", "ratingAverage", "ratings", "displayAllRatings", "ratedIcon", "unratedIcon", "size", "dynamicTextIndicator"], outputs: ["ratingChanged"] }, { kind: "component", type: i14.TabListComponent, selector: "fd-tab-list", inputs: ["size", "mode", "collapseOverflow", "maxVisibleTabs", "stackContent", "maxContentHeight", "collapsibleTabs", "defaultTab", "selectDefaultOnTabsChange", "focusFirstFocusableElement"], outputs: ["selectedTabChange", "selectedTabIndexChange", "visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i14.TabPanelComponent, selector: "fd-tab", inputs: ["id", "ariaLabel", "ariaLabelledBy", "title", "count", "glyph", "header", "disabled", "tabState"], outputs: ["opened", "closed"] }, { kind: "component", type: i15.TextComponent, selector: "fd-text", inputs: ["text", "maxLines", "whitespaces", "hyphenation", "expandable", "isCollapsed"], outputs: ["isCollapsedChange"] }, { kind: "component", type: i16.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "component", type: i16.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "component", type: i17.ProgressIndicatorComponent, selector: "fd-progress-indicator", inputs: ["valueText", "unit", "valueMin", "valueMax", "valueNow", "state", "animate"] }, { kind: "component", type: i18.LyLayoutContainerOfRootComponent, selector: "bsu-ly-layout-container-of-root" }, { kind: "component", type: i19.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i20.LyTabPageComponent, selector: "bsu-ly-tab-page", inputs: ["renderItems", "tablist"] }, { kind: "component", type: i21.LayoutActionsComponent, selector: "bsu-layout-actions", inputs: ["workflowButtons", "workflowButtonsComboMode", "canSend", "simple", "footerDesign"], outputs: ["workflowChoiceSelect"] }, { kind: "component", type: i22.BreadcrumbComponent, selector: "bsu-breadcrumb", inputs: ["breadCrumb", "allBreadCrumb", "isLast", "index"] }, { kind: "component", type: i23.FormToolbarComponent, selector: "bsu-form-toolbar", outputs: ["toolbarClick"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i2.HeaderFacetValuePipe, name: "facetValue" }, { kind: "pipe", type: i2.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
98
98
  }
99
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FundamentalDynamicFormComponent, decorators: [{
100
100
  type: Component,
101
- args: [{ selector: 'bsu-fundamental-dynamic-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (mask) {\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%\">\n <bsu-mask size=\"m\"></bsu-mask>\n</div>\n}\n\n<fd-dynamic-page\n [size]=\"isMobile ? 'small' : 'large'\"\n [class.header-border]=\"!removeHeaderBorder\"\n [attr.isMobile]=\"isMobile\"\n [attr.contentIsPage]=\"contentIsPage\"\n mobile\n formClose\n [isMobile]=\"isMobile\"\n>\n <fd-dynamic-page-header\n [class.simple-title]=\"!description\"\n [title]=\"(hideTitle === true ? '' : title) | bbbTranslate\"\n [subtitle]=\"subtitle | bbbTranslate\"\n [class.p-b0]=\"removeContentPadding\"\n [class.hide-title]=\"hideTitle === true && hideClose === true\"\n #titleRef\n >\n <fd-dynamic-page-breadcrumb [class.hide]=\"isMobile\">\n <fd-breadcrumb>\n @if (breadCrumbs && !isMobile) { @for (breadCrumb of breadCrumbs | slice: 0:breadCrumbs.length; track\n breadCrumb.url; let i = $index; let last = $last) {\n <fd-breadcrumb-item>\n <bsu-breadcrumb\n [index]=\"i\"\n [isLast]=\"last\"\n [breadCrumb]=\"breadCrumb\"\n [allBreadCrumb]=\"breadCrumbs\"\n ></bsu-breadcrumb>\n </fd-breadcrumb-item>\n } }\n </fd-breadcrumb>\n </fd-dynamic-page-breadcrumb>\n <fd-dynamic-page-global-actions>\n <!-- global actions -->\n\n <fd-toolbar [shouldOverflow]=\"true\" Style=\"display:none\"> </fd-toolbar>\n <!-- added this because in mobile landscape toolbar disapper -->\n @if (toolbarVisible) {\n <bsu-form-toolbar\n [deviceSize]=\"deviceSize\"\n [buttons]=\"toolbarItems\"\n [dirValue]=\"dirValue\"\n [isFirefox]=\"isFirefox\"\n (toolbarClick)=\"toolbarClick.emit($event)\"\n #formToolbar\n ></bsu-form-toolbar>\n }\n </fd-dynamic-page-global-actions>\n <fd-dynamic-page-layout-actions>\n <!-- layout actions -->\n <!-- <div [formActions]=\"this.toolbar\"></div> -->\n @if (!hideClose) {\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\n @if (deviceSize !== 's') {\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n <ng-container *ngTemplateOutlet=\"fullscreenForm\"></ng-container>\n <ng-container *ngTemplateOutlet=\"closeForm\"></ng-container>\n </fd-toolbar>\n }\n </fd-dynamic-page-layout-actions>\n </fd-dynamic-page-header>\n @if (description || facetList.length > 0 || workflowInfoText || avatar) {\n <fd-dynamic-page-subheader\n [class.header-no-description]=\"!(description || workflowInfoText)\"\n [class.no-pin]=\"hidePin\"\n [collapsible]=\"!!workflowInfoText || (facetList && facetList.length > 0)\"\n [pinnable]=\"true\"\n [collapsed]=\"(!facetList || facetList.length === 0) && !workflowInfoText\"\n >\n @if (workflowInfoText) {\n <fd-message-strip [type]=\"'warning'\" [dismissible]=\"false\">\n {{ workflowInfoText | bbbTranslate }}\n </fd-message-strip>\n }\n <fd-facet-group ariaLabel=\"Facet Group\">\n @if (avatar) {\n <fd-facet type=\"image\">\n <fd-avatar\n title=\"avatar\"\n [glyph]=\"avatar\"\n [image]=\"!avatar?.FileId ? null : (avatar?.FileId | picFieldSrc: 'ID':null)\"\n [size]=\"deviceSize === 'xl' ? 'l' : deviceSize\"\n [transparent]=\"true\"\n [circle]=\"circleAvatar\"\n ></fd-avatar>\n <!-- <div\n class=\"fd-avatar fd-avatar--circle\"\n [class]=\"'fd-avatar--' + (deviceSize === 'xl' ? 'l' : deviceSize)\"\n >\n <i *ngIf=\"avatar\" class=\"fd-avatar__icon\" [class]=\"avatar | sapFontClass\" role=\"presentation\"> </i>\n </div> -->\n </fd-facet>\n } @for (facet of facetList; track facet) {\n <fd-facet\n [type]=\"facet.type\"\n [facetTitle]=\"facet.mo.Title | bbbTranslate\"\n [subtitle]=\"facet.mo.SubTitle | facetValue | bbbTranslate\"\n >\n @for (item of facet.mo.ItemList?.MoDataList; track item) {\n <fd-facet-content>\n <label fd-form-label [colon]=\"true\" for=\"form-value-10\">{{ item.Title }}</label>\n <fd-text [text]=\"item.Value | facetValue\" id=\"form-value-10\"></fd-text>\n </fd-facet-content>\n } @if ( !facet.mo.IsNumber && facet.type === 'key-value' && !facet.mo.Component?.Selector) {\n <span\n fd-object-status\n [status]=\"facet.mo.Status | facetValue\"\n [label]=\"facet.mo.Component?.Selector ? '' : (facet.mo.Text | facetValue)\"\n [large]=\"facet.mo.IsLarge\"\n [title]=\"facet.mo.Text | facetValue\"\n [aria-label]=\"facet.mo.Text | facetValue\"\n [glyph]=\"facet.mo.Icon\"\n >\n </span>\n } @else {\n <bnrc-dynamic-component\n [class]=\"'fd-object-status--' + facet.mo.Status | facetValue\"\n [class.fd-object-status--large]=\"facet.mo.IsLarge\"\n [component]=\"facet.mo.Component\"\n [value]=\"facet.mo.Text\"\n ></bnrc-dynamic-component>\n } @if (facet.mo.IsNumber && facet.type === 'key-value') {\n <fd-object-number\n [number]=\"facet.mo.Text | facetValue\"\n [large]=\"facet.mo.IsLarge\"\n [unit]=\"facet.mo.Unit | facetValue\"\n [status]=\"facet.mo.Status | facetValue\"\n [decimal]=\"facet.mo.DecimalValue | facetValue\"\n ></fd-object-number>\n } @if (facet.type === 'plain-text') {\n <div [style.width.px]=\"facet.mo.Width\" style=\"white-space: normal\">\n <fd-text [text]=\"facet.mo.Text | facetValue\" hyphenation=\"auto\"></fd-text>\n </div>\n } @if (facet.type === 'rating-indicator') {\n <fd-facet-content>\n <fd-rating-indicator\n style=\"pointer-events: none\"\n size=\"md\"\n [dynamicTextIndicator]=\"facet.mo.Footer\"\n [displayMode]=\"true\"\n [value]=\"facet.mo | facetValue: facet.type\"\n ></fd-rating-indicator>\n </fd-facet-content>\n } @if (facet.type === 'progress') {\n <div [style.width]=\"'10rem'\">\n <!-- <span fd-form-label>{{ facet.mo.Subtitle | facetValue }}</span> -->\n <fd-progress-indicator\n style=\"width: 10r em\"\n [state]=\"facet.mo.State\"\n [valueText]=\"(facet.mo | facetValue: facet.type) + ' \u0627\u0632 10 \u0645\u0631\u062D\u0644\u0647'\"\n [valueNow]=\"facet.mo | facetValue: facet.type\"\n [valueMax]=\"10\"\n [unit]=\"'\u0645\u0631\u062D\u0644\u0647'\"\n ></fd-progress-indicator>\n <!-- <ui5-progress-indicator\n style=\"width: 10rem\"\n [valueState]=\"facet.mo.State\"\n [value]=\"getNumber(facet.mo.Value)\"\n ></ui5-progress-indicator> -->\n </div>\n } @if (facet.type === 'microcharts') {\n <div>\n <label wrap>in progress ...</label>\n </div>\n }\n </fd-facet>\n }\n </fd-facet-group>\n @if (description) {\n <span>{{ description }}</span>\n }\n </fd-dynamic-page-subheader>\n } @if (!contentIsPage && modernTabs && modernTabs.length > 0 && !parameters?.LayoutComponent) {\n <fd-tab-list\n (selectedTabChange)=\"onTabChanged($event)\"\n [collapseOverflow]=\"true\"\n [stackContent]=\"false\"\n maxContentHeight=\"auto\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n #tablist\n >\n @for (tab of modernTabs; track tab.Title; let i = $index) {\n <fd-tab [title]=\"tab.Title!! | bbbTranslate\" [class.is-expanded]=\"selectedTab === tab.Title\">\n <fd-dynamic-page-content [id]=\"tab.id\" [class.limit-content-width]=\"formContentMaxWidth > 0\">\n <fd-layout-grid [style.max-width.px]=\"formContentMaxWidth\">\n <div fdLayoutGridRow>\n <div\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout1.colMd\"\n [colLg]=\"layout1.colLg\"\n [colXl]=\"layout1.colXl\"\n ></div>\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"colMd\" [colLg]=\"colLg\" [colXl]=\"colXl\">\n <bsu-ly-tab-page [config]=\"tab\" [tablist]=\"tablist\"></bsu-ly-tab-page>\n </div>\n <div\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout2.colMd\"\n [colLg]=\"layout2.colLg\"\n [colXl]=\"layout2.colXl\"\n ></div>\n </div>\n </fd-layout-grid>\n </fd-dynamic-page-content>\n </fd-tab>\n }\n </fd-tab-list>\n } @else { @if (!contentIsPage) {\n <fd-tab-list\n [collapseOverflow]=\"true\"\n [stackContent]=\"false\"\n maxContentHeight=\"auto\"\n #tablist\n class=\"extra-hide-tabs\"\n >\n <fd-tab title=\"\">\n <fd-dynamic-page-content [class.limit-content-width]=\"formContentMaxWidth > 0\">\n <fd-layout-grid style=\"min-height: 100%\" [style.max-width.px]=\"formContentMaxWidth\">\n <div fdLayoutGridRow>\n <div\n style=\"padding: 0\"\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout1.colMd\"\n [colLg]=\"layout1.colLg\"\n [colXl]=\"layout1.colXl\"\n ></div>\n <div\n style=\"min-height: 100%\"\n [fdLayoutGridCol]=\"12\"\n [colMd]=\"colMd\"\n [colLg]=\"colLg\"\n [colXl]=\"colXl\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n parameters?.LayoutComponent ? renderLayoutComponent : renderDefaultLayout;\n context: {\n $implicit: parameters?.LayoutComponent,\n layout94: layout94\n }\n \"\n ></ng-container>\n </div>\n <div\n style=\"padding: 0\"\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout2.colMd\"\n [colLg]=\"layout2.colLg\"\n [colXl]=\"layout2.colXl\"\n ></div>\n </div>\n </fd-layout-grid>\n </fd-dynamic-page-content>\n </fd-tab>\n </fd-tab-list>\n } } @if(!hideFooter){\n <fd-dynamic-page-footer>\n <bsu-layout-actions\n [canSend]=\"canSend\"\n [buttons]=\"layoutActions\"\n [isMobile]=\"isMobile\"\n [landscape]=\"landscape\"\n [standalone]=\"standalone\"\n [footerDesign]=\"footerDesign\"\n [workflowButtons]=\"workflowButtons\"\n [workflowButtonsComboMode]=\"workflowButtonsComboMode\"\n [deviceSize]=\"deviceSize\"\n [rtl]=\"rtl\"\n (toolClick)=\"toolbarClick.emit($event)\"\n (workflowChoiceSelect)=\"onWfChoiceSelect($event)\"\n >\n </bsu-layout-actions>\n </fd-dynamic-page-footer>\n }\n</fd-dynamic-page>\n@if (contentIsPage) {\n<ng-container\n *ngTemplateOutlet=\"\n renderLayoutComponent;\n context: {\n $implicit: parameters?.LayoutComponent,\n layout94: layout94\n }\n \"\n></ng-container>\n}\n<ng-template #renderDefaultLayout let-layout94=\"layout94\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n</ng-template>\n<ng-template #renderLayoutComponent let-component let-layout94=\"layout94\">\n <bnrc-dynamic-form-component\n [component]=\"component\"\n [removeContentPadding]=\"removeContentPadding\"\n [breadCrumbs]=\"breadCrumbs\"\n [description]=\"description\"\n [buttons]=\"layoutActions\"\n [title]=\"title\"\n [subtitle]=\"subtitle\"\n [toolbarItems]=\"toolbarItems\"\n [layoutActions]=\"layoutActions\"\n [footerDesign]=\"footerDesign\"\n [facetList]=\"facetList\"\n [settings]=\"component.Settings\"\n [workflowButtons]=\"workflowButtons\"\n [workflowPanelUi]=\"workflowPanelUi\"\n [isMobile]=\"isMobile\"\n [mo]=\"mo\"\n [layout94]=\"layout94\"\n [context]=\"context\"\n [rtl]=\"rtl\"\n [fieldDict]=\"fieldDict\"\n [mask]=\"mask\"\n [dirValue]=\"dirValue\"\n [deviceSize]=\"deviceSize\"\n [contentDensity]=\"contentDensity\"\n [modernTabs]=\"modernTabs\"\n [avatar]=\"avatar\"\n (events)=\"onDynamicComponentEvents($event)\"\n ></bnrc-dynamic-form-component>\n</ng-template>\n<ng-template #closeForm>\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"close.emit()\" title=\"Close\">\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\n </button>\n</ng-template>\n<ng-template #fullscreenForm>\n @if (canFullscreen) {\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"fullscreen ? 'exit fullscreen' : 'fullscreen'\"\n (click)=\"fullscreenRequest.emit()\"\n [title]=\"fullscreen ? 'exit fullscreen' : 'fullscreen'\"\n [glyph]=\"fullscreen ? 'exitfullscreen' : 'resize'\"\n ></button>\n }\n</ng-template>\n", styles: [":host{display:block;height:auto;width:100%}:host ::ng-deep fd-dynamic-page[contentIsPage=true] .fd-dynamic-page{height:auto!important}:host ::ng-deep .fd-progress-indicator__container,:host ::ng-deep .fd-progress-indicator__progress-bar{height:1.5rem}:host ::ng-deep fd-facet .fd-object-status--large{font-size:1.1rem}fd-dynamic-page ::ng-deep>article>fd-tab-list>.fd-tabs__content fd-tab.is-expanded{min-height:100%;display:flex}fd-dynamic-page ::ng-deep>article>fd-tab-list>.fd-tabs__content fd-tab.is-expanded>fd-dynamic-page-content{min-height:100%;overflow:hidden}fd-dynamic-page ::ng-deep>article>fd-tab-list>.fd-tabs__content fd-tab.is-expanded bsu-ly-layout-container-of-root{min-height:100%}fd-dynamic-page fd-dynamic-page-content.limit-content-width{display:flex;justify-content:center}fd-facet{display:flex;flex-direction:column}.hide-title ::ng-deep .fd-dynamic-page__title-container{display:none!important}.no-pin ::ng-deep .fd-dynamic-page__collapsible-header-visibility-container{display:none!important}fd-toolbar.firefox ::ng-deep .fd-toolbar{flex-direction:row-reverse}fd-toolbar.firefox ::ng-deep .fd-toolbar>:first-child{margin-right:5px}\n"] }]
101
+ args: [{ selector: 'bsu-fundamental-dynamic-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (mask) {\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%\">\n <bsu-mask size=\"m\"></bsu-mask>\n</div>\n}\n\n<fd-dynamic-page\n [size]=\"isMobile ? 'small' : 'large'\"\n [class.header-border]=\"!removeHeaderBorder\"\n [attr.isMobile]=\"isMobile\"\n [attr.contentIsPage]=\"contentIsPage\"\n mobile\n formClose\n [isMobile]=\"isMobile\"\n>\n <fd-dynamic-page-header\n [class.simple-title]=\"!description\"\n [title]=\"(hideTitle === true ? '' : title) | bbbTranslate\"\n [subtitle]=\"subtitle | bbbTranslate\"\n [class.p-b0]=\"removeContentPadding\"\n [class.hide-title]=\"hideTitle === true && hideClose === true\"\n #titleRef\n >\n <fd-dynamic-page-breadcrumb [class.hide]=\"isMobile\">\n <fd-breadcrumb>\n @if (breadCrumbs && !isMobile) { @for (breadCrumb of breadCrumbs | slice: 0:breadCrumbs.length; track\n breadCrumb.url; let i = $index; let last = $last) {\n <fd-breadcrumb-item>\n <bsu-breadcrumb\n [index]=\"i\"\n [isLast]=\"last\"\n [breadCrumb]=\"breadCrumb\"\n [allBreadCrumb]=\"breadCrumbs\"\n ></bsu-breadcrumb>\n </fd-breadcrumb-item>\n } }\n </fd-breadcrumb>\n </fd-dynamic-page-breadcrumb>\n <fd-dynamic-page-global-actions>\n <!-- global actions -->\n\n <fd-toolbar [shouldOverflow]=\"true\" Style=\"display:none\"> </fd-toolbar>\n <!-- added this because in mobile landscape toolbar disapper -->\n @if (toolbarVisible) {\n <bsu-form-toolbar\n [deviceSize]=\"deviceSize\"\n [buttons]=\"toolbarItems\"\n [dirValue]=\"dirValue\"\n [isFirefox]=\"isFirefox\"\n (toolbarClick)=\"toolbarClick.emit($event)\"\n #formToolbar\n ></bsu-form-toolbar>\n }\n </fd-dynamic-page-global-actions>\n <fd-dynamic-page-layout-actions>\n <!-- layout actions -->\n <!-- <div [formActions]=\"this.toolbar\"></div> -->\n @if (!hideClose) {\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\n @if (deviceSize !== 's') {\n <fd-toolbar-separator></fd-toolbar-separator>\n }\n <ng-container *ngTemplateOutlet=\"fullscreenForm\"></ng-container>\n <ng-container *ngTemplateOutlet=\"closeForm\"></ng-container>\n </fd-toolbar>\n }\n </fd-dynamic-page-layout-actions>\n </fd-dynamic-page-header>\n @if (description || facetList.length > 0 || workflowInfoText || avatar) {\n <fd-dynamic-page-subheader\n [class.header-no-description]=\"!(description || workflowInfoText)\"\n [class.no-pin]=\"hidePin\"\n [collapsible]=\"!!workflowInfoText || (facetList && facetList.length > 0)\"\n [pinnable]=\"true\"\n [collapsed]=\"(!facetList || facetList.length === 0) && !workflowInfoText\"\n >\n @if (workflowInfoText) {\n <fd-message-strip [type]=\"'warning'\" [dismissible]=\"false\">\n {{ workflowInfoText | bbbTranslate }}\n </fd-message-strip>\n }\n <fd-facet-group ariaLabel=\"Facet Group\">\n @if (avatar) {\n <fd-facet type=\"image\">\n <fd-avatar\n title=\"avatar\"\n [glyph]=\"avatar\"\n [image]=\"!avatar?.FileId ? null : (avatar?.FileId | picFieldSrc: 'ID':null)\"\n [size]=\"deviceSize === 'xl' ? 'l' : deviceSize\"\n [transparent]=\"true\"\n [circle]=\"circleAvatar\"\n ></fd-avatar>\n <!-- <div\n class=\"fd-avatar fd-avatar--circle\"\n [class]=\"'fd-avatar--' + (deviceSize === 'xl' ? 'l' : deviceSize)\"\n >\n <i *ngIf=\"avatar\" class=\"fd-avatar__icon\" [class]=\"avatar | sapFontClass\" role=\"presentation\"> </i>\n </div> -->\n </fd-facet>\n } @for (facet of facetList; track facet) {\n <fd-facet\n [type]=\"facet.type\"\n [facetTitle]=\"facet.mo.Title | bbbTranslate\"\n [subtitle]=\"facet.mo.SubTitle | facetValue | bbbTranslate\"\n >\n @for (item of facet.mo.ItemList?.MoDataList; track item) {\n <fd-facet-content>\n <label fd-form-label [colon]=\"true\" for=\"form-value-10\">{{ item.Title }}</label>\n <fd-text [text]=\"item.Value | facetValue\" id=\"form-value-10\"></fd-text>\n </fd-facet-content>\n } @if ( !facet.mo.IsNumber && facet.type === 'key-value' && !facet.mo.Component?.Selector) {\n <span\n fd-object-status\n [status]=\"facet.mo.Status | facetValue\"\n [label]=\"facet.mo.Component?.Selector ? '' : (facet.mo.Text | facetValue)\"\n [large]=\"facet.mo.IsLarge\"\n [title]=\"facet.mo.Text | facetValue\"\n [aria-label]=\"facet.mo.Text | facetValue\"\n [glyph]=\"facet.mo.Icon\"\n >\n </span>\n } @else {\n <bnrc-dynamic-component\n [class]=\"'fd-object-status--' + facet.mo.Status | facetValue\"\n [class.fd-object-status--large]=\"facet.mo.IsLarge\"\n [component]=\"facet.mo.Component\"\n [value]=\"facet.mo.Text\"\n ></bnrc-dynamic-component>\n } @if (facet.mo.IsNumber && facet.type === 'key-value') {\n <fd-object-number\n [number]=\"facet.mo.Text | facetValue\"\n [large]=\"facet.mo.IsLarge\"\n [unit]=\"facet.mo.Unit | facetValue\"\n [status]=\"facet.mo.Status | facetValue\"\n [decimal]=\"facet.mo.DecimalValue | facetValue\"\n ></fd-object-number>\n } @if (facet.type === 'plain-text') {\n <div [style.width.px]=\"facet.mo.Width\" style=\"white-space: normal\">\n <fd-text [text]=\"facet.mo.Text | facetValue\" hyphenation=\"auto\"></fd-text>\n </div>\n } @if (facet.type === 'rating-indicator') {\n <fd-facet-content>\n <fd-rating-indicator\n style=\"pointer-events: none\"\n size=\"md\"\n [dynamicTextIndicator]=\"facet.mo.Footer\"\n [displayMode]=\"true\"\n [value]=\"facet.mo | facetValue: facet.type\"\n ></fd-rating-indicator>\n </fd-facet-content>\n } @if (facet.type === 'progress') {\n <div [style.width]=\"'10rem'\">\n <!-- <span fd-form-label>{{ facet.mo.Subtitle | facetValue }}</span> -->\n <fd-progress-indicator\n style=\"width: 10r em\"\n [state]=\"facet.mo.State\"\n [valueText]=\"(facet.mo | facetValue: facet.type) + ' \u0627\u0632 10 \u0645\u0631\u062D\u0644\u0647'\"\n [valueNow]=\"facet.mo | facetValue: facet.type\"\n [valueMax]=\"10\"\n [unit]=\"'\u0645\u0631\u062D\u0644\u0647'\"\n ></fd-progress-indicator>\n <!-- <ui5-progress-indicator\n style=\"width: 10rem\"\n [valueState]=\"facet.mo.State\"\n [value]=\"getNumber(facet.mo.Value)\"\n ></ui5-progress-indicator> -->\n </div>\n } @if (facet.type === 'microcharts') {\n <div>\n <label wrap>in progress ...</label>\n </div>\n }\n </fd-facet>\n }\n </fd-facet-group>\n @if (description) {\n <span>{{ description }}</span>\n }\n </fd-dynamic-page-subheader>\n } @if (!contentIsPage && modernTabs && modernTabs.length > 0 && !parameters?.LayoutComponent) {\n <fd-tab-list\n (selectedTabChange)=\"onTabChanged($event)\"\n [collapseOverflow]=\"true\"\n [stackContent]=\"false\"\n maxContentHeight=\"auto\"\n [expandOverflowText]=\"'More' | bbbTranslate\"\n #tablist\n >\n @for (tab of modernTabs; track tab.Title; let i = $index) {\n <fd-tab [title]=\"tab.Title!! | bbbTranslate\" [class.is-expanded]=\"selectedTab === tab.Title\">\n <fd-dynamic-page-content [id]=\"tab.id\" [class.limit-content-width]=\"formContentMaxWidth > 0\">\n <fd-layout-grid [style.max-width.px]=\"formContentMaxWidth\">\n <div fdLayoutGridRow>\n <div\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout1.colMd\"\n [colLg]=\"layout1.colLg\"\n [colXl]=\"layout1.colXl\"\n ></div>\n <div [fdLayoutGridCol]=\"12\" [colMd]=\"colMd\" [colLg]=\"colLg\" [colXl]=\"colXl\">\n <bsu-ly-tab-page [config]=\"tab\" [tablist]=\"tablist\"></bsu-ly-tab-page>\n </div>\n <div\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout2.colMd\"\n [colLg]=\"layout2.colLg\"\n [colXl]=\"layout2.colXl\"\n ></div>\n </div>\n </fd-layout-grid>\n </fd-dynamic-page-content>\n </fd-tab>\n }\n </fd-tab-list>\n } @else { @if (!contentIsPage) {\n <fd-tab-list\n [collapseOverflow]=\"true\"\n [stackContent]=\"false\"\n maxContentHeight=\"auto\"\n #tablist\n class=\"extra-hide-tabs\"\n >\n <fd-tab title=\"\">\n <fd-dynamic-page-content [class.limit-content-width]=\"formContentMaxWidth > 0\">\n <fd-layout-grid style=\"min-height: 100%\" [style.max-width.px]=\"formContentMaxWidth\">\n <div fdLayoutGridRow>\n <div\n style=\"padding: 0\"\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout1.colMd\"\n [colLg]=\"layout1.colLg\"\n [colXl]=\"layout1.colXl\"\n ></div>\n <div\n style=\"min-height: 100%\"\n [fdLayoutGridCol]=\"12\"\n [colMd]=\"colMd\"\n [colLg]=\"colLg\"\n [colXl]=\"colXl\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n parameters?.LayoutComponent ? renderLayoutComponent : renderDefaultLayout;\n context: {\n $implicit: parameters?.LayoutComponent,\n layout94: layout94\n }\n \"\n ></ng-container>\n </div>\n <div\n style=\"padding: 0\"\n [fdLayoutGridCol]=\"0\"\n [colMd]=\"layout2.colMd\"\n [colLg]=\"layout2.colLg\"\n [colXl]=\"layout2.colXl\"\n ></div>\n </div>\n </fd-layout-grid>\n </fd-dynamic-page-content>\n </fd-tab>\n </fd-tab-list>\n } } @if(!hideFooter){\n <fd-dynamic-page-footer>\n <bsu-layout-actions\n [canSend]=\"canSend\"\n [buttons]=\"layoutActions\"\n [isMobile]=\"isMobile\"\n [landscape]=\"landscape\"\n [standalone]=\"standalone\"\n [footerDesign]=\"footerDesign\"\n [workflowButtons]=\"workflowButtons\"\n [workflowButtonsComboMode]=\"workflowButtonsComboMode\"\n [deviceSize]=\"deviceSize\"\n [rtl]=\"rtl\"\n (toolClick)=\"toolbarClick.emit($event)\"\n (workflowChoiceSelect)=\"onWfChoiceSelect($event)\"\n >\n </bsu-layout-actions>\n </fd-dynamic-page-footer>\n }\n</fd-dynamic-page>\n@if (contentIsPage) {\n<ng-container\n *ngTemplateOutlet=\"\n renderLayoutComponent;\n context: {\n $implicit: parameters?.LayoutComponent,\n layout94: layout94\n }\n \"\n></ng-container>\n}\n<ng-template #renderDefaultLayout let-layout94=\"layout94\">\n <bsu-ly-layout-container-of-root\n [config]=\"layout94\"\n [isPanel]=\"false\"\n [isRoot]=\"true\"\n ></bsu-ly-layout-container-of-root>\n</ng-template>\n<ng-template #renderLayoutComponent let-component let-layout94=\"layout94\">\n <bnrc-dynamic-form-component\n [component]=\"component\"\n [removeContentPadding]=\"removeContentPadding\"\n [breadCrumbs]=\"breadCrumbs\"\n [description]=\"description\"\n [title]=\"title\"\n [subtitle]=\"subtitle\"\n [toolbarItems]=\"toolbarItems\"\n [layoutActions]=\"layoutActions\"\n [footerDesign]=\"footerDesign\"\n [facetList]=\"facetList\"\n [settings]=\"component.Settings\"\n [workflowButtons]=\"workflowButtons\"\n [workflowPanelUi]=\"workflowPanelUi\"\n [isMobile]=\"isMobile\"\n [mo]=\"mo\"\n [layout94]=\"layout94\"\n [context]=\"context\"\n [rtl]=\"rtl\"\n [fieldDict]=\"fieldDict\"\n [mask]=\"mask\"\n [dirValue]=\"dirValue\"\n [deviceSize]=\"deviceSize\"\n [contentDensity]=\"contentDensity\"\n [modernTabs]=\"modernTabs\"\n [avatar]=\"avatar\"\n (events)=\"onDynamicComponentEvents($event)\"\n ></bnrc-dynamic-form-component>\n</ng-template>\n<ng-template #closeForm>\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"close.emit()\" title=\"Close\">\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\n </button>\n</ng-template>\n<ng-template #fullscreenForm>\n @if (canFullscreen) {\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-label]=\"fullscreen ? 'exit fullscreen' : 'fullscreen'\"\n (click)=\"fullscreenRequest.emit()\"\n [title]=\"fullscreen ? 'exit fullscreen' : 'fullscreen'\"\n [glyph]=\"fullscreen ? 'exitfullscreen' : 'resize'\"\n ></button>\n }\n</ng-template>\n", styles: [":host{display:block;height:auto;width:100%}:host ::ng-deep fd-dynamic-page[contentIsPage=true] .fd-dynamic-page{height:auto!important}:host ::ng-deep .fd-progress-indicator__container,:host ::ng-deep .fd-progress-indicator__progress-bar{height:1.5rem}:host ::ng-deep fd-facet .fd-object-status--large{font-size:1.1rem}fd-dynamic-page ::ng-deep>article>fd-tab-list>.fd-tabs__content fd-tab.is-expanded{min-height:100%;display:flex}fd-dynamic-page ::ng-deep>article>fd-tab-list>.fd-tabs__content fd-tab.is-expanded>fd-dynamic-page-content{min-height:100%;overflow:hidden}fd-dynamic-page ::ng-deep>article>fd-tab-list>.fd-tabs__content fd-tab.is-expanded bsu-ly-layout-container-of-root{min-height:100%}fd-dynamic-page fd-dynamic-page-content.limit-content-width{display:flex;justify-content:center}fd-facet{display:flex;flex-direction:column}.hide-title ::ng-deep .fd-dynamic-page__title-container{display:none!important}.no-pin ::ng-deep .fd-dynamic-page__collapsible-header-visibility-container{display:none!important}fd-toolbar.firefox ::ng-deep .fd-toolbar{flex-direction:row-reverse}fd-toolbar.firefox ::ng-deep .fd-toolbar>:first-child{margin-right:5px}\n"] }]
102
102
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { _dynamicPageComponent: [{
103
103
  type: ViewChild,
104
104
  args: [DynamicPageComponent, { static: true }]
@@ -208,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
208
208
  type: ViewChild,
209
209
  args: ['closeForm', { static: true }]
210
210
  }] } });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS9mdW5kYW1lbnRhbC1keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHSCxvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBRW5CLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUNILGFBQWEsRUFJYixTQUFTLEVBRVosTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT2hFLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxhQUFhO0lBOEQ5RCxZQUFtQixFQUFjO1FBQzdCLEtBQUssRUFBRSxDQUFDO1FBRE8sT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQTFEdkIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3ZDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEQsb0JBQW9CO1FBQ1YsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0Isc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQXNCeEMsY0FBUyxHQUFHLElBQUks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a0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUM2QyxRQUFRO3NCQUExRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDdEIsZUFBZTtzQkFBekMsU0FBUzt1QkFBQyxjQUFjO2dCQUNpQixpQkFBaUI7c0JBQTFELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEJhckRlc2lnblR5cGUsXG4gICAgQ29udGVudERlbnNpdHksXG4gICAgRHluYW1pY1BhZ2VDb21wb25lbnQsXG4gICAgVGFiTGlzdENvbXBvbmVudCxcbiAgICBUYWJQYW5lbENvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgQnJlYWRDcnVtYkluZm8sXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBMYXlvdXRTZXR0aW5nLFxuICAgIGlzRmlyZWZveCxcbiAgICBGb3JtVmlzaWJpbGl0eVN0YXR1c1xufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBGb3JtVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tdG9vbGJhci9mb3JtLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1MYXlvdXRDb2wsIEdldEZvcm1MYXlvdXRHcmlkIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LWZ1bmRhbWVudGFsLWR5bmFtaWMtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRnVuZGFtZW50YWxEeW5hbWljRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQFZpZXdDaGlsZChEeW5hbWljUGFnZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgX2R5bmFtaWNQYWdlQ29tcG9uZW50OiBEeW5hbWljUGFnZUNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKFRhYkxpc3RDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBfdGFiTGlzdENvbXBvbmVudDogVGFiTGlzdENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdmb3JtVG9vbGJhcicpIF90b29sYmFyQ29tcG9uZW50OiBGb3JtVG9vbGJhckNvbXBvbmVudDtcbiAgICBAT3V0cHV0KCkgdG9vbGJhckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHdvcmtmbG93Q2hvaWNlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgZnVsbHNjcmVlblJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQElucHV0KCkgYnJlYWRDcnVtYnM6IEJyZWFkQ3J1bWJJbmZvW10gfCBudWxsO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJWaXNpYmxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJJdGVtczogYW55W107XG4gICAgQElucHV0KCkgbGF5b3V0QWN0aW9uczogYW55W107XG4gICAgQElucHV0KCkgbGF5b3V0OTQ7XG4gICAgQElucHV0KCkgcGFyYW1ldGVyczogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBASW5wdXQoKSB3b3JrZmxvd1BhbmVsVWk6IGFueTtcbiAgICBASW5wdXQoKSBjb250ZXh0OiBhbnk7XG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZmFjZXRMaXN0OiBhbnlbXTtcbiAgICBASW5wdXQoKSBmaWVsZERpY3Q6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgcmVtb3ZlSGVhZGVyQm9yZGVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJlbW92ZUNvbnRlbnRQYWRkaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzTW9iaWxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIEBJbnB1dCgpIGF2YXRhcjogYW55O1xuICAgIEBJbnB1dCgpIGNpcmNsZUF2YXRhcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBydGw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGlkZUZvb3RlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlVGl0bGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGhpZGVDbG9zZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlUGluOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGZ1bGxzY3JlZW46IGJvb2xlYW47XG4gICAgQElucHV0KCkgbWFzazogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjYW5TZW5kOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNvbnRlbnRJc1BhZ2U6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5O1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6ICdzJyB8ICdtJyB8ICdsJyB8ICd4bCc7XG4gICAgQElucHV0KCkgZGlyVmFsdWU6ICdydGwnIHwgJ2x0cic7XG4gICAgQElucHV0KCkgbGFuZHNjYXBlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHN0YW5kYWxvbmU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgbW9kZXJuVGFiczogTGF5b3V0U2V0dGluZ1tdO1xuICAgIEBJbnB1dCgpIGZvcm1WaXNpYmlsaXR5U3RhdHVzOiBGb3JtVmlzaWJpbGl0eVN0YXR1cztcbiAgICBASW5wdXQoKSBsYXlvdXRHcmlkQ29sOiBudW1iZXI7XG4gICAgQElucHV0KCkgY29sTGc6IG51bWJlcjtcbiAgICBASW5wdXQoKSBjb2xYbDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGNvbE1kOiBudW1iZXI7XG4gICAgQElucHV0KCkgZm9vdGVyRGVzaWduOiBCYXJEZXNpZ25UeXBlO1xuICAgIEBJbnB1dCgpIGZvcm1Db250ZW50TWF4V2lkdGg6IG51bWJlcjtcbiAgICBAVmlld0NoaWxkKCd0aXRsZVJlZicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSB0aXRsZVJlZjogVmlld0NvbnRhaW5lclJlZjtcbiAgICBAVmlld0NoaWxkKCdoZWFkZXJBdmF0YXInKSBoZWFkZXJBdmF0YXJSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQFZpZXdDaGlsZCgnY2xvc2VGb3JtJywgeyBzdGF0aWM6IHRydWUgfSkgY2xvc2VGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgd29ya2Zsb3dCdXR0b25zOiBhbnlbXTtcbiAgICBzZWxlY3RlZFRhYjogYW55O1xuICAgIGNhbkZ1bGxzY3JlZW46IGJvb2xlYW47XG4gICAgdG9vbGJhclNob3VsZE92ZXJmbG93ID0gZmFsc2U7XG4gICAgd29ya2Zsb3dJbmZvVGV4dDogc3RyaW5nO1xuICAgIHdvcmtmbG93QnV0dG9uc0NvbWJvTW9kZTogYm9vbGVhbjtcbiAgICBpc0ZpcmVmb3g6IGJvb2xlYW47XG4gICAgbGF5b3V0MTogRm9ybUxheW91dENvbDtcbiAgICBsYXlvdXQyOiBGb3JtTGF5b3V0Q29sO1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmlzRmlyZWZveCA9IGlzRmlyZWZveCgpO1xuICAgICAgICB0aGlzLmZhY2V0TGlzdCB8fD0gW107XG4gICAgICAgIHRoaXMud29ya2Zsb3dJbmZvVGV4dCA9IHRoaXMud29ya2Zsb3dQYW5lbFVpPy5TZXR0aW5nPy5Xb3JrZmxvdz8uSW5mb1RleHQ7XG4gICAgICAgIGNvbnN0IHdvcmtmbG93QnV0dG9ucyA9IHRoaXMud29ya2Zsb3dQYW5lbFVpPy5idXR0b25MaXN0ID8/IFtdO1xuICAgICAgICB0aGlzLndvcmtmbG93QnV0dG9uc0NvbWJvTW9kZSA9IHRoaXMud29ya2Zsb3dQYW5lbFVpPy5TZXR0aW5nPy5Xb3JrZmxvdz8uQnV0dG9uc0NvbWJvTW9kZTtcbiAgICAgICAgdGhpcy53b3JrZmxvd0J1dHRvbnMgPSB3b3JrZmxvd0J1dHRvbnM7XG5cbiAgICAgICAgdGhpcy5jYW5GdWxsc2NyZWVuID0gdGhpcy5wYXJhbWV0ZXJzPy5DYW5GdWxsc2NyZWVuID09PSB0cnVlO1xuICAgICAgICBjb25zdCB0b29sYmFyQnV0dG9uc0NvdW50ID0gdGhpcy50b29sYmFySXRlbXMuZmlsdGVyKChjKSA9PiB0eXBlb2YgYyAhPT0gJ3N0cmluZycgJiYgYy50ZXh0ICE9PSAnLScpLmxlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMuZGV2aWNlU2l6ZSA9PT0gJ3MnICYmIHRvb2xiYXJCdXR0b25zQ291bnQgPiAxKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJTaG91bGRPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodG9vbGJhckJ1dHRvbnNDb3VudCA+IDUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2xiYXJTaG91bGRPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGFubGRlTGF5b3V0KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGFiTGlzdENvbXBvbmVudC5fZGlzYWJsZVNjcm9sbFNweSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmb3JtVmlzaWJpbGl0eVN0YXR1cyB9ID0gY2hhbmdlcztcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZm9ybVZpc2liaWxpdHlTdGF0dXMgJiZcbiAgICAgICAgICAgICFmb3JtVmlzaWJpbGl0eVN0YXR1cy5maXJzdENoYW5nZSAmJlxuICAgICAgICAgICAgZm9ybVZpc2liaWxpdHlTdGF0dXMuY3VycmVudFZhbHVlID09PSAnVmlzaWJsZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9keW5hbWljUGFnZUNvbXBvbmVudD8ucmVmcmVzaFNpemUoKTtcbiAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJDb21wb25lbnQ/LnVwZGF0ZUNvbGxhcHNpYmxlSXRlbXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uV2ZDaG9pY2VTZWxlY3Qod2ZDaG9pY2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53b3JrZmxvd0Nob2ljZUNsaWNrLmVtaXQod2ZDaG9pY2UpO1xuICAgIH1cbiAgICBvblRhYkNoYW5nZWQodGFiOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdGFiLnRpdGxlO1xuICAgIH1cbiAgICBnZXROdW1iZXIodmFsKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpO1xuICAgIH1cbiAgICBvbkR5bmFtaWNDb21wb25lbnRFdmVudHMoZSkge1xuICAgICAgICBzd2l0Y2ggKGUudGl0bGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Rvb2xiYXJDbGljayc6XG4gICAgICAgICAgICAgICAgdGhpcy50b29sYmFyQ2xpY2suZW1pdChlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd29ya2Zsb3dDaG9pY2VTZWxlY3QnOlxuICAgICAgICAgICAgICAgIHRoaXMub25XZkNob2ljZVNlbGVjdChlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9oYW5sZGVMYXlvdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGF5b3V0MSA9IEdldEZvcm1MYXlvdXRHcmlkKHRydWUsIHRoaXMuY29sWGwsIHRoaXMuY29sTGcsIHRoaXMuY29sTWQpO1xuICAgICAgICB0aGlzLmxheW91dDIgPSBHZXRGb3JtTGF5b3V0R3JpZChmYWxzZSwgdGhpcy5jb2xYbCwgdGhpcy5jb2xMZywgdGhpcy5jb2xNZCk7XG4gICAgfVxufVxuIiwiQGlmIChtYXNrKSB7XG48ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCVcIj5cbiAgICA8YnN1LW1hc2sgc2l6ZT1cIm1cIj48L2JzdS1tYXNrPlxuPC9kaXY+XG59XG5cbjxmZC1keW5hbWljLXBhZ2VcbiAgICBbc2l6ZV09XCJpc01vYmlsZSA/ICdzbWFsbCcgOiAnbGFyZ2UnXCJcbiAgICBbY2xhc3MuaGVhZGVyLWJvcmRlcl09XCIhcmVtb3ZlSGVhZGVyQm9yZGVyXCJcbiAgICBbYXR0ci5pc01vYmlsZV09XCJpc01vYmlsZVwiXG4gICAgW2F0dHIuY29udGVudElzUGFnZV09XCJjb250ZW50SXNQYWdlXCJcbiAgICBtb2JpbGVcbiAgICBmb3JtQ2xvc2VcbiAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuPlxuICAgIDxmZC1keW5hbWljLXBhZ2UtaGVhZGVyXG4gICAgICAgIFtjbGFzcy5zaW1wbGUtdGl0bGVdPVwiIWRlc2NyaXB0aW9uXCJcbiAgICAgICAgW3RpdGxlXT1cIihoaWRlVGl0bGUgPT09IHRydWUgPyAnJyA6IHRpdGxlKSB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIFtzdWJ0aXRsZV09XCJzdWJ0aXRsZSB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIFtjbGFzcy5wLWIwXT1cInJlbW92ZUNvbnRlbnRQYWRkaW5nXCJcbiAgICAgICAgW2NsYXNzLmhpZGUtdGl0bGVdPVwiaGlkZVRpdGxlID09PSB0cnVlICYmIGhpZGVDbG9zZSA9PT0gdHJ1ZVwiXG4gICAgICAgICN0aXRsZVJlZlxuICAgID5cbiAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1icmVhZGNydW1iIFtjbGFzcy5oaWRlXT1cImlzTW9iaWxlXCI+XG4gICAgICAgICAgICA8ZmQtYnJlYWRjcnVtYj5cbiAgICAgICAgICAgICAgICBAaWYgKGJyZWFkQ3J1bWJzICYmICFpc01vYmlsZSkgeyBAZm9yIChicmVhZENydW1iIG9mIGJyZWFkQ3J1bWJzIHwgc2xpY2U6IDA6YnJlYWRDcnVtYnMubGVuZ3RoOyB0cmFja1xuICAgICAgICAgICAgICAgIGJyZWFkQ3J1bWIudXJsOyBsZXQgaSA9ICRpbmRleDsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgIDxmZC1icmVhZGNydW1iLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxic3UtYnJlYWRjcnVtYlxuICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XT1cImlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzTGFzdF09XCJsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFticmVhZENydW1iXT1cImJyZWFkQ3J1bWJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsbEJyZWFkQ3J1bWJdPVwiYnJlYWRDcnVtYnNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9ic3UtYnJlYWRjcnVtYj5cbiAgICAgICAgICAgICAgICA8L2ZkLWJyZWFkY3J1bWItaXRlbT5cbiAgICAgICAgICAgICAgICB9IH1cbiAgICAgICAgICAgIDwvZmQtYnJlYWRjcnVtYj5cbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtYnJlYWRjcnVtYj5cbiAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1nbG9iYWwtYWN0aW9ucz5cbiAgICAgICAgICAgIDwhLS0gZ2xvYmFsIGFjdGlvbnMgLS0+XG5cbiAgICAgICAgICAgIDxmZC10b29sYmFyIFtzaG91bGRPdmVyZmxvd109XCJ0cnVlXCIgU3R5bGU9XCJkaXNwbGF5Om5vbmVcIj4gPC9mZC10b29sYmFyPlxuICAgICAgICAgICAgPCEtLSBhZGRlZCB0aGlzIGJlY2F1c2UgaW4gbW9iaWxlIGxhbmRzY2FwZSB0b29sYmFyIGRpc2FwcGVyIC0tPlxuICAgICAgICAgICAgQGlmICh0b29sYmFyVmlzaWJsZSkge1xuICAgICAgICAgICAgPGJzdS1mb3JtLXRvb2xiYXJcbiAgICAgICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgICAgICAgICBbYnV0dG9uc109XCJ0b29sYmFySXRlbXNcIlxuICAgICAgICAgICAgICAgIFtkaXJWYWx1ZV09XCJkaXJWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW2lzRmlyZWZveF09XCJpc0ZpcmVmb3hcIlxuICAgICAgICAgICAgICAgICh0b29sYmFyQ2xpY2spPVwidG9vbGJhckNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgI2Zvcm1Ub29sYmFyXG4gICAgICAgICAgICA+PC9ic3UtZm9ybS10b29sYmFyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1nbG9iYWwtYWN0aW9ucz5cbiAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1sYXlvdXQtYWN0aW9ucz5cbiAgICAgICAgICAgIDwhLS0gbGF5b3V0IGFjdGlvbnMgLS0+XG4gICAgICAgICAgICA8IS0tIDxkaXYgW2Zvcm1BY3Rpb25zXT1cInRoaXMudG9vbGJhclwiPjwvZGl2PiAtLT5cbiAgICAgICAgICAgIEBpZiAoIWhpZGVDbG9zZSkge1xuICAgICAgICAgICAgPGZkLXRvb2xiYXIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBbY2xlYXJCb3JkZXJdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIEBpZiAoZGV2aWNlU2l6ZSAhPT0gJ3MnKSB7XG4gICAgICAgICAgICAgICAgPGZkLXRvb2xiYXItc2VwYXJhdG9yPjwvZmQtdG9vbGJhci1zZXBhcmF0b3I+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmdWxsc2NyZWVuRm9ybVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZUZvcm1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZmQtdG9vbGJhcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtbGF5b3V0LWFjdGlvbnM+XG4gICAgPC9mZC1keW5hbWljLXBhZ2UtaGVhZGVyPlxuICAgIEBpZiAoZGVzY3JpcHRpb24gfHwgZmFjZXRMaXN0Lmxlbmd0aCA+IDAgfHwgd29ya2Zsb3dJbmZvVGV4dCB8fCBhdmF0YXIpIHtcbiAgICA8ZmQtZHluYW1pYy1wYWdlLXN1YmhlYWRlclxuICAgICAgICBbY2xhc3MuaGVhZGVyLW5vLWRlc2NyaXB0aW9uXT1cIiEoZGVzY3JpcHRpb24gfHwgd29ya2Zsb3dJbmZvVGV4dClcIlxuICAgICAgICBbY2xhc3Mubm8tcGluXT1cImhpZGVQaW5cIlxuICAgICAgICBbY29sbGFwc2libGVdPVwiISF3b3JrZmxvd0luZm9UZXh0IHx8IChmYWNldExpc3QgJiYgZmFjZXRMaXN0Lmxlbmd0aCA+IDApXCJcbiAgICAgICAgW3Bpbm5hYmxlXT1cInRydWVcIlxuICAgICAgICBbY29sbGFwc2VkXT1cIighZmFjZXRMaXN0IHx8IGZhY2V0TGlzdC5sZW5ndGggPT09IDApICYmICF3b3JrZmxvd0luZm9UZXh0XCJcbiAgICA+XG4gICAgICAgIEBpZiAod29ya2Zsb3dJbmZvVGV4dCkge1xuICAgICAgICA8ZmQtbWVzc2FnZS1zdHJpcCBbdHlwZV09XCInd2FybmluZydcIiBbZGlzbWlzc2libGVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgIHt7IHdvcmtmbG93SW5mb1RleHQgfCBiYmJUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9mZC1tZXNzYWdlLXN0cmlwPlxuICAgICAgICB9XG4gICAgICAgIDxmZC1mYWNldC1ncm91cCBhcmlhTGFiZWw9XCJGYWNldCBHcm91cFwiPlxuICAgICAgICAgICAgQGlmIChhdmF0YXIpIHtcbiAgICAgICAgICAgIDxmZC1mYWNldCB0eXBlPVwiaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZmQtYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiYXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cImF2YXRhclwiXG4gICAgICAgICAgICAgICAgICAgIFtpbWFnZV09XCIhYXZhdGFyPy5GaWxlSWQgPyBudWxsIDogKGF2YXRhcj8uRmlsZUlkIHwgcGljRmllbGRTcmM6ICdJRCc6bnVsbClcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJkZXZpY2VTaXplID09PSAneGwnID8gJ2wnIDogZGV2aWNlU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc3BhcmVudF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NpcmNsZV09XCJjaXJjbGVBdmF0YXJcIlxuICAgICAgICAgICAgICAgID48L2ZkLWF2YXRhcj5cbiAgICAgICAgICAgICAgICA8IS0tIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYXZhdGFyIGZkLWF2YXRhci0tY2lyY2xlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInZmQtYXZhdGFyLS0nICsgKGRldmljZVNpemUgPT09ICd4bCcgPyAnbCcgOiBkZXZpY2VTaXplKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImF2YXRhclwiIGNsYXNzPVwiZmQtYXZhdGFyX19pY29uXCIgW2NsYXNzXT1cImF2YXRhciB8IHNhcEZvbnRDbGFzc1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj4gPC9pPlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDwvZmQtZmFjZXQ+XG4gICAgICAgICAgICB9IEBmb3IgKGZhY2V0IG9mIGZhY2V0TGlzdDsgdHJhY2sgZmFjZXQpIHtcbiAgICAgICAgICAgIDxmZC1mYWNldFxuICAgICAgICAgICAgICAgIFt0eXBlXT1cImZhY2V0LnR5cGVcIlxuICAgICAgICAgICAgICAgIFtmYWNldFRpdGxlXT1cImZhY2V0Lm1vLlRpdGxlIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiZmFjZXQubW8uU3ViVGl0bGUgfCBmYWNldFZhbHVlIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZhY2V0Lm1vLkl0ZW1MaXN0Py5Nb0RhdGFMaXN0OyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgPGZkLWZhY2V0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsIFtjb2xvbl09XCJ0cnVlXCIgZm9yPVwiZm9ybS12YWx1ZS0xMFwiPnt7IGl0ZW0uVGl0bGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtdGV4dCBbdGV4dF09XCJpdGVtLlZhbHVlIHwgZmFjZXRWYWx1ZVwiIGlkPVwiZm9ybS12YWx1ZS0xMFwiPjwvZmQtdGV4dD5cbiAgICAgICAgICAgICAgICA8L2ZkLWZhY2V0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgfSBAaWYgKCAhZmFjZXQubW8uSXNOdW1iZXIgJiYgZmFjZXQudHlwZSA9PT0gJ2tleS12YWx1ZScgJiYgIWZhY2V0Lm1vLkNvbXBvbmVudD8uU2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwiZmFjZXQubW8uU3RhdHVzIHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJmYWNldC5tby5Db21wb25lbnQ/LlNlbGVjdG9yID8gJycgOiAoZmFjZXQubW8uVGV4dCB8IGZhY2V0VmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhcmdlXT1cImZhY2V0Lm1vLklzTGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZmFjZXQubW8uVGV4dCB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJmYWNldC5tby5UZXh0IHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJmYWNldC5tby5JY29uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxibnJjLWR5bmFtaWMtY29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInZmQtb2JqZWN0LXN0YXR1cy0tJyArIGZhY2V0Lm1vLlN0YXR1cyB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtb2JqZWN0LXN0YXR1cy0tbGFyZ2VdPVwiZmFjZXQubW8uSXNMYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb21wb25lbnRdPVwiZmFjZXQubW8uQ29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZhY2V0Lm1vLlRleHRcIlxuICAgICAgICAgICAgICAgID48L2JucmMtZHluYW1pYy1jb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgfSBAaWYgKGZhY2V0Lm1vLklzTnVtYmVyICYmIGZhY2V0LnR5cGUgPT09ICdrZXktdmFsdWUnKSB7XG4gICAgICAgICAgICAgICAgPGZkLW9iamVjdC1udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgW251bWJlcl09XCJmYWNldC5tby5UZXh0IHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYXJnZV09XCJmYWNldC5tby5Jc0xhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgW3VuaXRdPVwiZmFjZXQubW8uVW5pdCB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cImZhY2V0Lm1vLlN0YXR1cyB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbZGVjaW1hbF09XCJmYWNldC5tby5EZWNpbWFsVmFsdWUgfCBmYWNldFZhbHVlXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1vYmplY3QtbnVtYmVyPlxuICAgICAgICAgICAgICAgIH0gQGlmIChmYWNldC50eXBlID09PSAncGxhaW4tdGV4dCcpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IFtzdHlsZS53aWR0aC5weF09XCJmYWNldC5tby5XaWR0aFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vcm1hbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtdGV4dCBbdGV4dF09XCJmYWNldC5tby5UZXh0IHwgZmFjZXRWYWx1ZVwiIGh5cGhlbmF0aW9uPVwiYXV0b1wiPjwvZmQtdGV4dD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9IEBpZiAoZmFjZXQudHlwZSA9PT0gJ3JhdGluZy1pbmRpY2F0b3InKSB7XG4gICAgICAgICAgICAgICAgPGZkLWZhY2V0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1yYXRpbmctaW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvaW50ZXItZXZlbnRzOiBub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZHluYW1pY1RleHRJbmRpY2F0b3JdPVwiZmFjZXQubW8uRm9vdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5TW9kZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmYWNldC5tbyB8IGZhY2V0VmFsdWU6IGZhY2V0LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1yYXRpbmctaW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgIDwvZmQtZmFjZXQtY29udGVudD5cbiAgICAgICAgICAgICAgICB9IEBpZiAoZmFjZXQudHlwZSA9PT0gJ3Byb2dyZXNzJykge1xuICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cIicxMHJlbSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBmZC1mb3JtLWxhYmVsPnt7IGZhY2V0Lm1vLlN1YnRpdGxlIHwgZmFjZXRWYWx1ZSB9fTwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1wcm9ncmVzcy1pbmRpY2F0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwciBlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiZmFjZXQubW8uU3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlVGV4dF09XCIoZmFjZXQubW8gfCBmYWNldFZhbHVlOiBmYWNldC50eXBlKSArICcg2KfYsiAxMCDZhdix2K3ZhNmHJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVOb3ddPVwiZmFjZXQubW8gfCBmYWNldFZhbHVlOiBmYWNldC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZU1heF09XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdW5pdF09XCIn2YXYsdit2YTZhydcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1wcm9ncmVzcy1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHVpNS1wcm9ncmVzcy1pbmRpY2F0b3JcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTByZW1cIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVTdGF0ZV09XCJmYWNldC5tby5TdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXROdW1iZXIoZmFjZXQubW8uVmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgID48L3VpNS1wcm9ncmVzcy1pbmRpY2F0b3I+IC0tPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH0gQGlmIChmYWNldC50eXBlID09PSAnbWljcm9jaGFydHMnKSB7XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHdyYXA+aW4gcHJvZ3Jlc3MgLi4uPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2ZkLWZhY2V0PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2ZkLWZhY2V0LWdyb3VwPlxuICAgICAgICBAaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgIDxzcGFuPnt7IGRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgPC9mZC1keW5hbWljLXBhZ2Utc3ViaGVhZGVyPlxuICAgIH0gQGlmICghY29udGVudElzUGFnZSAmJiBtb2Rlcm5UYWJzICYmIG1vZGVyblRhYnMubGVuZ3RoID4gMCAmJiAhcGFyYW1ldGVycz8uTGF5b3V0Q29tcG9uZW50KSB7XG4gICAgPGZkLXRhYi1saXN0XG4gICAgICAgIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblRhYkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIFtjb2xsYXBzZU92ZXJmbG93XT1cInRydWVcIlxuICAgICAgICBbc3RhY2tDb250ZW50XT1cImZhbHNlXCJcbiAgICAgICAgbWF4Q29udGVudEhlaWdodD1cImF1dG9cIlxuICAgICAgICBbZXhwYW5kT3ZlcmZsb3dUZXh0XT1cIidNb3JlJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICN0YWJsaXN0XG4gICAgPlxuICAgICAgICBAZm9yICh0YWIgb2YgbW9kZXJuVGFiczsgdHJhY2sgdGFiLlRpdGxlOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICA8ZmQtdGFiIFt0aXRsZV09XCJ0YWIuVGl0bGUhISB8IGJiYlRyYW5zbGF0ZVwiIFtjbGFzcy5pcy1leHBhbmRlZF09XCJzZWxlY3RlZFRhYiA9PT0gdGFiLlRpdGxlXCI+XG4gICAgICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQgW2lkXT1cInRhYi5pZFwiIFtjbGFzcy5saW1pdC1jb250ZW50LXdpZHRoXT1cImZvcm1Db250ZW50TWF4V2lkdGggPiAwXCI+XG4gICAgICAgICAgICAgICAgPGZkLWxheW91dC1ncmlkIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiZm9ybUNvbnRlbnRNYXhXaWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xNZF09XCJsYXlvdXQxLmNvbE1kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwibGF5b3V0MS5jb2xMZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbFhsXT1cImxheW91dDEuY29sWGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjEyXCIgW2NvbE1kXT1cImNvbE1kXCIgW2NvbExnXT1cImNvbExnXCIgW2NvbFhsXT1cImNvbFhsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJzdS1seS10YWItcGFnZSBbY29uZmlnXT1cInRhYlwiIFt0YWJsaXN0XT1cInRhYmxpc3RcIj48L2JzdS1seS10YWItcGFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cImxheW91dDIuY29sTWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xMZ109XCJsYXlvdXQyLmNvbExnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sWGxdPVwibGF5b3V0Mi5jb2xYbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZmQtbGF5b3V0LWdyaWQ+XG4gICAgICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1jb250ZW50PlxuICAgICAgICA8L2ZkLXRhYj5cbiAgICAgICAgfVxuICAgIDwvZmQtdGFiLWxpc3Q+XG4gICAgfSBAZWxzZSB7IEBpZiAoIWNvbnRlbnRJc1BhZ2UpIHtcbiAgICA8ZmQtdGFiLWxpc3RcbiAgICAgICAgW2NvbGxhcHNlT3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICAgIFtzdGFja0NvbnRlbnRdPVwiZmFsc2VcIlxuICAgICAgICBtYXhDb250ZW50SGVpZ2h0PVwiYXV0b1wiXG4gICAgICAgICN0YWJsaXN0XG4gICAgICAgIGNsYXNzPVwiZXh0cmEtaGlkZS10YWJzXCJcbiAgICA+XG4gICAgICAgIDxmZC10YWIgdGl0bGU9XCJcIj5cbiAgICAgICAgICAgIDxmZC1keW5hbWljLXBhZ2UtY29udGVudCBbY2xhc3MubGltaXQtY29udGVudC13aWR0aF09XCJmb3JtQ29udGVudE1heFdpZHRoID4gMFwiPlxuICAgICAgICAgICAgICAgIDxmZC1sYXlvdXQtZ3JpZCBzdHlsZT1cIm1pbi1oZWlnaHQ6IDEwMCVcIiBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImZvcm1Db250ZW50TWF4V2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xNZF09XCJsYXlvdXQxLmNvbE1kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwibGF5b3V0MS5jb2xMZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbFhsXT1cImxheW91dDEuY29sWGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLWhlaWdodDogMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkTGF5b3V0R3JpZENvbF09XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cImNvbE1kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwiY29sTGdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xYbF09XCJjb2xYbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycz8uTGF5b3V0Q29tcG9uZW50ID8gcmVuZGVyTGF5b3V0Q29tcG9uZW50IDogcmVuZGVyRGVmYXVsdExheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHBhcmFtZXRlcnM/LkxheW91dENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQ5NDogbGF5b3V0OTRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cImxheW91dDIuY29sTWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xMZ109XCJsYXlvdXQyLmNvbExnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sWGxdPVwibGF5b3V0Mi5jb2xYbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZmQtbGF5b3V0LWdyaWQ+XG4gICAgICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1jb250ZW50PlxuICAgICAgICA8L2ZkLXRhYj5cbiAgICA8L2ZkLXRhYi1saXN0PlxuICAgIH0gfSBAaWYoIWhpZGVGb290ZXIpe1xuICAgIDxmZC1keW5hbWljLXBhZ2UtZm9vdGVyPlxuICAgICAgICA8YnN1LWxheW91dC1hY3Rpb25zXG4gICAgICAgICAgICBbY2FuU2VuZF09XCJjYW5TZW5kXCJcbiAgICAgICAgICAgIFtidXR0b25zXT1cImxheW91dEFjdGlvbnNcIlxuICAgICAgICAgICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICAgICAgICAgIFtsYW5kc2NhcGVdPVwibGFuZHNjYXBlXCJcbiAgICAgICAgICAgIFtzdGFuZGFsb25lXT1cInN0YW5kYWxvbmVcIlxuICAgICAgICAgICAgW2Zvb3RlckRlc2lnbl09XCJmb290ZXJEZXNpZ25cIlxuICAgICAgICAgICAgW3dvcmtmbG93QnV0dG9uc109XCJ3b3JrZmxvd0J1dHRvbnNcIlxuICAgICAgICAgICAgW3dvcmtmbG93QnV0dG9uc0NvbWJvTW9kZV09XCJ3b3JrZmxvd0J1dHRvbnNDb21ib01vZGVcIlxuICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgICAgICAodG9vbENsaWNrKT1cInRvb2xiYXJDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgKHdvcmtmbG93Q2hvaWNlU2VsZWN0KT1cIm9uV2ZDaG9pY2VTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9ic3UtbGF5b3V0LWFjdGlvbnM+XG4gICAgPC9mZC1keW5hbWljLXBhZ2UtZm9vdGVyPlxuICAgIH1cbjwvZmQtZHluYW1pYy1wYWdlPlxuQGlmIChjb250ZW50SXNQYWdlKSB7XG48bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgcmVuZGVyTGF5b3V0Q29tcG9uZW50O1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHBhcmFtZXRlcnM/LkxheW91dENvbXBvbmVudCxcbiAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQ5NFxuICAgICAgICB9XG4gICAgXCJcbj48L25nLWNvbnRhaW5lcj5cbn1cbjxuZy10ZW1wbGF0ZSAjcmVuZGVyRGVmYXVsdExheW91dCBsZXQtbGF5b3V0OTQ9XCJsYXlvdXQ5NFwiPlxuICAgIDxic3UtbHktbGF5b3V0LWNvbnRhaW5lci1vZi1yb290XG4gICAgICAgIFtjb25maWddPVwibGF5b3V0OTRcIlxuICAgICAgICBbaXNQYW5lbF09XCJmYWxzZVwiXG4gICAgICAgIFtpc1Jvb3RdPVwidHJ1ZVwiXG4gICAgPjwvYnN1LWx5LWxheW91dC1jb250YWluZXItb2Ytcm9vdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3JlbmRlckxheW91dENvbXBvbmVudCBsZXQtY29tcG9uZW50IGxldC1sYXlvdXQ5ND1cImxheW91dDk0XCI+XG4gICAgPGJucmMtZHluYW1pYy1mb3JtLWNvbXBvbmVudFxuICAgICAgICBbY29tcG9uZW50XT1cImNvbXBvbmVudFwiXG4gICAgICAgIFtyZW1vdmVDb250ZW50UGFkZGluZ109XCJyZW1vdmVDb250ZW50UGFkZGluZ1wiXG4gICAgICAgIFticmVhZENydW1ic109XCJicmVhZENydW1ic1wiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIFtidXR0b25zXT1cImxheW91dEFjdGlvbnNcIlxuICAgICAgICBbdGl0bGVdPVwidGl0bGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwic3VidGl0bGVcIlxuICAgICAgICBbdG9vbGJhckl0ZW1zXT1cInRvb2xiYXJJdGVtc1wiXG4gICAgICAgIFtsYXlvdXRBY3Rpb25zXT1cImxheW91dEFjdGlvbnNcIlxuICAgICAgICBbZm9vdGVyRGVzaWduXT1cImZvb3RlckRlc2lnblwiXG4gICAgICAgIFtmYWNldExpc3RdPVwiZmFjZXRMaXN0XCJcbiAgICAgICAgW3NldHRpbmdzXT1cImNvbXBvbmVudC5TZXR0aW5nc1wiXG4gICAgICAgIFt3b3JrZmxvd0J1dHRvbnNdPVwid29ya2Zsb3dCdXR0b25zXCJcbiAgICAgICAgW3dvcmtmbG93UGFuZWxVaV09XCJ3b3JrZmxvd1BhbmVsVWlcIlxuICAgICAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgICAgICBbbW9dPVwibW9cIlxuICAgICAgICBbbGF5b3V0OTRdPVwibGF5b3V0OTRcIlxuICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICAgICAgW3J0bF09XCJydGxcIlxuICAgICAgICBbZmllbGREaWN0XT1cImZpZWxkRGljdFwiXG4gICAgICAgIFttYXNrXT1cIm1hc2tcIlxuICAgICAgICBbZGlyVmFsdWVdPVwiZGlyVmFsdWVcIlxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgW2NvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgW21vZGVyblRhYnNdPVwibW9kZXJuVGFic1wiXG4gICAgICAgIFthdmF0YXJdPVwiYXZhdGFyXCJcbiAgICAgICAgKGV2ZW50cyk9XCJvbkR5bmFtaWNDb21wb25lbnRFdmVudHMoJGV2ZW50KVwiXG4gICAgPjwvYm5yYy1keW5hbWljLWZvcm0tY29tcG9uZW50PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjY2xvc2VGb3JtPlxuICAgIDxidXR0b24gZmQtYnV0dG9uIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImNsb3NlLmVtaXQoKVwiIHRpdGxlPVwiQ2xvc2VcIj5cbiAgICAgICAgPGkgW2NsYXNzXT1cIidzYXAtaWNvbi0tJyArIChpc01vYmlsZSA/IChydGwgPyAnYXJyb3ctcmlnaHQnIDogJ2Fycm93LWxlZnQnKSA6ICdkZWNsaW5lJylcIj48L2k+XG4gICAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNmdWxsc2NyZWVuRm9ybT5cbiAgICBAaWYgKGNhbkZ1bGxzY3JlZW4pIHtcbiAgICA8YnV0dG9uXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZnVsbHNjcmVlbiA/ICdleGl0IGZ1bGxzY3JlZW4nIDogJ2Z1bGxzY3JlZW4nXCJcbiAgICAgICAgKGNsaWNrKT1cImZ1bGxzY3JlZW5SZXF1ZXN0LmVtaXQoKVwiXG4gICAgICAgIFt0aXRsZV09XCJmdWxsc2NyZWVuID8gJ2V4aXQgZnVsbHNjcmVlbicgOiAnZnVsbHNjcmVlbidcIlxuICAgICAgICBbZ2x5cGhdPVwiZnVsbHNjcmVlbiA/ICdleGl0ZnVsbHNjcmVlbicgOiAncmVzaXplJ1wiXG4gICAgPjwvYnV0dG9uPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS9mdW5kYW1lbnRhbC1keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHSCxvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBRW5CLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUNILGFBQWEsRUFJYixTQUFTLEVBRVosTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT2hFLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxhQUFhO0lBOEQ5RCxZQUFtQixFQUFjO1FBQzdCLEtBQUssRUFBRSxDQUFDO1FBRE8sT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQTFEdkIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3ZDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEQsb0JBQW9CO1FBQ1YsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0Isc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQXNCeEMsY0FBUyxHQUFHLElBQUks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a0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUM2QyxRQUFRO3NCQUExRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDdEIsZUFBZTtzQkFBekMsU0FBUzt1QkFBQyxjQUFjO2dCQUNpQixpQkFBaUI7c0JBQTFELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEJhckRlc2lnblR5cGUsXG4gICAgQ29udGVudERlbnNpdHksXG4gICAgRHluYW1pY1BhZ2VDb21wb25lbnQsXG4gICAgVGFiTGlzdENvbXBvbmVudCxcbiAgICBUYWJQYW5lbENvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgQnJlYWRDcnVtYkluZm8sXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBMYXlvdXRTZXR0aW5nLFxuICAgIGlzRmlyZWZveCxcbiAgICBGb3JtVmlzaWJpbGl0eVN0YXR1c1xufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBGb3JtVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tdG9vbGJhci9mb3JtLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1MYXlvdXRDb2wsIEdldEZvcm1MYXlvdXRHcmlkIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LWZ1bmRhbWVudGFsLWR5bmFtaWMtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Z1bmRhbWVudGFsLWR5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZnVuZGFtZW50YWwtZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRnVuZGFtZW50YWxEeW5hbWljRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQFZpZXdDaGlsZChEeW5hbWljUGFnZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgX2R5bmFtaWNQYWdlQ29tcG9uZW50OiBEeW5hbWljUGFnZUNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKFRhYkxpc3RDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBfdGFiTGlzdENvbXBvbmVudDogVGFiTGlzdENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdmb3JtVG9vbGJhcicpIF90b29sYmFyQ29tcG9uZW50OiBGb3JtVG9vbGJhckNvbXBvbmVudDtcbiAgICBAT3V0cHV0KCkgdG9vbGJhckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHdvcmtmbG93Q2hvaWNlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgZnVsbHNjcmVlblJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQElucHV0KCkgYnJlYWRDcnVtYnM6IEJyZWFkQ3J1bWJJbmZvW10gfCBudWxsO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJWaXNpYmxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJJdGVtczogYW55W107XG4gICAgQElucHV0KCkgbGF5b3V0QWN0aW9uczogYW55W107XG4gICAgQElucHV0KCkgbGF5b3V0OTQ7XG4gICAgQElucHV0KCkgcGFyYW1ldGVyczogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBASW5wdXQoKSB3b3JrZmxvd1BhbmVsVWk6IGFueTtcbiAgICBASW5wdXQoKSBjb250ZXh0OiBhbnk7XG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZmFjZXRMaXN0OiBhbnlbXTtcbiAgICBASW5wdXQoKSBmaWVsZERpY3Q6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgcmVtb3ZlSGVhZGVyQm9yZGVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJlbW92ZUNvbnRlbnRQYWRkaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzTW9iaWxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIEBJbnB1dCgpIGF2YXRhcjogYW55O1xuICAgIEBJbnB1dCgpIGNpcmNsZUF2YXRhcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBydGw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGlkZUZvb3RlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlVGl0bGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGhpZGVDbG9zZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlUGluOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGZ1bGxzY3JlZW46IGJvb2xlYW47XG4gICAgQElucHV0KCkgbWFzazogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjYW5TZW5kOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNvbnRlbnRJc1BhZ2U6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5O1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6ICdzJyB8ICdtJyB8ICdsJyB8ICd4bCc7XG4gICAgQElucHV0KCkgZGlyVmFsdWU6ICdydGwnIHwgJ2x0cic7XG4gICAgQElucHV0KCkgbGFuZHNjYXBlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHN0YW5kYWxvbmU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgbW9kZXJuVGFiczogTGF5b3V0U2V0dGluZ1tdO1xuICAgIEBJbnB1dCgpIGZvcm1WaXNpYmlsaXR5U3RhdHVzOiBGb3JtVmlzaWJpbGl0eVN0YXR1cztcbiAgICBASW5wdXQoKSBsYXlvdXRHcmlkQ29sOiBudW1iZXI7XG4gICAgQElucHV0KCkgY29sTGc6IG51bWJlcjtcbiAgICBASW5wdXQoKSBjb2xYbDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGNvbE1kOiBudW1iZXI7XG4gICAgQElucHV0KCkgZm9vdGVyRGVzaWduOiBCYXJEZXNpZ25UeXBlO1xuICAgIEBJbnB1dCgpIGZvcm1Db250ZW50TWF4V2lkdGg6IG51bWJlcjtcbiAgICBAVmlld0NoaWxkKCd0aXRsZVJlZicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSB0aXRsZVJlZjogVmlld0NvbnRhaW5lclJlZjtcbiAgICBAVmlld0NoaWxkKCdoZWFkZXJBdmF0YXInKSBoZWFkZXJBdmF0YXJSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQFZpZXdDaGlsZCgnY2xvc2VGb3JtJywgeyBzdGF0aWM6IHRydWUgfSkgY2xvc2VGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgd29ya2Zsb3dCdXR0b25zOiBhbnlbXTtcbiAgICBzZWxlY3RlZFRhYjogYW55O1xuICAgIGNhbkZ1bGxzY3JlZW46IGJvb2xlYW47XG4gICAgdG9vbGJhclNob3VsZE92ZXJmbG93ID0gZmFsc2U7XG4gICAgd29ya2Zsb3dJbmZvVGV4dDogc3RyaW5nO1xuICAgIHdvcmtmbG93QnV0dG9uc0NvbWJvTW9kZTogYm9vbGVhbjtcbiAgICBpc0ZpcmVmb3g6IGJvb2xlYW47XG4gICAgbGF5b3V0MTogRm9ybUxheW91dENvbDtcbiAgICBsYXlvdXQyOiBGb3JtTGF5b3V0Q29sO1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmlzRmlyZWZveCA9IGlzRmlyZWZveCgpO1xuICAgICAgICB0aGlzLmZhY2V0TGlzdCB8fD0gW107XG4gICAgICAgIHRoaXMud29ya2Zsb3dJbmZvVGV4dCA9IHRoaXMud29ya2Zsb3dQYW5lbFVpPy5TZXR0aW5nPy5Xb3JrZmxvdz8uSW5mb1RleHQ7XG4gICAgICAgIGNvbnN0IHdvcmtmbG93QnV0dG9ucyA9IHRoaXMud29ya2Zsb3dQYW5lbFVpPy5idXR0b25MaXN0ID8/IFtdO1xuICAgICAgICB0aGlzLndvcmtmbG93QnV0dG9uc0NvbWJvTW9kZSA9IHRoaXMud29ya2Zsb3dQYW5lbFVpPy5TZXR0aW5nPy5Xb3JrZmxvdz8uQnV0dG9uc0NvbWJvTW9kZTtcbiAgICAgICAgdGhpcy53b3JrZmxvd0J1dHRvbnMgPSB3b3JrZmxvd0J1dHRvbnM7XG5cbiAgICAgICAgdGhpcy5jYW5GdWxsc2NyZWVuID0gdGhpcy5wYXJhbWV0ZXJzPy5DYW5GdWxsc2NyZWVuID09PSB0cnVlO1xuICAgICAgICBjb25zdCB0b29sYmFyQnV0dG9uc0NvdW50ID0gdGhpcy50b29sYmFySXRlbXMuZmlsdGVyKChjKSA9PiB0eXBlb2YgYyAhPT0gJ3N0cmluZycgJiYgYy50ZXh0ICE9PSAnLScpLmxlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMuZGV2aWNlU2l6ZSA9PT0gJ3MnICYmIHRvb2xiYXJCdXR0b25zQ291bnQgPiAxKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJTaG91bGRPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodG9vbGJhckJ1dHRvbnNDb3VudCA+IDUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2xiYXJTaG91bGRPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGFubGRlTGF5b3V0KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGFiTGlzdENvbXBvbmVudC5fZGlzYWJsZVNjcm9sbFNweSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmb3JtVmlzaWJpbGl0eVN0YXR1cyB9ID0gY2hhbmdlcztcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZm9ybVZpc2liaWxpdHlTdGF0dXMgJiZcbiAgICAgICAgICAgICFmb3JtVmlzaWJpbGl0eVN0YXR1cy5maXJzdENoYW5nZSAmJlxuICAgICAgICAgICAgZm9ybVZpc2liaWxpdHlTdGF0dXMuY3VycmVudFZhbHVlID09PSAnVmlzaWJsZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9keW5hbWljUGFnZUNvbXBvbmVudD8ucmVmcmVzaFNpemUoKTtcbiAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJDb21wb25lbnQ/LnVwZGF0ZUNvbGxhcHNpYmxlSXRlbXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uV2ZDaG9pY2VTZWxlY3Qod2ZDaG9pY2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53b3JrZmxvd0Nob2ljZUNsaWNrLmVtaXQod2ZDaG9pY2UpO1xuICAgIH1cbiAgICBvblRhYkNoYW5nZWQodGFiOiBUYWJQYW5lbENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdGFiLnRpdGxlO1xuICAgIH1cbiAgICBnZXROdW1iZXIodmFsKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWwpO1xuICAgIH1cbiAgICBvbkR5bmFtaWNDb21wb25lbnRFdmVudHMoZSkge1xuICAgICAgICBzd2l0Y2ggKGUudGl0bGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Rvb2xiYXJDbGljayc6XG4gICAgICAgICAgICAgICAgdGhpcy50b29sYmFyQ2xpY2suZW1pdChlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnd29ya2Zsb3dDaG9pY2VTZWxlY3QnOlxuICAgICAgICAgICAgICAgIHRoaXMub25XZkNob2ljZVNlbGVjdChlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9oYW5sZGVMYXlvdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGF5b3V0MSA9IEdldEZvcm1MYXlvdXRHcmlkKHRydWUsIHRoaXMuY29sWGwsIHRoaXMuY29sTGcsIHRoaXMuY29sTWQpO1xuICAgICAgICB0aGlzLmxheW91dDIgPSBHZXRGb3JtTGF5b3V0R3JpZChmYWxzZSwgdGhpcy5jb2xYbCwgdGhpcy5jb2xMZywgdGhpcy5jb2xNZCk7XG4gICAgfVxufVxuIiwiQGlmIChtYXNrKSB7XG48ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCVcIj5cbiAgICA8YnN1LW1hc2sgc2l6ZT1cIm1cIj48L2JzdS1tYXNrPlxuPC9kaXY+XG59XG5cbjxmZC1keW5hbWljLXBhZ2VcbiAgICBbc2l6ZV09XCJpc01vYmlsZSA/ICdzbWFsbCcgOiAnbGFyZ2UnXCJcbiAgICBbY2xhc3MuaGVhZGVyLWJvcmRlcl09XCIhcmVtb3ZlSGVhZGVyQm9yZGVyXCJcbiAgICBbYXR0ci5pc01vYmlsZV09XCJpc01vYmlsZVwiXG4gICAgW2F0dHIuY29udGVudElzUGFnZV09XCJjb250ZW50SXNQYWdlXCJcbiAgICBtb2JpbGVcbiAgICBmb3JtQ2xvc2VcbiAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuPlxuICAgIDxmZC1keW5hbWljLXBhZ2UtaGVhZGVyXG4gICAgICAgIFtjbGFzcy5zaW1wbGUtdGl0bGVdPVwiIWRlc2NyaXB0aW9uXCJcbiAgICAgICAgW3RpdGxlXT1cIihoaWRlVGl0bGUgPT09IHRydWUgPyAnJyA6IHRpdGxlKSB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIFtzdWJ0aXRsZV09XCJzdWJ0aXRsZSB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIFtjbGFzcy5wLWIwXT1cInJlbW92ZUNvbnRlbnRQYWRkaW5nXCJcbiAgICAgICAgW2NsYXNzLmhpZGUtdGl0bGVdPVwiaGlkZVRpdGxlID09PSB0cnVlICYmIGhpZGVDbG9zZSA9PT0gdHJ1ZVwiXG4gICAgICAgICN0aXRsZVJlZlxuICAgID5cbiAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1icmVhZGNydW1iIFtjbGFzcy5oaWRlXT1cImlzTW9iaWxlXCI+XG4gICAgICAgICAgICA8ZmQtYnJlYWRjcnVtYj5cbiAgICAgICAgICAgICAgICBAaWYgKGJyZWFkQ3J1bWJzICYmICFpc01vYmlsZSkgeyBAZm9yIChicmVhZENydW1iIG9mIGJyZWFkQ3J1bWJzIHwgc2xpY2U6IDA6YnJlYWRDcnVtYnMubGVuZ3RoOyB0cmFja1xuICAgICAgICAgICAgICAgIGJyZWFkQ3J1bWIudXJsOyBsZXQgaSA9ICRpbmRleDsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgIDxmZC1icmVhZGNydW1iLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxic3UtYnJlYWRjcnVtYlxuICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XT1cImlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzTGFzdF09XCJsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFticmVhZENydW1iXT1cImJyZWFkQ3J1bWJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsbEJyZWFkQ3J1bWJdPVwiYnJlYWRDcnVtYnNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9ic3UtYnJlYWRjcnVtYj5cbiAgICAgICAgICAgICAgICA8L2ZkLWJyZWFkY3J1bWItaXRlbT5cbiAgICAgICAgICAgICAgICB9IH1cbiAgICAgICAgICAgIDwvZmQtYnJlYWRjcnVtYj5cbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtYnJlYWRjcnVtYj5cbiAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1nbG9iYWwtYWN0aW9ucz5cbiAgICAgICAgICAgIDwhLS0gZ2xvYmFsIGFjdGlvbnMgLS0+XG5cbiAgICAgICAgICAgIDxmZC10b29sYmFyIFtzaG91bGRPdmVyZmxvd109XCJ0cnVlXCIgU3R5bGU9XCJkaXNwbGF5Om5vbmVcIj4gPC9mZC10b29sYmFyPlxuICAgICAgICAgICAgPCEtLSBhZGRlZCB0aGlzIGJlY2F1c2UgaW4gbW9iaWxlIGxhbmRzY2FwZSB0b29sYmFyIGRpc2FwcGVyIC0tPlxuICAgICAgICAgICAgQGlmICh0b29sYmFyVmlzaWJsZSkge1xuICAgICAgICAgICAgPGJzdS1mb3JtLXRvb2xiYXJcbiAgICAgICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgICAgICAgICBbYnV0dG9uc109XCJ0b29sYmFySXRlbXNcIlxuICAgICAgICAgICAgICAgIFtkaXJWYWx1ZV09XCJkaXJWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW2lzRmlyZWZveF09XCJpc0ZpcmVmb3hcIlxuICAgICAgICAgICAgICAgICh0b29sYmFyQ2xpY2spPVwidG9vbGJhckNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgI2Zvcm1Ub29sYmFyXG4gICAgICAgICAgICA+PC9ic3UtZm9ybS10b29sYmFyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1nbG9iYWwtYWN0aW9ucz5cbiAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1sYXlvdXQtYWN0aW9ucz5cbiAgICAgICAgICAgIDwhLS0gbGF5b3V0IGFjdGlvbnMgLS0+XG4gICAgICAgICAgICA8IS0tIDxkaXYgW2Zvcm1BY3Rpb25zXT1cInRoaXMudG9vbGJhclwiPjwvZGl2PiAtLT5cbiAgICAgICAgICAgIEBpZiAoIWhpZGVDbG9zZSkge1xuICAgICAgICAgICAgPGZkLXRvb2xiYXIgZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBbY2xlYXJCb3JkZXJdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIEBpZiAoZGV2aWNlU2l6ZSAhPT0gJ3MnKSB7XG4gICAgICAgICAgICAgICAgPGZkLXRvb2xiYXItc2VwYXJhdG9yPjwvZmQtdG9vbGJhci1zZXBhcmF0b3I+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmdWxsc2NyZWVuRm9ybVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbG9zZUZvcm1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZmQtdG9vbGJhcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtbGF5b3V0LWFjdGlvbnM+XG4gICAgPC9mZC1keW5hbWljLXBhZ2UtaGVhZGVyPlxuICAgIEBpZiAoZGVzY3JpcHRpb24gfHwgZmFjZXRMaXN0Lmxlbmd0aCA+IDAgfHwgd29ya2Zsb3dJbmZvVGV4dCB8fCBhdmF0YXIpIHtcbiAgICA8ZmQtZHluYW1pYy1wYWdlLXN1YmhlYWRlclxuICAgICAgICBbY2xhc3MuaGVhZGVyLW5vLWRlc2NyaXB0aW9uXT1cIiEoZGVzY3JpcHRpb24gfHwgd29ya2Zsb3dJbmZvVGV4dClcIlxuICAgICAgICBbY2xhc3Mubm8tcGluXT1cImhpZGVQaW5cIlxuICAgICAgICBbY29sbGFwc2libGVdPVwiISF3b3JrZmxvd0luZm9UZXh0IHx8IChmYWNldExpc3QgJiYgZmFjZXRMaXN0Lmxlbmd0aCA+IDApXCJcbiAgICAgICAgW3Bpbm5hYmxlXT1cInRydWVcIlxuICAgICAgICBbY29sbGFwc2VkXT1cIighZmFjZXRMaXN0IHx8IGZhY2V0TGlzdC5sZW5ndGggPT09IDApICYmICF3b3JrZmxvd0luZm9UZXh0XCJcbiAgICA+XG4gICAgICAgIEBpZiAod29ya2Zsb3dJbmZvVGV4dCkge1xuICAgICAgICA8ZmQtbWVzc2FnZS1zdHJpcCBbdHlwZV09XCInd2FybmluZydcIiBbZGlzbWlzc2libGVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgIHt7IHdvcmtmbG93SW5mb1RleHQgfCBiYmJUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9mZC1tZXNzYWdlLXN0cmlwPlxuICAgICAgICB9XG4gICAgICAgIDxmZC1mYWNldC1ncm91cCBhcmlhTGFiZWw9XCJGYWNldCBHcm91cFwiPlxuICAgICAgICAgICAgQGlmIChhdmF0YXIpIHtcbiAgICAgICAgICAgIDxmZC1mYWNldCB0eXBlPVwiaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZmQtYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiYXZhdGFyXCJcbiAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cImF2YXRhclwiXG4gICAgICAgICAgICAgICAgICAgIFtpbWFnZV09XCIhYXZhdGFyPy5GaWxlSWQgPyBudWxsIDogKGF2YXRhcj8uRmlsZUlkIHwgcGljRmllbGRTcmM6ICdJRCc6bnVsbClcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJkZXZpY2VTaXplID09PSAneGwnID8gJ2wnIDogZGV2aWNlU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0cmFuc3BhcmVudF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NpcmNsZV09XCJjaXJjbGVBdmF0YXJcIlxuICAgICAgICAgICAgICAgID48L2ZkLWF2YXRhcj5cbiAgICAgICAgICAgICAgICA8IS0tIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYXZhdGFyIGZkLWF2YXRhci0tY2lyY2xlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInZmQtYXZhdGFyLS0nICsgKGRldmljZVNpemUgPT09ICd4bCcgPyAnbCcgOiBkZXZpY2VTaXplKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImF2YXRhclwiIGNsYXNzPVwiZmQtYXZhdGFyX19pY29uXCIgW2NsYXNzXT1cImF2YXRhciB8IHNhcEZvbnRDbGFzc1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj4gPC9pPlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDwvZmQtZmFjZXQ+XG4gICAgICAgICAgICB9IEBmb3IgKGZhY2V0IG9mIGZhY2V0TGlzdDsgdHJhY2sgZmFjZXQpIHtcbiAgICAgICAgICAgIDxmZC1mYWNldFxuICAgICAgICAgICAgICAgIFt0eXBlXT1cImZhY2V0LnR5cGVcIlxuICAgICAgICAgICAgICAgIFtmYWNldFRpdGxlXT1cImZhY2V0Lm1vLlRpdGxlIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiZmFjZXQubW8uU3ViVGl0bGUgfCBmYWNldFZhbHVlIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZhY2V0Lm1vLkl0ZW1MaXN0Py5Nb0RhdGFMaXN0OyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgPGZkLWZhY2V0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsIFtjb2xvbl09XCJ0cnVlXCIgZm9yPVwiZm9ybS12YWx1ZS0xMFwiPnt7IGl0ZW0uVGl0bGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtdGV4dCBbdGV4dF09XCJpdGVtLlZhbHVlIHwgZmFjZXRWYWx1ZVwiIGlkPVwiZm9ybS12YWx1ZS0xMFwiPjwvZmQtdGV4dD5cbiAgICAgICAgICAgICAgICA8L2ZkLWZhY2V0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgfSBAaWYgKCAhZmFjZXQubW8uSXNOdW1iZXIgJiYgZmFjZXQudHlwZSA9PT0gJ2tleS12YWx1ZScgJiYgIWZhY2V0Lm1vLkNvbXBvbmVudD8uU2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwiZmFjZXQubW8uU3RhdHVzIHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJmYWNldC5tby5Db21wb25lbnQ/LlNlbGVjdG9yID8gJycgOiAoZmFjZXQubW8uVGV4dCB8IGZhY2V0VmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhcmdlXT1cImZhY2V0Lm1vLklzTGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZmFjZXQubW8uVGV4dCB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJmYWNldC5tby5UZXh0IHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJmYWNldC5tby5JY29uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxibnJjLWR5bmFtaWMtY29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInZmQtb2JqZWN0LXN0YXR1cy0tJyArIGZhY2V0Lm1vLlN0YXR1cyB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtb2JqZWN0LXN0YXR1cy0tbGFyZ2VdPVwiZmFjZXQubW8uSXNMYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb21wb25lbnRdPVwiZmFjZXQubW8uQ29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZhY2V0Lm1vLlRleHRcIlxuICAgICAgICAgICAgICAgID48L2JucmMtZHluYW1pYy1jb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgfSBAaWYgKGZhY2V0Lm1vLklzTnVtYmVyICYmIGZhY2V0LnR5cGUgPT09ICdrZXktdmFsdWUnKSB7XG4gICAgICAgICAgICAgICAgPGZkLW9iamVjdC1udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgW251bWJlcl09XCJmYWNldC5tby5UZXh0IHwgZmFjZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYXJnZV09XCJmYWNldC5tby5Jc0xhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgW3VuaXRdPVwiZmFjZXQubW8uVW5pdCB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cImZhY2V0Lm1vLlN0YXR1cyB8IGZhY2V0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbZGVjaW1hbF09XCJmYWNldC5tby5EZWNpbWFsVmFsdWUgfCBmYWNldFZhbHVlXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1vYmplY3QtbnVtYmVyPlxuICAgICAgICAgICAgICAgIH0gQGlmIChmYWNldC50eXBlID09PSAncGxhaW4tdGV4dCcpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IFtzdHlsZS53aWR0aC5weF09XCJmYWNldC5tby5XaWR0aFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vcm1hbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtdGV4dCBbdGV4dF09XCJmYWNldC5tby5UZXh0IHwgZmFjZXRWYWx1ZVwiIGh5cGhlbmF0aW9uPVwiYXV0b1wiPjwvZmQtdGV4dD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9IEBpZiAoZmFjZXQudHlwZSA9PT0gJ3JhdGluZy1pbmRpY2F0b3InKSB7XG4gICAgICAgICAgICAgICAgPGZkLWZhY2V0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1yYXRpbmctaW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvaW50ZXItZXZlbnRzOiBub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZHluYW1pY1RleHRJbmRpY2F0b3JdPVwiZmFjZXQubW8uRm9vdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5TW9kZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmYWNldC5tbyB8IGZhY2V0VmFsdWU6IGZhY2V0LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1yYXRpbmctaW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgIDwvZmQtZmFjZXQtY29udGVudD5cbiAgICAgICAgICAgICAgICB9IEBpZiAoZmFjZXQudHlwZSA9PT0gJ3Byb2dyZXNzJykge1xuICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cIicxMHJlbSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBmZC1mb3JtLWxhYmVsPnt7IGZhY2V0Lm1vLlN1YnRpdGxlIHwgZmFjZXRWYWx1ZSB9fTwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1wcm9ncmVzcy1pbmRpY2F0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwciBlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiZmFjZXQubW8uU3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlVGV4dF09XCIoZmFjZXQubW8gfCBmYWNldFZhbHVlOiBmYWNldC50eXBlKSArICcg2KfYsiAxMCDZhdix2K3ZhNmHJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVOb3ddPVwiZmFjZXQubW8gfCBmYWNldFZhbHVlOiBmYWNldC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZU1heF09XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdW5pdF09XCIn2YXYsdit2YTZhydcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZC1wcm9ncmVzcy1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHVpNS1wcm9ncmVzcy1pbmRpY2F0b3JcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTByZW1cIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVTdGF0ZV09XCJmYWNldC5tby5TdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXROdW1iZXIoZmFjZXQubW8uVmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgID48L3VpNS1wcm9ncmVzcy1pbmRpY2F0b3I+IC0tPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH0gQGlmIChmYWNldC50eXBlID09PSAnbWljcm9jaGFydHMnKSB7XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIHdyYXA+aW4gcHJvZ3Jlc3MgLi4uPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2ZkLWZhY2V0PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2ZkLWZhY2V0LWdyb3VwPlxuICAgICAgICBAaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgIDxzcGFuPnt7IGRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgPC9mZC1keW5hbWljLXBhZ2Utc3ViaGVhZGVyPlxuICAgIH0gQGlmICghY29udGVudElzUGFnZSAmJiBtb2Rlcm5UYWJzICYmIG1vZGVyblRhYnMubGVuZ3RoID4gMCAmJiAhcGFyYW1ldGVycz8uTGF5b3V0Q29tcG9uZW50KSB7XG4gICAgPGZkLXRhYi1saXN0XG4gICAgICAgIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblRhYkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIFtjb2xsYXBzZU92ZXJmbG93XT1cInRydWVcIlxuICAgICAgICBbc3RhY2tDb250ZW50XT1cImZhbHNlXCJcbiAgICAgICAgbWF4Q29udGVudEhlaWdodD1cImF1dG9cIlxuICAgICAgICBbZXhwYW5kT3ZlcmZsb3dUZXh0XT1cIidNb3JlJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICN0YWJsaXN0XG4gICAgPlxuICAgICAgICBAZm9yICh0YWIgb2YgbW9kZXJuVGFiczsgdHJhY2sgdGFiLlRpdGxlOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICA8ZmQtdGFiIFt0aXRsZV09XCJ0YWIuVGl0bGUhISB8IGJiYlRyYW5zbGF0ZVwiIFtjbGFzcy5pcy1leHBhbmRlZF09XCJzZWxlY3RlZFRhYiA9PT0gdGFiLlRpdGxlXCI+XG4gICAgICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQgW2lkXT1cInRhYi5pZFwiIFtjbGFzcy5saW1pdC1jb250ZW50LXdpZHRoXT1cImZvcm1Db250ZW50TWF4V2lkdGggPiAwXCI+XG4gICAgICAgICAgICAgICAgPGZkLWxheW91dC1ncmlkIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiZm9ybUNvbnRlbnRNYXhXaWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkTGF5b3V0R3JpZFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xNZF09XCJsYXlvdXQxLmNvbE1kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwibGF5b3V0MS5jb2xMZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbFhsXT1cImxheW91dDEuY29sWGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbZmRMYXlvdXRHcmlkQ29sXT1cIjEyXCIgW2NvbE1kXT1cImNvbE1kXCIgW2NvbExnXT1cImNvbExnXCIgW2NvbFhsXT1cImNvbFhsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJzdS1seS10YWItcGFnZSBbY29uZmlnXT1cInRhYlwiIFt0YWJsaXN0XT1cInRhYmxpc3RcIj48L2JzdS1seS10YWItcGFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cImxheW91dDIuY29sTWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xMZ109XCJsYXlvdXQyLmNvbExnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sWGxdPVwibGF5b3V0Mi5jb2xYbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZmQtbGF5b3V0LWdyaWQ+XG4gICAgICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1jb250ZW50PlxuICAgICAgICA8L2ZkLXRhYj5cbiAgICAgICAgfVxuICAgIDwvZmQtdGFiLWxpc3Q+XG4gICAgfSBAZWxzZSB7IEBpZiAoIWNvbnRlbnRJc1BhZ2UpIHtcbiAgICA8ZmQtdGFiLWxpc3RcbiAgICAgICAgW2NvbGxhcHNlT3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICAgIFtzdGFja0NvbnRlbnRdPVwiZmFsc2VcIlxuICAgICAgICBtYXhDb250ZW50SGVpZ2h0PVwiYXV0b1wiXG4gICAgICAgICN0YWJsaXN0XG4gICAgICAgIGNsYXNzPVwiZXh0cmEtaGlkZS10YWJzXCJcbiAgICA+XG4gICAgICAgIDxmZC10YWIgdGl0bGU9XCJcIj5cbiAgICAgICAgICAgIDxmZC1keW5hbWljLXBhZ2UtY29udGVudCBbY2xhc3MubGltaXQtY29udGVudC13aWR0aF09XCJmb3JtQ29udGVudE1heFdpZHRoID4gMFwiPlxuICAgICAgICAgICAgICAgIDxmZC1sYXlvdXQtZ3JpZCBzdHlsZT1cIm1pbi1oZWlnaHQ6IDEwMCVcIiBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImZvcm1Db250ZW50TWF4V2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZExheW91dEdyaWRSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRMYXlvdXRHcmlkQ29sXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xNZF09XCJsYXlvdXQxLmNvbE1kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwibGF5b3V0MS5jb2xMZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbFhsXT1cImxheW91dDEuY29sWGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLWhlaWdodDogMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkTGF5b3V0R3JpZENvbF09XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cImNvbE1kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sTGddPVwiY29sTGdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xYbF09XCJjb2xYbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycz8uTGF5b3V0Q29tcG9uZW50ID8gcmVuZGVyTGF5b3V0Q29tcG9uZW50IDogcmVuZGVyRGVmYXVsdExheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHBhcmFtZXRlcnM/LkxheW91dENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQ5NDogbGF5b3V0OTRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZExheW91dEdyaWRDb2xdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbE1kXT1cImxheW91dDIuY29sTWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xMZ109XCJsYXlvdXQyLmNvbExnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sWGxdPVwibGF5b3V0Mi5jb2xYbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZmQtbGF5b3V0LWdyaWQ+XG4gICAgICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1jb250ZW50PlxuICAgICAgICA8L2ZkLXRhYj5cbiAgICA8L2ZkLXRhYi1saXN0PlxuICAgIH0gfSBAaWYoIWhpZGVGb290ZXIpe1xuICAgIDxmZC1keW5hbWljLXBhZ2UtZm9vdGVyPlxuICAgICAgICA8YnN1LWxheW91dC1hY3Rpb25zXG4gICAgICAgICAgICBbY2FuU2VuZF09XCJjYW5TZW5kXCJcbiAgICAgICAgICAgIFtidXR0b25zXT1cImxheW91dEFjdGlvbnNcIlxuICAgICAgICAgICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICAgICAgICAgIFtsYW5kc2NhcGVdPVwibGFuZHNjYXBlXCJcbiAgICAgICAgICAgIFtzdGFuZGFsb25lXT1cInN0YW5kYWxvbmVcIlxuICAgICAgICAgICAgW2Zvb3RlckRlc2lnbl09XCJmb290ZXJEZXNpZ25cIlxuICAgICAgICAgICAgW3dvcmtmbG93QnV0dG9uc109XCJ3b3JrZmxvd0J1dHRvbnNcIlxuICAgICAgICAgICAgW3dvcmtmbG93QnV0dG9uc0NvbWJvTW9kZV09XCJ3b3JrZmxvd0J1dHRvbnNDb21ib01vZGVcIlxuICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgICAgICAodG9vbENsaWNrKT1cInRvb2xiYXJDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgKHdvcmtmbG93Q2hvaWNlU2VsZWN0KT1cIm9uV2ZDaG9pY2VTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9ic3UtbGF5b3V0LWFjdGlvbnM+XG4gICAgPC9mZC1keW5hbWljLXBhZ2UtZm9vdGVyPlxuICAgIH1cbjwvZmQtZHluYW1pYy1wYWdlPlxuQGlmIChjb250ZW50SXNQYWdlKSB7XG48bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgcmVuZGVyTGF5b3V0Q29tcG9uZW50O1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHBhcmFtZXRlcnM/LkxheW91dENvbXBvbmVudCxcbiAgICAgICAgICAgIGxheW91dDk0OiBsYXlvdXQ5NFxuICAgICAgICB9XG4gICAgXCJcbj48L25nLWNvbnRhaW5lcj5cbn1cbjxuZy10ZW1wbGF0ZSAjcmVuZGVyRGVmYXVsdExheW91dCBsZXQtbGF5b3V0OTQ9XCJsYXlvdXQ5NFwiPlxuICAgIDxic3UtbHktbGF5b3V0LWNvbnRhaW5lci1vZi1yb290XG4gICAgICAgIFtjb25maWddPVwibGF5b3V0OTRcIlxuICAgICAgICBbaXNQYW5lbF09XCJmYWxzZVwiXG4gICAgICAgIFtpc1Jvb3RdPVwidHJ1ZVwiXG4gICAgPjwvYnN1LWx5LWxheW91dC1jb250YWluZXItb2Ytcm9vdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3JlbmRlckxheW91dENvbXBvbmVudCBsZXQtY29tcG9uZW50IGxldC1sYXlvdXQ5ND1cImxheW91dDk0XCI+XG4gICAgPGJucmMtZHluYW1pYy1mb3JtLWNvbXBvbmVudFxuICAgICAgICBbY29tcG9uZW50XT1cImNvbXBvbmVudFwiXG4gICAgICAgIFtyZW1vdmVDb250ZW50UGFkZGluZ109XCJyZW1vdmVDb250ZW50UGFkZGluZ1wiXG4gICAgICAgIFticmVhZENydW1ic109XCJicmVhZENydW1ic1wiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgICAgIFtzdWJ0aXRsZV09XCJzdWJ0aXRsZVwiXG4gICAgICAgIFt0b29sYmFySXRlbXNdPVwidG9vbGJhckl0ZW1zXCJcbiAgICAgICAgW2xheW91dEFjdGlvbnNdPVwibGF5b3V0QWN0aW9uc1wiXG4gICAgICAgIFtmb290ZXJEZXNpZ25dPVwiZm9vdGVyRGVzaWduXCJcbiAgICAgICAgW2ZhY2V0TGlzdF09XCJmYWNldExpc3RcIlxuICAgICAgICBbc2V0dGluZ3NdPVwiY29tcG9uZW50LlNldHRpbmdzXCJcbiAgICAgICAgW3dvcmtmbG93QnV0dG9uc109XCJ3b3JrZmxvd0J1dHRvbnNcIlxuICAgICAgICBbd29ya2Zsb3dQYW5lbFVpXT1cIndvcmtmbG93UGFuZWxVaVwiXG4gICAgICAgIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXG4gICAgICAgIFttb109XCJtb1wiXG4gICAgICAgIFtsYXlvdXQ5NF09XCJsYXlvdXQ5NFwiXG4gICAgICAgIFtjb250ZXh0XT1cImNvbnRleHRcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtmaWVsZERpY3RdPVwiZmllbGREaWN0XCJcbiAgICAgICAgW21hc2tdPVwibWFza1wiXG4gICAgICAgIFtkaXJWYWx1ZV09XCJkaXJWYWx1ZVwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICBbY29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxuICAgICAgICBbbW9kZXJuVGFic109XCJtb2Rlcm5UYWJzXCJcbiAgICAgICAgW2F2YXRhcl09XCJhdmF0YXJcIlxuICAgICAgICAoZXZlbnRzKT1cIm9uRHluYW1pY0NvbXBvbmVudEV2ZW50cygkZXZlbnQpXCJcbiAgICA+PC9ibnJjLWR5bmFtaWMtZm9ybS1jb21wb25lbnQ+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjbG9zZUZvcm0+XG4gICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwiY2xvc2UuZW1pdCgpXCIgdGl0bGU9XCJDbG9zZVwiPlxuICAgICAgICA8aSBbY2xhc3NdPVwiJ3NhcC1pY29uLS0nICsgKGlzTW9iaWxlID8gKHJ0bCA/ICdhcnJvdy1yaWdodCcgOiAnYXJyb3ctbGVmdCcpIDogJ2RlY2xpbmUnKVwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Z1bGxzY3JlZW5Gb3JtPlxuICAgIEBpZiAoY2FuRnVsbHNjcmVlbikge1xuICAgIDxidXR0b25cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmdWxsc2NyZWVuID8gJ2V4aXQgZnVsbHNjcmVlbicgOiAnZnVsbHNjcmVlbidcIlxuICAgICAgICAoY2xpY2spPVwiZnVsbHNjcmVlblJlcXVlc3QuZW1pdCgpXCJcbiAgICAgICAgW3RpdGxlXT1cImZ1bGxzY3JlZW4gPyAnZXhpdCBmdWxsc2NyZWVuJyA6ICdmdWxsc2NyZWVuJ1wiXG4gICAgICAgIFtnbHlwaF09XCJmdWxsc2NyZWVuID8gJ2V4aXRmdWxsc2NyZWVuJyA6ICdyZXNpemUnXCJcbiAgICA+PC9idXR0b24+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -19,9 +19,21 @@ export class GanttDhtmlChartViewComponent extends ReportViewBaseComponent {
19
19
  rowdblclick: this._onRowClick.bind(this)
20
20
  });
21
21
  this.ganttChartHelper.init(this.moDataList, elDom.id);
22
- head.load(['Lib/gantt-master/codebase/dhtmlxgantt_FixedForShamsi.js'],
23
- // head.load(['lib/gantt-master/codebase/sources/dhtmlxgantt_FixedForShamsi.js']
24
- () => this.ganttChartHelper.renderGantt());
22
+ const list = ['Report94/AspViewer/Dashboard/moment.js', 'Report94/AspViewer/Dashboard/jalaali.js'];
23
+ let ganttFile = 'Lib/gantt-master/codebase';
24
+ if (BarsaApi.LoginFormData.ReleaseVersion) {
25
+ ganttFile += '/dhtmlxgantt.min.js';
26
+ }
27
+ else {
28
+ ganttFile += '/sources/dhtmlxgantt.js';
29
+ }
30
+ const isPersian = BarsaApi.LoginFormData.Culture === 'fa-IR';
31
+ if (isPersian) {
32
+ ganttFile += '?gantt-shamsi';
33
+ list.push('Report94/Gantt/OverridesForShamsiDate.js');
34
+ }
35
+ list.push(ganttFile);
36
+ head.load(list, () => this.ganttChartHelper.renderGantt());
25
37
  }
26
38
  ngOnChanges(changes) {
27
39
  if (this.ganttChartHelper === null) {
@@ -200,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
200
212
  }], ganttChartHelper: [{
201
213
  type: Input
202
214
  }] } });
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtZGh0bWwtY2hhcnQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi9nYW50dC1kaHRtbC1jaGFydC12aWV3L2dhbnR0LWRodG1sLWNoYXJ0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZ2FudHQtZGh0bWwtY2hhcnQtdmlldy9nYW50dC1kaHRtbC1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUU1RyxPQUFPLEVBQ0gsUUFBUSxFQUNSLFdBQVcsRUFFWCx1QkFBdUIsRUFFMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7O0FBUXJDLE1BQU0sT0FBTyw0QkFDVCxTQUFRLHVCQUFnRDtJQVA1RDs7UUFjSSxjQUFTLEdBQUcsS0FBSyxDQUFDO0tBK0xyQjtJQTdMRyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUNyQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLGVBQWUsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBRXRFLElBQUksQ0FBQyxnQkFB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QUcsQ0FBQyxDQUFDO2dCQUNiLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RixzQ0FBc0M7Z0JBQ3RDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztZQUNELFlBQVksRUFBRSxJQUFJO1NBQ3JCLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBdE1RLDRCQUE0QjtrR0FBNUIsNEJBQTRCLDBNQ25CekMsRUFBQTs7MkZEbUJhLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDSSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU07OEJBTXRDLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgZ2V0VW5pcXVlSWQsXHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQsXHJcbiAgICBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZ1xyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5cclxuaW1wb3J0IGptb21lbnQgZnJvbSAnbW9tZW50LWphbGFhbGknO1xyXG5kZWNsYXJlIGNvbnN0IGhlYWQ6IGFueTtcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JzdS1nYW50dC1kaHRtbC1jaGFydC12aWV3JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9nYW50dC1kaHRtbC1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2dhbnR0LWRodG1sLWNoYXJ0LXZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHYW50dERodG1sQ2hhcnRWaWV3Q29tcG9uZW50XHJcbiAgICBleHRlbmRzIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50PFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nPlxyXG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc1xyXG57XHJcbiAgICBASW5wdXQoKSBtb2RlOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBnYW50dEZpZWxkczogYW55O1xyXG4gICAgQElucHV0KCkgZ2FudHRDaGFydEhlbHBlcjogYW55O1xyXG4gICAgZ2FudHRJZDogc3RyaW5nO1xyXG4gICAgX3Jvd2NoZWNrID0gZmFsc2U7XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlRGF0ZSgpO1xyXG4gICAgICAgIGNvbnN0IGVsRG9tID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBlbERvbS5pZCA9IHRoaXMuZ2FudHRJZCA9IGdldFVuaXF1ZUlkKDQpO1xyXG4gICAgICAgIGVsRG9tLnN0eWxlLmhlaWdodCA9ICdjYWxjKDEwMHZoIC0gJyArIChlbERvbS5vZmZzZXRUb3AgKyA0MCkgKyAncHgpJztcclxuXHJcbiAgICAgICAgdGhpcy5nYW50dENoYXJ0SGVscGVyLm9uKHtcclxuICAgICAgICAgICAgcm93c2VsZWN0OiB0aGlzLl9vblJvd0NoZWNrLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJvd2RibGNsaWNrOiB0aGlzLl9vblJvd0NsaWNrLmJpbmQodGhpcylcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmdhbnR0Q2hhcnRIZWxwZXIuaW5pdCh0aGlzLm1vRGF0YUxpc3QsIGVsRG9tLmlkKTtcclxuICAgICAgICBoZWFkLmxvYWQoXHJcbiAgICAgICAgICAgIFsnTGliL2dhbnR0LW1hc3Rlci9jb2RlYmFzZS9kaHRtbHhnYW50dF9GaXhlZEZvclNoYW1zaS5qcyddLFxyXG4gICAgICAgICAgICAvLyBoZWFkLmxvYWQoWydsaWIvZ2FudHQtbWFzdGVyL2NvZGViYXNlL3NvdXJjZXMvZGh0bWx4Z2FudHRfRml4ZWRGb3JTaGFtc2kuanMnXVxyXG4gICAgICAgICAgICAoKSA9PiB0aGlzLmdhbnR0Q2hhcnRIZWxwZXIucmVuZGVyR2FudHQoKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2FudHRDaGFydEhlbHBlciA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgbW9kZSwgbW9EYXRhTGlzdCB9ID0gY2hhbmdlcztcclxuICAgICAgICBpZiAobW9kZSAmJiAhbW9kZS5maXJzdENoYW5nZSkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG1vZGUuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5jaGFuZ2VUb0RheSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5jaGFuZ2VUb01vbnRoKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAneWVhcic6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nYW50dENoYXJ0SGVscGVyLmNoYW5nZVRvWWVhcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtb0RhdGFMaXN0ICYmICFtb0RhdGFMaXN0LmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9yb3djaGVjaykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcm93Y2hlY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TW9MaXN0ID0gbW9EYXRhTGlzdC5jdXJyZW50VmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5zZXREYXRhKG1vRGF0YUxpc3QuY3VycmVudFZhbHVlKTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBjdXJyZW50TW9MaXN0LmZpbmQoKGMpID0+IGMuJElzQ2hlY2tlZCk7XHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nYW50dENoYXJ0SGVscGVyLnNlbGVjdFJlY29yZHMoW3NlbGVjdGVkXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9nZXRTZWxlY3RlZCgpOiB7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBpbmRleDogbnVtYmVyIH0gfCBudWxsIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZElkID0gdGhpcy5nYW50dENoYXJ0SGVscGVyLmdldFNlbGVjdGVkSWQoKTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRJZCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaW5kZXhNbyA9IHRoaXMubW9EYXRhTGlzdC5maW5kSW5kZXgoKG1vKSA9PiBzZWxlY3RlZElkID09PSBtby5JZCk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbW86IHRoaXMubW9EYXRhTGlzdFtpbmRleE1vXSxcclxuICAgICAgICAgICAgaW5kZXg6IGluZGV4TW9cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfb25Sb3dDaGVjaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yb3djaGVjayA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZ2V0U2VsZWN0ZWQoKTtcclxuICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25Sb3dDaGVjayh7IG1vOiByZXN1bHQubW8sIGluZGV4OiByZXN1bHQuaW5kZXggfSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9vblJvd0NsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Jvd2NoZWNrID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9nZXRTZWxlY3RlZCgpO1xyXG4gICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vblJvd0NsaWNrKHsgbW86IHJlc3VsdC5tbywgaW5kZXg6IHJlc3VsdC5pbmRleCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlRGF0ZSgpOiB2b2lkIHtcclxuICAgICAgICBsZXQgdGhpc0lzTWlsYWRpID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdWx0dXJlICE9PSAnZmEtSVInO1xyXG4gICAgICAgIGNvbnN0IG1vbWVudF8gPSB0aGlzSXNNaWxhZGkgPyBtb21lbnQgOiBqbW9tZW50O1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ2dldEZ1bGxZZWFyX09sZCcsIHtcclxuICAgICAgICAgICAgdmFsdWU6IERhdGUucHJvdG90eXBlLmdldEZ1bGxZZWFyLFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdnZXRGdWxsWWVhcjInLCB7XHJcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpc0lzTWlsYWRpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RnVsbFllYXJfT2xkKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeWVhciA9IG1vbWVudF8odGhpcykualllYXIoKTtcclxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHllYXI7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdnZXRNb250aF9PbGQnLCB7XHJcbiAgICAgICAgICAgIHZhbHVlOiBEYXRlLnByb3RvdHlwZS5nZXRNb250aCxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnZ2V0TW9udGgyJywge1xyXG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXNJc01pbGFkaSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE1vbnRoX09sZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpc0lzTWlsYWRpID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1vbnRoID0gbW9tZW50Xyh0aGlzKS5qTW9udGgoKTtcclxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnZ2V0RGF0ZV9PbGQnLCB7XHJcbiAgICAgICAgICAgIHZhbHVlOiBEYXRlLnByb3RvdHlwZS5nZXREYXRlLFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdnZXREYXRlMicsIHtcclxuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzSXNNaWxhZGkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlX09sZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpc0lzTWlsYWRpID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRheSA9IG1vbWVudF8odGhpcykuakRhdGUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRheTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ3NldEZ1bGxZZWFyX09sZCcsIHtcclxuICAgICAgICAgICAgdmFsdWU6IERhdGUucHJvdG90eXBlLnNldEZ1bGxZZWFyLFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdzZXRGdWxsWWVhcjInLCB7XHJcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAoeWVhciwgbW9udGgsIGRheSkge1xyXG4gICAgICAgICAgICAgICAgbW9udGggPSBtb250aCA+IC0xID8gbW9udGggOiB0aGlzLmdldE1vbnRoKCk7XHJcbiAgICAgICAgICAgICAgICBkYXkgPSBkYXkgPiAtMSA/IGRheSA6IHRoaXMuZ2V0RGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgbW9udGggKz0gMTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGAke3llYXJ9LyR7bW9udGh9LyR7ZGF5fWA7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtID0gbW9tZW50Xyhmb3JtYXR0ZWQsICdqWVlZWS9qTU0vakREJyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbS50b0RhdGUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RnVsbFllYXJfT2xkKGRhdGUuZ2V0RnVsbFllYXJfT2xkKCksIGRhdGUuZ2V0TW9udGhfT2xkKCksIGRhdGUuZ2V0RGF0ZV9PbGQoKSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdzZXRNb250aF9PbGQnLCB7XHJcbiAgICAgICAgICAgIHZhbHVlOiBEYXRlLnByb3RvdHlwZS5zZXRNb250aCxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnc2V0TW9udGgyJywge1xyXG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24gKG1vbnRoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtID0gbW9tZW50Xyh0aGlzKTtcclxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBtLmpNb250aChtb250aCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbS50b0RhdGUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RnVsbFllYXJfT2xkKGRhdGUuZ2V0RnVsbFllYXJfT2xkKCksIGRhdGUuZ2V0TW9udGhfT2xkKCksIGRhdGUuZ2V0RGF0ZV9PbGQoKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ3NldERhdGVfT2xkJywge1xyXG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xyXG4gICAgICAgICAgICB2YWx1ZTogRGF0ZS5wcm90b3R5cGUuc2V0RGF0ZSxcclxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnc2V0RGF0ZTInLCB7XHJcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXHJcbiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAoZGF5KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtID0gbW9tZW50Xyh0aGlzKTtcclxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBtLmpEYXRlKGRheSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbS50b0RhdGUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RnVsbFllYXJfT2xkKGRhdGUuZ2V0RnVsbFllYXJfT2xkKCksIGRhdGUuZ2V0TW9udGhfT2xkKCksIGRhdGUuZ2V0RGF0ZV9PbGQoKSk7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNldERhdGVfT2xkKGRhdGUuZ2V0RGF0ZV9PbGQpO1xyXG4gICAgICAgICAgICAgICAgdGhpc0lzTWlsYWRpID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIiJdfQ==
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtZGh0bWwtY2hhcnQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi9nYW50dC1kaHRtbC1jaGFydC12aWV3L2dhbnR0LWRodG1sLWNoYXJ0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZ2FudHQtZGh0bWwtY2hhcnQtdmlldy9nYW50dC1kaHRtbC1jaGFydC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUU1RyxPQUFPLEVBQ0gsUUFBUSxFQUNSLFdBQVcsRUFFWCx1QkFBdUIsRUFFMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7O0FBUXJDLE1BQU0sT0FBTyw0QkFDVCxTQUFRLHVCQUFnRDtJQVA1RDs7UUFjSSxjQUFTLEdBQUcsS0FBSyxDQUFDO0tBd01yQjtJQXRNRyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUNyQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLGVBQWUsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBRXRFLElBQUksQ0FBQyxnQkFB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ZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBCYXJzYUFwaSxcbiAgICBnZXRVbmlxdWVJZCxcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50LFxuICAgIFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuaW1wb3J0IGptb21lbnQgZnJvbSAnbW9tZW50LWphbGFhbGknO1xuZGVjbGFyZSBjb25zdCBoZWFkOiBhbnk7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1nYW50dC1kaHRtbC1jaGFydC12aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2FudHQtZGh0bWwtY2hhcnQtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2FudHQtZGh0bWwtY2hhcnQtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEdhbnR0RGh0bWxDaGFydFZpZXdDb21wb25lbnRcbiAgICBleHRlbmRzIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50PFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgICBASW5wdXQoKSBtb2RlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZ2FudHRGaWVsZHM6IGFueTtcbiAgICBASW5wdXQoKSBnYW50dENoYXJ0SGVscGVyOiBhbnk7XG4gICAgZ2FudHRJZDogc3RyaW5nO1xuICAgIF9yb3djaGVjayA9IGZhbHNlO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuX3ByZXBhcmVEYXRlKCk7XG4gICAgICAgIGNvbnN0IGVsRG9tID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudDtcbiAgICAgICAgZWxEb20uaWQgPSB0aGlzLmdhbnR0SWQgPSBnZXRVbmlxdWVJZCg0KTtcbiAgICAgICAgZWxEb20uc3R5bGUuaGVpZ2h0ID0gJ2NhbGMoMTAwdmggLSAnICsgKGVsRG9tLm9mZnNldFRvcCArIDQwKSArICdweCknO1xuXG4gICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5vbih7XG4gICAgICAgICAgICByb3dzZWxlY3Q6IHRoaXMuX29uUm93Q2hlY2suYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHJvd2RibGNsaWNrOiB0aGlzLl9vblJvd0NsaWNrLmJpbmQodGhpcylcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5pbml0KHRoaXMubW9EYXRhTGlzdCwgZWxEb20uaWQpO1xuICAgICAgICBjb25zdCBsaXN0ID0gWydSZXBvcnQ5NC9Bc3BWaWV3ZXIvRGFzaGJvYXJkL21vbWVudC5qcycsICdSZXBvcnQ5NC9Bc3BWaWV3ZXIvRGFzaGJvYXJkL2phbGFhbGkuanMnXTtcbiAgICAgICAgbGV0IGdhbnR0RmlsZSA9ICdMaWIvZ2FudHQtbWFzdGVyL2NvZGViYXNlJztcbiAgICAgICAgaWYgKEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuUmVsZWFzZVZlcnNpb24pIHtcbiAgICAgICAgICAgIGdhbnR0RmlsZSArPSAnL2RodG1seGdhbnR0Lm1pbi5qcyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnYW50dEZpbGUgKz0gJy9zb3VyY2VzL2RodG1seGdhbnR0LmpzJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc1BlcnNpYW4gPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLkN1bHR1cmUgPT09ICdmYS1JUic7XG4gICAgICAgIGlmIChpc1BlcnNpYW4pIHtcbiAgICAgICAgICAgIGdhbnR0RmlsZSArPSAnP2dhbnR0LXNoYW1zaSc7XG4gICAgICAgICAgICBsaXN0LnB1c2goJ1JlcG9ydDk0L0dhbnR0L092ZXJyaWRlc0ZvclNoYW1zaURhdGUuanMnKTtcbiAgICAgICAgfVxuICAgICAgICBsaXN0LnB1c2goZ2FudHRGaWxlKTtcbiAgICAgICAgaGVhZC5sb2FkKGxpc3QsICgpID0+IHRoaXMuZ2FudHRDaGFydEhlbHBlci5yZW5kZXJHYW50dCgpKTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5nYW50dENoYXJ0SGVscGVyID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBtb2RlLCBtb0RhdGFMaXN0IH0gPSBjaGFuZ2VzO1xuICAgICAgICBpZiAobW9kZSAmJiAhbW9kZS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgc3dpdGNoIChtb2RlLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5jaGFuZ2VUb0RheSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5jaGFuZ2VUb01vbnRoKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2FudHRDaGFydEhlbHBlci5jaGFuZ2VUb1llYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vRGF0YUxpc3QgJiYgIW1vRGF0YUxpc3QuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9yb3djaGVjaykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Jvd2NoZWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY3VycmVudE1vTGlzdCA9IG1vRGF0YUxpc3QuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5nYW50dENoYXJ0SGVscGVyLnNldERhdGEobW9EYXRhTGlzdC5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBjdXJyZW50TW9MaXN0LmZpbmQoKGMpID0+IGMuJElzQ2hlY2tlZCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdhbnR0Q2hhcnRIZWxwZXIuc2VsZWN0UmVjb3Jkcyhbc2VsZWN0ZWRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9nZXRTZWxlY3RlZCgpOiB7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBpbmRleDogbnVtYmVyIH0gfCBudWxsIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZCA9IHRoaXMuZ2FudHRDaGFydEhlbHBlci5nZXRTZWxlY3RlZElkKCk7XG4gICAgICAgIGlmIChzZWxlY3RlZElkID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleE1vID0gdGhpcy5tb0RhdGFMaXN0LmZpbmRJbmRleCgobW8pID0+IHNlbGVjdGVkSWQgPT09IG1vLklkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1vOiB0aGlzLm1vRGF0YUxpc3RbaW5kZXhNb10sXG4gICAgICAgICAgICBpbmRleDogaW5kZXhNb1xuICAgICAgICB9O1xuICAgIH1cbiAgICBwcml2YXRlIF9vblJvd0NoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yb3djaGVjayA9IHRydWU7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2dldFNlbGVjdGVkKCk7XG4gICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblJvd0NoZWNrKHsgbW86IHJlc3VsdC5tbywgaW5kZXg6IHJlc3VsdC5pbmRleCB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfb25Sb3dDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcm93Y2hlY2sgPSB0cnVlO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9nZXRTZWxlY3RlZCgpO1xuICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25Sb3dDbGljayh7IG1vOiByZXN1bHQubW8sIGluZGV4OiByZXN1bHQuaW5kZXggfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZURhdGUoKTogdm9pZCB7XG4gICAgICAgIGxldCB0aGlzSXNNaWxhZGkgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLkN1bHR1cmUgIT09ICdmYS1JUic7XG4gICAgICAgIGNvbnN0IG1vbWVudF8gPSB0aGlzSXNNaWxhZGkgPyBtb21lbnQgOiBqbW9tZW50O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdnZXRGdWxsWWVhcl9PbGQnLCB7XG4gICAgICAgICAgICB2YWx1ZTogRGF0ZS5wcm90b3R5cGUuZ2V0RnVsbFllYXIsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ2dldEZ1bGxZZWFyMicsIHtcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzSXNNaWxhZGkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RnVsbFllYXJfT2xkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgeWVhciA9IG1vbWVudF8odGhpcykualllYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWVhcjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnZ2V0TW9udGhfT2xkJywge1xuICAgICAgICAgICAgdmFsdWU6IERhdGUucHJvdG90eXBlLmdldE1vbnRoLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdnZXRNb250aDInLCB7XG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpc0lzTWlsYWRpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE1vbnRoX09sZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbnRoID0gbW9tZW50Xyh0aGlzKS5qTW9udGgoKTtcbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGg7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ2dldERhdGVfT2xkJywge1xuICAgICAgICAgICAgdmFsdWU6IERhdGUucHJvdG90eXBlLmdldERhdGUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ2dldERhdGUyJywge1xuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNJc01pbGFkaSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlX09sZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRheSA9IG1vbWVudF8odGhpcykuakRhdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF5O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdzZXRGdWxsWWVhcl9PbGQnLCB7XG4gICAgICAgICAgICB2YWx1ZTogRGF0ZS5wcm90b3R5cGUuc2V0RnVsbFllYXIsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ3NldEZ1bGxZZWFyMicsIHtcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24gKHllYXIsIG1vbnRoLCBkYXkpIHtcbiAgICAgICAgICAgICAgICBtb250aCA9IG1vbnRoID4gLTEgPyBtb250aCA6IHRoaXMuZ2V0TW9udGgoKTtcbiAgICAgICAgICAgICAgICBkYXkgPSBkYXkgPiAtMSA/IGRheSA6IHRoaXMuZ2V0RGF0ZSgpO1xuICAgICAgICAgICAgICAgIG1vbnRoICs9IDE7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gYCR7eWVhcn0vJHttb250aH0vJHtkYXl9YDtcbiAgICAgICAgICAgICAgICBjb25zdCBtID0gbW9tZW50Xyhmb3JtYXR0ZWQsICdqWVlZWS9qTU0vakREJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG0udG9EYXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGdWxsWWVhcl9PbGQoZGF0ZS5nZXRGdWxsWWVhcl9PbGQoKSwgZGF0ZS5nZXRNb250aF9PbGQoKSwgZGF0ZS5nZXREYXRlX09sZCgpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGUucHJvdG90eXBlLCAnc2V0TW9udGhfT2xkJywge1xuICAgICAgICAgICAgdmFsdWU6IERhdGUucHJvdG90eXBlLnNldE1vbnRoLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdzZXRNb250aDInLCB7XG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIChtb250aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBtb21lbnRfKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IHRydWU7XG4gICAgICAgICAgICAgICAgbS5qTW9udGgobW9udGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBtLnRvRGF0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RnVsbFllYXJfT2xkKGRhdGUuZ2V0RnVsbFllYXJfT2xkKCksIGRhdGUuZ2V0TW9udGhfT2xkKCksIGRhdGUuZ2V0RGF0ZV9PbGQoKSk7XG4gICAgICAgICAgICAgICAgdGhpc0lzTWlsYWRpID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRlLnByb3RvdHlwZSwgJ3NldERhdGVfT2xkJywge1xuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAgICAgICAgIHZhbHVlOiBEYXRlLnByb3RvdHlwZS5zZXREYXRlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICdzZXREYXRlMicsIHtcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgICAgICAgICB2YWx1ZTogZnVuY3Rpb24gKGRheSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBtb21lbnRfKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXNJc01pbGFkaSA9IHRydWU7XG4gICAgICAgICAgICAgICAgbS5qRGF0ZShkYXkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBtLnRvRGF0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RnVsbFllYXJfT2xkKGRhdGUuZ2V0RnVsbFllYXJfT2xkKCksIGRhdGUuZ2V0TW9udGhfT2xkKCksIGRhdGUuZ2V0RGF0ZV9PbGQoKSk7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zZXREYXRlX09sZChkYXRlLmdldERhdGVfT2xkKTtcbiAgICAgICAgICAgICAgICB0aGlzSXNNaWxhZGkgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiIl19