@lifeready/core 5.0.3 → 5.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/lifeready-core.umd.js +180 -175
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js +1 -1
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/api/types/lr-graphql.types.js +1 -1
- package/esm2015/lib/auth/auth.types.js +1 -1
- package/esm2015/lib/auth/life-ready-auth.service.js +3 -1
- package/esm2015/lib/item2/item2.service.js +7 -4
- package/esm2015/lib/profile/profile.gql.js +2 -1
- package/esm2015/lib/profile/profile.types.js +1 -1
- package/fesm2015/lifeready-core.js +9 -3
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/api/types/lr-graphql.types.d.ts +5 -0
- package/lib/auth/auth.types.d.ts +2 -0
- package/lib/profile/profile.types.d.ts +2 -1
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -513,14 +513,17 @@ let Item2Service = Item2Service_1 = class Item2Service extends LrService {
|
|
|
513
513
|
});
|
|
514
514
|
}
|
|
515
515
|
prepareCreateDirectory(options) {
|
|
516
|
-
var _a, _b;
|
|
516
|
+
var _a, _b, _c;
|
|
517
517
|
return __awaiter(this, void 0, void 0, function* () {
|
|
518
518
|
const directoryKey = yield this.keyFactory.createKey();
|
|
519
519
|
options.parentDirectories = options.parentDirectories || [];
|
|
520
520
|
if (!options.asRootDirectory && !((_a = options.parentDirectories) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
521
|
-
throw new KcBadArgumentException('A new directory must be either a root directory or a sub-directory. So you must provide either parentDirectories
|
|
521
|
+
throw new KcBadArgumentException('A new directory must be either a root directory or a sub-directory. So you must provide either parentDirectories or asRootDirectory parameter.');
|
|
522
522
|
}
|
|
523
|
-
|
|
523
|
+
if (options.asRootDirectory && ((_b = options.parentDirectories) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
524
|
+
throw new KcBadArgumentException('A new directory must be either a root directory or a sub-directory. So you can only provide either parentDirectories or asRootDirectory parameter.');
|
|
525
|
+
}
|
|
526
|
+
const parentDirectories = yield Promise.all((_c = options.parentDirectories) === null || _c === void 0 ? void 0 : _c.map((t) => this.prepareParentDirectory(t, directoryKey)));
|
|
524
527
|
// TODO this is rather an unfortunate name, change it to asRootDirectory.
|
|
525
528
|
let parentRootDirectory;
|
|
526
529
|
if (options.asRootDirectory) {
|
|
@@ -615,4 +618,4 @@ Item2Service = Item2Service_1 = __decorate([
|
|
|
615
618
|
})
|
|
616
619
|
], Item2Service);
|
|
617
620
|
export { Item2Service };
|
|
618
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbTIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9pdGVtMi9pdGVtMi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixtQkFBbUIsRUFDbkIsdUNBQXVDLEVBQ3ZDLDhCQUE4QixFQUM5Qix5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsMkJBQTJCLEVBQzNCLGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixrQkFBa0IsR0FDbkIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLGlCQUFpQixF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TSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV6RSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXhFLHVDQUNLLEtBQUssS0FDUixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFDdEI7UUFDSixDQUFDO0tBQUE7SUFFTyxRQUFRO1FBQ2QseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7Q0FDRixDQUFBO0FBcHJCUSxzQ0FBeUIsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUMvQyw2Q0FBZ0MsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3ZELE1BQU0sRUFBRTtRQUNOO1lBQ0UsUUFBUSxFQUFFLGNBQVksQ0FBQyx5QkFBeUI7U0FDakQ7S0FDRjtDQUNGLENBQUMsQ0FBQzs7O1lBNUJKLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBaEU4QixNQUFNO1lBQWhCLFFBQVE7WUFLcEIsaUJBQWlCO1lBR2pCLFVBQVU7WUFGVixpQkFBaUI7WUFDakIsZUFBZTtZQUVmLFdBQVc7WUFMWCxvQkFBb0I7O0FBNkRoQixZQUFZO0lBTnhCLGlCQUFpQixDQUFDO1FBQ2pCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCLENBQUM7R0FJVyxZQUFZLENBc3NCeEI7U0F0c0JZLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKV0sgfSBmcm9tICdub2RlLWpvc2UnO1xuaW1wb3J0IHsgTHJNdXRhdGlvbiwgTHJTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWdyYXBocWwnO1xuaW1wb3J0IHsgSUQsIEpTT05PYmplY3QsIExyUmVsYXlJZElucHV0IH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IExpZmVSZWFkeUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC9saWZlLXJlYWR5LWF1dGguc2VydmljZSc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkU2VydmljZSB9IGZyb20gJy4uL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5U2VydmljZSB9IGZyb20gJy4uL2tleS9rZXkuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NrU2VydmljZSB9IGZyb20gJy4uL2xvY2svbG9jay5zZXJ2aWNlJztcbmltcG9ydCB7IEtjQmFkQXJndW1lbnRFeGNlcHRpb24gfSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgUnVuT3V0c2lkZUFuZ3VsYXIgfSBmcm9tICcuLi9fY29tbW9uL3J1bi1vdXRzaWRlLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQXJjaGl2ZURpcmVjdG9yeU11dGF0aW9uLFxuICBBcmNoaXZlRmlsZU11dGF0aW9uLFxuICBCZWdpbkRlbGV0ZUNoaWxkSXRlbUxpbmtzV2luZG93TXV0YXRpb24sXG4gIENoYW5nZURpcmVjdG9yeVBhcmVudHNNdXRhdGlvbixcbiAgQ2hhbmdlRmlsZVBhcmVudHNNdXRhdGlvbixcbiAgQ3JlYXRlRGlyZWN0b3J5TXV0YXRpb24sXG4gIENyZWF0ZUZpbGVNdXRhdGlvbixcbiAgRGVsZXRlRGlyZWN0b3J5TXV0YXRpb24sXG4gIERlbGV0ZUZpbGVNdXRhdGlvbixcbiAgUmV2ZXJ0RmlsZU11dGF0aW9uLFxuICBTZXREaXJlY3RvcnlDb25maWRlbnRpYWxNdXRhdGlvbixcbiAgU2V0RmlsZUNvbmZpZGVudGlhbE11dGF0aW9uLFxuICBUZW1wRGlyZWN0b3J5UXVlcnksXG4gIFVuYXJjaGl2ZURpcmVjdG9yeU11dGF0aW9uLFxuICBVbmFyY2hpdmVGaWxlTXV0YXRpb24sXG4gIFVwZGF0ZURpcmVjdG9yeU11dGF0aW9uLFxuICBVcGRhdGVGaWxlTXV0YXRpb24sXG59IGZyb20gJy4vaXRlbTIuZ3FsJztcbmltcG9ydCB7XG4gIERpcmVjdG9yeUtleVF1ZXJ5LFxuICBGaWxlS2V5UXVlcnksXG4gIEZpbGVTdGF0ZUtleVF1ZXJ5LFxufSBmcm9tICcuL2l0ZW0yLmdxbC5wcml2YXRlJztcbmltcG9ydCB7XG4gIEFyY2hpdmVEaXJlY3RvcnlPcHRpb25zLFxuICBCZWdpbkRlbGV0ZUNoaWxkSXRlbUxpbmtzV2luZG93T3B0aW9ucyxcbiAgQ2hhbmdlRGlyZWN0b3J5UGFyZW50c09wdGlvbnMsXG4gIENoYW5nZUZpbGVQYXJlbnRzT3B0aW9ucyxcbiAgQ2hhbmdlSXRlbVBhcmVudHNPcHRpb25zLFxuICBDcmVhdGVEaXJlY3RvcnlPcHRpb25zLFxuICBDcmVhdGVEaXJlY3RvcnlUcmVlT3B0aW9ucyxcbiAgQ3JlYXRlRmlsZU9wdGlvbnMsXG4gIERvd25sb2FkRmlsZUNvbnRlbnRPcHRpb25zLFxuICBGaWxlUGFyZW50RGlyZWN0b3J5SW5wdXQsXG4gIElkS2V5UGFpcixcbiAgUGFyZW50RGlyZWN0b3J5SW5wdXQsXG4gIFBhcmVudERpcmVjdG9yeU9wdGlvbnMsXG4gIFBhcmVudFJvb3REaXJlY3RvcnlJbnB1dCxcbiAgUmV2ZXJ0RmlsZU9wdGlvbnMsXG4gIFNldERpcmVjdG9yeUNvbmZpZGVudGlhbE9wdGlvbnMsXG4gIFNldEZpbGVDb25maWRlbnRpYWxPcHRpb25zLFxuICBVbmFyY2hpdmVEaXJlY3RvcnlPcHRpb25zLFxuICBVcGRhdGVEaXJlY3RvcnlPcHRpb25zLFxuICBVcGRhdGVGaWxlT3B0aW9ucyxcbn0gZnJvbSAnLi9pdGVtMi50eXBlcyc7XG5cbkBSdW5PdXRzaWRlQW5ndWxhcih7XG4gIG5nWm9uZU5hbWU6ICduZ1pvbmUnLFxufSlcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBJdGVtMlNlcnZpY2UgZXh0ZW5kcyBMclNlcnZpY2Uge1xuICAvLyBDYWNoaW5nIHRoZSB0ZW1wIGRpcmVjdG9yeS5cbiAgcHJpdmF0ZSB0ZW1wRGlyZWN0b3J5OiBJZEtleVBhaXIgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBmaWxlVXBsb2FkU2VydmljZTogRmlsZVVwbG9hZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlTZXJ2aWNlOiBLZXlTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5RmFjdG9yeTogS2V5RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9ja1NlcnZpY2U6IExvY2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IExpZmVSZWFkeUF1dGhTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmFkZExvZ291dExpc3RlbmVyKCgpID0+IHRoaXMub25Mb2dvdXQoKSk7XG4gIH1cblxuICBzdGF0aWMgVEVNUF9ESVJFQ1RPUllfUExBSU5fTUVUQSA9IHsga2NUeXBlOiAndGVtcCcgfTtcbiAgc3RhdGljIFRFTVBfRElSRUNUT1JZX1BMQUlOX01FVEFfRklMVEVSID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIGZpbHRlcjogW1xuICAgICAge1xuICAgICAgICBjb250YWluczogSXRlbTJTZXJ2aWNlLlRFTVBfRElSRUNUT1JZX1BMQUlOX01FVEEsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIGFzeW5jIGRvd25sb2FkRmlsZUNvbnRlbnQoXG4gICAgb3B0aW9uczogRG93bmxvYWRGaWxlQ29udGVudE9wdGlvbnNcbiAgKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgIGNvbnN0IGZpbGVDb250ZW50ID0gYXdhaXQgdGhpcy5maWxlVXBsb2FkU2VydmljZS5kb3dubG9hZEVuY3J5cHRlZEZpbGUyKFxuICAgICAgb3B0aW9ucy5maWxlU3RhdGVOb2RlSWRcbiAgICApO1xuXG4gICAgY29uc3QgZmlsZVN0YXRlS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkoXG4gICAgICBvcHRpb25zLmZpbGVTdGF0ZUtleUlkLFxuICAgICAgKCkgPT4gdGhpcy5nZXRGaWxlU3RhdGVLZXlJZChvcHRpb25zLmZpbGVTdGF0ZU5vZGVJZClcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMua2V5R3JhcGguZGVjcnlwdEZyb21TdHJpbmcoZmlsZVN0YXRlS2V5LCBmaWxlQ29udGVudCwge1xuICAgICAgcGF5bG9hZFR5cGU6ICdBcnJheUJ1ZmZlcicsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXREaXJlY3RvcnlLZXlJZChkaXJlY3RvcnlJZDogTHJSZWxheUlkSW5wdXQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgdGhpcy5xdWVyeSh7XG4gICAgICAgIHF1ZXJ5OiBEaXJlY3RvcnlLZXlRdWVyeSxcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgaWQ6IGRpcmVjdG9yeUlkLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApLmRpcmVjdG9yeS5rZXlJZDtcbiAgfVxuXG4gIGFzeW5jIGdldEZpbGVLZXlJZChmaWxlSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IHRoaXMucXVlcnkoe1xuICAgICAgICBxdWVyeTogRmlsZUtleVF1ZXJ5LFxuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBpZDogZmlsZUlkLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApLmZpbGUua2V5SWQ7XG4gIH1cblxuICBhc3luYyBnZXREaXJlY3RvcnlLZXkoXG4gICAgZGlyZWN0b3J5SWQ6IExyUmVsYXlJZElucHV0LFxuICAgIGRpcmVjdG9yeUtleUlkPzogTHJSZWxheUlkSW5wdXRcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMua2V5R3JhcGguZ2V0S2V5KGRpcmVjdG9yeUtleUlkLCAoKSA9PlxuICAgICAgdGhpcy5nZXREaXJlY3RvcnlLZXlJZChkaXJlY3RvcnlJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0RmlsZUtleShmaWxlSWQ6IExyUmVsYXlJZElucHV0LCBmaWxlS2V5SWQ/OiBMclJlbGF5SWRJbnB1dCkge1xuICAgIHJldHVybiB0aGlzLmtleUdyYXBoLmdldEtleShmaWxlS2V5SWQsICgpID0+IHRoaXMuZ2V0RmlsZUtleUlkKGZpbGVJZCkpO1xuICB9XG5cbiAgY3JlYXRlRGlyZWN0b3J5RXhlYyhvcHRpb25zOiBDcmVhdGVEaXJlY3RvcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuY3JlYXRlRGlyZWN0b3J5TXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgY3JlYXRlRGlyZWN0b3J5KG9wdGlvbnM6IENyZWF0ZURpcmVjdG9yeU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVEaXJlY3RvcnlNdXRhdGlvbihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZURpcmVjdG9yeU11dGF0aW9uKG9wdGlvbnM6IENyZWF0ZURpcmVjdG9yeU9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENyZWF0ZURpcmVjdG9yeU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVEaXJlY3Rvcnkob3B0aW9ucyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlRGlyZWN0b3J5RXhlYyhvcHRpb25zOiBVcGRhdGVEaXJlY3RvcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMudXBkYXRlRGlyZWN0b3J5TXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgdXBkYXRlRGlyZWN0b3J5KG9wdGlvbnM6IFVwZGF0ZURpcmVjdG9yeU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVEaXJlY3RvcnlNdXRhdGlvbihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZURpcmVjdG9yeU11dGF0aW9uKG9wdGlvbnM6IFVwZGF0ZURpcmVjdG9yeU9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZURpcmVjdG9yeU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiBhd2FpdCB0aGlzLnByZXBhcmVVcGRhdGVEaXJlY3Rvcnkob3B0aW9ucyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlRGlyZWN0b3J5RXhlYyhpZDogSUQpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5kZWxldGVEaXJlY3RvcnlNdXRhdGlvbihpZCkpO1xuICB9XG5cbiAgZGVsZXRlRGlyZWN0b3J5KGlkOiBJRCkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZURpcmVjdG9yeU11dGF0aW9uKGlkKTtcbiAgfVxuXG4gIGRlbGV0ZURpcmVjdG9yeU11dGF0aW9uKGlkOiBJRCkge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlRGlyZWN0b3J5TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBkaXJlY3RvcnlJZDogaWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlRmlsZUV4ZWMob3B0aW9uczogQ3JlYXRlRmlsZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5jcmVhdGVGaWxlTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgY3JlYXRlRmlsZShvcHRpb25zOiBDcmVhdGVGaWxlT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUZpbGVNdXRhdGlvbihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUZpbGVNdXRhdGlvbihvcHRpb25zOiBDcmVhdGVGaWxlT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQ3JlYXRlRmlsZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVGaWxlKG9wdGlvbnMpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUZpbGVFeGVjKG9wdGlvbnM6IFVwZGF0ZUZpbGVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMudXBkYXRlRmlsZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIHVwZGF0ZUZpbGUob3B0aW9uczogVXBkYXRlRmlsZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVGaWxlTXV0YXRpb24ob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVGaWxlTXV0YXRpb24ob3B0aW9uczogVXBkYXRlRmlsZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZUZpbGVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDogYXdhaXQgdGhpcy5wcmVwYXJlVXBkYXRlRmlsZShvcHRpb25zKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXZlcnRGaWxlRXhlYyhvcHRpb25zOiBSZXZlcnRGaWxlT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnJldmVydEZpbGVNdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICByZXZlcnRGaWxlKG9wdGlvbnM6IFJldmVydEZpbGVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucmV2ZXJ0RmlsZU11dGF0aW9uKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgcmV2ZXJ0RmlsZU11dGF0aW9uKG9wdGlvbnM6IFJldmVydEZpbGVPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBSZXZlcnRGaWxlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IG9wdGlvbnMsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlRmlsZUV4ZWMoaWQ6IElEKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuZGVsZXRlRmlsZU11dGF0aW9uKGlkKSk7XG4gIH1cblxuICBkZWxldGVGaWxlKGlkOiBJRCkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZUZpbGVNdXRhdGlvbihpZCk7XG4gIH1cblxuICBkZWxldGVGaWxlTXV0YXRpb24oaWQ6IElEKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBEZWxldGVGaWxlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBmaWxlSWQ6IGlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFyY2hpdmVEaXJlY3RvcnlFeGVjKGRpcmVjdG9yeUlkOiBzdHJpbmcsIG9wdGlvbnM6IEFyY2hpdmVEaXJlY3RvcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuYXJjaGl2ZURpcmVjdG9yeU11dGF0aW9uKGRpcmVjdG9yeUlkLCBvcHRpb25zKSk7XG4gIH1cblxuICBhcmNoaXZlRGlyZWN0b3J5KGRpcmVjdG9yeUlkOiBzdHJpbmcsIG9wdGlvbnM6IEFyY2hpdmVEaXJlY3RvcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuYXJjaGl2ZURpcmVjdG9yeU11dGF0aW9uKGRpcmVjdG9yeUlkLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbihcbiAgICBkaXJlY3RvcnlJZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEFyY2hpdmVEaXJlY3RvcnlPcHRpb25zXG4gICkge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQXJjaGl2ZURpcmVjdG9yeU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgZGlyZWN0b3J5SWQsXG4gICAgICAgICAgcmVjdXJzaXZlOiBvcHRpb25zLnJlY3Vyc2l2ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhcmNoaXZlRmlsZUV4ZWMoZmlsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5hcmNoaXZlRmlsZU11dGF0aW9uKGZpbGVJZCkpO1xuICB9XG5cbiAgYXJjaGl2ZUZpbGVNdXRhdGlvbihmaWxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQXJjaGl2ZUZpbGVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGZpbGVJZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICB1bmFyY2hpdmVEaXJlY3RvcnlFeGVjKFxuICAgIGRpcmVjdG9yeUlkOiBzdHJpbmcsXG4gICAgb3B0aW9uczogVW5hcmNoaXZlRGlyZWN0b3J5T3B0aW9uc1xuICApIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy51bmFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbihkaXJlY3RvcnlJZCwgb3B0aW9ucykpO1xuICB9XG5cbiAgdW5hcmNoaXZlRGlyZWN0b3J5KGRpcmVjdG9yeUlkOiBzdHJpbmcsIG9wdGlvbnM6IFVuYXJjaGl2ZURpcmVjdG9yeU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy51bmFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbihkaXJlY3RvcnlJZCwgb3B0aW9ucyk7XG4gIH1cblxuICB1bmFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbihcbiAgICBkaXJlY3RvcnlJZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFVuYXJjaGl2ZURpcmVjdG9yeU9wdGlvbnNcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBVbmFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGRpcmVjdG9yeUlkLFxuICAgICAgICAgIHJlY3Vyc2l2ZTogb3B0aW9ucy5yZWN1cnNpdmUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgdW5hcmNoaXZlRmlsZUV4ZWMoZmlsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy51bmFyY2hpdmVGaWxlTXV0YXRpb24oZmlsZUlkKSk7XG4gIH1cblxuICB1bmFyY2hpdmVGaWxlKGZpbGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudW5hcmNoaXZlRmlsZU11dGF0aW9uKGZpbGVJZCk7XG4gIH1cblxuICB1bmFyY2hpdmVGaWxlTXV0YXRpb24oZmlsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVuYXJjaGl2ZUZpbGVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGZpbGVJZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBjaGFuZ2VEaXJlY3RvcnlQYXJlbnRzKG9wdGlvbnM6IENoYW5nZURpcmVjdG9yeVBhcmVudHNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuY2hhbmdlRGlyZWN0b3J5UGFyZW50c011dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIGNoYW5nZURpcmVjdG9yeVBhcmVudHNNdXRhdGlvbihvcHRpb25zOiBDaGFuZ2VEaXJlY3RvcnlQYXJlbnRzT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQ2hhbmdlRGlyZWN0b3J5UGFyZW50c011dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiBhd2FpdCB0aGlzLnByZXBhcmVDaGFuZ2VEaXJlY3RvcnlQYXJlbnRzKG9wdGlvbnMpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNoYW5nZUZpbGVQYXJlbnRzKG9wdGlvbnM6IENoYW5nZUZpbGVQYXJlbnRzT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNoYW5nZUZpbGVQYXJlbnRzTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgY2hhbmdlRmlsZVBhcmVudHNNdXRhdGlvbihvcHRpb25zOiBDaGFuZ2VGaWxlUGFyZW50c09wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENoYW5nZUZpbGVQYXJlbnRzTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IGF3YWl0IHRoaXMucHJlcGFyZUNoYW5nZUZpbGVQYXJlbnRzKG9wdGlvbnMpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGJlZ2luRGVsZXRlQ2hpbGRJdGVtTGlua3NXaW5kb3coXG4gICAgb3B0aW9uczogQmVnaW5EZWxldGVDaGlsZEl0ZW1MaW5rc1dpbmRvd09wdGlvbnNcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuYmVnaW5EZWxldGVDaGlsZEl0ZW1MaW5rc1dpbmRvd011dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSBjbGVhbnVwIG9mIHRoZSBoYXJkIGxpbmtzIGluIGEgZGlyZWN0b3J5LlxuICAgKiBUaGUgc2VydmVyIHdpbGwgZGVsZXRlIGFsbCBoYXJkIGxpbmsgd2l0aGluIHRoZSBkaXJlY3Rvcnkgd2l0aGluIGEgdGltZSB3aW5kb3c6IHN0YXJ0aW5nIGZyb20gbm93IGFuZFxuICAgKiBlbmRpbmcgYXQgcmVxdWVzdFdpbmRvd01zIGFmdGVyIG5vdy5cbiAgICogVGhlIHNlcnZlciBkZWNpZGVzIF93aGVuXyBpdCB3aWxsIHBlcmZvcm0gdGhlIGRlbGV0ZS4gSXQncyBub3QgZ3VhcmFudGVlZCB0aGF0IGl0IHdpbGwgcGVyZm9ybVxuICAgKiB0aGUgZGVsZXRlIGF0IFwibm93ICsgcmVxdWVzdFdpbmRvd01zXCIsIGJ1dCBpdCB3aWxsIGhhcHBlbiBhdCBzb21lIHRpbWUgYWZ0ZXIgXCJub3cgKyByZXF1ZXN0V2luZG93TXNcIi5cbiAgICogVGhpcyBhbGxvd3MgbXVsdGlwbGUgb3ZlcmxhcHBpbmcgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBhbmQgdGhlIHNlcnZlciBhbGxvY2F0ZXMgZW5vdWdoIGZvciBlYWNoIHJlcXVlc3QuXG4gICAqIFRoZSBzZXJ2ZXIgaGFzIGEgc2V0dGluZyB0aGF0IGFsbG93cyBmb3IgYSBtYXhpbXVtIHZhbHVlIG9uIHJlcXVlc3RXaW5kb3dNcy4gSWYgdGhlIHJlcXVlc3RlZCB2YWx1ZVxuICAgKiBpcyBsYXJnZXIgdGhhbiB0aGlzIG1heGltdW0sIHRoZSBjYWxsIHdpbGwgZmFpbC5cbiAgICovXG4gIGFzeW5jIGJlZ2luRGVsZXRlQ2hpbGRJdGVtTGlua3NXaW5kb3dNdXRhdGlvbihcbiAgICBvcHRpb25zOiBCZWdpbkRlbGV0ZUNoaWxkSXRlbUxpbmtzV2luZG93T3B0aW9uc1xuICApIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IEJlZ2luRGVsZXRlQ2hpbGRJdGVtTGlua3NXaW5kb3dNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDogb3B0aW9ucyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogVGhpcyBtZXRob2QgbWF5IHJhaXNlIFZFUlNJT05fTUlTTUFUQ0ggZXhjZXB0aW9uIGlmIHRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb25cbiAgICogd2hlbiBtdWx0aXBsZSBjbGllbnRzIHRyeSB0byBjcmVhdGUgdGhlIHRlbXAgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBUT0RPIFRoZXJlIGlzIGEgcmV0cnkgbWVjaGFuaXNtIGluIGdyYXBocWwgd2l0aCBleHBvbmVudGlhbCBiYWNrIG9mZiBidXQgdGhhdCdzIGludGVybmFsLlxuICAgKiBCdXQgbmVlZCB0byB1c2UgYW4gZXhwb25lbnRpYWwgYmFjayBvZmYgbGliIGlmIHdlIHdhbnQgdG8gcmV0cnkgaGVyZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIElEIG9mIHRoZSB0ZW1wIGRpcmVjdG9yeVxuICAgKlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlVGVtcERpcmVjdG9yeSgpOiBQcm9taXNlPElkS2V5UGFpcj4ge1xuICAgIGlmICh0aGlzLnRlbXBEaXJlY3RvcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnRlbXBEaXJlY3Rvcnk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCB0aGlzLnF1ZXJ5KHtcbiAgICAgIHF1ZXJ5OiBUZW1wRGlyZWN0b3J5UXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgcGxhaW5NZXRhOiBJdGVtMlNlcnZpY2UuVEVNUF9ESVJFQ1RPUllfUExBSU5fTUVUQV9GSUxURVIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKGV4aXN0aW5nLnJvb3REaXJlY3Rvcmllcy5lZGdlcy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgVGhlcmUgaXMgbW9yZSB0aGFuIDEgdGVtcCBkaXJlY3RvcnkgKHBsYWluTWV0YSBmaWx0ZXI6ICR7SXRlbTJTZXJ2aWNlLlRFTVBfRElSRUNUT1JZX1BMQUlOX01FVEFfRklMVEVSfSlgXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChleGlzdGluZy5yb290RGlyZWN0b3JpZXMuZWRnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBEb2Vzbid0IGV4aXN0IHlldCwgY3JlYXRlIGl0XG4gICAgICBjb25zdCBjcmVhdGVEaXJlY3RvcnkgPSBhd2FpdCB0aGlzLmNyZWF0ZURpcmVjdG9yeSh7XG4gICAgICAgIGFzUm9vdERpcmVjdG9yeTogdHJ1ZSxcbiAgICAgICAgcGxhaW5NZXRhSnNvbjogSXRlbTJTZXJ2aWNlLlRFTVBfRElSRUNUT1JZX1BMQUlOX01FVEEsXG4gICAgICB9KTtcblxuICAgICAgLy8gT3B0aW1pc3RpYyBsb2NrIG9uIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICBjb25zdCB1cGRhdGVMb2NrID0gdGhpcy5sb2NrU2VydmljZS51cGRhdGVMb2NrTXV0YXRpb24oe1xuICAgICAgICB2ZXJzaW9uOiBleGlzdGluZy5sb2NrPy52ZXJzaW9uLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEJlY2F1c2UgdGhpcy5tdXRhdGUoKSBvbmx5IGhhbmRsZXMgc2ltcGxlIHR5cGVzIHdlIG5lZWQgdG8gdXNlIHRoZSBtb3JlXG4gICAgICAvLyBhZHZhbmNlZCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZSgpXG4gICAgICBjb25zdCBbY3JlYXRlRGlyZWN0b3J5UmVzdWx0XSA9IGF3YWl0IHRoaXMubHJHcmFwaFFMLmxyTXV0YXRlKFtcbiAgICAgICAgY3JlYXRlRGlyZWN0b3J5LFxuICAgICAgICB1cGRhdGVMb2NrLFxuICAgICAgXSk7XG5cbiAgICAgIGNvbnN0IHsgaWQsIGtleUlkIH0gPSBjcmVhdGVEaXJlY3RvcnlSZXN1bHQuY3JlYXRlRGlyZWN0b3J5LmRpcmVjdG9yeTtcblxuICAgICAgdGhpcy50ZW1wRGlyZWN0b3J5ID0ge1xuICAgICAgICBpZCxcbiAgICAgICAga2V5SWQsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXR1cm4gZXhpc3RpbmcgdGVtcFxuICAgICAgY29uc3QgeyBpZCwga2V5SWQgfSA9IGV4aXN0aW5nLnJvb3REaXJlY3Rvcmllcy5lZGdlc1swXS5ub2RlO1xuXG4gICAgICB0aGlzLnRlbXBEaXJlY3RvcnkgPSB7XG4gICAgICAgIGlkLFxuICAgICAgICBrZXlJZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGVtcERpcmVjdG9yeTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZURpcmVjdG9yeVRyZWUob3B0aW9uczogQ3JlYXRlRGlyZWN0b3J5VHJlZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5jcmVhdGVEaXJlY3RvcnlUcmVlTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFlvdSBtdXN0IHJ1biB0aGlzIG11dGF0aW9uIHdpdGhpbiB0aGUgdGVtcCBkaXJlY3RvcnkgY2xlYW51cCB3aW5kb3cgb24gdGhlXG4gICAqIHNlcnZlciwgb3RoZXJ3aXNlIHRoZSB0ZW1wIGRpcmVjdG9yeSB3aWxsIGdldCBjbGVhbmVkIHVwLlxuICAgKlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlRGlyZWN0b3J5VHJlZU11dGF0aW9uKG9wdGlvbnM6IENyZWF0ZURpcmVjdG9yeVRyZWVPcHRpb25zKSB7XG4gICAgY29uc3QgdGVtcERpciA9IGF3YWl0IHRoaXMuZW5zdXJlVGVtcERpcmVjdG9yeSgpO1xuXG4gICAgLy8gQ2xlYXIgdGhlIHRlbXAgZGlyZWN0b3J5IG9mIHRoZSBvbmVzIHdlIGFyZSBhYm91dCB0byBjcmVhdGUuXG4gICAgLy8gTk9URTogdGhpcyBtdXRhdGlvbiBjYW4gbm90IGJlIG1lcmdlZCBpbnRvIGEgc2luZ2xlIG11dGF0aW9uIHdpdGggdGhlXG4gICAgLy8gdGhlIGNyZWF0ZURpcmVjdG9yeSBtdXRhdGlvbiBiZWNhdXNlIGl0IHVzZXMgdGhlIGN1cnJlbnQgc2VydmVyIHRpbWUgdG9cbiAgICAvLyBjbGVhbiB1cC4gU28gaXQgbXVzdCBzdWNjZXNzZnVsbHkgY29tcGxldGUgYmVmb3JlIHRoZSBjcmVhdGlvbiBvZiB0aGVcbiAgICAvLyBkaXJlY3Rvcmllcy5cbiAgICBhd2FpdCB0aGlzLmJlZ2luRGVsZXRlQ2hpbGRJdGVtTGlua3NXaW5kb3coe1xuICAgICAgZGlyZWN0b3J5SWQ6IHRlbXBEaXIuaWQsXG4gICAgICByZXF1ZXN0V2luZG93TXM6IG9wdGlvbnMucmVxdWVzdFdpbmRvd01zLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBkaXJlY3RvcnkgdGhhdCBoYXMgY29udGVudHNcbiAgICBjb25zdCBkaXJlY3RvcnkgPSAoXG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZURpcmVjdG9yeUV4ZWMoe1xuICAgICAgICBjaXBoZXJNZXRhQ2xlYXJKc29uOiBvcHRpb25zLmNpcGhlck1ldGFDbGVhckpzb24sXG4gICAgICAgIHBhcmVudERpcmVjdG9yaWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0b3J5SWQ6IHRlbXBEaXIuaWQsXG4gICAgICAgICAgICB3cmFwcGluZ0tleUlkOiB0ZW1wRGlyLmtleUlkLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHBsYWluTWV0YUpzb246IG9wdGlvbnMucGxhaW5NZXRhSnNvbixcbiAgICAgIH0pXG4gICAgKS5jcmVhdGVEaXJlY3RvcnkuZGlyZWN0b3J5O1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBjb250ZW50c1xuICAgIGF3YWl0IG9wdGlvbnMuY3JlYXRlQ29udGVudCh7XG4gICAgICBpZDogZGlyZWN0b3J5LmlkLFxuICAgICAga2V5SWQ6IGRpcmVjdG9yeS5rZXlJZCxcbiAgICB9KTtcblxuICAgIC8vIFRPRE8gY2xpZW50LXNpZGUgY2hlY2sgZm9yIHRpbWVvdXQgb24gcmVxdWVzdFdpbmRvd01zXG4gICAgLy8gVE9ETyByZXR1cm4gdGhlIHNlcnZlciB0aW1lIHdoZXJlIGRlbGV0ZSBpcyBzY2hlZHVsZWQuIEV4cGlyYWJsZSBtdXRhdGlvblxuXG4gICAgLy8gUmV0dXJuIHRoZSBtdXRhdGlvbiB0aGF0IG1vdmVzIHRoZSBkaXJlY3RvcnkgaW50byB0aGUgZHN0IGRpcmVjdG9yaWVzXG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlRGlyZWN0b3J5UGFyZW50c011dGF0aW9uKHtcbiAgICAgIGRpcmVjdG9yeUlkOiBkaXJlY3RvcnkuaWQsXG4gICAgICBkaXJlY3RvcnlLZXlJZDogZGlyZWN0b3J5LmtleUlkLFxuICAgICAgcGFyZW50c1RvUmVtb3ZlOiBbdGVtcERpci5pZF0sXG4gICAgICBwYXJlbnRzVG9BZGQ6IG9wdGlvbnMucGFyZW50RGlyZWN0b3JpZXMsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzZXRGaWxlQ29uZmlkZW50aWFsKG9wdGlvbnM6IFNldEZpbGVDb25maWRlbnRpYWxPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuc2V0RmlsZUNvbmZpZGVudGlhbE11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIHNldEZpbGVDb25maWRlbnRpYWxNdXRhdGlvbihvcHRpb25zOiBTZXRGaWxlQ29uZmlkZW50aWFsT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogU2V0RmlsZUNvbmZpZGVudGlhbE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgZmlsZUlkOiBvcHRpb25zLmZpbGVJZCxcbiAgICAgICAgICBjb25maWRlbnRpYWw6IG9wdGlvbnMuY29uZmlkZW50aWFsLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNldERpcmVjdG9yeUNvbmZpZGVudGlhbChvcHRpb25zOiBTZXREaXJlY3RvcnlDb25maWRlbnRpYWxPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuc2V0RGlyZWN0b3J5Q29uZmlkZW50aWFsTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgYXN5bmMgc2V0RGlyZWN0b3J5Q29uZmlkZW50aWFsTXV0YXRpb24oXG4gICAgb3B0aW9uczogU2V0RGlyZWN0b3J5Q29uZmlkZW50aWFsT3B0aW9uc1xuICApIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFNldERpcmVjdG9yeUNvbmZpZGVudGlhbE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgZGlyZWN0b3J5SWQ6IG9wdGlvbnMuZGlyZWN0b3J5SWQsXG4gICAgICAgICAgY29uZmlkZW50aWFsOiBvcHRpb25zLmNvbmZpZGVudGlhbCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEhlbHBlcnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVBhcmVudERpcmVjdG9yeShcbiAgICBvcHRpb25zOiBQYXJlbnREaXJlY3RvcnlPcHRpb25zLFxuICAgIG5ld0tleTogSldLLktleVxuICApOiBQcm9taXNlPFBhcmVudERpcmVjdG9yeUlucHV0PiB7XG4gICAgLy8gSWYgZGlyZWN0b3J5J3Mga2V5IGlzIG5vdCBhbHJlYWR5IGluIHRoZSBrZXkgZ3JhcGgsIHRoZW4gbmVlZCB0b1xuICAgIC8vIGZldGNoIHRoZSBkaXJlY3RvcnkncyBrZXkuXG4gICAgY29uc3Qgd3JhcHBpbmdLZXkgPSBhd2FpdCB0aGlzLmdldERpcmVjdG9yeUtleShcbiAgICAgIG9wdGlvbnMuZGlyZWN0b3J5SWQsXG4gICAgICBvcHRpb25zLndyYXBwaW5nS2V5SWRcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpcmVjdG9yeUlkOiBvcHRpb25zLmRpcmVjdG9yeUlkLFxuICAgICAgd3JhcHBpbmdLZXlJZDogd3JhcHBpbmdLZXkuaWQsXG4gICAgICB3cmFwcGVkS2V5OiBhd2FpdCB0aGlzLmtleUdyYXBoLndyYXBLZXkod3JhcHBpbmdLZXksIG5ld0tleSksXG4gICAgICBsaW5rVHlwZTogb3B0aW9ucy5saW5rVHlwZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRGaWxlU3RhdGVLZXlJZChmaWxlU3RhdGVOb2RlSWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IHRoaXMucXVlcnkoe1xuICAgICAgICBxdWVyeTogRmlsZVN0YXRlS2V5UXVlcnksXG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGlkOiBmaWxlU3RhdGVOb2RlSWQsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICkuZmlsZVN0YXRlLmtleUlkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ3JlYXRlRmlsZVN0YXRlKFxuICAgIGZpbGVLZXk6IEpXSy5LZXksXG4gICAgb3B0aW9uczogQ3JlYXRlRmlsZU9wdGlvbnMgfCBVcGRhdGVGaWxlT3B0aW9uc1xuICApIHtcbiAgICAvLyBFYWNoIHZlcnNpb24gb2YgdGhlIGZpbGUgaXMgZW5jcnlwdGVkIHVzaW5nIGEgbmV3IGtleS5cbiAgICBjb25zdCBmaWxlU3RhdGVLZXkgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlS2V5KCk7XG5cbiAgICBjb25zdCBmaWxlQ29udGVudCA9XG4gICAgICBvcHRpb25zLmZpbGUgJiYgKGF3YWl0IHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UubG9hZEZpbGUob3B0aW9ucy5maWxlKSk7XG5cbiAgICBsZXQgY29udGVudFJlc291cmNlOiBzdHJpbmc7XG4gICAgaWYgKGZpbGVDb250ZW50KSB7XG4gICAgICBjb25zdCBjaXBoZXJGaWxlQ29udGVudCA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBmaWxlU3RhdGVLZXksXG4gICAgICAgIGZpbGVDb250ZW50XG4gICAgICApO1xuICAgICAgaWYgKG9wdGlvbnMudXBsb2FkKSB7XG4gICAgICAgIGNvbnRlbnRSZXNvdXJjZSA9IGF3YWl0IG9wdGlvbnMudXBsb2FkKGNpcGhlckZpbGVDb250ZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRlbnRSZXNvdXJjZSA9IGF3YWl0IHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UudXBsb2FkRW5jcnlwdGVkRmlsZSh7XG4gICAgICAgICAgZW5jcnlwdGVkQ29udGVudDogY2lwaGVyRmlsZUNvbnRlbnQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi4oYXdhaXQgdGhpcy5wcmVwYXJlSXRlbShmaWxlU3RhdGVLZXksIG9wdGlvbnMpKSxcbiAgICAgIHdyYXBwZWRTdGF0ZUtleTogYXdhaXQgdGhpcy5rZXlHcmFwaC53cmFwS2V5KGZpbGVLZXksIGZpbGVTdGF0ZUtleSksXG4gICAgICBjb250ZW50UmVzb3VyY2UsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNoYW5nZUl0ZW1QYXJlbnRzKFxuICAgIG9wdGlvbnM6IENoYW5nZUl0ZW1QYXJlbnRzT3B0aW9ucyxcbiAgICBpdGVtS2V5OiBKV0suS2V5XG4gICkge1xuICAgIGNvbnN0IHBhcmVudHNUb0FkZCA9IG9wdGlvbnMucGFyZW50c1RvQWRkXG4gICAgICA/IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIG9wdGlvbnMucGFyZW50c1RvQWRkLm1hcCgodCkgPT5cbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBhcmVudERpcmVjdG9yeSh0LCBpdGVtS2V5KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgOiBbXTtcblxuICAgIHJldHVybiB7XG4gICAgICBkaXJlY3Rvcmllc1RvUmVtb3ZlOiBvcHRpb25zLnBhcmVudHNUb1JlbW92ZSB8fCBbXSxcbiAgICAgIGRpcmVjdG9yaWVzVG9BZGQ6IHBhcmVudHNUb0FkZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlSXRlbShcbiAgICBrZXk6IEpXSy5LZXksXG4gICAgb3B0aW9uczogeyBwbGFpbk1ldGFKc29uPzogSlNPTk9iamVjdDsgY2lwaGVyTWV0YUNsZWFySnNvbj86IEpTT05PYmplY3QgfVxuICApIHtcbiAgICBjb25zdCB7IHBsYWluTWV0YUpzb24sIGNpcGhlck1ldGFDbGVhckpzb24gfSA9IG9wdGlvbnM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGxhaW5NZXRhOiBwbGFpbk1ldGFKc29uICYmIEpTT04uc3RyaW5naWZ5KHBsYWluTWV0YUpzb24pLFxuICAgICAgY2lwaGVyTWV0YTpcbiAgICAgICAgY2lwaGVyTWV0YUNsZWFySnNvbiAmJlxuICAgICAgICAoYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoa2V5LCBjaXBoZXJNZXRhQ2xlYXJKc29uKSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNyZWF0ZURpcmVjdG9yeShvcHRpb25zOiBDcmVhdGVEaXJlY3RvcnlPcHRpb25zKSB7XG4gICAgY29uc3QgZGlyZWN0b3J5S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuICAgIG9wdGlvbnMucGFyZW50RGlyZWN0b3JpZXMgPSBvcHRpb25zLnBhcmVudERpcmVjdG9yaWVzIHx8IFtdO1xuICAgIGlmICghb3B0aW9ucy5hc1Jvb3REaXJlY3RvcnkgJiYgIW9wdGlvbnMucGFyZW50RGlyZWN0b3JpZXM/Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEtjQmFkQXJndW1lbnRFeGNlcHRpb24oXG4gICAgICAgICdBIG5ldyBkaXJlY3RvcnkgbXVzdCBiZSBlaXRoZXIgYSByb290IGRpcmVjdG9yeSBvciBhIHN1Yi1kaXJlY3RvcnkuIFNvIHlvdSBtdXN0IHByb3ZpZGUgZWl0aGVyIHBhcmVudERpcmVjdG9yaWVzIGFuZC9vciBhc1Jvb3REaXJlY3RvcnkgcGFyYW1ldGVyLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50RGlyZWN0b3JpZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG9wdGlvbnMucGFyZW50RGlyZWN0b3JpZXM/Lm1hcCgodCkgPT5cbiAgICAgICAgdGhpcy5wcmVwYXJlUGFyZW50RGlyZWN0b3J5KHQsIGRpcmVjdG9yeUtleSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgLy8gVE9ETyB0aGlzIGlzIHJhdGhlciBhbiB1bmZvcnR1bmF0ZSBuYW1lLCBjaGFuZ2UgaXQgdG8gYXNSb290RGlyZWN0b3J5LlxuICAgIGxldCBwYXJlbnRSb290RGlyZWN0b3J5OiBQYXJlbnRSb290RGlyZWN0b3J5SW5wdXQ7XG4gICAgaWYgKG9wdGlvbnMuYXNSb290RGlyZWN0b3J5KSB7XG4gICAgICBjb25zdCByb290S2V5ID0gdGhpcy5rZXlTZXJ2aWNlLmdldEN1cnJlbnRSb290S2V5KCk7XG4gICAgICBwYXJlbnRSb290RGlyZWN0b3J5ID0ge1xuICAgICAgICB3cmFwcGluZ0tleUlkOiByb290S2V5LmlkLFxuICAgICAgICB3cmFwcGVkS2V5OiBhd2FpdCB0aGlzLmtleUdyYXBoLndyYXBLZXkocm9vdEtleSwgZGlyZWN0b3J5S2V5KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbUlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlSXRlbShkaXJlY3RvcnlLZXksIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLml0ZW1JbnB1dCxcbiAgICAgIHBhcmVudERpcmVjdG9yaWVzLFxuICAgICAgcGFyZW50Um9vdERpcmVjdG9yeSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlVXBkYXRlRGlyZWN0b3J5KG9wdGlvbnM6IFVwZGF0ZURpcmVjdG9yeU9wdGlvbnMpIHtcbiAgICBjb25zdCBkaXJlY3RvcnlLZXkgPSBhd2FpdCB0aGlzLmdldERpcmVjdG9yeUtleShcbiAgICAgIG9wdGlvbnMuZGlyZWN0b3J5SWQsXG4gICAgICBvcHRpb25zLmRpcmVjdG9yeUtleUlkXG4gICAgKTtcblxuICAgIGNvbnN0IGl0ZW1JbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZUl0ZW0oZGlyZWN0b3J5S2V5Lmp3aywgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uaXRlbUlucHV0LFxuICAgICAgZGlyZWN0b3J5SWQ6IG9wdGlvbnMuZGlyZWN0b3J5SWQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNyZWF0ZUZpbGUob3B0aW9uczogQ3JlYXRlRmlsZU9wdGlvbnMpIHtcbiAgICBjb25zdCBmaWxlS2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgY29uc3QgcGFyZW50RGlyZWN0b3JpZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG9wdGlvbnMucGFyZW50RGlyZWN0b3JpZXMubWFwKGFzeW5jICh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGlyZWN0b3J5SWQsIHdyYXBwaW5nS2V5SWQsIHdyYXBwZWRLZXkgfSA9XG4gICAgICAgICAgYXdhaXQgdGhpcy5wcmVwYXJlUGFyZW50RGlyZWN0b3J5KHQsIGZpbGVLZXkpO1xuICAgICAgICAvLyByZW1hcCBmcm9tIFBhcmVudERpcmVjdG9yeUlucHV0IHRvIEZpbGVQYXJlbnREaXJlY3RvcnlJbnB1dFxuICAgICAgICAvLyBUT0RPIHRoZSBzZXJ2ZXIgc2hvdWxkIHJlYWxseSBqdXN0IHVzZSB3cmFwcGVkS2V5IGluc3RlYWQgb2Ygd3JhcHBlZEZpbGVLZXlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXJlY3RvcnlJZCxcbiAgICAgICAgICB3cmFwcGluZ0tleUlkLFxuICAgICAgICAgIHdyYXBwZWRGaWxlS2V5OiB3cmFwcGVkS2V5LFxuICAgICAgICB9IGFzIEZpbGVQYXJlbnREaXJlY3RvcnlJbnB1dDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlRmlsZVN0YXRlKGZpbGVLZXksIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmlucHV0LFxuICAgICAgcGFyZW50RGlyZWN0b3JpZXMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVVwZGF0ZUZpbGUob3B0aW9uczogVXBkYXRlRmlsZU9wdGlvbnMpIHtcbiAgICBjb25zdCBmaWxlS2V5ID0gYXdhaXQgdGhpcy5nZXRGaWxlS2V5KG9wdGlvbnMuZmlsZUlkLCBvcHRpb25zLmZpbGVLZXlJZCk7XG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVGaWxlU3RhdGUoZmlsZUtleS5qd2ssIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmlucHV0LFxuICAgICAgZmlsZUlkOiBvcHRpb25zLmZpbGVJZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ2hhbmdlRGlyZWN0b3J5UGFyZW50cyhcbiAgICBvcHRpb25zOiBDaGFuZ2VEaXJlY3RvcnlQYXJlbnRzT3B0aW9uc1xuICApIHtcbiAgICBjb25zdCBkaXJlY3RvcnlLZXkgPSBhd2FpdCB0aGlzLmdldERpcmVjdG9yeUtleShcbiAgICAgIG9wdGlvbnMuZGlyZWN0b3J5SWQsXG4gICAgICBvcHRpb25zLmRpcmVjdG9yeUtleUlkXG4gICAgKTtcblxuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlQ2hhbmdlSXRlbVBhcmVudHMoXG4gICAgICBvcHRpb25zLFxuICAgICAgZGlyZWN0b3J5S2V5Lmp3a1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uaW5wdXQsXG4gICAgICBkaXJlY3RvcnlJZDogb3B0aW9ucy5kaXJlY3RvcnlJZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ2hhbmdlRmlsZVBhcmVudHMob3B0aW9uczogQ2hhbmdlRmlsZVBhcmVudHNPcHRpb25zKSB7XG4gICAgY29uc3QgZmlsZUtleSA9IGF3YWl0IHRoaXMuZ2V0RmlsZUtleShvcHRpb25zLmZpbGVJZCwgb3B0aW9ucy5maWxlS2V5SWQpO1xuXG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLnByZXBhcmVDaGFuZ2VJdGVtUGFyZW50cyhvcHRpb25zLCBmaWxlS2V5Lmp3ayk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uaW5wdXQsXG4gICAgICBmaWxlSWQ6IG9wdGlvbnMuZmlsZUlkLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG9uTG9nb3V0KCkge1xuICAgIC8vIENsZWFyIGFsbCBjYWNoZWQgZGF0YS5cbiAgICB0aGlzLnRlbXBEaXJlY3RvcnkgPSBudWxsO1xuICB9XG59XG4iXX0=
|
|
621
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbTIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9pdGVtMi9pdGVtMi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixtQkFBbUIsRUFDbkIsdUNBQXVDLEVBQ3ZDLDhCQUE4QixFQUM5Qix5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsMkJBQTJCLEVBQzNCLGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixrQkFBa0IsR0FDbkIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLGlCQUFpQixF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RSxPQUFPLENBQUMsV0FBVyxJQUNoQztRQUNKLENBQUM7S0FBQTtJQUVhLHdCQUF3QixDQUFDLE9BQWlDOztZQUN0RSxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFekUsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV4RSx1Q0FDSyxLQUFLLEtBQ1IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQ3RCO1FBQ0osQ0FBQztLQUFBO0lBRU8sUUFBUTtRQUNkLHlCQUF5QjtRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0NBQ0YsQ0FBQTtBQTFyQlEsc0NBQXlCLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDL0MsNkNBQWdDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN2RCxNQUFNLEVBQUU7UUFDTjtZQUNFLFFBQVEsRUFBRSxjQUFZLENBQUMseUJBQXlCO1NBQ2pEO0tBQ0Y7Q0FDRixDQUFDLENBQUM7OztZQTVCSixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQWhFOEIsTUFBTTtZQUFoQixRQUFRO1lBS3BCLGlCQUFpQjtZQUdqQixVQUFVO1lBRlYsaUJBQWlCO1lBQ2pCLGVBQWU7WUFFZixXQUFXO1lBTFgsb0JBQW9COztBQTZEaEIsWUFBWTtJQU54QixpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsWUFBWSxDQTRzQnhCO1NBNXNCWSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyTXV0YXRpb24sIExyU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1ncmFwaHFsJztcbmltcG9ydCB7IElELCBKU09OT2JqZWN0LCBMclJlbGF5SWRJbnB1dCB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBMaWZlUmVhZHlBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvbGlmZS1yZWFkeS1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsZVVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9ja1NlcnZpY2UgfSBmcm9tICcuLi9sb2NrL2xvY2suc2VydmljZSc7XG5pbXBvcnQgeyBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uIH0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgQXJjaGl2ZUZpbGVNdXRhdGlvbixcbiAgQmVnaW5EZWxldGVDaGlsZEl0ZW1MaW5rc1dpbmRvd011dGF0aW9uLFxuICBDaGFuZ2VEaXJlY3RvcnlQYXJlbnRzTXV0YXRpb24sXG4gIENoYW5nZUZpbGVQYXJlbnRzTXV0YXRpb24sXG4gIENyZWF0ZURpcmVjdG9yeU11dGF0aW9uLFxuICBDcmVhdGVGaWxlTXV0YXRpb24sXG4gIERlbGV0ZURpcmVjdG9yeU11dGF0aW9uLFxuICBEZWxldGVGaWxlTXV0YXRpb24sXG4gIFJldmVydEZpbGVNdXRhdGlvbixcbiAgU2V0RGlyZWN0b3J5Q29uZmlkZW50aWFsTXV0YXRpb24sXG4gIFNldEZpbGVDb25maWRlbnRpYWxNdXRhdGlvbixcbiAgVGVtcERpcmVjdG9yeVF1ZXJ5LFxuICBVbmFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgVW5hcmNoaXZlRmlsZU11dGF0aW9uLFxuICBVcGRhdGVEaXJlY3RvcnlNdXRhdGlvbixcbiAgVXBkYXRlRmlsZU11dGF0aW9uLFxufSBmcm9tICcuL2l0ZW0yLmdxbCc7XG5pbXBvcnQge1xuICBEaXJlY3RvcnlLZXlRdWVyeSxcbiAgRmlsZUtleVF1ZXJ5LFxuICBGaWxlU3RhdGVLZXlRdWVyeSxcbn0gZnJvbSAnLi9pdGVtMi5ncWwucHJpdmF0ZSc7XG5pbXBvcnQge1xuICBBcmNoaXZlRGlyZWN0b3J5T3B0aW9ucyxcbiAgQmVnaW5EZWxldGVDaGlsZEl0ZW1MaW5rc1dpbmRvd09wdGlvbnMsXG4gIENoYW5nZURpcmVjdG9yeVBhcmVudHNPcHRpb25zLFxuICBDaGFuZ2VGaWxlUGFyZW50c09wdGlvbnMsXG4gIENoYW5nZUl0ZW1QYXJlbnRzT3B0aW9ucyxcbiAgQ3JlYXRlRGlyZWN0b3J5T3B0aW9ucyxcbiAgQ3JlYXRlRGlyZWN0b3J5VHJlZU9wdGlvbnMsXG4gIENyZWF0ZUZpbGVPcHRpb25zLFxuICBEb3dubG9hZEZpbGVDb250ZW50T3B0aW9ucyxcbiAgRmlsZVBhcmVudERpcmVjdG9yeUlucHV0LFxuICBJZEtleVBhaXIsXG4gIFBhcmVudERpcmVjdG9yeUlucHV0LFxuICBQYXJlbnREaXJlY3RvcnlPcHRpb25zLFxuICBQYXJlbnRSb290RGlyZWN0b3J5SW5wdXQsXG4gIFJldmVydEZpbGVPcHRpb25zLFxuICBTZXREaXJlY3RvcnlDb25maWRlbnRpYWxPcHRpb25zLFxuICBTZXRGaWxlQ29uZmlkZW50aWFsT3B0aW9ucyxcbiAgVW5hcmNoaXZlRGlyZWN0b3J5T3B0aW9ucyxcbiAgVXBkYXRlRGlyZWN0b3J5T3B0aW9ucyxcbiAgVXBkYXRlRmlsZU9wdGlvbnMsXG59IGZyb20gJy4vaXRlbTIudHlwZXMnO1xuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSXRlbTJTZXJ2aWNlIGV4dGVuZHMgTHJTZXJ2aWNlIHtcbiAgLy8gQ2FjaGluZyB0aGUgdGVtcCBkaXJlY3RvcnkuXG4gIHByaXZhdGUgdGVtcERpcmVjdG9yeTogSWRLZXlQYWlyID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgZmlsZVVwbG9hZFNlcnZpY2U6IEZpbGVVcGxvYWRTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSxcbiAgICBwcml2YXRlIGxvY2tTZXJ2aWNlOiBMb2NrU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBMaWZlUmVhZHlBdXRoU2VydmljZVxuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgdGhpcy5hdXRoU2VydmljZS5hZGRMb2dvdXRMaXN0ZW5lcigoKSA9PiB0aGlzLm9uTG9nb3V0KCkpO1xuICB9XG5cbiAgc3RhdGljIFRFTVBfRElSRUNUT1JZX1BMQUlOX01FVEEgPSB7IGtjVHlwZTogJ3RlbXAnIH07XG4gIHN0YXRpYyBURU1QX0RJUkVDVE9SWV9QTEFJTl9NRVRBX0ZJTFRFUiA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBmaWx0ZXI6IFtcbiAgICAgIHtcbiAgICAgICAgY29udGFpbnM6IEl0ZW0yU2VydmljZS5URU1QX0RJUkVDVE9SWV9QTEFJTl9NRVRBLFxuICAgICAgfSxcbiAgICBdLFxuICB9KTtcblxuICBhc3luYyBkb3dubG9hZEZpbGVDb250ZW50KFxuICAgIG9wdGlvbnM6IERvd25sb2FkRmlsZUNvbnRlbnRPcHRpb25zXG4gICk6IFByb21pc2U8QXJyYXlCdWZmZXI+IHtcbiAgICBjb25zdCBmaWxlQ29udGVudCA9IGF3YWl0IHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UuZG93bmxvYWRFbmNyeXB0ZWRGaWxlMihcbiAgICAgIG9wdGlvbnMuZmlsZVN0YXRlTm9kZUlkXG4gICAgKTtcblxuICAgIGNvbnN0IGZpbGVTdGF0ZUtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0S2V5KFxuICAgICAgb3B0aW9ucy5maWxlU3RhdGVLZXlJZCxcbiAgICAgICgpID0+IHRoaXMuZ2V0RmlsZVN0YXRlS2V5SWQob3B0aW9ucy5maWxlU3RhdGVOb2RlSWQpXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmtleUdyYXBoLmRlY3J5cHRGcm9tU3RyaW5nKGZpbGVTdGF0ZUtleSwgZmlsZUNvbnRlbnQsIHtcbiAgICAgIHBheWxvYWRUeXBlOiAnQXJyYXlCdWZmZXInLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0RGlyZWN0b3J5S2V5SWQoZGlyZWN0b3J5SWQ6IExyUmVsYXlJZElucHV0KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IHRoaXMucXVlcnkoe1xuICAgICAgICBxdWVyeTogRGlyZWN0b3J5S2V5UXVlcnksXG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGlkOiBkaXJlY3RvcnlJZCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKS5kaXJlY3Rvcnkua2V5SWQ7XG4gIH1cblxuICBhc3luYyBnZXRGaWxlS2V5SWQoZmlsZUlkOiBMclJlbGF5SWRJbnB1dCkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCB0aGlzLnF1ZXJ5KHtcbiAgICAgICAgcXVlcnk6IEZpbGVLZXlRdWVyeSxcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgaWQ6IGZpbGVJZCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKS5maWxlLmtleUlkO1xuICB9XG5cbiAgYXN5bmMgZ2V0RGlyZWN0b3J5S2V5KFxuICAgIGRpcmVjdG9yeUlkOiBMclJlbGF5SWRJbnB1dCxcbiAgICBkaXJlY3RvcnlLZXlJZD86IExyUmVsYXlJZElucHV0XG4gICkge1xuICAgIHJldHVybiB0aGlzLmtleUdyYXBoLmdldEtleShkaXJlY3RvcnlLZXlJZCwgKCkgPT5cbiAgICAgIHRoaXMuZ2V0RGlyZWN0b3J5S2V5SWQoZGlyZWN0b3J5SWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZpbGVLZXkoZmlsZUlkOiBMclJlbGF5SWRJbnB1dCwgZmlsZUtleUlkPzogTHJSZWxheUlkSW5wdXQpIHtcbiAgICByZXR1cm4gdGhpcy5rZXlHcmFwaC5nZXRLZXkoZmlsZUtleUlkLCAoKSA9PiB0aGlzLmdldEZpbGVLZXlJZChmaWxlSWQpKTtcbiAgfVxuXG4gIGNyZWF0ZURpcmVjdG9yeUV4ZWMob3B0aW9uczogQ3JlYXRlRGlyZWN0b3J5T3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNyZWF0ZURpcmVjdG9yeU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGNyZWF0ZURpcmVjdG9yeShvcHRpb25zOiBDcmVhdGVEaXJlY3RvcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRGlyZWN0b3J5TXV0YXRpb24ob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVEaXJlY3RvcnlNdXRhdGlvbihvcHRpb25zOiBDcmVhdGVEaXJlY3RvcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVEaXJlY3RvcnlNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDogYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlRGlyZWN0b3J5KG9wdGlvbnMpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZURpcmVjdG9yeUV4ZWMob3B0aW9uczogVXBkYXRlRGlyZWN0b3J5T3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnVwZGF0ZURpcmVjdG9yeU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIHVwZGF0ZURpcmVjdG9yeShvcHRpb25zOiBVcGRhdGVEaXJlY3RvcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlRGlyZWN0b3J5TXV0YXRpb24ob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVEaXJlY3RvcnlNdXRhdGlvbihvcHRpb25zOiBVcGRhdGVEaXJlY3RvcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBVcGRhdGVEaXJlY3RvcnlNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDogYXdhaXQgdGhpcy5wcmVwYXJlVXBkYXRlRGlyZWN0b3J5KG9wdGlvbnMpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZURpcmVjdG9yeUV4ZWMoaWQ6IElEKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuZGVsZXRlRGlyZWN0b3J5TXV0YXRpb24oaWQpKTtcbiAgfVxuXG4gIGRlbGV0ZURpcmVjdG9yeShpZDogSUQpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVEaXJlY3RvcnlNdXRhdGlvbihpZCk7XG4gIH1cblxuICBkZWxldGVEaXJlY3RvcnlNdXRhdGlvbihpZDogSUQpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IERlbGV0ZURpcmVjdG9yeU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgZGlyZWN0b3J5SWQ6IGlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUZpbGVFeGVjKG9wdGlvbnM6IENyZWF0ZUZpbGVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuY3JlYXRlRmlsZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGNyZWF0ZUZpbGUob3B0aW9uczogQ3JlYXRlRmlsZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVGaWxlTXV0YXRpb24ob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVGaWxlTXV0YXRpb24ob3B0aW9uczogQ3JlYXRlRmlsZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENyZWF0ZUZpbGVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDogYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlRmlsZShvcHRpb25zKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVGaWxlRXhlYyhvcHRpb25zOiBVcGRhdGVGaWxlT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnVwZGF0ZUZpbGVNdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICB1cGRhdGVGaWxlKG9wdGlvbnM6IFVwZGF0ZUZpbGVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlRmlsZU11dGF0aW9uKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRmlsZU11dGF0aW9uKG9wdGlvbnM6IFVwZGF0ZUZpbGVPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBVcGRhdGVGaWxlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IGF3YWl0IHRoaXMucHJlcGFyZVVwZGF0ZUZpbGUob3B0aW9ucyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV2ZXJ0RmlsZUV4ZWMob3B0aW9uczogUmV2ZXJ0RmlsZU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5yZXZlcnRGaWxlTXV0YXRpb24ob3B0aW9ucykpO1xuICB9XG5cbiAgcmV2ZXJ0RmlsZShvcHRpb25zOiBSZXZlcnRGaWxlT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnJldmVydEZpbGVNdXRhdGlvbihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHJldmVydEZpbGVNdXRhdGlvbihvcHRpb25zOiBSZXZlcnRGaWxlT3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogUmV2ZXJ0RmlsZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiBvcHRpb25zLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZUZpbGVFeGVjKGlkOiBJRCkge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmRlbGV0ZUZpbGVNdXRhdGlvbihpZCkpO1xuICB9XG5cbiAgZGVsZXRlRmlsZShpZDogSUQpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVGaWxlTXV0YXRpb24oaWQpO1xuICB9XG5cbiAgZGVsZXRlRmlsZU11dGF0aW9uKGlkOiBJRCkge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlRmlsZU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgZmlsZUlkOiBpZCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhcmNoaXZlRGlyZWN0b3J5RXhlYyhkaXJlY3RvcnlJZDogc3RyaW5nLCBvcHRpb25zOiBBcmNoaXZlRGlyZWN0b3J5T3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbihkaXJlY3RvcnlJZCwgb3B0aW9ucykpO1xuICB9XG5cbiAgYXJjaGl2ZURpcmVjdG9yeShkaXJlY3RvcnlJZDogc3RyaW5nLCBvcHRpb25zOiBBcmNoaXZlRGlyZWN0b3J5T3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbihkaXJlY3RvcnlJZCwgb3B0aW9ucyk7XG4gIH1cblxuICBhcmNoaXZlRGlyZWN0b3J5TXV0YXRpb24oXG4gICAgZGlyZWN0b3J5SWQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiBBcmNoaXZlRGlyZWN0b3J5T3B0aW9uc1xuICApIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IEFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGRpcmVjdG9yeUlkLFxuICAgICAgICAgIHJlY3Vyc2l2ZTogb3B0aW9ucy5yZWN1cnNpdmUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYXJjaGl2ZUZpbGVFeGVjKGZpbGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuYXJjaGl2ZUZpbGVNdXRhdGlvbihmaWxlSWQpKTtcbiAgfVxuXG4gIGFyY2hpdmVGaWxlTXV0YXRpb24oZmlsZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IEFyY2hpdmVGaWxlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBmaWxlSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgdW5hcmNoaXZlRGlyZWN0b3J5RXhlYyhcbiAgICBkaXJlY3RvcnlJZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFVuYXJjaGl2ZURpcmVjdG9yeU9wdGlvbnNcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMudW5hcmNoaXZlRGlyZWN0b3J5TXV0YXRpb24oZGlyZWN0b3J5SWQsIG9wdGlvbnMpKTtcbiAgfVxuXG4gIHVuYXJjaGl2ZURpcmVjdG9yeShkaXJlY3RvcnlJZDogc3RyaW5nLCBvcHRpb25zOiBVbmFyY2hpdmVEaXJlY3RvcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMudW5hcmNoaXZlRGlyZWN0b3J5TXV0YXRpb24oZGlyZWN0b3J5SWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgdW5hcmNoaXZlRGlyZWN0b3J5TXV0YXRpb24oXG4gICAgZGlyZWN0b3J5SWQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiBVbmFyY2hpdmVEaXJlY3RvcnlPcHRpb25zXG4gICkge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogVW5hcmNoaXZlRGlyZWN0b3J5TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBkaXJlY3RvcnlJZCxcbiAgICAgICAgICByZWN1cnNpdmU6IG9wdGlvbnMucmVjdXJzaXZlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHVuYXJjaGl2ZUZpbGVFeGVjKGZpbGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMudW5hcmNoaXZlRmlsZU11dGF0aW9uKGZpbGVJZCkpO1xuICB9XG5cbiAgdW5hcmNoaXZlRmlsZShmaWxlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnVuYXJjaGl2ZUZpbGVNdXRhdGlvbihmaWxlSWQpO1xuICB9XG5cbiAgdW5hcmNoaXZlRmlsZU11dGF0aW9uKGZpbGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBVbmFyY2hpdmVGaWxlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBmaWxlSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgY2hhbmdlRGlyZWN0b3J5UGFyZW50cyhvcHRpb25zOiBDaGFuZ2VEaXJlY3RvcnlQYXJlbnRzT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmNoYW5nZURpcmVjdG9yeVBhcmVudHNNdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICBhc3luYyBjaGFuZ2VEaXJlY3RvcnlQYXJlbnRzTXV0YXRpb24ob3B0aW9uczogQ2hhbmdlRGlyZWN0b3J5UGFyZW50c09wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IENoYW5nZURpcmVjdG9yeVBhcmVudHNNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDogYXdhaXQgdGhpcy5wcmVwYXJlQ2hhbmdlRGlyZWN0b3J5UGFyZW50cyhvcHRpb25zKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjaGFuZ2VGaWxlUGFyZW50cyhvcHRpb25zOiBDaGFuZ2VGaWxlUGFyZW50c09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tdXRhdGUodGhpcy5jaGFuZ2VGaWxlUGFyZW50c011dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIGNoYW5nZUZpbGVQYXJlbnRzTXV0YXRpb24ob3B0aW9uczogQ2hhbmdlRmlsZVBhcmVudHNPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBDaGFuZ2VGaWxlUGFyZW50c011dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiBhd2FpdCB0aGlzLnByZXBhcmVDaGFuZ2VGaWxlUGFyZW50cyhvcHRpb25zKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBiZWdpbkRlbGV0ZUNoaWxkSXRlbUxpbmtzV2luZG93KFxuICAgIG9wdGlvbnM6IEJlZ2luRGVsZXRlQ2hpbGRJdGVtTGlua3NXaW5kb3dPcHRpb25zXG4gICkge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLmJlZ2luRGVsZXRlQ2hpbGRJdGVtTGlua3NXaW5kb3dNdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogU2NoZWR1bGUgY2xlYW51cCBvZiB0aGUgaGFyZCBsaW5rcyBpbiBhIGRpcmVjdG9yeS5cbiAgICogVGhlIHNlcnZlciB3aWxsIGRlbGV0ZSBhbGwgaGFyZCBsaW5rIHdpdGhpbiB0aGUgZGlyZWN0b3J5IHdpdGhpbiBhIHRpbWUgd2luZG93OiBzdGFydGluZyBmcm9tIG5vdyBhbmRcbiAgICogZW5kaW5nIGF0IHJlcXVlc3RXaW5kb3dNcyBhZnRlciBub3cuXG4gICAqIFRoZSBzZXJ2ZXIgZGVjaWRlcyBfd2hlbl8gaXQgd2lsbCBwZXJmb3JtIHRoZSBkZWxldGUuIEl0J3Mgbm90IGd1YXJhbnRlZWQgdGhhdCBpdCB3aWxsIHBlcmZvcm1cbiAgICogdGhlIGRlbGV0ZSBhdCBcIm5vdyArIHJlcXVlc3RXaW5kb3dNc1wiLCBidXQgaXQgd2lsbCBoYXBwZW4gYXQgc29tZSB0aW1lIGFmdGVyIFwibm93ICsgcmVxdWVzdFdpbmRvd01zXCIuXG4gICAqIFRoaXMgYWxsb3dzIG11bHRpcGxlIG92ZXJsYXBwaW5nIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gYW5kIHRoZSBzZXJ2ZXIgYWxsb2NhdGVzIGVub3VnaCBmb3IgZWFjaCByZXF1ZXN0LlxuICAgKiBUaGUgc2VydmVyIGhhcyBhIHNldHRpbmcgdGhhdCBhbGxvd3MgZm9yIGEgbWF4aW11bSB2YWx1ZSBvbiByZXF1ZXN0V2luZG93TXMuIElmIHRoZSByZXF1ZXN0ZWQgdmFsdWVcbiAgICogaXMgbGFyZ2VyIHRoYW4gdGhpcyBtYXhpbXVtLCB0aGUgY2FsbCB3aWxsIGZhaWwuXG4gICAqL1xuICBhc3luYyBiZWdpbkRlbGV0ZUNoaWxkSXRlbUxpbmtzV2luZG93TXV0YXRpb24oXG4gICAgb3B0aW9uczogQmVnaW5EZWxldGVDaGlsZEl0ZW1MaW5rc1dpbmRvd09wdGlvbnNcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBCZWdpbkRlbGV0ZUNoaWxkSXRlbUxpbmtzV2luZG93TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IG9wdGlvbnMsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG1heSByYWlzZSBWRVJTSU9OX01JU01BVENIIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uXG4gICAqIHdoZW4gbXVsdGlwbGUgY2xpZW50cyB0cnkgdG8gY3JlYXRlIHRoZSB0ZW1wIGRpcmVjdG9yeS5cbiAgICpcbiAgICogVE9ETyBUaGVyZSBpcyBhIHJldHJ5IG1lY2hhbmlzbSBpbiBncmFwaHFsIHdpdGggZXhwb25lbnRpYWwgYmFjayBvZmYgYnV0IHRoYXQncyBpbnRlcm5hbC5cbiAgICogQnV0IG5lZWQgdG8gdXNlIGFuIGV4cG9uZW50aWFsIGJhY2sgb2ZmIGxpYiBpZiB3ZSB3YW50IHRvIHJldHJ5IGhlcmUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBJRCBvZiB0aGUgdGVtcCBkaXJlY3RvcnlcbiAgICpcbiAgICovXG4gIGFzeW5jIGVuc3VyZVRlbXBEaXJlY3RvcnkoKTogUHJvbWlzZTxJZEtleVBhaXI+IHtcbiAgICBpZiAodGhpcy50ZW1wRGlyZWN0b3J5KSB7XG4gICAgICByZXR1cm4gdGhpcy50ZW1wRGlyZWN0b3J5O1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5xdWVyeSh7XG4gICAgICBxdWVyeTogVGVtcERpcmVjdG9yeVF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIHBsYWluTWV0YTogSXRlbTJTZXJ2aWNlLlRFTVBfRElSRUNUT1JZX1BMQUlOX01FVEFfRklMVEVSLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChleGlzdGluZy5yb290RGlyZWN0b3JpZXMuZWRnZXMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFRoZXJlIGlzIG1vcmUgdGhhbiAxIHRlbXAgZGlyZWN0b3J5IChwbGFpbk1ldGEgZmlsdGVyOiAke0l0ZW0yU2VydmljZS5URU1QX0RJUkVDVE9SWV9QTEFJTl9NRVRBX0ZJTFRFUn0pYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZXhpc3Rpbmcucm9vdERpcmVjdG9yaWVzLmVkZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gRG9lc24ndCBleGlzdCB5ZXQsIGNyZWF0ZSBpdFxuICAgICAgY29uc3QgY3JlYXRlRGlyZWN0b3J5ID0gYXdhaXQgdGhpcy5jcmVhdGVEaXJlY3Rvcnkoe1xuICAgICAgICBhc1Jvb3REaXJlY3Rvcnk6IHRydWUsXG4gICAgICAgIHBsYWluTWV0YUpzb246IEl0ZW0yU2VydmljZS5URU1QX0RJUkVDVE9SWV9QTEFJTl9NRVRBLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIE9wdGltaXN0aWMgbG9jayBvbiB0aGUgY3VycmVudCB1c2VyLlxuICAgICAgY29uc3QgdXBkYXRlTG9jayA9IHRoaXMubG9ja1NlcnZpY2UudXBkYXRlTG9ja011dGF0aW9uKHtcbiAgICAgICAgdmVyc2lvbjogZXhpc3RpbmcubG9jaz8udmVyc2lvbixcbiAgICAgIH0pO1xuXG4gICAgICAvLyBCZWNhdXNlIHRoaXMubXV0YXRlKCkgb25seSBoYW5kbGVzIHNpbXBsZSB0eXBlcyB3ZSBuZWVkIHRvIHVzZSB0aGUgbW9yZVxuICAgICAgLy8gYWR2YW5jZWQgdGhpcy5sckdyYXBoUUwubHJNdXRhdGUoKVxuICAgICAgY29uc3QgW2NyZWF0ZURpcmVjdG9yeVJlc3VsdF0gPSBhd2FpdCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShbXG4gICAgICAgIGNyZWF0ZURpcmVjdG9yeSxcbiAgICAgICAgdXBkYXRlTG9jayxcbiAgICAgIF0pO1xuXG4gICAgICBjb25zdCB7IGlkLCBrZXlJZCB9ID0gY3JlYXRlRGlyZWN0b3J5UmVzdWx0LmNyZWF0ZURpcmVjdG9yeS5kaXJlY3Rvcnk7XG5cbiAgICAgIHRoaXMudGVtcERpcmVjdG9yeSA9IHtcbiAgICAgICAgaWQsXG4gICAgICAgIGtleUlkLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmV0dXJuIGV4aXN0aW5nIHRlbXBcbiAgICAgIGNvbnN0IHsgaWQsIGtleUlkIH0gPSBleGlzdGluZy5yb290RGlyZWN0b3JpZXMuZWRnZXNbMF0ubm9kZTtcblxuICAgICAgdGhpcy50ZW1wRGlyZWN0b3J5ID0ge1xuICAgICAgICBpZCxcbiAgICAgICAga2V5SWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRlbXBEaXJlY3Rvcnk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVEaXJlY3RvcnlUcmVlKG9wdGlvbnM6IENyZWF0ZURpcmVjdG9yeVRyZWVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubXV0YXRlKHRoaXMuY3JlYXRlRGlyZWN0b3J5VHJlZU11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBZb3UgbXVzdCBydW4gdGhpcyBtdXRhdGlvbiB3aXRoaW4gdGhlIHRlbXAgZGlyZWN0b3J5IGNsZWFudXAgd2luZG93IG9uIHRoZVxuICAgKiBzZXJ2ZXIsIG90aGVyd2lzZSB0aGUgdGVtcCBkaXJlY3Rvcnkgd2lsbCBnZXQgY2xlYW5lZCB1cC5cbiAgICpcbiAgICovXG4gIGFzeW5jIGNyZWF0ZURpcmVjdG9yeVRyZWVNdXRhdGlvbihvcHRpb25zOiBDcmVhdGVEaXJlY3RvcnlUcmVlT3B0aW9ucykge1xuICAgIGNvbnN0IHRlbXBEaXIgPSBhd2FpdCB0aGlzLmVuc3VyZVRlbXBEaXJlY3RvcnkoKTtcblxuICAgIC8vIENsZWFyIHRoZSB0ZW1wIGRpcmVjdG9yeSBvZiB0aGUgb25lcyB3ZSBhcmUgYWJvdXQgdG8gY3JlYXRlLlxuICAgIC8vIE5PVEU6IHRoaXMgbXV0YXRpb24gY2FuIG5vdCBiZSBtZXJnZWQgaW50byBhIHNpbmdsZSBtdXRhdGlvbiB3aXRoIHRoZVxuICAgIC8vIHRoZSBjcmVhdGVEaXJlY3RvcnkgbXV0YXRpb24gYmVjYXVzZSBpdCB1c2VzIHRoZSBjdXJyZW50IHNlcnZlciB0aW1lIHRvXG4gICAgLy8gY2xlYW4gdXAuIFNvIGl0IG11c3Qgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlIGJlZm9yZSB0aGUgY3JlYXRpb24gb2YgdGhlXG4gICAgLy8gZGlyZWN0b3JpZXMuXG4gICAgYXdhaXQgdGhpcy5iZWdpbkRlbGV0ZUNoaWxkSXRlbUxpbmtzV2luZG93KHtcbiAgICAgIGRpcmVjdG9yeUlkOiB0ZW1wRGlyLmlkLFxuICAgICAgcmVxdWVzdFdpbmRvd01zOiBvcHRpb25zLnJlcXVlc3RXaW5kb3dNcyxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSB0aGUgZGlyZWN0b3J5IHRoYXQgaGFzIGNvbnRlbnRzXG4gICAgY29uc3QgZGlyZWN0b3J5ID0gKFxuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVEaXJlY3RvcnlFeGVjKHtcbiAgICAgICAgY2lwaGVyTWV0YUNsZWFySnNvbjogb3B0aW9ucy5jaXBoZXJNZXRhQ2xlYXJKc29uLFxuICAgICAgICBwYXJlbnREaXJlY3RvcmllczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdG9yeUlkOiB0ZW1wRGlyLmlkLFxuICAgICAgICAgICAgd3JhcHBpbmdLZXlJZDogdGVtcERpci5rZXlJZCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBwbGFpbk1ldGFKc29uOiBvcHRpb25zLnBsYWluTWV0YUpzb24sXG4gICAgICB9KVxuICAgICkuY3JlYXRlRGlyZWN0b3J5LmRpcmVjdG9yeTtcblxuICAgIC8vIENyZWF0ZSB0aGUgY29udGVudHNcbiAgICBhd2FpdCBvcHRpb25zLmNyZWF0ZUNvbnRlbnQoe1xuICAgICAgaWQ6IGRpcmVjdG9yeS5pZCxcbiAgICAgIGtleUlkOiBkaXJlY3Rvcnkua2V5SWQsXG4gICAgfSk7XG5cbiAgICAvLyBUT0RPIGNsaWVudC1zaWRlIGNoZWNrIGZvciB0aW1lb3V0IG9uIHJlcXVlc3RXaW5kb3dNc1xuICAgIC8vIFRPRE8gcmV0dXJuIHRoZSBzZXJ2ZXIgdGltZSB3aGVyZSBkZWxldGUgaXMgc2NoZWR1bGVkLiBFeHBpcmFibGUgbXV0YXRpb25cblxuICAgIC8vIFJldHVybiB0aGUgbXV0YXRpb24gdGhhdCBtb3ZlcyB0aGUgZGlyZWN0b3J5IGludG8gdGhlIGRzdCBkaXJlY3Rvcmllc1xuICAgIHJldHVybiB0aGlzLmNoYW5nZURpcmVjdG9yeVBhcmVudHNNdXRhdGlvbih7XG4gICAgICBkaXJlY3RvcnlJZDogZGlyZWN0b3J5LmlkLFxuICAgICAgZGlyZWN0b3J5S2V5SWQ6IGRpcmVjdG9yeS5rZXlJZCxcbiAgICAgIHBhcmVudHNUb1JlbW92ZTogW3RlbXBEaXIuaWRdLFxuICAgICAgcGFyZW50c1RvQWRkOiBvcHRpb25zLnBhcmVudERpcmVjdG9yaWVzLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2V0RmlsZUNvbmZpZGVudGlhbChvcHRpb25zOiBTZXRGaWxlQ29uZmlkZW50aWFsT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnNldEZpbGVDb25maWRlbnRpYWxNdXRhdGlvbihvcHRpb25zKSk7XG4gIH1cblxuICBhc3luYyBzZXRGaWxlQ29uZmlkZW50aWFsTXV0YXRpb24ob3B0aW9uczogU2V0RmlsZUNvbmZpZGVudGlhbE9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFNldEZpbGVDb25maWRlbnRpYWxNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGZpbGVJZDogb3B0aW9ucy5maWxlSWQsXG4gICAgICAgICAgY29uZmlkZW50aWFsOiBvcHRpb25zLmNvbmZpZGVudGlhbCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzZXREaXJlY3RvcnlDb25maWRlbnRpYWwob3B0aW9uczogU2V0RGlyZWN0b3J5Q29uZmlkZW50aWFsT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm11dGF0ZSh0aGlzLnNldERpcmVjdG9yeUNvbmZpZGVudGlhbE11dGF0aW9uKG9wdGlvbnMpKTtcbiAgfVxuXG4gIGFzeW5jIHNldERpcmVjdG9yeUNvbmZpZGVudGlhbE11dGF0aW9uKFxuICAgIG9wdGlvbnM6IFNldERpcmVjdG9yeUNvbmZpZGVudGlhbE9wdGlvbnNcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcbiAgICAgIG11dGF0aW9uOiBTZXREaXJlY3RvcnlDb25maWRlbnRpYWxNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGRpcmVjdG9yeUlkOiBvcHRpb25zLmRpcmVjdG9yeUlkLFxuICAgICAgICAgIGNvbmZpZGVudGlhbDogb3B0aW9ucy5jb25maWRlbnRpYWwsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIZWxwZXJzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVQYXJlbnREaXJlY3RvcnkoXG4gICAgb3B0aW9uczogUGFyZW50RGlyZWN0b3J5T3B0aW9ucyxcbiAgICBuZXdLZXk6IEpXSy5LZXlcbiAgKTogUHJvbWlzZTxQYXJlbnREaXJlY3RvcnlJbnB1dD4ge1xuICAgIC8vIElmIGRpcmVjdG9yeSdzIGtleSBpcyBub3QgYWxyZWFkeSBpbiB0aGUga2V5IGdyYXBoLCB0aGVuIG5lZWQgdG9cbiAgICAvLyBmZXRjaCB0aGUgZGlyZWN0b3J5J3Mga2V5LlxuICAgIGNvbnN0IHdyYXBwaW5nS2V5ID0gYXdhaXQgdGhpcy5nZXREaXJlY3RvcnlLZXkoXG4gICAgICBvcHRpb25zLmRpcmVjdG9yeUlkLFxuICAgICAgb3B0aW9ucy53cmFwcGluZ0tleUlkXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkaXJlY3RvcnlJZDogb3B0aW9ucy5kaXJlY3RvcnlJZCxcbiAgICAgIHdyYXBwaW5nS2V5SWQ6IHdyYXBwaW5nS2V5LmlkLFxuICAgICAgd3JhcHBlZEtleTogYXdhaXQgdGhpcy5rZXlHcmFwaC53cmFwS2V5KHdyYXBwaW5nS2V5LCBuZXdLZXkpLFxuICAgICAgbGlua1R5cGU6IG9wdGlvbnMubGlua1R5cGUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RmlsZVN0YXRlS2V5SWQoZmlsZVN0YXRlTm9kZUlkOiBMclJlbGF5SWRJbnB1dCkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCB0aGlzLnF1ZXJ5KHtcbiAgICAgICAgcXVlcnk6IEZpbGVTdGF0ZUtleVF1ZXJ5LFxuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBpZDogZmlsZVN0YXRlTm9kZUlkLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApLmZpbGVTdGF0ZS5rZXlJZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNyZWF0ZUZpbGVTdGF0ZShcbiAgICBmaWxlS2V5OiBKV0suS2V5LFxuICAgIG9wdGlvbnM6IENyZWF0ZUZpbGVPcHRpb25zIHwgVXBkYXRlRmlsZU9wdGlvbnNcbiAgKSB7XG4gICAgLy8gRWFjaCB2ZXJzaW9uIG9mIHRoZSBmaWxlIGlzIGVuY3J5cHRlZCB1c2luZyBhIG5ldyBrZXkuXG4gICAgY29uc3QgZmlsZVN0YXRlS2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgY29uc3QgZmlsZUNvbnRlbnQgPVxuICAgICAgb3B0aW9ucy5maWxlICYmIChhd2FpdCB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLmxvYWRGaWxlKG9wdGlvbnMuZmlsZSkpO1xuXG4gICAgbGV0IGNvbnRlbnRSZXNvdXJjZTogc3RyaW5nO1xuICAgIGlmIChmaWxlQ29udGVudCkge1xuICAgICAgY29uc3QgY2lwaGVyRmlsZUNvbnRlbnQgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgICAgZmlsZVN0YXRlS2V5LFxuICAgICAgICBmaWxlQ29udGVudFxuICAgICAgKTtcbiAgICAgIGlmIChvcHRpb25zLnVwbG9hZCkge1xuICAgICAgICBjb250ZW50UmVzb3VyY2UgPSBhd2FpdCBvcHRpb25zLnVwbG9hZChjaXBoZXJGaWxlQ29udGVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZW50UmVzb3VyY2UgPSBhd2FpdCB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLnVwbG9hZEVuY3J5cHRlZEZpbGUoe1xuICAgICAgICAgIGVuY3J5cHRlZENvbnRlbnQ6IGNpcGhlckZpbGVDb250ZW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uKGF3YWl0IHRoaXMucHJlcGFyZUl0ZW0oZmlsZVN0YXRlS2V5LCBvcHRpb25zKSksXG4gICAgICB3cmFwcGVkU3RhdGVLZXk6IGF3YWl0IHRoaXMua2V5R3JhcGgud3JhcEtleShmaWxlS2V5LCBmaWxlU3RhdGVLZXkpLFxuICAgICAgY29udGVudFJlc291cmNlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDaGFuZ2VJdGVtUGFyZW50cyhcbiAgICBvcHRpb25zOiBDaGFuZ2VJdGVtUGFyZW50c09wdGlvbnMsXG4gICAgaXRlbUtleTogSldLLktleVxuICApIHtcbiAgICBjb25zdCBwYXJlbnRzVG9BZGQgPSBvcHRpb25zLnBhcmVudHNUb0FkZFxuICAgICAgPyBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICBvcHRpb25zLnBhcmVudHNUb0FkZC5tYXAoKHQpID0+XG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQYXJlbnREaXJlY3RvcnkodCwgaXRlbUtleSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIDogW107XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGlyZWN0b3JpZXNUb1JlbW92ZTogb3B0aW9ucy5wYXJlbnRzVG9SZW1vdmUgfHwgW10sXG4gICAgICBkaXJlY3Rvcmllc1RvQWRkOiBwYXJlbnRzVG9BZGQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUl0ZW0oXG4gICAga2V5OiBKV0suS2V5LFxuICAgIG9wdGlvbnM6IHsgcGxhaW5NZXRhSnNvbj86IEpTT05PYmplY3Q7IGNpcGhlck1ldGFDbGVhckpzb24/OiBKU09OT2JqZWN0IH1cbiAgKSB7XG4gICAgY29uc3QgeyBwbGFpbk1ldGFKc29uLCBjaXBoZXJNZXRhQ2xlYXJKc29uIH0gPSBvcHRpb25zO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBsYWluTWV0YTogcGxhaW5NZXRhSnNvbiAmJiBKU09OLnN0cmluZ2lmeShwbGFpbk1ldGFKc29uKSxcbiAgICAgIGNpcGhlck1ldGE6XG4gICAgICAgIGNpcGhlck1ldGFDbGVhckpzb24gJiZcbiAgICAgICAgKGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKGtleSwgY2lwaGVyTWV0YUNsZWFySnNvbikpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDcmVhdGVEaXJlY3Rvcnkob3B0aW9uczogQ3JlYXRlRGlyZWN0b3J5T3B0aW9ucykge1xuICAgIGNvbnN0IGRpcmVjdG9yeUtleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVLZXkoKTtcbiAgICBvcHRpb25zLnBhcmVudERpcmVjdG9yaWVzID0gb3B0aW9ucy5wYXJlbnREaXJlY3RvcmllcyB8fCBbXTtcbiAgICBpZiAoIW9wdGlvbnMuYXNSb290RGlyZWN0b3J5ICYmICFvcHRpb25zLnBhcmVudERpcmVjdG9yaWVzPy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAgICAgICAnQSBuZXcgZGlyZWN0b3J5IG11c3QgYmUgZWl0aGVyIGEgcm9vdCBkaXJlY3Rvcnkgb3IgYSBzdWItZGlyZWN0b3J5LiBTbyB5b3UgbXVzdCBwcm92aWRlIGVpdGhlciBwYXJlbnREaXJlY3RvcmllcyBvciBhc1Jvb3REaXJlY3RvcnkgcGFyYW1ldGVyLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuYXNSb290RGlyZWN0b3J5ICYmIG9wdGlvbnMucGFyZW50RGlyZWN0b3JpZXM/Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEtjQmFkQXJndW1lbnRFeGNlcHRpb24oXG4gICAgICAgICdBIG5ldyBkaXJlY3RvcnkgbXVzdCBiZSBlaXRoZXIgYSByb290IGRpcmVjdG9yeSBvciBhIHN1Yi1kaXJlY3RvcnkuIFNvIHlvdSBjYW4gb25seSBwcm92aWRlIGVpdGhlciBwYXJlbnREaXJlY3RvcmllcyBvciBhc1Jvb3REaXJlY3RvcnkgcGFyYW1ldGVyLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50RGlyZWN0b3JpZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG9wdGlvbnMucGFyZW50RGlyZWN0b3JpZXM/Lm1hcCgodCkgPT5cbiAgICAgICAgdGhpcy5wcmVwYXJlUGFyZW50RGlyZWN0b3J5KHQsIGRpcmVjdG9yeUtleSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgLy8gVE9ETyB0aGlzIGlzIHJhdGhlciBhbiB1bmZvcnR1bmF0ZSBuYW1lLCBjaGFuZ2UgaXQgdG8gYXNSb290RGlyZWN0b3J5LlxuICAgIGxldCBwYXJlbnRSb290RGlyZWN0b3J5OiBQYXJlbnRSb290RGlyZWN0b3J5SW5wdXQ7XG4gICAgaWYgKG9wdGlvbnMuYXNSb290RGlyZWN0b3J5KSB7XG4gICAgICBjb25zdCByb290S2V5ID0gdGhpcy5rZXlTZXJ2aWNlLmdldEN1cnJlbnRSb290S2V5KCk7XG4gICAgICBwYXJlbnRSb290RGlyZWN0b3J5ID0ge1xuICAgICAgICB3cmFwcGluZ0tleUlkOiByb290S2V5LmlkLFxuICAgICAgICB3cmFwcGVkS2V5OiBhd2FpdCB0aGlzLmtleUdyYXBoLndyYXBLZXkocm9vdEtleSwgZGlyZWN0b3J5S2V5KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbUlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlSXRlbShkaXJlY3RvcnlLZXksIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLml0ZW1JbnB1dCxcbiAgICAgIHBhcmVudERpcmVjdG9yaWVzLFxuICAgICAgcGFyZW50Um9vdERpcmVjdG9yeSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlVXBkYXRlRGlyZWN0b3J5KG9wdGlvbnM6IFVwZGF0ZURpcmVjdG9yeU9wdGlvbnMpIHtcbiAgICBjb25zdCBkaXJlY3RvcnlLZXkgPSBhd2FpdCB0aGlzLmdldERpcmVjdG9yeUtleShcbiAgICAgIG9wdGlvbnMuZGlyZWN0b3J5SWQsXG4gICAgICBvcHRpb25zLmRpcmVjdG9yeUtleUlkXG4gICAgKTtcblxuICAgIGNvbnN0IGl0ZW1JbnB1dCA9IGF3YWl0IHRoaXMucHJlcGFyZUl0ZW0oZGlyZWN0b3J5S2V5Lmp3aywgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uaXRlbUlucHV0LFxuICAgICAgZGlyZWN0b3J5SWQ6IG9wdGlvbnMuZGlyZWN0b3J5SWQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNyZWF0ZUZpbGUob3B0aW9uczogQ3JlYXRlRmlsZU9wdGlvbnMpIHtcbiAgICBjb25zdCBmaWxlS2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgY29uc3QgcGFyZW50RGlyZWN0b3JpZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG9wdGlvbnMucGFyZW50RGlyZWN0b3JpZXMubWFwKGFzeW5jICh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGlyZWN0b3J5SWQsIHdyYXBwaW5nS2V5SWQsIHdyYXBwZWRLZXkgfSA9XG4gICAgICAgICAgYXdhaXQgdGhpcy5wcmVwYXJlUGFyZW50RGlyZWN0b3J5KHQsIGZpbGVLZXkpO1xuICAgICAgICAvLyByZW1hcCBmcm9tIFBhcmVudERpcmVjdG9yeUlucHV0IHRvIEZpbGVQYXJlbnREaXJlY3RvcnlJbnB1dFxuICAgICAgICAvLyBUT0RPIHRoZSBzZXJ2ZXIgc2hvdWxkIHJlYWxseSBqdXN0IHVzZSB3cmFwcGVkS2V5IGluc3RlYWQgb2Ygd3JhcHBlZEZpbGVLZXlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXJlY3RvcnlJZCxcbiAgICAgICAgICB3cmFwcGluZ0tleUlkLFxuICAgICAgICAgIHdyYXBwZWRGaWxlS2V5OiB3cmFwcGVkS2V5LFxuICAgICAgICB9IGFzIEZpbGVQYXJlbnREaXJlY3RvcnlJbnB1dDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlQ3JlYXRlRmlsZVN0YXRlKGZpbGVLZXksIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmlucHV0LFxuICAgICAgcGFyZW50RGlyZWN0b3JpZXMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVVwZGF0ZUZpbGUob3B0aW9uczogVXBkYXRlRmlsZU9wdGlvbnMpIHtcbiAgICBjb25zdCBmaWxlS2V5ID0gYXdhaXQgdGhpcy5nZXRGaWxlS2V5KG9wdGlvbnMuZmlsZUlkLCBvcHRpb25zLmZpbGVLZXlJZCk7XG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLnByZXBhcmVDcmVhdGVGaWxlU3RhdGUoZmlsZUtleS5qd2ssIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmlucHV0LFxuICAgICAgZmlsZUlkOiBvcHRpb25zLmZpbGVJZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ2hhbmdlRGlyZWN0b3J5UGFyZW50cyhcbiAgICBvcHRpb25zOiBDaGFuZ2VEaXJlY3RvcnlQYXJlbnRzT3B0aW9uc1xuICApIHtcbiAgICBjb25zdCBkaXJlY3RvcnlLZXkgPSBhd2FpdCB0aGlzLmdldERpcmVjdG9yeUtleShcbiAgICAgIG9wdGlvbnMuZGlyZWN0b3J5SWQsXG4gICAgICBvcHRpb25zLmRpcmVjdG9yeUtleUlkXG4gICAgKTtcblxuICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5wcmVwYXJlQ2hhbmdlSXRlbVBhcmVudHMoXG4gICAgICBvcHRpb25zLFxuICAgICAgZGlyZWN0b3J5S2V5Lmp3a1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uaW5wdXQsXG4gICAgICBkaXJlY3RvcnlJZDogb3B0aW9ucy5kaXJlY3RvcnlJZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ2hhbmdlRmlsZVBhcmVudHMob3B0aW9uczogQ2hhbmdlRmlsZVBhcmVudHNPcHRpb25zKSB7XG4gICAgY29uc3QgZmlsZUtleSA9IGF3YWl0IHRoaXMuZ2V0RmlsZUtleShvcHRpb25zLmZpbGVJZCwgb3B0aW9ucy5maWxlS2V5SWQpO1xuXG4gICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLnByZXBhcmVDaGFuZ2VJdGVtUGFyZW50cyhvcHRpb25zLCBmaWxlS2V5Lmp3ayk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uaW5wdXQsXG4gICAgICBmaWxlSWQ6IG9wdGlvbnMuZmlsZUlkLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG9uTG9nb3V0KCkge1xuICAgIC8vIENsZWFyIGFsbCBjYWNoZWQgZGF0YS5cbiAgICB0aGlzLnRlbXBEaXJlY3RvcnkgPSBudWxsO1xuICB9XG59XG4iXX0=
|
|
@@ -38,6 +38,7 @@ export const CurrentUserQuery = gql `
|
|
|
38
38
|
shareVault
|
|
39
39
|
}
|
|
40
40
|
sessionEncryptionKey
|
|
41
|
+
dateJoined
|
|
41
42
|
}
|
|
42
43
|
userPlans {
|
|
43
44
|
id
|
|
@@ -95,4 +96,4 @@ export const UpdateContactCardMutation = gql `
|
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
`;
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5ncWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvcHJvZmlsZS9wcm9maWxlLmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRTlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBVTFELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQW1FL0IsZ0JBQWdCO0NBQ25CLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7OztDQVkzQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Q0FZM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCBncWwgZnJvbSAnZ3JhcGhxbC10YWcnO1xuaW1wb3J0IHsgSGFzS2V5R3JhcGggfSBmcm9tICcuLi9rZXkva2V5LnR5cGVzJztcbmltcG9ydCB7IEtleUdyYXBoRnJhZ21lbnQgfSBmcm9tICcuLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcbmltcG9ydCB7IEhhc0VkZ2VzIH0gZnJvbSAnLi8uLi9fY29tbW9uL3R5cGVzJztcbmltcG9ydCB7IEFwaUNvbnRhY3RDYXJkLCBBcGlDdXJyZW50VXNlciB9IGZyb20gJy4vcHJvZmlsZS50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VycmVudFVzZXJRdWVyeVR5cGUgZXh0ZW5kcyBIYXNLZXlHcmFwaCB7XG4gIGN1cnJlbnRVc2VyOiBBcGlDdXJyZW50VXNlcjtcbiAgY29udGFjdENhcmRzOiBIYXNFZGdlczxBcGlDb250YWN0Q2FyZD47XG4gIHVzZXJQbGFuczogYW55W107XG59XG5cbmV4cG9ydCBjb25zdCBDdXJyZW50VXNlclF1ZXJ5ID0gZ3FsYFxuICBxdWVyeSB7XG4gICAgY3VycmVudFVzZXIge1xuICAgICAgaWRcbiAgICAgIHVzZXJuYW1lXG4gICAgICBjdXJyZW50VXNlcktleSB7XG4gICAgICAgIHBhc3NLZXkge1xuICAgICAgICAgIGlkXG4gICAgICAgICAgcGFzc0tleVBhcmFtc1xuICAgICAgICAgIHBhc3NJZHBQYXJhbXNcbiAgICAgICAgICB3cmFwcGVkUGFzc0lkcFZlcmlmaWVyUHJrXG4gICAgICAgICAgY3JlYXRlZFxuICAgICAgICB9XG4gICAgICAgIG1hc3RlcktleSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgICByb290S2V5IHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICAgIHB4ayB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgICBzaWdQeGsge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHVzZXJEZWxldGUge1xuICAgICAgICBpZFxuICAgICAgICBjcmVhdGVkXG4gICAgICAgIHN0YXRlXG4gICAgICB9XG4gICAgICBmZWF0dXJlcyB7XG4gICAgICAgIG15VmF1bHRcbiAgICAgICAgdHBWYXVsdFxuICAgICAgICBzaGFyZVZhdWx0XG4gICAgICB9XG4gICAgICBzZXNzaW9uRW5jcnlwdGlvbktleVxuICAgICAgZGF0ZUpvaW5lZFxuICAgIH1cbiAgICB1c2VyUGxhbnMge1xuICAgICAgaWRcbiAgICAgIHN0cmlwZSB7XG4gICAgICAgIHN1YnNjcmlwdGlvbklkXG4gICAgICB9XG4gICAgICBwbGFuIHtcbiAgICAgICAgbmFtZVxuICAgICAgICBkYXRhXG4gICAgICAgIHN0YXRlXG4gICAgICB9XG4gICAgICBwZXJpb2RFbmRcbiAgICB9XG4gICAgY29udGFjdENhcmRzKG9yZGVyQnk6IFwiY3JlYXRlZFwiKSB7XG4gICAgICBlZGdlcyB7XG4gICAgICAgIG5vZGUge1xuICAgICAgICAgIGlkXG4gICAgICAgICAga2V5IHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgfVxuICAgICAgICAgIGNpcGhlckRhdGFcbiAgICAgICAgICBwbGFpbkRhdGFcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBrZXlHcmFwaCB7XG4gICAgICAuLi5LZXlHcmFwaEZyYWdtZW50XG4gICAgfVxuICB9XG4gICR7S2V5R3JhcGhGcmFnbWVudH1cbmA7XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uKCRpbnB1dDogQ3JlYXRlQ29udGFjdENhcmRJbnB1dCEpIHtcbiAgICBjcmVhdGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XG4gICAgICBjb250YWN0Q2FyZCB7XG4gICAgICAgIGlkXG4gICAgICAgIGtleSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgICBjaXBoZXJEYXRhXG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbigkaW5wdXQ6IFVwZGF0ZUNvbnRhY3RDYXJkSW5wdXQhKSB7XG4gICAgdXBkYXRlQ29udGFjdENhcmQoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgY29udGFjdENhcmQge1xuICAgICAgICBpZFxuICAgICAgICBrZXkge1xuICAgICAgICAgIGlkXG4gICAgICAgIH1cbiAgICAgICAgY2lwaGVyRGF0YVxuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcbiJdfQ==
|
|
@@ -38,4 +38,4 @@ export class PassIdpApiResult {
|
|
|
38
38
|
}
|
|
39
39
|
export class TrustedPartyDetails {
|
|
40
40
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9wcm9maWxlL3Byb2ZpbGUudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUN2Qix1QkFBdUI7SUFDdkIsa0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCO0FBRUQsTUFBTSxPQUFPLFFBQVE7Q0FJcEI7QUFFRCxNQUFNLE9BQU8sY0FBYztDQU0xQjtBQUVELE1BQU0sT0FBTyxjQUFjO0NBUTFCO0FBRUQsTUFBTSxPQUFPLGNBQWM7Q0FNMUI7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQU0xQixZQUFZLEtBQVU7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7Q0FTOUI7QUFFRCxNQUFNLE9BQU8sdUJBQXVCO0NBS25DO0FBRUQsTUFBTSxPQUFPLHFCQUFxQjtDQU1qQztBQUVELE1BQU0sT0FBTyxlQUFnQixTQUFRLHFCQUFxQjtDQUd6RDtBQUVELE1BQU0sT0FBTywwQkFBMEI7Q0FFdEM7QUFFRCxNQUFNLENBQU4sSUFBWSxvQkFHWDtBQUhELFdBQVksb0JBQW9CO0lBQzlCLGtEQUEwQixDQUFBO0lBQzFCLDZDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBRy9CO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtDQVE1QjtBQUVELE1BQU0sT0FBTyxtQkFBbUI7Q0FTL0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBEYXRlVGltZSwgVXNlckRlbGV0ZU5vZGUgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgUGFzc0lkcFBhcmFtcywgUGFzc0tleSB9IGZyb20gJy4uL2tleS9rZXkudHlwZXMnO1xuXG5leHBvcnQgZW51bSBGZWF0dXJlQWN0aW9uIHtcbiAgLy8gSnVzdCB0aGUgb25lIGZvciBub3dcbiAgQUNDRVNTID0gJ2FjY2VzcycsXG59XG5cbmV4cG9ydCBjbGFzcyBGZWF0dXJlcyB7XG4gIG15VmF1bHQ6IEZlYXR1cmVBY3Rpb25bXTtcbiAgdHBWYXVsdDogRmVhdHVyZUFjdGlvbltdO1xuICBzaGFyZVZhdWx0OiBGZWF0dXJlQWN0aW9uW107XG59XG5cbmV4cG9ydCBjbGFzcyBDdXJyZW50VXNlcktleSB7XG4gIHBhc3NLZXk/OiBQYXNzS2V5O1xuICBtYXN0ZXJLZXk/OiB7IGlkOiBzdHJpbmcgfTtcbiAgcm9vdEtleT86IHsgaWQ6IHN0cmluZyB9O1xuICBweGs/OiB7IGlkOiBzdHJpbmcgfTtcbiAgc2lnUHhrPzogeyBpZDogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlDdXJyZW50VXNlciB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXJuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbnRVc2VyS2V5OiBDdXJyZW50VXNlcktleTtcbiAgdXNlckRlbGV0ZTogVXNlckRlbGV0ZU5vZGU7XG4gIGZlYXR1cmVzOiBGZWF0dXJlcztcbiAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IHN0cmluZztcbiAgZGF0ZUpvaW5lZDogRGF0ZVRpbWU7XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlDb250YWN0Q2FyZCB7XG4gIGlkOiBzdHJpbmc7XG4gIGNpcGhlckRhdGE6IHN0cmluZztcbiAga2V5OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIENvbnRhY3RDYXJkTmFtZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGZpcnN0TmFtZT86IHN0cmluZztcbiAgbGFzdE5hbWU/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoaW5wdXQ6IGFueSkge1xuICAgIHRoaXMubmFtZSA9IGlucHV0Lm5hbWU7XG4gICAgdGhpcy50aXRsZSA9IGlucHV0LnRpdGxlO1xuICAgIHRoaXMuZmlyc3ROYW1lID0gaW5wdXQuZmlyc3ROYW1lO1xuICAgIHRoaXMubGFzdE5hbWUgPSBpbnB1dC5sYXN0TmFtZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29udGFjdENhcmRBZGRyZXNzIHtcbiAgZnVsbEFkZHJlc3M6IHN0cmluZztcbiAgc3RyZWV0QWRkcmVzczogc3RyaW5nO1xuICBzdHJlZXRBZGRyZXNzMj86IHN0cmluZztcbiAgc3VidXJiOiBzdHJpbmc7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIHBvc3Rjb2RlOiBzdHJpbmc7XG4gIGNvdW50cnk6IHN0cmluZztcbiAgY291bnRyeUNvZGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNYWluQ29udGFjdENhcmRQcm9wZXJ0eTxUPiB7XG4gIHZhbHVlOiBUO1xuICBoYXNNdWx0aXBsZTogYm9vbGVhbjtcblxuICB2YWx1ZXM/OiB7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBUIH1bXTtcbn1cblxuZXhwb3J0IGNsYXNzIE1haW5Db250YWN0Q2FyZEZpZWxkcyB7XG4gIG5hbWU6IE1haW5Db250YWN0Q2FyZFByb3BlcnR5PENvbnRhY3RDYXJkTmFtZT47XG4gIGVtYWlsOiBNYWluQ29udGFjdENhcmRQcm9wZXJ0eTxzdHJpbmc+O1xuICBpbWFnZTogTWFpbkNvbnRhY3RDYXJkUHJvcGVydHk8c3RyaW5nPjtcbiAgcGhvbmU6IE1haW5Db250YWN0Q2FyZFByb3BlcnR5PHN0cmluZz47XG4gIGFkZHJlc3M6IE1haW5Db250YWN0Q2FyZFByb3BlcnR5PENvbnRhY3RDYXJkQWRkcmVzcz47XG59XG5cbmV4cG9ydCBjbGFzcyBNYWluQ29udGFjdENhcmQgZXh0ZW5kcyBNYWluQ29udGFjdENhcmRGaWVsZHMge1xuICBpZDogc3RyaW5nO1xuICBrZXlJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTWFpbkNvbnRhY3RDYXJkUGxhaW5GaWVsZHMge1xuICBuYW1lOiBDb250YWN0Q2FyZE5hbWU7XG59XG5cbmV4cG9ydCBlbnVtIFBhc3N3b3JkQ2hhbmdlU3RhdHVzIHtcbiAgSW5Qcm9ncmVzcyA9ICdJTl9QUk9HUkVTUycsXG4gIFJlY292ZXJ5ID0gJ1JFQ09WRVJZJyxcbn1cblxuZXhwb3J0IGNsYXNzIFBhc3NJZHBBcGlSZXN1bHQge1xuICBwYXNzd29yZENoYW5nZVN0YXR1cz86IFBhc3N3b3JkQ2hhbmdlU3RhdHVzO1xuICBjdXJyZW50UGFzc0lkcFBhcmFtczogUGFzc0lkcFBhcmFtcztcbiAgbmV3UGFzc0lkcFBhcmFtczogUGFzc0lkcFBhcmFtcztcbiAgdHBQYXNzd29yZFJlc2V0OiB7XG4gICAgcGFzc0lkcFBhcmFtczogUGFzc0lkcFBhcmFtcztcbiAgICByZXNldFVzZXJuYW1lOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBUcnVzdGVkUGFydHlEZXRhaWxzIHtcbiAgbmFtZTogQ29udGFjdENhcmROYW1lO1xuICBlbWFpbD86IHN0cmluZztcbiAgaW1hZ2U/OiBzdHJpbmc7XG4gIHBob25lcz86IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W107XG4gIGFkZHJlc3Nlcz86IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHZhbHVlOiBDb250YWN0Q2FyZEFkZHJlc3M7XG4gIH1bXTtcbn1cbiJdfQ==
|
|
@@ -4116,6 +4116,7 @@ const CurrentUserQuery = gql `
|
|
|
4116
4116
|
shareVault
|
|
4117
4117
|
}
|
|
4118
4118
|
sessionEncryptionKey
|
|
4119
|
+
dateJoined
|
|
4119
4120
|
}
|
|
4120
4121
|
userPlans {
|
|
4121
4122
|
id
|
|
@@ -5582,6 +5583,7 @@ class LifeReadyAuthService {
|
|
|
5582
5583
|
hasTPVaultAccess: this.mapTPVaultAccess(currentUser.features),
|
|
5583
5584
|
features: currentUser.features,
|
|
5584
5585
|
sessionEncryptionKey: currentUser.sessionEncryptionKey,
|
|
5586
|
+
dateJoined: currentUser.dateJoined,
|
|
5585
5587
|
};
|
|
5586
5588
|
});
|
|
5587
5589
|
}
|
|
@@ -5826,6 +5828,7 @@ class LifeReadyAuthService {
|
|
|
5826
5828
|
hasTPVaultAccess: this.mapTPVaultAccess(currentUser.features),
|
|
5827
5829
|
features: currentUser.features,
|
|
5828
5830
|
sessionEncryptionKey: currentUser.sessionEncryptionKey,
|
|
5831
|
+
dateJoined: currentUser.dateJoined,
|
|
5829
5832
|
};
|
|
5830
5833
|
});
|
|
5831
5834
|
}
|
|
@@ -7613,14 +7616,17 @@ let Item2Service = Item2Service_1 = class Item2Service extends LrService {
|
|
|
7613
7616
|
});
|
|
7614
7617
|
}
|
|
7615
7618
|
prepareCreateDirectory(options) {
|
|
7616
|
-
var _a, _b;
|
|
7619
|
+
var _a, _b, _c;
|
|
7617
7620
|
return __awaiter(this, void 0, void 0, function* () {
|
|
7618
7621
|
const directoryKey = yield this.keyFactory.createKey();
|
|
7619
7622
|
options.parentDirectories = options.parentDirectories || [];
|
|
7620
7623
|
if (!options.asRootDirectory && !((_a = options.parentDirectories) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
7621
|
-
throw new KcBadArgumentException('A new directory must be either a root directory or a sub-directory. So you must provide either parentDirectories
|
|
7624
|
+
throw new KcBadArgumentException('A new directory must be either a root directory or a sub-directory. So you must provide either parentDirectories or asRootDirectory parameter.');
|
|
7625
|
+
}
|
|
7626
|
+
if (options.asRootDirectory && ((_b = options.parentDirectories) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
7627
|
+
throw new KcBadArgumentException('A new directory must be either a root directory or a sub-directory. So you can only provide either parentDirectories or asRootDirectory parameter.');
|
|
7622
7628
|
}
|
|
7623
|
-
const parentDirectories = yield Promise.all((
|
|
7629
|
+
const parentDirectories = yield Promise.all((_c = options.parentDirectories) === null || _c === void 0 ? void 0 : _c.map((t) => this.prepareParentDirectory(t, directoryKey)));
|
|
7624
7630
|
// TODO this is rather an unfortunate name, change it to asRootDirectory.
|
|
7625
7631
|
let parentRootDirectory;
|
|
7626
7632
|
if (options.asRootDirectory) {
|