@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
152 lines • 24 kB
JavaScript
import { Component, Inject, Input } from '@angular/core';
import { TaskRefDashboardConstants } from '../../model/task-ref-dashboard-constants';
import { TaskRefDashboardTileConstants } from '../../model/task-ref-dashboard-tile-constants';
import { switchMap } from 'rxjs/operators';
import { FieldTypeResource } from '../../../../task-content/model/field-type-resource';
import { NAE_TASK_OPERATIONS } from '../../../../task/models/task-operations-injection-token';
import { AfterAction } from '../../../../utility/call-chain/after-action';
import * as i0 from "@angular/core";
import * as i1 from "../../../../resources/engine-endpoint/case-resource.service";
import * as i2 from "../../../../process/process.service";
import * as i3 from "../../../../logger/services/logger.service";
import * as i4 from "../../../../resources/engine-endpoint/task-resource.service";
import * as i5 from "../../../../utility/call-chain/call-chain.service";
import * as i6 from "../../../../task-content/services/task-content.service";
import * as i7 from "../../../../task/services/task-data.service";
export class AbstractTaskRefDashboardTileComponent {
_caseResourceService;
_processService;
_logger;
_taskResourceService;
_callChainService;
_parentTaskContentService;
_taskDataService;
_taskOperations;
tile;
taskRef;
fc;
_sub;
caseCreating = false;
constructor(_caseResourceService, _processService, _logger, _taskResourceService, _callChainService, _parentTaskContentService, _taskDataService, _taskOperations) {
this._caseResourceService = _caseResourceService;
this._processService = _processService;
this._logger = _logger;
this._taskResourceService = _taskResourceService;
this._callChainService = _callChainService;
this._parentTaskContentService = _parentTaskContentService;
this._taskDataService = _taskDataService;
this._taskOperations = _taskOperations;
}
ngOnDestroy() {
if (this._sub !== undefined) {
this._sub.unsubscribe();
}
}
createNewDashboardTile() {
if (this.caseCreating) {
return;
}
this.caseCreating = true;
this._sub = this._processService.getNet(TaskRefDashboardTileConstants.DASHBOARD_TILE_PROCESS_IDENTIFIER).pipe(switchMap(net => this._caseResourceService.createCase({
netId: net.stringId,
title: `tile (${this.tile.x}, ${this.tile.y})`
}))).subscribe(outcome => {
if (outcome.error) {
this._logger.error(`Could not create task ref dashboard tile case`, outcome.error);
return;
}
const _case = outcome.outcome.aCase;
// set tile info
this.assignSetData(_case.tasks[0].task, {
[_case.tasks[0].task]: {
[TaskRefDashboardTileConstants.DASHBOARD_TILE_X]: {
type: FieldTypeResource.NUMBER,
value: this.tile.x
},
[TaskRefDashboardTileConstants.DASHBOARD_TILE_Y]: {
type: FieldTypeResource.NUMBER,
value: this.tile.y
},
[TaskRefDashboardTileConstants.DASHBOARD_TILE_ROWS]: {
type: FieldTypeResource.NUMBER,
value: this.tile.rows
},
[TaskRefDashboardTileConstants.DASHBOARD_TILE_COLS]: {
type: FieldTypeResource.NUMBER,
value: this.tile.cols
},
[TaskRefDashboardTileConstants.DASHBOARD_TILE_PARENT_ID]: {
type: FieldTypeResource.TEXT,
value: this._parentTaskContentService.task.caseId
}
}
}, this._callChainService.create(success => {
if (!success) {
return;
}
// reference new tile in task ref
this._taskResourceService.setData(this._parentTaskContentService.task.stringId, {
[this._parentTaskContentService.task.stringId]: {
[TaskRefDashboardConstants.DASHBOARD_TASK_REF]: {
type: FieldTypeResource.TASK_REF,
value: [...this.taskRef.value, _case.tasks[0].task]
}
}
}).subscribe(outcome => {
if (outcome.error) {
this._logger.error(`Could not reference created task ref dashboard tile in the task ref`, outcome.error);
return;
}
this._taskDataService.initializeTaskDataFields(new AfterAction(), true);
}, error => {
this._logger.error(`Could not reference created task ref dashboard tile in the task ref`, error);
});
}));
}, error => {
this._logger.error(`Could not create task ref dashboard tile case`, error);
});
}
// TODO copy of a similar method found in UserFilterService
assignSetData(taskId, data, callChain) {
this._taskResourceService.assignTask(taskId).subscribe(assignOutcome => {
if (assignOutcome.error) {
this._logger.error(`Could not assign task '${taskId}'`, assignOutcome.error);
callChain.next(false);
return;
}
this._taskResourceService.setData(taskId, data).subscribe(setDataOutcome => {
if (setDataOutcome.error) {
this._logger.error(`Could not set data of task '${taskId}'`, data, setDataOutcome.error);
callChain.next(false);
return;
}
callChain.next(true);
}, error => {
this._logger.error(`Could not set data of task '${taskId}'`, data, error);
callChain.next(false);
});
}, error => {
this._logger.error(`Could not assign task '${taskId}'`, error);
callChain.next(false);
});
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractTaskRefDashboardTileComponent, deps: [{ token: i1.CaseResourceService }, { token: i2.ProcessService }, { token: i3.LoggerService }, { token: i4.TaskResourceService }, { token: i5.CallChainService }, { token: i6.TaskContentService }, { token: i7.TaskDataService }, { token: NAE_TASK_OPERATIONS }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractTaskRefDashboardTileComponent, selector: "ncc-abstract-task-ref-dashboard-tile", inputs: { tile: "tile", taskRef: "taskRef", fc: "fc" }, ngImport: i0, template: '', isInline: true });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractTaskRefDashboardTileComponent, decorators: [{
type: Component,
args: [{
selector: 'ncc-abstract-task-ref-dashboard-tile',
template: '',
}]
}], ctorParameters: () => [{ type: i1.CaseResourceService }, { type: i2.ProcessService }, { type: i3.LoggerService }, { type: i4.TaskResourceService }, { type: i5.CallChainService }, { type: i6.TaskContentService }, { type: i7.TaskDataService }, { type: undefined, decorators: [{
type: Inject,
args: [NAE_TASK_OPERATIONS]
}] }], propDecorators: { tile: [{
type: Input
}], taskRef: [{
type: Input
}], fc: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGFzay1yZWYtZGFzaGJvYXJkLXRpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9kYXRhLWZpZWxkcy90YXNrLXJlZi1maWVsZC90YXNrLXJlZi1kYXNoYm9hcmQtZmllbGQvdGFzay1yZWYtZGFzaGJvYXJkLXRpbGUvYWJzdHJhY3QtdGFzay1yZWYtZGFzaGJvYXJkLXRpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUlsRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUc1RixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFPekMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFHckYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFFNUYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7Ozs7QUFNeEUsTUFBTSxPQUFnQixxQ0FBcUM7SUFTdkI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDNkI7SUFkcEQsSUFBSSxDQUF1QjtJQUMzQixPQUFPLENBQWU7SUFDdEIsRUFBRSxDQUFjO0lBRWpCLElBQUksQ0FBZTtJQUNuQixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBRTdCLFlBQWdDLG9CQUF5QyxFQUN6QyxlQUErQixFQUMvQixPQUFzQixFQUN0QixvQkFBeUMsRUFDekMsaUJBQW1DLEVBQ25DLHlCQUE2QyxFQUM3QyxnQkFBaUMsRUFDSixl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Q0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBeEhpQixxQ0FBcUMsb1BBZ0J6QixtQkFBbUI7NEZBaEIvQixxQ0FBcUMsb0lBRjdDLEVBQUU7OzRGQUVNLHFDQUFxQztrQkFKMUQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0NBQXNDO29CQUNoRCxRQUFRLEVBQUUsRUFBRTtpQkFDZjs7MEJBaUIwQixNQUFNOzJCQUFDLG1CQUFtQjt5Q0FkeEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGFza1JlZkRhc2hib2FyZFRpbGV9IGZyb20gJy4uLy4uL21vZGVsL3Rhc2stcmVmLWRhc2hib2FyZC10aWxlJztcbmltcG9ydCB7Q2FzZVJlc291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC9jYXNlLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtUYXNrUmVmRmllbGR9IGZyb20gJy4uLy4uL21vZGVsL3Rhc2stcmVmLWZpZWxkJztcbmltcG9ydCB7VGFza1JlZkRhc2hib2FyZENvbnN0YW50c30gZnJvbSAnLi4vLi4vbW9kZWwvdGFzay1yZWYtZGFzaGJvYXJkLWNvbnN0YW50cyc7XG5pbXBvcnQge1Rhc2tSZWZEYXNoYm9hcmRUaWxlQ29uc3RhbnRzfSBmcm9tICcuLi8uLi9tb2RlbC90YXNrLXJlZi1kYXNoYm9hcmQtdGlsZS1jb25zdGFudHMnO1xuaW1wb3J0IHtTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQcm9jZXNzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vcHJvY2Vzcy9wcm9jZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHtzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Q3JlYXRlQ2FzZUV2ZW50T3V0Y29tZX0gZnJvbSAnLi4vLi4vLi4vLi4vZXZlbnQvbW9kZWwvZXZlbnQtb3V0Y29tZXMvY2FzZS1vdXRjb21lcy9jcmVhdGUtY2FzZS1ldmVudC1vdXRjb21lJztcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7VGFza1NldERhdGFSZXF1ZXN0Qm9keX0gZnJvbSAnLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrLXNldC1kYXRhLXJlcXVlc3QtYm9keSc7XG5pbXBvcnQge1Rhc2tSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvdGFzay1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7Q2FsbENoYWluU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0eS9jYWxsLWNoYWluL2NhbGwtY2hhaW4uc2VydmljZSc7XG5pbXBvcnQge0ZpZWxkVHlwZVJlc291cmNlfSBmcm9tICcuLi8uLi8uLi8uLi90YXNrLWNvbnRlbnQvbW9kZWwvZmllbGQtdHlwZS1yZXNvdXJjZSc7XG5pbXBvcnQge1Rhc2tDb250ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vdGFzay1jb250ZW50L3NlcnZpY2VzL3Rhc2stY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7VGFza09wZXJhdGlvbnN9IGZyb20gJy4uLy4uLy4uLy4uL3Rhc2svaW50ZXJmYWNlcy90YXNrLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHtOQUVfVEFTS19PUEVSQVRJT05TfSBmcm9tICcuLi8uLi8uLi8uLi90YXNrL21vZGVscy90YXNrLW9wZXJhdGlvbnMtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7VGFza0RhdGFTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi90YXNrL3NlcnZpY2VzL3Rhc2stZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7QWZ0ZXJBY3Rpb259IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdHkvY2FsbC1jaGFpbi9hZnRlci1hY3Rpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jYy1hYnN0cmFjdC10YXNrLXJlZi1kYXNoYm9hcmQtdGlsZScsXG4gICAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFRhc2tSZWZEYXNoYm9hcmRUaWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIHRpbGU6IFRhc2tSZWZEYXNoYm9hcmRUaWxlO1xuICAgIEBJbnB1dCgpIHRhc2tSZWY6IFRhc2tSZWZGaWVsZDtcbiAgICBASW5wdXQoKSBmYzogRm9ybUNvbnRyb2w7XG5cbiAgICBwcml2YXRlIF9zdWI6IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGNhc2VDcmVhdGluZyA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfY2FzZVJlc291cmNlU2VydmljZTogQ2FzZVJlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9wcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Rhc2tSZXNvdXJjZVNlcnZpY2U6IFRhc2tSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY2FsbENoYWluU2VydmljZTogQ2FsbENoYWluU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9wYXJlbnRUYXNrQ29udGVudFNlcnZpY2U6IFRhc2tDb250ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90YXNrRGF0YVNlcnZpY2U6IFRhc2tEYXRhU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQEluamVjdChOQUVfVEFTS19PUEVSQVRJT05TKSBwcm90ZWN0ZWQgX3Rhc2tPcGVyYXRpb25zOiBUYXNrT3BlcmF0aW9ucykge1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc3ViICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZU5ld0Rhc2hib2FyZFRpbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNhc2VDcmVhdGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FzZUNyZWF0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fc3ViID0gdGhpcy5fcHJvY2Vzc1NlcnZpY2UuZ2V0TmV0KFRhc2tSZWZEYXNoYm9hcmRUaWxlQ29uc3RhbnRzLkRBU0hCT0FSRF9USUxFX1BST0NFU1NfSURFTlRJRklFUikucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChuZXQgPT4gdGhpcy5fY2FzZVJlc291cmNlU2VydmljZS5jcmVhdGVDYXNlKHtcbiAgICAgICAgICAgICAgICBuZXRJZDogbmV0LnN0cmluZ0lkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBgdGlsZSAoJHt0aGlzLnRpbGUueH0sICR7dGhpcy50aWxlLnl9KWBcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApLnN1YnNjcmliZShvdXRjb21lID0+IHtcbiAgICAgICAgICAgIGlmIChvdXRjb21lLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDb3VsZCBub3QgY3JlYXRlIHRhc2sgcmVmIGRhc2hib2FyZCB0aWxlIGNhc2VgLCBvdXRjb21lLmVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBfY2FzZSA9IChvdXRjb21lLm91dGNvbWUgYXMgQ3JlYXRlQ2FzZUV2ZW50T3V0Y29tZSkuYUNhc2U7XG5cbiAgICAgICAgICAgIC8vIHNldCB0aWxlIGluZm9cbiAgICAgICAgICAgIHRoaXMuYXNzaWduU2V0RGF0YShfY2FzZS50YXNrc1swXS50YXNrLCB7XG4gICAgICAgICAgICAgICAgW19jYXNlLnRhc2tzWzBdLnRhc2tdOiB7XG4gICAgICAgICAgICAgICAgICAgIFtUYXNrUmVmRGFzaGJvYXJkVGlsZUNvbnN0YW50cy5EQVNIQk9BUkRfVElMRV9YXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlUmVzb3VyY2UuTlVNQkVSLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGlsZS54XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtUYXNrUmVmRGFzaGJvYXJkVGlsZUNvbnN0YW50cy5EQVNIQk9BUkRfVElMRV9ZXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlUmVzb3VyY2UuTlVNQkVSLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGlsZS55XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtUYXNrUmVmRGFzaGJvYXJkVGlsZUNvbnN0YW50cy5EQVNIQk9BUkRfVElMRV9ST1dTXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlUmVzb3VyY2UuTlVNQkVSLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGlsZS5yb3dzXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtUYXNrUmVmRGFzaGJvYXJkVGlsZUNvbnN0YW50cy5EQVNIQk9BUkRfVElMRV9DT0xTXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlUmVzb3VyY2UuTlVNQkVSLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGlsZS5jb2xzXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtUYXNrUmVmRGFzaGJvYXJkVGlsZUNvbnN0YW50cy5EQVNIQk9BUkRfVElMRV9QQVJFTlRfSURdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5URVhULFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuX3BhcmVudFRhc2tDb250ZW50U2VydmljZS50YXNrLmNhc2VJZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdGhpcy5fY2FsbENoYWluU2VydmljZS5jcmVhdGUoc3VjY2VzcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyByZWZlcmVuY2UgbmV3IHRpbGUgaW4gdGFzayByZWZcbiAgICAgICAgICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLnNldERhdGEodGhpcy5fcGFyZW50VGFza0NvbnRlbnRTZXJ2aWNlLnRhc2suc3RyaW5nSWQsIHtcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMuX3BhcmVudFRhc2tDb250ZW50U2VydmljZS50YXNrLnN0cmluZ0lkXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgW1Rhc2tSZWZEYXNoYm9hcmRDb25zdGFudHMuREFTSEJPQVJEX1RBU0tfUkVGXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZVJlc291cmNlLlRBU0tfUkVGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbLi4udGhpcy50YXNrUmVmLnZhbHVlLCBfY2FzZS50YXNrc1swXS50YXNrXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkuc3Vic2NyaWJlKG91dGNvbWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3V0Y29tZS5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDb3VsZCBub3QgcmVmZXJlbmNlIGNyZWF0ZWQgdGFzayByZWYgZGFzaGJvYXJkIHRpbGUgaW4gdGhlIHRhc2sgcmVmYCwgb3V0Y29tZS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFza0RhdGFTZXJ2aWNlLmluaXRpYWxpemVUYXNrRGF0YUZpZWxkcyhuZXcgQWZ0ZXJBY3Rpb24oKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYENvdWxkIG5vdCByZWZlcmVuY2UgY3JlYXRlZCB0YXNrIHJlZiBkYXNoYm9hcmQgdGlsZSBpbiB0aGUgdGFzayByZWZgLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihgQ291bGQgbm90IGNyZWF0ZSB0YXNrIHJlZiBkYXNoYm9hcmQgdGlsZSBjYXNlYCwgZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPIGNvcHkgb2YgYSBzaW1pbGFyIG1ldGhvZCBmb3VuZCBpbiBVc2VyRmlsdGVyU2VydmljZVxuICAgIHByb3RlY3RlZCBhc3NpZ25TZXREYXRhKHRhc2tJZDogc3RyaW5nLCBkYXRhOiBUYXNrU2V0RGF0YVJlcXVlc3RCb2R5LCBjYWxsQ2hhaW46IFN1YmplY3Q8Ym9vbGVhbj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFza1Jlc291cmNlU2VydmljZS5hc3NpZ25UYXNrKHRhc2tJZCkuc3Vic2NyaWJlKGFzc2lnbk91dGNvbWUgPT4ge1xuICAgICAgICAgICAgaWYgKGFzc2lnbk91dGNvbWUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYENvdWxkIG5vdCBhc3NpZ24gdGFzayAnJHt0YXNrSWR9J2AsIGFzc2lnbk91dGNvbWUuZXJyb3IpO1xuICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3Rhc2tSZXNvdXJjZVNlcnZpY2Uuc2V0RGF0YSh0YXNrSWQsIGRhdGEpLnN1YnNjcmliZShzZXREYXRhT3V0Y29tZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNldERhdGFPdXRjb21lLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihgQ291bGQgbm90IHNldCBkYXRhIG9mIHRhc2sgJyR7dGFza0lkfSdgLCBkYXRhLCBzZXREYXRhT3V0Y29tZS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KHRydWUpO1xuXG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDb3VsZCBub3Qgc2V0IGRhdGEgb2YgdGFzayAnJHt0YXNrSWR9J2AsIGRhdGEsIGVycm9yKTtcbiAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDb3VsZCBub3QgYXNzaWduIHRhc2sgJyR7dGFza0lkfSdgLCBlcnJvcik7XG4gICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==