igniteui-angular 17.0.0-beta.1 → 17.0.0
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/README.md +44 -0
- package/esm2022/lib/grids/filtering/excel-style/common.mjs +6 -1
- package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +2 -2
- package/esm2022/lib/grids/filtering/excel-style/excel-style-search.component.mjs +147 -6
- package/esm2022/lib/grids/pivot-grid/pivot-data-selector.component.mjs +2 -2
- package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +2 -2
- package/esm2022/lib/grids/pivot-grid/pivot-header-row.component.mjs +2 -2
- package/esm2022/lib/list/list-item.component.mjs +10 -4
- package/esm2022/lib/list/list.component.mjs +10 -4
- package/fesm2022/igniteui-angular.mjs +215 -58
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/core/styles/components/list/_list-component.scss +5 -0
- package/lib/core/styles/components/list/_list-theme.scss +10 -0
- package/lib/grids/filtering/excel-style/common.d.ts +8 -0
- package/lib/grids/filtering/excel-style/excel-style-search.component.d.ts +23 -2
- package/lib/list/list-item.component.d.ts +5 -3
- package/lib/list/list.component.d.ts +4 -2
- package/package.json +2 -2
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
|
@@ -500,7 +500,7 @@ export class IgxPivotDataSelectorComponent {
|
|
|
500
500
|
}
|
|
501
501
|
}
|
|
502
502
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: IgxPivotDataSelectorComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
503
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.1", type: IgxPivotDataSelectorComponent, isStandalone: true, selector: "igx-pivot-data-selector", inputs: { columnsExpanded: ["columnsExpanded", "columnsExpanded", booleanAttribute], rowsExpanded: ["rowsExpanded", "rowsExpanded", booleanAttribute], filtersExpanded: ["filtersExpanded", "filtersExpanded", booleanAttribute], valuesExpanded: ["valuesExpanded", "valuesExpanded", booleanAttribute], grid: "grid" }, outputs: { columnsExpandedChange: "columnsExpandedChange", rowsExpandedChange: "rowsExpandedChange", filtersExpandedChange: "filtersExpandedChange", valuesExpandedChange: "valuesExpandedChange" }, host: { properties: { "class.igx-pivot-data-selector": "this.cssClass" } }, ngImport: i0, template: "<div class=\"igx-pivot-data-selector__filter\">\n <igx-input-group type=\"box\" [displayDensity]=\"displayDensity\">\n <igx-icon igxPrefix>search</igx-icon>\n <input\n #input\n igxInput\n tabindex=\"0\"\n placeholder=\"Search\"\n autocomplete=\"off\"\n />\n </igx-input-group>\n <igx-list [displayDensity]=\"displayDensity\">\n <igx-list-item\n *ngFor=\"\n let item of dims\n | filterPivotItems: input.value:grid?.pipeTrigger\n \"\n [id]=\"item.memberName\"\n >\n <igx-checkbox\n [aria-labelledby]=\"item.memberName\"\n [disableRipple]=\"true\"\n [checked]=\"item.enabled\"\n (click)=\"toggleItem(item)\"\n ></igx-checkbox>\n <span>{{ item.memberName }}</span>\n </igx-list-item>\n <igx-list-item\n *ngFor=\"\n let item of values\n | filterPivotItems: input.value:grid?.pipeTrigger\n \"\n [id]=\"item.member\"\n >\n <igx-checkbox\n [aria-labelledby]=\"item.member\"\n [disableRipple]=\"true\"\n [checked]=\"item.enabled\"\n (click)=\"toggleItem(item)\"\n ></igx-checkbox>\n <span>{{ item.displayName || item.member }}</span>\n </igx-list-item>\n </igx-list>\n</div>\n\n<igx-accordion>\n <igx-expansion-panel\n *ngFor=\"let panel of _panels\"\n [animationSettings]=\"animationSettings\"\n [collapsed]=\"getPanelCollapsed(panel.type)\"\n (collapsedChange)=\"onCollapseChange($event, panel.type)\"\n >\n <igx-expansion-panel-header\n iconPosition=\"left\"\n [disabled]=\"false\"\n igxDrop\n (enter)=\"onPanelEntry($event, panel.name)\"\n (dropped)=\"onItemDropped($event, panel.type)\"\n >\n <igx-expansion-panel-title class=\"igx-pivot-data-selector__header\">\n <h6 class=\"igx-pivot-data-selector__header-title\">\n {{ grid?.resourceStrings[panel.i18n] }}\n </h6>\n <div class=\"igx-pivot-data-selector__header-extra\">\n <igx-icon>{{ panel.icon }}</igx-icon>\n <igx-chip>{{ this.grid ? this.grid[panel.dataKey].length : 0 }}</igx-chip>\n </div>\n </igx-expansion-panel-title>\n </igx-expansion-panel-header>\n <igx-expansion-panel-body\n igxDrop\n (enter)=\"onPanelEntry($event, panel.name)\"\n (dropped)=\"onItemDropped($event, panel.type)\"\n >\n <igx-list\n *ngIf=\"this.grid && this.grid[panel.dataKey].length > 0\"\n [displayDensity]=\"displayDensity\"\n >\n <igx-list-item\n igxDrop\n [igxDrag]=\"{ gridID: grid.id, selectorChannels: panel.dragChannels }\"\n [ghostTemplate]=\"itemGhost\"\n (ghostCreate)=\"ghostCreated($event, item[panel.itemKey])\"\n (over)=\"onItemDragOver($event)\"\n (leave)=\"onItemDragLeave($event)\"\n (dragMove)=\"onItemDragMove($event)\"\n (dragEnd)=\"onItemDragEnd($event)\"\n (dropped)=\"onItemDropped($event, panel.type)\"\n *ngFor=\"\n let item of this.grid[panel.dataKey];\n let index\n \"\n [id]=\"item[panel.itemKey]\"\n >\n <div class=\"igx-pivot-data-selector__item\">\n <div\n class=\"igx-pivot-data-selector__item-start\"\n (click)=\"onItemSort($event, item, panel.type)\"\n [class.igx-pivot-data-selector__action-sort]=\"\n panel.sortable\n \"\n >\n <div class=\"igx-pivot-data-selector__item-text\">\n <span *ngIf=\"panel.type === null\">{{\n item.aggregate.key\n }}</span>\n <span *ngIf=\"panel.type === null\">(</span>\n <span>{{ item[panel.displayKey] || item[panel.itemKey] }}</span>\n <span *ngIf=\"panel.type === null\">)</span>\n </div>\n <igx-icon\n class=\"igx-pivot-data-selector__action-sort\"\n *ngIf=\"panel.sortable && item.sortDirection\"\n >\n {{\n item.sortDirection < 2\n ? \"arrow_upward\"\n : \"arrow_downward\"\n }}\n </igx-icon>\n </div>\n <div class=\"igx-pivot-data-selector__item-end\">\n <igx-icon\n class=\"igx-pivot-data-selector__action-filter\"\n *ngIf=\"panel.type !== null\"\n (pointerdown)=\"\n onFilteringIconPointerDown($event)\n \"\n (click)=\"onFilteringIconClick($event, item)\"\n >filter_list\n </igx-icon>\n <igx-icon\n class=\"igx-pivot-data-selector__action-summary\"\n *ngIf=\"panel.type === null\"\n (click)=\"onSummaryClick($event, item, dropdown)\"\n [igxDropDownItemNavigation]=\"dropdown\"\n >\n functions\n </igx-icon>\n <igx-icon\n igxDragHandle\n class=\"igx-pivot-data-selector__action-move\"\n *ngIf=\"panel.dragChannels.length > 0\"\n >drag_handle</igx-icon\n >\n </div>\n </div>\n </igx-list-item>\n </igx-list>\n <div\n class=\"igx-pivot-data-selector__empty\"\n *ngIf=\"this.grid && this.grid[panel.dataKey].length === 0\"\n >\n {{ grid?.resourceStrings.igx_grid_pivot_selector_panel_empty }}\n </div>\n </igx-expansion-panel-body>\n </igx-expansion-panel>\n</igx-accordion>\n\n<igx-drop-down #dropdown (selectionChanging)=\"onAggregationChange($event)\">\n <igx-drop-down-item\n *ngFor=\"let item of aggregateList\"\n [selected]=\"isSelected(item)\"\n [value]=\"item\"\n >\n {{ item.label }}\n </igx-drop-down-item>\n</igx-drop-down>\n\n<ng-template #itemGhost>\n <div\n class=\"igx-pivot-data-selector__item-ghost\"\n [style.width.px]=\"ghostWidth\"\n [class.igx-pivot-data-selector__item-ghost--no-drop]=\"!dropAllowed\"\n >\n <div class=\"igx-pivot-data-selector__item-ghost-text\">\n <igx-icon>unfold_more</igx-icon>\n <span>{{ ghostText }}</span>\n </div>\n <igx-icon>drag_handle</igx-icon>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "component", type: IgxListComponent, selector: "igx-list", inputs: ["panEndTriggeringThreshold", "id", "allowLeftPanning", "allowRightPanning", "isLoading", "resourceStrings"], outputs: ["leftPan", "rightPan", "startPan", "endPan", "resetPan", "panStateChange", "itemClicked"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: IgxListItemComponent, selector: "igx-list-item", inputs: ["isHeader", "hidden", "index"] }, { kind: "component", type: IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["id", "labelId", "value", "name", "tabindex", "labelPosition", "disableRipple", "required", "aria-labelledby", "aria-label", "indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"], outputs: ["change"] }, { kind: "component", type: IgxAccordionComponent, selector: "igx-accordion", inputs: ["id", "animationSettings", "singleBranchExpand"], outputs: ["panelExpanding", "panelExpanded", "panelCollapsing", "panelCollapsed"] }, { kind: "component", type: IgxExpansionPanelComponent, selector: "igx-expansion-panel", inputs: ["animationSettings", "id", "collapsed"], outputs: ["collapsedChange", "contentCollapsing", "contentCollapsed", "contentExpanding", "contentExpanded"] }, { kind: "component", type: IgxExpansionPanelHeaderComponent, selector: "igx-expansion-panel-header", inputs: ["lv", "role", "iconPosition", "disabled"], outputs: ["interaction"] }, { kind: "directive", type: IgxDropDirective, selector: "[igxDrop]", inputs: ["igxDrop", "dropChannel", "dropStrategy"], outputs: ["enter", "over", "leave", "dropped"], exportAs: ["drop"] }, { kind: "directive", type: IgxExpansionPanelTitleDirective, selector: "igx-expansion-panel-title" }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter", "dragLeave", "dragOver", "dragDrop"] }, { kind: "component", type: IgxExpansionPanelBodyComponent, selector: "igx-expansion-panel-body", inputs: ["role", "label", "labelledBy"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IgxDragDirective, selector: "[igxDrag]", inputs: ["igxDrag", "dragTolerance", "dragDirection", "dragChannel", "ghost", "ghostClass", "ghostStyle", "ghostTemplate", "ghostHost", "scrollContainer", "ghostOffsetX", "ghostOffsetY"], outputs: ["dragStart", "dragMove", "dragEnd", "dragClick", "ghostCreate", "ghostDestroy", "transitioned"], exportAs: ["drag"] }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxDragHandleDirective, selector: "[igxDragHandle]" }, { kind: "component", type: IgxDropDownComponent, selector: "igx-drop-down", inputs: ["allowItemsFocus", "labelledBy"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "component", type: IgxDropDownItemComponent, selector: "igx-drop-down-item" }, { kind: "pipe", type: IgxFilterPivotItemsPipe, name: "filterPivotItems" }] }); }
|
|
503
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.1", type: IgxPivotDataSelectorComponent, isStandalone: true, selector: "igx-pivot-data-selector", inputs: { columnsExpanded: ["columnsExpanded", "columnsExpanded", booleanAttribute], rowsExpanded: ["rowsExpanded", "rowsExpanded", booleanAttribute], filtersExpanded: ["filtersExpanded", "filtersExpanded", booleanAttribute], valuesExpanded: ["valuesExpanded", "valuesExpanded", booleanAttribute], grid: "grid" }, outputs: { columnsExpandedChange: "columnsExpandedChange", rowsExpandedChange: "rowsExpandedChange", filtersExpandedChange: "filtersExpandedChange", valuesExpandedChange: "valuesExpandedChange" }, host: { properties: { "class.igx-pivot-data-selector": "this.cssClass" } }, ngImport: i0, template: "<div class=\"igx-pivot-data-selector__filter\">\n <igx-input-group type=\"box\" [displayDensity]=\"displayDensity\">\n <igx-icon igxPrefix>search</igx-icon>\n <input\n #input\n igxInput\n tabindex=\"0\"\n placeholder=\"Search\"\n autocomplete=\"off\"\n />\n </igx-input-group>\n <igx-list [displayDensity]=\"displayDensity\">\n <igx-list-item\n *ngFor=\"\n let item of dims\n | filterPivotItems: input.value:grid?.pipeTrigger\n \"\n [id]=\"item.memberName\"\n >\n <igx-checkbox\n [aria-labelledby]=\"item.memberName\"\n [disableRipple]=\"true\"\n [checked]=\"item.enabled\"\n (click)=\"toggleItem(item)\"\n ></igx-checkbox>\n <span>{{ item.memberName }}</span>\n </igx-list-item>\n <igx-list-item\n *ngFor=\"\n let item of values\n | filterPivotItems: input.value:grid?.pipeTrigger\n \"\n [id]=\"item.member\"\n >\n <igx-checkbox\n [aria-labelledby]=\"item.member\"\n [disableRipple]=\"true\"\n [checked]=\"item.enabled\"\n (click)=\"toggleItem(item)\"\n ></igx-checkbox>\n <span>{{ item.displayName || item.member }}</span>\n </igx-list-item>\n </igx-list>\n</div>\n\n<igx-accordion>\n <igx-expansion-panel\n *ngFor=\"let panel of _panels\"\n [animationSettings]=\"animationSettings\"\n [collapsed]=\"getPanelCollapsed(panel.type)\"\n (collapsedChange)=\"onCollapseChange($event, panel.type)\"\n >\n <igx-expansion-panel-header\n iconPosition=\"left\"\n [disabled]=\"false\"\n igxDrop\n (enter)=\"onPanelEntry($event, panel.name)\"\n (dropped)=\"onItemDropped($event, panel.type)\"\n >\n <igx-expansion-panel-title class=\"igx-pivot-data-selector__header\">\n <h6 class=\"igx-pivot-data-selector__header-title\">\n {{ grid?.resourceStrings[panel.i18n] }}\n </h6>\n <div class=\"igx-pivot-data-selector__header-extra\">\n <igx-icon>{{ panel.icon }}</igx-icon>\n <igx-chip>{{ this.grid ? this.grid[panel.dataKey].length : 0 }}</igx-chip>\n </div>\n </igx-expansion-panel-title>\n </igx-expansion-panel-header>\n <igx-expansion-panel-body\n igxDrop\n (enter)=\"onPanelEntry($event, panel.name)\"\n (dropped)=\"onItemDropped($event, panel.type)\"\n >\n <igx-list\n *ngIf=\"this.grid && this.grid[panel.dataKey].length > 0\"\n [displayDensity]=\"displayDensity\"\n >\n <igx-list-item\n igxDrop\n [igxDrag]=\"{ gridID: grid.id, selectorChannels: panel.dragChannels }\"\n [ghostTemplate]=\"itemGhost\"\n (ghostCreate)=\"ghostCreated($event, item[panel.itemKey])\"\n (over)=\"onItemDragOver($event)\"\n (leave)=\"onItemDragLeave($event)\"\n (dragMove)=\"onItemDragMove($event)\"\n (dragEnd)=\"onItemDragEnd($event)\"\n (dropped)=\"onItemDropped($event, panel.type)\"\n *ngFor=\"\n let item of this.grid[panel.dataKey];\n let index\n \"\n [id]=\"item[panel.itemKey]\"\n >\n <div class=\"igx-pivot-data-selector__item\">\n <div\n class=\"igx-pivot-data-selector__item-start\"\n (click)=\"onItemSort($event, item, panel.type)\"\n [class.igx-pivot-data-selector__action-sort]=\"\n panel.sortable\n \"\n >\n <div class=\"igx-pivot-data-selector__item-text\">\n <span *ngIf=\"panel.type === null\">{{\n item.aggregate.key\n }}</span>\n <span *ngIf=\"panel.type === null\">(</span>\n <span>{{ item[panel.displayKey] || item[panel.itemKey] }}</span>\n <span *ngIf=\"panel.type === null\">)</span>\n </div>\n <igx-icon\n class=\"igx-pivot-data-selector__action-sort\"\n *ngIf=\"panel.sortable && item.sortDirection\"\n >\n {{\n item.sortDirection < 2\n ? \"arrow_upward\"\n : \"arrow_downward\"\n }}\n </igx-icon>\n </div>\n <div class=\"igx-pivot-data-selector__item-end\">\n <igx-icon\n class=\"igx-pivot-data-selector__action-filter\"\n *ngIf=\"panel.type !== null\"\n (pointerdown)=\"\n onFilteringIconPointerDown($event)\n \"\n (click)=\"onFilteringIconClick($event, item)\"\n >filter_list\n </igx-icon>\n <igx-icon\n class=\"igx-pivot-data-selector__action-summary\"\n *ngIf=\"panel.type === null\"\n (click)=\"onSummaryClick($event, item, dropdown)\"\n [igxDropDownItemNavigation]=\"dropdown\"\n >\n functions\n </igx-icon>\n <igx-icon\n igxDragHandle\n class=\"igx-pivot-data-selector__action-move\"\n *ngIf=\"panel.dragChannels.length > 0\"\n >drag_handle</igx-icon\n >\n </div>\n </div>\n </igx-list-item>\n </igx-list>\n <div\n class=\"igx-pivot-data-selector__empty\"\n *ngIf=\"this.grid && this.grid[panel.dataKey].length === 0\"\n >\n {{ grid?.resourceStrings.igx_grid_pivot_selector_panel_empty }}\n </div>\n </igx-expansion-panel-body>\n </igx-expansion-panel>\n</igx-accordion>\n\n<igx-drop-down #dropdown (selectionChanging)=\"onAggregationChange($event)\">\n <igx-drop-down-item\n *ngFor=\"let item of aggregateList\"\n [selected]=\"isSelected(item)\"\n [value]=\"item\"\n >\n {{ item.label }}\n </igx-drop-down-item>\n</igx-drop-down>\n\n<ng-template #itemGhost>\n <div\n class=\"igx-pivot-data-selector__item-ghost\"\n [style.width.px]=\"ghostWidth\"\n [class.igx-pivot-data-selector__item-ghost--no-drop]=\"!dropAllowed\"\n >\n <div class=\"igx-pivot-data-selector__item-ghost-text\">\n <igx-icon>unfold_more</igx-icon>\n <span>{{ ghostText }}</span>\n </div>\n <igx-icon>drag_handle</igx-icon>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "component", type: IgxListComponent, selector: "igx-list", inputs: ["panEndTriggeringThreshold", "id", "allowLeftPanning", "allowRightPanning", "isLoading", "resourceStrings", "role"], outputs: ["leftPan", "rightPan", "startPan", "endPan", "resetPan", "panStateChange", "itemClicked"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: IgxListItemComponent, selector: "igx-list-item", inputs: ["isHeader", "hidden", "index", "role"] }, { kind: "component", type: IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["id", "labelId", "value", "name", "tabindex", "labelPosition", "disableRipple", "required", "aria-labelledby", "aria-label", "indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"], outputs: ["change"] }, { kind: "component", type: IgxAccordionComponent, selector: "igx-accordion", inputs: ["id", "animationSettings", "singleBranchExpand"], outputs: ["panelExpanding", "panelExpanded", "panelCollapsing", "panelCollapsed"] }, { kind: "component", type: IgxExpansionPanelComponent, selector: "igx-expansion-panel", inputs: ["animationSettings", "id", "collapsed"], outputs: ["collapsedChange", "contentCollapsing", "contentCollapsed", "contentExpanding", "contentExpanded"] }, { kind: "component", type: IgxExpansionPanelHeaderComponent, selector: "igx-expansion-panel-header", inputs: ["lv", "role", "iconPosition", "disabled"], outputs: ["interaction"] }, { kind: "directive", type: IgxDropDirective, selector: "[igxDrop]", inputs: ["igxDrop", "dropChannel", "dropStrategy"], outputs: ["enter", "over", "leave", "dropped"], exportAs: ["drop"] }, { kind: "directive", type: IgxExpansionPanelTitleDirective, selector: "igx-expansion-panel-title" }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter", "dragLeave", "dragOver", "dragDrop"] }, { kind: "component", type: IgxExpansionPanelBodyComponent, selector: "igx-expansion-panel-body", inputs: ["role", "label", "labelledBy"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IgxDragDirective, selector: "[igxDrag]", inputs: ["igxDrag", "dragTolerance", "dragDirection", "dragChannel", "ghost", "ghostClass", "ghostStyle", "ghostTemplate", "ghostHost", "scrollContainer", "ghostOffsetX", "ghostOffsetY"], outputs: ["dragStart", "dragMove", "dragEnd", "dragClick", "ghostCreate", "ghostDestroy", "transitioned"], exportAs: ["drag"] }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxDragHandleDirective, selector: "[igxDragHandle]" }, { kind: "component", type: IgxDropDownComponent, selector: "igx-drop-down", inputs: ["allowItemsFocus", "labelledBy"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "component", type: IgxDropDownItemComponent, selector: "igx-drop-down-item" }, { kind: "pipe", type: IgxFilterPivotItemsPipe, name: "filterPivotItems" }] }); }
|
|
504
504
|
}
|
|
505
505
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: IgxPivotDataSelectorComponent, decorators: [{
|
|
506
506
|
type: Component,
|
|
@@ -531,4 +531,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
|
531
531
|
}], grid: [{
|
|
532
532
|
type: Input
|
|
533
533
|
}] } });
|
|
534
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtZGF0YS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcGl2b3QtZ3JpZC9waXZvdC1kYXRhLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9waXZvdC1ncmlkL3Bpdm90LWRhdGEtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUVOLGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUE4RyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXhPLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBR3BCLGlCQUFpQixFQUNwQixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFJSCxrQkFBa0IsRUFDckIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxD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QUU7Z0JBTy9CLGtCQUFrQjtzQkFEeEIsTUFBTTtnQkFvQkEsZUFBZTtzQkFEckIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFPL0IscUJBQXFCO3NCQUQzQixNQUFNO2dCQW9CQSxjQUFjO3NCQURwQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU8vQixvQkFBb0I7c0JBRDFCLE1BQU07Z0JBUUEsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLCtCQUErQjtnQkE4R2pDLElBQUk7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUFuaW1hdGlvbiB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBib29sZWFuQXR0cmlidXRlXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRGlzcGxheURlbnNpdHkgfSBmcm9tIFwiLi4vLi4vY29yZS9kZW5zaXR5XCI7XG5pbXBvcnQgeyBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSBcIi4uLy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLXN0cmF0ZWd5XCI7XG5pbXBvcnQgeyBJRHJhZ0Jhc2VFdmVudEFyZ3MsIElEcmFnR2hvc3RCYXNlRXZlbnRBcmdzLCBJRHJhZ01vdmVFdmVudEFyZ3MsIElEcm9wQmFzZUV2ZW50QXJncywgSURyb3BEcm9wcGVkRXZlbnRBcmdzLCBJZ3hEcm9wRGlyZWN0aXZlLCBJZ3hEcmFnRGlyZWN0aXZlLCBJZ3hEcmFnSGFuZGxlRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wL2RyYWctZHJvcC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IElTZWxlY3Rpb25FdmVudEFyZ3MgfSBmcm9tIFwiLi4vLi4vZHJvcC1kb3duL2Ryb3AtZG93bi5jb21tb25cIjtcbmltcG9ydCB7IElneERyb3BEb3duQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIEFic29sdXRlU2Nyb2xsU3RyYXRlZ3ksXG4gICAgQXV0b1Bvc2l0aW9uU3RyYXRlZ3ksXG4gICAgT3ZlcmxheVNldHRpbmdzLFxuICAgIFBvc2l0aW9uU2V0dGluZ3MsXG4gICAgVmVydGljYWxBbGlnbm1lbnRcbn0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3B1YmxpY19hcGlcIjtcbmltcG9ydCB7IENvbHVtblR5cGUsIFBpdm90R3JpZFR5cGUgfSBmcm9tIFwiLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlXCI7XG5pbXBvcnQge1xuICAgIElQaXZvdEFnZ3JlZ2F0b3IsXG4gICAgSVBpdm90RGltZW5zaW9uLFxuICAgIElQaXZvdFZhbHVlLFxuICAgIFBpdm90RGltZW5zaW9uVHlwZVxufSBmcm9tIFwiLi9waXZvdC1ncmlkLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgUGl2b3RVdGlsIH0gZnJvbSAnLi9waXZvdC11dGlsJztcbmltcG9ydCB7IElneEZpbHRlclBpdm90SXRlbXNQaXBlIH0gZnJvbSBcIi4vcGl2b3QtZ3JpZC5waXBlc1wiO1xuaW1wb3J0IHsgSWd4RHJvcERvd25JdGVtQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2Ryb3AtZG93bi9kcm9wLWRvd24taXRlbS5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZHJvcC1kb3duL2Ryb3AtZG93bi1uYXZpZ2F0aW9uLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgSWd4RXhwYW5zaW9uUGFuZWxCb2R5Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwtYm9keS5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneENoaXBDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY2hpcHMvY2hpcC5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsVGl0bGVEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC5kaXJlY3RpdmVzXCI7XG5pbXBvcnQgeyBJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJZ3hBY2NvcmRpb25Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4TGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vbGlzdC9saXN0LWl0ZW0uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IElneExpc3RDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vbGlzdC9saXN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4SW5wdXREaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9pbnB1dC9pbnB1dC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IElneFByZWZpeERpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL3ByZWZpeC9wcmVmaXguZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2ljb24vaWNvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneElucHV0R3JvdXBDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBmYWRlSW4sIGZhZGVPdXQgfSBmcm9tICdpZ25pdGV1aS1hbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5pbnRlcmZhY2UgSURhdGFTZWxlY3RvclBhbmVsIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaTE4bjogc3RyaW5nO1xuICAgIHR5cGU/OiBQaXZvdERpbWVuc2lvblR5cGU7XG4gICAgZGF0YUtleTogc3RyaW5nO1xuICAgIGljb246IHN0cmluZztcbiAgICBpdGVtS2V5OiBzdHJpbmc7XG4gICAgZGlzcGxheUtleT86IHN0cmluZztcbiAgICBzb3J0YWJsZTogYm9vbGVhbjtcbiAgICBkcmFnQ2hhbm5lbHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFBpdm90IERhdGEgU2VsZWN0b3IgcHJvdmlkZXMgbWVhbnMgdG8gY29uZmlndXJlIHRoZSBwaXZvdCBzdGF0ZSBvZiB0aGUgUGl2b3QgR3JpZCB2aWEgYSB2ZXJ0aWNhbCBwYW5lbCBVSVxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4UGl2b3RHcmlkTW9kdWxlXG4gKiBAaWd4R3JvdXAgR3JpZHMgJiBMaXN0c1xuICogQGlneEtleXdvcmRzIGRhdGEgc2VsZWN0b3IsIHBpdm90LCBncmlkXG4gKiBAaWd4VGhlbWUgcGl2b3QtZGF0YS1zZWxlY3Rvci10aGVtZVxuICogQHJlbWFya3NcbiAqIFRoZSBJZ25pdGUgVUkgRGF0YSBTZWxlY3RvciBoYXMgYSBzZWFyY2hhYmxlIGxpc3Qgd2l0aCB0aGUgZ3JpZCBkYXRhIGNvbHVtbnMsXG4gKiB0aGVyZSBhcmUgYWxzbyBmb3VyIGV4cGFuZGFibGUgYXJlYXMgdW5kZXJuZWF0aCBmb3IgZmlsdGVycywgcm93cywgY29sdW1ucywgYW5kIHZhbHVlc1xuICogaXMgdXNlZCBmb3IgZ3JvdXBpbmcgYW5kIGFnZ3JlZ2F0aW5nIHNpbXBsZSBmbGF0IGRhdGEgaW50byBhIHBpdm90IHRhYmxlLlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxpZ3gtcGl2b3QtZ3JpZCAjZ3JpZDEgW2RhdGFdPVwiZGF0YVwiIFtwaXZvdENvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPlxuICogPC9pZ3gtcGl2b3QtZ3JpZD5cbiAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3Bpdm90LWRhdGEtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hJbnB1dEdyb3VwQ29tcG9uZW50LCBJZ3hJY29uQ29tcG9uZW50LCBJZ3hQcmVmaXhEaXJlY3RpdmUsIElneElucHV0RGlyZWN0aXZlLCBJZ3hMaXN0Q29tcG9uZW50LCBOZ0ZvciwgSWd4TGlzdEl0ZW1Db21wb25lbnQsIElneENoZWNrYm94Q29tcG9uZW50LCBJZ3hBY2NvcmRpb25Db21wb25lbnQsIElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50LCBJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCwgSWd4RHJvcERpcmVjdGl2ZSwgSWd4RXhwYW5zaW9uUGFuZWxUaXRsZURpcmVjdGl2ZSwgSWd4Q2hpcENvbXBvbmVudCwgSWd4RXhwYW5zaW9uUGFuZWxCb2R5Q29tcG9uZW50LCBOZ0lmLCBJZ3hEcmFnRGlyZWN0aXZlLCBJZ3hEcm9wRG93bkl0ZW1OYXZpZ2F0aW9uRGlyZWN0aXZlLCBJZ3hEcmFnSGFuZGxlRGlyZWN0aXZlLCBJZ3hEcm9wRG93bkNvbXBvbmVudCwgSWd4RHJvcERvd25JdGVtQ29tcG9uZW50LCBJZ3hGaWx0ZXJQaXZvdEl0ZW1zUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4UGl2b3REYXRhU2VsZWN0b3JDb21wb25lbnQge1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgdGhlIGNvbHVtbnMgcGFuZWwgaXMgZXhwYW5kZWRcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGNvbHVtbnNQYW5lbFN0YXRlOiBib29sZWFuID0gdGhpcy5kYXRhU2VsZWN0b3IuY29sdW1uc0V4cGFuZGVkO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbY29sdW1uc0V4cGFuZGVkXT1cImNvbHVtbnNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nOlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbKGNvbHVtbnNFeHBhbmRlZCldPVwiY29sdW1uc1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBjb2x1bW5zRXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjb2x1bW5zRXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgd2hldGhlciB0aGUgcm93cyBwYW5lbCBpcyBleHBhbmRlZFxuICAgICAqIEdldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3Qgcm93c1BhbmVsU3RhdGU6IGJvb2xlYW4gPSB0aGlzLmRhdGFTZWxlY3Rvci5yb3dzRXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFtyb3dzRXhwYW5kZWRdPVwicm93c1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogVHdvLXdheSBkYXRhIGJpbmRpbmc6XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFsocm93c0V4cGFuZGVkKV09XCJyb3dzUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHJvd3NFeHBhbmRlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJvd3NFeHBhbmRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB3aGV0aGVyIHRoZSBmaWx0ZXJzIHBhbmVsIGlzIGV4cGFuZGVkXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBmaWx0ZXJzUGFuZWxTdGF0ZTogYm9vbGVhbiA9IHRoaXMuZGF0YVNlbGVjdG9yLmZpbHRlcnNFeHBhbmRlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgW2ZpbHRlcnNFeHBhbmRlZF09XCJmaWx0ZXJzUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZzpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgWyhmaWx0ZXJzRXhwYW5kZWQpXT1cImZpbHRlcnNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgZmlsdGVyc0V4cGFuZGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZmlsdGVyc0V4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgdGhlIHZhbHVlcyBwYW5lbCBpcyBleHBhbmRlZFxuICAgICAqIEdldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgdmFsdWVzUGFuZWxTdGF0ZTogYm9vbGVhbiA9IHRoaXMuZGF0YVNlbGVjdG9yLnZhbHVlc0V4cGFuZGVkO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbdmFsdWVzRXhwYW5kZWRdPVwidmFsdWVzUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZzpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgWyh2YWx1ZXNFeHBhbmRlZCldPVwidmFsdWVzUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHZhbHVlc0V4cGFuZGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmFsdWVzRXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIF9ncmlkOiBQaXZvdEdyaWRUeXBlO1xuICAgIHByaXZhdGUgX2Ryb3BEZWx0YSA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKiovXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JcIilcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSBcImlneC1waXZvdC1kYXRhLXNlbGVjdG9yXCI7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICoqL1xuICAgIHB1YmxpYyBkaW1lbnNpb25zOiBJUGl2b3REaW1lbnNpb25bXTtcblxuICAgIHByaXZhdGUgX3N1Yk1lbnVQb3NpdGlvblNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzID0ge1xuICAgICAgICB2ZXJ0aWNhbFN0YXJ0UG9pbnQ6IFZlcnRpY2FsQWxpZ25tZW50LkJvdHRvbSxcbiAgICAgICAgY2xvc2VBbmltYXRpb246IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBfc3ViTWVudU92ZXJsYXlTZXR0aW5nczogT3ZlcmxheVNldHRpbmdzID0ge1xuICAgICAgICBjbG9zZU9uT3V0c2lkZUNsaWNrOiB0cnVlLFxuICAgICAgICBtb2RhbDogZmFsc2UsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IG5ldyBBdXRvUG9zaXRpb25TdHJhdGVneShcbiAgICAgICAgICAgIHRoaXMuX3N1Yk1lbnVQb3NpdGlvblNldHRpbmdzXG4gICAgICAgICksXG4gICAgICAgIHNjcm9sbFN0cmF0ZWd5OiBuZXcgQWJzb2x1dGVTY3JvbGxTdHJhdGVneSgpLFxuICAgIH07XG4gICAgcHVibGljIGFuaW1hdGlvblNldHRpbmdzID0ge1xuICAgICAgICBjbG9zZUFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKGZhZGVPdXQsIHtcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBcIjBtc1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIG9wZW5BbmltYXRpb246IHVzZUFuaW1hdGlvbihmYWRlSW4sIHtcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBcIjBtc1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBhZ2dyZWdhdGVMaXN0OiBJUGl2b3RBZ2dyZWdhdG9yW10gPSBbXTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgdmFsdWU6IElQaXZvdFZhbHVlO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnaG9zdFRleHQ6IHN0cmluZztcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2hvc3RXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBkcm9wQWxsb3dlZDogYm9vbGVhbjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGRpbXMoKTogSVBpdm90RGltZW5zaW9uW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZD8uYWxsRGltZW5zaW9ucyB8fCBbXTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCB2YWx1ZXMoKTogSVBpdm90VmFsdWVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncmlkPy5waXZvdENvbmZpZ3VyYXRpb24udmFsdWVzIHx8IFtdO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIF9wYW5lbHM6IElEYXRhU2VsZWN0b3JQYW5lbFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkZpbHRlcnNcIixcbiAgICAgICAgICAgIGkxOG46ICdpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9maWx0ZXJzJyxcbiAgICAgICAgICAgIHR5cGU6IFBpdm90RGltZW5zaW9uVHlwZS5GaWx0ZXIsXG4gICAgICAgICAgICBkYXRhS2V5OiBcImZpbHRlckRpbWVuc2lvbnNcIixcbiAgICAgICAgICAgIGljb246IFwiZmlsdGVyX2xpc3RcIixcbiAgICAgICAgICAgIGl0ZW1LZXk6IFwibWVtYmVyTmFtZVwiLFxuICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZHJhZ0NoYW5uZWxzOiBbXCJGaWx0ZXJzXCIsIFwiQ29sdW1uc1wiLCBcIlJvd3NcIl1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJDb2x1bW5zXCIsXG4gICAgICAgICAgICBpMThuOiAnaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfY29sdW1ucycsXG4gICAgICAgICAgICB0eXBlOiBQaXZvdERpbWVuc2lvblR5cGUuQ29sdW1uLFxuICAgICAgICAgICAgZGF0YUtleTogXCJjb2x1bW5EaW1lbnNpb25zXCIsXG4gICAgICAgICAgICBpY29uOiBcInZpZXdfY29sdW1uXCIsXG4gICAgICAgICAgICBpdGVtS2V5OiBcIm1lbWJlck5hbWVcIixcbiAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZHJhZ0NoYW5uZWxzOiBbXCJGaWx0ZXJzXCIsIFwiQ29sdW1uc1wiLCBcIlJvd3NcIl1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJSb3dzXCIsXG4gICAgICAgICAgICBpMThuOiAnaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3Jfcm93cycsXG4gICAgICAgICAgICB0eXBlOiBQaXZvdERpbWVuc2lvblR5cGUuUm93LFxuICAgICAgICAgICAgZGF0YUtleTogXCJyb3dEaW1lbnNpb25zXCIsXG4gICAgICAgICAgICBpY29uOiBcInRhYmxlX3Jvd3NcIixcbiAgICAgICAgICAgIGl0ZW1LZXk6IFwibWVtYmVyTmFtZVwiLFxuICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICBkcmFnQ2hhbm5lbHM6IFtcIkZpbHRlcnNcIiwgXCJDb2x1bW5zXCIsIFwiUm93c1wiXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlZhbHVlc1wiLFxuICAgICAgICAgICAgaTE4bjogJ2lneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3ZhbHVlcycsXG4gICAgICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgICAgICAgZGF0YUtleTogXCJ2YWx1ZXNcIixcbiAgICAgICAgICAgIGljb246IFwiZnVuY3Rpb25zXCIsXG4gICAgICAgICAgICBpdGVtS2V5OiBcIm1lbWJlclwiLFxuICAgICAgICAgICAgZGlzcGxheUtleTogJ2Rpc3BsYXlOYW1lJyxcbiAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGRyYWdDaGFubmVsczogW1wiVmFsdWVzXCJdXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBkaXNwbGF5RGVuc2l0eSgpOiBEaXNwbGF5RGVuc2l0eSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQ/LmRpc3BsYXlEZW5zaXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIGdyaWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGdyaWQodmFsdWU6IFBpdm90R3JpZFR5cGUpIHtcbiAgICAgICAgdGhpcy5fZ3JpZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGdyaWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBncmlkKCk6IFBpdm90R3JpZFR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uSXRlbVNvcnQoXG4gICAgICAgIF86IEV2ZW50LFxuICAgICAgICBkaW1lbnNpb246IElQaXZvdERpbWVuc2lvbixcbiAgICAgICAgZGltZW5zaW9uVHlwZTogUGl2b3REaW1lbnNpb25UeXBlXG4gICAgKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLl9wYW5lbHMuZmluZChcbiAgICAgICAgICAgICAgICAocGFuZWw6IElEYXRhU2VsZWN0b3JQYW5lbCkgPT4gcGFuZWwudHlwZSA9PT0gZGltZW5zaW9uVHlwZVxuICAgICAgICAgICAgKS5zb3J0YWJsZVxuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc3RhcnREaXJlY3Rpb24gPSBkaW1lbnNpb24uc29ydERpcmVjdGlvbiB8fCBTb3J0aW5nRGlyZWN0aW9uLk5vbmU7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHN0YXJ0RGlyZWN0aW9uICsgMSA+IFNvcnRpbmdEaXJlY3Rpb24uRGVzYyA/XG4gICAgICAgICAgICBTb3J0aW5nRGlyZWN0aW9uLk5vbmUgOiBzdGFydERpcmVjdGlvbiArIDE7XG4gICAgICAgIHRoaXMuZ3JpZC5zb3J0RGltZW5zaW9uKGRpbWVuc2lvbiwgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uRmlsdGVyaW5nSWNvblBvaW50ZXJEb3duKGV2ZW50OiBQb2ludGVyRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkZpbHRlcmluZ0ljb25DbGljayhldmVudDogTW91c2VFdmVudCwgZGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24pIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgbGV0IGRpbSA9IGRpbWVuc2lvbjtcbiAgICAgICAgbGV0IGNvbDogQ29sdW1uVHlwZTtcblxuICAgICAgICB3aGlsZSAoZGltKSB7XG4gICAgICAgICAgICBjb2wgPSB0aGlzLmdyaWQuZGltZW5zaW9uRGF0YUNvbHVtbnMuZmluZChcbiAgICAgICAgICAgICAgICAoeCkgPT4geC5maWVsZCA9PT0gZGltLm1lbWJlck5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoY29sKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpbSA9IGRpbS5jaGlsZExldmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmlkLmZpbHRlcmluZ1NlcnZpY2UudG9nZ2xlRmlsdGVyRHJvcGRvd24oZXZlbnQudGFyZ2V0LCBjb2wpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0RGltZW5zaW9uU3RhdGUoZGltZW5zaW9uVHlwZTogUGl2b3REaW1lbnNpb25UeXBlKSB7XG4gICAgICAgIHN3aXRjaCAoZGltZW5zaW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuUm93OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQucm93RGltZW5zaW9ucztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkNvbHVtbjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmNvbHVtbkRpbWVuc2lvbnM7XG4gICAgICAgICAgICBjYXNlIFBpdm90RGltZW5zaW9uVHlwZS5GaWx0ZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5maWx0ZXJEaW1lbnNpb25zO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbW92ZVZhbHVlSXRlbShpdGVtSWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbiA9IHRoaXMuZ3JpZC5waXZvdENvbmZpZ3VyYXRpb24udmFsdWVzO1xuICAgICAgICBjb25zdCB2YWx1ZUluZGV4ID1cbiAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpbmRJbmRleCgoeCkgPT4geC5tZW1iZXIgPT09IGl0ZW1JZCkgIT09IC0xXG4gICAgICAgICAgICAgICAgPyBhZ2dyZWdhdGlvbj8uZmluZEluZGV4KCh4KSA9PiB4Lm1lbWJlciA9PT0gaXRlbUlkKVxuICAgICAgICAgICAgICAgIDogYWdncmVnYXRpb24ubGVuZ3RoO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZUluZGV4ID1cbiAgICAgICAgICAgIHZhbHVlSW5kZXggKyB0aGlzLl9kcm9wRGVsdGEgPCAwID8gMCA6IHZhbHVlSW5kZXggKyB0aGlzLl9kcm9wRGVsdGE7XG5cbiAgICAgICAgY29uc3QgYWdncmVnYXRpb25JdGVtID0gYWdncmVnYXRpb24uZmluZChcbiAgICAgICAgICAgICh4KSA9PiB4Lm1lbWJlciA9PT0gaXRlbUlkIHx8IHguZGlzcGxheU5hbWUgPT09IGl0ZW1JZFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChhZ2dyZWdhdGlvbkl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5tb3ZlVmFsdWUoYWdncmVnYXRpb25JdGVtLCBuZXdWYWx1ZUluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC52YWx1ZXNDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlzLmdyaWQucGl2b3RDb25maWd1cmF0aW9uLnZhbHVlcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1Ecm9wcGVkKFxuICAgICAgICBldmVudDogSURyb3BEcm9wcGVkRXZlbnRBcmdzLFxuICAgICAgICBkaW1lbnNpb25UeXBlOiBQaXZvdERpbWVuc2lvblR5cGVcbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLmRyb3BBbGxvd2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaW1lbnNpb24gPSB0aGlzLmdyaWQuZ2V0RGltZW5zaW9uc0J5VHlwZShkaW1lbnNpb25UeXBlKTtcbiAgICAgICAgY29uc3QgZGltZW5zaW9uU3RhdGUgPSB0aGlzLmdldERpbWVuc2lvblN0YXRlKGRpbWVuc2lvblR5cGUpO1xuICAgICAgICBjb25zdCBpdGVtSWQgPSBldmVudC5kcmFnLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pZDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SWQgPSBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaWQ7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbkl0ZW0gPSBkaW1lbnNpb24/LmZpbmQoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gaXRlbUlkKTtcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID1cbiAgICAgICAgICAgIGRpbWVuc2lvbj8uZmluZEluZGV4KCh4KSA9PiB4Py5tZW1iZXJOYW1lID09PSBpdGVtSWQpICE9PSAtMVxuICAgICAgICAgICAgICAgID8gZGltZW5zaW9uPy5maW5kSW5kZXgoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gaXRlbUlkKVxuICAgICAgICAgICAgICAgIDogZGltZW5zaW9uPy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbnMgPSB0aGlzLmdyaWQuYWxsRGltZW5zaW9ucy5maWx0ZXIoKHgpID0+IHggJiYgeC5tZW1iZXJOYW1lID09PSBpdGVtSWQpO1xuXG4gICAgICAgIGNvbnN0IHJlb3JkZXIgPVxuICAgICAgICAgICAgZGltZW5zaW9uU3RhdGU/LmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5tZW1iZXJOYW1lID09PSBpdGVtSWQpICE9PVxuICAgICAgICAgICAgLTE7XG5cbiAgICAgICAgbGV0IHRhcmdldEluZGV4ID1cbiAgICAgICAgICAgIHRhcmdldElkICE9PSBcIlwiXG4gICAgICAgICAgICAgICAgPyBkaW1lbnNpb24/LmZpbmRJbmRleCgoeCkgPT4geC5tZW1iZXJOYW1lID09PSB0YXJnZXRJZClcbiAgICAgICAgICAgICAgICA6IGRpbWVuc2lvbj8ubGVuZ3RoO1xuXG4gICAgICAgIGlmICghZGltZW5zaW9uKSB7XG4gICAgICAgICAgICB0aGlzLm1vdmVWYWx1ZUl0ZW0oaXRlbUlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZW9yZGVyKSB7XG4gICAgICAgICAgICB0YXJnZXRJbmRleCA9XG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ICsgdGhpcy5fZHJvcERlbHRhIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgOiBpdGVtSW5kZXggKyB0aGlzLl9kcm9wRGVsdGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGltZW5zaW9uSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLm1vdmVEaW1lbnNpb24oZGltZW5zaW9uSXRlbSwgZGltZW5zaW9uVHlwZSwgdGFyZ2V0SW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmV3RGltID0gZGltZW5zaW9ucy5maW5kKCh4KSA9PiB4Lm1lbWJlck5hbWUgPT09IGl0ZW1JZCk7XG4gICAgICAgICAgICB0aGlzLmdyaWQubW92ZURpbWVuc2lvbihuZXdEaW0sIGRpbWVuc2lvblR5cGUsIHRhcmdldEluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ3JpZC5kaW1lbnNpb25zQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgZGltZW5zaW9uczogZGltZW5zaW9uLFxuICAgICAgICAgICAgZGltZW5zaW9uQ29sbGVjdGlvblR5cGU6IGRpbWVuc2lvblR5cGUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRHJvcERvd24oXG4gICAgICAgIHZhbHVlOiBJUGl2b3RWYWx1ZSxcbiAgICAgICAgZHJvcGRvd246IElneERyb3BEb3duQ29tcG9uZW50XG4gICAgKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgZHJvcGRvd24ud2lkdGggPSBcIjIwMHB4XCI7XG4gICAgICAgIHRoaXMuYWdncmVnYXRlTGlzdCA9IFBpdm90VXRpbC5nZXRBZ2dyZWdhdGVMaXN0KHZhbHVlLCB0aGlzLmdyaWQpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGRyb3Bkb3duLm9wZW4odGhpcy5fc3ViTWVudU92ZXJsYXlTZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvblN1bW1hcnlDbGljayhcbiAgICAgICAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gICAgICAgIHZhbHVlOiBJUGl2b3RWYWx1ZSxcbiAgICAgICAgZHJvcGRvd246IElneERyb3BEb3duQ29tcG9uZW50XG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3N1Yk1lbnVPdmVybGF5U2V0dGluZ3MudGFyZ2V0ID1cbiAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGRyb3Bkb3duLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVEcm9wRG93bih2YWx1ZSwgZHJvcGRvd24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gY2xvc2UgZm9yIHByZXZpb3VzIGNoaXBcbiAgICAgICAgICAgIGRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICAgICAgICBkcm9wZG93bi5jbG9zZWQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRHJvcERvd24odmFsdWUsIGRyb3Bkb3duKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkFnZ3JlZ2F0aW9uQ2hhbmdlKGV2ZW50OiBJU2VsZWN0aW9uRXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKGV2ZW50Lm5ld1NlbGVjdGlvbi52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUuYWdncmVnYXRlID0gZXZlbnQubmV3U2VsZWN0aW9uLnZhbHVlO1xuICAgICAgICAgICAgdGhpcy5ncmlkLnBpcGVUcmlnZ2VyKys7XG4gICAgICAgICAgICB0aGlzLmdyaWQuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc1NlbGVjdGVkKHZhbDogSVBpdm90QWdncmVnYXRvcikge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5hZ2dyZWdhdGUua2V5ID09PSB2YWwua2V5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2hvc3RDcmVhdGVkKGV2ZW50OiBJRHJhZ0dob3N0QmFzZUV2ZW50QXJncywgdmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCB7IHdpZHRoOiBpdGVtV2lkdGggfSA9XG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHRoaXMuZ2hvc3RXaWR0aCA9IGl0ZW1XaWR0aDtcbiAgICAgICAgdGhpcy5naG9zdFRleHQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIFwicG9zaXRpb25cIixcbiAgICAgICAgICAgIFwiYWJzb2x1dGVcIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgXCJ2aXNpYmlsaXR5XCIsXG4gICAgICAgICAgICBcImhpZGRlblwiXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGVJdGVtKGl0ZW06IElQaXZvdERpbWVuc2lvbiB8IElQaXZvdFZhbHVlKSB7XG4gICAgICAgIGlmIChpdGVtIGFzIElQaXZvdFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQudG9nZ2xlVmFsdWUoaXRlbSBhcyBJUGl2b3RWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSBhcyBJUGl2b3REaW1lbnNpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC50b2dnbGVEaW1lbnNpb24oaXRlbSBhcyBJUGl2b3REaW1lbnNpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvblBhbmVsRW50cnkoZXZlbnQ6IElEcm9wQmFzZUV2ZW50QXJncywgcGFuZWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLmRyb3BBbGxvd2VkID0gZXZlbnQuZHJhZ0RhdGEuZ3JpZElEID09PSB0aGlzLmdyaWQuaWQgJiYgZXZlbnQuZHJhZ0RhdGEuc2VsZWN0b3JDaGFubmVscz8uc29tZShcbiAgICAgICAgICAgIChjaGFubmVsOiBzdHJpbmcpID0+IGNoYW5uZWwgPT09IHBhbmVsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1EcmFnTW92ZShldmVudDogSURyYWdNb3ZlRXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGNsaWVudFJlY3QgPVxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLl9kcm9wRGVsdGEgPSBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgKGV2ZW50Lm5leHRQYWdlWSAtIGV2ZW50LnN0YXJ0WSkgLyBjbGllbnRSZWN0LmhlaWdodFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25JdGVtRHJhZ0VuZChldmVudDogSURyYWdCYXNlRXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBcInBvc2l0aW9uXCIsXG4gICAgICAgICAgICBcInN0YXRpY1wiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBcInZpc2liaWxpdHlcIixcbiAgICAgICAgICAgIFwidmlzaWJsZVwiXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1EcmFnT3ZlcihldmVudDogSURyb3BCYXNlRXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3BBbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICBcImlneC1kcmFnLS1wdXNoXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uSXRlbURyYWdMZWF2ZShldmVudDogSURyb3BCYXNlRXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3BBbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKFxuICAgICAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICBcImlneC1kcmFnLS1wdXNoXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldFBhbmVsQ29sbGFwc2VkKHBhbmVsVHlwZTogUGl2b3REaW1lbnNpb25UeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHN3aXRjaCAocGFuZWxUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFBpdm90RGltZW5zaW9uVHlwZS5Db2x1bW46XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmNvbHVtbnNFeHBhbmRlZDtcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkZpbHRlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZmlsdGVyc0V4cGFuZGVkO1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuUm93OlxuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5yb3dzRXhwYW5kZWQ7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy52YWx1ZXNFeHBhbmRlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Db2xsYXBzZUNoYW5nZSh2YWx1ZTogYm9vbGVhbiwgcGFuZWxUeXBlOiBQaXZvdERpbWVuc2lvblR5cGUpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChwYW5lbFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkNvbHVtbjpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnNFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnNFeHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuY29sdW1uc0V4cGFuZGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkZpbHRlcjpcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNFeHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZmlsdGVyc0V4cGFuZGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLlJvdzpcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NFeHBhbmRlZENoYW5nZS5lbWl0KHRoaXMucm93c0V4cGFuZGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXNFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlc0V4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy52YWx1ZXNFeHBhbmRlZClcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fZmlsdGVyXCI+XG4gICAgPGlneC1pbnB1dC1ncm91cCB0eXBlPVwiYm94XCIgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCI+XG4gICAgICAgIDxpZ3gtaWNvbiBpZ3hQcmVmaXg+c2VhcmNoPC9pZ3gtaWNvbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIGlneElucHV0XG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgLz5cbiAgICA8L2lneC1pbnB1dC1ncm91cD5cbiAgICA8aWd4LWxpc3QgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCI+XG4gICAgICAgIDxpZ3gtbGlzdC1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBkaW1zXG4gICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyUGl2b3RJdGVtczogaW5wdXQudmFsdWU6Z3JpZD8ucGlwZVRyaWdnZXJcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbaWRdPVwiaXRlbS5tZW1iZXJOYW1lXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlneC1jaGVja2JveFxuICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsbGVkYnldPVwiaXRlbS5tZW1iZXJOYW1lXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtLmVuYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgID48L2lneC1jaGVja2JveD5cbiAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubWVtYmVyTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9pZ3gtbGlzdC1pdGVtPlxuICAgICAgICA8aWd4LWxpc3QtaXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyUGl2b3RJdGVtczogaW5wdXQudmFsdWU6Z3JpZD8ucGlwZVRyaWdnZXJcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbaWRdPVwiaXRlbS5tZW1iZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxsZWRieV09XCJpdGVtLm1lbWJlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbS5lbmFibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlSXRlbShpdGVtKVwiXG4gICAgICAgICAgICA+PC9pZ3gtY2hlY2tib3g+XG4gICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmRpc3BsYXlOYW1lIHx8IGl0ZW0ubWVtYmVyIH19PC9zcGFuPlxuICAgICAgICA8L2lneC1saXN0LWl0ZW0+XG4gICAgPC9pZ3gtbGlzdD5cbjwvZGl2PlxuXG48aWd4LWFjY29yZGlvbj5cbiAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbFxuICAgICAgICAqbmdGb3I9XCJsZXQgcGFuZWwgb2YgX3BhbmVsc1wiXG4gICAgICAgIFthbmltYXRpb25TZXR0aW5nc109XCJhbmltYXRpb25TZXR0aW5nc1wiXG4gICAgICAgIFtjb2xsYXBzZWRdPVwiZ2V0UGFuZWxDb2xsYXBzZWQocGFuZWwudHlwZSlcIlxuICAgICAgICAoY29sbGFwc2VkQ2hhbmdlKT1cIm9uQ29sbGFwc2VDaGFuZ2UoJGV2ZW50LCBwYW5lbC50eXBlKVwiXG4gICAgPlxuICAgICAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcbiAgICAgICAgICAgIGljb25Qb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgIGlneERyb3BcbiAgICAgICAgICAgIChlbnRlcik9XCJvblBhbmVsRW50cnkoJGV2ZW50LCBwYW5lbC5uYW1lKVwiXG4gICAgICAgICAgICAoZHJvcHBlZCk9XCJvbkl0ZW1Ecm9wcGVkKCRldmVudCwgcGFuZWwudHlwZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbC10aXRsZSBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faGVhZGVyLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdyaWQ/LnJlc291cmNlU3RyaW5nc1twYW5lbC5pMThuXSB9fVxuICAgICAgICAgICAgICAgIDwvaDY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19oZWFkZXItZXh0cmFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlneC1pY29uPnt7IHBhbmVsLmljb24gfX08L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8aWd4LWNoaXA+e3sgdGhpcy5ncmlkID8gdGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldLmxlbmd0aCA6IDAgfX08L2lneC1jaGlwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsLXRpdGxlPlxuICAgICAgICA8L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1ib2R5XG4gICAgICAgICAgICBpZ3hEcm9wXG4gICAgICAgICAgICAoZW50ZXIpPVwib25QYW5lbEVudHJ5KCRldmVudCwgcGFuZWwubmFtZSlcIlxuICAgICAgICAgICAgKGRyb3BwZWQpPVwib25JdGVtRHJvcHBlZCgkZXZlbnQsIHBhbmVsLnR5cGUpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlneC1saXN0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmdyaWQgJiYgdGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5RGVuc2l0eV09XCJkaXNwbGF5RGVuc2l0eVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlneC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgaWd4RHJvcFxuICAgICAgICAgICAgICAgICAgICBbaWd4RHJhZ109XCJ7IGdyaWRJRDogZ3JpZC5pZCwgc2VsZWN0b3JDaGFubmVsczogcGFuZWwuZHJhZ0NoYW5uZWxzIH1cIlxuICAgICAgICAgICAgICAgICAgICBbZ2hvc3RUZW1wbGF0ZV09XCJpdGVtR2hvc3RcIlxuICAgICAgICAgICAgICAgICAgICAoZ2hvc3RDcmVhdGUpPVwiZ2hvc3RDcmVhdGVkKCRldmVudCwgaXRlbVtwYW5lbC5pdGVtS2V5XSlcIlxuICAgICAgICAgICAgICAgICAgICAob3Zlcik9XCJvbkl0ZW1EcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGxlYXZlKT1cIm9uSXRlbURyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGRyYWdNb3ZlKT1cIm9uSXRlbURyYWdNb3ZlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZHJhZ0VuZCk9XCJvbkl0ZW1EcmFnRW5kKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZHJvcHBlZCk9XCJvbkl0ZW1Ecm9wcGVkKCRldmVudCwgcGFuZWwudHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIHRoaXMuZ3JpZFtwYW5lbC5kYXRhS2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaXRlbVtwYW5lbC5pdGVtS2V5XVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLXN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtU29ydCgkZXZlbnQsIGl0ZW0sIHBhbmVsLnR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1zb3J0XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5zb3J0YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYW5lbC50eXBlID09PSBudWxsXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYWdncmVnYXRlLmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYW5lbC50eXBlID09PSBudWxsXCI+KDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbVtwYW5lbC5kaXNwbGF5S2V5XSB8fCBpdGVtW3BhbmVsLml0ZW1LZXldIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhbmVsLnR5cGUgPT09IG51bGxcIj4pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZ3gtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19hY3Rpb24tc29ydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFuZWwuc29ydGFibGUgJiYgaXRlbS5zb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNvcnREaXJlY3Rpb24gPCAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImFycm93X3Vwd2FyZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcImFycm93X2Rvd253YXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW0tZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlneC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhbmVsLnR5cGUgIT09IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlcmluZ0ljb25Qb2ludGVyRG93bigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlcmluZ0ljb25DbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPmZpbHRlcl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pZ3gtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fYWN0aW9uLXN1bW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhbmVsLnR5cGUgPT09IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdW1tYXJ5Q2xpY2soJGV2ZW50LCBpdGVtLCBkcm9wZG93bilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbl09XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZ3gtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ3hEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1tb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYW5lbC5kcmFnQ2hhbm5lbHMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5kcmFnX2hhbmRsZTwvaWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9pZ3gtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC9pZ3gtbGlzdD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19lbXB0eVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmdyaWQgJiYgdGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZ3JpZD8ucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3BhbmVsX2VtcHR5IH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWJvZHk+XG4gICAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuPC9pZ3gtYWNjb3JkaW9uPlxuXG48aWd4LWRyb3AtZG93biAjZHJvcGRvd24gKHNlbGVjdGlvbkNoYW5naW5nKT1cIm9uQWdncmVnYXRpb25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDxpZ3gtZHJvcC1kb3duLWl0ZW1cbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWdncmVnYXRlTGlzdFwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgID5cbiAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgIDwvaWd4LWRyb3AtZG93bi1pdGVtPlxuPC9pZ3gtZHJvcC1kb3duPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1HaG9zdD5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW0tZ2hvc3RcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiZ2hvc3RXaWR0aFwiXG4gICAgICAgIFtjbGFzcy5pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faXRlbS1naG9zdC0tbm8tZHJvcF09XCIhZHJvcEFsbG93ZWRcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLWdob3N0LXRleHRcIj5cbiAgICAgICAgICAgIDxpZ3gtaWNvbj51bmZvbGRfbW9yZTwvaWd4LWljb24+XG4gICAgICAgICAgICA8c3Bhbj57eyBnaG9zdFRleHQgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aWd4LWljb24+ZHJhZ19oYW5kbGU8L2lneC1pY29uPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
534
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtZGF0YS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcGl2b3QtZ3JpZC9waXZvdC1kYXRhLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9waXZvdC1ncmlkL3Bpdm90LWRhdGEtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUVOLGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUE4RyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXhPLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBR3BCLGlCQUFpQixFQUNwQixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFJSCxrQkFBa0IsRUFDckIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxD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QUU7Z0JBTy9CLGtCQUFrQjtzQkFEeEIsTUFBTTtnQkFvQkEsZUFBZTtzQkFEckIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFPL0IscUJBQXFCO3NCQUQzQixNQUFNO2dCQW9CQSxjQUFjO3NCQURwQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU8vQixvQkFBb0I7c0JBRDFCLE1BQU07Z0JBUUEsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLCtCQUErQjtnQkE4R2pDLElBQUk7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUFuaW1hdGlvbiB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBib29sZWFuQXR0cmlidXRlXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRGlzcGxheURlbnNpdHkgfSBmcm9tIFwiLi4vLi4vY29yZS9kZW5zaXR5XCI7XG5pbXBvcnQgeyBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSBcIi4uLy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLXN0cmF0ZWd5XCI7XG5pbXBvcnQgeyBJRHJhZ0Jhc2VFdmVudEFyZ3MsIElEcmFnR2hvc3RCYXNlRXZlbnRBcmdzLCBJRHJhZ01vdmVFdmVudEFyZ3MsIElEcm9wQmFzZUV2ZW50QXJncywgSURyb3BEcm9wcGVkRXZlbnRBcmdzLCBJZ3hEcm9wRGlyZWN0aXZlLCBJZ3hEcmFnRGlyZWN0aXZlLCBJZ3hEcmFnSGFuZGxlRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wL2RyYWctZHJvcC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IElTZWxlY3Rpb25FdmVudEFyZ3MgfSBmcm9tIFwiLi4vLi4vZHJvcC1kb3duL2Ryb3AtZG93bi5jb21tb25cIjtcbmltcG9ydCB7IElneERyb3BEb3duQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIEFic29sdXRlU2Nyb2xsU3RyYXRlZ3ksXG4gICAgQXV0b1Bvc2l0aW9uU3RyYXRlZ3ksXG4gICAgT3ZlcmxheVNldHRpbmdzLFxuICAgIFBvc2l0aW9uU2V0dGluZ3MsXG4gICAgVmVydGljYWxBbGlnbm1lbnRcbn0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3B1YmxpY19hcGlcIjtcbmltcG9ydCB7IENvbHVtblR5cGUsIFBpdm90R3JpZFR5cGUgfSBmcm9tIFwiLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlXCI7XG5pbXBvcnQge1xuICAgIElQaXZvdEFnZ3JlZ2F0b3IsXG4gICAgSVBpdm90RGltZW5zaW9uLFxuICAgIElQaXZvdFZhbHVlLFxuICAgIFBpdm90RGltZW5zaW9uVHlwZVxufSBmcm9tIFwiLi9waXZvdC1ncmlkLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgUGl2b3RVdGlsIH0gZnJvbSAnLi9waXZvdC11dGlsJztcbmltcG9ydCB7IElneEZpbHRlclBpdm90SXRlbXNQaXBlIH0gZnJvbSBcIi4vcGl2b3QtZ3JpZC5waXBlc1wiO1xuaW1wb3J0IHsgSWd4RHJvcERvd25JdGVtQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2Ryb3AtZG93bi9kcm9wLWRvd24taXRlbS5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZHJvcC1kb3duL2Ryb3AtZG93bi1uYXZpZ2F0aW9uLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgSWd4RXhwYW5zaW9uUGFuZWxCb2R5Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwtYm9keS5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneENoaXBDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY2hpcHMvY2hpcC5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsVGl0bGVEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC5kaXJlY3RpdmVzXCI7XG5pbXBvcnQgeyBJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJZ3hBY2NvcmRpb25Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4TGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vbGlzdC9saXN0LWl0ZW0uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IElneExpc3RDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vbGlzdC9saXN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4SW5wdXREaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9pbnB1dC9pbnB1dC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IElneFByZWZpeERpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL3ByZWZpeC9wcmVmaXguZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2ljb24vaWNvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneElucHV0R3JvdXBDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBmYWRlSW4sIGZhZGVPdXQgfSBmcm9tICdpZ25pdGV1aS1hbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5pbnRlcmZhY2UgSURhdGFTZWxlY3RvclBhbmVsIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaTE4bjogc3RyaW5nO1xuICAgIHR5cGU/OiBQaXZvdERpbWVuc2lvblR5cGU7XG4gICAgZGF0YUtleTogc3RyaW5nO1xuICAgIGljb246IHN0cmluZztcbiAgICBpdGVtS2V5OiBzdHJpbmc7XG4gICAgZGlzcGxheUtleT86IHN0cmluZztcbiAgICBzb3J0YWJsZTogYm9vbGVhbjtcbiAgICBkcmFnQ2hhbm5lbHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFBpdm90IERhdGEgU2VsZWN0b3IgcHJvdmlkZXMgbWVhbnMgdG8gY29uZmlndXJlIHRoZSBwaXZvdCBzdGF0ZSBvZiB0aGUgUGl2b3QgR3JpZCB2aWEgYSB2ZXJ0aWNhbCBwYW5lbCBVSVxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4UGl2b3RHcmlkTW9kdWxlXG4gKiBAaWd4R3JvdXAgR3JpZHMgJiBMaXN0c1xuICogQGlneEtleXdvcmRzIGRhdGEgc2VsZWN0b3IsIHBpdm90LCBncmlkXG4gKiBAaWd4VGhlbWUgcGl2b3QtZGF0YS1zZWxlY3Rvci10aGVtZVxuICogQHJlbWFya3NcbiAqIFRoZSBJZ25pdGUgVUkgRGF0YSBTZWxlY3RvciBoYXMgYSBzZWFyY2hhYmxlIGxpc3Qgd2l0aCB0aGUgZ3JpZCBkYXRhIGNvbHVtbnMsXG4gKiB0aGVyZSBhcmUgYWxzbyBmb3VyIGV4cGFuZGFibGUgYXJlYXMgdW5kZXJuZWF0aCBmb3IgZmlsdGVycywgcm93cywgY29sdW1ucywgYW5kIHZhbHVlc1xuICogaXMgdXNlZCBmb3IgZ3JvdXBpbmcgYW5kIGFnZ3JlZ2F0aW5nIHNpbXBsZSBmbGF0IGRhdGEgaW50byBhIHBpdm90IHRhYmxlLlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxpZ3gtcGl2b3QtZ3JpZCAjZ3JpZDEgW2RhdGFdPVwiZGF0YVwiIFtwaXZvdENvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvblwiPlxuICogPC9pZ3gtcGl2b3QtZ3JpZD5cbiAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3Bpdm90LWRhdGEtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hJbnB1dEdyb3VwQ29tcG9uZW50LCBJZ3hJY29uQ29tcG9uZW50LCBJZ3hQcmVmaXhEaXJlY3RpdmUsIElneElucHV0RGlyZWN0aXZlLCBJZ3hMaXN0Q29tcG9uZW50LCBOZ0ZvciwgSWd4TGlzdEl0ZW1Db21wb25lbnQsIElneENoZWNrYm94Q29tcG9uZW50LCBJZ3hBY2NvcmRpb25Db21wb25lbnQsIElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50LCBJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCwgSWd4RHJvcERpcmVjdGl2ZSwgSWd4RXhwYW5zaW9uUGFuZWxUaXRsZURpcmVjdGl2ZSwgSWd4Q2hpcENvbXBvbmVudCwgSWd4RXhwYW5zaW9uUGFuZWxCb2R5Q29tcG9uZW50LCBOZ0lmLCBJZ3hEcmFnRGlyZWN0aXZlLCBJZ3hEcm9wRG93bkl0ZW1OYXZpZ2F0aW9uRGlyZWN0aXZlLCBJZ3hEcmFnSGFuZGxlRGlyZWN0aXZlLCBJZ3hEcm9wRG93bkNvbXBvbmVudCwgSWd4RHJvcERvd25JdGVtQ29tcG9uZW50LCBJZ3hGaWx0ZXJQaXZvdEl0ZW1zUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4UGl2b3REYXRhU2VsZWN0b3JDb21wb25lbnQge1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgdGhlIGNvbHVtbnMgcGFuZWwgaXMgZXhwYW5kZWRcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGNvbHVtbnNQYW5lbFN0YXRlOiBib29sZWFuID0gdGhpcy5kYXRhU2VsZWN0b3IuY29sdW1uc0V4cGFuZGVkO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbY29sdW1uc0V4cGFuZGVkXT1cImNvbHVtbnNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nOlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbKGNvbHVtbnNFeHBhbmRlZCldPVwiY29sdW1uc1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBjb2x1bW5zRXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjb2x1bW5zRXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgd2hldGhlciB0aGUgcm93cyBwYW5lbCBpcyBleHBhbmRlZFxuICAgICAqIEdldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3Qgcm93c1BhbmVsU3RhdGU6IGJvb2xlYW4gPSB0aGlzLmRhdGFTZWxlY3Rvci5yb3dzRXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFtyb3dzRXhwYW5kZWRdPVwicm93c1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogVHdvLXdheSBkYXRhIGJpbmRpbmc6XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFsocm93c0V4cGFuZGVkKV09XCJyb3dzUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHJvd3NFeHBhbmRlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJvd3NFeHBhbmRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB3aGV0aGVyIHRoZSBmaWx0ZXJzIHBhbmVsIGlzIGV4cGFuZGVkXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBmaWx0ZXJzUGFuZWxTdGF0ZTogYm9vbGVhbiA9IHRoaXMuZGF0YVNlbGVjdG9yLmZpbHRlcnNFeHBhbmRlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgW2ZpbHRlcnNFeHBhbmRlZF09XCJmaWx0ZXJzUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZzpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgWyhmaWx0ZXJzRXhwYW5kZWQpXT1cImZpbHRlcnNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgZmlsdGVyc0V4cGFuZGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZmlsdGVyc0V4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgdGhlIHZhbHVlcyBwYW5lbCBpcyBleHBhbmRlZFxuICAgICAqIEdldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgdmFsdWVzUGFuZWxTdGF0ZTogYm9vbGVhbiA9IHRoaXMuZGF0YVNlbGVjdG9yLnZhbHVlc0V4cGFuZGVkO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbdmFsdWVzRXhwYW5kZWRdPVwidmFsdWVzUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZzpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgWyh2YWx1ZXNFeHBhbmRlZCldPVwidmFsdWVzUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHZhbHVlc0V4cGFuZGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmFsdWVzRXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIF9ncmlkOiBQaXZvdEdyaWRUeXBlO1xuICAgIHByaXZhdGUgX2Ryb3BEZWx0YSA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKiovXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JcIilcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSBcImlneC1waXZvdC1kYXRhLXNlbGVjdG9yXCI7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICoqL1xuICAgIHB1YmxpYyBkaW1lbnNpb25zOiBJUGl2b3REaW1lbnNpb25bXTtcblxuICAgIHByaXZhdGUgX3N1Yk1lbnVQb3NpdGlvblNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzID0ge1xuICAgICAgICB2ZXJ0aWNhbFN0YXJ0UG9pbnQ6IFZlcnRpY2FsQWxpZ25tZW50LkJvdHRvbSxcbiAgICAgICAgY2xvc2VBbmltYXRpb246IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBfc3ViTWVudU92ZXJsYXlTZXR0aW5nczogT3ZlcmxheVNldHRpbmdzID0ge1xuICAgICAgICBjbG9zZU9uT3V0c2lkZUNsaWNrOiB0cnVlLFxuICAgICAgICBtb2RhbDogZmFsc2UsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IG5ldyBBdXRvUG9zaXRpb25TdHJhdGVneShcbiAgICAgICAgICAgIHRoaXMuX3N1Yk1lbnVQb3NpdGlvblNldHRpbmdzXG4gICAgICAgICksXG4gICAgICAgIHNjcm9sbFN0cmF0ZWd5OiBuZXcgQWJzb2x1dGVTY3JvbGxTdHJhdGVneSgpLFxuICAgIH07XG4gICAgcHVibGljIGFuaW1hdGlvblNldHRpbmdzID0ge1xuICAgICAgICBjbG9zZUFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKGZhZGVPdXQsIHtcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBcIjBtc1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIG9wZW5BbmltYXRpb246IHVzZUFuaW1hdGlvbihmYWRlSW4sIHtcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBcIjBtc1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBhZ2dyZWdhdGVMaXN0OiBJUGl2b3RBZ2dyZWdhdG9yW10gPSBbXTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgdmFsdWU6IElQaXZvdFZhbHVlO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnaG9zdFRleHQ6IHN0cmluZztcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2hvc3RXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBkcm9wQWxsb3dlZDogYm9vbGVhbjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGRpbXMoKTogSVBpdm90RGltZW5zaW9uW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZD8uYWxsRGltZW5zaW9ucyB8fCBbXTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCB2YWx1ZXMoKTogSVBpdm90VmFsdWVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncmlkPy5waXZvdENvbmZpZ3VyYXRpb24udmFsdWVzIHx8IFtdO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIF9wYW5lbHM6IElEYXRhU2VsZWN0b3JQYW5lbFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkZpbHRlcnNcIixcbiAgICAgICAgICAgIGkxOG46ICdpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9maWx0ZXJzJyxcbiAgICAgICAgICAgIHR5cGU6IFBpdm90RGltZW5zaW9uVHlwZS5GaWx0ZXIsXG4gICAgICAgICAgICBkYXRhS2V5OiBcImZpbHRlckRpbWVuc2lvbnNcIixcbiAgICAgICAgICAgIGljb246IFwiZmlsdGVyX2xpc3RcIixcbiAgICAgICAgICAgIGl0ZW1LZXk6IFwibWVtYmVyTmFtZVwiLFxuICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZHJhZ0NoYW5uZWxzOiBbXCJGaWx0ZXJzXCIsIFwiQ29sdW1uc1wiLCBcIlJvd3NcIl1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJDb2x1bW5zXCIsXG4gICAgICAgICAgICBpMThuOiAnaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfY29sdW1ucycsXG4gICAgICAgICAgICB0eXBlOiBQaXZvdERpbWVuc2lvblR5cGUuQ29sdW1uLFxuICAgICAgICAgICAgZGF0YUtleTogXCJjb2x1bW5EaW1lbnNpb25zXCIsXG4gICAgICAgICAgICBpY29uOiBcInZpZXdfY29sdW1uXCIsXG4gICAgICAgICAgICBpdGVtS2V5OiBcIm1lbWJlck5hbWVcIixcbiAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZHJhZ0NoYW5uZWxzOiBbXCJGaWx0ZXJzXCIsIFwiQ29sdW1uc1wiLCBcIlJvd3NcIl1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJSb3dzXCIsXG4gICAgICAgICAgICBpMThuOiAnaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3Jfcm93cycsXG4gICAgICAgICAgICB0eXBlOiBQaXZvdERpbWVuc2lvblR5cGUuUm93LFxuICAgICAgICAgICAgZGF0YUtleTogXCJyb3dEaW1lbnNpb25zXCIsXG4gICAgICAgICAgICBpY29uOiBcInRhYmxlX3Jvd3NcIixcbiAgICAgICAgICAgIGl0ZW1LZXk6IFwibWVtYmVyTmFtZVwiLFxuICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICBkcmFnQ2hhbm5lbHM6IFtcIkZpbHRlcnNcIiwgXCJDb2x1bW5zXCIsIFwiUm93c1wiXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlZhbHVlc1wiLFxuICAgICAgICAgICAgaTE4bjogJ2lneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3ZhbHVlcycsXG4gICAgICAgICAgICB0eXBlOiBudWxsLFxuICAgICAgICAgICAgZGF0YUtleTogXCJ2YWx1ZXNcIixcbiAgICAgICAgICAgIGljb246IFwiZnVuY3Rpb25zXCIsXG4gICAgICAgICAgICBpdGVtS2V5OiBcIm1lbWJlclwiLFxuICAgICAgICAgICAgZGlzcGxheUtleTogJ2Rpc3BsYXlOYW1lJyxcbiAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGRyYWdDaGFubmVsczogW1wiVmFsdWVzXCJdXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBkaXNwbGF5RGVuc2l0eSgpOiBEaXNwbGF5RGVuc2l0eSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQ/LmRpc3BsYXlEZW5zaXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IHNldHMgdGhlIGdyaWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGdyaWQodmFsdWU6IFBpdm90R3JpZFR5cGUpIHtcbiAgICAgICAgdGhpcy5fZ3JpZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGdyaWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBncmlkKCk6IFBpdm90R3JpZFR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uSXRlbVNvcnQoXG4gICAgICAgIF86IEV2ZW50LFxuICAgICAgICBkaW1lbnNpb246IElQaXZvdERpbWVuc2lvbixcbiAgICAgICAgZGltZW5zaW9uVHlwZTogUGl2b3REaW1lbnNpb25UeXBlXG4gICAgKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLl9wYW5lbHMuZmluZChcbiAgICAgICAgICAgICAgICAocGFuZWw6IElEYXRhU2VsZWN0b3JQYW5lbCkgPT4gcGFuZWwudHlwZSA9PT0gZGltZW5zaW9uVHlwZVxuICAgICAgICAgICAgKS5zb3J0YWJsZVxuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc3RhcnREaXJlY3Rpb24gPSBkaW1lbnNpb24uc29ydERpcmVjdGlvbiB8fCBTb3J0aW5nRGlyZWN0aW9uLk5vbmU7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHN0YXJ0RGlyZWN0aW9uICsgMSA+IFNvcnRpbmdEaXJlY3Rpb24uRGVzYyA/XG4gICAgICAgICAgICBTb3J0aW5nRGlyZWN0aW9uLk5vbmUgOiBzdGFydERpcmVjdGlvbiArIDE7XG4gICAgICAgIHRoaXMuZ3JpZC5zb3J0RGltZW5zaW9uKGRpbWVuc2lvbiwgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uRmlsdGVyaW5nSWNvblBvaW50ZXJEb3duKGV2ZW50OiBQb2ludGVyRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkZpbHRlcmluZ0ljb25DbGljayhldmVudDogTW91c2VFdmVudCwgZGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24pIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgbGV0IGRpbSA9IGRpbWVuc2lvbjtcbiAgICAgICAgbGV0IGNvbDogQ29sdW1uVHlwZTtcblxuICAgICAgICB3aGlsZSAoZGltKSB7XG4gICAgICAgICAgICBjb2wgPSB0aGlzLmdyaWQuZGltZW5zaW9uRGF0YUNvbHVtbnMuZmluZChcbiAgICAgICAgICAgICAgICAoeCkgPT4geC5maWVsZCA9PT0gZGltLm1lbWJlck5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoY29sKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpbSA9IGRpbS5jaGlsZExldmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmlkLmZpbHRlcmluZ1NlcnZpY2UudG9nZ2xlRmlsdGVyRHJvcGRvd24oZXZlbnQudGFyZ2V0LCBjb2wpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0RGltZW5zaW9uU3RhdGUoZGltZW5zaW9uVHlwZTogUGl2b3REaW1lbnNpb25UeXBlKSB7XG4gICAgICAgIHN3aXRjaCAoZGltZW5zaW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuUm93OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQucm93RGltZW5zaW9ucztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkNvbHVtbjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmNvbHVtbkRpbWVuc2lvbnM7XG4gICAgICAgICAgICBjYXNlIFBpdm90RGltZW5zaW9uVHlwZS5GaWx0ZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5maWx0ZXJEaW1lbnNpb25zO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbW92ZVZhbHVlSXRlbShpdGVtSWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbiA9IHRoaXMuZ3JpZC5waXZvdENvbmZpZ3VyYXRpb24udmFsdWVzO1xuICAgICAgICBjb25zdCB2YWx1ZUluZGV4ID1cbiAgICAgICAgICAgIGFnZ3JlZ2F0aW9uLmZpbmRJbmRleCgoeCkgPT4geC5tZW1iZXIgPT09IGl0ZW1JZCkgIT09IC0xXG4gICAgICAgICAgICAgICAgPyBhZ2dyZWdhdGlvbj8uZmluZEluZGV4KCh4KSA9PiB4Lm1lbWJlciA9PT0gaXRlbUlkKVxuICAgICAgICAgICAgICAgIDogYWdncmVnYXRpb24ubGVuZ3RoO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZUluZGV4ID1cbiAgICAgICAgICAgIHZhbHVlSW5kZXggKyB0aGlzLl9kcm9wRGVsdGEgPCAwID8gMCA6IHZhbHVlSW5kZXggKyB0aGlzLl9kcm9wRGVsdGE7XG5cbiAgICAgICAgY29uc3QgYWdncmVnYXRpb25JdGVtID0gYWdncmVnYXRpb24uZmluZChcbiAgICAgICAgICAgICh4KSA9PiB4Lm1lbWJlciA9PT0gaXRlbUlkIHx8IHguZGlzcGxheU5hbWUgPT09IGl0ZW1JZFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChhZ2dyZWdhdGlvbkl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5tb3ZlVmFsdWUoYWdncmVnYXRpb25JdGVtLCBuZXdWYWx1ZUluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC52YWx1ZXNDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgdmFsdWVzOiB0aGlzLmdyaWQucGl2b3RDb25maWd1cmF0aW9uLnZhbHVlcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1Ecm9wcGVkKFxuICAgICAgICBldmVudDogSURyb3BEcm9wcGVkRXZlbnRBcmdzLFxuICAgICAgICBkaW1lbnNpb25UeXBlOiBQaXZvdERpbWVuc2lvblR5cGVcbiAgICApIHtcbiAgICAgICAgaWYgKCF0aGlzLmRyb3BBbGxvd2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaW1lbnNpb24gPSB0aGlzLmdyaWQuZ2V0RGltZW5zaW9uc0J5VHlwZShkaW1lbnNpb25UeXBlKTtcbiAgICAgICAgY29uc3QgZGltZW5zaW9uU3RhdGUgPSB0aGlzLmdldERpbWVuc2lvblN0YXRlKGRpbWVuc2lvblR5cGUpO1xuICAgICAgICBjb25zdCBpdGVtSWQgPSBldmVudC5kcmFnLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pZDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SWQgPSBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaWQ7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbkl0ZW0gPSBkaW1lbnNpb24/LmZpbmQoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gaXRlbUlkKTtcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID1cbiAgICAgICAgICAgIGRpbWVuc2lvbj8uZmluZEluZGV4KCh4KSA9PiB4Py5tZW1iZXJOYW1lID09PSBpdGVtSWQpICE9PSAtMVxuICAgICAgICAgICAgICAgID8gZGltZW5zaW9uPy5maW5kSW5kZXgoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gaXRlbUlkKVxuICAgICAgICAgICAgICAgIDogZGltZW5zaW9uPy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbnMgPSB0aGlzLmdyaWQuYWxsRGltZW5zaW9ucy5maWx0ZXIoKHgpID0+IHggJiYgeC5tZW1iZXJOYW1lID09PSBpdGVtSWQpO1xuXG4gICAgICAgIGNvbnN0IHJlb3JkZXIgPVxuICAgICAgICAgICAgZGltZW5zaW9uU3RhdGU/LmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5tZW1iZXJOYW1lID09PSBpdGVtSWQpICE9PVxuICAgICAgICAgICAgLTE7XG5cbiAgICAgICAgbGV0IHRhcmdldEluZGV4ID1cbiAgICAgICAgICAgIHRhcmdldElkICE9PSBcIlwiXG4gICAgICAgICAgICAgICAgPyBkaW1lbnNpb24/LmZpbmRJbmRleCgoeCkgPT4geC5tZW1iZXJOYW1lID09PSB0YXJnZXRJZClcbiAgICAgICAgICAgICAgICA6IGRpbWVuc2lvbj8ubGVuZ3RoO1xuXG4gICAgICAgIGlmICghZGltZW5zaW9uKSB7XG4gICAgICAgICAgICB0aGlzLm1vdmVWYWx1ZUl0ZW0oaXRlbUlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZW9yZGVyKSB7XG4gICAgICAgICAgICB0YXJnZXRJbmRleCA9XG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ICsgdGhpcy5fZHJvcERlbHRhIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgOiBpdGVtSW5kZXggKyB0aGlzLl9kcm9wRGVsdGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGltZW5zaW9uSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLm1vdmVEaW1lbnNpb24oZGltZW5zaW9uSXRlbSwgZGltZW5zaW9uVHlwZSwgdGFyZ2V0SW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmV3RGltID0gZGltZW5zaW9ucy5maW5kKCh4KSA9PiB4Lm1lbWJlck5hbWUgPT09IGl0ZW1JZCk7XG4gICAgICAgICAgICB0aGlzLmdyaWQubW92ZURpbWVuc2lvbihuZXdEaW0sIGRpbWVuc2lvblR5cGUsIHRhcmdldEluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ3JpZC5kaW1lbnNpb25zQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgZGltZW5zaW9uczogZGltZW5zaW9uLFxuICAgICAgICAgICAgZGltZW5zaW9uQ29sbGVjdGlvblR5cGU6IGRpbWVuc2lvblR5cGUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRHJvcERvd24oXG4gICAgICAgIHZhbHVlOiBJUGl2b3RWYWx1ZSxcbiAgICAgICAgZHJvcGRvd246IElneERyb3BEb3duQ29tcG9uZW50XG4gICAgKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgZHJvcGRvd24ud2lkdGggPSBcIjIwMHB4XCI7XG4gICAgICAgIHRoaXMuYWdncmVnYXRlTGlzdCA9IFBpdm90VXRpbC5nZXRBZ2dyZWdhdGVMaXN0KHZhbHVlLCB0aGlzLmdyaWQpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGRyb3Bkb3duLm9wZW4odGhpcy5fc3ViTWVudU92ZXJsYXlTZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvblN1bW1hcnlDbGljayhcbiAgICAgICAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gICAgICAgIHZhbHVlOiBJUGl2b3RWYWx1ZSxcbiAgICAgICAgZHJvcGRvd246IElneERyb3BEb3duQ29tcG9uZW50XG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3N1Yk1lbnVPdmVybGF5U2V0dGluZ3MudGFyZ2V0ID1cbiAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGRyb3Bkb3duLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVEcm9wRG93bih2YWx1ZSwgZHJvcGRvd24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gY2xvc2UgZm9yIHByZXZpb3VzIGNoaXBcbiAgICAgICAgICAgIGRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICAgICAgICBkcm9wZG93bi5jbG9zZWQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRHJvcERvd24odmFsdWUsIGRyb3Bkb3duKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkFnZ3JlZ2F0aW9uQ2hhbmdlKGV2ZW50OiBJU2VsZWN0aW9uRXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKGV2ZW50Lm5ld1NlbGVjdGlvbi52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUuYWdncmVnYXRlID0gZXZlbnQubmV3U2VsZWN0aW9uLnZhbHVlO1xuICAgICAgICAgICAgdGhpcy5ncmlkLnBpcGVUcmlnZ2VyKys7XG4gICAgICAgICAgICB0aGlzLmdyaWQuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc1NlbGVjdGVkKHZhbDogSVBpdm90QWdncmVnYXRvcikge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5hZ2dyZWdhdGUua2V5ID09PSB2YWwua2V5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2hvc3RDcmVhdGVkKGV2ZW50OiBJRHJhZ0dob3N0QmFzZUV2ZW50QXJncywgdmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCB7IHdpZHRoOiBpdGVtV2lkdGggfSA9XG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHRoaXMuZ2hvc3RXaWR0aCA9IGl0ZW1XaWR0aDtcbiAgICAgICAgdGhpcy5naG9zdFRleHQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIFwicG9zaXRpb25cIixcbiAgICAgICAgICAgIFwiYWJzb2x1dGVcIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgXCJ2aXNpYmlsaXR5XCIsXG4gICAgICAgICAgICBcImhpZGRlblwiXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGVJdGVtKGl0ZW06IElQaXZvdERpbWVuc2lvbiB8IElQaXZvdFZhbHVlKSB7XG4gICAgICAgIGlmIChpdGVtIGFzIElQaXZvdFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQudG9nZ2xlVmFsdWUoaXRlbSBhcyBJUGl2b3RWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSBhcyBJUGl2b3REaW1lbnNpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC50b2dnbGVEaW1lbnNpb24oaXRlbSBhcyBJUGl2b3REaW1lbnNpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvblBhbmVsRW50cnkoZXZlbnQ6IElEcm9wQmFzZUV2ZW50QXJncywgcGFuZWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLmRyb3BBbGxvd2VkID0gZXZlbnQuZHJhZ0RhdGEuZ3JpZElEID09PSB0aGlzLmdyaWQuaWQgJiYgZXZlbnQuZHJhZ0RhdGEuc2VsZWN0b3JDaGFubmVscz8uc29tZShcbiAgICAgICAgICAgIChjaGFubmVsOiBzdHJpbmcpID0+IGNoYW5uZWwgPT09IHBhbmVsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1EcmFnTW92ZShldmVudDogSURyYWdNb3ZlRXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGNsaWVudFJlY3QgPVxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLl9kcm9wRGVsdGEgPSBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgKGV2ZW50Lm5leHRQYWdlWSAtIGV2ZW50LnN0YXJ0WSkgLyBjbGllbnRSZWN0LmhlaWdodFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25JdGVtRHJhZ0VuZChldmVudDogSURyYWdCYXNlRXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBcInBvc2l0aW9uXCIsXG4gICAgICAgICAgICBcInN0YXRpY1wiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBcInZpc2liaWxpdHlcIixcbiAgICAgICAgICAgIFwidmlzaWJsZVwiXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1EcmFnT3ZlcihldmVudDogSURyb3BCYXNlRXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3BBbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICBcImlneC1kcmFnLS1wdXNoXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uSXRlbURyYWdMZWF2ZShldmVudDogSURyb3BCYXNlRXZlbnRBcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3BBbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKFxuICAgICAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICBcImlneC1kcmFnLS1wdXNoXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldFBhbmVsQ29sbGFwc2VkKHBhbmVsVHlwZTogUGl2b3REaW1lbnNpb25UeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHN3aXRjaCAocGFuZWxUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFBpdm90RGltZW5zaW9uVHlwZS5Db2x1bW46XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmNvbHVtbnNFeHBhbmRlZDtcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkZpbHRlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZmlsdGVyc0V4cGFuZGVkO1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuUm93OlxuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5yb3dzRXhwYW5kZWQ7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy52YWx1ZXNFeHBhbmRlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Db2xsYXBzZUNoYW5nZSh2YWx1ZTogYm9vbGVhbiwgcGFuZWxUeXBlOiBQaXZvdERpbWVuc2lvblR5cGUpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChwYW5lbFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkNvbHVtbjpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnNFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnNFeHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuY29sdW1uc0V4cGFuZGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkZpbHRlcjpcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNFeHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZmlsdGVyc0V4cGFuZGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLlJvdzpcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NFeHBhbmRlZENoYW5nZS5lbWl0KHRoaXMucm93c0V4cGFuZGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXNFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlc0V4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy52YWx1ZXNFeHBhbmRlZClcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fZmlsdGVyXCI+XG4gICAgPGlneC1pbnB1dC1ncm91cCB0eXBlPVwiYm94XCIgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCI+XG4gICAgICAgIDxpZ3gtaWNvbiBpZ3hQcmVmaXg+c2VhcmNoPC9pZ3gtaWNvbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIGlneElucHV0XG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgLz5cbiAgICA8L2lneC1pbnB1dC1ncm91cD5cbiAgICA8aWd4LWxpc3QgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCI+XG4gICAgICAgIDxpZ3gtbGlzdC1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBkaW1zXG4gICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyUGl2b3RJdGVtczogaW5wdXQudmFsdWU6Z3JpZD8ucGlwZVRyaWdnZXJcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbaWRdPVwiaXRlbS5tZW1iZXJOYW1lXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlneC1jaGVja2JveFxuICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsbGVkYnldPVwiaXRlbS5tZW1iZXJOYW1lXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtLmVuYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgID48L2lneC1jaGVja2JveD5cbiAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubWVtYmVyTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9pZ3gtbGlzdC1pdGVtPlxuICAgICAgICA8aWd4LWxpc3QtaXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyUGl2b3RJdGVtczogaW5wdXQudmFsdWU6Z3JpZD8ucGlwZVRyaWdnZXJcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbaWRdPVwiaXRlbS5tZW1iZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxsZWRieV09XCJpdGVtLm1lbWJlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbS5lbmFibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlSXRlbShpdGVtKVwiXG4gICAgICAgICAgICA+PC9pZ3gtY2hlY2tib3g+XG4gICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmRpc3BsYXlOYW1lIHx8IGl0ZW0ubWVtYmVyIH19PC9zcGFuPlxuICAgICAgICA8L2lneC1saXN0LWl0ZW0+XG4gICAgPC9pZ3gtbGlzdD5cbjwvZGl2PlxuXG48aWd4LWFjY29yZGlvbj5cbiAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbFxuICAgICAgICAqbmdGb3I9XCJsZXQgcGFuZWwgb2YgX3BhbmVsc1wiXG4gICAgICAgIFthbmltYXRpb25TZXR0aW5nc109XCJhbmltYXRpb25TZXR0aW5nc1wiXG4gICAgICAgIFtjb2xsYXBzZWRdPVwiZ2V0UGFuZWxDb2xsYXBzZWQocGFuZWwudHlwZSlcIlxuICAgICAgICAoY29sbGFwc2VkQ2hhbmdlKT1cIm9uQ29sbGFwc2VDaGFuZ2UoJGV2ZW50LCBwYW5lbC50eXBlKVwiXG4gICAgPlxuICAgICAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcbiAgICAgICAgICAgIGljb25Qb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgIGlneERyb3BcbiAgICAgICAgICAgIChlbnRlcik9XCJvblBhbmVsRW50cnkoJGV2ZW50LCBwYW5lbC5uYW1lKVwiXG4gICAgICAgICAgICAoZHJvcHBlZCk9XCJvbkl0ZW1Ecm9wcGVkKCRldmVudCwgcGFuZWwudHlwZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbC10aXRsZSBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faGVhZGVyLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdyaWQ/LnJlc291cmNlU3RyaW5nc1twYW5lbC5pMThuXSB9fVxuICAgICAgICAgICAgICAgIDwvaDY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19oZWFkZXItZXh0cmFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlneC1pY29uPnt7IHBhbmVsLmljb24gfX08L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8aWd4LWNoaXA+e3sgdGhpcy5ncmlkID8gdGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldLmxlbmd0aCA6IDAgfX08L2lneC1jaGlwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsLXRpdGxlPlxuICAgICAgICA8L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1ib2R5XG4gICAgICAgICAgICBpZ3hEcm9wXG4gICAgICAgICAgICAoZW50ZXIpPVwib25QYW5lbEVudHJ5KCRldmVudCwgcGFuZWwubmFtZSlcIlxuICAgICAgICAgICAgKGRyb3BwZWQpPVwib25JdGVtRHJvcHBlZCgkZXZlbnQsIHBhbmVsLnR5cGUpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlneC1saXN0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmdyaWQgJiYgdGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5RGVuc2l0eV09XCJkaXNwbGF5RGVuc2l0eVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlneC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgaWd4RHJvcFxuICAgICAgICAgICAgICAgICAgICBbaWd4RHJhZ109XCJ7IGdyaWRJRDogZ3JpZC5pZCwgc2VsZWN0b3JDaGFubmVsczogcGFuZWwuZHJhZ0NoYW5uZWxzIH1cIlxuICAgICAgICAgICAgICAgICAgICBbZ2hvc3RUZW1wbGF0ZV09XCJpdGVtR2hvc3RcIlxuICAgICAgICAgICAgICAgICAgICAoZ2hvc3RDcmVhdGUpPVwiZ2hvc3RDcmVhdGVkKCRldmVudCwgaXRlbVtwYW5lbC5pdGVtS2V5XSlcIlxuICAgICAgICAgICAgICAgICAgICAob3Zlcik9XCJvbkl0ZW1EcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGxlYXZlKT1cIm9uSXRlbURyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGRyYWdNb3ZlKT1cIm9uSXRlbURyYWdNb3ZlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZHJhZ0VuZCk9XCJvbkl0ZW1EcmFnRW5kKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZHJvcHBlZCk9XCJvbkl0ZW1Ecm9wcGVkKCRldmVudCwgcGFuZWwudHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIHRoaXMuZ3JpZFtwYW5lbC5kYXRhS2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaXRlbVtwYW5lbC5pdGVtS2V5XVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLXN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtU29ydCgkZXZlbnQsIGl0ZW0sIHBhbmVsLnR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1zb3J0XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5zb3J0YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYW5lbC50eXBlID09PSBudWxsXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYWdncmVnYXRlLmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYW5lbC50eXBlID09PSBudWxsXCI+KDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbVtwYW5lbC5kaXNwbGF5S2V5XSB8fCBpdGVtW3BhbmVsLml0ZW1LZXldIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhbmVsLnR5cGUgPT09IG51bGxcIj4pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZ3gtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19hY3Rpb24tc29ydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFuZWwuc29ydGFibGUgJiYgaXRlbS5zb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNvcnREaXJlY3Rpb24gPCAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImFycm93X3Vwd2FyZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcImFycm93X2Rvd253YXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW0tZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlneC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhbmVsLnR5cGUgIT09IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlcmluZ0ljb25Qb2ludGVyRG93bigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlcmluZ0ljb25DbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPmZpbHRlcl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pZ3gtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fYWN0aW9uLXN1bW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhbmVsLnR5cGUgPT09IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdW1tYXJ5Q2xpY2soJGV2ZW50LCBpdGVtLCBkcm9wZG93bilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbl09XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZ3gtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ3hEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1tb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYW5lbC5kcmFnQ2hhbm5lbHMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5kcmFnX2hhbmRsZTwvaWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9pZ3gtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC9pZ3gtbGlzdD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19lbXB0eVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmdyaWQgJiYgdGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZ3JpZD8ucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3BhbmVsX2VtcHR5IH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWJvZHk+XG4gICAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuPC9pZ3gtYWNjb3JkaW9uPlxuXG48aWd4LWRyb3AtZG93biAjZHJvcGRvd24gKHNlbGVjdGlvbkNoYW5naW5nKT1cIm9uQWdncmVnYXRpb25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDxpZ3gtZHJvcC1kb3duLWl0ZW1cbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWdncmVnYXRlTGlzdFwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgID5cbiAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgIDwvaWd4LWRyb3AtZG93bi1pdGVtPlxuPC9pZ3gtZHJvcC1kb3duPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1HaG9zdD5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW0tZ2hvc3RcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiZ2hvc3RXaWR0aFwiXG4gICAgICAgIFtjbGFzcy5pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faXRlbS1naG9zdC0tbm8tZHJvcF09XCIhZHJvcEFsbG93ZWRcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLWdob3N0LXRleHRcIj5cbiAgICAgICAgICAgIDxpZ3gtaWNvbj51bmZvbGRfbW9yZTwvaWd4LWljb24+XG4gICAgICAgICAgICA8c3Bhbj57eyBnaG9zdFRleHQgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aWd4LWljb24+ZHJhZ19oYW5kbGU8L2lneC1pY29uPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|