@sebgroup/green-angular 5.11.0 → 5.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/v-angular/table/table.component.mjs +3 -3
- package/esm2022/src/v-angular/table/table.models.mjs +1 -1
- package/esm2022/v-angular/table/table.component.mjs +3 -3
- package/esm2022/v-angular/table/table.models.mjs +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-v-angular.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
- package/package.json +1 -1
- package/src/v-angular/table/table.models.d.ts +6 -0
- package/v-angular/table/table.models.d.ts +6 -0
|
@@ -357,11 +357,11 @@ export class TableComponent {
|
|
|
357
357
|
row?.setValue(!row.value);
|
|
358
358
|
}
|
|
359
359
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
360
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TableComponent, selector: "nggv-table", inputs: { tableColumns: "tableColumns", tableData: "tableData", rowId: "rowId", hasRowSpan: "hasRowSpan", selectable: "selectable", expandable: "expandable", subItemsProp: "subItemsProp", allowLocalSort: "allowLocalSort", thook: "thook", trThookFn: "trThookFn", ariaLabelCheckboxTh: "ariaLabelCheckboxTh", ariaLabelCheckboxTr: "ariaLabelCheckboxTr", ariaLabelsOrderBy: "ariaLabelsOrderBy" }, outputs: { ngvRowClick: "ngvRowClick", ngvRowSelect: "ngvRowSelect", ngvOrderBy: "ngvOrderBy" }, queries: [{ propertyName: "appendedRowsTemplate", first: true, predicate: TableAppendableRowsTemplateDirective, descendants: true }, { propertyName: "customFooterTemplate", first: true, predicate: TableFooterTemplateDirective, descendants: true }, { propertyName: "customTemplates", predicate: TableTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #sortableThTemplate let-column>\n <button class=\"sg-table-sort\" *transloco=\"let t\">\n <ng-template #thButtonTemplate>\n {{ t(column.label ?? '') }}\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else thButtonTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n </button>\n</ng-template>\n\n<ng-template #notSortableThTemplate let-column>\n <ng-template #defaultThTemplate>\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else defaultThTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n</ng-template>\n<table class=\"gds-table\" *transloco=\"let t\">\n <!-- Table header -->\n <thead>\n <tr>\n <!-- Checkbox column for header -->\n <th *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_header__' + initId\"\n class=\"form-control\"\n id=\"thead-checkbox\"\n >\n <input\n type=\"checkbox\"\n [formControl]=\"groupSelector\"\n [attr.aria-label]=\"ariaLabelCheckboxTh\"\n [attr.id]=\"'cb_header__' + initId\"\n [attr.data-thook]=\"thook\"\n />\n <i></i>\n </label>\n </div>\n </th>\n\n <!-- Other columns -->\n <th\n *ngFor=\"let column of tableColumns\"\n [columnType]=\"column.valueType\"\n [sortable]=\"column.sortable\"\n [sortOrder]=\"column.order\"\n [thook]=\"'column-header-' + !!column.property\"\n (click)=\"toggleSortOrder(column)\"\n (keydown.space)=\"toggleSortOrderWithSpace($event, column)\"\n [attr.aria-label]=\"getAriaLabel(column)\"\n [attr.aria-sort]=\"column.order + 'ending'\"\n >\n <ng-container *ngIf=\"column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n sortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n notSortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n\n <!-- Table body -->\n <tbody [formGroup]=\"rowSelectors\">\n <ng-container *ngFor=\"let item of tableData; let i = index\">\n <tr\n [class.row__expand]=\"expandable\"\n [attr.data-thook]=\"item | trThook: i : trThookFn\"\n [attr.data-hasrowspan]=\"hasRowSpan(item)\"\n >\n <!-- Checkbox column for row -->\n <td *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_row__' + initId + '_' + i\"\n class=\"form-control\"\n >\n <input\n *ngIf=\"rowSelectors.get(item[rowId])\"\n type=\"checkbox\"\n [formControlName]=\"item[rowId]\"\n [attr.aria-label]=\"ariaLabelCheckboxTr\"\n [attr.id]=\"'cb_row__' + initId + '_' + i\"\n [attr.data-thook]=\"'row-select-' + i\"\n />\n <i></i>\n </label>\n </div>\n </td>\n\n <!-- Other columns -->\n <td\n *ngFor=\"let column of tableColumns; let i = index\"\n [columnType]=\"column.valueType\"\n [value]=\"item[column.property]\"\n (click)=\"propagateItemClick(item, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"expandable && i === 0; else nonExpandableTemplate\">\n <div class=\"gds-item-field-wrap\">\n <span\n class=\"chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n *ngIf=\"item.subItems.length > 0\"\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n {{ item[column.property] }} ({{ item.subItems.length }})\n </div>\n </ng-container>\n\n <ng-template #nonExpandableTemplate>\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: item }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ item[column.property] }}\n </ng-template>\n </ng-template>\n </td>\n </tr>\n\n <!-- Expanded Sub Items -->\n <ng-container *ngIf=\"expandable && rowSelectors.get(item[rowId])?.value\">\n <tr *ngFor=\"let subItem of item[subItemsProp]\">\n <td\n *ngFor=\"let column of tableColumns\"\n class=\"web-view\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n (click)=\"propagateItemClick(subItem, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </td>\n\n <td class=\"mobile-view\" [attr.colspan]=\"tableColumns.length\">\n <dl class=\"mobile-view-field-wrap\">\n <ng-container *ngFor=\"let column of tableColumns\">\n <div\n *ngIf=\"!column.hidePropertyOnMobile\"\n class=\"mobile-view-field\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n (click)=\"propagateItemClick(subItem, column.preventDefaultClickEvent)\"\n >\n <dt *ngIf=\"!column.hideLabelOnMobile\">\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </dt>\n <dd>\n <strong>\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\"></ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </strong>\n </dd>\n <ng-content></ng-content>\n </div>\n </ng-container>\n </dl>\n <span\n class=\"nav-chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n </td>\n </tr>\n </ng-container>\n\n <!-- Custom appended rows -->\n <ng-container *ngIf=\"appendedRowsTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container\n *ngTemplateOutlet=\"trTemplate || null; context: { $implicit: item }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n\n <!-- Table footer -->\n <tfoot *ngIf=\"customFooterTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container *ngTemplateOutlet=\"trTemplate || null\"> </ng-container>\n </tfoot>\n</table>\n", styles: ["::ng-deep .gds-table{--gds-ref-pallet-base100: #f8f8f8;--gds-ref-pallet-base600: hsl(0, 0%, 53%);--sg-table-header-background: #1a1a1a;--sg-table-header-color: #fff;--sg-table-cell-padding-x: .5rem;--sg-table-cell-padding-y: .6875rem;--sg-table-border-width: 1px;--sg-table-border-color: var(--gds-ref-pallet-base600);--sg-table-sort-icon-color: var(--gds-ref-pallet-base600);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-table-sort-icon-color-active: #fff;--gds-sys-color-surface: #fff;--gds-ref-pallet-base200: #e8e8e8;--gds-sys-color-base: #333;--gds-sys-shape-corner-small: .125rem;--gds-sys-color-blue-dark-2: #007ac7;--gds-sys-shape-corner-medium: .25rem;border-collapse:collapse;border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color);width:100%;border-bottom:none;--gds-comp-checkbox-container-height: 1rem;--gds-comp-checkbox-container-width: 1rem;--gds-comp-checkbox-container-color: var(--gds-sys-color-background-primary);--gds-comp-checkbox-container-color-disabled: var(--gds-ref-pallet-base300);--gds-comp-checkbox-border-color: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-radius: var(--gds-sys-shape-corner-small);--gds-comp-checkbox-hover-border-color: var(--gds-ref-pallet-base600);--gds-comp-checkbox-container-color-selected: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-color-selected: var(--gds-sys-color-text-inverted);--gds-comp-checkbox-border-color-focus: var(--gds-sys-color-dark-blue-2)}::ng-deep .gds-table thead tr th{border-top:var(--sg-table-border-width) solid var(--sg-table-border-color);background:#333;color:var(--sg-table-header-color);padding:.3rem var(--sg-table-cell-padding-x);text-align:left;font-weight:500}::ng-deep .gds-table thead tr th.icon-invert.sg-sortable .sg-table-sort:after{margin-left:0;margin-right:.3rem;order:-1}::ng-deep .gds-table thead tr th .sg-table-sort{color:inherit;width:100%;text-align:left;display:flex;align-items:center;border-radius:.125rem;--gds-sys-color-focus-outline: $_header-color}::ng-deep .gds-table thead tr th .sg-table-sort:focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table thead tr th .sg-table-sort:focus,::ng-deep .gds-table thead tr th .sg-table-sort:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table thead tr th[aria-sort] .sg-table-sort:after,::ng-deep .gds-table thead tr th.sg-sortable .sg-table-sort:after{content:\"\";background:var(--gds-ref-pallet-base500);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:right;mask-position:right;width:12px;height:12px;margin-left:.3rem}::ng-deep .gds-table thead tr th[aria-sort=ascending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active);transform:rotate(180deg)}::ng-deep .gds-table thead tr th[aria-sort=descending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active)}::ng-deep .gds-table tbody tr td,::ng-deep .gds-table tbody tr th{border-top:var(--sg-table-border-width) solid var(--sg-table-border-color);padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x);vertical-align:top}::ng-deep .gds-table tbody tr.collapsible~.sub-row{display:none}::ng-deep .gds-table tbody tr.collapsible.expanded~.sub-row.show{display:table-row}::ng-deep .gds-table tbody tr td.collapse-control,::ng-deep .gds-table tbody tr td.select-control{width:15px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn{min-height:unset;padding:0;background:transparent}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder{cursor:pointer;width:12px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg{width:12px;fill:#868686}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg[name=angle-right]{width:9px}@media (max-width: 36em){::ng-deep .gds-table.table-mobile{width:100%;table-layout:fixed;border-bottom:none}::ng-deep .gds-table.table-mobile thead{position:sticky;top:0;display:block;background:#333}}@media (max-width: 36em) and (hover: none) and (pointer: coarse){::ng-deep .gds-table.table-mobile thead{display:table-header-group}}@media (max-width: 36em){::ng-deep .gds-table.table-mobile thead tr{display:flex;overflow:auto}::ng-deep .gds-table.table-mobile thead tr::-webkit-scrollbar{display:none}::ng-deep .gds-table.table-mobile thead tr th{flex:auto;text-align:left!important;white-space:nowrap}::ng-deep .gds-table.table-mobile tbody tr{display:flex;flex-direction:column;border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}::ng-deep .gds-table.table-mobile tbody tr td{display:flex;justify-content:space-between;align-items:center;border-top:none!important}::ng-deep .gds-table.table-mobile tbody tr td:before{content:attr(data-label);font-weight:700}}::ng-deep .gds-table .web-view{display:table-cell}::ng-deep .gds-table .mobile-view{display:none}::ng-deep .gds-table tr:hover td{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table .gds-table__numeric-col{text-align:right}::ng-deep .gds-table thead tr th.gds-table__numeric-col .sg-table-sort{justify-content:end}::ng-deep .gds-table th button{background-color:#0000;border:0;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;cursor:pointer}::ng-deep .gds-table td{cursor:pointer}::ng-deep .gds-table tfoot{border-top:1px solid;border-bottom:none;font-weight:500}::ng-deep .gds-table tfoot ::ng-deep td{padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x)}::ng-deep .gds-table th.column__check{height:vanilla-px-to-rem(32px);width:vanilla-px-to-rem(40px)}::ng-deep .gds-table th.column__check div{min-height:100%}::ng-deep .gds-table th.column__check input:checked+label:after{top:.6rem;display:inline}::ng-deep .gds-table th.column__check label{display:inline;padding:0}::ng-deep .gds-table th.column__check label:before{top:.55rem}::ng-deep .gds-table td.column__check{width:vanilla-px-to-rem(40px)}::ng-deep .gds-table td.column__check div{min-height:unset}::ng-deep .gds-table td.column__check label{padding:0}::ng-deep .gds-table td.column__check label:before{margin:0}::ng-deep .gds-table tr.row__expand{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap{display:flex;flex-wrap:nowrap}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field{width:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field svg{transition:transform .3s ease}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field[aria-expanded=true] svg{transform:rotate(-180deg)}::ng-deep .gds-table label.form-control input[type=checkbox]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}::ng-deep .gds-table label.form-control{align-items:flex-start}::ng-deep .gds-table label.form-control:has(input[type=checkbox]){padding:.6875rem 1rem .5625rem}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus,::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table label.form-control input[type=checkbox]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;box-shadow:inset 0 0 0 1px var(--gds-sys-color-text-primary);position:relative;border-radius:var(--gds-sys-shape-corner-small);background-color:transparent;flex:0 0 auto;height:1rem;width:1rem}::ng-deep .gds-table label.form-control input[type=checkbox]:not(:checked):focus-visible~i{box-shadow:inset 0 0 0 1px var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control:hover input[type=checkbox]:not(.disabled,:disabled,:checked,:indeterminate)~i{background-color:var(--gds-sys-color-base-200)}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i:after{border-bottom:2px solid var(--gds-sys-color-background-primary);border-left:none;transform:scale(1) rotate(0);opacity:1}::ng-deep .gds-table label.form-control:has(input[type=checkbox].is-invalid){border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control:has(input[type=checkbox].is-invalid){border:none;margin:0}@supports (-moz-appearance: none){::ng-deep .gds-table label.form-control.is-invalid{border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control.is-invalid{border:none;margin:0}}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i:after,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i:after{border-color:var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{content:\"\";opacity:0;position:absolute}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{border-bottom:3px solid var(--gds-sys-color-text-inverted);border-left:3px solid var(--gds-sys-color-text-inverted);height:.5rem;width:1rem;left:0;top:.1875rem;transform:scale(.601) rotate(-45deg);transform-origin:center}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i:after{opacity:1}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]){padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none;line-height:1.125rem;padding:0}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]):has(input:disabled){cursor:not-allowed}::ng-deep .gds-table #thead-checkbox input[type=checkbox]~i{box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-container-color);background-color:var(--gds-comp-checkbox-border-color)}::ng-deep .gds-table #thead-checkbox:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--sg-table-header-color)}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i{box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i:after{border-color:#ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i{background-color:var(--gds-comp-checkbox-border-color);box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i:after{border-color:#ababab}@media screen and (max-width: 576px){.gds-table thead{display:none}.gds-table tbody tr td{border-top:none;border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}.gds-table .row__expand td:not(:first-child){display:none}.gds-table .row__expand td{display:table-cell}.gds-table .web-view{display:none}.gds-table .mobile-view{display:flex;align-items:center}.gds-table .mobile-view .mobile-view-field-wrap{display:grid;grid-template-columns:1fr 1fr;width:100%}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field{display:flex;flex-direction:column;padding-bottom:.3rem}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(odd){justify-self:start;align-items:start}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(2n){align-items:end;justify-self:end}.gds-table .mobile-view .nav-chevron-field{width:1.5rem;padding-left:.5rem}.gds-table .mobile-view .nav-chevron-field svg{transition:transform .3s ease}.gds-table .mobile-view .nav-chevron-field[aria-expanded=true] svg{transform:rotate(-90deg)}.gds-table .mobile-view .settings-field{width:1.5rem;padding:0 1rem}.gds-table .mobile-view .settings-field svg{transition:all .3s ease}.gds-table .mobile-view .settings-field:hover svg{fill:var(--gds-sys-color-blue-dark-2)}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i4.TableDirective, selector: "[columnType]", inputs: ["columnType", "sortable", "sortOrder", "value", "thook"] }, { kind: "pipe", type: i5.TrThookPipe, name: "trThook" }] }); }
|
|
360
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TableComponent, selector: "nggv-table", inputs: { tableColumns: "tableColumns", tableData: "tableData", rowId: "rowId", hasRowSpan: "hasRowSpan", selectable: "selectable", expandable: "expandable", subItemsProp: "subItemsProp", allowLocalSort: "allowLocalSort", thook: "thook", trThookFn: "trThookFn", ariaLabelCheckboxTh: "ariaLabelCheckboxTh", ariaLabelCheckboxTr: "ariaLabelCheckboxTr", ariaLabelsOrderBy: "ariaLabelsOrderBy" }, outputs: { ngvRowClick: "ngvRowClick", ngvRowSelect: "ngvRowSelect", ngvOrderBy: "ngvOrderBy" }, queries: [{ propertyName: "appendedRowsTemplate", first: true, predicate: TableAppendableRowsTemplateDirective, descendants: true }, { propertyName: "customFooterTemplate", first: true, predicate: TableFooterTemplateDirective, descendants: true }, { propertyName: "customTemplates", predicate: TableTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #sortableThTemplate let-column>\n <button class=\"sg-table-sort\" *transloco=\"let t\">\n <ng-template #thButtonTemplate>\n {{ t(column.label ?? '') }}\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else thButtonTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n </button>\n</ng-template>\n\n<ng-template #notSortableThTemplate let-column>\n <ng-template #defaultThTemplate>\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else defaultThTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n</ng-template>\n<table class=\"gds-table\" *transloco=\"let t\">\n <!-- Table header -->\n <thead>\n <tr>\n <!-- Checkbox column for header -->\n <th *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_header__' + initId\"\n class=\"form-control\"\n id=\"thead-checkbox\"\n >\n <input\n type=\"checkbox\"\n [formControl]=\"groupSelector\"\n [attr.aria-label]=\"ariaLabelCheckboxTh\"\n [attr.id]=\"'cb_header__' + initId\"\n [attr.data-thook]=\"thook\"\n />\n <i></i>\n </label>\n </div>\n </th>\n\n <!-- Other columns -->\n <th\n *ngFor=\"let column of tableColumns\"\n [columnType]=\"column.valueType\"\n [sortable]=\"column.sortable\"\n [sortOrder]=\"column.order\"\n [thook]=\"'column-header-' + !!column.property\"\n (click)=\"toggleSortOrder(column)\"\n (keydown.space)=\"toggleSortOrderWithSpace($event, column)\"\n [attr.aria-label]=\"getAriaLabel(column)\"\n [attr.aria-sort]=\"column.order + 'ending'\"\n >\n <ng-container *ngIf=\"column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n sortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n notSortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n\n <!-- Table body -->\n <tbody [formGroup]=\"rowSelectors\">\n <ng-container *ngFor=\"let item of tableData; let i = index\">\n <tr\n [class.row__expand]=\"expandable\"\n [attr.data-thook]=\"item | trThook: i : trThookFn\"\n [attr.data-hasrowspan]=\"hasRowSpan(item)\"\n >\n <!-- Checkbox column for row -->\n <td *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_row__' + initId + '_' + i\"\n class=\"form-control\"\n >\n <input\n *ngIf=\"rowSelectors.get(item[rowId])\"\n type=\"checkbox\"\n [formControlName]=\"item[rowId]\"\n [attr.aria-label]=\"ariaLabelCheckboxTr\"\n [attr.id]=\"'cb_row__' + initId + '_' + i\"\n [attr.data-thook]=\"'row-select-' + i\"\n />\n <i></i>\n </label>\n </div>\n </td>\n\n <!-- Other columns -->\n <td\n *ngFor=\"let column of tableColumns; let i = index\"\n [columnType]=\"column.valueType\"\n [value]=\"item[column.property]\"\n (click)=\"propagateItemClick(item, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"expandable && i === 0; else nonExpandableTemplate\">\n <div class=\"gds-item-field-wrap\">\n <span\n class=\"chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n *ngIf=\"item.subItems.length > 0\"\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n {{ item[column.property] }} ({{ item.subItems.length }})\n </div>\n </ng-container>\n\n <ng-template #nonExpandableTemplate>\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: item }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ item[column.property] }}\n </ng-template>\n </ng-template>\n </td>\n </tr>\n\n <!-- Expanded Sub Items -->\n <ng-container *ngIf=\"expandable && rowSelectors.get(item[rowId])?.value\">\n <tr *ngFor=\"let subItem of item[subItemsProp]\">\n <td\n *ngFor=\"let column of tableColumns\"\n class=\"web-view\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n (click)=\"propagateItemClick(subItem, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </td>\n\n <td\n class=\"mobile-view\"\n [attr.colspan]=\"tableColumns.length\"\n (click)=\"propagateItemClick(subItem)\"\n >\n <dl class=\"mobile-view-field-wrap\">\n <ng-container *ngFor=\"let column of tableColumns\">\n <div\n *ngIf=\"!column.hidePropertyOnMobile\"\n class=\"mobile-view-field\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n >\n <dt *ngIf=\"!column.hideLabelOnMobile\">\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </dt>\n <dd [ngStyle]=\"column.boldTextOnMobile ? { 'font-weight': '500' } : {'font-weight': '400'}\">\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\"></ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </dd>\n <ng-content></ng-content>\n </div>\n </ng-container>\n </dl>\n <span\n class=\"nav-chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n </td>\n </tr>\n </ng-container>\n\n <!-- Custom appended rows -->\n <ng-container *ngIf=\"appendedRowsTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container\n *ngTemplateOutlet=\"trTemplate || null; context: { $implicit: item }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n\n <!-- Table footer -->\n <tfoot *ngIf=\"customFooterTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container *ngTemplateOutlet=\"trTemplate || null\"> </ng-container>\n </tfoot>\n</table>\n", styles: ["::ng-deep .gds-table{--gds-ref-pallet-base100: #f8f8f8;--gds-ref-pallet-base600: hsl(0, 0%, 53%);--sg-table-header-background: #1a1a1a;--sg-table-header-color: #fff;--sg-table-cell-padding-x: .5rem;--sg-table-cell-padding-y: .6875rem;--sg-table-border-width: 1px;--sg-table-border-color: var(--gds-ref-pallet-base600);--sg-table-sort-icon-color: var(--gds-ref-pallet-base600);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-table-sort-icon-color-active: #fff;--gds-sys-color-surface: #fff;--gds-ref-pallet-base200: #e8e8e8;--gds-sys-color-base: #333;--gds-sys-shape-corner-small: .125rem;--gds-sys-color-blue-dark-2: #007ac7;--gds-sys-shape-corner-medium: .25rem;border-collapse:collapse;border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color);width:100%;border-bottom:none;--gds-comp-checkbox-container-height: 1rem;--gds-comp-checkbox-container-width: 1rem;--gds-comp-checkbox-container-color: var(--gds-sys-color-background-primary);--gds-comp-checkbox-container-color-disabled: var(--gds-ref-pallet-base300);--gds-comp-checkbox-border-color: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-radius: var(--gds-sys-shape-corner-small);--gds-comp-checkbox-hover-border-color: var(--gds-ref-pallet-base600);--gds-comp-checkbox-container-color-selected: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-color-selected: var(--gds-sys-color-text-inverted);--gds-comp-checkbox-border-color-focus: var(--gds-sys-color-dark-blue-2)}::ng-deep .gds-table thead tr th{border-top:var(--sg-table-border-width) solid var(--sg-table-border-color);background:#333;color:var(--sg-table-header-color);padding:.3rem var(--sg-table-cell-padding-x);text-align:left;font-weight:500}::ng-deep .gds-table thead tr th.icon-invert.sg-sortable .sg-table-sort:after{margin-left:0;margin-right:.3rem;order:-1}::ng-deep .gds-table thead tr th .sg-table-sort{color:inherit;width:100%;text-align:left;display:flex;align-items:center;border-radius:.125rem;--gds-sys-color-focus-outline: $_header-color}::ng-deep .gds-table thead tr th .sg-table-sort:focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table thead tr th .sg-table-sort:focus,::ng-deep .gds-table thead tr th .sg-table-sort:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table thead tr th[aria-sort] .sg-table-sort:after,::ng-deep .gds-table thead tr th.sg-sortable .sg-table-sort:after{content:\"\";background:var(--gds-ref-pallet-base500);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:right;mask-position:right;width:12px;height:12px;margin-left:.3rem}::ng-deep .gds-table thead tr th[aria-sort=ascending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active);transform:rotate(180deg)}::ng-deep .gds-table thead tr th[aria-sort=descending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active)}::ng-deep .gds-table tbody tr td,::ng-deep .gds-table tbody tr th{border-top:var(--sg-table-border-width) solid var(--sg-table-border-color);padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x);vertical-align:top}::ng-deep .gds-table tbody tr.collapsible~.sub-row{display:none}::ng-deep .gds-table tbody tr.collapsible.expanded~.sub-row.show{display:table-row}::ng-deep .gds-table tbody tr td.collapse-control,::ng-deep .gds-table tbody tr td.select-control{width:15px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn{min-height:unset;padding:0;background:transparent}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder{cursor:pointer;width:12px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg{width:12px;fill:#868686}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg[name=angle-right]{width:9px}@media (max-width: 36em){::ng-deep .gds-table.table-mobile{width:100%;table-layout:fixed;border-bottom:none}::ng-deep .gds-table.table-mobile thead{position:sticky;top:0;display:block;background:#333}}@media (max-width: 36em) and (hover: none) and (pointer: coarse){::ng-deep .gds-table.table-mobile thead{display:table-header-group}}@media (max-width: 36em){::ng-deep .gds-table.table-mobile thead tr{display:flex;overflow:auto}::ng-deep .gds-table.table-mobile thead tr::-webkit-scrollbar{display:none}::ng-deep .gds-table.table-mobile thead tr th{flex:auto;text-align:left!important;white-space:nowrap}::ng-deep .gds-table.table-mobile tbody tr{display:flex;flex-direction:column;border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}::ng-deep .gds-table.table-mobile tbody tr td{display:flex;justify-content:space-between;align-items:center;border-top:none!important}::ng-deep .gds-table.table-mobile tbody tr td:before{content:attr(data-label);font-weight:700}}::ng-deep .gds-table .web-view{display:table-cell}::ng-deep .gds-table .mobile-view{display:none}::ng-deep .gds-table tr:hover td{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table .gds-table__numeric-col{text-align:right}::ng-deep .gds-table thead tr th.gds-table__numeric-col .sg-table-sort{justify-content:end}::ng-deep .gds-table th button{background-color:#0000;border:0;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;cursor:pointer}::ng-deep .gds-table tbody{border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}::ng-deep .gds-table td{cursor:pointer}::ng-deep .gds-table tfoot{border-top:1px solid;border-bottom:none;font-weight:500}::ng-deep .gds-table tfoot ::ng-deep td{padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x)}::ng-deep .gds-table th.column__check{height:vanilla-px-to-rem(32px);width:vanilla-px-to-rem(40px)}::ng-deep .gds-table th.column__check div{min-height:100%}::ng-deep .gds-table th.column__check input:checked+label:after{top:.6rem;display:inline}::ng-deep .gds-table th.column__check label{display:inline;padding:0}::ng-deep .gds-table th.column__check label:before{top:.55rem}::ng-deep .gds-table td.column__check{width:vanilla-px-to-rem(40px)}::ng-deep .gds-table td.column__check div{min-height:unset}::ng-deep .gds-table td.column__check label{padding:0}::ng-deep .gds-table td.column__check label:before{margin:0}::ng-deep .gds-table tr.row__expand{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap{display:flex;flex-wrap:nowrap}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field{width:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field svg{transition:transform .3s ease}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field[aria-expanded=true] svg{transform:rotate(-180deg)}::ng-deep .gds-table label.form-control input[type=checkbox]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}::ng-deep .gds-table label.form-control{align-items:flex-start}::ng-deep .gds-table label.form-control:has(input[type=checkbox]){padding:.6875rem 1rem .5625rem}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus,::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table label.form-control input[type=checkbox]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;box-shadow:inset 0 0 0 1px var(--gds-sys-color-text-primary);position:relative;border-radius:var(--gds-sys-shape-corner-small);background-color:transparent;flex:0 0 auto;height:1rem;width:1rem}::ng-deep .gds-table label.form-control input[type=checkbox]:not(:checked):focus-visible~i{box-shadow:inset 0 0 0 1px var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control:hover input[type=checkbox]:not(.disabled,:disabled,:checked,:indeterminate)~i{background-color:var(--gds-sys-color-base-200)}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i:after{border-bottom:2px solid var(--gds-sys-color-background-primary);border-left:none;transform:scale(1) rotate(0);opacity:1}::ng-deep .gds-table label.form-control:has(input[type=checkbox].is-invalid){border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control:has(input[type=checkbox].is-invalid){border:none;margin:0}@supports (-moz-appearance: none){::ng-deep .gds-table label.form-control.is-invalid{border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control.is-invalid{border:none;margin:0}}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i:after,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i:after{border-color:var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{content:\"\";opacity:0;position:absolute}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{border-bottom:3px solid var(--gds-sys-color-text-inverted);border-left:3px solid var(--gds-sys-color-text-inverted);height:.5rem;width:1rem;left:0;top:.1875rem;transform:scale(.601) rotate(-45deg);transform-origin:center}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i:after{opacity:1}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]){padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none;line-height:1.125rem;padding:0}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]):has(input:disabled){cursor:not-allowed}::ng-deep .gds-table #thead-checkbox input[type=checkbox]~i{box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-container-color);background-color:var(--gds-comp-checkbox-border-color)}::ng-deep .gds-table #thead-checkbox:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--sg-table-header-color)}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i{box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i:after{border-color:#ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i{background-color:var(--gds-comp-checkbox-border-color);box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i:after{border-color:#ababab}@media screen and (max-width: 576px){.gds-table thead{display:none}.gds-table .row__expand td:not(:first-child){display:none}.gds-table .row__expand td{display:table-cell}.gds-table .web-view{display:none}.gds-table .mobile-view{display:flex;align-items:center}.gds-table .mobile-view .mobile-view-field-wrap{display:grid;grid-template-columns:1fr 1fr;width:100%}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field{display:flex;flex-direction:column;padding-bottom:.3rem}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(odd){justify-self:start;align-items:start;text-align:start}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(2n){align-items:end;justify-self:end;text-align:end}.gds-table .mobile-view .nav-chevron-field{width:1.5rem;padding-left:.5rem}.gds-table .mobile-view .nav-chevron-field svg{transition:transform .3s ease}.gds-table .mobile-view .nav-chevron-field[aria-expanded=true] svg{transform:rotate(-90deg)}.gds-table .mobile-view .settings-field{width:1.5rem;padding:0 1rem}.gds-table .mobile-view .settings-field svg{transition:all .3s ease}.gds-table .mobile-view .settings-field:hover svg{fill:var(--gds-sys-color-blue-dark-2)}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i4.TableDirective, selector: "[columnType]", inputs: ["columnType", "sortable", "sortOrder", "value", "thook"] }, { kind: "pipe", type: i5.TrThookPipe, name: "trThook" }] }); }
|
|
361
361
|
}
|
|
362
362
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableComponent, decorators: [{
|
|
363
363
|
type: Component,
|
|
364
|
-
args: [{ selector: 'nggv-table', template: "<ng-template #sortableThTemplate let-column>\n <button class=\"sg-table-sort\" *transloco=\"let t\">\n <ng-template #thButtonTemplate>\n {{ t(column.label ?? '') }}\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else thButtonTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n </button>\n</ng-template>\n\n<ng-template #notSortableThTemplate let-column>\n <ng-template #defaultThTemplate>\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else defaultThTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n</ng-template>\n<table class=\"gds-table\" *transloco=\"let t\">\n <!-- Table header -->\n <thead>\n <tr>\n <!-- Checkbox column for header -->\n <th *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_header__' + initId\"\n class=\"form-control\"\n id=\"thead-checkbox\"\n >\n <input\n type=\"checkbox\"\n [formControl]=\"groupSelector\"\n [attr.aria-label]=\"ariaLabelCheckboxTh\"\n [attr.id]=\"'cb_header__' + initId\"\n [attr.data-thook]=\"thook\"\n />\n <i></i>\n </label>\n </div>\n </th>\n\n <!-- Other columns -->\n <th\n *ngFor=\"let column of tableColumns\"\n [columnType]=\"column.valueType\"\n [sortable]=\"column.sortable\"\n [sortOrder]=\"column.order\"\n [thook]=\"'column-header-' + !!column.property\"\n (click)=\"toggleSortOrder(column)\"\n (keydown.space)=\"toggleSortOrderWithSpace($event, column)\"\n [attr.aria-label]=\"getAriaLabel(column)\"\n [attr.aria-sort]=\"column.order + 'ending'\"\n >\n <ng-container *ngIf=\"column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n sortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n notSortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n\n <!-- Table body -->\n <tbody [formGroup]=\"rowSelectors\">\n <ng-container *ngFor=\"let item of tableData; let i = index\">\n <tr\n [class.row__expand]=\"expandable\"\n [attr.data-thook]=\"item | trThook: i : trThookFn\"\n [attr.data-hasrowspan]=\"hasRowSpan(item)\"\n >\n <!-- Checkbox column for row -->\n <td *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_row__' + initId + '_' + i\"\n class=\"form-control\"\n >\n <input\n *ngIf=\"rowSelectors.get(item[rowId])\"\n type=\"checkbox\"\n [formControlName]=\"item[rowId]\"\n [attr.aria-label]=\"ariaLabelCheckboxTr\"\n [attr.id]=\"'cb_row__' + initId + '_' + i\"\n [attr.data-thook]=\"'row-select-' + i\"\n />\n <i></i>\n </label>\n </div>\n </td>\n\n <!-- Other columns -->\n <td\n *ngFor=\"let column of tableColumns; let i = index\"\n [columnType]=\"column.valueType\"\n [value]=\"item[column.property]\"\n (click)=\"propagateItemClick(item, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"expandable && i === 0; else nonExpandableTemplate\">\n <div class=\"gds-item-field-wrap\">\n <span\n class=\"chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n *ngIf=\"item.subItems.length > 0\"\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n {{ item[column.property] }} ({{ item.subItems.length }})\n </div>\n </ng-container>\n\n <ng-template #nonExpandableTemplate>\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: item }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ item[column.property] }}\n </ng-template>\n </ng-template>\n </td>\n </tr>\n\n <!-- Expanded Sub Items -->\n <ng-container *ngIf=\"expandable && rowSelectors.get(item[rowId])?.value\">\n <tr *ngFor=\"let subItem of item[subItemsProp]\">\n <td\n *ngFor=\"let column of tableColumns\"\n class=\"web-view\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n (click)=\"propagateItemClick(subItem, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </td>\n\n <td class=\"mobile-view\" [attr.colspan]=\"tableColumns.length\">\n <dl class=\"mobile-view-field-wrap\">\n <ng-container *ngFor=\"let column of tableColumns\">\n <div\n *ngIf=\"!column.hidePropertyOnMobile\"\n class=\"mobile-view-field\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n (click)=\"propagateItemClick(subItem, column.preventDefaultClickEvent)\"\n >\n <dt *ngIf=\"!column.hideLabelOnMobile\">\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </dt>\n <dd>\n <strong>\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\"></ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </strong>\n </dd>\n <ng-content></ng-content>\n </div>\n </ng-container>\n </dl>\n <span\n class=\"nav-chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n </td>\n </tr>\n </ng-container>\n\n <!-- Custom appended rows -->\n <ng-container *ngIf=\"appendedRowsTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container\n *ngTemplateOutlet=\"trTemplate || null; context: { $implicit: item }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n\n <!-- Table footer -->\n <tfoot *ngIf=\"customFooterTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container *ngTemplateOutlet=\"trTemplate || null\"> </ng-container>\n </tfoot>\n</table>\n", styles: ["::ng-deep .gds-table{--gds-ref-pallet-base100: #f8f8f8;--gds-ref-pallet-base600: hsl(0, 0%, 53%);--sg-table-header-background: #1a1a1a;--sg-table-header-color: #fff;--sg-table-cell-padding-x: .5rem;--sg-table-cell-padding-y: .6875rem;--sg-table-border-width: 1px;--sg-table-border-color: var(--gds-ref-pallet-base600);--sg-table-sort-icon-color: var(--gds-ref-pallet-base600);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-table-sort-icon-color-active: #fff;--gds-sys-color-surface: #fff;--gds-ref-pallet-base200: #e8e8e8;--gds-sys-color-base: #333;--gds-sys-shape-corner-small: .125rem;--gds-sys-color-blue-dark-2: #007ac7;--gds-sys-shape-corner-medium: .25rem;border-collapse:collapse;border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color);width:100%;border-bottom:none;--gds-comp-checkbox-container-height: 1rem;--gds-comp-checkbox-container-width: 1rem;--gds-comp-checkbox-container-color: var(--gds-sys-color-background-primary);--gds-comp-checkbox-container-color-disabled: var(--gds-ref-pallet-base300);--gds-comp-checkbox-border-color: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-radius: var(--gds-sys-shape-corner-small);--gds-comp-checkbox-hover-border-color: var(--gds-ref-pallet-base600);--gds-comp-checkbox-container-color-selected: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-color-selected: var(--gds-sys-color-text-inverted);--gds-comp-checkbox-border-color-focus: var(--gds-sys-color-dark-blue-2)}::ng-deep .gds-table thead tr th{border-top:var(--sg-table-border-width) solid var(--sg-table-border-color);background:#333;color:var(--sg-table-header-color);padding:.3rem var(--sg-table-cell-padding-x);text-align:left;font-weight:500}::ng-deep .gds-table thead tr th.icon-invert.sg-sortable .sg-table-sort:after{margin-left:0;margin-right:.3rem;order:-1}::ng-deep .gds-table thead tr th .sg-table-sort{color:inherit;width:100%;text-align:left;display:flex;align-items:center;border-radius:.125rem;--gds-sys-color-focus-outline: $_header-color}::ng-deep .gds-table thead tr th .sg-table-sort:focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table thead tr th .sg-table-sort:focus,::ng-deep .gds-table thead tr th .sg-table-sort:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table thead tr th[aria-sort] .sg-table-sort:after,::ng-deep .gds-table thead tr th.sg-sortable .sg-table-sort:after{content:\"\";background:var(--gds-ref-pallet-base500);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:right;mask-position:right;width:12px;height:12px;margin-left:.3rem}::ng-deep .gds-table thead tr th[aria-sort=ascending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active);transform:rotate(180deg)}::ng-deep .gds-table thead tr th[aria-sort=descending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active)}::ng-deep .gds-table tbody tr td,::ng-deep .gds-table tbody tr th{border-top:var(--sg-table-border-width) solid var(--sg-table-border-color);padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x);vertical-align:top}::ng-deep .gds-table tbody tr.collapsible~.sub-row{display:none}::ng-deep .gds-table tbody tr.collapsible.expanded~.sub-row.show{display:table-row}::ng-deep .gds-table tbody tr td.collapse-control,::ng-deep .gds-table tbody tr td.select-control{width:15px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn{min-height:unset;padding:0;background:transparent}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder{cursor:pointer;width:12px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg{width:12px;fill:#868686}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg[name=angle-right]{width:9px}@media (max-width: 36em){::ng-deep .gds-table.table-mobile{width:100%;table-layout:fixed;border-bottom:none}::ng-deep .gds-table.table-mobile thead{position:sticky;top:0;display:block;background:#333}}@media (max-width: 36em) and (hover: none) and (pointer: coarse){::ng-deep .gds-table.table-mobile thead{display:table-header-group}}@media (max-width: 36em){::ng-deep .gds-table.table-mobile thead tr{display:flex;overflow:auto}::ng-deep .gds-table.table-mobile thead tr::-webkit-scrollbar{display:none}::ng-deep .gds-table.table-mobile thead tr th{flex:auto;text-align:left!important;white-space:nowrap}::ng-deep .gds-table.table-mobile tbody tr{display:flex;flex-direction:column;border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}::ng-deep .gds-table.table-mobile tbody tr td{display:flex;justify-content:space-between;align-items:center;border-top:none!important}::ng-deep .gds-table.table-mobile tbody tr td:before{content:attr(data-label);font-weight:700}}::ng-deep .gds-table .web-view{display:table-cell}::ng-deep .gds-table .mobile-view{display:none}::ng-deep .gds-table tr:hover td{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table .gds-table__numeric-col{text-align:right}::ng-deep .gds-table thead tr th.gds-table__numeric-col .sg-table-sort{justify-content:end}::ng-deep .gds-table th button{background-color:#0000;border:0;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;cursor:pointer}::ng-deep .gds-table td{cursor:pointer}::ng-deep .gds-table tfoot{border-top:1px solid;border-bottom:none;font-weight:500}::ng-deep .gds-table tfoot ::ng-deep td{padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x)}::ng-deep .gds-table th.column__check{height:vanilla-px-to-rem(32px);width:vanilla-px-to-rem(40px)}::ng-deep .gds-table th.column__check div{min-height:100%}::ng-deep .gds-table th.column__check input:checked+label:after{top:.6rem;display:inline}::ng-deep .gds-table th.column__check label{display:inline;padding:0}::ng-deep .gds-table th.column__check label:before{top:.55rem}::ng-deep .gds-table td.column__check{width:vanilla-px-to-rem(40px)}::ng-deep .gds-table td.column__check div{min-height:unset}::ng-deep .gds-table td.column__check label{padding:0}::ng-deep .gds-table td.column__check label:before{margin:0}::ng-deep .gds-table tr.row__expand{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap{display:flex;flex-wrap:nowrap}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field{width:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field svg{transition:transform .3s ease}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field[aria-expanded=true] svg{transform:rotate(-180deg)}::ng-deep .gds-table label.form-control input[type=checkbox]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}::ng-deep .gds-table label.form-control{align-items:flex-start}::ng-deep .gds-table label.form-control:has(input[type=checkbox]){padding:.6875rem 1rem .5625rem}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus,::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table label.form-control input[type=checkbox]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;box-shadow:inset 0 0 0 1px var(--gds-sys-color-text-primary);position:relative;border-radius:var(--gds-sys-shape-corner-small);background-color:transparent;flex:0 0 auto;height:1rem;width:1rem}::ng-deep .gds-table label.form-control input[type=checkbox]:not(:checked):focus-visible~i{box-shadow:inset 0 0 0 1px var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control:hover input[type=checkbox]:not(.disabled,:disabled,:checked,:indeterminate)~i{background-color:var(--gds-sys-color-base-200)}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i:after{border-bottom:2px solid var(--gds-sys-color-background-primary);border-left:none;transform:scale(1) rotate(0);opacity:1}::ng-deep .gds-table label.form-control:has(input[type=checkbox].is-invalid){border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control:has(input[type=checkbox].is-invalid){border:none;margin:0}@supports (-moz-appearance: none){::ng-deep .gds-table label.form-control.is-invalid{border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control.is-invalid{border:none;margin:0}}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i:after,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i:after{border-color:var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{content:\"\";opacity:0;position:absolute}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{border-bottom:3px solid var(--gds-sys-color-text-inverted);border-left:3px solid var(--gds-sys-color-text-inverted);height:.5rem;width:1rem;left:0;top:.1875rem;transform:scale(.601) rotate(-45deg);transform-origin:center}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i:after{opacity:1}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]){padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none;line-height:1.125rem;padding:0}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]):has(input:disabled){cursor:not-allowed}::ng-deep .gds-table #thead-checkbox input[type=checkbox]~i{box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-container-color);background-color:var(--gds-comp-checkbox-border-color)}::ng-deep .gds-table #thead-checkbox:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--sg-table-header-color)}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i{box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i:after{border-color:#ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i{background-color:var(--gds-comp-checkbox-border-color);box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i:after{border-color:#ababab}@media screen and (max-width: 576px){.gds-table thead{display:none}.gds-table tbody tr td{border-top:none;border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}.gds-table .row__expand td:not(:first-child){display:none}.gds-table .row__expand td{display:table-cell}.gds-table .web-view{display:none}.gds-table .mobile-view{display:flex;align-items:center}.gds-table .mobile-view .mobile-view-field-wrap{display:grid;grid-template-columns:1fr 1fr;width:100%}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field{display:flex;flex-direction:column;padding-bottom:.3rem}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(odd){justify-self:start;align-items:start}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(2n){align-items:end;justify-self:end}.gds-table .mobile-view .nav-chevron-field{width:1.5rem;padding-left:.5rem}.gds-table .mobile-view .nav-chevron-field svg{transition:transform .3s ease}.gds-table .mobile-view .nav-chevron-field[aria-expanded=true] svg{transform:rotate(-90deg)}.gds-table .mobile-view .settings-field{width:1.5rem;padding:0 1rem}.gds-table .mobile-view .settings-field svg{transition:all .3s ease}.gds-table .mobile-view .settings-field:hover svg{fill:var(--gds-sys-color-blue-dark-2)}}\n"] }]
|
|
364
|
+
args: [{ selector: 'nggv-table', template: "<ng-template #sortableThTemplate let-column>\n <button class=\"sg-table-sort\" *transloco=\"let t\">\n <ng-template #thButtonTemplate>\n {{ t(column.label ?? '') }}\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else thButtonTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n </button>\n</ng-template>\n\n<ng-template #notSortableThTemplate let-column>\n <ng-template #defaultThTemplate>\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else defaultThTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n</ng-template>\n<table class=\"gds-table\" *transloco=\"let t\">\n <!-- Table header -->\n <thead>\n <tr>\n <!-- Checkbox column for header -->\n <th *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_header__' + initId\"\n class=\"form-control\"\n id=\"thead-checkbox\"\n >\n <input\n type=\"checkbox\"\n [formControl]=\"groupSelector\"\n [attr.aria-label]=\"ariaLabelCheckboxTh\"\n [attr.id]=\"'cb_header__' + initId\"\n [attr.data-thook]=\"thook\"\n />\n <i></i>\n </label>\n </div>\n </th>\n\n <!-- Other columns -->\n <th\n *ngFor=\"let column of tableColumns\"\n [columnType]=\"column.valueType\"\n [sortable]=\"column.sortable\"\n [sortOrder]=\"column.order\"\n [thook]=\"'column-header-' + !!column.property\"\n (click)=\"toggleSortOrder(column)\"\n (keydown.space)=\"toggleSortOrderWithSpace($event, column)\"\n [attr.aria-label]=\"getAriaLabel(column)\"\n [attr.aria-sort]=\"column.order + 'ending'\"\n >\n <ng-container *ngIf=\"column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n sortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n notSortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n\n <!-- Table body -->\n <tbody [formGroup]=\"rowSelectors\">\n <ng-container *ngFor=\"let item of tableData; let i = index\">\n <tr\n [class.row__expand]=\"expandable\"\n [attr.data-thook]=\"item | trThook: i : trThookFn\"\n [attr.data-hasrowspan]=\"hasRowSpan(item)\"\n >\n <!-- Checkbox column for row -->\n <td *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_row__' + initId + '_' + i\"\n class=\"form-control\"\n >\n <input\n *ngIf=\"rowSelectors.get(item[rowId])\"\n type=\"checkbox\"\n [formControlName]=\"item[rowId]\"\n [attr.aria-label]=\"ariaLabelCheckboxTr\"\n [attr.id]=\"'cb_row__' + initId + '_' + i\"\n [attr.data-thook]=\"'row-select-' + i\"\n />\n <i></i>\n </label>\n </div>\n </td>\n\n <!-- Other columns -->\n <td\n *ngFor=\"let column of tableColumns; let i = index\"\n [columnType]=\"column.valueType\"\n [value]=\"item[column.property]\"\n (click)=\"propagateItemClick(item, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"expandable && i === 0; else nonExpandableTemplate\">\n <div class=\"gds-item-field-wrap\">\n <span\n class=\"chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n *ngIf=\"item.subItems.length > 0\"\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n {{ item[column.property] }} ({{ item.subItems.length }})\n </div>\n </ng-container>\n\n <ng-template #nonExpandableTemplate>\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: item }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ item[column.property] }}\n </ng-template>\n </ng-template>\n </td>\n </tr>\n\n <!-- Expanded Sub Items -->\n <ng-container *ngIf=\"expandable && rowSelectors.get(item[rowId])?.value\">\n <tr *ngFor=\"let subItem of item[subItemsProp]\">\n <td\n *ngFor=\"let column of tableColumns\"\n class=\"web-view\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n (click)=\"propagateItemClick(subItem, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </td>\n\n <td\n class=\"mobile-view\"\n [attr.colspan]=\"tableColumns.length\"\n (click)=\"propagateItemClick(subItem)\"\n >\n <dl class=\"mobile-view-field-wrap\">\n <ng-container *ngFor=\"let column of tableColumns\">\n <div\n *ngIf=\"!column.hidePropertyOnMobile\"\n class=\"mobile-view-field\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n >\n <dt *ngIf=\"!column.hideLabelOnMobile\">\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </dt>\n <dd [ngStyle]=\"column.boldTextOnMobile ? { 'font-weight': '500' } : {'font-weight': '400'}\">\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\"></ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </dd>\n <ng-content></ng-content>\n </div>\n </ng-container>\n </dl>\n <span\n class=\"nav-chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n </td>\n </tr>\n </ng-container>\n\n <!-- Custom appended rows -->\n <ng-container *ngIf=\"appendedRowsTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container\n *ngTemplateOutlet=\"trTemplate || null; context: { $implicit: item }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n\n <!-- Table footer -->\n <tfoot *ngIf=\"customFooterTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container *ngTemplateOutlet=\"trTemplate || null\"> </ng-container>\n </tfoot>\n</table>\n", styles: ["::ng-deep .gds-table{--gds-ref-pallet-base100: #f8f8f8;--gds-ref-pallet-base600: hsl(0, 0%, 53%);--sg-table-header-background: #1a1a1a;--sg-table-header-color: #fff;--sg-table-cell-padding-x: .5rem;--sg-table-cell-padding-y: .6875rem;--sg-table-border-width: 1px;--sg-table-border-color: var(--gds-ref-pallet-base600);--sg-table-sort-icon-color: var(--gds-ref-pallet-base600);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-table-sort-icon-color-active: #fff;--gds-sys-color-surface: #fff;--gds-ref-pallet-base200: #e8e8e8;--gds-sys-color-base: #333;--gds-sys-shape-corner-small: .125rem;--gds-sys-color-blue-dark-2: #007ac7;--gds-sys-shape-corner-medium: .25rem;border-collapse:collapse;border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color);width:100%;border-bottom:none;--gds-comp-checkbox-container-height: 1rem;--gds-comp-checkbox-container-width: 1rem;--gds-comp-checkbox-container-color: var(--gds-sys-color-background-primary);--gds-comp-checkbox-container-color-disabled: var(--gds-ref-pallet-base300);--gds-comp-checkbox-border-color: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-radius: var(--gds-sys-shape-corner-small);--gds-comp-checkbox-hover-border-color: var(--gds-ref-pallet-base600);--gds-comp-checkbox-container-color-selected: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-color-selected: var(--gds-sys-color-text-inverted);--gds-comp-checkbox-border-color-focus: var(--gds-sys-color-dark-blue-2)}::ng-deep .gds-table thead tr th{border-top:var(--sg-table-border-width) solid var(--sg-table-border-color);background:#333;color:var(--sg-table-header-color);padding:.3rem var(--sg-table-cell-padding-x);text-align:left;font-weight:500}::ng-deep .gds-table thead tr th.icon-invert.sg-sortable .sg-table-sort:after{margin-left:0;margin-right:.3rem;order:-1}::ng-deep .gds-table thead tr th .sg-table-sort{color:inherit;width:100%;text-align:left;display:flex;align-items:center;border-radius:.125rem;--gds-sys-color-focus-outline: $_header-color}::ng-deep .gds-table thead tr th .sg-table-sort:focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table thead tr th .sg-table-sort:focus,::ng-deep .gds-table thead tr th .sg-table-sort:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table thead tr th[aria-sort] .sg-table-sort:after,::ng-deep .gds-table thead tr th.sg-sortable .sg-table-sort:after{content:\"\";background:var(--gds-ref-pallet-base500);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:right;mask-position:right;width:12px;height:12px;margin-left:.3rem}::ng-deep .gds-table thead tr th[aria-sort=ascending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active);transform:rotate(180deg)}::ng-deep .gds-table thead tr th[aria-sort=descending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active)}::ng-deep .gds-table tbody tr td,::ng-deep .gds-table tbody tr th{border-top:var(--sg-table-border-width) solid var(--sg-table-border-color);padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x);vertical-align:top}::ng-deep .gds-table tbody tr.collapsible~.sub-row{display:none}::ng-deep .gds-table tbody tr.collapsible.expanded~.sub-row.show{display:table-row}::ng-deep .gds-table tbody tr td.collapse-control,::ng-deep .gds-table tbody tr td.select-control{width:15px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn{min-height:unset;padding:0;background:transparent}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder{cursor:pointer;width:12px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg{width:12px;fill:#868686}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg[name=angle-right]{width:9px}@media (max-width: 36em){::ng-deep .gds-table.table-mobile{width:100%;table-layout:fixed;border-bottom:none}::ng-deep .gds-table.table-mobile thead{position:sticky;top:0;display:block;background:#333}}@media (max-width: 36em) and (hover: none) and (pointer: coarse){::ng-deep .gds-table.table-mobile thead{display:table-header-group}}@media (max-width: 36em){::ng-deep .gds-table.table-mobile thead tr{display:flex;overflow:auto}::ng-deep .gds-table.table-mobile thead tr::-webkit-scrollbar{display:none}::ng-deep .gds-table.table-mobile thead tr th{flex:auto;text-align:left!important;white-space:nowrap}::ng-deep .gds-table.table-mobile tbody tr{display:flex;flex-direction:column;border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}::ng-deep .gds-table.table-mobile tbody tr td{display:flex;justify-content:space-between;align-items:center;border-top:none!important}::ng-deep .gds-table.table-mobile tbody tr td:before{content:attr(data-label);font-weight:700}}::ng-deep .gds-table .web-view{display:table-cell}::ng-deep .gds-table .mobile-view{display:none}::ng-deep .gds-table tr:hover td{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table .gds-table__numeric-col{text-align:right}::ng-deep .gds-table thead tr th.gds-table__numeric-col .sg-table-sort{justify-content:end}::ng-deep .gds-table th button{background-color:#0000;border:0;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;cursor:pointer}::ng-deep .gds-table tbody{border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}::ng-deep .gds-table td{cursor:pointer}::ng-deep .gds-table tfoot{border-top:1px solid;border-bottom:none;font-weight:500}::ng-deep .gds-table tfoot ::ng-deep td{padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x)}::ng-deep .gds-table th.column__check{height:vanilla-px-to-rem(32px);width:vanilla-px-to-rem(40px)}::ng-deep .gds-table th.column__check div{min-height:100%}::ng-deep .gds-table th.column__check input:checked+label:after{top:.6rem;display:inline}::ng-deep .gds-table th.column__check label{display:inline;padding:0}::ng-deep .gds-table th.column__check label:before{top:.55rem}::ng-deep .gds-table td.column__check{width:vanilla-px-to-rem(40px)}::ng-deep .gds-table td.column__check div{min-height:unset}::ng-deep .gds-table td.column__check label{padding:0}::ng-deep .gds-table td.column__check label:before{margin:0}::ng-deep .gds-table tr.row__expand{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap{display:flex;flex-wrap:nowrap}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field{width:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field svg{transition:transform .3s ease}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field[aria-expanded=true] svg{transform:rotate(-180deg)}::ng-deep .gds-table label.form-control input[type=checkbox]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}::ng-deep .gds-table label.form-control{align-items:flex-start}::ng-deep .gds-table label.form-control:has(input[type=checkbox]){padding:.6875rem 1rem .5625rem}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus,::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table label.form-control input[type=checkbox]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;box-shadow:inset 0 0 0 1px var(--gds-sys-color-text-primary);position:relative;border-radius:var(--gds-sys-shape-corner-small);background-color:transparent;flex:0 0 auto;height:1rem;width:1rem}::ng-deep .gds-table label.form-control input[type=checkbox]:not(:checked):focus-visible~i{box-shadow:inset 0 0 0 1px var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control:hover input[type=checkbox]:not(.disabled,:disabled,:checked,:indeterminate)~i{background-color:var(--gds-sys-color-base-200)}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i:after{border-bottom:2px solid var(--gds-sys-color-background-primary);border-left:none;transform:scale(1) rotate(0);opacity:1}::ng-deep .gds-table label.form-control:has(input[type=checkbox].is-invalid){border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control:has(input[type=checkbox].is-invalid){border:none;margin:0}@supports (-moz-appearance: none){::ng-deep .gds-table label.form-control.is-invalid{border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control.is-invalid{border:none;margin:0}}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i:after,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i:after{border-color:var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{content:\"\";opacity:0;position:absolute}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{border-bottom:3px solid var(--gds-sys-color-text-inverted);border-left:3px solid var(--gds-sys-color-text-inverted);height:.5rem;width:1rem;left:0;top:.1875rem;transform:scale(.601) rotate(-45deg);transform-origin:center}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i:after{opacity:1}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]){padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none;line-height:1.125rem;padding:0}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]):has(input:disabled){cursor:not-allowed}::ng-deep .gds-table #thead-checkbox input[type=checkbox]~i{box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-container-color);background-color:var(--gds-comp-checkbox-border-color)}::ng-deep .gds-table #thead-checkbox:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--sg-table-header-color)}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i{box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i:after{border-color:#ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i{background-color:var(--gds-comp-checkbox-border-color);box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i:after{border-color:#ababab}@media screen and (max-width: 576px){.gds-table thead{display:none}.gds-table .row__expand td:not(:first-child){display:none}.gds-table .row__expand td{display:table-cell}.gds-table .web-view{display:none}.gds-table .mobile-view{display:flex;align-items:center}.gds-table .mobile-view .mobile-view-field-wrap{display:grid;grid-template-columns:1fr 1fr;width:100%}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field{display:flex;flex-direction:column;padding-bottom:.3rem}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(odd){justify-self:start;align-items:start;text-align:start}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(2n){align-items:end;justify-self:end;text-align:end}.gds-table .mobile-view .nav-chevron-field{width:1.5rem;padding-left:.5rem}.gds-table .mobile-view .nav-chevron-field svg{transition:transform .3s ease}.gds-table .mobile-view .nav-chevron-field[aria-expanded=true] svg{transform:rotate(-90deg)}.gds-table .mobile-view .settings-field{width:1.5rem;padding:0 1rem}.gds-table .mobile-view .settings-field svg{transition:all .3s ease}.gds-table .mobile-view .settings-field:hover svg{fill:var(--gds-sys-color-blue-dark-2)}}\n"] }]
|
|
365
365
|
}], propDecorators: { customTemplates: [{
|
|
366
366
|
type: ContentChildren,
|
|
367
367
|
args: [TableTemplateDirective, { descendants: true }]
|
|
@@ -404,4 +404,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
404
404
|
}], ariaLabelsOrderBy: [{
|
|
405
405
|
type: Input
|
|
406
406
|
}] } });
|
|
407
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWxELE9BQU8sRUFDTCxvQ0FBb0MsRUFDcEMsNEJBQTRCLEVBQzVCLHNCQUFzQixHQUN2QixNQUFNLG1CQUFtQixDQUFBO0FBTzFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUE7Ozs7Ozs7QUFFekUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0FBRXBCLFNBQVMsaUJBQWlCLENBQUMsUUFBdUI7SUFDaEQsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQTtJQUM5QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7UUFDcEMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUMxQixDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUE7QUFDcEIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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cUVBZHpCLHNCQUFzQixxRUNqSXpDLHFrU0E0UEE7OzRGRGpJYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFlBQVk7OEJBV3RCLGVBQWU7c0JBRGQsZUFBZTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBUTlELG9CQUFvQjtzQkFEbkIsWUFBWTt1QkFBQyxvQ0FBb0M7Z0JBUWxELG9CQUFvQjtzQkFEbkIsWUFBWTt1QkFBQyw0QkFBNEI7Z0JBSWhDLFdBQVc7c0JBQXBCLE1BQU07Z0JBTUcsWUFBWTtzQkFBckIsTUFBTTtnQkFLRyxVQUFVO3NCQUFuQixNQUFNO2dCQU1FLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFPRyxLQUFLO3NCQUFiLEtBQUs7Z0JBU0csVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFNRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHtcbiAgVGFibGVBcHBlbmRhYmxlUm93c1RlbXBsYXRlRGlyZWN0aXZlLFxuICBUYWJsZUZvb3RlclRlbXBsYXRlRGlyZWN0aXZlLFxuICBUYWJsZVRlbXBsYXRlRGlyZWN0aXZlLFxufSBmcm9tICcuL3RhYmxlLmRpcmVjdGl2ZSdcbmltcG9ydCB7XG4gIGFyaWFMYWJlbHNPcmRlckJ5LFxuICBPcmRlckJ5LFxuICBUYWJsZUNvbHVtbixcbiAgVGFibGVSb3csXG59IGZyb20gJy4vdGFibGUubW9kZWxzJ1xuaW1wb3J0IHsgb3JkZXJCeUFzY2VuZGluZywgb3JkZXJCeURlc2NlbmRpbmcsIHBpY2sgfSBmcm9tICcuL3RhYmxlLnRvb2xzJ1xuXG5sZXQgc3RhdGljSW5pdElkID0gMFxuXG5mdW5jdGlvbiBvYmplY3RGcm9tRW50cmllcyhlbnRyeU1hcDogTWFwPGFueSwgYW55Pik6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICBjb25zdCBmcm9tRW50cmllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGVudHJ5TWFwKSB7XG4gICAgZnJvbUVudHJpZXNba2V5XSA9IHZhbHVlXG4gIH1cbiAgcmV0dXJuIGZyb21FbnRyaWVzXG59XG5cbi8qKlxuICogQSB0YWJsZSBjb21wb25lbnQgd2l0aCBidWlsdC1pbiBzb3J0aW5nIGFuZCBzZWxlY3RpbmcgZnVuY3Rpb25hbGl0eS5cbiAqIEJ5IGRlZmF1bHQsIHRhYmxlIGNlbGxzIChpLmUuIGA8dGQ+YCBlbGVtZW50cykgYW5kIHRhYmxlIGhlYWRlcnMgKGkuZS4gYDx0aD5gIGVsZW1lbnRzKSBhcmUgcG9wdWxhdGVkIHdpdGggdGV4dCBvbmx5IHZhbHVlcy5cbiAqXG4gKiBUbyBjdXN0b21pemUgdGhlIGNvbnRlbnRzIG9mIGVpdGhlciB0aGUgYDx0ZD5gIG9yIGA8dGg+YCBlbGVtZW50cyAobGlrZSBhZGRpbmcgY29sb3IsIGljb25zLCBmb3JtIGZpZWxkcywgZXh0cmEgcGFkZGluZyBldGMuKSwgcHJvdmlkZVxuICogdGhlIGN1c3RvbWl6ZWQgY29udGVudCB3aXRoaW4gYSBgPG5nLXRlbXBsYXRlPmAtdGFnLCBhbmQgcGxhY2UgdGhlIG5nLXRlbXBsYXRlIGluIHRoZSBodG1sIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmRpbmcgdGFnIG9mXG4gKiB0aGUgYDxuZ2d2LXRhYmxlPmAuIEFkZCBhIGB0YWJsZUNvbHVtbmAtYXR0cmlidXRlIHRvIHRoZSBgPG5nLXRlbXBsYXRlPmAtZWxlbWVudCwgYW5kIHNldCB0aGUgdmFsdWUgdG8gdGhlIHNwZWNpZmljIGNvbHVtbiBwcm9wZXJ0eS5cbiAqIFNldCBgdGFibGVDb2x1bW5UYXJnZXRgIHRvIGVpdGhlciBgdGhgLCBgdGRgIG9yIGBib3RoYCAoZGVmYXVsdCkgZGVwZW5kaW5nIG9uIHRhcmdldCBlbGVtZW50IHR5cGUuXG4gKiBUaGUgZW50aXJlIHJvdyBmcm9tIHRoZSBgQElucHV0KCkgdGFibGVEYXRhYCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgY29udGV4dCBgJGltcGxpY2l0YCB2YXJpYWJsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogPCEtLSBmb3IgdGFibGUgY2VsbHMgaS5lLiB0ZC1lbGVtZW50cyAtLT5cbiAqIDxuZy10ZW1wbGF0ZSB0YWJsZUNvbHVtbj1cInN0YXR1c1wiIHRhYmxlQ29sdW1uVGFyZ2V0PVwidGRcIiBsZXQtbXlEYXRhVmFyPVwiJGltcGxpY2l0XCIgbGV0LXN0YXR1cz1cIiRpbXBsaWNpdC5zdGF0dXNcIj5cbiAqICA8IS0tIG15IGN1c3RvbSBzdGF0dXMgZWxlbWVudCAtLT5cbiAqIDwvbmctdGVtcGxhdGU+XG4gKlxuICogQGV4YW1wbGVcbiAqIDwhLS0gZm9yIHRhYmxlIGhlYWRlcnMgaS5lLiB0aC1lbGVtZW50cyAtLT5cbiAqIDxuZy10ZW1wbGF0ZSB0YWJsZUNvbHVtbj1cInN0YXR1c1wiIHRhYmxlQ29sdW1uVGFyZ2V0PVwidGhcIiBsZXQtbXlEYXRhVmFyPVwiJGltcGxpY2l0XCIgbGV0LXN0YXR1cz1cIiRpbXBsaWNpdC5zdGF0dXNcIj5cbiAqICA8IS0tIG15IGN1c3RvbSBzdGF0dXMgZWxlbWVudCAtLT5cbiAqIDwvbmctdGVtcGxhdGU+XG4gKlxuICogSXQgaXMgcG9zc2libGUgdG8gYWRkIGN1c3RvbSByb3dzIHRoYXQgYXJlIGFwcGVuZGVkIGJlbG93IGRhdGEgcm93LiBVc2UgYDxuZy10ZW1wbGF0ZT5gLXRhZyBhbmQgcGxhY2UgdGhlIG5nLXRlbXBsYXRlIGluIHRoZSBodG1sIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmRpbmcgdGFnIG9mXG4gKiB0aGUgYDxuZ2d2LXRhYmxlPmAuIEFkZCBhIGB0YWJsZUFwcGVuZGFibGVSb3dzYC1hdHRyaWJ1dGUgdG8gdGhlIGA8bmctdGVtcGxhdGU+YC1lbGVtZW50LiBBbnkgYHRyYCBlbGVtZW50cyB0aGF0IGV4aXN0IHdpdGhpbiBgPG5nLXRlbXBsYXRlIHRhYmxlQXBwZW5kYWJsZVJvd3M+YCBhbmQgYDwvbmctdGVtcGxhdGU+YCB0YWdzIHdpbGwgYmUgcHV0IGJlbG93IGRhdGEgcm93J3MgYHRyYCBlbGVtZW50IGluIHRoZSB0YWJsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogPCEtLSBjdXN0b20gYXBwZW5kZWQgcm93cyAtLT5cbiAqIDxuZy10ZW1wbGF0ZSB0YWJsZUFwcGVuZGFibGVSb3dzIGxldC1teURhdGFWYXI9XCIkaW1wbGljaXRcIiBsZXQtc3RhdHVzPVwiJGltcGxpY2l0LnN0YXR1c1wiPlxuICogIDx0cj5cbiAqICAgPCEtLSBmaXJzdCByb3cncyBjb2x1bW5zIC0tPlxuICogIDwvdHI+XG4gKiAgPCEtLSBtb3JlIHJvd3MgaWYgbmVlZGVkIC0tPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiBJZiBjdXN0b20gc3R5bGluZyBpcyBuZWVkZWQgZm9yIGRhdGEgcm93IHRoYXQgaGFzIGFwcGVuZGVkIHJvd3MsIHlvdSBjYW4gdXNlIGRhdGEgYXR0cmlidXRlIGBkYXRhLWhhc3Jvd3NwYW5gIHRvIGRpc3Rpbmd1aXNoIGl0IGZyb20gZGF0YSByb3cgd2l0aG91dCBhcHBlbmRlZCByb3dzLlxuICogWW91IGNhbiBwYXNzIHlvdXIgb3duIGN1c3RvbSBtZXRob2Qgd2l0aCBjb25kaXRpb25hbCBsb2dpYyB0byBkZWZpbmUgd2hhdCB2YWx1ZSB3aWxsIGJlIHBhc3NlZCB0byBkYXRhLWhhc3Jvd3NwYW4uXG4gKiBJbiBhZGRpdGlvbiwgaGFzUm93U3BhbiBmdW5jdGlvbiBhY2NlcHRzIGl0ZW0gZnJvbSBgQElucHV0KCkgdGFibGVEYXRhYCBhcyBhcmd1bWVudCB3aGljaCBpcyBvZiB0aGUgc2FtZSB0eXBlIGFzIHZhbHVlIHBhc3NlZCB0byBjb250ZXh0IGAkaW1wbGljaXRgIHZhcmlhYmxlLlxuICogSU1QT1JUQU5UOiB1c2UgYXJyb3cgZnVuY3Rpb24gc3R5bGUgZm9yIGRlZmluaW5nIGZ1bmN0aW9uIGluc2lkZSBjb21wb25lbnQsIGkuZS4gYGhhc1Jvd1NwYW4gPSAodmFsdWUpID0+IG91dHB1dDtgLiBJZiByZWd1bGFyIGZ1bmN0aW9uIHdpbGwgYmUgZGVmaW5lZCwgaS5lLiBgaGFzUm93U3Bhbih2YWx1ZSkgeyByZXR1cm4gb3V0cHV0OyB9YCwgYmluZGluZyB3aWxsIG5vdCB3b3JrLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8IS0tIGluc2lkZSBjb21wb25lbnRcbiAqIGNsYXNzIEN1c3RvbUNvbXBvbmVudCB7XG4gKiAgY3VzdG9tSGFzUm93U3BhbkZ1bmN0aW9uID0gKGl0ZW06IEN1c3RvbURhdGFUeXBlKSA9PiBpdGVtLmFwcGVuZGVkUm93c0RhdGEubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAqIH1cbiAqIC0tPlxuICogPCEtLSBpbnNpZGUgc3R5bGVzaGVldHNcbiAqIFtkYXRhLWhhc3Jvd3NwYW49XCJ0cnVlXCJdIHtcbiAqICBjb2xvcjogYmx1ZTtcbiAqIH1cbiAqIC5hcHBlbmRlZC1yb3cge1xuICogIGNvbG9yOiBibHVlO1xuICogfVxuICogLS0+XG4gKiA8bmdndi10YWJsZSBbaGFzUm93U3Bhbl09XCJjdXN0b21IYXNSb3dTcGFuRnVuY3Rpb25cIj5cbiAqICA8IS0tIGN1c3RvbSBhcHBlbmRlZCByb3dzIC0tPlxuICogIDxuZy10ZW1wbGF0ZSB0YWJsZUFwcGVuZGFibGVSb3dzIGxldC1hcHBlbmRlZFJvd3NEYXRhPVwiJGltcGxpY2l0LmFwcGVuZGVkUm93c0RhdGFcIj5cbiAqICAgPHRyICpuZ0Zvcj1cImxldCBhcHBlbmRlZFJvd0l0ZW0gb2YgYXBwZW5kZWRSb3dzRGF0YVwiIGNsYXNzPVwiYXBwZW5kZWQtcm93XCI+XG4gKiAgICA8dGQ+e3sgYXBwZW5kZWRSb3dJdGVtIH19PC90ZD5cbiAqICAgIDwhLS0gb3RoZXIgcm93J3MgY29sdW1ucyAtLT5cbiAqICAgPC90cj5cbiAqICA8L25nLXRlbXBsYXRlPlxuICogPC9uZ2d2LXRhYmxlPlxuICpcbiAqIEluIGFkZGl0aW9uLCBpdCBpcyBwb3NzaWJsZSB0byBhZGQgZm9vdGVyIGZvciB0aGUgdGFibGUuIFNpbWlsYXJseSB0byBhZGRpbmcgY3VzdG9tIGNvbHVtbnMsIHVzZSBgPG5nLXRlbXBsYXRlPmAtdGFnIGFuZCBwbGFjZSB0aGUgbmctdGVtcGxhdGUgaW4gdGhlIGh0bWwgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZGluZyB0YWcgb2ZcbiAqIHRoZSBgPG5nZ3YtdGFibGU+YC4gQWRkIGEgYHRhYmxlRm9vdGVyYC1hdHRyaWJ1dGUgdG8gdGhlIGA8bmctdGVtcGxhdGU+YC1lbGVtZW50LiBBbnkgZWxlbWVudHMgdGhhdCBleGlzdCB3aXRoaW4gYDxuZy10ZW1wbGF0ZSB0YWJsZUZvb3Rlcj5gIGFuZCBgPC9uZy10ZW1wbGF0ZT5gIHRhZ3Mgd2lsbCBiZSBwdXQgdG8gdGZvb3QgZWxlbWVudCBpbnNpZGUgdGhlIHRhYmxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8IS0tIGZvciB0YWJsZSBmb290ZXIgaS5lLiB0Zm9vdC1lbGVtZW50IC0tPlxuICogPG5nLXRlbXBsYXRlIHRhYmxlRm9vdGVyPlxuICogIDx0cj5cbiAqICAgPCEtLSBmaXJzdCByb3cncyBjb2x1bW5zIC0tPlxuICogIDwvdHI+XG4gKiAgPCEtLSBtb3JlIHJvd3MgaWYgbmVlZGVkIC0tPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZ3YtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudDxUIGV4dGVuZHMgVGFibGVSb3c+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ3VzdG9tIHRlbXBsYXRlcyBkZWZpbmVkIGluIHRoZSBodG1sLlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZVRlbXBsYXRlRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGN1c3RvbVRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxUYWJsZVRlbXBsYXRlRGlyZWN0aXZlPGtleW9mIFQ+PlxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ3VzdG9tIGFwcGVuZGVkIHJvd3MgdGVtcGxhdGUgZGVmaW5lZCBpbiB0aGUgaHRtbC5cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoVGFibGVBcHBlbmRhYmxlUm93c1RlbXBsYXRlRGlyZWN0aXZlKVxuICBhcHBlbmRlZFJvd3NUZW1wbGF0ZSE6IFRhYmxlQXBwZW5kYWJsZVJvd3NUZW1wbGF0ZURpcmVjdGl2ZVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ3VzdG9tIGZvb3RlciB0ZW1wbGF0ZSBkZWZpbmVkIGluIHRoZSBodG1sLlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChUYWJsZUZvb3RlclRlbXBsYXRlRGlyZWN0aXZlKVxuICBjdXN0b21Gb290ZXJUZW1wbGF0ZSE6IFRhYmxlRm9vdGVyVGVtcGxhdGVEaXJlY3RpdmVcblxuICAvKiogRW1pdHMgdGhlIHRhYmxlIHJvdyB0aGF0IHdhcyBjbGlja2VkLiBXb3JrcyBvbiBhbGwgY29sdW1ucyBpZiBub3QgcHJldmVudERlZmF1bHRFbWl0IGlzIHNldCBmb3IgdGhhdCBjb2x1bW4uICovXG4gIEBPdXRwdXQoKSBuZ3ZSb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VCB8IGFueT4oKVxuXG4gIC8qKlxuICAgKiBFbWl0cyBjdXJyZW50bHkgc2VsZWN0ZWQgYW5kIGRlc2VsZWN0ZWQgaXRlbXMgaW4gdGhlIHRhYmxlIGFzIGtleS12YWx1ZSBwYWlycy5cbiAgICogVXNlcyBlYWNoIGl0ZW1gcyBpdGVtSWQgYXMga2V5LCBhbmQgYSBib29sZWFuIHZhbHVlIHRvIGRlc2NyaWJlIHNlbGVjdGVkIHN0YXR1cy5cbiAgICovXG4gIEBPdXRwdXQoKSBuZ3ZSb3dTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpXG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHRvIHNpZ25hbCB0aGF0IHRoZSB0YWJsZSBzaG91bGQgYmUgcmVvcmRlcmVkLlxuICAgKi9cbiAgQE91dHB1dCgpIG5ndk9yZGVyQnkgPSBuZXcgRXZlbnRFbWl0dGVyPE9yZGVyQnk8VD4+KClcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgaXRlbXMgZGVzY3JpYmluZyBob3cgdGhlIHRhYmxlIGhlYWRlciBzaG91bGQgYmUgcmVuZGVyZWQsXG4gICAqIHRvZ2V0aGVyIHdpdGggaW5zdHJ1Y3Rpb25zIGZvciBob3cgZWFjaCByb3cgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiB0aGF0IGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpIHRhYmxlQ29sdW1ucyE6IFRhYmxlQ29sdW1uPFQ+W11cblxuICAvKiogRGF0YSBhcnJheSB0byBkaXNwbGF5IGRhdGEgaW4gdGhlIHRhYmxlLiBFYWNoIGl0ZW0gPFQ+IGluIHRoZSBhcnJheSByZXByZXNlbnRzIGEgcm93IGluIHRoZSB0YWJsZS4gKi9cbiAgQElucHV0KCkgdGFibGVEYXRhITogVFtdXG5cbiAgLyoqXG4gICAqIFByb3BlcnR5IG5hbWUgdXNlZCB0byB1bmlxdWVseSBkZXNjcmliZSBlYWNoIGl0ZW0gKGkuZS4gcm93KSBpbiB0aGUgZGF0YSB0YWJsZS5cbiAgICogRGVmYXVsdHMgdG8gXFwnaWRcXCcuXG4gICAqIElzIHJlcXVpcmVkIGlmIHNlbGVjdGFibGUgaXMgdHJ1ZS5cbiAgICovXG4gIEBJbnB1dCgpIHJvd0lkID0gJ2lkJ1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbidzIHJldHVybiB2YWx1ZSBpcyB1c2VkIGZvciBkYXRhIGF0dHJpYnV0ZSBcXCdkYXRhLWhhc3Jvd3NwYW5cXCcuXG4gICAqIElmIGN1c3RvbSBoYXNSb3dTcGFuIGZ1bmN0aW9uIGlzIG5vdCBwYXNzZWQgdG8gdGhlIHRhYmxlLFxuICAgKiB0aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB1bmRlZmluZWQgdmFsdWUgYnkgZGVmYXVsdCB3aGljaCByZXN1bHRzIGluIFxcJ2RhdGEtaGFzcm93c3BhblxcJyBhdHRyaWJ1dGUgYmVpbmcgb21pdHRlZCBpbiBodG1sXG4gICAqIChhbmd1bGFyIG9taXRzIGF0dHJpYnV0ZXMgdGhhdCBjb250YWluIG51bGwgb3IgdW5kZWZpbmVkIHZhbHVlKS5cbiAgICogSU1QT1JUQU5UOiB1c2UgYXJyb3cgZnVuY3Rpb24gc3R5bGUgZm9yIGRlZmluaW5nIGZ1bmN0aW9uIGluc2lkZSBjb21wb25lbnQsIGkuZS4gYGhhc1Jvd1NwYW4gPSAodmFsdWUpID0+IG91dHB1dDtgLiBJZiByZWd1bGFyIGZ1bmN0aW9uIHdpbGwgYmUgZGVmaW5lZCwgaS5lLiBgaGFzUm93U3Bhbih2YWx1ZSkgeyByZXR1cm4gb3V0cHV0OyB9YCwgYmluZGluZyB3aWxsIG5vdCB3b3JrLlxuICAgKi9cbiAgQElucHV0KCkgaGFzUm93U3BhbjogKGl0ZW06IFQpID0+IGFueSA9IChfKSA9PiB1bmRlZmluZWRcblxuICAvKipcbiAgICogVXNlZCB0byBlbmFibGUvZGlzYWJsZSB0aGUgbGVmdC1zaWRlIGNoZWNrYm94IGNvbHVtbi5cbiAgICogRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSB0cnVlXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZW5hYmxlL2Rpc2FibGUgZXhwYW5kYWJsZSByb3dzLlxuICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICovXG4gIEBJbnB1dCgpIGV4cGFuZGFibGUgPSBmYWxzZVxuXG4gIC8qKlxuICAqIFByb3BlcnR5IG5hbWUgdXNlZCB0byBkZXNjcmliZSB0aGUgc3ViSXRlbXMgaW4gdGhlIGRhdGEgdGFibGUuXG4gICovXG4gIEBJbnB1dCgpIHN1Ykl0ZW1zUHJvcCA9ICdzdWJJdGVtcydcblxuICAvKipcbiAgICogQWxsb3cgbmdndi10YWJsZSB0byBhdHRlbXB0IHNvcnRpbmcgdGhlIGRhdGEgaW4gdGhlIHRhYmxlLiBOb3QgcmVjb21tZW5kZWQgaWYgb25seSBhIHN1YnNldCBpcyBsb2FkZWQgb3IgaWYgdGhlIGRhdGFzZXQgaXMgdmVyeSBsYXJnZS5cbiAgICogRGlzYWJsZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIEBJbnB1dCgpIGFsbG93TG9jYWxTb3J0ID0gZmFsc2VcblxuICAvKiogU3BlY2lhbCBwcm9wZXJ0eSB1c2VkIGZvciBzZWxlY3RpbmcgRE9NIGVsZW1lbnRzIGR1cmluZyBhdXRvbWF0ZWQgVUkgdGVzdGluZy4gKi9cbiAgQElucHV0KCkgdGhvb2sgPSAndGFibGUtc2VsZWN0LWFsbCdcblxuICAvKiogRnVuY3Rpb24gdG8gb3ZlcndyaXRlIGdlbmVyYXRlZCB0aG9vayBmb3IgZWFjaCByb3cuICovXG4gIEBJbnB1dCgpIHRyVGhvb2tGbj86IChpdGVtOiBUKSA9PiBzdHJpbmdcblxuICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIGNoZWNrYm94IGluIHRoZSB0YWJsZSBoZWFkZXIgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsQ2hlY2tib3hUaD86IHN0cmluZ1xuXG4gIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggaW4gdGhlIHRhYmxlIGhlYWRlciAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxDaGVja2JveFRyPzogc3RyaW5nXG5cbiAgLyoqIEFyaWEgbGFiZWxzIGZvciBzb3J0aW5nIGluIHRoZSB0YWJsZSBoZWFkZXIgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsc09yZGVyQnk/OiBhcmlhTGFiZWxzT3JkZXJCeVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogSW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmUgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGFkZGVkIGNvbnRlbnQgdGVtcGxhdGVzIHVzZWQgaW4gdGQgZWxlbWVudHMuXG4gICAqL1xuICBjdXN0b21Sb3dUZW1wbGF0ZXMgPSBuZXcgTWFwPGtleW9mIFQsIFRlbXBsYXRlUmVmPGFueT4+KClcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEludGVybmFsIGRhdGEgc3RydWN0dXJlIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhZGRlZCBjb250ZW50IHRlbXBsYXRlcyB1c2VkIGluIHRoIGVsZW1lbnRzLlxuICAgKi9cbiAgY3VzdG9tSGVhZGVyVGVtcGxhdGVzID0gbmV3IE1hcDxrZXlvZiBULCBUZW1wbGF0ZVJlZjxhbnk+PigpXG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgY3VzdG9tIGFwcGVuZGVkIHJvd3MgaS5lLiB0ciBlbGVtZW50cyAocm93cykuXG4gICAqL1xuICBhcHBlbmRlZFJvd3NUZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT5cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEludGVybmFsIGRhdGEgc3RydWN0dXJlIHVzZWQgdG8gaG9sZCB0Zm9vdCBlbGVtZW50IGNoaWxkcmVuIGkuZS4gdHIgZWxlbWVudHMgKHJvd3MpLlxuICAgKi9cbiAgY3VzdG9tRm9vdGVyVGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjxhbnk+XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbmNyZW1lbnRhbCBpZC5cbiAgICovXG4gIGluaXRJZCE6IG51bWJlclxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogRm9ybUdyb3VwIGNvbnRhaW5pbmcgYWxsIHJvdyBpZFxcJ3MgYXMgY29udHJvbHMsIGFuZCB3aGV0aGVyIHRoZXNlIGFyZSBzZWxlY3RlZCBvciBub3QgYXMgdmFsdWVzLlxuICAgKi9cbiAgcm93U2VsZWN0b3JzOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pXG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBNYXN0ZXIgc2VsZWN0b3IgZm9yIHNlbGVjdGluZyBvciBkZXNlbGVjdGluZyBhbGwgcm93IHNlbGVjdG9ycy5cbiAgICovXG4gIGdyb3VwU2VsZWN0b3I6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZmFsc2UpXG5cbiAgcHJpdmF0ZSBzZWxlY3RlZDogc3RyaW5nW10gPSBbXVxuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW11cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgLy8gVXBkYXRlIHNlbGVjdGFibGUgb3IgZXhwYW5kYWJsZSByb3dzIGlmIHRhYmxlIGRhdGEgb3Igc2V0dGluZ3MgY2hhbmdlXG4gICAgaWYgKFxuICAgICAgKHRoaXMuc2VsZWN0YWJsZSB8fCB0aGlzLmV4cGFuZGFibGUpICYmIGNoYW5nZXMudGFibGVEYXRhPy5jdXJyZW50VmFsdWUgfHxcbiAgICAgIChjaGFuZ2VzLnNlbGVjdGFibGU/LmN1cnJlbnRWYWx1ZSB8fCBjaGFuZ2VzLmV4cGFuZGFibGU/LmN1cnJlbnRWYWx1ZSkgJiYgdGhpcy50YWJsZURhdGFcbiAgICApIHtcbiAgICAgIGNvbnN0IHdhc0NoYW5nZWQgPSB0aGlzLnJlZ2lzdGVyU2VsZWN0YWJsZVJvd3MoXG4gICAgICAgIGNoYW5nZXMudGFibGVEYXRhLmN1cnJlbnRWYWx1ZSxcbiAgICAgIClcbiAgICAgIGlmICh3YXNDaGFuZ2VkICYmICF0aGlzLnN1YnMubGVuZ3RoKSB7XG4gICAgICAgIC8vIGZpcnN0IHRpbWUgdGhpcyBpcyBydW5cbiAgICAgICAgY29uc3QgZ3JvdXBTZWxlY3RvclN1YiA9IHRoaXMuZ3JvdXBWYWx1ZVN1YnNjcmlwdGlvblxuICAgICAgICBjb25zdCByb3dTZWxlY3RvclN1YiA9IHRoaXMucm93VmFsdWVTdWJzY3JpcHRpb25cbiAgICAgICAgdGhpcy5zdWJzLnB1c2goZ3JvdXBTZWxlY3RvclN1Yiwgcm93U2VsZWN0b3JTdWIpXG4gICAgICB9IGVsc2UgaWYgKHdhc0NoYW5nZWQpIHtcbiAgICAgICAgdGhpcy5yb3dTZWxlY3RvcnMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc29ydCBhbnkgaW5jb21pbmcgZGF0YVxuICAgIGlmIChcbiAgICAgIHRoaXMuYWxsb3dMb2NhbFNvcnQgJiZcbiAgICAgIChjaGFuZ2VzLnRhYmxlRGF0YT8uY3VycmVudFZhbHVlIHx8IGNoYW5nZXMudGFibGVDb2x1bW5zPy5jdXJyZW50VmFsdWUpXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmRlcmVkQnlDb2x1bW46IFRhYmxlQ29sdW1uPFQ+IHwgdW5kZWZpbmVkID1cbiAgICAgICAgdGhpcy50YWJsZUNvbHVtbnM/LmZpbmQoKGVsKSA9PiBlbC5vcmRlciAhPT0gdW5kZWZpbmVkKVxuICAgICAgaWYgKG9yZGVyZWRCeUNvbHVtbikgdGhpcy5zb3J0SXRlbXNCeShvcmRlcmVkQnlDb2x1bW4pXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0SWQgPSBzdGF0aWNJbml0SWQrK1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIC8vIGlmIGFueSBjdXN0b20gdGVtcGxhdGVzIHdlcmUgZGVmaW5lZCBpbiB0aGUgdGVtcGxhdGVcbiAgICBpZiAodGhpcy5jdXN0b21UZW1wbGF0ZXMubGVuZ3RoKSB7XG4gICAgICAvLyBmb3IgZWFjaCB0ZW1wbGF0ZSBmb3VuZFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXMubWFwKCh0YWJsZVRlbXBsYXRlKSA9PiB7XG4gICAgICAgIC8vIGlmIHRhcmdldCBpcyBlaXRoZXIgJ3RkJyBvciAnYm90aCdcbiAgICAgICAgaWYgKFxuICAgICAgICAgIFsndGQnLCAnYm90aCddLmluY2x1ZGVzKHRhYmxlVGVtcGxhdGUudGFibGVDb2x1bW5UYXJnZXQgYXMgc3RyaW5nKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBhZGQgdG8gY3VzdG9tIHJvdyB0ZW1wbGF0ZXNcbiAgICAgICAgICB0aGlzLmN1c3RvbVJvd1RlbXBsYXRlcy5zZXQoXG4gICAgICAgICAgICB0YWJsZVRlbXBsYXRlLnRhYmxlQ29sdW1uLFxuICAgICAgICAgICAgdGFibGVUZW1wbGF0ZS50ZW1wbGF0ZVJlZixcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgdGFyZ2V0IGlzIGVpdGhlciAndGgnIG9yICdib3RoJ1xuICAgICAgICBpZiAoXG4gICAgICAgICAgWyd0aCcsICdib3RoJ10uaW5jbHVkZXModGFibGVUZW1wbGF0ZS50YWJsZUNvbHVtblRhcmdldCBhcyBzdHJpbmcpXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIGFkZCB0byBjdXN0b20gaGVhZGVyIHRlbXBsYXRlc1xuICAgICAgICAgIHRoaXMuY3VzdG9tSGVhZGVyVGVtcGxhdGVzLnNldChcbiAgICAgICAgICAgIHRhYmxlVGVtcGxhdGUudGFibGVDb2x1bW4sXG4gICAgICAgICAgICB0YWJsZVRlbXBsYXRlLnRlbXBsYXRlUmVmLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBpZiBhcHBlbmRlZCByb3dzJyB0ZW1wbGF0ZSBpcyBkZWZpbmVkIGluIHRoZSB0ZW1wbGF0ZVxuICAgIGlmICh0aGlzLmFwcGVuZGVkUm93c1RlbXBsYXRlKSB7XG4gICAgICAvLyBzZXQgdGVtcGxhdGVSZWYgb2YgYXBwZW5kZWQgcm93cycgdGVtcGxhdGUgdG8gdmFyaWFibGVcbiAgICAgIHRoaXMuYXBwZW5kZWRSb3dzVGVtcGxhdGVSZWYgPSB0aGlzLmFwcGVuZGVkUm93c1RlbXBsYXRlLnRlbXBsYXRlUmVmXG4gICAgfVxuXG4gICAgLy8gaWYgY3VzdG9tIGZvb3RlciB0ZW1wbGF0ZSBpcyBkZWZpbmVkIGluIHRoZSB0ZW1wbGF0ZVxuICAgIGlmICh0aGlzLmN1c3RvbUZvb3RlclRlbXBsYXRlKSB7XG4gICAgICAvLyBzZXQgdGVtcGxhdGVSZWYgb2YgdGFibGUgZm9vdGVyIHRvIHZhcmlhYmxlXG4gICAgICB0aGlzLmN1c3RvbUZvb3RlclRlbXBsYXRlUmVmID0gdGhpcy5jdXN0b21Gb290ZXJUZW1wbGF0ZS50ZW1wbGF0ZVJlZlxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vicy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBSZXR1cm5zIGEgc3Vic2NyaXB0aW9uIHRvIHRoZSBtYXN0ZXIgc2VsZWN0b3IgY29udHJvbCB0aGF0IGVpdGhlciBzZWxlY3RzIG9yIGRlc2VsZWN0cyBhbGwgcm93IGNvbnRyb2xzLlxuICAgKi9cbiAgZ2V0IGdyb3VwVmFsdWVTdWJzY3JpcHRpb24oKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cFNlbGVjdG9yLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHZhbHVlOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdE1hcCA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXModGhpcy5yb3dTZWxlY3RvcnNWYWx1ZSkpXG4gICAgICAgIHNlbGVjdE1hcC5mb3JFYWNoKChfLCBrZXkpID0+IHNlbGVjdE1hcC5zZXQoa2V5LCB2YWx1ZSkpXG4gICAgICAgIGNvbnN0IHBhdGNoVmFsdWUgPSBvYmplY3RGcm9tRW50cmllcyhzZWxlY3RNYXApXG4gICAgICAgIHRoaXMucm93U2VsZWN0b3JzLnBhdGNoVmFsdWUocGF0Y2hWYWx1ZSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogUmV0dXJucyBhIHN1YnNjcmlwdGlvbiB0byBhbGwgaW5kaXZpZHVhbCByb3cgc2VsZWN0b3JzIGFuZCB1cGRhdGUgdGhlIG1hc3RlciBzZWxlY3RvciBpZiBhbGwgYXJlIHNlbGVjdGVkLlxuICAgKi9cbiAgZ2V0IHJvd1ZhbHVlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucm93U2VsZWN0b3JzLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgwKSwgLy8gdG8gbGltaXQgdGhlIG51bWJlciBvZiBldmVudHMgYW5kIHRvIHdhaXQgZm9yIGFsbCBzdWIgY29udHJvbHMgdG8gdXBkYXRlXG4gICAgICAgIG1hcCgodmFsOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSkgPT4ge1xuICAgICAgICAgIC8vIGdldCBhIGZpbHRlcmVkIGFycmF5IG9mIGtleXMgZm9yIGFsbCByb3dzIHRoYXQgYXJlIHNlbGVjdGVkXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBPYmplY3Qua2V5cyh2YWwpLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdmFsW2tleV0gPT09IHRydWUgJiYgdGhpcy5yb3dTZWxlY3RvcnMuZ2V0KGtleSk/LmVuYWJsZWRcbiAgICAgICAgICB9KVxuICAgICAgICAgIC8vIHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgb25seSB0aGUgZmlsdGVyZWQga2V5c1xuICAgICAgICAgIHJldHVybiBwaWNrKHNlbGVjdGVkLCB2YWwpXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICh2YWx1ZTogb2JqZWN0KSA9PiB7XG4gICAgICAgICAgLy8gdGhlIG51bWJlciBvZiBzZWxlY3RlZCBrZXlzIGNvbXBhcmVkIHRvIHRoZSB0b3RhbCBudW1iZXIgb2Yga2V5cyBhdmFpbGFibGVcbiAgICAgICAgICBjb25zdCBudW1iZXJPZlNlbGVjdGVkID0gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aFxuICAgICAgICAgIGNvbnN0IGFsbFNlbGVjdGVkOiBib29sZWFuID1cbiAgICAgICAgICAgIG51bWJlck9mU2VsZWN0ZWQgPiAwXG4gICAgICAgICAgICAgID8gbnVtYmVyT2ZTZWxlY3RlZCA9PT0gT2JqZWN0LmtleXModGhpcy5yb3dTZWxlY3RvcnNWYWx1ZSkubGVuZ3RoXG4gICAgICAgICAgICAgIDogZmFsc2VcbiAgICAgICAgICAvLyB1cGRhdGUgdGhlIG1hc3RlciBzZWxlY3RvciBjb250cm9sXG4gICAgICAgICAgdGhpcy5ncm91cFNlbGVjdG9yLnNldFZhbHVlKGFsbFNlbGVjdGVkLCB7IGVtaXRFdmVudDogZmFsc2UgfSlcbiAgICAgICAgICAvLyB1cGRhdGUgdGhlIGFycmF5IG9mIGN1cnJlbnRseSBzZWxlY3RlZCBpZCdzXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IE9iamVjdC5rZXlzKHZhbHVlKVxuICAgICAgICAgIC8vIGFuZCBlbWl0IHRoZSB1cGRhdGVkIHZhbHVlXG4gICAgICAgICAgdGhpcy5uZ3ZSb3dTZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkKVxuICAgICAgICB9LFxuICAgICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogUmVnaXN0ZXJzIG9yIGRpc2FibGVzIHJvdyBjb250cm9scyBmb3IgbmV3IG9yIHJlbW92ZWQgcm93cy5cbiAgICovXG4gIHJlZ2lzdGVyU2VsZWN0YWJsZVJvd3ModGFibGVEYXRhOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGFibGVEYXRhKSByZXR1cm4gZmFsc2VcbiAgICAvLyBBcnJheSBjb250YWluaW5nIG9ubHkgdGhlIGlkJ3MgZm9yIGVhY2ggcm93XG4gICAgY29uc3QgZGF0YVJvd0lkczogc3RyaW5nW10gPSB0YWJsZURhdGEubWFwKChkYXRhOiBhbnkpID0+IGRhdGFbdGhpcy5yb3dJZF0pXG5cbiAgICAvLyBBcnJheSBjb250YWluaW5nIHRoZSBpZCdzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIGNvbnRyb2xzXG4gICAgY29uc3QgY3VycmVudElkczogc3RyaW5nW10gPSBPYmplY3Qua2V5cyh0aGlzLnJvd1NlbGVjdG9yc1ZhbHVlKVxuXG4gICAgLy8gQXJyYXkgY29udGFpbmluZyBhbGwgaWRzIHRoYXQgbGFja3MgYSBjb3JyZXNwb25kaW5nIGNvbnRyb2wgKGkuZS4gbmV3IHJvd3MpXG4gICAgY29uc3QgbmV3SWRzOiBzdHJpbmdbXSA9IGRhdGFSb3dJZHMuZmlsdGVyKFxuICAgICAgKGlkKSA9PiBjdXJyZW50SWRzLmluZGV4T2YoaWQpID09PSAtMSxcbiAgICApXG5cbiAgICAvLyBBcnJheSBjb250YWluaW5nIGFsbCBpZHMgdGhhdCBoYXMgYSBjb250cm9sIGJ1dCBpcyBubyBsb25nZXIgaW4gdGhlIGRhdGEgc2V0IChpLmUuIHJlbW92ZWQgcm93cylcbiAgICBjb25zdCByZW1vdmVkSWRzOiBzdHJpbmdbXSA9IGN1cnJlbnRJZHMuZmlsdGVyKFxuICAgICAgKGlkKSA9PiBkYXRhUm93SWRzLmluZGV4T2YoaWQpID09PSAtMSxcbiAgICApXG5cbiAgICAvLyBSZWdpc3RlciBuZXcgY29udHJvbHMgZm9yIGFkZGVkIHJvd3NcbiAgICBpZiAobmV3SWRzLmxlbmd0aCkge1xuICAgICAgbmV3SWRzLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLnJvd1NlbGVjdG9ycy5yZWdpc3RlckNvbnRyb2woXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChmYWxzZSksXG4gICAgICAgIClcbiAgICAgICAgaWYgKGN0cmwuZGlzYWJsZWQpIGN0cmwuZW5hYmxlKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gU2V0IGFscmVhZHkgcmVnaXN0ZXJlZCBjb250cm9scyB0byBkaXNhYmxlZCBmb3IgcmVtb3ZlZCByb3dzXG4gICAgaWYgKHJlbW92ZWRJZHMubGVuZ3RoKVxuICAgICAgcmVtb3ZlZElkcy5mb3JFYWNoKChpZCkgPT4gdGhpcy5yb3dTZWxlY3RvcnMuZ2V0KGlkKT8uZGlzYWJsZSgpKVxuXG4gICAgcmV0dXJuIG5ld0lkcy5sZW5ndGggPiAwIHx8IHJlbW92ZWRJZHMubGVuZ3RoID4gMFxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBSZXR1cm5zIGFsbCBlbmFibGVkIHZhbHVlcyB1bmxlc3MgYWxsIHJvd3MgYXJlIGRpc2FibGVkLlxuICAgKi9cbiAgZ2V0IHJvd1NlbGVjdG9yc1ZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucm93U2VsZWN0b3JzLmVuYWJsZWQgPyB0aGlzLnJvd1NlbGVjdG9ycy52YWx1ZSA6IHt9XG4gIH1cblxuICB0b2dnbGVTb3J0T3JkZXJXaXRoU3BhY2UoZXZlbnQ6IGFueSwgY29sdW1uOiBUYWJsZUNvbHVtbjxUPikge1xuICAgIGlmIChjb2x1bW4uc29ydGFibGUpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIHRoaXMudG9nZ2xlU29ydE9yZGVyKGNvbHVtbilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFN3aXRjaGVzIHNvcnRpbmcgb3JkZXIgYmV0d2VlbiBhc2NlbmRpbmcgYW5kIGRlc2NlbmRpbmcgb3JkZXIgZm9yIGEgY29sdW1uLlxuICAgKiBAcGFyYW0gY29sdW1uIHRoZSBjb2x1bW4gdG8gc29ydCByb3dzIGFmdGVyLlxuICAgKi9cbiAgdG9nZ2xlU29ydE9yZGVyKGNvbHVtbjogVGFibGVDb2x1bW48VD4pIHtcbiAgICAvLyBjaGVjayBpZiB0aGUgdGFibGUgaXMgYWxyZWFkeSBzb3J0ZWQgYnkgYW5vdGhlciBjb2x1bW4gdGhhbiB0aGUgb25lIHByb3ZpZGVkXG4gICAgY29uc3QgY3VycmVudGx5T3JkZXJlZEJ5ID0gdGhpcy50YWJsZUNvbHVtbnM/LmZpbmQoXG4gICAgICAoZWwpID0+IGVsICE9PSBjb2x1bW4gJiYgZWwub3JkZXIgIT09IHVuZGVmaW5lZCxcbiAgICApXG4gICAgaWYgKGN1cnJlbnRseU9yZGVyZWRCeSkgZGVsZXRlIGN1cnJlbnRseU9yZGVyZWRCeS5vcmRlclxuICAgIGNvbHVtbi5vcmRlciA9IGNvbHVtbi5vcmRlciA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYydcbiAgICB0aGlzLnNvcnRJdGVtc0J5KGNvbHVtbilcbiAgfVxuXG4gIC8qKiBJZiBzb3J0YWJsZSwgcmVvcmRlcnMgdGhlIHRhYmxlIGRhdGEgdXNpbmcgdGhlIHNwZWNpZmllZCBjb2x1bW4gYXMgb3JkZXJpbmcgYXR0cmlidXRlLiAqL1xuICBzb3J0SXRlbXNCeShjb2x1bW46IFRhYmxlQ29sdW1uPFQ+KTogVGFibGVSb3dbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFjb2x1bW4uc29ydGFibGUpIHJldHVyblxuICAgIC8vIGVtaXQgcmUtb3JkZXIgZXZlbnRcbiAgICB0aGlzLm5ndk9yZGVyQnkuZW1pdCh7IHByb3BlcnR5OiBjb2x1bW4ucHJvcGVydHksIG9yZGVyOiBjb2x1bW4ub3JkZXIgfSlcbiAgICAvLyBpZiBsb2NhbCBzb3J0IGlzIGFsbG93ZWQsIHJlb3JkZXIgZGF0YVxuICAgIGlmICghdGhpcy5hbGxvd0xvY2FsU29ydCB8fCAhdGhpcy50YWJsZURhdGEpIHJldHVyblxuICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YS5zb3J0KFxuICAgICAgY29sdW1uLm9yZGVyID09PSAnZGVzYydcbiAgICAgICAgPyBvcmRlckJ5RGVzY2VuZGluZyhjb2x1bW4ucHJvcGVydHkpXG4gICAgICAgIDogb3JkZXJCeUFzY2VuZGluZyhjb2x1bW4ucHJvcGVydHkpLFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogRW1pdHMgcm93IGRhdGEgZm9yIHdoYXQgcm93IHdhcyBjbGlja2VkIGlmIGRlZmF1bHRFbWl0IGlzIGFsbG93ZWQuXG4gICAqL1xuICBwcm9wYWdhdGVJdGVtQ2xpY2soaXRlbTogYW55LCBwcmV2ZW50RGVmYXVsdEVtaXQ/OiBib29sZWFuKSB7XG4gICAgaWYgKCFwcmV2ZW50RGVmYXVsdEVtaXQpIHRoaXMubmd2Um93Q2xpY2suZW1pdChpdGVtKTtcblxuICAgIGlmICh0aGlzLmV4cGFuZGFibGUgJiYgaXRlbVt0aGlzLnN1Ykl0ZW1zUHJvcF0pIHtcbiAgICAgIHRoaXMudG9nZ2xlUm93VG9FeHBhbmQoaXRlbVt0aGlzLnJvd0lkXSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXJpYUxhYmVsKGNvbHVtbjogVGFibGVDb2x1bW48VD4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNvcnRPcmRlciA9XG4gICAgICBjb2x1bW4ub3JkZXIgPT09ICdhc2MnXG4gICAgICAgID8gdGhpcy5hcmlhTGFiZWxzT3JkZXJCeT8uZGVzY1xuICAgICAgICA6IHRoaXMuYXJpYUxhYmVsc09yZGVyQnk/LmFzY1xuICAgIGlmICghc29ydE9yZGVyKSByZXR1cm4gLy8gbm8gYXJpYSBsYWJlbHMgZGVmaW5lZFxuICAgIHJldHVybiBjb2x1bW4uYXJpYUxhYmVsU29ydGFibGU/LnJlcGxhY2UoJ3t7c29ydE9yZGVyfX0nLCBzb3J0T3JkZXIpXG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZVJvd1RvRXhwYW5kKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByb3cgPSB0aGlzLnJvd1NlbGVjdG9ycy5nZXQoaWQpXG4gICAgcm93Py5zZXRWYWx1ZSghcm93LnZhbHVlKVxuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI3NvcnRhYmxlVGhUZW1wbGF0ZSBsZXQtY29sdW1uPlxuICA8YnV0dG9uIGNsYXNzPVwic2ctdGFibGUtc29ydFwiICp0cmFuc2xvY289XCJsZXQgdFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGhCdXR0b25UZW1wbGF0ZT5cbiAgICAgIHt7IHQoY29sdW1uLmxhYmVsID8/ICcnKSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgY3VzdG9tSGVhZGVyVGVtcGxhdGVzLmdldChjb2x1bW4ucHJvcGVydHkpIGFzIHRoVGVtcGxhdGU7XG4gICAgICAgIGVsc2UgdGhCdXR0b25UZW1wbGF0ZVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aFRlbXBsYXRlIHx8IG51bGw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiXG4gICAgICA+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm90U29ydGFibGVUaFRlbXBsYXRlIGxldC1jb2x1bW4+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRoVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgICAgIHt7IHQoY29sdW1uLmxhYmVsID8/ICcnKSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIGN1c3RvbUhlYWRlclRlbXBsYXRlcy5nZXQoY29sdW1uLnByb3BlcnR5KSBhcyB0aFRlbXBsYXRlO1xuICAgICAgZWxzZSBkZWZhdWx0VGhUZW1wbGF0ZVxuICAgIFwiXG4gID5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGhUZW1wbGF0ZSB8fCBudWxsOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIlxuICAgID5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48dGFibGUgY2xhc3M9XCJnZHMtdGFibGVcIiAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgPCEtLSBUYWJsZSBoZWFkZXIgLS0+XG4gIDx0aGVhZD5cbiAgICA8dHI+XG4gICAgICA8IS0tIENoZWNrYm94IGNvbHVtbiBmb3IgaGVhZGVyIC0tPlxuICAgICAgPHRoICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwiY29sdW1uX19jaGVja1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2RzLWZpZWxkLWNoZWNrYm94LXdyYXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIFthdHRyLmZvcl09XCInY2JfaGVhZGVyX18nICsgaW5pdElkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGlkPVwidGhlYWQtY2hlY2tib3hcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZ3JvdXBTZWxlY3RvclwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsQ2hlY2tib3hUaFwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cIidjYl9oZWFkZXJfXycgKyBpbml0SWRcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cInRob29rXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aT48L2k+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RoPlxuXG4gICAgICA8IS0tIE90aGVyIGNvbHVtbnMgLS0+XG4gICAgICA8dGhcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbHVtbnNcIlxuICAgICAgICBbY29sdW1uVHlwZV09XCJjb2x1bW4udmFsdWVUeXBlXCJcbiAgICAgICAgW3NvcnRhYmxlXT1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgICAgIFtzb3J0T3JkZXJdPVwiY29sdW1uLm9yZGVyXCJcbiAgICAgICAgW3Rob29rXT1cIidjb2x1bW4taGVhZGVyLScgKyAhIWNvbHVtbi5wcm9wZXJ0eVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVTb3J0T3JkZXIoY29sdW1uKVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cInRvZ2dsZVNvcnRPcmRlcldpdGhTcGFjZSgkZXZlbnQsIGNvbHVtbilcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldEFyaWFMYWJlbChjb2x1bW4pXCJcbiAgICAgICAgW2F0dHIuYXJpYS1zb3J0XT1cImNvbHVtbi5vcmRlciArICdlbmRpbmcnXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5zb3J0YWJsZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIHNvcnRhYmxlVGhUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiwgY29sdW1uOiBjb2x1bW4gfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbHVtbi5zb3J0YWJsZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIG5vdFNvcnRhYmxlVGhUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiwgY29sdW1uOiBjb2x1bW4gfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90aD5cbiAgICA8L3RyPlxuICA8L3RoZWFkPlxuXG4gIDwhLS0gVGFibGUgYm9keSAtLT5cbiAgPHRib2R5IFtmb3JtR3JvdXBdPVwicm93U2VsZWN0b3JzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0YWJsZURhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDx0clxuICAgICAgICBbY2xhc3Mucm93X19leHBhbmRdPVwiZXhwYW5kYWJsZVwiXG4gICAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwiaXRlbSB8IHRyVGhvb2s6IGkgOiB0clRob29rRm5cIlxuICAgICAgICBbYXR0ci5kYXRhLWhhc3Jvd3NwYW5dPVwiaGFzUm93U3BhbihpdGVtKVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gQ2hlY2tib3ggY29sdW1uIGZvciByb3cgLS0+XG4gICAgICAgIDx0ZCAqbmdJZj1cInNlbGVjdGFibGVcIiBjbGFzcz1cImNvbHVtbl9fY2hlY2tcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2RzLWZpZWxkLWNoZWNrYm94LXdyYXBcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBbYXR0ci5mb3JdPVwiJ2NiX3Jvd19fJyArIGluaXRJZCArICdfJyArIGlcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICpuZ0lmPVwicm93U2VsZWN0b3JzLmdldChpdGVtW3Jvd0lkXSlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtW3Jvd0lkXVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxDaGVja2JveFRyXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCInY2Jfcm93X18nICsgaW5pdElkICsgJ18nICsgaVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCIncm93LXNlbGVjdC0nICsgaVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxpPjwvaT5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG5cbiAgICAgICAgPCEtLSBPdGhlciBjb2x1bW5zIC0tPlxuICAgICAgICA8dGRcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRhYmxlQ29sdW1uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgW2NvbHVtblR5cGVdPVwiY29sdW1uLnZhbHVlVHlwZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cIml0ZW1bY29sdW1uLnByb3BlcnR5XVwiXG4gICAgICAgICAgKGNsaWNrKT1cInByb3BhZ2F0ZUl0ZW1DbGljayhpdGVtLCBjb2x1bW4ucHJldmVudERlZmF1bHRDbGlja0V2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGFibGUgJiYgaSA9PT0gMDsgZWxzZSBub25FeHBhbmRhYmxlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZHMtaXRlbS1maWVsZC13cmFwXCI+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGV2cm9uLWZpZWxkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInJvd1NlbGVjdG9ycy5nZXQoaXRlbVtyb3dJZF0pPy52YWx1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uc3ViSXRlbXMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0yMCA5TDEyIDE3TDQgOVwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNlwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAge3sgaXRlbVtjb2x1bW4ucHJvcGVydHldIH19ICh7eyBpdGVtLnN1Ykl0ZW1zLmxlbmd0aCB9fSlcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub25FeHBhbmRhYmxlVGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tUm93VGVtcGxhdGVzLmdldChjb2x1bW4ucHJvcGVydHkpIGFzIHRkVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRkVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwidGRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZFRlbXBsYXRlPlxuICAgICAgICAgICAgICB7eyBpdGVtW2NvbHVtbi5wcm9wZXJ0eV0gfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG5cbiAgICAgIDwhLS0gRXhwYW5kZWQgU3ViIEl0ZW1zIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGFibGUgJiYgcm93U2VsZWN0b3JzLmdldChpdGVtW3Jvd0lkXSk/LnZhbHVlXCI+XG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc3ViSXRlbSBvZiBpdGVtW3N1Ykl0ZW1zUHJvcF1cIj5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb2x1bW5zXCJcbiAgICAgICAgICAgIGNsYXNzPVwid2ViLXZpZXdcIlxuICAgICAgICAgICAgW2NvbHVtblR5cGVdPVwiY29sdW1uLnZhbHVlVHlwZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwic3ViSXRlbVtjb2x1bW4ucHJvcGVydHldXCJcbiAgICAgICAgICAgIChjbGljayk9XCJwcm9wYWdhdGVJdGVtQ2xpY2soc3ViSXRlbSwgY29sdW1uLnByZXZlbnREZWZhdWx0Q2xpY2tFdmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21Sb3dUZW1wbGF0ZXMuZ2V0KGNvbHVtbi5wcm9wZXJ0eSkgYXMgdGRUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0VGRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc3ViSXRlbSB9XCI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRkVGVtcGxhdGU+XG4gICAgICAgICAgICAgIHt7IHN1Ykl0ZW1bY29sdW1uLnByb3BlcnR5XSB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPHRkIGNsYXNzPVwibW9iaWxlLXZpZXdcIiBbYXR0ci5jb2xzcGFuXT1cInRhYmxlQ29sdW1ucy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxkbCBjbGFzcz1cIm1vYmlsZS12aWV3LWZpZWxkLXdyYXBcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRhYmxlQ29sdW1uc1wiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbHVtbi5oaWRlUHJvcGVydHlPbk1vYmlsZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1vYmlsZS12aWV3LWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5UeXBlXT1cImNvbHVtbi52YWx1ZVR5cGVcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInN1Ykl0ZW1bY29sdW1uLnByb3BlcnR5XVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJvcGFnYXRlSXRlbUNsaWNrKHN1Ykl0ZW0sIGNvbHVtbi5wcmV2ZW50RGVmYXVsdENsaWNrRXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZHQgKm5nSWY9XCIhY29sdW1uLmhpZGVMYWJlbE9uTW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgdChjb2x1bW4ubGFiZWwgPz8gJycpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kdD5cbiAgICAgICAgICAgICAgICAgIDxkZD5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tUm93VGVtcGxhdGVzLmdldChjb2x1bW4ucHJvcGVydHkpIGFzIHRkVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRkVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInRkVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBzdWJJdGVtIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRkVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzdWJJdGVtW2NvbHVtbi5wcm9wZXJ0eV0gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDwvZGQ+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kbD5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2LWNoZXZyb24tZmllbGRcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInJvd1NlbGVjdG9ycy5nZXQoaXRlbVtyb3dJZF0pPy52YWx1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMjAgOUwxMiAxN0w0IDlcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNlwiXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQ3VzdG9tIGFwcGVuZGVkIHJvd3MgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwZW5kZWRSb3dzVGVtcGxhdGVSZWYgYXMgdHJUZW1wbGF0ZVwiPlxuICAgICAgICA8IS0tIENhbm5vdCBpbmZlciB0clRlbXBsYXRlIGFzIFRlbXBsYXRlUmVmIHRoZXJlZm9yZSBudWxsIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0clRlbXBsYXRlIHx8IG51bGw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGJvZHk+XG5cbiAgPCEtLSBUYWJsZSBmb290ZXIgLS0+XG4gIDx0Zm9vdCAqbmdJZj1cImN1c3RvbUZvb3RlclRlbXBsYXRlUmVmIGFzIHRyVGVtcGxhdGVcIj5cbiAgICA8IS0tIENhbm5vdCBpbmZlciB0clRlbXBsYXRlIGFzIFRlbXBsYXRlUmVmIHRoZXJlZm9yZSBudWxsIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0clRlbXBsYXRlIHx8IG51bGxcIj4gPC9uZy1jb250YWluZXI+XG4gIDwvdGZvb3Q+XG48L3RhYmxlPlxuIl19
|
|
407
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWxELE9BQU8sRUFDTCxvQ0FBb0MsRUFDcEMsNEJBQTRCLEVBQzVCLHNCQUFzQixHQUN2QixNQUFNLG1CQUFtQixDQUFBO0FBTzFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUE7Ozs7Ozs7QUFFekUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0FBRXBCLFNBQVMsaUJBQWlCLENBQUMsUUFBdUI7SUFDaEQsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQTtJQUM5QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7UUFDcEMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUMxQixDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUE7QUFDcEIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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cUVBZHpCLHNCQUFzQixxRUNqSXpDLHFsU0E2UEE7OzRGRGxJYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFlBQVk7OEJBV3RCLGVBQWU7c0JBRGQsZUFBZTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBUTlELG9CQUFvQjtzQkFEbkIsWUFBWTt1QkFBQyxvQ0FBb0M7Z0JBUWxELG9CQUFvQjtzQkFEbkIsWUFBWTt1QkFBQyw0QkFBNEI7Z0JBSWhDLFdBQVc7c0JBQXBCLE1BQU07Z0JBTUcsWUFBWTtzQkFBckIsTUFBTTtnQkFLRyxVQUFVO3NCQUFuQixNQUFNO2dCQU1FLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFPRyxLQUFLO3NCQUFiLEtBQUs7Z0JBU0csVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFNRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHtcbiAgVGFibGVBcHBlbmRhYmxlUm93c1RlbXBsYXRlRGlyZWN0aXZlLFxuICBUYWJsZUZvb3RlclRlbXBsYXRlRGlyZWN0aXZlLFxuICBUYWJsZVRlbXBsYXRlRGlyZWN0aXZlLFxufSBmcm9tICcuL3RhYmxlLmRpcmVjdGl2ZSdcbmltcG9ydCB7XG4gIGFyaWFMYWJlbHNPcmRlckJ5LFxuICBPcmRlckJ5LFxuICBUYWJsZUNvbHVtbixcbiAgVGFibGVSb3csXG59IGZyb20gJy4vdGFibGUubW9kZWxzJ1xuaW1wb3J0IHsgb3JkZXJCeUFzY2VuZGluZywgb3JkZXJCeURlc2NlbmRpbmcsIHBpY2sgfSBmcm9tICcuL3RhYmxlLnRvb2xzJ1xuXG5sZXQgc3RhdGljSW5pdElkID0gMFxuXG5mdW5jdGlvbiBvYmplY3RGcm9tRW50cmllcyhlbnRyeU1hcDogTWFwPGFueSwgYW55Pik6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICBjb25zdCBmcm9tRW50cmllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGVudHJ5TWFwKSB7XG4gICAgZnJvbUVudHJpZXNba2V5XSA9IHZhbHVlXG4gIH1cbiAgcmV0dXJuIGZyb21FbnRyaWVzXG59XG5cbi8qKlxuICogQSB0YWJsZSBjb21wb25lbnQgd2l0aCBidWlsdC1pbiBzb3J0aW5nIGFuZCBzZWxlY3RpbmcgZnVuY3Rpb25hbGl0eS5cbiAqIEJ5IGRlZmF1bHQsIHRhYmxlIGNlbGxzIChpLmUuIGA8dGQ+YCBlbGVtZW50cykgYW5kIHRhYmxlIGhlYWRlcnMgKGkuZS4gYDx0aD5gIGVsZW1lbnRzKSBhcmUgcG9wdWxhdGVkIHdpdGggdGV4dCBvbmx5IHZhbHVlcy5cbiAqXG4gKiBUbyBjdXN0b21pemUgdGhlIGNvbnRlbnRzIG9mIGVpdGhlciB0aGUgYDx0ZD5gIG9yIGA8dGg+YCBlbGVtZW50cyAobGlrZSBhZGRpbmcgY29sb3IsIGljb25zLCBmb3JtIGZpZWxkcywgZXh0cmEgcGFkZGluZyBldGMuKSwgcHJvdmlkZVxuICogdGhlIGN1c3RvbWl6ZWQgY29udGVudCB3aXRoaW4gYSBgPG5nLXRlbXBsYXRlPmAtdGFnLCBhbmQgcGxhY2UgdGhlIG5nLXRlbXBsYXRlIGluIHRoZSBodG1sIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmRpbmcgdGFnIG9mXG4gKiB0aGUgYDxuZ2d2LXRhYmxlPmAuIEFkZCBhIGB0YWJsZUNvbHVtbmAtYXR0cmlidXRlIHRvIHRoZSBgPG5nLXRlbXBsYXRlPmAtZWxlbWVudCwgYW5kIHNldCB0aGUgdmFsdWUgdG8gdGhlIHNwZWNpZmljIGNvbHVtbiBwcm9wZXJ0eS5cbiAqIFNldCBgdGFibGVDb2x1bW5UYXJnZXRgIHRvIGVpdGhlciBgdGhgLCBgdGRgIG9yIGBib3RoYCAoZGVmYXVsdCkgZGVwZW5kaW5nIG9uIHRhcmdldCBlbGVtZW50IHR5cGUuXG4gKiBUaGUgZW50aXJlIHJvdyBmcm9tIHRoZSBgQElucHV0KCkgdGFibGVEYXRhYCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgY29udGV4dCBgJGltcGxpY2l0YCB2YXJpYWJsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogPCEtLSBmb3IgdGFibGUgY2VsbHMgaS5lLiB0ZC1lbGVtZW50cyAtLT5cbiAqIDxuZy10ZW1wbGF0ZSB0YWJsZUNvbHVtbj1cInN0YXR1c1wiIHRhYmxlQ29sdW1uVGFyZ2V0PVwidGRcIiBsZXQtbXlEYXRhVmFyPVwiJGltcGxpY2l0XCIgbGV0LXN0YXR1cz1cIiRpbXBsaWNpdC5zdGF0dXNcIj5cbiAqICA8IS0tIG15IGN1c3RvbSBzdGF0dXMgZWxlbWVudCAtLT5cbiAqIDwvbmctdGVtcGxhdGU+XG4gKlxuICogQGV4YW1wbGVcbiAqIDwhLS0gZm9yIHRhYmxlIGhlYWRlcnMgaS5lLiB0aC1lbGVtZW50cyAtLT5cbiAqIDxuZy10ZW1wbGF0ZSB0YWJsZUNvbHVtbj1cInN0YXR1c1wiIHRhYmxlQ29sdW1uVGFyZ2V0PVwidGhcIiBsZXQtbXlEYXRhVmFyPVwiJGltcGxpY2l0XCIgbGV0LXN0YXR1cz1cIiRpbXBsaWNpdC5zdGF0dXNcIj5cbiAqICA8IS0tIG15IGN1c3RvbSBzdGF0dXMgZWxlbWVudCAtLT5cbiAqIDwvbmctdGVtcGxhdGU+XG4gKlxuICogSXQgaXMgcG9zc2libGUgdG8gYWRkIGN1c3RvbSByb3dzIHRoYXQgYXJlIGFwcGVuZGVkIGJlbG93IGRhdGEgcm93LiBVc2UgYDxuZy10ZW1wbGF0ZT5gLXRhZyBhbmQgcGxhY2UgdGhlIG5nLXRlbXBsYXRlIGluIHRoZSBodG1sIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmRpbmcgdGFnIG9mXG4gKiB0aGUgYDxuZ2d2LXRhYmxlPmAuIEFkZCBhIGB0YWJsZUFwcGVuZGFibGVSb3dzYC1hdHRyaWJ1dGUgdG8gdGhlIGA8bmctdGVtcGxhdGU+YC1lbGVtZW50LiBBbnkgYHRyYCBlbGVtZW50cyB0aGF0IGV4aXN0IHdpdGhpbiBgPG5nLXRlbXBsYXRlIHRhYmxlQXBwZW5kYWJsZVJvd3M+YCBhbmQgYDwvbmctdGVtcGxhdGU+YCB0YWdzIHdpbGwgYmUgcHV0IGJlbG93IGRhdGEgcm93J3MgYHRyYCBlbGVtZW50IGluIHRoZSB0YWJsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogPCEtLSBjdXN0b20gYXBwZW5kZWQgcm93cyAtLT5cbiAqIDxuZy10ZW1wbGF0ZSB0YWJsZUFwcGVuZGFibGVSb3dzIGxldC1teURhdGFWYXI9XCIkaW1wbGljaXRcIiBsZXQtc3RhdHVzPVwiJGltcGxpY2l0LnN0YXR1c1wiPlxuICogIDx0cj5cbiAqICAgPCEtLSBmaXJzdCByb3cncyBjb2x1bW5zIC0tPlxuICogIDwvdHI+XG4gKiAgPCEtLSBtb3JlIHJvd3MgaWYgbmVlZGVkIC0tPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiBJZiBjdXN0b20gc3R5bGluZyBpcyBuZWVkZWQgZm9yIGRhdGEgcm93IHRoYXQgaGFzIGFwcGVuZGVkIHJvd3MsIHlvdSBjYW4gdXNlIGRhdGEgYXR0cmlidXRlIGBkYXRhLWhhc3Jvd3NwYW5gIHRvIGRpc3Rpbmd1aXNoIGl0IGZyb20gZGF0YSByb3cgd2l0aG91dCBhcHBlbmRlZCByb3dzLlxuICogWW91IGNhbiBwYXNzIHlvdXIgb3duIGN1c3RvbSBtZXRob2Qgd2l0aCBjb25kaXRpb25hbCBsb2dpYyB0byBkZWZpbmUgd2hhdCB2YWx1ZSB3aWxsIGJlIHBhc3NlZCB0byBkYXRhLWhhc3Jvd3NwYW4uXG4gKiBJbiBhZGRpdGlvbiwgaGFzUm93U3BhbiBmdW5jdGlvbiBhY2NlcHRzIGl0ZW0gZnJvbSBgQElucHV0KCkgdGFibGVEYXRhYCBhcyBhcmd1bWVudCB3aGljaCBpcyBvZiB0aGUgc2FtZSB0eXBlIGFzIHZhbHVlIHBhc3NlZCB0byBjb250ZXh0IGAkaW1wbGljaXRgIHZhcmlhYmxlLlxuICogSU1QT1JUQU5UOiB1c2UgYXJyb3cgZnVuY3Rpb24gc3R5bGUgZm9yIGRlZmluaW5nIGZ1bmN0aW9uIGluc2lkZSBjb21wb25lbnQsIGkuZS4gYGhhc1Jvd1NwYW4gPSAodmFsdWUpID0+IG91dHB1dDtgLiBJZiByZWd1bGFyIGZ1bmN0aW9uIHdpbGwgYmUgZGVmaW5lZCwgaS5lLiBgaGFzUm93U3Bhbih2YWx1ZSkgeyByZXR1cm4gb3V0cHV0OyB9YCwgYmluZGluZyB3aWxsIG5vdCB3b3JrLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8IS0tIGluc2lkZSBjb21wb25lbnRcbiAqIGNsYXNzIEN1c3RvbUNvbXBvbmVudCB7XG4gKiAgY3VzdG9tSGFzUm93U3BhbkZ1bmN0aW9uID0gKGl0ZW06IEN1c3RvbURhdGFUeXBlKSA9PiBpdGVtLmFwcGVuZGVkUm93c0RhdGEubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcbiAqIH1cbiAqIC0tPlxuICogPCEtLSBpbnNpZGUgc3R5bGVzaGVldHNcbiAqIFtkYXRhLWhhc3Jvd3NwYW49XCJ0cnVlXCJdIHtcbiAqICBjb2xvcjogYmx1ZTtcbiAqIH1cbiAqIC5hcHBlbmRlZC1yb3cge1xuICogIGNvbG9yOiBibHVlO1xuICogfVxuICogLS0+XG4gKiA8bmdndi10YWJsZSBbaGFzUm93U3Bhbl09XCJjdXN0b21IYXNSb3dTcGFuRnVuY3Rpb25cIj5cbiAqICA8IS0tIGN1c3RvbSBhcHBlbmRlZCByb3dzIC0tPlxuICogIDxuZy10ZW1wbGF0ZSB0YWJsZUFwcGVuZGFibGVSb3dzIGxldC1hcHBlbmRlZFJvd3NEYXRhPVwiJGltcGxpY2l0LmFwcGVuZGVkUm93c0RhdGFcIj5cbiAqICAgPHRyICpuZ0Zvcj1cImxldCBhcHBlbmRlZFJvd0l0ZW0gb2YgYXBwZW5kZWRSb3dzRGF0YVwiIGNsYXNzPVwiYXBwZW5kZWQtcm93XCI+XG4gKiAgICA8dGQ+e3sgYXBwZW5kZWRSb3dJdGVtIH19PC90ZD5cbiAqICAgIDwhLS0gb3RoZXIgcm93J3MgY29sdW1ucyAtLT5cbiAqICAgPC90cj5cbiAqICA8L25nLXRlbXBsYXRlPlxuICogPC9uZ2d2LXRhYmxlPlxuICpcbiAqIEluIGFkZGl0aW9uLCBpdCBpcyBwb3NzaWJsZSB0byBhZGQgZm9vdGVyIGZvciB0aGUgdGFibGUuIFNpbWlsYXJseSB0byBhZGRpbmcgY3VzdG9tIGNvbHVtbnMsIHVzZSBgPG5nLXRlbXBsYXRlPmAtdGFnIGFuZCBwbGFjZSB0aGUgbmctdGVtcGxhdGUgaW4gdGhlIGh0bWwgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZGluZyB0YWcgb2ZcbiAqIHRoZSBgPG5nZ3YtdGFibGU+YC4gQWRkIGEgYHRhYmxlRm9vdGVyYC1hdHRyaWJ1dGUgdG8gdGhlIGA8bmctdGVtcGxhdGU+YC1lbGVtZW50LiBBbnkgZWxlbWVudHMgdGhhdCBleGlzdCB3aXRoaW4gYDxuZy10ZW1wbGF0ZSB0YWJsZUZvb3Rlcj5gIGFuZCBgPC9uZy10ZW1wbGF0ZT5gIHRhZ3Mgd2lsbCBiZSBwdXQgdG8gdGZvb3QgZWxlbWVudCBpbnNpZGUgdGhlIHRhYmxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8IS0tIGZvciB0YWJsZSBmb290ZXIgaS5lLiB0Zm9vdC1lbGVtZW50IC0tPlxuICogPG5nLXRlbXBsYXRlIHRhYmxlRm9vdGVyPlxuICogIDx0cj5cbiAqICAgPCEtLSBmaXJzdCByb3cncyBjb2x1bW5zIC0tPlxuICogIDwvdHI+XG4gKiAgPCEtLSBtb3JlIHJvd3MgaWYgbmVlZGVkIC0tPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZ3YtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudDxUIGV4dGVuZHMgVGFibGVSb3c+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ3VzdG9tIHRlbXBsYXRlcyBkZWZpbmVkIGluIHRoZSBodG1sLlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZVRlbXBsYXRlRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGN1c3RvbVRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxUYWJsZVRlbXBsYXRlRGlyZWN0aXZlPGtleW9mIFQ+PlxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ3VzdG9tIGFwcGVuZGVkIHJvd3MgdGVtcGxhdGUgZGVmaW5lZCBpbiB0aGUgaHRtbC5cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoVGFibGVBcHBlbmRhYmxlUm93c1RlbXBsYXRlRGlyZWN0aXZlKVxuICBhcHBlbmRlZFJvd3NUZW1wbGF0ZSE6IFRhYmxlQXBwZW5kYWJsZVJvd3NUZW1wbGF0ZURpcmVjdGl2ZVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ3VzdG9tIGZvb3RlciB0ZW1wbGF0ZSBkZWZpbmVkIGluIHRoZSBodG1sLlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChUYWJsZUZvb3RlclRlbXBsYXRlRGlyZWN0aXZlKVxuICBjdXN0b21Gb290ZXJUZW1wbGF0ZSE6IFRhYmxlRm9vdGVyVGVtcGxhdGVEaXJlY3RpdmVcblxuICAvKiogRW1pdHMgdGhlIHRhYmxlIHJvdyB0aGF0IHdhcyBjbGlja2VkLiBXb3JrcyBvbiBhbGwgY29sdW1ucyBpZiBub3QgcHJldmVudERlZmF1bHRFbWl0IGlzIHNldCBmb3IgdGhhdCBjb2x1bW4uICovXG4gIEBPdXRwdXQoKSBuZ3ZSb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VCB8IGFueT4oKVxuXG4gIC8qKlxuICAgKiBFbWl0cyBjdXJyZW50bHkgc2VsZWN0ZWQgYW5kIGRlc2VsZWN0ZWQgaXRlbXMgaW4gdGhlIHRhYmxlIGFzIGtleS12YWx1ZSBwYWlycy5cbiAgICogVXNlcyBlYWNoIGl0ZW1gcyBpdGVtSWQgYXMga2V5LCBhbmQgYSBib29sZWFuIHZhbHVlIHRvIGRlc2NyaWJlIHNlbGVjdGVkIHN0YXR1cy5cbiAgICovXG4gIEBPdXRwdXQoKSBuZ3ZSb3dTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpXG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHRvIHNpZ25hbCB0aGF0IHRoZSB0YWJsZSBzaG91bGQgYmUgcmVvcmRlcmVkLlxuICAgKi9cbiAgQE91dHB1dCgpIG5ndk9yZGVyQnkgPSBuZXcgRXZlbnRFbWl0dGVyPE9yZGVyQnk8VD4+KClcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgaXRlbXMgZGVzY3JpYmluZyBob3cgdGhlIHRhYmxlIGhlYWRlciBzaG91bGQgYmUgcmVuZGVyZWQsXG4gICAqIHRvZ2V0aGVyIHdpdGggaW5zdHJ1Y3Rpb25zIGZvciBob3cgZWFjaCByb3cgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiB0aGF0IGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpIHRhYmxlQ29sdW1ucyE6IFRhYmxlQ29sdW1uPFQ+W11cblxuICAvKiogRGF0YSBhcnJheSB0byBkaXNwbGF5IGRhdGEgaW4gdGhlIHRhYmxlLiBFYWNoIGl0ZW0gPFQ+IGluIHRoZSBhcnJheSByZXByZXNlbnRzIGEgcm93IGluIHRoZSB0YWJsZS4gKi9cbiAgQElucHV0KCkgdGFibGVEYXRhITogVFtdXG5cbiAgLyoqXG4gICAqIFByb3BlcnR5IG5hbWUgdXNlZCB0byB1bmlxdWVseSBkZXNjcmliZSBlYWNoIGl0ZW0gKGkuZS4gcm93KSBpbiB0aGUgZGF0YSB0YWJsZS5cbiAgICogRGVmYXVsdHMgdG8gXFwnaWRcXCcuXG4gICAqIElzIHJlcXVpcmVkIGlmIHNlbGVjdGFibGUgaXMgdHJ1ZS5cbiAgICovXG4gIEBJbnB1dCgpIHJvd0lkID0gJ2lkJ1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbidzIHJldHVybiB2YWx1ZSBpcyB1c2VkIGZvciBkYXRhIGF0dHJpYnV0ZSBcXCdkYXRhLWhhc3Jvd3NwYW5cXCcuXG4gICAqIElmIGN1c3RvbSBoYXNSb3dTcGFuIGZ1bmN0aW9uIGlzIG5vdCBwYXNzZWQgdG8gdGhlIHRhYmxlLFxuICAgKiB0aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB1bmRlZmluZWQgdmFsdWUgYnkgZGVmYXVsdCB3aGljaCByZXN1bHRzIGluIFxcJ2RhdGEtaGFzcm93c3BhblxcJyBhdHRyaWJ1dGUgYmVpbmcgb21pdHRlZCBpbiBodG1sXG4gICAqIChhbmd1bGFyIG9taXRzIGF0dHJpYnV0ZXMgdGhhdCBjb250YWluIG51bGwgb3IgdW5kZWZpbmVkIHZhbHVlKS5cbiAgICogSU1QT1JUQU5UOiB1c2UgYXJyb3cgZnVuY3Rpb24gc3R5bGUgZm9yIGRlZmluaW5nIGZ1bmN0aW9uIGluc2lkZSBjb21wb25lbnQsIGkuZS4gYGhhc1Jvd1NwYW4gPSAodmFsdWUpID0+IG91dHB1dDtgLiBJZiByZWd1bGFyIGZ1bmN0aW9uIHdpbGwgYmUgZGVmaW5lZCwgaS5lLiBgaGFzUm93U3Bhbih2YWx1ZSkgeyByZXR1cm4gb3V0cHV0OyB9YCwgYmluZGluZyB3aWxsIG5vdCB3b3JrLlxuICAgKi9cbiAgQElucHV0KCkgaGFzUm93U3BhbjogKGl0ZW06IFQpID0+IGFueSA9IChfKSA9PiB1bmRlZmluZWRcblxuICAvKipcbiAgICogVXNlZCB0byBlbmFibGUvZGlzYWJsZSB0aGUgbGVmdC1zaWRlIGNoZWNrYm94IGNvbHVtbi5cbiAgICogRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSB0cnVlXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZW5hYmxlL2Rpc2FibGUgZXhwYW5kYWJsZSByb3dzLlxuICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICovXG4gIEBJbnB1dCgpIGV4cGFuZGFibGUgPSBmYWxzZVxuXG4gIC8qKlxuICAqIFByb3BlcnR5IG5hbWUgdXNlZCB0byBkZXNjcmliZSB0aGUgc3ViSXRlbXMgaW4gdGhlIGRhdGEgdGFibGUuXG4gICovXG4gIEBJbnB1dCgpIHN1Ykl0ZW1zUHJvcCA9ICdzdWJJdGVtcydcblxuICAvKipcbiAgICogQWxsb3cgbmdndi10YWJsZSB0byBhdHRlbXB0IHNvcnRpbmcgdGhlIGRhdGEgaW4gdGhlIHRhYmxlLiBOb3QgcmVjb21tZW5kZWQgaWYgb25seSBhIHN1YnNldCBpcyBsb2FkZWQgb3IgaWYgdGhlIGRhdGFzZXQgaXMgdmVyeSBsYXJnZS5cbiAgICogRGlzYWJsZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIEBJbnB1dCgpIGFsbG93TG9jYWxTb3J0ID0gZmFsc2VcblxuICAvKiogU3BlY2lhbCBwcm9wZXJ0eSB1c2VkIGZvciBzZWxlY3RpbmcgRE9NIGVsZW1lbnRzIGR1cmluZyBhdXRvbWF0ZWQgVUkgdGVzdGluZy4gKi9cbiAgQElucHV0KCkgdGhvb2sgPSAndGFibGUtc2VsZWN0LWFsbCdcblxuICAvKiogRnVuY3Rpb24gdG8gb3ZlcndyaXRlIGdlbmVyYXRlZCB0aG9vayBmb3IgZWFjaCByb3cuICovXG4gIEBJbnB1dCgpIHRyVGhvb2tGbj86IChpdGVtOiBUKSA9PiBzdHJpbmdcblxuICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIGNoZWNrYm94IGluIHRoZSB0YWJsZSBoZWFkZXIgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsQ2hlY2tib3hUaD86IHN0cmluZ1xuXG4gIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggaW4gdGhlIHRhYmxlIGhlYWRlciAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxDaGVja2JveFRyPzogc3RyaW5nXG5cbiAgLyoqIEFyaWEgbGFiZWxzIGZvciBzb3J0aW5nIGluIHRoZSB0YWJsZSBoZWFkZXIgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsc09yZGVyQnk/OiBhcmlhTGFiZWxzT3JkZXJCeVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogSW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmUgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGFkZGVkIGNvbnRlbnQgdGVtcGxhdGVzIHVzZWQgaW4gdGQgZWxlbWVudHMuXG4gICAqL1xuICBjdXN0b21Sb3dUZW1wbGF0ZXMgPSBuZXcgTWFwPGtleW9mIFQsIFRlbXBsYXRlUmVmPGFueT4+KClcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEludGVybmFsIGRhdGEgc3RydWN0dXJlIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhZGRlZCBjb250ZW50IHRlbXBsYXRlcyB1c2VkIGluIHRoIGVsZW1lbnRzLlxuICAgKi9cbiAgY3VzdG9tSGVhZGVyVGVtcGxhdGVzID0gbmV3IE1hcDxrZXlvZiBULCBUZW1wbGF0ZVJlZjxhbnk+PigpXG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgY3VzdG9tIGFwcGVuZGVkIHJvd3MgaS5lLiB0ciBlbGVtZW50cyAocm93cykuXG4gICAqL1xuICBhcHBlbmRlZFJvd3NUZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT5cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEludGVybmFsIGRhdGEgc3RydWN0dXJlIHVzZWQgdG8gaG9sZCB0Zm9vdCBlbGVtZW50IGNoaWxkcmVuIGkuZS4gdHIgZWxlbWVudHMgKHJvd3MpLlxuICAgKi9cbiAgY3VzdG9tRm9vdGVyVGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjxhbnk+XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbmNyZW1lbnRhbCBpZC5cbiAgICovXG4gIGluaXRJZCE6IG51bWJlclxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogRm9ybUdyb3VwIGNvbnRhaW5pbmcgYWxsIHJvdyBpZFxcJ3MgYXMgY29udHJvbHMsIGFuZCB3aGV0aGVyIHRoZXNlIGFyZSBzZWxlY3RlZCBvciBub3QgYXMgdmFsdWVzLlxuICAgKi9cbiAgcm93U2VsZWN0b3JzOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pXG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBNYXN0ZXIgc2VsZWN0b3IgZm9yIHNlbGVjdGluZyBvciBkZXNlbGVjdGluZyBhbGwgcm93IHNlbGVjdG9ycy5cbiAgICovXG4gIGdyb3VwU2VsZWN0b3I6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZmFsc2UpXG5cbiAgcHJpdmF0ZSBzZWxlY3RlZDogc3RyaW5nW10gPSBbXVxuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW11cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgLy8gVXBkYXRlIHNlbGVjdGFibGUgb3IgZXhwYW5kYWJsZSByb3dzIGlmIHRhYmxlIGRhdGEgb3Igc2V0dGluZ3MgY2hhbmdlXG4gICAgaWYgKFxuICAgICAgKHRoaXMuc2VsZWN0YWJsZSB8fCB0aGlzLmV4cGFuZGFibGUpICYmIGNoYW5nZXMudGFibGVEYXRhPy5jdXJyZW50VmFsdWUgfHxcbiAgICAgIChjaGFuZ2VzLnNlbGVjdGFibGU/LmN1cnJlbnRWYWx1ZSB8fCBjaGFuZ2VzLmV4cGFuZGFibGU/LmN1cnJlbnRWYWx1ZSkgJiYgdGhpcy50YWJsZURhdGFcbiAgICApIHtcbiAgICAgIGNvbnN0IHdhc0NoYW5nZWQgPSB0aGlzLnJlZ2lzdGVyU2VsZWN0YWJsZVJvd3MoXG4gICAgICAgIGNoYW5nZXMudGFibGVEYXRhLmN1cnJlbnRWYWx1ZSxcbiAgICAgIClcbiAgICAgIGlmICh3YXNDaGFuZ2VkICYmICF0aGlzLnN1YnMubGVuZ3RoKSB7XG4gICAgICAgIC8vIGZpcnN0IHRpbWUgdGhpcyBpcyBydW5cbiAgICAgICAgY29uc3QgZ3JvdXBTZWxlY3RvclN1YiA9IHRoaXMuZ3JvdXBWYWx1ZVN1YnNjcmlwdGlvblxuICAgICAgICBjb25zdCByb3dTZWxlY3RvclN1YiA9IHRoaXMucm93VmFsdWVTdWJzY3JpcHRpb25cbiAgICAgICAgdGhpcy5zdWJzLnB1c2goZ3JvdXBTZWxlY3RvclN1Yiwgcm93U2VsZWN0b3JTdWIpXG4gICAgICB9IGVsc2UgaWYgKHdhc0NoYW5nZWQpIHtcbiAgICAgICAgdGhpcy5yb3dTZWxlY3RvcnMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc29ydCBhbnkgaW5jb21pbmcgZGF0YVxuICAgIGlmIChcbiAgICAgIHRoaXMuYWxsb3dMb2NhbFNvcnQgJiZcbiAgICAgIChjaGFuZ2VzLnRhYmxlRGF0YT8uY3VycmVudFZhbHVlIHx8IGNoYW5nZXMudGFibGVDb2x1bW5zPy5jdXJyZW50VmFsdWUpXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmRlcmVkQnlDb2x1bW46IFRhYmxlQ29sdW1uPFQ+IHwgdW5kZWZpbmVkID1cbiAgICAgICAgdGhpcy50YWJsZUNvbHVtbnM/LmZpbmQoKGVsKSA9PiBlbC5vcmRlciAhPT0gdW5kZWZpbmVkKVxuICAgICAgaWYgKG9yZGVyZWRCeUNvbHVtbikgdGhpcy5zb3J0SXRlbXNCeShvcmRlcmVkQnlDb2x1bW4pXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0SWQgPSBzdGF0aWNJbml0SWQrK1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIC8vIGlmIGFueSBjdXN0b20gdGVtcGxhdGVzIHdlcmUgZGVmaW5lZCBpbiB0aGUgdGVtcGxhdGVcbiAgICBpZiAodGhpcy5jdXN0b21UZW1wbGF0ZXMubGVuZ3RoKSB7XG4gICAgICAvLyBmb3IgZWFjaCB0ZW1wbGF0ZSBmb3VuZFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXMubWFwKCh0YWJsZVRlbXBsYXRlKSA9PiB7XG4gICAgICAgIC8vIGlmIHRhcmdldCBpcyBlaXRoZXIgJ3RkJyBvciAnYm90aCdcbiAgICAgICAgaWYgKFxuICAgICAgICAgIFsndGQnLCAnYm90aCddLmluY2x1ZGVzKHRhYmxlVGVtcGxhdGUudGFibGVDb2x1bW5UYXJnZXQgYXMgc3RyaW5nKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBhZGQgdG8gY3VzdG9tIHJvdyB0ZW1wbGF0ZXNcbiAgICAgICAgICB0aGlzLmN1c3RvbVJvd1RlbXBsYXRlcy5zZXQoXG4gICAgICAgICAgICB0YWJsZVRlbXBsYXRlLnRhYmxlQ29sdW1uLFxuICAgICAgICAgICAgdGFibGVUZW1wbGF0ZS50ZW1wbGF0ZVJlZixcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgdGFyZ2V0IGlzIGVpdGhlciAndGgnIG9yICdib3RoJ1xuICAgICAgICBpZiAoXG4gICAgICAgICAgWyd0aCcsICdib3RoJ10uaW5jbHVkZXModGFibGVUZW1wbGF0ZS50YWJsZUNvbHVtblRhcmdldCBhcyBzdHJpbmcpXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIGFkZCB0byBjdXN0b20gaGVhZGVyIHRlbXBsYXRlc1xuICAgICAgICAgIHRoaXMuY3VzdG9tSGVhZGVyVGVtcGxhdGVzLnNldChcbiAgICAgICAgICAgIHRhYmxlVGVtcGxhdGUudGFibGVDb2x1bW4sXG4gICAgICAgICAgICB0YWJsZVRlbXBsYXRlLnRlbXBsYXRlUmVmLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBpZiBhcHBlbmRlZCByb3dzJyB0ZW1wbGF0ZSBpcyBkZWZpbmVkIGluIHRoZSB0ZW1wbGF0ZVxuICAgIGlmICh0aGlzLmFwcGVuZGVkUm93c1RlbXBsYXRlKSB7XG4gICAgICAvLyBzZXQgdGVtcGxhdGVSZWYgb2YgYXBwZW5kZWQgcm93cycgdGVtcGxhdGUgdG8gdmFyaWFibGVcbiAgICAgIHRoaXMuYXBwZW5kZWRSb3dzVGVtcGxhdGVSZWYgPSB0aGlzLmFwcGVuZGVkUm93c1RlbXBsYXRlLnRlbXBsYXRlUmVmXG4gICAgfVxuXG4gICAgLy8gaWYgY3VzdG9tIGZvb3RlciB0ZW1wbGF0ZSBpcyBkZWZpbmVkIGluIHRoZSB0ZW1wbGF0ZVxuICAgIGlmICh0aGlzLmN1c3RvbUZvb3RlclRlbXBsYXRlKSB7XG4gICAgICAvLyBzZXQgdGVtcGxhdGVSZWYgb2YgdGFibGUgZm9vdGVyIHRvIHZhcmlhYmxlXG4gICAgICB0aGlzLmN1c3RvbUZvb3RlclRlbXBsYXRlUmVmID0gdGhpcy5jdXN0b21Gb290ZXJUZW1wbGF0ZS50ZW1wbGF0ZVJlZlxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vicy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBSZXR1cm5zIGEgc3Vic2NyaXB0aW9uIHRvIHRoZSBtYXN0ZXIgc2VsZWN0b3IgY29udHJvbCB0aGF0IGVpdGhlciBzZWxlY3RzIG9yIGRlc2VsZWN0cyBhbGwgcm93IGNvbnRyb2xzLlxuICAgKi9cbiAgZ2V0IGdyb3VwVmFsdWVTdWJzY3JpcHRpb24oKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cFNlbGVjdG9yLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHZhbHVlOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdE1hcCA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXModGhpcy5yb3dTZWxlY3RvcnNWYWx1ZSkpXG4gICAgICAgIHNlbGVjdE1hcC5mb3JFYWNoKChfLCBrZXkpID0+IHNlbGVjdE1hcC5zZXQoa2V5LCB2YWx1ZSkpXG4gICAgICAgIGNvbnN0IHBhdGNoVmFsdWUgPSBvYmplY3RGcm9tRW50cmllcyhzZWxlY3RNYXApXG4gICAgICAgIHRoaXMucm93U2VsZWN0b3JzLnBhdGNoVmFsdWUocGF0Y2hWYWx1ZSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogUmV0dXJucyBhIHN1YnNjcmlwdGlvbiB0byBhbGwgaW5kaXZpZHVhbCByb3cgc2VsZWN0b3JzIGFuZCB1cGRhdGUgdGhlIG1hc3RlciBzZWxlY3RvciBpZiBhbGwgYXJlIHNlbGVjdGVkLlxuICAgKi9cbiAgZ2V0IHJvd1ZhbHVlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucm93U2VsZWN0b3JzLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgwKSwgLy8gdG8gbGltaXQgdGhlIG51bWJlciBvZiBldmVudHMgYW5kIHRvIHdhaXQgZm9yIGFsbCBzdWIgY29udHJvbHMgdG8gdXBkYXRlXG4gICAgICAgIG1hcCgodmFsOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSkgPT4ge1xuICAgICAgICAgIC8vIGdldCBhIGZpbHRlcmVkIGFycmF5IG9mIGtleXMgZm9yIGFsbCByb3dzIHRoYXQgYXJlIHNlbGVjdGVkXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBPYmplY3Qua2V5cyh2YWwpLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdmFsW2tleV0gPT09IHRydWUgJiYgdGhpcy5yb3dTZWxlY3RvcnMuZ2V0KGtleSk/LmVuYWJsZWRcbiAgICAgICAgICB9KVxuICAgICAgICAgIC8vIHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgb25seSB0aGUgZmlsdGVyZWQga2V5c1xuICAgICAgICAgIHJldHVybiBwaWNrKHNlbGVjdGVkLCB2YWwpXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICh2YWx1ZTogb2JqZWN0KSA9PiB7XG4gICAgICAgICAgLy8gdGhlIG51bWJlciBvZiBzZWxlY3RlZCBrZXlzIGNvbXBhcmVkIHRvIHRoZSB0b3RhbCBudW1iZXIgb2Yga2V5cyBhdmFpbGFibGVcbiAgICAgICAgICBjb25zdCBudW1iZXJPZlNlbGVjdGVkID0gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aFxuICAgICAgICAgIGNvbnN0IGFsbFNlbGVjdGVkOiBib29sZWFuID1cbiAgICAgICAgICAgIG51bWJlck9mU2VsZWN0ZWQgPiAwXG4gICAgICAgICAgICAgID8gbnVtYmVyT2ZTZWxlY3RlZCA9PT0gT2JqZWN0LmtleXModGhpcy5yb3dTZWxlY3RvcnNWYWx1ZSkubGVuZ3RoXG4gICAgICAgICAgICAgIDogZmFsc2VcbiAgICAgICAgICAvLyB1cGRhdGUgdGhlIG1hc3RlciBzZWxlY3RvciBjb250cm9sXG4gICAgICAgICAgdGhpcy5ncm91cFNlbGVjdG9yLnNldFZhbHVlKGFsbFNlbGVjdGVkLCB7IGVtaXRFdmVudDogZmFsc2UgfSlcbiAgICAgICAgICAvLyB1cGRhdGUgdGhlIGFycmF5IG9mIGN1cnJlbnRseSBzZWxlY3RlZCBpZCdzXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IE9iamVjdC5rZXlzKHZhbHVlKVxuICAgICAgICAgIC8vIGFuZCBlbWl0IHRoZSB1cGRhdGVkIHZhbHVlXG4gICAgICAgICAgdGhpcy5uZ3ZSb3dTZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkKVxuICAgICAgICB9LFxuICAgICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogUmVnaXN0ZXJzIG9yIGRpc2FibGVzIHJvdyBjb250cm9scyBmb3IgbmV3IG9yIHJlbW92ZWQgcm93cy5cbiAgICovXG4gIHJlZ2lzdGVyU2VsZWN0YWJsZVJvd3ModGFibGVEYXRhOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGFibGVEYXRhKSByZXR1cm4gZmFsc2VcbiAgICAvLyBBcnJheSBjb250YWluaW5nIG9ubHkgdGhlIGlkJ3MgZm9yIGVhY2ggcm93XG4gICAgY29uc3QgZGF0YVJvd0lkczogc3RyaW5nW10gPSB0YWJsZURhdGEubWFwKChkYXRhOiBhbnkpID0+IGRhdGFbdGhpcy5yb3dJZF0pXG5cbiAgICAvLyBBcnJheSBjb250YWluaW5nIHRoZSBpZCdzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIGNvbnRyb2xzXG4gICAgY29uc3QgY3VycmVudElkczogc3RyaW5nW10gPSBPYmplY3Qua2V5cyh0aGlzLnJvd1NlbGVjdG9yc1ZhbHVlKVxuXG4gICAgLy8gQXJyYXkgY29udGFpbmluZyBhbGwgaWRzIHRoYXQgbGFja3MgYSBjb3JyZXNwb25kaW5nIGNvbnRyb2wgKGkuZS4gbmV3IHJvd3MpXG4gICAgY29uc3QgbmV3SWRzOiBzdHJpbmdbXSA9IGRhdGFSb3dJZHMuZmlsdGVyKFxuICAgICAgKGlkKSA9PiBjdXJyZW50SWRzLmluZGV4T2YoaWQpID09PSAtMSxcbiAgICApXG5cbiAgICAvLyBBcnJheSBjb250YWluaW5nIGFsbCBpZHMgdGhhdCBoYXMgYSBjb250cm9sIGJ1dCBpcyBubyBsb25nZXIgaW4gdGhlIGRhdGEgc2V0IChpLmUuIHJlbW92ZWQgcm93cylcbiAgICBjb25zdCByZW1vdmVkSWRzOiBzdHJpbmdbXSA9IGN1cnJlbnRJZHMuZmlsdGVyKFxuICAgICAgKGlkKSA9PiBkYXRhUm93SWRzLmluZGV4T2YoaWQpID09PSAtMSxcbiAgICApXG5cbiAgICAvLyBSZWdpc3RlciBuZXcgY29udHJvbHMgZm9yIGFkZGVkIHJvd3NcbiAgICBpZiAobmV3SWRzLmxlbmd0aCkge1xuICAgICAgbmV3SWRzLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLnJvd1NlbGVjdG9ycy5yZWdpc3RlckNvbnRyb2woXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChmYWxzZSksXG4gICAgICAgIClcbiAgICAgICAgaWYgKGN0cmwuZGlzYWJsZWQpIGN0cmwuZW5hYmxlKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gU2V0IGFscmVhZHkgcmVnaXN0ZXJlZCBjb250cm9scyB0byBkaXNhYmxlZCBmb3IgcmVtb3ZlZCByb3dzXG4gICAgaWYgKHJlbW92ZWRJZHMubGVuZ3RoKVxuICAgICAgcmVtb3ZlZElkcy5mb3JFYWNoKChpZCkgPT4gdGhpcy5yb3dTZWxlY3RvcnMuZ2V0KGlkKT8uZGlzYWJsZSgpKVxuXG4gICAgcmV0dXJuIG5ld0lkcy5sZW5ndGggPiAwIHx8IHJlbW92ZWRJZHMubGVuZ3RoID4gMFxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBSZXR1cm5zIGFsbCBlbmFibGVkIHZhbHVlcyB1bmxlc3MgYWxsIHJvd3MgYXJlIGRpc2FibGVkLlxuICAgKi9cbiAgZ2V0IHJvd1NlbGVjdG9yc1ZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucm93U2VsZWN0b3JzLmVuYWJsZWQgPyB0aGlzLnJvd1NlbGVjdG9ycy52YWx1ZSA6IHt9XG4gIH1cblxuICB0b2dnbGVTb3J0T3JkZXJXaXRoU3BhY2UoZXZlbnQ6IGFueSwgY29sdW1uOiBUYWJsZUNvbHVtbjxUPikge1xuICAgIGlmIChjb2x1bW4uc29ydGFibGUpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIHRoaXMudG9nZ2xlU29ydE9yZGVyKGNvbHVtbilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFN3aXRjaGVzIHNvcnRpbmcgb3JkZXIgYmV0d2VlbiBhc2NlbmRpbmcgYW5kIGRlc2NlbmRpbmcgb3JkZXIgZm9yIGEgY29sdW1uLlxuICAgKiBAcGFyYW0gY29sdW1uIHRoZSBjb2x1bW4gdG8gc29ydCByb3dzIGFmdGVyLlxuICAgKi9cbiAgdG9nZ2xlU29ydE9yZGVyKGNvbHVtbjogVGFibGVDb2x1bW48VD4pIHtcbiAgICAvLyBjaGVjayBpZiB0aGUgdGFibGUgaXMgYWxyZWFkeSBzb3J0ZWQgYnkgYW5vdGhlciBjb2x1bW4gdGhhbiB0aGUgb25lIHByb3ZpZGVkXG4gICAgY29uc3QgY3VycmVudGx5T3JkZXJlZEJ5ID0gdGhpcy50YWJsZUNvbHVtbnM/LmZpbmQoXG4gICAgICAoZWwpID0+IGVsICE9PSBjb2x1bW4gJiYgZWwub3JkZXIgIT09IHVuZGVmaW5lZCxcbiAgICApXG4gICAgaWYgKGN1cnJlbnRseU9yZGVyZWRCeSkgZGVsZXRlIGN1cnJlbnRseU9yZGVyZWRCeS5vcmRlclxuICAgIGNvbHVtbi5vcmRlciA9IGNvbHVtbi5vcmRlciA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYydcbiAgICB0aGlzLnNvcnRJdGVtc0J5KGNvbHVtbilcbiAgfVxuXG4gIC8qKiBJZiBzb3J0YWJsZSwgcmVvcmRlcnMgdGhlIHRhYmxlIGRhdGEgdXNpbmcgdGhlIHNwZWNpZmllZCBjb2x1bW4gYXMgb3JkZXJpbmcgYXR0cmlidXRlLiAqL1xuICBzb3J0SXRlbXNCeShjb2x1bW46IFRhYmxlQ29sdW1uPFQ+KTogVGFibGVSb3dbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFjb2x1bW4uc29ydGFibGUpIHJldHVyblxuICAgIC8vIGVtaXQgcmUtb3JkZXIgZXZlbnRcbiAgICB0aGlzLm5ndk9yZGVyQnkuZW1pdCh7IHByb3BlcnR5OiBjb2x1bW4ucHJvcGVydHksIG9yZGVyOiBjb2x1bW4ub3JkZXIgfSlcbiAgICAvLyBpZiBsb2NhbCBzb3J0IGlzIGFsbG93ZWQsIHJlb3JkZXIgZGF0YVxuICAgIGlmICghdGhpcy5hbGxvd0xvY2FsU29ydCB8fCAhdGhpcy50YWJsZURhdGEpIHJldHVyblxuICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YS5zb3J0KFxuICAgICAgY29sdW1uLm9yZGVyID09PSAnZGVzYydcbiAgICAgICAgPyBvcmRlckJ5RGVzY2VuZGluZyhjb2x1bW4ucHJvcGVydHkpXG4gICAgICAgIDogb3JkZXJCeUFzY2VuZGluZyhjb2x1bW4ucHJvcGVydHkpLFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogRW1pdHMgcm93IGRhdGEgZm9yIHdoYXQgcm93IHdhcyBjbGlja2VkIGlmIGRlZmF1bHRFbWl0IGlzIGFsbG93ZWQuXG4gICAqL1xuICBwcm9wYWdhdGVJdGVtQ2xpY2soaXRlbTogYW55LCBwcmV2ZW50RGVmYXVsdEVtaXQ/OiBib29sZWFuKSB7XG4gICAgaWYgKCFwcmV2ZW50RGVmYXVsdEVtaXQpIHRoaXMubmd2Um93Q2xpY2suZW1pdChpdGVtKTtcblxuICAgIGlmICh0aGlzLmV4cGFuZGFibGUgJiYgaXRlbVt0aGlzLnN1Ykl0ZW1zUHJvcF0pIHtcbiAgICAgIHRoaXMudG9nZ2xlUm93VG9FeHBhbmQoaXRlbVt0aGlzLnJvd0lkXSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXJpYUxhYmVsKGNvbHVtbjogVGFibGVDb2x1bW48VD4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNvcnRPcmRlciA9XG4gICAgICBjb2x1bW4ub3JkZXIgPT09ICdhc2MnXG4gICAgICAgID8gdGhpcy5hcmlhTGFiZWxzT3JkZXJCeT8uZGVzY1xuICAgICAgICA6IHRoaXMuYXJpYUxhYmVsc09yZGVyQnk/LmFzY1xuICAgIGlmICghc29ydE9yZGVyKSByZXR1cm4gLy8gbm8gYXJpYSBsYWJlbHMgZGVmaW5lZFxuICAgIHJldHVybiBjb2x1bW4uYXJpYUxhYmVsU29ydGFibGU/LnJlcGxhY2UoJ3t7c29ydE9yZGVyfX0nLCBzb3J0T3JkZXIpXG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZVJvd1RvRXhwYW5kKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByb3cgPSB0aGlzLnJvd1NlbGVjdG9ycy5nZXQoaWQpXG4gICAgcm93Py5zZXRWYWx1ZSghcm93LnZhbHVlKVxuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI3NvcnRhYmxlVGhUZW1wbGF0ZSBsZXQtY29sdW1uPlxuICA8YnV0dG9uIGNsYXNzPVwic2ctdGFibGUtc29ydFwiICp0cmFuc2xvY289XCJsZXQgdFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGhCdXR0b25UZW1wbGF0ZT5cbiAgICAgIHt7IHQoY29sdW1uLmxhYmVsID8/ICcnKSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgY3VzdG9tSGVhZGVyVGVtcGxhdGVzLmdldChjb2x1bW4ucHJvcGVydHkpIGFzIHRoVGVtcGxhdGU7XG4gICAgICAgIGVsc2UgdGhCdXR0b25UZW1wbGF0ZVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aFRlbXBsYXRlIHx8IG51bGw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiXG4gICAgICA+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm90U29ydGFibGVUaFRlbXBsYXRlIGxldC1jb2x1bW4+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRoVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgICAgIHt7IHQoY29sdW1uLmxhYmVsID8/ICcnKSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIGN1c3RvbUhlYWRlclRlbXBsYXRlcy5nZXQoY29sdW1uLnByb3BlcnR5KSBhcyB0aFRlbXBsYXRlO1xuICAgICAgZWxzZSBkZWZhdWx0VGhUZW1wbGF0ZVxuICAgIFwiXG4gID5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGhUZW1wbGF0ZSB8fCBudWxsOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIlxuICAgID5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48dGFibGUgY2xhc3M9XCJnZHMtdGFibGVcIiAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgPCEtLSBUYWJsZSBoZWFkZXIgLS0+XG4gIDx0aGVhZD5cbiAgICA8dHI+XG4gICAgICA8IS0tIENoZWNrYm94IGNvbHVtbiBmb3IgaGVhZGVyIC0tPlxuICAgICAgPHRoICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwiY29sdW1uX19jaGVja1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2RzLWZpZWxkLWNoZWNrYm94LXdyYXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIFthdHRyLmZvcl09XCInY2JfaGVhZGVyX18nICsgaW5pdElkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGlkPVwidGhlYWQtY2hlY2tib3hcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZ3JvdXBTZWxlY3RvclwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsQ2hlY2tib3hUaFwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cIidjYl9oZWFkZXJfXycgKyBpbml0SWRcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cInRob29rXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aT48L2k+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RoPlxuXG4gICAgICA8IS0tIE90aGVyIGNvbHVtbnMgLS0+XG4gICAgICA8dGhcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbHVtbnNcIlxuICAgICAgICBbY29sdW1uVHlwZV09XCJjb2x1bW4udmFsdWVUeXBlXCJcbiAgICAgICAgW3NvcnRhYmxlXT1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgICAgIFtzb3J0T3JkZXJdPVwiY29sdW1uLm9yZGVyXCJcbiAgICAgICAgW3Rob29rXT1cIidjb2x1bW4taGVhZGVyLScgKyAhIWNvbHVtbi5wcm9wZXJ0eVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVTb3J0T3JkZXIoY29sdW1uKVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cInRvZ2dsZVNvcnRPcmRlcldpdGhTcGFjZSgkZXZlbnQsIGNvbHVtbilcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldEFyaWFMYWJlbChjb2x1bW4pXCJcbiAgICAgICAgW2F0dHIuYXJpYS1zb3J0XT1cImNvbHVtbi5vcmRlciArICdlbmRpbmcnXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5zb3J0YWJsZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIHNvcnRhYmxlVGhUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiwgY29sdW1uOiBjb2x1bW4gfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbHVtbi5zb3J0YWJsZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIG5vdFNvcnRhYmxlVGhUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiwgY29sdW1uOiBjb2x1bW4gfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90aD5cbiAgICA8L3RyPlxuICA8L3RoZWFkPlxuXG4gIDwhLS0gVGFibGUgYm9keSAtLT5cbiAgPHRib2R5IFtmb3JtR3JvdXBdPVwicm93U2VsZWN0b3JzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0YWJsZURhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDx0clxuICAgICAgICBbY2xhc3Mucm93X19leHBhbmRdPVwiZXhwYW5kYWJsZVwiXG4gICAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwiaXRlbSB8IHRyVGhvb2s6IGkgOiB0clRob29rRm5cIlxuICAgICAgICBbYXR0ci5kYXRhLWhhc3Jvd3NwYW5dPVwiaGFzUm93U3BhbihpdGVtKVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gQ2hlY2tib3ggY29sdW1uIGZvciByb3cgLS0+XG4gICAgICAgIDx0ZCAqbmdJZj1cInNlbGVjdGFibGVcIiBjbGFzcz1cImNvbHVtbl9fY2hlY2tcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2RzLWZpZWxkLWNoZWNrYm94LXdyYXBcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBbYXR0ci5mb3JdPVwiJ2NiX3Jvd19fJyArIGluaXRJZCArICdfJyArIGlcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICpuZ0lmPVwicm93U2VsZWN0b3JzLmdldChpdGVtW3Jvd0lkXSlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtW3Jvd0lkXVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxDaGVja2JveFRyXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCInY2Jfcm93X18nICsgaW5pdElkICsgJ18nICsgaVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCIncm93LXNlbGVjdC0nICsgaVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxpPjwvaT5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG5cbiAgICAgICAgPCEtLSBPdGhlciBjb2x1bW5zIC0tPlxuICAgICAgICA8dGRcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRhYmxlQ29sdW1uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgW2NvbHVtblR5cGVdPVwiY29sdW1uLnZhbHVlVHlwZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cIml0ZW1bY29sdW1uLnByb3BlcnR5XVwiXG4gICAgICAgICAgKGNsaWNrKT1cInByb3BhZ2F0ZUl0ZW1DbGljayhpdGVtLCBjb2x1bW4ucHJldmVudERlZmF1bHRDbGlja0V2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGFibGUgJiYgaSA9PT0gMDsgZWxzZSBub25FeHBhbmRhYmxlVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZHMtaXRlbS1maWVsZC13cmFwXCI+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGV2cm9uLWZpZWxkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInJvd1NlbGVjdG9ycy5nZXQoaXRlbVtyb3dJZF0pPy52YWx1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uc3ViSXRlbXMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0yMCA5TDEyIDE3TDQgOVwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNlwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAge3sgaXRlbVtjb2x1bW4ucHJvcGVydHldIH19ICh7eyBpdGVtLnN1Ykl0ZW1zLmxlbmd0aCB9fSlcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub25FeHBhbmRhYmxlVGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tUm93VGVtcGxhdGVzLmdldChjb2x1bW4ucHJvcGVydHkpIGFzIHRkVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRkVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwidGRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZFRlbXBsYXRlPlxuICAgICAgICAgICAgICB7eyBpdGVtW2NvbHVtbi5wcm9wZXJ0eV0gfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG5cbiAgICAgIDwhLS0gRXhwYW5kZWQgU3ViIEl0ZW1zIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGFibGUgJiYgcm93U2VsZWN0b3JzLmdldChpdGVtW3Jvd0lkXSk/LnZhbHVlXCI+XG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc3ViSXRlbSBvZiBpdGVtW3N1Ykl0ZW1zUHJvcF1cIj5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb2x1bW5zXCJcbiAgICAgICAgICAgIGNsYXNzPVwid2ViLXZpZXdcIlxuICAgICAgICAgICAgW2NvbHVtblR5cGVdPVwiY29sdW1uLnZhbHVlVHlwZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwic3ViSXRlbVtjb2x1bW4ucHJvcGVydHldXCJcbiAgICAgICAgICAgIChjbGljayk9XCJwcm9wYWdhdGVJdGVtQ2xpY2soc3ViSXRlbSwgY29sdW1uLnByZXZlbnREZWZhdWx0Q2xpY2tFdmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21Sb3dUZW1wbGF0ZXMuZ2V0KGNvbHVtbi5wcm9wZXJ0eSkgYXMgdGRUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0VGRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc3ViSXRlbSB9XCI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRkVGVtcGxhdGU+XG4gICAgICAgICAgICAgIHt7IHN1Ykl0ZW1bY29sdW1uLnByb3BlcnR5XSB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICBjbGFzcz1cIm1vYmlsZS12aWV3XCJcbiAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwidGFibGVDb2x1bW5zLmxlbmd0aFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJvcGFnYXRlSXRlbUNsaWNrKHN1Ykl0ZW0pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGwgY2xhc3M9XCJtb2JpbGUtdmlldy1maWVsZC13cmFwXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb2x1bW4uaGlkZVByb3BlcnR5T25Nb2JpbGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtb2JpbGUtdmlldy1maWVsZFwiXG4gICAgICAgICAgICAgICAgICBbY29sdW1uVHlwZV09XCJjb2x1bW4udmFsdWVUeXBlXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzdWJJdGVtW2NvbHVtbi5wcm9wZXJ0eV1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkdCAqbmdJZj1cIiFjb2x1bW4uaGlkZUxhYmVsT25Nb2JpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyB0KGNvbHVtbi5sYWJlbCA/PyAnJykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2R0PlxuICAgICAgICAgICAgICAgICAgPGRkIFtuZ1N0eWxlXT1cImNvbHVtbi5ib2xkVGV4dE9uTW9iaWxlID8geyAnZm9udC13ZWlnaHQnOiAnNTAwJyB9IDogeydmb250LXdlaWdodCc6ICc0MDAnfVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tUm93VGVtcGxhdGVzLmdldChjb2x1bW4ucHJvcGVydHkpIGFzIHRkVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRkVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc3ViSXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRkVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAge3sgc3ViSXRlbVtjb2x1bW4ucHJvcGVydHldIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L2RkPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1jaGV2cm9uLWZpZWxkXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJyb3dTZWxlY3RvcnMuZ2V0KGl0ZW1bcm93SWRdKT8udmFsdWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICBkPVwiTTIwIDlMMTIgMTdMNCA5XCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjZcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEN1c3RvbSBhcHBlbmRlZCByb3dzIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcGVuZGVkUm93c1RlbXBsYXRlUmVmIGFzIHRyVGVtcGxhdGVcIj5cbiAgICAgICAgPCEtLSBDYW5ub3QgaW5mZXIgdHJUZW1wbGF0ZSBhcyBUZW1wbGF0ZVJlZiB0aGVyZWZvcmUgbnVsbCAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJUZW1wbGF0ZSB8fCBudWxsOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3Rib2R5PlxuXG4gIDwhLS0gVGFibGUgZm9vdGVyIC0tPlxuICA8dGZvb3QgKm5nSWY9XCJjdXN0b21Gb290ZXJUZW1wbGF0ZVJlZiBhcyB0clRlbXBsYXRlXCI+XG4gICAgPCEtLSBDYW5ub3QgaW5mZXIgdHJUZW1wbGF0ZSBhcyBUZW1wbGF0ZVJlZiB0aGVyZWZvcmUgbnVsbCAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJUZW1wbGF0ZSB8fCBudWxsXCI+IDwvbmctY29udGFpbmVyPlxuICA8L3Rmb290PlxuPC90YWJsZT5cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBTb3J0aW5nT3JkZXIgPSAnYXNjJyB8ICdkZXNjJ1xuZXhwb3J0IHR5cGUgQ29sdW1uVHlwZSA9ICdudW1lcmljJyB8ICd0ZXh0J1xuXG4vKiogR2VuZXJpYyB0eXBlIGZvciBUYWJsZVJvdyBkYXRhICovXG5leHBvcnQgdHlwZSBUYWJsZVJvdyA9IFJlY29yZDxzdHJpbmcsIGFueT5cblxuLyoqIE9wdGlvbnMgYXBwbHlpbmcgdG8gdGhlIHRhYmxlIGhlYWRlciAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZUhlYWRlck9wdGlvbnMge1xuICAvKipcbiAgICogRGVmaW5lZCB0aGUgdGV4dCBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlIGhlYWRlci5cbiAgICogQGV4YW1wbGUgPHRoPiB7e1RhYmxlQ29sdW1uLmxhYmVsfX0gPC90aD5cbiAgICovXG4gIGxhYmVsPzogc3RyaW5nXG5cbiAgLyoqIEFkanVzdHMgdGV4dC1hbGlnbm1lbnQuICovXG4gIHZhbHVlVHlwZT86IENvbHVtblR5cGVcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBkYXRhIGNhbiBiZSBvcmRlcmVkIHVzaW5nIHRoaXMgY29sdW1uLlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gZmFsc2UgKG9yIG9taXR0aW5nIGl0KSB3aWxsIGFsc28gcmVtb3ZlIHRoZSBjYXJldCBzb3J0aW5nIHN5bWJvbCBpbiBzcGVjaWZpZWQgY29sdW1uLlxuICAgKi9cbiAgc29ydGFibGU/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIERlZmluZWQgYXJpYSBsYWJlbCBmb3IgYSBzb3J0YWJsZSBjb2x1bW4gZm9yIHRoZSBzY3JlZW4gcmVhZGVyIHVzZXJzLlxuICAgKi9cbiAgYXJpYUxhYmVsU29ydGFibGU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBTb3J0aW5nT3JkZXIgPSAnYXNjJyB8ICdkZXNjJ1xuZXhwb3J0IHR5cGUgQ29sdW1uVHlwZSA9ICdudW1lcmljJyB8ICd0ZXh0J1xuXG4vKiogR2VuZXJpYyB0eXBlIGZvciBUYWJsZVJvdyBkYXRhICovXG5leHBvcnQgdHlwZSBUYWJsZVJvdyA9IFJlY29yZDxzdHJpbmcsIGFueT5cblxuLyoqIE9wdGlvbnMgYXBwbHlpbmcgdG8gdGhlIHRhYmxlIGhlYWRlciAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZUhlYWRlck9wdGlvbnMge1xuICAvKipcbiAgICogRGVmaW5lZCB0aGUgdGV4dCBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlIGhlYWRlci5cbiAgICogQGV4YW1wbGUgPHRoPiB7e1RhYmxlQ29sdW1uLmxhYmVsfX0gPC90aD5cbiAgICovXG4gIGxhYmVsPzogc3RyaW5nXG5cbiAgLyoqIEFkanVzdHMgdGV4dC1hbGlnbm1lbnQuICovXG4gIHZhbHVlVHlwZT86IENvbHVtblR5cGVcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBkYXRhIGNhbiBiZSBvcmRlcmVkIHVzaW5nIHRoaXMgY29sdW1uLlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gZmFsc2UgKG9yIG9taXR0aW5nIGl0KSB3aWxsIGFsc28gcmVtb3ZlIHRoZSBjYXJldCBzb3J0aW5nIHN5bWJvbCBpbiBzcGVjaWZpZWQgY29sdW1uLlxuICAgKi9cbiAgc29ydGFibGU/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIERlZmluZWQgYXJpYSBsYWJlbCBmb3IgYSBzb3J0YWJsZSBjb2x1bW4gZm9yIHRoZSBzY3JlZW4gcmVhZGVyIHVzZXJzLlxuICAgKi9cbiAgYXJpYUxhYmVsU29ydGFibGU/OiBzdHJpbmdcblxuICAvKipcbiAgICogRGVzY3JpYmVzIHRoZSBzb3J0aW5nIG9yZGVyIG9mIHRoZSBjb2x1bW4uXG4gICAqIEFzIHRoZSB0YWJsZSBjYW4gb25seSBiZSBzb3J0ZWQgYmFzZWQgb24gb25lIGNvbHVtbiBwcm9wZXJ0eSwgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCB1bmRlZmluZWQsXG4gICAqIGl0IHdpbGwgaW5zdHJ1Y3QgdGhlIHRhYmxlIHRvIHNvcnQgdGhlIGRhdGEgYmFzZWQgb24gdGhpcyBzcGVjaWZpYyBjb2x1bW4uXG4gICAqL1xuICBvcmRlcj86IFNvcnRpbmdPcmRlclxuXG4gIC8qKlxuICAgKiBEeW5hbWljYWxseSBoaWRlIG9yIHNob3cgdGhlIGxhYmVsIGFuZCBkYXRhIG9uIG1vYmlsZSB2aWV3LlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgb24gYSBzbWFsbCBzY3JlZW4gYW5kIHRoZSBkYXRhIGlzIG5vdCByZWxldmFudC5cbiAgICovXG4gIGhpZGVMYWJlbE9uTW9iaWxlPzogYm9vbGVhblxuICBoaWRlUHJvcGVydHlPbk1vYmlsZT86IGJvb2xlYW5cblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gbWFrZSB0aGUgdGV4dCBib2xkIG9uIG1vYmlsZSB2aWV3LlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBsYWJlbCBpcyBoaWRkZW4gb24gbW9iaWxlIHZpZXcgYnV0IHRoZSBkYXRhIGlzIHN0aWxsIGRpc3BsYXllZC5cbiAgICovXG4gIGJvbGRUZXh0T25Nb2JpbGU/OiBib29sZWFuXG59XG5cbi8qKiBPcHRpb25zIGFwcGx5aW5nIHRvIHRhYmxlIHJvd3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVSb3dPcHRpb25zIHtcbiAgLyoqIEFkanVzdHMgdGV4dC1hbGlnbm1lbnQuICovXG4gIHZhbHVlVHlwZT86IENvbHVtblR5cGVcblxuICAvKiogVXNlZCB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGNsaWNrIGV2ZW50IHRvIGJlIGVtaXR0ZWQgd2hlbiBjbGlja2luZyBpbiBjZWxscyBmb3Igc3BlY2lmaWVkIGNvbHVtbiAqL1xuICBwcmV2ZW50RGVmYXVsdENsaWNrRXZlbnQ/OiBib29sZWFuXG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHVzZWQgdG8gZGVzY3JpYmUgaG93IGEgdGFibGUgY29sdW1uIHNob3VsZCBiZSBkaXNwbGF5ZWQuIFRoaXMgaW5jbHVkZXMgdGhlIHRleHQgYW5kIGNsYXNzIHVzZWQgZm9yIHRoZSB0YWJsZSBoZWFkZXIsXG4gKiBhbmQgdGhlIGRhdGEgZm9yIGVhY2ggdGFibGUgcm93LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1uPFQgZXh0ZW5kcyBUYWJsZVJvdz5cbiAgZXh0ZW5kcyBUYWJsZUhlYWRlck9wdGlvbnMsXG4gICAgVGFibGVSb3dPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0eSBuYW1lIHVzZWQgdG8gaWRlbnRpZnkgd2hhdCB2YWx1ZSB0byBkaXNwbGF5IGluIGEgY2VsbCBmb3IgdGhhdCBjb2x1bW4uXG4gICAqIEBleGFtcGxlIDx0ciAqbmdGb3I9XCJsZXQgZGF0YSBpbiBkYXRhTGlzdFwiPiA8dGQ+e3sgZGF0YVtUYWJsZUNvbHVtbi5wcm9wZXJ0eV0gfX08L3RkPiA8L3RyPlxuICAgKi9cbiAgcHJvcGVydHk6IGtleW9mIFRcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZGVzY3JpYmluZyBldmVudCBlbWl0dGVkIG9uIHJlb3JkZXJpbmcgdGhlIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yZGVyQnk8VCBleHRlbmRzIFRhYmxlUm93PiB7XG4gIHByb3BlcnR5OiBrZXlvZiBUXG4gIG9yZGVyOiBTb3J0aW5nT3JkZXIgfCB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZGVzY3JpYmluZyB0aGUgYXJpYSBsYWJlbHMgZm9yIHNvcnRpbmcgaW4gdGhlIHRhYmxlLlxuICogQXJpYSBsYWJlbCBhdHRyaWJ1dGVzIGFyZSB1c2VkIGZvciBhIHNjcmVlbiByZWFkZXIgdG8gZGVzY3JpYmUgdGhlIHNvcnRpbmcgc3RhdGUgb2YgdGhlIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIGFyaWFMYWJlbHNPcmRlckJ5IHtcbiAgYXNjOiBzdHJpbmdcbiAgZGVzYzogc3RyaW5nXG59XG4iXX0=
|