barsa-sap-ui 2.0.125 → 2.0.127
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.
- package/esm2022/lib/barsa-tree-item/barsa-tree-item.component.mjs +23 -17
- package/esm2022/lib/column-renderer/column-renderer.component.mjs +3 -3
- package/esm2022/lib/file-viewer-content/file-viewer-content.component.mjs +11 -6
- package/esm2022/lib/layout-actions/layout-actions.component.mjs +2 -2
- package/esm2022/lib/layout-control/layout-control.component.mjs +2 -1
- package/esm2022/lib/ui-form-panel/ui-form-panel.component.mjs +7 -2
- package/esm2022/lib/ui-table-view/ui-table-view.component.mjs +5 -4
- package/esm2022/lib/ui-tree/ui-tree.component.mjs +12 -12
- package/esm2022/lib/ui-tree-view/ui-tree-view.component.mjs +3 -8
- package/esm2022/lib/ulv-toolbar/ulv-toolbar.component.mjs +3 -3
- package/fesm2022/barsa-sap-ui.mjs +171 -160
- package/fesm2022/barsa-sap-ui.mjs.map +1 -1
- package/lib/barsa-tree-item/barsa-tree-item.component.d.ts +4 -3
- package/lib/file-viewer-content/file-viewer-content.component.d.ts +10 -0
- package/lib/ui-form-panel/ui-form-panel.component.d.ts +1 -0
- package/lib/ui-tree-view/ui-tree-view.component.d.ts +0 -2
- package/package.json +1 -1
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, Renderer2, inject } from '@angular/core';
|
|
2
2
|
import { BaseViewItemPropsComponent, BarsaApi } from 'barsa-novin-ray-core';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/forms";
|
|
5
|
-
import * as i2 from "
|
|
6
|
-
import * as i3 from "@
|
|
7
|
-
import * as i4 from "@fundamental-ngx/core/
|
|
8
|
-
import * as i5 from "@fundamental-ngx/core/
|
|
9
|
-
import * as i6 from "@fundamental-ngx/core/
|
|
10
|
-
import * as i7 from "@fundamental-ngx/core/
|
|
11
|
-
import * as i8 from "@fundamental-ngx/core/
|
|
12
|
-
import * as i9 from "
|
|
13
|
-
import * as i10 from "../
|
|
14
|
-
import * as i11 from "../
|
|
15
|
-
import * as i12 from "../
|
|
5
|
+
import * as i2 from "barsa-novin-ray-core";
|
|
6
|
+
import * as i3 from "@angular/cdk/drag-drop";
|
|
7
|
+
import * as i4 from "@fundamental-ngx/core/content-density";
|
|
8
|
+
import * as i5 from "@fundamental-ngx/core/busy-indicator";
|
|
9
|
+
import * as i6 from "@fundamental-ngx/core/button";
|
|
10
|
+
import * as i7 from "@fundamental-ngx/core/checkbox";
|
|
11
|
+
import * as i8 from "@fundamental-ngx/core/icon";
|
|
12
|
+
import * as i9 from "@fundamental-ngx/core/list";
|
|
13
|
+
import * as i10 from "../ulv-context-menu/ulv-context-menu.component";
|
|
14
|
+
import * as i11 from "../htree-create-new/htree-create-new.component";
|
|
15
|
+
import * as i12 from "../barsa-row-inline-actionlist/barsa-row-inline-actionlist.component";
|
|
16
|
+
import * as i13 from "../apply-conditional-formmatings.directive";
|
|
16
17
|
export class BarsaTreeItemComponent extends BaseViewItemPropsComponent {
|
|
17
18
|
constructor() {
|
|
18
19
|
super(...arguments);
|
|
@@ -33,6 +34,7 @@ export class BarsaTreeItemComponent extends BaseViewItemPropsComponent {
|
|
|
33
34
|
Action: 'console.log("delete btn clicked")'
|
|
34
35
|
}
|
|
35
36
|
];
|
|
37
|
+
this._renderer2 = inject(Renderer2);
|
|
36
38
|
}
|
|
37
39
|
ngOnInit() {
|
|
38
40
|
super.ngOnInit();
|
|
@@ -42,6 +44,12 @@ export class BarsaTreeItemComponent extends BaseViewItemPropsComponent {
|
|
|
42
44
|
// this.hideIcon = true;
|
|
43
45
|
// }
|
|
44
46
|
}
|
|
47
|
+
onVisibilityChange(divEl, spanEl, e) {
|
|
48
|
+
if (e === 'Visible') {
|
|
49
|
+
const maxWidthText = divEl.getBoundingClientRect().width;
|
|
50
|
+
this._renderer2.setStyle(spanEl, 'max-width', maxWidthText + 'px');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
45
53
|
onListItemClick(liEl, e) {
|
|
46
54
|
if (e.target === liEl?.elementRef?.nativeElement) {
|
|
47
55
|
this.onRowCheck();
|
|
@@ -88,11 +96,11 @@ export class BarsaTreeItemComponent extends BaseViewItemPropsComponent {
|
|
|
88
96
|
this.dragMoved.emit($event);
|
|
89
97
|
}
|
|
90
98
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaTreeItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
91
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: { node: "node", selectedNode: "selectedNode", relationList: "relationList", hideOpenIcon: "hideOpenIcon", hasArrowIcon: "hasArrowIcon", collapseIcon: "collapseIcon", loading: "loading", hasChildren: "hasChildren", leafCursorPointer: "leafCursorPointer", isExpand: "isExpand", children: "children", parentNode: "parentNode", text: "text", icon: "icon", color: "color", maxWidthText: "maxWidthText", isHetro: "isHetro", enableNodeReordering: "enableNodeReordering", hideIcon: "hideIcon" }, outputs: { createNew: "createNew", select: "select", checkChange: "checkChange", viewClick: "viewClick", loadChildren: "loadChildren", dragMoved: "dragMoved" }, usesInheritance: true, ngImport: i0, template: "<li\n fd-list-item\n #liEl\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"liEl\"\n [focusable]=\"true\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 1\"\n [interactive]=\"true\"\n [selected]=\"isChecked\"\n (dblclick)=\"onNodeViewClick()\"\n cdkDrag\n [cdkDragDisabled]=\"!enableNodeReordering\"\n [cdkDragData]=\"node.Data.Id\"\n [class.isdirty]=\"isdirty\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\n>\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\n @if (enableNodeReordering && !isHetro) {\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\n } @if (inDialog && isMultiSelect) {\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\n }\n\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\n <div style=\"display: flex; flex: 1; gap: 3px\">\n @if (hasArrowIcon) { @if (hasChildren) {\n <div class=\"arrow-container\">\n <button\n [attr.rtl]=\"rtl\"\n fd-button\n fdType=\"transparent\"\n class=\"arrow-children\"\n [fdCompact]\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-down' : collapseIcon) : ''\"\n (click)=\"onLoadChildren($event)\"\n (dblclick)=\"onExpandDblClick($event)\"\n ></button>\n </div>\n } @else { @if (!parentNode?.hasOneDepthLevel) {\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\n <button fd-button></button>\n </div>\n } } @if (loading) {\n <fd-busy-indicator\n style=\"display: flex; align-items: center; width: 2rem\"\n size=\"s\"\n [loading]=\"true\"\n ></fd-busy-indicator>\n } @if(!hideIcon || appComponentIcon){ @if(icon || appComponentIcon){\n <i\n [style.color]=\"appComponentIconColor || color\"\n class=\"icon-item\"\n fd-list-icon\n [glyph]=\"appComponentIcon || icon\"\n ></i>\n }@else {\n <i fd-list-icon class=\"icon-item\" style=\"display: flex; align-items: center; justify-content: center\">\n <img [src]=\"node.icon\" width=\"16px\" />\n </i>\n } } }\n <div style=\"display: flex; flex: unset; align-items: center\" fd-list-title [focusable]=\"true\">\n <span\n class=\"ellapsis\"\n [style.color]=\"color\"\n [class.haschildren]=\"hasChildren\"\n [style.max-width.px]=\"maxWidthText\"\n >{{ text }}</span\n >\n @if (children) {\n <span>{{ ' ( ' + children.length + ' )' }}</span>\n }\n </div>\n </div>\n @if (contextMenuItems && contextMenuItems.length > 0) {\n <i\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"node.Data\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n ></i>\n } @if (access?.Add !== false && !inDialog) {\n <bsu-htree-create-new\n [node]=\"node\"\n [relationList]=\"relationList\"\n (createNew)=\"onCreateNew($event)\"\n ></bsu-htree-create-new>\n }\n </div>\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\n } @if (actionList?.length && !inlineEditMode) {\n <bsu-barsa-row-inline-actionlist\n [actionList]=\"actionList\"\n (btnClick)=\"actionListClick.emit($event)\"\n ></bsu-barsa-row-inline-actionlist>\n }\n\n <bsu-barsa-tree-item\n *cdkDragPreview\n [node]=\"node\"\n [rtl]=\"rtl\"\n [selectedNode]=\"selectedNode\"\n [hasArrowIcon]=\"false\"\n ></bsu-barsa-tree-item>\n</li>\n", styles: [":host{display:block}li.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-children{border:none!important;background:transparent!important;color:var(--sapButton_Lite_TextColor)!important}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i2.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i3.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i4.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i7.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i8.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i8.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i8.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "component", type: i9.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "appendTo"], outputs: ["commandClick"] }, { kind: "component", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: ["node", "selectedNode", "relationList", "hideOpenIcon", "hasArrowIcon", "collapseIcon", "loading", "hasChildren", "leafCursorPointer", "isExpand", "children", "parentNode", "text", "icon", "color", "maxWidthText", "isHetro", "enableNodeReordering", "hideIcon"], outputs: ["createNew", "select", "checkChange", "viewClick", "loadChildren", "dragMoved"] }, { kind: "component", type: i10.HtreeCreateNewComponent, selector: "bsu-htree-create-new", inputs: ["relationList", "node"], outputs: ["createNew"] }, { kind: "component", type: i11.BarsaRowInlineActionlistComponent, selector: "bsu-barsa-row-inline-actionlist", inputs: ["actionList", "mo", "index"], outputs: ["btnClick"] }, { kind: "directive", type: i12.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: { node: "node", selectedNode: "selectedNode", relationList: "relationList", hideOpenIcon: "hideOpenIcon", hasArrowIcon: "hasArrowIcon", collapseIcon: "collapseIcon", loading: "loading", hasChildren: "hasChildren", leafCursorPointer: "leafCursorPointer", isExpand: "isExpand", children: "children", parentNode: "parentNode", text: "text", icon: "icon", color: "color", isHetro: "isHetro", enableNodeReordering: "enableNodeReordering", hideIcon: "hideIcon" }, outputs: { createNew: "createNew", select: "select", checkChange: "checkChange", viewClick: "viewClick", loadChildren: "loadChildren", dragMoved: "dragMoved" }, usesInheritance: true, ngImport: i0, template: "<li\n fd-list-item\n #liEl\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"liEl\"\n [focusable]=\"true\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 1\"\n [interactive]=\"true\"\n [selected]=\"isChecked\"\n (dblclick)=\"onNodeViewClick()\"\n cdkDrag\n [cdkDragDisabled]=\"!enableNodeReordering\"\n [cdkDragData]=\"node.Data.Id\"\n [class.isdirty]=\"isdirty\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\n>\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\n @if (enableNodeReordering && !isHetro) {\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\n } @if (inDialog && isMultiSelect) {\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\n }\n\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\n <div style=\"display: flex; flex: 1; gap: 3px\">\n @if (hasArrowIcon) { @if (hasChildren) {\n <div class=\"arrow-container\">\n <button\n [attr.rtl]=\"rtl\"\n fd-button\n fdType=\"transparent\"\n class=\"arrow-children\"\n [fdCompact]\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-down' : collapseIcon) : ''\"\n (click)=\"onLoadChildren($event)\"\n (dblclick)=\"onExpandDblClick($event)\"\n ></button>\n </div>\n } @else { @if (!parentNode?.hasOneDepthLevel) {\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\n <button fd-button></button>\n </div>\n } } @if (loading) {\n <fd-busy-indicator\n style=\"display: flex; align-items: center; width: 2rem\"\n size=\"s\"\n [loading]=\"true\"\n ></fd-busy-indicator>\n } @if(!hideIcon || appComponentIcon){ @if(icon || appComponentIcon){\n <i\n [style.color]=\"appComponentIconColor || color\"\n class=\"icon-item\"\n fd-list-icon\n [glyph]=\"appComponentIcon || icon\"\n ></i>\n }@else {\n <i fd-list-icon class=\"icon-item\" style=\"display: flex; align-items: center; justify-content: center\">\n <img [src]=\"node.icon\" width=\"16px\" />\n </i>\n } } }\n <div\n style=\"display: flex; flex: unset; align-items: center\"\n fd-list-title\n [focusable]=\"true\"\n #divEl\n intersectionObserver\n [intersectionThreshold]=\"0.1\"\n (visibilityChange)=\"onVisibilityChange(divEl, spanEl, $event)\"\n >\n <span class=\"ellapsis\" #spanEl [style.color]=\"color\" [class.haschildren]=\"hasChildren\">{{ text }}</span>\n @if (children) {\n <span>{{ ' ( ' + children.length + ' )' }}</span>\n }\n </div>\n </div>\n @if (contextMenuItems && contextMenuItems.length > 0) {\n <i\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"node.Data\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n ></i>\n } @if (access?.Add !== false && !inDialog) {\n <bsu-htree-create-new\n [node]=\"node\"\n [relationList]=\"relationList\"\n (createNew)=\"onCreateNew($event)\"\n ></bsu-htree-create-new>\n }\n </div>\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\n } @if (actionList?.length && !inlineEditMode) {\n <bsu-barsa-row-inline-actionlist\n [actionList]=\"actionList\"\n (btnClick)=\"actionListClick.emit($event)\"\n ></bsu-barsa-row-inline-actionlist>\n }\n\n <bsu-barsa-tree-item\n *cdkDragPreview\n [node]=\"node\"\n [rtl]=\"rtl\"\n [selectedNode]=\"selectedNode\"\n [hasArrowIcon]=\"false\"\n ></bsu-barsa-tree-item>\n</li>\n", styles: [":host{display:block}li.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-children{border:none!important;background:transparent!important;color:var(--sapButton_Lite_TextColor)!important}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.IntersectionObserverDirective, selector: "[intersectionObserver]", inputs: ["intersectionDebounce", "intersectionRootMargin", "intersectionRoot", "intersectionThreshold"], outputs: ["visibilityChange"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i3.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: i4.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i5.BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i8.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i9.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i9.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i9.ListIconDirective, selector: "[fdListIcon], [fd-list-icon]", inputs: ["glyph", "glyphFont", "class", "role", "ariaHidden"] }, { kind: "component", type: i10.UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "appendTo"], outputs: ["commandClick"] }, { kind: "component", type: BarsaTreeItemComponent, selector: "bsu-barsa-tree-item", inputs: ["node", "selectedNode", "relationList", "hideOpenIcon", "hasArrowIcon", "collapseIcon", "loading", "hasChildren", "leafCursorPointer", "isExpand", "children", "parentNode", "text", "icon", "color", "isHetro", "enableNodeReordering", "hideIcon"], outputs: ["createNew", "select", "checkChange", "viewClick", "loadChildren", "dragMoved"] }, { kind: "component", type: i11.HtreeCreateNewComponent, selector: "bsu-htree-create-new", inputs: ["relationList", "node"], outputs: ["createNew"] }, { kind: "component", type: i12.BarsaRowInlineActionlistComponent, selector: "bsu-barsa-row-inline-actionlist", inputs: ["actionList", "mo", "index"], outputs: ["btnClick"] }, { kind: "directive", type: i13.ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
92
100
|
}
|
|
93
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaTreeItemComponent, decorators: [{
|
|
94
102
|
type: Component,
|
|
95
|
-
args: [{ selector: 'bsu-barsa-tree-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<li\n fd-list-item\n #liEl\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"liEl\"\n [focusable]=\"true\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 1\"\n [interactive]=\"true\"\n [selected]=\"isChecked\"\n (dblclick)=\"onNodeViewClick()\"\n cdkDrag\n [cdkDragDisabled]=\"!enableNodeReordering\"\n [cdkDragData]=\"node.Data.Id\"\n [class.isdirty]=\"isdirty\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\n>\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\n @if (enableNodeReordering && !isHetro) {\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\n } @if (inDialog && isMultiSelect) {\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\n }\n\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\n <div style=\"display: flex; flex: 1; gap: 3px\">\n @if (hasArrowIcon) { @if (hasChildren) {\n <div class=\"arrow-container\">\n <button\n [attr.rtl]=\"rtl\"\n fd-button\n fdType=\"transparent\"\n class=\"arrow-children\"\n [fdCompact]\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-down' : collapseIcon) : ''\"\n (click)=\"onLoadChildren($event)\"\n (dblclick)=\"onExpandDblClick($event)\"\n ></button>\n </div>\n } @else { @if (!parentNode?.hasOneDepthLevel) {\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\n <button fd-button></button>\n </div>\n } } @if (loading) {\n <fd-busy-indicator\n style=\"display: flex; align-items: center; width: 2rem\"\n size=\"s\"\n [loading]=\"true\"\n ></fd-busy-indicator>\n } @if(!hideIcon || appComponentIcon){ @if(icon || appComponentIcon){\n <i\n [style.color]=\"appComponentIconColor || color\"\n class=\"icon-item\"\n fd-list-icon\n [glyph]=\"appComponentIcon || icon\"\n ></i>\n }@else {\n <i fd-list-icon class=\"icon-item\" style=\"display: flex; align-items: center; justify-content: center\">\n <img [src]=\"node.icon\" width=\"16px\" />\n </i>\n } } }\n <div
|
|
103
|
+
args: [{ selector: 'bsu-barsa-tree-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<li\n fd-list-item\n #liEl\n [class.!tw-cursor-pointer]=\"leafCursorPointer\"\n [applyConditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [hostEl]=\"liEl\"\n [focusable]=\"true\"\n [attr.level]=\"level\"\n [class.root-group]=\"level === 1\"\n [interactive]=\"true\"\n [selected]=\"isChecked\"\n (dblclick)=\"onNodeViewClick()\"\n cdkDrag\n [cdkDragDisabled]=\"!enableNodeReordering\"\n [cdkDragData]=\"node.Data.Id\"\n [class.isdirty]=\"isdirty\"\n (cdkDragMoved)=\"onDragMoved($event)\"\n (click)=\"openOnClick ? onNodeViewClick() : onListItemClick(liEl, $event)\"\n>\n <div (click)=\"onRowCheck()\" class=\"spacer\" [style.width]=\"(level - 1) * 4 + 'rem'\"></div>\n @if (enableNodeReordering && !isHetro) {\n <fd-icon glyph=\"grip\" font=\"BusinessSuiteInAppSymbols\" cdkDragHandle></fd-icon>\n } @if (inDialog && isMultiSelect) {\n <fd-checkbox [name]=\"node.Data.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onCheckbox($event)\"></fd-checkbox>\n }\n\n <div (click)=\"onRowCheck()\" style=\"display: flex; width: 100%; justify-content: space-between\">\n <div style=\"display: flex; flex: 1; gap: 3px\">\n @if (hasArrowIcon) { @if (hasChildren) {\n <div class=\"arrow-container\">\n <button\n [attr.rtl]=\"rtl\"\n fd-button\n fdType=\"transparent\"\n class=\"arrow-children\"\n [fdCompact]\n [glyph]=\"hasChildren ? (isExpand ? 'slim-arrow-down' : collapseIcon) : ''\"\n (click)=\"onLoadChildren($event)\"\n (dblclick)=\"onExpandDblClick($event)\"\n ></button>\n </div>\n } @else { @if (!parentNode?.hasOneDepthLevel) {\n <div class=\"empty-container\" (click)=\"onRowCheck()\">\n <button fd-button></button>\n </div>\n } } @if (loading) {\n <fd-busy-indicator\n style=\"display: flex; align-items: center; width: 2rem\"\n size=\"s\"\n [loading]=\"true\"\n ></fd-busy-indicator>\n } @if(!hideIcon || appComponentIcon){ @if(icon || appComponentIcon){\n <i\n [style.color]=\"appComponentIconColor || color\"\n class=\"icon-item\"\n fd-list-icon\n [glyph]=\"appComponentIcon || icon\"\n ></i>\n }@else {\n <i fd-list-icon class=\"icon-item\" style=\"display: flex; align-items: center; justify-content: center\">\n <img [src]=\"node.icon\" width=\"16px\" />\n </i>\n } } }\n <div\n style=\"display: flex; flex: unset; align-items: center\"\n fd-list-title\n [focusable]=\"true\"\n #divEl\n intersectionObserver\n [intersectionThreshold]=\"0.1\"\n (visibilityChange)=\"onVisibilityChange(divEl, spanEl, $event)\"\n >\n <span class=\"ellapsis\" #spanEl [style.color]=\"color\" [class.haschildren]=\"hasChildren\">{{ text }}</span>\n @if (children) {\n <span>{{ ' ( ' + children.length + ' )' }}</span>\n }\n </div>\n </div>\n @if (contextMenuItems && contextMenuItems.length > 0) {\n <i\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [menuItems]=\"contextMenuItems\"\n [conditionalFormats]=\"conditionalFormats\"\n [styleIndex]=\"styleIndex\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"node.Data\"\n [index]=\"index\"\n (commandClick)=\"onUlvCommand()\"\n [deviceName]=\"deviceName\"\n ></i>\n } @if (access?.Add !== false && !inDialog) {\n <bsu-htree-create-new\n [node]=\"node\"\n [relationList]=\"relationList\"\n (createNew)=\"onCreateNew($event)\"\n ></bsu-htree-create-new>\n }\n </div>\n @if (access?.View && !showOkCancelButtons && deviceName !== 'desktop' && !hideOpenIcon) {\n <button fd-button [glyph]=\"navigationArrow\" fdType=\"transparent\" (click)=\"onNodeViewClick()\"></button>\n } @if (actionList?.length && !inlineEditMode) {\n <bsu-barsa-row-inline-actionlist\n [actionList]=\"actionList\"\n (btnClick)=\"actionListClick.emit($event)\"\n ></bsu-barsa-row-inline-actionlist>\n }\n\n <bsu-barsa-tree-item\n *cdkDragPreview\n [node]=\"node\"\n [rtl]=\"rtl\"\n [selectedNode]=\"selectedNode\"\n [hasArrowIcon]=\"false\"\n ></bsu-barsa-tree-item>\n</li>\n", styles: [":host{display:block}li.isdirty{background:url(/Lib/ui/resources/images/default/grid/dirty.gif);background-repeat:no-repeat}li .cdk-drag-handle{opacity:.5;cursor:move}li .spacer{height:100%}li .arrow-children{border:none!important;background:transparent!important;color:var(--sapButton_Lite_TextColor)!important}li .arrow-container,li .empty-container{display:flex;width:28px;align-items:center;justify-content:center}li .arrow-container fd-icon,li .empty-container fd-icon{cursor:pointer;width:100%;height:100%;text-align:center}li .empty-container{visibility:hidden!important}.cdk-drag{cursor:default}.tree-icon-children{cursor:pointer}.icon-item{width:1rem}\n"] }]
|
|
96
104
|
}], propDecorators: { node: [{
|
|
97
105
|
type: Input
|
|
98
106
|
}], selectedNode: [{
|
|
@@ -123,8 +131,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
123
131
|
type: Input
|
|
124
132
|
}], color: [{
|
|
125
133
|
type: Input
|
|
126
|
-
}], maxWidthText: [{
|
|
127
|
-
type: Input
|
|
128
134
|
}], isHetro: [{
|
|
129
135
|
type: Input
|
|
130
136
|
}], enableNodeReordering: [{
|
|
@@ -144,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
144
150
|
}], dragMoved: [{
|
|
145
151
|
type: Output
|
|
146
152
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRyZWUtaXRlbS9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdHJlZS1pdGVtL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hHLE9BQU8sRUFJSCwwQkFBMEIsRUFDMUIsUUFBUSxFQUNYLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUTlCLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSwwQkFBMEI7SUFOdEU7O1FBV2EsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFnQjdCLG9CQUFvQjtRQUNWLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUNqRCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBRy9CLENBQUM7UUFDSyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUlwQyxDQUFDO1FBQ0ssY0FBUyxHQUFHLElBQUksWUFBWSxFQUdsQyxDQUFDO1FBQ0ssaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN2RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVqRCxxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO1FBQ3ZDLDBCQUFxQixHQUFrQixJQUFJLENBQUM7UUFDNUMsWUFBTyxHQUFHO1lBQ04sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxnQ0FBZ0MsRUFBRTtZQUN6RDtnQkFDSSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsbUNBQW1DO2FBQzlDO1NBQ0osQ0FBQztLQStETDtJQTdERyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLG1DQUFtQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQ3pELElBQUksRUFDSix3Q0FBd0MsRUFDeEMsSUFBSSxDQUNQLENBQUM7UUFDRiw0Q0FBNEM7UUFDNUMsNEJBQTRCO1FBQzVCLElBQUk7SUFDUixDQUFDO0lBQ0QsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztJQUNELFVBQVUsQ0FBQyxPQUFnQjtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUNELFVBQVU7UUFDTixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RDLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFlBQVk7UUFDUixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGNBQWMsQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsV0FBVyxDQUFDLENBQUM7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELFdBQVcsQ0FBQyxXQUFtQjtRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFDRCxXQUFXLENBQUMsTUFBTTtRQUNkLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDOzhHQTdHUSxzQkFBc0I7a0dBQXRCLHNCQUFzQixtdUJDakJuQyx5cUpBbUhBLDh5SERsR2Esc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNJLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFHSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFJRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFNBQVM7c0JBQWxCLE1BQU07Z0JBSUcsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFRyZWVOb2RlT2JqLFxuICAgIFJlbGF0aW9uSXRlbVR5cGUsXG4gICAgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQsXG4gICAgQmFyc2FBcGlcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1iYXJzYS10cmVlLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhcnNhVHJlZUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlVmlld0l0ZW1Qcm9wc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgbm9kZTogVHJlZU5vZGVPYmo7XG4gICAgQElucHV0KCkgc2VsZWN0ZWROb2RlOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbDtcbiAgICBASW5wdXQoKSByZWxhdGlvbkxpc3Q6IFJlbGF0aW9uSXRlbVR5cGVbXTtcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGFzQXJyb3dJY29uID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBjb2xsYXBzZUljb246IHN0cmluZztcbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc0NoaWxkcmVuOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGxlYWZDdXJzb3JQb2ludGVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzRXhwYW5kOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNoaWxkcmVuOiBUcmVlTm9kZU9ialtdO1xuICAgIEBJbnB1dCgpIHBhcmVudE5vZGU6IFRyZWVOb2RlT2JqO1xuICAgIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBpY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgY29sb3I6IHN0cmluZztcbiAgICBASW5wdXQoKSBtYXhXaWR0aFRleHQ6IG51bWJlcjtcbiAgICBASW5wdXQoKSBpc0hldHJvOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGVuYWJsZU5vZGVSZW9yZGVyaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhpZGVJY29uOiBib29sZWFuO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBAT3V0cHV0KCkgY3JlYXRlTmV3ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkl0ZW1UeXBlPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgbm9kZTogVHJlZU5vZGVPYmo7XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfT4oKTtcbiAgICBAT3V0cHV0KCkgY2hlY2tDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgbm9kZTogVHJlZU5vZGVPYmo7XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgICAgIGNoZWNrZWQ6IGJvb2xlYW47XG4gICAgfT4oKTtcbiAgICBAT3V0cHV0KCkgdmlld0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG5vZGU6IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfT4oKTtcbiAgICBAT3V0cHV0KCkgbG9hZENoaWxkcmVuID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBkcmFnTW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBpY29uJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIGFwcENvbXBvbmVudEljb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIGFwcENvbXBvbmVudEljb25Db2xvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcm93QnRucyA9IFtcbiAgICAgICAgeyBJY29uOiAnYWRkJywgQWN0aW9uOiAnY29uc29sZS5sb2coXCJhZGQgYnRuIGNsaWNrZWRcIiknIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIEljb246ICdkZWxldGUnLFxuICAgICAgICAgICAgQWN0aW9uOiAnY29uc29sZS5sb2coXCJkZWxldGUgYnRuIGNsaWNrZWRcIiknXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuYXBwQ29tcG9uZW50SWNvbiA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMsICdub2RlLkRhdGEuQ29tcG9uZW50LlNldHRpbmdzLkljb24nLCBudWxsKTtcbiAgICAgICAgdGhpcy5hcHBDb21wb25lbnRJY29uQ29sb3IgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAnbm9kZS5EYXRhLkNvbXBvbmVudC5TZXR0aW5ncy5JY29uQ29sb3InLFxuICAgICAgICAgICAgbnVsbFxuICAgICAgICApO1xuICAgICAgICAvLyBpZiAoIXRoaXMubm9kZS5pY29uLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICAvLyAgICAgdGhpcy5oaWRlSWNvbiA9IHRydWU7XG4gICAgICAgIC8vIH1cbiAgICB9XG4gICAgb25MaXN0SXRlbUNsaWNrKGxpRWwsIGUpIHtcbiAgICAgICAgaWYgKGUudGFyZ2V0ID09PSBsaUVsPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkNoZWNrYm94KGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0NoYW5nZS5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLCBpbmRleDogdGhpcy5pbmRleCwgY2hlY2tlZCB9KTtcbiAgICB9XG4gICAgb25Sb3dDaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5EaWFsb2cgJiYgdGhpcy5pc011bHRpU2VsZWN0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3QuZW1pdCh7IG5vZGU6IHRoaXMubm9kZSwgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgfVxuXG4gICAgb25VbHZDb21tYW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVsdkNvbW1hbmQuZW1pdCh7IG1vOiB0aGlzLm5vZGUuRGF0YSwgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgfVxuXG4gICAgb25Ob2RlVmlld0NsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdDbGljay5lbWl0KHsgbm9kZTogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cblxuICAgIG9uTG9hZENoaWxkcmVuKGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2FkQ2hpbGRyZW4uZW1pdCh0aGlzLm5vZGUuRGF0YSk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkV4cGFuZERibENsaWNrKGUpOiB2b2lkIHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBvbkNyZWF0ZU5ldyhlKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25Sb3dDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3JlYXRlTmV3LmVtaXQoZSk7XG4gICAgfVxuICAgIG9uUm93QWN0aW9uKGNvbW1hbmRCb2R5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBGdW5jdGlvbihjb21tYW5kQm9keSk7XG4gICAgICAgIGNvbW1hbmQoKTtcbiAgICB9XG4gICAgb25EcmFnTW92ZWQoJGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzSGV0cm8pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRyYWdNb3ZlZC5lbWl0KCRldmVudCk7XG4gICAgfVxufVxuIiwiPGxpXG4gICAgZmQtbGlzdC1pdGVtXG4gICAgI2xpRWxcbiAgICBbY2xhc3MuIXR3LWN1cnNvci1wb2ludGVyXT1cImxlYWZDdXJzb3JQb2ludGVyXCJcbiAgICBbYXBwbHlDb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICBbc3R5bGVJbmRleF09XCJzdHlsZUluZGV4XCJcbiAgICBbaG9zdEVsXT1cImxpRWxcIlxuICAgIFtmb2N1c2FibGVdPVwidHJ1ZVwiXG4gICAgW2F0dHIubGV2ZWxdPVwibGV2ZWxcIlxuICAgIFtjbGFzcy5yb290LWdyb3VwXT1cImxldmVsID09PSAxXCJcbiAgICBbaW50ZXJhY3RpdmVdPVwidHJ1ZVwiXG4gICAgW3NlbGVjdGVkXT1cImlzQ2hlY2tlZFwiXG4gICAgKGRibGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCJcbiAgICBjZGtEcmFnXG4gICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhZW5hYmxlTm9kZVJlb3JkZXJpbmdcIlxuICAgIFtjZGtEcmFnRGF0YV09XCJub2RlLkRhdGEuSWRcIlxuICAgIFtjbGFzcy5pc2RpcnR5XT1cImlzZGlydHlcIlxuICAgIChjZGtEcmFnTW92ZWQpPVwib25EcmFnTW92ZWQoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cIm9wZW5PbkNsaWNrID8gb25Ob2RlVmlld0NsaWNrKCkgOiBvbkxpc3RJdGVtQ2xpY2sobGlFbCwgJGV2ZW50KVwiXG4+XG4gICAgPGRpdiAoY2xpY2spPVwib25Sb3dDaGVjaygpXCIgY2xhc3M9XCJzcGFjZXJcIiBbc3R5bGUud2lkdGhdPVwiKGxldmVsIC0gMSkgKiA0ICsgJ3JlbSdcIj48L2Rpdj5cbiAgICBAaWYgKGVuYWJsZU5vZGVSZW9yZGVyaW5nICYmICFpc0hldHJvKSB7XG4gICAgPGZkLWljb24gZ2x5cGg9XCJncmlwXCIgZm9udD1cIkJ1c2luZXNzU3VpdGVJbkFwcFN5bWJvbHNcIiBjZGtEcmFnSGFuZGxlPjwvZmQtaWNvbj5cbiAgICB9IEBpZiAoaW5EaWFsb2cgJiYgaXNNdWx0aVNlbGVjdCkge1xuICAgIDxmZC1jaGVja2JveCBbbmFtZV09XCJub2RlLkRhdGEuJENhcHRpb25cIiBbbmdNb2RlbF09XCJpc0NoZWNrZWRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrYm94KCRldmVudClcIj48L2ZkLWNoZWNrYm94PlxuICAgIH1cblxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgd2lkdGg6IDEwMCU7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlblwiPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleDogMTsgZ2FwOiAzcHhcIj5cbiAgICAgICAgICAgIEBpZiAoaGFzQXJyb3dJY29uKSB7IEBpZiAoaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnJ0bF09XCJydGxcIlxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFycm93LWNoaWxkcmVuXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZkQ29tcGFjdF1cbiAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cImhhc0NoaWxkcmVuID8gKGlzRXhwYW5kID8gJ3NsaW0tYXJyb3ctZG93bicgOiBjb2xsYXBzZUljb24pIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Mb2FkQ2hpbGRyZW4oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvbkV4cGFuZERibENsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7IEBpZiAoIXBhcmVudE5vZGU/Lmhhc09uZURlcHRoTGV2ZWwpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1jb250YWluZXJcIiAoY2xpY2spPVwib25Sb3dDaGVjaygpXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gfSBAaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgICAgIDxmZC1idXN5LWluZGljYXRvclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgd2lkdGg6IDJyZW1cIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJ0cnVlXCJcbiAgICAgICAgICAgID48L2ZkLWJ1c3ktaW5kaWNhdG9yPlxuICAgICAgICAgICAgfSBAaWYoIWhpZGVJY29uIHx8IGFwcENvbXBvbmVudEljb24peyBAaWYoaWNvbiB8fCBhcHBDb21wb25lbnRJY29uKXtcbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImFwcENvbXBvbmVudEljb25Db2xvciB8fCBjb2xvclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLWl0ZW1cIlxuICAgICAgICAgICAgICAgIGZkLWxpc3QtaWNvblxuICAgICAgICAgICAgICAgIFtnbHlwaF09XCJhcHBDb21wb25lbnRJY29uIHx8IGljb25cIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIH1AZWxzZSB7XG4gICAgICAgICAgICA8aSBmZC1saXN0LWljb24gY2xhc3M9XCJpY29uLWl0ZW1cIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIm5vZGUuaWNvblwiIHdpZHRoPVwiMTZweFwiIC8+XG4gICAgICAgICAgICA8L2k+XG4gICAgICAgICAgICB9IH0gfVxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXg6IHVuc2V0OyBhbGlnbi1pdGVtczogY2VudGVyXCIgZmQtbGlzdC10aXRsZSBbZm9jdXNhYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVsbGFwc2lzXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhc2NoaWxkcmVuXT1cImhhc0NoaWxkcmVuXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJtYXhXaWR0aFRleHRcIlxuICAgICAgICAgICAgICAgICAgICA+e3sgdGV4dCB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgJyAoICcgKyBjaGlsZHJlbi5sZW5ndGggKyAnICknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChjb250ZXh0TWVudUl0ZW1zICYmIGNvbnRleHRNZW51SXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICA8aVxuICAgICAgICAgICAgdWx2Q29udGV4dE1lbnVcbiAgICAgICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxuICAgICAgICAgICAgW21lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICAgICAgICAgIFtzdHlsZUluZGV4XT1cInN0eWxlSW5kZXhcIlxuICAgICAgICAgICAgW2Rpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcbiAgICAgICAgICAgIFttb109XCJub2RlLkRhdGFcIlxuICAgICAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgIChjb21tYW5kQ2xpY2spPVwib25VbHZDb21tYW5kKClcIlxuICAgICAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgID48L2k+XG4gICAgICAgIH0gQGlmIChhY2Nlc3M/LkFkZCAhPT0gZmFsc2UgJiYgIWluRGlhbG9nKSB7XG4gICAgICAgIDxic3UtaHRyZWUtY3JlYXRlLW5ld1xuICAgICAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICBbcmVsYXRpb25MaXN0XT1cInJlbGF0aW9uTGlzdFwiXG4gICAgICAgICAgICAoY3JlYXRlTmV3KT1cIm9uQ3JlYXRlTmV3KCRldmVudClcIlxuICAgICAgICA+PC9ic3UtaHRyZWUtY3JlYXRlLW5ldz5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoYWNjZXNzPy5WaWV3ICYmICFzaG93T2tDYW5jZWxCdXR0b25zICYmIGRldmljZU5hbWUgIT09ICdkZXNrdG9wJyAmJiAhaGlkZU9wZW5JY29uKSB7XG4gICAgPGJ1dHRvbiBmZC1idXR0b24gW2dseXBoXT1cIm5hdmlnYXRpb25BcnJvd1wiIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgKGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCI+PC9idXR0b24+XG4gICAgfSBAaWYgKGFjdGlvbkxpc3Q/Lmxlbmd0aCAmJiAhaW5saW5lRWRpdE1vZGUpIHtcbiAgICA8YnN1LWJhcnNhLXJvdy1pbmxpbmUtYWN0aW9ubGlzdFxuICAgICAgICBbYWN0aW9uTGlzdF09XCJhY3Rpb25MaXN0XCJcbiAgICAgICAgKGJ0bkNsaWNrKT1cImFjdGlvbkxpc3RDbGljay5lbWl0KCRldmVudClcIlxuICAgID48L2JzdS1iYXJzYS1yb3ctaW5saW5lLWFjdGlvbmxpc3Q+XG4gICAgfVxuXG4gICAgPGJzdS1iYXJzYS10cmVlLWl0ZW1cbiAgICAgICAgKmNka0RyYWdQcmV2aWV3XG4gICAgICAgIFtub2RlXT1cIm5vZGVcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtzZWxlY3RlZE5vZGVdPVwic2VsZWN0ZWROb2RlXCJcbiAgICAgICAgW2hhc0Fycm93SWNvbl09XCJmYWxzZVwiXG4gICAgPjwvYnN1LWJhcnNhLXRyZWUtaXRlbT5cbjwvbGk+XG4iXX0=
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2JhcnNhLXRyZWUtaXRlbS9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdHJlZS1pdGVtL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFJSCwwQkFBMEIsRUFDMUIsUUFBUSxFQUNYLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVE5QixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsMEJBQTBCO0lBTnRFOztRQVdhLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBZTdCLG9CQUFvQjtRQUNWLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUNqRCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBRy9CLENBQUM7UUFDSyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUlwQyxDQUFDO1FBQ0ssY0FBUyxHQUFHLElBQUksWUFBWSxFQUdsQyxDQUFDO1FBQ0ssaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUN2RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVqRCxxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO1FBQ3ZDLDBCQUFxQixHQUFrQixJQUFJLENBQUM7UUFDNUMsWUFBTyxHQUFHO1lBQ04sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxnQ0FBZ0MsRUFBRTtZQUN6RDtnQkFDSSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsbUNBQW1DO2FBQzlDO1NBQ0osQ0FBQztRQUNGLGVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7S0FvRWxDO0lBbkVHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FDekQsSUFBSSxFQUNKLHdDQUF3QyxFQUN4QyxJQUFJLENBQ1AsQ0FBQztRQUNGLDRDQUE0QztRQUM1Qyw0QkFBNEI7UUFDNUIsSUFBSTtJQUNSLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxLQUFrQixFQUFFLE1BQW1CLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNMLENBQUM7SUFDRCxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDTCxDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsY0FBYyxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLENBQUM7UUFDZCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxXQUFXLENBQUMsQ0FBQztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsV0FBVyxDQUFDLFdBQW1CO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUFNO1FBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OEdBbEhRLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHFzQkMxQm5DLGl4SkFxSEEsMGhJRDNGYSxzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0kscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFHSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFJRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFNBQVM7c0JBQWxCLE1BQU07Z0JBSUcsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFRyZWVOb2RlT2JqLFxuICAgIFJlbGF0aW9uSXRlbVR5cGUsXG4gICAgQmFzZVZpZXdJdGVtUHJvcHNDb21wb25lbnQsXG4gICAgQmFyc2FBcGlcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1iYXJzYS10cmVlLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10cmVlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLXRyZWUtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhcnNhVHJlZUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlVmlld0l0ZW1Qcm9wc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgbm9kZTogVHJlZU5vZGVPYmo7XG4gICAgQElucHV0KCkgc2VsZWN0ZWROb2RlOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbDtcbiAgICBASW5wdXQoKSByZWxhdGlvbkxpc3Q6IFJlbGF0aW9uSXRlbVR5cGVbXTtcbiAgICBASW5wdXQoKSBoaWRlT3Blbkljb246IGJvb2xlYW47XG4gICAgQElucHV0KCkgaGFzQXJyb3dJY29uID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBjb2xsYXBzZUljb246IHN0cmluZztcbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhhc0NoaWxkcmVuOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGxlYWZDdXJzb3JQb2ludGVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzRXhwYW5kOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNoaWxkcmVuOiBUcmVlTm9kZU9ialtdO1xuICAgIEBJbnB1dCgpIHBhcmVudE5vZGU6IFRyZWVOb2RlT2JqO1xuICAgIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBpY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgY29sb3I6IHN0cmluZztcbiAgICBASW5wdXQoKSBpc0hldHJvOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGVuYWJsZU5vZGVSZW9yZGVyaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhpZGVJY29uOiBib29sZWFuO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICBAT3V0cHV0KCkgY3JlYXRlTmV3ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWxhdGlvbkl0ZW1UeXBlPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgbm9kZTogVHJlZU5vZGVPYmo7XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfT4oKTtcbiAgICBAT3V0cHV0KCkgY2hlY2tDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgbm9kZTogVHJlZU5vZGVPYmo7XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgICAgIGNoZWNrZWQ6IGJvb2xlYW47XG4gICAgfT4oKTtcbiAgICBAT3V0cHV0KCkgdmlld0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG5vZGU6IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfT4oKTtcbiAgICBAT3V0cHV0KCkgbG9hZENoaWxkcmVuID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBkcmFnTW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBpY29uJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIGFwcENvbXBvbmVudEljb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIGFwcENvbXBvbmVudEljb25Db2xvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcm93QnRucyA9IFtcbiAgICAgICAgeyBJY29uOiAnYWRkJywgQWN0aW9uOiAnY29uc29sZS5sb2coXCJhZGQgYnRuIGNsaWNrZWRcIiknIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIEljb246ICdkZWxldGUnLFxuICAgICAgICAgICAgQWN0aW9uOiAnY29uc29sZS5sb2coXCJkZWxldGUgYnRuIGNsaWNrZWRcIiknXG4gICAgICAgIH1cbiAgICBdO1xuICAgIF9yZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5hcHBDb21wb25lbnRJY29uID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUodGhpcywgJ25vZGUuRGF0YS5Db21wb25lbnQuU2V0dGluZ3MuSWNvbicsIG51bGwpO1xuICAgICAgICB0aGlzLmFwcENvbXBvbmVudEljb25Db2xvciA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICdub2RlLkRhdGEuQ29tcG9uZW50LlNldHRpbmdzLkljb25Db2xvcicsXG4gICAgICAgICAgICBudWxsXG4gICAgICAgICk7XG4gICAgICAgIC8vIGlmICghdGhpcy5ub2RlLmljb24uc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmhpZGVJY29uID0gdHJ1ZTtcbiAgICAgICAgLy8gfVxuICAgIH1cbiAgICBvblZpc2liaWxpdHlDaGFuZ2UoZGl2RWw6IEhUTUxFbGVtZW50LCBzcGFuRWw6IEhUTUxFbGVtZW50LCBlKTogdm9pZCB7XG4gICAgICAgIGlmIChlID09PSAnVmlzaWJsZScpIHtcbiAgICAgICAgICAgIGNvbnN0IG1heFdpZHRoVGV4dCA9IGRpdkVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHNwYW5FbCwgJ21heC13aWR0aCcsIG1heFdpZHRoVGV4dCArICdweCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uTGlzdEl0ZW1DbGljayhsaUVsLCBlKSB7XG4gICAgICAgIGlmIChlLnRhcmdldCA9PT0gbGlFbD8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5vblJvd0NoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25DaGVja2JveChjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tDaGFuZ2UuZW1pdCh7IG5vZGU6IHRoaXMubm9kZSwgaW5kZXg6IHRoaXMuaW5kZXgsIGNoZWNrZWQgfSk7XG4gICAgfVxuICAgIG9uUm93Q2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmluRGlhbG9nICYmIHRoaXMuaXNNdWx0aVNlbGVjdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0LmVtaXQoeyBub2RlOiB0aGlzLm5vZGUsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cblxuICAgIG9uVWx2Q29tbWFuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bHZDb21tYW5kLmVtaXQoeyBtbzogdGhpcy5ub2RlLkRhdGEsIGluZGV4OiB0aGlzLmluZGV4IH0pO1xuICAgIH1cblxuICAgIG9uTm9kZVZpZXdDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3Q2xpY2suZW1pdCh7IG5vZGU6IHRoaXMubm9kZS5EYXRhLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICB9XG5cbiAgICBvbkxvYWRDaGlsZHJlbihlKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZENoaWxkcmVuLmVtaXQodGhpcy5ub2RlLkRhdGEpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FeHBhbmREYmxDbGljayhlKTogdm9pZCB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgb25DcmVhdGVOZXcoZSkge1xuICAgICAgICBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uUm93Q2hlY2soKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNyZWF0ZU5ldy5lbWl0KGUpO1xuICAgIH1cbiAgICBvblJvd0FjdGlvbihjb21tYW5kQm9keTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgRnVuY3Rpb24oY29tbWFuZEJvZHkpO1xuICAgICAgICBjb21tYW5kKCk7XG4gICAgfVxuICAgIG9uRHJhZ01vdmVkKCRldmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0hldHJvKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kcmFnTW92ZWQuZW1pdCgkZXZlbnQpO1xuICAgIH1cbn1cbiIsIjxsaVxuICAgIGZkLWxpc3QtaXRlbVxuICAgICNsaUVsXG4gICAgW2NsYXNzLiF0dy1jdXJzb3ItcG9pbnRlcl09XCJsZWFmQ3Vyc29yUG9pbnRlclwiXG4gICAgW2FwcGx5Q29uZGl0aW9uYWxGb3JtYXRzXT1cImNvbmRpdGlvbmFsRm9ybWF0c1wiXG4gICAgW3N0eWxlSW5kZXhdPVwic3R5bGVJbmRleFwiXG4gICAgW2hvc3RFbF09XCJsaUVsXCJcbiAgICBbZm9jdXNhYmxlXT1cInRydWVcIlxuICAgIFthdHRyLmxldmVsXT1cImxldmVsXCJcbiAgICBbY2xhc3Mucm9vdC1ncm91cF09XCJsZXZlbCA9PT0gMVwiXG4gICAgW2ludGVyYWN0aXZlXT1cInRydWVcIlxuICAgIFtzZWxlY3RlZF09XCJpc0NoZWNrZWRcIlxuICAgIChkYmxjbGljayk9XCJvbk5vZGVWaWV3Q2xpY2soKVwiXG4gICAgY2RrRHJhZ1xuICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiIWVuYWJsZU5vZGVSZW9yZGVyaW5nXCJcbiAgICBbY2RrRHJhZ0RhdGFdPVwibm9kZS5EYXRhLklkXCJcbiAgICBbY2xhc3MuaXNkaXJ0eV09XCJpc2RpcnR5XCJcbiAgICAoY2RrRHJhZ01vdmVkKT1cIm9uRHJhZ01vdmVkKCRldmVudClcIlxuICAgIChjbGljayk9XCJvcGVuT25DbGljayA/IG9uTm9kZVZpZXdDbGljaygpIDogb25MaXN0SXRlbUNsaWNrKGxpRWwsICRldmVudClcIlxuPlxuICAgIDxkaXYgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiIGNsYXNzPVwic3BhY2VyXCIgW3N0eWxlLndpZHRoXT1cIihsZXZlbCAtIDEpICogNCArICdyZW0nXCI+PC9kaXY+XG4gICAgQGlmIChlbmFibGVOb2RlUmVvcmRlcmluZyAmJiAhaXNIZXRybykge1xuICAgIDxmZC1pY29uIGdseXBoPVwiZ3JpcFwiIGZvbnQ9XCJCdXNpbmVzc1N1aXRlSW5BcHBTeW1ib2xzXCIgY2RrRHJhZ0hhbmRsZT48L2ZkLWljb24+XG4gICAgfSBAaWYgKGluRGlhbG9nICYmIGlzTXVsdGlTZWxlY3QpIHtcbiAgICA8ZmQtY2hlY2tib3ggW25hbWVdPVwibm9kZS5EYXRhLiRDYXB0aW9uXCIgW25nTW9kZWxdPVwiaXNDaGVja2VkXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja2JveCgkZXZlbnQpXCI+PC9mZC1jaGVja2JveD5cbiAgICB9XG5cbiAgICA8ZGl2IChjbGljayk9XCJvblJvd0NoZWNrKClcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IHdpZHRoOiAxMDAlOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW5cIj5cbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXg6IDE7IGdhcDogM3B4XCI+XG4gICAgICAgICAgICBAaWYgKGhhc0Fycm93SWNvbikgeyBAaWYgKGhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5ydGxdPVwicnRsXCJcbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcnJvdy1jaGlsZHJlblwiXG4gICAgICAgICAgICAgICAgICAgIFtmZENvbXBhY3RdXG4gICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJoYXNDaGlsZHJlbiA/IChpc0V4cGFuZCA/ICdzbGltLWFycm93LWRvd24nIDogY29sbGFwc2VJY29uKSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTG9hZENoaWxkcmVuKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwib25FeHBhbmREYmxDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2UgeyBAaWYgKCFwYXJlbnROb2RlPy5oYXNPbmVEZXB0aExldmVsKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktY29udGFpbmVyXCIgKGNsaWNrKT1cIm9uUm93Q2hlY2soKVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IH0gQGlmIChsb2FkaW5nKSB7XG4gICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3JcbiAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHdpZHRoOiAycmVtXCJcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICA+PC9mZC1idXN5LWluZGljYXRvcj5cbiAgICAgICAgICAgIH0gQGlmKCFoaWRlSWNvbiB8fCBhcHBDb21wb25lbnRJY29uKXsgQGlmKGljb24gfHwgYXBwQ29tcG9uZW50SWNvbil7XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJhcHBDb21wb25lbnRJY29uQ29sb3IgfHwgY29sb3JcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICBmZC1saXN0LWljb25cbiAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiYXBwQ29tcG9uZW50SWNvbiB8fCBpY29uXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICB9QGVsc2Uge1xuICAgICAgICAgICAgPGkgZmQtbGlzdC1pY29uIGNsYXNzPVwiaWNvbi1pdGVtXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJub2RlLmljb25cIiB3aWR0aD1cIjE2cHhcIiAvPlxuICAgICAgICAgICAgPC9pPlxuICAgICAgICAgICAgfSB9IH1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXg6IHVuc2V0OyBhbGlnbi1pdGVtczogY2VudGVyXCJcbiAgICAgICAgICAgICAgICBmZC1saXN0LXRpdGxlXG4gICAgICAgICAgICAgICAgW2ZvY3VzYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAjZGl2RWxcbiAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25PYnNlcnZlclxuICAgICAgICAgICAgICAgIFtpbnRlcnNlY3Rpb25UaHJlc2hvbGRdPVwiMC4xXCJcbiAgICAgICAgICAgICAgICAodmlzaWJpbGl0eUNoYW5nZSk9XCJvblZpc2liaWxpdHlDaGFuZ2UoZGl2RWwsIHNwYW5FbCwgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxhcHNpc1wiICNzcGFuRWwgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCIgW2NsYXNzLmhhc2NoaWxkcmVuXT1cImhhc0NoaWxkcmVuXCI+e3sgdGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICBAaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgJyAoICcgKyBjaGlsZHJlbi5sZW5ndGggKyAnICknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChjb250ZXh0TWVudUl0ZW1zICYmIGNvbnRleHRNZW51SXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICA8aVxuICAgICAgICAgICAgdWx2Q29udGV4dE1lbnVcbiAgICAgICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxuICAgICAgICAgICAgW21lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICAgICAgICAgIFtzdHlsZUluZGV4XT1cInN0eWxlSW5kZXhcIlxuICAgICAgICAgICAgW2Rpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcbiAgICAgICAgICAgIFttb109XCJub2RlLkRhdGFcIlxuICAgICAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgIChjb21tYW5kQ2xpY2spPVwib25VbHZDb21tYW5kKClcIlxuICAgICAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgID48L2k+XG4gICAgICAgIH0gQGlmIChhY2Nlc3M/LkFkZCAhPT0gZmFsc2UgJiYgIWluRGlhbG9nKSB7XG4gICAgICAgIDxic3UtaHRyZWUtY3JlYXRlLW5ld1xuICAgICAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICBbcmVsYXRpb25MaXN0XT1cInJlbGF0aW9uTGlzdFwiXG4gICAgICAgICAgICAoY3JlYXRlTmV3KT1cIm9uQ3JlYXRlTmV3KCRldmVudClcIlxuICAgICAgICA+PC9ic3UtaHRyZWUtY3JlYXRlLW5ldz5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoYWNjZXNzPy5WaWV3ICYmICFzaG93T2tDYW5jZWxCdXR0b25zICYmIGRldmljZU5hbWUgIT09ICdkZXNrdG9wJyAmJiAhaGlkZU9wZW5JY29uKSB7XG4gICAgPGJ1dHRvbiBmZC1idXR0b24gW2dseXBoXT1cIm5hdmlnYXRpb25BcnJvd1wiIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgKGNsaWNrKT1cIm9uTm9kZVZpZXdDbGljaygpXCI+PC9idXR0b24+XG4gICAgfSBAaWYgKGFjdGlvbkxpc3Q/Lmxlbmd0aCAmJiAhaW5saW5lRWRpdE1vZGUpIHtcbiAgICA8YnN1LWJhcnNhLXJvdy1pbmxpbmUtYWN0aW9ubGlzdFxuICAgICAgICBbYWN0aW9uTGlzdF09XCJhY3Rpb25MaXN0XCJcbiAgICAgICAgKGJ0bkNsaWNrKT1cImFjdGlvbkxpc3RDbGljay5lbWl0KCRldmVudClcIlxuICAgID48L2JzdS1iYXJzYS1yb3ctaW5saW5lLWFjdGlvbmxpc3Q+XG4gICAgfVxuXG4gICAgPGJzdS1iYXJzYS10cmVlLWl0ZW1cbiAgICAgICAgKmNka0RyYWdQcmV2aWV3XG4gICAgICAgIFtub2RlXT1cIm5vZGVcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtzZWxlY3RlZE5vZGVdPVwic2VsZWN0ZWROb2RlXCJcbiAgICAgICAgW2hhc0Fycm93SWNvbl09XCJmYWxzZVwiXG4gICAgPjwvYnN1LWJhcnNhLXRyZWUtaXRlbT5cbjwvbGk+XG4iXX0=
|
|
@@ -39,11 +39,11 @@ export class ColumnRendererComponent extends BaseComponent {
|
|
|
39
39
|
this._cdr.detectChanges();
|
|
40
40
|
}
|
|
41
41
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ColumnRendererComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: { column: "column", mo: "mo", index: "index", editMode: "editMode", customRowHeight: "customRowHeight", controlUi: "controlUi", formLayoutShowLabel: "formLayoutShowLabel", isChecked: "isChecked", isNewInlineMo: "isNewInlineMo", containerDom: "containerDom", disableEllapsis: "disableEllapsis", rtl: "rtl", deviceName: "deviceName", deviceSize: "deviceSize", value: "value", icon: "icon" }, host: { properties: { "class.isMobile": "this._isSmall" } }, usesInheritance: true, ngImport: i0, template: "@if (column) {\n<ng-container *ngTemplateOutlet=\"editMode ? formControlTemplate : renderCellTemplate\"> </ng-container>\n}\n<ng-template #renderCellTemplate>\n @switch (column.FieldTypeId) { @case (42) {\n <ng-container *ngTemplateOutlet=\"renderCellImage\"></ng-container>\n } @case (33) {\n <ng-container *ngTemplateOutlet=\"renderCellFileInfo\"></ng-container>\n } @case (31) {\n <ng-container *ngTemplateOutlet=\"renderCellFileListKhati\"></ng-container>\n } @case (11) {\n <ng-container *ngTemplateOutlet=\"renderCellListTasavir\"></ng-container>\n } @case (5) {\n <ng-container\n *ngTemplateOutlet=\"column.Extra?.ShowCheckInGrid ? renderCellChecbox : renderChecboxImage\"\n ></ng-container>\n } @default {\n <ng-container *ngTemplateOutlet=\"renderGeneral\"></ng-container>\n } }\n</ng-template>\n<ng-template #renderGeneral>\n <div class=\"renderGeneral\" [class.onlyIcon]=\"column.Extra?.IconDisplayTypeEnum === 'Image'\" [style.width]=\"\">\n @if (icon) {\n <img [attr.rtl]=\"rtl\" [src]=\"icon\" />\n }\n <!-- <fd-text\n #fdText\n *ngIf=\"column.Extra?.IconDisplayTypeEnum !== 'Image'\"\n [maxLines]=\"1\"\n [text]=\"value\"\n [fd-inline-help]=\"value\"\n [disabled]=\"!fdText._hasMore\"\n ></fd-text> -->\n\n <!-- <bsu-barsa-text-ellipsis\n [style.width]=\"column.$Width\"\n *ngIf=\"column.Extra?.IconDisplayTypeEnum !== 'Image'\"\n [text]=\"value\"\n></bsu-barsa-text-ellipsis> -->\n <!-- <div *ngIf=\"column.Extra?.IconDisplayTypeEnum !== 'Image'\" style=\"word-break:break-word\">\n{{ value }}\n</div> -->\n @if (column.Extra?.IconDisplayTypeEnum !== 'Image') {\n\n <div\n [ellapsisText]=\"value\"\n [disableEllapsis]=\"editMode\"\n [class.ellapsis]=\"!disableEllapsis\"\n [attr.title]=\"value\"\n (ellapsised)=\"onElapsised($event)\"\n >\n {{ value }}\n </div>\n }\n </div>\n</ng-template>\n<ng-template #formControlTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n !controlUi || controlUi.FieldUi.originalXtype === 'Ui.ReadOnlyField'\n ? renderCellTemplate\n : layoutControlTemplate\n \"\n ></ng-container>\n</ng-template>\n<ng-template #layoutControlTemplate>\n @if (controlUi) {\n <bsu-layout-control\n [inlineEdit]=\"true\"\n [caption]=\"column.Caption\"\n [config]=\"controlUi\"\n [focusControl]=\"index === 0 && (isChecked || isNewInlineMo)\"\n [showLabel]=\"formLayoutShowLabel\"\n ></bsu-layout-control>\n }\n</ng-template>\n<ng-template #renderCellListTasavir>\n @if (mo[column.Name] && mo[column.Name].Images) {\n <div style=\"display: flex; flex-wrap: wrap; gap: 0.15rem\">\n @for (pic of mo[column.Name].Images; track pic) {\n <img\n fullscreen\n fullscreenFiles\n [files]=\"mo[column.Name].Images\"\n [isImageGallery]=\"true\"\n [deviceSize]=\"deviceSize\"\n [src]=\"pic.FileId | picFieldSrc: 'BarsaPicture.Thumbnail':null:'':32:32\"\n style=\"width: 3rem; height: 3rem\"\n />\n }\n </div>\n }\n</ng-template>\n<ng-template #renderCellFileListKhati>\n @if (mo[column.Name]) {\n <div class=\"file-viewer-attachments\">\n @for (file of mo[column.Name].Files; track file) { @if (!file.IsDeleted) {\n <bsu-file-viewer-popover\n [style.width.px]=\"containerDom ? containerDom.offsetWidth : null\"\n [file]=\"file\"\n [files]=\"mo[column.Name].Files\"\n [deviceSize]=\"deviceSize\"\n [canDownload]=\"true\"\n [disableRemove]=\"true\"\n [fdType]=\"'transparent'\"\n ></bsu-file-viewer-popover>\n }\n <!-- <fd-token *ngIf=\"!file.IsDeleted\" [readOnly]=\"true\">{{ file.FileName }}</fd-token> -->\n }\n </div>\n }\n</ng-template>\n<ng-template #renderCellFileInfo>\n @if (mo[column.Name]) {\n <fd-avatar\n [transparent]=\"true\"\n [size]=\"column.FieldTypeId === '42' || column.FieldTypeId === 42 ? 'xs' : deviceSize === 's' ? 's' : 'm'\"\n [image]=\"mo[column.Name] | picFieldSrc: 'PictureFileInfo':null:column.FieldDefId\"\n ></fd-avatar>\n }\n</ng-template>\n<ng-template #renderCellChecbox>\n <fd-icon [glyph]=\"mo[column.Name] === true ? 'accept' : 'less'\"></fd-icon>\n</ng-template>\n<ng-template #renderChecboxImage>\n @if (column.Extra?.TrueImage === '') {\n {{ value }}\n } @if (column.Extra?.TrueImage !== '') {\n <img [src]=\"mo[column.Name] ? column.Extra?.TrueImage : column.Extra?.FalseImage\" aling=\"middle\" />\n }\n</ng-template>\n<ng-template #renderCellImage>\n @if (mo[column.Name] && mo[column.Name]['Url']) {\n <fd-avatar\n [size]=\"column.FieldTypeId === '42' || column.FieldTypeId === 42 ? 'xs' : deviceSize === 's' ? 's' : 'm'\"\n [transparent]=\"true\"\n [image]=\"mo[column.Name]['Url']\"\n ></fd-avatar>\n }\n</ng-template>\n", styles: [":host{display:contents;overflow:hidden;padding:0}:host.isMobile span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;white-space:pre-wrap}fd-avatar{min-width:100%;width:100%;max-width:64px}.renderGeneral{display:flex;width:100%;height:100%;align-items:center;justify-content:start}.renderGeneral.onlyIcon{justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.EllapsisTextDirective, selector: "[ellapsisText]", inputs: ["ellapsisText", "fontSize", "disableEllapsis"], outputs: ["ellapsised"] }, { 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.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i5.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"], outputs: ["events"] }, { kind: "component", type: i6.FileViewerPopoverComponent, selector: "bsu-file-viewer-popover", inputs: ["files", "file", "deviceSize", "canDownload", "disableRemove", "fdType"], outputs: ["remove"] }, { kind: "directive", type: i7.FullscreenFilesDirective, selector: "[fullscreenFiles]", inputs: ["files", "title", "deviceSize", "isImageGallery", "component"] }, { kind: "pipe", type: i2.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
42
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ColumnRendererComponent, selector: "bsu-column-renderer,[colRenderer]", inputs: { column: "column", mo: "mo", index: "index", editMode: "editMode", customRowHeight: "customRowHeight", controlUi: "controlUi", formLayoutShowLabel: "formLayoutShowLabel", isChecked: "isChecked", isNewInlineMo: "isNewInlineMo", containerDom: "containerDom", disableEllapsis: "disableEllapsis", rtl: "rtl", deviceName: "deviceName", deviceSize: "deviceSize", value: "value", icon: "icon" }, host: { properties: { "class.isMobile": "this._isSmall" } }, usesInheritance: true, ngImport: i0, template: "@if (column) {\n<ng-container *ngTemplateOutlet=\"editMode ? formControlTemplate : renderCellTemplate\"> </ng-container>\n}\n<ng-template #renderCellTemplate>\n @switch (column.FieldTypeId) { @case (42) {\n <ng-container *ngTemplateOutlet=\"renderCellImage\"></ng-container>\n } @case (33) {\n <ng-container *ngTemplateOutlet=\"renderCellFileInfo\"></ng-container>\n } @case (31) {\n <ng-container *ngTemplateOutlet=\"renderCellFileListKhati\"></ng-container>\n } @case (11) {\n <ng-container *ngTemplateOutlet=\"renderCellListTasavir\"></ng-container>\n } @case (5) {\n <ng-container\n *ngTemplateOutlet=\"column.Extra?.ShowCheckInGrid ? renderCellChecbox : renderChecboxImage\"\n ></ng-container>\n } @default {\n <ng-container *ngTemplateOutlet=\"renderGeneral\"></ng-container>\n } }\n</ng-template>\n<ng-template #renderGeneral>\n <div class=\"renderGeneral\" [class.onlyIcon]=\"column.Extra?.IconDisplayTypeEnum === 'Image'\" [style.width]=\"\">\n @if (icon) {\n <img [attr.rtl]=\"rtl\" [src]=\"icon\" />\n }\n <!-- <fd-text\n #fdText\n *ngIf=\"column.Extra?.IconDisplayTypeEnum !== 'Image'\"\n [maxLines]=\"1\"\n [text]=\"value\"\n [fd-inline-help]=\"value\"\n [disabled]=\"!fdText._hasMore\"\n ></fd-text> -->\n\n <!-- <bsu-barsa-text-ellipsis\n [style.width]=\"column.$Width\"\n *ngIf=\"column.Extra?.IconDisplayTypeEnum !== 'Image'\"\n [text]=\"value\"\n></bsu-barsa-text-ellipsis> -->\n <!-- <div *ngIf=\"column.Extra?.IconDisplayTypeEnum !== 'Image'\" style=\"word-break:break-word\">\n{{ value }}\n</div> -->\n @if (column.Extra?.IconDisplayTypeEnum !== 'Image') {\n\n <div\n [ellapsisText]=\"value\"\n [disableEllapsis]=\"editMode\"\n [class.ellapsis]=\"!disableEllapsis\"\n [attr.title]=\"value\"\n (ellapsised)=\"onElapsised($event)\"\n >\n {{ value }}\n </div>\n }\n </div>\n</ng-template>\n<ng-template #formControlTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n !controlUi || controlUi.FieldUi.originalXtype === 'Ui.ReadOnlyField'\n ? renderCellTemplate\n : layoutControlTemplate\n \"\n ></ng-container>\n</ng-template>\n<ng-template #layoutControlTemplate>\n @if (controlUi) {\n <bsu-layout-control\n [inlineEdit]=\"true\"\n [caption]=\"column.Caption\"\n [config]=\"controlUi\"\n [focusControl]=\"index === 0 && (isChecked || isNewInlineMo)\"\n [showLabel]=\"formLayoutShowLabel\"\n ></bsu-layout-control>\n }\n</ng-template>\n<ng-template #renderCellListTasavir>\n @if (mo[column.Name] && mo[column.Name].Images) {\n <div style=\"display: flex; flex-wrap: wrap; gap: 0.15rem\">\n @for (pic of mo[column.Name].Images; track pic) {\n <img\n fullscreen\n fullscreenFiles\n [files]=\"mo[column.Name].Images\"\n [isImageGallery]=\"true\"\n [deviceSize]=\"deviceSize\"\n [src]=\"pic.FileId | picFieldSrc: 'BarsaPicture.Thumbnail':null:'':32:32\"\n style=\"width: 3rem; height: 3rem\"\n />\n }\n </div>\n }\n</ng-template>\n<ng-template #renderCellFileListKhati>\n @if (mo[column.Name]) {\n <div class=\"file-viewer-attachments\">\n @for (file of mo[column.Name].Files; track file) { @if (!file.IsDeleted) {\n <bsu-file-viewer-popover\n [style.max-width.px]=\"containerDom && containerDom.offsetWidth ? containerDom.offsetWidth : null\"\n [file]=\"file\"\n [files]=\"mo[column.Name].Files\"\n [deviceSize]=\"deviceSize\"\n [canDownload]=\"true\"\n [disableRemove]=\"true\"\n [fdType]=\"'transparent'\"\n ></bsu-file-viewer-popover>\n }\n <!-- <fd-token *ngIf=\"!file.IsDeleted\" [readOnly]=\"true\">{{ file.FileName }}</fd-token> -->\n }\n </div>\n }\n</ng-template>\n<ng-template #renderCellFileInfo>\n @if (mo[column.Name]) {\n <fd-avatar\n [transparent]=\"true\"\n [size]=\"column.FieldTypeId === '42' || column.FieldTypeId === 42 ? 'xs' : deviceSize === 's' ? 's' : 'm'\"\n [image]=\"mo[column.Name] | picFieldSrc: 'PictureFileInfo':null:column.FieldDefId\"\n ></fd-avatar>\n }\n</ng-template>\n<ng-template #renderCellChecbox>\n <fd-icon [glyph]=\"mo[column.Name] === true ? 'accept' : 'less'\"></fd-icon>\n</ng-template>\n<ng-template #renderChecboxImage>\n @if (column.Extra?.TrueImage === '') {\n {{ value }}\n } @if (column.Extra?.TrueImage !== '') {\n <img [src]=\"mo[column.Name] ? column.Extra?.TrueImage : column.Extra?.FalseImage\" aling=\"middle\" />\n }\n</ng-template>\n<ng-template #renderCellImage>\n @if (mo[column.Name] && mo[column.Name]['Url']) {\n <fd-avatar\n [size]=\"column.FieldTypeId === '42' || column.FieldTypeId === 42 ? 'xs' : deviceSize === 's' ? 's' : 'm'\"\n [transparent]=\"true\"\n [image]=\"mo[column.Name]['Url']\"\n ></fd-avatar>\n }\n</ng-template>\n", styles: [":host{display:contents;overflow:hidden;padding:0}:host.isMobile span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;white-space:pre-wrap}fd-avatar{min-width:100%;width:100%;max-width:64px}.renderGeneral{display:flex;width:100%;height:100%;align-items:center;justify-content:start}.renderGeneral.onlyIcon{justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.EllapsisTextDirective, selector: "[ellapsisText]", inputs: ["ellapsisText", "fontSize", "disableEllapsis"], outputs: ["ellapsised"] }, { 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.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i5.LayoutControlComponent, selector: "bsu-layout-control", inputs: ["inlineEdit", "caption", "focusControl", "showLabel", "maxLabelWidth", "hasHorizontalText", "contentDensity", "flex", "RefreshLabel", "SetVisible"], outputs: ["events"] }, { kind: "component", type: i6.FileViewerPopoverComponent, selector: "bsu-file-viewer-popover", inputs: ["files", "file", "deviceSize", "canDownload", "disableRemove", "fdType"], outputs: ["remove"] }, { kind: "directive", type: i7.FullscreenFilesDirective, selector: "[fullscreenFiles]", inputs: ["files", "title", "deviceSize", "isImageGallery", "component"] }, { kind: "pipe", type: i2.PictureFieldSourcePipe, name: "picFieldSrc" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
43
43
|
}
|
|
44
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ColumnRendererComponent, decorators: [{
|
|
45
45
|
type: Component,
|
|
46
|
-
args: [{ selector: 'bsu-column-renderer,[colRenderer]', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (column) {\n<ng-container *ngTemplateOutlet=\"editMode ? formControlTemplate : renderCellTemplate\"> </ng-container>\n}\n<ng-template #renderCellTemplate>\n @switch (column.FieldTypeId) { @case (42) {\n <ng-container *ngTemplateOutlet=\"renderCellImage\"></ng-container>\n } @case (33) {\n <ng-container *ngTemplateOutlet=\"renderCellFileInfo\"></ng-container>\n } @case (31) {\n <ng-container *ngTemplateOutlet=\"renderCellFileListKhati\"></ng-container>\n } @case (11) {\n <ng-container *ngTemplateOutlet=\"renderCellListTasavir\"></ng-container>\n } @case (5) {\n <ng-container\n *ngTemplateOutlet=\"column.Extra?.ShowCheckInGrid ? renderCellChecbox : renderChecboxImage\"\n ></ng-container>\n } @default {\n <ng-container *ngTemplateOutlet=\"renderGeneral\"></ng-container>\n } }\n</ng-template>\n<ng-template #renderGeneral>\n <div class=\"renderGeneral\" [class.onlyIcon]=\"column.Extra?.IconDisplayTypeEnum === 'Image'\" [style.width]=\"\">\n @if (icon) {\n <img [attr.rtl]=\"rtl\" [src]=\"icon\" />\n }\n <!-- <fd-text\n #fdText\n *ngIf=\"column.Extra?.IconDisplayTypeEnum !== 'Image'\"\n [maxLines]=\"1\"\n [text]=\"value\"\n [fd-inline-help]=\"value\"\n [disabled]=\"!fdText._hasMore\"\n ></fd-text> -->\n\n <!-- <bsu-barsa-text-ellipsis\n [style.width]=\"column.$Width\"\n *ngIf=\"column.Extra?.IconDisplayTypeEnum !== 'Image'\"\n [text]=\"value\"\n></bsu-barsa-text-ellipsis> -->\n <!-- <div *ngIf=\"column.Extra?.IconDisplayTypeEnum !== 'Image'\" style=\"word-break:break-word\">\n{{ value }}\n</div> -->\n @if (column.Extra?.IconDisplayTypeEnum !== 'Image') {\n\n <div\n [ellapsisText]=\"value\"\n [disableEllapsis]=\"editMode\"\n [class.ellapsis]=\"!disableEllapsis\"\n [attr.title]=\"value\"\n (ellapsised)=\"onElapsised($event)\"\n >\n {{ value }}\n </div>\n }\n </div>\n</ng-template>\n<ng-template #formControlTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n !controlUi || controlUi.FieldUi.originalXtype === 'Ui.ReadOnlyField'\n ? renderCellTemplate\n : layoutControlTemplate\n \"\n ></ng-container>\n</ng-template>\n<ng-template #layoutControlTemplate>\n @if (controlUi) {\n <bsu-layout-control\n [inlineEdit]=\"true\"\n [caption]=\"column.Caption\"\n [config]=\"controlUi\"\n [focusControl]=\"index === 0 && (isChecked || isNewInlineMo)\"\n [showLabel]=\"formLayoutShowLabel\"\n ></bsu-layout-control>\n }\n</ng-template>\n<ng-template #renderCellListTasavir>\n @if (mo[column.Name] && mo[column.Name].Images) {\n <div style=\"display: flex; flex-wrap: wrap; gap: 0.15rem\">\n @for (pic of mo[column.Name].Images; track pic) {\n <img\n fullscreen\n fullscreenFiles\n [files]=\"mo[column.Name].Images\"\n [isImageGallery]=\"true\"\n [deviceSize]=\"deviceSize\"\n [src]=\"pic.FileId | picFieldSrc: 'BarsaPicture.Thumbnail':null:'':32:32\"\n style=\"width: 3rem; height: 3rem\"\n />\n }\n </div>\n }\n</ng-template>\n<ng-template #renderCellFileListKhati>\n @if (mo[column.Name]) {\n <div class=\"file-viewer-attachments\">\n @for (file of mo[column.Name].Files; track file) { @if (!file.IsDeleted) {\n <bsu-file-viewer-popover\n [style.width.px]=\"containerDom ? containerDom.offsetWidth : null\"\n [file]=\"file\"\n [files]=\"mo[column.Name].Files\"\n [deviceSize]=\"deviceSize\"\n [canDownload]=\"true\"\n [disableRemove]=\"true\"\n [fdType]=\"'transparent'\"\n ></bsu-file-viewer-popover>\n }\n <!-- <fd-token *ngIf=\"!file.IsDeleted\" [readOnly]=\"true\">{{ file.FileName }}</fd-token> -->\n }\n </div>\n }\n</ng-template>\n<ng-template #renderCellFileInfo>\n @if (mo[column.Name]) {\n <fd-avatar\n [transparent]=\"true\"\n [size]=\"column.FieldTypeId === '42' || column.FieldTypeId === 42 ? 'xs' : deviceSize === 's' ? 's' : 'm'\"\n [image]=\"mo[column.Name] | picFieldSrc: 'PictureFileInfo':null:column.FieldDefId\"\n ></fd-avatar>\n }\n</ng-template>\n<ng-template #renderCellChecbox>\n <fd-icon [glyph]=\"mo[column.Name] === true ? 'accept' : 'less'\"></fd-icon>\n</ng-template>\n<ng-template #renderChecboxImage>\n @if (column.Extra?.TrueImage === '') {\n {{ value }}\n } @if (column.Extra?.TrueImage !== '') {\n <img [src]=\"mo[column.Name] ? column.Extra?.TrueImage : column.Extra?.FalseImage\" aling=\"middle\" />\n }\n</ng-template>\n<ng-template #renderCellImage>\n @if (mo[column.Name] && mo[column.Name]['Url']) {\n <fd-avatar\n [size]=\"column.FieldTypeId === '42' || column.FieldTypeId === 42 ? 'xs' : deviceSize === 's' ? 's' : 'm'\"\n [transparent]=\"true\"\n [image]=\"mo[column.Name]['Url']\"\n ></fd-avatar>\n }\n</ng-template>\n", styles: [":host{display:contents;overflow:hidden;padding:0}:host.isMobile span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;white-space:pre-wrap}fd-avatar{min-width:100%;width:100%;max-width:64px}.renderGeneral{display:flex;width:100%;height:100%;align-items:center;justify-content:start}.renderGeneral.onlyIcon{justify-content:center}\n"] }]
|
|
46
|
+
args: [{ selector: 'bsu-column-renderer,[colRenderer]', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (column) {\n<ng-container *ngTemplateOutlet=\"editMode ? formControlTemplate : renderCellTemplate\"> </ng-container>\n}\n<ng-template #renderCellTemplate>\n @switch (column.FieldTypeId) { @case (42) {\n <ng-container *ngTemplateOutlet=\"renderCellImage\"></ng-container>\n } @case (33) {\n <ng-container *ngTemplateOutlet=\"renderCellFileInfo\"></ng-container>\n } @case (31) {\n <ng-container *ngTemplateOutlet=\"renderCellFileListKhati\"></ng-container>\n } @case (11) {\n <ng-container *ngTemplateOutlet=\"renderCellListTasavir\"></ng-container>\n } @case (5) {\n <ng-container\n *ngTemplateOutlet=\"column.Extra?.ShowCheckInGrid ? renderCellChecbox : renderChecboxImage\"\n ></ng-container>\n } @default {\n <ng-container *ngTemplateOutlet=\"renderGeneral\"></ng-container>\n } }\n</ng-template>\n<ng-template #renderGeneral>\n <div class=\"renderGeneral\" [class.onlyIcon]=\"column.Extra?.IconDisplayTypeEnum === 'Image'\" [style.width]=\"\">\n @if (icon) {\n <img [attr.rtl]=\"rtl\" [src]=\"icon\" />\n }\n <!-- <fd-text\n #fdText\n *ngIf=\"column.Extra?.IconDisplayTypeEnum !== 'Image'\"\n [maxLines]=\"1\"\n [text]=\"value\"\n [fd-inline-help]=\"value\"\n [disabled]=\"!fdText._hasMore\"\n ></fd-text> -->\n\n <!-- <bsu-barsa-text-ellipsis\n [style.width]=\"column.$Width\"\n *ngIf=\"column.Extra?.IconDisplayTypeEnum !== 'Image'\"\n [text]=\"value\"\n></bsu-barsa-text-ellipsis> -->\n <!-- <div *ngIf=\"column.Extra?.IconDisplayTypeEnum !== 'Image'\" style=\"word-break:break-word\">\n{{ value }}\n</div> -->\n @if (column.Extra?.IconDisplayTypeEnum !== 'Image') {\n\n <div\n [ellapsisText]=\"value\"\n [disableEllapsis]=\"editMode\"\n [class.ellapsis]=\"!disableEllapsis\"\n [attr.title]=\"value\"\n (ellapsised)=\"onElapsised($event)\"\n >\n {{ value }}\n </div>\n }\n </div>\n</ng-template>\n<ng-template #formControlTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n !controlUi || controlUi.FieldUi.originalXtype === 'Ui.ReadOnlyField'\n ? renderCellTemplate\n : layoutControlTemplate\n \"\n ></ng-container>\n</ng-template>\n<ng-template #layoutControlTemplate>\n @if (controlUi) {\n <bsu-layout-control\n [inlineEdit]=\"true\"\n [caption]=\"column.Caption\"\n [config]=\"controlUi\"\n [focusControl]=\"index === 0 && (isChecked || isNewInlineMo)\"\n [showLabel]=\"formLayoutShowLabel\"\n ></bsu-layout-control>\n }\n</ng-template>\n<ng-template #renderCellListTasavir>\n @if (mo[column.Name] && mo[column.Name].Images) {\n <div style=\"display: flex; flex-wrap: wrap; gap: 0.15rem\">\n @for (pic of mo[column.Name].Images; track pic) {\n <img\n fullscreen\n fullscreenFiles\n [files]=\"mo[column.Name].Images\"\n [isImageGallery]=\"true\"\n [deviceSize]=\"deviceSize\"\n [src]=\"pic.FileId | picFieldSrc: 'BarsaPicture.Thumbnail':null:'':32:32\"\n style=\"width: 3rem; height: 3rem\"\n />\n }\n </div>\n }\n</ng-template>\n<ng-template #renderCellFileListKhati>\n @if (mo[column.Name]) {\n <div class=\"file-viewer-attachments\">\n @for (file of mo[column.Name].Files; track file) { @if (!file.IsDeleted) {\n <bsu-file-viewer-popover\n [style.max-width.px]=\"containerDom && containerDom.offsetWidth ? containerDom.offsetWidth : null\"\n [file]=\"file\"\n [files]=\"mo[column.Name].Files\"\n [deviceSize]=\"deviceSize\"\n [canDownload]=\"true\"\n [disableRemove]=\"true\"\n [fdType]=\"'transparent'\"\n ></bsu-file-viewer-popover>\n }\n <!-- <fd-token *ngIf=\"!file.IsDeleted\" [readOnly]=\"true\">{{ file.FileName }}</fd-token> -->\n }\n </div>\n }\n</ng-template>\n<ng-template #renderCellFileInfo>\n @if (mo[column.Name]) {\n <fd-avatar\n [transparent]=\"true\"\n [size]=\"column.FieldTypeId === '42' || column.FieldTypeId === 42 ? 'xs' : deviceSize === 's' ? 's' : 'm'\"\n [image]=\"mo[column.Name] | picFieldSrc: 'PictureFileInfo':null:column.FieldDefId\"\n ></fd-avatar>\n }\n</ng-template>\n<ng-template #renderCellChecbox>\n <fd-icon [glyph]=\"mo[column.Name] === true ? 'accept' : 'less'\"></fd-icon>\n</ng-template>\n<ng-template #renderChecboxImage>\n @if (column.Extra?.TrueImage === '') {\n {{ value }}\n } @if (column.Extra?.TrueImage !== '') {\n <img [src]=\"mo[column.Name] ? column.Extra?.TrueImage : column.Extra?.FalseImage\" aling=\"middle\" />\n }\n</ng-template>\n<ng-template #renderCellImage>\n @if (mo[column.Name] && mo[column.Name]['Url']) {\n <fd-avatar\n [size]=\"column.FieldTypeId === '42' || column.FieldTypeId === 42 ? 'xs' : deviceSize === 's' ? 's' : 'm'\"\n [transparent]=\"true\"\n [image]=\"mo[column.Name]['Url']\"\n ></fd-avatar>\n }\n</ng-template>\n", styles: [":host{display:contents;overflow:hidden;padding:0}:host.isMobile span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;white-space:pre-wrap}fd-avatar{min-width:100%;width:100%;max-width:64px}.renderGeneral{display:flex;width:100%;height:100%;align-items:center;justify-content:start}.renderGeneral.onlyIcon{justify-content:center}\n"] }]
|
|
47
47
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { _isSmall: [{
|
|
48
48
|
type: HostBinding,
|
|
49
49
|
args: ['class.isMobile']
|
|
@@ -80,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
80
80
|
}], icon: [{
|
|
81
81
|
type: Input
|
|
82
82
|
}] } });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2NvbHVtbi1yZW5kZXJlci9jb2x1bW4tcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvY29sdW1uLXJlbmRlcmVyL2NvbHVtbi1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxFQUdSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUIsYUFBYSxFQUFzQyxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUFRaEgsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGFBQWE7SUFxQnREOztPQUVHO0lBQ0gsWUFBc0IsSUFBdUI7UUFDekMsS0FBSyxFQUFFLENBQUM7UUFEVSxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQXZCZCxhQUFRLEdBQUcsS0FBSyxDQUFDO0lBeUJoRCxDQUFDO0lBQ0QsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUNELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM5QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0wsQ0FBQztJQUNELFdBQVcsQ0FBQyxHQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDOzhHQS9DUSx1QkFBdUI7a0dBQXZCLHVCQUF1QiwyaUJDakJwQyxvaEtBNElBOzsyRkQzSGEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNJLG1DQUFtQyxtQkFHNUIsdUJBQXVCLENBQUMsTUFBTTtzRkFHaEIsUUFBUTtzQkFBdEMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBQ3BCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJicmV2YXRpb25EZXZpY2VTaXplLCBCYXNlQ29tcG9uZW50LCBMYXlvdXRTZXR0aW5nLCBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1jb2x1bW4tcmVuZGVyZXIsW2NvbFJlbmRlcmVyXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLXJlbmRlcmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uUmVuZGVyZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzTW9iaWxlJykgX2lzU21hbGwgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjb2x1bW46IGFueTtcbiAgICBASW5wdXQoKSBtbzogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBASW5wdXQoKSBpbmRleDogYW55O1xuICAgIEBJbnB1dCgpIGVkaXRNb2RlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGN1c3RvbVJvd0hlaWdodDogYW55O1xuICAgIEBJbnB1dCgpIGNvbnRyb2xVaTogTGF5b3V0U2V0dGluZyB8IG51bGw7XG4gICAgQElucHV0KCkgZm9ybUxheW91dFNob3dMYWJlbDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0NoZWNrZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNOZXdJbmxpbmVNbzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjb250YWluZXJEb206IEhUTUxFbGVtZW50O1xuXG4gICAgQElucHV0KCkgZGlzYWJsZUVsbGFwc2lzOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJ0bDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkZXZpY2VOYW1lOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG4gICAgQElucHV0KCkgaWNvbjogYW55O1xuICAgIHNob3dNb3JlOiBib29sZWFuO1xuICAgIGZpZWxkVHlwZUlkOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICpcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuZmllbGRUeXBlSWQgPSBOdW1iZXIodGhpcy5jb2x1bW4uRmllbGRUeXBlSWQpO1xuICAgICAgICBpZiAodGhpcy5kZXZpY2VTaXplID09PSAncycpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzU21hbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uLkZpZWxkVHlwZUlkLnRvU3RyaW5nKCkgPT09ICczMScpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkVsYXBzaXNlZCh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZUVsbGFwc2lzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG93TW9yZSA9IHZhbDtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG59XG4iLCJAaWYgKGNvbHVtbikge1xuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVkaXRNb2RlID8gZm9ybUNvbnRyb2xUZW1wbGF0ZSA6IHJlbmRlckNlbGxUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cbn1cbjxuZy10ZW1wbGF0ZSAjcmVuZGVyQ2VsbFRlbXBsYXRlPlxuICAgIEBzd2l0Y2ggKGNvbHVtbi5GaWVsZFR5cGVJZCkgeyBAY2FzZSAoNDIpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVuZGVyQ2VsbEltYWdlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfSBAY2FzZSAoMzMpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVuZGVyQ2VsbEZpbGVJbmZvXCI+PC9uZy1jb250YWluZXI+XG4gICAgfSBAY2FzZSAoMzEpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVuZGVyQ2VsbEZpbGVMaXN0S2hhdGlcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBjYXNlICgxMSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZW5kZXJDZWxsTGlzdFRhc2F2aXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBjYXNlICg1KSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5FeHRyYT8uU2hvd0NoZWNrSW5HcmlkID8gcmVuZGVyQ2VsbENoZWNib3ggOiByZW5kZXJDaGVjYm94SW1hZ2VcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBkZWZhdWx0IHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVuZGVyR2VuZXJhbFwiPjwvbmctY29udGFpbmVyPlxuICAgIH0gfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcmVuZGVyR2VuZXJhbD5cbiAgICA8ZGl2IGNsYXNzPVwicmVuZGVyR2VuZXJhbFwiIFtjbGFzcy5vbmx5SWNvbl09XCJjb2x1bW4uRXh0cmE/Lkljb25EaXNwbGF5VHlwZUVudW0gPT09ICdJbWFnZSdcIiBbc3R5bGUud2lkdGhdPVwiXCI+XG4gICAgICAgIEBpZiAoaWNvbikge1xuICAgICAgICA8aW1nIFthdHRyLnJ0bF09XCJydGxcIiBbc3JjXT1cImljb25cIiAvPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gPGZkLXRleHRcbiAgICAjZmRUZXh0XG4gICAgKm5nSWY9XCJjb2x1bW4uRXh0cmE/Lkljb25EaXNwbGF5VHlwZUVudW0gIT09ICdJbWFnZSdcIlxuICAgIFttYXhMaW5lc109XCIxXCJcbiAgICBbdGV4dF09XCJ2YWx1ZVwiXG4gICAgW2ZkLWlubGluZS1oZWxwXT1cInZhbHVlXCJcbiAgICBbZGlzYWJsZWRdPVwiIWZkVGV4dC5faGFzTW9yZVwiXG4gID48L2ZkLXRleHQ+IC0tPlxuXG4gICAgICAgIDwhLS0gPGJzdS1iYXJzYS10ZXh0LWVsbGlwc2lzXG4gIFtzdHlsZS53aWR0aF09XCJjb2x1bW4uJFdpZHRoXCJcbiAgKm5nSWY9XCJjb2x1bW4uRXh0cmE/Lkljb25EaXNwbGF5VHlwZUVudW0gIT09ICdJbWFnZSdcIlxuICBbdGV4dF09XCJ2YWx1ZVwiXG4+PC9ic3UtYmFyc2EtdGV4dC1lbGxpcHNpcz4gLS0+XG4gICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bSAhPT0gJ0ltYWdlJ1wiIHN0eWxlPVwid29yZC1icmVhazpicmVhay13b3JkXCI+XG57eyB2YWx1ZSB9fVxuPC9kaXY+IC0tPlxuICAgICAgICBAaWYgKGNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bSAhPT0gJ0ltYWdlJykge1xuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtlbGxhcHNpc1RleHRdPVwidmFsdWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVFbGxhcHNpc109XCJlZGl0TW9kZVwiXG4gICAgICAgICAgICBbY2xhc3MuZWxsYXBzaXNdPVwiIWRpc2FibGVFbGxhcHNpc1wiXG4gICAgICAgICAgICBbYXR0ci50aXRsZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAoZWxsYXBzaXNlZCk9XCJvbkVsYXBzaXNlZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgdmFsdWUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Zvcm1Db250cm9sVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgIWNvbnRyb2xVaSB8fCBjb250cm9sVWkuRmllbGRVaS5vcmlnaW5hbFh0eXBlID09PSAnVWkuUmVhZE9ubHlGaWVsZCdcbiAgICAgICAgICAgICAgICA/IHJlbmRlckNlbGxUZW1wbGF0ZVxuICAgICAgICAgICAgICAgIDogbGF5b3V0Q29udHJvbFRlbXBsYXRlXG4gICAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbGF5b3V0Q29udHJvbFRlbXBsYXRlPlxuICAgIEBpZiAoY29udHJvbFVpKSB7XG4gICAgPGJzdS1sYXlvdXQtY29udHJvbFxuICAgICAgICBbaW5saW5lRWRpdF09XCJ0cnVlXCJcbiAgICAgICAgW2NhcHRpb25dPVwiY29sdW1uLkNhcHRpb25cIlxuICAgICAgICBbY29uZmlnXT1cImNvbnRyb2xVaVwiXG4gICAgICAgIFtmb2N1c0NvbnRyb2xdPVwiaW5kZXggPT09IDAgJiYgKGlzQ2hlY2tlZCB8fCBpc05ld0lubGluZU1vKVwiXG4gICAgICAgIFtzaG93TGFiZWxdPVwiZm9ybUxheW91dFNob3dMYWJlbFwiXG4gICAgPjwvYnN1LWxheW91dC1jb250cm9sPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3JlbmRlckNlbGxMaXN0VGFzYXZpcj5cbiAgICBAaWYgKG1vW2NvbHVtbi5OYW1lXSAmJiBtb1tjb2x1bW4uTmFtZV0uSW1hZ2VzKSB7XG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiAwLjE1cmVtXCI+XG4gICAgICAgIEBmb3IgKHBpYyBvZiBtb1tjb2x1bW4uTmFtZV0uSW1hZ2VzOyB0cmFjayBwaWMpIHtcbiAgICAgICAgPGltZ1xuICAgICAgICAgICAgZnVsbHNjcmVlblxuICAgICAgICAgICAgZnVsbHNjcmVlbkZpbGVzXG4gICAgICAgICAgICBbZmlsZXNdPVwibW9bY29sdW1uLk5hbWVdLkltYWdlc1wiXG4gICAgICAgICAgICBbaXNJbWFnZUdhbGxlcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgICAgIFtzcmNdPVwicGljLkZpbGVJZCB8IHBpY0ZpZWxkU3JjOiAnQmFyc2FQaWN0dXJlLlRodW1ibmFpbCc6bnVsbDonJzozMjozMlwiXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAzcmVtOyBoZWlnaHQ6IDNyZW1cIlxuICAgICAgICAvPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcmVuZGVyQ2VsbEZpbGVMaXN0S2hhdGk+XG4gICAgQGlmIChtb1tjb2x1bW4uTmFtZV0pIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS12aWV3ZXItYXR0YWNobWVudHNcIj5cbiAgICAgICAgQGZvciAoZmlsZSBvZiBtb1tjb2x1bW4uTmFtZV0uRmlsZXM7IHRyYWNrIGZpbGUpIHsgQGlmICghZmlsZS5Jc0RlbGV0ZWQpIHtcbiAgICAgICAgPGJzdS1maWxlLXZpZXdlci1wb3BvdmVyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29udGFpbmVyRG9tID8gY29udGFpbmVyRG9tLm9mZnNldFdpZHRoIDogbnVsbFwiXG4gICAgICAgICAgICBbZmlsZV09XCJmaWxlXCJcbiAgICAgICAgICAgIFtmaWxlc109XCJtb1tjb2x1bW4uTmFtZV0uRmlsZXNcIlxuICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgICAgICBbY2FuRG93bmxvYWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZVJlbW92ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgID48L2JzdS1maWxlLXZpZXdlci1wb3BvdmVyPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gPGZkLXRva2VuICpuZ0lmPVwiIWZpbGUuSXNEZWxldGVkXCIgW3JlYWRPbmx5XT1cInRydWVcIj57eyBmaWxlLkZpbGVOYW1lIH19PC9mZC10b2tlbj4gLS0+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNyZW5kZXJDZWxsRmlsZUluZm8+XG4gICAgQGlmIChtb1tjb2x1bW4uTmFtZV0pIHtcbiAgICA8ZmQtYXZhdGFyXG4gICAgICAgIFt0cmFuc3BhcmVudF09XCJ0cnVlXCJcbiAgICAgICAgW3NpemVdPVwiY29sdW1uLkZpZWxkVHlwZUlkID09PSAnNDInIHx8IGNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gNDIgPyAneHMnIDogZGV2aWNlU2l6ZSA9PT0gJ3MnID8gJ3MnIDogJ20nXCJcbiAgICAgICAgW2ltYWdlXT1cIm1vW2NvbHVtbi5OYW1lXSB8IHBpY0ZpZWxkU3JjOiAnUGljdHVyZUZpbGVJbmZvJzpudWxsOmNvbHVtbi5GaWVsZERlZklkXCJcbiAgICA+PC9mZC1hdmF0YXI+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcmVuZGVyQ2VsbENoZWNib3g+XG4gICAgPGZkLWljb24gW2dseXBoXT1cIm1vW2NvbHVtbi5OYW1lXSA9PT0gdHJ1ZSA/ICdhY2NlcHQnIDogJ2xlc3MnXCI+PC9mZC1pY29uPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcmVuZGVyQ2hlY2JveEltYWdlPlxuICAgIEBpZiAoY29sdW1uLkV4dHJhPy5UcnVlSW1hZ2UgPT09ICcnKSB7XG4gICAge3sgdmFsdWUgfX1cbiAgICB9IEBpZiAoY29sdW1uLkV4dHJhPy5UcnVlSW1hZ2UgIT09ICcnKSB7XG4gICAgPGltZyBbc3JjXT1cIm1vW2NvbHVtbi5OYW1lXSA/IGNvbHVtbi5FeHRyYT8uVHJ1ZUltYWdlIDogY29sdW1uLkV4dHJhPy5GYWxzZUltYWdlXCIgYWxpbmc9XCJtaWRkbGVcIiAvPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3JlbmRlckNlbGxJbWFnZT5cbiAgICBAaWYgKG1vW2NvbHVtbi5OYW1lXSAmJiBtb1tjb2x1bW4uTmFtZV1bJ1VybCddKSB7XG4gICAgPGZkLWF2YXRhclxuICAgICAgICBbc2l6ZV09XCJjb2x1bW4uRmllbGRUeXBlSWQgPT09ICc0MicgfHwgY29sdW1uLkZpZWxkVHlwZUlkID09PSA0MiA/ICd4cycgOiBkZXZpY2VTaXplID09PSAncycgPyAncycgOiAnbSdcIlxuICAgICAgICBbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG4gICAgICAgIFtpbWFnZV09XCJtb1tjb2x1bW4uTmFtZV1bJ1VybCddXCJcbiAgICA+PC9mZC1hdmF0YXI+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL2NvbHVtbi1yZW5kZXJlci9jb2x1bW4tcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvY29sdW1uLXJlbmRlcmVyL2NvbHVtbi1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxFQUdSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUIsYUFBYSxFQUFzQyxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUFRaEgsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGFBQWE7SUFxQnREOztPQUVHO0lBQ0gsWUFBc0IsSUFBdUI7UUFDekMsS0FBSyxFQUFFLENBQUM7UUFEVSxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQXZCZCxhQUFRLEdBQUcsS0FBSyxDQUFDO0lBeUJoRCxDQUFDO0lBQ0QsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUNELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM5QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0wsQ0FBQztJQUNELFdBQVcsQ0FBQyxHQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDOzhHQS9DUSx1QkFBdUI7a0dBQXZCLHVCQUF1QiwyaUJDakJwQyxvaktBNElBOzsyRkQzSGEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNJLG1DQUFtQyxtQkFHNUIsdUJBQXVCLENBQUMsTUFBTTtzRkFHaEIsUUFBUTtzQkFBdEMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBQ3BCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJicmV2YXRpb25EZXZpY2VTaXplLCBCYXNlQ29tcG9uZW50LCBMYXlvdXRTZXR0aW5nLCBNZXRhb2JqZWN0RGF0YU1vZGVsIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS1jb2x1bW4tcmVuZGVyZXIsW2NvbFJlbmRlcmVyXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLXJlbmRlcmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uUmVuZGVyZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzTW9iaWxlJykgX2lzU21hbGwgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjb2x1bW46IGFueTtcbiAgICBASW5wdXQoKSBtbzogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBASW5wdXQoKSBpbmRleDogYW55O1xuICAgIEBJbnB1dCgpIGVkaXRNb2RlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGN1c3RvbVJvd0hlaWdodDogYW55O1xuICAgIEBJbnB1dCgpIGNvbnRyb2xVaTogTGF5b3V0U2V0dGluZyB8IG51bGw7XG4gICAgQElucHV0KCkgZm9ybUxheW91dFNob3dMYWJlbDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc0NoZWNrZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNOZXdJbmxpbmVNbzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBjb250YWluZXJEb206IEhUTUxFbGVtZW50O1xuXG4gICAgQElucHV0KCkgZGlzYWJsZUVsbGFwc2lzOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJ0bDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkZXZpY2VOYW1lOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG4gICAgQElucHV0KCkgaWNvbjogYW55O1xuICAgIHNob3dNb3JlOiBib29sZWFuO1xuICAgIGZpZWxkVHlwZUlkOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICpcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuZmllbGRUeXBlSWQgPSBOdW1iZXIodGhpcy5jb2x1bW4uRmllbGRUeXBlSWQpO1xuICAgICAgICBpZiAodGhpcy5kZXZpY2VTaXplID09PSAncycpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzU21hbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uLkZpZWxkVHlwZUlkLnRvU3RyaW5nKCkgPT09ICczMScpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkVsYXBzaXNlZCh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZUVsbGFwc2lzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG93TW9yZSA9IHZhbDtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG59XG4iLCJAaWYgKGNvbHVtbikge1xuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVkaXRNb2RlID8gZm9ybUNvbnRyb2xUZW1wbGF0ZSA6IHJlbmRlckNlbGxUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cbn1cbjxuZy10ZW1wbGF0ZSAjcmVuZGVyQ2VsbFRlbXBsYXRlPlxuICAgIEBzd2l0Y2ggKGNvbHVtbi5GaWVsZFR5cGVJZCkgeyBAY2FzZSAoNDIpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVuZGVyQ2VsbEltYWdlXCI+PC9uZy1jb250YWluZXI+XG4gICAgfSBAY2FzZSAoMzMpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVuZGVyQ2VsbEZpbGVJbmZvXCI+PC9uZy1jb250YWluZXI+XG4gICAgfSBAY2FzZSAoMzEpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVuZGVyQ2VsbEZpbGVMaXN0S2hhdGlcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBjYXNlICgxMSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZW5kZXJDZWxsTGlzdFRhc2F2aXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBjYXNlICg1KSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5FeHRyYT8uU2hvd0NoZWNrSW5HcmlkID8gcmVuZGVyQ2VsbENoZWNib3ggOiByZW5kZXJDaGVjYm94SW1hZ2VcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBkZWZhdWx0IHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVuZGVyR2VuZXJhbFwiPjwvbmctY29udGFpbmVyPlxuICAgIH0gfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcmVuZGVyR2VuZXJhbD5cbiAgICA8ZGl2IGNsYXNzPVwicmVuZGVyR2VuZXJhbFwiIFtjbGFzcy5vbmx5SWNvbl09XCJjb2x1bW4uRXh0cmE/Lkljb25EaXNwbGF5VHlwZUVudW0gPT09ICdJbWFnZSdcIiBbc3R5bGUud2lkdGhdPVwiXCI+XG4gICAgICAgIEBpZiAoaWNvbikge1xuICAgICAgICA8aW1nIFthdHRyLnJ0bF09XCJydGxcIiBbc3JjXT1cImljb25cIiAvPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gPGZkLXRleHRcbiAgICAjZmRUZXh0XG4gICAgKm5nSWY9XCJjb2x1bW4uRXh0cmE/Lkljb25EaXNwbGF5VHlwZUVudW0gIT09ICdJbWFnZSdcIlxuICAgIFttYXhMaW5lc109XCIxXCJcbiAgICBbdGV4dF09XCJ2YWx1ZVwiXG4gICAgW2ZkLWlubGluZS1oZWxwXT1cInZhbHVlXCJcbiAgICBbZGlzYWJsZWRdPVwiIWZkVGV4dC5faGFzTW9yZVwiXG4gID48L2ZkLXRleHQ+IC0tPlxuXG4gICAgICAgIDwhLS0gPGJzdS1iYXJzYS10ZXh0LWVsbGlwc2lzXG4gIFtzdHlsZS53aWR0aF09XCJjb2x1bW4uJFdpZHRoXCJcbiAgKm5nSWY9XCJjb2x1bW4uRXh0cmE/Lkljb25EaXNwbGF5VHlwZUVudW0gIT09ICdJbWFnZSdcIlxuICBbdGV4dF09XCJ2YWx1ZVwiXG4+PC9ic3UtYmFyc2EtdGV4dC1lbGxpcHNpcz4gLS0+XG4gICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bSAhPT0gJ0ltYWdlJ1wiIHN0eWxlPVwid29yZC1icmVhazpicmVhay13b3JkXCI+XG57eyB2YWx1ZSB9fVxuPC9kaXY+IC0tPlxuICAgICAgICBAaWYgKGNvbHVtbi5FeHRyYT8uSWNvbkRpc3BsYXlUeXBlRW51bSAhPT0gJ0ltYWdlJykge1xuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtlbGxhcHNpc1RleHRdPVwidmFsdWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVFbGxhcHNpc109XCJlZGl0TW9kZVwiXG4gICAgICAgICAgICBbY2xhc3MuZWxsYXBzaXNdPVwiIWRpc2FibGVFbGxhcHNpc1wiXG4gICAgICAgICAgICBbYXR0ci50aXRsZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAoZWxsYXBzaXNlZCk9XCJvbkVsYXBzaXNlZCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgdmFsdWUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2Zvcm1Db250cm9sVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgIWNvbnRyb2xVaSB8fCBjb250cm9sVWkuRmllbGRVaS5vcmlnaW5hbFh0eXBlID09PSAnVWkuUmVhZE9ubHlGaWVsZCdcbiAgICAgICAgICAgICAgICA/IHJlbmRlckNlbGxUZW1wbGF0ZVxuICAgICAgICAgICAgICAgIDogbGF5b3V0Q29udHJvbFRlbXBsYXRlXG4gICAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbGF5b3V0Q29udHJvbFRlbXBsYXRlPlxuICAgIEBpZiAoY29udHJvbFVpKSB7XG4gICAgPGJzdS1sYXlvdXQtY29udHJvbFxuICAgICAgICBbaW5saW5lRWRpdF09XCJ0cnVlXCJcbiAgICAgICAgW2NhcHRpb25dPVwiY29sdW1uLkNhcHRpb25cIlxuICAgICAgICBbY29uZmlnXT1cImNvbnRyb2xVaVwiXG4gICAgICAgIFtmb2N1c0NvbnRyb2xdPVwiaW5kZXggPT09IDAgJiYgKGlzQ2hlY2tlZCB8fCBpc05ld0lubGluZU1vKVwiXG4gICAgICAgIFtzaG93TGFiZWxdPVwiZm9ybUxheW91dFNob3dMYWJlbFwiXG4gICAgPjwvYnN1LWxheW91dC1jb250cm9sPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3JlbmRlckNlbGxMaXN0VGFzYXZpcj5cbiAgICBAaWYgKG1vW2NvbHVtbi5OYW1lXSAmJiBtb1tjb2x1bW4uTmFtZV0uSW1hZ2VzKSB7XG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiAwLjE1cmVtXCI+XG4gICAgICAgIEBmb3IgKHBpYyBvZiBtb1tjb2x1bW4uTmFtZV0uSW1hZ2VzOyB0cmFjayBwaWMpIHtcbiAgICAgICAgPGltZ1xuICAgICAgICAgICAgZnVsbHNjcmVlblxuICAgICAgICAgICAgZnVsbHNjcmVlbkZpbGVzXG4gICAgICAgICAgICBbZmlsZXNdPVwibW9bY29sdW1uLk5hbWVdLkltYWdlc1wiXG4gICAgICAgICAgICBbaXNJbWFnZUdhbGxlcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgICAgIFtzcmNdPVwicGljLkZpbGVJZCB8IHBpY0ZpZWxkU3JjOiAnQmFyc2FQaWN0dXJlLlRodW1ibmFpbCc6bnVsbDonJzozMjozMlwiXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAzcmVtOyBoZWlnaHQ6IDNyZW1cIlxuICAgICAgICAvPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcmVuZGVyQ2VsbEZpbGVMaXN0S2hhdGk+XG4gICAgQGlmIChtb1tjb2x1bW4uTmFtZV0pIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS12aWV3ZXItYXR0YWNobWVudHNcIj5cbiAgICAgICAgQGZvciAoZmlsZSBvZiBtb1tjb2x1bW4uTmFtZV0uRmlsZXM7IHRyYWNrIGZpbGUpIHsgQGlmICghZmlsZS5Jc0RlbGV0ZWQpIHtcbiAgICAgICAgPGJzdS1maWxlLXZpZXdlci1wb3BvdmVyXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImNvbnRhaW5lckRvbSAmJiBjb250YWluZXJEb20ub2Zmc2V0V2lkdGggPyBjb250YWluZXJEb20ub2Zmc2V0V2lkdGggOiBudWxsXCJcbiAgICAgICAgICAgIFtmaWxlXT1cImZpbGVcIlxuICAgICAgICAgICAgW2ZpbGVzXT1cIm1vW2NvbHVtbi5OYW1lXS5GaWxlc1wiXG4gICAgICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgICAgIFtjYW5Eb3dubG9hZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlUmVtb3ZlXT1cInRydWVcIlxuICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgPjwvYnN1LWZpbGUtdmlld2VyLXBvcG92ZXI+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSA8ZmQtdG9rZW4gKm5nSWY9XCIhZmlsZS5Jc0RlbGV0ZWRcIiBbcmVhZE9ubHldPVwidHJ1ZVwiPnt7IGZpbGUuRmlsZU5hbWUgfX08L2ZkLXRva2VuPiAtLT5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3JlbmRlckNlbGxGaWxlSW5mbz5cbiAgICBAaWYgKG1vW2NvbHVtbi5OYW1lXSkge1xuICAgIDxmZC1hdmF0YXJcbiAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxuICAgICAgICBbc2l6ZV09XCJjb2x1bW4uRmllbGRUeXBlSWQgPT09ICc0MicgfHwgY29sdW1uLkZpZWxkVHlwZUlkID09PSA0MiA/ICd4cycgOiBkZXZpY2VTaXplID09PSAncycgPyAncycgOiAnbSdcIlxuICAgICAgICBbaW1hZ2VdPVwibW9bY29sdW1uLk5hbWVdIHwgcGljRmllbGRTcmM6ICdQaWN0dXJlRmlsZUluZm8nOm51bGw6Y29sdW1uLkZpZWxkRGVmSWRcIlxuICAgID48L2ZkLWF2YXRhcj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNyZW5kZXJDZWxsQ2hlY2JveD5cbiAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwibW9bY29sdW1uLk5hbWVdID09PSB0cnVlID8gJ2FjY2VwdCcgOiAnbGVzcydcIj48L2ZkLWljb24+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNyZW5kZXJDaGVjYm94SW1hZ2U+XG4gICAgQGlmIChjb2x1bW4uRXh0cmE/LlRydWVJbWFnZSA9PT0gJycpIHtcbiAgICB7eyB2YWx1ZSB9fVxuICAgIH0gQGlmIChjb2x1bW4uRXh0cmE/LlRydWVJbWFnZSAhPT0gJycpIHtcbiAgICA8aW1nIFtzcmNdPVwibW9bY29sdW1uLk5hbWVdID8gY29sdW1uLkV4dHJhPy5UcnVlSW1hZ2UgOiBjb2x1bW4uRXh0cmE/LkZhbHNlSW1hZ2VcIiBhbGluZz1cIm1pZGRsZVwiIC8+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcmVuZGVyQ2VsbEltYWdlPlxuICAgIEBpZiAobW9bY29sdW1uLk5hbWVdICYmIG1vW2NvbHVtbi5OYW1lXVsnVXJsJ10pIHtcbiAgICA8ZmQtYXZhdGFyXG4gICAgICAgIFtzaXplXT1cImNvbHVtbi5GaWVsZFR5cGVJZCA9PT0gJzQyJyB8fCBjb2x1bW4uRmllbGRUeXBlSWQgPT09IDQyID8gJ3hzJyA6IGRldmljZVNpemUgPT09ICdzJyA/ICdzJyA6ICdtJ1wiXG4gICAgICAgIFt0cmFuc3BhcmVudF09XCJ0cnVlXCJcbiAgICAgICAgW2ltYWdlXT1cIm1vW2NvbHVtbi5OYW1lXVsnVXJsJ11cIlxuICAgID48L2ZkLWF2YXRhcj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -4,8 +4,9 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
import * as i1 from "barsa-novin-ray-core";
|
|
5
5
|
import * as i2 from "@angular/common";
|
|
6
6
|
import * as i3 from "@fundamental-ngx/core/card";
|
|
7
|
-
import * as i4 from "
|
|
8
|
-
import * as i5 from "../
|
|
7
|
+
import * as i4 from "@fundamental-ngx/core/illustrated-message";
|
|
8
|
+
import * as i5 from "../mask/mask.component";
|
|
9
|
+
import * as i6 from "../blob-viewer/blob-viewer.component";
|
|
9
10
|
export class FileViewerContentComponent extends BaseComponent {
|
|
10
11
|
constructor(_picFieldSrc) {
|
|
11
12
|
super();
|
|
@@ -13,6 +14,10 @@ export class FileViewerContentComponent extends BaseComponent {
|
|
|
13
14
|
this.cantView = new EventEmitter();
|
|
14
15
|
this._height = null;
|
|
15
16
|
this.hideContent = false;
|
|
17
|
+
this.sceneConfig = {
|
|
18
|
+
scene: { url: 'assets/images/sapIllus-Scene-NoMail.svg', id: 'sapIllus-Scene-NoMail-1' },
|
|
19
|
+
dialog: { url: 'assets/images/sapIllus-Dialog-NoMail.svg', id: 'sapIllus-Dialog-NoMail' }
|
|
20
|
+
};
|
|
16
21
|
}
|
|
17
22
|
ngOnInit() {
|
|
18
23
|
super.ngOnInit();
|
|
@@ -27,16 +32,16 @@ export class FileViewerContentComponent extends BaseComponent {
|
|
|
27
32
|
!isImg && (file.thumbnailUrl = getIcon(ext || file.Type));
|
|
28
33
|
if (!isImg && ['webm', 'mp4', 'x-wav', 'x-ms-wma', 'm4a', 'txt', 'pdf'].indexOf(this.file.Type) < 0) {
|
|
29
34
|
this.hideContent = true;
|
|
30
|
-
this._height = '0px';
|
|
35
|
+
// this._height = '0px';
|
|
31
36
|
this.cantView.emit();
|
|
32
37
|
}
|
|
33
38
|
}
|
|
34
39
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FileViewerContentComponent, deps: [{ token: i1.PictureFieldSourcePipe }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: FileViewerContentComponent, selector: "bsu-file-viewer-content", inputs: { fillWidth: "fillWidth", imageOnly: "imageOnly", isImageGallery: "isImageGallery", cardMode: "cardMode", showFooter: "showFooter", showContent: "showContent", width: "width", deviceSize: "deviceSize", cardContentHeight: "cardContentHeight", file: "file" }, outputs: { cantView: "cantView" }, host: { properties: { "style.height": "this._height" } }, usesInheritance: true, ngImport: i0, template: "<ng-container\n *ngTemplateOutlet=\"cardMode ? cardTpl : file.isImage || imageOnly ? showImage : blobViewer\"\n></ng-container>\n\n<ng-template #showImage>\n <div class=\"column big-imgs-box\" [class.fill-width]=\"fillWidth\">\n <div class=\"pics\">\n <bsu-mask></bsu-mask>\n <img imgLazy [imgLazy]=\"file.mediaUrl\" [src]=\"file.mediaUrl\" [style.width]=\"width\" />\n </div>\n </div>\n</ng-template>\n<ng-template #blobViewer>\n @if(!hideContent){\n <bsu-blob-viewer\n [file]=\"file\"\n [style.width]=\"width\"\n fillEmptySpace\n [disable]=\"deviceSize !== 's'\"\n [decrement]=\"'25px'\"\n ></bsu-blob-viewer>\n }@else{ }\n</ng-template>\n<ng-template #cardTpl>\n <fd-card class=\"media\">\n <fd-card-content
|
|
40
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: FileViewerContentComponent, selector: "bsu-file-viewer-content", inputs: { fillWidth: "fillWidth", imageOnly: "imageOnly", isImageGallery: "isImageGallery", cardMode: "cardMode", showFooter: "showFooter", showContent: "showContent", width: "width", deviceSize: "deviceSize", cardContentHeight: "cardContentHeight", file: "file" }, outputs: { cantView: "cantView" }, host: { properties: { "style.height": "this._height" } }, usesInheritance: true, ngImport: i0, template: "<ng-container\n *ngTemplateOutlet=\"cardMode ? cardTpl : file.isImage || imageOnly ? showImage : blobViewer\"\n></ng-container>\n\n<ng-template #showImage>\n <div class=\"column big-imgs-box\" [class.fill-width]=\"fillWidth\">\n <div class=\"pics\">\n <bsu-mask></bsu-mask>\n <img imgLazy [imgLazy]=\"file.mediaUrl\" [src]=\"file.mediaUrl\" [style.width]=\"width\" />\n </div>\n </div>\n</ng-template>\n<ng-template #blobViewer>\n @if(!hideContent){\n <bsu-blob-viewer\n [file]=\"file\"\n [style.width]=\"width\"\n fillEmptySpace\n [disable]=\"deviceSize !== 's'\"\n [decrement]=\"'25px'\"\n ></bsu-blob-viewer>\n }@else{ }\n</ng-template>\n<ng-template #cardTpl>\n <fd-card class=\"media\" [class.hideContent]=\"hideContent\">\n <fd-card-content style=\"text-align: center; padding: 0\" [style.height]=\"cardContentHeight\">\n @if(hideContent && file){\n <figure fd-illustrated-message type=\"dialog\" [svgConfig]=\"sceneConfig\" svgAriaLabel=\"Illustration label\">\n <figcaption fd-illustrated-message-figcaption>\n <h3 fd-illustrated-message-title>{{ 'Unable To Load File' | bbbTranslate }}</h3>\n </figcaption>\n </figure>\n } @else{\n <ng-container\n *ngTemplateOutlet=\"!showContent ? thumbnailTpl : file.isImage || imageOnly ? showImage : blobViewer\"\n ></ng-container>\n }\n </fd-card-content>\n </fd-card>\n</ng-template>\n<ng-template #thumbnailTpl>\n <img imgLazy [imgLazy]=\"file.thumbnailUrl\" [src]=\"file.thumbnailUrl\" [style.width]=\"width\" />\n</ng-template>\n", styles: [":host{display:block;min-height:100%}fd-card.hideContent{box-shadow:none}\n"], dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "directive", type: i1.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], exportAs: ["fillEmptySpace"] }, { kind: "component", type: i3.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i3.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i4.IllustratedMessageComponent, selector: "[fd-illustrated-message]", inputs: ["type", "svgConfig", "svgAriaLabel", "noSvg", "id", "class"] }, { kind: "component", type: i4.IllustratedMessageFigcaptionComponent, selector: "[fd-illustrated-message-figcaption]" }, { kind: "directive", type: i4.IllustratedMessageTitleDirective, selector: "[fd-illustrated-message-title]" }, { kind: "component", type: i5.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i6.BlobViewerComponent, selector: "bsu-blob-viewer", inputs: ["file"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36
41
|
}
|
|
37
42
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: FileViewerContentComponent, decorators: [{
|
|
38
43
|
type: Component,
|
|
39
|
-
args: [{ selector: 'bsu-file-viewer-content', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container\n *ngTemplateOutlet=\"cardMode ? cardTpl : file.isImage || imageOnly ? showImage : blobViewer\"\n></ng-container>\n\n<ng-template #showImage>\n <div class=\"column big-imgs-box\" [class.fill-width]=\"fillWidth\">\n <div class=\"pics\">\n <bsu-mask></bsu-mask>\n <img imgLazy [imgLazy]=\"file.mediaUrl\" [src]=\"file.mediaUrl\" [style.width]=\"width\" />\n </div>\n </div>\n</ng-template>\n<ng-template #blobViewer>\n @if(!hideContent){\n <bsu-blob-viewer\n [file]=\"file\"\n [style.width]=\"width\"\n fillEmptySpace\n [disable]=\"deviceSize !== 's'\"\n [decrement]=\"'25px'\"\n ></bsu-blob-viewer>\n }@else{ }\n</ng-template>\n<ng-template #cardTpl>\n <fd-card class=\"media\">\n <fd-card-content
|
|
44
|
+
args: [{ selector: 'bsu-file-viewer-content', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container\n *ngTemplateOutlet=\"cardMode ? cardTpl : file.isImage || imageOnly ? showImage : blobViewer\"\n></ng-container>\n\n<ng-template #showImage>\n <div class=\"column big-imgs-box\" [class.fill-width]=\"fillWidth\">\n <div class=\"pics\">\n <bsu-mask></bsu-mask>\n <img imgLazy [imgLazy]=\"file.mediaUrl\" [src]=\"file.mediaUrl\" [style.width]=\"width\" />\n </div>\n </div>\n</ng-template>\n<ng-template #blobViewer>\n @if(!hideContent){\n <bsu-blob-viewer\n [file]=\"file\"\n [style.width]=\"width\"\n fillEmptySpace\n [disable]=\"deviceSize !== 's'\"\n [decrement]=\"'25px'\"\n ></bsu-blob-viewer>\n }@else{ }\n</ng-template>\n<ng-template #cardTpl>\n <fd-card class=\"media\" [class.hideContent]=\"hideContent\">\n <fd-card-content style=\"text-align: center; padding: 0\" [style.height]=\"cardContentHeight\">\n @if(hideContent && file){\n <figure fd-illustrated-message type=\"dialog\" [svgConfig]=\"sceneConfig\" svgAriaLabel=\"Illustration label\">\n <figcaption fd-illustrated-message-figcaption>\n <h3 fd-illustrated-message-title>{{ 'Unable To Load File' | bbbTranslate }}</h3>\n </figcaption>\n </figure>\n } @else{\n <ng-container\n *ngTemplateOutlet=\"!showContent ? thumbnailTpl : file.isImage || imageOnly ? showImage : blobViewer\"\n ></ng-container>\n }\n </fd-card-content>\n </fd-card>\n</ng-template>\n<ng-template #thumbnailTpl>\n <img imgLazy [imgLazy]=\"file.thumbnailUrl\" [src]=\"file.thumbnailUrl\" [style.width]=\"width\" />\n</ng-template>\n", styles: [":host{display:block;min-height:100%}fd-card.hideContent{box-shadow:none}\n"] }]
|
|
40
45
|
}], ctorParameters: () => [{ type: i1.PictureFieldSourcePipe }], propDecorators: { fillWidth: [{
|
|
41
46
|
type: Input
|
|
42
47
|
}], imageOnly: [{
|
|
@@ -63,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
63
68
|
type: HostBinding,
|
|
64
69
|
args: ['style.height']
|
|
65
70
|
}] } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS12aWV3ZXItY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi9maWxlLXZpZXdlci1jb250ZW50L2ZpbGUtdmlld2VyLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvZmlsZS12aWV3ZXItY29udGVudC9maWxlLXZpZXdlci1jb250ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFDSCxhQUFhLEVBR2IsT0FBTyxFQUNQLE9BQU8sRUFFVixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQVE5QixNQUFNLE9BQU8sMEJBQTJCLFNBQVEsYUFBYTtJQWtCekQsWUFBb0IsWUFBb0M7UUFDcEQsS0FBSyxFQUFFLENBQUM7UUFEUSxpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUFQOUMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDWCxZQUFPLEdBQWtCLElBQUksQ0FBQztRQUMzRCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixnQkFBVyxHQUFHO1lBQ1YsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLHlDQUF5QyxFQUFFLEVBQUUsRUFBRSx5QkFBeUIsRUFBRTtZQUN4RixNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsMENBQTBDLEVBQUUsRUFBRSxFQUFFLHdCQUF3QixFQUFFO1NBQzVGLENBQUM7SUFHRixDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsS0FBSztZQUNELENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FDNUMsSUFBSSxDQUFDLEVBQUUsRUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNyRCxJQUFJLEVBQ0osRUFBRSxFQUNGLEdBQUcsRUFDSCxHQUFHLENBQ04sQ0FBQztZQUNGLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FDeEMsSUFBSSxDQUFDLEVBQUUsRUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUN4RCxFQUFFLEVBQ0YsRUFBRSxFQUNGLENBQUMsRUFDRCxDQUFDLENBQ0osQ0FBQztZQUNGLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7OEdBcERRLDBCQUEwQjtrR0FBMUIsMEJBQTBCLDZiQ2hCdkMsMnNEQTJDQTs7MkZEM0JhLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDSSx5QkFBeUIsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU07MkZBR3RDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDc0IsT0FBTztzQkFBbkMsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgQWJicmV2YXRpb25EZXZpY2VTaXplLFxuICAgIEZpbGVBdHRhY2htZW50SW5mbyxcbiAgICBnZXRJY29uLFxuICAgIGlzSW1hZ2UsXG4gICAgUGljdHVyZUZpZWxkU291cmNlUGlwZVxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LWZpbGUtdmlld2VyLWNvbnRlbnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWxlLXZpZXdlci1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlLXZpZXdlci1jb250ZW50LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVZpZXdlckNvbnRlbnRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBmaWxsV2lkdGg6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaW1hZ2VPbmx5OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzSW1hZ2VHYWxsZXJ5OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNhcmRNb2RlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dGb290ZXI6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2hvd0NvbnRlbnQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgd2lkdGg6IHN0cmluZztcbiAgICBASW5wdXQoKSBkZXZpY2VTaXplOiBBYmJyZXZhdGlvbkRldmljZVNpemU7XG4gICAgQElucHV0KCkgY2FyZENvbnRlbnRIZWlnaHQ6IHN0cmluZyB8IG51bGw7XG4gICAgQElucHV0KCkgZmlsZTogRmlsZUF0dGFjaG1lbnRJbmZvO1xuICAgIEBPdXRwdXQoKSBjYW50VmlldyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodCcpIF9oZWlnaHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIGhpZGVDb250ZW50ID0gZmFsc2U7XG4gICAgc2NlbmVDb25maWcgPSB7XG4gICAgICAgIHNjZW5lOiB7IHVybDogJ2Fzc2V0cy9pbWFnZXMvc2FwSWxsdXMtU2NlbmUtTm9NYWlsLnN2ZycsIGlkOiAnc2FwSWxsdXMtU2NlbmUtTm9NYWlsLTEnIH0sXG4gICAgICAgIGRpYWxvZzogeyB1cmw6ICdhc3NldHMvaW1hZ2VzL3NhcElsbHVzLURpYWxvZy1Ob01haWwuc3ZnJywgaWQ6ICdzYXBJbGx1cy1EaWFsb2ctTm9NYWlsJyB9XG4gICAgfTtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9waWNGaWVsZFNyYzogUGljdHVyZUZpZWxkU291cmNlUGlwZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5maWxlO1xuICAgICAgICBjb25zdCBzcGwgPSBmaWxlLkZpbGVOYW1lPy5zcGxpdCgnLicpO1xuICAgICAgICBjb25zdCBleHQgPSBzcGwgPyBzcGxbc3BsLmxlbmd0aCAtIDFdIDogJyc7XG4gICAgICAgIGNvbnN0IGlzSW1nID0gaXNJbWFnZShleHQpO1xuICAgICAgICBpc0ltZyAmJlxuICAgICAgICAgICAgKGZpbGUudGh1bWJuYWlsVXJsID0gdGhpcy5fcGljRmllbGRTcmMudHJhbnNmb3JtKFxuICAgICAgICAgICAgICAgIGZpbGUuSWQsXG4gICAgICAgICAgICAgICAgdGhpcy5pc0ltYWdlR2FsbGVyeSA/ICdCYXJzYVBpY3R1cmUuVGh1bWJuYWlsJyA6ICdJRCcsXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAxMjAsXG4gICAgICAgICAgICAgICAgMTIwXG4gICAgICAgICAgICApKSAmJlxuICAgICAgICAgICAgKGZpbGUubWVkaWFVcmwgPSB0aGlzLl9waWNGaWVsZFNyYy50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgZmlsZS5JZCxcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW1hZ2VHYWxsZXJ5ID8gJ0JhcnNhUGljdHVyZS5GdWxsJyA6ICdBdHRhY2htZW50JyxcbiAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICkpICYmXG4gICAgICAgICAgICAoZmlsZS5pc0ltYWdlID0gdHJ1ZSk7XG4gICAgICAgICFpc0ltZyAmJiAoZmlsZS50aHVtYm5haWxVcmwgPSBnZXRJY29uKGV4dCB8fCBmaWxlLlR5cGUpKTtcbiAgICAgICAgaWYgKCFpc0ltZyAmJiBbJ3dlYm0nLCAnbXA0JywgJ3gtd2F2JywgJ3gtbXMtd21hJywgJ200YScsICd0eHQnLCAncGRmJ10uaW5kZXhPZih0aGlzLmZpbGUuVHlwZSkgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIHRoaXMuX2hlaWdodCA9ICcwcHgnO1xuICAgICAgICAgICAgdGhpcy5jYW50Vmlldy5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJkTW9kZSA/IGNhcmRUcGwgOiBmaWxlLmlzSW1hZ2UgfHwgaW1hZ2VPbmx5ID8gc2hvd0ltYWdlIDogYmxvYlZpZXdlclwiXG4+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjc2hvd0ltYWdlPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gYmlnLWltZ3MtYm94XCIgW2NsYXNzLmZpbGwtd2lkdGhdPVwiZmlsbFdpZHRoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwaWNzXCI+XG4gICAgICAgICAgICA8YnN1LW1hc2s+PC9ic3UtbWFzaz5cbiAgICAgICAgICAgIDxpbWcgaW1nTGF6eSBbaW1nTGF6eV09XCJmaWxlLm1lZGlhVXJsXCIgW3NyY109XCJmaWxlLm1lZGlhVXJsXCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNibG9iVmlld2VyPlxuICAgIEBpZighaGlkZUNvbnRlbnQpe1xuICAgIDxic3UtYmxvYi12aWV3ZXJcbiAgICAgICAgW2ZpbGVdPVwiZmlsZVwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiXG4gICAgICAgIGZpbGxFbXB0eVNwYWNlXG4gICAgICAgIFtkaXNhYmxlXT1cImRldmljZVNpemUgIT09ICdzJ1wiXG4gICAgICAgIFtkZWNyZW1lbnRdPVwiJzI1cHgnXCJcbiAgICA+PC9ic3UtYmxvYi12aWV3ZXI+XG4gICAgfUBlbHNleyB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjYXJkVHBsPlxuICAgIDxmZC1jYXJkIGNsYXNzPVwibWVkaWFcIiBbY2xhc3MuaGlkZUNvbnRlbnRdPVwiaGlkZUNvbnRlbnRcIj5cbiAgICAgICAgPGZkLWNhcmQtY29udGVudCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzogMFwiIFtzdHlsZS5oZWlnaHRdPVwiY2FyZENvbnRlbnRIZWlnaHRcIj5cbiAgICAgICAgICAgIEBpZihoaWRlQ29udGVudCAmJiBmaWxlKXtcbiAgICAgICAgICAgIDxmaWd1cmUgZmQtaWxsdXN0cmF0ZWQtbWVzc2FnZSB0eXBlPVwiZGlhbG9nXCIgW3N2Z0NvbmZpZ109XCJzY2VuZUNvbmZpZ1wiIHN2Z0FyaWFMYWJlbD1cIklsbHVzdHJhdGlvbiBsYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxmaWdjYXB0aW9uIGZkLWlsbHVzdHJhdGVkLW1lc3NhZ2UtZmlnY2FwdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPGgzIGZkLWlsbHVzdHJhdGVkLW1lc3NhZ2UtdGl0bGU+e3sgJ1VuYWJsZSBUbyBMb2FkIEZpbGUnIHwgYmJiVHJhbnNsYXRlIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8L2ZpZ2NhcHRpb24+XG4gICAgICAgICAgICA8L2ZpZ3VyZT5cbiAgICAgICAgICAgIH0gQGVsc2V7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCIhc2hvd0NvbnRlbnQgPyB0aHVtYm5haWxUcGwgOiBmaWxlLmlzSW1hZ2UgfHwgaW1hZ2VPbmx5ID8gc2hvd0ltYWdlIDogYmxvYlZpZXdlclwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZmQtY2FyZC1jb250ZW50PlxuICAgIDwvZmQtY2FyZD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3RodW1ibmFpbFRwbD5cbiAgICA8aW1nIGltZ0xhenkgW2ltZ0xhenldPVwiZmlsZS50aHVtYm5haWxVcmxcIiBbc3JjXT1cImZpbGUudGh1bWJuYWlsVXJsXCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|