@hestia-earth/ui-components 0.27.60 → 0.27.62

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.
@@ -47,7 +47,7 @@ export class EngineModelsStageDeepComponent {
47
47
  this.relatedNodes$ = toObservable(this.relatedNodes);
48
48
  this.nodesLength = toSignal(this.relatedNodes$.pipe(map(nodes => nodes?.length ?? 0)));
49
49
  this.nodes = toSignal(combineLatest([this.relatedNodes$, this.nodeStoreService.nodes$()]).pipe(filter(([nodes]) => nodes?.length > 0), distinctUntilChangedDeep(), tap(() => this.loading.set(true)), mergeMap(([nodes, allNodes]) => from(nodes).pipe(mergeMap(node => this.findNode(allNodes, node)), filter(v => !!v), toArray())), tap(() => this.loading.set(false))));
50
- this.expandableNodes = computed(() => this.nodes()?.filter(n => this.expandedNode()?.['@type'] !== n['@type'] && this.expandedNode()?.['@id'] !== n['@id']) ?? []);
50
+ this.expandableNodes = computed(() => this.nodes()?.filter(n => this.expandedNode()?.['@type'] !== n['@type'] || this.expandedNode()?.['@id'] !== n['@id']) ?? []);
51
51
  this.defaultMaxStage = computed(() => NODE_MAX_STAGE[this.type()]);
52
52
  this.stage = computed(() => +this.node().stage || 0);
53
53
  this.maxstage = computed(() => +this.node().maxstage || this.defaultMaxStage());
@@ -86,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
86
86
  type: Component,
87
87
  args: [{ selector: 'he-engine-models-stage-deep', standalone: true, imports: [FaIconComponent, EngineModelsVersionLinkComponent, SkeletonTextComponent, TimesPipe, NodeLinkComponent], template: "<div\n class=\"is-flex is-flex-direction-column is-gap-8 is-py-2 is-pl-2 | engine-models-stage--container is-type-{{ type }}\"\n [style.border-color]=\"nodeColour()\">\n <div class=\"is-flex is-flex-direction-row is-justify-content-space-between is-gap-8\">\n @if (canExpand()) {\n <div (click)=\"expanded.set(!expanded())\" pointer>\n <fa-icon [icon]=\"expanded() ? faAngleDown : faAngleRight\"></fa-icon>\n </div>\n }\n\n <div\n class=\"is-flex is-flex-direction-row is-justify-content-space-between is-gap-8 is-flex-wrap-wrap is-flex-grow-1\">\n <he-node-link class=\"is-flex-grow-1\" [node]=\"node()\" [showExternalLink]=\"true\">\n <span>{{ type() }} {{ id() }}</span>\n </he-node-link>\n\n <div class=\"is-flex is-flex-direction-column is-gap-4 | engine-models-stage--calculations\">\n <div class=\"is-flex is-gap-4 is-pr-2\">\n <span class=\"has-text-secondary has-text-weight-bold\">Calculations:</span>\n\n @if (inProgress()) {\n <span [class.has-text-danger]=\"stage() === 0\" [class.has-text-warning]=\"stage() > 0\">\n stage {{ stage() }} / {{ maxstage() }}\n </span>\n } @else {\n <span class=\"has-text-success\">complete</span>\n }\n </div>\n\n @if (showVersion()) {\n <he-engine-models-version-link [node]=\"node()\" [showDetails]=\"false\"></he-engine-models-version-link>\n }\n </div>\n </div>\n </div>\n\n @if (expanded()) {\n @if (loading() && nodesLength() > 0) {\n @for (node of nodesLength() | times; track $index) {\n <he-skeleton-text [width]=\"60\" />\n }\n }\n\n @for (relatedNode of expandableNodes(); track trackNode(relatedNode)) {\n <div class=\"related-node\">\n <he-engine-models-stage-deep\n [node]=\"relatedNode\"\n [expanded]=\"false\"\n [showVersion]=\"showVersion()\"\n [expandedNode]=\"expandedNode() || node()\" />\n </div>\n }\n }\n</div>\n", styles: [".engine-models-stage--container{border:1px solid transparent;border-radius:3px}.engine-models-stage--calculations{width:175px}he-engine-models-stage-deep ::ng-deep .engine-models-stage--container{border-right:0px;border-top-right-radius:0;border-bottom-right-radius:0}\n"] }]
88
88
  }], ctorParameters: () => [] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbmdpbmUvZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwL2VuZ2luZS1tb2RlbHMtc3RhZ2UtZGVlcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZW5naW5lL2VuZ2luZS1tb2RlbHMtc3RhZ2UtZGVlcC9lbmdpbmUtbW9kZWxzLXN0YWdlLWRlZXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQWlELFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIs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Q2hELENBQUM7K0dBNUZVLDhCQUE4QjttR0FBOUIsOEJBQThCLDByQkMvQzNDLG1nRUFzREEsd1VEUGEsOEJBQThCLHVMQUovQixlQUFlLGtQQUFFLGdDQUFnQywyR0FBRSxxQkFBcUIsaUdBQUUsU0FBUyw4Q0FBRSxpQkFBaUI7OzRGQUlyRyw4QkFBOEI7a0JBUDFDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBQzNCLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxnQ0FBZ0MsRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG1vZGVsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDeWNsZUpTT05MRCwgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEpTT05MRCwganNvbmxkUGF0aCwgTm9kZVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCB0YXAsIHRvQXJyYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgZmFBbmdsZURvd24sIGZhQW5nbGVSaWdodCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5cbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCB9IGZyb20gJy4uLy4uL2NvbW1vbi9yeGpzLXV0aWxzJztcbmltcG9ydCB7IFRpbWVzUGlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi90aW1lcy5waXBlJztcbmltcG9ydCB7IFNrZWxldG9uVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9za2VsZXRvbi10ZXh0L3NrZWxldG9uLXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IE5PREVfTUFYX1NUQUdFLCBIZU5vZGVTZXJ2aWNlLCBJUmVsYXRlZE5vZGUsIG5vZGVDb2xvdXJzIH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgbm9kZXMsIEhlTm9kZVN0b3JlU2VydmljZSwgbWVyZ2VEYXRhV2l0aEhlYWRlcnMgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBFbmdpbmVNb2RlbHNWZXJzaW9uTGlua0NvbXBvbmVudCB9IGZyb20gJy4uL2VuZ2luZS1tb2RlbHMtdmVyc2lvbi1saW5rL2VuZ2luZS1tb2RlbHMtdmVyc2lvbi1saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb2RlTGlua0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS1saW5rL25vZGUtbGluay5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgSUpTT05MREV4dGVuZGVkIGV4dGVuZHMgSlNPTkxEPE5vZGVUeXBlPiB7XG4gIHN0YWdlPzogbnVtYmVyO1xuICBtYXhzdGFnZT86IG51bWJlcjtcbn1cblxuY29uc3QgbmVzdGVkTm9kZXNCeVR5cGU6IHtcbiAgW3R5cGUgaW4gTm9kZVR5cGVdPzogKG5vZGU6IElKU09OTERFeHRlbmRlZCkgPT4gKEpTT05MRDxOb2RlVHlwZT4gfCBKU09OTEQ8Tm9kZVR5cGU+W10pW107XG59ID0ge1xuICBbTm9kZVR5cGUuQ3ljbGVdOiAobm9kZTogSUN5Y2xlSlNPTkxEKSA9PiBbXG4gICAgbm9kZS5zaXRlLFxuICAgIG5vZGUub3RoZXJTaXRlcyxcbiAgICBub2RlLmlucHV0cz8ubWFwKGlucHV0ID0+IGlucHV0LmltcGFjdEFzc2Vzc21lbnQgYXMgYW55KT8uZmxhdCgpLFxuICAgIG5vZGUuYW5pbWFscz8uZmxhdE1hcChhbmltYWwgPT4gYW5pbWFsLmlucHV0cz8ubWFwKGlucHV0ID0+IGlucHV0LmltcGFjdEFzc2Vzc21lbnQgYXMgYW55KT8uZmxhdCgpKVxuICBdLFxuICBbTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudF06IChub2RlOiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkgPT4gW25vZGUuY3ljbGVdXG59O1xuXG5jb25zdCByZWxhdGVkTm9kZXNCeVR5cGU6IHtcbiAgW3R5cGUgaW4gTm9kZVR5cGVdPzogTm9kZVR5cGVbXTtcbn0gPSB7XG4gIFtOb2RlVHlwZS5TaXRlXTogW05vZGVUeXBlLkN5Y2xlXVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0ZhSWNvbkNvbXBvbmVudCwgRW5naW5lTW9kZWxzVmVyc2lvbkxpbmtDb21wb25lbnQsIFNrZWxldG9uVGV4dENvbXBvbmVudCwgVGltZXNQaXBlLCBOb2RlTGlua0NvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9lbmdpbmUtbW9kZWxzLXN0YWdlLWRlZXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBFbmdpbmVNb2RlbHNTdGFnZURlZXBDb21wb25lbnQ8VCBleHRlbmRzIE5vZGVUeXBlPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZVNlcnZpY2UgPSBpbmplY3QoSGVOb2RlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZVN0b3JlU2VydmljZSA9IGluamVjdChIZU5vZGVTdG9yZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYUFuZ2xlUmlnaHQgPSBmYUFuZ2xlUmlnaHQ7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYUFuZ2xlRG93biA9IGZhQW5nbGVEb3duO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBub2RlID0gaW5wdXQucmVxdWlyZWQ8SUpTT05MREV4dGVuZGVkPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBleHBhbmRlZCA9IG1vZGVsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dWZXJzaW9uID0gbW9kZWwodHJ1ZSk7XG4gIC8qKlxuICAgKiBXaGVuIG5lc3RpbmcgdGhlIGNvbXBvbmVudHMsIGF2b2lkIGFsbG93aW5nIGV4cGFuc2lvbiBvbiB0aGUgdG9wLWxldmVsIG5vZGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXhwYW5kZWROb2RlID0gaW5wdXQ8SUpTT05MREV4dGVuZGVkPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubm9kZSgpWydAaWQnXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0eXBlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ub2RlKClbJ0B0eXBlJ10pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBub2RlQ29sb3VyID0gY29tcHV0ZWQoKCkgPT4gbm9kZUNvbG91cnNbdGhpcy50eXBlKCldKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlbGF0ZWROb2RlcyA9IHNpZ25hbDwoSlNPTkxEPE5vZGVUeXBlPiB8IElSZWxhdGVkTm9kZSlbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbGF0ZWROb2RlcyQgPSB0b09ic2VydmFibGUodGhpcy5yZWxhdGVkTm9kZXMpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbm9kZXNMZW5ndGggPSB0b1NpZ25hbCh0aGlzLnJlbGF0ZWROb2RlcyQucGlwZShtYXAobm9kZXMgPT4gbm9kZXM/Lmxlbmd0aCA/PyAwKSkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZXMgPSB0b1NpZ25hbChcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlbGF0ZWROb2RlcyQsIHRoaXMubm9kZVN0b3JlU2VydmljZS5ub2RlcyQoKV0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtub2Rlc10pID0+IG5vZGVzPy5sZW5ndGggPiAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCgpLFxuICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZy5zZXQodHJ1ZSkpLFxuICAgICAgbWVyZ2VNYXAoKFtub2RlcywgYWxsTm9kZXNdKSA9PlxuICAgICAgICBmcm9tKG5vZGVzKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKG5vZGUgPT4gdGhpcy5maW5kTm9kZShhbGxOb2Rlcywgbm9kZSkpLFxuICAgICAgICAgIGZpbHRlcih2ID0+ICEhdiksXG4gICAgICAgICAgdG9BcnJheSgpXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nLnNldChmYWxzZSkpXG4gICAgKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXhwYW5kYWJsZU5vZGVzID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMubm9kZXMoKT8uZmlsdGVyKFxuICAgICAgICBuID0+IHRoaXMuZXhwYW5kZWROb2RlKCk/LlsnQHR5cGUnXSAhPT0gblsnQHR5cGUnXSAmJiB0aGlzLmV4cGFuZGVkTm9kZSgpPy5bJ0BpZCddICE9PSBuWydAaWQnXVxuICAgICAgKSA/PyBbXVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdE1heFN0YWdlID0gY29tcHV0ZWQoKCkgPT4gTk9ERV9NQVhfU1RBR0VbdGhpcy50eXBlKCldKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YWdlID0gY29tcHV0ZWQoKCkgPT4gK3RoaXMubm9kZSgpLnN0YWdlIHx8IDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWF4c3RhZ2UgPSBjb21wdXRlZCgoKSA9PiArdGhpcy5ub2RlKCkubWF4c3RhZ2UgfHwgdGhpcy5kZWZhdWx0TWF4U3RhZ2UoKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpblByb2dyZXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGFnZSgpIDwgdGhpcy5tYXhzdGFnZSgpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FuRXhwYW5kID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5leHBhbmRhYmxlTm9kZXMoKT8ubGVuZ3RoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGUoKTtcbiAgICAgICAgY29uc3QgbmVzdGVkTm9kZXMgPSBuZXN0ZWROb2Rlc0J5VHlwZVtub2RlWydAdHlwZSddXT8uKG5vZGUpPy5mbGF0KCk/LmZpbHRlcihCb29sZWFuKSA/PyBbXTtcbiAgICAgICAgY29uc3QgcmVsYXRlZE5vZGVzID0gcmVsYXRlZE5vZGVzQnlUeXBlW25vZGVbJ0B0eXBlJ11dID8/IFtdO1xuXG4gICAgICAgIGZyb20ocmVsYXRlZE5vZGVzKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAobm9kZVR5cGUgPT4gdGhpcy5ub2RlU2VydmljZS5nZXRSZWxhdGVkJChub2RlLCBub2RlVHlwZSkucGlwZShtZXJnZU1hcCgoeyByZXN1bHRzIH0pID0+IHJlc3VsdHMpKSksXG4gICAgICAgICAgICB0b0FycmF5KClcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSh2YWx1ZXMgPT4gdGhpcy5yZWxhdGVkTm9kZXMuc2V0KFsuLi52YWx1ZXMsIC4uLm5lc3RlZE5vZGVzXSkpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxvYWROb2RlJChub2RlOiBKU09OTEQ8Tm9kZVR5cGU+IHwgSVJlbGF0ZWROb2RlLCBkYXRhU3RhdGU6IERhdGFTdGF0ZSkge1xuICAgIHJldHVybiB0aGlzLm5vZGVTZXJ2aWNlXG4gICAgICAuZ2V0V2l0aEhlYWRlcnMkPEpTT05MRDxUPj4oe1xuICAgICAgICAuLi5ub2RlLFxuICAgICAgICBkYXRhU3RhdGVcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSwgaGVhZGVycyB9KSA9PiBtZXJnZURhdGFXaXRoSGVhZGVyczxJSlNPTkxERXh0ZW5kZWQ+KGRhdGEsIGhlYWRlcnMpKSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmROb2RlKGFsbE5vZGVzOiBub2Rlcywgbm9kZTogSlNPTkxEPE5vZGVUeXBlPiB8IElSZWxhdGVkTm9kZSkge1xuICAgIGNvbnN0IG1hdGNoZWROb2RlID0gYWxsTm9kZXM/Lltub2RlWydAdHlwZSddXT8uZmluZCh2ID0+IHY/LmlkID09PSBub2RlWydAaWQnXSk7XG4gICAgcmV0dXJuIG1hdGNoZWROb2RlXG4gICAgICA/IG9mKChtYXRjaGVkTm9kZS5yZWNhbGN1bGF0ZWQgfHwgbWF0Y2hlZE5vZGUub3JpZ2luYWwpIGFzIElKU09OTERFeHRlbmRlZClcbiAgICAgIDogdGhpcy5sb2FkTm9kZSQobm9kZSwgRGF0YVN0YXRlLnJlY2FsY3VsYXRlZCkucGlwZShjYXRjaEVycm9yKCgpID0+IHRoaXMubG9hZE5vZGUkKG5vZGUsIERhdGFTdGF0ZS5vcmlnaW5hbCkpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFja05vZGUobm9kZTogSUpTT05MREV4dGVuZGVkKSB7XG4gICAgcmV0dXJuIGpzb25sZFBhdGgobm9kZVsnQHR5cGUnXSwgbm9kZVsnQGlkJ10pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiaXMtZmxleCBpcy1mbGV4LWRpcmVjdGlvbi1jb2x1bW4gaXMtZ2FwLTggaXMtcHktMiBpcy1wbC0yIHwgZW5naW5lLW1vZGVscy1zdGFnZS0tY29udGFpbmVyIGlzLXR5cGUte3sgdHlwZSB9fVwiXG4gIFtzdHlsZS5ib3JkZXItY29sb3JdPVwibm9kZUNvbG91cigpXCI+XG4gIDxkaXYgY2xhc3M9XCJpcy1mbGV4IGlzLWZsZXgtZGlyZWN0aW9uLXJvdyBpcy1qdXN0aWZ5LWNvbnRlbnQtc3BhY2UtYmV0d2VlbiBpcy1nYXAtOFwiPlxuICAgIEBpZiAoY2FuRXhwYW5kKCkpIHtcbiAgICAgIDxkaXYgKGNsaWNrKT1cImV4cGFuZGVkLnNldCghZXhwYW5kZWQoKSlcIiBwb2ludGVyPlxuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJleHBhbmRlZCgpID8gZmFBbmdsZURvd24gOiBmYUFuZ2xlUmlnaHRcIj48L2ZhLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImlzLWZsZXggaXMtZmxleC1kaXJlY3Rpb24tcm93IGlzLWp1c3RpZnktY29udGVudC1zcGFjZS1iZXR3ZWVuIGlzLWdhcC04IGlzLWZsZXgtd3JhcC13cmFwIGlzLWZsZXgtZ3Jvdy0xXCI+XG4gICAgICA8aGUtbm9kZS1saW5rIGNsYXNzPVwiaXMtZmxleC1ncm93LTFcIiBbbm9kZV09XCJub2RlKClcIiBbc2hvd0V4dGVybmFsTGlua109XCJ0cnVlXCI+XG4gICAgICAgIDxzcGFuPnt7IHR5cGUoKSB9fSB7eyBpZCgpIH19PC9zcGFuPlxuICAgICAgPC9oZS1ub2RlLWxpbms+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpcy1mbGV4IGlzLWZsZXgtZGlyZWN0aW9uLWNvbHVtbiBpcy1nYXAtNCB8IGVuZ2luZS1tb2RlbHMtc3RhZ2UtLWNhbGN1bGF0aW9uc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXMtZmxleCBpcy1nYXAtNCBpcy1wci0yXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJoYXMtdGV4dC1zZWNvbmRhcnkgaGFzLXRleHQtd2VpZ2h0LWJvbGRcIj5DYWxjdWxhdGlvbnM6PC9zcGFuPlxuXG4gICAgICAgICAgQGlmIChpblByb2dyZXNzKCkpIHtcbiAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5oYXMtdGV4dC1kYW5nZXJdPVwic3RhZ2UoKSA9PT0gMFwiIFtjbGFzcy5oYXMtdGV4dC13YXJuaW5nXT1cInN0YWdlKCkgPiAwXCI+XG4gICAgICAgICAgICAgIHN0YWdlIHt7IHN0YWdlKCkgfX0gLyB7eyBtYXhzdGFnZSgpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhhcy10ZXh0LXN1Y2Nlc3NcIj5jb21wbGV0ZTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoc2hvd1ZlcnNpb24oKSkge1xuICAgICAgICAgIDxoZS1lbmdpbmUtbW9kZWxzLXZlcnNpb24tbGluayBbbm9kZV09XCJub2RlKClcIiBbc2hvd0RldGFpbHNdPVwiZmFsc2VcIj48L2hlLWVuZ2luZS1tb2RlbHMtdmVyc2lvbi1saW5rPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgQGlmIChleHBhbmRlZCgpKSB7XG4gICAgQGlmIChsb2FkaW5nKCkgJiYgbm9kZXNMZW5ndGgoKSA+IDApIHtcbiAgICAgIEBmb3IgKG5vZGUgb2Ygbm9kZXNMZW5ndGgoKSB8IHRpbWVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGhlLXNrZWxldG9uLXRleHQgW3dpZHRoXT1cIjYwXCIgLz5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZm9yIChyZWxhdGVkTm9kZSBvZiBleHBhbmRhYmxlTm9kZXMoKTsgdHJhY2sgdHJhY2tOb2RlKHJlbGF0ZWROb2RlKSkge1xuICAgICAgPGRpdiBjbGFzcz1cInJlbGF0ZWQtbm9kZVwiPlxuICAgICAgICA8aGUtZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwXG4gICAgICAgICAgW25vZGVdPVwicmVsYXRlZE5vZGVcIlxuICAgICAgICAgIFtleHBhbmRlZF09XCJmYWxzZVwiXG4gICAgICAgICAgW3Nob3dWZXJzaW9uXT1cInNob3dWZXJzaW9uKClcIlxuICAgICAgICAgIFtleHBhbmRlZE5vZGVdPVwiZXhwYW5kZWROb2RlKCkgfHwgbm9kZSgpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgfVxuPC9kaXY+XG4iXX0=
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbmdpbmUvZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwL2VuZ2luZS1tb2RlbHMtc3RhZ2UtZGVlcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZW5naW5lL2VuZ2luZS1tb2RlbHMtc3RhZ2UtZGVlcC9lbmdpbmUtbW9kZWxzLXN0YWdlLWRlZXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQWlELFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFnQixXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRyxPQUFPLEVBQVMsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUN0SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFPN0UsTUFBTSxpQkFBaUIsR0FFbkI7SUFDRixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQWtCLEVBQUUsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxJQUFJO1FBQ1QsSUFBSSxDQUFDLFVBQVU7UUFDZixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxnQkFBdUIsQ0FBQyxFQUFFLElBQUksRUFBRTtRQUNoRSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUF1QixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDcEc7SUFDRCxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsSUFBNkIsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0NBQzdFLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUVwQjtJQUNGLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztDQUNsQyxDQUFDO0FBU0YsTUFBTSxPQUFPLDhCQUE4QjtJQXdEekM7UUF2RGlCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRTVDLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO1FBRTFCLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFtQixDQUFDO1FBRXpDLGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0M7O1dBRUc7UUFDZ0IsaUJBQVksR0FBRyxLQUFLLEVBQW1CLENBQUM7UUFFeEMsT0FBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4QyxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRTVDLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEQsWUFBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QixpQkFBWSxHQUFHLE1BQU0sQ0FBc0MsRUFBRSxDQUFDLENBQUM7UUFDL0Qsa0JBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLGdCQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBGLFVBQUssR0FBRyxRQUFRLENBQy9CLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3RFLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQ3RDLHdCQUF3QixFQUFFLEVBQzFCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUNqQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ2QsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFDL0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNoQixPQUFPLEVBQUUsQ0FDVixDQUNGLEVBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ25DLENBQ0YsQ0FBQztRQUNpQixvQkFBZSxHQUFHLFFBQVEsQ0FDM0MsR0FBRyxFQUFFLENBQ0gsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sQ0FDbEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUNoRyxJQUFJLEVBQUUsQ0FDVixDQUFDO1FBRWUsb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUQsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEQsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDM0UsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFNUQsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFHNUUsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUYsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRTdELElBQUksQ0FBQyxZQUFZLENBQUM7aUJBQ2YsSUFBSSxDQUNILFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUMzRyxPQUFPLEVBQUUsQ0FDVjtpQkFDQSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVPLFNBQVMsQ0FBQyxJQUFxQyxFQUFFLFNBQW9CO1FBQzNFLE9BQU8sSUFBSSxDQUFDLFdBQVc7YUFDcEIsZUFBZSxDQUFZO1lBQzFCLEdBQUcsSUFBSTtZQUNQLFNBQVM7U0FDVixDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBa0IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRU8sUUFBUSxDQUFDLFFBQWUsRUFBRSxJQUFxQztRQUNyRSxNQUFNLFdBQVcsR0FBRyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLE9BQU8sV0FBVztZQUNoQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFvQixDQUFDO1lBQzNFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BILENBQUM7SUFFUyxTQUFTLENBQUMsSUFBcUI7UUFDdkMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7K0dBNUZVLDhCQUE4QjttR0FBOUIsOEJBQThCLDByQkMvQzNDLG1nRUFzREEsd1VEUGEsOEJBQThCLHVMQUovQixlQUFlLGtQQUFFLGdDQUFnQywyR0FBRSxxQkFBcUIsaUdBQUUsU0FBUyw4Q0FBRSxpQkFBaUI7OzRGQUlyRyw4QkFBOEI7a0JBUDFDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBQzNCLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxnQ0FBZ0MsRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG1vZGVsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDeWNsZUpTT05MRCwgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEpTT05MRCwganNvbmxkUGF0aCwgTm9kZVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCB0YXAsIHRvQXJyYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgZmFBbmdsZURvd24sIGZhQW5nbGVSaWdodCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5cbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCB9IGZyb20gJy4uLy4uL2NvbW1vbi9yeGpzLXV0aWxzJztcbmltcG9ydCB7IFRpbWVzUGlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi90aW1lcy5waXBlJztcbmltcG9ydCB7IFNrZWxldG9uVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9za2VsZXRvbi10ZXh0L3NrZWxldG9uLXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IE5PREVfTUFYX1NUQUdFLCBIZU5vZGVTZXJ2aWNlLCBJUmVsYXRlZE5vZGUsIG5vZGVDb2xvdXJzIH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgbm9kZXMsIEhlTm9kZVN0b3JlU2VydmljZSwgbWVyZ2VEYXRhV2l0aEhlYWRlcnMgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBFbmdpbmVNb2RlbHNWZXJzaW9uTGlua0NvbXBvbmVudCB9IGZyb20gJy4uL2VuZ2luZS1tb2RlbHMtdmVyc2lvbi1saW5rL2VuZ2luZS1tb2RlbHMtdmVyc2lvbi1saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb2RlTGlua0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS1saW5rL25vZGUtbGluay5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgSUpTT05MREV4dGVuZGVkIGV4dGVuZHMgSlNPTkxEPE5vZGVUeXBlPiB7XG4gIHN0YWdlPzogbnVtYmVyO1xuICBtYXhzdGFnZT86IG51bWJlcjtcbn1cblxuY29uc3QgbmVzdGVkTm9kZXNCeVR5cGU6IHtcbiAgW3R5cGUgaW4gTm9kZVR5cGVdPzogKG5vZGU6IElKU09OTERFeHRlbmRlZCkgPT4gKEpTT05MRDxOb2RlVHlwZT4gfCBKU09OTEQ8Tm9kZVR5cGU+W10pW107XG59ID0ge1xuICBbTm9kZVR5cGUuQ3ljbGVdOiAobm9kZTogSUN5Y2xlSlNPTkxEKSA9PiBbXG4gICAgbm9kZS5zaXRlLFxuICAgIG5vZGUub3RoZXJTaXRlcyxcbiAgICBub2RlLmlucHV0cz8ubWFwKGlucHV0ID0+IGlucHV0LmltcGFjdEFzc2Vzc21lbnQgYXMgYW55KT8uZmxhdCgpLFxuICAgIG5vZGUuYW5pbWFscz8uZmxhdE1hcChhbmltYWwgPT4gYW5pbWFsLmlucHV0cz8ubWFwKGlucHV0ID0+IGlucHV0LmltcGFjdEFzc2Vzc21lbnQgYXMgYW55KT8uZmxhdCgpKVxuICBdLFxuICBbTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudF06IChub2RlOiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkgPT4gW25vZGUuY3ljbGVdXG59O1xuXG5jb25zdCByZWxhdGVkTm9kZXNCeVR5cGU6IHtcbiAgW3R5cGUgaW4gTm9kZVR5cGVdPzogTm9kZVR5cGVbXTtcbn0gPSB7XG4gIFtOb2RlVHlwZS5TaXRlXTogW05vZGVUeXBlLkN5Y2xlXVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0ZhSWNvbkNvbXBvbmVudCwgRW5naW5lTW9kZWxzVmVyc2lvbkxpbmtDb21wb25lbnQsIFNrZWxldG9uVGV4dENvbXBvbmVudCwgVGltZXNQaXBlLCBOb2RlTGlua0NvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9lbmdpbmUtbW9kZWxzLXN0YWdlLWRlZXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBFbmdpbmVNb2RlbHNTdGFnZURlZXBDb21wb25lbnQ8VCBleHRlbmRzIE5vZGVUeXBlPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZVNlcnZpY2UgPSBpbmplY3QoSGVOb2RlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZVN0b3JlU2VydmljZSA9IGluamVjdChIZU5vZGVTdG9yZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYUFuZ2xlUmlnaHQgPSBmYUFuZ2xlUmlnaHQ7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYUFuZ2xlRG93biA9IGZhQW5nbGVEb3duO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBub2RlID0gaW5wdXQucmVxdWlyZWQ8SUpTT05MREV4dGVuZGVkPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBleHBhbmRlZCA9IG1vZGVsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dWZXJzaW9uID0gbW9kZWwodHJ1ZSk7XG4gIC8qKlxuICAgKiBXaGVuIG5lc3RpbmcgdGhlIGNvbXBvbmVudHMsIGF2b2lkIGFsbG93aW5nIGV4cGFuc2lvbiBvbiB0aGUgdG9wLWxldmVsIG5vZGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXhwYW5kZWROb2RlID0gaW5wdXQ8SUpTT05MREV4dGVuZGVkPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubm9kZSgpWydAaWQnXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0eXBlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ub2RlKClbJ0B0eXBlJ10pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBub2RlQ29sb3VyID0gY29tcHV0ZWQoKCkgPT4gbm9kZUNvbG91cnNbdGhpcy50eXBlKCldKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlbGF0ZWROb2RlcyA9IHNpZ25hbDwoSlNPTkxEPE5vZGVUeXBlPiB8IElSZWxhdGVkTm9kZSlbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbGF0ZWROb2RlcyQgPSB0b09ic2VydmFibGUodGhpcy5yZWxhdGVkTm9kZXMpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbm9kZXNMZW5ndGggPSB0b1NpZ25hbCh0aGlzLnJlbGF0ZWROb2RlcyQucGlwZShtYXAobm9kZXMgPT4gbm9kZXM/Lmxlbmd0aCA/PyAwKSkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZXMgPSB0b1NpZ25hbChcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlbGF0ZWROb2RlcyQsIHRoaXMubm9kZVN0b3JlU2VydmljZS5ub2RlcyQoKV0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtub2Rlc10pID0+IG5vZGVzPy5sZW5ndGggPiAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCgpLFxuICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZy5zZXQodHJ1ZSkpLFxuICAgICAgbWVyZ2VNYXAoKFtub2RlcywgYWxsTm9kZXNdKSA9PlxuICAgICAgICBmcm9tKG5vZGVzKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKG5vZGUgPT4gdGhpcy5maW5kTm9kZShhbGxOb2Rlcywgbm9kZSkpLFxuICAgICAgICAgIGZpbHRlcih2ID0+ICEhdiksXG4gICAgICAgICAgdG9BcnJheSgpXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nLnNldChmYWxzZSkpXG4gICAgKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXhwYW5kYWJsZU5vZGVzID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMubm9kZXMoKT8uZmlsdGVyKFxuICAgICAgICBuID0+IHRoaXMuZXhwYW5kZWROb2RlKCk/LlsnQHR5cGUnXSAhPT0gblsnQHR5cGUnXSB8fCB0aGlzLmV4cGFuZGVkTm9kZSgpPy5bJ0BpZCddICE9PSBuWydAaWQnXVxuICAgICAgKSA/PyBbXVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdE1heFN0YWdlID0gY29tcHV0ZWQoKCkgPT4gTk9ERV9NQVhfU1RBR0VbdGhpcy50eXBlKCldKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YWdlID0gY29tcHV0ZWQoKCkgPT4gK3RoaXMubm9kZSgpLnN0YWdlIHx8IDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWF4c3RhZ2UgPSBjb21wdXRlZCgoKSA9PiArdGhpcy5ub2RlKCkubWF4c3RhZ2UgfHwgdGhpcy5kZWZhdWx0TWF4U3RhZ2UoKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpblByb2dyZXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGFnZSgpIDwgdGhpcy5tYXhzdGFnZSgpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FuRXhwYW5kID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5leHBhbmRhYmxlTm9kZXMoKT8ubGVuZ3RoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGUoKTtcbiAgICAgICAgY29uc3QgbmVzdGVkTm9kZXMgPSBuZXN0ZWROb2Rlc0J5VHlwZVtub2RlWydAdHlwZSddXT8uKG5vZGUpPy5mbGF0KCk/LmZpbHRlcihCb29sZWFuKSA/PyBbXTtcbiAgICAgICAgY29uc3QgcmVsYXRlZE5vZGVzID0gcmVsYXRlZE5vZGVzQnlUeXBlW25vZGVbJ0B0eXBlJ11dID8/IFtdO1xuXG4gICAgICAgIGZyb20ocmVsYXRlZE5vZGVzKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAobm9kZVR5cGUgPT4gdGhpcy5ub2RlU2VydmljZS5nZXRSZWxhdGVkJChub2RlLCBub2RlVHlwZSkucGlwZShtZXJnZU1hcCgoeyByZXN1bHRzIH0pID0+IHJlc3VsdHMpKSksXG4gICAgICAgICAgICB0b0FycmF5KClcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSh2YWx1ZXMgPT4gdGhpcy5yZWxhdGVkTm9kZXMuc2V0KFsuLi52YWx1ZXMsIC4uLm5lc3RlZE5vZGVzXSkpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxvYWROb2RlJChub2RlOiBKU09OTEQ8Tm9kZVR5cGU+IHwgSVJlbGF0ZWROb2RlLCBkYXRhU3RhdGU6IERhdGFTdGF0ZSkge1xuICAgIHJldHVybiB0aGlzLm5vZGVTZXJ2aWNlXG4gICAgICAuZ2V0V2l0aEhlYWRlcnMkPEpTT05MRDxUPj4oe1xuICAgICAgICAuLi5ub2RlLFxuICAgICAgICBkYXRhU3RhdGVcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSwgaGVhZGVycyB9KSA9PiBtZXJnZURhdGFXaXRoSGVhZGVyczxJSlNPTkxERXh0ZW5kZWQ+KGRhdGEsIGhlYWRlcnMpKSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmROb2RlKGFsbE5vZGVzOiBub2Rlcywgbm9kZTogSlNPTkxEPE5vZGVUeXBlPiB8IElSZWxhdGVkTm9kZSkge1xuICAgIGNvbnN0IG1hdGNoZWROb2RlID0gYWxsTm9kZXM/Lltub2RlWydAdHlwZSddXT8uZmluZCh2ID0+IHY/LmlkID09PSBub2RlWydAaWQnXSk7XG4gICAgcmV0dXJuIG1hdGNoZWROb2RlXG4gICAgICA/IG9mKChtYXRjaGVkTm9kZS5yZWNhbGN1bGF0ZWQgfHwgbWF0Y2hlZE5vZGUub3JpZ2luYWwpIGFzIElKU09OTERFeHRlbmRlZClcbiAgICAgIDogdGhpcy5sb2FkTm9kZSQobm9kZSwgRGF0YVN0YXRlLnJlY2FsY3VsYXRlZCkucGlwZShjYXRjaEVycm9yKCgpID0+IHRoaXMubG9hZE5vZGUkKG5vZGUsIERhdGFTdGF0ZS5vcmlnaW5hbCkpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFja05vZGUobm9kZTogSUpTT05MREV4dGVuZGVkKSB7XG4gICAgcmV0dXJuIGpzb25sZFBhdGgobm9kZVsnQHR5cGUnXSwgbm9kZVsnQGlkJ10pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiaXMtZmxleCBpcy1mbGV4LWRpcmVjdGlvbi1jb2x1bW4gaXMtZ2FwLTggaXMtcHktMiBpcy1wbC0yIHwgZW5naW5lLW1vZGVscy1zdGFnZS0tY29udGFpbmVyIGlzLXR5cGUte3sgdHlwZSB9fVwiXG4gIFtzdHlsZS5ib3JkZXItY29sb3JdPVwibm9kZUNvbG91cigpXCI+XG4gIDxkaXYgY2xhc3M9XCJpcy1mbGV4IGlzLWZsZXgtZGlyZWN0aW9uLXJvdyBpcy1qdXN0aWZ5LWNvbnRlbnQtc3BhY2UtYmV0d2VlbiBpcy1nYXAtOFwiPlxuICAgIEBpZiAoY2FuRXhwYW5kKCkpIHtcbiAgICAgIDxkaXYgKGNsaWNrKT1cImV4cGFuZGVkLnNldCghZXhwYW5kZWQoKSlcIiBwb2ludGVyPlxuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJleHBhbmRlZCgpID8gZmFBbmdsZURvd24gOiBmYUFuZ2xlUmlnaHRcIj48L2ZhLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImlzLWZsZXggaXMtZmxleC1kaXJlY3Rpb24tcm93IGlzLWp1c3RpZnktY29udGVudC1zcGFjZS1iZXR3ZWVuIGlzLWdhcC04IGlzLWZsZXgtd3JhcC13cmFwIGlzLWZsZXgtZ3Jvdy0xXCI+XG4gICAgICA8aGUtbm9kZS1saW5rIGNsYXNzPVwiaXMtZmxleC1ncm93LTFcIiBbbm9kZV09XCJub2RlKClcIiBbc2hvd0V4dGVybmFsTGlua109XCJ0cnVlXCI+XG4gICAgICAgIDxzcGFuPnt7IHR5cGUoKSB9fSB7eyBpZCgpIH19PC9zcGFuPlxuICAgICAgPC9oZS1ub2RlLWxpbms+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpcy1mbGV4IGlzLWZsZXgtZGlyZWN0aW9uLWNvbHVtbiBpcy1nYXAtNCB8IGVuZ2luZS1tb2RlbHMtc3RhZ2UtLWNhbGN1bGF0aW9uc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXMtZmxleCBpcy1nYXAtNCBpcy1wci0yXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJoYXMtdGV4dC1zZWNvbmRhcnkgaGFzLXRleHQtd2VpZ2h0LWJvbGRcIj5DYWxjdWxhdGlvbnM6PC9zcGFuPlxuXG4gICAgICAgICAgQGlmIChpblByb2dyZXNzKCkpIHtcbiAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5oYXMtdGV4dC1kYW5nZXJdPVwic3RhZ2UoKSA9PT0gMFwiIFtjbGFzcy5oYXMtdGV4dC13YXJuaW5nXT1cInN0YWdlKCkgPiAwXCI+XG4gICAgICAgICAgICAgIHN0YWdlIHt7IHN0YWdlKCkgfX0gLyB7eyBtYXhzdGFnZSgpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhhcy10ZXh0LXN1Y2Nlc3NcIj5jb21wbGV0ZTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoc2hvd1ZlcnNpb24oKSkge1xuICAgICAgICAgIDxoZS1lbmdpbmUtbW9kZWxzLXZlcnNpb24tbGluayBbbm9kZV09XCJub2RlKClcIiBbc2hvd0RldGFpbHNdPVwiZmFsc2VcIj48L2hlLWVuZ2luZS1tb2RlbHMtdmVyc2lvbi1saW5rPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgQGlmIChleHBhbmRlZCgpKSB7XG4gICAgQGlmIChsb2FkaW5nKCkgJiYgbm9kZXNMZW5ndGgoKSA+IDApIHtcbiAgICAgIEBmb3IgKG5vZGUgb2Ygbm9kZXNMZW5ndGgoKSB8IHRpbWVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGhlLXNrZWxldG9uLXRleHQgW3dpZHRoXT1cIjYwXCIgLz5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZm9yIChyZWxhdGVkTm9kZSBvZiBleHBhbmRhYmxlTm9kZXMoKTsgdHJhY2sgdHJhY2tOb2RlKHJlbGF0ZWROb2RlKSkge1xuICAgICAgPGRpdiBjbGFzcz1cInJlbGF0ZWQtbm9kZVwiPlxuICAgICAgICA8aGUtZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwXG4gICAgICAgICAgW25vZGVdPVwicmVsYXRlZE5vZGVcIlxuICAgICAgICAgIFtleHBhbmRlZF09XCJmYWxzZVwiXG4gICAgICAgICAgW3Nob3dWZXJzaW9uXT1cInNob3dWZXJzaW9uKClcIlxuICAgICAgICAgIFtleHBhbmRlZE5vZGVdPVwiZXhwYW5kZWROb2RlKCkgfHwgbm9kZSgpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -361,7 +361,7 @@ mergeSubValues([
361
361
  isRequired: true
362
362
  };
363
363
  })
