{"version":3,"file":"finastra-angular-components-expandable-table.mjs","sources":["../tmp-esm2022/expandable-table/expandable-table.component.js","../tmp-esm2022/expandable-table/finastra-angular-components-expandable-table.js"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatAccordion, MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { createChain } from '@finastra/angular-components/core';\nimport { TableComponent } from '@finastra/angular-components/table';\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport filter from 'lodash-es/filter';\nimport find from 'lodash-es/find';\nimport groupBy from 'lodash-es/groupBy';\nimport isEqual from 'lodash-es/isEqual';\nimport map from 'lodash-es/map';\nimport omit from 'lodash-es/omit';\nimport reject from 'lodash-es/reject';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/checkbox\";\nimport * as i2 from \"@angular/material/button\";\nimport * as i3 from \"@angular/material/icon\";\nimport * as i4 from \"@angular/material/expansion\";\nexport class ExpandableTableComponent {\n    constructor() {\n        this.startExpanded = false;\n        this.rowClick = new EventEmitter();\n        this.selectionChange = new EventEmitter();\n        this.tableButtonsCallBack = new EventEmitter();\n        this.tableHeaderCallBack = new EventEmitter();\n        this.dataLength = 0;\n        this.selectionModel = new SelectionModel(true, []);\n        this.primaryKey = 'primaryKey';\n        this.dataSource = [];\n        this._dataSource = [];\n        this.columns = [];\n        this._columns = [];\n        this.visibleColumns = [];\n        this.selectable = false;\n        this.rowClickable = false;\n        this.groupByKey = 'id';\n        this.chain = createChain({ map, groupBy, filter, find, isEqual, reject });\n    }\n    // @ts-expect-error: Argument is not used\n    ngOnChanges(changes) {\n        if (this.groupByKey && this.columns && this.dataSource) {\n            this.selectionModel = new SelectionModel(true, []);\n            this.generateColumns();\n            this.generateData();\n        }\n    }\n    generateData() {\n        // add primaryKey\n        let primaryKeyValue = 0;\n        this.dataSource.forEach((data) => {\n            data[this.primaryKey] = ++primaryKeyValue;\n        });\n        // input selection\n        if (this.selection) {\n            const initialSelection = [];\n            this.selection.forEach((selectionData) => {\n                this.dataSource.forEach((data) => {\n                    if (isEqual(omit(data, 'primaryKey'), omit(selectionData, 'primaryKey'))) {\n                        initialSelection.push(data);\n                    }\n                });\n            });\n            this.selectionModel = new SelectionModel(true, initialSelection);\n        }\n        this.dataLength = this.dataSource.length;\n        this.dataSource = filter(this.dataSource, (data) => {\n            return data[this.groupByKey];\n        });\n        this._dataSource = this.groupBy(this.groupByKey, this.dataSource);\n    }\n    generateColumns() {\n        if (!this.groupByKeyLabel) {\n            this.groupByKeyLabel = this.groupByKey;\n        }\n        this.groupInfo = find(this.columns, (c) => c.name === this.groupByKeyLabel);\n        this._columns = reject(this.columns, (c) => c.name === this.groupByKeyLabel);\n        this.visibleColumns = this._columns.map((c) => c.name);\n    }\n    groupBy(groupId, collection) {\n        const dataSource = this.chain(collection)\n            .groupBy(groupId)\n            .map((values, id) => ({\n            id,\n            label: this.groupByKeyLabel ? values[0][this.groupByKeyLabel] : groupId,\n            values,\n            expanded: this.startExpanded\n        }))\n            .value();\n        dataSource.forEach((ds) => {\n            if (!ds.values[0][this.visibleColumns[1]]) {\n                ds.values = [];\n            }\n        });\n        return dataSource;\n    }\n    // All\n    toggleAll() {\n        if (this.selectionModel.selected.length && this.isAllSelected()) {\n            this.selectionModel.selected.forEach((item) => {\n                this.selectionModel.toggle(item);\n            });\n        }\n        else {\n            this._dataSource.forEach((row) => {\n                row.values.forEach((item) => this.selectionModel.select(item));\n            });\n        }\n        this.onSelectionChanged();\n    }\n    isAllSelected() {\n        return this.selectionModel.selected.length === this.dataLength;\n    }\n    // Row level\n    toggleRow(row) {\n        const selected = this.getSelectionByRow(row);\n        if (selected && selected.length === row.values.length) {\n            selected.forEach((item) => {\n                this.selectionModel.toggle(item);\n            });\n        }\n        else {\n            row.values.forEach((item) => this.selectionModel.select(item));\n        }\n        this.onSelectionChanged();\n    }\n    selectionHasRowValue(row) {\n        return this.getSelectionByRow(row).length > 0;\n    }\n    isRowAllSelected(row) {\n        return this.getSelectionByRow(row).length === row.values.length;\n    }\n    getSelectionByRow(row) {\n        return filter(this.selectionModel.selected, { [this.groupByKey]: row.id });\n    }\n    collapseAll() {\n        if (!this.accordion)\n            return;\n        if (this._dataSource.some((row) => row.expanded)) {\n            this.accordion.closeAll();\n        }\n        else {\n            this.accordion.openAll();\n        }\n    }\n    getSelectedKeys(row) {\n        const keys = [];\n        const prediction = {};\n        row.values.forEach((value, key) => {\n            prediction[this.primaryKey] = value[this.primaryKey];\n            if (find(this.selectionModel.selected, prediction)) {\n                keys.push(key);\n            }\n        });\n        return keys;\n    }\n    onTableSelectionChange(tableSelectionEvent, row) {\n        const rowSelection = this.getSelectionByRow(row);\n        if (tableSelectionEvent.data) {\n            rowSelection.forEach((selection) => {\n                this.selectionModel.toggle(selection);\n            });\n            tableSelectionEvent.data.forEach((selection) => {\n                this.selectionModel.toggle(selection);\n            });\n            this.onSelectionChanged();\n        }\n    }\n    onSelectionChanged() {\n        const selectedItems = cloneDeep(this.selectionModel.selected);\n        selectedItems.forEach((data) => {\n            delete data[this.primaryKey];\n        });\n        this.selectionChange.emit(selectedItems);\n    }\n    onRowClicked(event) {\n        if (this.rowClick) {\n            this.rowClick.emit(event.data);\n        }\n    }\n    static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: ExpandableTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n    static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: ExpandableTableComponent, isStandalone: true, selector: \"uxg-expandable-table\", inputs: { dataSource: \"dataSource\", columns: \"columns\", groupByKey: \"groupByKey\", groupByKeyLabel: \"groupByKeyLabel\", subtitle: \"subtitle\", selectable: \"selectable\", rowClickable: \"rowClickable\", selection: \"selection\", startExpanded: \"startExpanded\" }, outputs: { rowClick: \"rowClick\", selectionChange: \"selectionChange\", tableButtonsCallBack: \"tableButtonsCallBack\", tableHeaderCallBack: \"tableHeaderCallBack\" }, queries: [{ propertyName: \"templateHeaderButtons\", first: true, predicate: [\"expandableHeaderButtonsTemplate\"], descendants: true }, { propertyName: \"templateTableButtons\", first: true, predicate: [\"expandableTableButtonsTemplate\"], descendants: true }, { propertyName: \"templateHeaderSubtitle\", first: true, predicate: [\"expandableTableSubtitleTemplate\"], descendants: true }], viewQueries: [{ propertyName: \"accordion\", first: true, predicate: MatAccordion, descendants: true }], usesOnChanges: true, ngImport: i0, template: \"<div class=\\\"expandable-table-header\\\">\\n  @if (selectable) {\\n    <mat-checkbox\\n      class=\\\"check-box-header\\\"\\n      (click)=\\\"$event.stopPropagation()\\\"\\n      [checked]=\\\"selectionModel.selected.length > 0 && isAllSelected()\\\"\\n      [indeterminate]=\\\"selectionModel.selected.length > 0 && !isAllSelected()\\\"\\n      (change)=\\\"$event ? toggleAll() : null\\\"\\n      color=\\\"primary\\\"\\n    >\\n    </mat-checkbox>\\n  }\\n  <div class=\\\"title uxg-subtitle-1\\\" [ngClass]=\\\"{ selectable: selectable }\\\">\\n    {{ groupInfo?.displayName || groupInfo?.name }}\\n  </div>\\n\\n  <div class=\\\"up-down\\\">\\n    <button mat-icon-button (click)=\\\"collapseAll(); $event.stopPropagation()\\\" [disableRipple]=\\\"true\\\">\\n      <mat-icon>code</mat-icon>\\n    </button>\\n  </div>\\n</div>\\n\\n@if (_dataSource && _dataSource.length > 0) {\\n  <mat-accordion multi=\\\"true\\\">\\n    @for (row of _dataSource; track i; let i = $index) {\\n      <mat-expansion-panel [expanded]=\\\"row.expanded\\\" (opened)=\\\"row.expanded = true\\\" (closed)=\\\"row.expanded = false\\\">\\n        <mat-expansion-panel-header>\\n          <mat-panel-title>\\n            @if (selectable) {\\n              <mat-checkbox\\n                class=\\\"check-box-header\\\"\\n                (click)=\\\"$event.stopPropagation()\\\"\\n                [checked]=\\\"selectionHasRowValue(row) && isRowAllSelected(row)\\\"\\n                [indeterminate]=\\\"selectionHasRowValue(row) && !isRowAllSelected(row)\\\"\\n                (change)=\\\"$event ? toggleRow(row) : null\\\"\\n                color=\\\"primary\\\"\\n              >\\n              </mat-checkbox>\\n            }\\n            <div class=\\\"header-text\\\" [ngClass]=\\\"{ selectable: selectable }\\\">\\n              <span class=\\\"title uxg-subtitle-1\\\">{{ row.label }}</span>\\n              <span class=\\\"subtitle uxg-body-3\\\">\\n                <ng-container *ngTemplateOutlet=\\\"templateHeaderSubtitle; context: { row: row, subtitle: subtitle }\\\"> </ng-container>\\n              </span>\\n            </div>\\n            <div class=\\\"header-buttons\\\">\\n              <ng-container *ngTemplateOutlet=\\\"templateHeaderButtons; context: { row: row, emiter: tableHeaderCallBack }\\\"></ng-container>\\n            </div>\\n          </mat-panel-title>\\n        </mat-expansion-panel-header>\\n        @if (row && row.values && _columns) {\\n          <uxg-table\\n            id=\\\"{{ row.id }}\\\"\\n            class=\\\"sub-table\\\"\\n            [data]=\\\"row.values\\\"\\n            [columns]=\\\"_columns\\\"\\n            [columnsToDisplay]=\\\"visibleColumns\\\"\\n            (selectChanged)=\\\"onTableSelectionChange($event, row)\\\"\\n            [multiSelect]=\\\"selectable\\\"\\n            [singleSelect]=\\\"!selectable\\\"\\n            [selectedKeys]=\\\"getSelectedKeys(row)\\\"\\n            (multiSelectSingleRowClicked)=\\\"onRowClicked($event)\\\"\\n          >\\n          </uxg-table>\\n        }\\n        <div class=\\\"table-buttons\\\">\\n          <ng-container *ngTemplateOutlet=\\\"templateTableButtons; context: { row: row, emiter: tableButtonsCallBack }\\\"> </ng-container>\\n        </div>\\n      </mat-expansion-panel>\\n    }\\n  </mat-accordion>\\n}\\n\", styles: [\".mat-h1,.mat-headline-5,.mat-typography .mat-h1,.mat-typography .mat-headline-5,.mat-typography h1{font:800 1rem/1.375rem Spartan;letter-spacing:0;margin:0 0 16px}.mat-h2,.mat-headline-6,.mat-typography .mat-h2,.mat-typography .mat-headline-6,.mat-typography h2{font:800 .8125rem/1.125rem Spartan;letter-spacing:0;margin:0 0 16px}.mat-h3,.mat-subtitle-1,.mat-typography .mat-h3,.mat-typography .mat-subtitle-1,.mat-typography h3{font:500 1rem/1.5rem Roboto;letter-spacing:.15px;margin:0 0 16px}.mat-h4,.mat-body-1,.mat-typography .mat-h4,.mat-typography .mat-body-1,.mat-typography h4{font:300 1rem/1.5rem Roboto;letter-spacing:.5px;margin:0 0 16px}.mat-h5,.mat-typography .mat-h5,.mat-typography h5{font:300 .72625rem/1.3125rem Roboto;margin:0 0 12px}.mat-h6,.mat-typography .mat-h6,.mat-typography h6{font:300 .58625rem/1.3125rem Roboto;margin:0 0 12px}.mat-body-strong,.mat-subtitle-2,.mat-typography .mat-body-strong,.mat-typography .mat-subtitle-2{font:500 .875rem/1.3125rem Roboto;letter-spacing:.1px}.mat-body,.mat-body-2,.mat-typography .mat-body,.mat-typography .mat-body-2,.mat-typography{font:300 .875rem/1.3125rem Roboto;letter-spacing:.25px}.mat-body p,.mat-body-2 p,.mat-typography .mat-body p,.mat-typography .mat-body-2 p,.mat-typography p{margin:0 0 12px}.mat-small,.mat-caption,.mat-typography .mat-small,.mat-typography .mat-caption{font:400 .75rem/1.125rem Roboto;letter-spacing:.4px}.mat-headline-1,.mat-typography .mat-headline-1{font:800 3.1875rem/4.4375rem Spartan;letter-spacing:0;margin:0 0 56px}.mat-headline-2,.mat-typography .mat-headline-2{font:800 2.5625rem/3.5625rem Spartan;letter-spacing:0;margin:0 0 64px}.mat-headline-3,.mat-typography .mat-headline-3{font:800 1.75rem/2.4375rem Spartan;letter-spacing:0;margin:0 0 64px}.mat-headline-4,.mat-typography .mat-headline-4{font:800 1.3125rem/1.8125rem Spartan;letter-spacing:0;margin:0 0 64px}.flex{display:flex;box-sizing:border-box}.inline-flex{display:inline-flex;box-sizing:border-box}.flex-row{display:flex;flex-direction:row;box-sizing:border-box}.flex-col{display:flex;flex-direction:column;box-sizing:border-box}.flex-wrap{flex-wrap:wrap}@media screen and (max-width: 599px){.flex-col-xs{flex-direction:column}}@media screen and (max-width: 959px){.flex-col-lt-md{flex-direction:column}}@media screen and (max-width: 1279px){.flex-col-lt-lg{flex-direction:column}}@media screen and (max-width: 599px){.flex-row-xs{flex-direction:row}}@media screen and (max-width: 959px){.flex-row-lt-md{flex-direction:row}}@media screen and (max-width: 1279px){.flex-row-lt-lg{flex-direction:row}}.flex-row-gt-xs{display:flex}@media screen and (min-width: 600px){.flex-row-gt-xs{flex-direction:row}}.flex-initial{flex:initial}.flex-auto{flex:auto}.flex-1{flex:1}.flex-2{flex:2}.flex-3{flex:3}.flex-4{flex:4}.flex-5{flex:5}.flex-15{flex:0 0 15%}.flex-20{flex:0 0 20%}.flex-25{flex:0 0 25%}.flex-30{flex:0 0 30%}.flex-35{flex:0 0 35%}.flex-40{flex:0 0 40%}.flex-45{flex:0 0 45%}.flex-50{flex:0 0 50%}.flex-55{flex:0 0 55%}.flex-60{flex:0 0 60%}.flex-80{flex:0 0 80%}.flex-none{flex:none}.flex-nogrow{flex:0 1 auto}.flex-noshrink{flex:1 0 auto}.flex-grow{flex:1 1 100%}.flex-grow25{flex:0 1 25%}.flex-grow50{flex:0 1 50%}.flex-grow60{flex:0 1 60%}.flex-grow75{flex:0 1 75%}.gap-10>*{margin-right:10px}.gap-10>*:last-child{margin-right:0}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-center{align-content:center}.content-stretch{align-content:stretch}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-evenly{align-content:space-evenly}.align-start{align-items:flex-start}.align-end{align-items:flex-end}.align-center{align-items:center}.align-stretch{align-items:stretch}.align-baseline{align-items:baseline}.center-center{justify-content:center;align-items:center}.item-start{align-self:flex-start}.item-end{align-self:flex-end}.item-center{align-self:center}.item-stretch{align-self:stretch}.item-baseline{align-self:baseline}.center{display:block;margin-left:auto;margin-right:auto}.fill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}.fill-remaining-space{flex:1 1 auto}.center-text{text-align:center}.hide{display:none!important}@media screen and (max-width: 599px){.hide-xs{display:none!important}}@media screen and (min-width: 600px){.hide-gt-xs{display:none!important}}@media screen and (max-width: 959px){.hide-lt-md{display:none!important}}@media screen and (min-width: 960px){.hide-gt-sm{display:none!important}}@media screen and (min-width: 1280px){.hide-gt-md{display:none!important}}@media screen and (max-width: 1279px){.hide-lt-lg{display:none!important}}@media screen and (max-width: 599px){.hide-lt-sm{display:none!important}}uxg-expandable-table{width:100%;border-collapse:collapse}uxg-expandable-table .expandable-table-header{display:flex;align-items:center;padding:8px 8px 8px 24px}uxg-expandable-table .expandable-table-header .title.selectable{padding-left:16px}uxg-expandable-table .expandable-table-header .up-down{transform:rotate(90deg);margin-left:auto}uxg-expandable-table .check-box-header{margin-right:16px;display:flex}uxg-expandable-table .mat-expansion-panel{border-radius:0!important}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header{padding-left:0}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{margin-right:0;align-items:center;padding-left:24px;min-height:48px}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .header-text{display:flex;flex-direction:column}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .header-text.selectable{padding-left:16px}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .header-text .subtitle{opacity:.8}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .header-buttons{margin-left:auto}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-indicator{display:flex}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body{padding:0}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table{table-layout:fixed}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table .mat-header-cell .mat-checkbox{display:none}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table tr.clickable{cursor:pointer}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table.sub-table{width:100%}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table.not-selectable td.mat-cell:first-of-type{padding-left:32px!important}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table.not-selectable th.mat-header-cell:first-of-type{padding-left:32px!important}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table td.mat-cell:first-of-type{padding-left:24px!important}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table th.mat-header-cell:first-of-type{padding-left:24px!important}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table .mat-column-uxg-table-select-row{width:16px}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table .mat-column-uxg-table-select-row .check-box{display:flex}\\n\"], dependencies: [{ kind: \"ngmodule\", type: MatCheckboxModule }, { kind: \"component\", type: i1.MatCheckbox, selector: \"mat-checkbox\", inputs: [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-expanded\", \"aria-controls\", \"aria-owns\", \"id\", \"required\", \"labelPosition\", \"name\", \"value\", \"disableRipple\", \"tabIndex\", \"color\", \"disabledInteractive\", \"checked\", \"disabled\", \"indeterminate\"], outputs: [\"change\", \"indeterminateChange\"], exportAs: [\"matCheckbox\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i2.MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i3.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"ngmodule\", type: MatExpansionModule }, { kind: \"directive\", type: i4.MatAccordion, selector: \"mat-accordion\", inputs: [\"hideToggle\", \"displayMode\", \"togglePosition\"], exportAs: [\"matAccordion\"] }, { kind: \"component\", type: i4.MatExpansionPanel, selector: \"mat-expansion-panel\", inputs: [\"hideToggle\", \"togglePosition\"], outputs: [\"afterExpand\", \"afterCollapse\"], exportAs: [\"matExpansionPanel\"] }, { kind: \"component\", type: i4.MatExpansionPanelHeader, selector: \"mat-expansion-panel-header\", inputs: [\"expandedHeight\", \"collapsedHeight\", \"tabIndex\"] }, { kind: \"directive\", type: i4.MatExpansionPanelTitle, selector: \"mat-panel-title\" }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: TableComponent, selector: \"uxg-table\", inputs: [\"data\", \"columnsToDisplay\", \"columns\", \"showTotalRows\", \"showTableHeader\", \"totalData\", \"sort\", \"stickyHeader\", \"stickyFooter\", \"columnDragEnable\", \"selectedKeys\", \"singleSelect\", \"multiSelect\", \"pageEnable\", \"paging\", \"enableEdit\", \"enableDelete\", \"enableSend\", \"actionColumnPosition\"], outputs: [\"selectChanged\", \"multiSelectSingleRowClicked\", \"sortChanged\", \"pageChanged\", \"rowRemoved\", \"rowUpdated\", \"rowSend\"] }], animations: [\n            trigger('detailExpand', [\n                state('collapsed', style({ height: '0px', minHeight: '0', padding: '0' })),\n                state('expanded', style({ height: '*' })),\n                transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\n            ])\n        ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: ExpandableTableComponent, decorators: [{\n            type: Component,\n            args: [{ selector: 'uxg-expandable-table', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n                        trigger('detailExpand', [\n                            state('collapsed', style({ height: '0px', minHeight: '0', padding: '0' })),\n                            state('expanded', style({ height: '*' })),\n                            transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\n                        ])\n                    ], standalone: true, imports: [MatCheckboxModule, NgClass, MatButtonModule, MatIconModule, MatExpansionModule, NgTemplateOutlet, TableComponent], template: \"<div class=\\\"expandable-table-header\\\">\\n  @if (selectable) {\\n    <mat-checkbox\\n      class=\\\"check-box-header\\\"\\n      (click)=\\\"$event.stopPropagation()\\\"\\n      [checked]=\\\"selectionModel.selected.length > 0 && isAllSelected()\\\"\\n      [indeterminate]=\\\"selectionModel.selected.length > 0 && !isAllSelected()\\\"\\n      (change)=\\\"$event ? toggleAll() : null\\\"\\n      color=\\\"primary\\\"\\n    >\\n    </mat-checkbox>\\n  }\\n  <div class=\\\"title uxg-subtitle-1\\\" [ngClass]=\\\"{ selectable: selectable }\\\">\\n    {{ groupInfo?.displayName || groupInfo?.name }}\\n  </div>\\n\\n  <div class=\\\"up-down\\\">\\n    <button mat-icon-button (click)=\\\"collapseAll(); $event.stopPropagation()\\\" [disableRipple]=\\\"true\\\">\\n      <mat-icon>code</mat-icon>\\n    </button>\\n  </div>\\n</div>\\n\\n@if (_dataSource && _dataSource.length > 0) {\\n  <mat-accordion multi=\\\"true\\\">\\n    @for (row of _dataSource; track i; let i = $index) {\\n      <mat-expansion-panel [expanded]=\\\"row.expanded\\\" (opened)=\\\"row.expanded = true\\\" (closed)=\\\"row.expanded = false\\\">\\n        <mat-expansion-panel-header>\\n          <mat-panel-title>\\n            @if (selectable) {\\n              <mat-checkbox\\n                class=\\\"check-box-header\\\"\\n                (click)=\\\"$event.stopPropagation()\\\"\\n                [checked]=\\\"selectionHasRowValue(row) && isRowAllSelected(row)\\\"\\n                [indeterminate]=\\\"selectionHasRowValue(row) && !isRowAllSelected(row)\\\"\\n                (change)=\\\"$event ? toggleRow(row) : null\\\"\\n                color=\\\"primary\\\"\\n              >\\n              </mat-checkbox>\\n            }\\n            <div class=\\\"header-text\\\" [ngClass]=\\\"{ selectable: selectable }\\\">\\n              <span class=\\\"title uxg-subtitle-1\\\">{{ row.label }}</span>\\n              <span class=\\\"subtitle uxg-body-3\\\">\\n                <ng-container *ngTemplateOutlet=\\\"templateHeaderSubtitle; context: { row: row, subtitle: subtitle }\\\"> </ng-container>\\n              </span>\\n            </div>\\n            <div class=\\\"header-buttons\\\">\\n              <ng-container *ngTemplateOutlet=\\\"templateHeaderButtons; context: { row: row, emiter: tableHeaderCallBack }\\\"></ng-container>\\n            </div>\\n          </mat-panel-title>\\n        </mat-expansion-panel-header>\\n        @if (row && row.values && _columns) {\\n          <uxg-table\\n            id=\\\"{{ row.id }}\\\"\\n            class=\\\"sub-table\\\"\\n            [data]=\\\"row.values\\\"\\n            [columns]=\\\"_columns\\\"\\n            [columnsToDisplay]=\\\"visibleColumns\\\"\\n            (selectChanged)=\\\"onTableSelectionChange($event, row)\\\"\\n            [multiSelect]=\\\"selectable\\\"\\n            [singleSelect]=\\\"!selectable\\\"\\n            [selectedKeys]=\\\"getSelectedKeys(row)\\\"\\n            (multiSelectSingleRowClicked)=\\\"onRowClicked($event)\\\"\\n          >\\n          </uxg-table>\\n        }\\n        <div class=\\\"table-buttons\\\">\\n          <ng-container *ngTemplateOutlet=\\\"templateTableButtons; context: { row: row, emiter: tableButtonsCallBack }\\\"> </ng-container>\\n        </div>\\n      </mat-expansion-panel>\\n    }\\n  </mat-accordion>\\n}\\n\", styles: [\".mat-h1,.mat-headline-5,.mat-typography .mat-h1,.mat-typography .mat-headline-5,.mat-typography h1{font:800 1rem/1.375rem Spartan;letter-spacing:0;margin:0 0 16px}.mat-h2,.mat-headline-6,.mat-typography .mat-h2,.mat-typography .mat-headline-6,.mat-typography h2{font:800 .8125rem/1.125rem Spartan;letter-spacing:0;margin:0 0 16px}.mat-h3,.mat-subtitle-1,.mat-typography .mat-h3,.mat-typography .mat-subtitle-1,.mat-typography h3{font:500 1rem/1.5rem Roboto;letter-spacing:.15px;margin:0 0 16px}.mat-h4,.mat-body-1,.mat-typography .mat-h4,.mat-typography .mat-body-1,.mat-typography h4{font:300 1rem/1.5rem Roboto;letter-spacing:.5px;margin:0 0 16px}.mat-h5,.mat-typography .mat-h5,.mat-typography h5{font:300 .72625rem/1.3125rem Roboto;margin:0 0 12px}.mat-h6,.mat-typography .mat-h6,.mat-typography h6{font:300 .58625rem/1.3125rem Roboto;margin:0 0 12px}.mat-body-strong,.mat-subtitle-2,.mat-typography .mat-body-strong,.mat-typography .mat-subtitle-2{font:500 .875rem/1.3125rem Roboto;letter-spacing:.1px}.mat-body,.mat-body-2,.mat-typography .mat-body,.mat-typography .mat-body-2,.mat-typography{font:300 .875rem/1.3125rem Roboto;letter-spacing:.25px}.mat-body p,.mat-body-2 p,.mat-typography .mat-body p,.mat-typography .mat-body-2 p,.mat-typography p{margin:0 0 12px}.mat-small,.mat-caption,.mat-typography .mat-small,.mat-typography .mat-caption{font:400 .75rem/1.125rem Roboto;letter-spacing:.4px}.mat-headline-1,.mat-typography .mat-headline-1{font:800 3.1875rem/4.4375rem Spartan;letter-spacing:0;margin:0 0 56px}.mat-headline-2,.mat-typography .mat-headline-2{font:800 2.5625rem/3.5625rem Spartan;letter-spacing:0;margin:0 0 64px}.mat-headline-3,.mat-typography .mat-headline-3{font:800 1.75rem/2.4375rem Spartan;letter-spacing:0;margin:0 0 64px}.mat-headline-4,.mat-typography .mat-headline-4{font:800 1.3125rem/1.8125rem Spartan;letter-spacing:0;margin:0 0 64px}.flex{display:flex;box-sizing:border-box}.inline-flex{display:inline-flex;box-sizing:border-box}.flex-row{display:flex;flex-direction:row;box-sizing:border-box}.flex-col{display:flex;flex-direction:column;box-sizing:border-box}.flex-wrap{flex-wrap:wrap}@media screen and (max-width: 599px){.flex-col-xs{flex-direction:column}}@media screen and (max-width: 959px){.flex-col-lt-md{flex-direction:column}}@media screen and (max-width: 1279px){.flex-col-lt-lg{flex-direction:column}}@media screen and (max-width: 599px){.flex-row-xs{flex-direction:row}}@media screen and (max-width: 959px){.flex-row-lt-md{flex-direction:row}}@media screen and (max-width: 1279px){.flex-row-lt-lg{flex-direction:row}}.flex-row-gt-xs{display:flex}@media screen and (min-width: 600px){.flex-row-gt-xs{flex-direction:row}}.flex-initial{flex:initial}.flex-auto{flex:auto}.flex-1{flex:1}.flex-2{flex:2}.flex-3{flex:3}.flex-4{flex:4}.flex-5{flex:5}.flex-15{flex:0 0 15%}.flex-20{flex:0 0 20%}.flex-25{flex:0 0 25%}.flex-30{flex:0 0 30%}.flex-35{flex:0 0 35%}.flex-40{flex:0 0 40%}.flex-45{flex:0 0 45%}.flex-50{flex:0 0 50%}.flex-55{flex:0 0 55%}.flex-60{flex:0 0 60%}.flex-80{flex:0 0 80%}.flex-none{flex:none}.flex-nogrow{flex:0 1 auto}.flex-noshrink{flex:1 0 auto}.flex-grow{flex:1 1 100%}.flex-grow25{flex:0 1 25%}.flex-grow50{flex:0 1 50%}.flex-grow60{flex:0 1 60%}.flex-grow75{flex:0 1 75%}.gap-10>*{margin-right:10px}.gap-10>*:last-child{margin-right:0}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-center{align-content:center}.content-stretch{align-content:stretch}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-evenly{align-content:space-evenly}.align-start{align-items:flex-start}.align-end{align-items:flex-end}.align-center{align-items:center}.align-stretch{align-items:stretch}.align-baseline{align-items:baseline}.center-center{justify-content:center;align-items:center}.item-start{align-self:flex-start}.item-end{align-self:flex-end}.item-center{align-self:center}.item-stretch{align-self:stretch}.item-baseline{align-self:baseline}.center{display:block;margin-left:auto;margin-right:auto}.fill{margin:0;width:100%;height:100%;min-width:100%;min-height:100%}.fill-remaining-space{flex:1 1 auto}.center-text{text-align:center}.hide{display:none!important}@media screen and (max-width: 599px){.hide-xs{display:none!important}}@media screen and (min-width: 600px){.hide-gt-xs{display:none!important}}@media screen and (max-width: 959px){.hide-lt-md{display:none!important}}@media screen and (min-width: 960px){.hide-gt-sm{display:none!important}}@media screen and (min-width: 1280px){.hide-gt-md{display:none!important}}@media screen and (max-width: 1279px){.hide-lt-lg{display:none!important}}@media screen and (max-width: 599px){.hide-lt-sm{display:none!important}}uxg-expandable-table{width:100%;border-collapse:collapse}uxg-expandable-table .expandable-table-header{display:flex;align-items:center;padding:8px 8px 8px 24px}uxg-expandable-table .expandable-table-header .title.selectable{padding-left:16px}uxg-expandable-table .expandable-table-header .up-down{transform:rotate(90deg);margin-left:auto}uxg-expandable-table .check-box-header{margin-right:16px;display:flex}uxg-expandable-table .mat-expansion-panel{border-radius:0!important}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header{padding-left:0}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{margin-right:0;align-items:center;padding-left:24px;min-height:48px}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .header-text{display:flex;flex-direction:column}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .header-text.selectable{padding-left:16px}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .header-text .subtitle{opacity:.8}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .header-buttons{margin-left:auto}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-indicator{display:flex}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body{padding:0}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table{table-layout:fixed}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table .mat-header-cell .mat-checkbox{display:none}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table tr.clickable{cursor:pointer}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table.sub-table{width:100%}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table.not-selectable td.mat-cell:first-of-type{padding-left:32px!important}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table.not-selectable th.mat-header-cell:first-of-type{padding-left:32px!important}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table td.mat-cell:first-of-type{padding-left:24px!important}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table th.mat-header-cell:first-of-type{padding-left:24px!important}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table .mat-column-uxg-table-select-row{width:16px}uxg-expandable-table .mat-expansion-panel .mat-expansion-panel-body .mat-table .mat-column-uxg-table-select-row .check-box{display:flex}\\n\"] }]\n        }], ctorParameters: () => [], propDecorators: { dataSource: [{\n                type: Input\n            }], columns: [{\n                type: Input\n            }], groupByKey: [{\n                type: Input\n            }], groupByKeyLabel: [{\n                type: Input\n            }], subtitle: [{\n                type: Input\n            }], selectable: [{\n                type: Input\n            }], rowClickable: [{\n                type: Input\n            }], selection: [{\n                type: Input\n            }], startExpanded: [{\n                type: Input\n            }], rowClick: [{\n                type: Output\n            }], selectionChange: [{\n                type: Output\n            }], tableButtonsCallBack: [{\n                type: Output\n            }], tableHeaderCallBack: [{\n                type: Output\n            }], accordion: [{\n                type: ViewChild,\n                args: [MatAccordion, { static: false }]\n            }], templateHeaderButtons: [{\n                type: ContentChild,\n                args: ['expandableHeaderButtonsTemplate', { static: false }]\n            }], templateTableButtons: [{\n                type: ContentChild,\n                args: ['expandableTableButtonsTemplate', { static: false }]\n            }], templateHeaderSubtitle: [{\n                type: ContentChild,\n                args: ['expandableTableSubtitleTemplate', { static: false }]\n            }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9leHBhbmRhYmxlLXRhYmxlL3NyYy9leHBhbmRhYmxlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1jb21wb25lbnRzL2V4cGFuZGFibGUtdGFibGUvc3JjL2V4cGFuZGFibGUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFHTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FB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QkFBbEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFXcUMsU0FBUztzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUUwQixxQkFBcUI7c0JBQXhGLFlBQVk7dUJBQUMsaUNBQWlDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNDLG9CQUFvQjtzQkFBdEYsWUFBWTt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0csc0JBQXNCO3NCQUF6RixZQUFZO3VCQUFDLGlDQUFpQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdEFjY29yZGlvbiwgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IGNyZWF0ZUNoYWluIH0gZnJvbSAnQGZpbmFzdHJhL2FuZ3VsYXItY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnQGZpbmFzdHJhL2FuZ3VsYXItY29tcG9uZW50cy90YWJsZSc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC1lcy9jbG9uZURlZXAnO1xuaW1wb3J0IGZpbHRlciBmcm9tICdsb2Rhc2gtZXMvZmlsdGVyJztcbmltcG9ydCBmaW5kIGZyb20gJ2xvZGFzaC1lcy9maW5kJztcbmltcG9ydCBncm91cEJ5IGZyb20gJ2xvZGFzaC1lcy9ncm91cEJ5JztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC1lcy9pc0VxdWFsJztcbmltcG9ydCBtYXAgZnJvbSAnbG9kYXNoLWVzL21hcCc7XG5pbXBvcnQgb21pdCBmcm9tICdsb2Rhc2gtZXMvb21pdCc7XG5pbXBvcnQgcmVqZWN0IGZyb20gJ2xvZGFzaC1lcy9yZWplY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1eGctZXhwYW5kYWJsZS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9leHBhbmRhYmxlLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZXhwYW5kYWJsZS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2RldGFpbEV4cGFuZCcsIFtcbiAgICAgIHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG1pbkhlaWdodDogJzAnLCBwYWRkaW5nOiAnMCcgfSkpLFxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpXG4gICAgXSlcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdENoZWNrYm94TW9kdWxlLCBOZ0NsYXNzLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdEV4cGFuc2lvbk1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCwgVGFibGVDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEV4cGFuZGFibGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGRhdGFTb3VyY2U6IGFueVtdO1xuXG4gIEBJbnB1dCgpIGNvbHVtbnM6IGFueVtdO1xuXG4gIEBJbnB1dCgpIGdyb3VwQnlLZXk6IHN0cmluZztcblxuICBASW5wdXQoKSBncm91cEJ5S2V5TGFiZWw/OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgc3VidGl0bGU/OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgc2VsZWN0YWJsZTogYm9vbGVhbjtcblxuICBASW5wdXQoKSByb3dDbGlja2FibGU6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgc2VsZWN0aW9uPzogYW55W107XG5cbiAgQElucHV0KCkgc3RhcnRFeHBhbmRlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSB0YWJsZUJ1dHRvbnNDYWxsQmFjayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgdGFibGVIZWFkZXJDYWxsQmFjayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGRhdGFMZW5ndGggPSAwO1xuICBncm91cEluZm86IGFueTtcbiAgZXhwYW5kZWRFbGVtZW50OiBhbnk7XG4gIHZpc2libGVDb2x1bW5zOiBhbnlbXTtcbiAgX2NvbHVtbnM6IGFueVtdO1xuICBfZGF0YVNvdXJjZTogYW55W107XG4gIHNlbGVjdGlvbk1vZGVsID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pO1xuICBwcmltYXJ5S2V5ID0gJ3ByaW1hcnlLZXknO1xuXG4gIEBWaWV3Q2hpbGQoTWF0QWNjb3JkaW9uLCB7IHN0YXRpYzogZmFsc2UgfSkgYWNjb3JkaW9uPzogTWF0QWNjb3JkaW9uO1xuXG4gIEBDb250ZW50Q2hpbGQoJ2V4cGFuZGFibGVIZWFkZXJCdXR0b25zVGVtcGxhdGUnLCB7IHN0YXRpYzogZmFsc2UgfSkgdGVtcGxhdGVIZWFkZXJCdXR0b25zITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZCgnZXhwYW5kYWJsZVRhYmxlQnV0dG9uc1RlbXBsYXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRlbXBsYXRlVGFibGVCdXR0b25zITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZCgnZXhwYW5kYWJsZVRhYmxlU3VidGl0bGVUZW1wbGF0ZScsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZW1wbGF0ZUhlYWRlclN1YnRpdGxlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBjaGFpbjogKGlucHV0OiBhbnkpID0+IGFueTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBbXTtcbiAgICB0aGlzLl9kYXRhU291cmNlID0gW107XG4gICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgdGhpcy5fY29sdW1ucyA9IFtdO1xuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGFibGUgPSBmYWxzZTtcbiAgICB0aGlzLnJvd0NsaWNrYWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuZ3JvdXBCeUtleSA9ICdpZCc7XG5cbiAgICB0aGlzLmNoYWluID0gY3JlYXRlQ2hhaW4oeyBtYXAsIGdyb3VwQnksIGZpbHRlciwgZmluZCwgaXNFcXVhbCwgcmVqZWN0IH0pO1xuICB9XG4gIC8vIEB0cy1leHBlY3QtZXJyb3I6IEFyZ3VtZW50IGlzIG5vdCB1c2VkXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy5ncm91cEJ5S2V5ICYmIHRoaXMuY29sdW1ucyAmJiB0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwgPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSk7XG4gICAgICB0aGlzLmdlbmVyYXRlQ29sdW1ucygpO1xuICAgICAgdGhpcy5nZW5lcmF0ZURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBnZW5lcmF0ZURhdGEoKSB7XG4gICAgLy8gYWRkIHByaW1hcnlLZXlcbiAgICBsZXQgcHJpbWFyeUtleVZhbHVlID0gMDtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xuICAgICAgZGF0YVt0aGlzLnByaW1hcnlLZXldID0gKytwcmltYXJ5S2V5VmFsdWU7XG4gICAgfSk7XG5cbiAgICAvLyBpbnB1dCBzZWxlY3Rpb25cbiAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgIGNvbnN0IGluaXRpYWxTZWxlY3Rpb246IGFueVtdID0gW107XG4gICAgICB0aGlzLnNlbGVjdGlvbi5mb3JFYWNoKChzZWxlY3Rpb25EYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChkYXRhKSA9PiB7XG4gICAgICAgICAgaWYgKGlzRXF1YWwob21pdChkYXRhLCAncHJpbWFyeUtleScpLCBvbWl0KHNlbGVjdGlvbkRhdGEsICdwcmltYXJ5S2V5JykpKSB7XG4gICAgICAgICAgICBpbml0aWFsU2VsZWN0aW9uLnB1c2goZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIGluaXRpYWxTZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YUxlbmd0aCA9IHRoaXMuZGF0YVNvdXJjZS5sZW5ndGg7XG4gICAgdGhpcy5kYXRhU291cmNlID0gZmlsdGVyKHRoaXMuZGF0YVNvdXJjZSwgKGRhdGEpID0+IHtcbiAgICAgIHJldHVybiBkYXRhW3RoaXMuZ3JvdXBCeUtleV07XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kYXRhU291cmNlID0gdGhpcy5ncm91cEJ5KHRoaXMuZ3JvdXBCeUtleSwgdGhpcy5kYXRhU291cmNlKTtcbiAgfVxuXG4gIGdlbmVyYXRlQ29sdW1ucygpIHtcbiAgICBpZiAoIXRoaXMuZ3JvdXBCeUtleUxhYmVsKSB7XG4gICAgICB0aGlzLmdyb3VwQnlLZXlMYWJlbCA9IHRoaXMuZ3JvdXBCeUtleTtcbiAgICB9XG4gICAgdGhpcy5ncm91cEluZm8gPSBmaW5kKHRoaXMuY29sdW1ucywgKGMpID0+IGMubmFtZSA9PT0gdGhpcy5ncm91cEJ5S2V5TGFiZWwpO1xuICAgIHRoaXMuX2NvbHVtbnMgPSByZWplY3QodGhpcy5jb2x1bW5zLCAoYykgPT4gYy5uYW1lID09PSB0aGlzLmdyb3VwQnlLZXlMYWJlbCk7XG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuX2NvbHVtbnMubWFwKChjKSA9PiBjLm5hbWUpO1xuICB9XG5cbiAgZ3JvdXBCeShncm91cElkOiBzdHJpbmcsIGNvbGxlY3Rpb246IGFueVtdKTogR3JvdXBlZFZhbHVlc1tdIHtcbiAgICBjb25zdCBkYXRhU291cmNlOiBHcm91cGVkVmFsdWVzW10gPSB0aGlzLmNoYWluKGNvbGxlY3Rpb24pXG4gICAgICAuZ3JvdXBCeShncm91cElkKVxuICAgICAgLm1hcCgodmFsdWVzOiBhbnksIGlkOiBzdHJpbmcpID0+ICh7XG4gICAgICAgIGlkLFxuICAgICAgICBsYWJlbDogdGhpcy5ncm91cEJ5S2V5TGFiZWwgPyB2YWx1ZXNbMF1bdGhpcy5ncm91cEJ5S2V5TGFiZWxdIDogZ3JvdXBJZCxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBleHBhbmRlZDogdGhpcy5zdGFydEV4cGFuZGVkXG4gICAgICB9KSlcbiAgICAgIC52YWx1ZSgpO1xuXG4gICAgZGF0YVNvdXJjZS5mb3JFYWNoKChkcykgPT4ge1xuICAgICAgaWYgKCFkcy52YWx1ZXNbMF1bdGhpcy52aXNpYmxlQ29sdW1uc1sxXV0pIHtcbiAgICAgICAgZHMudmFsdWVzID0gW107XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0YVNvdXJjZTtcbiAgfVxuXG4gIC8vIEFsbFxuICB0b2dnbGVBbGwoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQubGVuZ3RoICYmIHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC50b2dnbGUoaXRlbSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZGF0YVNvdXJjZS5mb3JFYWNoKChyb3c6IEdyb3VwZWRWYWx1ZXMpID0+IHtcbiAgICAgICAgcm93LnZhbHVlcy5mb3JFYWNoKChpdGVtKSA9PiB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdChpdGVtKSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZWQoKTtcbiAgfVxuXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLmRhdGFMZW5ndGg7XG4gIH1cblxuICAvLyBSb3cgbGV2ZWxcbiAgdG9nZ2xlUm93KHJvdzogR3JvdXBlZFZhbHVlcykge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5nZXRTZWxlY3Rpb25CeVJvdyhyb3cpO1xuICAgIGlmIChzZWxlY3RlZCAmJiBzZWxlY3RlZC5sZW5ndGggPT09IHJvdy52YWx1ZXMubGVuZ3RoKSB7XG4gICAgICBzZWxlY3RlZC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwudG9nZ2xlKGl0ZW0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdy52YWx1ZXMuZm9yRWFjaCgoaXRlbSkgPT4gdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoaXRlbSkpO1xuICAgIH1cbiAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlZCgpO1xuICB9XG5cbiAgc2VsZWN0aW9uSGFzUm93VmFsdWUocm93OiBHcm91cGVkVmFsdWVzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U2VsZWN0aW9uQnlSb3cocm93KS5sZW5ndGggPiAwO1xuICB9XG5cbiAgaXNSb3dBbGxTZWxlY3RlZChyb3c6IEdyb3VwZWRWYWx1ZXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3Rpb25CeVJvdyhyb3cpLmxlbmd0aCA9PT0gcm93LnZhbHVlcy5sZW5ndGg7XG4gIH1cblxuICBnZXRTZWxlY3Rpb25CeVJvdyhyb3c6IEdyb3VwZWRWYWx1ZXMpOiBhbnlbXSB7XG4gICAgcmV0dXJuIGZpbHRlcih0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkLCB7IFt0aGlzLmdyb3VwQnlLZXldOiByb3cuaWQgfSBhcyBhbnkpO1xuICB9XG5cbiAgY29sbGFwc2VBbGwoKSB7XG4gICAgaWYgKCF0aGlzLmFjY29yZGlvbikgcmV0dXJuO1xuICAgIGlmICh0aGlzLl9kYXRhU291cmNlLnNvbWUoKHJvdzogR3JvdXBlZFZhbHVlcykgPT4gcm93LmV4cGFuZGVkKSkge1xuICAgICAgdGhpcy5hY2NvcmRpb24uY2xvc2VBbGwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY2NvcmRpb24ub3BlbkFsbCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNlbGVjdGVkS2V5cyhyb3c6IGFueSkge1xuICAgIGNvbnN0IGtleXM6IGFueVtdID0gW107XG4gICAgY29uc3QgcHJlZGljdGlvbjogYW55ID0ge307XG4gICAgcm93LnZhbHVlcy5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcHJlZGljdGlvblt0aGlzLnByaW1hcnlLZXldID0gdmFsdWVbdGhpcy5wcmltYXJ5S2V5XTtcbiAgICAgIGlmIChmaW5kKHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQsIHByZWRpY3Rpb24pKSB7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBrZXlzO1xuICB9XG5cbiAgb25UYWJsZVNlbGVjdGlvbkNoYW5nZSh0YWJsZVNlbGVjdGlvbkV2ZW50OiBhbnksIHJvdzogYW55KSB7XG4gICAgY29uc3Qgcm93U2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb25CeVJvdyhyb3cpO1xuICAgIGlmICh0YWJsZVNlbGVjdGlvbkV2ZW50LmRhdGEpIHtcbiAgICAgIHJvd1NlbGVjdGlvbi5mb3JFYWNoKChzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC50b2dnbGUoc2VsZWN0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgdGFibGVTZWxlY3Rpb25FdmVudC5kYXRhLmZvckVhY2goKHNlbGVjdGlvbjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwudG9nZ2xlKHNlbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkKCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2VkKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkSXRlbXM6IGFueVtdID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQpO1xuICAgIHNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoZGF0YSkgPT4ge1xuICAgICAgZGVsZXRlIGRhdGFbdGhpcy5wcmltYXJ5S2V5XTtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHNlbGVjdGVkSXRlbXMpO1xuICB9XG5cbiAgb25Sb3dDbGlja2VkKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5yb3dDbGljaykge1xuICAgICAgdGhpcy5yb3dDbGljay5lbWl0KGV2ZW50LmRhdGEpO1xuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgR3JvdXBlZFZhbHVlcyB7XG4gIGlkOiBhbnk7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlczogYW55W107XG4gIGV4cGFuZGVkPzogYm9vbGVhbjtcbn1cbiIsIjxkaXYgY2xhc3M9XCJleHBhbmRhYmxlLXRhYmxlLWhlYWRlclwiPlxuICBAaWYgKHNlbGVjdGFibGUpIHtcbiAgICA8bWF0LWNoZWNrYm94XG4gICAgICBjbGFzcz1cImNoZWNrLWJveC1oZWFkZXJcIlxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZC5sZW5ndGggPiAwICYmIGlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZC5sZW5ndGggPiAwICYmICFpc0FsbFNlbGVjdGVkKClcIlxuICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyB0b2dnbGVBbGwoKSA6IG51bGxcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICA+XG4gICAgPC9tYXQtY2hlY2tib3g+XG4gIH1cbiAgPGRpdiBjbGFzcz1cInRpdGxlIHV4Zy1zdWJ0aXRsZS0xXCIgW25nQ2xhc3NdPVwieyBzZWxlY3RhYmxlOiBzZWxlY3RhYmxlIH1cIj5cbiAgICB7eyBncm91cEluZm8/LmRpc3BsYXlOYW1lIHx8IGdyb3VwSW5mbz8ubmFtZSB9fVxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwidXAtZG93blwiPlxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjb2xsYXBzZUFsbCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCI+XG4gICAgICA8bWF0LWljb24+Y29kZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbkBpZiAoX2RhdGFTb3VyY2UgJiYgX2RhdGFTb3VyY2UubGVuZ3RoID4gMCkge1xuICA8bWF0LWFjY29yZGlvbiBtdWx0aT1cInRydWVcIj5cbiAgICBAZm9yIChyb3cgb2YgX2RhdGFTb3VyY2U7IHRyYWNrIGk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwicm93LmV4cGFuZGVkXCIgKG9wZW5lZCk9XCJyb3cuZXhwYW5kZWQgPSB0cnVlXCIgKGNsb3NlZCk9XCJyb3cuZXhwYW5kZWQgPSBmYWxzZVwiPlxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgIEBpZiAoc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVjay1ib3gtaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25IYXNSb3dWYWx1ZShyb3cpICYmIGlzUm93QWxsU2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uSGFzUm93VmFsdWUocm93KSAmJiAhaXNSb3dBbGxTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHRvZ2dsZVJvdyhyb3cpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGV4dFwiIFtuZ0NsYXNzXT1cInsgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSB9XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUgdXhnLXN1YnRpdGxlLTFcIj57eyByb3cubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGUgdXhnLWJvZHktM1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUhlYWRlclN1YnRpdGxlOyBjb250ZXh0OiB7IHJvdzogcm93LCBzdWJ0aXRsZTogc3VidGl0bGUgfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlSGVhZGVyQnV0dG9uczsgY29udGV4dDogeyByb3c6IHJvdywgZW1pdGVyOiB0YWJsZUhlYWRlckNhbGxCYWNrIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICBAaWYgKHJvdyAmJiByb3cudmFsdWVzICYmIF9jb2x1bW5zKSB7XG4gICAgICAgICAgPHV4Zy10YWJsZVxuICAgICAgICAgICAgaWQ9XCJ7eyByb3cuaWQgfX1cIlxuICAgICAgICAgICAgY2xhc3M9XCJzdWItdGFibGVcIlxuICAgICAgICAgICAgW2RhdGFdPVwicm93LnZhbHVlc1wiXG4gICAgICAgICAgICBbY29sdW1uc109XCJfY29sdW1uc1wiXG4gICAgICAgICAgICBbY29sdW1uc1RvRGlzcGxheV09XCJ2aXNpYmxlQ29sdW1uc1wiXG4gICAgICAgICAgICAoc2VsZWN0Q2hhbmdlZCk9XCJvblRhYmxlU2VsZWN0aW9uQ2hhbmdlKCRldmVudCwgcm93KVwiXG4gICAgICAgICAgICBbbXVsdGlTZWxlY3RdPVwic2VsZWN0YWJsZVwiXG4gICAgICAgICAgICBbc2luZ2xlU2VsZWN0XT1cIiFzZWxlY3RhYmxlXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZEtleXNdPVwiZ2V0U2VsZWN0ZWRLZXlzKHJvdylcIlxuICAgICAgICAgICAgKG11bHRpU2VsZWN0U2luZ2xlUm93Q2xpY2tlZCk9XCJvblJvd0NsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvdXhnLXRhYmxlPlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1idXR0b25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlVGFibGVCdXR0b25zOyBjb250ZXh0OiB7IHJvdzogcm93LCBlbWl0ZXI6IHRhYmxlQnV0dG9uc0NhbGxCYWNrIH1cIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgIH1cbiAgPC9tYXQtYWNjb3JkaW9uPlxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYXN0cmEtYW5ndWxhci1jb21wb25lbnRzLWV4cGFuZGFibGUtdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItY29tcG9uZW50cy9leHBhbmRhYmxlLXRhYmxlL3NyYy9maW5hc3RyYS1hbmd1bGFyLWNvbXBvbmVudHMtZXhwYW5kYWJsZS10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}