@banta/sdk 5.6.5 → 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/chat-backend.mjs +13 -2
- package/esm2022/lib/chat-source-base.mjs +1 -1
- package/esm2022/lib/chat-source.mjs +31 -2
- package/esm2022/lib/comments/banta-comments/banta-comments.component.mjs +18 -7
- package/esm2022/lib/comments/comment-view/comment-view.component.mjs +20 -22
- package/esm2022/lib/static-chat-source.mjs +4 -1
- package/fesm2022/banta-sdk.mjs +80 -29
- package/fesm2022/banta-sdk.mjs.map +1 -1
- package/lib/banta/banta.component.d.ts +1 -1
- package/lib/chat-backend.d.ts +1 -0
- package/lib/chat-source-base.d.ts +1 -0
- package/lib/chat-source.d.ts +13 -0
- package/lib/static-chat-source.d.ts +1 -0
- package/package.json +3 -2
|
@@ -6,18 +6,29 @@ import { BANTA_SDK_OPTIONS } from "./sdk-options";
|
|
|
6
6
|
import { PLATFORM_ID } from "@angular/core";
|
|
7
7
|
import { isPlatformServer } from "@angular/common";
|
|
8
8
|
import { StaticChatSource } from "./static-chat-source";
|
|
9
|
+
import { v4 as uuid } from 'uuid';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
export class ChatBackend extends ChatBackendBase {
|
|
11
12
|
constructor() {
|
|
12
13
|
super(...arguments);
|
|
13
14
|
this.options = inject(BANTA_SDK_OPTIONS);
|
|
14
15
|
this.platformId = inject(PLATFORM_ID);
|
|
16
|
+
this.runId = uuid();
|
|
15
17
|
}
|
|
16
18
|
get serviceUrl() {
|
|
17
19
|
return `${this.options?.serviceUrl ?? 'http://localhost:3422'}`;
|
|
18
20
|
}
|
|
19
21
|
async connectToService() {
|
|
20
|
-
let
|
|
22
|
+
let deviceId = uuid();
|
|
23
|
+
if (typeof localStorage !== 'undefined') {
|
|
24
|
+
if (localStorage['banta-chat:deviceId']) {
|
|
25
|
+
deviceId = localStorage['banta-chat:deviceId'];
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
localStorage['banta-chat:deviceId'] = deviceId;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
let socket = new DurableSocket(`${this.serviceUrl.replace(/^http/, 'ws')}/socket`, undefined, `${deviceId},${this.runId}`);
|
|
21
32
|
await new Promise((resolve, reject) => {
|
|
22
33
|
socket.onopen = () => {
|
|
23
34
|
resolve();
|
|
@@ -185,4 +196,4 @@ export class ChatBackend extends ChatBackendBase {
|
|
|
185
196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ChatBackend, decorators: [{
|
|
186
197
|
type: Injectable
|
|
187
198
|
}] });
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1iYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY2hhdC1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBZSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBNEMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVJLE9BQU8sRUFBRSxlQUFlLEVBQXFCLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHeEQsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBRGhEOztRQUVZLFlBQU8sR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwQyxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBc041QztJQXBORyxJQUFJLFVBQVU7UUFDVixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksdUJBQXVCLEVBQUUsQ0FBQztJQUNwRSxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQjtRQUMxQixJQUFJLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkYsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9B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QUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksR0FBRztZQUN0QixPQUFPLElBQUksQ0FBQztRQUVoQixJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksR0FBRztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxRQUFRLENBQUMsTUFBTSxZQUFZLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV6RyxPQUFPLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7OEdBdk5RLFdBQVc7a0hBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENvbW1lbnRzT3JkZXIsIER1cmFibGVTb2NrZXQsIEZpbHRlck1vZGUsIE5vdGlmaWNhdGlvbiwgVG9waWMsIFVybENhcmQsIFVzZXIsIFZvdGUsIGJ1aWxkUXVlcnkgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQ2hhdEJhY2tlbmRCYXNlLCBDaGF0U291cmNlT3B0aW9ucyB9IGZyb20gXCIuL2NoYXQtYmFja2VuZC1iYXNlXCI7XHJcbmltcG9ydCB7IENoYXRTb3VyY2UgfSBmcm9tIFwiLi9jaGF0LXNvdXJjZVwiO1xyXG5pbXBvcnQgeyBDaGF0U291cmNlQmFzZSB9IGZyb20gXCIuL2NoYXQtc291cmNlLWJhc2VcIjtcclxuaW1wb3J0IHsgQkFOVEFfU0RLX09QVElPTlMsIFNka09wdGlvbnMgfSBmcm9tIFwiLi9zZGstb3B0aW9uc1wiO1xyXG5pbXBvcnQgeyBQTEFURk9STV9JRCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IFN0YXRpY0NoYXRTb3VyY2UgfSBmcm9tIFwiLi9zdGF0aWMtY2hhdC1zb3VyY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENoYXRCYWNrZW5kIGV4dGVuZHMgQ2hhdEJhY2tlbmRCYXNlIHtcclxuICAgIHByaXZhdGUgb3B0aW9ucyA9IGluamVjdChCQU5UQV9TREtfT1BUSU9OUyk7XHJcbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG5cclxuICAgIGdldCBzZXJ2aWNlVXJsKCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLm9wdGlvbnM/LnNlcnZpY2VVcmwgPz8gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzQyMid9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIGNvbm5lY3RUb1NlcnZpY2UoKSB7XHJcbiAgICAgICAgbGV0IHNvY2tldCA9IG5ldyBEdXJhYmxlU29ja2V0KGAke3RoaXMuc2VydmljZVVybC5yZXBsYWNlKC9eaHR0cC8sICd3cycpfS9zb2NrZXRgKTtcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHNvY2tldC5vbm9wZW4gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHNvY2tldC5vbmNsb3NlID0gZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZS5jb2RlID09PSA1MDMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gY29ubmVjdCB0byBjaGF0IHNlcnZpY2UhYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNvY2tldC5vbmVycm9yID0gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICByZXR1cm4gc29ja2V0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNTZXJ2ZXIoKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnICYmIGxvY2FsU3RvcmFnZVsnYmFudGE6ZGVidWc6dXNlU3RhdGljU291cmNlJ10gPT09ICcxJylcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVjayBpZiB3ZSBhcmUgY3VycmVudGx5IHJ1bm5pbmcgaW5zaWRlIGEgR29vZ2xlYm90IHVzZXIgYWdlbnQgb3IgdmlhIHRoZSBHb29nbGUgaW5zcGVjdGlvbiB0b29sIGluIFNlYXJjaCBDb25zb2xlLlxyXG4gICAgICogV2UnbGwgdXNlIHRoaXMgdG8gYXZvaWQgV2ViU29ja2V0cyBzbyB0aGF0IGNvbW1lbnRzIGNhbiBiZSBpbmRleGFibGUuXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc0dvb2dsZWJvdCgpIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgKFxyXG4gICAgICAgICAgICBuYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKCdHb29nbGVib3QnKVxyXG4gICAgICAgICAgICB8fCBuYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKCdHb29nbGUtSW5zcGVjdGlvblRvb2wnKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0U291cmNlRm9yVG9waWModG9waWNJZDogc3RyaW5nLCBvcHRpb25zPzogQ2hhdFNvdXJjZU9wdGlvbnMpOiBQcm9taXNlPENoYXRTb3VyY2VCYXNlPiB7XHJcbiAgICAgICAgLy8gSW4gc29tZSBjYXNlcyB3ZSBuZWVkIHRvIGRvIGEgc2luZ2xlIFJFU1QgcmVxdWVzdCB0byBmZXRjaCB0aGUgbWVzc2FnZXMgXHJcbiAgICAgICAgLy8gYW5kIG5vdCB1c2UgQmFudGEncyBzb2NrZXQgUlBDIHNpbmNlIHRoZSBvcGVuIGVuZGVkIGxpZmV0aW1lIG9mIGEgV2ViU29ja2V0IGNvbm5lY3Rpb24gXHJcbiAgICAgICAgLy8gZG9lcyBub3QgbWF0Y2ggdGhlIHVzZSBjYXNlLlxyXG4gICAgICAgIC8vIC0gV2hlbiBydW5uaW5nIGluIFNTUlxyXG4gICAgICAgIC8vIC0gV2hlbiBydW5uaW5nIGluIEdvb2dsZWJvdCAoR29vZ2xlYm90IGFsc28gZG9lc24ndCBzdXBwb3J0IFdlYlNvY2tldHMgYW55d2F5KVxyXG5cclxuICAgICAgICBpZiAodGhpcy5pc1NlcnZlcigpIHx8IHRoaXMuaXNHb29nbGVib3QoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0YXRpY0NoYXRTb3VyY2UodGhpcywgdG9waWNJZCwgdW5kZWZpbmVkLCBvcHRpb25zKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbmV3IENoYXRTb3VyY2UodGhpcywgdG9waWNJZCwgdW5kZWZpbmVkLCB7IHNvcnRPcmRlcjogQ29tbWVudHNPcmRlci5ORVdFU1QsIGZpbHRlck1vZGU6IEZpbHRlck1vZGUuQUxMLCAuLi5vcHRpb25zIH0pXHJcbiAgICAgICAgICAgICAgICAuYmluZChhd2FpdCB0aGlzLmNvbm5lY3RUb1NlcnZpY2UoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFNvdXJjZUZvclRocmVhZCh0b3BpY0lkOiBzdHJpbmcsIG1lc3NhZ2VJZDogc3RyaW5nLCBvcHRpb25zPzogQ2hhdFNvdXJjZU9wdGlvbnMpOiBQcm9taXNlPENoYXRTb3VyY2VCYXNlPiB7XHJcbiAgICAgICAgLy8gV2hlbiBydW5uaW5nIG9uIHRoZSBzZXJ2ZXIgcGxhdGZvcm0sIHdlJ3JlIGp1c3QgZ29pbmcgdG8gZG8gYSBzaW5nbGUgUkVTVCByZXF1ZXN0IHRvIGZldGNoIHRoZSBtZXNzYWdlcyBcclxuICAgICAgICAvLyBhbmQgbm90IHVzZSBCYW50YSdzIHNvY2tldCBSUEMuXHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuaXNTZXJ2ZXIoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0YXRpY0NoYXRTb3VyY2UodGhpcywgdG9waWNJZCwgbWVzc2FnZUlkLCBvcHRpb25zKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgbmV3IENoYXRTb3VyY2UodGhpcywgdG9waWNJZCwgbWVzc2FnZUlkLCB7IHNvcnRPcmRlcjogQ29tbWVudHNPcmRlci5ORVdFU1QsIGZpbHRlck1vZGU6IEZpbHRlck1vZGUuQUxMLCAuLi5vcHRpb25zIH0pXHJcbiAgICAgICAgICAgICAgICAuYmluZChhd2FpdCB0aGlzLmNvbm5lY3RUb1NlcnZpY2UoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IHRoZSBjb3VudCBvZiB0aGUgZ2l2ZW4gdG9waWNcclxuICAgICAqIEBwYXJhbSB0b3BpY0lkIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGdldFNvdXJjZUNvdW50Rm9yVG9waWModG9waWNJZDogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgdG9waWMgPSBhd2FpdCB0aGlzLmdldFRvcGljKHRvcGljSWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdG9waWM/Lm1lc3NhZ2VDb3VudCA/PyAwO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW0JhbnRhLyR7dG9waWNJZH1dIEZhaWxlZCB0byBnZXQgbWVzc2FnZSBjb3VudCBmb3IgdG9waWM6YCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IHRoZSBjb3VudCBvZiB0aGUgZ2l2ZW4gdG9waWNzLiBcclxuICAgICAqIEBwYXJhbSB0b3BpY0lkIFRvcGljcyB0byBjb3VudCBtZXNzYWdlcyBvbi4gTWF4aW11bSBvZiAxMDAwLlxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGdldFNvdXJjZUNvdW50Rm9yVG9waWNzKHRvcGljSWRzOiBzdHJpbmdbXSk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgbnVtYmVyPj4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCB0b3BpY3MgPSBhd2FpdCB0aGlzLmdldFRvcGljc0J5SWQodG9waWNJZHMpO1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKHRvcGljcy5tYXAodG9waWMgPT4gWyB0b3BpYy5pZCwgdG9waWMubWVzc2FnZUNvdW50ID8/IDAgXSkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW0JhbnRhL1RvcGljc10gRmFpbGVkIHRvIGdldCBtZXNzYWdlIGNvdW50IGZvciB0b3BpY3MgJyR7dG9waWNJZHMuam9pbignLCcpfV0nOmApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ2l2ZW4gdG9waWMuIFxyXG4gICAgICogQHBhcmFtIHRvcGljSWQgXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgdG9waWMgb2JqZWN0LCBvciB1bmRlZmluZWQgaWYgbm8gc3VjaCB0b3BpYyB3YXMgZm91bmQuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGdldFRvcGljKHRvcGljSWQ6IHN0cmluZyk6IFByb21pc2U8VG9waWMgfCB1bmRlZmluZWQ+IHtcclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHt0aGlzLnNlcnZpY2VVcmx9L3RvcGljcy8ke3RvcGljSWR9YClcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpXHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIHRvcGljOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxyXG5cclxuICAgICAgICByZXR1cm4gPFRvcGljPiBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdpdmVuIHRvcGljc1xyXG4gICAgICogQHBhcmFtIHRvcGljSWRzIFRoZSB0b3BpYyBJRHMgdG8gbG9vayB1cC4gTWF4aW11bSBvZiAxMDAwLlxyXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgbWF0Y2hpbmcgdG9waWMgb2JqZWN0cy5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZ2V0VG9waWNzQnlJZCh0b3BpY0lkczogc3RyaW5nW10pOiBQcm9taXNlPFRvcGljW10+IHtcclxuICAgICAgICBpZiAodG9waWNJZHMubGVuZ3RoID4gMTAwMClcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgbG9vayB1cCBtb3JlIHRoYW4gMTAwMCB0b3BpY3MgYXQgYSB0aW1lLmApO1xyXG5cclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHt0aGlzLnNlcnZpY2VVcmx9L3RvcGljcz9pZHM9JHtlbmNvZGVVUklDb21wb25lbnQodG9waWNJZHMuam9pbignLCcpKX1gKVxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPj0gNDAwKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCB0b3BpYzogJHtyZXNwb25zZS5zdGF0dXN9YClcclxuXHJcbiAgICAgICAgcmV0dXJuIDxUb3BpY1tdPiBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgYSBzZXQgb2YgbWVzc2FnZXMgZnJvbSB0aGUgZ2l2ZW4gdG9waWMuXHJcbiAgICAgKiBAcGFyYW0gdG9waWNJZCBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXRNZXNzYWdlcyhcclxuICAgICAgICB0b3BpY0lkOiBzdHJpbmcsIFxyXG4gICAgICAgIHNvcnQ/OiBDb21tZW50c09yZGVyLCBcclxuICAgICAgICBmaWx0ZXI/OiBGaWx0ZXJNb2RlLCBcclxuICAgICAgICBvZmZzZXQ/OiBudW1iZXIsIFxyXG4gICAgICAgIGxpbWl0PzogbnVtYmVyXHJcbiAgICApOiBQcm9taXNlPENoYXRNZXNzYWdlW10+IHtcclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChcclxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJsfS90b3BpY3MvJHt0b3BpY0lkfS9tZXNzYWdlcz8keyBidWlsZFF1ZXJ5KHsgc29ydCwgZmlsdGVyLCBvZmZzZXQsIGxpbWl0IH0pIH1gXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIG1lc3NhZ2VzIGZvciB0b3BpYzogJHtyZXNwb25zZS5zdGF0dXN9YClcclxuXHJcbiAgICAgICAgcmV0dXJuIDxDaGF0TWVzc2FnZVtdPiBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgYSBzZXQgb2YgbWVzc2FnZXMgZnJvbSB0aGUgZ2l2ZW4gdG9waWMuXHJcbiAgICAgKiBAcGFyYW0gdG9waWNJZCBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXRSZXBsaWVzKFxyXG4gICAgICAgIHBhcmVudE1lc3NhZ2VJZDogc3RyaW5nLFxyXG4gICAgICAgIHNvcnQ/OiBDb21tZW50c09yZGVyLCBcclxuICAgICAgICBmaWx0ZXI/OiBGaWx0ZXJNb2RlLCBcclxuICAgICAgICBvZmZzZXQ/OiBudW1iZXIsIFxyXG4gICAgICAgIGxpbWl0PzogbnVtYmVyXHJcbiAgICApOiBQcm9taXNlPENoYXRNZXNzYWdlW10+IHtcclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChcclxuICAgICAgICAgICAgYCR7dGhpcy5zZXJ2aWNlVXJsfS9tZXNzYWdlcy8ke3BhcmVudE1lc3NhZ2VJZH0vcmVwbGllcz8keyBidWlsZFF1ZXJ5KHsgc29ydCwgZmlsdGVyLCBvZmZzZXQsIGxpbWl0IH0pIH1gXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIHJlcGxpZXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXHJcblxyXG4gICAgICAgIHJldHVybiA8Q2hhdE1lc3NhZ2VbXT4gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2hNZXNzYWdlKG1lc3NhZ2U6IENoYXRNZXNzYWdlKTogUHJvbWlzZTxDaGF0TWVzc2FnZT4ge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBnZXRNZXNzYWdlKHRvcGljSWQ6IHN0cmluZywgbWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgICB9XHJcbiAgICBnZXRTdWJNZXNzYWdlKHRvcGljSWQ6IHN0cmluZywgcGFyZW50TWVzc2FnZUlkOiBzdHJpbmcsIG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxDaGF0TWVzc2FnZT4ge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gICAgfVxyXG4gICAgd2F0Y2hNZXNzYWdlKG1lc3NhZ2U6IENoYXRNZXNzYWdlLCBoYW5kbGVyOiAobWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHZvaWQpOiAoKSA9PiB2b2lkIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcclxuICAgIH1cclxuICAgIG5vdGlmaWNhdGlvbnNDaGFuZ2VkOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbltdPjtcclxuICAgIG5ld05vdGlmaWNhdGlvbjogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb24+O1xyXG4gICAgXHJcbiAgICBhc3luYyBnZXRDYXJkRm9yVXJsKHVybDogc3RyaW5nKTogUHJvbWlzZTxVcmxDYXJkPiB7XHJcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7dGhpcy5zZXJ2aWNlVXJsfS91cmxzYCwge1xyXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICB1cmxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSA0MDQpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPj0gNDAwKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSBVUkwgY2FyZDogJHtyZXNwb25zZS5zdGF0dXN9LiBCb2R5OiAnJHthd2FpdCByZXNwb25zZS50ZXh0KCl9J2ApO1xyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgfVxyXG59Il19
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1iYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY2hhdC1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBZSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBNEMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVJLE9BQU8sRUFBRSxlQUFlLEVBQXFCLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHbEMsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBRGhEOztRQUVZLFlBQU8sR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwQyxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXpDLFVBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQztLQStObEI7SUE3TkcsSUFBSSxVQUFVO1FBQ1YsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLHVCQUF1QixFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUVPLEtBQUssQ0FBQyxnQkFBZ0I7UUFDMUIsSUFBSSxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxPQUFPLFlBQVks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QjtRQUNyRSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELFlBQVksQ0FBQyxPQUFvQixFQUFFLE9BQXVDO1FBQ3RFLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBSUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFXO1FBQzNCLElBQUksUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsT0FBTyxFQUFFO1lBQ2xELE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFO2dCQUNMLGNBQWMsRUFBRSxrQkFBa0I7YUFDckM7WUFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDakIsR0FBRzthQUNOLENBQUM7U0FDTCxDQUFDLENBQUM7UUFFSCxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksR0FBRztZQUN0QixPQUFPLElBQUksQ0FBQztRQUVoQixJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksR0FBRztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxRQUFRLENBQUMsTUFBTSxZQUFZLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV6RyxPQUFPLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7OEdBbE9RLFdBQVc7a0hBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENvbW1lbnRzT3JkZXIsIER1cmFibGVTb2NrZXQsIEZpbHRlck1vZGUsIE5vdGlmaWNhdGlvbiwgVG9waWMsIFVybENhcmQsIFVzZXIsIFZvdGUsIGJ1aWxkUXVlcnkgfSBmcm9tIFwiQGJhbnRhL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQ2hhdEJhY2tlbmRCYXNlLCBDaGF0U291cmNlT3B0aW9ucyB9IGZyb20gXCIuL2NoYXQtYmFja2VuZC1iYXNlXCI7XHJcbmltcG9ydCB7IENoYXRTb3VyY2UgfSBmcm9tIFwiLi9jaGF0LXNvdXJjZVwiO1xyXG5pbXBvcnQgeyBDaGF0U291cmNlQmFzZSB9IGZyb20gXCIuL2NoYXQtc291cmNlLWJhc2VcIjtcclxuaW1wb3J0IHsgQkFOVEFfU0RLX09QVElPTlMsIFNka09wdGlvbnMgfSBmcm9tIFwiLi9zZGstb3B0aW9uc1wiO1xyXG5pbXBvcnQgeyBQTEFURk9STV9JRCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IFN0YXRpY0NoYXRTb3VyY2UgfSBmcm9tIFwiLi9zdGF0aWMtY2hhdC1zb3VyY2VcIjtcclxuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hhdEJhY2tlbmQgZXh0ZW5kcyBDaGF0QmFja2VuZEJhc2Uge1xyXG4gICAgcHJpdmF0ZSBvcHRpb25zID0gaW5qZWN0KEJBTlRBX1NES19PUFRJT05TKTtcclxuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XHJcblxyXG4gICAgcnVuSWQgPSB1dWlkKCk7XHJcblxyXG4gICAgZ2V0IHNlcnZpY2VVcmwoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucz8uc2VydmljZVVybCA/PyAnaHR0cDovL2xvY2FsaG9zdDozNDIyJ31gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgY29ubmVjdFRvU2VydmljZSgpIHtcclxuICAgICAgICBsZXQgZGV2aWNlSWQgPSB1dWlkKCk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2VbJ2JhbnRhLWNoYXQ6ZGV2aWNlSWQnXSkge1xyXG4gICAgICAgICAgICAgICAgZGV2aWNlSWQgPSBsb2NhbFN0b3JhZ2VbJ2JhbnRhLWNoYXQ6ZGV2aWNlSWQnXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZVsnYmFudGEtY2hhdDpkZXZpY2VJZCddID0gZGV2aWNlSWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzb2NrZXQgPSBuZXcgRHVyYWJsZVNvY2tldChgJHt0aGlzLnNlcnZpY2VVcmwucmVwbGFjZSgvXmh0dHAvLCAnd3MnKX0vc29ja2V0YCwgdW5kZWZpbmVkLCBgJHtkZXZpY2VJZH0sJHt0aGlzLnJ1bklkfWApO1xyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgc29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc29ja2V0Lm9uY2xvc2UgPSBlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlLmNvZGUgPT09IDUwMykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjb25uZWN0IHRvIGNoYXQgc2VydmljZSFgKTtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc29ja2V0Lm9uZXJyb3IgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgIHJldHVybiBzb2NrZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc1NlcnZlcigpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGxvY2FsU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbG9jYWxTdG9yYWdlWydiYW50YTpkZWJ1Zzp1c2VTdGF0aWNTb3VyY2UnXSA9PT0gJzEnKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIGlmIHdlIGFyZSBjdXJyZW50bHkgcnVubmluZyBpbnNpZGUgYSBHb29nbGVib3QgdXNlciBhZ2VudCBvciB2aWEgdGhlIEdvb2dsZSBpbnNwZWN0aW9uIHRvb2wgaW4gU2VhcmNoIENvbnNvbGUuXHJcbiAgICAgKiBXZSdsbCB1c2UgdGhpcyB0byBhdm9pZCBXZWJTb2NrZXRzIHNvIHRoYXQgY29tbWVudHMgY2FuIGJlIGluZGV4YWJsZS5cclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzR29vZ2xlYm90KCkge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAoXHJcbiAgICAgICAgICAgIG5hdmlnYXRvci51c2VyQWdlbnQuaW5jbHVkZXMoJ0dvb2dsZWJvdCcpXHJcbiAgICAgICAgICAgIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5jbHVkZXMoJ0dvb2dsZS1JbnNwZWN0aW9uVG9vbCcpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRTb3VyY2VGb3JUb3BpYyh0b3BpY0lkOiBzdHJpbmcsIG9wdGlvbnM/OiBDaGF0U291cmNlT3B0aW9ucyk6IFByb21pc2U8Q2hhdFNvdXJjZUJhc2U+IHtcclxuICAgICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIG5lZWQgdG8gZG8gYSBzaW5nbGUgUkVTVCByZXF1ZXN0IHRvIGZldGNoIHRoZSBtZXNzYWdlcyBcclxuICAgICAgICAvLyBhbmQgbm90IHVzZSBCYW50YSdzIHNvY2tldCBSUEMgc2luY2UgdGhlIG9wZW4gZW5kZWQgbGlmZXRpbWUgb2YgYSBXZWJTb2NrZXQgY29ubmVjdGlvbiBcclxuICAgICAgICAvLyBkb2VzIG5vdCBtYXRjaCB0aGUgdXNlIGNhc2UuXHJcbiAgICAgICAgLy8gLSBXaGVuIHJ1bm5pbmcgaW4gU1NSXHJcbiAgICAgICAgLy8gLSBXaGVuIHJ1bm5pbmcgaW4gR29vZ2xlYm90IChHb29nbGVib3QgYWxzbyBkb2Vzbid0IHN1cHBvcnQgV2ViU29ja2V0cyBhbnl3YXkpXHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzU2VydmVyKCkgfHwgdGhpcy5pc0dvb2dsZWJvdCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RhdGljQ2hhdFNvdXJjZSh0aGlzLCB0b3BpY0lkLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBuZXcgQ2hhdFNvdXJjZSh0aGlzLCB0b3BpY0lkLCB1bmRlZmluZWQsIHsgc29ydE9yZGVyOiBDb21tZW50c09yZGVyLk5FV0VTVCwgZmlsdGVyTW9kZTogRmlsdGVyTW9kZS5BTEwsIC4uLm9wdGlvbnMgfSlcclxuICAgICAgICAgICAgICAgIC5iaW5kKGF3YWl0IHRoaXMuY29ubmVjdFRvU2VydmljZSgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0U291cmNlRm9yVGhyZWFkKHRvcGljSWQ6IHN0cmluZywgbWVzc2FnZUlkOiBzdHJpbmcsIG9wdGlvbnM/OiBDaGF0U291cmNlT3B0aW9ucyk6IFByb21pc2U8Q2hhdFNvdXJjZUJhc2U+IHtcclxuICAgICAgICAvLyBXaGVuIHJ1bm5pbmcgb24gdGhlIHNlcnZlciBwbGF0Zm9ybSwgd2UncmUganVzdCBnb2luZyB0byBkbyBhIHNpbmdsZSBSRVNUIHJlcXVlc3QgdG8gZmV0Y2ggdGhlIG1lc3NhZ2VzIFxyXG4gICAgICAgIC8vIGFuZCBub3QgdXNlIEJhbnRhJ3Mgc29ja2V0IFJQQy5cclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5pc1NlcnZlcigpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RhdGljQ2hhdFNvdXJjZSh0aGlzLCB0b3BpY0lkLCBtZXNzYWdlSWQsIG9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBuZXcgQ2hhdFNvdXJjZSh0aGlzLCB0b3BpY0lkLCBtZXNzYWdlSWQsIHsgc29ydE9yZGVyOiBDb21tZW50c09yZGVyLk5FV0VTVCwgZmlsdGVyTW9kZTogRmlsdGVyTW9kZS5BTEwsIC4uLm9wdGlvbnMgfSlcclxuICAgICAgICAgICAgICAgIC5iaW5kKGF3YWl0IHRoaXMuY29ubmVjdFRvU2VydmljZSgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgdGhlIGNvdW50IG9mIHRoZSBnaXZlbiB0b3BpY1xyXG4gICAgICogQHBhcmFtIHRvcGljSWQgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgYXN5bmMgZ2V0U291cmNlQ291bnRGb3JUb3BpYyh0b3BpY0lkOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCB0b3BpYyA9IGF3YWl0IHRoaXMuZ2V0VG9waWModG9waWNJZCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0b3BpYz8ubWVzc2FnZUNvdW50ID8/IDA7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBbQmFudGEvJHt0b3BpY0lkfV0gRmFpbGVkIHRvIGdldCBtZXNzYWdlIGNvdW50IGZvciB0b3BpYzpgKTtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgdGhlIGNvdW50IG9mIHRoZSBnaXZlbiB0b3BpY3MuIFxyXG4gICAgICogQHBhcmFtIHRvcGljSWQgVG9waWNzIHRvIGNvdW50IG1lc3NhZ2VzIG9uLiBNYXhpbXVtIG9mIDEwMDAuXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgYXN5bmMgZ2V0U291cmNlQ291bnRGb3JUb3BpY3ModG9waWNJZHM6IHN0cmluZ1tdKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IHRvcGljcyA9IGF3YWl0IHRoaXMuZ2V0VG9waWNzQnlJZCh0b3BpY0lkcyk7XHJcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXModG9waWNzLm1hcCh0b3BpYyA9PiBbIHRvcGljLmlkLCB0b3BpYy5tZXNzYWdlQ291bnQgPz8gMCBdKSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBbQmFudGEvVG9waWNzXSBGYWlsZWQgdG8gZ2V0IG1lc3NhZ2UgY291bnQgZm9yIHRvcGljcyAnJHt0b3BpY0lkcy5qb2luKCcsJyl9XSc6YCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBnaXZlbiB0b3BpYy4gXHJcbiAgICAgKiBAcGFyYW0gdG9waWNJZCBcclxuICAgICAqIEByZXR1cm5zIFRoZSB0b3BpYyBvYmplY3QsIG9yIHVuZGVmaW5lZCBpZiBubyBzdWNoIHRvcGljIHdhcyBmb3VuZC5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZ2V0VG9waWModG9waWNJZDogc3RyaW5nKTogUHJvbWlzZTxUb3BpYyB8IHVuZGVmaW5lZD4ge1xyXG4gICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke3RoaXMuc2VydmljZVVybH0vdG9waWNzLyR7dG9waWNJZH1gKVxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNClcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDQwMClcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggdG9waWM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXHJcblxyXG4gICAgICAgIHJldHVybiA8VG9waWM+IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ2l2ZW4gdG9waWNzXHJcbiAgICAgKiBAcGFyYW0gdG9waWNJZHMgVGhlIHRvcGljIElEcyB0byBsb29rIHVwLiBNYXhpbXVtIG9mIDEwMDAuXHJcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBtYXRjaGluZyB0b3BpYyBvYmplY3RzLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXRUb3BpY3NCeUlkKHRvcGljSWRzOiBzdHJpbmdbXSk6IFByb21pc2U8VG9waWNbXT4ge1xyXG4gICAgICAgIGlmICh0b3BpY0lkcy5sZW5ndGggPiAxMDAwKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBsb29rIHVwIG1vcmUgdGhhbiAxMDAwIHRvcGljcyBhdCBhIHRpbWUuYCk7XHJcblxyXG4gICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke3RoaXMuc2VydmljZVVybH0vdG9waWNzP2lkcz0ke2VuY29kZVVSSUNvbXBvbmVudCh0b3BpY0lkcy5qb2luKCcsJykpfWApXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIHRvcGljOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxyXG5cclxuICAgICAgICByZXR1cm4gPFRvcGljW10+IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBhIHNldCBvZiBtZXNzYWdlcyBmcm9tIHRoZSBnaXZlbiB0b3BpYy5cclxuICAgICAqIEBwYXJhbSB0b3BpY0lkIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGdldE1lc3NhZ2VzKFxyXG4gICAgICAgIHRvcGljSWQ6IHN0cmluZywgXHJcbiAgICAgICAgc29ydD86IENvbW1lbnRzT3JkZXIsIFxyXG4gICAgICAgIGZpbHRlcj86IEZpbHRlck1vZGUsIFxyXG4gICAgICAgIG9mZnNldD86IG51bWJlciwgXHJcbiAgICAgICAgbGltaXQ/OiBudW1iZXJcclxuICAgICk6IFByb21pc2U8Q2hhdE1lc3NhZ2VbXT4ge1xyXG4gICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKFxyXG4gICAgICAgICAgICBgJHt0aGlzLnNlcnZpY2VVcmx9L3RvcGljcy8ke3RvcGljSWR9L21lc3NhZ2VzPyR7IGJ1aWxkUXVlcnkoeyBzb3J0LCBmaWx0ZXIsIG9mZnNldCwgbGltaXQgfSkgfWBcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDQwMClcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggbWVzc2FnZXMgZm9yIHRvcGljOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxyXG5cclxuICAgICAgICByZXR1cm4gPENoYXRNZXNzYWdlW10+IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBhIHNldCBvZiBtZXNzYWdlcyBmcm9tIHRoZSBnaXZlbiB0b3BpYy5cclxuICAgICAqIEBwYXJhbSB0b3BpY0lkIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGdldFJlcGxpZXMoXHJcbiAgICAgICAgcGFyZW50TWVzc2FnZUlkOiBzdHJpbmcsXHJcbiAgICAgICAgc29ydD86IENvbW1lbnRzT3JkZXIsIFxyXG4gICAgICAgIGZpbHRlcj86IEZpbHRlck1vZGUsIFxyXG4gICAgICAgIG9mZnNldD86IG51bWJlciwgXHJcbiAgICAgICAgbGltaXQ/OiBudW1iZXJcclxuICAgICk6IFByb21pc2U8Q2hhdE1lc3NhZ2VbXT4ge1xyXG4gICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKFxyXG4gICAgICAgICAgICBgJHt0aGlzLnNlcnZpY2VVcmx9L21lc3NhZ2VzLyR7cGFyZW50TWVzc2FnZUlkfS9yZXBsaWVzPyR7IGJ1aWxkUXVlcnkoeyBzb3J0LCBmaWx0ZXIsIG9mZnNldCwgbGltaXQgfSkgfWBcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDQwMClcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggcmVwbGllczogJHtyZXNwb25zZS5zdGF0dXN9YClcclxuXHJcbiAgICAgICAgcmV0dXJuIDxDaGF0TWVzc2FnZVtdPiBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVmcmVzaE1lc3NhZ2UobWVzc2FnZTogQ2hhdE1lc3NhZ2UpOiBQcm9taXNlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE1lc3NhZ2UodG9waWNJZDogc3RyaW5nLCBtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8Q2hhdE1lc3NhZ2U+IHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcclxuICAgIH1cclxuICAgIGdldFN1Yk1lc3NhZ2UodG9waWNJZDogc3RyaW5nLCBwYXJlbnRNZXNzYWdlSWQ6IHN0cmluZywgbWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgICB9XHJcbiAgICB3YXRjaE1lc3NhZ2UobWVzc2FnZTogQ2hhdE1lc3NhZ2UsIGhhbmRsZXI6IChtZXNzYWdlOiBDaGF0TWVzc2FnZSkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gICAgfVxyXG4gICAgbm90aWZpY2F0aW9uc0NoYW5nZWQ6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uW10+O1xyXG4gICAgbmV3Tm90aWZpY2F0aW9uOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbj47XHJcbiAgICBcclxuICAgIGFzeW5jIGdldENhcmRGb3JVcmwodXJsOiBzdHJpbmcpOiBQcm9taXNlPFVybENhcmQ+IHtcclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHt0aGlzLnNlcnZpY2VVcmx9L3VybHNgLCB7XHJcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgIHVybFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDQwNClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIFVSTCBjYXJkOiAke3Jlc3BvbnNlLnN0YXR1c30uIEJvZHk6ICcke2F3YWl0IHJlc3BvbnNlLnRleHQoKX0nYCk7XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zb3VyY2UtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NoYXQtc291cmNlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENvbW1lbnRzT3JkZXIsIENoYXRQZXJtaXNzaW9ucywgRmlsdGVyTW9kZSB9IGZyb20gJ0BiYW50YS9jb21tb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0U291cmNlQmFzZSB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSB0b3BpYyBpZGVudGlmaWVyIGZvciB0aGUgY3VycmVudCBjaGF0L2NvbW1lbnRzXHJcbiAgICAgKi9cclxuICAgIGlkZW50aWZpZXI6IHN0cmluZztcclxuICAgIHBlcm1pc3Npb25zOiBDaGF0UGVybWlzc2lvbnM7XHJcbiAgICByZWFkeTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBJRCBvZiB0aGUgcGFyZW50IG1lc3NhZ2UgdGhhdCB0aGlzIHRocmVhZCBjaGF0IHNvdXJjZSBpcyBmb3IuXHJcbiAgICAgKiBXaGVuIHRoaXMgaXMgbm90IHNldCwgdGhlIGNoYXQgc291cmNlIGlzIGEgdG9wLWxldmVsIChcInRvcGljXCIpIHNvdXJjZS5cclxuICAgICAqIFdoZW4gaXQgaXMgc2V0LCB0aGlzIGNoYXQgc291cmNlIGlzIGEgdGhyZWFkIHNvdXJjZSAoaWUgcmVwbGllcykuXHJcbiAgICAgKi9cclxuICAgIHBhcmVudElkZW50aWZpZXI/OiBzdHJpbmc7XHJcbiAgICBzb3J0T3JkZXI/OiBDb21tZW50c09yZGVyO1xyXG4gICAgZmlsdGVyTW9kZT86IEZpbHRlck1vZGU7XHJcbiAgICBtZXNzYWdlUmVjZWl2ZWQ6IE9ic2VydmFibGU8Q2hhdE1lc3NhZ2U+O1xyXG4gICAgbWVzc2FnZU9ic2VydmVkOiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlPjtcclxuICAgIG1lc3NhZ2VVcGRhdGVkOiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlPjtcclxuICAgIG1lc3NhZ2VTZW50OiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlPjtcclxuICAgIG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdO1xyXG4gICAgc2VuZChtZXNzYWdlOiBDaGF0TWVzc2FnZSk6IFByb21pc2U8Q2hhdE1lc3NhZ2U+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zb3VyY2UtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NoYXQtc291cmNlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENvbW1lbnRzT3JkZXIsIENoYXRQZXJtaXNzaW9ucywgRmlsdGVyTW9kZSB9IGZyb20gJ0BiYW50YS9jb21tb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0U291cmNlQmFzZSB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSB0b3BpYyBpZGVudGlmaWVyIGZvciB0aGUgY3VycmVudCBjaGF0L2NvbW1lbnRzXHJcbiAgICAgKi9cclxuICAgIGlkZW50aWZpZXI6IHN0cmluZztcclxuICAgIHBlcm1pc3Npb25zOiBDaGF0UGVybWlzc2lvbnM7XHJcbiAgICByZWFkeTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBJRCBvZiB0aGUgcGFyZW50IG1lc3NhZ2UgdGhhdCB0aGlzIHRocmVhZCBjaGF0IHNvdXJjZSBpcyBmb3IuXHJcbiAgICAgKiBXaGVuIHRoaXMgaXMgbm90IHNldCwgdGhlIGNoYXQgc291cmNlIGlzIGEgdG9wLWxldmVsIChcInRvcGljXCIpIHNvdXJjZS5cclxuICAgICAqIFdoZW4gaXQgaXMgc2V0LCB0aGlzIGNoYXQgc291cmNlIGlzIGEgdGhyZWFkIHNvdXJjZSAoaWUgcmVwbGllcykuXHJcbiAgICAgKi9cclxuICAgIHBhcmVudElkZW50aWZpZXI/OiBzdHJpbmc7XHJcbiAgICBzb3J0T3JkZXI/OiBDb21tZW50c09yZGVyO1xyXG4gICAgZmlsdGVyTW9kZT86IEZpbHRlck1vZGU7XHJcbiAgICBtZXNzYWdlUmVjZWl2ZWQ6IE9ic2VydmFibGU8Q2hhdE1lc3NhZ2U+O1xyXG4gICAgbWVzc2FnZU9ic2VydmVkOiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlPjtcclxuICAgIG1lc3NhZ2VVcGRhdGVkOiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlPjtcclxuICAgIG1lc3NhZ2VTZW50OiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlPjtcclxuICAgIG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdO1xyXG4gICAgc2VuZChtZXNzYWdlOiBDaGF0TWVzc2FnZSk6IFByb21pc2U8Q2hhdE1lc3NhZ2U+O1xyXG4gICAgY2xvc2UoKTtcclxuICAgIGdldENvdW50KCk6IFByb21pc2U8bnVtYmVyPjtcclxuICAgIGxvYWRTaW5jZShpZDogc3RyaW5nKTogUHJvbWlzZTxDaGF0TWVzc2FnZVtdPjtcclxuICAgIGdldEV4aXN0aW5nTWVzc2FnZXMoKTogUHJvbWlzZTxDaGF0TWVzc2FnZVtdPjtcclxuICAgIGxvYWRBZnRlcihtZXNzYWdlOiBDaGF0TWVzc2FnZSwgY291bnQ6IG51bWJlcik6IFByb21pc2U8Q2hhdE1lc3NhZ2VbXT47XHJcbiAgICBnZXQoaWQ6IHN0cmluZyk6IFByb21pc2U8Q2hhdE1lc3NhZ2U+O1xyXG4gICAgbGlrZU1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xyXG4gICAgdW5saWtlTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XHJcbiAgICBlZGl0TWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZywgdGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcclxuICAgIGRlbGV0ZU1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICAgIGNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQ/OiBPYnNlcnZhYmxlPCdjb25uZWN0ZWQnIHwgJ2Nvbm5lY3RpbmcnIHwgJ2xvc3QnIHwgJ3Jlc3RvcmVkJz47XHJcbiAgICBzdGF0ZT86ICdjb25uZWN0aW5nJyB8ICdjb25uZWN0ZWQnIHwgJ2xvc3QnIHwgJ3Jlc3RvcmVkJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZW4gdHJ1ZSwgdGhpcyBzb3VyY2UgaXMgcmVhZG9ubHksIHNvIG1lc3NhZ2VzIGNhbm5vdCBiZSBzZW50L2VkaXRlZC9kZWxldGVkLCBub3IgbGlrZWQvdW5saWtlZC5cclxuICAgICAqL1xyXG4gICAgcmVhZG9ubHk/OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hlbiB0cnVlL3VuZGVmaW5lZCwgdGhlIHNvdXJjZSBzdXBwb3J0cyBsb2FkaW5nIG1vcmUgbWVzc2FnZXMuIFdoZW4gZmFsc2UsIGl0IGRvZXMgbm90LlxyXG4gICAgICovXHJcbiAgICBjYW5Mb2FkTW9yZT86IGJvb2xlYW47XHJcblxyXG4gICAgZ2V0IGVycm9yU3RhdGUoKTtcclxufSJdfQ==
|
|
@@ -81,6 +81,32 @@ export class ChatSource extends SocketRPC {
|
|
|
81
81
|
}
|
|
82
82
|
return message;
|
|
83
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Ask server for messages that have occurred since the message with the given ID.
|
|
86
|
+
* This is used during brief reconnects to avoid dropping messages, while also not
|
|
87
|
+
* causing mobbing as everyone reconnects after an issue. The backend can choose to
|
|
88
|
+
* not service this request, instead returning undefined. In that case, the client
|
|
89
|
+
* is expected to fetch the existing messages and start state anew.
|
|
90
|
+
*
|
|
91
|
+
* TODO: this is not yet used
|
|
92
|
+
*
|
|
93
|
+
* @param id
|
|
94
|
+
* @returns
|
|
95
|
+
*/
|
|
96
|
+
async loadSince(id) {
|
|
97
|
+
try {
|
|
98
|
+
let messages = await this.idempotentPeer.loadSince(id);
|
|
99
|
+
if (messages) {
|
|
100
|
+
messages = this.mapOrUpdateMessages(messages);
|
|
101
|
+
}
|
|
102
|
+
return messages;
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
console.error(`[Banta/${this.identifier}] Error occurred while trying to get existing messages:`);
|
|
106
|
+
console.error(e);
|
|
107
|
+
return [];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
84
110
|
async getExistingMessages() {
|
|
85
111
|
try {
|
|
86
112
|
let messages = await this.idempotentPeer.getExistingMessages(this.options.initialMessageCount ?? 20);
|
|
@@ -181,7 +207,10 @@ export class ChatSource extends SocketRPC {
|
|
|
181
207
|
async send(message) {
|
|
182
208
|
await this.ensureConnection();
|
|
183
209
|
message.id ??= uuid();
|
|
184
|
-
|
|
210
|
+
let finishedMessage = await this.idempotentPeer.sendMessage(message);
|
|
211
|
+
this.messageMap.set(finishedMessage.id, finishedMessage);
|
|
212
|
+
this._messageReceived.next(finishedMessage);
|
|
213
|
+
return finishedMessage;
|
|
185
214
|
}
|
|
186
215
|
async loadAfter(message, count) {
|
|
187
216
|
if (!message)
|
|
@@ -227,4 +256,4 @@ __decorate([
|
|
|
227
256
|
__decorate([
|
|
228
257
|
RpcEvent()
|
|
229
258
|
], ChatSource.prototype, "onChatMessage", null);
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jaGF0LXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3BELE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS2xDLE1BQU0sT0FBTyxVQUFXLFNBQVEsU0FBUztJQUNyQyxZQUNhLE9BQW9CLEVBQ3BCLFVBQWtCLEVBQ2xCLGdCQUF3QixFQUNqQyxPQUEwQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQUxDLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFTN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRzFDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFLWCxXQUFNLEdBQXFELFlBQVksQ0FBQztRQW1CeEUsNEJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQW9ELENBQUM7UUFDMUYsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDO1FBR3ZFLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBNkVwQixxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUF5Q3JCLGlCQUFZLEdBQWdCLFlBQVksQ0FBQztRQUN6Qyx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBYyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUUseUJBQW9CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FB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Q0FJVjtBQUdEO0lBREMsUUFBUSxFQUFFOytDQVdWIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRQZXJtaXNzaW9ucywgQ29tbWVudHNPcmRlciwgRHVyYWJsZVNvY2tldCwgVXNlciB9IGZyb20gXCJAYmFudGEvY29tbW9uXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgUnBjRXZlbnQsIFNvY2tldFJQQyB9IGZyb20gXCJAYmFudGEvY29tbW9uXCI7XHJcbmltcG9ydCB7IENoYXRTb3VyY2VCYXNlIH0gZnJvbSBcIi4vY2hhdC1zb3VyY2UtYmFzZVwiO1xyXG5pbXBvcnQgeyBDaGF0QmFja2VuZCB9IGZyb20gXCIuL2NoYXQtYmFja2VuZFwiO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcclxuaW1wb3J0IHsgQ2hhdFNvdXJjZU9wdGlvbnMgfSBmcm9tIFwiLi9jaGF0LWJhY2tlbmQtYmFzZVwiO1xyXG5cclxuZXhwb3J0IHR5cGUgU2lnbkluU3RhdGUgPSAnc2lnbmVkLW91dCcgfCAnc2lnbmVkLWluJyB8ICdzaWduaW5nLWluJztcclxuXHJcbmV4cG9ydCBjbGFzcyBDaGF0U291cmNlIGV4dGVuZHMgU29ja2V0UlBDIGltcGxlbWVudHMgQ2hhdFNvdXJjZUJhc2Uge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcmVhZG9ubHkgYmFja2VuZDogQ2hhdEJhY2tlbmQsXHJcbiAgICAgICAgcmVhZG9ubHkgaWRlbnRpZmllcjogc3RyaW5nLFxyXG4gICAgICAgIHJlYWRvbmx5IHBhcmVudElkZW50aWZpZXI6IHN0cmluZyxcclxuICAgICAgICBvcHRpb25zOiBDaGF0U291cmNlT3B0aW9uc1xyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zID8/IHt9O1xyXG4gICAgICAgIHRoaXMucmVhZHkgPSBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHRoaXMubWFya1JlYWR5ID0gcmVzb2x2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBDaGF0U291cmNlT3B0aW9ucztcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgcHJpdmF0ZSBtYXJrUmVhZHk6ICgpID0+IHZvaWQ7XHJcblxyXG4gICAgcmVhZG9ubHkgPSBmYWxzZTtcclxuICAgIGNhbkxvYWRNb3JlID0gdHJ1ZTtcclxuXHJcbiAgICByZWFkeTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgICBwZXJtaXNzaW9uczogQ2hhdFBlcm1pc3Npb25zO1xyXG4gICAgcHJpdmF0ZSBfc3RhdGU6ICdjb25uZWN0ZWQnIHwgJ2Nvbm5lY3RpbmcnIHwgJ2xvc3QnIHwgJ3Jlc3RvcmVkJyA9ICdjb25uZWN0aW5nJztcclxuXHJcbiAgICBnZXQgc29ydE9yZGVyKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnM/LnNvcnRPcmRlcjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZmlsdGVyTW9kZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXJNb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzdGF0ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHN0YXRlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUgPSB2YWx1ZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX2Nvbm5lY3Rpb25TdGF0ZUNoYW5nZWQubmV4dCh0aGlzLl9zdGF0ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2Nvbm5lY3Rpb25TdGF0ZUNoYW5nZWQgPSBuZXcgU3ViamVjdDwnY29ubmVjdGVkJyB8ICdjb25uZWN0aW5nJyB8ICdsb3N0JyB8ICdyZXN0b3JlZCc+KCk7XHJcbiAgICBwcml2YXRlIF9jb25uZWN0aW9uU3RhdGVDaGFuZ2VkJCA9IHRoaXMuX2Nvbm5lY3Rpb25TdGF0ZUNoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBnZXQgY29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpIHsgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25TdGF0ZUNoYW5nZWQkOyB9XHJcblxyXG4gICAgcHJpdmF0ZSB3YXNSZXN0b3JlZCA9IGZhbHNlO1xyXG5cclxuICAgIGFzeW5jIGJpbmQoc29ja2V0OiBEdXJhYmxlU29ja2V0KTogUHJvbWlzZTx0aGlzPiB7XHJcbiAgICAgICAgc3VwZXIuYmluZChzb2NrZXQpO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5iYWNrZW5kLnVzZXJDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmF1dGhlbnRpY2F0ZSgpKSk7XHJcblxyXG4gICAgICAgIHNvY2tldC5hZGRFdmVudExpc3RlbmVyKCdvcGVuJywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgW0JhbnRhLyR7dGhpcy5pZGVudGlmaWVyfV0gU29ja2V0IGlzIG9wZW5gKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgW0JhbnRhLyR7dGhpcy5pZGVudGlmaWVyfV0gU29ja2V0IGVycm9yYCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNvY2tldC5hZGRFdmVudExpc3RlbmVyKCdsb3N0JywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gJ2xvc3QnO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBzb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcigncmVzdG9yZScsIGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy53YXNSZXN0b3JlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYXV0aGVudGljYXRlKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3Vic2NyaWJlVG9Ub3BpYygpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN1YnNjcmliZVRvVG9waWMoKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtCYW50YS9DaGF0U291cmNlXSBFcnJvciBkdXJpbmcgaW5pdGlhbCBzdWJzY3JpYmVUb1RvcGljOiAke2UubWVzc2FnZX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtYXBPclVwZGF0ZU1lc3NhZ2VzKG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdKTogQ2hhdE1lc3NhZ2VbXSB7XHJcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VzLm1hcChtZXNzYWdlID0+IHRoaXMubWFwT3JVcGRhdGVNZXNzYWdlKG1lc3NhZ2UpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1hcE9yVXBkYXRlTWVzc2FnZShtZXNzYWdlOiBDaGF0TWVzc2FnZSk6IENoYXRNZXNzYWdlIHtcclxuICAgICAgICBsZXQgZXhpc3RpbmdNZXNzYWdlID0gdGhpcy5tZXNzYWdlTWFwLmdldChtZXNzYWdlLmlkKTtcclxuICAgICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBPYmplY3QuYXNzaWduKGV4aXN0aW5nTWVzc2FnZSwgbWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlTWFwLnNldChtZXNzYWdlLmlkLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZU9ic2VydmVkLm5leHQobWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRFeGlzdGluZ01lc3NhZ2VzKCk6IFByb21pc2U8Q2hhdE1lc3NhZ2VbXT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMuaWRlbXBvdGVudFBlZXIuZ2V0RXhpc3RpbmdNZXNzYWdlcyh0aGlzLm9wdGlvbnMuaW5pdGlhbE1lc3NhZ2VDb3VudCA/PyAyMCk7XHJcbiAgICAgICAgICAgIG1lc3NhZ2VzID0gdGhpcy5tYXBPclVwZGF0ZU1lc3NhZ2VzKG1lc3NhZ2VzKTtcclxuICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2VzO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW0JhbnRhLyR7dGhpcy5pZGVudGlmaWVyfV0gRXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIGdldCBleGlzdGluZyBtZXNzYWdlczpgKTtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIGVuc3VyZUNvbm5lY3Rpb24oZXJyb3JNZXNzYWdlPzogc3RyaW5nKSB7XHJcbiAgICAgICAgLy8gbGV0IHJlYXNvbiA9IGBDb25uZWN0aW9uIHRvIGNoYXQgc2VydmljZXMgaXMgbm90IGN1cnJlbnRseSBhdmFpbGFibGUuYDtcclxuICAgICAgICAvLyBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nvbm5lY3RlZCcgJiYgdGhpcy5zdGF0ZSAhPT0gJ3Jlc3RvcmVkJykge1xyXG4gICAgICAgIC8vICAgICBpZiAoZXJyb3JNZXNzYWdlKVxyXG4gICAgICAgIC8vICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2Vycm9yTWVzc2FnZX06ICR7cmVhc29ufWApO1xyXG4gICAgICAgIC8vICAgICBlbHNlXHJcbiAgICAgICAgLy8gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cmVhc29ufWApO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBlZGl0TWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZywgdGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVDb25uZWN0aW9uKCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wZWVyLmVkaXRNZXNzYWdlKG1lc3NhZ2VJZCwgdGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVBdHRlbXB0ID0gMDtcclxuICAgIHByaXZhdGUgX2Vycm9yU3RhdGU6IHN0cmluZztcclxuXHJcbiAgICBnZXQgZXJyb3JTdGF0ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3JTdGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzdWJzY3JpYmVUb1RvcGljKCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW1tZWRpYXRlUGVlci5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlkZW50aWZpZXIsIHRoaXMucGFyZW50SWRlbnRpZmllciwgdGhpcy5vcHRpb25zLnNvcnRPcmRlciwgXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZmlsdGVyTW9kZSxcclxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5tZXRhZGF0YSA/PyB7fVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZUF0dGVtcHQgPSAwO1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvclN0YXRlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy53YXNSZXN0b3JlZCA/ICdyZXN0b3JlZCcgOiAnY29ubmVjdGVkJztcclxuICAgICAgICAgICAgdGhpcy5tYXJrUmVhZHkoKTtcclxuXHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBbQmFudGEvJHt0aGlzLmlkZW50aWZpZXJ9XSBFcnJvciB3aGlsZSBzdWJzY3JpYmluZyB0byB0b3BpY2ApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9ICdsb3N0JztcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JTdGF0ZSA9ICdzZXJ2ZXItaXNzdWUnO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVBdHRlbXB0ICs9IDE7XHJcbiAgICAgICAgICAgIGxldCBkZWxheSA9IE1hdGgubWluKDMwKjEwMDAsICgzKjEwMDAgKiB0aGlzLnN1YnNjcmliZUF0dGVtcHQpICogKDEgKyBNYXRoLnJhbmRvbSgpKSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtCYW50YS8ke3RoaXMuaWRlbnRpZmllcn1dIFdhaXRpbmcgJHtkZWxheX1tcyBiZWZvcmUgYXR0ZW1wdGluZyB0byByZWNvbm5lY3QuLi5gKTtcclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUgPT09ICdsb3N0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhgQXR0ZW1wdGluZyByZWNvbm5lY3Rpb24gYWZ0ZXIgZXJyb3IgaW4gc3Vic2NyaWJlVG9Ub3BpYy4uLmApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIGRlbGF5KTtcclxuXHJcbiAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NpZ25JblN0YXRlOiBTaWduSW5TdGF0ZSA9ICdzaWduZWQtb3V0JztcclxuICAgIHByaXZhdGUgX3NpZ25JblN0YXRlQ2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2lnbkluU3RhdGU+KHRoaXMuX3NpZ25JblN0YXRlKTtcclxuICAgIHByaXZhdGUgX3NpZ25JblN0YXRlQ2hhbmdlZCQgPSB0aGlzLl9zaWduSW5TdGF0ZUNoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgZ2V0IHNpZ25JblN0YXRlKCkgeyByZXR1cm4gdGhpcy5fc2lnbkluU3RhdGU7IH1cclxuICAgIGdldCBzaWduSW5TdGF0ZUNoYW5nZWQoKSB7IHJldHVybiB0aGlzLl9zaWduSW5TdGF0ZUNoYW5nZWQkOyB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRTaWduSW5TdGF0ZShzdGF0ZTogU2lnbkluU3RhdGUpIHtcclxuICAgICAgICB0aGlzLl9zaWduSW5TdGF0ZSA9IHN0YXRlO1xyXG4gICAgICAgIHRoaXMuX3NpZ25JblN0YXRlQ2hhbmdlZC5uZXh0KHN0YXRlKTtcclxuICAgIH1cclxuICAgIGFzeW5jIGF1dGhlbnRpY2F0ZSgpIHtcclxuICAgICAgICB0aGlzLnNldFNpZ25JblN0YXRlKCdzaWduaW5nLWluJyk7XHJcbiAgICAgICAgaWYgKHRoaXMuYmFja2VuZC51c2VyKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmltbWVkaWF0ZVBlZXIuYXV0aGVudGljYXRlKHRoaXMuYmFja2VuZC51c2VyPy50b2tlbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNpZ25JblN0YXRlKCdzaWduZWQtaW4nKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW0JhbnRhXSBDb3VsZCBub3QgYXV0aGVudGljYXRlOmApO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2lnbkluU3RhdGUoJ3NpZ25lZC1vdXQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQFJwY0V2ZW50KClcclxuICAgIG9uUGVybWlzc2lvbnMocGVybWlzc2lvbnM6IENoYXRQZXJtaXNzaW9ucykge1xyXG4gICAgICAgICh3aW5kb3cgYXMgYW55KS5iYW50YVBlcm1pc3Npb25zRGVidWcgPSBwZXJtaXNzaW9ucztcclxuICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0gcGVybWlzc2lvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgQFJwY0V2ZW50KClcclxuICAgIG9uQ2hhdE1lc3NhZ2UobWVzc2FnZTogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlTWFwLmhhcyhtZXNzYWdlLmlkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBPclVwZGF0ZU1lc3NhZ2UobWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICghbWVzc2FnZS5oaWRkZW4pIHtcclxuICAgICAgICAgICAgLy8gT25seSBwcm9jZXNzIG5vbi1oaWRkZW4gbWVzc2FnZXMgdGhyb3VnaCBoZXJlLiBcclxuICAgICAgICAgICAgLy8gSGlkZGVuIG1lc3NhZ2VzIG1heSBiZSBzZW50IHRvIHVzIHdoZW4gdGhleSBiZWNvbWUgaGlkZGVuIChpZSBtb2RlcmF0aW9uIGlzIG9jY3VycmluZykuXHJcbiAgICAgICAgICAgIC8vIEJ1dCBpZiB3ZSBuZXZlciBoYWQgdGhlIG1lc3NhZ2UgdG8gYmVnaW4gd2l0aCwgd2Ugc2hvdWxkIGRpc2NhcmQgaXQuXHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZU1hcC5zZXQobWVzc2FnZS5pZCwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VSZWNlaXZlZC5uZXh0KG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VNYXAgPSBuZXcgTWFwPHN0cmluZywgQ2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBwcml2YXRlIF9tZXNzYWdlUmVjZWl2ZWQgPSBuZXcgU3ViamVjdDxDaGF0TWVzc2FnZT4oKTtcclxuICAgIHByaXZhdGUgX21lc3NhZ2VVcGRhdGVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBwcml2YXRlIF9tZXNzYWdlU2VudCA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlPigpO1xyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZU9ic2VydmVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcblxyXG4gICAgZ2V0IG1lc3NhZ2VSZWNlaXZlZCgpIHsgcmV0dXJuIHRoaXMuX21lc3NhZ2VSZWNlaXZlZC5hc09ic2VydmFibGUoKTsgfVxyXG4gICAgZ2V0IG1lc3NhZ2VVcGRhdGVkKCkgeyByZXR1cm4gdGhpcy5fbWVzc2FnZVVwZGF0ZWQuYXNPYnNlcnZhYmxlKCk7IH1cclxuICAgIGdldCBtZXNzYWdlU2VudCgpIHsgcmV0dXJuIHRoaXMuX21lc3NhZ2VTZW50LmFzT2JzZXJ2YWJsZSgpOyB9XHJcbiAgICBnZXQgbWVzc2FnZU9ic2VydmVkKCkgeyByZXR1cm4gdGhpcy5fbWVzc2FnZU9ic2VydmVkLmFzT2JzZXJ2YWJsZSgpOyB9XHJcblxyXG4gICAgbWVzc2FnZXM6IENoYXRNZXNzYWdlW10gPSBbXTtcclxuXHJcbiAgICBhc3luYyBzZW5kKG1lc3NhZ2U6IENoYXRNZXNzYWdlKTogUHJvbWlzZTxDaGF0TWVzc2FnZT4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZW5zdXJlQ29ubmVjdGlvbigpO1xyXG4gICAgICAgIG1lc3NhZ2UuaWQgPz89IHV1aWQoKTtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5pZGVtcG90ZW50UGVlci5zZW5kTWVzc2FnZShtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsb2FkQWZ0ZXIobWVzc2FnZTogQ2hhdE1lc3NhZ2UsIGNvdW50OiBudW1iZXIpOiBQcm9taXNlPENoYXRNZXNzYWdlW10+IHtcclxuICAgICAgICBpZiAoIW1lc3NhZ2UpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKCFtZXNzYWdlLnBhZ2luZ0N1cnNvcilcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLm1hcE9yVXBkYXRlTWVzc2FnZXMoXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaWRlbXBvdGVudFBlZXIubG9hZEFmdGVyKE51bWJlcihtZXNzYWdlLnBhZ2luZ0N1cnNvciksIGNvdW50KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0KGlkOiBzdHJpbmcpOiBQcm9taXNlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZU1hcC5oYXMoaWQpKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlTWFwLmdldChpZCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVDb25uZWN0aW9uKGBDb3VsZCBub3QgZ2V0IG1lc3NhZ2VgKTtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9IGF3YWl0IHRoaXMuaWRlbXBvdGVudFBlZXIuZ2V0TWVzc2FnZShpZCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VNYXAuaGFzKGlkKSkge1xyXG4gICAgICAgICAgICBsZXQgZXhpc3RpbmdNZXNzYWdlID0gdGhpcy5tZXNzYWdlTWFwLmdldChpZCk7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZXhpc3RpbmdNZXNzYWdlLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgbWVzc2FnZSA9IGV4aXN0aW5nTWVzc2FnZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VNYXAuc2V0KGlkLCBtZXNzYWdlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldENvdW50KCk6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaWRlbXBvdGVudFBlZXIuZ2V0Q291bnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsaWtlTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZW5zdXJlQ29ubmVjdGlvbigpO1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlkZW1wb3RlbnRQZWVyLmxpa2VNZXNzYWdlKG1lc3NhZ2VJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdW5saWtlTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZW5zdXJlQ29ubmVjdGlvbigpO1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlkZW1wb3RlbnRQZWVyLnVubGlrZU1lc3NhZ2UobWVzc2FnZUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVDb25uZWN0aW9uKCk7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaWRlbXBvdGVudFBlZXIuZGVsZXRlTWVzc2FnZShtZXNzYWdlSWQpO1xyXG4gICAgfVxyXG5cclxufSJdfQ==
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jaGF0LXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3BELE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS2xDLE1BQU0sT0FBTyxVQUFXLFNBQVEsU0FBUztJQUNyQyxZQUNhLE9BQW9CLEVBQ3BCLFVBQWtCLEVBQ2xCLGdCQUF3QixFQUNqQyxPQUEwQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQUxDLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFTN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRzFDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFLWCxXQUFNLEdBQXFELFlBQVksQ0FBQztRQW1CeEUsNEJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQW9ELENBQUM7UUFDMUYsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDO1FBR3ZFLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBd0dwQixxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUF5Q3JCLGlCQUFZLEdBQWdCLFlBQVksQ0FBQztRQUN6Qyx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBYyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUUseUJBQW9CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FB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QUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1YsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBaUI7UUFDL0IsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBaUI7UUFDakMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBaUI7UUFDakMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUVKO0FBM0ZHO0lBREMsUUFBUSxFQUFFOytDQUlWO0FBR0Q7SUFEQyxRQUFRLEVBQUU7K0NBV1YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdFBlcm1pc3Npb25zLCBDb21tZW50c09yZGVyLCBEdXJhYmxlU29ja2V0LCBVc2VyIH0gZnJvbSBcIkBiYW50YS9jb21tb25cIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBScGNFdmVudCwgU29ja2V0UlBDIH0gZnJvbSBcIkBiYW50YS9jb21tb25cIjtcclxuaW1wb3J0IHsgQ2hhdFNvdXJjZUJhc2UgfSBmcm9tIFwiLi9jaGF0LXNvdXJjZS1iYXNlXCI7XHJcbmltcG9ydCB7IENoYXRCYWNrZW5kIH0gZnJvbSBcIi4vY2hhdC1iYWNrZW5kXCI7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xyXG5pbXBvcnQgeyBDaGF0U291cmNlT3B0aW9ucyB9IGZyb20gXCIuL2NoYXQtYmFja2VuZC1iYXNlXCI7XHJcblxyXG5leHBvcnQgdHlwZSBTaWduSW5TdGF0ZSA9ICdzaWduZWQtb3V0JyB8ICdzaWduZWQtaW4nIHwgJ3NpZ25pbmctaW4nO1xyXG5cclxuZXhwb3J0IGNsYXNzIENoYXRTb3VyY2UgZXh0ZW5kcyBTb2NrZXRSUEMgaW1wbGVtZW50cyBDaGF0U291cmNlQmFzZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICByZWFkb25seSBiYWNrZW5kOiBDaGF0QmFja2VuZCxcclxuICAgICAgICByZWFkb25seSBpZGVudGlmaWVyOiBzdHJpbmcsXHJcbiAgICAgICAgcmVhZG9ubHkgcGFyZW50SWRlbnRpZmllcjogc3RyaW5nLFxyXG4gICAgICAgIG9wdGlvbnM6IENoYXRTb3VyY2VPcHRpb25zXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPz8ge307XHJcbiAgICAgICAgdGhpcy5yZWFkeSA9IG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4gdGhpcy5tYXJrUmVhZHkgPSByZXNvbHZlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9wdGlvbnM6IENoYXRTb3VyY2VPcHRpb25zO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICBwcml2YXRlIG1hcmtSZWFkeTogKCkgPT4gdm9pZDtcclxuXHJcbiAgICByZWFkb25seSA9IGZhbHNlO1xyXG4gICAgY2FuTG9hZE1vcmUgPSB0cnVlO1xyXG5cclxuICAgIHJlYWR5OiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICAgIHBlcm1pc3Npb25zOiBDaGF0UGVybWlzc2lvbnM7XHJcbiAgICBwcml2YXRlIF9zdGF0ZTogJ2Nvbm5lY3RlZCcgfCAnY29ubmVjdGluZycgfCAnbG9zdCcgfCAncmVzdG9yZWQnID0gJ2Nvbm5lY3RpbmcnO1xyXG5cclxuICAgIGdldCBzb3J0T3JkZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucz8uc29ydE9yZGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBmaWx0ZXJNb2RlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlck1vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHN0YXRlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgc3RhdGUodmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9zdGF0ZSA9IHZhbHVlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fY29ubmVjdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHRoaXMuX3N0YXRlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY29ubmVjdGlvblN0YXRlQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PCdjb25uZWN0ZWQnIHwgJ2Nvbm5lY3RpbmcnIHwgJ2xvc3QnIHwgJ3Jlc3RvcmVkJz4oKTtcclxuICAgIHByaXZhdGUgX2Nvbm5lY3Rpb25TdGF0ZUNoYW5nZWQkID0gdGhpcy5fY29ubmVjdGlvblN0YXRlQ2hhbmdlZC5hc09ic2VydmFibGUoKTtcclxuICAgIGdldCBjb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkgeyByZXR1cm4gdGhpcy5fY29ubmVjdGlvblN0YXRlQ2hhbmdlZCQ7IH1cclxuXHJcbiAgICBwcml2YXRlIHdhc1Jlc3RvcmVkID0gZmFsc2U7XHJcblxyXG4gICAgYXN5bmMgYmluZChzb2NrZXQ6IER1cmFibGVTb2NrZXQpOiBQcm9taXNlPHRoaXM+IHtcclxuICAgICAgICBzdXBlci5iaW5kKHNvY2tldCk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmJhY2tlbmQudXNlckNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMuYXV0aGVudGljYXRlKCkpKTtcclxuXHJcbiAgICAgICAgc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ29wZW4nLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBbQmFudGEvJHt0aGlzLmlkZW50aWZpZXJ9XSBTb2NrZXQgaXMgb3BlbmApO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBzb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBbQmFudGEvJHt0aGlzLmlkZW50aWZpZXJ9XSBTb2NrZXQgZXJyb3JgKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvc3QnLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSAnbG9zdCc7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNvY2tldC5hZGRFdmVudExpc3RlbmVyKCdyZXN0b3JlJywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLndhc1Jlc3RvcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5hdXRoZW50aWNhdGUoKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zdWJzY3JpYmVUb1RvcGljKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3Vic2NyaWJlVG9Ub3BpYygpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW0JhbnRhL0NoYXRTb3VyY2VdIEVycm9yIGR1cmluZyBpbml0aWFsIHN1YnNjcmliZVRvVG9waWM6ICR7ZS5tZXNzYWdlfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1hcE9yVXBkYXRlTWVzc2FnZXMobWVzc2FnZXM6IENoYXRNZXNzYWdlW10pOiBDaGF0TWVzc2FnZVtdIHtcclxuICAgICAgICByZXR1cm4gbWVzc2FnZXMubWFwKG1lc3NhZ2UgPT4gdGhpcy5tYXBPclVwZGF0ZU1lc3NhZ2UobWVzc2FnZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbWFwT3JVcGRhdGVNZXNzYWdlKG1lc3NhZ2U6IENoYXRNZXNzYWdlKTogQ2hhdE1lc3NhZ2Uge1xyXG4gICAgICAgIGxldCBleGlzdGluZ01lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VNYXAuZ2V0KG1lc3NhZ2UuaWQpO1xyXG4gICAgICAgIGlmIChleGlzdGluZ01lc3NhZ2UpIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9IE9iamVjdC5hc3NpZ24oZXhpc3RpbmdNZXNzYWdlLCBtZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VNYXAuc2V0KG1lc3NhZ2UuaWQsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlT2JzZXJ2ZWQubmV4dChtZXNzYWdlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXNrIHNlcnZlciBmb3IgbWVzc2FnZXMgdGhhdCBoYXZlIG9jY3VycmVkIHNpbmNlIHRoZSBtZXNzYWdlIHdpdGggdGhlIGdpdmVuIElELlxyXG4gICAgICogVGhpcyBpcyB1c2VkIGR1cmluZyBicmllZiByZWNvbm5lY3RzIHRvIGF2b2lkIGRyb3BwaW5nIG1lc3NhZ2VzLCB3aGlsZSBhbHNvIG5vdCBcclxuICAgICAqIGNhdXNpbmcgbW9iYmluZyBhcyBldmVyeW9uZSByZWNvbm5lY3RzIGFmdGVyIGFuIGlzc3VlLiBUaGUgYmFja2VuZCBjYW4gY2hvb3NlIHRvIFxyXG4gICAgICogbm90IHNlcnZpY2UgdGhpcyByZXF1ZXN0LCBpbnN0ZWFkIHJldHVybmluZyB1bmRlZmluZWQuIEluIHRoYXQgY2FzZSwgdGhlIGNsaWVudCBcclxuICAgICAqIGlzIGV4cGVjdGVkIHRvIGZldGNoIHRoZSBleGlzdGluZyBtZXNzYWdlcyBhbmQgc3RhcnQgc3RhdGUgYW5ldy5cclxuICAgICAqIFxyXG4gICAgICogVE9ETzogdGhpcyBpcyBub3QgeWV0IHVzZWRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGlkIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGxvYWRTaW5jZShpZDogc3RyaW5nKTogUHJvbWlzZTxDaGF0TWVzc2FnZVtdPiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2VzID0gYXdhaXQgdGhpcy5pZGVtcG90ZW50UGVlci5sb2FkU2luY2UoaWQpO1xyXG4gICAgICAgICAgICBpZiAobWVzc2FnZXMpIHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2VzID0gdGhpcy5tYXBPclVwZGF0ZU1lc3NhZ2VzKG1lc3NhZ2VzKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2VzO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW0JhbnRhLyR7dGhpcy5pZGVudGlmaWVyfV0gRXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIGdldCBleGlzdGluZyBtZXNzYWdlczpgKTtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRFeGlzdGluZ01lc3NhZ2VzKCk6IFByb21pc2U8Q2hhdE1lc3NhZ2VbXT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMuaWRlbXBvdGVudFBlZXIuZ2V0RXhpc3RpbmdNZXNzYWdlcyh0aGlzLm9wdGlvbnMuaW5pdGlhbE1lc3NhZ2VDb3VudCA/PyAyMCk7XHJcbiAgICAgICAgICAgIG1lc3NhZ2VzID0gdGhpcy5tYXBPclVwZGF0ZU1lc3NhZ2VzKG1lc3NhZ2VzKTtcclxuICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2VzO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW0JhbnRhLyR7dGhpcy5pZGVudGlmaWVyfV0gRXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIGdldCBleGlzdGluZyBtZXNzYWdlczpgKTtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIGVuc3VyZUNvbm5lY3Rpb24oZXJyb3JNZXNzYWdlPzogc3RyaW5nKSB7XHJcbiAgICAgICAgLy8gbGV0IHJlYXNvbiA9IGBDb25uZWN0aW9uIHRvIGNoYXQgc2VydmljZXMgaXMgbm90IGN1cnJlbnRseSBhdmFpbGFibGUuYDtcclxuICAgICAgICAvLyBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nvbm5lY3RlZCcgJiYgdGhpcy5zdGF0ZSAhPT0gJ3Jlc3RvcmVkJykge1xyXG4gICAgICAgIC8vICAgICBpZiAoZXJyb3JNZXNzYWdlKVxyXG4gICAgICAgIC8vICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2Vycm9yTWVzc2FnZX06ICR7cmVhc29ufWApO1xyXG4gICAgICAgIC8vICAgICBlbHNlXHJcbiAgICAgICAgLy8gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cmVhc29ufWApO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBlZGl0TWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZywgdGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVDb25uZWN0aW9uKCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wZWVyLmVkaXRNZXNzYWdlKG1lc3NhZ2VJZCwgdGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVBdHRlbXB0ID0gMDtcclxuICAgIHByaXZhdGUgX2Vycm9yU3RhdGU6IHN0cmluZztcclxuXHJcbiAgICBnZXQgZXJyb3JTdGF0ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3JTdGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzdWJzY3JpYmVUb1RvcGljKCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW1tZWRpYXRlUGVlci5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlkZW50aWZpZXIsIHRoaXMucGFyZW50SWRlbnRpZmllciwgdGhpcy5vcHRpb25zLnNvcnRPcmRlciwgXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZmlsdGVyTW9kZSxcclxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5tZXRhZGF0YSA/PyB7fVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZUF0dGVtcHQgPSAwO1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvclN0YXRlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy53YXNSZXN0b3JlZCA/ICdyZXN0b3JlZCcgOiAnY29ubmVjdGVkJztcclxuICAgICAgICAgICAgdGhpcy5tYXJrUmVhZHkoKTtcclxuXHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBbQmFudGEvJHt0aGlzLmlkZW50aWZpZXJ9XSBFcnJvciB3aGlsZSBzdWJzY3JpYmluZyB0byB0b3BpY2ApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9ICdsb3N0JztcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JTdGF0ZSA9ICdzZXJ2ZXItaXNzdWUnO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVBdHRlbXB0ICs9IDE7XHJcbiAgICAgICAgICAgIGxldCBkZWxheSA9IE1hdGgubWluKDMwKjEwMDAsICgzKjEwMDAgKiB0aGlzLnN1YnNjcmliZUF0dGVtcHQpICogKDEgKyBNYXRoLnJhbmRvbSgpKSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtCYW50YS8ke3RoaXMuaWRlbnRpZmllcn1dIFdhaXRpbmcgJHtkZWxheX1tcyBiZWZvcmUgYXR0ZW1wdGluZyB0byByZWNvbm5lY3QuLi5gKTtcclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUgPT09ICdsb3N0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhgQXR0ZW1wdGluZyByZWNvbm5lY3Rpb24gYWZ0ZXIgZXJyb3IgaW4gc3Vic2NyaWJlVG9Ub3BpYy4uLmApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIGRlbGF5KTtcclxuXHJcbiAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NpZ25JblN0YXRlOiBTaWduSW5TdGF0ZSA9ICdzaWduZWQtb3V0JztcclxuICAgIHByaXZhdGUgX3NpZ25JblN0YXRlQ2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2lnbkluU3RhdGU+KHRoaXMuX3NpZ25JblN0YXRlKTtcclxuICAgIHByaXZhdGUgX3NpZ25JblN0YXRlQ2hhbmdlZCQgPSB0aGlzLl9zaWduSW5TdGF0ZUNoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgZ2V0IHNpZ25JblN0YXRlKCkgeyByZXR1cm4gdGhpcy5fc2lnbkluU3RhdGU7IH1cclxuICAgIGdldCBzaWduSW5TdGF0ZUNoYW5nZWQoKSB7IHJldHVybiB0aGlzLl9zaWduSW5TdGF0ZUNoYW5nZWQkOyB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRTaWduSW5TdGF0ZShzdGF0ZTogU2lnbkluU3RhdGUpIHtcclxuICAgICAgICB0aGlzLl9zaWduSW5TdGF0ZSA9IHN0YXRlO1xyXG4gICAgICAgIHRoaXMuX3NpZ25JblN0YXRlQ2hhbmdlZC5uZXh0KHN0YXRlKTtcclxuICAgIH1cclxuICAgIGFzeW5jIGF1dGhlbnRpY2F0ZSgpIHtcclxuICAgICAgICB0aGlzLnNldFNpZ25JblN0YXRlKCdzaWduaW5nLWluJyk7XHJcbiAgICAgICAgaWYgKHRoaXMuYmFja2VuZC51c2VyKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmltbWVkaWF0ZVBlZXIuYXV0aGVudGljYXRlKHRoaXMuYmFja2VuZC51c2VyPy50b2tlbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNpZ25JblN0YXRlKCdzaWduZWQtaW4nKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW0JhbnRhXSBDb3VsZCBub3QgYXV0aGVudGljYXRlOmApO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2lnbkluU3RhdGUoJ3NpZ25lZC1vdXQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQFJwY0V2ZW50KClcclxuICAgIG9uUGVybWlzc2lvbnMocGVybWlzc2lvbnM6IENoYXRQZXJtaXNzaW9ucykge1xyXG4gICAgICAgICh3aW5kb3cgYXMgYW55KS5iYW50YVBlcm1pc3Npb25zRGVidWcgPSBwZXJtaXNzaW9ucztcclxuICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0gcGVybWlzc2lvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgQFJwY0V2ZW50KClcclxuICAgIG9uQ2hhdE1lc3NhZ2UobWVzc2FnZTogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlTWFwLmhhcyhtZXNzYWdlLmlkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBPclVwZGF0ZU1lc3NhZ2UobWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICghbWVzc2FnZS5oaWRkZW4pIHtcclxuICAgICAgICAgICAgLy8gT25seSBwcm9jZXNzIG5vbi1oaWRkZW4gbWVzc2FnZXMgdGhyb3VnaCBoZXJlLiBcclxuICAgICAgICAgICAgLy8gSGlkZGVuIG1lc3NhZ2VzIG1heSBiZSBzZW50IHRvIHVzIHdoZW4gdGhleSBiZWNvbWUgaGlkZGVuIChpZSBtb2RlcmF0aW9uIGlzIG9jY3VycmluZykuXHJcbiAgICAgICAgICAgIC8vIEJ1dCBpZiB3ZSBuZXZlciBoYWQgdGhlIG1lc3NhZ2UgdG8gYmVnaW4gd2l0aCwgd2Ugc2hvdWxkIGRpc2NhcmQgaXQuXHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZU1hcC5zZXQobWVzc2FnZS5pZCwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VSZWNlaXZlZC5uZXh0KG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VNYXAgPSBuZXcgTWFwPHN0cmluZywgQ2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBwcml2YXRlIF9tZXNzYWdlUmVjZWl2ZWQgPSBuZXcgU3ViamVjdDxDaGF0TWVzc2FnZT4oKTtcclxuICAgIHByaXZhdGUgX21lc3NhZ2VVcGRhdGVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBwcml2YXRlIF9tZXNzYWdlU2VudCA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlPigpO1xyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZU9ic2VydmVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcblxyXG4gICAgZ2V0IG1lc3NhZ2VSZWNlaXZlZCgpIHsgcmV0dXJuIHRoaXMuX21lc3NhZ2VSZWNlaXZlZC5hc09ic2VydmFibGUoKTsgfVxyXG4gICAgZ2V0IG1lc3NhZ2VVcGRhdGVkKCkgeyByZXR1cm4gdGhpcy5fbWVzc2FnZVVwZGF0ZWQuYXNPYnNlcnZhYmxlKCk7IH1cclxuICAgIGdldCBtZXNzYWdlU2VudCgpIHsgcmV0dXJuIHRoaXMuX21lc3NhZ2VTZW50LmFzT2JzZXJ2YWJsZSgpOyB9XHJcbiAgICBnZXQgbWVzc2FnZU9ic2VydmVkKCkgeyByZXR1cm4gdGhpcy5fbWVzc2FnZU9ic2VydmVkLmFzT2JzZXJ2YWJsZSgpOyB9XHJcblxyXG4gICAgbWVzc2FnZXM6IENoYXRNZXNzYWdlW10gPSBbXTtcclxuXHJcbiAgICBhc3luYyBzZW5kKG1lc3NhZ2U6IENoYXRNZXNzYWdlKTogUHJvbWlzZTxDaGF0TWVzc2FnZT4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZW5zdXJlQ29ubmVjdGlvbigpO1xyXG4gICAgICAgIG1lc3NhZ2UuaWQgPz89IHV1aWQoKTtcclxuICAgICAgICBsZXQgZmluaXNoZWRNZXNzYWdlID0gYXdhaXQgdGhpcy5pZGVtcG90ZW50UGVlci5zZW5kTWVzc2FnZShtZXNzYWdlKTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXNzYWdlTWFwLnNldChmaW5pc2hlZE1lc3NhZ2UuaWQsIGZpbmlzaGVkTWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5fbWVzc2FnZVJlY2VpdmVkLm5leHQoZmluaXNoZWRNZXNzYWdlKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkTWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsb2FkQWZ0ZXIobWVzc2FnZTogQ2hhdE1lc3NhZ2UsIGNvdW50OiBudW1iZXIpOiBQcm9taXNlPENoYXRNZXNzYWdlW10+IHtcclxuICAgICAgICBpZiAoIW1lc3NhZ2UpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKCFtZXNzYWdlLnBhZ2luZ0N1cnNvcilcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLm1hcE9yVXBkYXRlTWVzc2FnZXMoXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaWRlbXBvdGVudFBlZXIubG9hZEFmdGVyKE51bWJlcihtZXNzYWdlLnBhZ2luZ0N1cnNvciksIGNvdW50KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0KGlkOiBzdHJpbmcpOiBQcm9taXNlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZU1hcC5oYXMoaWQpKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlTWFwLmdldChpZCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVDb25uZWN0aW9uKGBDb3VsZCBub3QgZ2V0IG1lc3NhZ2VgKTtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9IGF3YWl0IHRoaXMuaWRlbXBvdGVudFBlZXIuZ2V0TWVzc2FnZShpZCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VNYXAuaGFzKGlkKSkge1xyXG4gICAgICAgICAgICBsZXQgZXhpc3RpbmdNZXNzYWdlID0gdGhpcy5tZXNzYWdlTWFwLmdldChpZCk7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZXhpc3RpbmdNZXNzYWdlLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgbWVzc2FnZSA9IGV4aXN0aW5nTWVzc2FnZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VNYXAuc2V0KGlkLCBtZXNzYWdlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldENvdW50KCk6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaWRlbXBvdGVudFBlZXIuZ2V0Q291bnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsaWtlTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZW5zdXJlQ29ubmVjdGlvbigpO1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlkZW1wb3RlbnRQZWVyLmxpa2VNZXNzYWdlKG1lc3NhZ2VJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdW5saWtlTWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZW5zdXJlQ29ubmVjdGlvbigpO1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmlkZW1wb3RlbnRQZWVyLnVubGlrZU1lc3NhZ2UobWVzc2FnZUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVDb25uZWN0aW9uKCk7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaWRlbXBvdGVudFBlZXIuZGVsZXRlTWVzc2FnZShtZXNzYWdlSWQpO1xyXG4gICAgfVxyXG5cclxufSJdfQ==
|