verben-workflow-ui 0.5.45 → 0.5.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/public-api.mjs +3 -1
- package/esm2022/src/lib/components/flowable-status/flowable-status.columns.mjs +21 -0
- package/esm2022/src/lib/components/flowable-status/flowable-status.component.mjs +122 -0
- package/esm2022/src/lib/components/flowable-status/flowable-status.facade.mjs +207 -0
- package/esm2022/src/lib/components/flowable-status/flowable-status.form.component.mjs +52 -0
- package/esm2022/src/lib/components/flowable-status/flowable-status.module.mjs +21 -0
- package/esm2022/src/lib/components/flowable-status/flowable-status.service.mjs +55 -0
- package/esm2022/src/lib/components/flowable-status/flowable-status.state.mjs +85 -0
- package/esm2022/src/lib/components/flowable-status/index.mjs +2 -0
- package/esm2022/src/lib/components/flowable-status/public-api.mjs +3 -0
- package/esm2022/src/lib/components/flowable-status/verben-workflow-ui-src-lib-components-flowable-status.mjs +5 -0
- package/esm2022/src/lib/components/workflow-designer/action-dialog/action-dialog.component.mjs +14 -4
- package/esm2022/src/lib/components/workflow-designer/designer-canvas/designer-canvas.component.mjs +3 -1
- package/esm2022/src/lib/components/workflow-designer/workflow-data.service.mjs +6 -1
- package/esm2022/src/lib/components/workflow-designer/workflow-designer.component.mjs +2 -1
- package/esm2022/src/lib/components/workflow-designer/workflow-designer.state.mjs +5 -1
- package/esm2022/src/lib/components/workflow-designer/workflow-designer.types.mjs +1 -1
- package/esm2022/src/lib/models/FlowableStatus.mjs +2 -0
- package/esm2022/src/lib/models/WorkflowAction.mjs +1 -1
- package/esm2022/src/lib/models/public-api.mjs +2 -1
- package/fesm2022/verben-workflow-ui-src-lib-components-flowable-status.mjs +545 -0
- package/fesm2022/verben-workflow-ui-src-lib-components-flowable-status.mjs.map +1 -0
- package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs +25 -3
- package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs.map +1 -1
- package/fesm2022/verben-workflow-ui.mjs +1 -3
- package/fesm2022/verben-workflow-ui.mjs.map +1 -1
- package/package.json +31 -25
- package/public-api.d.ts +1 -0
- package/src/lib/components/flowable-status/flowable-status.columns.d.ts +3 -0
- package/src/lib/components/flowable-status/flowable-status.component.d.ts +34 -0
- package/src/lib/components/flowable-status/flowable-status.facade.d.ts +32 -0
- package/src/lib/components/flowable-status/flowable-status.form.component.d.ts +18 -0
- package/src/lib/components/flowable-status/flowable-status.module.d.ts +11 -0
- package/src/lib/components/flowable-status/flowable-status.service.d.ts +36 -0
- package/src/lib/components/flowable-status/flowable-status.state.d.ts +30 -0
- package/src/lib/components/flowable-status/index.d.ts +1 -0
- package/src/lib/components/flowable-status/public-api.d.ts +2 -0
- package/src/lib/components/workflow-designer/action-dialog/action-dialog.component.d.ts +3 -1
- package/src/lib/components/workflow-designer/workflow-data.service.d.ts +3 -1
- package/src/lib/components/workflow-designer/workflow-designer.types.d.ts +2 -2
- package/src/lib/models/FlowableStatus.d.ts +5 -0
- package/src/lib/models/WorkflowAction.d.ts +1 -0
- package/src/lib/models/public-api.d.ts +1 -0
|
@@ -563,6 +563,9 @@ export class WorkflowDesignerState {
|
|
|
563
563
|
updatedAction.OperationAction = conn.action;
|
|
564
564
|
updatedAction.IsParallel = targetNode?.stageData?.IsParallel || false;
|
|
565
565
|
updatedAction.PassOnRule = conn.condition || '';
|
|
566
|
+
updatedAction.TargetStatus = conn.targetStatus || undefined;
|
|
567
|
+
// updatedAction.SourcePointType = this.getConnectionPointType(conn.sourcePointId);
|
|
568
|
+
// updatedAction.TargetPointType = this.getConnectionPointType(conn.targetPointId);
|
|
566
569
|
actions.push(updatedAction);
|
|
567
570
|
}
|
|
568
571
|
else {
|
|
@@ -581,6 +584,7 @@ export class WorkflowDesignerState {
|
|
|
581
584
|
Name: conn.label ??
|
|
582
585
|
`Action from ${sourceNode?.stageData?.Name || 'Unknown'} to ${targetNode?.stageData?.Name || 'Unknown'}`,
|
|
583
586
|
OperationAction: conn.action,
|
|
587
|
+
TargetStatus: conn.targetStatus,
|
|
584
588
|
FromStage: conn.sourceNodeId,
|
|
585
589
|
ToStage: conn.targetNodeId,
|
|
586
590
|
IsParallel: sourceNode?.stageData?.IsParallel || false,
|
|
@@ -665,4 +669,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
665
669
|
providedIn: 'root',
|
|
666
670
|
}]
|
|
667
671
|
}] });
|
|
668
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGVzaWduZXIuc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL3dvcmtmbG93LWRlc2lnbmVyLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFpQixrQkFBa0IsRUFBMkMsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFZcEssTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxTQUFTLEdBQW1CLEVBQUUsQ0FBQztJQUMvQixXQUFXLEdBQWtCLElBQUksQ0FBQyxDQUFDLHVDQUF1QztJQUMxRSxXQUFXLEdBQWlCLEVBQUUsQ0FBQztJQUMvQixzQkFBc0IsR0FPbEIsRUFBRSxDQUFDO0lBQ1AsY0FBYyxHQUFrQixJQUFJLENBQUM7SUFDckMsZ0JBQWdCLEdBQWtCLElBQUksQ0FBQztJQUN2QyxVQUFVLEdBQWtCLElBQUksQ0FBQztJQUVqQyxRQUFRLEdBQW9CLElBQUksQ0FBQztJQUNqQyxjQUFjLEdBQTZCLEVBQUUsQ0FBQztJQUM5QyxXQUFXLEdBQWtDLEVBQUUsQ0FBQztJQUNoRCxZQUFZLEdBQW1DLEVBQUUsQ0FBQztJQUVsRCxhQUFhLENBQUMsRUFBVTtRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sZ0JBQWdCLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFeEMsZUFBZSxHQUE2QjtRQUMzRCxLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQztRQUN2QyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSx1Q0FBdUM7UUFDNUQsMkNBQTJDO1FB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OEIsRUFBRSxDQUFDLENBQUMsdUJBQXVCO0lBRXhFLDBDQUEwQztJQUMxQyxvQkFBb0IsQ0FBQyxFQUFVLEVBQUUsSUFBWTtRQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELGdCQUFnQixDQUFDLEVBQVU7UUFDekIsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLGdCQUFnQixDQUFDLEVBQVU7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO3dHQTF6QlUscUJBQXFCOzRHQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9iamVjdFN0YXRlLCBTdGFnZUFjdG9yUnVsZSwgU3RhdHVzLCBTd2ltTGFuZSwgVGFnLCBUYXNrQXNzaWdubWVudFR5cGUsIFdvcmtmbG93LCBXb3JrZmxvd0FjdGlvbiwgV29ya2Zsb3dTdGFnZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQge1xuICBDb25uZWN0aW9uLFxuICBDb25uZWN0aW9uUG9pbnQsXG4gIE5vZGUsXG4gIFN3aW1sYW5lSXRlbSxcbiAgVG9vbFR5cGUsXG59IGZyb20gJy4vd29ya2Zsb3ctZGVzaWduZXIudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dEZXNpZ25lclN0YXRlIHtcbiAgc3dpbWxhbmVzOiBTd2ltbGFuZUl0ZW1bXSA9IFtdO1xuICBzdGFydE5vZGVJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7IC8vIFRyYWNrIHRoZSBJRCBvZiB0aGUgZmlyc3Qvc3RhcnQgbm9kZVxuICBjb25uZWN0aW9uczogQ29ubmVjdGlvbltdID0gW107XG4gIGRyYWdnaW5nQ29ubmVjdGlvbkRhdGE6IHtcbiAgICBzb3VyY2VQb2ludD86IENvbm5lY3Rpb25Qb2ludDtcbiAgICBzb3VyY2VTd2ltbGFuZUluZGV4PzogbnVtYmVyO1xuICAgIHN0YXJ0WD86IG51bWJlcjtcbiAgICBzdGFydFk/OiBudW1iZXI7XG4gICAgY3VycmVudFg/OiBudW1iZXI7XG4gICAgY3VycmVudFk/OiBudW1iZXI7XG4gIH0gPSB7fTtcbiAgd29ya2Zsb3dGb3JtSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICB3b3JrZmxvd0Zvcm1OYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgd29ya2Zsb3dJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgd29ya2Zsb3c6IFdvcmtmbG93IHwgbnVsbCA9IG51bGw7XG4gIHN3aW1sYW5lUmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCBTd2ltTGFuZT4gPSB7fTtcbiAgc3RhZ2VSZWNvcmQ6IFJlY29yZDxzdHJpbmcsIFdvcmtmbG93U3RhZ2U+ID0ge307XG4gIGFjdGlvblJlY29yZDogUmVjb3JkPHN0cmluZywgV29ya2Zsb3dBY3Rpb24+ID0ge307XG5cbiAgc2V0V29ya2Zsb3dJZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy53b3JrZmxvd0lkID0gaWQ7XG4gIH1cblxuICBwdWJsaWMgbGFuZUlkVG9JbmRleE1hcDogTWFwPHN0cmluZywgbnVtYmVyPiA9IG5ldyBNYXAoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbm5lY3Rpb25SdWxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuICAgIHN0YWdlOiBbJ3N0YWdlJywgJ2RlY2lzaW9uJywgJ3N1YmZsb3cnXSxcbiAgICBkZWNpc2lvbjogWydzdGFnZSddLCAvLyBEZWNpc2lvbnMgY2FuIG9ubHkgY29ubmVjdCB0byBTdGFnZXNcbiAgICAvLyAnYWN0aW9uJzogWydzdGFnZScsICdmb3JtJywgJ2RlY2lzaW9uJ10sXG4gICAgZm9ybTogW10sXG4gICAgc3ViZmxvdzogWydzdGFnZScsICdkZWNpc2lvbiddLFxuICB9O1xuXG4gIHNldFdvcmtmbG93Rm9ybShmb3JtSWQ6IHN0cmluZyB8IG51bGwsIGZvcm1OYW1lOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy53b3JrZmxvd0Zvcm1JZCA9IGZvcm1JZDtcbiAgICB0aGlzLndvcmtmbG93Rm9ybU5hbWUgPSBmb3JtTmFtZTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLndvcmtmbG93Rm9ybUlkLCB0aGlzLndvcmtmbG93Rm9ybU5hbWUpO1xuICB9XG5cbiAgYWRkU3dpbWxhbmUobmFtZTogc3RyaW5nLCB0YWdzOiBUYWdbXSkge1xuICAgIC8vIEdlbmVyYXRlIGEgdW5pcXVlIGtleSBmb3IgdGhpcyBzd2ltbGFuZVxuICAgIGNvbnN0IHN3aW1sYW5lS2V5ID0gYGxhbmUtJHtEYXRlLm5vdygpfS0ke01hdGguZmxvb3IoXG4gICAgICBNYXRoLnJhbmRvbSgpICogMTAwMFxuICAgICl9YDtcblxuICAgIHRoaXMuc3dpbWxhbmVzID0gdGhpcy5zd2ltbGFuZXMuY29uY2F0KFtcbiAgICAgIHtcbiAgICAgICAgb3JkZXI6IHRoaXMuc3dpbWxhbmVzLmxlbmd0aCxcbiAgICAgICAgbGFiZWw6IG5hbWUsXG4gICAgICAgIHRhZ3MsXG4gICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgaWQ6IHN3aW1sYW5lS2V5LCAvLyBTdG9yZSB0aGUgZ2VuZXJhdGVkIGtleSBhcyBpZCBmb3IgZnJvbnRlbmQgcmVmZXJlbmNlXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG5cbiAgcmVnaXN0ZXJMYW5lTWFwcGluZyhsYW5lSWQ6IHN0cmluZywgc3dpbWxhbmVJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5sYW5lSWRUb0luZGV4TWFwLnNldChsYW5lSWQsIHN3aW1sYW5lSW5kZXgpO1xuICB9XG5cbiAgLy8gQWRkIHRoaXMgbWV0aG9kIHRvIGdlbmVyYXRlIGNvbm5lY3Rpb24gcG9pbnRzIGZvciBhIG5vZGVcbiAgZ2VuZXJhdGVDb25uZWN0aW9uUG9pbnRzKG5vZGU6IE5vZGUpOiBDb25uZWN0aW9uUG9pbnRbXSB7XG4gICAgY29uc3QgcG9pbnRzOiBDb25uZWN0aW9uUG9pbnRbXSA9IFtdO1xuICAgIGNvbnN0IHNwYWNpbmcgPSA1MDsgLy8gU3BhY2UgYmV0d2VlbiBjb25uZWN0aW9uIHBvaW50c1xuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ3N0YWdlJykge1xuICAgICAgLy8gUmVjdGFuZ3VsYXIgc2hhcGVzIC0gYWRkIHBvaW50cyBhcm91bmQgdGhlIHJlY3RhbmdsZVxuXG4gICAgICAvLyBUb3AgZWRnZSBwb2ludHNcbiAgICAgIGZvciAobGV0IHggPSBzcGFjaW5nOyB4IDwgbm9kZS53aWR0aDsgeCArPSBzcGFjaW5nKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKHtcbiAgICAgICAgICBpZDogYCR7bm9kZS5pZH0tdG9wLSR7eH1gLFxuICAgICAgICAgIG5vZGVJZDogbm9kZS5pZCxcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdHlwZTogJ3RvcCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBSaWdodCBlZGdlIHBvaW50c1xuICAgICAgZm9yIChsZXQgeSA9IHNwYWNpbmc7IHkgPCBub2RlLmhlaWdodDsgeSArPSBzcGFjaW5nKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKHtcbiAgICAgICAgICBpZDogYCR7bm9kZS5pZH0tcmlnaHQtJHt5fWAsXG4gICAgICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgICAgIHg6IG5vZGUud2lkdGgsXG4gICAgICAgICAgeTogeSxcbiAgICAgICAgICB0eXBlOiAncmlnaHQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gQm90dG9tIGVkZ2UgcG9pbnRzXG4gICAgICBmb3IgKGxldCB4ID0gc3BhY2luZzsgeCA8IG5vZGUud2lkdGg7IHggKz0gc3BhY2luZykge1xuICAgICAgICBwb2ludHMucHVzaCh7XG4gICAgICAgICAgaWQ6IGAke25vZGUuaWR9LWJvdHRvbS0ke3h9YCxcbiAgICAgICAgICBub2RlSWQ6IG5vZGUuaWQsXG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiBub2RlLmhlaWdodCxcbiAgICAgICAgICB0eXBlOiAnYm90dG9tJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIExlZnQgZWRnZSBwb2ludHNcbiAgICAgIGZvciAobGV0IHkgPSBzcGFjaW5nOyB5IDwgbm9kZS5oZWlnaHQ7IHkgKz0gc3BhY2luZykge1xuICAgICAgICBwb2ludHMucHVzaCh7XG4gICAgICAgICAgaWQ6IGAke25vZGUuaWR9LWxlZnQtJHt5fWAsXG4gICAgICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogeSxcbiAgICAgICAgICB0eXBlOiAnbGVmdCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSAnZGVjaXNpb24nKSB7XG4gICAgICAvLyBEaWFtb25kIHNoYXBlIC0gYWRkIHBvaW50cyBhdCB0aGUgZm91ciBjb3JuZXJzXG4gICAgICBwb2ludHMucHVzaCh7XG4gICAgICAgIGlkOiBgJHtub2RlLmlkfS10b3AtMGAsXG4gICAgICAgIG5vZGVJZDogbm9kZS5pZCxcbiAgICAgICAgeDogbm9kZS53aWR0aCAvIDIsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIHR5cGU6ICd0b3AnLFxuICAgICAgfSk7XG5cbiAgICAgIHBvaW50cy5wdXNoKHtcbiAgICAgICAgaWQ6IGAke25vZGUuaWR9LXJpZ2h0LTBgLFxuICAgICAgICBub2RlSWQ6IG5vZGUuaWQsXG4gICAgICAgIHg6IG5vZGUud2lkdGgsXG4gICAgICAgIHk6IG5vZGUuaGVpZ2h0IC8gMixcbiAgICAgICAgdHlwZTogJ3JpZ2h0JyxcbiAgICAgIH0pO1xuXG4gICAgICBwb2ludHMucHVzaCh7XG4gICAgICAgIGlkOiBgJHtub2RlLmlkfS1ib3R0b20tMGAsXG4gICAgICAgIG5vZGVJZDogbm9kZS5pZCxcbiAgICAgICAgeDogbm9kZS53aWR0aCAvIDIsXG4gICAgICAgIHk6IG5vZGUuaGVpZ2h0LFxuICAgICAgICB0eXBlOiAnYm90dG9tJyxcbiAgICAgIH0pO1xuXG4gICAgICBwb2ludHMucHVzaCh7XG4gICAgICAgIGlkOiBgJHtub2RlLmlkfS1sZWZ0LTBgLFxuICAgICAgICBub2RlSWQ6IG5vZGUuaWQsXG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IG5vZGUuaGVpZ2h0IC8gMixcbiAgICAgICAgdHlwZTogJ2xlZnQnLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdmb3JtJykge1xuICAgICAgLy8gRm9ybSBvbmx5IGhhcyBpbnB1dCBjb25uZWN0aW9uIHBvaW50cywgbm8gb3V0cHV0IHBvaW50c1xuXG4gICAgICAvLyBMZWZ0IGVkZ2UgcG9pbnRzIChmb3IgaW5wdXQgY29ubmVjdGlvbnMpXG4gICAgICBmb3IgKGxldCB5ID0gc3BhY2luZzsgeSA8IG5vZGUuaGVpZ2h0OyB5ICs9IHNwYWNpbmcpIHtcbiAgICAgICAgcG9pbnRzLnB1c2goe1xuICAgICAgICAgIGlkOiBgJHtub2RlLmlkfS1sZWZ0LSR7eX1gLFxuICAgICAgICAgIG5vZGVJZDogbm9kZS5pZCxcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IHksXG4gICAgICAgICAgdHlwZTogJ2xlZnQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ3N1YmZsb3cnKSB7XG4gICAgICAvLyBIZXhhZ29uIHNoYXBlIC0gYWRkIHBvaW50cyBhdCB0aGUgc2l4IGNvcm5lcnNcbiAgICAgIHBvaW50cy5wdXNoKHtcbiAgICAgICAgaWQ6IGAke25vZGUuaWR9LXRvcC0wYCxcbiAgICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgICB4OiBub2RlLndpZHRoIC8gMixcbiAgICAgICAgeTogMCxcbiAgICAgICAgdHlwZTogJ3RvcCcsXG4gICAgICB9KTtcblxuICAgICAgcG9pbnRzLnB1c2goe1xuICAgICAgICBpZDogYCR7bm9kZS5pZH0tcmlnaHQtdG9wYCxcbiAgICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgICB4OiBub2RlLndpZHRoLFxuICAgICAgICB5OiBub2RlLmhlaWdodCAvIDQsXG4gICAgICAgIHR5cGU6ICdyaWdodCcsXG4gICAgICB9KTtcblxuICAgICAgcG9pbnRzLnB1c2goe1xuICAgICAgICBpZDogYCR7bm9kZS5pZH0tcmlnaHQtYm90dG9tYCxcbiAgICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgICB4OiBub2RlLndpZHRoLFxuICAgICAgICB5OiAobm9kZS5oZWlnaHQgKiAzKSAvIDQsXG4gICAgICAgIHR5cGU6ICdyaWdodCcsXG4gICAgICB9KTtcblxuICAgICAgcG9pbnRzLnB1c2goe1xuICAgICAgICBpZDogYCR7bm9kZS5pZH0tYm90dG9tLTBgLFxuICAgICAgICBub2RlSWQ6IG5vZGUuaWQsXG4gICAgICAgIHg6IG5vZGUud2lkdGggLyAyLFxuICAgICAgICB5OiBub2RlLmhlaWdodCxcbiAgICAgICAgdHlwZTogJ2JvdHRvbScsXG4gICAgICB9KTtcblxuICAgICAgcG9pbnRzLnB1c2goe1xuICAgICAgICBpZDogYCR7bm9kZS5pZH0tbGVmdC1ib3R0b21gLFxuICAgICAgICBub2RlSWQ6IG5vZGUuaWQsXG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IChub2RlLmhlaWdodCAqIDMpIC8gNCxcbiAgICAgICAgdHlwZTogJ2xlZnQnLFxuICAgICAgfSk7XG5cbiAgICAgIHBvaW50cy5wdXNoKHtcbiAgICAgICAgaWQ6IGAke25vZGUuaWR9LWxlZnQtdG9wYCxcbiAgICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgICB4OiAwLFxuICAgICAgICB5OiBub2RlLmhlaWdodCAvIDQsXG4gICAgICAgIHR5cGU6ICdsZWZ0JyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwb2ludHM7XG4gIH1cblxuICBhZGROb2RlKFxuICAgIHN3aW1sYW5lSW5kZXg6IG51bWJlcixcbiAgICB0eXBlOiBUb29sVHlwZSxcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyLFxuICAgIHN0YWdlRGF0YT86IFBhcnRpYWw8V29ya2Zsb3dTdGFnZT4sXG4gICAgd29ya2Zsb3dEYXRhPzogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSxcbiAgICB1c2VFeGlzdGluZ0lkOiBib29sZWFuID0gZmFsc2VcbiAgKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuc3dpbWxhbmVzW3N3aW1sYW5lSW5kZXhdIHx8XG4gICAgICAhdHlwZSB8fFxuICAgICAgKHR5cGUgIT09ICdzdGFnZScgJiZcbiAgICAgICAgdHlwZSAhPT0gJ2RlY2lzaW9uJyAmJlxuICAgICAgICB0eXBlICE9PSAnZm9ybScgJiZcbiAgICAgICAgdHlwZSAhPT0gJ3N1YmZsb3cnKVxuICAgICkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQWRqdXN0IHBvc2l0aW9uIHJlbGF0aXZlIHRvIHN3aW1sYW5lXG4gICAgY29uc3QgYWRqdXN0ZWRZID0geSAtIHN3aW1sYW5lSW5kZXggKiAyNjM7IC8vIFN1YnRyYWN0aW5nIGhlYWRlciBoZWlnaHRcblxuICAgIC8vIEdlbmVyYXRlIGEgdW5pcXVlIElEIG9yIHVzZSBleGlzdGluZ1xuICAgIGNvbnN0IGlkID1cbiAgICAgIHVzZUV4aXN0aW5nSWQgJiYgc3RhZ2VEYXRhPy5Db2RlXG4gICAgICAgID8gc3RhZ2VEYXRhLkNvZGVcbiAgICAgICAgOiBgJHt0eXBlfS0ke0RhdGUubm93KCl9LSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMCl9YDtcblxuICAgIC8vIENyZWF0ZSBub2RlIHdpdGggZGltZW5zaW9ucyBiYXNlZCBvbiB0eXBlXG4gICAgY29uc3Qgbm9kZTogTm9kZSA9IHtcbiAgICAgIGlkLFxuICAgICAgdHlwZSxcbiAgICAgIHgsXG4gICAgICB5OiBhZGp1c3RlZFksXG4gICAgICB3aWR0aDogdHlwZSA9PT0gJ3N1YmZsb3cnID8gMTUwIDogMTY5LCAvLyBXaWR0aCBmcm9tIFNWR1xuICAgICAgaGVpZ2h0OiAxMDAsIC8vIEhlaWdodCBmcm9tIFNWR1xuICAgICAgaXNTdGFydE5vZGU6IGZhbHNlLCAvLyBEZWZhdWx0IHRvIGZhbHNlXG4gICAgICBzdGFnZURhdGE6IHN0YWdlRGF0YSB8fCB7fSwgLy8gU3RvcmUgc3RhZ2UgZGF0YVxuICAgICAgd29ya2Zsb3dEYXRhOiB3b3JrZmxvd0RhdGEgfHwgbnVsbCxcbiAgICB9O1xuXG4gICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3Qgbm9kZSBpbiB0aGUgZW50aXJlIHdvcmtmbG93LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBub2RlXG4gICAgaWYgKHRoaXMuZ2V0Tm9kZUNvdW50KCkgPT09IDApIHtcbiAgICAgIG5vZGUuaXNTdGFydE5vZGUgPSB0cnVlO1xuICAgICAgdGhpcy5zdGFydE5vZGVJZCA9IGlkO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIGNvbm5lY3Rpb24gcG9pbnRzIGZvciB0aGUgbm9kZVxuICAgIG5vZGUuY29ubmVjdGlvblBvaW50cyA9IHRoaXMuZ2VuZXJhdGVDb25uZWN0aW9uUG9pbnRzKG5vZGUpO1xuXG4gICAgLy8gQWRkIG5vZGUgdG8gdGhlIHN3aW1sYW5lXG4gICAgaWYgKCF0aGlzLnN3aW1sYW5lc1tzd2ltbGFuZUluZGV4XS5ub2Rlcykge1xuICAgICAgdGhpcy5zd2ltbGFuZXNbc3dpbWxhbmVJbmRleF0ubm9kZXMgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5zd2ltbGFuZXNbc3dpbWxhbmVJbmRleF0ubm9kZXMucHVzaChub2RlKTtcblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gSGVscGVyIHRvIGdldCB0b3RhbCBub2RlIGNvdW50IGFjcm9zcyBhbGwgc3dpbWxhbmVzXG4gIGdldE5vZGVDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN3aW1sYW5lcy5yZWR1Y2UoXG4gICAgICAoY291bnQsIHN3aW1sYW5lKSA9PiBjb3VudCArIChzd2ltbGFuZS5ub2Rlcz8ubGVuZ3RoIHx8IDApLFxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICAvLyBGaW5kIGEgbm9kZSBieSBJRCAodXNlZnVsIGZvciBsYXRlciBvcGVyYXRpb25zKVxuICBmaW5kTm9kZUJ5SWQoaWQ6IHN0cmluZyk6IHsgbm9kZTogTm9kZTsgc3dpbWxhbmVJbmRleDogbnVtYmVyIH0gfCBudWxsIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3dpbWxhbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzd2ltbGFuZSA9IHRoaXMuc3dpbWxhbmVzW2ldO1xuICAgICAgY29uc3Qgbm9kZSA9IHN3aW1sYW5lLm5vZGVzPy5maW5kKChuKSA9PiBuLmlkID09PSBpZCk7XG4gICAgICBpZiAobm9kZSkge1xuICAgICAgICByZXR1cm4geyBub2RlLCBzd2ltbGFuZUluZGV4OiBpIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gRmluZCBhIG5vZGUgYnkgSUQgKHVzZWZ1bCBmb3IgbGF0ZXIgb3BlcmF0aW9ucylcbiAgZmluZEFjdGlvbkJ5SWQoY29ubmVjdGlvbklkOiBzdHJpbmcpOiBDb25uZWN0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbnMuZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gY29ubmVjdGlvbklkKSA/PyBudWxsO1xuICB9XG5cbiAgc3RhcnRDb25uZWN0aW9uRHJhZyhcbiAgICBwb2ludDogQ29ubmVjdGlvblBvaW50LFxuICAgIHN3aW1sYW5lSW5kZXg6IG51bWJlcixcbiAgICBnbG9iYWxYOiBudW1iZXIsXG4gICAgZ2xvYmFsWTogbnVtYmVyXG4gICkge1xuICAgIHRoaXMuZHJhZ2dpbmdDb25uZWN0aW9uRGF0YSA9IHtcbiAgICAgIHNvdXJjZVBvaW50OiBwb2ludCxcbiAgICAgIHNvdXJjZVN3aW1sYW5lSW5kZXg6IHN3aW1sYW5lSW5kZXgsXG4gICAgICBzdGFydFg6IGdsb2JhbFgsXG4gICAgICBzdGFydFk6IGdsb2JhbFksXG4gICAgICBjdXJyZW50WDogZ2xvYmFsWCxcbiAgICAgIGN1cnJlbnRZOiBnbG9iYWxZLFxuICAgIH07XG4gIH1cblxuICB1cGRhdGVDb25uZWN0aW9uRHJhZyhjdXJyZW50WDogbnVtYmVyLCBjdXJyZW50WTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuZHJhZ2dpbmdDb25uZWN0aW9uRGF0YS5zb3VyY2VQb2ludCkge1xuICAgICAgdGhpcy5kcmFnZ2luZ0Nvbm5lY3Rpb25EYXRhLmN1cnJlbnRYID0gY3VycmVudFg7XG4gICAgICB0aGlzLmRyYWdnaW5nQ29ubmVjdGlvbkRhdGEuY3VycmVudFkgPSBjdXJyZW50WTtcbiAgICB9XG4gIH1cblxuICBlbmRDb25uZWN0aW9uRHJhZygpIHtcbiAgICBjb25zb2xlLmxvZygnRW5kaW5nIGNvbm5lY3Rpb24gZHJhZywgY2xlYXJpbmcgZGF0YScpO1xuICAgIC8vIENsZWFyIGRyYWdnaW5nIGRhdGFcbiAgICB0aGlzLmRyYWdnaW5nQ29ubmVjdGlvbkRhdGEgPSB7fTtcbiAgfVxuXG4gIGlzQ29ubmVjdGlvbkRyYWdnaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZHJhZ2dpbmdDb25uZWN0aW9uRGF0YS5zb3VyY2VQb2ludDtcbiAgfVxuXG4gIGdldENvbm5lY3Rpb25QYXRoRGF0YSgpOiB7XG4gICAgc3RhcnRYOiBudW1iZXI7XG4gICAgc3RhcnRZOiBudW1iZXI7XG4gICAgZW5kWDogbnVtYmVyO1xuICAgIGVuZFk6IG51bWJlcjtcbiAgICBzb3VyY2VTd2ltbGFuZUluZGV4OiBudW1iZXI7XG4gIH0gfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmdDb25uZWN0aW9uRGF0YS5zb3VyY2VQb2ludCkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCB7IHNvdXJjZVBvaW50LCBzb3VyY2VTd2ltbGFuZUluZGV4LCBjdXJyZW50WCwgY3VycmVudFkgfSA9XG4gICAgICB0aGlzLmRyYWdnaW5nQ29ubmVjdGlvbkRhdGE7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZmluZE5vZGVCeUlkKHNvdXJjZVBvaW50Lm5vZGVJZCk/Lm5vZGU7XG5cbiAgICBpZiAoIW5vZGUgfHwgc291cmNlU3dpbWxhbmVJbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDtcblxuICAgIC8vIENhbGN1bGF0ZSBzdGFydCBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXNcbiAgICBjb25zdCBzdGFydFggPSBub2RlLnggKyBzb3VyY2VQb2ludC54O1xuICAgIGNvbnN0IHN0YXJ0WSA9IG5vZGUueSArIHNvdXJjZVBvaW50LnkgKyBzb3VyY2VTd2ltbGFuZUluZGV4ICogMjYzOyAvLyBBZGQgc3dpbWxhbmUgb2Zmc2V0XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnRYLFxuICAgICAgc3RhcnRZLFxuICAgICAgZW5kWDogY3VycmVudFggPz8gc3RhcnRYLFxuICAgICAgZW5kWTogY3VycmVudFkgPz8gc3RhcnRZLFxuICAgICAgc291cmNlU3dpbWxhbmVJbmRleCxcbiAgICB9O1xuICB9XG5cbiAgY3JlYXRlQ29ubmVjdGlvbihcbiAgICB0YXJnZXROb2RlSWQ6IHN0cmluZyxcbiAgICB0YXJnZXRQb2ludElkOiBzdHJpbmcsXG4gICAgdGFyZ2V0U3dpbWxhbmVJbmRleDogbnVtYmVyXG4gICk6IENvbm5lY3Rpb24gfCBudWxsIHtcbiAgICBjb25zdCB7IHNvdXJjZVBvaW50LCBzb3VyY2VTd2ltbGFuZUluZGV4IH0gPSB0aGlzLmRyYWdnaW5nQ29ubmVjdGlvbkRhdGE7XG5cbiAgICBpZiAoIXNvdXJjZVBvaW50IHx8IHNvdXJjZVN3aW1sYW5lSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5lcnJvcignTWlzc2luZyBzb3VyY2UgZGF0YSBmb3IgY29ubmVjdGlvbicpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY29ubmVjdGlvbjogQ29ubmVjdGlvbiA9IHtcbiAgICAgIGlkOiBgY29ubi0ke0RhdGUubm93KCl9LSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMCl9YCxcbiAgICAgIHNvdXJjZU5vZGVJZDogc291cmNlUG9pbnQubm9kZUlkLFxuICAgICAgdGFyZ2V0Tm9kZUlkOiB0YXJnZXROb2RlSWQsXG4gICAgICBzb3VyY2VQb2ludElkOiBzb3VyY2VQb2ludC5pZCxcbiAgICAgIHRhcmdldFBvaW50SWQ6IHRhcmdldFBvaW50SWQsXG4gICAgICBzb3VyY2VTd2ltbGFuZUluZGV4OiBzb3VyY2VTd2ltbGFuZUluZGV4LFxuICAgICAgdGFyZ2V0U3dpbWxhbmVJbmRleDogdGFyZ2V0U3dpbWxhbmVJbmRleCxcbiAgICAgIGxhYmVsOiAnJyxcbiAgICAgIGFjdGlvbjogbnVsbCxcbiAgICB9O1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pO1xuICAgIGNvbnNvbGUubG9nKCdDcmVhdGVkIGNvbm5lY3Rpb246JywgY29ubmVjdGlvbik7XG4gICAgY29uc29sZS5sb2coXG4gICAgICAnQ29ubmVjdGlvbnMgYXJyYXkgbm93IGhhcycsXG4gICAgICB0aGlzLmNvbm5lY3Rpb25zLmxlbmd0aCxcbiAgICAgICdjb25uZWN0aW9ucydcbiAgICApO1xuICAgIHJldHVybiBjb25uZWN0aW9uO1xuICB9XG5cbiAgLy8gQWRkIGEgbWV0aG9kIHRvIGdldCBjb25uZWN0aW9uIGRhdGEgZm9yIHJlbmRlcmluZ1xuICBnZXRDb25uZWN0aW9uRGF0YShjb25uZWN0aW9uOiBDb25uZWN0aW9uKToge1xuICAgIHN0YXJ0WDogbnVtYmVyO1xuICAgIHN0YXJ0WTogbnVtYmVyO1xuICAgIGVuZFg6IG51bWJlcjtcbiAgICBlbmRZOiBudW1iZXI7XG4gICAgc291cmNlU3dpbWxhbmVJbmRleDogbnVtYmVyO1xuICAgIHRhcmdldFN3aW1sYW5lSW5kZXg6IG51bWJlcjtcbiAgfSB8IG51bGwge1xuICAgIGNvbnN0IHNvdXJjZU5vZGVJbmZvID0gdGhpcy5maW5kTm9kZUJ5SWQoY29ubmVjdGlvbi5zb3VyY2VOb2RlSWQpO1xuICAgIGNvbnN0IHRhcmdldE5vZGVJbmZvID0gdGhpcy5maW5kTm9kZUJ5SWQoY29ubmVjdGlvbi50YXJnZXROb2RlSWQpO1xuXG4gICAgaWYgKCFzb3VyY2VOb2RlSW5mbyB8fCAhdGFyZ2V0Tm9kZUluZm8pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZU5vZGUgPSBzb3VyY2VOb2RlSW5mby5ub2RlO1xuICAgIGNvbnN0IHRhcmdldE5vZGUgPSB0YXJnZXROb2RlSW5mby5ub2RlO1xuXG4gICAgLy8gRmluZCBjb25uZWN0aW9uIHBvaW50c1xuICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gc291cmNlTm9kZS5jb25uZWN0aW9uUG9pbnRzPy5maW5kKFxuICAgICAgKHApID0+IHAuaWQgPT09IGNvbm5lY3Rpb24uc291cmNlUG9pbnRJZFxuICAgICk7XG4gICAgY29uc3QgdGFyZ2V0UG9pbnQgPSB0YXJnZXROb2RlLmNvbm5lY3Rpb25Qb2ludHM/LmZpbmQoXG4gICAgICAocCkgPT4gcC5pZCA9PT0gY29ubmVjdGlvbi50YXJnZXRQb2ludElkXG4gICAgKTtcblxuICAgIGlmICghc291cmNlUG9pbnQgfHwgIXRhcmdldFBvaW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhdGUgZ2xvYmFsIGNvb3JkaW5hdGVzXG4gICAgY29uc3Qgc3RhcnRYID0gc291cmNlTm9kZS54ICsgc291cmNlUG9pbnQueDtcbiAgICBjb25zdCBzdGFydFkgPVxuICAgICAgc291cmNlTm9kZS55ICsgc291cmNlUG9pbnQueSArIGNvbm5lY3Rpb24uc291cmNlU3dpbWxhbmVJbmRleCAqIDI2MztcblxuICAgIGNvbnN0IGVuZFggPSB0YXJnZXROb2RlLnggKyB0YXJnZXRQb2ludC54O1xuICAgIGNvbnN0IGVuZFkgPVxuICAgICAgdGFyZ2V0Tm9kZS55ICsgdGFyZ2V0UG9pbnQueSArIGNvbm5lY3Rpb24udGFyZ2V0U3dpbWxhbmVJbmRleCAqIDI2MztcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydFgsXG4gICAgICBzdGFydFksXG4gICAgICBlbmRYLFxuICAgICAgZW5kWSxcbiAgICAgIHNvdXJjZVN3aW1sYW5lSW5kZXg6IGNvbm5lY3Rpb24uc291cmNlU3dpbWxhbmVJbmRleCxcbiAgICAgIHRhcmdldFN3aW1sYW5lSW5kZXg6IGNvbm5lY3Rpb24udGFyZ2V0U3dpbWxhbmVJbmRleCxcbiAgICB9O1xuICB9XG5cbiAgLy8gQWRkIGEgbWV0aG9kIHRvIGNoZWNrIGlmIGEgY29ubmVjdGlvbiBpcyBhbGxvd2VkIGJhc2VkIG9uIG5vZGUgdHlwZXNcbiAgY2FuQ29ubmVjdChzb3VyY2VOb2RlVHlwZTogc3RyaW5nLCB0YXJnZXROb2RlVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29ubmVjdGlvblJ1bGVzW3NvdXJjZU5vZGVUeXBlXT8uaW5jbHVkZXModGFyZ2V0Tm9kZVR5cGUpIHx8IGZhbHNlXG4gICAgKTtcbiAgfVxuXG4gIC8vIEFkZCBhIG1ldGhvZCB0byBnZXQgYWxsb3dlZCBub2RlIHR5cGVzIGZvciB0aGUgY3VycmVudCBkcmFnZ2luZyBjb25uZWN0aW9uXG4gIGdldEFsbG93ZWRUYXJnZXROb2RlVHlwZXMoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5kcmFnZ2luZ0Nvbm5lY3Rpb25EYXRhLnNvdXJjZVBvaW50KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlTm9kZUluZm8gPSB0aGlzLmZpbmROb2RlQnlJZChcbiAgICAgIHRoaXMuZHJhZ2dpbmdDb25uZWN0aW9uRGF0YS5zb3VyY2VQb2ludC5ub2RlSWRcbiAgICApO1xuICAgIGlmICghc291cmNlTm9kZUluZm8pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2VOb2RlVHlwZSA9IHNvdXJjZU5vZGVJbmZvLm5vZGUudHlwZTtcblxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25SdWxlc1tzb3VyY2VOb2RlVHlwZV0gfHwgW107XG4gIH1cblxuICB1cGRhdGVTd2ltbGFuZShpbmRleDogbnVtYmVyLCBuYW1lOiBzdHJpbmcsIHRhZ3M6IFRhZ1tdKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICAnU3RhdGU6IFVwZGF0aW5nIHN3aW1sYW5lIGF0IGluZGV4JyxcbiAgICAgIGluZGV4LFxuICAgICAgJ3dpdGggbmFtZScsXG4gICAgICBuYW1lLFxuICAgICAgJ2FuZCB0YWdzJyxcbiAgICAgIHRhZ3NcbiAgICApO1xuXG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLnN3aW1sYW5lcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3dpbWxhbmVzW2luZGV4XSA9IHtcbiAgICAgICAgLi4udGhpcy5zd2ltbGFuZXNbaW5kZXhdLFxuICAgICAgICBsYWJlbDogbmFtZSxcbiAgICAgICAgdGFnczogdGFncyxcbiAgICAgIH07XG4gICAgICBjb25zb2xlLmxvZygnU3dpbWxhbmUgdXBkYXRlZDonLCB0aGlzLnN3aW1sYW5lc1tpbmRleF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIHN3aW1sYW5lIGluZGV4OicsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICB0cmFuc2Zvcm1Ub1dvcmtmbG93TW9kZWwoKTogV29ya2Zsb3cge1xuICAgIC8vIFVzZSBzdG9yZWQgd29ya2Zsb3cgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgY3JlYXRlIGEgbmV3IG9uZVxuICAgIGNvbnN0IHdvcmtmbG93OiBXb3JrZmxvdyA9IHRoaXMud29ya2Zsb3dcbiAgICAgID8geyAuLi50aGlzLndvcmtmbG93LCBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLkNoYW5nZWQgfVxuICAgICAgOiB7XG4gICAgICAgIC8vIEJhc2VNb2RlbCBwcm9wZXJ0aWVzXG4gICAgICAgIElkOiAnJyxcbiAgICAgICAgQ29kZTogJycsXG4gICAgICAgIFRlbmFudElkOiAnJyxcbiAgICAgICAgaWQ6ICcnLFxuICAgICAgICBTZXJ2aWNlTmFtZTogJycsXG4gICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICBEYXRhU3RhdGU6IHRoaXMud2FzTG9hZGVkRnJvbUFwaSh0aGlzLndvcmtmbG93SWQgfHwgJycpXG4gICAgICAgICAgPyBPYmplY3RTdGF0ZS5DaGFuZ2VkXG4gICAgICAgICAgOiBPYmplY3RTdGF0ZS5OZXcsXG5cbiAgICAgICAgLy8gV29ya2Zsb3cgc3BlY2lmaWMgcHJvcGVydGllc1xuICAgICAgICBOYW1lOiAnTmV3IFdvcmtmbG93JyxcbiAgICAgICAgRGVzY3JpcHRpb246ICcnLFxuICAgICAgICBTdGFnZUVudHJ5UnVsZTogJycsXG4gICAgICAgIEZvcm06IHRoaXMud29ya2Zsb3dGb3JtSWQgfHwgdW5kZWZpbmVkLFxuICAgICAgICBBc3NpZ25tZW50VHlwZTogVGFza0Fzc2lnbm1lbnRUeXBlLkF1dG9Sb3V0ZSxcbiAgICAgICAgT3BlcmF0aW9uOiAnJyxcbiAgICAgICAgU3RhdHVzOiBTdGF0dXMuQWN0aXZlLFxuICAgICAgICBBY3Rpb25zOiBbXSxcbiAgICAgICAgTGFuZXM6IFtdLFxuICAgICAgICBTdGFnZXM6IFtdLFxuICAgICAgfTtcblxuICAgIC8vIFVwZGF0ZSB3b3JrZmxvdyBmb3JtIGlmIGNoYW5nZWRcbiAgICBpZiAodGhpcy53b3JrZmxvd0Zvcm1JZCAhPT0gdGhpcy53b3JrZmxvdz8uRm9ybSkge1xuICAgICAgd29ya2Zsb3cuRm9ybSA9IHRoaXMud29ya2Zsb3dGb3JtSWQgfHwgd29ya2Zsb3cuRm9ybTtcbiAgICB9XG5cbiAgICAvLyBUcmFuc2Zvcm0gc3dpbWxhbmVzIHRvIFN3aW1MYW5lW11cbiAgICB3b3JrZmxvdy5MYW5lcyA9IHRoaXMuc3dpbWxhbmVzLm1hcCgoc3dpbWxhbmUpID0+IHtcbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYW4gZXhpc3Rpbmcgc3dpbWxhbmVcbiAgICAgIGlmIChzd2ltbGFuZS5pZCAmJiB0aGlzLnN3aW1sYW5lUmVjb3JkW3N3aW1sYW5lLmlkXSkge1xuICAgICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgbGFuZSB3aXRoIGNoYW5nZWQgdmFsdWVzXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nTGFuZSA9IHRoaXMuc3dpbWxhbmVSZWNvcmRbc3dpbWxhbmUuaWRdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmV4aXN0aW5nTGFuZSxcbiAgICAgICAgICBOYW1lOiBzd2ltbGFuZS5sYWJlbCxcbiAgICAgICAgICBUYWdzOiBzd2ltbGFuZS50YWdzLFxuICAgICAgICAgIFBvc2l0aW9uOiBzd2ltbGFuZS5vcmRlcixcbiAgICAgICAgICBDb29yZGluYXRlczogeyBYOiAwLCBZOiBzd2ltbGFuZS5vcmRlciAqIDI2MyB9LFxuICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuQ2hhbmdlZCxcbiAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBHZW5lcmF0ZSBhIG5ldyBJRCBmb3IgbmV3IHN3aW1sYW5lcyBpZiBub3QgYWxyZWFkeSBzZXRcbiAgICAgICAgY29uc3QgbGFuZUlkID1cbiAgICAgICAgICBzd2ltbGFuZS5pZCB8fFxuICAgICAgICAgIGBsYW5lLSR7RGF0ZS5ub3coKX0tJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwKX1gO1xuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgbGFuZVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIENvZGU6ICcnLFxuICAgICAgICAgIElkOiAnJyxcbiAgICAgICAgICBUZW5hbnRJZDogJycsXG4gICAgICAgICAgLy8gaWQ6IGxhbmVJZCxcbiAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgU2VydmljZU5hbWU6ICcnLFxuICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgV29ya2Zsb3c6IHdvcmtmbG93LkNvZGUsXG4gICAgICAgICAgTmFtZTogc3dpbWxhbmUubGFiZWwsXG4gICAgICAgICAgVGFnczogc3dpbWxhbmUudGFncyB8fCBbXSxcbiAgICAgICAgICBQb3NpdGlvbjogc3dpbWxhbmUub3JkZXIsXG4gICAgICAgICAgQ29vcmRpbmF0ZXM6IHsgWDogMCwgWTogc3dpbWxhbmUub3JkZXIgKiAyNjMgfSxcbiAgICAgICAgICBTaXplOiB7IFdpZHRoOiAzMDAwLCBIZWlnaHQ6IDI2MyB9LFxuICAgICAgICAgIEtleTogc3dpbWxhbmUuaWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gbm9kZXMgdG8gV29ya2Zsb3dTdGFnZVtdXG4gICAgY29uc3Qgc3RhZ2VzOiBXb3JrZmxvd1N0YWdlW10gPSBbXTtcblxuICAgIHRoaXMuc3dpbWxhbmVzLmZvckVhY2goKHN3aW1sYW5lLCBzd2ltbGFuZUluZGV4KSA9PiB7XG4gICAgICBzd2ltbGFuZS5ub2Rlcz8uZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICBpZiAobm9kZS50eXBlID09PSAnc3RhZ2UnIHx8IG5vZGUudHlwZSA9PT0gJ3N1YmZsb3cnKSB7XG4gICAgICAgICAgY29uc29sZS5sb2cobm9kZSk7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhbiBleGlzdGluZyBzdGFnZVxuICAgICAgICAgIGlmICh0aGlzLnN0YWdlUmVjb3JkW25vZGUuaWRdKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgZXhpc3Rpbmcgc3RhZ2Ugd2l0aCBjaGFuZ2VkIHZhbHVlc1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdTdGFnZSA9IHRoaXMuc3RhZ2VSZWNvcmRbbm9kZS5pZF07XG5cbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCB1cGRhdGVkIHByb3BlcnRpZXNcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRTdGFnZTogV29ya2Zsb3dTdGFnZSA9IHtcbiAgICAgICAgICAgICAgLi4uZXhpc3RpbmdTdGFnZSxcbiAgICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5DaGFuZ2VkLFxuICAgICAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBVcGRhdGUgcHJvcGVydGllcyB0aGF0IG1heSBoYXZlIGNoYW5nZWRcbiAgICAgICAgICAgIGlmIChub2RlLnN0YWdlRGF0YT8uTmFtZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICB1cGRhdGVkU3RhZ2UuTmFtZSA9XG4gICAgICAgICAgICAgICAgbm9kZS53b3JrZmxvd0RhdGE/Lm5hbWUgPz8gbm9kZS5zdGFnZURhdGEuTmFtZTtcbiAgICAgICAgICAgIGlmIChub2RlLnN0YWdlRGF0YT8uRGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgdXBkYXRlZFN0YWdlLkRlc2NyaXB0aW9uID0gbm9kZS5zdGFnZURhdGEuRGVzY3JpcHRpb247XG4gICAgICAgICAgICBpZiAobm9kZS5zdGFnZURhdGE/LkR1cmF0aW9uICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5EdXJhdGlvbiA9IG5vZGUuc3RhZ2VEYXRhLkR1cmF0aW9uO1xuICAgICAgICAgICAgaWYgKG5vZGUuc3RhZ2VEYXRhPy5QYXNzT25SdWxlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5QYXNzT25SdWxlID0gbm9kZS5zdGFnZURhdGEuUGFzc09uUnVsZTtcbiAgICAgICAgICAgIGlmIChub2RlLnN0YWdlRGF0YT8uQWN0b3JSdWxlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5BY3RvclJ1bGUgPSBub2RlLnN0YWdlRGF0YS5BY3RvclJ1bGU7XG4gICAgICAgICAgICBpZiAobm9kZS5zdGFnZURhdGE/LkFzc2lnbm1lbnRUeXBlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5Bc3NpZ25tZW50VHlwZSA9IG5vZGUuc3RhZ2VEYXRhLkFzc2lnbm1lbnRUeXBlO1xuICAgICAgICAgICAgaWYgKG5vZGUuc3RhZ2VEYXRhPy5NaW5Ob09mQWN0b3IgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgdXBkYXRlZFN0YWdlLk1pbk5vT2ZBY3RvciA9IG5vZGUuc3RhZ2VEYXRhLk1pbk5vT2ZBY3RvcjtcbiAgICAgICAgICAgIGlmIChub2RlLnN0YWdlRGF0YT8uSXNQYXJhbGxlbCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICB1cGRhdGVkU3RhZ2UuSXNQYXJhbGxlbCA9IG5vZGUuc3RhZ2VEYXRhLklzUGFyYWxsZWw7XG4gICAgICAgICAgICBpZiAobm9kZS5zdGFnZURhdGE/LlRhZ3MpIHVwZGF0ZWRTdGFnZS5UYWdzID0gbm9kZS5zdGFnZURhdGEuVGFncztcblxuICAgICAgICAgICAgLy8gQWx3YXlzIHVwZGF0ZSB0aGVzZSBwcm9wZXJ0aWVzXG4gICAgICAgICAgICB1cGRhdGVkU3RhZ2UuSXNFbnRyeVBvaW50ID0gbm9kZS5pc1N0YXJ0Tm9kZTtcbiAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5Jc0V4aXRQb2ludCA9IG5vZGUuc3RhZ2VEYXRhPy5Jc0V4aXRQb2ludCB8fCBmYWxzZTtcbiAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5Gb3JtID0gbm9kZS5zdGFnZURhdGE/LmZvcm1JZCB8fCAnJztcbiAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5Db29yZGluYXRlcyA9IHsgWDogbm9kZS54LCBZOiBub2RlLnkgfTtcbiAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5Td2ltTGFuZSA9IHRoaXMuc3dpbWxhbmVzW3N3aW1sYW5lSW5kZXhdLmlkIHx8ICcnO1xuXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIk5PREVfVFlQRVwiLCBub2RlLnR5cGUpO1xuXG4gICAgICAgICAgICAvLyBIYW5kbGUgc3ViZmxvdyBzdGFnZVxuICAgICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ3N1YmZsb3cnKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5Jc1N1YlByb2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgICB1cGRhdGVkU3RhZ2UuU3ViV29ya0Zsb3cgPSBub2RlLndvcmtmbG93RGF0YT8uaWQgfHwgJyc7XG4gICAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5OYW1lID0gbm9kZS53b3JrZmxvd0RhdGE/Lm5hbWUgfHwgJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFkZCB0byBzdGFnZXNcbiAgICAgICAgICAgIHN0YWdlcy5wdXNoKHVwZGF0ZWRTdGFnZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBzdGFnZVxuICAgICAgICAgICAgc3RhZ2VzLnB1c2goe1xuICAgICAgICAgICAgICBJZDogJycsXG4gICAgICAgICAgICAgIENvZGU6ICcnLFxuICAgICAgICAgICAgICBUZW5hbnRJZDogJycsXG4gICAgICAgICAgICAgIC8vIGlkOiBub2RlLmlkLFxuICAgICAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgICAgIFNlcnZpY2VOYW1lOiAnJyxcbiAgICAgICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgICAgICAgICBXb3JrZmxvdzogd29ya2Zsb3cuQ29kZSxcbiAgICAgICAgICAgICAgTmFtZTpcbiAgICAgICAgICAgICAgICAobm9kZS50eXBlID09PSAnc3ViZmxvdydcbiAgICAgICAgICAgICAgICAgID8gbm9kZS53b3JrZmxvd0RhdGE/Lm5hbWVcbiAgICAgICAgICAgICAgICAgIDogbm9kZS5zdGFnZURhdGE/Lk5hbWUpID8/ICcnLFxuICAgICAgICAgICAgICBEZXNjcmlwdGlvbjogbm9kZS5zdGFnZURhdGE/LkRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICAgICAgICBEdXJhdGlvbjogbm9kZS5zdGFnZURhdGE/LkR1cmF0aW9uIHx8IDAsXG4gICAgICAgICAgICAgIFBhc3NPblJ1bGU6IG5vZGUuc3RhZ2VEYXRhPy5QYXNzT25SdWxlIHx8ICcnLFxuICAgICAgICAgICAgICBBY3RvclJ1bGU6IG5vZGUuc3RhZ2VEYXRhPy5BY3RvclJ1bGUgfHwgU3RhZ2VBY3RvclJ1bGUuTm9uZSxcbiAgICAgICAgICAgICAgTWluTm9PZkFjdG9yOiBub2RlLnN0YWdlRGF0YT8uTWluTm9PZkFjdG9yIHx8IDAsXG4gICAgICAgICAgICAgIElzUGFyYWxsZWw6IG5vZGUuc3RhZ2VEYXRhPy5Jc1BhcmFsbGVsIHx8IGZhbHNlLFxuICAgICAgICAgICAgICBJc0VudHJ5UG9pbnQ6IG5vZGUuaXNTdGFydE5vZGUsXG4gICAgICAgICAgICAgIElzRXhpdFBvaW50OiBub2RlLnN0YWdlRGF0YT8uSXNFeGl0UG9pbnQgfHwgZmFsc2UsIC8vIFdpbGwgYmUgdXBkYXRlZCBiZWxvd1xuICAgICAgICAgICAgICBUYWdzOiBub2RlLnN0YWdlRGF0YT8uVGFncyB8fCBbXSxcbiAgICAgICAgICAgICAgRm9ybTogbm9kZS5zdGFnZURhdGE/LmZvcm1JZCA/PyAnJyxcbiAgICAgICAgICAgICAgQWxsb3dNdWx0aVN1YlByb2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICBBc3NpZ25tZW50VHlwZTpcbiAgICAgICAgICAgICAgICBub2RlLnN0YWdlRGF0YT8uQXNzaWdubWVudFR5cGUgfHxcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93Py5Bc3NpZ25tZW50VHlwZSB8fFxuICAgICAgICAgICAgICAgIFRhc2tBc3NpZ25tZW50VHlwZS5BdXRvUm91dGUsXG4gICAgICAgICAgICAgIFN1YldvcmtGbG93OiBub2RlLndvcmtmbG93RGF0YT8uaWQgfHwgJycsXG4gICAgICAgICAgICAgIFN3aW1MYW5lOiB0aGlzLnN3aW1sYW5lc1tzd2ltbGFuZUluZGV4XS5pZCB8fCAnJyxcbiAgICAgICAgICAgICAgQ29vcmRpbmF0ZXM6IHsgWDogbm9kZS54LCBZOiBub2RlLnkgfSxcbiAgICAgICAgICAgICAgSXNTdWJQcm9jZXNzOiBub2RlLnR5cGUgPT09ICdzdWJmbG93JyxcbiAgICAgICAgICAgICAgS2V5OiBub2RlLnN0YWdlRGF0YT8uS2V5IHx8IG5vZGUuaWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gLy8gRGV0ZXJtaW5lIHdoaWNoIHN0YWdlcyBhcmUgZXhpdCBwb2ludHMgKG5vIG91dGdvaW5nIGNvbm5lY3Rpb25zKVxuICAgIC8vIHN0YWdlcy5mb3JFYWNoKChzdGFnZSkgPT4ge1xuICAgIC8vICAgY29uc3QgaGFzT3V0Z29pbmdDb25uZWN0aW9ucyA9IHRoaXMuY29ubmVjdGlvbnMuc29tZShcbiAgICAvLyAgICAgKGNvbm4pID0+XG4gICAgLy8gICAgICAgY29ubi5zb3VyY2VOb2RlSWQgPT09IHN0YWdlLkNvZGUgfHwgY29ubi5zb3VyY2VOb2RlSWQgPT09IHN0YWdlLmlkXG4gICAgLy8gICApO1xuICAgIC8vICAgaWYgKCFoYXNPdXRnb2luZ0Nvbm5lY3Rpb25zKSB7XG4gICAgLy8gICAgIHN0YWdlLklzRXhpdFBvaW50ID0gdHJ1ZTtcbiAgICAvLyAgIH1cbiAgICAvLyB9KTtcblxuICAgIC8vIFRyYW5zZm9ybSBjb25uZWN0aW9ucyB0byBXb3JrZmxvd0FjdGlvbltdXG4gICAgY29uc3QgYWN0aW9uczogV29ya2Zsb3dBY3Rpb25bXSA9IFtdO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucy5mb3JFYWNoKChjb25uKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2VOb2RlID0gdGhpcy5maW5kTm9kZUJ5SWQoY29ubi5zb3VyY2VOb2RlSWQpPy5ub2RlO1xuICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHRoaXMuZmluZE5vZGVCeUlkKGNvbm4udGFyZ2V0Tm9kZUlkKT8ubm9kZTtcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhbiBleGlzdGluZyBhY3Rpb25cbiAgICAgIGlmICh0aGlzLmFjdGlvblJlY29yZFtjb25uLmlkXSkge1xuICAgICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgYWN0aW9uIHdpdGggY2hhbmdlZCB2YWx1ZXNcbiAgICAgICAgY29uc3QgZXhpc3RpbmdBY3Rpb24gPSB0aGlzLmFjdGlvblJlY29yZFtjb25uLmlkXTtcblxuICAgICAgICAvLyBDcmVhdGUgdXBkYXRlZCBhY3Rpb24gd2l0aCBjaGFuZ2VkIHByb3BlcnRpZXNcbiAgICAgICAgY29uc3QgdXBkYXRlZEFjdGlvbjogV29ya2Zsb3dBY3Rpb24gPSB7XG4gICAgICAgICAgLi4uZXhpc3RpbmdBY3Rpb24sXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5DaGFuZ2VkLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBVcGRhdGUgcHJvcGVydGllcyB0aGF0IG1heSBoYXZlIGNoYW5nZWRcbiAgICAgICAgdXBkYXRlZEFjdGlvbi5OYW1lID1cbiAgICAgICAgICBjb25uLmxhYmVsID8/XG4gICAgICAgICAgYEFjdGlvbiBmcm9tICR7c291cmNlTm9kZT8uc3RhZ2VEYXRhPy5OYW1lIHx8ICdVbmtub3duJ30gdG8gJHt0YXJnZXROb2RlPy5zdGFnZURhdGE/Lk5hbWUgfHwgJ1Vua25vd24nXG4gICAgICAgICAgfWA7XG4gICAgICAgIHVwZGF0ZWRBY3Rpb24uT3BlcmF0aW9uQWN0aW9uID0gY29ubi5hY3Rpb247XG4gICAgICAgIHVwZGF0ZWRBY3Rpb24uSXNQYXJhbGxlbCA9IHRhcmdldE5vZGU/LnN0YWdlRGF0YT8uSXNQYXJhbGxlbCB8fCBmYWxzZTtcbiAgICAgICAgdXBkYXRlZEFjdGlvbi5QYXNzT25SdWxlID0gY29ubi5jb25kaXRpb24gfHwgJyc7XG5cbiAgICAgICAgYWN0aW9ucy5wdXNoKHVwZGF0ZWRBY3Rpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGFjdGlvblxuICAgICAgICBhY3Rpb25zLnB1c2goe1xuICAgICAgICAgIElkOiAnJyxcbiAgICAgICAgICBDb2RlOiAnJyxcbiAgICAgICAgICBUZW5hbnRJZDogJycsXG4gICAgICAgICAgLy8gaWQ6IGNvbm4uaWQsXG4gICAgICAgICAgaWQ6ICcnLFxuICAgICAgICAgIFNlcnZpY2VOYW1lOiAnJyxcbiAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgICAgIFdvcmtmbG93OiB3b3JrZmxvdy5Db2RlLFxuICAgICAgICAgIE5hbWU6XG4gICAgICAgICAgICBjb25uLmxhYmVsID8/XG4gICAgICAgICAgICBgQWN0aW9uIGZyb20gJHtzb3VyY2VOb2RlPy5zdGFnZURhdGE/Lk5hbWUgfHwgJ1Vua25vd24nfSB0byAke3RhcmdldE5vZGU/LnN0YWdlRGF0YT8uTmFtZSB8fCAnVW5rbm93bidcbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgIE9wZXJhdGlvbkFjdGlvbjogY29ubi5hY3Rpb24sXG4gICAgICAgICAgRnJvbVN0YWdlOiBjb25uLnNvdXJjZU5vZGVJZCxcbiAgICAgICAgICBUb1N0YWdlOiBjb25uLnRhcmdldE5vZGVJZCxcbiAgICAgICAgICBJc1BhcmFsbGVsOiBzb3VyY2VOb2RlPy5zdGFnZURhdGE/LklzUGFyYWxsZWwgfHwgZmFsc2UsXG4gICAgICAgICAgUGFzc09uUnVsZTogY29ubi5jb25kaXRpb24gfHwgJycsXG4gICAgICAgICAgU291cmNlUG9pbnRUeXBlOiB0aGlzLmdldENvbm5lY3Rpb25Qb2ludFR5cGUoY29ubi5zb3VyY2VQb2ludElkKSxcbiAgICAgICAgICBUYXJnZXRQb2ludFR5cGU6IHRoaXMuZ2V0Q29ubmVjdGlvblBvaW50VHlwZShjb25uLnRhcmdldFBvaW50SWQpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEFkZCBkZWxldGVkIG9iamVjdHMgd2l0aCBSZW1vdmVkIHN0YXRlXG4gICAgT2JqZWN0LmtleXModGhpcy5zdGFnZVJlY29yZCkuZm9yRWFjaCgoc3RhZ2VJZCkgPT4ge1xuICAgICAgY29uc3QgZXhpc3RzID0gc3RhZ2VzLnNvbWUoXG4gICAgICAgIChzdGFnZSkgPT4gc3RhZ2UuQ29kZSA9PT0gc3RhZ2VJZCB8fCBzdGFnZS5pZCA9PT0gc3RhZ2VJZFxuICAgICAgKTtcblxuICAgICAgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgY29uc3Qgc3RhZ2UgPSB0aGlzLnN0YWdlUmVjb3JkW3N0YWdlSWRdO1xuICAgICAgICBzdGFnZXMucHVzaCh7XG4gICAgICAgICAgLi4uc3RhZ2UsXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5SZW1vdmVkLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLmFjdGlvblJlY29yZCkuZm9yRWFjaCgoYWN0aW9uSWQpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IGFjdGlvbnMuc29tZShcbiAgICAgICAgKGFjdGlvbikgPT4gYWN0aW9uLkNvZGUgPT09IGFjdGlvbklkIHx8IGFjdGlvbi5pZCA9PT0gYWN0aW9uSWRcbiAgICAgICk7XG5cbiAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9uUmVjb3JkW2FjdGlvbklkXTtcbiAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5SZW1vdmVkLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBIYW5kbGUgZGVsZXRlZCBzd2ltbGFuZXNcbiAgICBPYmplY3Qua2V5cyh0aGlzLnN3aW1sYW5lUmVjb3JkKS5mb3JFYWNoKChsYW5lSWQpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHdvcmtmbG93LkxhbmVzLnNvbWUoXG4gICAgICAgIChsYW5lKSA9PiBsYW5lLkNvZGUgPT09IGxhbmVJZCB8fCBsYW5lLmlkID09PSBsYW5lSWRcbiAgICAgICk7XG5cbiAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgIGNvbnN0IGxhbmUgPSB0aGlzLnN3aW1sYW5lUmVjb3JkW2xhbmVJZF07XG4gICAgICAgIHdvcmtmbG93LkxhbmVzLnB1c2goe1xuICAgICAgICAgIC4uLmxhbmUsXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5SZW1vdmVkLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB3b3JrZmxvdy5TdGFnZXMgPSBzdGFnZXM7XG4gICAgd29ya2Zsb3cuQWN0aW9ucyA9IGFjdGlvbnM7XG5cbiAgICByZXR1cm4gd29ya2Zsb3c7XG4gIH1cblxuICBnZXRDb25uZWN0aW9uUG9pbnRUeXBlKFxuICAgIHBvaW50SWQ6IHN0cmluZ1xuICApOiAndG9wJyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gRXh0cmFjdCB0aGUgdHlwZSBmcm9tIHRoZSBjb25uZWN0aW9uIHBvaW50IElEIGZvcm1hdFxuICAgIC8vIHdoaWNoIGlzIHVzdWFsbHkgc29tZXRoaW5nIGxpa2UgXCJub2RlLWlkLXRvcC01MFwiXG4gICAgY29uc3QgcGFydHMgPSBwb2ludElkLnNwbGl0KCctJyk7XG4gICAgY29uc3QgdHlwZUluZGV4ID0gcGFydHMuZmluZEluZGV4KFxuICAgICAgKHBhcnQpID0+XG4gICAgICAgIHBhcnQgPT09ICd0b3AnIHx8XG4gICAgICAgIHBhcnQgPT09ICdyaWdodCcgfHxcbiAgICAgICAgcGFydCA9PT0gJ2JvdHRvbScgfHxcbiAgICAgICAgcGFydCA9PT0gJ2xlZnQnXG4gICAgKTtcblxuICAgIGlmICh0eXBlSW5kZXggPj0gMCkge1xuICAgICAgcmV0dXJuIHBhcnRzW3R5cGVJbmRleF0gYXMgJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIEFkZCBhIG5ldyBwcm9wZXJ0eSB0byB0cmFjayBsb2FkZWQgb2JqZWN0c1xuICBsb2FkZWRPYmplY3RJZHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTsgLy8gRm9ybWF0OiB7IGlkOiBjb2RlIH1cblxuICAvLyBBZGQgYSBtZXRob2QgdG8gcmVnaXN0ZXIgbG9hZGVkIG9iamVjdHNcbiAgcmVnaXN0ZXJMb2FkZWRPYmplY3QoaWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkZWRPYmplY3RJZHNbaWRdID0gY29kZTtcbiAgfVxuXG4gIC8vIE1ldGhvZCB0byBjaGVjayBpZiBhbiBvYmplY3Qgd2FzIGxvYWRlZCBmcm9tIEFQSVxuICB3YXNMb2FkZWRGcm9tQXBpKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaWQgaW4gdGhpcy5sb2FkZWRPYmplY3RJZHM7XG4gIH1cblxuICAvLyBNZXRob2QgdG8gZ2V0IHRoZSBjb2RlIGZvciBhIGxvYWRlZCBvYmplY3RcbiAgZ2V0Q29kZUZvck9iamVjdChpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkZWRPYmplY3RJZHNbaWRdIHx8ICcnO1xuICB9XG59XG4iXX0=
|
|
672
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGVzaWduZXIuc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL3dvcmtmbG93LWRlc2lnbmVyLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFpQixrQkFBa0IsRUFBMkMsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFZcEssTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxTQUFTLEdBQW1CLEVBQUUsQ0FBQztJQUMvQixXQUFXLEdBQWtCLElBQUksQ0FBQyxDQUFDLHVDQUF1QztJQUMxRSxXQUFXLEdBQWlCLEVBQUUsQ0FBQztJQUMvQixzQkFBc0IsR0FPbEIsRUFBRSxDQUFDO0lBQ1AsY0FBYyxHQUFrQixJQUFJLENBQUM7SUFDckMsZ0JBQWdCLEdBQWtCLElBQUksQ0FBQztJQUN2QyxVQUFVLEdBQWtCLElBQUksQ0FBQztJQUVqQyxRQUFRLEdBQW9CLElBQUksQ0FBQztJQUNqQyxjQUFjLEdBQTZCLEVBQUUsQ0FBQztJQUM5QyxXQUFXLEdBQWtDLEVBQUUsQ0FBQztJQUNoRCxZQUFZLEdBQW1DLEVBQUUsQ0FBQztJQUVsRCxhQUFhLENBQUMsRUFBVTtRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sZ0JBQWdCLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFeEMsZUFBZSxHQUE2QjtRQUMzRCxLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQztRQUN2QyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSx1Q0FBdUM7UUFDNUQsMkNBQTJDO1FB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QyxFQUFFLENBQUM7WUFDbkIsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUF3QyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLGVBQWUsR0FBOEIsRUFBRSxDQUFDLENBQUMsdUJBQXVCO0lBRXhFLDBDQUEwQztJQUMxQyxvQkFBb0IsQ0FBQyxFQUFVLEVBQUUsSUFBWTtRQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELGdCQUFnQixDQUFDLEVBQVU7UUFDekIsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLGdCQUFnQixDQUFDLEVBQVU7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO3dHQTl6QlUscUJBQXFCOzRHQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9iamVjdFN0YXRlLCBTdGFnZUFjdG9yUnVsZSwgU3RhdHVzLCBTd2ltTGFuZSwgVGFnLCBUYXNrQXNzaWdubWVudFR5cGUsIFdvcmtmbG93LCBXb3JrZmxvd0FjdGlvbiwgV29ya2Zsb3dTdGFnZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQge1xuICBDb25uZWN0aW9uLFxuICBDb25uZWN0aW9uUG9pbnQsXG4gIE5vZGUsXG4gIFN3aW1sYW5lSXRlbSxcbiAgVG9vbFR5cGUsXG59IGZyb20gJy4vd29ya2Zsb3ctZGVzaWduZXIudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dEZXNpZ25lclN0YXRlIHtcbiAgc3dpbWxhbmVzOiBTd2ltbGFuZUl0ZW1bXSA9IFtdO1xuICBzdGFydE5vZGVJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7IC8vIFRyYWNrIHRoZSBJRCBvZiB0aGUgZmlyc3Qvc3RhcnQgbm9kZVxuICBjb25uZWN0aW9uczogQ29ubmVjdGlvbltdID0gW107XG4gIGRyYWdnaW5nQ29ubmVjdGlvbkRhdGE6IHtcbiAgICBzb3VyY2VQb2ludD86IENvbm5lY3Rpb25Qb2ludDtcbiAgICBzb3VyY2VTd2ltbGFuZUluZGV4PzogbnVtYmVyO1xuICAgIHN0YXJ0WD86IG51bWJlcjtcbiAgICBzdGFydFk/OiBudW1iZXI7XG4gICAgY3VycmVudFg/OiBudW1iZXI7XG4gICAgY3VycmVudFk/OiBudW1iZXI7XG4gIH0gPSB7fTtcbiAgd29ya2Zsb3dGb3JtSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICB3b3JrZmxvd0Zvcm1OYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgd29ya2Zsb3dJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgd29ya2Zsb3c6IFdvcmtmbG93IHwgbnVsbCA9IG51bGw7XG4gIHN3aW1sYW5lUmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCBTd2ltTGFuZT4gPSB7fTtcbiAgc3RhZ2VSZWNvcmQ6IFJlY29yZDxzdHJpbmcsIFdvcmtmbG93U3RhZ2U+ID0ge307XG4gIGFjdGlvblJlY29yZDogUmVjb3JkPHN0cmluZywgV29ya2Zsb3dBY3Rpb24+ID0ge307XG5cbiAgc2V0V29ya2Zsb3dJZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy53b3JrZmxvd0lkID0gaWQ7XG4gIH1cblxuICBwdWJsaWMgbGFuZUlkVG9JbmRleE1hcDogTWFwPHN0cmluZywgbnVtYmVyPiA9IG5ldyBNYXAoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbm5lY3Rpb25SdWxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuICAgIHN0YWdlOiBbJ3N0YWdlJywgJ2RlY2lzaW9uJywgJ3N1YmZsb3cnXSxcbiAgICBkZWNpc2lvbjogWydzdGFnZSddLCAvLyBEZWNpc2lvbnMgY2FuIG9ubHkgY29ubmVjdCB0byBTdGFnZXNcbiAgICAvLyAnYWN0aW9uJzogWydzdGFnZScsICdmb3JtJywgJ2RlY2lzaW9uJ10sXG4gICAgZm9ybTogW10sXG4gICAgc3ViZmxvdzogWydzdGFnZScsICdkZWNpc2lvbiddLFxuICB9O1xuXG4gIHNldFdvcmtmbG93Rm9ybShmb3JtSWQ6IHN0cmluZyB8IG51bGwsIGZvcm1OYW1lOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy53b3JrZmxvd0Zvcm1JZCA9IGZvcm1JZDtcbiAgICB0aGlzLndvcmtmbG93Rm9ybU5hbWUgPSBmb3JtTmFtZTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLndvcmtmbG93Rm9ybUlkLCB0aGlzLndvcmtmbG93Rm9ybU5hbWUpO1xuICB9XG5cbiAgYWRkU3dpbWxhbmUobmFtZTogc3RyaW5nLCB0YWdzOiBUYWdbXSkge1xuICAgIC8vIEdlbmVyYXRlIGEgdW5pcXVlIGtleSBmb3IgdGhpcyBzd2ltbGFuZVxuICAgIGNvbnN0IHN3aW1sYW5lS2V5ID0gYGxhbmUtJHtEYXRlLm5vdygpfS0ke01hdGguZmxvb3IoXG4gICAgICBNYXRoLnJhbmRvbSgpICogMTAwMFxuICAgICl9YDtcblxuICAgIHRoaXMuc3dpbWxhbmVzID0gdGhpcy5zd2ltbGFuZXMuY29uY2F0KFtcbiAgICAgIHtcbiAgICAgICAgb3JkZXI6IHRoaXMuc3dpbWxhbmVzLmxlbmd0aCxcbiAgICAgICAgbGFiZWw6IG5hbWUsXG4gICAgICAgIHRhZ3MsXG4gICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgaWQ6IHN3aW1sYW5lS2V5LCAvLyBTdG9yZSB0aGUgZ2VuZXJhdGVkIGtleSBhcyBpZCBmb3IgZnJvbnRlbmQgcmVmZXJlbmNlXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG5cbiAgcmVnaXN0ZXJMYW5lTWFwcGluZyhsYW5lSWQ6IHN0cmluZywgc3dpbWxhbmVJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5sYW5lSWRUb0luZGV4TWFwLnNldChsYW5lSWQsIHN3aW1sYW5lSW5kZXgpO1xuICB9XG5cbiAgLy8gQWRkIHRoaXMgbWV0aG9kIHRvIGdlbmVyYXRlIGNvbm5lY3Rpb24gcG9pbnRzIGZvciBhIG5vZGVcbiAgZ2VuZXJhdGVDb25uZWN0aW9uUG9pbnRzKG5vZGU6IE5vZGUpOiBDb25uZWN0aW9uUG9pbnRbXSB7XG4gICAgY29uc3QgcG9pbnRzOiBDb25uZWN0aW9uUG9pbnRbXSA9IFtdO1xuICAgIGNvbnN0IHNwYWNpbmcgPSA1MDsgLy8gU3BhY2UgYmV0d2VlbiBjb25uZWN0aW9uIHBvaW50c1xuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ3N0YWdlJykge1xuICAgICAgLy8gUmVjdGFuZ3VsYXIgc2hhcGVzIC0gYWRkIHBvaW50cyBhcm91bmQgdGhlIHJlY3RhbmdsZVxuXG4gICAgICAvLyBUb3AgZWRnZSBwb2ludHNcbiAgICAgIGZvciAobGV0IHggPSBzcGFjaW5nOyB4IDwgbm9kZS53aWR0aDsgeCArPSBzcGFjaW5nKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKHtcbiAgICAgICAgICBpZDogYCR7bm9kZS5pZH0tdG9wLSR7eH1gLFxuICAgICAgICAgIG5vZGVJZDogbm9kZS5pZCxcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdHlwZTogJ3RvcCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBSaWdodCBlZGdlIHBvaW50c1xuICAgICAgZm9yIChsZXQgeSA9IHNwYWNpbmc7IHkgPCBub2RlLmhlaWdodDsgeSArPSBzcGFjaW5nKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKHtcbiAgICAgICAgICBpZDogYCR7bm9kZS5pZH0tcmlnaHQtJHt5fWAsXG4gICAgICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgICAgIHg6IG5vZGUud2lkdGgsXG4gICAgICAgICAgeTogeSxcbiAgICAgICAgICB0eXBlOiAncmlnaHQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gQm90dG9tIGVkZ2UgcG9pbnRzXG4gICAgICBmb3IgKGxldCB4ID0gc3BhY2luZzsgeCA8IG5vZGUud2lkdGg7IHggKz0gc3BhY2luZykge1xuICAgICAgICBwb2ludHMucHVzaCh7XG4gICAgICAgICAgaWQ6IGAke25vZGUuaWR9LWJvdHRvbS0ke3h9YCxcbiAgICAgICAgICBub2RlSWQ6IG5vZGUuaWQsXG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiBub2RlLmhlaWdodCxcbiAgICAgICAgICB0eXBlOiAnYm90dG9tJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIExlZnQgZWRnZSBwb2ludHNcbiAgICAgIGZvciAobGV0IHkgPSBzcGFjaW5nOyB5IDwgbm9kZS5oZWlnaHQ7IHkgKz0gc3BhY2luZykge1xuICAgICAgICBwb2ludHMucHVzaCh7XG4gICAgICAgICAgaWQ6IGAke25vZGUuaWR9LWxlZnQtJHt5fWAsXG4gICAgICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogeSxcbiAgICAgICAgICB0eXBlOiAnbGVmdCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSAnZGVjaXNpb24nKSB7XG4gICAgICAvLyBEaWFtb25kIHNoYXBlIC0gYWRkIHBvaW50cyBhdCB0aGUgZm91ciBjb3JuZXJzXG4gICAgICBwb2ludHMucHVzaCh7XG4gICAgICAgIGlkOiBgJHtub2RlLmlkfS10b3AtMGAsXG4gICAgICAgIG5vZGVJZDogbm9kZS5pZCxcbiAgICAgICAgeDogbm9kZS53aWR0aCAvIDIsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIHR5cGU6ICd0b3AnLFxuICAgICAgfSk7XG5cbiAgICAgIHBvaW50cy5wdXNoKHtcbiAgICAgICAgaWQ6IGAke25vZGUuaWR9LXJpZ2h0LTBgLFxuICAgICAgICBub2RlSWQ6IG5vZGUuaWQsXG4gICAgICAgIHg6IG5vZGUud2lkdGgsXG4gICAgICAgIHk6IG5vZGUuaGVpZ2h0IC8gMixcbiAgICAgICAgdHlwZTogJ3JpZ2h0JyxcbiAgICAgIH0pO1xuXG4gICAgICBwb2ludHMucHVzaCh7XG4gICAgICAgIGlkOiBgJHtub2RlLmlkfS1ib3R0b20tMGAsXG4gICAgICAgIG5vZGVJZDogbm9kZS5pZCxcbiAgICAgICAgeDogbm9kZS53aWR0aCAvIDIsXG4gICAgICAgIHk6IG5vZGUuaGVpZ2h0LFxuICAgICAgICB0eXBlOiAnYm90dG9tJyxcbiAgICAgIH0pO1xuXG4gICAgICBwb2ludHMucHVzaCh7XG4gICAgICAgIGlkOiBgJHtub2RlLmlkfS1sZWZ0LTBgLFxuICAgICAgICBub2RlSWQ6IG5vZGUuaWQsXG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IG5vZGUuaGVpZ2h0IC8gMixcbiAgICAgICAgdHlwZTogJ2xlZnQnLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdmb3JtJykge1xuICAgICAgLy8gRm9ybSBvbmx5IGhhcyBpbnB1dCBjb25uZWN0aW9uIHBvaW50cywgbm8gb3V0cHV0IHBvaW50c1xuXG4gICAgICAvLyBMZWZ0IGVkZ2UgcG9pbnRzIChmb3IgaW5wdXQgY29ubmVjdGlvbnMpXG4gICAgICBmb3IgKGxldCB5ID0gc3BhY2luZzsgeSA8IG5vZGUuaGVpZ2h0OyB5ICs9IHNwYWNpbmcpIHtcbiAgICAgICAgcG9pbnRzLnB1c2goe1xuICAgICAgICAgIGlkOiBgJHtub2RlLmlkfS1sZWZ0LSR7eX1gLFxuICAgICAgICAgIG5vZGVJZDogbm9kZS5pZCxcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IHksXG4gICAgICAgICAgdHlwZTogJ2xlZnQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ3N1YmZsb3cnKSB7XG4gICAgICAvLyBIZXhhZ29uIHNoYXBlIC0gYWRkIHBvaW50cyBhdCB0aGUgc2l4IGNvcm5lcnNcbiAgICAgIHBvaW50cy5wdXNoKHtcbiAgICAgICAgaWQ6IGAke25vZGUuaWR9LXRvcC0wYCxcbiAgICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgICB4OiBub2RlLndpZHRoIC8gMixcbiAgICAgICAgeTogMCxcbiAgICAgICAgdHlwZTogJ3RvcCcsXG4gICAgICB9KTtcblxuICAgICAgcG9pbnRzLnB1c2goe1xuICAgICAgICBpZDogYCR7bm9kZS5pZH0tcmlnaHQtdG9wYCxcbiAgICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgICB4OiBub2RlLndpZHRoLFxuICAgICAgICB5OiBub2RlLmhlaWdodCAvIDQsXG4gICAgICAgIHR5cGU6ICdyaWdodCcsXG4gICAgICB9KTtcblxuICAgICAgcG9pbnRzLnB1c2goe1xuICAgICAgICBpZDogYCR7bm9kZS5pZH0tcmlnaHQtYm90dG9tYCxcbiAgICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgICB4OiBub2RlLndpZHRoLFxuICAgICAgICB5OiAobm9kZS5oZWlnaHQgKiAzKSAvIDQsXG4gICAgICAgIHR5cGU6ICdyaWdodCcsXG4gICAgICB9KTtcblxuICAgICAgcG9pbnRzLnB1c2goe1xuICAgICAgICBpZDogYCR7bm9kZS5pZH0tYm90dG9tLTBgLFxuICAgICAgICBub2RlSWQ6IG5vZGUuaWQsXG4gICAgICAgIHg6IG5vZGUud2lkdGggLyAyLFxuICAgICAgICB5OiBub2RlLmhlaWdodCxcbiAgICAgICAgdHlwZTogJ2JvdHRvbScsXG4gICAgICB9KTtcblxuICAgICAgcG9pbnRzLnB1c2goe1xuICAgICAgICBpZDogYCR7bm9kZS5pZH0tbGVmdC1ib3R0b21gLFxuICAgICAgICBub2RlSWQ6IG5vZGUuaWQsXG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IChub2RlLmhlaWdodCAqIDMpIC8gNCxcbiAgICAgICAgdHlwZTogJ2xlZnQnLFxuICAgICAgfSk7XG5cbiAgICAgIHBvaW50cy5wdXNoKHtcbiAgICAgICAgaWQ6IGAke25vZGUuaWR9LWxlZnQtdG9wYCxcbiAgICAgICAgbm9kZUlkOiBub2RlLmlkLFxuICAgICAgICB4OiAwLFxuICAgICAgICB5OiBub2RlLmhlaWdodCAvIDQsXG4gICAgICAgIHR5cGU6ICdsZWZ0JyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwb2ludHM7XG4gIH1cblxuICBhZGROb2RlKFxuICAgIHN3aW1sYW5lSW5kZXg6IG51bWJlcixcbiAgICB0eXBlOiBUb29sVHlwZSxcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyLFxuICAgIHN0YWdlRGF0YT86IFBhcnRpYWw8V29ya2Zsb3dTdGFnZT4sXG4gICAgd29ya2Zsb3dEYXRhPzogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSxcbiAgICB1c2VFeGlzdGluZ0lkOiBib29sZWFuID0gZmFsc2VcbiAgKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuc3dpbWxhbmVzW3N3aW1sYW5lSW5kZXhdIHx8XG4gICAgICAhdHlwZSB8fFxuICAgICAgKHR5cGUgIT09ICdzdGFnZScgJiZcbiAgICAgICAgdHlwZSAhPT0gJ2RlY2lzaW9uJyAmJlxuICAgICAgICB0eXBlICE9PSAnZm9ybScgJiZcbiAgICAgICAgdHlwZSAhPT0gJ3N1YmZsb3cnKVxuICAgICkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQWRqdXN0IHBvc2l0aW9uIHJlbGF0aXZlIHRvIHN3aW1sYW5lXG4gICAgY29uc3QgYWRqdXN0ZWRZID0geSAtIHN3aW1sYW5lSW5kZXggKiAyNjM7IC8vIFN1YnRyYWN0aW5nIGhlYWRlciBoZWlnaHRcblxuICAgIC8vIEdlbmVyYXRlIGEgdW5pcXVlIElEIG9yIHVzZSBleGlzdGluZ1xuICAgIGNvbnN0IGlkID1cbiAgICAgIHVzZUV4aXN0aW5nSWQgJiYgc3RhZ2VEYXRhPy5Db2RlXG4gICAgICAgID8gc3RhZ2VEYXRhLkNvZGVcbiAgICAgICAgOiBgJHt0eXBlfS0ke0RhdGUubm93KCl9LSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMCl9YDtcblxuICAgIC8vIENyZWF0ZSBub2RlIHdpdGggZGltZW5zaW9ucyBiYXNlZCBvbiB0eXBlXG4gICAgY29uc3Qgbm9kZTogTm9kZSA9IHtcbiAgICAgIGlkLFxuICAgICAgdHlwZSxcbiAgICAgIHgsXG4gICAgICB5OiBhZGp1c3RlZFksXG4gICAgICB3aWR0aDogdHlwZSA9PT0gJ3N1YmZsb3cnID8gMTUwIDogMTY5LCAvLyBXaWR0aCBmcm9tIFNWR1xuICAgICAgaGVpZ2h0OiAxMDAsIC8vIEhlaWdodCBmcm9tIFNWR1xuICAgICAgaXNTdGFydE5vZGU6IGZhbHNlLCAvLyBEZWZhdWx0IHRvIGZhbHNlXG4gICAgICBzdGFnZURhdGE6IHN0YWdlRGF0YSB8fCB7fSwgLy8gU3RvcmUgc3RhZ2UgZGF0YVxuICAgICAgd29ya2Zsb3dEYXRhOiB3b3JrZmxvd0RhdGEgfHwgbnVsbCxcbiAgICB9O1xuXG4gICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3Qgbm9kZSBpbiB0aGUgZW50aXJlIHdvcmtmbG93LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBub2RlXG4gICAgaWYgKHRoaXMuZ2V0Tm9kZUNvdW50KCkgPT09IDApIHtcbiAgICAgIG5vZGUuaXNTdGFydE5vZGUgPSB0cnVlO1xuICAgICAgdGhpcy5zdGFydE5vZGVJZCA9IGlkO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIGNvbm5lY3Rpb24gcG9pbnRzIGZvciB0aGUgbm9kZVxuICAgIG5vZGUuY29ubmVjdGlvblBvaW50cyA9IHRoaXMuZ2VuZXJhdGVDb25uZWN0aW9uUG9pbnRzKG5vZGUpO1xuXG4gICAgLy8gQWRkIG5vZGUgdG8gdGhlIHN3aW1sYW5lXG4gICAgaWYgKCF0aGlzLnN3aW1sYW5lc1tzd2ltbGFuZUluZGV4XS5ub2Rlcykge1xuICAgICAgdGhpcy5zd2ltbGFuZXNbc3dpbWxhbmVJbmRleF0ubm9kZXMgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5zd2ltbGFuZXNbc3dpbWxhbmVJbmRleF0ubm9kZXMucHVzaChub2RlKTtcblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gSGVscGVyIHRvIGdldCB0b3RhbCBub2RlIGNvdW50IGFjcm9zcyBhbGwgc3dpbWxhbmVzXG4gIGdldE5vZGVDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN3aW1sYW5lcy5yZWR1Y2UoXG4gICAgICAoY291bnQsIHN3aW1sYW5lKSA9PiBjb3VudCArIChzd2ltbGFuZS5ub2Rlcz8ubGVuZ3RoIHx8IDApLFxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICAvLyBGaW5kIGEgbm9kZSBieSBJRCAodXNlZnVsIGZvciBsYXRlciBvcGVyYXRpb25zKVxuICBmaW5kTm9kZUJ5SWQoaWQ6IHN0cmluZyk6IHsgbm9kZTogTm9kZTsgc3dpbWxhbmVJbmRleDogbnVtYmVyIH0gfCBudWxsIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3dpbWxhbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzd2ltbGFuZSA9IHRoaXMuc3dpbWxhbmVzW2ldO1xuICAgICAgY29uc3Qgbm9kZSA9IHN3aW1sYW5lLm5vZGVzPy5maW5kKChuKSA9PiBuLmlkID09PSBpZCk7XG4gICAgICBpZiAobm9kZSkge1xuICAgICAgICByZXR1cm4geyBub2RlLCBzd2ltbGFuZUluZGV4OiBpIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gRmluZCBhIG5vZGUgYnkgSUQgKHVzZWZ1bCBmb3IgbGF0ZXIgb3BlcmF0aW9ucylcbiAgZmluZEFjdGlvbkJ5SWQoY29ubmVjdGlvbklkOiBzdHJpbmcpOiBDb25uZWN0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbnMuZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gY29ubmVjdGlvbklkKSA/PyBudWxsO1xuICB9XG5cbiAgc3RhcnRDb25uZWN0aW9uRHJhZyhcbiAgICBwb2ludDogQ29ubmVjdGlvblBvaW50LFxuICAgIHN3aW1sYW5lSW5kZXg6IG51bWJlcixcbiAgICBnbG9iYWxYOiBudW1iZXIsXG4gICAgZ2xvYmFsWTogbnVtYmVyXG4gICkge1xuICAgIHRoaXMuZHJhZ2dpbmdDb25uZWN0aW9uRGF0YSA9IHtcbiAgICAgIHNvdXJjZVBvaW50OiBwb2ludCxcbiAgICAgIHNvdXJjZVN3aW1sYW5lSW5kZXg6IHN3aW1sYW5lSW5kZXgsXG4gICAgICBzdGFydFg6IGdsb2JhbFgsXG4gICAgICBzdGFydFk6IGdsb2JhbFksXG4gICAgICBjdXJyZW50WDogZ2xvYmFsWCxcbiAgICAgIGN1cnJlbnRZOiBnbG9iYWxZLFxuICAgIH07XG4gIH1cblxuICB1cGRhdGVDb25uZWN0aW9uRHJhZyhjdXJyZW50WDogbnVtYmVyLCBjdXJyZW50WTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuZHJhZ2dpbmdDb25uZWN0aW9uRGF0YS5zb3VyY2VQb2ludCkge1xuICAgICAgdGhpcy5kcmFnZ2luZ0Nvbm5lY3Rpb25EYXRhLmN1cnJlbnRYID0gY3VycmVudFg7XG4gICAgICB0aGlzLmRyYWdnaW5nQ29ubmVjdGlvbkRhdGEuY3VycmVudFkgPSBjdXJyZW50WTtcbiAgICB9XG4gIH1cblxuICBlbmRDb25uZWN0aW9uRHJhZygpIHtcbiAgICBjb25zb2xlLmxvZygnRW5kaW5nIGNvbm5lY3Rpb24gZHJhZywgY2xlYXJpbmcgZGF0YScpO1xuICAgIC8vIENsZWFyIGRyYWdnaW5nIGRhdGFcbiAgICB0aGlzLmRyYWdnaW5nQ29ubmVjdGlvbkRhdGEgPSB7fTtcbiAgfVxuXG4gIGlzQ29ubmVjdGlvbkRyYWdnaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZHJhZ2dpbmdDb25uZWN0aW9uRGF0YS5zb3VyY2VQb2ludDtcbiAgfVxuXG4gIGdldENvbm5lY3Rpb25QYXRoRGF0YSgpOiB7XG4gICAgc3RhcnRYOiBudW1iZXI7XG4gICAgc3RhcnRZOiBudW1iZXI7XG4gICAgZW5kWDogbnVtYmVyO1xuICAgIGVuZFk6IG51bWJlcjtcbiAgICBzb3VyY2VTd2ltbGFuZUluZGV4OiBudW1iZXI7XG4gIH0gfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmdDb25uZWN0aW9uRGF0YS5zb3VyY2VQb2ludCkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCB7IHNvdXJjZVBvaW50LCBzb3VyY2VTd2ltbGFuZUluZGV4LCBjdXJyZW50WCwgY3VycmVudFkgfSA9XG4gICAgICB0aGlzLmRyYWdnaW5nQ29ubmVjdGlvbkRhdGE7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZmluZE5vZGVCeUlkKHNvdXJjZVBvaW50Lm5vZGVJZCk/Lm5vZGU7XG5cbiAgICBpZiAoIW5vZGUgfHwgc291cmNlU3dpbWxhbmVJbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDtcblxuICAgIC8vIENhbGN1bGF0ZSBzdGFydCBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXNcbiAgICBjb25zdCBzdGFydFggPSBub2RlLnggKyBzb3VyY2VQb2ludC54O1xuICAgIGNvbnN0IHN0YXJ0WSA9IG5vZGUueSArIHNvdXJjZVBvaW50LnkgKyBzb3VyY2VTd2ltbGFuZUluZGV4ICogMjYzOyAvLyBBZGQgc3dpbWxhbmUgb2Zmc2V0XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnRYLFxuICAgICAgc3RhcnRZLFxuICAgICAgZW5kWDogY3VycmVudFggPz8gc3RhcnRYLFxuICAgICAgZW5kWTogY3VycmVudFkgPz8gc3RhcnRZLFxuICAgICAgc291cmNlU3dpbWxhbmVJbmRleCxcbiAgICB9O1xuICB9XG5cbiAgY3JlYXRlQ29ubmVjdGlvbihcbiAgICB0YXJnZXROb2RlSWQ6IHN0cmluZyxcbiAgICB0YXJnZXRQb2ludElkOiBzdHJpbmcsXG4gICAgdGFyZ2V0U3dpbWxhbmVJbmRleDogbnVtYmVyXG4gICk6IENvbm5lY3Rpb24gfCBudWxsIHtcbiAgICBjb25zdCB7IHNvdXJjZVBvaW50LCBzb3VyY2VTd2ltbGFuZUluZGV4IH0gPSB0aGlzLmRyYWdnaW5nQ29ubmVjdGlvbkRhdGE7XG5cbiAgICBpZiAoIXNvdXJjZVBvaW50IHx8IHNvdXJjZVN3aW1sYW5lSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5lcnJvcignTWlzc2luZyBzb3VyY2UgZGF0YSBmb3IgY29ubmVjdGlvbicpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY29ubmVjdGlvbjogQ29ubmVjdGlvbiA9IHtcbiAgICAgIGlkOiBgY29ubi0ke0RhdGUubm93KCl9LSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMCl9YCxcbiAgICAgIHNvdXJjZU5vZGVJZDogc291cmNlUG9pbnQubm9kZUlkLFxuICAgICAgdGFyZ2V0Tm9kZUlkOiB0YXJnZXROb2RlSWQsXG4gICAgICBzb3VyY2VQb2ludElkOiBzb3VyY2VQb2ludC5pZCxcbiAgICAgIHRhcmdldFBvaW50SWQ6IHRhcmdldFBvaW50SWQsXG4gICAgICBzb3VyY2VTd2ltbGFuZUluZGV4OiBzb3VyY2VTd2ltbGFuZUluZGV4LFxuICAgICAgdGFyZ2V0U3dpbWxhbmVJbmRleDogdGFyZ2V0U3dpbWxhbmVJbmRleCxcbiAgICAgIGxhYmVsOiAnJyxcbiAgICAgIGFjdGlvbjogbnVsbCxcbiAgICB9O1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pO1xuICAgIGNvbnNvbGUubG9nKCdDcmVhdGVkIGNvbm5lY3Rpb246JywgY29ubmVjdGlvbik7XG4gICAgY29uc29sZS5sb2coXG4gICAgICAnQ29ubmVjdGlvbnMgYXJyYXkgbm93IGhhcycsXG4gICAgICB0aGlzLmNvbm5lY3Rpb25zLmxlbmd0aCxcbiAgICAgICdjb25uZWN0aW9ucydcbiAgICApO1xuICAgIHJldHVybiBjb25uZWN0aW9uO1xuICB9XG5cbiAgLy8gQWRkIGEgbWV0aG9kIHRvIGdldCBjb25uZWN0aW9uIGRhdGEgZm9yIHJlbmRlcmluZ1xuICBnZXRDb25uZWN0aW9uRGF0YShjb25uZWN0aW9uOiBDb25uZWN0aW9uKToge1xuICAgIHN0YXJ0WDogbnVtYmVyO1xuICAgIHN0YXJ0WTogbnVtYmVyO1xuICAgIGVuZFg6IG51bWJlcjtcbiAgICBlbmRZOiBudW1iZXI7XG4gICAgc291cmNlU3dpbWxhbmVJbmRleDogbnVtYmVyO1xuICAgIHRhcmdldFN3aW1sYW5lSW5kZXg6IG51bWJlcjtcbiAgfSB8IG51bGwge1xuICAgIGNvbnN0IHNvdXJjZU5vZGVJbmZvID0gdGhpcy5maW5kTm9kZUJ5SWQoY29ubmVjdGlvbi5zb3VyY2VOb2RlSWQpO1xuICAgIGNvbnN0IHRhcmdldE5vZGVJbmZvID0gdGhpcy5maW5kTm9kZUJ5SWQoY29ubmVjdGlvbi50YXJnZXROb2RlSWQpO1xuXG4gICAgaWYgKCFzb3VyY2VOb2RlSW5mbyB8fCAhdGFyZ2V0Tm9kZUluZm8pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZU5vZGUgPSBzb3VyY2VOb2RlSW5mby5ub2RlO1xuICAgIGNvbnN0IHRhcmdldE5vZGUgPSB0YXJnZXROb2RlSW5mby5ub2RlO1xuXG4gICAgLy8gRmluZCBjb25uZWN0aW9uIHBvaW50c1xuICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gc291cmNlTm9kZS5jb25uZWN0aW9uUG9pbnRzPy5maW5kKFxuICAgICAgKHApID0+IHAuaWQgPT09IGNvbm5lY3Rpb24uc291cmNlUG9pbnRJZFxuICAgICk7XG4gICAgY29uc3QgdGFyZ2V0UG9pbnQgPSB0YXJnZXROb2RlLmNvbm5lY3Rpb25Qb2ludHM/LmZpbmQoXG4gICAgICAocCkgPT4gcC5pZCA9PT0gY29ubmVjdGlvbi50YXJnZXRQb2ludElkXG4gICAgKTtcblxuICAgIGlmICghc291cmNlUG9pbnQgfHwgIXRhcmdldFBvaW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhdGUgZ2xvYmFsIGNvb3JkaW5hdGVzXG4gICAgY29uc3Qgc3RhcnRYID0gc291cmNlTm9kZS54ICsgc291cmNlUG9pbnQueDtcbiAgICBjb25zdCBzdGFydFkgPVxuICAgICAgc291cmNlTm9kZS55ICsgc291cmNlUG9pbnQueSArIGNvbm5lY3Rpb24uc291cmNlU3dpbWxhbmVJbmRleCAqIDI2MztcblxuICAgIGNvbnN0IGVuZFggPSB0YXJnZXROb2RlLnggKyB0YXJnZXRQb2ludC54O1xuICAgIGNvbnN0IGVuZFkgPVxuICAgICAgdGFyZ2V0Tm9kZS55ICsgdGFyZ2V0UG9pbnQueSArIGNvbm5lY3Rpb24udGFyZ2V0U3dpbWxhbmVJbmRleCAqIDI2MztcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydFgsXG4gICAgICBzdGFydFksXG4gICAgICBlbmRYLFxuICAgICAgZW5kWSxcbiAgICAgIHNvdXJjZVN3aW1sYW5lSW5kZXg6IGNvbm5lY3Rpb24uc291cmNlU3dpbWxhbmVJbmRleCxcbiAgICAgIHRhcmdldFN3aW1sYW5lSW5kZXg6IGNvbm5lY3Rpb24udGFyZ2V0U3dpbWxhbmVJbmRleCxcbiAgICB9O1xuICB9XG5cbiAgLy8gQWRkIGEgbWV0aG9kIHRvIGNoZWNrIGlmIGEgY29ubmVjdGlvbiBpcyBhbGxvd2VkIGJhc2VkIG9uIG5vZGUgdHlwZXNcbiAgY2FuQ29ubmVjdChzb3VyY2VOb2RlVHlwZTogc3RyaW5nLCB0YXJnZXROb2RlVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29ubmVjdGlvblJ1bGVzW3NvdXJjZU5vZGVUeXBlXT8uaW5jbHVkZXModGFyZ2V0Tm9kZVR5cGUpIHx8IGZhbHNlXG4gICAgKTtcbiAgfVxuXG4gIC8vIEFkZCBhIG1ldGhvZCB0byBnZXQgYWxsb3dlZCBub2RlIHR5cGVzIGZvciB0aGUgY3VycmVudCBkcmFnZ2luZyBjb25uZWN0aW9uXG4gIGdldEFsbG93ZWRUYXJnZXROb2RlVHlwZXMoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5kcmFnZ2luZ0Nvbm5lY3Rpb25EYXRhLnNvdXJjZVBvaW50KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlTm9kZUluZm8gPSB0aGlzLmZpbmROb2RlQnlJZChcbiAgICAgIHRoaXMuZHJhZ2dpbmdDb25uZWN0aW9uRGF0YS5zb3VyY2VQb2ludC5ub2RlSWRcbiAgICApO1xuICAgIGlmICghc291cmNlTm9kZUluZm8pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2VOb2RlVHlwZSA9IHNvdXJjZU5vZGVJbmZvLm5vZGUudHlwZTtcblxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25SdWxlc1tzb3VyY2VOb2RlVHlwZV0gfHwgW107XG4gIH1cblxuICB1cGRhdGVTd2ltbGFuZShpbmRleDogbnVtYmVyLCBuYW1lOiBzdHJpbmcsIHRhZ3M6IFRhZ1tdKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICAnU3RhdGU6IFVwZGF0aW5nIHN3aW1sYW5lIGF0IGluZGV4JyxcbiAgICAgIGluZGV4LFxuICAgICAgJ3dpdGggbmFtZScsXG4gICAgICBuYW1lLFxuICAgICAgJ2FuZCB0YWdzJyxcbiAgICAgIHRhZ3NcbiAgICApO1xuXG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLnN3aW1sYW5lcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3dpbWxhbmVzW2luZGV4XSA9IHtcbiAgICAgICAgLi4udGhpcy5zd2ltbGFuZXNbaW5kZXhdLFxuICAgICAgICBsYWJlbDogbmFtZSxcbiAgICAgICAgdGFnczogdGFncyxcbiAgICAgIH07XG4gICAgICBjb25zb2xlLmxvZygnU3dpbWxhbmUgdXBkYXRlZDonLCB0aGlzLnN3aW1sYW5lc1tpbmRleF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIHN3aW1sYW5lIGluZGV4OicsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICB0cmFuc2Zvcm1Ub1dvcmtmbG93TW9kZWwoKTogV29ya2Zsb3cge1xuICAgIC8vIFVzZSBzdG9yZWQgd29ya2Zsb3cgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgY3JlYXRlIGEgbmV3IG9uZVxuICAgIGNvbnN0IHdvcmtmbG93OiBXb3JrZmxvdyA9IHRoaXMud29ya2Zsb3dcbiAgICAgID8geyAuLi50aGlzLndvcmtmbG93LCBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLkNoYW5nZWQgfVxuICAgICAgOiB7XG4gICAgICAgIC8vIEJhc2VNb2RlbCBwcm9wZXJ0aWVzXG4gICAgICAgIElkOiAnJyxcbiAgICAgICAgQ29kZTogJycsXG4gICAgICAgIFRlbmFudElkOiAnJyxcbiAgICAgICAgaWQ6ICcnLFxuICAgICAgICBTZXJ2aWNlTmFtZTogJycsXG4gICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICBEYXRhU3RhdGU6IHRoaXMud2FzTG9hZGVkRnJvbUFwaSh0aGlzLndvcmtmbG93SWQgfHwgJycpXG4gICAgICAgICAgPyBPYmplY3RTdGF0ZS5DaGFuZ2VkXG4gICAgICAgICAgOiBPYmplY3RTdGF0ZS5OZXcsXG5cbiAgICAgICAgLy8gV29ya2Zsb3cgc3BlY2lmaWMgcHJvcGVydGllc1xuICAgICAgICBOYW1lOiAnTmV3IFdvcmtmbG93JyxcbiAgICAgICAgRGVzY3JpcHRpb246ICcnLFxuICAgICAgICBTdGFnZUVudHJ5UnVsZTogJycsXG4gICAgICAgIEZvcm06IHRoaXMud29ya2Zsb3dGb3JtSWQgfHwgdW5kZWZpbmVkLFxuICAgICAgICBBc3NpZ25tZW50VHlwZTogVGFza0Fzc2lnbm1lbnRUeXBlLkF1dG9Sb3V0ZSxcbiAgICAgICAgT3BlcmF0aW9uOiAnJyxcbiAgICAgICAgU3RhdHVzOiBTdGF0dXMuQWN0aXZlLFxuICAgICAgICBBY3Rpb25zOiBbXSxcbiAgICAgICAgTGFuZXM6IFtdLFxuICAgICAgICBTdGFnZXM6IFtdLFxuICAgICAgfTtcblxuICAgIC8vIFVwZGF0ZSB3b3JrZmxvdyBmb3JtIGlmIGNoYW5nZWRcbiAgICBpZiAodGhpcy53b3JrZmxvd0Zvcm1JZCAhPT0gdGhpcy53b3JrZmxvdz8uRm9ybSkge1xuICAgICAgd29ya2Zsb3cuRm9ybSA9IHRoaXMud29ya2Zsb3dGb3JtSWQgfHwgd29ya2Zsb3cuRm9ybTtcbiAgICB9XG5cbiAgICAvLyBUcmFuc2Zvcm0gc3dpbWxhbmVzIHRvIFN3aW1MYW5lW11cbiAgICB3b3JrZmxvdy5MYW5lcyA9IHRoaXMuc3dpbWxhbmVzLm1hcCgoc3dpbWxhbmUpID0+IHtcbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYW4gZXhpc3Rpbmcgc3dpbWxhbmVcbiAgICAgIGlmIChzd2ltbGFuZS5pZCAmJiB0aGlzLnN3aW1sYW5lUmVjb3JkW3N3aW1sYW5lLmlkXSkge1xuICAgICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgbGFuZSB3aXRoIGNoYW5nZWQgdmFsdWVzXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nTGFuZSA9IHRoaXMuc3dpbWxhbmVSZWNvcmRbc3dpbWxhbmUuaWRdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmV4aXN0aW5nTGFuZSxcbiAgICAgICAgICBOYW1lOiBzd2ltbGFuZS5sYWJlbCxcbiAgICAgICAgICBUYWdzOiBzd2ltbGFuZS50YWdzLFxuICAgICAgICAgIFBvc2l0aW9uOiBzd2ltbGFuZS5vcmRlcixcbiAgICAgICAgICBDb29yZGluYXRlczogeyBYOiAwLCBZOiBzd2ltbGFuZS5vcmRlciAqIDI2MyB9LFxuICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuQ2hhbmdlZCxcbiAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBHZW5lcmF0ZSBhIG5ldyBJRCBmb3IgbmV3IHN3aW1sYW5lcyBpZiBub3QgYWxyZWFkeSBzZXRcbiAgICAgICAgY29uc3QgbGFuZUlkID1cbiAgICAgICAgICBzd2ltbGFuZS5pZCB8fFxuICAgICAgICAgIGBsYW5lLSR7RGF0ZS5ub3coKX0tJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwKX1gO1xuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgbGFuZVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIENvZGU6ICcnLFxuICAgICAgICAgIElkOiAnJyxcbiAgICAgICAgICBUZW5hbnRJZDogJycsXG4gICAgICAgICAgLy8gaWQ6IGxhbmVJZCxcbiAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgU2VydmljZU5hbWU6ICcnLFxuICAgICAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgV29ya2Zsb3c6IHdvcmtmbG93LkNvZGUsXG4gICAgICAgICAgTmFtZTogc3dpbWxhbmUubGFiZWwsXG4gICAgICAgICAgVGFnczogc3dpbWxhbmUudGFncyB8fCBbXSxcbiAgICAgICAgICBQb3NpdGlvbjogc3dpbWxhbmUub3JkZXIsXG4gICAgICAgICAgQ29vcmRpbmF0ZXM6IHsgWDogMCwgWTogc3dpbWxhbmUub3JkZXIgKiAyNjMgfSxcbiAgICAgICAgICBTaXplOiB7IFdpZHRoOiAzMDAwLCBIZWlnaHQ6IDI2MyB9LFxuICAgICAgICAgIEtleTogc3dpbWxhbmUuaWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gbm9kZXMgdG8gV29ya2Zsb3dTdGFnZVtdXG4gICAgY29uc3Qgc3RhZ2VzOiBXb3JrZmxvd1N0YWdlW10gPSBbXTtcblxuICAgIHRoaXMuc3dpbWxhbmVzLmZvckVhY2goKHN3aW1sYW5lLCBzd2ltbGFuZUluZGV4KSA9PiB7XG4gICAgICBzd2ltbGFuZS5ub2Rlcz8uZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICBpZiAobm9kZS50eXBlID09PSAnc3RhZ2UnIHx8IG5vZGUudHlwZSA9PT0gJ3N1YmZsb3cnKSB7XG4gICAgICAgICAgY29uc29sZS5sb2cobm9kZSk7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhbiBleGlzdGluZyBzdGFnZVxuICAgICAgICAgIGlmICh0aGlzLnN0YWdlUmVjb3JkW25vZGUuaWRdKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgZXhpc3Rpbmcgc3RhZ2Ugd2l0aCBjaGFuZ2VkIHZhbHVlc1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdTdGFnZSA9IHRoaXMuc3RhZ2VSZWNvcmRbbm9kZS5pZF07XG5cbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCB1cGRhdGVkIHByb3BlcnRpZXNcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRTdGFnZTogV29ya2Zsb3dTdGFnZSA9IHtcbiAgICAgICAgICAgICAgLi4uZXhpc3RpbmdTdGFnZSxcbiAgICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5DaGFuZ2VkLFxuICAgICAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBVcGRhdGUgcHJvcGVydGllcyB0aGF0IG1heSBoYXZlIGNoYW5nZWRcbiAgICAgICAgICAgIGlmIChub2RlLnN0YWdlRGF0YT8uTmFtZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICB1cGRhdGVkU3RhZ2UuTmFtZSA9XG4gICAgICAgICAgICAgICAgbm9kZS53b3JrZmxvd0RhdGE/Lm5hbWUgPz8gbm9kZS5zdGFnZURhdGEuTmFtZTtcbiAgICAgICAgICAgIGlmIChub2RlLnN0YWdlRGF0YT8uRGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgdXBkYXRlZFN0YWdlLkRlc2NyaXB0aW9uID0gbm9kZS5zdGFnZURhdGEuRGVzY3JpcHRpb247XG4gICAgICAgICAgICBpZiAobm9kZS5zdGFnZURhdGE/LkR1cmF0aW9uICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5EdXJhdGlvbiA9IG5vZGUuc3RhZ2VEYXRhLkR1cmF0aW9uO1xuICAgICAgICAgICAgaWYgKG5vZGUuc3RhZ2VEYXRhPy5QYXNzT25SdWxlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5QYXNzT25SdWxlID0gbm9kZS5zdGFnZURhdGEuUGFzc09uUnVsZTtcbiAgICAgICAgICAgIGlmIChub2RlLnN0YWdlRGF0YT8uQWN0b3JSdWxlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5BY3RvclJ1bGUgPSBub2RlLnN0YWdlRGF0YS5BY3RvclJ1bGU7XG4gICAgICAgICAgICBpZiAobm9kZS5zdGFnZURhdGE/LkFzc2lnbm1lbnRUeXBlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5Bc3NpZ25tZW50VHlwZSA9IG5vZGUuc3RhZ2VEYXRhLkFzc2lnbm1lbnRUeXBlO1xuICAgICAgICAgICAgaWYgKG5vZGUuc3RhZ2VEYXRhPy5NaW5Ob09mQWN0b3IgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgdXBkYXRlZFN0YWdlLk1pbk5vT2ZBY3RvciA9IG5vZGUuc3RhZ2VEYXRhLk1pbk5vT2ZBY3RvcjtcbiAgICAgICAgICAgIGlmIChub2RlLnN0YWdlRGF0YT8uSXNQYXJhbGxlbCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICB1cGRhdGVkU3RhZ2UuSXNQYXJhbGxlbCA9IG5vZGUuc3RhZ2VEYXRhLklzUGFyYWxsZWw7XG4gICAgICAgICAgICBpZiAobm9kZS5zdGFnZURhdGE/LlRhZ3MpIHVwZGF0ZWRTdGFnZS5UYWdzID0gbm9kZS5zdGFnZURhdGEuVGFncztcblxuICAgICAgICAgICAgLy8gQWx3YXlzIHVwZGF0ZSB0aGVzZSBwcm9wZXJ0aWVzXG4gICAgICAgICAgICB1cGRhdGVkU3RhZ2UuSXNFbnRyeVBvaW50ID0gbm9kZS5pc1N0YXJ0Tm9kZTtcbiAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5Jc0V4aXRQb2ludCA9IG5vZGUuc3RhZ2VEYXRhPy5Jc0V4aXRQb2ludCB8fCBmYWxzZTtcbiAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5Gb3JtID0gbm9kZS5zdGFnZURhdGE/LmZvcm1JZCB8fCAnJztcbiAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5Db29yZGluYXRlcyA9IHsgWDogbm9kZS54LCBZOiBub2RlLnkgfTtcbiAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5Td2ltTGFuZSA9IHRoaXMuc3dpbWxhbmVzW3N3aW1sYW5lSW5kZXhdLmlkIHx8ICcnO1xuXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIk5PREVfVFlQRVwiLCBub2RlLnR5cGUpO1xuXG4gICAgICAgICAgICAvLyBIYW5kbGUgc3ViZmxvdyBzdGFnZVxuICAgICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ3N1YmZsb3cnKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5Jc1N1YlByb2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgICB1cGRhdGVkU3RhZ2UuU3ViV29ya0Zsb3cgPSBub2RlLndvcmtmbG93RGF0YT8uaWQgfHwgJyc7XG4gICAgICAgICAgICAgIHVwZGF0ZWRTdGFnZS5OYW1lID0gbm9kZS53b3JrZmxvd0RhdGE/Lm5hbWUgfHwgJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFkZCB0byBzdGFnZXNcbiAgICAgICAgICAgIHN0YWdlcy5wdXNoKHVwZGF0ZWRTdGFnZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBzdGFnZVxuICAgICAgICAgICAgc3RhZ2VzLnB1c2goe1xuICAgICAgICAgICAgICBJZDogJycsXG4gICAgICAgICAgICAgIENvZGU6ICcnLFxuICAgICAgICAgICAgICBUZW5hbnRJZDogJycsXG4gICAgICAgICAgICAgIC8vIGlkOiBub2RlLmlkLFxuICAgICAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgICAgIFNlcnZpY2VOYW1lOiAnJyxcbiAgICAgICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgICAgICAgICBXb3JrZmxvdzogd29ya2Zsb3cuQ29kZSxcbiAgICAgICAgICAgICAgTmFtZTpcbiAgICAgICAgICAgICAgICAobm9kZS50eXBlID09PSAnc3ViZmxvdydcbiAgICAgICAgICAgICAgICAgID8gbm9kZS53b3JrZmxvd0RhdGE/Lm5hbWVcbiAgICAgICAgICAgICAgICAgIDogbm9kZS5zdGFnZURhdGE/Lk5hbWUpID8/ICcnLFxuICAgICAgICAgICAgICBEZXNjcmlwdGlvbjogbm9kZS5zdGFnZURhdGE/LkRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICAgICAgICBEdXJhdGlvbjogbm9kZS5zdGFnZURhdGE/LkR1cmF0aW9uIHx8IDAsXG4gICAgICAgICAgICAgIFBhc3NPblJ1bGU6IG5vZGUuc3RhZ2VEYXRhPy5QYXNzT25SdWxlIHx8ICcnLFxuICAgICAgICAgICAgICBBY3RvclJ1bGU6IG5vZGUuc3RhZ2VEYXRhPy5BY3RvclJ1bGUgfHwgU3RhZ2VBY3RvclJ1bGUuTm9uZSxcbiAgICAgICAgICAgICAgTWluTm9PZkFjdG9yOiBub2RlLnN0YWdlRGF0YT8uTWluTm9PZkFjdG9yIHx8IDAsXG4gICAgICAgICAgICAgIElzUGFyYWxsZWw6IG5vZGUuc3RhZ2VEYXRhPy5Jc1BhcmFsbGVsIHx8IGZhbHNlLFxuICAgICAgICAgICAgICBJc0VudHJ5UG9pbnQ6IG5vZGUuaXNTdGFydE5vZGUsXG4gICAgICAgICAgICAgIElzRXhpdFBvaW50OiBub2RlLnN0YWdlRGF0YT8uSXNFeGl0UG9pbnQgfHwgZmFsc2UsIC8vIFdpbGwgYmUgdXBkYXRlZCBiZWxvd1xuICAgICAgICAgICAgICBUYWdzOiBub2RlLnN0YWdlRGF0YT8uVGFncyB8fCBbXSxcbiAgICAgICAgICAgICAgRm9ybTogbm9kZS5zdGFnZURhdGE/LmZvcm1JZCA/PyAnJyxcbiAgICAgICAgICAgICAgQWxsb3dNdWx0aVN1YlByb2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICBBc3NpZ25tZW50VHlwZTpcbiAgICAgICAgICAgICAgICBub2RlLnN0YWdlRGF0YT8uQXNzaWdubWVudFR5cGUgfHxcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93Py5Bc3NpZ25tZW50VHlwZSB8fFxuICAgICAgICAgICAgICAgIFRhc2tBc3NpZ25tZW50VHlwZS5BdXRvUm91dGUsXG4gICAgICAgICAgICAgIFN1YldvcmtGbG93OiBub2RlLndvcmtmbG93RGF0YT8uaWQgfHwgJycsXG4gICAgICAgICAgICAgIFN3aW1MYW5lOiB0aGlzLnN3aW1sYW5lc1tzd2ltbGFuZUluZGV4XS5pZCB8fCAnJyxcbiAgICAgICAgICAgICAgQ29vcmRpbmF0ZXM6IHsgWDogbm9kZS54LCBZOiBub2RlLnkgfSxcbiAgICAgICAgICAgICAgSXNTdWJQcm9jZXNzOiBub2RlLnR5cGUgPT09ICdzdWJmbG93JyxcbiAgICAgICAgICAgICAgS2V5OiBub2RlLnN0YWdlRGF0YT8uS2V5IHx8IG5vZGUuaWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gLy8gRGV0ZXJtaW5lIHdoaWNoIHN0YWdlcyBhcmUgZXhpdCBwb2ludHMgKG5vIG91dGdvaW5nIGNvbm5lY3Rpb25zKVxuICAgIC8vIHN0YWdlcy5mb3JFYWNoKChzdGFnZSkgPT4ge1xuICAgIC8vICAgY29uc3QgaGFzT3V0Z29pbmdDb25uZWN0aW9ucyA9IHRoaXMuY29ubmVjdGlvbnMuc29tZShcbiAgICAvLyAgICAgKGNvbm4pID0+XG4gICAgLy8gICAgICAgY29ubi5zb3VyY2VOb2RlSWQgPT09IHN0YWdlLkNvZGUgfHwgY29ubi5zb3VyY2VOb2RlSWQgPT09IHN0YWdlLmlkXG4gICAgLy8gICApO1xuICAgIC8vICAgaWYgKCFoYXNPdXRnb2luZ0Nvbm5lY3Rpb25zKSB7XG4gICAgLy8gICAgIHN0YWdlLklzRXhpdFBvaW50ID0gdHJ1ZTtcbiAgICAvLyAgIH1cbiAgICAvLyB9KTtcblxuICAgIC8vIFRyYW5zZm9ybSBjb25uZWN0aW9ucyB0byBXb3JrZmxvd0FjdGlvbltdXG4gICAgY29uc3QgYWN0aW9uczogV29ya2Zsb3dBY3Rpb25bXSA9IFtdO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucy5mb3JFYWNoKChjb25uKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2VOb2RlID0gdGhpcy5maW5kTm9kZUJ5SWQoY29ubi5zb3VyY2VOb2RlSWQpPy5ub2RlO1xuICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHRoaXMuZmluZE5vZGVCeUlkKGNvbm4udGFyZ2V0Tm9kZUlkKT8ubm9kZTtcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhbiBleGlzdGluZyBhY3Rpb25cbiAgICAgIGlmICh0aGlzLmFjdGlvblJlY29yZFtjb25uLmlkXSkge1xuICAgICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgYWN0aW9uIHdpdGggY2hhbmdlZCB2YWx1ZXNcbiAgICAgICAgY29uc3QgZXhpc3RpbmdBY3Rpb24gPSB0aGlzLmFjdGlvblJlY29yZFtjb25uLmlkXTtcblxuICAgICAgICAvLyBDcmVhdGUgdXBkYXRlZCBhY3Rpb24gd2l0aCBjaGFuZ2VkIHByb3BlcnRpZXNcbiAgICAgICAgY29uc3QgdXBkYXRlZEFjdGlvbjogV29ya2Zsb3dBY3Rpb24gPSB7XG4gICAgICAgICAgLi4uZXhpc3RpbmdBY3Rpb24sXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5DaGFuZ2VkLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBVcGRhdGUgcHJvcGVydGllcyB0aGF0IG1heSBoYXZlIGNoYW5nZWRcbiAgICAgICAgdXBkYXRlZEFjdGlvbi5OYW1lID1cbiAgICAgICAgICBjb25uLmxhYmVsID8/XG4gICAgICAgICAgYEFjdGlvbiBmcm9tICR7c291cmNlTm9kZT8uc3RhZ2VEYXRhPy5OYW1lIHx8ICdVbmtub3duJ30gdG8gJHt0YXJnZXROb2RlPy5zdGFnZURhdGE/Lk5hbWUgfHwgJ1Vua25vd24nXG4gICAgICAgICAgfWA7XG4gICAgICAgIHVwZGF0ZWRBY3Rpb24uT3BlcmF0aW9uQWN0aW9uID0gY29ubi5hY3Rpb247XG4gICAgICAgIHVwZGF0ZWRBY3Rpb24uSXNQYXJhbGxlbCA9IHRhcmdldE5vZGU/LnN0YWdlRGF0YT8uSXNQYXJhbGxlbCB8fCBmYWxzZTtcbiAgICAgICAgdXBkYXRlZEFjdGlvbi5QYXNzT25SdWxlID0gY29ubi5jb25kaXRpb24gfHwgJyc7XG4gICAgICAgIHVwZGF0ZWRBY3Rpb24uVGFyZ2V0U3RhdHVzID0gY29ubi50YXJnZXRTdGF0dXMgfHwgdW5kZWZpbmVkO1xuICAgICAgICAvLyB1cGRhdGVkQWN0aW9uLlNvdXJjZVBvaW50VHlwZSA9IHRoaXMuZ2V0Q29ubmVjdGlvblBvaW50VHlwZShjb25uLnNvdXJjZVBvaW50SWQpO1xuICAgICAgICAvLyB1cGRhdGVkQWN0aW9uLlRhcmdldFBvaW50VHlwZSA9IHRoaXMuZ2V0Q29ubmVjdGlvblBvaW50VHlwZShjb25uLnRhcmdldFBvaW50SWQpO1xuXG4gICAgICAgIGFjdGlvbnMucHVzaCh1cGRhdGVkQWN0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBhY3Rpb25cbiAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICBJZDogJycsXG4gICAgICAgICAgQ29kZTogJycsXG4gICAgICAgICAgVGVuYW50SWQ6ICcnLFxuICAgICAgICAgIC8vIGlkOiBjb25uLmlkLFxuICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICBTZXJ2aWNlTmFtZTogJycsXG4gICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLk5ldyxcbiAgICAgICAgICBXb3JrZmxvdzogd29ya2Zsb3cuQ29kZSxcbiAgICAgICAgICBOYW1lOlxuICAgICAgICAgICAgY29ubi5sYWJlbCA/P1xuICAgICAgICAgICAgYEFjdGlvbiBmcm9tICR7c291cmNlTm9kZT8uc3RhZ2VEYXRhPy5OYW1lIHx8ICdVbmtub3duJ30gdG8gJHt0YXJnZXROb2RlPy5zdGFnZURhdGE/Lk5hbWUgfHwgJ1Vua25vd24nXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICBPcGVyYXRpb25BY3Rpb246IGNvbm4uYWN0aW9uLFxuICAgICAgICAgIFRhcmdldFN0YXR1czogY29ubi50YXJnZXRTdGF0dXMsXG4gICAgICAgICAgRnJvbVN0YWdlOiBjb25uLnNvdXJjZU5vZGVJZCxcbiAgICAgICAgICBUb1N0YWdlOiBjb25uLnRhcmdldE5vZGVJZCxcbiAgICAgICAgICBJc1BhcmFsbGVsOiBzb3VyY2VOb2RlPy5zdGFnZURhdGE/LklzUGFyYWxsZWwgfHwgZmFsc2UsXG4gICAgICAgICAgUGFzc09uUnVsZTogY29ubi5jb25kaXRpb24gfHwgJycsXG4gICAgICAgICAgU291cmNlUG9pbnRUeXBlOiB0aGlzLmdldENvbm5lY3Rpb25Qb2ludFR5cGUoY29ubi5zb3VyY2VQb2ludElkKSxcbiAgICAgICAgICBUYXJnZXRQb2ludFR5cGU6IHRoaXMuZ2V0Q29ubmVjdGlvblBvaW50VHlwZShjb25uLnRhcmdldFBvaW50SWQpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEFkZCBkZWxldGVkIG9iamVjdHMgd2l0aCBSZW1vdmVkIHN0YXRlXG4gICAgT2JqZWN0LmtleXModGhpcy5zdGFnZVJlY29yZCkuZm9yRWFjaCgoc3RhZ2VJZCkgPT4ge1xuICAgICAgY29uc3QgZXhpc3RzID0gc3RhZ2VzLnNvbWUoXG4gICAgICAgIChzdGFnZSkgPT4gc3RhZ2UuQ29kZSA9PT0gc3RhZ2VJZCB8fCBzdGFnZS5pZCA9PT0gc3RhZ2VJZFxuICAgICAgKTtcblxuICAgICAgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgY29uc3Qgc3RhZ2UgPSB0aGlzLnN0YWdlUmVjb3JkW3N0YWdlSWRdO1xuICAgICAgICBzdGFnZXMucHVzaCh7XG4gICAgICAgICAgLi4uc3RhZ2UsXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5SZW1vdmVkLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLmFjdGlvblJlY29yZCkuZm9yRWFjaCgoYWN0aW9uSWQpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IGFjdGlvbnMuc29tZShcbiAgICAgICAgKGFjdGlvbikgPT4gYWN0aW9uLkNvZGUgPT09IGFjdGlvbklkIHx8IGFjdGlvbi5pZCA9PT0gYWN0aW9uSWRcbiAgICAgICk7XG5cbiAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9uUmVjb3JkW2FjdGlvbklkXTtcbiAgICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5SZW1vdmVkLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBIYW5kbGUgZGVsZXRlZCBzd2ltbGFuZXNcbiAgICBPYmplY3Qua2V5cyh0aGlzLnN3aW1sYW5lUmVjb3JkKS5mb3JFYWNoKChsYW5lSWQpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHdvcmtmbG93LkxhbmVzLnNvbWUoXG4gICAgICAgIChsYW5lKSA9PiBsYW5lLkNvZGUgPT09IGxhbmVJZCB8fCBsYW5lLmlkID09PSBsYW5lSWRcbiAgICAgICk7XG5cbiAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgIGNvbnN0IGxhbmUgPSB0aGlzLnN3aW1sYW5lUmVjb3JkW2xhbmVJZF07XG4gICAgICAgIHdvcmtmbG93LkxhbmVzLnB1c2goe1xuICAgICAgICAgIC4uLmxhbmUsXG4gICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5SZW1vdmVkLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB3b3JrZmxvdy5TdGFnZXMgPSBzdGFnZXM7XG4gICAgd29ya2Zsb3cuQWN0aW9ucyA9IGFjdGlvbnM7XG5cbiAgICByZXR1cm4gd29ya2Zsb3c7XG4gIH1cblxuICBnZXRDb25uZWN0aW9uUG9pbnRUeXBlKFxuICAgIHBvaW50SWQ6IHN0cmluZ1xuICApOiAndG9wJyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gRXh0cmFjdCB0aGUgdHlwZSBmcm9tIHRoZSBjb25uZWN0aW9uIHBvaW50IElEIGZvcm1hdFxuICAgIC8vIHdoaWNoIGlzIHVzdWFsbHkgc29tZXRoaW5nIGxpa2UgXCJub2RlLWlkLXRvcC01MFwiXG4gICAgY29uc3QgcGFydHMgPSBwb2ludElkLnNwbGl0KCctJyk7XG4gICAgY29uc3QgdHlwZUluZGV4ID0gcGFydHMuZmluZEluZGV4KFxuICAgICAgKHBhcnQpID0+XG4gICAgICAgIHBhcnQgPT09ICd0b3AnIHx8XG4gICAgICAgIHBhcnQgPT09ICdyaWdodCcgfHxcbiAgICAgICAgcGFydCA9PT0gJ2JvdHRvbScgfHxcbiAgICAgICAgcGFydCA9PT0gJ2xlZnQnXG4gICAgKTtcblxuICAgIGlmICh0eXBlSW5kZXggPj0gMCkge1xuICAgICAgcmV0dXJuIHBhcnRzW3R5cGVJbmRleF0gYXMgJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIEFkZCBhIG5ldyBwcm9wZXJ0eSB0byB0cmFjayBsb2FkZWQgb2JqZWN0c1xuICBsb2FkZWRPYmplY3RJZHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTsgLy8gRm9ybWF0OiB7IGlkOiBjb2RlIH1cblxuICAvLyBBZGQgYSBtZXRob2QgdG8gcmVnaXN0ZXIgbG9hZGVkIG9iamVjdHNcbiAgcmVnaXN0ZXJMb2FkZWRPYmplY3QoaWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkZWRPYmplY3RJZHNbaWRdID0gY29kZTtcbiAgfVxuXG4gIC8vIE1ldGhvZCB0byBjaGVjayBpZiBhbiBvYmplY3Qgd2FzIGxvYWRlZCBmcm9tIEFQSVxuICB3YXNMb2FkZWRGcm9tQXBpKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaWQgaW4gdGhpcy5sb2FkZWRPYmplY3RJZHM7XG4gIH1cblxuICAvLyBNZXRob2QgdG8gZ2V0IHRoZSBjb2RlIGZvciBhIGxvYWRlZCBvYmplY3RcbiAgZ2V0Q29kZUZvck9iamVjdChpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkZWRPYmplY3RJZHNbaWRdIHx8ICcnO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGVzaWduZXIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL3dvcmtmbG93LWRlc2lnbmVyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWcsIFdvcmtmbG93U3RhZ2UgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMnO1xuXG4vLyBUaGUgdHlwZXMgb2YgdG9vbHMgYXZhaWxhYmxlIGluIHRoZSB0b29sYmFyXG5leHBvcnQgdHlwZSBUb29sVHlwZSA9XG4gIHwgJ3N3aW1sYW5lJ1xuICB8ICdzdGFnZSdcbiAgfCAnYWN0aW9uJ1xuICB8ICdmb3JtJ1xuICB8ICdkZWNpc2lvbidcbiAgfCAnc3ViZmxvdydcbiAgfCBudWxsO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN3aW1sYW5lSXRlbSB7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHRhZ3M6IFRhZ1tdO1xuICBub2Rlcz86IE5vZGVbXTtcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU6ICdzdGFnZScgfCAnZGVjaXNpb24nIHwgJ2Zvcm0nIHwgJ3N1YmZsb3cnO1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGlzU3RhcnROb2RlOiBib29sZWFuO1xuICBjb25uZWN0aW9uUG9pbnRzPzogQ29ubmVjdGlvblBvaW50W107XG4gIHN0YWdlRGF0YT86IFBhcnRpYWw8XG4gICAgV29ya2Zsb3dTdGFnZSAmIHtcbiAgICAgIGZvcm1JZD86IHN0cmluZztcbiAgICAgIGZvcm1OYW1lPzogc3RyaW5nO1xuICAgIH1cbiAgPjtcbiAgd29ya2Zsb3dEYXRhPzogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSB8IG51bGw7XG4gIGhhc011bHRpcGxlQ29ubmVjdGVkU3RhZ2VzPzogYm9vbGVhbjsgLy8gQWRkIHRoaXMgcHJvcGVydHlcbiAgaGFzUGFyYWxsZWxTdGFnZXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25Qb2ludCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5vZGVJZDogc3RyaW5nO1xuICB4OiBudW1iZXI7IC8vIFJlbGF0aXZlIHRvIG5vZGUgcG9zaXRpb25cbiAgeTogbnVtYmVyOyAvLyBSZWxhdGl2ZSB0byBub2RlIHBvc2l0aW9uXG4gIHR5cGU6ICd0b3AnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2xlZnQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb24ge1xuICBpZDogc3RyaW5nO1xuICBzb3VyY2VOb2RlSWQ6IHN0cmluZztcbiAgdGFyZ2V0Tm9kZUlkOiBzdHJpbmc7XG4gIHNvdXJjZVBvaW50SWQ6IHN0cmluZztcbiAgdGFyZ2V0UG9pbnRJZDogc3RyaW5nO1xuICBzb3VyY2VTd2ltbGFuZUluZGV4OiBudW1iZXI7XG4gIHRhcmdldFN3aW1sYW5lSW5kZXg6IG51bWJlcjtcbiAgY29uZGl0aW9uPzogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBhY3Rpb246IHN0cmluZyB8IG51bGw7XG4gIHRhcmdldFN0YXR1cz86IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd2FibGVTdGF0dXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMvRmxvd2FibGVTdGF0dXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VNb2RlbCB9IGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd2FibGVTdGF0dXMgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICBOYW1lOiBzdHJpbmc7XG4gIERlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya2Zsb3dBY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMvV29ya2Zsb3dBY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VNb2RlbCB9IGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dBY3Rpb24gZXh0ZW5kcyBCYXNlTW9kZWwge1xuICBXb3JrZmxvdzogc3RyaW5nO1xuICBOYW1lOiBzdHJpbmc7XG4gIEZyb21TdGFnZTogc3RyaW5nO1xuICBUb1N0YWdlOiBzdHJpbmc7XG4gIElzUGFyYWxsZWw6IGJvb2xlYW47XG4gIFBhc3NPblJ1bGU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya2Zsb3dBY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMvV29ya2Zsb3dBY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VNb2RlbCB9IGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dBY3Rpb24gZXh0ZW5kcyBCYXNlTW9kZWwge1xuICBXb3JrZmxvdzogc3RyaW5nO1xuICBOYW1lOiBzdHJpbmc7XG4gIEZyb21TdGFnZTogc3RyaW5nO1xuICBUb1N0YWdlOiBzdHJpbmc7XG4gIElzUGFyYWxsZWw6IGJvb2xlYW47XG4gIFBhc3NPblJ1bGU/OiBzdHJpbmc7XG4gIE9wZXJhdGlvbkFjdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgU291cmNlUG9pbnRUeXBlPzogJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCc7IC8vIEFkZCB0aGlzXG4gIFRhcmdldFBvaW50VHlwZT86ICd0b3AnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2xlZnQnOyAvLyBBZGQgdGhpc1xuICBUYXJnZXRTdGF0dXM/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -59,4 +59,5 @@ export * from './WorkflowAction';
|
|
|
59
59
|
export * from './WorkflowOperation';
|
|
60
60
|
export * from './WorkflowStage';
|
|
61
61
|
export * from './File';
|
|
62
|
-
|
|
62
|
+
export * from './FlowableStatus';
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLGtCQUFrQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9BY3Rpb25IaXN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vQWN0aW9uVHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL0FjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vQWN0b3JUYWcnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLW1lY2hhbmlzbSc7XG5leHBvcnQgKiBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9Db29yZCc7XG5leHBvcnQgKiBmcm9tICcuL0RhdGFUeXBlJztcbmV4cG9ydCAqIGZyb20gJy4vRXJyb3JSZXNwb25zZSc7XG5leHBvcnQgKiBmcm9tICcuL0VzY2FsYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9Fc2NhbGF0aW9uQ3ljbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9Fc2NhbGF0aW9uU3RhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9Fc2NhbGF0aW9uVHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL0ZpbHRlclR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vRm9ybSc7XG5leHBvcnQgKiBmcm9tICcuL0Zvcm1FbnRpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9Gb3JtRmlsbCc7XG5leHBvcnQgKiBmcm9tICcuL0Zvcm1Qcm9wZXJ0eSc7XG5leHBvcnQgKiBmcm9tICcuL0Zvcm1WYWx1ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9NYWlsQ29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vTWVzc2FnZUNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL01lc3NhZ2VNZWRpdW0nO1xuZXhwb3J0ICogZnJvbSAnLi9vYmplY3Qtc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9vcGVyYXRpb24tdHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL09wZXJhdGlvbkFjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3BhZ2VkJztcbmV4cG9ydCAqIGZyb20gJy4vUGFnZWRSZXN1bHQnO1xuZXhwb3J0ICogZnJvbSAnLi9QZXJpb2RNb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vUGVybWlzc2lvbkNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL3F1ZXJ5LXBhcmFtcyc7XG5leHBvcnQgKiBmcm9tICcuL1JlcG9ydFNjaGVkdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vUmVwb3J0VHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL1Jlc291cmNlJztcbmV4cG9ydCAqIGZyb20gJy4vUmVzcG9uc2VLZXlWYWx1ZSc7XG5leHBvcnQgKiBmcm9tICcuL1NlYXJjaER5bmFtaWNXcmFwcGVyJztcbmV4cG9ydCAqIGZyb20gJy4vU2VhcmNoT3BlcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9TZWFyY2hQcm9wZXJ0eVNpZ24nO1xuZXhwb3J0ICogZnJvbSAnLi9TZWFyY2hQcm9wZXJ0eVZhbHVlJztcbmV4cG9ydCAqIGZyb20gJy4vU2VhcmNoUHJvcGVydHlWYWx1ZVR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9TaXplJztcbmV4cG9ydCAqIGZyb20gJy4vU01TQ29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vU29ydERpcmVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL1N0YWdlQWN0b3JSdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RhdHVzJztcbmV4cG9ydCAqIGZyb20gJy4vU3dpbUxhbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9UYWcnO1xuZXhwb3J0ICogZnJvbSAnLi9UYXNrJztcbmV4cG9ydCAqIGZyb20gJy4vdGFzay1oaXN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vVGFza0Fzc2lnbm1lbnRUeXBlJztcbmV4cG9ydCAqIGZyb20gJy4vVGFza05vdGlmaWNhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL1Rhc2tOb3RpZmljYXRpb25NZXNzYWdlVHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL1Rhc2tOb3RpZmljYXRpb25UeXBlJztcbmV4cG9ydCAqIGZyb20gJy4vVGFza1N0YXR1cyc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXInO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyLWFjY2Vzcy1yZXF1ZXN0LXN0YXR1cyc7XG5leHBvcnQgKiBmcm9tICcuL1dvcmtmbG93JztcbmV4cG9ydCAqIGZyb20gJy4vV29ya2Zsb3dBY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9Xb3JrZmxvd09wZXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL1dvcmtmbG93U3RhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9GaWxlJ1xuZXhwb3J0ICogZnJvbSAnLi9GbG93YWJsZVN0YXR1cydcbiJdfQ==
|