@cloudbase/realtime 2.5.22-beta.0 → 2.5.23-beta.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/dist/cjs/error.js +14 -9
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/message.js +2 -2
- package/dist/cjs/utils.js +3 -2
- package/dist/cjs/virtual-websocket-client.js +51 -49
- package/dist/cjs/websocket-client.js +18 -18
- package/dist/cjs/ws-event.js +5 -4
- package/dist/esm/error.js +8 -6
- package/dist/esm/message.js +2 -2
- package/dist/esm/virtual-websocket-client.js +39 -37
- package/dist/esm/websocket-client.js +8 -8
- package/dist/esm/ws-event.js +3 -3
- package/package.json +4 -9
|
@@ -24,7 +24,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
24
24
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
25
|
function step(op) {
|
|
26
26
|
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
-
while (_) try {
|
|
27
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
28
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
29
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
30
|
switch (op[0]) {
|
|
@@ -133,7 +133,7 @@ var RealtimeWebSocketClient = (function () {
|
|
|
133
133
|
return [2];
|
|
134
134
|
}
|
|
135
135
|
if (this.ws.readyState !== WS_READY_STATE.OPEN) {
|
|
136
|
-
reject(new Error("ws readyState invalid: "
|
|
136
|
+
reject(new Error("ws readyState invalid: ".concat(this.ws.readyState, ", can not send message")));
|
|
137
137
|
return [2];
|
|
138
138
|
}
|
|
139
139
|
if (opts.waitResponse) {
|
|
@@ -373,7 +373,7 @@ var RealtimeWebSocketClient = (function () {
|
|
|
373
373
|
msg = JSON.parse(rawMsg);
|
|
374
374
|
}
|
|
375
375
|
catch (e) {
|
|
376
|
-
throw new Error("[realtime] onMessage parse res.data error: "
|
|
376
|
+
throw new Error("[realtime] onMessage parse res.data error: ".concat(e));
|
|
377
377
|
}
|
|
378
378
|
if (msg.msgType === 'ERROR') {
|
|
379
379
|
var virtualWatch_1 = null;
|
|
@@ -410,7 +410,7 @@ var RealtimeWebSocketClient = (function () {
|
|
|
410
410
|
if (_this.lastPingSendTS) {
|
|
411
411
|
var rtt = Date.now() - _this.lastPingSendTS;
|
|
412
412
|
if (rtt > DEFAULT_UNTRUSTED_RTT_THRESHOLD) {
|
|
413
|
-
console.warn("[realtime] untrusted rtt observed: "
|
|
413
|
+
console.warn("[realtime] untrusted rtt observed: ".concat(rtt));
|
|
414
414
|
return;
|
|
415
415
|
}
|
|
416
416
|
if (_this.rttObserved.length >= MAX_RTT_OBSERVED) {
|
|
@@ -425,7 +425,7 @@ var RealtimeWebSocketClient = (function () {
|
|
|
425
425
|
client.onMessage(msg);
|
|
426
426
|
}
|
|
427
427
|
else {
|
|
428
|
-
console.error("[realtime] no realtime listener found responsible for watchId "
|
|
428
|
+
console.error("[realtime] no realtime listener found responsible for watchId ".concat(msg.watchId, ": "), msg);
|
|
429
429
|
switch (msg.msgType) {
|
|
430
430
|
case 'INIT_EVENT':
|
|
431
431
|
case 'NEXT_EVENT':
|
|
@@ -533,7 +533,7 @@ var RealtimeWebSocketClient = (function () {
|
|
|
533
533
|
});
|
|
534
534
|
}
|
|
535
535
|
else {
|
|
536
|
-
reject(new Error(loginResMsg.msgData.code
|
|
536
|
+
reject(new Error("".concat(loginResMsg.msgData.code, " ").concat(loginResMsg.msgData.message)));
|
|
537
537
|
}
|
|
538
538
|
return [3, 4];
|
|
539
539
|
case 3:
|
|
@@ -613,7 +613,7 @@ var RealtimeWebSocketClient = (function () {
|
|
|
613
613
|
case 1:
|
|
614
614
|
res = _b.sent();
|
|
615
615
|
if (res.code) {
|
|
616
|
-
throw new Error("[tcb-js-sdk] \u83B7\u53D6\u5B9E\u65F6\u6570\u636E\u63A8\u9001\u767B\u5F55\u7968\u636E\u5931\u8D25: "
|
|
616
|
+
throw new Error("[tcb-js-sdk] \u83B7\u53D6\u5B9E\u65F6\u6570\u636E\u63A8\u9001\u767B\u5F55\u7968\u636E\u5931\u8D25: ".concat(res.code));
|
|
617
617
|
}
|
|
618
618
|
if (res.data) {
|
|
619
619
|
_a = res.data, signStr = _a.signStr, wsUrl = _a.wsUrl, secretVersion = _a.secretVersion, envId = _a.envId;
|
|
@@ -743,4 +743,4 @@ var RealtimeWebSocketClient = (function () {
|
|
|
743
743
|
return RealtimeWebSocketClient;
|
|
744
744
|
}());
|
|
745
745
|
export { RealtimeWebSocketClient };
|
|
746
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWJzb2NrZXQtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQWN4QyxPQUFPLEVBQ0wsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixlQUFlLEdBQ2hCLE1BQU0sWUFBWSxDQUFBO0FBRW5CLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBNEQvQixJQUFNLGNBQWMsR0FBRztJQUNyQixVQUFVLEVBQUUsQ0FBQztJQUNiLElBQUksRUFBRSxDQUFDO0lBQ1AsT0FBTyxFQUFFLENBQUM7SUFDVixNQUFNLEVBQUUsQ0FBQztDQUNWLENBQUE7QUFFRCxJQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtBQUMxQixJQUFNLGdDQUFnQyxHQUFHLElBQUksQ0FBQTtBQUM3QyxJQUFNLCtCQUErQixHQUFHLEtBQUssQ0FBQTtBQUM3QyxJQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQTtBQUMvQixJQUFNLDZCQUE2QixHQUFHLEtBQUssQ0FBQTtBQUUzQyxJQUFNLDJCQUEyQixHQUFHLENBQUMsQ0FBQTtBQUNyQyxJQUFNLDJCQUEyQixHQUFHLENBQUMsQ0FBQTtBQUNyQyxJQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQTtBQUVsQztJQTBCRSxpQ0FBWSxPQUFtRDtRQUEvRCxpQkFJQztR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LENBQUMsVUFBVSxHQUFHLDJCQUEyQixFQUFFO2dDQUNqRCxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQTtnQ0FDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBOzZCQUNqQjtpQ0FBTTtnQ0FDTCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBOzZCQUM5Qzs7Ozs7aUJBRUosQ0FDRixFQUFFLENBQUE7UUFDTCxDQUFDLEVBQ0QsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUM1RCxDQUFBO0lBQ0gsQ0FBQztJQThCSCw4QkFBQztBQUFELENBQUMsQUFwcUJELElBb3FCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpcnR1YWxXZWJTb2NrZXRDbGllbnQgfSBmcm9tICcuL3ZpcnR1YWwtd2Vic29ja2V0LWNsaWVudCdcbmltcG9ydCB7IGdlblJlcXVlc3RJZCB9IGZyb20gJy4vbWVzc2FnZSdcbmltcG9ydCB7XG4gIElEYXRhYmFzZVNlcnZpY2VDb250ZXh0LFxufSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2RhdGFiYXNlJ1xuaW1wb3J0IHtcbiAgSVdhdGNoT3B0aW9ucyxcbiAgREJSZWFsdGltZUxpc3RlbmVyLFxuICBJUmVxdWVzdE1lc3NhZ2UsXG4gIElSZXNwb25zZU1lc3NhZ2UsXG4gIElSZXF1ZXN0TWVzc2FnZVBpbmdNc2csXG4gIElSZXF1ZXN0TWVzc2FnZUxvZ2luTXNnLFxuICBJUmVzcG9uc2VNZXNzYWdlTG9naW5SZXNNc2csXG4gIElSZXF1ZXN0TWVzc2FnZUxvZ2luRGF0YSxcbn0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9yZWFsdGltZSdcbmltcG9ydCB7XG4gIENsb3NlRXZlbnRDb2RlLFxuICBDTE9TRV9FVkVOVF9DT0RFX0lORk8sXG4gIGdldFdTQ2xvc2VFcnJvcixcbn0gZnJvbSAnLi93cy1ldmVudCdcblxuaW1wb3J0IHsgRVJSX0NPREUsIFRpbWVvdXRFcnJvciwgUmVhbHRpbWVFcnJvck1lc3NhZ2VFcnJvciwgQ2xvdWRTREtFcnJvciB9IGZyb20gJy4vZXJyb3InXG5pbXBvcnQgeyBnZXRXc0NsYXNzLCBnZXRSdW50aW1lIH0gZnJvbSAnLi9jb21tb24nXG5pbXBvcnQgeyBzbGVlcCB9IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlYWx0aW1lV2ViU29ja2V0Q2xpZW50Q29uc3RydWN0b3JPcHRpb25zIHtcbiAgbWF4UmVjb25uZWN0PzogbnVtYmVyXG4gIHJlY29ubmVjdEludGVydmFsPzogbnVtYmVyXG4gIGNvbnRleHQ6IElEYXRhYmFzZVNlcnZpY2VDb250ZXh0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpZ25hdHVyZSB7XG4gIGVudklkOiBzdHJpbmdcbiAgc2VjcmV0VmVyc2lvbjogbnVtYmVyXG4gIHNpZ25TdHI6IHN0cmluZ1xuICB3c1VybDogc3RyaW5nXG4gIGV4cGlyZVRTOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTG9naW5JbmZvIHtcbiAgbG9nZ2VkSW46IGJvb2xlYW5cbiAgbG9nZ2luZ0luUHJvbWlzZT86IFByb21pc2U8SUxvZ2luUmVzdWx0PlxuICBsb2dpblN0YXJ0VFM/OiBudW1iZXJcbiAgbG9naW5SZXN1bHQ/OiBJTG9naW5SZXN1bHRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTG9naW5SZXN1bHQge1xuICBlbnZJZDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdTU2VuZE9wdGlvbnMge1xuICBtc2c6IElSZXF1ZXN0TWVzc2FnZVxuICB3YWl0UmVzcG9uc2U/OiBib29sZWFuXG4gIC8vIHdoZW4gd2FpdFJlc3BvbnNlIGlzIHNldCB0byB0cnVlLCBpZiBza2lwT25NZXNzYWdlIGlzIHRydWUsIGdlbmVyYWwgb25NZXNzYWdlIGhhbmRsZXIgd2lsbCBiZSBza2lwcGVkXG4gIHNraXBPbk1lc3NhZ2U/OiBib29sZWFuXG4gIHRpbWVvdXQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJV1NXYXRjaE9wdGlvbnMgZXh0ZW5kcyBJV2F0Y2hPcHRpb25zIHtcbiAgZW52SWQ/OiBzdHJpbmdcbiAgY29sbGVjdGlvbk5hbWU6IHN0cmluZ1xuICBxdWVyeTogc3RyaW5nXG4gIGxpbWl0PzogbnVtYmVyXG4gIG9yZGVyQnk/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG59XG5cbmludGVyZmFjZSBJUmVzb2x2ZVJlamVjdCB7XG4gIHJlc29sdmU6ICh2YWx1ZT86IGFueSB8IFByb21pc2VMaWtlPGFueT4gfCB1bmRlZmluZWQpID0+IHZvaWRcbiAgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkXG59XG5cbmludGVyZmFjZSBJUmVzcG9uc2VXYWl0U3BlYyBleHRlbmRzIElSZXNvbHZlUmVqZWN0IHtcbiAgc2tpcE9uTWVzc2FnZT86IGJvb2xlYW5cbn1cblxuaW50ZXJmYWNlIElXc1NpZ24ge1xuICBzaWduU3RyOiBzdHJpbmcsXG4gIHdzVXJsOiBzdHJpbmcsXG4gIHNlY3JldFZlcnNpb246IHN0cmluZ1xuICBlbnZJZDogc3RyaW5nXG4gIGV4cGlyZWRUczogbnVtYmVyXG59XG5cbmNvbnN0IFdTX1JFQURZX1NUQVRFID0ge1xuICBDT05ORUNUSU5HOiAwLFxuICBPUEVOOiAxLFxuICBDTE9TSU5HOiAyLFxuICBDTE9TRUQ6IDMsXG59XG5cbmNvbnN0IE1BWF9SVFRfT0JTRVJWRUQgPSAzXG5jb25zdCBERUZBVUxUX0VYUEVDVEVEX0VWRU5UX1dBSVRfVElNRSA9IDUwMDBcbmNvbnN0IERFRkFVTFRfVU5UUlVTVEVEX1JUVF9USFJFU0hPTEQgPSAxMDAwMFxuY29uc3QgREVGQVVMVF9NQVhfUkVDT05ORUNUID0gNVxuY29uc3QgREVGQVVMVF9XU19SRUNPTk5FQ1RfSU5URVJWQUwgPSAxMDAwMFxuLy8gY29uc3QgREVGQVVMVF9XU19SRUNPTk5FQ1RfTUFYX1ZBTElEX0lOVEVSVkFMID0gMyAqIDYwICogMTAwMFxuY29uc3QgREVGQVVMVF9QSU5HX0ZBSUxfVE9MRVJBTkNFID0gMlxuY29uc3QgREVGQVVMVF9QT05HX01JU1NfVE9MRVJBTkNFID0gMlxuY29uc3QgREVGQVVMVF9MT0dJTl9USU1FT1VUID0gNTAwMFxuXG5leHBvcnQgY2xhc3MgUmVhbHRpbWVXZWJTb2NrZXRDbGllbnQge1xuICBwcml2YXRlIHZpcnR1YWxXU0NsaWVudDogU2V0PFZpcnR1YWxXZWJTb2NrZXRDbGllbnQ+ID0gbmV3IFNldCgpXG4gIC8vIGFmdGVyIGxpc3RlbmVyIGluaXRXYXRjaCwgdGhlIGxpc3RlbmVyIGhhcyB0aGUgcXVlcnlJRCBhbmQgY2FuIHN0b3JlIGl0IGhlcmVcbiAgcHJpdmF0ZSBxdWVyeUlkQ2xpZW50TWFwOiBNYXA8c3RyaW5nLCBWaXJ0dWFsV2ViU29ja2V0Q2xpZW50PiA9IG5ldyBNYXAoKVxuICBwcml2YXRlIHdhdGNoSWRDbGllbnRNYXA6IE1hcDxzdHJpbmcsIFZpcnR1YWxXZWJTb2NrZXRDbGllbnQ+ID0gbmV3IE1hcCgpXG4gIHByaXZhdGUgbWF4UmVjb25uZWN0OiBudW1iZXJcbiAgcHJpdmF0ZSByZWNvbm5lY3RJbnRlcnZhbDogbnVtYmVyXG4gIHByaXZhdGUgY29udGV4dDogSURhdGFiYXNlU2VydmljZUNvbnRleHRcbiAgcHJpdmF0ZSB3cz86IGFueVxuICBwcml2YXRlIGxhc3RQaW5nU2VuZFRTPzogbnVtYmVyXG4gIHByaXZhdGUgcGluZ0ZhaWxlZCA9IDBcbiAgcHJpdmF0ZSBwb25nTWlzc2VkID0gMFxuICBwcml2YXRlIHBpbmdUaW1lb3V0SWQ/OiBudW1iZXJcbiAgcHJpdmF0ZSBwb25nVGltZW91dElkPzogbnVtYmVyXG4gIHByaXZhdGUgbG9naW5zOiBNYXA8c3RyaW5nIC8qIGVudklkICovLCBJTG9naW5JbmZvPiA9IG5ldyBNYXAoKVxuICBwcml2YXRlIHdzSW5pdFByb21pc2U/OiBQcm9taXNlPHZvaWQ+XG4gIHByaXZhdGUgd3NSZWFkeVN1YnNyaWJlcnM6IElSZXNvbHZlUmVqZWN0W10gPSBbXVxuICBwcml2YXRlIHdzUmVzcG9uc2VXYWl0OiBNYXA8XG4gIHN0cmluZyAvKiByZXF1ZXN0SWQgKi8sXG4gIElSZXNwb25zZVdhaXRTcGVjXG4gID4gPSBuZXcgTWFwKClcbiAgcHJpdmF0ZSBydHRPYnNlcnZlZDogbnVtYmVyW10gPSBbXVxuICBwcml2YXRlIHJlY29ubmVjdFN0YXRlOiBib29sZWFuXG4gIC8vIG9idGFpbmVkIGZyb20gdGhlIGZpcnN0IGdldFNpZ25hdHVyZSB3aXRoIG5vIGVudklkIHByb3ZpZGVkXG4gIHByaXZhdGUgd3NTaWduOiBJV3NTaWduXG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogSVJlYWx0aW1lV2ViU29ja2V0Q2xpZW50Q29uc3RydWN0b3JPcHRpb25zKSB7XG4gICAgdGhpcy5tYXhSZWNvbm5lY3QgPSBvcHRpb25zLm1heFJlY29ubmVjdCB8fCBERUZBVUxUX01BWF9SRUNPTk5FQ1RcbiAgICB0aGlzLnJlY29ubmVjdEludGVydmFsID0gb3B0aW9ucy5yZWNvbm5lY3RJbnRlcnZhbCB8fCBERUZBVUxUX1dTX1JFQ09OTkVDVF9JTlRFUlZBTFxuICAgIHRoaXMuY29udGV4dCA9IG9wdGlvbnMuY29udGV4dFxuICB9XG5cbiAgY2xlYXJIZWFydGJlYXQoKSB7XG4gICAgdGhpcy5waW5nVGltZW91dElkICYmIGNsZWFyVGltZW91dCh0aGlzLnBpbmdUaW1lb3V0SWQpXG4gICAgdGhpcy5wb25nVGltZW91dElkICYmIGNsZWFyVGltZW91dCh0aGlzLnBvbmdUaW1lb3V0SWQpXG4gIH1cblxuICBzZW5kID0gYXN5bmMgPFQgPSBhbnk+KG9wdHM6IElXU1NlbmRPcHRpb25zKTogUHJvbWlzZTxUPiA9PiBuZXcgUHJvbWlzZTxUPigoX3Jlc29sdmUsIF9yZWplY3QpID0+IHtcbiAgICB2b2lkIChhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgdGltZW91dElkOiBudW1iZXJcbiAgICAgIGxldCBoYXNSZXNvbHZlZCA9IGZhbHNlXG4gICAgICBsZXQgaGFzUmVqZWN0ZWQgPSBmYWxzZVxuXG4gICAgICBjb25zdCByZXNvbHZlOiB0eXBlb2YgX3Jlc29sdmUgPSAodmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaGFzUmVzb2x2ZWQgPSB0cnVlXG4gICAgICAgIHRpbWVvdXRJZCAmJiBjbGVhclRpbWVvdXQodGltZW91dElkKVxuICAgICAgICBfcmVzb2x2ZSh2YWx1ZSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVqZWN0OiB0eXBlb2YgX3JlamVjdCA9IChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIGhhc1JlamVjdGVkID0gdHJ1ZVxuICAgICAgICB0aW1lb3V0SWQgJiYgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICAgICAgX3JlamVjdChlcnJvcilcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHMudGltZW91dCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWhhc1Jlc29sdmVkIHx8ICFoYXNSZWplY3RlZCkge1xuICAgICAgICAgICAgICAvLyB3YWl0IGFub3RoZXIgaW1tZWRpYXRlIHRpbWVvdXQgdG8gYWxsb3cgdGhlIHN1Y2Nlc3MvZmFpbCBjYWxsYmFjayB0byBiZSBpbnZva2VkIGlmIHdzIGhhcyBhbHJlYWR5IGdvdCB0aGUgcmVzdWx0LFxuICAgICAgICAgICAgICAvLyB0aGlzIGlzIGJlY2F1c2UgdGhlIHRpbWVyIGlzIHJlZ2lzdGVyZWQgYmVmb3JlIHdzLnNlbmRcbiAgICAgICAgICAgICAgYXdhaXQgc2xlZXAoMClcbiAgICAgICAgICAgICAgaWYgKCFoYXNSZXNvbHZlZCB8fCAhaGFzUmVqZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IFRpbWVvdXRFcnJvcignd3NjbGllbnQuc2VuZCB0aW1lZG91dCcpKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkoKVxuICAgICAgICB9LCBvcHRzLnRpbWVvdXQpXG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh0aGlzLndzSW5pdFByb21pc2UgIT09IHVuZGVmaW5lZCB8fCB0aGlzLndzSW5pdFByb21pc2UgIT09IG51bGwpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLndzSW5pdFByb21pc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy53cykge1xuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ2ludmFsaWQgc3RhdGU6IHdzIGNvbm5lY3Rpb24gbm90IGV4aXN0cywgY2FuIG5vdCBzZW5kIG1lc3NhZ2UnKSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLndzLnJlYWR5U3RhdGUgIT09IFdTX1JFQURZX1NUQVRFLk9QRU4pIHtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGB3cyByZWFkeVN0YXRlIGludmFsaWQ6ICR7dGhpcy53cy5yZWFkeVN0YXRlfSwgY2FuIG5vdCBzZW5kIG1lc3NhZ2VgKSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRzLndhaXRSZXNwb25zZSkge1xuICAgICAgICAgIGNvbnN0IHJlc3BXYWl0U3BlYzogSVJlc3BvbnNlV2FpdFNwZWMgPSB7XG4gICAgICAgICAgICByZXNvbHZlLFxuICAgICAgICAgICAgcmVqZWN0LFxuICAgICAgICAgICAgc2tpcE9uTWVzc2FnZTogb3B0cy5za2lwT25NZXNzYWdlLFxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLndzUmVzcG9uc2VXYWl0LnNldChvcHRzLm1zZy5yZXF1ZXN0SWQsIHJlc3BXYWl0U3BlYylcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdzZW5kIG1zZzonLCBvcHRzLm1zZylcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLndzLnNlbmQoSlNPTi5zdHJpbmdpZnkob3B0cy5tc2cpKVxuICAgICAgICAgIGlmICghb3B0cy53YWl0UmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHJlc29sdmUodm9pZCAwKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmVqZWN0KGVycilcbiAgICAgICAgICAgIGlmIChvcHRzLndhaXRSZXNwb25zZSkge1xuICAgICAgICAgICAgICB0aGlzLndzUmVzcG9uc2VXYWl0LmRlbGV0ZShvcHRzLm1zZy5yZXF1ZXN0SWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKVxuICAgICAgfVxuICAgIH0pKClcbiAgfSlcblxuICBjbG9zZShjb2RlOiBDbG9zZUV2ZW50Q29kZSkge1xuICAgIHRoaXMuY2xlYXJIZWFydGJlYXQoKVxuXG4gICAgaWYgKHRoaXMud3MpIHtcbiAgICAgIHRoaXMud3MuY2xvc2UoY29kZSwgQ0xPU0VfRVZFTlRfQ09ERV9JTkZPW2NvZGVdLm5hbWUpXG4gICAgICB0aGlzLndzID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgY2xvc2VBbGxDbGllbnRzID0gKGVycm9yOiBhbnkpID0+IHtcbiAgICB0aGlzLnZpcnR1YWxXU0NsaWVudC5mb3JFYWNoKChjbGllbnQpID0+IHtcbiAgICAgIGNsaWVudC5jbG9zZVdpdGhFcnJvcihlcnJvcilcbiAgICB9KVxuICB9XG5cbiAgcGF1c2VDbGllbnRzID0gKGNsaWVudHM/OiBTZXQ8VmlydHVhbFdlYlNvY2tldENsaWVudD4pID0+IHtcbiAgICAoY2xpZW50cyB8fCB0aGlzLnZpcnR1YWxXU0NsaWVudCkuZm9yRWFjaCgoY2xpZW50KSA9PiB7XG4gICAgICBjbGllbnQucGF1c2UoKVxuICAgIH0pXG4gIH1cblxuICByZXN1bWVDbGllbnRzID0gKGNsaWVudHM/OiBTZXQ8VmlydHVhbFdlYlNvY2tldENsaWVudD4pID0+IHtcbiAgICAoY2xpZW50cyB8fCB0aGlzLnZpcnR1YWxXU0NsaWVudCkuZm9yRWFjaCgoY2xpZW50KSA9PiB7XG4gICAgICBjbGllbnQucmVzdW1lKClcbiAgICB9KVxuICB9XG5cbiAgd2F0Y2gob3B0aW9uczogSVdTV2F0Y2hPcHRpb25zKTogREJSZWFsdGltZUxpc3RlbmVyIHtcbiAgICBpZiAoIXRoaXMud3MgJiYgKHRoaXMud3NJbml0UHJvbWlzZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMud3NJbml0UHJvbWlzZSA9PT0gbnVsbCkpIHtcbiAgICAgIHRoaXMuaW5pdFdlYlNvY2tldENvbm5lY3Rpb24oZmFsc2UpXG4gICAgfVxuXG4gICAgY29uc3QgdmlydHVhbENsaWVudCA9IG5ldyBWaXJ0dWFsV2ViU29ja2V0Q2xpZW50KHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBzZW5kOiB0aGlzLnNlbmQsXG4gICAgICBsb2dpbjogdGhpcy53ZWJMb2dpbixcbiAgICAgIGlzV1NDb25uZWN0ZWQ6IHRoaXMuaXNXU0Nvbm5lY3RlZCxcbiAgICAgIG9uY2VXU0Nvbm5lY3RlZDogdGhpcy5vbmNlV1NDb25uZWN0ZWQsXG4gICAgICBnZXRXYWl0RXhwZWN0ZWRUaW1lb3V0TGVuZ3RoOiB0aGlzLmdldFdhaXRFeHBlY3RlZFRpbWVvdXRMZW5ndGgsXG4gICAgICBvbldhdGNoU3RhcnQ6IHRoaXMub25XYXRjaFN0YXJ0LFxuICAgICAgb25XYXRjaENsb3NlOiB0aGlzLm9uV2F0Y2hDbG9zZSxcbiAgICAgIGRlYnVnOiB0cnVlLFxuICAgIH0pXG4gICAgdGhpcy52aXJ0dWFsV1NDbGllbnQuYWRkKHZpcnR1YWxDbGllbnQpXG4gICAgdGhpcy53YXRjaElkQ2xpZW50TWFwLnNldCh2aXJ0dWFsQ2xpZW50LndhdGNoSWQsIHZpcnR1YWxDbGllbnQpXG4gICAgcmV0dXJuIHZpcnR1YWxDbGllbnQubGlzdGVuZXJcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFdlYlNvY2tldENvbm5lY3Rpb24gPSBhc3luYyAoXG4gICAgcmVjb25uZWN0OiBib29sZWFuLFxuICAgIGF2YWlsYWJsZVJldHJpZXM6IG51bWJlciA9IHRoaXMubWF4UmVjb25uZWN0XG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIC8vIOW9k+WJjeWkhOS6juato+WcqOmHjei/nuS4reeahOeKtuaAgVxuICAgIGlmIChyZWNvbm5lY3QgJiYgdGhpcy5yZWNvbm5lY3RTdGF0ZSkge1xuICAgICAgcmV0dXJuIC8vIOW/veeVpVxuICAgIH1cblxuICAgIGlmIChyZWNvbm5lY3QpIHtcbiAgICAgIHRoaXMucmVjb25uZWN0U3RhdGUgPSB0cnVlIC8vIOmHjei/nueKtuaAgeW8gOWni1xuICAgIH1cblxuICAgIGlmICh0aGlzLndzSW5pdFByb21pc2UgIT09IHVuZGVmaW5lZCAmJiB0aGlzLndzSW5pdFByb21pc2UgIT09IG51bGwpIHtcbiAgICAgIC8vIHRoZXJlIGFscmVhZHkgZXhpc3RzIGEgd2Vic29ja2V0IGluaXRpYXRpb24sIGp1c3Qgd2FpdCBmb3IgaXRcbiAgICAgIHJldHVybiB0aGlzLndzSW5pdFByb21pc2VcbiAgICB9XG5cbiAgICBpZiAocmVjb25uZWN0KSB7XG4gICAgICB0aGlzLnBhdXNlQ2xpZW50cygpXG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZShDbG9zZUV2ZW50Q29kZS5SZWNvbm5lY3RXZWJTb2NrZXQpXG5cbiAgICB0aGlzLndzSW5pdFByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHdzU2lnbiA9IGF3YWl0IHRoaXMuZ2V0V3NTaWduKClcblxuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChzdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSB3c1NpZ24ud3NVcmwgfHwgJ3dzczovL3RjYi13cy50ZW5jZW50Y2xvdWRhcGkuY29tJ1xuICAgICAgICAgICAgY29uc3Qgd3NDbGFzcyA9IGdldFdzQ2xhc3MoKVxuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICovXG4gICAgICAgICAgICB0aGlzLndzID0gd3NDbGFzcyA/IG5ldyB3c0NsYXNzKHVybCkgOiBuZXcgV2ViU29ja2V0KHVybClcbiAgICAgICAgICAgIHN1Y2Nlc3Modm9pZCAwKVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAodGhpcy53cy5jb25uZWN0KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLndzLmNvbm5lY3QoKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGF3YWl0IHRoaXMuaW5pdFdlYlNvY2tldEV2ZW50KClcbiAgICAgICAgICByZXNvbHZlKClcblxuICAgICAgICAgIGlmIChyZWNvbm5lY3QpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdW1lQ2xpZW50cygpXG4gICAgICAgICAgICB0aGlzLnJlY29ubmVjdFN0YXRlID0gZmFsc2UgLy8g6YeN6L+e54q25oCB57uT5p2fXG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignW3JlYWx0aW1lXSBpbml0V2ViU29ja2V0Q29ubmVjdGlvbiBjb25uZWN0IGZhaWwnLCBlKVxuXG4gICAgICAgICAgaWYgKGF2YWlsYWJsZVJldHJpZXMgPiAwKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIGFuIG9wdGltaXphdGlvbiwgaW4gY2FzZSBvZiBuZXR3b3JrIG9mZmxpbmUsIHdlIGRvbid0IG5lZWQgdG8gc3R1YmJvcm5seSBzbGVlcCBmb3Igc29tZXRpbWUsXG4gICAgICAgICAgICAvLyB3ZSBvbmx5IG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5ldHdvcmsgdG8gYmUgYmFjayBvbmxpbmUsIHRoaXMgZW5zdXJlcyBtaW5pbXVtIGRvd250aW1lXG4gICAgICAgICAgICAvLyBjb25zdCB7IGlzQ29ubmVjdGVkIH0gPSBhd2FpdCBnZXROZXR3b3JrU3RhdHVzKClcbiAgICAgICAgICAgIGNvbnN0IGlzQ29ubmVjdGVkID0gdHJ1ZVxuXG4gICAgICAgICAgICB0aGlzLndzSW5pdFByb21pc2UgPSB1bmRlZmluZWRcblxuICAgICAgICAgICAgaWYgKGlzQ29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgIGF3YWl0IHNsZWVwKHRoaXMucmVjb25uZWN0SW50ZXJ2YWwpXG4gICAgICAgICAgICAgIGlmIChyZWNvbm5lY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFN0YXRlID0gZmFsc2UgLy8g6YeN6L+e5byC5bi45Lmf566X6YeN6L+e54q25oCB57uT5p2fXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLmluaXRXZWJTb2NrZXRDb25uZWN0aW9uKHJlY29ubmVjdCwgYXZhaWxhYmxlUmV0cmllcyAtIDEpKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3QoZSlcblxuICAgICAgICAgICAgaWYgKHJlY29ubmVjdCkge1xuICAgICAgICAgICAgICB0aGlzLmNsb3NlQWxsQ2xpZW50cyhuZXcgQ2xvdWRTREtFcnJvcih7XG4gICAgICAgICAgICAgICAgZXJyQ29kZTogRVJSX0NPREUuU0RLX0RBVEFCQVNFX1JFQUxUSU1FX0xJU1RFTkVSX1JFQ09OTkVDVF9XQVRDSF9GQUlMIGFzIHN0cmluZyxcbiAgICAgICAgICAgICAgICBlcnJNc2c6IGUsXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkoKVxuICAgIH0pXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy53c0luaXRQcm9taXNlXG4gICAgICB0aGlzLndzUmVhZHlTdWJzcmliZXJzLmZvckVhY2goKHsgcmVzb2x2ZSB9KSA9PiByZXNvbHZlKCkpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy53c1JlYWR5U3Vic3JpYmVycy5mb3JFYWNoKCh7IHJlamVjdCB9KSA9PiByZWplY3QoKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy53c0luaXRQcm9taXNlID0gdW5kZWZpbmVkXG4gICAgICB0aGlzLndzUmVhZHlTdWJzcmliZXJzID0gW11cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRXZWJTb2NrZXRFdmVudCA9ICgpID0+IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAoIXRoaXMud3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2FuIG5vdCBpbml0V2ViU29ja2V0RXZlbnQsIHdzIG5vdCBleGlzdHMnKVxuICAgIH1cblxuICAgIGxldCB3c09wZW5lZCA9IGZhbHNlXG5cbiAgICB0aGlzLndzLm9ub3BlbiA9IChldmVudCkgPT4ge1xuICAgICAgY29uc29sZS53YXJuKCdbcmVhbHRpbWVdIHdzIGV2ZW50OiBvcGVuJywgZXZlbnQpXG4gICAgICB3c09wZW5lZCA9IHRydWVcbiAgICAgIHJlc29sdmUoKVxuICAgIH1cblxuICAgIHRoaXMud3Mub25lcnJvciA9IChldmVudCkgPT4ge1xuICAgICAgLy8gYWxsIGxvZ2lucyBhcmUgaW52YWxpZCBhZnRlciBkaXNjb25uZWN0aW9uXG4gICAgICB0aGlzLmxvZ2lucyA9IG5ldyBNYXAoKVxuXG4gICAgICAvLyBlcnJvcuWGmei/m2ZpbGVcblxuICAgICAgaWYgKCF3c09wZW5lZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdbcmVhbHRpbWVdIHdzIG9wZW4gZmFpbGVkIHdpdGggd3MgZXZlbnQ6IGVycm9yJywgZXZlbnQpXG4gICAgICAgIHJlamVjdChldmVudClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tyZWFsdGltZV0gd3MgZXZlbnQ6IGVycm9yJywgZXZlbnQpXG5cbiAgICAgICAgdGhpcy5jbGVhckhlYXJ0YmVhdCgpXG4gICAgICAgIHRoaXMudmlydHVhbFdTQ2xpZW50LmZvckVhY2goY2xpZW50ID0+IGNsaWVudC5jbG9zZVdpdGhFcnJvcihuZXcgQ2xvdWRTREtFcnJvcih7XG4gICAgICAgICAgZXJyQ29kZTogRVJSX0NPREUuU0RLX0RBVEFCQVNFX1JFQUxUSU1FX0xJU1RFTkVSX1dFQlNPQ0tFVF9DT05ORUNUSU9OX0VSUk9SIGFzIHN0cmluZyxcbiAgICAgICAgICBlcnJNc2c6IGV2ZW50LFxuICAgICAgICB9KSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogcmVjb25uZWN0XG4gICAgdGhpcy53cy5vbmNsb3NlID0gKGNsb3NlRXZlbnQpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW3JlYWx0aW1lXSB3cyBldmVudDogY2xvc2UnLCBjbG9zZUV2ZW50KVxuICAgICAgLy8gYWxsIGxvZ2lucyBhcmUgaW52YWxpZCBhZnRlciBkaXNjb25uZWN0aW9uXG4gICAgICB0aGlzLmxvZ2lucyA9IG5ldyBNYXAoKVxuXG4gICAgICB0aGlzLmNsZWFySGVhcnRiZWF0KClcbiAgICAgIHN3aXRjaCAoY2xvc2VFdmVudC5jb2RlKSB7XG4gICAgICAgIGNhc2UgQ2xvc2VFdmVudENvZGUuUmVjb25uZWN0V2ViU29ja2V0OiB7XG4gICAgICAgICAgLy8ganVzdCBpZ25vcmVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2xvc2VFdmVudENvZGUuTm9SZWFsdGltZUxpc3RlbmVyczoge1xuICAgICAgICAgIC8vIHF1aXRcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2xvc2VFdmVudENvZGUuSGVhcnRiZWF0UGluZ0Vycm9yOlxuICAgICAgICBjYXNlIENsb3NlRXZlbnRDb2RlLkhlYXJ0YmVhdFBvbmdUaW1lb3V0RXJyb3I6XG4gICAgICAgIGNhc2UgQ2xvc2VFdmVudENvZGUuTm9ybWFsQ2xvc3VyZTpcbiAgICAgICAgY2FzZSBDbG9zZUV2ZW50Q29kZS5BYm5vcm1hbENsb3N1cmU6IHtcbiAgICAgICAgICAvLyBOb3JtYWwgQ2xvc3VyZSBhbmQgQWJub3JtYWwgQ2xvc3VyZTpcbiAgICAgICAgICAvLyAgIGV4cGVjdGVkIGNsb3N1cmUsIG1vc3QgbGlrZWx5IGRpc3BhdGNoZWQgYnkgd2VjaGF0IGNsaWVudCxcbiAgICAgICAgICAvLyAgIHNpbmNlIHRoaXMgaXMgdGhlIHN0YXR1cyBjb2RlIGRpc3BhdGNoZWQgaW4gY2FzZSBvZiBuZXR3b3JrIGZhaWx1cmUsXG4gICAgICAgICAgLy8gICB3ZSBzaG91bGQgcmV0cnlcblxuICAgICAgICAgIGlmICh0aGlzLm1heFJlY29ubmVjdCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFdlYlNvY2tldENvbm5lY3Rpb24odHJ1ZSwgdGhpcy5tYXhSZWNvbm5lY3QpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VBbGxDbGllbnRzKGdldFdTQ2xvc2VFcnJvcihjbG9zZUV2ZW50LmNvZGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2xvc2VFdmVudENvZGUuTm9BdXRoZW50aWNhdGlvbjoge1xuICAgICAgICAgIHRoaXMuY2xvc2VBbGxDbGllbnRzKGdldFdTQ2xvc2VFcnJvcihjbG9zZUV2ZW50LmNvZGUsIGNsb3NlRXZlbnQucmVhc29uKSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAvLyB3ZSBzaG91bGQgcmV0cnkgYnkgZGVmYXVsdFxuICAgICAgICAgIGlmICh0aGlzLm1heFJlY29ubmVjdCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFdlYlNvY2tldENvbm5lY3Rpb24odHJ1ZSwgdGhpcy5tYXhSZWNvbm5lY3QpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VBbGxDbGllbnRzKGdldFdTQ2xvc2VFcnJvcihjbG9zZUV2ZW50LmNvZGUpKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMud3Mub25tZXNzYWdlID0gKHJlcykgPT4ge1xuICAgICAgY29uc3QgcmF3TXNnID0gcmVzLmRhdGFcblxuICAgICAgLy8gcmVzZXQgJiByZXN0YXJ0IGhlYXJ0YmVhdFxuICAgICAgdGhpcy5oZWFydGJlYXQoKVxuXG4gICAgICBsZXQgbXNnOiBJUmVzcG9uc2VNZXNzYWdlXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIG1zZyA9IEpTT04ucGFyc2UocmF3TXNnIGFzIHN0cmluZylcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbcmVhbHRpbWVdIG9uTWVzc2FnZSBwYXJzZSByZXMuZGF0YSBlcnJvcjogJHtlfWApXG4gICAgICB9XG5cbiAgICAgIGlmIChtc2cubXNnVHlwZSA9PT0gJ0VSUk9SJykge1xuICAgICAgICAvLyDmib7liLDlvZPliY3nm5HlkKzvvIzlubblsIZlcnJvcui/lOWbnlxuICAgICAgICBsZXQgdmlydHVhbFdhdGNoID0gbnVsbFxuICAgICAgICB0aGlzLnZpcnR1YWxXU0NsaWVudC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0ud2F0Y2hJZCA9PT0gbXNnLndhdGNoSWQpIHtcbiAgICAgICAgICAgIHZpcnR1YWxXYXRjaCA9IGl0ZW1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHZpcnR1YWxXYXRjaCkge1xuICAgICAgICAgIHZpcnR1YWxXYXRjaC5saXN0ZW5lci5vbkVycm9yKG1zZylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZVdhaXRTcGVjID0gdGhpcy53c1Jlc3BvbnNlV2FpdC5nZXQobXNnLnJlcXVlc3RJZClcbiAgICAgIGlmIChyZXNwb25zZVdhaXRTcGVjKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKG1zZy5tc2dUeXBlID09PSAnRVJST1InKSB7XG4gICAgICAgICAgICByZXNwb25zZVdhaXRTcGVjLnJlamVjdChuZXcgUmVhbHRpbWVFcnJvck1lc3NhZ2VFcnJvcihtc2cpKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNwb25zZVdhaXRTcGVjLnJlc29sdmUobXNnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAnd3Mgb25NZXNzYWdlIHJlc3BvbnNlV2FpdFNwZWMucmVzb2x2ZShtc2cpIGVycm9yZWQ6JyxcbiAgICAgICAgICAgIGVcbiAgICAgICAgICApXG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdGhpcy53c1Jlc3BvbnNlV2FpdC5kZWxldGUobXNnLnJlcXVlc3RJZClcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzcG9uc2VXYWl0U3BlYy5za2lwT25NZXNzYWdlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG1zZy5tc2dUeXBlID09PSAnUE9ORycpIHtcbiAgICAgICAgaWYgKHRoaXMubGFzdFBpbmdTZW5kVFMpIHtcbiAgICAgICAgICBjb25zdCBydHQgPSBEYXRlLm5vdygpIC0gdGhpcy5sYXN0UGluZ1NlbmRUU1xuICAgICAgICAgIGlmIChydHQgPiBERUZBVUxUX1VOVFJVU1RFRF9SVFRfVEhSRVNIT0xEKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFtyZWFsdGltZV0gdW50cnVzdGVkIHJ0dCBvYnNlcnZlZDogJHtydHR9YClcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5ydHRPYnNlcnZlZC5sZW5ndGggPj0gTUFYX1JUVF9PQlNFUlZFRCkge1xuICAgICAgICAgICAgdGhpcy5ydHRPYnNlcnZlZC5zcGxpY2UoXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIHRoaXMucnR0T2JzZXJ2ZWQubGVuZ3RoIC0gTUFYX1JUVF9PQlNFUlZFRCArIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5ydHRPYnNlcnZlZC5wdXNoKHJ0dClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgbGV0IGNsaWVudCA9IG1zZy53YXRjaElkICYmIHRoaXMud2F0Y2hJZENsaWVudE1hcC5nZXQobXNnLndhdGNoSWQpXG4gICAgICBpZiAoY2xpZW50KSB7XG4gICAgICAgIGNsaWVudC5vbk1lc3NhZ2UobXNnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgW3JlYWx0aW1lXSBubyByZWFsdGltZSBsaXN0ZW5lciBmb3VuZCByZXNwb25zaWJsZSBmb3Igd2F0Y2hJZCAke21zZy53YXRjaElkfTogYCxcbiAgICAgICAgICBtc2dcbiAgICAgICAgKVxuICAgICAgICBzd2l0Y2ggKG1zZy5tc2dUeXBlKSB7XG4gICAgICAgICAgY2FzZSAnSU5JVF9FVkVOVCc6XG4gICAgICAgICAgY2FzZSAnTkVYVF9FVkVOVCc6XG4gICAgICAgICAgY2FzZSAnQ0hFQ0tfRVZFTlQnOiB7XG4gICAgICAgICAgICBjbGllbnQgPSB0aGlzLnF1ZXJ5SWRDbGllbnRNYXAuZ2V0KG1zZy5tc2dEYXRhLnF1ZXJ5SUQpXG4gICAgICAgICAgICBpZiAoY2xpZW50KSB7XG4gICAgICAgICAgICAgIGNsaWVudC5vbk1lc3NhZ2UobXNnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbLCBjbGllbnRdIG9mIEFycmF5LmZyb20odGhpcy53YXRjaElkQ2xpZW50TWFwLmVudHJpZXMoKSkpIHtcbiAgICAgICAgICAgICAgY2xpZW50Lm9uTWVzc2FnZShtc2cpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5oZWFydGJlYXQoKVxuICB9KVxuXG4gIHByaXZhdGUgaXNXU0Nvbm5lY3RlZCA9ICgpOiBib29sZWFuID0+IEJvb2xlYW4odGhpcy53cyAmJiB0aGlzLndzLnJlYWR5U3RhdGUgPT09IFdTX1JFQURZX1NUQVRFLk9QRU4pXG5cbiAgcHJpdmF0ZSBvbmNlV1NDb25uZWN0ZWQgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgaWYgKHRoaXMuaXNXU0Nvbm5lY3RlZCgpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy53c0luaXRQcm9taXNlICE9PSBudWxsICYmIHRoaXMud3NJbml0UHJvbWlzZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy53c0luaXRQcm9taXNlXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMud3NSZWFkeVN1YnNyaWJlcnMucHVzaCh7XG4gICAgICAgIHJlc29sdmUsXG4gICAgICAgIHJlamVjdCxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgd2ViTG9naW4gPSBhc3luYyAoXG4gICAgZW52SWQ/OiBzdHJpbmcsXG4gICAgcmVmcmVzaD86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICBpZiAoIXJlZnJlc2gpIHtcbiAgICAgIGlmIChlbnZJZCkge1xuICAgICAgICBjb25zdCBsb2dpbkluZm8gPSB0aGlzLmxvZ2lucy5nZXQoZW52SWQpXG4gICAgICAgIGlmIChsb2dpbkluZm8pIHtcbiAgICAgICAgICBpZiAobG9naW5JbmZvLmxvZ2dlZEluICYmIGxvZ2luSW5mby5sb2dpblJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuIGxvZ2luSW5mby5sb2dpblJlc3VsdFxuICAgICAgICAgIH0gaWYgKGxvZ2luSW5mby5sb2dnaW5nSW5Qcm9taXNlICE9PSBudWxsICYmIGxvZ2luSW5mby5sb2dnaW5nSW5Qcm9taXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2dpbkluZm8ubG9nZ2luZ0luUHJvbWlzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZW1wdHlFbnZMb2dpbkluZm8gPSB0aGlzLmxvZ2lucy5nZXQoJycpXG4gICAgICAgIGlmIChlbXB0eUVudkxvZ2luSW5mbz8ubG9nZ2luZ0luUHJvbWlzZSAhPT0gbnVsbCAmJiBlbXB0eUVudkxvZ2luSW5mbz8ubG9nZ2luZ0luUHJvbWlzZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGVtcHR5RW52TG9naW5JbmZvLmxvZ2dpbmdJblByb21pc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxJTG9naW5SZXN1bHQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3Qgd3NTaWduID0gYXdhaXQgdGhpcy5nZXRXc1NpZ24oKVxuXG4gICAgICAgICAgY29uc3QgbXNnRGF0YTogSVJlcXVlc3RNZXNzYWdlTG9naW5EYXRhID0ge1xuICAgICAgICAgICAgZW52SWQ6IHdzU2lnbi5lbnZJZCB8fCAnJyxcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiAnJywgLy8g5bey5bqf5byD5a2X5q61XG4gICAgICAgICAgICByZWZlcnJlcjogJ3dlYicsXG4gICAgICAgICAgICBzZGtWZXJzaW9uOiAnJyxcbiAgICAgICAgICAgIGRhdGFWZXJzaW9uOiAnJyxcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbG9naW5Nc2c6IElSZXF1ZXN0TWVzc2FnZUxvZ2luTXNnID0ge1xuICAgICAgICAgICAgd2F0Y2hJZDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcmVxdWVzdElkOiBnZW5SZXF1ZXN0SWQoKSxcbiAgICAgICAgICAgIG1zZ1R5cGU6ICdMT0dJTicsXG4gICAgICAgICAgICBtc2dEYXRhLFxuICAgICAgICAgICAgZXhNc2dEYXRhOiB7XG4gICAgICAgICAgICAgIHJ1bnRpbWU6IGdldFJ1bnRpbWUoKSxcbiAgICAgICAgICAgICAgc2lnblN0cjogd3NTaWduLnNpZ25TdHIsXG4gICAgICAgICAgICAgIHNlY3JldFZlcnNpb246IHdzU2lnbi5zZWNyZXRWZXJzaW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbG9naW5SZXNNc2cgPSBhd2FpdCB0aGlzLnNlbmQ8SVJlc3BvbnNlTWVzc2FnZUxvZ2luUmVzTXNnPih7XG4gICAgICAgICAgICBtc2c6IGxvZ2luTXNnLFxuICAgICAgICAgICAgd2FpdFJlc3BvbnNlOiB0cnVlLFxuICAgICAgICAgICAgc2tpcE9uTWVzc2FnZTogdHJ1ZSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IERFRkFVTFRfTE9HSU5fVElNRU9VVCxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgaWYgKCFsb2dpblJlc01zZy5tc2dEYXRhLmNvZGUpIHtcbiAgICAgICAgICAgIC8vIGxvZ2luIHN1Y2Nlc3NcbiAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICBlbnZJZDogd3NTaWduLmVudklkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gbG9naW4gZmFpbGVkXG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGAke2xvZ2luUmVzTXNnLm1zZ0RhdGEuY29kZX0gJHtsb2dpblJlc01zZy5tc2dEYXRhLm1lc3NhZ2V9YCkpXG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmVqZWN0KGUpXG4gICAgICAgIH1cbiAgICAgIH0pKClcbiAgICB9KVxuXG4gICAgbGV0IGxvZ2luSW5mbyA9IGVudklkICYmIHRoaXMubG9naW5zLmdldChlbnZJZClcblxuICAgIGNvbnN0IGxvZ2luU3RhcnRUUyA9IERhdGUubm93KClcblxuICAgIGlmIChsb2dpbkluZm8pIHtcbiAgICAgIGxvZ2luSW5mby5sb2dnZWRJbiA9IGZhbHNlXG4gICAgICBsb2dpbkluZm8ubG9nZ2luZ0luUHJvbWlzZSA9IHByb21pc2VcbiAgICAgIGxvZ2luSW5mby5sb2dpblN0YXJ0VFMgPSBsb2dpblN0YXJ0VFNcbiAgICB9IGVsc2Uge1xuICAgICAgbG9naW5JbmZvID0ge1xuICAgICAgICBsb2dnZWRJbjogZmFsc2UsXG4gICAgICAgIGxvZ2dpbmdJblByb21pc2U6IHByb21pc2UsXG4gICAgICAgIGxvZ2luU3RhcnRUUyxcbiAgICAgIH1cbiAgICAgIHRoaXMubG9naW5zLnNldChlbnZJZCB8fCAnJywgbG9naW5JbmZvKVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBsb2dpblJlc3VsdCA9IGF3YWl0IHByb21pc2VcbiAgICAgIGNvbnN0IGN1ckxvZ2luSW5mbyA9IGVudklkICYmIHRoaXMubG9naW5zLmdldChlbnZJZClcbiAgICAgIGlmIChcbiAgICAgICAgY3VyTG9naW5JbmZvXG4gICAgICAgICYmIGN1ckxvZ2luSW5mbyA9PT0gbG9naW5JbmZvXG4gICAgICAgICYmIGN1ckxvZ2luSW5mby5sb2dpblN0YXJ0VFMgPT09IGxvZ2luU3RhcnRUU1xuICAgICAgKSB7XG4gICAgICAgIGxvZ2luSW5mby5sb2dnZWRJbiA9IHRydWVcbiAgICAgICAgbG9naW5JbmZvLmxvZ2dpbmdJblByb21pc2UgPSB1bmRlZmluZWRcbiAgICAgICAgbG9naW5JbmZvLmxvZ2luU3RhcnRUUyA9IHVuZGVmaW5lZFxuICAgICAgICBsb2dpbkluZm8ubG9naW5SZXN1bHQgPSBsb2dpblJlc3VsdFxuICAgICAgICByZXR1cm4gbG9naW5SZXN1bHRcbiAgICAgIH0gaWYgKGN1ckxvZ2luSW5mbykge1xuICAgICAgICBpZiAoY3VyTG9naW5JbmZvLmxvZ2dlZEluICYmIGN1ckxvZ2luSW5mby5sb2dpblJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiBjdXJMb2dpbkluZm8ubG9naW5SZXN1bHRcbiAgICAgICAgfSBpZiAoY3VyTG9naW5JbmZvLmxvZ2dpbmdJblByb21pc2UgIT09IG51bGwgJiYgY3VyTG9naW5JbmZvLmxvZ2dpbmdJblByb21pc2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBjdXJMb2dpbkluZm8ubG9nZ2luZ0luUHJvbWlzZVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignd3MgdW5leHBlY3RlZCBsb2dpbiBpbmZvJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignd3MgbG9naW4gaW5mbyByZXNldCcpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9naW5JbmZvLmxvZ2dlZEluID0gZmFsc2VcbiAgICAgIGxvZ2luSW5mby5sb2dnaW5nSW5Qcm9taXNlID0gdW5kZWZpbmVkXG4gICAgICBsb2dpbkluZm8ubG9naW5TdGFydFRTID0gdW5kZWZpbmVkXG4gICAgICBsb2dpbkluZm8ubG9naW5SZXN1bHQgPSB1bmRlZmluZWRcbiAgICAgIHRocm93IGVcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFdzU2lnbiA9IGFzeW5jICgpOiBQcm9taXNlPElXc1NpZ24+ID0+IHtcbiAgICBpZiAodGhpcy53c1NpZ24gJiYgdGhpcy53c1NpZ24uZXhwaXJlZFRzID4gRGF0ZS5ub3coKSkge1xuICAgICAgcmV0dXJuIHRoaXMud3NTaWduXG4gICAgfVxuICAgIGNvbnN0IGV4cGlyZWRUcyA9IERhdGUubm93KCkgKyA2MDAwMFxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuY29udGV4dC5hcHBDb25maWcucmVxdWVzdC5zZW5kKCdhdXRoLndzV2ViU2lnbicsIHsgcnVudGltZTogZ2V0UnVudGltZSgpIH0pXG5cbiAgICBpZiAocmVzLmNvZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW3RjYi1qcy1zZGtdIOiOt+WPluWunuaXtuaVsOaNruaOqOmAgeeZu+W9leelqOaNruWksei0pTogJHtyZXMuY29kZX1gKVxuICAgIH1cblxuICAgIGlmIChyZXMuZGF0YSkge1xuICAgICAgY29uc3QgeyBzaWduU3RyLCB3c1VybCwgc2VjcmV0VmVyc2lvbiwgZW52SWQgfSA9IHJlcy5kYXRhXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzaWduU3RyLFxuICAgICAgICB3c1VybCxcbiAgICAgICAgc2VjcmV0VmVyc2lvbixcbiAgICAgICAgZW52SWQsXG4gICAgICAgIGV4cGlyZWRUcyxcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdbdGNiLWpzLXNka10g6I635Y+W5a6e5pe25pWw5o2u5o6o6YCB55m75b2V56Wo5o2u5aSx6LSlJylcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V2FpdEV4cGVjdGVkVGltZW91dExlbmd0aCA9ICgpID0+IHtcbiAgICBpZiAoIXRoaXMucnR0T2JzZXJ2ZWQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gREVGQVVMVF9FWFBFQ1RFRF9FVkVOVF9XQUlUX1RJTUVcbiAgICB9XG5cbiAgICAvLyAxLjUgKiBSVFRcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMucnR0T2JzZXJ2ZWQucmVkdWNlKChhY2MsIGN1cikgPT4gYWNjICsgY3VyKVxuICAgICAgICAvIHRoaXMucnR0T2JzZXJ2ZWQubGVuZ3RoKVxuICAgICAgKiAxLjVcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGhlYXJ0YmVhdChpbW1lZGlhdGU/OiBib29sZWFuKSB7XG4gICAgdGhpcy5jbGVhckhlYXJ0YmVhdCgpXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMucGluZ1RpbWVvdXRJZCA9IHNldFRpbWVvdXQoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIChcbiAgICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAoIXRoaXMud3MgfHwgdGhpcy53cy5yZWFkeVN0YXRlICE9PSBXU19SRUFEWV9TVEFURS5PUEVOKSB7XG4gICAgICAgICAgICAgICAgLy8gbm8gbmVlZCB0byBwaW5nXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLmxhc3RQaW5nU2VuZFRTID0gRGF0ZS5ub3coKVxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBpbmcoKVxuICAgICAgICAgICAgICB0aGlzLnBpbmdGYWlsZWQgPSAwXG5cbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICB0aGlzLnBvbmdUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdwb25nIHRpbWVkIG91dCcpXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucG9uZ01pc3NlZCA8IERFRkFVTFRfUE9OR19NSVNTX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5wb25nTWlzc2VkICs9IDFcbiAgICAgICAgICAgICAgICAgIHRoaXMuaGVhcnRiZWF0KHRydWUpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljYWwgcGVyY2VpdmVkIGNvbm5lY3Rpb24gbG9zdCwgZXZlbiB0aG91Z2ggd2Vic29ja2V0IGRpZCBub3QgcmVjZWl2ZSBlcnJvciBvciBjbG9zZSBldmVudFxuICAgICAgICAgICAgICAgICAgdGhpcy5pbml0V2ViU29ja2V0Q29ubmVjdGlvbih0cnVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSwgdGhpcy5jb250ZXh0LmFwcENvbmZpZy5yZWFsdGltZVBvbmdXYWl0VGltZW91dClcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucGluZ0ZhaWxlZCA8IERFRkFVTFRfUElOR19GQUlMX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGluZ0ZhaWxlZCArPSAxXG4gICAgICAgICAgICAgICAgdGhpcy5oZWFydGJlYXQoKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoQ2xvc2VFdmVudENvZGUuSGVhcnRiZWF0UGluZ0Vycm9yKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApKClcbiAgICAgIH0sXG4gICAgICBpbW1lZGlhdGUgPyAwIDogdGhpcy5jb250ZXh0LmFwcENvbmZpZy5yZWFsdGltZVBpbmdJbnRlcnZhbFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgcGluZyA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtc2c6IElSZXF1ZXN0TWVzc2FnZVBpbmdNc2cgPSB7XG4gICAgICB3YXRjaElkOiB1bmRlZmluZWQsXG4gICAgICByZXF1ZXN0SWQ6IGdlblJlcXVlc3RJZCgpLFxuICAgICAgbXNnVHlwZTogJ1BJTkcnLFxuICAgICAgbXNnRGF0YTogbnVsbCxcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5zZW5kKHtcbiAgICAgIG1zZyxcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBvbldhdGNoU3RhcnQgPSAoY2xpZW50OiBWaXJ0dWFsV2ViU29ja2V0Q2xpZW50LCBxdWVyeUlEOiBzdHJpbmcpID0+IHtcbiAgICB0aGlzLnF1ZXJ5SWRDbGllbnRNYXAuc2V0KHF1ZXJ5SUQsIGNsaWVudClcbiAgfVxuXG4gIHByaXZhdGUgb25XYXRjaENsb3NlID0gKGNsaWVudDogVmlydHVhbFdlYlNvY2tldENsaWVudCwgcXVlcnlJRDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKHF1ZXJ5SUQpIHtcbiAgICAgIHRoaXMucXVlcnlJZENsaWVudE1hcC5kZWxldGUocXVlcnlJRClcbiAgICB9XG4gICAgdGhpcy53YXRjaElkQ2xpZW50TWFwLmRlbGV0ZShjbGllbnQud2F0Y2hJZClcbiAgICB0aGlzLnZpcnR1YWxXU0NsaWVudC5kZWxldGUoY2xpZW50KVxuXG4gICAgaWYgKCF0aGlzLnZpcnR1YWxXU0NsaWVudC5zaXplKSB7XG4gICAgICAvLyBubyBtb3JlIGV4aXN0aW5nIHdhdGNoLCB3ZSBzaG91bGQgcmVsZWFzZSB0aGUgd2Vic29ja2V0IGNvbm5lY3Rpb25cbiAgICAgIHRoaXMuY2xvc2UoQ2xvc2VFdmVudENvZGUuTm9SZWFsdGltZUxpc3RlbmVycylcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
746
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWJzb2NrZXQtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQWN4QyxPQUFPLEVBQ0wsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixlQUFlLEdBQ2hCLE1BQU0sWUFBWSxDQUFBO0FBRW5CLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBNEQvQixJQUFNLGNBQWMsR0FBRztJQUNyQixVQUFVLEVBQUUsQ0FBQztJQUNiLElBQUksRUFBRSxDQUFDO0lBQ1AsT0FBTyxFQUFFLENBQUM7SUFDVixNQUFNLEVBQUUsQ0FBQztDQUNWLENBQUE7QUFFRCxJQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtBQUMxQixJQUFNLGdDQUFnQyxHQUFHLElBQUksQ0FBQTtBQUM3QyxJQUFNLCtCQUErQixHQUFHLEtBQUssQ0FBQTtBQUM3QyxJQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQTtBQUMvQixJQUFNLDZCQUE2QixHQUFHLEtBQUssQ0FBQTtBQUUzQyxJQUFNLDJCQUEyQixHQUFHLENBQUMsQ0FBQTtBQUNyQyxJQUFNLDJCQUEyQixHQUFHLENBQUMsQ0FBQTtBQUNyQyxJQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQTtBQUVsQztJQTBCRSxpQ0FBWSxPQUFtRDtRQUEvRCxpQkFJQztR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LENBQUE7Ozs7NEJBRWxELElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRywyQkFBMkIsRUFBRTtnQ0FDakQsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUE7Z0NBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTs2QkFDakI7aUNBQU07Z0NBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsQ0FBQTs2QkFDOUM7Ozs7O2lCQUVKLENBQ0YsRUFBRSxDQUFBO1FBQ0wsQ0FBQyxFQUNELFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FDNUQsQ0FBQTtJQUNILENBQUM7SUE4QkgsOEJBQUM7QUFBRCxDQUFDLEFBcHFCRCxJQW9xQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaXJ0dWFsV2ViU29ja2V0Q2xpZW50IH0gZnJvbSAnLi92aXJ0dWFsLXdlYnNvY2tldC1jbGllbnQnXG5pbXBvcnQgeyBnZW5SZXF1ZXN0SWQgfSBmcm9tICcuL21lc3NhZ2UnXG5pbXBvcnQge1xuICBJRGF0YWJhc2VTZXJ2aWNlQ29udGV4dCxcbn0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9kYXRhYmFzZSdcbmltcG9ydCB7XG4gIElXYXRjaE9wdGlvbnMsXG4gIERCUmVhbHRpbWVMaXN0ZW5lcixcbiAgSVJlcXVlc3RNZXNzYWdlLFxuICBJUmVzcG9uc2VNZXNzYWdlLFxuICBJUmVxdWVzdE1lc3NhZ2VQaW5nTXNnLFxuICBJUmVxdWVzdE1lc3NhZ2VMb2dpbk1zZyxcbiAgSVJlc3BvbnNlTWVzc2FnZUxvZ2luUmVzTXNnLFxuICBJUmVxdWVzdE1lc3NhZ2VMb2dpbkRhdGEsXG59IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvcmVhbHRpbWUnXG5pbXBvcnQge1xuICBDbG9zZUV2ZW50Q29kZSxcbiAgQ0xPU0VfRVZFTlRfQ09ERV9JTkZPLFxuICBnZXRXU0Nsb3NlRXJyb3IsXG59IGZyb20gJy4vd3MtZXZlbnQnXG5cbmltcG9ydCB7IEVSUl9DT0RFLCBUaW1lb3V0RXJyb3IsIFJlYWx0aW1lRXJyb3JNZXNzYWdlRXJyb3IsIENsb3VkU0RLRXJyb3IgfSBmcm9tICcuL2Vycm9yJ1xuaW1wb3J0IHsgZ2V0V3NDbGFzcywgZ2V0UnVudGltZSB9IGZyb20gJy4vY29tbW9uJ1xuaW1wb3J0IHsgc2xlZXAgfSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIElSZWFsdGltZVdlYlNvY2tldENsaWVudENvbnN0cnVjdG9yT3B0aW9ucyB7XG4gIG1heFJlY29ubmVjdD86IG51bWJlclxuICByZWNvbm5lY3RJbnRlcnZhbD86IG51bWJlclxuICBjb250ZXh0OiBJRGF0YWJhc2VTZXJ2aWNlQ29udGV4dFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTaWduYXR1cmUge1xuICBlbnZJZDogc3RyaW5nXG4gIHNlY3JldFZlcnNpb246IG51bWJlclxuICBzaWduU3RyOiBzdHJpbmdcbiAgd3NVcmw6IHN0cmluZ1xuICBleHBpcmVUUzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxvZ2luSW5mbyB7XG4gIGxvZ2dlZEluOiBib29sZWFuXG4gIGxvZ2dpbmdJblByb21pc2U/OiBQcm9taXNlPElMb2dpblJlc3VsdD5cbiAgbG9naW5TdGFydFRTPzogbnVtYmVyXG4gIGxvZ2luUmVzdWx0PzogSUxvZ2luUmVzdWx0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxvZ2luUmVzdWx0IHtcbiAgZW52SWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElXU1NlbmRPcHRpb25zIHtcbiAgbXNnOiBJUmVxdWVzdE1lc3NhZ2VcbiAgd2FpdFJlc3BvbnNlPzogYm9vbGVhblxuICAvLyB3aGVuIHdhaXRSZXNwb25zZSBpcyBzZXQgdG8gdHJ1ZSwgaWYgc2tpcE9uTWVzc2FnZSBpcyB0cnVlLCBnZW5lcmFsIG9uTWVzc2FnZSBoYW5kbGVyIHdpbGwgYmUgc2tpcHBlZFxuICBza2lwT25NZXNzYWdlPzogYm9vbGVhblxuICB0aW1lb3V0PzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdTV2F0Y2hPcHRpb25zIGV4dGVuZHMgSVdhdGNoT3B0aW9ucyB7XG4gIGVudklkPzogc3RyaW5nXG4gIGNvbGxlY3Rpb25OYW1lOiBzdHJpbmdcbiAgcXVlcnk6IHN0cmluZ1xuICBsaW1pdD86IG51bWJlclxuICBvcmRlckJ5PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxufVxuXG5pbnRlcmZhY2UgSVJlc29sdmVSZWplY3Qge1xuICByZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+IHwgdW5kZWZpbmVkKSA9PiB2b2lkXG4gIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZFxufVxuXG5pbnRlcmZhY2UgSVJlc3BvbnNlV2FpdFNwZWMgZXh0ZW5kcyBJUmVzb2x2ZVJlamVjdCB7XG4gIHNraXBPbk1lc3NhZ2U/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBJV3NTaWduIHtcbiAgc2lnblN0cjogc3RyaW5nLFxuICB3c1VybDogc3RyaW5nLFxuICBzZWNyZXRWZXJzaW9uOiBzdHJpbmdcbiAgZW52SWQ6IHN0cmluZ1xuICBleHBpcmVkVHM6IG51bWJlclxufVxuXG5jb25zdCBXU19SRUFEWV9TVEFURSA9IHtcbiAgQ09OTkVDVElORzogMCxcbiAgT1BFTjogMSxcbiAgQ0xPU0lORzogMixcbiAgQ0xPU0VEOiAzLFxufVxuXG5jb25zdCBNQVhfUlRUX09CU0VSVkVEID0gM1xuY29uc3QgREVGQVVMVF9FWFBFQ1RFRF9FVkVOVF9XQUlUX1RJTUUgPSA1MDAwXG5jb25zdCBERUZBVUxUX1VOVFJVU1RFRF9SVFRfVEhSRVNIT0xEID0gMTAwMDBcbmNvbnN0IERFRkFVTFRfTUFYX1JFQ09OTkVDVCA9IDVcbmNvbnN0IERFRkFVTFRfV1NfUkVDT05ORUNUX0lOVEVSVkFMID0gMTAwMDBcbi8vIGNvbnN0IERFRkFVTFRfV1NfUkVDT05ORUNUX01BWF9WQUxJRF9JTlRFUlZBTCA9IDMgKiA2MCAqIDEwMDBcbmNvbnN0IERFRkFVTFRfUElOR19GQUlMX1RPTEVSQU5DRSA9IDJcbmNvbnN0IERFRkFVTFRfUE9OR19NSVNTX1RPTEVSQU5DRSA9IDJcbmNvbnN0IERFRkFVTFRfTE9HSU5fVElNRU9VVCA9IDUwMDBcblxuZXhwb3J0IGNsYXNzIFJlYWx0aW1lV2ViU29ja2V0Q2xpZW50IHtcbiAgcHJpdmF0ZSB2aXJ0dWFsV1NDbGllbnQ6IFNldDxWaXJ0dWFsV2ViU29ja2V0Q2xpZW50PiA9IG5ldyBTZXQoKVxuICAvLyBhZnRlciBsaXN0ZW5lciBpbml0V2F0Y2gsIHRoZSBsaXN0ZW5lciBoYXMgdGhlIHF1ZXJ5SUQgYW5kIGNhbiBzdG9yZSBpdCBoZXJlXG4gIHByaXZhdGUgcXVlcnlJZENsaWVudE1hcDogTWFwPHN0cmluZywgVmlydHVhbFdlYlNvY2tldENsaWVudD4gPSBuZXcgTWFwKClcbiAgcHJpdmF0ZSB3YXRjaElkQ2xpZW50TWFwOiBNYXA8c3RyaW5nLCBWaXJ0dWFsV2ViU29ja2V0Q2xpZW50PiA9IG5ldyBNYXAoKVxuICBwcml2YXRlIG1heFJlY29ubmVjdDogbnVtYmVyXG4gIHByaXZhdGUgcmVjb25uZWN0SW50ZXJ2YWw6IG51bWJlclxuICBwcml2YXRlIGNvbnRleHQ6IElEYXRhYmFzZVNlcnZpY2VDb250ZXh0XG4gIHByaXZhdGUgd3M/OiBhbnlcbiAgcHJpdmF0ZSBsYXN0UGluZ1NlbmRUUz86IG51bWJlclxuICBwcml2YXRlIHBpbmdGYWlsZWQgPSAwXG4gIHByaXZhdGUgcG9uZ01pc3NlZCA9IDBcbiAgcHJpdmF0ZSBwaW5nVGltZW91dElkPzogbnVtYmVyXG4gIHByaXZhdGUgcG9uZ1RpbWVvdXRJZD86IG51bWJlclxuICBwcml2YXRlIGxvZ2luczogTWFwPHN0cmluZyAvKiBlbnZJZCAqLywgSUxvZ2luSW5mbz4gPSBuZXcgTWFwKClcbiAgcHJpdmF0ZSB3c0luaXRQcm9taXNlPzogUHJvbWlzZTx2b2lkPlxuICBwcml2YXRlIHdzUmVhZHlTdWJzcmliZXJzOiBJUmVzb2x2ZVJlamVjdFtdID0gW11cbiAgcHJpdmF0ZSB3c1Jlc3BvbnNlV2FpdDogTWFwPFxuICBzdHJpbmcgLyogcmVxdWVzdElkICovLFxuICBJUmVzcG9uc2VXYWl0U3BlY1xuICA+ID0gbmV3IE1hcCgpXG4gIHByaXZhdGUgcnR0T2JzZXJ2ZWQ6IG51bWJlcltdID0gW11cbiAgcHJpdmF0ZSByZWNvbm5lY3RTdGF0ZTogYm9vbGVhblxuICAvLyBvYnRhaW5lZCBmcm9tIHRoZSBmaXJzdCBnZXRTaWduYXR1cmUgd2l0aCBubyBlbnZJZCBwcm92aWRlZFxuICBwcml2YXRlIHdzU2lnbjogSVdzU2lnblxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElSZWFsdGltZVdlYlNvY2tldENsaWVudENvbnN0cnVjdG9yT3B0aW9ucykge1xuICAgIHRoaXMubWF4UmVjb25uZWN0ID0gb3B0aW9ucy5tYXhSZWNvbm5lY3QgfHwgREVGQVVMVF9NQVhfUkVDT05ORUNUXG4gICAgdGhpcy5yZWNvbm5lY3RJbnRlcnZhbCA9IG9wdGlvbnMucmVjb25uZWN0SW50ZXJ2YWwgfHwgREVGQVVMVF9XU19SRUNPTk5FQ1RfSU5URVJWQUxcbiAgICB0aGlzLmNvbnRleHQgPSBvcHRpb25zLmNvbnRleHRcbiAgfVxuXG4gIGNsZWFySGVhcnRiZWF0KCkge1xuICAgIHRoaXMucGluZ1RpbWVvdXRJZCAmJiBjbGVhclRpbWVvdXQodGhpcy5waW5nVGltZW91dElkKVxuICAgIHRoaXMucG9uZ1RpbWVvdXRJZCAmJiBjbGVhclRpbWVvdXQodGhpcy5wb25nVGltZW91dElkKVxuICB9XG5cbiAgc2VuZCA9IGFzeW5jIDxUID0gYW55PihvcHRzOiBJV1NTZW5kT3B0aW9ucyk6IFByb21pc2U8VD4gPT4gbmV3IFByb21pc2U8VD4oKF9yZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG4gICAgdm9pZCAoYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHRpbWVvdXRJZDogbnVtYmVyXG4gICAgICBsZXQgaGFzUmVzb2x2ZWQgPSBmYWxzZVxuICAgICAgbGV0IGhhc1JlamVjdGVkID0gZmFsc2VcblxuICAgICAgY29uc3QgcmVzb2x2ZTogdHlwZW9mIF9yZXNvbHZlID0gKHZhbHVlPzogVCB8IFByb21pc2VMaWtlPFQ+IHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIGhhc1Jlc29sdmVkID0gdHJ1ZVxuICAgICAgICB0aW1lb3V0SWQgJiYgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICAgICAgX3Jlc29sdmUodmFsdWUpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlamVjdDogdHlwZW9mIF9yZWplY3QgPSAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICBoYXNSZWplY3RlZCA9IHRydWVcbiAgICAgICAgdGltZW91dElkICYmIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gICAgICAgIF9yZWplY3QoZXJyb3IpXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRzLnRpbWVvdXQpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFoYXNSZXNvbHZlZCB8fCAhaGFzUmVqZWN0ZWQpIHtcbiAgICAgICAgICAgICAgLy8gd2FpdCBhbm90aGVyIGltbWVkaWF0ZSB0aW1lb3V0IHRvIGFsbG93IHRoZSBzdWNjZXNzL2ZhaWwgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCBpZiB3cyBoYXMgYWxyZWFkeSBnb3QgdGhlIHJlc3VsdCxcbiAgICAgICAgICAgICAgLy8gdGhpcyBpcyBiZWNhdXNlIHRoZSB0aW1lciBpcyByZWdpc3RlcmVkIGJlZm9yZSB3cy5zZW5kXG4gICAgICAgICAgICAgIGF3YWl0IHNsZWVwKDApXG4gICAgICAgICAgICAgIGlmICghaGFzUmVzb2x2ZWQgfHwgIWhhc1JlamVjdGVkKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBUaW1lb3V0RXJyb3IoJ3dzY2xpZW50LnNlbmQgdGltZWRvdXQnKSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKClcbiAgICAgICAgfSwgb3B0cy50aW1lb3V0KVxuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAodGhpcy53c0luaXRQcm9taXNlICE9PSB1bmRlZmluZWQgfHwgdGhpcy53c0luaXRQcm9taXNlICE9PSBudWxsKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy53c0luaXRQcm9taXNlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMud3MpIHtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdpbnZhbGlkIHN0YXRlOiB3cyBjb25uZWN0aW9uIG5vdCBleGlzdHMsIGNhbiBub3Qgc2VuZCBtZXNzYWdlJykpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy53cy5yZWFkeVN0YXRlICE9PSBXU19SRUFEWV9TVEFURS5PUEVOKSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgd3MgcmVhZHlTdGF0ZSBpbnZhbGlkOiAke3RoaXMud3MucmVhZHlTdGF0ZX0sIGNhbiBub3Qgc2VuZCBtZXNzYWdlYCkpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cy53YWl0UmVzcG9uc2UpIHtcbiAgICAgICAgICBjb25zdCByZXNwV2FpdFNwZWM6IElSZXNwb25zZVdhaXRTcGVjID0ge1xuICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgIHJlamVjdCxcbiAgICAgICAgICAgIHNraXBPbk1lc3NhZ2U6IG9wdHMuc2tpcE9uTWVzc2FnZSxcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy53c1Jlc3BvbnNlV2FpdC5zZXQob3B0cy5tc2cucmVxdWVzdElkLCByZXNwV2FpdFNwZWMpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25zb2xlLmxvZygnc2VuZCBtc2c6Jywgb3B0cy5tc2cpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy53cy5zZW5kKEpTT04uc3RyaW5naWZ5KG9wdHMubXNnKSlcbiAgICAgICAgICBpZiAoIW9wdHMud2FpdFJlc3BvbnNlKSB7XG4gICAgICAgICAgICByZXNvbHZlKHZvaWQgMClcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJlamVjdChlcnIpXG4gICAgICAgICAgICBpZiAob3B0cy53YWl0UmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgdGhpcy53c1Jlc3BvbnNlV2FpdC5kZWxldGUob3B0cy5tc2cucmVxdWVzdElkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSlcbiAgICAgIH1cbiAgICB9KSgpXG4gIH0pXG5cbiAgY2xvc2UoY29kZTogQ2xvc2VFdmVudENvZGUpIHtcbiAgICB0aGlzLmNsZWFySGVhcnRiZWF0KClcblxuICAgIGlmICh0aGlzLndzKSB7XG4gICAgICB0aGlzLndzLmNsb3NlKGNvZGUsIENMT1NFX0VWRU5UX0NPREVfSU5GT1tjb2RlXS5uYW1lKVxuICAgICAgdGhpcy53cyA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIGNsb3NlQWxsQ2xpZW50cyA9IChlcnJvcjogYW55KSA9PiB7XG4gICAgdGhpcy52aXJ0dWFsV1NDbGllbnQuZm9yRWFjaCgoY2xpZW50KSA9PiB7XG4gICAgICBjbGllbnQuY2xvc2VXaXRoRXJyb3IoZXJyb3IpXG4gICAgfSlcbiAgfVxuXG4gIHBhdXNlQ2xpZW50cyA9IChjbGllbnRzPzogU2V0PFZpcnR1YWxXZWJTb2NrZXRDbGllbnQ+KSA9PiB7XG4gICAgKGNsaWVudHMgfHwgdGhpcy52aXJ0dWFsV1NDbGllbnQpLmZvckVhY2goKGNsaWVudCkgPT4ge1xuICAgICAgY2xpZW50LnBhdXNlKClcbiAgICB9KVxuICB9XG5cbiAgcmVzdW1lQ2xpZW50cyA9IChjbGllbnRzPzogU2V0PFZpcnR1YWxXZWJTb2NrZXRDbGllbnQ+KSA9PiB7XG4gICAgKGNsaWVudHMgfHwgdGhpcy52aXJ0dWFsV1NDbGllbnQpLmZvckVhY2goKGNsaWVudCkgPT4ge1xuICAgICAgY2xpZW50LnJlc3VtZSgpXG4gICAgfSlcbiAgfVxuXG4gIHdhdGNoKG9wdGlvbnM6IElXU1dhdGNoT3B0aW9ucyk6IERCUmVhbHRpbWVMaXN0ZW5lciB7XG4gICAgaWYgKCF0aGlzLndzICYmICh0aGlzLndzSW5pdFByb21pc2UgPT09IHVuZGVmaW5lZCB8fCB0aGlzLndzSW5pdFByb21pc2UgPT09IG51bGwpKSB7XG4gICAgICB0aGlzLmluaXRXZWJTb2NrZXRDb25uZWN0aW9uKGZhbHNlKVxuICAgIH1cblxuICAgIGNvbnN0IHZpcnR1YWxDbGllbnQgPSBuZXcgVmlydHVhbFdlYlNvY2tldENsaWVudCh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgc2VuZDogdGhpcy5zZW5kLFxuICAgICAgbG9naW46IHRoaXMud2ViTG9naW4sXG4gICAgICBpc1dTQ29ubmVjdGVkOiB0aGlzLmlzV1NDb25uZWN0ZWQsXG4gICAgICBvbmNlV1NDb25uZWN0ZWQ6IHRoaXMub25jZVdTQ29ubmVjdGVkLFxuICAgICAgZ2V0V2FpdEV4cGVjdGVkVGltZW91dExlbmd0aDogdGhpcy5nZXRXYWl0RXhwZWN0ZWRUaW1lb3V0TGVuZ3RoLFxuICAgICAgb25XYXRjaFN0YXJ0OiB0aGlzLm9uV2F0Y2hTdGFydCxcbiAgICAgIG9uV2F0Y2hDbG9zZTogdGhpcy5vbldhdGNoQ2xvc2UsXG4gICAgICBkZWJ1ZzogdHJ1ZSxcbiAgICB9KVxuICAgIHRoaXMudmlydHVhbFdTQ2xpZW50LmFkZCh2aXJ0dWFsQ2xpZW50KVxuICAgIHRoaXMud2F0Y2hJZENsaWVudE1hcC5zZXQodmlydHVhbENsaWVudC53YXRjaElkLCB2aXJ0dWFsQ2xpZW50KVxuICAgIHJldHVybiB2aXJ0dWFsQ2xpZW50Lmxpc3RlbmVyXG4gIH1cblxuICBwcml2YXRlIGluaXRXZWJTb2NrZXRDb25uZWN0aW9uID0gYXN5bmMgKFxuICAgIHJlY29ubmVjdDogYm9vbGVhbixcbiAgICBhdmFpbGFibGVSZXRyaWVzOiBudW1iZXIgPSB0aGlzLm1heFJlY29ubmVjdFxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAvLyDlvZPliY3lpITkuo7mraPlnKjph43ov57kuK3nmoTnirbmgIFcbiAgICBpZiAocmVjb25uZWN0ICYmIHRoaXMucmVjb25uZWN0U3RhdGUpIHtcbiAgICAgIHJldHVybiAvLyDlv73nlaVcbiAgICB9XG5cbiAgICBpZiAocmVjb25uZWN0KSB7XG4gICAgICB0aGlzLnJlY29ubmVjdFN0YXRlID0gdHJ1ZSAvLyDph43ov57nirbmgIHlvIDlp4tcbiAgICB9XG5cbiAgICBpZiAodGhpcy53c0luaXRQcm9taXNlICE9PSB1bmRlZmluZWQgJiYgdGhpcy53c0luaXRQcm9taXNlICE9PSBudWxsKSB7XG4gICAgICAvLyB0aGVyZSBhbHJlYWR5IGV4aXN0cyBhIHdlYnNvY2tldCBpbml0aWF0aW9uLCBqdXN0IHdhaXQgZm9yIGl0XG4gICAgICByZXR1cm4gdGhpcy53c0luaXRQcm9taXNlXG4gICAgfVxuXG4gICAgaWYgKHJlY29ubmVjdCkge1xuICAgICAgdGhpcy5wYXVzZUNsaWVudHMoKVxuICAgIH1cblxuICAgIHRoaXMuY2xvc2UoQ2xvc2VFdmVudENvZGUuUmVjb25uZWN0V2ViU29ja2V0KVxuXG4gICAgdGhpcy53c0luaXRQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB3c1NpZ24gPSBhd2FpdCB0aGlzLmdldFdzU2lnbigpXG5cbiAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgoc3VjY2VzcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gd3NTaWduLndzVXJsIHx8ICd3c3M6Ly90Y2Itd3MudGVuY2VudGNsb3VkYXBpLmNvbSdcbiAgICAgICAgICAgIGNvbnN0IHdzQ2xhc3MgPSBnZXRXc0NsYXNzKClcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAqL1xuICAgICAgICAgICAgdGhpcy53cyA9IHdzQ2xhc3MgPyBuZXcgd3NDbGFzcyh1cmwpIDogbmV3IFdlYlNvY2tldCh1cmwpXG4gICAgICAgICAgICBzdWNjZXNzKHZvaWQgMClcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgaWYgKHRoaXMud3MuY29ubmVjdCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy53cy5jb25uZWN0KClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhd2FpdCB0aGlzLmluaXRXZWJTb2NrZXRFdmVudCgpXG4gICAgICAgICAgcmVzb2x2ZSgpXG5cbiAgICAgICAgICBpZiAocmVjb25uZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnJlc3VtZUNsaWVudHMoKVxuICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RTdGF0ZSA9IGZhbHNlIC8vIOmHjei/nueKtuaAgee7k+adn1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tyZWFsdGltZV0gaW5pdFdlYlNvY2tldENvbm5lY3Rpb24gY29ubmVjdCBmYWlsJywgZSlcblxuICAgICAgICAgIGlmIChhdmFpbGFibGVSZXRyaWVzID4gMCkge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBvcHRpbWl6YXRpb24sIGluIGNhc2Ugb2YgbmV0d29yayBvZmZsaW5lLCB3ZSBkb24ndCBuZWVkIHRvIHN0dWJib3JubHkgc2xlZXAgZm9yIHNvbWV0aW1lLFxuICAgICAgICAgICAgLy8gd2Ugb25seSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXR3b3JrIHRvIGJlIGJhY2sgb25saW5lLCB0aGlzIGVuc3VyZXMgbWluaW11bSBkb3dudGltZVxuICAgICAgICAgICAgLy8gY29uc3QgeyBpc0Nvbm5lY3RlZCB9ID0gYXdhaXQgZ2V0TmV0d29ya1N0YXR1cygpXG4gICAgICAgICAgICBjb25zdCBpc0Nvbm5lY3RlZCA9IHRydWVcblxuICAgICAgICAgICAgdGhpcy53c0luaXRQcm9taXNlID0gdW5kZWZpbmVkXG5cbiAgICAgICAgICAgIGlmIChpc0Nvbm5lY3RlZCkge1xuICAgICAgICAgICAgICBhd2FpdCBzbGVlcCh0aGlzLnJlY29ubmVjdEludGVydmFsKVxuICAgICAgICAgICAgICBpZiAocmVjb25uZWN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RTdGF0ZSA9IGZhbHNlIC8vIOmHjei/nuW8guW4uOS5n+eul+mHjei/nueKtuaAgee7k+adn1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc29sdmUodGhpcy5pbml0V2ViU29ja2V0Q29ubmVjdGlvbihyZWNvbm5lY3QsIGF2YWlsYWJsZVJldHJpZXMgLSAxKSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KGUpXG5cbiAgICAgICAgICAgIGlmIChyZWNvbm5lY3QpIHtcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZUFsbENsaWVudHMobmV3IENsb3VkU0RLRXJyb3Ioe1xuICAgICAgICAgICAgICAgIGVyckNvZGU6IEVSUl9DT0RFLlNES19EQVRBQkFTRV9SRUFMVElNRV9MSVNURU5FUl9SRUNPTk5FQ1RfV0FUQ0hfRkFJTCBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgZXJyTXNnOiBlLFxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKClcbiAgICB9KVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMud3NJbml0UHJvbWlzZVxuICAgICAgdGhpcy53c1JlYWR5U3Vic3JpYmVycy5mb3JFYWNoKCh7IHJlc29sdmUgfSkgPT4gcmVzb2x2ZSgpKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMud3NSZWFkeVN1YnNyaWJlcnMuZm9yRWFjaCgoeyByZWplY3QgfSkgPT4gcmVqZWN0KCkpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMud3NJbml0UHJvbWlzZSA9IHVuZGVmaW5lZFxuICAgICAgdGhpcy53c1JlYWR5U3Vic3JpYmVycyA9IFtdXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0V2ViU29ja2V0RXZlbnQgPSAoKSA9PiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKCF0aGlzLndzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhbiBub3QgaW5pdFdlYlNvY2tldEV2ZW50LCB3cyBub3QgZXhpc3RzJylcbiAgICB9XG5cbiAgICBsZXQgd3NPcGVuZWQgPSBmYWxzZVxuXG4gICAgdGhpcy53cy5vbm9wZW4gPSAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW3JlYWx0aW1lXSB3cyBldmVudDogb3BlbicsIGV2ZW50KVxuICAgICAgd3NPcGVuZWQgPSB0cnVlXG4gICAgICByZXNvbHZlKClcbiAgICB9XG5cbiAgICB0aGlzLndzLm9uZXJyb3IgPSAoZXZlbnQpID0+IHtcbiAgICAgIC8vIGFsbCBsb2dpbnMgYXJlIGludmFsaWQgYWZ0ZXIgZGlzY29ubmVjdGlvblxuICAgICAgdGhpcy5sb2dpbnMgPSBuZXcgTWFwKClcblxuICAgICAgLy8gZXJyb3Llhpnov5tmaWxlXG5cbiAgICAgIGlmICghd3NPcGVuZWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW3JlYWx0aW1lXSB3cyBvcGVuIGZhaWxlZCB3aXRoIHdzIGV2ZW50OiBlcnJvcicsIGV2ZW50KVxuICAgICAgICByZWplY3QoZXZlbnQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdbcmVhbHRpbWVdIHdzIGV2ZW50OiBlcnJvcicsIGV2ZW50KVxuXG4gICAgICAgIHRoaXMuY2xlYXJIZWFydGJlYXQoKVxuICAgICAgICB0aGlzLnZpcnR1YWxXU0NsaWVudC5mb3JFYWNoKGNsaWVudCA9PiBjbGllbnQuY2xvc2VXaXRoRXJyb3IobmV3IENsb3VkU0RLRXJyb3Ioe1xuICAgICAgICAgIGVyckNvZGU6IEVSUl9DT0RFLlNES19EQVRBQkFTRV9SRUFMVElNRV9MSVNURU5FUl9XRUJTT0NLRVRfQ09OTkVDVElPTl9FUlJPUiBhcyBzdHJpbmcsXG4gICAgICAgICAgZXJyTXNnOiBldmVudCxcbiAgICAgICAgfSkpKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IHJlY29ubmVjdFxuICAgIHRoaXMud3Mub25jbG9zZSA9IChjbG9zZUV2ZW50KSA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tyZWFsdGltZV0gd3MgZXZlbnQ6IGNsb3NlJywgY2xvc2VFdmVudClcbiAgICAgIC8vIGFsbCBsb2dpbnMgYXJlIGludmFsaWQgYWZ0ZXIgZGlzY29ubmVjdGlvblxuICAgICAgdGhpcy5sb2dpbnMgPSBuZXcgTWFwKClcblxuICAgICAgdGhpcy5jbGVhckhlYXJ0YmVhdCgpXG4gICAgICBzd2l0Y2ggKGNsb3NlRXZlbnQuY29kZSkge1xuICAgICAgICBjYXNlIENsb3NlRXZlbnRDb2RlLlJlY29ubmVjdFdlYlNvY2tldDoge1xuICAgICAgICAgIC8vIGp1c3QgaWdub3JlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENsb3NlRXZlbnRDb2RlLk5vUmVhbHRpbWVMaXN0ZW5lcnM6IHtcbiAgICAgICAgICAvLyBxdWl0XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENsb3NlRXZlbnRDb2RlLkhlYXJ0YmVhdFBpbmdFcnJvcjpcbiAgICAgICAgY2FzZSBDbG9zZUV2ZW50Q29kZS5IZWFydGJlYXRQb25nVGltZW91dEVycm9yOlxuICAgICAgICBjYXNlIENsb3NlRXZlbnRDb2RlLk5vcm1hbENsb3N1cmU6XG4gICAgICAgIGNhc2UgQ2xvc2VFdmVudENvZGUuQWJub3JtYWxDbG9zdXJlOiB7XG4gICAgICAgICAgLy8gTm9ybWFsIENsb3N1cmUgYW5kIEFibm9ybWFsIENsb3N1cmU6XG4gICAgICAgICAgLy8gICBleHBlY3RlZCBjbG9zdXJlLCBtb3N0IGxpa2VseSBkaXNwYXRjaGVkIGJ5IHdlY2hhdCBjbGllbnQsXG4gICAgICAgICAgLy8gICBzaW5jZSB0aGlzIGlzIHRoZSBzdGF0dXMgY29kZSBkaXNwYXRjaGVkIGluIGNhc2Ugb2YgbmV0d29yayBmYWlsdXJlLFxuICAgICAgICAgIC8vICAgd2Ugc2hvdWxkIHJldHJ5XG5cbiAgICAgICAgICBpZiAodGhpcy5tYXhSZWNvbm5lY3QgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRXZWJTb2NrZXRDb25uZWN0aW9uKHRydWUsIHRoaXMubWF4UmVjb25uZWN0KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlQWxsQ2xpZW50cyhnZXRXU0Nsb3NlRXJyb3IoY2xvc2VFdmVudC5jb2RlKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENsb3NlRXZlbnRDb2RlLk5vQXV0aGVudGljYXRpb246IHtcbiAgICAgICAgICB0aGlzLmNsb3NlQWxsQ2xpZW50cyhnZXRXU0Nsb3NlRXJyb3IoY2xvc2VFdmVudC5jb2RlLCBjbG9zZUV2ZW50LnJlYXNvbikpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgLy8gd2Ugc2hvdWxkIHJldHJ5IGJ5IGRlZmF1bHRcbiAgICAgICAgICBpZiAodGhpcy5tYXhSZWNvbm5lY3QgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRXZWJTb2NrZXRDb25uZWN0aW9uKHRydWUsIHRoaXMubWF4UmVjb25uZWN0KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlQWxsQ2xpZW50cyhnZXRXU0Nsb3NlRXJyb3IoY2xvc2VFdmVudC5jb2RlKSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLndzLm9ubWVzc2FnZSA9IChyZXMpID0+IHtcbiAgICAgIGNvbnN0IHJhd01zZyA9IHJlcy5kYXRhXG5cbiAgICAgIC8vIHJlc2V0ICYgcmVzdGFydCBoZWFydGJlYXRcbiAgICAgIHRoaXMuaGVhcnRiZWF0KClcblxuICAgICAgbGV0IG1zZzogSVJlc3BvbnNlTWVzc2FnZVxuXG4gICAgICB0cnkge1xuICAgICAgICBtc2cgPSBKU09OLnBhcnNlKHJhd01zZyBhcyBzdHJpbmcpXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW3JlYWx0aW1lXSBvbk1lc3NhZ2UgcGFyc2UgcmVzLmRhdGEgZXJyb3I6ICR7ZX1gKVxuICAgICAgfVxuXG4gICAgICBpZiAobXNnLm1zZ1R5cGUgPT09ICdFUlJPUicpIHtcbiAgICAgICAgLy8g5om+5Yiw5b2T5YmN55uR5ZCs77yM5bm25bCGZXJyb3Lov5Tlm55cbiAgICAgICAgbGV0IHZpcnR1YWxXYXRjaCA9IG51bGxcbiAgICAgICAgdGhpcy52aXJ0dWFsV1NDbGllbnQuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtLndhdGNoSWQgPT09IG1zZy53YXRjaElkKSB7XG4gICAgICAgICAgICB2aXJ0dWFsV2F0Y2ggPSBpdGVtXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh2aXJ0dWFsV2F0Y2gpIHtcbiAgICAgICAgICB2aXJ0dWFsV2F0Y2gubGlzdGVuZXIub25FcnJvcihtc2cpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzcG9uc2VXYWl0U3BlYyA9IHRoaXMud3NSZXNwb25zZVdhaXQuZ2V0KG1zZy5yZXF1ZXN0SWQpXG4gICAgICBpZiAocmVzcG9uc2VXYWl0U3BlYykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChtc2cubXNnVHlwZSA9PT0gJ0VSUk9SJykge1xuICAgICAgICAgICAgcmVzcG9uc2VXYWl0U3BlYy5yZWplY3QobmV3IFJlYWx0aW1lRXJyb3JNZXNzYWdlRXJyb3IobXNnKSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzcG9uc2VXYWl0U3BlYy5yZXNvbHZlKG1zZylcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgJ3dzIG9uTWVzc2FnZSByZXNwb25zZVdhaXRTcGVjLnJlc29sdmUobXNnKSBlcnJvcmVkOicsXG4gICAgICAgICAgICBlXG4gICAgICAgICAgKVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRoaXMud3NSZXNwb25zZVdhaXQuZGVsZXRlKG1zZy5yZXF1ZXN0SWQpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3BvbnNlV2FpdFNwZWMuc2tpcE9uTWVzc2FnZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChtc2cubXNnVHlwZSA9PT0gJ1BPTkcnKSB7XG4gICAgICAgIGlmICh0aGlzLmxhc3RQaW5nU2VuZFRTKSB7XG4gICAgICAgICAgY29uc3QgcnR0ID0gRGF0ZS5ub3coKSAtIHRoaXMubGFzdFBpbmdTZW5kVFNcbiAgICAgICAgICBpZiAocnR0ID4gREVGQVVMVF9VTlRSVVNURURfUlRUX1RIUkVTSE9MRCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbcmVhbHRpbWVdIHVudHJ1c3RlZCBydHQgb2JzZXJ2ZWQ6ICR7cnR0fWApXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMucnR0T2JzZXJ2ZWQubGVuZ3RoID49IE1BWF9SVFRfT0JTRVJWRUQpIHtcbiAgICAgICAgICAgIHRoaXMucnR0T2JzZXJ2ZWQuc3BsaWNlKFxuICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICB0aGlzLnJ0dE9ic2VydmVkLmxlbmd0aCAtIE1BWF9SVFRfT0JTRVJWRUQgKyAxXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucnR0T2JzZXJ2ZWQucHVzaChydHQpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxldCBjbGllbnQgPSBtc2cud2F0Y2hJZCAmJiB0aGlzLndhdGNoSWRDbGllbnRNYXAuZ2V0KG1zZy53YXRjaElkKVxuICAgICAgaWYgKGNsaWVudCkge1xuICAgICAgICBjbGllbnQub25NZXNzYWdlKG1zZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYFtyZWFsdGltZV0gbm8gcmVhbHRpbWUgbGlzdGVuZXIgZm91bmQgcmVzcG9uc2libGUgZm9yIHdhdGNoSWQgJHttc2cud2F0Y2hJZH06IGAsXG4gICAgICAgICAgbXNnXG4gICAgICAgIClcbiAgICAgICAgc3dpdGNoIChtc2cubXNnVHlwZSkge1xuICAgICAgICAgIGNhc2UgJ0lOSVRfRVZFTlQnOlxuICAgICAgICAgIGNhc2UgJ05FWFRfRVZFTlQnOlxuICAgICAgICAgIGNhc2UgJ0NIRUNLX0VWRU5UJzoge1xuICAgICAgICAgICAgY2xpZW50ID0gdGhpcy5xdWVyeUlkQ2xpZW50TWFwLmdldChtc2cubXNnRGF0YS5xdWVyeUlEKVxuICAgICAgICAgICAgaWYgKGNsaWVudCkge1xuICAgICAgICAgICAgICBjbGllbnQub25NZXNzYWdlKG1zZylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgWywgY2xpZW50XSBvZiBBcnJheS5mcm9tKHRoaXMud2F0Y2hJZENsaWVudE1hcC5lbnRyaWVzKCkpKSB7XG4gICAgICAgICAgICAgIGNsaWVudC5vbk1lc3NhZ2UobXNnKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaGVhcnRiZWF0KClcbiAgfSlcblxuICBwcml2YXRlIGlzV1NDb25uZWN0ZWQgPSAoKTogYm9vbGVhbiA9PiBCb29sZWFuKHRoaXMud3MgJiYgdGhpcy53cy5yZWFkeVN0YXRlID09PSBXU19SRUFEWV9TVEFURS5PUEVOKVxuXG4gIHByaXZhdGUgb25jZVdTQ29ubmVjdGVkID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGlmICh0aGlzLmlzV1NDb25uZWN0ZWQoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMud3NJbml0UHJvbWlzZSAhPT0gbnVsbCAmJiB0aGlzLndzSW5pdFByb21pc2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMud3NJbml0UHJvbWlzZVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLndzUmVhZHlTdWJzcmliZXJzLnB1c2goe1xuICAgICAgICByZXNvbHZlLFxuICAgICAgICByZWplY3QsXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHdlYkxvZ2luID0gYXN5bmMgKFxuICAgIGVudklkPzogc3RyaW5nLFxuICAgIHJlZnJlc2g/OiBib29sZWFuXG4gICk6IFByb21pc2U8YW55PiA9PiB7XG4gICAgaWYgKCFyZWZyZXNoKSB7XG4gICAgICBpZiAoZW52SWQpIHtcbiAgICAgICAgY29uc3QgbG9naW5JbmZvID0gdGhpcy5sb2dpbnMuZ2V0KGVudklkKVxuICAgICAgICBpZiAobG9naW5JbmZvKSB7XG4gICAgICAgICAgaWYgKGxvZ2luSW5mby5sb2dnZWRJbiAmJiBsb2dpbkluZm8ubG9naW5SZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2dpbkluZm8ubG9naW5SZXN1bHRcbiAgICAgICAgICB9IGlmIChsb2dpbkluZm8ubG9nZ2luZ0luUHJvbWlzZSAhPT0gbnVsbCAmJiBsb2dpbkluZm8ubG9nZ2luZ0luUHJvbWlzZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9naW5JbmZvLmxvZ2dpbmdJblByb21pc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGVtcHR5RW52TG9naW5JbmZvID0gdGhpcy5sb2dpbnMuZ2V0KCcnKVxuICAgICAgICBpZiAoZW1wdHlFbnZMb2dpbkluZm8/LmxvZ2dpbmdJblByb21pc2UgIT09IG51bGwgJiYgZW1wdHlFbnZMb2dpbkluZm8/LmxvZ2dpbmdJblByb21pc2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBlbXB0eUVudkxvZ2luSW5mby5sb2dnaW5nSW5Qcm9taXNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8SUxvZ2luUmVzdWx0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHdzU2lnbiA9IGF3YWl0IHRoaXMuZ2V0V3NTaWduKClcblxuICAgICAgICAgIGNvbnN0IG1zZ0RhdGE6IElSZXF1ZXN0TWVzc2FnZUxvZ2luRGF0YSA9IHtcbiAgICAgICAgICAgIGVudklkOiB3c1NpZ24uZW52SWQgfHwgJycsXG4gICAgICAgICAgICBhY2Nlc3NUb2tlbjogJycsIC8vIOW3suW6n+W8g+Wtl+autVxuICAgICAgICAgICAgcmVmZXJyZXI6ICd3ZWInLFxuICAgICAgICAgICAgc2RrVmVyc2lvbjogJycsXG4gICAgICAgICAgICBkYXRhVmVyc2lvbjogJycsXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGxvZ2luTXNnOiBJUmVxdWVzdE1lc3NhZ2VMb2dpbk1zZyA9IHtcbiAgICAgICAgICAgIHdhdGNoSWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHJlcXVlc3RJZDogZ2VuUmVxdWVzdElkKCksXG4gICAgICAgICAgICBtc2dUeXBlOiAnTE9HSU4nLFxuICAgICAgICAgICAgbXNnRGF0YSxcbiAgICAgICAgICAgIGV4TXNnRGF0YToge1xuICAgICAgICAgICAgICBydW50aW1lOiBnZXRSdW50aW1lKCksXG4gICAgICAgICAgICAgIHNpZ25TdHI6IHdzU2lnbi5zaWduU3RyLFxuICAgICAgICAgICAgICBzZWNyZXRWZXJzaW9uOiB3c1NpZ24uc2VjcmV0VmVyc2lvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGxvZ2luUmVzTXNnID0gYXdhaXQgdGhpcy5zZW5kPElSZXNwb25zZU1lc3NhZ2VMb2dpblJlc01zZz4oe1xuICAgICAgICAgICAgbXNnOiBsb2dpbk1zZyxcbiAgICAgICAgICAgIHdhaXRSZXNwb25zZTogdHJ1ZSxcbiAgICAgICAgICAgIHNraXBPbk1lc3NhZ2U6IHRydWUsXG4gICAgICAgICAgICB0aW1lb3V0OiBERUZBVUxUX0xPR0lOX1RJTUVPVVQsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmICghbG9naW5SZXNNc2cubXNnRGF0YS5jb2RlKSB7XG4gICAgICAgICAgICAvLyBsb2dpbiBzdWNjZXNzXG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgZW52SWQ6IHdzU2lnbi5lbnZJZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGxvZ2luIGZhaWxlZFxuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgJHtsb2dpblJlc01zZy5tc2dEYXRhLmNvZGV9ICR7bG9naW5SZXNNc2cubXNnRGF0YS5tZXNzYWdlfWApKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJlamVjdChlKVxuICAgICAgICB9XG4gICAgICB9KSgpXG4gICAgfSlcblxuICAgIGxldCBsb2dpbkluZm8gPSBlbnZJZCAmJiB0aGlzLmxvZ2lucy5nZXQoZW52SWQpXG5cbiAgICBjb25zdCBsb2dpblN0YXJ0VFMgPSBEYXRlLm5vdygpXG5cbiAgICBpZiAobG9naW5JbmZvKSB7XG4gICAgICBsb2dpbkluZm8ubG9nZ2VkSW4gPSBmYWxzZVxuICAgICAgbG9naW5JbmZvLmxvZ2dpbmdJblByb21pc2UgPSBwcm9taXNlXG4gICAgICBsb2dpbkluZm8ubG9naW5TdGFydFRTID0gbG9naW5TdGFydFRTXG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2luSW5mbyA9IHtcbiAgICAgICAgbG9nZ2VkSW46IGZhbHNlLFxuICAgICAgICBsb2dnaW5nSW5Qcm9taXNlOiBwcm9taXNlLFxuICAgICAgICBsb2dpblN0YXJ0VFMsXG4gICAgICB9XG4gICAgICB0aGlzLmxvZ2lucy5zZXQoZW52SWQgfHwgJycsIGxvZ2luSW5mbylcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbG9naW5SZXN1bHQgPSBhd2FpdCBwcm9taXNlXG4gICAgICBjb25zdCBjdXJMb2dpbkluZm8gPSBlbnZJZCAmJiB0aGlzLmxvZ2lucy5nZXQoZW52SWQpXG4gICAgICBpZiAoXG4gICAgICAgIGN1ckxvZ2luSW5mb1xuICAgICAgICAmJiBjdXJMb2dpbkluZm8gPT09IGxvZ2luSW5mb1xuICAgICAgICAmJiBjdXJMb2dpbkluZm8ubG9naW5TdGFydFRTID09PSBsb2dpblN0YXJ0VFNcbiAgICAgICkge1xuICAgICAgICBsb2dpbkluZm8ubG9nZ2VkSW4gPSB0cnVlXG4gICAgICAgIGxvZ2luSW5mby5sb2dnaW5nSW5Qcm9taXNlID0gdW5kZWZpbmVkXG4gICAgICAgIGxvZ2luSW5mby5sb2dpblN0YXJ0VFMgPSB1bmRlZmluZWRcbiAgICAgICAgbG9naW5JbmZvLmxvZ2luUmVzdWx0ID0gbG9naW5SZXN1bHRcbiAgICAgICAgcmV0dXJuIGxvZ2luUmVzdWx0XG4gICAgICB9IGlmIChjdXJMb2dpbkluZm8pIHtcbiAgICAgICAgaWYgKGN1ckxvZ2luSW5mby5sb2dnZWRJbiAmJiBjdXJMb2dpbkluZm8ubG9naW5SZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gY3VyTG9naW5JbmZvLmxvZ2luUmVzdWx0XG4gICAgICAgIH0gaWYgKGN1ckxvZ2luSW5mby5sb2dnaW5nSW5Qcm9taXNlICE9PSBudWxsICYmIGN1ckxvZ2luSW5mby5sb2dnaW5nSW5Qcm9taXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gY3VyTG9naW5JbmZvLmxvZ2dpbmdJblByb21pc2VcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dzIHVuZXhwZWN0ZWQgbG9naW4gaW5mbycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dzIGxvZ2luIGluZm8gcmVzZXQnKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2luSW5mby5sb2dnZWRJbiA9IGZhbHNlXG4gICAgICBsb2dpbkluZm8ubG9nZ2luZ0luUHJvbWlzZSA9IHVuZGVmaW5lZFxuICAgICAgbG9naW5JbmZvLmxvZ2luU3RhcnRUUyA9IHVuZGVmaW5lZFxuICAgICAgbG9naW5JbmZvLmxvZ2luUmVzdWx0ID0gdW5kZWZpbmVkXG4gICAgICB0aHJvdyBlXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRXc1NpZ24gPSBhc3luYyAoKTogUHJvbWlzZTxJV3NTaWduPiA9PiB7XG4gICAgaWYgKHRoaXMud3NTaWduICYmIHRoaXMud3NTaWduLmV4cGlyZWRUcyA+IERhdGUubm93KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLndzU2lnblxuICAgIH1cbiAgICBjb25zdCBleHBpcmVkVHMgPSBEYXRlLm5vdygpICsgNjAwMDBcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbnRleHQuYXBwQ29uZmlnLnJlcXVlc3Quc2VuZCgnYXV0aC53c1dlYlNpZ24nLCB7IHJ1bnRpbWU6IGdldFJ1bnRpbWUoKSB9KVxuXG4gICAgaWYgKHJlcy5jb2RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFt0Y2ItanMtc2RrXSDojrflj5blrp7ml7bmlbDmja7mjqjpgIHnmbvlvZXnpajmja7lpLHotKU6ICR7cmVzLmNvZGV9YClcbiAgICB9XG5cbiAgICBpZiAocmVzLmRhdGEpIHtcbiAgICAgIGNvbnN0IHsgc2lnblN0ciwgd3NVcmwsIHNlY3JldFZlcnNpb24sIGVudklkIH0gPSByZXMuZGF0YVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2lnblN0cixcbiAgICAgICAgd3NVcmwsXG4gICAgICAgIHNlY3JldFZlcnNpb24sXG4gICAgICAgIGVudklkLFxuICAgICAgICBleHBpcmVkVHMsXG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignW3RjYi1qcy1zZGtdIOiOt+WPluWunuaXtuaVsOaNruaOqOmAgeeZu+W9leelqOaNruWksei0pScpXG4gIH1cblxuICBwcml2YXRlIGdldFdhaXRFeHBlY3RlZFRpbWVvdXRMZW5ndGggPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnJ0dE9ic2VydmVkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIERFRkFVTFRfRVhQRUNURURfRVZFTlRfV0FJVF9USU1FXG4gICAgfVxuXG4gICAgLy8gMS41ICogUlRUXG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLnJ0dE9ic2VydmVkLnJlZHVjZSgoYWNjLCBjdXIpID0+IGFjYyArIGN1cilcbiAgICAgICAgLyB0aGlzLnJ0dE9ic2VydmVkLmxlbmd0aClcbiAgICAgICogMS41XG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBoZWFydGJlYXQoaW1tZWRpYXRlPzogYm9vbGVhbikge1xuICAgIHRoaXMuY2xlYXJIZWFydGJlYXQoKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLnBpbmdUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICAoXG4gICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLndzIHx8IHRoaXMud3MucmVhZHlTdGF0ZSAhPT0gV1NfUkVBRFlfU1RBVEUuT1BFTikge1xuICAgICAgICAgICAgICAgIC8vIG5vIG5lZWQgdG8gcGluZ1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5sYXN0UGluZ1NlbmRUUyA9IERhdGUubm93KClcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5waW5nKClcbiAgICAgICAgICAgICAgdGhpcy5waW5nRmFpbGVkID0gMFxuXG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgdGhpcy5wb25nVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigncG9uZyB0aW1lZCBvdXQnKVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvbmdNaXNzZWQgPCBERUZBVUxUX1BPTkdfTUlTU19UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9uZ01pc3NlZCArPSAxXG4gICAgICAgICAgICAgICAgICB0aGlzLmhlYXJ0YmVhdCh0cnVlKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBsb2dpY2FsIHBlcmNlaXZlZCBjb25uZWN0aW9uIGxvc3QsIGV2ZW4gdGhvdWdoIHdlYnNvY2tldCBkaWQgbm90IHJlY2VpdmUgZXJyb3Igb3IgY2xvc2UgZXZlbnRcbiAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdFdlYlNvY2tldENvbm5lY3Rpb24odHJ1ZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sIHRoaXMuY29udGV4dC5hcHBDb25maWcucmVhbHRpbWVQb25nV2FpdFRpbWVvdXQpXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnBpbmdGYWlsZWQgPCBERUZBVUxUX1BJTkdfRkFJTF9UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpbmdGYWlsZWQgKz0gMVxuICAgICAgICAgICAgICAgIHRoaXMuaGVhcnRiZWF0KClcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKENsb3NlRXZlbnRDb2RlLkhlYXJ0YmVhdFBpbmdFcnJvcilcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKSgpXG4gICAgICB9LFxuICAgICAgaW1tZWRpYXRlID8gMCA6IHRoaXMuY29udGV4dC5hcHBDb25maWcucmVhbHRpbWVQaW5nSW50ZXJ2YWxcbiAgICApXG4gIH1cblxuICBwcml2YXRlIHBpbmcgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbXNnOiBJUmVxdWVzdE1lc3NhZ2VQaW5nTXNnID0ge1xuICAgICAgd2F0Y2hJZDogdW5kZWZpbmVkLFxuICAgICAgcmVxdWVzdElkOiBnZW5SZXF1ZXN0SWQoKSxcbiAgICAgIG1zZ1R5cGU6ICdQSU5HJyxcbiAgICAgIG1zZ0RhdGE6IG51bGwsXG4gICAgfVxuICAgIGF3YWl0IHRoaXMuc2VuZCh7XG4gICAgICBtc2csXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgb25XYXRjaFN0YXJ0ID0gKGNsaWVudDogVmlydHVhbFdlYlNvY2tldENsaWVudCwgcXVlcnlJRDogc3RyaW5nKSA9PiB7XG4gICAgdGhpcy5xdWVyeUlkQ2xpZW50TWFwLnNldChxdWVyeUlELCBjbGllbnQpXG4gIH1cblxuICBwcml2YXRlIG9uV2F0Y2hDbG9zZSA9IChjbGllbnQ6IFZpcnR1YWxXZWJTb2NrZXRDbGllbnQsIHF1ZXJ5SUQ6IHN0cmluZykgPT4ge1xuICAgIGlmIChxdWVyeUlEKSB7XG4gICAgICB0aGlzLnF1ZXJ5SWRDbGllbnRNYXAuZGVsZXRlKHF1ZXJ5SUQpXG4gICAgfVxuICAgIHRoaXMud2F0Y2hJZENsaWVudE1hcC5kZWxldGUoY2xpZW50LndhdGNoSWQpXG4gICAgdGhpcy52aXJ0dWFsV1NDbGllbnQuZGVsZXRlKGNsaWVudClcblxuICAgIGlmICghdGhpcy52aXJ0dWFsV1NDbGllbnQuc2l6ZSkge1xuICAgICAgLy8gbm8gbW9yZSBleGlzdGluZyB3YXRjaCwgd2Ugc2hvdWxkIHJlbGVhc2UgdGhlIHdlYnNvY2tldCBjb25uZWN0aW9uXG4gICAgICB0aGlzLmNsb3NlKENsb3NlRXZlbnRDb2RlLk5vUmVhbHRpbWVMaXN0ZW5lcnMpXG4gICAgfVxuICB9XG59XG4iXX0=
|
package/dist/esm/ws-event.js
CHANGED
|
@@ -127,11 +127,11 @@ export var CloseEventCode;
|
|
|
127
127
|
export var getWSCloseError = function (code, reason) {
|
|
128
128
|
var info = CLOSE_EVENT_CODE_INFO[code];
|
|
129
129
|
var errMsg = !info
|
|
130
|
-
? "code "
|
|
131
|
-
: info.name
|
|
130
|
+
? "code ".concat(code)
|
|
131
|
+
: "".concat(info.name, ", code ").concat(code, ", reason ").concat(reason || info.description);
|
|
132
132
|
return new CloudSDKError({
|
|
133
133
|
errCode: ERR_CODE.SDK_DATABASE_REALTIME_LISTENER_WEBSOCKET_CONNECTION_CLOSED,
|
|
134
134
|
errMsg: errMsg,
|
|
135
135
|
});
|
|
136
136
|
};
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd3MtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFakQsTUFBTSxDQUFDLElBQU0scUJBQXFCLEdBQUc7SUFDbkMsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLFdBQVcsRUFDVCxrR0FBa0c7S0FDckc7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxZQUFZO1FBQ2xCLFdBQVcsRUFDVCxvSkFBb0o7S0FDdko7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsV0FBVyxFQUNULHFFQUFxRTtLQUN4RTtJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxJQUFJO1FBQ1YsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixXQUFXLEVBQ1QsNEpBQTRKO0tBQy9KO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLFdBQVcsRUFDVCwwRUFBMEU7S0FDN0U7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsV0FBVyxFQUNULG9JQUFvSTtLQUN2STtJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxJQUFJO1FBQ1YsSUFBSSxFQUFFLDRCQUE0QjtRQUNsQyxXQUFXLEVBQ1QsMEpBQTBKO0tBQzdKO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLFdBQVcsRUFDVCxtTEFBbUw7S0FDdEw7SUFDRCxJQUFJLEVBQUU7UUFDSixJ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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVSUl9DT0RFLCBDbG91ZFNES0Vycm9yIH0gZnJvbSAnLi9lcnJvcidcblxuZXhwb3J0IGNvbnN0IENMT1NFX0VWRU5UX0NPREVfSU5GTyA9IHtcbiAgMTAwMDoge1xuICAgIGNvZGU6IDEwMDAsXG4gICAgbmFtZTogJ05vcm1hbCBDbG9zdXJlJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdOb3JtYWwgY2xvc3VyZTsgdGhlIGNvbm5lY3Rpb24gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCB3aGF0ZXZlciBwdXJwb3NlIGZvciB3aGljaCBpdCB3YXMgY3JlYXRlZC4nLFxuICB9LFxuICAxMDAxOiB7XG4gICAgY29kZTogMTAwMSxcbiAgICBuYW1lOiAnR29pbmcgQXdheScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIGVuZHBvaW50IGlzIGdvaW5nIGF3YXksIGVpdGhlciBiZWNhdXNlIG9mIGEgc2VydmVyIGZhaWx1cmUgb3IgYmVjYXVzZSB0aGUgYnJvd3NlciBpcyBuYXZpZ2F0aW5nIGF3YXkgZnJvbSB0aGUgcGFnZSB0aGF0IG9wZW5lZCB0aGUgY29ubmVjdGlvbi4nLFxuICB9LFxuICAxMDAyOiB7XG4gICAgY29kZTogMTAwMixcbiAgICBuYW1lOiAnUHJvdG9jb2wgRXJyb3InLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBlbmRwb2ludCBpcyB0ZXJtaW5hdGluZyB0aGUgY29ubmVjdGlvbiBkdWUgdG8gYSBwcm90b2NvbCBlcnJvci4nLFxuICB9LFxuICAxMDAzOiB7XG4gICAgY29kZTogMTAwMyxcbiAgICBuYW1lOiAnVW5zdXBwb3J0ZWQgRGF0YScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIGNvbm5lY3Rpb24gaXMgYmVpbmcgdGVybWluYXRlZCBiZWNhdXNlIHRoZSBlbmRwb2ludCByZWNlaXZlZCBkYXRhIG9mIGEgdHlwZSBpdCBjYW5ub3QgYWNjZXB0IChmb3IgZXhhbXBsZSwgYSB0ZXh0LW9ubHkgZW5kcG9pbnQgcmVjZWl2ZWQgYmluYXJ5IGRhdGEpLicsXG4gIH0sXG4gIDEwMDU6IHtcbiAgICBjb2RlOiAxMDA1LFxuICAgIG5hbWU6ICdObyBTdGF0dXMgUmVjZWl2ZWQnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0luZGljYXRlcyB0aGF0IG5vIHN0YXR1cyBjb2RlIHdhcyBwcm92aWRlZCBldmVuIHRob3VnaCBvbmUgd2FzIGV4cGVjdGVkLicsXG4gIH0sXG4gIDEwMDY6IHtcbiAgICBjb2RlOiAxMDA2LFxuICAgIG5hbWU6ICdBYm5vcm1hbCBDbG9zdXJlJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdVc2VkIHRvIGluZGljYXRlIHRoYXQgYSBjb25uZWN0aW9uIHdhcyBjbG9zZWQgYWJub3JtYWxseSAodGhhdCBpcywgd2l0aCBubyBjbG9zZSBmcmFtZSBiZWluZyBzZW50KSB3aGVuIGEgc3RhdHVzIGNvZGUgaXMgZXhwZWN0ZWQuJyxcbiAgfSxcbiAgMTAwNzoge1xuICAgIGNvZGU6IDEwMDcsXG4gICAgbmFtZTogJ0ludmFsaWQgZnJhbWUgcGF5bG9hZCBkYXRhJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgZW5kcG9pbnQgaXMgdGVybWluYXRpbmcgdGhlIGNvbm5lY3Rpb24gYmVjYXVzZSBhIG1lc3NhZ2Ugd2FzIHJlY2VpdmVkIHRoYXQgY29udGFpbmVkIGluY29uc2lzdGVudCBkYXRhIChlLmcuLCBub24tVVRGLTggZGF0YSB3aXRoaW4gYSB0ZXh0IG1lc3NhZ2UpLicsXG4gIH0sXG4gIDEwMDg6IHtcbiAgICBjb2RlOiAxMDA4LFxuICAgIG5hbWU6ICdQb2xpY3kgVmlvbGF0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgZW5kcG9pbnQgaXMgdGVybWluYXRpbmcgdGhlIGNvbm5lY3Rpb24gYmVjYXVzZSBpdCByZWNlaXZlZCBhIG1lc3NhZ2UgdGhhdCB2aW9sYXRlcyBpdHMgcG9saWN5LiBUaGlzIGlzIGEgZ2VuZXJpYyBzdGF0dXMgY29kZSwgdXNlZCB3aGVuIGNvZGVzIDEwMDMgYW5kIDEwMDkgYXJlIG5vdCBzdWl0YWJsZS4nLFxuICB9LFxuICAxMDA5OiB7XG4gICAgY29kZTogMTAwOSxcbiAgICBuYW1lOiAnTWVzc2FnZSB0b28gYmlnJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgZW5kcG9pbnQgaXMgdGVybWluYXRpbmcgdGhlIGNvbm5lY3Rpb24gYmVjYXVzZSBhIGRhdGEgZnJhbWUgd2FzIHJlY2VpdmVkIHRoYXQgaXMgdG9vIGxhcmdlLicsXG4gIH0sXG4gIDEwMTA6IHtcbiAgICBjb2RlOiAxMDEwLFxuICAgIG5hbWU6ICdNaXNzaW5nIEV4dGVuc2lvbicsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIGNsaWVudCBpcyB0ZXJtaW5hdGluZyB0aGUgY29ubmVjdGlvbiBiZWNhdXNlIGl0IGV4cGVjdGVkIHRoZSBzZXJ2ZXIgdG8gbmVnb3RpYXRlIG9uZSBvciBtb3JlIGV4dGVuc2lvbiwgYnV0IHRoZSBzZXJ2ZXIgZGlkblxcJ3QuJyxcbiAgfSxcbiAgMTAxMToge1xuICAgIGNvZGU6IDEwMTEsXG4gICAgbmFtZTogJ0ludGVybmFsIEVycm9yJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgc2VydmVyIGlzIHRlcm1pbmF0aW5nIHRoZSBjb25uZWN0aW9uIGJlY2F1c2UgaXQgZW5jb3VudGVyZWQgYW4gdW5leHBlY3RlZCBjb25kaXRpb24gdGhhdCBwcmV2ZW50ZWQgaXQgZnJvbSBmdWxmaWxsaW5nIHRoZSByZXF1ZXN0LicsXG4gIH0sXG4gIDEwMTI6IHtcbiAgICBjb2RlOiAxMDEyLFxuICAgIG5hbWU6ICdTZXJ2aWNlIFJlc3RhcnQnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBzZXJ2ZXIgaXMgdGVybWluYXRpbmcgdGhlIGNvbm5lY3Rpb24gYmVjYXVzZSBpdCBpcyByZXN0YXJ0aW5nLicsXG4gIH0sXG4gIDEwMTM6IHtcbiAgICBjb2RlOiAxMDEzLFxuICAgIG5hbWU6ICdUcnkgQWdhaW4gTGF0ZXInLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBzZXJ2ZXIgaXMgdGVybWluYXRpbmcgdGhlIGNvbm5lY3Rpb24gZHVlIHRvIGEgdGVtcG9yYXJ5IGNvbmRpdGlvbiwgZS5nLiBpdCBpcyBvdmVybG9hZGVkIGFuZCBpcyBjYXN0aW5nIG9mZiBzb21lIG9mIGl0cyBjbGllbnRzLicsXG4gIH0sXG4gIDEwMTQ6IHtcbiAgICBjb2RlOiAxMDE0LFxuICAgIG5hbWU6ICdCYWQgR2F0ZXdheScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIHNlcnZlciB3YXMgYWN0aW5nIGFzIGEgZ2F0ZXdheSBvciBwcm94eSBhbmQgcmVjZWl2ZWQgYW4gaW52YWxpZCByZXNwb25zZSBmcm9tIHRoZSB1cHN0cmVhbSBzZXJ2ZXIuIFRoaXMgaXMgc2ltaWxhciB0byA1MDIgSFRUUCBTdGF0dXMgQ29kZS4nLFxuICB9LFxuICAxMDE1OiB7XG4gICAgY29kZTogMTAxNSxcbiAgICBuYW1lOiAnVExTIEhhbmRzaGFrZScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnSW5kaWNhdGVzIHRoYXQgdGhlIGNvbm5lY3Rpb24gd2FzIGNsb3NlZCBkdWUgdG8gYSBmYWlsdXJlIHRvIHBlcmZvcm0gYSBUTFMgaGFuZHNoYWtlIChlLmcuLCB0aGUgc2VydmVyIGNlcnRpZmljYXRlIGNhblxcJ3QgYmUgdmVyaWZpZWQpLicsXG4gIH0sXG4gIC8vIGN1c3RvbVxuICAzMDAwOiB7XG4gICAgY29kZTogMzAwMCxcbiAgICBuYW1lOiAnUmVjb25uZWN0IFdlYlNvY2tldCcsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIGNsaWVudCBpcyB0ZXJtaW5hdGluZyB0aGUgY29ubmVjdGlvbiBiZWNhdXNlIGl0IHdhbnRzIHRvIHJlY29ubmVjdCcsXG4gIH0sXG4gIDMwMDE6IHtcbiAgICBjb2RlOiAzMDAxLFxuICAgIG5hbWU6ICdObyBSZWFsdGltZSBMaXN0ZW5lcnMnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBjbGllbnQgaXMgdGVybWluYXRpbmcgdGhlIGNvbm5lY3Rpb24gYmVjYXVzZSBubyBtb3JlIHJlYWx0aW1lIGxpc3RlbmVycyBleGlzdCcsXG4gIH0sXG4gIDMwMDI6IHtcbiAgICBjb2RlOiAzMDAyLFxuICAgIG5hbWU6ICdIZWFydGJlYXQgUGluZyBFcnJvcicsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIGNsaWVudCBpcyB0ZXJtaW5hdGluZyB0aGUgY29ubmVjdGlvbiBkdWUgdG8gaXRzIGZhaWx1cmUgaW4gc2VuZGluZyBoZWFydGJlYXQgbWVzc2FnZXMnLFxuICB9LFxuICAzMDAzOiB7XG4gICAgY29kZTogMzAwMyxcbiAgICBuYW1lOiAnSGVhcnRiZWF0IFBvbmcgVGltZW91dCBFcnJvcicsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIGNsaWVudCBpcyB0ZXJtaW5hdGluZyB0aGUgY29ubmVjdGlvbiBiZWNhdXNlIG5vIGhlYXJ0YmVhdCByZXNwb25zZSBpcyByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXInLFxuICB9LFxuICAzMDUwOiB7XG4gICAgY29kZTogMzA1MCxcbiAgICBuYW1lOiAnU2VydmVyIENsb3NlJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgY2xpZW50IGlzIHRlcm1pbmF0aW5nIHRoZSBjb25uZWN0aW9uIGJlY2F1c2Ugbm8gaGVhcnRiZWF0IHJlc3BvbnNlIGlzIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlcicsXG4gIH0sXG59XG5cbmV4cG9ydCBlbnVtIENsb3NlRXZlbnRDb2RlIHtcbiAgLy8gc3BlY1xuICBOb3JtYWxDbG9zdXJlID0gMTAwMCxcbiAgR29pbmdBd2F5ID0gMTAwMSxcbiAgUHJvdG9jb2xFcnJvciA9IDEwMDIsXG4gIFVuc3VwcG9ydGVkRGF0YSA9IDEwMDMsXG4gIE5vU3RhdHVzUmVjZWl2ZWQgPSAxMDA1LFxuICBBYm5vcm1hbENsb3N1cmUgPSAxMDA2LFxuICBJbnZhbGlkRnJhbWVQYXlsb2FkRGF0YSA9IDEwMDcsXG4gIFBvbGljeVZpb2xhdGlvbiA9IDEwMDgsXG4gIE1lc3NhZ2VUb29CaWcgPSAxMDA5LFxuICBNaXNzaW5nRXh0ZW5zaW9uID0gMTAxMCxcbiAgSW50ZXJuYWxFcnJvciA9IDEwMTEsXG4gIFNlcnZpY2VSZXN0YXJ0ID0gMTAxMixcbiAgVHJ5QWdhaW5MYXRlciA9IDEwMTMsXG4gIEJhZEdhdGV3YXkgPSAxMDE0LFxuICBUTFNIYW5kc2hha2UgPSAxMDE1LFxuICAvLyBjdXN0b20gLSBjbGllbnQgY2xvc2UgaXRzZWxmXG4gIFJlY29ubmVjdFdlYlNvY2tldCA9IDMwMDAsXG4gIE5vUmVhbHRpbWVMaXN0ZW5lcnMgPSAzMDAxLFxuICBIZWFydGJlYXRQaW5nRXJyb3IgPSAzMDAyLFxuICBIZWFydGJlYXRQb25nVGltZW91dEVycm9yID0gMzAwMyxcbiAgLy8gY3VzdG9tIC0gc2VydmVyIGNsb3NlXG4gIE5vQXV0aGVudGljYXRpb24gPSAzMDUwXG59XG5cbmV4cG9ydCBjb25zdCBnZXRXU0Nsb3NlRXJyb3IgPSAoY29kZTogQ2xvc2VFdmVudENvZGUsIHJlYXNvbj86IHN0cmluZykgPT4ge1xuICBjb25zdCBpbmZvID0gQ0xPU0VfRVZFTlRfQ09ERV9JTkZPW2NvZGVdXG4gIGNvbnN0IGVyck1zZyA9ICFpbmZvXG4gICAgPyBgY29kZSAke2NvZGV9YFxuICAgIDogYCR7aW5mby5uYW1lfSwgY29kZSAke2NvZGV9LCByZWFzb24gJHtyZWFzb24gfHwgaW5mby5kZXNjcmlwdGlvbn1gXG4gIHJldHVybiBuZXcgQ2xvdWRTREtFcnJvcih7XG4gICAgZXJyQ29kZTogRVJSX0NPREUuU0RLX0RBVEFCQVNFX1JFQUxUSU1FX0xJU1RFTkVSX1dFQlNPQ0tFVF9DT05ORUNUSU9OX0NMT1NFRCBhcyBzdHJpbmcsXG4gICAgZXJyTXNnLFxuICB9KVxufVxuIl19
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd3MtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFakQsTUFBTSxDQUFDLElBQU0scUJBQXFCLEdBQUc7SUFDbkMsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLFdBQVcsRUFDVCxrR0FBa0c7S0FDckc7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxZQUFZO1FBQ2xCLFdBQVcsRUFDVCxvSkFBb0o7S0FDdko7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsV0FBVyxFQUNULHFFQUFxRTtLQUN4RTtJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxJQUFJO1FBQ1YsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixXQUFXLEVBQ1QsNEpBQTRKO0tBQy9KO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLFdBQVcsRUFDVCwwRUFBMEU7S0FDN0U7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsV0FBVyxFQUNULG9JQUFvSTtLQUN2STtJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxJQUFJO1FBQ1YsSUFBSSxFQUFFLDRCQUE0QjtRQUNsQyxXQUFXLEVBQ1QsMEpBQTBKO0tBQzdKO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLFdBQVcsRUFDVCxtTEFBbUw7S0FDdEw7SUFDRCxJQUFJLEVBQUU7UUFDSixJ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Q0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRVJSX0NPREUsIENsb3VkU0RLRXJyb3IgfSBmcm9tICcuL2Vycm9yJ1xuXG5leHBvcnQgY29uc3QgQ0xPU0VfRVZFTlRfQ09ERV9JTkZPID0ge1xuICAxMDAwOiB7XG4gICAgY29kZTogMTAwMCxcbiAgICBuYW1lOiAnTm9ybWFsIENsb3N1cmUnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ05vcm1hbCBjbG9zdXJlOyB0aGUgY29ubmVjdGlvbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkIHdoYXRldmVyIHB1cnBvc2UgZm9yIHdoaWNoIGl0IHdhcyBjcmVhdGVkLicsXG4gIH0sXG4gIDEwMDE6IHtcbiAgICBjb2RlOiAxMDAxLFxuICAgIG5hbWU6ICdHb2luZyBBd2F5JyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgZW5kcG9pbnQgaXMgZ29pbmcgYXdheSwgZWl0aGVyIGJlY2F1c2Ugb2YgYSBzZXJ2ZXIgZmFpbHVyZSBvciBiZWNhdXNlIHRoZSBicm93c2VyIGlzIG5hdmlnYXRpbmcgYXdheSBmcm9tIHRoZSBwYWdlIHRoYXQgb3BlbmVkIHRoZSBjb25uZWN0aW9uLicsXG4gIH0sXG4gIDEwMDI6IHtcbiAgICBjb2RlOiAxMDAyLFxuICAgIG5hbWU6ICdQcm90b2NvbCBFcnJvcicsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIGVuZHBvaW50IGlzIHRlcm1pbmF0aW5nIHRoZSBjb25uZWN0aW9uIGR1ZSB0byBhIHByb3RvY29sIGVycm9yLicsXG4gIH0sXG4gIDEwMDM6IHtcbiAgICBjb2RlOiAxMDAzLFxuICAgIG5hbWU6ICdVbnN1cHBvcnRlZCBEYXRhJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgY29ubmVjdGlvbiBpcyBiZWluZyB0ZXJtaW5hdGVkIGJlY2F1c2UgdGhlIGVuZHBvaW50IHJlY2VpdmVkIGRhdGEgb2YgYSB0eXBlIGl0IGNhbm5vdCBhY2NlcHQgKGZvciBleGFtcGxlLCBhIHRleHQtb25seSBlbmRwb2ludCByZWNlaXZlZCBiaW5hcnkgZGF0YSkuJyxcbiAgfSxcbiAgMTAwNToge1xuICAgIGNvZGU6IDEwMDUsXG4gICAgbmFtZTogJ05vIFN0YXR1cyBSZWNlaXZlZCcsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnSW5kaWNhdGVzIHRoYXQgbm8gc3RhdHVzIGNvZGUgd2FzIHByb3ZpZGVkIGV2ZW4gdGhvdWdoIG9uZSB3YXMgZXhwZWN0ZWQuJyxcbiAgfSxcbiAgMTAwNjoge1xuICAgIGNvZGU6IDEwMDYsXG4gICAgbmFtZTogJ0Fibm9ybWFsIENsb3N1cmUnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1VzZWQgdG8gaW5kaWNhdGUgdGhhdCBhIGNvbm5lY3Rpb24gd2FzIGNsb3NlZCBhYm5vcm1hbGx5ICh0aGF0IGlzLCB3aXRoIG5vIGNsb3NlIGZyYW1lIGJlaW5nIHNlbnQpIHdoZW4gYSBzdGF0dXMgY29kZSBpcyBleHBlY3RlZC4nLFxuICB9LFxuICAxMDA3OiB7XG4gICAgY29kZTogMTAwNyxcbiAgICBuYW1lOiAnSW52YWxpZCBmcmFtZSBwYXlsb2FkIGRhdGEnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBlbmRwb2ludCBpcyB0ZXJtaW5hdGluZyB0aGUgY29ubmVjdGlvbiBiZWNhdXNlIGEgbWVzc2FnZSB3YXMgcmVjZWl2ZWQgdGhhdCBjb250YWluZWQgaW5jb25zaXN0ZW50IGRhdGEgKGUuZy4sIG5vbi1VVEYtOCBkYXRhIHdpdGhpbiBhIHRleHQgbWVzc2FnZSkuJyxcbiAgfSxcbiAgMTAwODoge1xuICAgIGNvZGU6IDEwMDgsXG4gICAgbmFtZTogJ1BvbGljeSBWaW9sYXRpb24nLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBlbmRwb2ludCBpcyB0ZXJtaW5hdGluZyB0aGUgY29ubmVjdGlvbiBiZWNhdXNlIGl0IHJlY2VpdmVkIGEgbWVzc2FnZSB0aGF0IHZpb2xhdGVzIGl0cyBwb2xpY3kuIFRoaXMgaXMgYSBnZW5lcmljIHN0YXR1cyBjb2RlLCB1c2VkIHdoZW4gY29kZXMgMTAwMyBhbmQgMTAwOSBhcmUgbm90IHN1aXRhYmxlLicsXG4gIH0sXG4gIDEwMDk6IHtcbiAgICBjb2RlOiAxMDA5LFxuICAgIG5hbWU6ICdNZXNzYWdlIHRvbyBiaWcnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBlbmRwb2ludCBpcyB0ZXJtaW5hdGluZyB0aGUgY29ubmVjdGlvbiBiZWNhdXNlIGEgZGF0YSBmcmFtZSB3YXMgcmVjZWl2ZWQgdGhhdCBpcyB0b28gbGFyZ2UuJyxcbiAgfSxcbiAgMTAxMDoge1xuICAgIGNvZGU6IDEwMTAsXG4gICAgbmFtZTogJ01pc3NpbmcgRXh0ZW5zaW9uJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgY2xpZW50IGlzIHRlcm1pbmF0aW5nIHRoZSBjb25uZWN0aW9uIGJlY2F1c2UgaXQgZXhwZWN0ZWQgdGhlIHNlcnZlciB0byBuZWdvdGlhdGUgb25lIG9yIG1vcmUgZXh0ZW5zaW9uLCBidXQgdGhlIHNlcnZlciBkaWRuXFwndC4nLFxuICB9LFxuICAxMDExOiB7XG4gICAgY29kZTogMTAxMSxcbiAgICBuYW1lOiAnSW50ZXJuYWwgRXJyb3InLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBzZXJ2ZXIgaXMgdGVybWluYXRpbmcgdGhlIGNvbm5lY3Rpb24gYmVjYXVzZSBpdCBlbmNvdW50ZXJlZCBhbiB1bmV4cGVjdGVkIGNvbmRpdGlvbiB0aGF0IHByZXZlbnRlZCBpdCBmcm9tIGZ1bGZpbGxpbmcgdGhlIHJlcXVlc3QuJyxcbiAgfSxcbiAgMTAxMjoge1xuICAgIGNvZGU6IDEwMTIsXG4gICAgbmFtZTogJ1NlcnZpY2UgUmVzdGFydCcsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIHNlcnZlciBpcyB0ZXJtaW5hdGluZyB0aGUgY29ubmVjdGlvbiBiZWNhdXNlIGl0IGlzIHJlc3RhcnRpbmcuJyxcbiAgfSxcbiAgMTAxMzoge1xuICAgIGNvZGU6IDEwMTMsXG4gICAgbmFtZTogJ1RyeSBBZ2FpbiBMYXRlcicsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIHNlcnZlciBpcyB0ZXJtaW5hdGluZyB0aGUgY29ubmVjdGlvbiBkdWUgdG8gYSB0ZW1wb3JhcnkgY29uZGl0aW9uLCBlLmcuIGl0IGlzIG92ZXJsb2FkZWQgYW5kIGlzIGNhc3Rpbmcgb2ZmIHNvbWUgb2YgaXRzIGNsaWVudHMuJyxcbiAgfSxcbiAgMTAxNDoge1xuICAgIGNvZGU6IDEwMTQsXG4gICAgbmFtZTogJ0JhZCBHYXRld2F5JyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgc2VydmVyIHdhcyBhY3RpbmcgYXMgYSBnYXRld2F5IG9yIHByb3h5IGFuZCByZWNlaXZlZCBhbiBpbnZhbGlkIHJlc3BvbnNlIGZyb20gdGhlIHVwc3RyZWFtIHNlcnZlci4gVGhpcyBpcyBzaW1pbGFyIHRvIDUwMiBIVFRQIFN0YXR1cyBDb2RlLicsXG4gIH0sXG4gIDEwMTU6IHtcbiAgICBjb2RlOiAxMDE1LFxuICAgIG5hbWU6ICdUTFMgSGFuZHNoYWtlJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdJbmRpY2F0ZXMgdGhhdCB0aGUgY29ubmVjdGlvbiB3YXMgY2xvc2VkIGR1ZSB0byBhIGZhaWx1cmUgdG8gcGVyZm9ybSBhIFRMUyBoYW5kc2hha2UgKGUuZy4sIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgY2FuXFwndCBiZSB2ZXJpZmllZCkuJyxcbiAgfSxcbiAgLy8gY3VzdG9tXG4gIDMwMDA6IHtcbiAgICBjb2RlOiAzMDAwLFxuICAgIG5hbWU6ICdSZWNvbm5lY3QgV2ViU29ja2V0JyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgY2xpZW50IGlzIHRlcm1pbmF0aW5nIHRoZSBjb25uZWN0aW9uIGJlY2F1c2UgaXQgd2FudHMgdG8gcmVjb25uZWN0JyxcbiAgfSxcbiAgMzAwMToge1xuICAgIGNvZGU6IDMwMDEsXG4gICAgbmFtZTogJ05vIFJlYWx0aW1lIExpc3RlbmVycycsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIGNsaWVudCBpcyB0ZXJtaW5hdGluZyB0aGUgY29ubmVjdGlvbiBiZWNhdXNlIG5vIG1vcmUgcmVhbHRpbWUgbGlzdGVuZXJzIGV4aXN0JyxcbiAgfSxcbiAgMzAwMjoge1xuICAgIGNvZGU6IDMwMDIsXG4gICAgbmFtZTogJ0hlYXJ0YmVhdCBQaW5nIEVycm9yJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgY2xpZW50IGlzIHRlcm1pbmF0aW5nIHRoZSBjb25uZWN0aW9uIGR1ZSB0byBpdHMgZmFpbHVyZSBpbiBzZW5kaW5nIGhlYXJ0YmVhdCBtZXNzYWdlcycsXG4gIH0sXG4gIDMwMDM6IHtcbiAgICBjb2RlOiAzMDAzLFxuICAgIG5hbWU6ICdIZWFydGJlYXQgUG9uZyBUaW1lb3V0IEVycm9yJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgY2xpZW50IGlzIHRlcm1pbmF0aW5nIHRoZSBjb25uZWN0aW9uIGJlY2F1c2Ugbm8gaGVhcnRiZWF0IHJlc3BvbnNlIGlzIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlcicsXG4gIH0sXG4gIDMwNTA6IHtcbiAgICBjb2RlOiAzMDUwLFxuICAgIG5hbWU6ICdTZXJ2ZXIgQ2xvc2UnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBjbGllbnQgaXMgdGVybWluYXRpbmcgdGhlIGNvbm5lY3Rpb24gYmVjYXVzZSBubyBoZWFydGJlYXQgcmVzcG9uc2UgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyJyxcbiAgfSxcbn1cblxuZXhwb3J0IGVudW0gQ2xvc2VFdmVudENvZGUge1xuICAvLyBzcGVjXG4gIE5vcm1hbENsb3N1cmUgPSAxMDAwLFxuICBHb2luZ0F3YXkgPSAxMDAxLFxuICBQcm90b2NvbEVycm9yID0gMTAwMixcbiAgVW5zdXBwb3J0ZWREYXRhID0gMTAwMyxcbiAgTm9TdGF0dXNSZWNlaXZlZCA9IDEwMDUsXG4gIEFibm9ybWFsQ2xvc3VyZSA9IDEwMDYsXG4gIEludmFsaWRGcmFtZVBheWxvYWREYXRhID0gMTAwNyxcbiAgUG9saWN5VmlvbGF0aW9uID0gMTAwOCxcbiAgTWVzc2FnZVRvb0JpZyA9IDEwMDksXG4gIE1pc3NpbmdFeHRlbnNpb24gPSAxMDEwLFxuICBJbnRlcm5hbEVycm9yID0gMTAxMSxcbiAgU2VydmljZVJlc3RhcnQgPSAxMDEyLFxuICBUcnlBZ2FpbkxhdGVyID0gMTAxMyxcbiAgQmFkR2F0ZXdheSA9IDEwMTQsXG4gIFRMU0hhbmRzaGFrZSA9IDEwMTUsXG4gIC8vIGN1c3RvbSAtIGNsaWVudCBjbG9zZSBpdHNlbGZcbiAgUmVjb25uZWN0V2ViU29ja2V0ID0gMzAwMCxcbiAgTm9SZWFsdGltZUxpc3RlbmVycyA9IDMwMDEsXG4gIEhlYXJ0YmVhdFBpbmdFcnJvciA9IDMwMDIsXG4gIEhlYXJ0YmVhdFBvbmdUaW1lb3V0RXJyb3IgPSAzMDAzLFxuICAvLyBjdXN0b20gLSBzZXJ2ZXIgY2xvc2VcbiAgTm9BdXRoZW50aWNhdGlvbiA9IDMwNTBcbn1cblxuZXhwb3J0IGNvbnN0IGdldFdTQ2xvc2VFcnJvciA9IChjb2RlOiBDbG9zZUV2ZW50Q29kZSwgcmVhc29uPzogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGluZm8gPSBDTE9TRV9FVkVOVF9DT0RFX0lORk9bY29kZV1cbiAgY29uc3QgZXJyTXNnID0gIWluZm9cbiAgICA/IGBjb2RlICR7Y29kZX1gXG4gICAgOiBgJHtpbmZvLm5hbWV9LCBjb2RlICR7Y29kZX0sIHJlYXNvbiAke3JlYXNvbiB8fCBpbmZvLmRlc2NyaXB0aW9ufWBcbiAgcmV0dXJuIG5ldyBDbG91ZFNES0Vycm9yKHtcbiAgICBlcnJDb2RlOiBFUlJfQ09ERS5TREtfREFUQUJBU0VfUkVBTFRJTUVfTElTVEVORVJfV0VCU09DS0VUX0NPTk5FQ1RJT05fQ0xPU0VEIGFzIHN0cmluZyxcbiAgICBlcnJNc2csXG4gIH0pXG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudbase/realtime",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.23-beta.0",
|
|
4
4
|
"description": "cloudbase javascript sdk functions componets",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"tsc": "rm -rf dist/ && tsc -p tsconfig.esm.json && tsc -p tsconfig.json",
|
|
9
9
|
"lint": "eslint --fix \"./src/**/*.ts\"",
|
|
10
10
|
"build": "npm run lint && npm run tsc",
|
|
11
|
-
"precommit": "lint
|
|
11
|
+
"precommit": "npm run lint"
|
|
12
12
|
},
|
|
13
13
|
"publishConfig": {
|
|
14
14
|
"access": "public"
|
|
@@ -28,12 +28,7 @@
|
|
|
28
28
|
"author": "",
|
|
29
29
|
"license": "Apache-2.0",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@cloudbase/types": "^2.5.
|
|
31
|
+
"@cloudbase/types": "^2.5.23-beta.0"
|
|
32
32
|
},
|
|
33
|
-
"
|
|
34
|
-
"**/*.ts": [
|
|
35
|
-
"eslint --fix"
|
|
36
|
-
]
|
|
37
|
-
},
|
|
38
|
-
"gitHead": "7454c04cb850ac9b0501d5d16755eb529a81d0b5"
|
|
33
|
+
"gitHead": "1736071e3d6d88659b37fcf216081b0e9e2d656d"
|
|
39
34
|
}
|