@seniorsistemas/data-seniorx-core 3.3.0 → 3.4.0-main-e91c7773
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/core/constants/nested-table.const.d.ts +3 -0
- package/core/constants/table.const.d.ts +2 -0
- package/core/types/nested-table.type.d.ts +18 -0
- package/esm2022/core/constants/nested-table.const.mjs +4 -0
- package/esm2022/core/constants/table.const.mjs +15 -1
- package/esm2022/core/types/nested-table.type.mjs +2 -0
- package/esm2022/features/datepicker/datepicker.component.mjs +179 -9
- package/esm2022/features/nested-table/nested-table.component.mjs +132 -0
- package/esm2022/features/panel/panel.component.mjs +3 -3
- package/esm2022/features/table/components/table-actions-menu.component.mjs +47 -6
- package/esm2022/features/table/components/table-cell-content.component.mjs +3 -3
- package/esm2022/features/table/table.component.mjs +17 -67
- package/esm2022/features/table/utils/table-data.util.mjs +40 -1
- package/esm2022/locales/en.json +5 -0
- package/esm2022/locales/es-CO.json +5 -0
- package/esm2022/locales/pt.json +5 -0
- package/esm2022/providers/features.provider.mjs +3 -1
- package/esm2022/public-api.mjs +2 -1
- package/features/datepicker/datepicker.component.d.ts +14 -1
- package/features/nested-table/nested-table.component.d.ts +47 -0
- package/features/table/components/table-actions-menu.component.d.ts +16 -1
- package/features/table/table.component.d.ts +0 -1
- package/features/table/utils/table-data.util.d.ts +7 -1
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs +435 -83
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/src/locales/en.json +5 -0
- package/src/locales/es-CO.json +5 -0
- package/src/locales/pt.json +5 -0
- package/styles/accessibility.scss +92 -0
- package/styles.css +89 -1
|
@@ -94,7 +94,7 @@ export class TableCellContentComponent {
|
|
|
94
94
|
this.toggleActionsMenu.emit({ event, trigger });
|
|
95
95
|
}
|
|
96
96
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableCellContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
97
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableCellContentComponent, isStandalone: true, selector: "sdc-table-cell-content", inputs: { cellConfigs: "cellConfigs", col: "col", resolveValue: "resolveValue", row: "row", actionsMenuOpen: "actionsMenuOpen", actionsMenuId: "actionsMenuId", defaultTextOverflow: "defaultTextOverflow", rowCheckboxId: "rowCheckboxId", rowLabel: "rowLabel", rowSelectionDisabled: "rowSelectionDisabled", forceLeftAlign: "forceLeftAlign", rowSelected: "rowSelected" }, outputs: { toggleActionsMenu: "toggleActionsMenu", toggleRow: "toggleRow", triggerButtonAction: "triggerButtonAction" }, host: { properties: { "class.sdc-table-cell-content--align-left": "resolvedAlignment === 'left'", "class.sdc-table-cell-content--align-center": "resolvedAlignment === 'center'", "class.sdc-table-cell-content--align-right": "resolvedAlignment === 'right'", "class.sdc-table-cell-content--nowrap": "col?.textOverflow === 'none'" } }, ngImport: i0, template: "<div class=\"sdc-table-content\">\n @if (col.content?.length) {\n <div class=\"sdc-table-multi-content\">\n @for (item of col.content!; track $index) {\n @switch (item.type ?? 'text') {\n @case ('strong') {\n <strong\n [ngStyle]=\"item.style\"\n [class]=\"item.class ?? ''\"\n >{{ cellTextValue(item.field) | translate }}</strong>\n }\n @case ('code') {\n <code [ngStyle]=\"item.style\" [class]=\"item.class ?? ''\">{{ cellTextValue(item.field) }}</code>\n }\n @default {\n <span [ngStyle]=\"item.style\" [class]=\"item.class ?? ''\">{{ cellTextValue(item.field) | translate }}</span>\n }\n }\n }\n </div>\n } @else {\n @switch (col.type ?? 'text') {\n @case ('checkbox-selection') {\n <div class=\"sdc-table-checkbox\">\n <input\n type=\"checkbox\"\n [id]=\"rowCheckboxId\"\n [disabled]=\"rowSelectionDisabled\"\n [checked]=\"rowSelected\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (change)=\"toggleRow.emit(getCheckedValue($event))\"\n [attr.aria-label]=\"\n 'platform.datacore.accessibility_select_row'\n | translate: { name: (rowLabel | translate) }\n \"\n [attr.aria-checked]=\"rowSelected\"\n />\n <label [attr.for]=\"rowCheckboxId\" class=\"sr-only\">\n {{\n 'platform.datacore.accessibility_select_row'\n | translate: { name: (rowLabel | translate) }\n }}\n </label>\n </div>\n }\n\n @case ('date') {\n <span class=\"sdc-table-text\" [attr.title]=\"ellipsisTitleText(formatDate())\">{{ formatDate() }}</span>\n }\n\n @case ('strong') {\n <span class=\"sdc-table-strong-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n\n @case ('code') {\n <code class=\"sdc-table-code-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue())\">{{ displayText() }}</code>\n }\n\n @case ('link') {\n <a class=\"sdc-table-link\"\n [href]=\"cellTextValue()\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </a>\n }\n\n @case ('currency') {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(formatCurrency())\">{{ formatCurrency() }}</span>\n }\n\n @case ('tag') {\n <div class=\"sdc-table-tags\">\n @for (tagItem of tagItems(); track tagItem.label + '-' + $index) {\n <span\n class=\"sdc-table-tag\"\n [class.sdc-table-tag--enabled]=\"tagItem.tone === 'enabled'\"\n [class.sdc-table-tag--disabled]=\"tagItem.tone === 'disabled'\"\n [ngStyle]=\"tagItem.styles\"\n [attr.title]=\"tagItem.tooltip ? (tagItem.tooltip | translate) : (tagItem.label | translate)\"\n >\n @if (tagItem.icon) {\n <sdc-icon-renderer\n class=\"sdc-table-tag__icon\"\n [icon]=\"tagItem.icon\"\n [iconType]=\"tagItem.iconType\"\n [size]=\"tagIconSize\"\n ></sdc-icon-renderer>\n }\n {{ tagItem.label | translate }}\n </span>\n }\n\n @if (tagOverflow(); as overflow) {\n @if (overflow.hiddenCount > 0) {\n <span\n class=\"sdc-table-tag sdc-table-tag--more\"\n [attr.title]=\"\n 'platform.datacore.accessibility_table_tag_more_items'\n | translate: { items: tagOverflowTitle(overflow) }\n \"\n >\u2026</span>\n }\n }\n </div>\n }\n\n @case ('button') {\n <div class=\"sdc-table-button\">\n <sdc-button\n class=\"sdc-table-action-button\"\n [size]=\"cellConfigs.button.size ?? 'default'\"\n [priority]=\"cellConfigs.button.priority || 'primary'\"\n [icon]=\"cellConfigs.button.icon\"\n [label]=\"cellConfigs.button.label ?? ''\"\n [disabled]=\"cellConfigs.button.disabled ?? false\"\n [title]=\"cellConfigs.button.tooltip\"\n [attr.size]=\"cellConfigs.button.size\"\n [attr.priority]=\"cellConfigs.button.priority || 'primary'\"\n [attr.severity]=\"cellConfigs.button.priority || 'primary'\"\n [attr.icon]=\"cellConfigs.button.icon\"\n [attr.label]=\"cellConfigs.button.label\"\n [attr.disabled]=\"cellConfigs.button.disabled ? '' : null\"\n [attr.title]=\"cellConfigs.button.tooltip || null\"\n [attr.aria-label]=\"\n (buttonAriaLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.data-key]=\"buttonKey()\"\n (click)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.enter)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.space)=\"$event.preventDefault(); cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n ></sdc-button>\n </div>\n }\n\n @case ('actions') {\n <div\n class=\"sdc-table-actions\"\n [class.sdc-table-actions--open]=\"actionsMenuOpen\"\n >\n <button\n #actionsTrigger\n type=\"button\"\n class=\"sdc-table-actions-trigger\"\n [class.sdc-table-actions-trigger--open]=\"actionsMenuOpen\"\n [attr.aria-label]=\"\n (actionsButtonLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-controls]=\"actionsMenuOpen ? actionsMenuId : null\"\n [attr.aria-expanded]=\"actionsMenuOpen\"\n (click)=\"onActionsClick($event, actionsTrigger)\"\n >\n <span class=\"sdc-table-actions-trigger__label\">\n {{ actionsButtonLabel() | translate }}\n </span>\n <i class=\"fas fa-chevron-down sdc-table-actions-trigger__icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n\n @case ('icon') {\n @if (iconPresentation(); as iconItem) {\n <span\n class=\"sdc-table-icon\"\n [ngStyle]=\"iconItem.colorStyle\"\n [attr.title]=\"iconItem.tooltip ? (iconItem.tooltip | translate) : null\"\n [attr.aria-label]=\"\n (iconItem.label || iconItem.tooltip)\n ? ((iconItem.label || iconItem.tooltip)! | translate)\n : null\n \"\n >\n @if (iconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"iconItem.icon\"\n [iconType]=\"iconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (iconItem.label) {\n <span class=\"sdc-table-icon__label\">{{ iconItem.label | translate }}</span>\n }\n </span>\n }\n }\n\n @case ('icon-title') {\n @if (titleIconPresentation(); as titleIconItem) {\n <span\n class=\"sdc-table-icon-title\"\n [ngStyle]=\"titleIconItem.colorStyle\"\n [attr.title]=\"titleIconItem.tooltip ? (titleIconItem.tooltip | translate) : null\"\n >\n @if (titleIconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"titleIconItem.icon\"\n [iconType]=\"titleIconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (titleIconItem.label) {\n <span [attr.title]=\"ellipsisTitleText(titleIconItem.label | translate)\">\n {{ titleIconItem.label | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n </span>\n }\n }\n\n @default {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n }\n }\n</div>\n", styles: [":host{display:block;width:100%;min-width:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sdc-table-content{display:flex;align-items:center;width:100%;min-width:0}:host(.sdc-table-cell-content--align-left) .sdc-table-content{justify-content:flex-start;text-align:left}:host(.sdc-table-cell-content--align-center) .sdc-table-content{justify-content:center;text-align:center}:host(.sdc-table-cell-content--align-right) .sdc-table-content{justify-content:flex-end;text-align:right}.sdc-table-multi-content{display:flex;flex-direction:column;gap:.25rem;min-width:0;max-width:100%}.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span,.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label,.sdc-table-link{min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-table-strong-label{font-weight:500}.sdc-table-code-label{color:var(--sdc-tab-primary)}.sdc-table-link{display:inline-block;color:var(--sdc-tab-primary);text-decoration:underline}.sdc-table-link:hover,.sdc-table-link:focus-visible{text-decoration:none}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:.5rem;min-width:0;max-width:100%;overflow:hidden}.sdc-table-tag{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;width:fit-content;min-width:fit-content;max-width:100%;border-radius:9999px;font-weight:500;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid currentColor;box-sizing:border-box;font-size:.875rem;padding:.35rem .875rem}.sdc-table-tag__icon{flex:0 0 auto}.sdc-table-tag--enabled{background:#dcfce7;color:#16a34a;border-color:#16a34a}.sdc-table-tag--disabled{background:#fee2e2;color:#ef4444;border-color:#ef4444}.sdc-table-tag--more{background:#f3f4f6;color:#374151;border-color:#374151;cursor:default;font-weight:700}.sdc-table-button{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%;min-width:0}.sdc-table-button ::ng-deep sdc-button,.sdc-table-button ::ng-deep button{min-height:unset;min-width:unset;max-width:100%}.sdc-table-action-button{width:100%;max-width:100%;min-width:0}.sdc-table-icon,.sdc-table-icon-title{display:inline-flex;align-items:center;gap:.5rem;min-width:0;max-width:100%}.sdc-table-icon__label,.sdc-table-icon-title span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-checkbox input[type=checkbox]{cursor:pointer}.sdc-table-checkbox input[type=checkbox]:disabled{cursor:not-allowed;opacity:.55}.sdc-table-actions{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100%;min-width:0}.sdc-table-actions-trigger{appearance:none;border:1px solid #c9ced6;background:#fff;border-radius:999px;min-width:4.875rem;height:2rem;padding:0 .75rem;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;font:inherit;font-size:.8125rem;color:#374151;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.sdc-table-actions-trigger:hover{background:#f9fafb}.sdc-table-actions-trigger:focus-visible,.sdc-table-actions-trigger--open{outline:none;border-color:#9ca3af;box-shadow:0 0 0 2px #1118270a}.sdc-table-actions-trigger__label{line-height:1;white-space:nowrap}.sdc-table-actions-trigger__icon{font-size:.625rem;line-height:1;color:#6b7280}@media (max-width: 768px){.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}.sdc-table-tag{font-size:.8125rem;padding:.35rem .75rem}.sdc-table-actions-trigger{min-width:4.375rem;height:1.75rem;padding:0 .625rem;font-size:.75rem}.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label,.sdc-table-link,.sdc-table-icon__label,.sdc-table-icon-title span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["id", "label", "ariaLabel", "disabled", "loading", "width", "priority", "size", "type", "icon", "rightIcon", "auxiliary", "rounded", "caret", "tooltip", "animation", "slide", "styleClass", "badge", "menuOptions", "menuContext", "model"], outputs: ["clicked"] }, { kind: "component", type: IconRendererComponent, selector: "sdc-icon-renderer", inputs: ["icon", "iconType", "size"] }, { kind: "pipe", type: SdcTruncatePipe, name: "sdcTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
97
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TableCellContentComponent, isStandalone: true, selector: "sdc-table-cell-content", inputs: { cellConfigs: "cellConfigs", col: "col", resolveValue: "resolveValue", row: "row", actionsMenuOpen: "actionsMenuOpen", actionsMenuId: "actionsMenuId", defaultTextOverflow: "defaultTextOverflow", rowCheckboxId: "rowCheckboxId", rowLabel: "rowLabel", rowSelectionDisabled: "rowSelectionDisabled", forceLeftAlign: "forceLeftAlign", rowSelected: "rowSelected" }, outputs: { toggleActionsMenu: "toggleActionsMenu", toggleRow: "toggleRow", triggerButtonAction: "triggerButtonAction" }, host: { properties: { "class.sdc-table-cell-content--align-left": "resolvedAlignment === 'left'", "class.sdc-table-cell-content--align-center": "resolvedAlignment === 'center'", "class.sdc-table-cell-content--align-right": "resolvedAlignment === 'right'", "class.sdc-table-cell-content--nowrap": "col?.textOverflow === 'none'" } }, ngImport: i0, template: "<div class=\"sdc-table-content\">\n @if (col.content?.length) {\n <div class=\"sdc-table-multi-content\">\n @for (item of col.content!; track $index) {\n @switch (item.type ?? 'text') {\n @case ('strong') {\n <strong\n [ngStyle]=\"item.style\"\n [class]=\"item.class ?? ''\"\n [attr.title]=\"ellipsisTitleText(cellTextValue(item.field) | translate)\"\n >{{ displayText(item.field) | translate }}</strong>\n }\n @case ('code') {\n <code\n [ngStyle]=\"item.style\"\n [class]=\"item.class ?? ''\"\n [attr.title]=\"ellipsisTitleText(cellTextValue(item.field))\"\n >{{ displayText(item.field) }}</code>\n }\n @default {\n <span\n [ngStyle]=\"item.style\"\n [class]=\"item.class ?? ''\"\n [attr.title]=\"ellipsisTitleText(cellTextValue(item.field) | translate)\"\n >{{ displayText(item.field) | translate }}</span>\n }\n }\n }\n </div>\n } @else {\n @switch (col.type ?? 'text') {\n @case ('checkbox-selection') {\n <div class=\"sdc-table-checkbox\">\n <input\n type=\"checkbox\"\n [id]=\"rowCheckboxId\"\n [disabled]=\"rowSelectionDisabled\"\n [checked]=\"rowSelected\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (change)=\"toggleRow.emit(getCheckedValue($event))\"\n [attr.aria-label]=\"\n 'platform.datacore.accessibility_select_row'\n | translate: { name: (rowLabel | translate) }\n \"\n [attr.aria-checked]=\"rowSelected\"\n />\n <label [attr.for]=\"rowCheckboxId\" class=\"sr-only\">\n {{\n 'platform.datacore.accessibility_select_row'\n | translate: { name: (rowLabel | translate) }\n }}\n </label>\n </div>\n }\n\n @case ('date') {\n <span class=\"sdc-table-text\" [attr.title]=\"ellipsisTitleText(formatDate())\">{{ formatDate() }}</span>\n }\n\n @case ('strong') {\n <span class=\"sdc-table-strong-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n\n @case ('code') {\n <code class=\"sdc-table-code-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue())\">{{ displayText() }}</code>\n }\n\n @case ('link') {\n <a class=\"sdc-table-link\"\n [href]=\"cellTextValue()\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </a>\n }\n\n @case ('currency') {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(formatCurrency())\">{{ formatCurrency() }}</span>\n }\n\n @case ('tag') {\n <div class=\"sdc-table-tags\">\n @for (tagItem of tagItems(); track tagItem.label + '-' + $index) {\n <span\n class=\"sdc-table-tag\"\n [class.sdc-table-tag--enabled]=\"tagItem.tone === 'enabled'\"\n [class.sdc-table-tag--disabled]=\"tagItem.tone === 'disabled'\"\n [ngStyle]=\"tagItem.styles\"\n [attr.title]=\"tagItem.tooltip ? (tagItem.tooltip | translate) : (tagItem.label | translate)\"\n >\n @if (tagItem.icon) {\n <sdc-icon-renderer\n class=\"sdc-table-tag__icon\"\n [icon]=\"tagItem.icon\"\n [iconType]=\"tagItem.iconType\"\n [size]=\"tagIconSize\"\n ></sdc-icon-renderer>\n }\n {{ tagItem.label | translate }}\n </span>\n }\n\n @if (tagOverflow(); as overflow) {\n @if (overflow.hiddenCount > 0) {\n <span\n class=\"sdc-table-tag sdc-table-tag--more\"\n [attr.title]=\"\n 'platform.datacore.accessibility_table_tag_more_items'\n | translate: { items: tagOverflowTitle(overflow) }\n \"\n >\u2026</span>\n }\n }\n </div>\n }\n\n @case ('button') {\n <div class=\"sdc-table-button\">\n <sdc-button\n class=\"sdc-table-action-button\"\n [size]=\"cellConfigs.button.size ?? 'default'\"\n [priority]=\"cellConfigs.button.priority || 'primary'\"\n [icon]=\"cellConfigs.button.icon\"\n [label]=\"cellConfigs.button.label ?? ''\"\n [disabled]=\"cellConfigs.button.disabled ?? false\"\n [title]=\"cellConfigs.button.tooltip\"\n [attr.size]=\"cellConfigs.button.size\"\n [attr.priority]=\"cellConfigs.button.priority || 'primary'\"\n [attr.severity]=\"cellConfigs.button.priority || 'primary'\"\n [attr.icon]=\"cellConfigs.button.icon\"\n [attr.label]=\"cellConfigs.button.label\"\n [attr.disabled]=\"cellConfigs.button.disabled ? '' : null\"\n [attr.title]=\"cellConfigs.button.tooltip || null\"\n [attr.aria-label]=\"\n (buttonAriaLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.data-key]=\"buttonKey()\"\n (click)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.enter)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.space)=\"$event.preventDefault(); cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n ></sdc-button>\n </div>\n }\n\n @case ('actions') {\n <div\n class=\"sdc-table-actions\"\n [class.sdc-table-actions--open]=\"actionsMenuOpen\"\n >\n <button\n #actionsTrigger\n type=\"button\"\n class=\"sdc-table-actions-trigger\"\n [class.sdc-table-actions-trigger--open]=\"actionsMenuOpen\"\n [attr.aria-label]=\"\n (actionsButtonLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-controls]=\"actionsMenuOpen ? actionsMenuId : null\"\n [attr.aria-expanded]=\"actionsMenuOpen\"\n (click)=\"onActionsClick($event, actionsTrigger)\"\n >\n <span class=\"sdc-table-actions-trigger__label\">\n {{ actionsButtonLabel() | translate }}\n </span>\n <i class=\"fas fa-chevron-down sdc-table-actions-trigger__icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n\n @case ('icon') {\n @if (iconPresentation(); as iconItem) {\n <span\n class=\"sdc-table-icon\"\n [ngStyle]=\"iconItem.colorStyle\"\n [attr.title]=\"iconItem.tooltip ? (iconItem.tooltip | translate) : null\"\n [attr.aria-label]=\"\n (iconItem.label || iconItem.tooltip)\n ? ((iconItem.label || iconItem.tooltip)! | translate)\n : null\n \"\n >\n @if (iconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"iconItem.icon\"\n [iconType]=\"iconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (iconItem.label) {\n <span class=\"sdc-table-icon__label\">{{ iconItem.label | translate }}</span>\n }\n </span>\n }\n }\n\n @case ('icon-title') {\n @if (titleIconPresentation(); as titleIconItem) {\n <span\n class=\"sdc-table-icon-title\"\n [ngStyle]=\"titleIconItem.colorStyle\"\n [attr.title]=\"titleIconItem.tooltip ? (titleIconItem.tooltip | translate) : null\"\n >\n @if (titleIconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"titleIconItem.icon\"\n [iconType]=\"titleIconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (titleIconItem.label) {\n <span [attr.title]=\"ellipsisTitleText(titleIconItem.label | translate)\">\n {{ titleIconItem.label | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n </span>\n }\n }\n\n @default {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n }\n }\n</div>\n", styles: [":host{display:block;width:100%;min-width:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sdc-table-content{display:flex;align-items:center;width:100%;min-width:0}:host(.sdc-table-cell-content--align-left) .sdc-table-content{justify-content:flex-start;text-align:left}:host(.sdc-table-cell-content--align-center) .sdc-table-content{justify-content:center;text-align:center}:host(.sdc-table-cell-content--align-right) .sdc-table-content{justify-content:flex-end;text-align:right}.sdc-table-multi-content{display:flex;flex-direction:column;gap:.25rem;min-width:0;max-width:100%}.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span,.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label,.sdc-table-link{min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-table-strong-label{font-weight:500}.sdc-table-code-label{color:var(--sdc-tab-primary)}.sdc-table-link{display:inline-block;color:var(--sdc-tab-primary);text-decoration:underline}.sdc-table-link:hover,.sdc-table-link:focus-visible{text-decoration:none}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:.5rem;min-width:0;max-width:100%;overflow:hidden}.sdc-table-tag{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;width:fit-content;min-width:fit-content;max-width:100%;border-radius:9999px;font-weight:500;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid currentColor;box-sizing:border-box;font-size:.875rem;padding:.35rem .875rem}.sdc-table-tag__icon{flex:0 0 auto}.sdc-table-tag--enabled{background:#dcfce7;color:#16a34a;border-color:#16a34a}.sdc-table-tag--disabled{background:#fee2e2;color:#ef4444;border-color:#ef4444}.sdc-table-tag--more{background:#f3f4f6;color:#374151;border-color:#374151;cursor:default;font-weight:700}.sdc-table-button{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%;min-width:0}.sdc-table-button ::ng-deep sdc-button,.sdc-table-button ::ng-deep button{min-height:unset;min-width:unset;max-width:100%}.sdc-table-action-button{width:100%;max-width:100%;min-width:0}.sdc-table-icon,.sdc-table-icon-title{display:inline-flex;align-items:center;gap:.5rem;min-width:0;max-width:100%}.sdc-table-icon__label,.sdc-table-icon-title span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-checkbox input[type=checkbox]{cursor:pointer}.sdc-table-checkbox input[type=checkbox]:disabled{cursor:not-allowed;opacity:.55}.sdc-table-actions{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100%;min-width:0}.sdc-table-actions-trigger{appearance:none;border:1px solid #c9ced6;background:#fff;border-radius:999px;min-width:4.875rem;height:2rem;padding:0 .75rem;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;font:inherit;font-size:.8125rem;color:#374151;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.sdc-table-actions-trigger:hover{background:#f9fafb}.sdc-table-actions-trigger:focus-visible,.sdc-table-actions-trigger--open{outline:none;border-color:#9ca3af;box-shadow:0 0 0 2px #1118270a}.sdc-table-actions-trigger__label{line-height:1;white-space:nowrap}.sdc-table-actions-trigger__icon{font-size:.625rem;line-height:1;color:#6b7280}@media (max-width: 768px){.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}.sdc-table-tag{font-size:.8125rem;padding:.35rem .75rem}.sdc-table-actions-trigger{min-width:4.375rem;height:1.75rem;padding:0 .625rem;font-size:.75rem}.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label,.sdc-table-link,.sdc-table-icon__label,.sdc-table-icon-title span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}:host-context(.sdc-table-expandable-summary-value) .sdc-table-text,:host-context(.sdc-table-expandable-summary-value) .sdc-table-multi-content>*{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["id", "label", "ariaLabel", "disabled", "loading", "width", "priority", "size", "type", "icon", "rightIcon", "auxiliary", "rounded", "caret", "tooltip", "animation", "slide", "styleClass", "badge", "menuOptions", "menuContext", "model"], outputs: ["clicked"] }, { kind: "component", type: IconRendererComponent, selector: "sdc-icon-renderer", inputs: ["icon", "iconType", "size"] }, { kind: "pipe", type: SdcTruncatePipe, name: "sdcTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
98
98
|
}
|
|
99
99
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableCellContentComponent, decorators: [{
|
|
100
100
|
type: Component,
|
|
@@ -103,7 +103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
103
103
|
'[class.sdc-table-cell-content--align-center]': "resolvedAlignment === 'center'",
|
|
104
104
|
'[class.sdc-table-cell-content--align-right]': "resolvedAlignment === 'right'",
|
|
105
105
|
'[class.sdc-table-cell-content--nowrap]': "col?.textOverflow === 'none'"
|
|
106
|
-
}, template: "<div class=\"sdc-table-content\">\n @if (col.content?.length) {\n <div class=\"sdc-table-multi-content\">\n @for (item of col.content!; track $index) {\n @switch (item.type ?? 'text') {\n @case ('strong') {\n <strong\n [ngStyle]=\"item.style\"\n [class]=\"item.class ?? ''\"\n >{{ cellTextValue(item.field) | translate }}</strong>\n }\n @case ('code') {\n <code [ngStyle]=\"item.style\" [class]=\"item.class ?? ''\">{{ cellTextValue(item.field) }}</code>\n }\n @default {\n <span [ngStyle]=\"item.style\" [class]=\"item.class ?? ''\">{{ cellTextValue(item.field) | translate }}</span>\n }\n }\n }\n </div>\n } @else {\n @switch (col.type ?? 'text') {\n @case ('checkbox-selection') {\n <div class=\"sdc-table-checkbox\">\n <input\n type=\"checkbox\"\n [id]=\"rowCheckboxId\"\n [disabled]=\"rowSelectionDisabled\"\n [checked]=\"rowSelected\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (change)=\"toggleRow.emit(getCheckedValue($event))\"\n [attr.aria-label]=\"\n 'platform.datacore.accessibility_select_row'\n | translate: { name: (rowLabel | translate) }\n \"\n [attr.aria-checked]=\"rowSelected\"\n />\n <label [attr.for]=\"rowCheckboxId\" class=\"sr-only\">\n {{\n 'platform.datacore.accessibility_select_row'\n | translate: { name: (rowLabel | translate) }\n }}\n </label>\n </div>\n }\n\n @case ('date') {\n <span class=\"sdc-table-text\" [attr.title]=\"ellipsisTitleText(formatDate())\">{{ formatDate() }}</span>\n }\n\n @case ('strong') {\n <span class=\"sdc-table-strong-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n\n @case ('code') {\n <code class=\"sdc-table-code-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue())\">{{ displayText() }}</code>\n }\n\n @case ('link') {\n <a class=\"sdc-table-link\"\n [href]=\"cellTextValue()\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </a>\n }\n\n @case ('currency') {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(formatCurrency())\">{{ formatCurrency() }}</span>\n }\n\n @case ('tag') {\n <div class=\"sdc-table-tags\">\n @for (tagItem of tagItems(); track tagItem.label + '-' + $index) {\n <span\n class=\"sdc-table-tag\"\n [class.sdc-table-tag--enabled]=\"tagItem.tone === 'enabled'\"\n [class.sdc-table-tag--disabled]=\"tagItem.tone === 'disabled'\"\n [ngStyle]=\"tagItem.styles\"\n [attr.title]=\"tagItem.tooltip ? (tagItem.tooltip | translate) : (tagItem.label | translate)\"\n >\n @if (tagItem.icon) {\n <sdc-icon-renderer\n class=\"sdc-table-tag__icon\"\n [icon]=\"tagItem.icon\"\n [iconType]=\"tagItem.iconType\"\n [size]=\"tagIconSize\"\n ></sdc-icon-renderer>\n }\n {{ tagItem.label | translate }}\n </span>\n }\n\n @if (tagOverflow(); as overflow) {\n @if (overflow.hiddenCount > 0) {\n <span\n class=\"sdc-table-tag sdc-table-tag--more\"\n [attr.title]=\"\n 'platform.datacore.accessibility_table_tag_more_items'\n | translate: { items: tagOverflowTitle(overflow) }\n \"\n >\u2026</span>\n }\n }\n </div>\n }\n\n @case ('button') {\n <div class=\"sdc-table-button\">\n <sdc-button\n class=\"sdc-table-action-button\"\n [size]=\"cellConfigs.button.size ?? 'default'\"\n [priority]=\"cellConfigs.button.priority || 'primary'\"\n [icon]=\"cellConfigs.button.icon\"\n [label]=\"cellConfigs.button.label ?? ''\"\n [disabled]=\"cellConfigs.button.disabled ?? false\"\n [title]=\"cellConfigs.button.tooltip\"\n [attr.size]=\"cellConfigs.button.size\"\n [attr.priority]=\"cellConfigs.button.priority || 'primary'\"\n [attr.severity]=\"cellConfigs.button.priority || 'primary'\"\n [attr.icon]=\"cellConfigs.button.icon\"\n [attr.label]=\"cellConfigs.button.label\"\n [attr.disabled]=\"cellConfigs.button.disabled ? '' : null\"\n [attr.title]=\"cellConfigs.button.tooltip || null\"\n [attr.aria-label]=\"\n (buttonAriaLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.data-key]=\"buttonKey()\"\n (click)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.enter)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.space)=\"$event.preventDefault(); cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n ></sdc-button>\n </div>\n }\n\n @case ('actions') {\n <div\n class=\"sdc-table-actions\"\n [class.sdc-table-actions--open]=\"actionsMenuOpen\"\n >\n <button\n #actionsTrigger\n type=\"button\"\n class=\"sdc-table-actions-trigger\"\n [class.sdc-table-actions-trigger--open]=\"actionsMenuOpen\"\n [attr.aria-label]=\"\n (actionsButtonLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-controls]=\"actionsMenuOpen ? actionsMenuId : null\"\n [attr.aria-expanded]=\"actionsMenuOpen\"\n (click)=\"onActionsClick($event, actionsTrigger)\"\n >\n <span class=\"sdc-table-actions-trigger__label\">\n {{ actionsButtonLabel() | translate }}\n </span>\n <i class=\"fas fa-chevron-down sdc-table-actions-trigger__icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n\n @case ('icon') {\n @if (iconPresentation(); as iconItem) {\n <span\n class=\"sdc-table-icon\"\n [ngStyle]=\"iconItem.colorStyle\"\n [attr.title]=\"iconItem.tooltip ? (iconItem.tooltip | translate) : null\"\n [attr.aria-label]=\"\n (iconItem.label || iconItem.tooltip)\n ? ((iconItem.label || iconItem.tooltip)! | translate)\n : null\n \"\n >\n @if (iconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"iconItem.icon\"\n [iconType]=\"iconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (iconItem.label) {\n <span class=\"sdc-table-icon__label\">{{ iconItem.label | translate }}</span>\n }\n </span>\n }\n }\n\n @case ('icon-title') {\n @if (titleIconPresentation(); as titleIconItem) {\n <span\n class=\"sdc-table-icon-title\"\n [ngStyle]=\"titleIconItem.colorStyle\"\n [attr.title]=\"titleIconItem.tooltip ? (titleIconItem.tooltip | translate) : null\"\n >\n @if (titleIconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"titleIconItem.icon\"\n [iconType]=\"titleIconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (titleIconItem.label) {\n <span [attr.title]=\"ellipsisTitleText(titleIconItem.label | translate)\">\n {{ titleIconItem.label | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n </span>\n }\n }\n\n @default {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n }\n }\n</div>\n", styles: [":host{display:block;width:100%;min-width:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sdc-table-content{display:flex;align-items:center;width:100%;min-width:0}:host(.sdc-table-cell-content--align-left) .sdc-table-content{justify-content:flex-start;text-align:left}:host(.sdc-table-cell-content--align-center) .sdc-table-content{justify-content:center;text-align:center}:host(.sdc-table-cell-content--align-right) .sdc-table-content{justify-content:flex-end;text-align:right}.sdc-table-multi-content{display:flex;flex-direction:column;gap:.25rem;min-width:0;max-width:100%}.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span,.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label,.sdc-table-link{min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-table-strong-label{font-weight:500}.sdc-table-code-label{color:var(--sdc-tab-primary)}.sdc-table-link{display:inline-block;color:var(--sdc-tab-primary);text-decoration:underline}.sdc-table-link:hover,.sdc-table-link:focus-visible{text-decoration:none}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:.5rem;min-width:0;max-width:100%;overflow:hidden}.sdc-table-tag{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;width:fit-content;min-width:fit-content;max-width:100%;border-radius:9999px;font-weight:500;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid currentColor;box-sizing:border-box;font-size:.875rem;padding:.35rem .875rem}.sdc-table-tag__icon{flex:0 0 auto}.sdc-table-tag--enabled{background:#dcfce7;color:#16a34a;border-color:#16a34a}.sdc-table-tag--disabled{background:#fee2e2;color:#ef4444;border-color:#ef4444}.sdc-table-tag--more{background:#f3f4f6;color:#374151;border-color:#374151;cursor:default;font-weight:700}.sdc-table-button{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%;min-width:0}.sdc-table-button ::ng-deep sdc-button,.sdc-table-button ::ng-deep button{min-height:unset;min-width:unset;max-width:100%}.sdc-table-action-button{width:100%;max-width:100%;min-width:0}.sdc-table-icon,.sdc-table-icon-title{display:inline-flex;align-items:center;gap:.5rem;min-width:0;max-width:100%}.sdc-table-icon__label,.sdc-table-icon-title span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-checkbox input[type=checkbox]{cursor:pointer}.sdc-table-checkbox input[type=checkbox]:disabled{cursor:not-allowed;opacity:.55}.sdc-table-actions{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100%;min-width:0}.sdc-table-actions-trigger{appearance:none;border:1px solid #c9ced6;background:#fff;border-radius:999px;min-width:4.875rem;height:2rem;padding:0 .75rem;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;font:inherit;font-size:.8125rem;color:#374151;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.sdc-table-actions-trigger:hover{background:#f9fafb}.sdc-table-actions-trigger:focus-visible,.sdc-table-actions-trigger--open{outline:none;border-color:#9ca3af;box-shadow:0 0 0 2px #1118270a}.sdc-table-actions-trigger__label{line-height:1;white-space:nowrap}.sdc-table-actions-trigger__icon{font-size:.625rem;line-height:1;color:#6b7280}@media (max-width: 768px){.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}.sdc-table-tag{font-size:.8125rem;padding:.35rem .75rem}.sdc-table-actions-trigger{min-width:4.375rem;height:1.75rem;padding:0 .625rem;font-size:.75rem}.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label,.sdc-table-link,.sdc-table-icon__label,.sdc-table-icon-title span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}}\n"] }]
|
|
106
|
+
}, template: "<div class=\"sdc-table-content\">\n @if (col.content?.length) {\n <div class=\"sdc-table-multi-content\">\n @for (item of col.content!; track $index) {\n @switch (item.type ?? 'text') {\n @case ('strong') {\n <strong\n [ngStyle]=\"item.style\"\n [class]=\"item.class ?? ''\"\n [attr.title]=\"ellipsisTitleText(cellTextValue(item.field) | translate)\"\n >{{ displayText(item.field) | translate }}</strong>\n }\n @case ('code') {\n <code\n [ngStyle]=\"item.style\"\n [class]=\"item.class ?? ''\"\n [attr.title]=\"ellipsisTitleText(cellTextValue(item.field))\"\n >{{ displayText(item.field) }}</code>\n }\n @default {\n <span\n [ngStyle]=\"item.style\"\n [class]=\"item.class ?? ''\"\n [attr.title]=\"ellipsisTitleText(cellTextValue(item.field) | translate)\"\n >{{ displayText(item.field) | translate }}</span>\n }\n }\n }\n </div>\n } @else {\n @switch (col.type ?? 'text') {\n @case ('checkbox-selection') {\n <div class=\"sdc-table-checkbox\">\n <input\n type=\"checkbox\"\n [id]=\"rowCheckboxId\"\n [disabled]=\"rowSelectionDisabled\"\n [checked]=\"rowSelected\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (change)=\"toggleRow.emit(getCheckedValue($event))\"\n [attr.aria-label]=\"\n 'platform.datacore.accessibility_select_row'\n | translate: { name: (rowLabel | translate) }\n \"\n [attr.aria-checked]=\"rowSelected\"\n />\n <label [attr.for]=\"rowCheckboxId\" class=\"sr-only\">\n {{\n 'platform.datacore.accessibility_select_row'\n | translate: { name: (rowLabel | translate) }\n }}\n </label>\n </div>\n }\n\n @case ('date') {\n <span class=\"sdc-table-text\" [attr.title]=\"ellipsisTitleText(formatDate())\">{{ formatDate() }}</span>\n }\n\n @case ('strong') {\n <span class=\"sdc-table-strong-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n\n @case ('code') {\n <code class=\"sdc-table-code-label\"\n [attr.title]=\"ellipsisTitleText(cellTextValue())\">{{ displayText() }}</code>\n }\n\n @case ('link') {\n <a class=\"sdc-table-link\"\n [href]=\"cellTextValue()\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </a>\n }\n\n @case ('currency') {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(formatCurrency())\">{{ formatCurrency() }}</span>\n }\n\n @case ('tag') {\n <div class=\"sdc-table-tags\">\n @for (tagItem of tagItems(); track tagItem.label + '-' + $index) {\n <span\n class=\"sdc-table-tag\"\n [class.sdc-table-tag--enabled]=\"tagItem.tone === 'enabled'\"\n [class.sdc-table-tag--disabled]=\"tagItem.tone === 'disabled'\"\n [ngStyle]=\"tagItem.styles\"\n [attr.title]=\"tagItem.tooltip ? (tagItem.tooltip | translate) : (tagItem.label | translate)\"\n >\n @if (tagItem.icon) {\n <sdc-icon-renderer\n class=\"sdc-table-tag__icon\"\n [icon]=\"tagItem.icon\"\n [iconType]=\"tagItem.iconType\"\n [size]=\"tagIconSize\"\n ></sdc-icon-renderer>\n }\n {{ tagItem.label | translate }}\n </span>\n }\n\n @if (tagOverflow(); as overflow) {\n @if (overflow.hiddenCount > 0) {\n <span\n class=\"sdc-table-tag sdc-table-tag--more\"\n [attr.title]=\"\n 'platform.datacore.accessibility_table_tag_more_items'\n | translate: { items: tagOverflowTitle(overflow) }\n \"\n >\u2026</span>\n }\n }\n </div>\n }\n\n @case ('button') {\n <div class=\"sdc-table-button\">\n <sdc-button\n class=\"sdc-table-action-button\"\n [size]=\"cellConfigs.button.size ?? 'default'\"\n [priority]=\"cellConfigs.button.priority || 'primary'\"\n [icon]=\"cellConfigs.button.icon\"\n [label]=\"cellConfigs.button.label ?? ''\"\n [disabled]=\"cellConfigs.button.disabled ?? false\"\n [title]=\"cellConfigs.button.tooltip\"\n [attr.size]=\"cellConfigs.button.size\"\n [attr.priority]=\"cellConfigs.button.priority || 'primary'\"\n [attr.severity]=\"cellConfigs.button.priority || 'primary'\"\n [attr.icon]=\"cellConfigs.button.icon\"\n [attr.label]=\"cellConfigs.button.label\"\n [attr.disabled]=\"cellConfigs.button.disabled ? '' : null\"\n [attr.title]=\"cellConfigs.button.tooltip || null\"\n [attr.aria-label]=\"\n (buttonAriaLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.data-key]=\"buttonKey()\"\n (click)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.enter)=\"cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n (keydown.space)=\"$event.preventDefault(); cellConfigs.button.disabled ? null : triggerButtonAction.emit()\"\n ></sdc-button>\n </div>\n }\n\n @case ('actions') {\n <div\n class=\"sdc-table-actions\"\n [class.sdc-table-actions--open]=\"actionsMenuOpen\"\n >\n <button\n #actionsTrigger\n type=\"button\"\n class=\"sdc-table-actions-trigger\"\n [class.sdc-table-actions-trigger--open]=\"actionsMenuOpen\"\n [attr.aria-label]=\"\n (actionsButtonLabel() | translate)\n + ' - '\n + (rowLabel | translate)\n \"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-controls]=\"actionsMenuOpen ? actionsMenuId : null\"\n [attr.aria-expanded]=\"actionsMenuOpen\"\n (click)=\"onActionsClick($event, actionsTrigger)\"\n >\n <span class=\"sdc-table-actions-trigger__label\">\n {{ actionsButtonLabel() | translate }}\n </span>\n <i class=\"fas fa-chevron-down sdc-table-actions-trigger__icon\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n\n @case ('icon') {\n @if (iconPresentation(); as iconItem) {\n <span\n class=\"sdc-table-icon\"\n [ngStyle]=\"iconItem.colorStyle\"\n [attr.title]=\"iconItem.tooltip ? (iconItem.tooltip | translate) : null\"\n [attr.aria-label]=\"\n (iconItem.label || iconItem.tooltip)\n ? ((iconItem.label || iconItem.tooltip)! | translate)\n : null\n \"\n >\n @if (iconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"iconItem.icon\"\n [iconType]=\"iconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (iconItem.label) {\n <span class=\"sdc-table-icon__label\">{{ iconItem.label | translate }}</span>\n }\n </span>\n }\n }\n\n @case ('icon-title') {\n @if (titleIconPresentation(); as titleIconItem) {\n <span\n class=\"sdc-table-icon-title\"\n [ngStyle]=\"titleIconItem.colorStyle\"\n [attr.title]=\"titleIconItem.tooltip ? (titleIconItem.tooltip | translate) : null\"\n >\n @if (titleIconItem.icon) {\n <sdc-icon-renderer\n [icon]=\"titleIconItem.icon\"\n [iconType]=\"titleIconItem.iconType\"\n [size]=\"iconSize\"\n ></sdc-icon-renderer>\n }\n @if (titleIconItem.label) {\n <span [attr.title]=\"ellipsisTitleText(titleIconItem.label | translate)\">\n {{ titleIconItem.label | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n </span>\n }\n }\n\n @default {\n <span class=\"sdc-table-text\"\n [attr.title]=\"ellipsisTitleText(cellTextValue() | translate)\">\n {{ cellTextValue() | translate | sdcTruncate:col:defaultTextOverflow }}\n </span>\n }\n }\n }\n</div>\n", styles: [":host{display:block;width:100%;min-width:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sdc-table-content{display:flex;align-items:center;width:100%;min-width:0}:host(.sdc-table-cell-content--align-left) .sdc-table-content{justify-content:flex-start;text-align:left}:host(.sdc-table-cell-content--align-center) .sdc-table-content{justify-content:center;text-align:center}:host(.sdc-table-cell-content--align-right) .sdc-table-content{justify-content:flex-end;text-align:right}.sdc-table-multi-content{display:flex;flex-direction:column;gap:.25rem;min-width:0;max-width:100%}.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span,.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label,.sdc-table-link{min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-table-strong-label{font-weight:500}.sdc-table-code-label{color:var(--sdc-tab-primary)}.sdc-table-link{display:inline-block;color:var(--sdc-tab-primary);text-decoration:underline}.sdc-table-link:hover,.sdc-table-link:focus-visible{text-decoration:none}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:.5rem;min-width:0;max-width:100%;overflow:hidden}.sdc-table-tag{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;width:fit-content;min-width:fit-content;max-width:100%;border-radius:9999px;font-weight:500;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid currentColor;box-sizing:border-box;font-size:.875rem;padding:.35rem .875rem}.sdc-table-tag__icon{flex:0 0 auto}.sdc-table-tag--enabled{background:#dcfce7;color:#16a34a;border-color:#16a34a}.sdc-table-tag--disabled{background:#fee2e2;color:#ef4444;border-color:#ef4444}.sdc-table-tag--more{background:#f3f4f6;color:#374151;border-color:#374151;cursor:default;font-weight:700}.sdc-table-button{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%;min-width:0}.sdc-table-button ::ng-deep sdc-button,.sdc-table-button ::ng-deep button{min-height:unset;min-width:unset;max-width:100%}.sdc-table-action-button{width:100%;max-width:100%;min-width:0}.sdc-table-icon,.sdc-table-icon-title{display:inline-flex;align-items:center;gap:.5rem;min-width:0;max-width:100%}.sdc-table-icon__label,.sdc-table-icon-title span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-checkbox input[type=checkbox]{cursor:pointer}.sdc-table-checkbox input[type=checkbox]:disabled{cursor:not-allowed;opacity:.55}.sdc-table-actions{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100%;min-width:0}.sdc-table-actions-trigger{appearance:none;border:1px solid #c9ced6;background:#fff;border-radius:999px;min-width:4.875rem;height:2rem;padding:0 .75rem;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;font:inherit;font-size:.8125rem;color:#374151;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.sdc-table-actions-trigger:hover{background:#f9fafb}.sdc-table-actions-trigger:focus-visible,.sdc-table-actions-trigger--open{outline:none;border-color:#9ca3af;box-shadow:0 0 0 2px #1118270a}.sdc-table-actions-trigger__label{line-height:1;white-space:nowrap}.sdc-table-actions-trigger__icon{font-size:.625rem;line-height:1;color:#6b7280}@media (max-width: 768px){.sdc-table-multi-content strong,.sdc-table-multi-content code,.sdc-table-multi-content span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}.sdc-table-tag{font-size:.8125rem;padding:.35rem .75rem}.sdc-table-actions-trigger{min-width:4.375rem;height:1.75rem;padding:0 .625rem;font-size:.75rem}.sdc-table-text,.sdc-table-strong-label,.sdc-table-code-label,.sdc-table-link,.sdc-table-icon__label,.sdc-table-icon-title span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:break-word}:host-context(.sdc-table-expandable-summary-value) .sdc-table-text,:host-context(.sdc-table-expandable-summary-value) .sdc-table-multi-content>*{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}}\n"] }]
|
|
107
107
|
}], propDecorators: { cellConfigs: [{
|
|
108
108
|
type: Input,
|
|
109
109
|
args: [{ required: true }]
|
|
@@ -139,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
139
139
|
}], triggerButtonAction: [{
|
|
140
140
|
type: Output
|
|
141
141
|
}] } });
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdGFibGUvY29tcG9uZW50cy90YWJsZS1jZWxsLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy90YWJsZS9jb21wb25lbnRzL3RhYmxlLWNlbGwtY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUNMLHlCQUF5QixFQUN6Qiw2QkFBNkIsRUFDN0IscUNBQXFDLEVBQ3RDLE1BQU0scUNBQXFDLENBQUM7QUFPN0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUNMLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixpQ0FBaUMsRUFFbEMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7O0FBZ0J2RyxNQUFNLE9BQU8seUJBQXlCO0lBQ1QsV0FBVyxD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QWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQge1xuICBUQUJMRV9JQ09OX1JFTkRFUl9TSVpFX1BYLFxuICBUQUJMRV9UQUdfSUNPTl9SRU5ERVJfU0laRV9QWCxcbiAgVEFCTEVfVEVYVF9PVkVSRkxPV19ERUZBVUxUX01BWF9DSEFSU1xufSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbnN0YW50cy90YWJsZS5jb25zdCc7XG5pbXBvcnQgdHlwZSB7XG4gIFJvd0Jhc2UsXG4gIFRhYmxlQ2VsbENvbmZpZ01hcCxcbiAgVGFibGVDb2x1bW5cbn0gZnJvbSAnLi4vLi4vLi4vY29yZS90eXBlcy90YWJsZS50eXBlJztcbmltcG9ydCB0eXBlIHsgVGFibGVUZXh0T3ZlcmZsb3cgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzL3RhYmxlLWNvbHVtbi50eXBlJztcbmltcG9ydCB7IHJlc29sdmVUYWJsZUNvbHVtbkFsaWdubWVudCB9IGZyb20gJy4uL3V0aWxzL3RhYmxlLWxheW91dC51dGlsJztcbmltcG9ydCB7XG4gIGZvcm1hdFRhYmxlQ3VycmVuY3ksXG4gIGZvcm1hdFRhYmxlRGF0ZSxcbiAgdG9UYWJsZVRleHRWYWx1ZVxufSBmcm9tICcuLi91dGlscy90YWJsZS1kYXRhLnV0aWwnO1xuaW1wb3J0IHtcbiAgcmVzb2x2ZVRhYmxlQnV0dG9uS2V5LFxuICByZXNvbHZlVGFibGVJY29uUHJlc2VudGF0aW9uLFxuICByZXNvbHZlVGFibGVUYWdJdGVtcyxcbiAgcmVzb2x2ZVRhYmxlVGFnT3ZlcmZsb3csXG4gIHJlc29sdmVUYWJsZVRpdGxlSWNvblByZXNlbnRhdGlvbixcbiAgdHlwZSBUYWJsZVRhZ092ZXJmbG93XG59IGZyb20gJy4uL3V0aWxzL3RhYmxlLXZpc3VhbC51dGlsJztcbmltcG9ydCB7IFNkY1RydW5jYXRlUGlwZSB9IGZyb20gJy4uL3V0aWxzL3RhYmxlLXRydW5jYXRlLnBpcGUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvblJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21wb25lbnRzL2ljb24tcmVuZGVyZXIvaWNvbi1yZW5kZXJlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtdGFibGUtY2VsbC1jb250ZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBCdXR0b25Db21wb25lbnQsIEljb25SZW5kZXJlckNvbXBvbmVudCwgU2RjVHJ1bmNhdGVQaXBlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWNlbGwtY29udGVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi90YWJsZS1jZWxsLWNvbnRlbnQuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muc2RjLXRhYmxlLWNlbGwtY29udGVudC0tYWxpZ24tbGVmdF0nOiBcInJlc29sdmVkQWxpZ25tZW50ID09PSAnbGVmdCdcIixcbiAgICAnW2NsYXNzLnNkYy10YWJsZS1jZWxsLWNvbnRlbnQtLWFsaWduLWNlbnRlcl0nOiBcInJlc29sdmVkQWxpZ25tZW50ID09PSAnY2VudGVyJ1wiLFxuICAgICdbY2xhc3Muc2RjLXRhYmxlLWNlbGwtY29udGVudC0tYWxpZ24tcmlnaHRdJzogXCJyZXNvbHZlZEFsaWdubWVudCA9PT0gJ3JpZ2h0J1wiLFxuICAgICdbY2xhc3Muc2RjLXRhYmxlLWNlbGwtY29udGVudC0tbm93cmFwXSc6IFwiY29sPy50ZXh0T3ZlcmZsb3cgPT09ICdub25lJ1wiXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDZWxsQ29udGVudENvbXBvbmVudDxUIGV4dGVuZHMgUm93QmFzZSA9IFJvd0Jhc2U+IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgY2VsbENvbmZpZ3MhOiBUYWJsZUNlbGxDb25maWdNYXA8VD47XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbCE6IFRhYmxlQ29sdW1uPFQ+O1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSByZXNvbHZlVmFsdWUhOiAocm93OiBULCBmaWVsZD86IHN0cmluZykgPT4gdW5rbm93bjtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcm93ITogVDtcblxuICBASW5wdXQoKSBhY3Rpb25zTWVudU9wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYWN0aW9uc01lbnVJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGRlZmF1bHRUZXh0T3ZlcmZsb3c/OiBUYWJsZVRleHRPdmVyZmxvdztcbiAgQElucHV0KCkgcm93Q2hlY2tib3hJZCA9ICcnO1xuICBASW5wdXQoKSByb3dMYWJlbCA9ICdpdGVtJztcbiAgQElucHV0KCkgcm93U2VsZWN0aW9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9yY2VMZWZ0QWxpZ24gPSBmYWxzZTtcbiAgQElucHV0KCkgcm93U2VsZWN0ZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdG9nZ2xlQWN0aW9uc01lbnUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IEV2ZW50OyB0cmlnZ2VyOiBIVE1MRWxlbWVudCB9PigpO1xuICBAT3V0cHV0KCkgdG9nZ2xlUm93ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgdHJpZ2dlckJ1dHRvbkFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvblNpemUgPSBUQUJMRV9JQ09OX1JFTkRFUl9TSVpFX1BYO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFnSWNvblNpemUgPSBUQUJMRV9UQUdfSUNPTl9SRU5ERVJfU0laRV9QWDtcblxuICBnZXQgcmVzb2x2ZWRBbGlnbm1lbnQoKTogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnIHtcbiAgICBpZiAodGhpcy5mb3JjZUxlZnRBbGlnbikge1xuICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZVRhYmxlQ29sdW1uQWxpZ25tZW50KHRoaXMuY29sLCAnY2VsbCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNlbGxUZXh0VmFsdWUoZmllbGQgPSB0aGlzLmNvbD8uZmllbGQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0b1RhYmxlVGV4dFZhbHVlKHRoaXMucmVzb2x2ZVZhbHVlKHRoaXMucm93LCBmaWVsZCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRpc3BsYXlUZXh0KGZpZWxkID0gdGhpcy5jb2w/LmZpZWxkKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5jZWxsVGV4dFZhbHVlKGZpZWxkKTtcbiAgICBjb25zdCBtb2RlID0gdGhpcy5lZmZlY3RpdmVUZXh0T3ZlcmZsb3coKTtcbiAgICBpZiAobW9kZSAhPT0gJ2VsbGlwc2lzJykgeyByZXR1cm4gdGV4dDsgfVxuICAgIGNvbnN0IG1heCA9IHRoaXMuY29sPy5tYXhDaGFycyA/PyBUQUJMRV9URVhUX09WRVJGTE9XX0RFRkFVTFRfTUFYX0NIQVJTO1xuICAgIHJldHVybiB0ZXh0Lmxlbmd0aCA+IG1heCA/IHRleHQuc2xpY2UoMCwgbWF4KS50cmltRW5kKCkgKyAn4oCmJyA6IHRleHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZWZmZWN0aXZlVGV4dE92ZXJmbG93KCk6IFRhYmxlVGV4dE92ZXJmbG93IHtcbiAgICByZXR1cm4gdGhpcy5jb2w/LnRleHRPdmVyZmxvdyA/PyB0aGlzLmRlZmF1bHRUZXh0T3ZlcmZsb3cgPz8gJ2JyZWFrLWxpbmUnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVsbGlwc2lzVGl0bGVUZXh0KGRpc3BsYXlUZXh0OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBtYXggPSB0aGlzLmNvbD8ubWF4Q2hhcnMgPz8gVEFCTEVfVEVYVF9PVkVSRkxPV19ERUZBVUxUX01BWF9DSEFSUztcbiAgICByZXR1cm4gZGlzcGxheVRleHQubGVuZ3RoID4gbWF4ID8gZGlzcGxheVRleHQgOiBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZvcm1hdERhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZm9ybWF0VGFibGVEYXRlKHRoaXMucmVzb2x2ZVZhbHVlKHRoaXMucm93LCB0aGlzLmNvbD8uZmllbGQpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmb3JtYXRDdXJyZW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBmb3JtYXRUYWJsZUN1cnJlbmN5KHRoaXMucmVzb2x2ZVZhbHVlKHRoaXMucm93LCB0aGlzLmNvbD8uZmllbGQpLCB0aGlzLmNvbD8uZm9ybWF0ID8/ICdCUkwnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDaGVja2VkVmFsdWUoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcbiAgfVxuXG4gIHByb3RlY3RlZCB0YWdJdGVtcygpIHtcbiAgICByZXR1cm4gcmVzb2x2ZVRhYmxlVGFnSXRlbXModGhpcy5yb3csIHRoaXMuY29sLCB0aGlzLmNlbGxDb25maWdzLnRhZywgdGhpcy5yZXNvbHZlVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRhZ092ZXJmbG93KCk6IFRhYmxlVGFnT3ZlcmZsb3cge1xuICAgIHJldHVybiByZXNvbHZlVGFibGVUYWdPdmVyZmxvdyh0aGlzLnJvdywgdGhpcy5jb2wsIHRoaXMuY2VsbENvbmZpZ3MudGFnLCB0aGlzLnJlc29sdmVWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdGFnT3ZlcmZsb3dUaXRsZShvdmVyZmxvdzogVGFibGVUYWdPdmVyZmxvdyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG92ZXJmbG93LmhpZGRlbkxhYmVscy5qb2luKCcsICcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGljb25QcmVzZW50YXRpb24oKSB7XG4gICAgcmV0dXJuIHJlc29sdmVUYWJsZUljb25QcmVzZW50YXRpb24odGhpcy5yb3csIHRoaXMuY29sLCB0aGlzLmNlbGxDb25maWdzLmljb24sIHRoaXMucmVzb2x2ZVZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0aXRsZUljb25QcmVzZW50YXRpb24oKSB7XG4gICAgcmV0dXJuIHJlc29sdmVUYWJsZVRpdGxlSWNvblByZXNlbnRhdGlvbih0aGlzLnJvdywgdGhpcy5jb2wsIHRoaXMuY2VsbENvbmZpZ3NbJ2ljb24tdGl0bGUnXSwgdGhpcy5yZXNvbHZlVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1dHRvbktleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXNvbHZlVGFibGVCdXR0b25LZXkodGhpcy5yb3csIHRoaXMuY29sLCB0aGlzLmNlbGxDb25maWdzLmJ1dHRvbiwgdGhpcy5yZXNvbHZlVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1dHRvbkFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNlbGxDb25maWdzLmJ1dHRvbi5sYWJlbFxuICAgICAgPz8gdGhpcy5jZWxsQ29uZmlncy5idXR0b24udG9vbHRpcFxuICAgICAgPz8gJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHlfYWN0aW9uX2J1dHRvbic7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWN0aW9uc0J1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2VsbENvbmZpZ3MuYWN0aW9ucy5idXR0b25MYWJlbCA/PyAncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eV9hY3Rpb25zX21lbnUnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQWN0aW9uc0NsaWNrKGV2ZW50OiBFdmVudCwgdHJpZ2dlcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRvZ2dsZUFjdGlvbnNNZW51LmVtaXQoeyBldmVudCwgdHJpZ2dlciB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNkYy10YWJsZS1jb250ZW50XCI+XG4gIEBpZiAoY29sLmNvbnRlbnQ/Lmxlbmd0aCkge1xuICAgIDxkaXYgY2xhc3M9XCJzZGMtdGFibGUtbXVsdGktY29udGVudFwiPlxuICAgICAgQGZvciAoaXRlbSBvZiBjb2wuY29udGVudCE7IHRyYWNrICRpbmRleCkge1xuICAgICAgICBAc3dpdGNoIChpdGVtLnR5cGUgPz8gJ3RleHQnKSB7XG4gICAgICAgICAgQGNhc2UgKCdzdHJvbmcnKSB7XG4gICAgICAgICAgICA8c3Ryb25nXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIml0ZW0uc3R5bGVcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5jbGFzcyA/PyAnJ1wiXG4gICAgICAgICAgICA+e3sgY2VsbFRleHRWYWx1ZShpdGVtLmZpZWxkKSB8IHRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJ2NvZGUnKSB7XG4gICAgICAgICAgICA8Y29kZSBbbmdTdHlsZV09XCJpdGVtLnN0eWxlXCIgW2NsYXNzXT1cIml0ZW0uY2xhc3MgPz8gJydcIj57eyBjZWxsVGV4dFZhbHVlKGl0ZW0uZmllbGQpIH19PC9jb2RlPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICA8c3BhbiBbbmdTdHlsZV09XCJpdGVtLnN0eWxlXCIgW2NsYXNzXT1cIml0ZW0uY2xhc3MgPz8gJydcIj57eyBjZWxsVGV4dFZhbHVlKGl0ZW0uZmllbGQpIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgICBAc3dpdGNoIChjb2wudHlwZSA/PyAndGV4dCcpIHtcbiAgICBAY2FzZSAoJ2NoZWNrYm94LXNlbGVjdGlvbicpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtdGFibGUtY2hlY2tib3hcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbaWRdPVwicm93Q2hlY2tib3hJZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInJvd1NlbGVjdGlvbkRpc2FibGVkXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJyb3dTZWxlY3RlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVJvdy5lbWl0KGdldENoZWNrZWRWYWx1ZSgkZXZlbnQpKVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICdwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5X3NlbGVjdF9yb3cnXG4gICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IG5hbWU6IChyb3dMYWJlbCB8IHRyYW5zbGF0ZSkgfVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cInJvd1NlbGVjdGVkXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIFthdHRyLmZvcl09XCJyb3dDaGVja2JveElkXCIgY2xhc3M9XCJzci1vbmx5XCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgICdwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5X3NlbGVjdF9yb3cnXG4gICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IG5hbWU6IChyb3dMYWJlbCB8IHRyYW5zbGF0ZSkgfVxuICAgICAgICAgIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAY2FzZSAoJ2RhdGUnKSB7XG4gICAgICA8c3BhbiBjbGFzcz1cInNkYy10YWJsZS10ZXh0XCIgW2F0dHIudGl0bGVdPVwiZWxsaXBzaXNUaXRsZVRleHQoZm9ybWF0RGF0ZSgpKVwiPnt7IGZvcm1hdERhdGUoKSB9fTwvc3Bhbj5cbiAgICB9XG5cbiAgICBAY2FzZSAoJ3N0cm9uZycpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXRhYmxlLXN0cm9uZy1sYWJlbFwiXG4gICAgICAgIFthdHRyLnRpdGxlXT1cImVsbGlwc2lzVGl0bGVUZXh0KGNlbGxUZXh0VmFsdWUoKSB8IHRyYW5zbGF0ZSlcIj5cbiAgICAgICAge3sgY2VsbFRleHRWYWx1ZSgpIHwgdHJhbnNsYXRlIHwgc2RjVHJ1bmNhdGU6Y29sOmRlZmF1bHRUZXh0T3ZlcmZsb3cgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG5cbiAgICBAY2FzZSAoJ2NvZGUnKSB7XG4gICAgICA8Y29kZSBjbGFzcz1cInNkYy10YWJsZS1jb2RlLWxhYmVsXCJcbiAgICAgICAgW2F0dHIudGl0bGVdPVwiZWxsaXBzaXNUaXRsZVRleHQoY2VsbFRleHRWYWx1ZSgpKVwiPnt7IGRpc3BsYXlUZXh0KCkgfX08L2NvZGU+XG4gICAgfVxuXG4gICAgQGNhc2UgKCdsaW5rJykge1xuICAgICAgPGEgY2xhc3M9XCJzZGMtdGFibGUtbGlua1wiXG4gICAgICAgIFtocmVmXT1cImNlbGxUZXh0VmFsdWUoKVwiXG4gICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgW2F0dHIudGl0bGVdPVwiZWxsaXBzaXNUaXRsZVRleHQoY2VsbFRleHRWYWx1ZSgpIHwgdHJhbnNsYXRlKVwiPlxuICAgICAgICB7eyBjZWxsVGV4dFZhbHVlKCkgfCB0cmFuc2xhdGUgfCBzZGNUcnVuY2F0ZTpjb2w6ZGVmYXVsdFRleHRPdmVyZmxvdyB9fVxuICAgICAgPC9hPlxuICAgIH1cblxuICAgIEBjYXNlICgnY3VycmVuY3knKSB7XG4gICAgICA8c3BhbiBjbGFzcz1cInNkYy10YWJsZS10ZXh0XCJcbiAgICAgICAgW2F0dHIudGl0bGVdPVwiZWxsaXBzaXNUaXRsZVRleHQoZm9ybWF0Q3VycmVuY3koKSlcIj57eyBmb3JtYXRDdXJyZW5jeSgpIH19PC9zcGFuPlxuICAgIH1cblxuICAgIEBjYXNlICgndGFnJykge1xuICAgICAgPGRpdiBjbGFzcz1cInNkYy10YWJsZS10YWdzXCI+XG4gICAgICAgIEBmb3IgKHRhZ0l0ZW0gb2YgdGFnSXRlbXMoKTsgdHJhY2sgdGFnSXRlbS5sYWJlbCArICctJyArICRpbmRleCkge1xuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInNkYy10YWJsZS10YWdcIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy10YWJsZS10YWctLWVuYWJsZWRdPVwidGFnSXRlbS50b25lID09PSAnZW5hYmxlZCdcIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy10YWJsZS10YWctLWRpc2FibGVkXT1cInRhZ0l0ZW0udG9uZSA9PT0gJ2Rpc2FibGVkJ1wiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ0YWdJdGVtLnN0eWxlc1wiXG4gICAgICAgICAgICBbYXR0ci50aXRsZV09XCJ0YWdJdGVtLnRvb2x0aXAgPyAodGFnSXRlbS50b29sdGlwIHwgdHJhbnNsYXRlKSA6ICh0YWdJdGVtLmxhYmVsIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGlmICh0YWdJdGVtLmljb24pIHtcbiAgICAgICAgICAgICAgPHNkYy1pY29uLXJlbmRlcmVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtdGFibGUtdGFnX19pY29uXCJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJ0YWdJdGVtLmljb25cIlxuICAgICAgICAgICAgICAgIFtpY29uVHlwZV09XCJ0YWdJdGVtLmljb25UeXBlXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCJ0YWdJY29uU2l6ZVwiXG4gICAgICAgICAgICAgID48L3NkYy1pY29uLXJlbmRlcmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge3sgdGFnSXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAodGFnT3ZlcmZsb3coKTsgYXMgb3ZlcmZsb3cpIHtcbiAgICAgICAgICBAaWYgKG92ZXJmbG93LmhpZGRlbkNvdW50ID4gMCkge1xuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtdGFibGUtdGFnIHNkYy10YWJsZS10YWctLW1vcmVcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJcbiAgICAgICAgICAgICAgICAncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eV90YWJsZV90YWdfbW9yZV9pdGVtcydcbiAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IGl0ZW1zOiB0YWdPdmVyZmxvd1RpdGxlKG92ZXJmbG93KSB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+4oCmPC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGNhc2UgKCdidXR0b24nKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLWJ1dHRvblwiPlxuICAgICAgICA8c2RjLWJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwic2RjLXRhYmxlLWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgIFtzaXplXT1cImNlbGxDb25maWdzLmJ1dHRvbi5zaXplID8/ICdkZWZhdWx0J1wiXG4gICAgICAgICAgW3ByaW9yaXR5XT1cImNlbGxDb25maWdzLmJ1dHRvbi5wcmlvcml0eSB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgIFtpY29uXT1cImNlbGxDb25maWdzLmJ1dHRvbi5pY29uXCJcbiAgICAgICAgICBbbGFiZWxdPVwiY2VsbENvbmZpZ3MuYnV0dG9uLmxhYmVsID8/ICcnXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY2VsbENvbmZpZ3MuYnV0dG9uLmRpc2FibGVkID8/IGZhbHNlXCJcbiAgICAgICAgICBbdGl0bGVdPVwiY2VsbENvbmZpZ3MuYnV0dG9uLnRvb2x0aXBcIlxuICAgICAgICAgIFthdHRyLnNpemVdPVwiY2VsbENvbmZpZ3MuYnV0dG9uLnNpemVcIlxuICAgICAgICAgIFthdHRyLnByaW9yaXR5XT1cImNlbGxDb25maWdzLmJ1dHRvbi5wcmlvcml0eSB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgIFthdHRyLnNldmVyaXR5XT1cImNlbGxDb25maWdzLmJ1dHRvbi5wcmlvcml0eSB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgIFthdHRyLmljb25dPVwiY2VsbENvbmZpZ3MuYnV0dG9uLmljb25cIlxuICAgICAgICAgIFthdHRyLmxhYmVsXT1cImNlbGxDb25maWdzLmJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiY2VsbENvbmZpZ3MuYnV0dG9uLmRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci50aXRsZV09XCJjZWxsQ29uZmlncy5idXR0b24udG9vbHRpcCB8fCBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgKGJ1dHRvbkFyaWFMYWJlbCgpIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICArICcgLSAnXG4gICAgICAgICAgICAgICsgKHJvd0xhYmVsIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1rZXldPVwiYnV0dG9uS2V5KClcIlxuICAgICAgICAgIChjbGljayk9XCJjZWxsQ29uZmlncy5idXR0b24uZGlzYWJsZWQgPyBudWxsIDogdHJpZ2dlckJ1dHRvbkFjdGlvbi5lbWl0KClcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImNlbGxDb25maWdzLmJ1dHRvbi5kaXNhYmxlZCA/IG51bGwgOiB0cmlnZ2VyQnV0dG9uQWN0aW9uLmVtaXQoKVwiXG4gICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGNlbGxDb25maWdzLmJ1dHRvbi5kaXNhYmxlZCA/IG51bGwgOiB0cmlnZ2VyQnV0dG9uQWN0aW9uLmVtaXQoKVwiXG4gICAgICAgID48L3NkYy1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAY2FzZSAoJ2FjdGlvbnMnKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2RjLXRhYmxlLWFjdGlvbnNcIlxuICAgICAgICBbY2xhc3Muc2RjLXRhYmxlLWFjdGlvbnMtLW9wZW5dPVwiYWN0aW9uc01lbnVPcGVuXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICNhY3Rpb25zVHJpZ2dlclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwic2RjLXRhYmxlLWFjdGlvbnMtdHJpZ2dlclwiXG4gICAgICAgICAgW2NsYXNzLnNkYy10YWJsZS1hY3Rpb25zLXRyaWdnZXItLW9wZW5dPVwiYWN0aW9uc01lbnVPcGVuXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgKGFjdGlvbnNCdXR0b25MYWJlbCgpIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICArICcgLSAnXG4gICAgICAgICAgICAgICsgKHJvd0xhYmVsIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCInbWVudSdcIlxuICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiYWN0aW9uc01lbnVPcGVuID8gYWN0aW9uc01lbnVJZCA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiYWN0aW9uc01lbnVPcGVuXCJcbiAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb25zQ2xpY2soJGV2ZW50LCBhY3Rpb25zVHJpZ2dlcilcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtdGFibGUtYWN0aW9ucy10cmlnZ2VyX19sYWJlbFwiPlxuICAgICAgICAgICAge3sgYWN0aW9uc0J1dHRvbkxhYmVsKCkgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIHNkYy10YWJsZS1hY3Rpb25zLXRyaWdnZXJfX2ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGNhc2UgKCdpY29uJykge1xuICAgICAgQGlmIChpY29uUHJlc2VudGF0aW9uKCk7IGFzIGljb25JdGVtKSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzZGMtdGFibGUtaWNvblwiXG4gICAgICAgICAgW25nU3R5bGVdPVwiaWNvbkl0ZW0uY29sb3JTdHlsZVwiXG4gICAgICAgICAgW2F0dHIudGl0bGVdPVwiaWNvbkl0ZW0udG9vbHRpcCA/IChpY29uSXRlbS50b29sdGlwIHwgdHJhbnNsYXRlKSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAoaWNvbkl0ZW0ubGFiZWwgfHwgaWNvbkl0ZW0udG9vbHRpcClcbiAgICAgICAgICAgICAgPyAoKGljb25JdGVtLmxhYmVsIHx8IGljb25JdGVtLnRvb2x0aXApISB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAoaWNvbkl0ZW0uaWNvbikge1xuICAgICAgICAgICAgPHNkYy1pY29uLXJlbmRlcmVyXG4gICAgICAgICAgICAgIFtpY29uXT1cImljb25JdGVtLmljb25cIlxuICAgICAgICAgICAgICBbaWNvblR5cGVdPVwiaWNvbkl0ZW0uaWNvblR5cGVcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCJpY29uU2l6ZVwiXG4gICAgICAgICAgICA+PC9zZGMtaWNvbi1yZW5kZXJlcj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChpY29uSXRlbS5sYWJlbCkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtdGFibGUtaWNvbl9fbGFiZWxcIj57eyBpY29uSXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAY2FzZSAoJ2ljb24tdGl0bGUnKSB7XG4gICAgICBAaWYgKHRpdGxlSWNvblByZXNlbnRhdGlvbigpOyBhcyB0aXRsZUljb25JdGVtKSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzZGMtdGFibGUtaWNvbi10aXRsZVwiXG4gICAgICAgICAgW25nU3R5bGVdPVwidGl0bGVJY29uSXRlbS5jb2xvclN0eWxlXCJcbiAgICAgICAgICBbYXR0ci50aXRsZV09XCJ0aXRsZUljb25JdGVtLnRvb2x0aXAgPyAodGl0bGVJY29uSXRlbS50b29sdGlwIHwgdHJhbnNsYXRlKSA6IG51bGxcIlxuICAgICAgICA+XG4gICAgICAgICAgQGlmICh0aXRsZUljb25JdGVtLmljb24pIHtcbiAgICAgICAgICAgIDxzZGMtaWNvbi1yZW5kZXJlclxuICAgICAgICAgICAgICBbaWNvbl09XCJ0aXRsZUljb25JdGVtLmljb25cIlxuICAgICAgICAgICAgICBbaWNvblR5cGVdPVwidGl0bGVJY29uSXRlbS5pY29uVHlwZVwiXG4gICAgICAgICAgICAgIFtzaXplXT1cImljb25TaXplXCJcbiAgICAgICAgICAgID48L3NkYy1pY29uLXJlbmRlcmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHRpdGxlSWNvbkl0ZW0ubGFiZWwpIHtcbiAgICAgICAgICAgIDxzcGFuIFthdHRyLnRpdGxlXT1cImVsbGlwc2lzVGl0bGVUZXh0KHRpdGxlSWNvbkl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUpXCI+XG4gICAgICAgICAgICAgIHt7IHRpdGxlSWNvbkl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfCBzZGNUcnVuY2F0ZTpjb2w6ZGVmYXVsdFRleHRPdmVyZmxvdyB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIH1cblxuICAgIEBkZWZhdWx0IHtcbiAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXRhYmxlLXRleHRcIlxuICAgICAgICBbYXR0ci50aXRsZV09XCJlbGxpcHNpc1RpdGxlVGV4dChjZWxsVGV4dFZhbHVlKCkgfCB0cmFuc2xhdGUpXCI+XG4gICAgICAgIHt7IGNlbGxUZXh0VmFsdWUoKSB8IHRyYW5zbGF0ZSB8IHNkY1RydW5jYXRlOmNvbDpkZWZhdWx0VGV4dE92ZXJmbG93IH19XG4gICAgICA8L3NwYW4+XG4gICAgfVxuICAgIH1cbiAgfVxuPC9kaXY+XG4iXX0=
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvdGFibGUvY29tcG9uZW50cy90YWJsZS1jZWxsLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy90YWJsZS9jb21wb25lbnRzL3RhYmxlLWNlbGwtY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUNMLHlCQUF5QixFQUN6Qiw2QkFBNkIsRUFDN0IscUNBQXFDLEVBQ3RDLE1BQU0scUNBQXFDLENBQUM7QUFPN0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUNMLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixpQ0FBaUMsRUFFbEMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7O0FBZ0J2RyxNQUFNLE9BQU8seUJBQXlCO0lBQ1QsV0FBVyxD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QWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQge1xuICBUQUJMRV9JQ09OX1JFTkRFUl9TSVpFX1BYLFxuICBUQUJMRV9UQUdfSUNPTl9SRU5ERVJfU0laRV9QWCxcbiAgVEFCTEVfVEVYVF9PVkVSRkxPV19ERUZBVUxUX01BWF9DSEFSU1xufSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbnN0YW50cy90YWJsZS5jb25zdCc7XG5pbXBvcnQgdHlwZSB7XG4gIFJvd0Jhc2UsXG4gIFRhYmxlQ2VsbENvbmZpZ01hcCxcbiAgVGFibGVDb2x1bW5cbn0gZnJvbSAnLi4vLi4vLi4vY29yZS90eXBlcy90YWJsZS50eXBlJztcbmltcG9ydCB0eXBlIHsgVGFibGVUZXh0T3ZlcmZsb3cgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzL3RhYmxlLWNvbHVtbi50eXBlJztcbmltcG9ydCB7IHJlc29sdmVUYWJsZUNvbHVtbkFsaWdubWVudCB9IGZyb20gJy4uL3V0aWxzL3RhYmxlLWxheW91dC51dGlsJztcbmltcG9ydCB7XG4gIGZvcm1hdFRhYmxlQ3VycmVuY3ksXG4gIGZvcm1hdFRhYmxlRGF0ZSxcbiAgdG9UYWJsZVRleHRWYWx1ZVxufSBmcm9tICcuLi91dGlscy90YWJsZS1kYXRhLnV0aWwnO1xuaW1wb3J0IHtcbiAgcmVzb2x2ZVRhYmxlQnV0dG9uS2V5LFxuICByZXNvbHZlVGFibGVJY29uUHJlc2VudGF0aW9uLFxuICByZXNvbHZlVGFibGVUYWdJdGVtcyxcbiAgcmVzb2x2ZVRhYmxlVGFnT3ZlcmZsb3csXG4gIHJlc29sdmVUYWJsZVRpdGxlSWNvblByZXNlbnRhdGlvbixcbiAgdHlwZSBUYWJsZVRhZ092ZXJmbG93XG59IGZyb20gJy4uL3V0aWxzL3RhYmxlLXZpc3VhbC51dGlsJztcbmltcG9ydCB7IFNkY1RydW5jYXRlUGlwZSB9IGZyb20gJy4uL3V0aWxzL3RhYmxlLXRydW5jYXRlLnBpcGUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvblJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21wb25lbnRzL2ljb24tcmVuZGVyZXIvaWNvbi1yZW5kZXJlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtdGFibGUtY2VsbC1jb250ZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBCdXR0b25Db21wb25lbnQsIEljb25SZW5kZXJlckNvbXBvbmVudCwgU2RjVHJ1bmNhdGVQaXBlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWNlbGwtY29udGVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi90YWJsZS1jZWxsLWNvbnRlbnQuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muc2RjLXRhYmxlLWNlbGwtY29udGVudC0tYWxpZ24tbGVmdF0nOiBcInJlc29sdmVkQWxpZ25tZW50ID09PSAnbGVmdCdcIixcbiAgICAnW2NsYXNzLnNkYy10YWJsZS1jZWxsLWNvbnRlbnQtLWFsaWduLWNlbnRlcl0nOiBcInJlc29sdmVkQWxpZ25tZW50ID09PSAnY2VudGVyJ1wiLFxuICAgICdbY2xhc3Muc2RjLXRhYmxlLWNlbGwtY29udGVudC0tYWxpZ24tcmlnaHRdJzogXCJyZXNvbHZlZEFsaWdubWVudCA9PT0gJ3JpZ2h0J1wiLFxuICAgICdbY2xhc3Muc2RjLXRhYmxlLWNlbGwtY29udGVudC0tbm93cmFwXSc6IFwiY29sPy50ZXh0T3ZlcmZsb3cgPT09ICdub25lJ1wiXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDZWxsQ29udGVudENvbXBvbmVudDxUIGV4dGVuZHMgUm93QmFzZSA9IFJvd0Jhc2U+IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgY2VsbENvbmZpZ3MhOiBUYWJsZUNlbGxDb25maWdNYXA8VD47XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbCE6IFRhYmxlQ29sdW1uPFQ+O1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSByZXNvbHZlVmFsdWUhOiAocm93OiBULCBmaWVsZD86IHN0cmluZykgPT4gdW5rbm93bjtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcm93ITogVDtcblxuICBASW5wdXQoKSBhY3Rpb25zTWVudU9wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYWN0aW9uc01lbnVJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGRlZmF1bHRUZXh0T3ZlcmZsb3c/OiBUYWJsZVRleHRPdmVyZmxvdztcbiAgQElucHV0KCkgcm93Q2hlY2tib3hJZCA9ICcnO1xuICBASW5wdXQoKSByb3dMYWJlbCA9ICdpdGVtJztcbiAgQElucHV0KCkgcm93U2VsZWN0aW9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9yY2VMZWZ0QWxpZ24gPSBmYWxzZTtcbiAgQElucHV0KCkgcm93U2VsZWN0ZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdG9nZ2xlQWN0aW9uc01lbnUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IEV2ZW50OyB0cmlnZ2VyOiBIVE1MRWxlbWVudCB9PigpO1xuICBAT3V0cHV0KCkgdG9nZ2xlUm93ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgdHJpZ2dlckJ1dHRvbkFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvblNpemUgPSBUQUJMRV9JQ09OX1JFTkRFUl9TSVpFX1BYO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFnSWNvblNpemUgPSBUQUJMRV9UQUdfSUNPTl9SRU5ERVJfU0laRV9QWDtcblxuICBnZXQgcmVzb2x2ZWRBbGlnbm1lbnQoKTogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnIHtcbiAgICBpZiAodGhpcy5mb3JjZUxlZnRBbGlnbikge1xuICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZVRhYmxlQ29sdW1uQWxpZ25tZW50KHRoaXMuY29sLCAnY2VsbCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNlbGxUZXh0VmFsdWUoZmllbGQgPSB0aGlzLmNvbD8uZmllbGQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0b1RhYmxlVGV4dFZhbHVlKHRoaXMucmVzb2x2ZVZhbHVlKHRoaXMucm93LCBmaWVsZCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRpc3BsYXlUZXh0KGZpZWxkID0gdGhpcy5jb2w/LmZpZWxkKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5jZWxsVGV4dFZhbHVlKGZpZWxkKTtcbiAgICBjb25zdCBtb2RlID0gdGhpcy5lZmZlY3RpdmVUZXh0T3ZlcmZsb3coKTtcbiAgICBpZiAobW9kZSAhPT0gJ2VsbGlwc2lzJykgeyByZXR1cm4gdGV4dDsgfVxuICAgIGNvbnN0IG1heCA9IHRoaXMuY29sPy5tYXhDaGFycyA/PyBUQUJMRV9URVhUX09WRVJGTE9XX0RFRkFVTFRfTUFYX0NIQVJTO1xuICAgIHJldHVybiB0ZXh0Lmxlbmd0aCA+IG1heCA/IHRleHQuc2xpY2UoMCwgbWF4KS50cmltRW5kKCkgKyAn4oCmJyA6IHRleHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZWZmZWN0aXZlVGV4dE92ZXJmbG93KCk6IFRhYmxlVGV4dE92ZXJmbG93IHtcbiAgICByZXR1cm4gdGhpcy5jb2w/LnRleHRPdmVyZmxvdyA/PyB0aGlzLmRlZmF1bHRUZXh0T3ZlcmZsb3cgPz8gJ2JyZWFrLWxpbmUnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVsbGlwc2lzVGl0bGVUZXh0KGRpc3BsYXlUZXh0OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBtYXggPSB0aGlzLmNvbD8ubWF4Q2hhcnMgPz8gVEFCTEVfVEVYVF9PVkVSRkxPV19ERUZBVUxUX01BWF9DSEFSUztcbiAgICByZXR1cm4gZGlzcGxheVRleHQubGVuZ3RoID4gbWF4ID8gZGlzcGxheVRleHQgOiBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZvcm1hdERhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZm9ybWF0VGFibGVEYXRlKHRoaXMucmVzb2x2ZVZhbHVlKHRoaXMucm93LCB0aGlzLmNvbD8uZmllbGQpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmb3JtYXRDdXJyZW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBmb3JtYXRUYWJsZUN1cnJlbmN5KHRoaXMucmVzb2x2ZVZhbHVlKHRoaXMucm93LCB0aGlzLmNvbD8uZmllbGQpLCB0aGlzLmNvbD8uZm9ybWF0ID8/ICdCUkwnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDaGVja2VkVmFsdWUoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcbiAgfVxuXG4gIHByb3RlY3RlZCB0YWdJdGVtcygpIHtcbiAgICByZXR1cm4gcmVzb2x2ZVRhYmxlVGFnSXRlbXModGhpcy5yb3csIHRoaXMuY29sLCB0aGlzLmNlbGxDb25maWdzLnRhZywgdGhpcy5yZXNvbHZlVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRhZ092ZXJmbG93KCk6IFRhYmxlVGFnT3ZlcmZsb3cge1xuICAgIHJldHVybiByZXNvbHZlVGFibGVUYWdPdmVyZmxvdyh0aGlzLnJvdywgdGhpcy5jb2wsIHRoaXMuY2VsbENvbmZpZ3MudGFnLCB0aGlzLnJlc29sdmVWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdGFnT3ZlcmZsb3dUaXRsZShvdmVyZmxvdzogVGFibGVUYWdPdmVyZmxvdyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG92ZXJmbG93LmhpZGRlbkxhYmVscy5qb2luKCcsICcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGljb25QcmVzZW50YXRpb24oKSB7XG4gICAgcmV0dXJuIHJlc29sdmVUYWJsZUljb25QcmVzZW50YXRpb24odGhpcy5yb3csIHRoaXMuY29sLCB0aGlzLmNlbGxDb25maWdzLmljb24sIHRoaXMucmVzb2x2ZVZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0aXRsZUljb25QcmVzZW50YXRpb24oKSB7XG4gICAgcmV0dXJuIHJlc29sdmVUYWJsZVRpdGxlSWNvblByZXNlbnRhdGlvbih0aGlzLnJvdywgdGhpcy5jb2wsIHRoaXMuY2VsbENvbmZpZ3NbJ2ljb24tdGl0bGUnXSwgdGhpcy5yZXNvbHZlVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1dHRvbktleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXNvbHZlVGFibGVCdXR0b25LZXkodGhpcy5yb3csIHRoaXMuY29sLCB0aGlzLmNlbGxDb25maWdzLmJ1dHRvbiwgdGhpcy5yZXNvbHZlVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1dHRvbkFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNlbGxDb25maWdzLmJ1dHRvbi5sYWJlbFxuICAgICAgPz8gdGhpcy5jZWxsQ29uZmlncy5idXR0b24udG9vbHRpcFxuICAgICAgPz8gJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHlfYWN0aW9uX2J1dHRvbic7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWN0aW9uc0J1dHRvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2VsbENvbmZpZ3MuYWN0aW9ucy5idXR0b25MYWJlbCA/PyAncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eV9hY3Rpb25zX21lbnUnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQWN0aW9uc0NsaWNrKGV2ZW50OiBFdmVudCwgdHJpZ2dlcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnRvZ2dsZUFjdGlvbnNNZW51LmVtaXQoeyBldmVudCwgdHJpZ2dlciB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNkYy10YWJsZS1jb250ZW50XCI+XG4gIEBpZiAoY29sLmNvbnRlbnQ/Lmxlbmd0aCkge1xuICAgIDxkaXYgY2xhc3M9XCJzZGMtdGFibGUtbXVsdGktY29udGVudFwiPlxuICAgICAgQGZvciAoaXRlbSBvZiBjb2wuY29udGVudCE7IHRyYWNrICRpbmRleCkge1xuICAgICAgICBAc3dpdGNoIChpdGVtLnR5cGUgPz8gJ3RleHQnKSB7XG4gICAgICAgICAgQGNhc2UgKCdzdHJvbmcnKSB7XG4gICAgICAgICAgICA8c3Ryb25nXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIml0ZW0uc3R5bGVcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5jbGFzcyA/PyAnJ1wiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImVsbGlwc2lzVGl0bGVUZXh0KGNlbGxUZXh0VmFsdWUoaXRlbS5maWVsZCkgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgID57eyBkaXNwbGF5VGV4dChpdGVtLmZpZWxkKSB8IHRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJ2NvZGUnKSB7XG4gICAgICAgICAgICA8Y29kZVxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJpdGVtLnN0eWxlXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cIml0ZW0uY2xhc3MgPz8gJydcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJlbGxpcHNpc1RpdGxlVGV4dChjZWxsVGV4dFZhbHVlKGl0ZW0uZmllbGQpKVwiXG4gICAgICAgICAgICA+e3sgZGlzcGxheVRleHQoaXRlbS5maWVsZCkgfX08L2NvZGU+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIml0ZW0uc3R5bGVcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5jbGFzcyA/PyAnJ1wiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImVsbGlwc2lzVGl0bGVUZXh0KGNlbGxUZXh0VmFsdWUoaXRlbS5maWVsZCkgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgID57eyBkaXNwbGF5VGV4dChpdGVtLmZpZWxkKSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgQHN3aXRjaCAoY29sLnR5cGUgPz8gJ3RleHQnKSB7XG4gICAgQGNhc2UgKCdjaGVja2JveC1zZWxlY3Rpb24nKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLWNoZWNrYm94XCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgW2lkXT1cInJvd0NoZWNrYm94SWRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dTZWxlY3Rpb25EaXNhYmxlZFwiXG4gICAgICAgICAgW2NoZWNrZWRdPVwicm93U2VsZWN0ZWRcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVSb3cuZW1pdChnZXRDaGVja2VkVmFsdWUoJGV2ZW50KSlcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eV9zZWxlY3Rfcm93J1xuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBuYW1lOiAocm93TGFiZWwgfCB0cmFuc2xhdGUpIH1cbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJyb3dTZWxlY3RlZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwicm93Q2hlY2tib3hJZFwiIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICAncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eV9zZWxlY3Rfcm93J1xuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBuYW1lOiAocm93TGFiZWwgfCB0cmFuc2xhdGUpIH1cbiAgICAgICAgICB9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGNhc2UgKCdkYXRlJykge1xuICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtdGFibGUtdGV4dFwiIFthdHRyLnRpdGxlXT1cImVsbGlwc2lzVGl0bGVUZXh0KGZvcm1hdERhdGUoKSlcIj57eyBmb3JtYXREYXRlKCkgfX08L3NwYW4+XG4gICAgfVxuXG4gICAgQGNhc2UgKCdzdHJvbmcnKSB7XG4gICAgICA8c3BhbiBjbGFzcz1cInNkYy10YWJsZS1zdHJvbmctbGFiZWxcIlxuICAgICAgICBbYXR0ci50aXRsZV09XCJlbGxpcHNpc1RpdGxlVGV4dChjZWxsVGV4dFZhbHVlKCkgfCB0cmFuc2xhdGUpXCI+XG4gICAgICAgIHt7IGNlbGxUZXh0VmFsdWUoKSB8IHRyYW5zbGF0ZSB8IHNkY1RydW5jYXRlOmNvbDpkZWZhdWx0VGV4dE92ZXJmbG93IH19XG4gICAgICA8L3NwYW4+XG4gICAgfVxuXG4gICAgQGNhc2UgKCdjb2RlJykge1xuICAgICAgPGNvZGUgY2xhc3M9XCJzZGMtdGFibGUtY29kZS1sYWJlbFwiXG4gICAgICAgIFthdHRyLnRpdGxlXT1cImVsbGlwc2lzVGl0bGVUZXh0KGNlbGxUZXh0VmFsdWUoKSlcIj57eyBkaXNwbGF5VGV4dCgpIH19PC9jb2RlPlxuICAgIH1cblxuICAgIEBjYXNlICgnbGluaycpIHtcbiAgICAgIDxhIGNsYXNzPVwic2RjLXRhYmxlLWxpbmtcIlxuICAgICAgICBbaHJlZl09XCJjZWxsVGV4dFZhbHVlKClcIlxuICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIFthdHRyLnRpdGxlXT1cImVsbGlwc2lzVGl0bGVUZXh0KGNlbGxUZXh0VmFsdWUoKSB8IHRyYW5zbGF0ZSlcIj5cbiAgICAgICAge3sgY2VsbFRleHRWYWx1ZSgpIHwgdHJhbnNsYXRlIHwgc2RjVHJ1bmNhdGU6Y29sOmRlZmF1bHRUZXh0T3ZlcmZsb3cgfX1cbiAgICAgIDwvYT5cbiAgICB9XG5cbiAgICBAY2FzZSAoJ2N1cnJlbmN5Jykge1xuICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtdGFibGUtdGV4dFwiXG4gICAgICAgIFthdHRyLnRpdGxlXT1cImVsbGlwc2lzVGl0bGVUZXh0KGZvcm1hdEN1cnJlbmN5KCkpXCI+e3sgZm9ybWF0Q3VycmVuY3koKSB9fTwvc3Bhbj5cbiAgICB9XG5cbiAgICBAY2FzZSAoJ3RhZycpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtdGFibGUtdGFnc1wiPlxuICAgICAgICBAZm9yICh0YWdJdGVtIG9mIHRhZ0l0ZW1zKCk7IHRyYWNrIHRhZ0l0ZW0ubGFiZWwgKyAnLScgKyAkaW5kZXgpIHtcbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJzZGMtdGFibGUtdGFnXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZGMtdGFibGUtdGFnLS1lbmFibGVkXT1cInRhZ0l0ZW0udG9uZSA9PT0gJ2VuYWJsZWQnXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZGMtdGFibGUtdGFnLS1kaXNhYmxlZF09XCJ0YWdJdGVtLnRvbmUgPT09ICdkaXNhYmxlZCdcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwidGFnSXRlbS5zdHlsZXNcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwidGFnSXRlbS50b29sdGlwID8gKHRhZ0l0ZW0udG9vbHRpcCB8IHRyYW5zbGF0ZSkgOiAodGFnSXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAodGFnSXRlbS5pY29uKSB7XG4gICAgICAgICAgICAgIDxzZGMtaWNvbi1yZW5kZXJlclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RjLXRhYmxlLXRhZ19faWNvblwiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwidGFnSXRlbS5pY29uXCJcbiAgICAgICAgICAgICAgICBbaWNvblR5cGVdPVwidGFnSXRlbS5pY29uVHlwZVwiXG4gICAgICAgICAgICAgICAgW3NpemVdPVwidGFnSWNvblNpemVcIlxuICAgICAgICAgICAgICA+PC9zZGMtaWNvbi1yZW5kZXJlcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHt7IHRhZ0l0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHRhZ092ZXJmbG93KCk7IGFzIG92ZXJmbG93KSB7XG4gICAgICAgICAgQGlmIChvdmVyZmxvdy5oaWRkZW5Db3VudCA+IDApIHtcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwic2RjLXRhYmxlLXRhZyBzZGMtdGFibGUtdGFnLS1tb3JlXCJcbiAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHlfdGFibGVfdGFnX21vcmVfaXRlbXMnXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBpdGVtczogdGFnT3ZlcmZsb3dUaXRsZShvdmVyZmxvdykgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPuKApjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBjYXNlICgnYnV0dG9uJykge1xuICAgICAgPGRpdiBjbGFzcz1cInNkYy10YWJsZS1idXR0b25cIj5cbiAgICAgICAgPHNkYy1idXR0b25cbiAgICAgICAgICBjbGFzcz1cInNkYy10YWJsZS1hY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICBbc2l6ZV09XCJjZWxsQ29uZmlncy5idXR0b24uc2l6ZSA/PyAnZGVmYXVsdCdcIlxuICAgICAgICAgIFtwcmlvcml0eV09XCJjZWxsQ29uZmlncy5idXR0b24ucHJpb3JpdHkgfHwgJ3ByaW1hcnknXCJcbiAgICAgICAgICBbaWNvbl09XCJjZWxsQ29uZmlncy5idXR0b24uaWNvblwiXG4gICAgICAgICAgW2xhYmVsXT1cImNlbGxDb25maWdzLmJ1dHRvbi5sYWJlbCA/PyAnJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImNlbGxDb25maWdzLmJ1dHRvbi5kaXNhYmxlZCA/PyBmYWxzZVwiXG4gICAgICAgICAgW3RpdGxlXT1cImNlbGxDb25maWdzLmJ1dHRvbi50b29sdGlwXCJcbiAgICAgICAgICBbYXR0ci5zaXplXT1cImNlbGxDb25maWdzLmJ1dHRvbi5zaXplXCJcbiAgICAgICAgICBbYXR0ci5wcmlvcml0eV09XCJjZWxsQ29uZmlncy5idXR0b24ucHJpb3JpdHkgfHwgJ3ByaW1hcnknXCJcbiAgICAgICAgICBbYXR0ci5zZXZlcml0eV09XCJjZWxsQ29uZmlncy5idXR0b24ucHJpb3JpdHkgfHwgJ3ByaW1hcnknXCJcbiAgICAgICAgICBbYXR0ci5pY29uXT1cImNlbGxDb25maWdzLmJ1dHRvbi5pY29uXCJcbiAgICAgICAgICBbYXR0ci5sYWJlbF09XCJjZWxsQ29uZmlncy5idXR0b24ubGFiZWxcIlxuICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImNlbGxDb25maWdzLmJ1dHRvbi5kaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIudGl0bGVdPVwiY2VsbENvbmZpZ3MuYnV0dG9uLnRvb2x0aXAgfHwgbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIChidXR0b25BcmlhTGFiZWwoKSB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgKyAnIC0gJ1xuICAgICAgICAgICAgICArIChyb3dMYWJlbCB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRyLmRhdGEta2V5XT1cImJ1dHRvbktleSgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2VsbENvbmZpZ3MuYnV0dG9uLmRpc2FibGVkID8gbnVsbCA6IHRyaWdnZXJCdXR0b25BY3Rpb24uZW1pdCgpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJjZWxsQ29uZmlncy5idXR0b24uZGlzYWJsZWQgPyBudWxsIDogdHJpZ2dlckJ1dHRvbkFjdGlvbi5lbWl0KClcIlxuICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBjZWxsQ29uZmlncy5idXR0b24uZGlzYWJsZWQgPyBudWxsIDogdHJpZ2dlckJ1dHRvbkFjdGlvbi5lbWl0KClcIlxuICAgICAgICA+PC9zZGMtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGNhc2UgKCdhY3Rpb25zJykge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNkYy10YWJsZS1hY3Rpb25zXCJcbiAgICAgICAgW2NsYXNzLnNkYy10YWJsZS1hY3Rpb25zLS1vcGVuXT1cImFjdGlvbnNNZW51T3BlblwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAjYWN0aW9uc1RyaWdnZXJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cInNkYy10YWJsZS1hY3Rpb25zLXRyaWdnZXJcIlxuICAgICAgICAgIFtjbGFzcy5zZGMtdGFibGUtYWN0aW9ucy10cmlnZ2VyLS1vcGVuXT1cImFjdGlvbnNNZW51T3BlblwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIChhY3Rpb25zQnV0dG9uTGFiZWwoKSB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgKyAnIC0gJ1xuICAgICAgICAgICAgICArIChyb3dMYWJlbCB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiJ21lbnUnXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImFjdGlvbnNNZW51T3BlbiA/IGFjdGlvbnNNZW51SWQgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFjdGlvbnNNZW51T3BlblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uc0NsaWNrKCRldmVudCwgYWN0aW9uc1RyaWdnZXIpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXRhYmxlLWFjdGlvbnMtdHJpZ2dlcl9fbGFiZWxcIj5cbiAgICAgICAgICAgIHt7IGFjdGlvbnNCdXR0b25MYWJlbCgpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBzZGMtdGFibGUtYWN0aW9ucy10cmlnZ2VyX19pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBjYXNlICgnaWNvbicpIHtcbiAgICAgIEBpZiAoaWNvblByZXNlbnRhdGlvbigpOyBhcyBpY29uSXRlbSkge1xuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic2RjLXRhYmxlLWljb25cIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cImljb25JdGVtLmNvbG9yU3R5bGVcIlxuICAgICAgICAgIFthdHRyLnRpdGxlXT1cImljb25JdGVtLnRvb2x0aXAgPyAoaWNvbkl0ZW0udG9vbHRpcCB8IHRyYW5zbGF0ZSkgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgKGljb25JdGVtLmxhYmVsIHx8IGljb25JdGVtLnRvb2x0aXApXG4gICAgICAgICAgICAgID8gKChpY29uSXRlbS5sYWJlbCB8fCBpY29uSXRlbS50b29sdGlwKSEgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKGljb25JdGVtLmljb24pIHtcbiAgICAgICAgICAgIDxzZGMtaWNvbi1yZW5kZXJlclxuICAgICAgICAgICAgICBbaWNvbl09XCJpY29uSXRlbS5pY29uXCJcbiAgICAgICAgICAgICAgW2ljb25UeXBlXT1cImljb25JdGVtLmljb25UeXBlXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiaWNvblNpemVcIlxuICAgICAgICAgICAgPjwvc2RjLWljb24tcmVuZGVyZXI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoaWNvbkl0ZW0ubGFiZWwpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXRhYmxlLWljb25fX2xhYmVsXCI+e3sgaWNvbkl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L3NwYW4+XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGNhc2UgKCdpY29uLXRpdGxlJykge1xuICAgICAgQGlmICh0aXRsZUljb25QcmVzZW50YXRpb24oKTsgYXMgdGl0bGVJY29uSXRlbSkge1xuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwic2RjLXRhYmxlLWljb24tdGl0bGVcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cInRpdGxlSWNvbkl0ZW0uY29sb3JTdHlsZVwiXG4gICAgICAgICAgW2F0dHIudGl0bGVdPVwidGl0bGVJY29uSXRlbS50b29sdGlwID8gKHRpdGxlSWNvbkl0ZW0udG9vbHRpcCB8IHRyYW5zbGF0ZSkgOiBudWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAodGl0bGVJY29uSXRlbS5pY29uKSB7XG4gICAgICAgICAgICA8c2RjLWljb24tcmVuZGVyZXJcbiAgICAgICAgICAgICAgW2ljb25dPVwidGl0bGVJY29uSXRlbS5pY29uXCJcbiAgICAgICAgICAgICAgW2ljb25UeXBlXT1cInRpdGxlSWNvbkl0ZW0uaWNvblR5cGVcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCJpY29uU2l6ZVwiXG4gICAgICAgICAgICA+PC9zZGMtaWNvbi1yZW5kZXJlcj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmICh0aXRsZUljb25JdGVtLmxhYmVsKSB7XG4gICAgICAgICAgICA8c3BhbiBbYXR0ci50aXRsZV09XCJlbGxpcHNpc1RpdGxlVGV4dCh0aXRsZUljb25JdGVtLmxhYmVsIHwgdHJhbnNsYXRlKVwiPlxuICAgICAgICAgICAgICB7eyB0aXRsZUljb25JdGVtLmxhYmVsIHwgdHJhbnNsYXRlIHwgc2RjVHJ1bmNhdGU6Y29sOmRlZmF1bHRUZXh0T3ZlcmZsb3cgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZGVmYXVsdCB7XG4gICAgICA8c3BhbiBjbGFzcz1cInNkYy10YWJsZS10ZXh0XCJcbiAgICAgICAgW2F0dHIudGl0bGVdPVwiZWxsaXBzaXNUaXRsZVRleHQoY2VsbFRleHRWYWx1ZSgpIHwgdHJhbnNsYXRlKVwiPlxuICAgICAgICB7eyBjZWxsVGV4dFZhbHVlKCkgfCB0cmFuc2xhdGUgfCBzZGNUcnVuY2F0ZTpjb2w6ZGVmYXVsdFRleHRPdmVyZmxvdyB9fVxuICAgICAgPC9zcGFuPlxuICAgIH1cbiAgICB9XG4gIH1cbjwvZGl2PlxuIl19
|