364
- .filter(({ originalValue, recalculatedValue }) => [originalValue !== '' || recalculatedValue !== ''].every(Boolean))
364
+ .filter(({ originalValue, recalculatedValue, configModels }) => [originalValue !== '', recalculatedValue !== '', !!configModels?.length].some(Boolean))
365
365
  .map(v => (['input'].includes(v.key) ? dataWithConfigModelLogs(allLogs)(v) : dataWithConfigModelLogs(logs)(v)));
366
366
  const logKeys = (logs, original, recalculated, models, { nodeType, type, termId }) => Object.keys(logs)
367
367
  .filter(key => logs[key].isKey && !subValueKeys.includes(key))
@@ -619,4 +619,4 @@ export const logValueArray = (value) => [';', ':'].some(v => value.includes(v))
619
619
  return res.length <= 1 ? res.flat() : Object.fromEntries(res);
620
620
  })
621
621
  : null;
622
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1sb2dzLW1vZGVscy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ub2RlL25vZGUtbG9ncy1tb2RlbHMvbm9kZS1sb2dzLW1vZGVscy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25FLE9BQU8sRUFFTCxrQkFBa0IsRUFLbEIsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBU1gsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBcUIsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDO0FBQzdCLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUVuQyxPQUFPLEVBR0wsVUFBVSxFQUVWLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsY0FBYyxFQUNmLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBMENyRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFckYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUU5QyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFD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QUFDO0lBQ0QsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNO1FBQ3JCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDcEQsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQztLQUNoRCxDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBRUwsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBYSxFQUFTLEVBQUUsQ0FDcEQsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDM0IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEQsT0FBTyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5pbXBvcnQgeyBmaWxlVG9FeHQsIFN1cHBvcnRlZEV4dGVuc2lvbnMgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQge1xuICBFbWlzc2lvbixcbiAgRW1pc3Npb25NZXRob2RUaWVyLFxuICBJVGVybUpTT05MRCxcbiAgUHJvZHVjdCxcbiAgSW5wdXQgYXMgSGVzdGlhSW5wdXQsXG4gIE5vZGVUeXBlLFxuICBUZXJtVGVybVR5cGUsXG4gIFNjaGVtYVR5cGUsXG4gIGlzVHlwZU5vZGUsXG4gIE1lYXN1cmVtZW50LFxuICBub25CbGFua05vZGVzVHlwZSxcbiAgYmxhbmtOb2Rlc1R5cGUsXG4gIGJsYW5rTm9kZXNLZXksXG4gIG5vbkJsYW5rTm9kZXNLZXksXG4gIEluZnJhc3RydWN0dXJlLFxuICBCaWJsaW9ncmFwaHksXG4gIFRyYW5zZm9ybWF0aW9uXG59IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHVuaXF1ZSwgaXNVbmRlZmluZWQsIGlzRW1wdHksIGlzTnVtYmVyIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlLCBwcm9wZXJ0eVZhbHVlVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMvZGlzdC90ZXJtJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLmdldCc7XG5pbXBvcnQgc2V0IGZyb20gJ2xvZGFzaC5zZXQnO1xuaW1wb3J0IG9yZGVyQnkgZnJvbSAnbG9kYXNoLm9yZGVyYnknO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gudW5pcWJ5JztcblxuaW1wb3J0IHtcbiAgSU9yY2hlc3RyYXRvckNvbmZpZyxcbiAgSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnLFxuICBmaW5kTW9kZWxzLFxuICBJTW9kZWwsXG4gIGZpbmRNYXRjaGluZ01vZGVsLFxuICBtb2RlbFBhcmFtcyxcbiAgbW9kZWxLZXlQYXJhbXNcbn0gZnJvbSAnLi4vLi4vZW5naW5lL2VuZ2luZS5zZXJ2aWNlJztcbmltcG9ydCB7IGlzVmFsaWRLZXkgfSBmcm9tICcuLi8uLi9jb21tb24vbm9kZS11dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVNaXNzaW5nTG9va3VwTG9nIHtcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgdGVybUlkOiBzdHJpbmc7XG4gIGNvbHVtbjogc3RyaW5nO1xuICAvLyBhdHRyaWJ1dGVzIGxpbmtlZCB0byB0aGUgbW9kZWxzXG4gIG1vZGVsPzogc3RyaW5nO1xuICB0ZXJtPzogc3RyaW5nO1xuICBrZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVUZXJtTG9nIHtcbiAgcnVuUmVxdWlyZWQ/OiBib29sZWFuO1xuICBzaG91bGRSdW4/OiBib29sZWFuO1xuICBzaG91bGRSdW5PcmNoZXN0cmF0b3I/OiBib29sZWFuO1xuICBzaG91bGRNZXJnZT86IGJvb2xlYW47XG4gIHJlcGxhY2VMb3dlclRpZXI/OiBib29sZWFuO1xuICByZXBsYWNlVGhyZXNob2xkPzogYm9vbGVhbjtcbiAgbWlzc2luZ0xvb2t1cHM/OiBJTm9kZU1pc3NpbmdMb29rdXBMb2dbXTtcbiAgcmVxdWlyZW1lbnRzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgbG9ncz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbiAgLy8gcG9zc2libGUgc3ViIHZhbHVlc1xuICBpbnB1dD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBwcm9wZXJ0eT86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlVGVybUxvZ3Mge1xuICBbbW9kZWxLZXk6IHN0cmluZ106IGFueSB8IElOb2RlVGVybUxvZztcbiAgbW9kZWxzOiBzdHJpbmdbXTtcbiAgaXNLZXk/OiBib29sZWFuO1xuICBpc1Byb3BlcnR5PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZUxvZ3Mge1xuICBbdGVybTogc3RyaW5nXTogSU5vZGVUZXJtTG9ncztcbn1cblxuZXhwb3J0IHR5cGUgYmxhbmtOb2Rlc1R5cGVWYWx1ZSA9IEV4Y2x1ZGU8YmxhbmtOb2Rlc1R5cGUsIEluZnJhc3RydWN0dXJlIHwgVHJhbnNmb3JtYXRpb24+O1xuZXhwb3J0IHR5cGUgbm9uQmxhbmtOb2Rlc1R5cGVWYWx1ZSA9IEV4Y2x1ZGU8bm9uQmxhbmtOb2Rlc1R5cGUsIEJpYmxpb2dyYXBoeT47XG5cbmV4cG9ydCBjb25zdCBpc05vbk5vZGVNb2RlbEtleSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBbJ2NvbXBsZXRlbmVzcyddLmluY2x1ZGVzKHZhbHVlKTtcblxuY29uc3QgdGVybVR5cGVzID0gT2JqZWN0LnZhbHVlcyhUZXJtVGVybVR5cGUpO1xuXG5jb25zdCBibGFua05vZGVUeXBlcyA9IE9iamVjdC52YWx1ZXMoU2NoZW1hVHlwZSkuZmlsdGVyKHQgPT4gIWlzVHlwZU5vZGUodCkpO1xuXG5jb25zdCBzY2hlbWFUeXBlc0xvd2VyQ2FzZSA9IE9iamVjdC52YWx1ZXMoU2NoZW1hVHlwZSkubWFwKHYgPT4gdi50b0xvd2VyQ2FzZSgpKTtcblxuY29uc3QgYmxhbmtOb2RlVHlwZXNMb3dlckNhc2UgPSBibGFua05vZGVUeXBlcy5tYXAodiA9PiB2LnRvTG93ZXJDYXNlKCkpO1xuXG5jb25zdCBtaXNzaW5nTG9va3VwUHJlZml4ID0gJ01pc3NpbmcgbG9va3VwJztcblxuY29uc3Qgbm9WYWx1ZSA9ICdOb25lJztcblxuLy8gYWRkIGFueSBvdGhlciBtb2RlbHMgdGhhdCBhcmUgc2V0IGFzIFwibm90IHJlbGV2YW50XCJcbmNvbnN0IG5vdFJlbGV2YW50TW9kZWxzID0gWydlbWlzc2lvbk5vdFJlbGV2YW50J107XG5cbmNvbnN0IGhhc1ZhbHVlID0gKHZhbHVlPzogc3RyaW5nKSA9PiAhIXZhbHVlICYmIHZhbHVlICE9PSBub1ZhbHVlO1xuXG5jb25zdCBwYXJzZUZpbGVuYW1lID0gKGZpbGVwYXRoOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgW2ZpbGVuYW1lXSA9IGZpbGVwYXRoLnNwbGl0KCcuJyk7XG4gIGNvbnN0IGV4dCA9IHRlcm1UeXBlcy5pbmNsdWRlcyhmaWxlbmFtZSBhcyBhbnkpID8gU3VwcG9ydGVkRXh0ZW5zaW9ucy54bHN4IDogU3VwcG9ydGVkRXh0ZW5zaW9ucy5jc3Y7XG4gIHJldHVybiBmaWxlVG9FeHQoZmlsZW5hbWUsIGV4dCk7XG59O1xuXG5jb25zdCBwYXJzZUxvb2t1cCA9ICh7IGNvbHVtbiwgdGVybWlkLCBbbWlzc2luZ0xvb2t1cFByZWZpeF06IG1pc3NpbmdMb29rdXAgfSkgPT4gKHtcbiAgZmlsZW5hbWU6IHBhcnNlRmlsZW5hbWUobWlzc2luZ0xvb2t1cCksXG4gIHRlcm1JZDogdGVybWlkLFxuICBjb2x1bW5cbn0pO1xuXG5jb25zdCBjc3ZWYWx1ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiAodmFsdWUgfHwgJycpLnJlcGxhY2UoJ1snLCAnJykucmVwbGFjZSgnXScsICcnKTtcblxuY29uc3QgcGFyc2VNZXNzYWdlID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKG1lc3NhZ2UpO1xuICAgIHJldHVybiBkYXRhLm1lc3NhZ2Uuc3BsaXQoJywnKS5yZWR1Y2UoXG4gICAgICAocHJldiwgcGFydHMpID0+IHtcbiAgICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gcGFydHMuc3BsaXQoJz0nKTtcbiAgICAgICAgY29uc3QgdmFsID0gY3N2VmFsdWUodmFsdWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgLi4uKGtleSAmJiB2YWwgPyB7IFtrZXkudHJpbSgpXTogdmFsIH0gOiB7fSlcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICB7IGxvZ2dlcjogZGF0YS5sb2dnZXIgfVxuICAgICk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIG1ha2Ugc3VyZSBpdCB3b3JrcyBldmVuIGlmIG9uZSBsb2cgaXMgbWFsZm9ybWVkXG4gICAgcmV0dXJuIHt9O1xuICB9XG59O1xuXG5jb25zdCBwYXJzZUxvZ011bHRpcGxlVmFsdWUgPSAodmFsdWVzOiBzdHJpbmdbXVtdKSA9PlxuICB2YWx1ZXNcbiAgICAubWFwKHYgPT4gKHYuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aCA9PT0gMiA/IHYuam9pbignOicpIDogbnVsbCkpXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5qb2luKCdfJyk7XG5cbmNvbnN0IHBhcnNlTG9nID0gKGxvZzogYW55KSA9PlxuICBbJ3ZhbHVlJyBpbiBsb2csICdjb2VmZmljaWVudCcgaW4gbG9nLCAnbm9kZScgaW4gbG9nIHx8ICdvcGVyYXRpb24nIGluIGxvZ10uZXZlcnkoQm9vbGVhbilcbiAgICA/IHtcbiAgICAgICAgW2xvZy5ub2RlIHx8IGxvZy5vcGVyYXRpb25dOiBwYXJzZUxvZ011bHRpcGxlVmFsdWUoW1xuICAgICAgICAgIFsndmFsdWUnLCBsb2cudmFsdWVdLFxuICAgICAgICAgIFsnY29lZmZpY2llbnQnLCBsb2cuY29lZmZpY2llbnRdLFxuICAgICAgICAgIFsnb3BlcmF0aW9uJywgIWxvZy5ub2RlID8gbG9nLm9wZXJhdGlvbiA6IG51bGxdXG4gICAgICAgIF0pXG4gICAgICB9XG4gICAgOiBvbWl0TG9nS2V5cyhsb2cpO1xuXG5jb25zdCBvbWl0TG9nS2V5cyA9IChsb2c6IGFueSwgLi4ua2V5czogc3RyaW5nW10pID0+XG4gIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhsb2cpLmZpbHRlcigoW2tleV0pID0+ICFzY2hlbWFUeXBlc0xvd2VyQ2FzZS5pbmNsdWRlcyhrZXkpICYmICFrZXlzLmluY2x1ZGVzKGtleSkpKTtcblxuY29uc3QgaW5jbHVkZUJsYW5rTm9kZXMgPSAobG9ncywgbG9nKSA9PlxuICBPYmplY3Qua2V5cyhsb2cpXG4gICAgLmZpbHRlcihrZXkgPT4gYmxhbmtOb2RlVHlwZXNMb3dlckNhc2UuaW5jbHVkZXMoa2V5KSlcbiAgICAucmVkdWNlKFxuICAgICAgKHByZXYsIGtleSkgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgW2tleV06IHVuaXF1ZShbLi4uKCh0eXBlb2YgcHJldltrZXldID09PSAnc3RyaW5nJyA/IFtwcmV2W2tleV1dIDogcHJldltrZXldKSB8fCBbXSksIGxvZ1trZXldXSlcbiAgICAgIH0pLFxuICAgICAgbG9nc1xuICAgICk7XG5cbmNvbnN0IGdyb3VwTG9nID0gKFxuICBncm91cCxcbiAgeyBsb2dnZXIsIHRlcm0sIG1vZGVsLCBrZXksIHNob3VsZF9ydW4sIHNob3VsZF9tZXJnZSwgcnVuX3JlcXVpcmVkLCBwcm9wZXJ0eSwgLi4ubG9nIH06IGFueVxuKSA9PiB7XG4gIGNvbnN0IGlzT3JjaGVzdHJhdG9yID0gbG9nZ2VyLmluY2x1ZGVzKCdvcmNoZXN0cmF0b3InKTtcbiAgY29uc3QgaXNLZXkgPSAhaXNPcmNoZXN0cmF0b3IgJiYgISFrZXk7XG4gIGNvbnN0IGlzUHJvcGVydHkgPSAhaXNPcmNoZXN0cmF0b3IgJiYgISFwcm9wZXJ0eTtcbiAgY29uc3QgcGFyZW50TG9nS2V5ID0gW2hhc1ZhbHVlKHRlcm0pICYmIGBbXCIke3Rlcm19XCJdYCwgKCFpc09yY2hlc3RyYXRvciAmJiBrZXkpIHx8IHByb3BlcnR5XVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAuam9pbignLicpO1xuICBjb25zdCBsb2dNb2RlbEtleSA9IFtwYXJlbnRMb2dLZXksIGhhc1ZhbHVlKG1vZGVsKSAmJiBtb2RlbF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy4nKTtcblxuICBzZXQoZ3JvdXAsIGAke3BhcmVudExvZ0tleX0ubW9kZWxzYCwgdW5pcXVlKFsuLi5nZXQoZ3JvdXAsIGAke3BhcmVudExvZ0tleX0ubW9kZWxzYCwgW10pLCBtb2RlbF0pKTtcbiAgc2V0KGdyb3VwLCBgJHtwYXJlbnRMb2dLZXl9LmlzS2V5YCwgaXNLZXkpO1xuICBzZXQoZ3JvdXAsIGAke3BhcmVudExvZ0tleX0uaXNQcm9wZXJ0eWAsIGlzUHJvcGVydHkpO1xuXG4gIGxldCBkYXRhID0gZ2V0KGdyb3VwLCBsb2dNb2RlbEtleSwge30pO1xuXG4gIGRhdGEgPSBpbmNsdWRlQmxhbmtOb2RlcyhkYXRhLCBsb2cpO1xuXG4gIGlmICh0eXBlb2Ygc2hvdWxkX3J1biAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCBzaG91bGRSdW4gPSBzaG91bGRfcnVuID09PSAnVHJ1ZSc7XG5cbiAgICBkYXRhID0gaXNPcmNoZXN0cmF0b3JcbiAgICAgID8ge1xuICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgLi4ub21pdExvZ0tleXMobG9nLCAndmFsdWUnKSxcbiAgICAgICAgICBzaG91bGRSdW5PcmNoZXN0cmF0b3I6IHNob3VsZFJ1blxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgIC4uLm9taXRMb2dLZXlzKGxvZyksXG4gICAgICAgICAgc2hvdWxkUnVuXG4gICAgICAgIH07XG4gIH0gZWxzZSBpZiAodHlwZW9mIHJ1bl9yZXF1aXJlZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCBydW5SZXF1aXJlZCA9IHJ1bl9yZXF1aXJlZCA9PT0gJ1RydWUnO1xuXG4gICAgZGF0YSA9IHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICAuLi4ocnVuUmVxdWlyZWQgPyB7fSA6IG9taXRMb2dLZXlzKGxvZykpLCAvLyBubyBuZWVkIHRvIHNhdmUgbG9ncyBpZiB3ZSBuZWVkIHRvIHJ1biB0aGUgbW9kZWxcbiAgICAgIHJ1blJlcXVpcmVkXG4gICAgfTtcbiAgfSBlbHNlIGlmICgncmVxdWlyZW1lbnRzJyBpbiBsb2cpIHtcbiAgICBjb25zdCB7IHJlcXVpcmVtZW50cywgLi4ubG9nRGF0YSB9ID0gbG9nO1xuXG4gICAgZGF0YS5yZXF1aXJlbWVudHMgPSB7XG4gICAgICAuLi4oZGF0YS5yZXF1aXJlbWVudHMgfHwge30pLFxuICAgICAgLi4ubG9nRGF0YVxuICAgIH07XG4gIH0gZWxzZSBpZiAobWlzc2luZ0xvb2t1cFByZWZpeCBpbiBsb2cpIHtcbiAgICBkYXRhLm1pc3NpbmdMb29rdXBzID0gdW5pcXVlKFsuLi4oZGF0YS5taXNzaW5nTG9va3VwcyB8fCBbXSksIHBhcnNlTG9va3VwKGxvZyldKTtcbiAgfSBlbHNlIGlmICghaXNPcmNoZXN0cmF0b3IpIHtcbiAgICBkYXRhLmxvZ3MgPSB7XG4gICAgICAuLi4oZGF0YS5sb2dzIHx8IHt9KSxcbiAgICAgIC4uLnBhcnNlTG9nKGxvZylcbiAgICB9O1xuICB9XG4gIGlmICh0eXBlb2Ygc2hvdWxkX21lcmdlICE9PSAndW5kZWZpbmVkJykge1xuICAgIGRhdGEuc2hvdWxkTWVyZ2UgPSBzaG91bGRfbWVyZ2UgPT09ICdUcnVlJztcbiAgfVxuICBpZiAodHlwZW9mIGxvZy5yZXBsYWNlTG93ZXJUaWVyICE9PSAndW5kZWZpbmVkJykge1xuICAgIGRhdGEucmVwbGFjZUxvd2VyVGllciA9IGxvZy5yZXBsYWNlTG93ZXJUaWVyID09PSAnVHJ1ZSc7XG4gIH1cbiAgaWYgKHR5cGVvZiBsb2cucmVwbGFjZVRocmVzaG9sZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBkYXRhLnJlcGxhY2VUaHJlc2hvbGQgPSBsb2cucmVwbGFjZVRocmVzaG9sZCA9PT0gJ1RydWUnO1xuICB9XG5cbiAgc2V0KGdyb3VwLCBsb2dNb2RlbEtleSwgZGF0YSk7XG4gIHJldHVybiBncm91cDtcbn07XG5cbmNvbnN0IHN1YlZhbHVlS2V5cyA9IFsndHJhbnNmb3JtYXRpb24nLCAnYW5pbWFsJ107XG5cbmNvbnN0IGdyb3VwTG9nU3ViVmFsdWUgPSAoZ3JvdXAsIGxvZywga2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgaWQgPSBsb2dba2V5XTtcbiAgY29uc3QgZGF0YSA9IGdyb3VwTG9nKGdyb3VwW2lkXSB8fCB7fSwgbG9nKTtcbiAgZ3JvdXBbaWRdID0gZGF0YTtcblxuICBpZiAoc3ViVmFsdWVLZXlzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAvLyBhZGQgdmFsdWUgdG8gdGhlIHNhbWUgdGVybS9tb2RlbCBvbiBwYXJlbnQgZ3JvdXBcbiAgICBPYmplY3QuZW50cmllcyhncm91cFtpZF0pLm1hcCgoW3Rlcm0sIG1vZGVsc10pID0+XG4gICAgICBPYmplY3Qua2V5cyhtb2RlbHMpLm1hcChtb2RlbCA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgZ3JvdXA/Llt0ZXJtXT8uW21vZGVsXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBncm91cFt0ZXJtXVttb2RlbF1ba2V5XSA9IHVuaXF1ZShbLi4uKGdyb3VwW3Rlcm1dW21vZGVsXVtrZXldIHx8IFtdKSwgaWRdKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGdyb3VwO1xufTtcblxuZXhwb3J0IGNvbnN0IGdyb3VwTG9nc0J5TW9kZWwgPSAoZGF0YSA9ICcnKTogSU5vZGVMb2dzID0+XG4gIGRhdGFcbiAgICAudHJpbSgpXG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5tYXAocGFyc2VNZXNzYWdlKVxuICAgIC5maWx0ZXIodiA9PiBbaGFzVmFsdWUodj8ubW9kZWwpLCBoYXNWYWx1ZSh2Py50ZXJtKSB8fCBoYXNWYWx1ZSh2Py5rZXkpXS5ldmVyeShCb29sZWFuKSlcbiAgICAucmVkdWNlKChncm91cCwgbG9nKSA9PiB7XG4gICAgICBjb25zdCBzdWJWYWx1ZSA9IHN1YlZhbHVlS2V5cy5maW5kKHYgPT4gISFsb2dbdl0pO1xuICAgICAgcmV0dXJuIHN1YlZhbHVlICYmICFsb2cuY3ljbGUgPyBncm91cExvZ1N1YlZhbHVlKGdyb3VwLCBsb2csIHN1YlZhbHVlKSA6IGdyb3VwTG9nKGdyb3VwLCBsb2cpO1xuICAgIH0sIHt9KTtcblxuY29uc3QgYXNBcnJheSA9ICh2YWx1ZXM6IGFueVtdKSA9PiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpID8gdmFsdWVzIDogW10pO1xuXG5leHBvcnQgY29uc3QgY29tcHV0ZVRlcm1zID0gKFxuICBvcmlnaW5hbFZhbHVlczogYmxhbmtOb2Rlc1R5cGVWYWx1ZVtdLFxuICByZWNhbGN1bGF0ZWRWYWx1ZXM6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXSxcbiAgdGVybXM/OiBJVGVybUpTT05MRFtdLFxuICBmaWx0ZXJUZXJtVHlwZXM/OiBUZXJtVGVybVR5cGVbXSxcbiAgZXh0cmFUZXJtczogSVRlcm1KU09OTERbXSA9IFtdXG4pOiBJVGVybUpTT05MRFtdID0+XG4gIG9yZGVyQnkoXG4gICAgdW5pcUJ5KFxuICAgICAgW1xuICAgICAgICAuLi4odGVybXM/Lmxlbmd0aFxuICAgICAgICAgID8gdGVybXNcbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgLi4uYXNBcnJheShvcmlnaW5hbFZhbHVlcykubWFwKCh7IHRlcm0gfSkgPT4gdGVybSksXG4gICAgICAgICAgICAgIC4uLmFzQXJyYXkocmVjYWxjdWxhdGVkVmFsdWVzKS5tYXAoKHsgdGVybSB9KSA9PiB0ZXJtKVxuICAgICAgICAgICAgXS5maWx0ZXIobm9kZSA9PiAhZmlsdGVyVGVybVR5cGVzPy5sZW5ndGggfHwgZmlsdGVyVGVybVR5cGVzLmluY2x1ZGVzKG5vZGUudGVybVR5cGUpKSksXG4gICAgICAgIC4uLmV4dHJhVGVybXNcbiAgICAgIF0sXG4gICAgICAnQGlkJ1xuICAgICksXG4gICAgWyduYW1lJ10sXG4gICAgWydhc2MnXVxuICApO1xuXG5leHBvcnQgY29uc3QgY29tcHV0ZUtleXMgPSAob3JpZ2luYWxWYWx1ZXM6IG5vbkJsYW5rTm9kZXNUeXBlVmFsdWUsIHJlY2FsY3VsYXRlZFZhbHVlczogbm9uQmxhbmtOb2Rlc1R5cGVWYWx1ZSkgPT5cbiAgdW5pcXVlKFsuLi5PYmplY3Qua2V5cyhvcmlnaW5hbFZhbHVlcyB8fCB7fSksIC4uLk9iamVjdC5rZXlzKHJlY2FsY3VsYXRlZFZhbHVlcyB8fCB7fSldLmZpbHRlcihpc1ZhbGlkS2V5KSk7XG5cbmV4cG9ydCBlbnVtIExvZ1N0YXR1cyB7XG4gIHN1Y2Nlc3MgPSAnc3VjY2Vzc2Z1bCcsXG4gIGVycm9yID0gJ2ZhaWxlZCcsXG4gIHNraXBIaWVyYXJjaHkgPSAnbm90IHJ1biAobW9kZWwgaGlnaGVyIHVwIGhpZXJhcmNoeSBydW4gaW5zdGVhZCknLFxuICBkYXRhUHJvdmlkZWQgPSAnbm90IHJ1biAodXNlciBwcm92aWRlZCBkYXRhIHJldGFpbmVkKScsXG4gIG5vdFJlcXVpcmVkID0gJ25vdCByZWxldmFudCdcbn1cblxuY29uc3QgaGFzTG9ncyA9IChsb2dzPzogSU5vZGVUZXJtTG9nKSA9PiAhIWxvZ3M/LnJlcXVpcmVtZW50cyB8fCAhIWxvZ3M/LmxvZ3MgfHwgbG9ncz8ubWlzc2luZ0xvb2t1cHM/Lmxlbmd0aCA+IDA7XG5cbmNvbnN0IGhhc0xvZ0RldGFpbHMgPSAoc3RhdHVzOiBMb2dTdGF0dXMsIGxvZ3M/OiBJTm9kZVRlcm1Mb2cpID0+XG4gIFtMb2dTdGF0dXMuc3VjY2VzcywgTG9nU3RhdHVzLmVycm9yLCBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkXS5pbmNsdWRlcyhzdGF0dXMpICYmIGhhc0xvZ3MobG9ncyk7XG5cbmNvbnN0IGxvZ1N0YXR1cyA9IChcbiAgZGF0YTogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlIHwgSUJsYW5rTm9kZUxvZyB8IElOb25CbGFua05vZGVMb2csXG4gIGxvZ3M/OiBJTm9kZVRlcm1Mb2csXG4gIGhhc1ByZXZpb3VzU3VjY2VzcyA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3Qgd2l0aExvZ3MgPSBoYXNMb2cobG9ncyk7XG4gIGNvbnN0IGlzQ2FsY3VsYXRlZCA9IFtcbiAgICB0eXBlb2YgZGF0YS5vcmlnaW5hbFZhbHVlID09PSAndW5kZWZpbmVkJywgLy8gbm8gb3JpZ2luYWwgdmFsdWVcbiAgICBkYXRhLmlzUmVjYWxjdWxhdGVkIC8vIGlzIHJlY2FsY3VsYXRlZFxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xuICAvLyBjYW4gYmUgbm90IHJlcXVpcmVkIGZvciBhIHNwZWNpZmljIG1vZGVsXG4gIGNvbnN0IGlzUmVxdWlyZWQgPSAhIWxvZ3MgJiYgJ3J1blJlcXVpcmVkJyBpbiBsb2dzID8gbG9ncy5ydW5SZXF1aXJlZCA6IGRhdGEuaXNSZXF1aXJlZDtcbiAgcmV0dXJuIHdpdGhMb2dzXG4gICAgPyAhaXNSZXF1aXJlZFxuICAgICAgPyBMb2dTdGF0dXMubm90UmVxdWlyZWRcbiAgICAgIDogaXNSdW5PcmNoZXN0cmF0b3IobG9ncylcbiAgICAgICAgPyAnc2hvdWxkUnVuJyBpbiBsb2dzXG4gICAgICAgICAgPyBsb2dzLnNob3VsZFJ1blxuICAgICAgICAgICAgPyBkYXRhLmlzUmVjYWxjdWxhdGVkXG4gICAgICAgICAgICAgID8gTG9nU3RhdHVzLnN1Y2Nlc3NcbiAgICAgICAgICAgICAgOiBpc0VtcHR5KGRhdGEub3JpZ2luYWxWYWx1ZSlcbiAgICAgICAgICAgICAgICA/IExvZ1N0YXR1cy5lcnJvclxuICAgICAgICAgICAgICAgIDogTG9nU3RhdHVzLmRhdGFQcm92aWRlZFxuICAgICAgICAgICAgOiBoYXNQcmV2aW91c1N1Y2Nlc3NcbiAgICAgICAgICAgICAgPyBMb2dTdGF0dXMuc2tpcEhpZXJhcmNoeVxuICAgICAgICAgICAgICA6IExvZ1N0YXR1cy5lcnJvclxuICAgICAgICAgIDogTG9nU3RhdHVzLmRhdGFQcm92aWRlZFxuICAgICAgICA6IGRhdGEuaXNSZWNhbGN1bGF0ZWRcbiAgICAgICAgICA/IExvZ1N0YXR1cy5za2lwSGllcmFyY2h5XG4gICAgICAgICAgOiBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkXG4gICAgOiBpc0NhbGN1bGF0ZWRcbiAgICAgID8gTG9nU3RhdHVzLnNraXBIaWVyYXJjaHlcbiAgICAgIDogTG9nU3RhdHVzLmRhdGFQcm92aWRlZDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmZpZ01vZGVsIHtcbiAgbWV0aG9kSWQ6IHN0cmluZztcbiAgbG9ncz86IElOb2RlVGVybUxvZztcbiAgc2hvd0xvZ3M/OiBib29sZWFuO1xuICBzdGF0dXM/OiBMb2dTdGF0dXM7XG4gIG1vZGVsPzogSU1vZGVsO1xuICBjb25maWc/OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlIHtcbiAgYmxhbmtOb2RlOiB0cnVlO1xuICBrZXk6IHN0cmluZztcbiAgc2hvd1VuaXRzOiBib29sZWFuO1xuICBvcmlnaW5hbFZhbHVlOiBwcm9wZXJ0eVZhbHVlVHlwZTtcbiAgcmVjYWxjdWxhdGVkVmFsdWU6IHByb3BlcnR5VmFsdWVUeXBlO1xuICBpc1JlY2FsY3VsYXRlZDogYm9vbGVhbjtcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW47XG4gIGlkPzogc3RyaW5nO1xuICBjb25maWdNb2RlbHM/OiBJQ29uZmlnTW9kZWxbXTtcbiAgbG9ncz86IElOb2RlVGVybUxvZ3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxvZyB7XG4gIGxvZ3M/OiBJTm9kZVRlcm1Mb2dzO1xuICBpc09wZW46IGJvb2xlYW47XG4gIGNhbk9wZW46IGJvb2xlYW47XG4gIHR5cGU/OiBTY2hlbWFUeXBlO1xuICBjb25maWdNb2RlbHM6IChJQ29uZmlnTW9kZWwgfCBJQ29uZmlnTW9kZWxbXSlbXTtcbiAgb3JpZ2luYWxWYWx1ZTogcHJvcGVydHlWYWx1ZVR5cGU7XG4gIHJlY2FsY3VsYXRlZFZhbHVlOiBwcm9wZXJ0eVZhbHVlVHlwZTtcbiAgaXNPcmlnaW5hbDogYm9vbGVhbjtcbiAgaXNSZWNhbGN1bGF0ZWQ6IGJvb2xlYW47XG4gIGhhc0RhdGE6IGJvb2xlYW47XG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW47XG4gIC8vIGNvbnRhaW5zIG11bHRpcGxlIG1vZGVscyBhbGwgcnVubmluZyBpbiBwYXJhbGxlbFxuICBhbGxQYXJhbGxlbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJsYW5rTm9kZUxvZyBleHRlbmRzIElMb2cge1xuICBibGFua05vZGU6IHRydWU7XG4gIHRlcm06IElUZXJtSlNPTkxEO1xuICB0ZXJtSWQ6IHN0cmluZztcbiAga2V5czogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlW107XG4gIHN1YlZhbHVlczogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlW107XG4gIC8vIG1vZGVscyBhcmUgcHJlc2VudCBhcyB3ZWxsIGluIG9uZSBvZiB0aGUgU3ViVmFsdWVzLCBkbyBub3Qgc2hvdyB0d2ljZVxuICBtb2RlbHNJblN1YlZhbHVlcz86IGJvb2xlYW47XG4gIG9yaWdpbmFsOiBibGFua05vZGVzVHlwZVZhbHVlW107XG4gIC8vIHdoZW4gbXVsdGlwbGUgbW9kZWxzIGFyZSBydW5uaW5nIGluIHBhcmFsbGVsXG4gIG9yaWdpbmFsVmFsdWVCeU1ldGhvZElkPzoge1xuICAgIFttZXRob2RJZDogc3RyaW5nXTogcHJvcGVydHlWYWx1ZVR5cGU7XG4gIH07XG4gIHJlY2FsY3VsYXRlZDogYmxhbmtOb2Rlc1R5cGVWYWx1ZVtdO1xuICAvLyB3aGVuIG11bHRpcGxlIG1vZGVscyBhcmUgcnVubmluZyBpbiBwYXJhbGxlbFxuICByZWNhbGN1bGF0ZWRWYWx1ZUJ5TWV0aG9kSWQ/OiB7XG4gICAgW21ldGhvZElkOiBzdHJpbmddOiBwcm9wZXJ0eVZhbHVlVHlwZTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9uQmxhbmtOb2RlTG9nIGV4dGVuZHMgSUxvZyB7XG4gIGJsYW5rTm9kZTogZmFsc2U7XG4gIGtleTogc3RyaW5nO1xufVxuXG5jb25zdCByZW1vdmVDb25maWdNb2RlbEJ5U3RhdHVzID1cbiAgKC4uLnN0YXR1c2VzOiBMb2dTdGF0dXNbXSkgPT5cbiAgKG1vZGVsOiBJQ29uZmlnTW9kZWwpID0+XG4gICAgIXN0YXR1c2VzLmluY2x1ZGVzKG1vZGVsPy5zdGF0dXMpO1xuXG5jb25zdCBrZWVwQ29uZmlnTW9kZWxCeVN0YXR1cyA9XG4gICguLi5zdGF0dXNlczogTG9nU3RhdHVzW10pID0+XG4gIChtb2RlbDogSUNvbmZpZ01vZGVsKSA9PlxuICAgIHN0YXR1c2VzLmluY2x1ZGVzKG1vZGVsPy5zdGF0dXMpO1xuXG5jb25zdCBmaWx0ZXJDb25maWdNb2RlbHMgPSAoXG4gIG1vZGVsczogSUNvbmZpZ01vZGVsIHwgKElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdKVtdLFxuICBmaWx0ZXJGdW5jOiAobW9kZWw6IElDb25maWdNb2RlbCkgPT4gYm9vbGVhblxuKSA9PlxuICAoQXJyYXkuaXNBcnJheShtb2RlbHMpID8gbW9kZWxzIDogW21vZGVsc10pXG4gICAgLmZpbHRlcih2ID0+IEFycmF5LmlzQXJyYXkodikgfHwgZmlsdGVyRnVuYyh2KSlcbiAgICAubWFwKHYgPT4gKEFycmF5LmlzQXJyYXkodikgPyB2LmZpbHRlcihmaWx0ZXJGdW5jKSA6IHYpKVxuICAgIC5maWx0ZXIodiA9PiAoQXJyYXkuaXNBcnJheSh2KSA/IHY/Lmxlbmd0aCA6ICEhdikpO1xuXG5pbnRlcmZhY2UgSVBhcnRpYWxTdWJWYWx1ZSB7XG4gIGJsYW5rTm9kZT86IGJvb2xlYW47XG4gIGlkPzogc3RyaW5nO1xuICBrZXk6IHN0cmluZztcbiAgY29uZmlnTW9kZWxzOiBzdHJpbmdbXTtcbiAgc2hvd1VuaXRzOiBib29sZWFuO1xuICBvcmlnaW5hbFZhbHVlPzogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbjtcbiAgcmVjYWxjdWxhdGVkVmFsdWU/OiBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuO1xufVxuXG5jb25zdCBtZXJnZVN1YlZhbHVlcyA9ICh2YWx1ZXM6IElQYXJ0aWFsU3ViVmFsdWVbXSkgPT5cbiAgT2JqZWN0LnZhbHVlcyhcbiAgICB2YWx1ZXMucmVkdWNlKFxuICAgICAgKHByZXYsIHsgaWQsIGtleSwgY29uZmlnTW9kZWxzLCAuLi5kYXRhIH0pID0+IHtcbiAgICAgICAgY29uc3QgdW5pcXVlS2V5ID0gW2tleSwgaWRdLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJyk7XG4gICAgICAgIHByZXZbdW5pcXVlS2V5XSA9IHtcbiAgICAgICAgICAuLi5PYmplY3QuYXNzaWduKHt9LCBwcmV2W3VuaXF1ZUtleV0sIGRhdGEpLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBjb25maWdNb2RlbHM6IHVuaXF1ZShbLi4uKChwcmV2W3VuaXF1ZUtleV0gfHwge30pLmNvbmZpZ01vZGVscyB8fCBbXSksIC4uLihjb25maWdNb2RlbHMgfHwgW10pXSlcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9LFxuICAgICAge30gYXMgeyBba2V5OiBzdHJpbmddOiBJUGFydGlhbFN1YlZhbHVlIH1cbiAgICApXG4gICk7XG5cbmNvbnN0IHJlZHVjZVZhbHVlcyA9ICh2YWx1ZXM6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXSwgdGVybUlkOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcHJvcGVydHlWYWx1ZXMgPSB2YWx1ZXNcbiAgICAubWFwKCh7IHZhbHVlIH0pID0+IHByb3BlcnR5VmFsdWUodmFsdWUsIHRlcm1JZCkpXG4gICAgLy8gcHJvcGVydHlWYWx1ZSBtYXkgcmV0dXJuIG51bGwgaWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkLCB0aGVyZWZvcmUgcmVtb3ZlIHRoZW0gZnJvbSB0b3RhbFxuICAgIC5maWx0ZXIodiA9PiB2ICE9PSBudWxsKTtcbiAgcmV0dXJuIHByb3BlcnR5VmFsdWVzLmxlbmd0aCA/IHByb3BlcnR5VmFsdWUocHJvcGVydHlWYWx1ZXMsIHRlcm1JZCkgOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBpc1J1bk9yY2hlc3RyYXRvciA9IChsb2c6IElOb2RlVGVybUxvZykgPT4gISgnc2hvdWxkUnVuT3JjaGVzdHJhdG9yJyBpbiBsb2cpIHx8IGxvZy5zaG91bGRSdW5PcmNoZXN0cmF0b3I7XG5cbmNvbnN0IGhhc0xvZyA9IChsb2c6IElOb2RlVGVybUxvZywgd2l0aE9yY2hlc3RyYXRvciA9IHRydWUpID0+XG4gICEhbG9nICYmICgnc2hvdWxkUnVuJyBpbiBsb2cgfHwgJ3J1blJlcXVpcmVkJyBpbiBsb2cgfHwgKHdpdGhPcmNoZXN0cmF0b3IgJiYgJ3Nob3VsZFJ1bk9yY2hlc3RyYXRvcicgaW4gbG9nKSk7XG5cbmNvbnN0IGlzUmVjYWxjdWxhdGVkID0gKGtleTogc3RyaW5nKSA9PiAodmFsdWU6IGJsYW5rTm9kZXNUeXBlVmFsdWUgfCBub25CbGFua05vZGVzVHlwZVZhbHVlKSA9PlxuICBbLi4uKHZhbHVlLmFkZGVkIHx8IFtdKSwgLi4uKHZhbHVlLnVwZGF0ZWQgfHwgW10pXS5pbmNsdWRlcyhrZXkpO1xuXG5jb25zdCBoYXNSZWNhbGN1bGF0ZWRLZXlzID0gKHZhbHVlOiBibGFua05vZGVzVHlwZVZhbHVlIHwgbm9uQmxhbmtOb2Rlc1R5cGVWYWx1ZSkgPT5cbiAgWy4uLih2YWx1ZS5hZGRlZCB8fCBbXSksIC4uLih2YWx1ZS51cGRhdGVkIHx8IFtdKV0ubGVuZ3RoID4gMDtcblxuY29uc3QgaGFzUmVjYWxjdWxhdGVkVmFsdWUgPSAodmFsdWVzOiBibGFua05vZGVzVHlwZVZhbHVlW10sIGtleSA9ICd2YWx1ZScpID0+IHZhbHVlcy5zb21lKGlzUmVjYWxjdWxhdGVkKGtleSkpO1xuXG5jb25zdCBmaWx0ZXJEZWxldGVkID0gKGJsYW5rTm9kZXM6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXSkgPT5cbiAgKGJsYW5rTm9kZXMgfHwgW10pLmZpbHRlcih2YWx1ZSA9PiAhKHZhbHVlIGFzIGFueSkuZGVsZXRlZCk7XG5cbmNvbnN0IGJsYW5rTm9kZVZhbHVlQnlLZXk6IHtcbiAgW2tleTogc3RyaW5nXTogKHZhbHVlczogYmxhbmtOb2Rlc1R5cGVWYWx1ZVtdLCBrZXk/OiBzdHJpbmcsIGlkPzogc3RyaW5nKSA9PiBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuO1xufSA9IHtcbiAgcHJvcGVydHk6ICh2YWx1ZXM6IChFbWlzc2lvbiB8IFByb2R1Y3QgfCBIZXN0aWFJbnB1dClbXSwgX2ssIGlkKSA9PlxuICAgICEhaWQgJiYgdmFsdWVzPy5sZW5ndGggPyAodmFsdWVzWzBdLnByb3BlcnRpZXMgfHwgW10pLmZpbmQocCA9PiBwLnRlcm1bJ0BpZCddID09PSBpZCk/LnZhbHVlIHx8ICcnIDogJycsXG4gIGlucHV0OiAodmFsdWVzOiBFbWlzc2lvbltdLCBfaywgaWQpID0+XG4gICAgISFpZCAmJiAodmFsdWVzIHx8IFtdKS5maWx0ZXIodiA9PiB2WydAdHlwZSddID09PSBTY2hlbWFUeXBlLkVtaXNzaW9uKS5sZW5ndGhcbiAgICAgID8gcmVkdWNlVmFsdWVzKFxuICAgICAgICAgIHZhbHVlcy5maWx0ZXIoKHsgaW5wdXRzIH0pID0+IChpbnB1dHMgfHwgW10pLnNvbWUoaW5wdXQgPT4gaW5wdXRbJ0BpZCddID09PSBpZCkpLFxuICAgICAgICAgIGlkXG4gICAgICAgIClcbiAgICAgIDogJycsXG4gIHRyYW5zZm9ybWF0aW9uOiAodmFsdWVzOiBFbWlzc2lvbltdLCBfaywgaWQpID0+XG4gICAgdmFsdWVzLmxlbmd0aFxuICAgICAgPyByZWR1Y2VWYWx1ZXMoXG4gICAgICAgICAgdmFsdWVzLmZpbHRlcigoeyB0cmFuc2Zvcm1hdGlvbiB9KSA9PiB0cmFuc2Zvcm1hdGlvbj8uWydAaWQnXSA9PT0gaWQpLFxuICAgICAgICAgIGlkXG4gICAgICAgIClcbiAgICAgIDogJycsXG4gIGRlZmF1bHQ6IChibGFua05vZGVzLCBrZXkpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGJsYW5rTm9kZXM/Lmxlbmd0aCA/IGJsYW5rTm9kZXNbMF1ba2V5XSA6IG51bGw7XG4gICAgcmV0dXJuIFsnc3RyaW5nJywgJ251bWJlcicsICdib29sZWFuJywgJ3VuZGVmaW5lZCddLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSlcbiAgICAgID8gaXNVbmRlZmluZWQodmFsdWUpXG4gICAgICAgID8gJydcbiAgICAgICAgOiB2YWx1ZVxuICAgICAgOiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICA/IHZhbHVlLmxlbmd0aCA+IDFcbiAgICAgICAgICA/IHZhbHVlLmpvaW4oJzsnKVxuICAgICAgICAgIDogdmFsdWVbMF1cbiAgICAgICAgOiBudWxsO1xuICB9XG59O1xuXG5jb25zdCBibGFua05vZGVWYWx1ZSA9IChibGFua05vZGVzOiBibGFua05vZGVzVHlwZVZhbHVlW10sIGtleTogc3RyaW5nLCBpZD86IHN0cmluZykgPT5cbiAgYmxhbmtOb2RlVmFsdWVCeUtleVtrZXkgaW4gYmxhbmtOb2RlVmFsdWVCeUtleSA/IGtleSA6ICdkZWZhdWx0J10oYmxhbmtOb2Rlcywga2V5LCBpZCk7XG5cbmNvbnN0IHN1YlZhbHVlTG9nS2V5ID0gKHsga2V5LCBpZCB9OiBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpOiBzdHJpbmcgPT5cbiAgc3ViVmFsdWVLZXlzLmluY2x1ZGVzKGtleSkgPyBrZXkgOiBpZCB8fCBrZXkgfHwgbnVsbDtcblxuY29uc3QgaW5wdXRWYWx1ZSA9ICh7IHZhbHVlLCBjb2VmZmljaWVudCB9OiBhbnkgPSB7fSkgPT5cbiAgW3ZhbHVlLCBjb2VmZmljaWVudF0uZXZlcnkoaXNOdW1iZXIpID8gK3ZhbHVlICogK2NvZWZmaWNpZW50IDogdW5kZWZpbmVkO1xuXG5jb25zdCBsb2dTdWJWYWx1ZSA9IChsb2dzOiBJTm9kZVRlcm1Mb2dzLCBrZXk6IHN0cmluZywgcHJvcDogc3RyaW5nLCBzaG93VW5pdHMgPSBmYWxzZSkgPT4ge1xuICBjb25zdCBsb2cgPSBsb2dzW2tleV0/Lltwcm9wXTtcbiAgcmV0dXJuIGxvZ1xuICAgID8gQXJyYXkuaXNBcnJheShsb2cpXG4gICAgICA/IChsb2cgYXMgc3RyaW5nW10pLm1hcChcbiAgICAgICAgICBpZCA9PlxuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAga2V5OiBwcm9wLFxuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgc2hvd1VuaXRzXG4gICAgICAgICAgICAgIC8vIHJlY2FsY3VsYXRlZFZhbHVlOiBpbnB1dFZhbHVlKGxvZ3Nba2V5XT8ubG9ncz8uW2lkXSlcbiAgICAgICAgICAgIH0pIGFzIElCbGFua05vZGVMb2dTdWJWYWx1ZVxuICAgICAgICApXG4gICAgICA6ICh7XG4gICAgICAgICAga2V5OiBwcm9wLFxuICAgICAgICAgIGlkOiBsb2csXG4gICAgICAgICAgc2hvd1VuaXRzXG4gICAgICAgICAgLy8gcmVjYWxjdWxhdGVkVmFsdWU6IGlucHV0VmFsdWUobG9nc1trZXldPy5sb2dzPy5bbG9nXSlcbiAgICAgICAgfSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpXG4gICAgOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBsb2dQcm9wZXJ0aWVzID0gKG5vZGVzOiBibGFua05vZGVzVHlwZVZhbHVlW10sIG1vZGVsczogSU1vZGVsW10pID0+XG4gIG5vZGVzXG4gICAgLmZsYXRNYXAobm9kZSA9PiAoKG5vZGUgYXMgYW55KS5wcm9wZXJ0aWVzIHx8IFtdKS5tYXAoKHsgdGVybSB9KSA9PiB0ZXJtWydAaWQnXSkpXG4gICAgLm1hcChcbiAgICAgIGlkID0+XG4gICAgICAgICh7XG4gICAgICAgICAga2V5OiAncHJvcGVydHknLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIHNob3dVbml0czogZmFsc2UsXG4gICAgICAgICAgY29uZmlnTW9kZWxzOiBmaW5kTW9kZWxzKG1vZGVscywgaWQpLm1hcCgoeyBtb2RlbCB9KSA9PiBtb2RlbClcbiAgICAgICAgfSkgYXMgSVBhcnRpYWxTdWJWYWx1ZVxuICAgICk7XG5cbi8qKlxuICogSW5jbHVkZSB0cmFuc2Zvcm1hdGlvbiBtb2RlbCAoY29weSBFbWlzc2lvbnMgZnJvbSBUcmFuc2Zvcm1hdGlvbiB0byBDeWNsZSkgYXMgc3ViVmFsdWUuXG4gKlxuICogQHBhcmFtIGVtaXNzaW9uc1xuICogQHJldHVybnNcbiAqL1xuY29uc3QgbG9nRW1pc3Npb25UcmFuc2Zvcm1hdGlvbnMgPSAoZW1pc3Npb25zOiBFbWlzc2lvbltdKSA9PlxuICBlbWlzc2lvbnNcbiAgICAuZmlsdGVyKCh7IHRyYW5zZm9ybWF0aW9uIH0pID0+ICEhdHJhbnNmb3JtYXRpb24/LlsnQGlkJ10pXG4gICAgLm1hcChcbiAgICAgICh7IHRyYW5zZm9ybWF0aW9uIH0pID0+XG4gICAgICAgICh7XG4gICAgICAgICAgaWQ6IHRyYW5zZm9ybWF0aW9uPy5bJ0BpZCddLFxuICAgICAgICAgIGtleTogJ3RyYW5zZm9ybWF0aW9uJyxcbiAgICAgICAgICBzaG93VW5pdHM6IHRydWUsXG4gICAgICAgICAgY29uZmlnTW9kZWxzOiBbJ2N5Y2xlL3RyYW5zZm9ybWF0aW9uJ11cbiAgICAgICAgfSkgYXMgSVBhcnRpYWxTdWJWYWx1ZVxuICAgICk7XG5cbmNvbnN0IGxvZ0JhY2tncm91bmRFbWlzc2lvbnMgPSAobG9nczogSU5vZGVUZXJtTG9ncykgPT5cbiAgKGxvZ3MubW9kZWxzIHx8IFtdKVxuICAgIC5maWx0ZXIobW9kZWwgPT4gbG9nc1ttb2RlbF0ubWV0aG9kVGllciA9PT0gRW1pc3Npb25NZXRob2RUaWVyLmJhY2tncm91bmQpXG4gICAgLm1hcChcbiAgICAgIG1vZGVsID0+XG4gICAgICAgICh7XG4gICAgICAgICAgYmxhbmtOb2RlOiBmYWxzZSxcbiAgICAgICAgICBrZXk6ICdiYWNrZ3JvdW5kRGF0YScsXG4gICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICBjb25maWdNb2RlbHM6IFttb2RlbF0sXG4gICAgICAgICAgcmVjYWxjdWxhdGVkVmFsdWU6ICctJ1xuICAgICAgICB9KSBhcyBJUGFydGlhbFN1YlZhbHVlXG4gICAgKTtcblxuY29uc3QgaW5jbHVkZUN5Y2xlU3ViVmFsdWUgPSAoc3ViVmFsdWVzOiBJQmxhbmtOb2RlTG9nU3ViVmFsdWVbXSkgPT5cbiAgc3ViVmFsdWVzLnNvbWUodiA9PiAhWydwcm9wZXJ0eScsICdiYWNrZ3JvdW5kRGF0YSddLmluY2x1ZGVzKHYua2V5KSk7XG5cbmNvbnN0IGN5Y2xlU3ViVmFsdWUgPSAoeyB0ZXJtSWQsIGNvbmZpZ01vZGVscywgaXNSZXF1aXJlZCwgc3ViVmFsdWVzLCBvcmlnaW5hbCwgcmVjYWxjdWxhdGVkIH06IElCbGFua05vZGVMb2cpID0+IHtcbiAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHJlZHVjZVZhbHVlcyhcbiAgICBvcmlnaW5hbC5maWx0ZXIoKHY6IGFueSkgPT4gIXYuaW5wdXRzPy5sZW5ndGggJiYgIXYudHJhbnNmb3JtYXRpb24pLFxuICAgIHRlcm1JZFxuICApO1xuICBjb25zdCByZWNhbGN1bGF0ZWRWYWx1ZXMgPSByZWNhbGN1bGF0ZWQuZmlsdGVyKCh2OiBhbnkpID0+ICF2LmlucHV0cz8ubGVuZ3RoICYmICF2LnRyYW5zZm9ybWF0aW9uKTtcbiAgY29uc3QgcmVjYWxjdWxhdGVkVmFsdWUgPSByZWR1Y2VWYWx1ZXMocmVjYWxjdWxhdGVkVmFsdWVzLCB0ZXJtSWQpO1xuICByZXR1cm4gaW5jbHVkZUN5Y2xlU3ViVmFsdWUoc3ViVmFsdWVzKSAmJiAhaXNFbXB0eShyZWNhbGN1bGF0ZWRWYWx1ZSlcbiAgICA/ICh7XG4gICAgICAgIGJsYW5rTm9kZTogdHJ1ZSxcbiAgICAgICAga2V5OiAnY3ljbGUnLFxuICAgICAgICBzaG93VW5pdHM6IHRydWUsXG4gICAgICAgIGNvbmZpZ01vZGVscyxcbiAgICAgICAgaXNSZXF1aXJlZCxcbiAgICAgICAgb3JpZ2luYWxWYWx1ZSxcbiAgICAgICAgcmVjYWxjdWxhdGVkVmFsdWUsXG4gICAgICAgIGlzUmVjYWxjdWxhdGVkOiBoYXNSZWNhbGN1bGF0ZWRWYWx1ZShyZWNhbGN1bGF0ZWRWYWx1ZXMpXG4gICAgICB9IGFzIElCbGFua05vZGVMb2dTdWJWYWx1ZSlcbiAgICA6IG51bGw7XG59O1xuXG5jb25zdCBsb2dTdWJWYWx1ZXMgPSAoXG4gIGFsbExvZ3M6IElOb2RlTG9ncyxcbiAgbG9nczogSU5vZGVUZXJtTG9ncyxcbiAgb3JpZ2luYWw6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXSxcbiAgcmVjYWxjdWxhdGVkOiBibGFua05vZGVzVHlwZVZhbHVlW10sXG4gIG1vZGVsczogSU1vZGVsW10sXG4gIHsgbm9kZVR5cGUsIHR5cGUsIHRlcm1JZCB9OiBJQ29uZmlnTW9kZWxEb2NzRGF0YVxuKSA9PlxuICAvLyBwcmVzZXJ2ZSBvcmRlciwgYXMgdGhlIGxhc3Qgb25lIHdpbGwgc2V0IHRoZSBydW4gc3RhdHVzXG4gIG1lcmdlU3ViVmFsdWVzKFtcbiAgICAuLi5sb2dQcm9wZXJ0aWVzKG9yaWdpbmFsLCBtb2RlbHMpLFxuICAgIC8vIGluY2x1ZGUgcHJvcGVydGllc1xuICAgIC4uLk9iamVjdC5rZXlzKGxvZ3MpXG4gICAgICAuZmlsdGVyKGlkID0+IGxvZ3NbaWRdLmlzUHJvcGVydHkpXG4gICAgICAubWFwKFxuICAgICAgICBpZCA9PlxuICAgICAgICAgICh7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGtleTogJ3Byb3BlcnR5JyxcbiAgICAgICAgICAgIHNob3dVbml0czogZmFsc2UsXG4gICAgICAgICAgICBjb25maWdNb2RlbHM6IChsb2dzW2lkXS5tb2RlbHMgfHwgW10pLmZpbHRlcih2ID0+IGhhc0xvZyhsb2dzW2lkXVt2XSkpXG4gICAgICAgICAgfSkgYXMgSVBhcnRpYWxTdWJWYWx1ZVxuICAgICAgKSxcbiAgICAuLi4odHlwZSA9PT0gU2NoZW1hVHlwZS5FbWlzc2lvbiA/IGxvZ0VtaXNzaW9uVHJhbnNmb3JtYXRpb25zKHJlY2FsY3VsYXRlZCBhcyBFbWlzc2lvbltdKSA6IFtdKSxcbiAgICAuLi4odHlwZSA9PT0gU2NoZW1hVHlwZS5JbnB1dCA/IGxvZ0JhY2tncm91bmRFbWlzc2lvbnMobG9ncykgOiBbXSksXG4gICAgLi4uT2JqZWN0LmtleXMobG9ncykuZmxhdE1hcChrZXkgPT5cbiAgICAgIFtsb2dTdWJWYWx1ZShsb2dzLCBrZXksICdpbnB1dCcsIHRydWUpLCBsb2dTdWJWYWx1ZShsb2dzLCBrZXksICdwcm9wZXJ0eScpXVxuICAgICAgICAuZmxhdCgpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLm1hcCh2ID0+ICh7IC4uLnYsIGNvbmZpZ01vZGVsczogKHYuY29uZmlnTW9kZWxzIGFzIGFueVtdKSB8fCBba2V5XSB9KSlcbiAgICApLFxuICAgIC4uLmxvZ1Byb3BlcnRpZXMocmVjYWxjdWxhdGVkLCBtb2RlbHMpXG4gIF0pXG4gICAgLm1hcCgoeyBrZXksIGlkLCBzaG93VW5pdHMsIGNvbmZpZ01vZGVscywgb3JpZ2luYWxWYWx1ZSwgcmVjYWxjdWxhdGVkVmFsdWUsIGJsYW5rTm9kZSB9KSA9PiB7XG4gICAgICBvcmlnaW5hbFZhbHVlID0gb3JpZ2luYWxWYWx1ZSB8fCBibGFua05vZGVWYWx1ZShvcmlnaW5hbCwga2V5LCBpZCk7XG4gICAgICByZWNhbGN1bGF0ZWRWYWx1ZSA9IHJlY2FsY3VsYXRlZFZhbHVlIHx8IGJsYW5rTm9kZVZhbHVlKHJlY2FsY3VsYXRlZCwga2V5LCBpZCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJsYW5rTm9kZTogdHlwZW9mIGJsYW5rTm9kZSA9PT0gJ3VuZGVmaW5lZCcgPyB0cnVlIDogYmxhbmtOb2RlLFxuICAgICAgICBrZXksXG4gICAgICAgIGlkLFxuICAgICAgICBzaG93VW5pdHMsXG4gICAgICAgIGNvbmZpZ01vZGVsczogY29uZmlnTW9kZWxzLm1hcChjb25maWdNb2RlbFdpdGhEb2NzKG1vZGVscywgeyBub2RlVHlwZSwgdHlwZSwgdGVybUlkIH0sIHsga2V5LCBpZCB9IGFzIGFueSkpLFxuICAgICAgICBvcmlnaW5hbFZhbHVlLFxuICAgICAgICByZWNhbGN1bGF0ZWRWYWx1ZSxcbiAgICAgICAgaXNSZWNhbGN1bGF0ZWQ6ICFpc1VuZGVmaW5lZChyZWNhbGN1bGF0ZWRWYWx1ZSkgJiYgcmVjYWxjdWxhdGVkVmFsdWUgIT09IG9yaWdpbmFsVmFsdWUsXG4gICAgICAgIGlzUmVxdWlyZWQ6IHRydWVcbiAgICAgIH0gYXMgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlO1xuICAgIH0pXG4gICAgLmZpbHRlcigoeyBvcmlnaW5hbFZhbHVlLCByZWNhbGN1bGF0ZWRWYWx1ZSB9KSA9PiBbb3JpZ2luYWxWYWx1ZSAhPT0gJycgfHwgcmVjYWxjdWxhdGVkVmFsdWUgIT09ICcnXS5ldmVyeShCb29sZWFuKSlcbiAgICAubWFwKHYgPT4gKFsnaW5wdXQnXS5pbmNsdWRlcyh2LmtleSkgPyBkYXRhV2l0aENvbmZpZ01vZGVsTG9ncyhhbGxMb2dzKSh2KSA6IGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzKGxvZ3MpKHYpKSk7XG5cbmNvbnN0IGxvZ0tleXMgPSAoXG4gIGxvZ3M6IElOb2RlVGVybUxvZ3MsXG4gIG9yaWdpbmFsOiBibGFua05vZGVzVHlwZVZhbHVlW10sXG4gIHJlY2FsY3VsYXRlZDogYmxhbmtOb2Rlc1R5cGVWYWx1ZVtdLFxuICBtb2RlbHM6IElNb2RlbFtdLFxuICB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQgfVxuKSA9PlxuICBPYmplY3Qua2V5cyhsb2dzKVxuICAgIC5maWx0ZXIoa2V5ID0+IGxvZ3Nba2V5XS5pc0tleSAmJiAhc3ViVmFsdWVLZXlzLmluY2x1ZGVzKGtleSkpXG4gICAgLm1hcChcbiAgICAgIGtleSA9PlxuICAgICAgICAoe1xuICAgICAgICAgIGJsYW5rTm9kZTogdHJ1ZSxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICBjb25maWdNb2RlbHM6IChsb2dzW2tleV0ubW9kZWxzIHx8IFtdKVxuICAgICAgICAgICAgLm1hcChjb25maWdNb2RlbFdpdGhEb2NzKG1vZGVscywgeyBub2RlVHlwZSwgdHlwZSwgdGVybUlkIH0sIHsga2V5IH0gYXMgYW55KSlcbiAgICAgICAgICAgIC8vIG9ubHkgdGFrZSB0aG9zZSB3ZSBmb3VuZCBhIG1hdGNoaW5nIG1vZGVsIChhdm9pZCBtYXRjaGluZyBrZXkgb24gd3Jvbmcgbm9kZSB0eXBlKVxuICAgICAgICAgICAgLmZpbHRlcih2ID0+ICEhdi5tb2RlbCksXG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZTogYmxhbmtOb2RlVmFsdWUob3JpZ2luYWwsIGtleSksXG4gICAgICAgICAgcmVjYWxjdWxhdGVkVmFsdWU6IGJsYW5rTm9kZVZhbHVlKHJlY2FsY3VsYXRlZCwga2V5KSxcbiAgICAgICAgICBpc1JlY2FsY3VsYXRlZDogaGFzUmVjYWxjdWxhdGVkVmFsdWUocmVjYWxjdWxhdGVkLCBrZXkpLFxuICAgICAgICAgIGlzUmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSkgYXMgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlXG4gICAgKVxuICAgIC5maWx0ZXIodiA9PiB2LmNvbmZpZ01vZGVscy5sZW5ndGggPiAwKVxuICAgIC5tYXAoZGF0YVdpdGhDb25maWdNb2RlbExvZ3MobG9ncykpO1xuXG5jb25zdCBpc01vZGVsRm9ySW5wdXRQcm9kdWN0ID0gKHR5cGU6IFNjaGVtYVR5cGUsIGtleTogc3RyaW5nKSA9PlxuICBbXG4gICAga2V5ICE9PSAnaGVzdGlhQWdncmVnYXRlZERhdGEnLFxuICAgICFrZXkuaW5jbHVkZXMoJy9pbnB1dC8nKSB8fCB0eXBlID09PSBTY2hlbWFUeXBlLklucHV0LFxuICAgICFrZXkuaW5jbHVkZXMoJy9wcm9kdWN0LycpIHx8IHR5cGUgPT09IFNjaGVtYVR5cGUuUHJvZHVjdFxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xuXG5jb25zdCBpc0JhY2tncm91bmRJbnB1dCA9IChsb2c6IElOb2RlVGVybUxvZykgPT5cbiAgbG9nLm1ldGhvZFRpZXIgPT09IEVtaXNzaW9uTWV0aG9kVGllci5iYWNrZ3JvdW5kICYmICEhbG9nLmlucHV0ICYmIGxvZy5zaG91bGRSdW47XG5cbmNvbnN0IGlzTW9kZWxMb2cgPSAobG9nczogSU5vZGVUZXJtTG9ncywgdHlwZTogU2NoZW1hVHlwZSkgPT4gKGtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGxvZyA9IGxvZ3Nba2V5XTtcbiAgcmV0dXJuIChcbiAgICAhIWxvZyAmJlxuICAgIFtcbiAgICAgIC8vIGhhbmRsZSBQcm9kdWN0IHNhbWUgYXMgSW5wdXRcbiAgICAgIGlzTW9kZWxGb3JJbnB1dFByb2R1Y3QodHlwZSwga2V5KSxcbiAgICAgIGxvZy5tZXRob2RUaWVyICE9PSBFbWlzc2lvbk1ldGhvZFRpZXIuYmFja2dyb3VuZCxcbiAgICAgICFsb2cuaXNLZXksXG4gICAgICAvLyAhbG9nLmlucHV0LFxuICAgICAgIWxvZy5wcm9wZXJ0eVxuICAgIF0uZXZlcnkoQm9vbGVhbikgJiZcbiAgICBbJ3Nob3VsZFJ1bicgaW4gbG9nLCAnc2hvdWxkUnVuT3JjaGVzdHJhdG9yJyBpbiBsb2csICdydW5SZXF1aXJlZCcgaW4gbG9nXS5zb21lKEJvb2xlYW4pXG4gICk7XG59O1xuXG5jb25zdCBtb2RlbENvbmZpZ01hdGNoID0gKHRlcm1JZDogc3RyaW5nLCBtb2RlbEtleTogc3RyaW5nLCBtb2RlbDogc3RyaW5nKSA9PiAoY29uZmlnOiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcpID0+XG4gIFt0ZXJtSWQgPT09IGNvbmZpZy52YWx1ZSwgbW9kZWxLZXkgPT09IGNvbmZpZy5rZXksIG1vZGVsID09PSBjb25maWcubW9kZWxdLmV2ZXJ5KEJvb2xlYW4pO1xuXG5jb25zdCBtb2RlbENvbmZpZyA9IChcbiAgbW9kZWxzOiAoSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnIHwgSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnW10pW10sXG4gIHRlcm1JZDogc3RyaW5nLFxuICBtb2RlbEtleTogc3RyaW5nLFxuICBtb2RlbDogc3RyaW5nXG4pID0+IG1vZGVscy5mbGF0KCkuZmluZChtb2RlbENvbmZpZ01hdGNoKHRlcm1JZCwgbW9kZWxLZXksIG1vZGVsKSk7XG5cbmNvbnN0IG1vZGVsQ29uZmlnT3JkZXIgPSAoXG4gIG1vZGVsczogKElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZyB8IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZ1tdKVtdLFxuICB0ZXJtSWQ6IHN0cmluZyxcbiAgbW9kZWxLZXk6IHN0cmluZyxcbiAgbW9kZWw6IHN0cmluZ1xuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgaW5kZXhlcyA9IG1vZGVsc1xuICAgIC5tYXAoKG0sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBhcnJheUluZGV4ID0gQXJyYXkuaXNBcnJheShtKSA/IG1vZGVsQ29uZmlnT3JkZXIobSwgdGVybUlkLCBtb2RlbEtleSwgbW9kZWwpIDogJyc7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShtKVxuICAgICAgICA/IGFycmF5SW5kZXhcbiAgICAgICAgICA/IFtpbmRleCwgYXJyYXlJbmRleF0uam9pbignLicpXG4gICAgICAgICAgOiAnJ1xuICAgICAgICA6IG1vZGVsQ29uZmlnTWF0Y2godGVybUlkLCBtb2RlbEtleSwgbW9kZWwpKG0pXG4gICAgICAgICAgPyBgJHtpbmRleH1gXG4gICAgICAgICAgOiAnJztcbiAgICB9KVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBpbmRleGVzLmxlbmd0aCA/IGluZGV4ZXNbMF0gOiAnJztcbn07XG5cbmludGVyZmFjZSBJQ29uZmlnTW9kZWxEb2NzRGF0YSB7XG4gIG5vZGVUeXBlOiBOb2RlVHlwZTtcbiAgdHlwZTogU2NoZW1hVHlwZTtcbiAgdGVybUlkPzogc3RyaW5nO1xuICB0ZXJtVHlwZT86IFRlcm1UZXJtVHlwZTtcbiAga2V5Pzogc3RyaW5nO1xufVxuXG5jb25zdCBjb25maWdNb2RlbFdpdGhEb2NzID1cbiAgKFxuICAgIG1vZGVsczogSU1vZGVsW10sXG4gICAgeyBub2RlVHlwZSwgdHlwZSwgdGVybUlkLCB0ZXJtVHlwZSwga2V5IH06IElDb25maWdNb2RlbERvY3NEYXRhLFxuICAgIHN1YlZhbHVlPzogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlXG4gICkgPT5cbiAgKG1ldGhvZElkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBub2RlID0ge1xuICAgICAgJ0B0eXBlJzogbm9kZVR5cGUsXG4gICAgICB0ZXJtOiB7ICdAaWQnOiBzdWJWYWx1ZT8uaWQgfHwgdGVybUlkIH0sXG4gICAgICBtZXRob2RNb2RlbDogeyAnQGlkJzogbWV0aG9kSWQgfVxuICAgIH0gYXMgYW55O1xuICAgIHJldHVybiB7XG4gICAgICBtZXRob2RJZCxcbiAgICAgIG1vZGVsOlxuICAgICAgICBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsUGFyYW1zKG5vZGUsICFbJ2JhY2tncm91bmREYXRhJ10uaW5jbHVkZXMoc3ViVmFsdWU/LmtleSkpKSB8fFxuICAgICAgICAvLyBoYW5kbGUgXCJsaXZlQW5pbWFsXCJcbiAgICAgICAgKHRlcm1UeXBlICYmIGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywgbW9kZWxLZXlQYXJhbXMobm9kZSwgdGVybVR5cGUpKSkgfHxcbiAgICAgICAgLy8gaGFuZGxlIFwiY29tcGxldGVuZXNzLmNyb3BSZXNpZHVlXCJcbiAgICAgICAgKGtleSAmJiBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsS2V5UGFyYW1zKG5vZGUsIGAke21ldGhvZElkfS4ke2tleX1gKSkpIHx8XG4gICAgICAgIGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywgbW9kZWxLZXlQYXJhbXMobm9kZSwgYCR7c3ViVmFsdWU/LmtleX0uJHttZXRob2RJZH1gKSkgfHxcbiAgICAgICAgLy8gaGFuZGxlIFwiaW5wdXQucHJpY2VcIlxuICAgICAgICBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsS2V5UGFyYW1zKG5vZGUsIGAke3R5cGU/LnRvTG93ZXJDYXNlKCl9LiR7c3ViVmFsdWU/LmtleX1gKSkgfHxcbiAgICAgICAgLy8gaGFuZGxlIFwiaW5wdXQuaGVzdGlhQWdncmVnYXRlZERhdGFcIlxuICAgICAgICBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsS2V5UGFyYW1zKG5vZGUsIGAke3R5cGU/LnRvTG93ZXJDYXNlKCl9LiR7bWV0aG9kSWR9YCkpIHx8XG4gICAgICAgIC8vIGhhbmRsZSBcInRyYW5zZm9ybWF0aW9uXCJcbiAgICAgICAgKHN1YlZhbHVlPy5rZXkgPyBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsS2V5UGFyYW1zKG5vZGUsIHN1YlZhbHVlPy5rZXkpKSA6IHVuZGVmaW5lZCkgfHxcbiAgICAgICAgLy8gaGFuZGxlIFwidHJhbnNmb3JtYXRpb24vaW5wdXQvZXhjcmV0YVwiIGFuZCBvdGhlciBtb2RlbHMgd2l0aCBcIi9cIlxuICAgICAgICAobWV0aG9kSWQuaW5jbHVkZXMoJy8nKVxuICAgICAgICAgID8gZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCB7XG4gICAgICAgICAgICAgIG1vZGVsOiBtZXRob2RJZC5zcGxpdCgnLycpWzBdLFxuICAgICAgICAgICAgICBtb2RlbEtleTogbWV0aG9kSWQuc3BsaXQoJy8nKS5zbGljZSgxKS5qb2luKCcuJylcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiB1bmRlZmluZWQpXG4gICAgfTtcbiAgfTtcblxuY29uc3QgY29uZmlnTW9kZWxXaXRoTG9ncyA9XG4gIChkYXRhOiBJQmxhbmtOb2RlTG9nIHwgSU5vbkJsYW5rTm9kZUxvZyB8IElCbGFua05vZGVMb2dTdWJWYWx1ZSwgbG9nczogSU5vZGVUZXJtTG9ncywgcHJldmlvdXNNb2RlbFN1Y2Nlc3MgPSBmYWxzZSkgPT5cbiAgKG1vZGVsOiBJQ29uZmlnTW9kZWwpID0+IHtcbiAgICBjb25zdCBzdGF0dXMgPSBsb2dTdGF0dXMoZGF0YSwgbG9ncz8uW21vZGVsLm1ldGhvZElkXSwgcHJldmlvdXNNb2RlbFN1Y2Nlc3MpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIGxvZ3M6IGxvZ3M/Llttb2RlbC5tZXRob2RJZF0sXG4gICAgICBzdGF0dXMsXG4gICAgICBzaG93TG9nczogaGFzTG9nRGV0YWlscyhzdGF0dXMsIGxvZ3M/Llttb2RlbC5tZXRob2RJZF0pXG4gICAgfSBhcyBJQ29uZmlnTW9kZWw7XG4gIH07XG5cbi8qKlxuICogSGFuZGxlIGhpZXJhcmNoeSBza2lwIGlmIGEgbW9kZWwgYmVmb3JlIHN1Y2NlZWRlZC5cbiAqXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIGluZGV4XG4gKi9cbmNvbnN0IGhhc1ByZXZpb3VzTW9kZWxTdWNjZXNzID0gKG1vZGVsczogKElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdKVtdLCBpbmRleCA9IDApID0+XG4gIGZpbHRlckNvbmZpZ01vZGVscyhtb2RlbHNbaW5kZXhdLCBrZWVwQ29uZmlnTW9kZWxCeVN0YXR1cyhMb2dTdGF0dXMuc3VjY2VzcykpLmxlbmd0aCA+IDAgfHxcbiAgKGluZGV4IDw9IG1vZGVscy5sZW5ndGggJiYgaGFzUHJldmlvdXNNb2RlbFN1Y2Nlc3MobW9kZWxzLCBpbmRleCArIDEpKTtcblxuY29uc3QgZGF0YVdpdGhDb25maWdNb2RlbExvZ3MgPVxuICAobG9nczogSU5vZGVMb2dzIHwgSU5vZGVUZXJtTG9ncykgPT5cbiAgPFQgZXh0ZW5kcyBJQmxhbmtOb2RlTG9nIHwgSU5vbkJsYW5rTm9kZUxvZyB8IElCbGFua05vZGVMb2dTdWJWYWx1ZT4oZGF0YTogVCkgPT4ge1xuICAgIGNvbnN0IHN1YkxvZ0tleSA9IGRhdGEuYmxhbmtOb2RlID8gc3ViVmFsdWVMb2dLZXkoZGF0YSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpIDogbnVsbDtcbiAgICBjb25zdCBsb2cgPSBzdWJMb2dLZXkgPyBsb2dzW3N1YkxvZ0tleV0gOiBsb2dzO1xuICAgIGNvbnN0IGNvbmZpZ01vZGVsczogKElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdKVtdID0gW107XG5cbiAgICAvLyBnbyB0aHJvdWdoIG1vZGVscyBvbmUgYnkgb25lIHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBuZXh0IG1vZGVscyBpbiBoaWVyYXJjaHkgaGF2ZSBmYWlsZWRcbiAgICBmb3IgKGNvbnN0IGluZGV4IGluIGRhdGEuY29uZmlnTW9kZWxzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEuY29uZmlnTW9kZWxzLCBpbmRleCkpIHtcbiAgICAgICAgY29uc3QgbW9kZWwgPSBkYXRhLmNvbmZpZ01vZGVsc1tpbmRleF07XG4gICAgICAgIGNvbnN0IHByZXZpb3VzTW9kZWxTdWNjZXNzID0gK2luZGV4ID4gMCAmJiBoYXNQcmV2aW91c01vZGVsU3VjY2Vzcyhjb25maWdNb2RlbHMpO1xuICAgICAgICBjb25zdCBuZXdNb2RlbCA9IEFycmF5LmlzQXJyYXkobW9kZWwpXG4gICAgICAgICAgPyBtb2RlbC5tYXAoY29uZmlnTW9kZWxXaXRoTG9ncyhkYXRhLCBsb2csIHByZXZpb3VzTW9kZWxTdWNjZXNzKSlcbiAgICAgICAgICA6IGNvbmZpZ01vZGVsV2l0aExvZ3MoZGF0YSwgbG9nLCBwcmV2aW91c01vZGVsU3VjY2VzcykobW9kZWwpO1xuICAgICAgICBjb25maWdNb2RlbHMucHVzaChuZXdNb2RlbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICBjb25maWdNb2RlbHM6IGZpbHRlckNvbmZpZ01vZGVscyhcbiAgICAgICAgY29uZmlnTW9kZWxzLFxuICAgICAgICAobW9kZWw6IElDb25maWdNb2RlbCkgPT5cbiAgICAgICAgICAhW0xvZ1N0YXR1cy5ub3RSZXF1aXJlZF0uaW5jbHVkZXMobW9kZWw/LnN0YXR1cykgfHwgbm90UmVsZXZhbnRNb2RlbHMuaW5jbHVkZXMobW9kZWwubWV0aG9kSWQpXG4gICAgICApXG4gICAgfSBhcyBUO1xuICB9O1xuXG4vKipcbiAqIEdyb3VwIG1vZGVscyBydW5uaW5nIGluIHBhcmFsbGVsIHVuZGVyIHRoZSBzYW1lIGFycmF5LCBhcyB0aGV5IHNob3VsZCBhcHBlYXIgdmVydGljYWxseS5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uLlxuICogQHBhcmFtIG1vZGVscyBUaGUgbGlzdCBvZiBtb2RlbHNcbiAqL1xuY29uc3QgZ3JvdXBQYXJhbGxlbE1vZGVscyA9IChcbiAgY29uZmlnOiBJT3JjaGVzdHJhdG9yQ29uZmlnLFxuICB0ZXJtSWQ6IHN0cmluZyxcbiAgbW9kZWxLZXk6IGJsYW5rTm9kZXNLZXksXG4gIG1vZGVsczogSUNvbmZpZ01vZGVsW11cbikgPT4ge1xuICBjb25zdCBtb2RlbHNXaXRoT3JkZXIgPSBtb2RlbHMubWFwKG1vZGVsID0+ICh7XG4gICAgbW9kZWw6IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgY29uZmlnOiBtb2RlbENvbmZpZyhjb25maWcubW9kZWxzLCB0ZXJtSWQsIG1vZGVsS2V5LCBtb2RlbC5tZXRob2RJZClcbiAgICB9LFxuICAgIG9yZGVyOiBtb2RlbENvbmZpZ09yZGVyKGNvbmZpZy5tb2RlbHMsIHRlcm1JZCwgbW9kZWxLZXksIG1vZGVsLm1ldGhvZElkKVxuICB9KSk7XG4gIHJldHVybiBtb2RlbHNXaXRoT3JkZXJcbiAgICAucmVkdWNlKChwcmV2LCB7IG1vZGVsLCBvcmRlciB9KSA9PiB7XG4gICAgICBjb25zdCBpc0FycmF5ID0gb3JkZXIuaW5jbHVkZXMoJy4nKTtcbiAgICAgIGNvbnN0IGluZGV4ID0gaXNBcnJheSA/IG9yZGVyLnNwbGl0KCcuJylbMF0gOiBvcmRlciB8fCBwcmV2Lmxlbmd0aDtcbiAgICAgIHByZXZbaW5kZXhdID0gaXNBcnJheSA/IFsuLi4ocHJldltpbmRleF0gfHwgW10pLCBtb2RlbF0gOiBbbW9kZWxdO1xuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgW10gYXMgSUNvbmZpZ01vZGVsW11bXSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLm1hcCh2ID0+ICh2Lmxlbmd0aCA9PT0gMSA/IHZbMF0gOiB2KSk7XG59O1xuXG5jb25zdCBhbGxQYXJhbGxlbCA9IChtb2RlbHM6IChJQ29uZmlnTW9kZWwgfCBJQ29uZmlnTW9kZWxbXSlbXSkgPT5cbiAgbW9kZWxzLmxlbmd0aCA9PT0gMSAmJiBBcnJheS5pc0FycmF5KG1vZGVsc1swXSkgJiYgbW9kZWxzWzBdLmxlbmd0aCA+IDE7XG5cbmNvbnN0IGJsYW5rTm9kZU1vZGVsSWQgPSAodmFsdWU6IGJsYW5rTm9kZXNUeXBlVmFsdWUpID0+XG4gIHZhbHVlWydAdHlwZSddID09PSBTY2hlbWFUeXBlLk1lYXN1cmVtZW50XG4gICAgPyAodmFsdWUgYXMgTWVhc3VyZW1lbnQpLm1ldGhvZD8uWydAaWQnXVxuICAgIDogKHZhbHVlIGFzIGFueSkubWV0aG9kTW9kZWw/LlsnQGlkJ107XG5cbmNvbnN0IHZhbHVlQnlNZXRob2RJZCA9ICh2YWx1ZXM6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXSwgbWV0aG9kSWQ6IHN0cmluZywgdGVybUlkOiBzdHJpbmcpID0+XG4gIHByb3BlcnR5VmFsdWUodmFsdWVzLmZpbmQodiA9PiBibGFua05vZGVNb2RlbElkKHYpID09PSBtZXRob2RJZCk/LnZhbHVlIGFzIG51bWJlcltdLCB0ZXJtSWQpO1xuXG5jb25zdCBncm91cFBhcmFsbGVsVmFsdWVzID0gKHZhbHVlczogYmxhbmtOb2Rlc1R5cGVWYWx1ZVtdLCBtb2RlbHM6IElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdLCB0ZXJtSWQ6IHN0cmluZykgPT5cbiAgQXJyYXkuaXNBcnJheShtb2RlbHMpXG4gICAgPyBPYmplY3QuZnJvbUVudHJpZXMobW9kZWxzLm1hcChtb2RlbCA9PiBbbW9kZWwubWV0aG9kSWQsIHZhbHVlQnlNZXRob2RJZCh2YWx1ZXMsIG1vZGVsLm1ldGhvZElkLCB0ZXJtSWQpXSkpXG4gICAgOiB7fTtcblxuZXhwb3J0IGNvbnN0IGdyb3VwTG9nc0J5VGVybSA9IChcbiAgbm9kZVR5cGU6IE5vZGVUeXBlLFxuICBsb2dzOiBJTm9kZUxvZ3MsXG4gIG1vZGVsczogSU1vZGVsW10sXG4gIGNvbmZpZzogSU9yY2hlc3RyYXRvckNvbmZpZyxcbiAgYWxsT3JpZ2luYWxWYWx1ZXM6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXSxcbiAgYWxsUmVjYWxjdWxhdGVkVmFsdWVzOiBibGFua05vZGVzVHlwZVZhbHVlW10sXG4gIG5vZGVLZXk6IGJsYW5rTm9kZXNLZXlcbikgPT4ge1xuICBjb25zdCBvcmlnaW5hbFZhbHVlcyA9IGZpbHRlckRlbGV0ZWQoYWxsT3JpZ2luYWxWYWx1ZXMgfHwgW10pO1xuICBjb25zdCByZWNhbGN1bGF0ZWRWYWx1ZXMgPSBmaWx0ZXJEZWxldGVkKGFsbFJlY2FsY3VsYXRlZFZhbHVlcyB8fCBbXSkuZmlsdGVyKGhhc1JlY2FsY3VsYXRlZEtleXMpO1xuICBjb25zdCB0eXBlOiBTY2hlbWFUeXBlID0gb3JpZ2luYWxWYWx1ZXMubGVuZ3RoXG4gICAgPyBvcmlnaW5hbFZhbHVlc1swXVsnQHR5cGUnXSB8fCBvcmlnaW5hbFZhbHVlc1swXS50eXBlXG4gICAgOiByZWNhbGN1bGF0ZWRWYWx1ZXMubGVuZ3RoXG4gICAgICA/IHJlY2FsY3VsYXRlZFZhbHVlc1swXVsnQHR5cGUnXSB8fCByZWNhbGN1bGF0ZWRWYWx1ZXNbMF0udHlwZVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuICh0ZXJtOiBJVGVybUpTT05MRCk6IElCbGFua05vZGVMb2cgPT4ge1xuICAgIGNvbnN0IHRlcm1JZCA9IHRlcm1bJ0BpZCddO1xuICAgIGNvbnN0IHRlcm1UeXBlID0gdGVybS50ZXJtVHlwZTtcbiAgICBjb25zdCB0ZXJtTG9ncyA9IGdldChsb2dzLCB0ZXJtSWQsIHt9KSBhcyBJTm9kZVRlcm1Mb2dzO1xuICAgIGNvbnN0IG9yaWdpbmFsID0gb3JpZ2luYWxWYWx1ZXMuZmlsdGVyKHYgPT4gdGVybUlkID09PSB2LnRlcm0hWydAaWQnXSk7XG4gICAgY29uc3QgcmVjYWxjdWxhdGVkID0gcmVjYWxjdWxhdGVkVmFsdWVzLmZpbHRlcih2ID0+IHRlcm1JZCA9PT0gdi50ZXJtIVsnQGlkJ10pO1xuICAgIGNvbnN0IGhhc0RhdGEgPSAhIW9yaWdpbmFsLmxlbmd0aCB8fCAhIXJlY2FsY3VsYXRlZC5sZW5ndGggfHwgT2JqZWN0LmtleXModGVybUxvZ3MpLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgY29uZmlnTW9kZWxzRGF0YSA9IHsgbm9kZVR5cGUsIHR5cGUsIHRlcm1JZCwgdGVybVR5cGUgfTtcbiAgICBjb25zdCBjb25maWdNb2RlbHMgPSBncm91cFBhcmFsbGVsTW9kZWxzKFxuICAgICAgY29uZmlnLFxuICAgICAgdGVybUlkLFxuICAgICAgbm9kZUtleSEsXG4gICAgICB1bmlxdWUoW1xuICAgICAgICAvLyByZW1vdmUgY29tcGxldGVuZXNzIGFzIHNob3VsZCBiZSB1c2luZyBgZ3JvdXBkTG9nc0J5S2V5YFxuICAgICAgICAuLi4odGVybUxvZ3MubW9kZWxzIHx8IFtdKS5maWx0ZXIoaXNNb2RlbExvZyh0ZXJtTG9ncywgdHlwZSkpLmZpbHRlcih2ID0+ICFpc05vbk5vZGVNb2RlbEtleSh2KSlcbiAgICAgICAgLy8gLi4uZmluZENvbmZpZ01vZGVscyhjb25maWcsIHRlcm1JZCwgbm9kZUtleSEsIG1vZGVscykubWFwKCh7IG1vZGVsIH0pID0+IG1vZGVsIGFzIHN0cmluZylcbiAgICAgIF0pLm1hcChjb25maWdNb2RlbFdpdGhEb2NzKG1vZGVscywgY29uZmlnTW9kZWxzRGF0YSkpXG4gICAgKTtcblxuICAgIGNvbnN0IGtleXMgPSBsb2dLZXlzKHRlcm1Mb2dzLCBvcmlnaW5hbCwgcmVjYWxjdWxhdGVkLCBtb2RlbHMsIGNvbmZpZ01vZGVsc0RhdGEpO1xuICAgIGNvbnN0IHN1YlZhbHVlcyA9IGxvZ1N1YlZhbHVlcyhsb2dzLCB0ZXJtTG9ncywgb3JpZ2luYWwsIHJlY2FsY3VsYXRlZCwgbW9kZWxzLCBjb25maWdNb2RlbHNEYXRhKTtcbiAgICBjb25zdCBpc1JlcXVpcmVkID0gIU9iamVjdC52YWx1ZXModGVybUxvZ3MpXG4gICAgICAuZmlsdGVyKHYgPT4gdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHYpICYmICF2LmlzS2V5KVxuICAgICAgLmV2ZXJ5KHYgPT4gdi5ydW5SZXF1aXJlZCA9PT0gZmFsc2UpO1xuXG4gICAgY29uc3Qgbm9kZUxvZzogSUJsYW5rTm9kZUxvZyA9IGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzKHRlcm1Mb2dzKSh7XG4gICAgICBibGFua05vZGU6IHRydWUsXG4gICAgICBpc09wZW46IHRydWUsXG4gICAgICBjYW5PcGVuOiBrZXlzLmxlbmd0aCA+IDAgfHwgc3ViVmFsdWVzLmxlbmd0aCA+IDAsXG4gICAgICB0ZXJtSWQsXG4gICAgICB0ZXJtLFxuICAgICAgdHlwZSxcbiAgICAgIGNvbmZpZ01vZGVscyxcbiAgICAgIG9yaWdpbmFsLFxuICAgICAgb3JpZ2luYWxWYWx1ZTogcmVkdWNlVmFsdWVzKG9yaWdpbmFsLCB0ZXJtSWQpLFxuICAgICAgcmVjYWxjdWxhdGVkLFxuICAgICAgcmVjYWxjdWxhdGVkVmFsdWU6IHJlZHVjZVZhbHVlcyhyZWNhbGN1bGF0ZWQsIHRlcm1JZCksXG4gICAgICBpc09yaWdpbmFsOiAhIW9yaWdpbmFsLmxlbmd0aCxcbiAgICAgIGlzUmVjYWxjdWxhdGVkOiBoYXNSZWNhbGN1bGF0ZWRWYWx1ZShyZWNhbGN1bGF0ZWQpLFxuICAgICAgaGFzRGF0YSxcbiAgICAgIGlzUmVxdWlyZWQsXG4gICAgICBsb2dzOiB0ZXJtTG9ncyxcbiAgICAgIGtleXMsXG4gICAgICBzdWJWYWx1ZXMsXG4gICAgICBhbGxQYXJhbGxlbDogYWxsUGFyYWxsZWwoY29uZmlnTW9kZWxzKSxcbiAgICAgIG9yaWdpbmFsVmFsdWVCeU1ldGhvZElkOiBncm91cFBhcmFsbGVsVmFsdWVzKG9yaWdpbmFsLCBjb25maWdNb2RlbHNbMF0sIHRlcm1JZCksXG4gICAgICByZWNhbGN1bGF0ZWRWYWx1ZUJ5TWV0aG9kSWQ6IGdyb3VwUGFyYWxsZWxWYWx1ZXMocmVjYWxjdWxhdGVkLCBjb25maWdNb2RlbHNbMF0sIHRlcm1JZClcbiAgICB9KTtcbiAgICBjb25zdCBzdWJWYWx1ZSA9IGN5Y2xlU3ViVmFsdWUobm9kZUxvZyk7XG5cbiAgICByZXR1cm4gc3ViVmFsdWUgJiYgc3ViVmFsdWVzPy5sZW5ndGhcbiAgICAgID8ge1xuICAgICAgICAgIC4uLm5vZGVMb2csXG4gICAgICAgICAgbW9kZWxzSW5TdWJWYWx1ZXM6IHRydWUsXG4gICAgICAgICAgc3ViVmFsdWVzOiBbc3ViVmFsdWUsIC4uLnN1YlZhbHVlc11cbiAgICAgICAgfSAvLyBpZiB3ZSBpbmNsdWRlIHRoZSBDeWNsZSB2YWx1ZSwgaXQgYmVjb21lcyB0aGUgbWFpbiByZWZlcmVuY2Ugb2YgdGhlIG1vZGVsc1xuICAgICAgOiBub2RlTG9nO1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdyb3VwZExvZ3NCeUtleSA9IChcbiAgbm9kZVR5cGU6IE5vZGVUeXBlLFxuICBub2RlS2V5OiBub25CbGFua05vZGVzS2V5LFxuICBsb2dzOiBJTm9kZUxvZ3MsXG4gIG1vZGVsczogSU1vZGVsW10sXG4gIG9yaWdpbmFsVmFsdWU/OiBub25CbGFua05vZGVzVHlwZVZhbHVlLFxuICByZWNhbGN1bGF0ZWRWYWx1ZT86IG5vbkJsYW5rTm9kZXNUeXBlVmFsdWVcbikgPT4ge1xuICBjb25zdCB0eXBlOiBTY2hlbWFUeXBlID1cbiAgICBvcmlnaW5hbFZhbHVlPy5bJ0B0eXBlJ10gfHwgb3JpZ2luYWxWYWx1ZT8udHlwZSB8fCByZWNhbGN1bGF0ZWRWYWx1ZT8uWydAdHlwZSddIHx8IHJlY2FsY3VsYXRlZFZhbHVlPy50eXBlO1xuXG4gIHJldHVybiAoa2V5OiBzdHJpbmcpOiBJTm9uQmxhbmtOb2RlTG9nID0+IHtcbiAgICBjb25zdCBrZXlMb2dzID0gZ2V0KGxvZ3MsIGtleSwge30pIGFzIElOb2RlVGVybUxvZ3M7XG4gICAgY29uc3Qgb3JpZ2luYWwgPSBvcmlnaW5hbFZhbHVlPy5ba2V5XTtcbiAgICBjb25zdCByZWNhbGN1bGF0ZWQgPSByZWNhbGN1bGF0ZWRWYWx1ZT8uW2tleV07XG4gICAgY29uc3QgaGFzRGF0YSA9ICEhb3JpZ2luYWwgfHwgISFyZWNhbGN1bGF0ZWQgfHwgT2JqZWN0LmtleXMoa2V5TG9ncykubGVuZ3RoID4gMDtcbiAgICBjb25zdCBjb25maWdNb2RlbHNEYXRhID0geyBub2RlVHlwZSwgdHlwZSwga2V5IH07XG4gICAgY29uc3QgY29uZmlnTW9kZWxzID0gdW5pcXVlKFtcbiAgICAgIC4uLihrZXlMb2dzLm1vZGVscyB8fCBbXSkuZmlsdGVyKGlzTW9kZWxMb2coa2V5TG9ncywgdHlwZSkpLmZpbHRlcih2ID0+IHYgPT09IG5vZGVLZXkpXG4gICAgXSkubWFwKGNvbmZpZ01vZGVsV2l0aERvY3MobW9kZWxzLCBjb25maWdNb2RlbHNEYXRhKSk7XG4gICAgY29uc3QgaXNSZXF1aXJlZCA9ICFPYmplY3QudmFsdWVzKGtleUxvZ3MpXG4gICAgICAuZmlsdGVyKHYgPT4gdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHYpICYmICF2LmlzS2V5KVxuICAgICAgLmV2ZXJ5KHYgPT4gdi5ydW5SZXF1aXJlZCA9PT0gZmFsc2UpO1xuXG4gICAgcmV0dXJuIGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzKGtleUxvZ3MpKHtcbiAgICAgIGJsYW5rTm9kZTogZmFsc2UsXG4gICAgICBpc09wZW46IHRydWUsXG4gICAgICBjYW5PcGVuOiBmYWxzZSxcbiAgICAgIGtleSxcbiAgICAgIHR5cGUsXG4gICAgICBjb25maWdNb2RlbHMsXG4gICAgICBvcmlnaW5hbFZhbHVlOiBvcmlnaW5hbCxcbiAgICAgIHJlY2FsY3VsYXRlZFZhbHVlOiByZWNhbGN1bGF0ZWQsXG4gICAgICBpc09yaWdpbmFsOiAhaXNVbmRlZmluZWQob3JpZ2luYWwpLFxuICAgICAgaXNSZWNhbGN1bGF0ZWQ6IGlzUmVjYWxjdWxhdGVkKGtleSkocmVjYWxjdWxhdGVkVmFsdWUpLFxuICAgICAgaGFzRGF0YSxcbiAgICAgIGlzUmVxdWlyZWQsXG4gICAgICBsb2dzOiBrZXlMb2dzLFxuICAgICAgYWxsUGFyYWxsZWw6IGZhbHNlXG4gICAgfSk7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgbW9kZWxDb3VudCA9IChibGFua05vZGVMb2dzOiBJQmxhbmtOb2RlTG9nW10pID0+XG4gIE1hdGgubWF4LmFwcGx5KE1hdGgubWF4LCBbXG4gICAgMCxcbiAgICAuLi5ibGFua05vZGVMb2dzLmZsYXRNYXAodiA9PiBbXG4gICAgICB2LmNvbmZpZ01vZGVscy5sZW5ndGgsXG4gICAgICAuLi52LnN1YlZhbHVlcy5tYXAocyA9PiBzLmNvbmZpZ01vZGVscz8ubGVuZ3RoIHx8IDApLFxuICAgICAgLi4udi5rZXlzLm1hcChzID0+IHMuY29uZmlnTW9kZWxzPy5sZW5ndGggfHwgMClcbiAgICBdKVxuICBdKTtcblxuZXhwb3J0IGNvbnN0IGxvZ1ZhbHVlQXJyYXkgPSAodmFsdWU6IHN0cmluZyk6IGFueVtdID0+XG4gIFsnOycsICc6J10uc29tZSh2ID0+IHZhbHVlLmluY2x1ZGVzKHYpKVxuICAgID8gdmFsdWUuc3BsaXQoJzsnKS5mbGF0TWFwKHYgPT4ge1xuICAgICAgICBjb25zdCByZXMgPSB2LnNwbGl0KCdfJykubWFwKHZ2ID0+IHZ2LnNwbGl0KCc6JykpO1xuICAgICAgICByZXR1cm4gcmVzLmxlbmd0aCA8PSAxID8gcmVzLmZsYXQoKSA6IE9iamVjdC5mcm9tRW50cmllcyhyZXMpO1xuICAgICAgfSlcbiAgICA6IG51bGw7XG4iXX0=
622
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1sb2dzLW1vZGVscy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ub2RlL25vZGUtbG9ncy1tb2RlbHMvbm9kZS1sb2dzLW1vZGVscy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25FLE9BQU8sRUFFTCxrQkFBa0IsRUFLbEIsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBU1gsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBcUIsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDO0FBQzdCLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUVuQyxPQUFPLEVBR0wsVUFBVSxFQUVWLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsY0FBYyxFQUNmLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBMENyRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFckYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUU5QyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFD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aXNhYmxlIGNvbXBsZXhpdHkgKi9cbmltcG9ydCB7IGZpbGVUb0V4dCwgU3VwcG9ydGVkRXh0ZW5zaW9ucyB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7XG4gIEVtaXNzaW9uLFxuICBFbWlzc2lvbk1ldGhvZFRpZXIsXG4gIElUZXJtSlNPTkxELFxuICBQcm9kdWN0LFxuICBJbnB1dCBhcyBIZXN0aWFJbnB1dCxcbiAgTm9kZVR5cGUsXG4gIFRlcm1UZXJtVHlwZSxcbiAgU2NoZW1hVHlwZSxcbiAgaXNUeXBlTm9kZSxcbiAgTWVhc3VyZW1lbnQsXG4gIG5vbkJsYW5rTm9kZXNUeXBlLFxuICBibGFua05vZGVzVHlwZSxcbiAgYmxhbmtOb2Rlc0tleSxcbiAgbm9uQmxhbmtOb2Rlc0tleSxcbiAgSW5mcmFzdHJ1Y3R1cmUsXG4gIEJpYmxpb2dyYXBoeSxcbiAgVHJhbnNmb3JtYXRpb25cbn0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdW5pcXVlLCBpc1VuZGVmaW5lZCwgaXNFbXB0eSwgaXNOdW1iZXIgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcbmltcG9ydCB7IHByb3BlcnR5VmFsdWUsIHByb3BlcnR5VmFsdWVUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscy9kaXN0L3Rlcm0nO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoLnNldCc7XG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC51bmlxYnknO1xuXG5pbXBvcnQge1xuICBJT3JjaGVzdHJhdG9yQ29uZmlnLFxuICBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcsXG4gIGZpbmRNb2RlbHMsXG4gIElNb2RlbCxcbiAgZmluZE1hdGNoaW5nTW9kZWwsXG4gIG1vZGVsUGFyYW1zLFxuICBtb2RlbEtleVBhcmFtc1xufSBmcm9tICcuLi8uLi9lbmdpbmUvZW5naW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNWYWxpZEtleSB9IGZyb20gJy4uLy4uL2NvbW1vbi9ub2RlLXV0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZU1pc3NpbmdMb29rdXBMb2cge1xuICBmaWxlbmFtZTogc3RyaW5nO1xuICB0ZXJtSWQ6IHN0cmluZztcbiAgY29sdW1uOiBzdHJpbmc7XG4gIC8vIGF0dHJpYnV0ZXMgbGlua2VkIHRvIHRoZSBtb2RlbHNcbiAgbW9kZWw/OiBzdHJpbmc7XG4gIHRlcm0/OiBzdHJpbmc7XG4gIGtleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZVRlcm1Mb2cge1xuICBydW5SZXF1aXJlZD86IGJvb2xlYW47XG4gIHNob3VsZFJ1bj86IGJvb2xlYW47XG4gIHNob3VsZFJ1bk9yY2hlc3RyYXRvcj86IGJvb2xlYW47XG4gIHNob3VsZE1lcmdlPzogYm9vbGVhbjtcbiAgcmVwbGFjZUxvd2VyVGllcj86IGJvb2xlYW47XG4gIHJlcGxhY2VUaHJlc2hvbGQ/OiBib29sZWFuO1xuICBtaXNzaW5nTG9va3Vwcz86IElOb2RlTWlzc2luZ0xvb2t1cExvZ1tdO1xuICByZXF1aXJlbWVudHM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICBsb2dzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgW2tleTogc3RyaW5nXTogYW55O1xuICAvLyBwb3NzaWJsZSBzdWIgdmFsdWVzXG4gIGlucHV0Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gIHByb3BlcnR5Pzogc3RyaW5nIHwgc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVUZXJtTG9ncyB7XG4gIFttb2RlbEtleTogc3RyaW5nXTogYW55IHwgSU5vZGVUZXJtTG9nO1xuICBtb2RlbHM6IHN0cmluZ1tdO1xuICBpc0tleT86IGJvb2xlYW47XG4gIGlzUHJvcGVydHk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlTG9ncyB7XG4gIFt0ZXJtOiBzdHJpbmddOiBJTm9kZVRlcm1Mb2dzO1xufVxuXG5leHBvcnQgdHlwZSBibGFua05vZGVzVHlwZVZhbHVlID0gRXhjbHVkZTxibGFua05vZGVzVHlwZSwgSW5mcmFzdHJ1Y3R1cmUgfCBUcmFuc2Zvcm1hdGlvbj47XG5leHBvcnQgdHlwZSBub25CbGFua05vZGVzVHlwZVZhbHVlID0gRXhjbHVkZTxub25CbGFua05vZGVzVHlwZSwgQmlibGlvZ3JhcGh5PjtcblxuZXhwb3J0IGNvbnN0IGlzTm9uTm9kZU1vZGVsS2V5ID0gKHZhbHVlOiBzdHJpbmcpID0+IFsnY29tcGxldGVuZXNzJ10uaW5jbHVkZXModmFsdWUpO1xuXG5jb25zdCB0ZXJtVHlwZXMgPSBPYmplY3QudmFsdWVzKFRlcm1UZXJtVHlwZSk7XG5cbmNvbnN0IGJsYW5rTm9kZVR5cGVzID0gT2JqZWN0LnZhbHVlcyhTY2hlbWFUeXBlKS5maWx0ZXIodCA9PiAhaXNUeXBlTm9kZSh0KSk7XG5cbmNvbnN0IHNjaGVtYVR5cGVzTG93ZXJDYXNlID0gT2JqZWN0LnZhbHVlcyhTY2hlbWFUeXBlKS5tYXAodiA9PiB2LnRvTG93ZXJDYXNlKCkpO1xuXG5jb25zdCBibGFua05vZGVUeXBlc0xvd2VyQ2FzZSA9IGJsYW5rTm9kZVR5cGVzLm1hcCh2ID0+IHYudG9Mb3dlckNhc2UoKSk7XG5cbmNvbnN0IG1pc3NpbmdMb29rdXBQcmVmaXggPSAnTWlzc2luZyBsb29rdXAnO1xuXG5jb25zdCBub1ZhbHVlID0gJ05vbmUnO1xuXG4vLyBhZGQgYW55IG90aGVyIG1vZGVscyB0aGF0IGFyZSBzZXQgYXMgXCJub3QgcmVsZXZhbnRcIlxuY29uc3Qgbm90UmVsZXZhbnRNb2RlbHMgPSBbJ2VtaXNzaW9uTm90UmVsZXZhbnQnXTtcblxuY29uc3QgaGFzVmFsdWUgPSAodmFsdWU/OiBzdHJpbmcpID0+ICEhdmFsdWUgJiYgdmFsdWUgIT09IG5vVmFsdWU7XG5cbmNvbnN0IHBhcnNlRmlsZW5hbWUgPSAoZmlsZXBhdGg6IHN0cmluZykgPT4ge1xuICBjb25zdCBbZmlsZW5hbWVdID0gZmlsZXBhdGguc3BsaXQoJy4nKTtcbiAgY29uc3QgZXh0ID0gdGVybVR5cGVzLmluY2x1ZGVzKGZpbGVuYW1lIGFzIGFueSkgPyBTdXBwb3J0ZWRFeHRlbnNpb25zLnhsc3ggOiBTdXBwb3J0ZWRFeHRlbnNpb25zLmNzdjtcbiAgcmV0dXJuIGZpbGVUb0V4dChmaWxlbmFtZSwgZXh0KTtcbn07XG5cbmNvbnN0IHBhcnNlTG9va3VwID0gKHsgY29sdW1uLCB0ZXJtaWQsIFttaXNzaW5nTG9va3VwUHJlZml4XTogbWlzc2luZ0xvb2t1cCB9KSA9PiAoe1xuICBmaWxlbmFtZTogcGFyc2VGaWxlbmFtZShtaXNzaW5nTG9va3VwKSxcbiAgdGVybUlkOiB0ZXJtaWQsXG4gIGNvbHVtblxufSk7XG5cbmNvbnN0IGNzdlZhbHVlID0gKHZhbHVlOiBzdHJpbmcpID0+ICh2YWx1ZSB8fCAnJykucmVwbGFjZSgnWycsICcnKS5yZXBsYWNlKCddJywgJycpO1xuXG5jb25zdCBwYXJzZU1lc3NhZ2UgPSAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UobWVzc2FnZSk7XG4gICAgcmV0dXJuIGRhdGEubWVzc2FnZS5zcGxpdCgnLCcpLnJlZHVjZShcbiAgICAgIChwcmV2LCBwYXJ0cykgPT4ge1xuICAgICAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBwYXJ0cy5zcGxpdCgnPScpO1xuICAgICAgICBjb25zdCB2YWwgPSBjc3ZWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAuLi4oa2V5ICYmIHZhbCA/IHsgW2tleS50cmltKCldOiB2YWwgfSA6IHt9KVxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIHsgbG9nZ2VyOiBkYXRhLmxvZ2dlciB9XG4gICAgKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gbWFrZSBzdXJlIGl0IHdvcmtzIGV2ZW4gaWYgb25lIGxvZyBpcyBtYWxmb3JtZWRcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmNvbnN0IHBhcnNlTG9nTXVsdGlwbGVWYWx1ZSA9ICh2YWx1ZXM6IHN0cmluZ1tdW10pID0+XG4gIHZhbHVlc1xuICAgIC5tYXAodiA9PiAodi5maWx0ZXIoQm9vbGVhbikubGVuZ3RoID09PSAyID8gdi5qb2luKCc6JykgOiBudWxsKSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLmpvaW4oJ18nKTtcblxuY29uc3QgcGFyc2VMb2cgPSAobG9nOiBhbnkpID0+XG4gIFsndmFsdWUnIGluIGxvZywgJ2NvZWZmaWNpZW50JyBpbiBsb2csICdub2RlJyBpbiBsb2cgfHwgJ29wZXJhdGlvbicgaW4gbG9nXS5ldmVyeShCb29sZWFuKVxuICAgID8ge1xuICAgICAgICBbbG9nLm5vZGUgfHwgbG9nLm9wZXJhdGlvbl06IHBhcnNlTG9nTXVsdGlwbGVWYWx1ZShbXG4gICAgICAgICAgWyd2YWx1ZScsIGxvZy52YWx1ZV0sXG4gICAgICAgICAgWydjb2VmZmljaWVudCcsIGxvZy5jb2VmZmljaWVudF0sXG4gICAgICAgICAgWydvcGVyYXRpb24nLCAhbG9nLm5vZGUgPyBsb2cub3BlcmF0aW9uIDogbnVsbF1cbiAgICAgICAgXSlcbiAgICAgIH1cbiAgICA6IG9taXRMb2dLZXlzKGxvZyk7XG5cbmNvbnN0IG9taXRMb2dLZXlzID0gKGxvZzogYW55LCAuLi5rZXlzOiBzdHJpbmdbXSkgPT5cbiAgT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGxvZykuZmlsdGVyKChba2V5XSkgPT4gIXNjaGVtYVR5cGVzTG93ZXJDYXNlLmluY2x1ZGVzKGtleSkgJiYgIWtleXMuaW5jbHVkZXMoa2V5KSkpO1xuXG5jb25zdCBpbmNsdWRlQmxhbmtOb2RlcyA9IChsb2dzLCBsb2cpID0+XG4gIE9iamVjdC5rZXlzKGxvZylcbiAgICAuZmlsdGVyKGtleSA9PiBibGFua05vZGVUeXBlc0xvd2VyQ2FzZS5pbmNsdWRlcyhrZXkpKVxuICAgIC5yZWR1Y2UoXG4gICAgICAocHJldiwga2V5KSA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBba2V5XTogdW5pcXVlKFsuLi4oKHR5cGVvZiBwcmV2W2tleV0gPT09ICdzdHJpbmcnID8gW3ByZXZba2V5XV0gOiBwcmV2W2tleV0pIHx8IFtdKSwgbG9nW2tleV1dKVxuICAgICAgfSksXG4gICAgICBsb2dzXG4gICAgKTtcblxuY29uc3QgZ3JvdXBMb2cgPSAoXG4gIGdyb3VwLFxuICB7IGxvZ2dlciwgdGVybSwgbW9kZWwsIGtleSwgc2hvdWxkX3J1biwgc2hvdWxkX21lcmdlLCBydW5fcmVxdWlyZWQsIHByb3BlcnR5LCAuLi5sb2cgfTogYW55XG4pID0+IHtcbiAgY29uc3QgaXNPcmNoZXN0cmF0b3IgPSBsb2dnZXIuaW5jbHVkZXMoJ29yY2hlc3RyYXRvcicpO1xuICBjb25zdCBpc0tleSA9ICFpc09yY2hlc3RyYXRvciAmJiAhIWtleTtcbiAgY29uc3QgaXNQcm9wZXJ0eSA9ICFpc09yY2hlc3RyYXRvciAmJiAhIXByb3BlcnR5O1xuICBjb25zdCBwYXJlbnRMb2dLZXkgPSBbaGFzVmFsdWUodGVybSkgJiYgYFtcIiR7dGVybX1cIl1gLCAoIWlzT3JjaGVzdHJhdG9yICYmIGtleSkgfHwgcHJvcGVydHldXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5qb2luKCcuJyk7XG4gIGNvbnN0IGxvZ01vZGVsS2V5ID0gW3BhcmVudExvZ0tleSwgaGFzVmFsdWUobW9kZWwpICYmIG1vZGVsXS5maWx0ZXIoQm9vbGVhbikuam9pbignLicpO1xuXG4gIHNldChncm91cCwgYCR7cGFyZW50TG9nS2V5fS5tb2RlbHNgLCB1bmlxdWUoWy4uLmdldChncm91cCwgYCR7cGFyZW50TG9nS2V5fS5tb2RlbHNgLCBbXSksIG1vZGVsXSkpO1xuICBzZXQoZ3JvdXAsIGAke3BhcmVudExvZ0tleX0uaXNLZXlgLCBpc0tleSk7XG4gIHNldChncm91cCwgYCR7cGFyZW50TG9nS2V5fS5pc1Byb3BlcnR5YCwgaXNQcm9wZXJ0eSk7XG5cbiAgbGV0IGRhdGEgPSBnZXQoZ3JvdXAsIGxvZ01vZGVsS2V5LCB7fSk7XG5cbiAgZGF0YSA9IGluY2x1ZGVCbGFua05vZGVzKGRhdGEsIGxvZyk7XG5cbiAgaWYgKHR5cGVvZiBzaG91bGRfcnVuICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnN0IHNob3VsZFJ1biA9IHNob3VsZF9ydW4gPT09ICdUcnVlJztcblxuICAgIGRhdGEgPSBpc09yY2hlc3RyYXRvclxuICAgICAgPyB7XG4gICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAuLi5vbWl0TG9nS2V5cyhsb2csICd2YWx1ZScpLFxuICAgICAgICAgIHNob3VsZFJ1bk9yY2hlc3RyYXRvcjogc2hvdWxkUnVuXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgLi4ub21pdExvZ0tleXMobG9nKSxcbiAgICAgICAgICBzaG91bGRSdW5cbiAgICAgICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcnVuX3JlcXVpcmVkICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnN0IHJ1blJlcXVpcmVkID0gcnVuX3JlcXVpcmVkID09PSAnVHJ1ZSc7XG5cbiAgICBkYXRhID0ge1xuICAgICAgLi4uZGF0YSxcbiAgICAgIC4uLihydW5SZXF1aXJlZCA/IHt9IDogb21pdExvZ0tleXMobG9nKSksIC8vIG5vIG5lZWQgdG8gc2F2ZSBsb2dzIGlmIHdlIG5lZWQgdG8gcnVuIHRoZSBtb2RlbFxuICAgICAgcnVuUmVxdWlyZWRcbiAgICB9O1xuICB9IGVsc2UgaWYgKCdyZXF1aXJlbWVudHMnIGluIGxvZykge1xuICAgIGNvbnN0IHsgcmVxdWlyZW1lbnRzLCAuLi5sb2dEYXRhIH0gPSBsb2c7XG5cbiAgICBkYXRhLnJlcXVpcmVtZW50cyA9IHtcbiAgICAgIC4uLihkYXRhLnJlcXVpcmVtZW50cyB8fCB7fSksXG4gICAgICAuLi5sb2dEYXRhXG4gICAgfTtcbiAgfSBlbHNlIGlmIChtaXNzaW5nTG9va3VwUHJlZml4IGluIGxvZykge1xuICAgIGRhdGEubWlzc2luZ0xvb2t1cHMgPSB1bmlxdWUoWy4uLihkYXRhLm1pc3NpbmdMb29rdXBzIHx8IFtdKSwgcGFyc2VMb29rdXAobG9nKV0pO1xuICB9IGVsc2UgaWYgKCFpc09yY2hlc3RyYXRvcikge1xuICAgIGRhdGEubG9ncyA9IHtcbiAgICAgIC4uLihkYXRhLmxvZ3MgfHwge30pLFxuICAgICAgLi4ucGFyc2VMb2cobG9nKVxuICAgIH07XG4gIH1cbiAgaWYgKHR5cGVvZiBzaG91bGRfbWVyZ2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgZGF0YS5zaG91bGRNZXJnZSA9IHNob3VsZF9tZXJnZSA9PT0gJ1RydWUnO1xuICB9XG4gIGlmICh0eXBlb2YgbG9nLnJlcGxhY2VMb3dlclRpZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgZGF0YS5yZXBsYWNlTG93ZXJUaWVyID0gbG9nLnJlcGxhY2VMb3dlclRpZXIgPT09ICdUcnVlJztcbiAgfVxuICBpZiAodHlwZW9mIGxvZy5yZXBsYWNlVGhyZXNob2xkICE9PSAndW5kZWZpbmVkJykge1xuICAgIGRhdGEucmVwbGFjZVRocmVzaG9sZCA9IGxvZy5yZXBsYWNlVGhyZXNob2xkID09PSAnVHJ1ZSc7XG4gIH1cblxuICBzZXQoZ3JvdXAsIGxvZ01vZGVsS2V5LCBkYXRhKTtcbiAgcmV0dXJuIGdyb3VwO1xufTtcblxuY29uc3Qgc3ViVmFsdWVLZXlzID0gWyd0cmFuc2Zvcm1hdGlvbicsICdhbmltYWwnXTtcblxuY29uc3QgZ3JvdXBMb2dTdWJWYWx1ZSA9IChncm91cCwgbG9nLCBrZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBpZCA9IGxvZ1trZXldO1xuICBjb25zdCBkYXRhID0gZ3JvdXBMb2coZ3JvdXBbaWRdIHx8IHt9LCBsb2cpO1xuICBncm91cFtpZF0gPSBkYXRhO1xuXG4gIGlmIChzdWJWYWx1ZUtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgIC8vIGFkZCB2YWx1ZSB0byB0aGUgc2FtZSB0ZXJtL21vZGVsIG9uIHBhcmVudCBncm91cFxuICAgIE9iamVjdC5lbnRyaWVzKGdyb3VwW2lkXSkubWFwKChbdGVybSwgbW9kZWxzXSkgPT5cbiAgICAgIE9iamVjdC5rZXlzKG1vZGVscykubWFwKG1vZGVsID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBncm91cD8uW3Rlcm1dPy5bbW9kZWxdID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGdyb3VwW3Rlcm1dW21vZGVsXVtrZXldID0gdW5pcXVlKFsuLi4oZ3JvdXBbdGVybV1bbW9kZWxdW2tleV0gfHwgW10pLCBpZF0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZ3JvdXA7XG59O1xuXG5leHBvcnQgY29uc3QgZ3JvdXBMb2dzQnlNb2RlbCA9IChkYXRhID0gJycpOiBJTm9kZUxvZ3MgPT5cbiAgZGF0YVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLm1hcChwYXJzZU1lc3NhZ2UpXG4gICAgLmZpbHRlcih2ID0+IFtoYXNWYWx1ZSh2Py5tb2RlbCksIGhhc1ZhbHVlKHY/LnRlcm0pIHx8IGhhc1ZhbHVlKHY/LmtleSldLmV2ZXJ5KEJvb2xlYW4pKVxuICAgIC5yZWR1Y2UoKGdyb3VwLCBsb2cpID0+IHtcbiAgICAgIGNvbnN0IHN1YlZhbHVlID0gc3ViVmFsdWVLZXlzLmZpbmQodiA9PiAhIWxvZ1t2XSk7XG4gICAgICByZXR1cm4gc3ViVmFsdWUgJiYgIWxvZy5jeWNsZSA/IGdyb3VwTG9nU3ViVmFsdWUoZ3JvdXAsIGxvZywgc3ViVmFsdWUpIDogZ3JvdXBMb2coZ3JvdXAsIGxvZyk7XG4gICAgfSwge30pO1xuXG5jb25zdCBhc0FycmF5ID0gKHZhbHVlczogYW55W10pID0+IChBcnJheS5pc0FycmF5KHZhbHVlcykgPyB2YWx1ZXMgOiBbXSk7XG5cbmV4cG9ydCBjb25zdCBjb21wdXRlVGVybXMgPSAoXG4gIG9yaWdpbmFsVmFsdWVzOiBibGFua05vZGVzVHlwZVZhbHVlW10sXG4gIHJlY2FsY3VsYXRlZFZhbHVlczogYmxhbmtOb2Rlc1R5cGVWYWx1ZVtdLFxuICB0ZXJtcz86IElUZXJtSlNPTkxEW10sXG4gIGZpbHRlclRlcm1UeXBlcz86IFRlcm1UZXJtVHlwZVtdLFxuICBleHRyYVRlcm1zOiBJVGVybUpTT05MRFtdID0gW11cbik6IElUZXJtSlNPTkxEW10gPT5cbiAgb3JkZXJCeShcbiAgICB1bmlxQnkoXG4gICAgICBbXG4gICAgICAgIC4uLih0ZXJtcz8ubGVuZ3RoXG4gICAgICAgICAgPyB0ZXJtc1xuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAuLi5hc0FycmF5KG9yaWdpbmFsVmFsdWVzKS5tYXAoKHsgdGVybSB9KSA9PiB0ZXJtKSxcbiAgICAgICAgICAgICAgLi4uYXNBcnJheShyZWNhbGN1bGF0ZWRWYWx1ZXMpLm1hcCgoeyB0ZXJtIH0pID0+IHRlcm0pXG4gICAgICAgICAgICBdLmZpbHRlcihub2RlID0+ICFmaWx0ZXJUZXJtVHlwZXM/Lmxlbmd0aCB8fCBmaWx0ZXJUZXJtVHlwZXMuaW5jbHVkZXMobm9kZS50ZXJtVHlwZSkpKSxcbiAgICAgICAgLi4uZXh0cmFUZXJtc1xuICAgICAgXSxcbiAgICAgICdAaWQnXG4gICAgKSxcbiAgICBbJ25hbWUnXSxcbiAgICBbJ2FzYyddXG4gICk7XG5cbmV4cG9ydCBjb25zdCBjb21wdXRlS2V5cyA9IChvcmlnaW5hbFZhbHVlczogbm9uQmxhbmtOb2Rlc1R5cGVWYWx1ZSwgcmVjYWxjdWxhdGVkVmFsdWVzOiBub25CbGFua05vZGVzVHlwZVZhbHVlKSA9PlxuICB1bmlxdWUoWy4uLk9iamVjdC5rZXlzKG9yaWdpbmFsVmFsdWVzIHx8IHt9KSwgLi4uT2JqZWN0LmtleXMocmVjYWxjdWxhdGVkVmFsdWVzIHx8IHt9KV0uZmlsdGVyKGlzVmFsaWRLZXkpKTtcblxuZXhwb3J0IGVudW0gTG9nU3RhdHVzIHtcbiAgc3VjY2VzcyA9ICdzdWNjZXNzZnVsJyxcbiAgZXJyb3IgPSAnZmFpbGVkJyxcbiAgc2tpcEhpZXJhcmNoeSA9ICdub3QgcnVuIChtb2RlbCBoaWdoZXIgdXAgaGllcmFyY2h5IHJ1biBpbnN0ZWFkKScsXG4gIGRhdGFQcm92aWRlZCA9ICdub3QgcnVuICh1c2VyIHByb3ZpZGVkIGRhdGEgcmV0YWluZWQpJyxcbiAgbm90UmVxdWlyZWQgPSAnbm90IHJlbGV2YW50J1xufVxuXG5jb25zdCBoYXNMb2dzID0gKGxvZ3M/OiBJTm9kZVRlcm1Mb2cpID0+ICEhbG9ncz8ucmVxdWlyZW1lbnRzIHx8ICEhbG9ncz8ubG9ncyB8fCBsb2dzPy5taXNzaW5nTG9va3Vwcz8ubGVuZ3RoID4gMDtcblxuY29uc3QgaGFzTG9nRGV0YWlscyA9IChzdGF0dXM6IExvZ1N0YXR1cywgbG9ncz86IElOb2RlVGVybUxvZykgPT5cbiAgW0xvZ1N0YXR1cy5zdWNjZXNzLCBMb2dTdGF0dXMuZXJyb3IsIExvZ1N0YXR1cy5kYXRhUHJvdmlkZWRdLmluY2x1ZGVzKHN0YXR1cykgJiYgaGFzTG9ncyhsb2dzKTtcblxuY29uc3QgbG9nU3RhdHVzID0gKFxuICBkYXRhOiBJQmxhbmtOb2RlTG9nU3ViVmFsdWUgfCBJQmxhbmtOb2RlTG9nIHwgSU5vbkJsYW5rTm9kZUxvZyxcbiAgbG9ncz86IElOb2RlVGVybUxvZyxcbiAgaGFzUHJldmlvdXNTdWNjZXNzID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCB3aXRoTG9ncyA9IGhhc0xvZyhsb2dzKTtcbiAgY29uc3QgaXNDYWxjdWxhdGVkID0gW1xuICAgIHR5cGVvZiBkYXRhLm9yaWdpbmFsVmFsdWUgPT09ICd1bmRlZmluZWQnLCAvLyBubyBvcmlnaW5hbCB2YWx1ZVxuICAgIGRhdGEuaXNSZWNhbGN1bGF0ZWQgLy8gaXMgcmVjYWxjdWxhdGVkXG4gIF0uZXZlcnkoQm9vbGVhbik7XG4gIC8vIGNhbiBiZSBub3QgcmVxdWlyZWQgZm9yIGEgc3BlY2lmaWMgbW9kZWxcbiAgY29uc3QgaXNSZXF1aXJlZCA9ICEhbG9ncyAmJiAncnVuUmVxdWlyZWQnIGluIGxvZ3MgPyBsb2dzLnJ1blJlcXVpcmVkIDogZGF0YS5pc1JlcXVpcmVkO1xuICByZXR1cm4gd2l0aExvZ3NcbiAgICA/ICFpc1JlcXVpcmVkXG4gICAgICA/IExvZ1N0YXR1cy5ub3RSZXF1aXJlZFxuICAgICAgOiBpc1J1bk9yY2hlc3RyYXRvcihsb2dzKVxuICAgICAgICA/ICdzaG91bGRSdW4nIGluIGxvZ3NcbiAgICAgICAgICA/IGxvZ3Muc2hvdWxkUnVuXG4gICAgICAgICAgICA/IGRhdGEuaXNSZWNhbGN1bGF0ZWRcbiAgICAgICAgICAgICAgPyBMb2dTdGF0dXMuc3VjY2Vzc1xuICAgICAgICAgICAgICA6IGlzRW1wdHkoZGF0YS5vcmlnaW5hbFZhbHVlKVxuICAgICAgICAgICAgICAgID8gTG9nU3RhdHVzLmVycm9yXG4gICAgICAgICAgICAgICAgOiBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkXG4gICAgICAgICAgICA6IGhhc1ByZXZpb3VzU3VjY2Vzc1xuICAgICAgICAgICAgICA/IExvZ1N0YXR1cy5za2lwSGllcmFyY2h5XG4gICAgICAgICAgICAgIDogTG9nU3RhdHVzLmVycm9yXG4gICAgICAgICAgOiBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkXG4gICAgICAgIDogZGF0YS5pc1JlY2FsY3VsYXRlZFxuICAgICAgICAgID8gTG9nU3RhdHVzLnNraXBIaWVyYXJjaHlcbiAgICAgICAgICA6IExvZ1N0YXR1cy5kYXRhUHJvdmlkZWRcbiAgICA6IGlzQ2FsY3VsYXRlZFxuICAgICAgPyBMb2dTdGF0dXMuc2tpcEhpZXJhcmNoeVxuICAgICAgOiBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnTW9kZWwge1xuICBtZXRob2RJZDogc3RyaW5nO1xuICBsb2dzPzogSU5vZGVUZXJtTG9nO1xuICBzaG93TG9ncz86IGJvb2xlYW47XG4gIHN0YXR1cz86IExvZ1N0YXR1cztcbiAgbW9kZWw/OiBJTW9kZWw7XG4gIGNvbmZpZz86IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQmxhbmtOb2RlTG9nU3ViVmFsdWUge1xuICBibGFua05vZGU6IHRydWU7XG4gIGtleTogc3RyaW5nO1xuICBzaG93VW5pdHM6IGJvb2xlYW47XG4gIG9yaWdpbmFsVmFsdWU6IHByb3BlcnR5VmFsdWVUeXBlO1xuICByZWNhbGN1bGF0ZWRWYWx1ZTogcHJvcGVydHlWYWx1ZVR5cGU7XG4gIGlzUmVjYWxjdWxhdGVkOiBib29sZWFuO1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgaWQ/OiBzdHJpbmc7XG4gIGNvbmZpZ01vZGVscz86IElDb25maWdNb2RlbFtdO1xuICBsb2dzPzogSU5vZGVUZXJtTG9ncztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTG9nIHtcbiAgbG9ncz86IElOb2RlVGVybUxvZ3M7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgY2FuT3BlbjogYm9vbGVhbjtcbiAgdHlwZT86IFNjaGVtYVR5cGU7XG4gIGNvbmZpZ01vZGVsczogKElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdKVtdO1xuICBvcmlnaW5hbFZhbHVlOiBwcm9wZXJ0eVZhbHVlVHlwZTtcbiAgcmVjYWxjdWxhdGVkVmFsdWU6IHByb3BlcnR5VmFsdWVUeXBlO1xuICBpc09yaWdpbmFsOiBib29sZWFuO1xuICBpc1JlY2FsY3VsYXRlZDogYm9vbGVhbjtcbiAgaGFzRGF0YTogYm9vbGVhbjtcbiAgaXNSZXF1aXJlZDogYm9vbGVhbjtcbiAgLy8gY29udGFpbnMgbXVsdGlwbGUgbW9kZWxzIGFsbCBydW5uaW5nIGluIHBhcmFsbGVsXG4gIGFsbFBhcmFsbGVsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQmxhbmtOb2RlTG9nIGV4dGVuZHMgSUxvZyB7XG4gIGJsYW5rTm9kZTogdHJ1ZTtcbiAgdGVybTogSVRlcm1KU09OTEQ7XG4gIHRlcm1JZDogc3RyaW5nO1xuICBrZXlzOiBJQmxhbmtOb2RlTG9nU3ViVmFsdWVbXTtcbiAgc3ViVmFsdWVzOiBJQmxhbmtOb2RlTG9nU3ViVmFsdWVbXTtcbiAgLy8gbW9kZWxzIGFyZSBwcmVzZW50IGFzIHdlbGwgaW4gb25lIG9mIHRoZSBTdWJWYWx1ZXMsIGRvIG5vdCBzaG93IHR3aWNlXG4gIG1vZGVsc0luU3ViVmFsdWVzPzogYm9vbGVhbjtcbiAgb3JpZ2luYWw6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXTtcbiAgLy8gd2hlbiBtdWx0aXBsZSBtb2RlbHMgYXJlIHJ1bm5pbmcgaW4gcGFyYWxsZWxcbiAgb3JpZ2luYWxWYWx1ZUJ5TWV0aG9kSWQ/OiB7XG4gICAgW21ldGhvZElkOiBzdHJpbmddOiBwcm9wZXJ0eVZhbHVlVHlwZTtcbiAgfTtcbiAgcmVjYWxjdWxhdGVkOiBibGFua05vZGVzVHlwZVZhbHVlW107XG4gIC8vIHdoZW4gbXVsdGlwbGUgbW9kZWxzIGFyZSBydW5uaW5nIGluIHBhcmFsbGVsXG4gIHJlY2FsY3VsYXRlZFZhbHVlQnlNZXRob2RJZD86IHtcbiAgICBbbWV0aG9kSWQ6IHN0cmluZ106IHByb3BlcnR5VmFsdWVUeXBlO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOb25CbGFua05vZGVMb2cgZXh0ZW5kcyBJTG9nIHtcbiAgYmxhbmtOb2RlOiBmYWxzZTtcbiAga2V5OiBzdHJpbmc7XG59XG5cbmNvbnN0IHJlbW92ZUNvbmZpZ01vZGVsQnlTdGF0dXMgPVxuICAoLi4uc3RhdHVzZXM6IExvZ1N0YXR1c1tdKSA9PlxuICAobW9kZWw6IElDb25maWdNb2RlbCkgPT5cbiAgICAhc3RhdHVzZXMuaW5jbHVkZXMobW9kZWw/LnN0YXR1cyk7XG5cbmNvbnN0IGtlZXBDb25maWdNb2RlbEJ5U3RhdHVzID1cbiAgKC4uLnN0YXR1c2VzOiBMb2dTdGF0dXNbXSkgPT5cbiAgKG1vZGVsOiBJQ29uZmlnTW9kZWwpID0+XG4gICAgc3RhdHVzZXMuaW5jbHVkZXMobW9kZWw/LnN0YXR1cyk7XG5cbmNvbnN0IGZpbHRlckNvbmZpZ01vZGVscyA9IChcbiAgbW9kZWxzOiBJQ29uZmlnTW9kZWwgfCAoSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10pW10sXG4gIGZpbHRlckZ1bmM6IChtb2RlbDogSUNvbmZpZ01vZGVsKSA9PiBib29sZWFuXG4pID0+XG4gIChBcnJheS5pc0FycmF5KG1vZGVscykgPyBtb2RlbHMgOiBbbW9kZWxzXSlcbiAgICAuZmlsdGVyKHYgPT4gQXJyYXkuaXNBcnJheSh2KSB8fCBmaWx0ZXJGdW5jKHYpKVxuICAgIC5tYXAodiA9PiAoQXJyYXkuaXNBcnJheSh2KSA/IHYuZmlsdGVyKGZpbHRlckZ1bmMpIDogdikpXG4gICAgLmZpbHRlcih2ID0+IChBcnJheS5pc0FycmF5KHYpID8gdj8ubGVuZ3RoIDogISF2KSk7XG5cbmludGVyZmFjZSBJUGFydGlhbFN1YlZhbHVlIHtcbiAgYmxhbmtOb2RlPzogYm9vbGVhbjtcbiAgaWQ/OiBzdHJpbmc7XG4gIGtleTogc3RyaW5nO1xuICBjb25maWdNb2RlbHM6IHN0cmluZ1tdO1xuICBzaG93VW5pdHM6IGJvb2xlYW47XG4gIG9yaWdpbmFsVmFsdWU/OiBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuO1xuICByZWNhbGN1bGF0ZWRWYWx1ZT86IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW47XG59XG5cbmNvbnN0IG1lcmdlU3ViVmFsdWVzID0gKHZhbHVlczogSVBhcnRpYWxTdWJWYWx1ZVtdKSA9PlxuICBPYmplY3QudmFsdWVzKFxuICAgIHZhbHVlcy5yZWR1Y2UoXG4gICAgICAocHJldiwgeyBpZCwga2V5LCBjb25maWdNb2RlbHMsIC4uLmRhdGEgfSkgPT4ge1xuICAgICAgICBjb25zdCB1bmlxdWVLZXkgPSBba2V5LCBpZF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy4nKTtcbiAgICAgICAgcHJldlt1bmlxdWVLZXldID0ge1xuICAgICAgICAgIC4uLk9iamVjdC5hc3NpZ24oe30sIHByZXZbdW5pcXVlS2V5XSwgZGF0YSksXG4gICAgICAgICAgaWQsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIGNvbmZpZ01vZGVsczogdW5pcXVlKFsuLi4oKHByZXZbdW5pcXVlS2V5XSB8fCB7fSkuY29uZmlnTW9kZWxzIHx8IFtdKSwgLi4uKGNvbmZpZ01vZGVscyB8fCBbXSldKVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgIH0sXG4gICAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IElQYXJ0aWFsU3ViVmFsdWUgfVxuICAgIClcbiAgKTtcblxuY29uc3QgcmVkdWNlVmFsdWVzID0gKHZhbHVlczogYmxhbmtOb2Rlc1R5cGVWYWx1ZVtdLCB0ZXJtSWQ6IHN0cmluZykgPT4ge1xuICBjb25zdCBwcm9wZXJ0eVZhbHVlcyA9IHZhbHVlc1xuICAgIC5tYXAoKHsgdmFsdWUgfSkgPT4gcHJvcGVydHlWYWx1ZSh2YWx1ZSwgdGVybUlkKSlcbiAgICAvLyBwcm9wZXJ0eVZhbHVlIG1heSByZXR1cm4gbnVsbCBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWQsIHRoZXJlZm9yZSByZW1vdmUgdGhlbSBmcm9tIHRvdGFsXG4gICAgLmZpbHRlcih2ID0+IHYgIT09IG51bGwpO1xuICByZXR1cm4gcHJvcGVydHlWYWx1ZXMubGVuZ3RoID8gcHJvcGVydHlWYWx1ZShwcm9wZXJ0eVZhbHVlcywgdGVybUlkKSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGlzUnVuT3JjaGVzdHJhdG9yID0gKGxvZzogSU5vZGVUZXJtTG9nKSA9PiAhKCdzaG91bGRSdW5PcmNoZXN0cmF0b3InIGluIGxvZykgfHwgbG9nLnNob3VsZFJ1bk9yY2hlc3RyYXRvcjtcblxuY29uc3QgaGFzTG9nID0gKGxvZzogSU5vZGVUZXJtTG9nLCB3aXRoT3JjaGVzdHJhdG9yID0gdHJ1ZSkgPT5cbiAgISFsb2cgJiYgKCdzaG91bGRSdW4nIGluIGxvZyB8fCAncnVuUmVxdWlyZWQnIGluIGxvZyB8fCAod2l0aE9yY2hlc3RyYXRvciAmJiAnc2hvdWxkUnVuT3JjaGVzdHJhdG9yJyBpbiBsb2cpKTtcblxuY29uc3QgaXNSZWNhbGN1bGF0ZWQgPSAoa2V5OiBzdHJpbmcpID0+ICh2YWx1ZTogYmxhbmtOb2Rlc1R5cGVWYWx1ZSB8IG5vbkJsYW5rTm9kZXNUeXBlVmFsdWUpID0+XG4gIFsuLi4odmFsdWUuYWRkZWQgfHwgW10pLCAuLi4odmFsdWUudXBkYXRlZCB8fCBbXSldLmluY2x1ZGVzKGtleSk7XG5cbmNvbnN0IGhhc1JlY2FsY3VsYXRlZEtleXMgPSAodmFsdWU6IGJsYW5rTm9kZXNUeXBlVmFsdWUgfCBub25CbGFua05vZGVzVHlwZVZhbHVlKSA9PlxuICBbLi4uKHZhbHVlLmFkZGVkIHx8IFtdKSwgLi4uKHZhbHVlLnVwZGF0ZWQgfHwgW10pXS5sZW5ndGggPiAwO1xuXG5jb25zdCBoYXNSZWNhbGN1bGF0ZWRWYWx1ZSA9ICh2YWx1ZXM6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXSwga2V5ID0gJ3ZhbHVlJykgPT4gdmFsdWVzLnNvbWUoaXNSZWNhbGN1bGF0ZWQoa2V5KSk7XG5cbmNvbnN0IGZpbHRlckRlbGV0ZWQgPSAoYmxhbmtOb2RlczogYmxhbmtOb2Rlc1R5cGVWYWx1ZVtdKSA9PlxuICAoYmxhbmtOb2RlcyB8fCBbXSkuZmlsdGVyKHZhbHVlID0+ICEodmFsdWUgYXMgYW55KS5kZWxldGVkKTtcblxuY29uc3QgYmxhbmtOb2RlVmFsdWVCeUtleToge1xuICBba2V5OiBzdHJpbmddOiAodmFsdWVzOiBibGFua05vZGVzVHlwZVZhbHVlW10sIGtleT86IHN0cmluZywgaWQ/OiBzdHJpbmcpID0+IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW47XG59ID0ge1xuICBwcm9wZXJ0eTogKHZhbHVlczogKEVtaXNzaW9uIHwgUHJvZHVjdCB8IEhlc3RpYUlucHV0KVtdLCBfaywgaWQpID0+XG4gICAgISFpZCAmJiB2YWx1ZXM/Lmxlbmd0aCA/ICh2YWx1ZXNbMF0ucHJvcGVydGllcyB8fCBbXSkuZmluZChwID0+IHAudGVybVsnQGlkJ10gPT09IGlkKT8udmFsdWUgfHwgJycgOiAnJyxcbiAgaW5wdXQ6ICh2YWx1ZXM6IEVtaXNzaW9uW10sIF9rLCBpZCkgPT5cbiAgICAhIWlkICYmICh2YWx1ZXMgfHwgW10pLmZpbHRlcih2ID0+IHZbJ0B0eXBlJ10gPT09IFNjaGVtYVR5cGUuRW1pc3Npb24pLmxlbmd0aFxuICAgICAgPyByZWR1Y2VWYWx1ZXMoXG4gICAgICAgICAgdmFsdWVzLmZpbHRlcigoeyBpbnB1dHMgfSkgPT4gKGlucHV0cyB8fCBbXSkuc29tZShpbnB1dCA9PiBpbnB1dFsnQGlkJ10gPT09IGlkKSksXG4gICAgICAgICAgaWRcbiAgICAgICAgKVxuICAgICAgOiAnJyxcbiAgdHJhbnNmb3JtYXRpb246ICh2YWx1ZXM6IEVtaXNzaW9uW10sIF9rLCBpZCkgPT5cbiAgICB2YWx1ZXMubGVuZ3RoXG4gICAgICA/IHJlZHVjZVZhbHVlcyhcbiAgICAgICAgICB2YWx1ZXMuZmlsdGVyKCh7IHRyYW5zZm9ybWF0aW9uIH0pID0+IHRyYW5zZm9ybWF0aW9uPy5bJ0BpZCddID09PSBpZCksXG4gICAgICAgICAgaWRcbiAgICAgICAgKVxuICAgICAgOiAnJyxcbiAgZGVmYXVsdDogKGJsYW5rTm9kZXMsIGtleSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gYmxhbmtOb2Rlcz8ubGVuZ3RoID8gYmxhbmtOb2Rlc1swXVtrZXldIDogbnVsbDtcbiAgICByZXR1cm4gWydzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nLCAndW5kZWZpbmVkJ10uaW5jbHVkZXModHlwZW9mIHZhbHVlKVxuICAgICAgPyBpc1VuZGVmaW5lZCh2YWx1ZSlcbiAgICAgICAgPyAnJ1xuICAgICAgICA6IHZhbHVlXG4gICAgICA6IEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubGVuZ3RoID4gMVxuICAgICAgICAgID8gdmFsdWUuam9pbignOycpXG4gICAgICAgICAgOiB2YWx1ZVswXVxuICAgICAgICA6IG51bGw7XG4gIH1cbn07XG5cbmNvbnN0IGJsYW5rTm9kZVZhbHVlID0gKGJsYW5rTm9kZXM6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXSwga2V5OiBzdHJpbmcsIGlkPzogc3RyaW5nKSA9PlxuICBibGFua05vZGVWYWx1ZUJ5S2V5W2tleSBpbiBibGFua05vZGVWYWx1ZUJ5S2V5ID8ga2V5IDogJ2RlZmF1bHQnXShibGFua05vZGVzLCBrZXksIGlkKTtcblxuY29uc3Qgc3ViVmFsdWVMb2dLZXkgPSAoeyBrZXksIGlkIH06IElCbGFua05vZGVMb2dTdWJWYWx1ZSk6IHN0cmluZyA9PlxuICBzdWJWYWx1ZUtleXMuaW5jbHVkZXMoa2V5KSA/IGtleSA6IGlkIHx8IGtleSB8fCBudWxsO1xuXG5jb25zdCBpbnB1dFZhbHVlID0gKHsgdmFsdWUsIGNvZWZmaWNpZW50IH06IGFueSA9IHt9KSA9PlxuICBbdmFsdWUsIGNvZWZmaWNpZW50XS5ldmVyeShpc051bWJlcikgPyArdmFsdWUgKiArY29lZmZpY2llbnQgOiB1bmRlZmluZWQ7XG5cbmNvbnN0IGxvZ1N1YlZhbHVlID0gKGxvZ3M6IElOb2RlVGVybUxvZ3MsIGtleTogc3RyaW5nLCBwcm9wOiBzdHJpbmcsIHNob3dVbml0cyA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IGxvZyA9IGxvZ3Nba2V5XT8uW3Byb3BdO1xuICByZXR1cm4gbG9nXG4gICAgPyBBcnJheS5pc0FycmF5KGxvZylcbiAgICAgID8gKGxvZyBhcyBzdHJpbmdbXSkubWFwKFxuICAgICAgICAgIGlkID0+XG4gICAgICAgICAgICAoe1xuICAgICAgICAgICAgICBrZXk6IHByb3AsXG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBzaG93VW5pdHNcbiAgICAgICAgICAgICAgLy8gcmVjYWxjdWxhdGVkVmFsdWU6IGlucHV0VmFsdWUobG9nc1trZXldPy5sb2dzPy5baWRdKVxuICAgICAgICAgICAgfSkgYXMgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlXG4gICAgICAgIClcbiAgICAgIDogKHtcbiAgICAgICAgICBrZXk6IHByb3AsXG4gICAgICAgICAgaWQ6IGxvZyxcbiAgICAgICAgICBzaG93VW5pdHNcbiAgICAgICAgICAvLyByZWNhbGN1bGF0ZWRWYWx1ZTogaW5wdXRWYWx1ZShsb2dzW2tleV0/LmxvZ3M/Lltsb2ddKVxuICAgICAgICB9IGFzIElCbGFua05vZGVMb2dTdWJWYWx1ZSlcbiAgICA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGxvZ1Byb3BlcnRpZXMgPSAobm9kZXM6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXSwgbW9kZWxzOiBJTW9kZWxbXSkgPT5cbiAgbm9kZXNcbiAgICAuZmxhdE1hcChub2RlID0+ICgobm9kZSBhcyBhbnkpLnByb3BlcnRpZXMgfHwgW10pLm1hcCgoeyB0ZXJtIH0pID0+IHRlcm1bJ0BpZCddKSlcbiAgICAubWFwKFxuICAgICAgaWQgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICBrZXk6ICdwcm9wZXJ0eScsXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICBjb25maWdNb2RlbHM6IGZpbmRNb2RlbHMobW9kZWxzLCBpZCkubWFwKCh7IG1vZGVsIH0pID0+IG1vZGVsKVxuICAgICAgICB9KSBhcyBJUGFydGlhbFN1YlZhbHVlXG4gICAgKTtcblxuLyoqXG4gKiBJbmNsdWRlIHRyYW5zZm9ybWF0aW9uIG1vZGVsIChjb3B5IEVtaXNzaW9ucyBmcm9tIFRyYW5zZm9ybWF0aW9uIHRvIEN5Y2xlKSBhcyBzdWJWYWx1ZS5cbiAqXG4gKiBAcGFyYW0gZW1pc3Npb25zXG4gKiBAcmV0dXJuc1xuICovXG5jb25zdCBsb2dFbWlzc2lvblRyYW5zZm9ybWF0aW9ucyA9IChlbWlzc2lvbnM6IEVtaXNzaW9uW10pID0+XG4gIGVtaXNzaW9uc1xuICAgIC5maWx0ZXIoKHsgdHJhbnNmb3JtYXRpb24gfSkgPT4gISF0cmFuc2Zvcm1hdGlvbj8uWydAaWQnXSlcbiAgICAubWFwKFxuICAgICAgKHsgdHJhbnNmb3JtYXRpb24gfSkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICBpZDogdHJhbnNmb3JtYXRpb24/LlsnQGlkJ10sXG4gICAgICAgICAga2V5OiAndHJhbnNmb3JtYXRpb24nLFxuICAgICAgICAgIHNob3dVbml0czogdHJ1ZSxcbiAgICAgICAgICBjb25maWdNb2RlbHM6IFsnY3ljbGUvdHJhbnNmb3JtYXRpb24nXVxuICAgICAgICB9KSBhcyBJUGFydGlhbFN1YlZhbHVlXG4gICAgKTtcblxuY29uc3QgbG9nQmFja2dyb3VuZEVtaXNzaW9ucyA9IChsb2dzOiBJTm9kZVRlcm1Mb2dzKSA9PlxuICAobG9ncy5tb2RlbHMgfHwgW10pXG4gICAgLmZpbHRlcihtb2RlbCA9PiBsb2dzW21vZGVsXS5tZXRob2RUaWVyID09PSBFbWlzc2lvbk1ldGhvZFRpZXIuYmFja2dyb3VuZClcbiAgICAubWFwKFxuICAgICAgbW9kZWwgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICBibGFua05vZGU6IGZhbHNlLFxuICAgICAgICAgIGtleTogJ2JhY2tncm91bmREYXRhJyxcbiAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIGNvbmZpZ01vZGVsczogW21vZGVsXSxcbiAgICAgICAgICByZWNhbGN1bGF0ZWRWYWx1ZTogJy0nXG4gICAgICAgIH0pIGFzIElQYXJ0aWFsU3ViVmFsdWVcbiAgICApO1xuXG5jb25zdCBpbmNsdWRlQ3ljbGVTdWJWYWx1ZSA9IChzdWJWYWx1ZXM6IElCbGFua05vZGVMb2dTdWJWYWx1ZVtdKSA9PlxuICBzdWJWYWx1ZXMuc29tZSh2ID0+ICFbJ3Byb3BlcnR5JywgJ2JhY2tncm91bmREYXRhJ10uaW5jbHVkZXModi5rZXkpKTtcblxuY29uc3QgY3ljbGVTdWJWYWx1ZSA9ICh7IHRlcm1JZCwgY29uZmlnTW9kZWxzLCBpc1JlcXVpcmVkLCBzdWJWYWx1ZXMsIG9yaWdpbmFsLCByZWNhbGN1bGF0ZWQgfTogSUJsYW5rTm9kZUxvZykgPT4ge1xuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gcmVkdWNlVmFsdWVzKFxuICAgIG9yaWdpbmFsLmZpbHRlcigodjogYW55KSA9PiAhdi5pbnB1dHM/Lmxlbmd0aCAmJiAhdi50cmFuc2Zvcm1hdGlvbiksXG4gICAgdGVybUlkXG4gICk7XG4gIGNvbnN0IHJlY2FsY3VsYXRlZFZhbHVlcyA9IHJlY2FsY3VsYXRlZC5maWx0ZXIoKHY6IGFueSkgPT4gIXYuaW5wdXRzPy5sZW5ndGggJiYgIXYudHJhbnNmb3JtYXRpb24pO1xuICBjb25zdCByZWNhbGN1bGF0ZWRWYWx1ZSA9IHJlZHVjZVZhbHVlcyhyZWNhbGN1bGF0ZWRWYWx1ZXMsIHRlcm1JZCk7XG4gIHJldHVybiBpbmNsdWRlQ3ljbGVTdWJWYWx1ZShzdWJWYWx1ZXMpICYmICFpc0VtcHR5KHJlY2FsY3VsYXRlZFZhbHVlKVxuICAgID8gKHtcbiAgICAgICAgYmxhbmtOb2RlOiB0cnVlLFxuICAgICAgICBrZXk6ICdjeWNsZScsXG4gICAgICAgIHNob3dVbml0czogdHJ1ZSxcbiAgICAgICAgY29uZmlnTW9kZWxzLFxuICAgICAgICBpc1JlcXVpcmVkLFxuICAgICAgICBvcmlnaW5hbFZhbHVlLFxuICAgICAgICByZWNhbGN1bGF0ZWRWYWx1ZSxcbiAgICAgICAgaXNSZWNhbGN1bGF0ZWQ6IGhhc1JlY2FsY3VsYXRlZFZhbHVlKHJlY2FsY3VsYXRlZFZhbHVlcylcbiAgICAgIH0gYXMgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlKVxuICAgIDogbnVsbDtcbn07XG5cbmNvbnN0IGxvZ1N1YlZhbHVlcyA9IChcbiAgYWxsTG9nczogSU5vZGVMb2dzLFxuICBsb2dzOiBJTm9kZVRlcm1Mb2dzLFxuICBvcmlnaW5hbDogYmxhbmtOb2Rlc1R5cGVWYWx1ZVtdLFxuICByZWNhbGN1bGF0ZWQ6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXSxcbiAgbW9kZWxzOiBJTW9kZWxbXSxcbiAgeyBub2RlVHlwZSwgdHlwZSwgdGVybUlkIH06IElDb25maWdNb2RlbERvY3NEYXRhXG4pID0+XG4gIC8vIHByZXNlcnZlIG9yZGVyLCBhcyB0aGUgbGFzdCBvbmUgd2lsbCBzZXQgdGhlIHJ1biBzdGF0dXNcbiAgbWVyZ2VTdWJWYWx1ZXMoW1xuICAgIC4uLmxvZ1Byb3BlcnRpZXMob3JpZ2luYWwsIG1vZGVscyksXG4gICAgLy8gaW5jbHVkZSBwcm9wZXJ0aWVzXG4gICAgLi4uT2JqZWN0LmtleXMobG9ncylcbiAgICAgIC5maWx0ZXIoaWQgPT4gbG9nc1tpZF0uaXNQcm9wZXJ0eSlcbiAgICAgIC5tYXAoXG4gICAgICAgIGlkID0+XG4gICAgICAgICAgKHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAga2V5OiAncHJvcGVydHknLFxuICAgICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ01vZGVsczogKGxvZ3NbaWRdLm1vZGVscyB8fCBbXSkuZmlsdGVyKHYgPT4gaGFzTG9nKGxvZ3NbaWRdW3ZdKSlcbiAgICAgICAgICB9KSBhcyBJUGFydGlhbFN1YlZhbHVlXG4gICAgICApLFxuICAgIC4uLih0eXBlID09PSBTY2hlbWFUeXBlLkVtaXNzaW9uID8gbG9nRW1pc3Npb25UcmFuc2Zvcm1hdGlvbnMocmVjYWxjdWxhdGVkIGFzIEVtaXNzaW9uW10pIDogW10pLFxuICAgIC4uLih0eXBlID09PSBTY2hlbWFUeXBlLklucHV0ID8gbG9nQmFja2dyb3VuZEVtaXNzaW9ucyhsb2dzKSA6IFtdKSxcbiAgICAuLi5PYmplY3Qua2V5cyhsb2dzKS5mbGF0TWFwKGtleSA9PlxuICAgICAgW2xvZ1N1YlZhbHVlKGxvZ3MsIGtleSwgJ2lucHV0JywgdHJ1ZSksIGxvZ1N1YlZhbHVlKGxvZ3MsIGtleSwgJ3Byb3BlcnR5JyldXG4gICAgICAgIC5mbGF0KClcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAubWFwKHYgPT4gKHsgLi4udiwgY29uZmlnTW9kZWxzOiAodi5jb25maWdNb2RlbHMgYXMgYW55W10pIHx8IFtrZXldIH0pKVxuICAgICksXG4gICAgLi4ubG9nUHJvcGVydGllcyhyZWNhbGN1bGF0ZWQsIG1vZGVscylcbiAgXSlcbiAgICAubWFwKCh7IGtleSwgaWQsIHNob3dVbml0cywgY29uZmlnTW9kZWxzLCBvcmlnaW5hbFZhbHVlLCByZWNhbGN1bGF0ZWRWYWx1ZSwgYmxhbmtOb2RlIH0pID0+IHtcbiAgICAgIG9yaWdpbmFsVmFsdWUgPSBvcmlnaW5hbFZhbHVlIHx8IGJsYW5rTm9kZVZhbHVlKG9yaWdpbmFsLCBrZXksIGlkKTtcbiAgICAgIHJlY2FsY3VsYXRlZFZhbHVlID0gcmVjYWxjdWxhdGVkVmFsdWUgfHwgYmxhbmtOb2RlVmFsdWUocmVjYWxjdWxhdGVkLCBrZXksIGlkKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmxhbmtOb2RlOiB0eXBlb2YgYmxhbmtOb2RlID09PSAndW5kZWZpbmVkJyA/IHRydWUgOiBibGFua05vZGUsXG4gICAgICAgIGtleSxcbiAgICAgICAgaWQsXG4gICAgICAgIHNob3dVbml0cyxcbiAgICAgICAgY29uZmlnTW9kZWxzOiBjb25maWdNb2RlbHMubWFwKGNvbmZpZ01vZGVsV2l0aERvY3MobW9kZWxzLCB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQgfSwgeyBrZXksIGlkIH0gYXMgYW55KSksXG4gICAgICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgICAgIHJlY2FsY3VsYXRlZFZhbHVlLFxuICAgICAgICBpc1JlY2FsY3VsYXRlZDogIWlzVW5kZWZpbmVkKHJlY2FsY3VsYXRlZFZhbHVlKSAmJiByZWNhbGN1bGF0ZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSxcbiAgICAgICAgaXNSZXF1aXJlZDogdHJ1ZVxuICAgICAgfSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWU7XG4gICAgfSlcbiAgICAuZmlsdGVyKCh7IG9yaWdpbmFsVmFsdWUsIHJlY2FsY3VsYXRlZFZhbHVlLCBjb25maWdNb2RlbHMgfSkgPT5cbiAgICAgIFtvcmlnaW5hbFZhbHVlICE9PSAnJywgcmVjYWxjdWxhdGVkVmFsdWUgIT09ICcnLCAhIWNvbmZpZ01vZGVscz8ubGVuZ3RoXS5zb21lKEJvb2xlYW4pXG4gICAgKVxuICAgIC5tYXAodiA9PiAoWydpbnB1dCddLmluY2x1ZGVzKHYua2V5KSA/IGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzKGFsbExvZ3MpKHYpIDogZGF0YVdpdGhDb25maWdNb2RlbExvZ3MobG9ncykodikpKTtcblxuY29uc3QgbG9nS2V5cyA9IChcbiAgbG9nczogSU5vZGVUZXJtTG9ncyxcbiAgb3JpZ2luYWw6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXSxcbiAgcmVjYWxjdWxhdGVkOiBibGFua05vZGVzVHlwZVZhbHVlW10sXG4gIG1vZGVsczogSU1vZGVsW10sXG4gIHsgbm9kZVR5cGUsIHR5cGUsIHRlcm1JZCB9XG4pID0+XG4gIE9iamVjdC5rZXlzKGxvZ3MpXG4gICAgLmZpbHRlcihrZXkgPT4gbG9nc1trZXldLmlzS2V5ICYmICFzdWJWYWx1ZUtleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAubWFwKFxuICAgICAga2V5ID0+XG4gICAgICAgICh7XG4gICAgICAgICAgYmxhbmtOb2RlOiB0cnVlLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIGNvbmZpZ01vZGVsczogKGxvZ3Nba2V5XS5tb2RlbHMgfHwgW10pXG4gICAgICAgICAgICAubWFwKGNvbmZpZ01vZGVsV2l0aERvY3MobW9kZWxzLCB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQgfSwgeyBrZXkgfSBhcyBhbnkpKVxuICAgICAgICAgICAgLy8gb25seSB0YWtlIHRob3NlIHdlIGZvdW5kIGEgbWF0Y2hpbmcgbW9kZWwgKGF2b2lkIG1hdGNoaW5nIGtleSBvbiB3cm9uZyBub2RlIHR5cGUpXG4gICAgICAgICAgICAuZmlsdGVyKHYgPT4gISF2Lm1vZGVsKSxcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlOiBibGFua05vZGVWYWx1ZShvcmlnaW5hbCwga2V5KSxcbiAgICAgICAgICByZWNhbGN1bGF0ZWRWYWx1ZTogYmxhbmtOb2RlVmFsdWUocmVjYWxjdWxhdGVkLCBrZXkpLFxuICAgICAgICAgIGlzUmVjYWxjdWxhdGVkOiBoYXNSZWNhbGN1bGF0ZWRWYWx1ZShyZWNhbGN1bGF0ZWQsIGtleSksXG4gICAgICAgICAgaXNSZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9KSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWVcbiAgICApXG4gICAgLmZpbHRlcih2ID0+IHYuY29uZmlnTW9kZWxzLmxlbmd0aCA+IDApXG4gICAgLm1hcChkYXRhV2l0aENvbmZpZ01vZGVsTG9ncyhsb2dzKSk7XG5cbmNvbnN0IGlzTW9kZWxGb3JJbnB1dFByb2R1Y3QgPSAodHlwZTogU2NoZW1hVHlwZSwga2V5OiBzdHJpbmcpID0+XG4gIFtcbiAgICBrZXkgIT09ICdoZXN0aWFBZ2dyZWdhdGVkRGF0YScsXG4gICAgIWtleS5pbmNsdWRlcygnL2lucHV0LycpIHx8IHR5cGUgPT09IFNjaGVtYVR5cGUuSW5wdXQsXG4gICAgIWtleS5pbmNsdWRlcygnL3Byb2R1Y3QvJykgfHwgdHlwZSA9PT0gU2NoZW1hVHlwZS5Qcm9kdWN0XG4gIF0uZXZlcnkoQm9vbGVhbik7XG5cbmNvbnN0IGlzQmFja2dyb3VuZElucHV0ID0gKGxvZzogSU5vZGVUZXJtTG9nKSA9PlxuICBsb2cubWV0aG9kVGllciA9PT0gRW1pc3Npb25NZXRob2RUaWVyLmJhY2tncm91bmQgJiYgISFsb2cuaW5wdXQgJiYgbG9nLnNob3VsZFJ1bjtcblxuY29uc3QgaXNNb2RlbExvZyA9IChsb2dzOiBJTm9kZVRlcm1Mb2dzLCB0eXBlOiBTY2hlbWFUeXBlKSA9PiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbG9nID0gbG9nc1trZXldO1xuICByZXR1cm4gKFxuICAgICEhbG9nICYmXG4gICAgW1xuICAgICAgLy8gaGFuZGxlIFByb2R1Y3Qgc2FtZSBhcyBJbnB1dFxuICAgICAgaXNNb2RlbEZvcklucHV0UHJvZHVjdCh0eXBlLCBrZXkpLFxuICAgICAgbG9nLm1ldGhvZFRpZXIgIT09IEVtaXNzaW9uTWV0aG9kVGllci5iYWNrZ3JvdW5kLFxuICAgICAgIWxvZy5pc0tleSxcbiAgICAgIC8vICFsb2cuaW5wdXQsXG4gICAgICAhbG9nLnByb3BlcnR5XG4gICAgXS5ldmVyeShCb29sZWFuKSAmJlxuICAgIFsnc2hvdWxkUnVuJyBpbiBsb2csICdzaG91bGRSdW5PcmNoZXN0cmF0b3InIGluIGxvZywgJ3J1blJlcXVpcmVkJyBpbiBsb2ddLnNvbWUoQm9vbGVhbilcbiAgKTtcbn07XG5cbmNvbnN0IG1vZGVsQ29uZmlnTWF0Y2ggPSAodGVybUlkOiBzdHJpbmcsIG1vZGVsS2V5OiBzdHJpbmcsIG1vZGVsOiBzdHJpbmcpID0+IChjb25maWc6IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZykgPT5cbiAgW3Rlcm1JZCA9PT0gY29uZmlnLnZhbHVlLCBtb2RlbEtleSA9PT0gY29uZmlnLmtleSwgbW9kZWwgPT09IGNvbmZpZy5tb2RlbF0uZXZlcnkoQm9vbGVhbik7XG5cbmNvbnN0IG1vZGVsQ29uZmlnID0gKFxuICBtb2RlbHM6IChJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcgfCBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWdbXSlbXSxcbiAgdGVybUlkOiBzdHJpbmcsXG4gIG1vZGVsS2V5OiBzdHJpbmcsXG4gIG1vZGVsOiBzdHJpbmdcbikgPT4gbW9kZWxzLmZsYXQoKS5maW5kKG1vZGVsQ29uZmlnTWF0Y2godGVybUlkLCBtb2RlbEtleSwgbW9kZWwpKTtcblxuY29uc3QgbW9kZWxDb25maWdPcmRlciA9IChcbiAgbW9kZWxzOiAoSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnIHwgSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnW10pW10sXG4gIHRlcm1JZDogc3RyaW5nLFxuICBtb2RlbEtleTogc3RyaW5nLFxuICBtb2RlbDogc3RyaW5nXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBpbmRleGVzID0gbW9kZWxzXG4gICAgLm1hcCgobSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5SW5kZXggPSBBcnJheS5pc0FycmF5KG0pID8gbW9kZWxDb25maWdPcmRlcihtLCB0ZXJtSWQsIG1vZGVsS2V5LCBtb2RlbCkgOiAnJztcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KG0pXG4gICAgICAgID8gYXJyYXlJbmRleFxuICAgICAgICAgID8gW2luZGV4LCBhcnJheUluZGV4XS5qb2luKCcuJylcbiAgICAgICAgICA6ICcnXG4gICAgICAgIDogbW9kZWxDb25maWdNYXRjaCh0ZXJtSWQsIG1vZGVsS2V5LCBtb2RlbCkobSlcbiAgICAgICAgICA/IGAke2luZGV4fWBcbiAgICAgICAgICA6ICcnO1xuICAgIH0pXG4gICAgLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIGluZGV4ZXMubGVuZ3RoID8gaW5kZXhlc1swXSA6ICcnO1xufTtcblxuaW50ZXJmYWNlIElDb25maWdNb2RlbERvY3NEYXRhIHtcbiAgbm9kZVR5cGU6IE5vZGVUeXBlO1xuICB0eXBlOiBTY2hlbWFUeXBlO1xuICB0ZXJtSWQ/OiBzdHJpbmc7XG4gIHRlcm1UeXBlPzogVGVybVRlcm1UeXBlO1xuICBrZXk/OiBzdHJpbmc7XG59XG5cbmNvbnN0IGNvbmZpZ01vZGVsV2l0aERvY3MgPVxuICAoXG4gICAgbW9kZWxzOiBJTW9kZWxbXSxcbiAgICB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQsIHRlcm1UeXBlLCBrZXkgfTogSUNvbmZpZ01vZGVsRG9jc0RhdGEsXG4gICAgc3ViVmFsdWU/OiBJQmxhbmtOb2RlTG9nU3ViVmFsdWVcbiAgKSA9PlxuICAobWV0aG9kSWQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSB7XG4gICAgICAnQHR5cGUnOiBub2RlVHlwZSxcbiAgICAgIHRlcm06IHsgJ0BpZCc6IHN1YlZhbHVlPy5pZCB8fCB0ZXJtSWQgfSxcbiAgICAgIG1ldGhvZE1vZGVsOiB7ICdAaWQnOiBtZXRob2RJZCB9XG4gICAgfSBhcyBhbnk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1ldGhvZElkLFxuICAgICAgbW9kZWw6XG4gICAgICAgIGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywgbW9kZWxQYXJhbXMobm9kZSwgIVsnYmFja2dyb3VuZERhdGEnXS5pbmNsdWRlcyhzdWJWYWx1ZT8ua2V5KSkpIHx8XG4gICAgICAgIC8vIGhhbmRsZSBcImxpdmVBbmltYWxcIlxuICAgICAgICAodGVybVR5cGUgJiYgZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCBtb2RlbEtleVBhcmFtcyhub2RlLCB0ZXJtVHlwZSkpKSB8fFxuICAgICAgICAvLyBoYW5kbGUgXCJjb21wbGV0ZW5lc3MuY3JvcFJlc2lkdWVcIlxuICAgICAgICAoa2V5ICYmIGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywgbW9kZWxLZXlQYXJhbXMobm9kZSwgYCR7bWV0aG9kSWR9LiR7a2V5fWApKSkgfHxcbiAgICAgICAgZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCBtb2RlbEtleVBhcmFtcyhub2RlLCBgJHtzdWJWYWx1ZT8ua2V5fS4ke21ldGhvZElkfWApKSB8fFxuICAgICAgICAvLyBoYW5kbGUgXCJpbnB1dC5wcmljZVwiXG4gICAgICAgIGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywgbW9kZWxLZXlQYXJhbXMobm9kZSwgYCR7dHlwZT8udG9Mb3dlckNhc2UoKX0uJHtzdWJWYWx1ZT8ua2V5fWApKSB8fFxuICAgICAgICAvLyBoYW5kbGUgXCJpbnB1dC5oZXN0aWFBZ2dyZWdhdGVkRGF0YVwiXG4gICAgICAgIGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywgbW9kZWxLZXlQYXJhbXMobm9kZSwgYCR7dHlwZT8udG9Mb3dlckNhc2UoKX0uJHttZXRob2RJZH1gKSkgfHxcbiAgICAgICAgLy8gaGFuZGxlIFwidHJhbnNmb3JtYXRpb25cIlxuICAgICAgICAoc3ViVmFsdWU/LmtleSA/IGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywgbW9kZWxLZXlQYXJhbXMobm9kZSwgc3ViVmFsdWU/LmtleSkpIDogdW5kZWZpbmVkKSB8fFxuICAgICAgICAvLyBoYW5kbGUgXCJ0cmFuc2Zvcm1hdGlvbi9pbnB1dC9leGNyZXRhXCIgYW5kIG90aGVyIG1vZGVscyB3aXRoIFwiL1wiXG4gICAgICAgIChtZXRob2RJZC5pbmNsdWRlcygnLycpXG4gICAgICAgICAgPyBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIHtcbiAgICAgICAgICAgICAgbW9kZWw6IG1ldGhvZElkLnNwbGl0KCcvJylbMF0sXG4gICAgICAgICAgICAgIG1vZGVsS2V5OiBtZXRob2RJZC5zcGxpdCgnLycpLnNsaWNlKDEpLmpvaW4oJy4nKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IHVuZGVmaW5lZClcbiAgICB9O1xuICB9O1xuXG5jb25zdCBjb25maWdNb2RlbFdpdGhMb2dzID1cbiAgKGRhdGE6IElCbGFua05vZGVMb2cgfCBJTm9uQmxhbmtOb2RlTG9nIHwgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlLCBsb2dzOiBJTm9kZVRlcm1Mb2dzLCBwcmV2aW91c01vZGVsU3VjY2VzcyA9IGZhbHNlKSA9PlxuICAobW9kZWw6IElDb25maWdNb2RlbCkgPT4ge1xuICAgIGNvbnN0IHN0YXR1cyA9IGxvZ1N0YXR1cyhkYXRhLCBsb2dzPy5bbW9kZWwubWV0aG9kSWRdLCBwcmV2aW91c01vZGVsU3VjY2Vzcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgbG9nczogbG9ncz8uW21vZGVsLm1ldGhvZElkXSxcbiAgICAgIHN0YXR1cyxcbiAgICAgIHNob3dMb2dzOiBoYXNMb2dEZXRhaWxzKHN0YXR1cywgbG9ncz8uW21vZGVsLm1ldGhvZElkXSlcbiAgICB9IGFzIElDb25maWdNb2RlbDtcbiAgfTtcblxuLyoqXG4gKiBIYW5kbGUgaGllcmFyY2h5IHNraXAgaWYgYSBtb2RlbCBiZWZvcmUgc3VjY2VlZGVkLlxuICpcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gaW5kZXhcbiAqL1xuY29uc3QgaGFzUHJldmlvdXNNb2RlbFN1Y2Nlc3MgPSAobW9kZWxzOiAoSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10pW10sIGluZGV4ID0gMCkgPT5cbiAgZmlsdGVyQ29uZmlnTW9kZWxzKG1vZGVsc1tpbmRleF0sIGtlZXBDb25maWdNb2RlbEJ5U3RhdHVzKExvZ1N0YXR1cy5zdWNjZXNzKSkubGVuZ3RoID4gMCB8fFxuICAoaW5kZXggPD0gbW9kZWxzLmxlbmd0aCAmJiBoYXNQcmV2aW91c01vZGVsU3VjY2Vzcyhtb2RlbHMsIGluZGV4ICsgMSkpO1xuXG5jb25zdCBkYXRhV2l0aENvbmZpZ01vZGVsTG9ncyA9XG4gIChsb2dzOiBJTm9kZUxvZ3MgfCBJTm9kZVRlcm1Mb2dzKSA9PlxuICA8VCBleHRlbmRzIElCbGFua05vZGVMb2cgfCBJTm9uQmxhbmtOb2RlTG9nIHwgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlPihkYXRhOiBUKSA9PiB7XG4gICAgY29uc3Qgc3ViTG9nS2V5ID0gZGF0YS5ibGFua05vZGUgPyBzdWJWYWx1ZUxvZ0tleShkYXRhIGFzIElCbGFua05vZGVMb2dTdWJWYWx1ZSkgOiBudWxsO1xuICAgIGNvbnN0IGxvZyA9IHN1YkxvZ0tleSA/IGxvZ3Nbc3ViTG9nS2V5XSA6IGxvZ3M7XG4gICAgY29uc3QgY29uZmlnTW9kZWxzOiAoSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10pW10gPSBbXTtcblxuICAgIC8vIGdvIHRocm91Z2ggbW9kZWxzIG9uZSBieSBvbmUgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIG5leHQgbW9kZWxzIGluIGhpZXJhcmNoeSBoYXZlIGZhaWxlZFxuICAgIGZvciAoY29uc3QgaW5kZXggaW4gZGF0YS5jb25maWdNb2RlbHMpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YS5jb25maWdNb2RlbHMsIGluZGV4KSkge1xuICAgICAgICBjb25zdCBtb2RlbCA9IGRhdGEuY29uZmlnTW9kZWxzW2luZGV4XTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNNb2RlbFN1Y2Nlc3MgPSAraW5kZXggPiAwICYmIGhhc1ByZXZpb3VzTW9kZWxTdWNjZXNzKGNvbmZpZ01vZGVscyk7XG4gICAgICAgIGNvbnN0IG5ld01vZGVsID0gQXJyYXkuaXNBcnJheShtb2RlbClcbiAgICAgICAgICA/IG1vZGVsLm1hcChjb25maWdNb2RlbFdpdGhMb2dzKGRhdGEsIGxvZywgcHJldmlvdXNNb2RlbFN1Y2Nlc3MpKVxuICAgICAgICAgIDogY29uZmlnTW9kZWxXaXRoTG9ncyhkYXRhLCBsb2csIHByZXZpb3VzTW9kZWxTdWNjZXNzKShtb2RlbCk7XG4gICAgICAgIGNvbmZpZ01vZGVscy5wdXNoKG5ld01vZGVsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGF0YSxcbiAgICAgIGNvbmZpZ01vZGVsczogZmlsdGVyQ29uZmlnTW9kZWxzKFxuICAgICAgICBjb25maWdNb2RlbHMsXG4gICAgICAgIChtb2RlbDogSUNvbmZpZ01vZGVsKSA9PlxuICAgICAgICAgICFbTG9nU3RhdHVzLm5vdFJlcXVpcmVkXS5pbmNsdWRlcyhtb2RlbD8uc3RhdHVzKSB8fCBub3RSZWxldmFudE1vZGVscy5pbmNsdWRlcyhtb2RlbC5tZXRob2RJZClcbiAgICAgIClcbiAgICB9IGFzIFQ7XG4gIH07XG5cbi8qKlxuICogR3JvdXAgbW9kZWxzIHJ1bm5pbmcgaW4gcGFyYWxsZWwgdW5kZXIgdGhlIHNhbWUgYXJyYXksIGFzIHRoZXkgc2hvdWxkIGFwcGVhciB2ZXJ0aWNhbGx5LlxuICpcbiAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0gbW9kZWxzIFRoZSBsaXN0IG9mIG1vZGVsc1xuICovXG5jb25zdCBncm91cFBhcmFsbGVsTW9kZWxzID0gKFxuICBjb25maWc6IElPcmNoZXN0cmF0b3JDb25maWcsXG4gIHRlcm1JZDogc3RyaW5nLFxuICBtb2RlbEtleTogYmxhbmtOb2Rlc0tleSxcbiAgbW9kZWxzOiBJQ29uZmlnTW9kZWxbXVxuKSA9PiB7XG4gIGNvbnN0IG1vZGVsc1dpdGhPcmRlciA9IG1vZGVscy5tYXAobW9kZWwgPT4gKHtcbiAgICBtb2RlbDoge1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBjb25maWc6IG1vZGVsQ29uZmlnKGNvbmZpZy5tb2RlbHMsIHRlcm1JZCwgbW9kZWxLZXksIG1vZGVsLm1ldGhvZElkKVxuICAgIH0sXG4gICAgb3JkZXI6IG1vZGVsQ29uZmlnT3JkZXIoY29uZmlnLm1vZGVscywgdGVybUlkLCBtb2RlbEtleSwgbW9kZWwubWV0aG9kSWQpXG4gIH0pKTtcbiAgcmV0dXJuIG1vZGVsc1dpdGhPcmRlclxuICAgIC5yZWR1Y2UoKHByZXYsIHsgbW9kZWwsIG9yZGVyIH0pID0+IHtcbiAgICAgIGNvbnN0IGlzQXJyYXkgPSBvcmRlci5pbmNsdWRlcygnLicpO1xuICAgICAgY29uc3QgaW5kZXggPSBpc0FycmF5ID8gb3JkZXIuc3BsaXQoJy4nKVswXSA6IG9yZGVyIHx8IHByZXYubGVuZ3RoO1xuICAgICAgcHJldltpbmRleF0gPSBpc0FycmF5ID8gWy4uLihwcmV2W2luZGV4XSB8fCBbXSksIG1vZGVsXSA6IFttb2RlbF07XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSBhcyBJQ29uZmlnTW9kZWxbXVtdKVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAubWFwKHYgPT4gKHYubGVuZ3RoID09PSAxID8gdlswXSA6IHYpKTtcbn07XG5cbmNvbnN0IGFsbFBhcmFsbGVsID0gKG1vZGVsczogKElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdKVtdKSA9PlxuICBtb2RlbHMubGVuZ3RoID09PSAxICYmIEFycmF5LmlzQXJyYXkobW9kZWxzWzBdKSAmJiBtb2RlbHNbMF0ubGVuZ3RoID4gMTtcblxuY29uc3QgYmxhbmtOb2RlTW9kZWxJZCA9ICh2YWx1ZTogYmxhbmtOb2Rlc1R5cGVWYWx1ZSkgPT5cbiAgdmFsdWVbJ0B0eXBlJ10gPT09IFNjaGVtYVR5cGUuTWVhc3VyZW1lbnRcbiAgICA/ICh2YWx1ZSBhcyBNZWFzdXJlbWVudCkubWV0aG9kPy5bJ0BpZCddXG4gICAgOiAodmFsdWUgYXMgYW55KS5tZXRob2RNb2RlbD8uWydAaWQnXTtcblxuY29uc3QgdmFsdWVCeU1ldGhvZElkID0gKHZhbHVlczogYmxhbmtOb2Rlc1R5cGVWYWx1ZVtdLCBtZXRob2RJZDogc3RyaW5nLCB0ZXJtSWQ6IHN0cmluZykgPT5cbiAgcHJvcGVydHlWYWx1ZSh2YWx1ZXMuZmluZCh2ID0+IGJsYW5rTm9kZU1vZGVsSWQodikgPT09IG1ldGhvZElkKT8udmFsdWUgYXMgbnVtYmVyW10sIHRlcm1JZCk7XG5cbmNvbnN0IGdyb3VwUGFyYWxsZWxWYWx1ZXMgPSAodmFsdWVzOiBibGFua05vZGVzVHlwZVZhbHVlW10sIG1vZGVsczogSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10sIHRlcm1JZDogc3RyaW5nKSA9PlxuICBBcnJheS5pc0FycmF5KG1vZGVscylcbiAgICA/IE9iamVjdC5mcm9tRW50cmllcyhtb2RlbHMubWFwKG1vZGVsID0+IFttb2RlbC5tZXRob2RJZCwgdmFsdWVCeU1ldGhvZElkKHZhbHVlcywgbW9kZWwubWV0aG9kSWQsIHRlcm1JZCldKSlcbiAgICA6IHt9O1xuXG5leHBvcnQgY29uc3QgZ3JvdXBMb2dzQnlUZXJtID0gKFxuICBub2RlVHlwZTogTm9kZVR5cGUsXG4gIGxvZ3M6IElOb2RlTG9ncyxcbiAgbW9kZWxzOiBJTW9kZWxbXSxcbiAgY29uZmlnOiBJT3JjaGVzdHJhdG9yQ29uZmlnLFxuICBhbGxPcmlnaW5hbFZhbHVlczogYmxhbmtOb2Rlc1R5cGVWYWx1ZVtdLFxuICBhbGxSZWNhbGN1bGF0ZWRWYWx1ZXM6IGJsYW5rTm9kZXNUeXBlVmFsdWVbXSxcbiAgbm9kZUtleTogYmxhbmtOb2Rlc0tleVxuKSA9PiB7XG4gIGNvbnN0IG9yaWdpbmFsVmFsdWVzID0gZmlsdGVyRGVsZXRlZChhbGxPcmlnaW5hbFZhbHVlcyB8fCBbXSk7XG4gIGNvbnN0IHJlY2FsY3VsYXRlZFZhbHVlcyA9IGZpbHRlckRlbGV0ZWQoYWxsUmVjYWxjdWxhdGVkVmFsdWVzIHx8IFtdKS5maWx0ZXIoaGFzUmVjYWxjdWxhdGVkS2V5cyk7XG4gIGNvbnN0IHR5cGU6IFNjaGVtYVR5cGUgPSBvcmlnaW5hbFZhbHVlcy5sZW5ndGhcbiAgICA/IG9yaWdpbmFsVmFsdWVzWzBdWydAdHlwZSddIHx8IG9yaWdpbmFsVmFsdWVzWzBdLnR5cGVcbiAgICA6IHJlY2FsY3VsYXRlZFZhbHVlcy5sZW5ndGhcbiAgICAgID8gcmVjYWxjdWxhdGVkVmFsdWVzWzBdWydAdHlwZSddIHx8IHJlY2FsY3VsYXRlZFZhbHVlc1swXS50eXBlXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4gKHRlcm06IElUZXJtSlNPTkxEKTogSUJsYW5rTm9kZUxvZyA9PiB7XG4gICAgY29uc3QgdGVybUlkID0gdGVybVsnQGlkJ107XG4gICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLnRlcm1UeXBlO1xuICAgIGNvbnN0IHRlcm1Mb2dzID0gZ2V0KGxvZ3MsIHRlcm1JZCwge30pIGFzIElOb2RlVGVybUxvZ3M7XG4gICAgY29uc3Qgb3JpZ2luYWwgPSBvcmlnaW5hbFZhbHVlcy5maWx0ZXIodiA9PiB0ZXJtSWQgPT09IHYudGVybSFbJ0BpZCddKTtcbiAgICBjb25zdCByZWNhbGN1bGF0ZWQgPSByZWNhbGN1bGF0ZWRWYWx1ZXMuZmlsdGVyKHYgPT4gdGVybUlkID09PSB2LnRlcm0hWydAaWQnXSk7XG4gICAgY29uc3QgaGFzRGF0YSA9ICEhb3JpZ2luYWwubGVuZ3RoIHx8ICEhcmVjYWxjdWxhdGVkLmxlbmd0aCB8fCBPYmplY3Qua2V5cyh0ZXJtTG9ncykubGVuZ3RoID4gMDtcbiAgICBjb25zdCBjb25maWdNb2RlbHNEYXRhID0geyBub2RlVHlwZSwgdHlwZSwgdGVybUlkLCB0ZXJtVHlwZSB9O1xuICAgIGNvbnN0IGNvbmZpZ01vZGVscyA9IGdyb3VwUGFyYWxsZWxNb2RlbHMoXG4gICAgICBjb25maWcsXG4gICAgICB0ZXJtSWQsXG4gICAgICBub2RlS2V5ISxcbiAgICAgIHVuaXF1ZShbXG4gICAgICAgIC8vIHJlbW92ZSBjb21wbGV0ZW5lc3MgYXMgc2hvdWxkIGJlIHVzaW5nIGBncm91cGRMb2dzQnlLZXlgXG4gICAgICAgIC4uLih0ZXJtTG9ncy5tb2RlbHMgfHwgW10pLmZpbHRlcihpc01vZGVsTG9nKHRlcm1Mb2dzLCB0eXBlKSkuZmlsdGVyKHYgPT4gIWlzTm9uTm9kZU1vZGVsS2V5KHYpKVxuICAgICAgICAvLyAuLi5maW5kQ29uZmlnTW9kZWxzKGNvbmZpZywgdGVybUlkLCBub2RlS2V5ISwgbW9kZWxzKS5tYXAoKHsgbW9kZWwgfSkgPT4gbW9kZWwgYXMgc3RyaW5nKVxuICAgICAgXSkubWFwKGNvbmZpZ01vZGVsV2l0aERvY3MobW9kZWxzLCBjb25maWdNb2RlbHNEYXRhKSlcbiAgICApO1xuXG4gICAgY29uc3Qga2V5cyA9IGxvZ0tleXModGVybUxvZ3MsIG9yaWdpbmFsLCByZWNhbGN1bGF0ZWQsIG1vZGVscywgY29uZmlnTW9kZWxzRGF0YSk7XG4gICAgY29uc3Qgc3ViVmFsdWVzID0gbG9nU3ViVmFsdWVzKGxvZ3MsIHRlcm1Mb2dzLCBvcmlnaW5hbCwgcmVjYWxjdWxhdGVkLCBtb2RlbHMsIGNvbmZpZ01vZGVsc0RhdGEpO1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSAhT2JqZWN0LnZhbHVlcyh0ZXJtTG9ncylcbiAgICAgIC5maWx0ZXIodiA9PiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodikgJiYgIXYuaXNLZXkpXG4gICAgICAuZXZlcnkodiA9PiB2LnJ1blJlcXVpcmVkID09PSBmYWxzZSk7XG5cbiAgICBjb25zdCBub2RlTG9nOiBJQmxhbmtOb2RlTG9nID0gZGF0YVdpdGhDb25maWdNb2RlbExvZ3ModGVybUxvZ3MpKHtcbiAgICAgIGJsYW5rTm9kZTogdHJ1ZSxcbiAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgIGNhbk9wZW46IGtleXMubGVuZ3RoID4gMCB8fCBzdWJWYWx1ZXMubGVuZ3RoID4gMCxcbiAgICAgIHRlcm1JZCxcbiAgICAgIHRlcm0sXG4gICAgICB0eXBlLFxuICAgICAgY29uZmlnTW9kZWxzLFxuICAgICAgb3JpZ2luYWwsXG4gICAgICBvcmlnaW5hbFZhbHVlOiByZWR1Y2VWYWx1ZXMob3JpZ2luYWwsIHRlcm1JZCksXG4gICAgICByZWNhbGN1bGF0ZWQsXG4gICAgICByZWNhbGN1bGF0ZWRWYWx1ZTogcmVkdWNlVmFsdWVzKHJlY2FsY3VsYXRlZCwgdGVybUlkKSxcbiAgICAgIGlzT3JpZ2luYWw6ICEhb3JpZ2luYWwubGVuZ3RoLFxuICAgICAgaXNSZWNhbGN1bGF0ZWQ6IGhhc1JlY2FsY3VsYXRlZFZhbHVlKHJlY2FsY3VsYXRlZCksXG4gICAgICBoYXNEYXRhLFxuICAgICAgaXNSZXF1aXJlZCxcbiAgICAgIGxvZ3M6IHRlcm1Mb2dzLFxuICAgICAga2V5cyxcbiAgICAgIHN1YlZhbHVlcyxcbiAgICAgIGFsbFBhcmFsbGVsOiBhbGxQYXJhbGxlbChjb25maWdNb2RlbHMpLFxuICAgICAgb3JpZ2luYWxWYWx1ZUJ5TWV0aG9kSWQ6IGdyb3VwUGFyYWxsZWxWYWx1ZXMob3JpZ2luYWwsIGNvbmZpZ01vZGVsc1swXSwgdGVybUlkKSxcbiAgICAgIHJlY2FsY3VsYXRlZFZhbHVlQnlNZXRob2RJZDogZ3JvdXBQYXJhbGxlbFZhbHVlcyhyZWNhbGN1bGF0ZWQsIGNvbmZpZ01vZGVsc1swXSwgdGVybUlkKVxuICAgIH0pO1xuICAgIGNvbnN0IHN1YlZhbHVlID0gY3ljbGVTdWJWYWx1ZShub2RlTG9nKTtcblxuICAgIHJldHVybiBzdWJWYWx1ZSAmJiBzdWJWYWx1ZXM/Lmxlbmd0aFxuICAgICAgPyB7XG4gICAgICAgICAgLi4ubm9kZUxvZyxcbiAgICAgICAgICBtb2RlbHNJblN1YlZhbHVlczogdHJ1ZSxcbiAgICAgICAgICBzdWJWYWx1ZXM6IFtzdWJWYWx1ZSwgLi4uc3ViVmFsdWVzXVxuICAgICAgICB9IC8vIGlmIHdlIGluY2x1ZGUgdGhlIEN5Y2xlIHZhbHVlLCBpdCBiZWNvbWVzIHRoZSBtYWluIHJlZmVyZW5jZSBvZiB0aGUgbW9kZWxzXG4gICAgICA6IG5vZGVMb2c7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ3JvdXBkTG9nc0J5S2V5ID0gKFxuICBub2RlVHlwZTogTm9kZVR5cGUsXG4gIG5vZGVLZXk6IG5vbkJsYW5rTm9kZXNLZXksXG4gIGxvZ3M6IElOb2RlTG9ncyxcbiAgbW9kZWxzOiBJTW9kZWxbXSxcbiAgb3JpZ2luYWxWYWx1ZT86IG5vbkJsYW5rTm9kZXNUeXBlVmFsdWUsXG4gIHJlY2FsY3VsYXRlZFZhbHVlPzogbm9uQmxhbmtOb2Rlc1R5cGVWYWx1ZVxuKSA9PiB7XG4gIGNvbnN0IHR5cGU6IFNjaGVtYVR5cGUgPVxuICAgIG9yaWdpbmFsVmFsdWU/LlsnQHR5cGUnXSB8fCBvcmlnaW5hbFZhbHVlPy50eXBlIHx8IHJlY2FsY3VsYXRlZFZhbHVlPy5bJ0B0eXBlJ10gfHwgcmVjYWxjdWxhdGVkVmFsdWU/LnR5cGU7XG5cbiAgcmV0dXJuIChrZXk6IHN0cmluZyk6IElOb25CbGFua05vZGVMb2cgPT4ge1xuICAgIGNvbnN0IGtleUxvZ3MgPSBnZXQobG9ncywga2V5LCB7fSkgYXMgSU5vZGVUZXJtTG9ncztcbiAgICBjb25zdCBvcmlnaW5hbCA9IG9yaWdpbmFsVmFsdWU/LltrZXldO1xuICAgIGNvbnN0IHJlY2FsY3VsYXRlZCA9IHJlY2FsY3VsYXRlZFZhbHVlPy5ba2V5XTtcbiAgICBjb25zdCBoYXNEYXRhID0gISFvcmlnaW5hbCB8fCAhIXJlY2FsY3VsYXRlZCB8fCBPYmplY3Qua2V5cyhrZXlMb2dzKS5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGNvbmZpZ01vZGVsc0RhdGEgPSB7IG5vZGVUeXBlLCB0eXBlLCBrZXkgfTtcbiAgICBjb25zdCBjb25maWdNb2RlbHMgPSB1bmlxdWUoW1xuICAgICAgLi4uKGtleUxvZ3MubW9kZWxzIHx8IFtdKS5maWx0ZXIoaXNNb2RlbExvZyhrZXlMb2dzLCB0eXBlKSkuZmlsdGVyKHYgPT4gdiA9PT0gbm9kZUtleSlcbiAgICBdKS5tYXAoY29uZmlnTW9kZWxXaXRoRG9jcyhtb2RlbHMsIGNvbmZpZ01vZGVsc0RhdGEpKTtcbiAgICBjb25zdCBpc1JlcXVpcmVkID0gIU9iamVjdC52YWx1ZXMoa2V5TG9ncylcbiAgICAgIC5maWx0ZXIodiA9PiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodikgJiYgIXYuaXNLZXkpXG4gICAgICAuZXZlcnkodiA9PiB2LnJ1blJlcXVpcmVkID09PSBmYWxzZSk7XG5cbiAgICByZXR1cm4gZGF0YVdpdGhDb25maWdNb2RlbExvZ3Moa2V5TG9ncykoe1xuICAgICAgYmxhbmtOb2RlOiBmYWxzZSxcbiAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgIGNhbk9wZW46IGZhbHNlLFxuICAgICAga2V5LFxuICAgICAgdHlwZSxcbiAgICAgIGNvbmZpZ01vZGVscyxcbiAgICAgIG9yaWdpbmFsVmFsdWU6IG9yaWdpbmFsLFxuICAgICAgcmVjYWxjdWxhdGVkVmFsdWU6IHJlY2FsY3VsYXRlZCxcbiAgICAgIGlzT3JpZ2luYWw6ICFpc1VuZGVmaW5lZChvcmlnaW5hbCksXG4gICAgICBpc1JlY2FsY3VsYXRlZDogaXNSZWNhbGN1bGF0ZWQoa2V5KShyZWNhbGN1bGF0ZWRWYWx1ZSksXG4gICAgICBoYXNEYXRhLFxuICAgICAgaXNSZXF1aXJlZCxcbiAgICAgIGxvZ3M6IGtleUxvZ3MsXG4gICAgICBhbGxQYXJhbGxlbDogZmFsc2VcbiAgICB9KTtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBtb2RlbENvdW50ID0gKGJsYW5rTm9kZUxvZ3M6IElCbGFua05vZGVMb2dbXSkgPT5cbiAgTWF0aC5tYXguYXBwbHkoTWF0aC5tYXgsIFtcbiAgICAwLFxuICAgIC4uLmJsYW5rTm9kZUxvZ3MuZmxhdE1hcCh2ID0+IFtcbiAgICAgIHYuY29uZmlnTW9kZWxzLmxlbmd0aCxcbiAgICAgIC4uLnYuc3ViVmFsdWVzLm1hcChzID0+IHMuY29uZmlnTW9kZWxzPy5sZW5ndGggfHwgMCksXG4gICAgICAuLi52LmtleXMubWFwKHMgPT4gcy5jb25maWdNb2RlbHM/Lmxlbmd0aCB8fCAwKVxuICAgIF0pXG4gIF0pO1xuXG5leHBvcnQgY29uc3QgbG9nVmFsdWVBcnJheSA9ICh2YWx1ZTogc3RyaW5nKTogYW55W10gPT5cbiAgWyc7JywgJzonXS5zb21lKHYgPT4gdmFsdWUuaW5jbHVkZXModikpXG4gICAgPyB2YWx1ZS5zcGxpdCgnOycpLmZsYXRNYXAodiA9PiB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHYuc3BsaXQoJ18nKS5tYXAodnYgPT4gdnYuc3BsaXQoJzonKSk7XG4gICAgICAgIHJldHVybiByZXMubGVuZ3RoIDw9IDEgPyByZXMuZmxhdCgpIDogT2JqZWN0LmZyb21FbnRyaWVzKHJlcyk7XG4gICAgICB9KVxuICAgIDogbnVsbDtcbiJdfQ==
@@ -6168,7 +6168,7 @@ mergeSubValues([
6168
6168
  isRequired: true
6169
6169
  };
6170
6170
  })
6171
- .filter(({ originalValue, recalculatedValue }) => [originalValue !== '' || recalculatedValue !== ''].every(Boolean))
6171
+ .filter(({ originalValue, recalculatedValue, configModels }) => [originalValue !== '', recalculatedValue !== '', !!configModels?.length].some(Boolean))
6172
6172
  .map(v => (['input'].includes(v.key) ? dataWithConfigModelLogs(allLogs)(v) : dataWithConfigModelLogs(logs)(v)));
6173
6173
  const logKeys = (logs, original, recalculated, models, { nodeType, type, termId }) => Object.keys(logs)
6174
6174
  .filter(key => logs[key].isKey && !subValueKeys.includes(key))
@@ -7739,7 +7739,7 @@ class EngineModelsStageDeepComponent {
7739
7739
  this.relatedNodes$ = toObservable(this.relatedNodes);
7740
7740
  this.nodesLength = toSignal(this.relatedNodes$.pipe(map(nodes => nodes?.length ?? 0)));
7741
7741
  this.nodes = toSignal(combineLatest([this.relatedNodes$, this.nodeStoreService.nodes$()]).pipe(filter(([nodes]) => nodes?.length > 0), distinctUntilChangedDeep(), tap(() => this.loading.set(true)), mergeMap(([nodes, allNodes]) => from(nodes).pipe(mergeMap(node => this.findNode(allNodes, node)), filter(v => !!v), toArray())), tap(() => this.loading.set(false))));
7742
- this.expandableNodes = computed(() => this.nodes()?.filter(n => this.expandedNode()?.['@type'] !== n['@type'] && this.expandedNode()?.['@id'] !== n['@id']) ?? []);
7742
+ this.expandableNodes = computed(() => this.nodes()?.filter(n => this.expandedNode()?.['@type'] !== n['@type'] || this.expandedNode()?.['@id'] !== n['@id']) ?? []);
7743
7743
  this.defaultMaxStage = computed(() => NODE_MAX_STAGE[this.type()]);
7744
7744
  this.stage = computed(() => +this.node().stage || 0);
7745
7745
  this.maxstage = computed(() => +this.node().maxstage || this.defaultMaxStage());