@milkio/stargate-worker 1.0.7 → 1.0.9

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.
Files changed (2) hide show
  1. package/index.js +14 -5
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -109,7 +109,7 @@ async function createStargateWorker(stargateOptions) {
109
109
  stargateOptions.onLog(level, parsedArgs);
110
110
  } else {
111
111
  const consoleFn = console[level] ?? console.log;
112
- consoleFn([...parsedArgs.slice(0, 5), ...parsedArgs.slice(5).map((v) => JSON.stringify(v))]);
112
+ consoleFn(...parsedArgs.slice(0, 5), ...parsedArgs.slice(5).map((v) => JSON.stringify(v)));
113
113
  }
114
114
  };
115
115
  stargateOptions.port.addEventListener("message", logHandler);
@@ -175,7 +175,7 @@ async function createStargateWorker(stargateOptions) {
175
175
  stargateOptions.port.postMessage({
176
176
  executeId: reqExecuteId,
177
177
  path,
178
- params: options?.params,
178
+ params: deepCloneIfVueReactive(options?.params),
179
179
  headers: options?.headers
180
180
  });
181
181
  });
@@ -238,7 +238,7 @@ async function createStargateWorker(stargateOptions) {
238
238
  stargateOptions.port.postMessage({
239
239
  executeId,
240
240
  path,
241
- params: options?.params,
241
+ params: deepCloneIfVueReactive(options?.params),
242
242
  headers: options?.headers
243
243
  });
244
244
  }
@@ -449,6 +449,15 @@ async function createDefaultCacheStorage(options) {
449
449
  function generateCacheKey(path, params) {
450
450
  return `${path}:${JSON.stringify(params ?? {})}`;
451
451
  }
452
+ var deepCloneIfVueReactive = (value) => {
453
+ if (value === null || value === undefined || typeof value !== "object")
454
+ return value;
455
+ const obj = value;
456
+ if (obj.__v_isReadonly !== undefined || obj.__v_isReactive !== undefined) {
457
+ return JSON.parse(JSON.stringify(value));
458
+ }
459
+ return value;
460
+ };
452
461
  export {
453
462
  reviveJSONParse,
454
463
  createStargateWorker,
@@ -456,5 +465,5 @@ export {
456
465
  createDefaultCacheStorage
457
466
  };
458
467
 
459
- //# debugId=E2DCF02A8DC9A70D64756E2164756E21
460
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vdXRpbHMvY3JlYXRlLWlkLnRzIiwgIi4uL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgInR5cGUgSWRHZW5lcmF0b3JPcHRpb25zID0ge1xuICBsZW5ndGg/OiBudW1iZXI7XG4gIHRpbWVzdGFtcDogYm9vbGVhbjtcbiAgc2VxdWVudGlhbDogYm9vbGVhbjtcbn07XG5cbmZ1bmN0aW9uIGRlZmluZUlkR2VuZXJhdG9yKG9wdGlvbnM6IElkR2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMubGVuZ3RoKSBvcHRpb25zLmxlbmd0aCA9IDI0O1xuICBpZiAob3B0aW9ucy5sZW5ndGggPCAxKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxlbmd0aFwiKTtcbiAgaWYgKG9wdGlvbnMubGVuZ3RoID4gNjEpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbGVuZ3RoXCIpO1xuICBpZiAob3B0aW9ucy50aW1lc3RhbXAgJiYgb3B0aW9ucy5sZW5ndGggPCA5KSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxlbmd0aFwiKTtcbiAgbGV0IGxhc3RUaW1lID0gMDtcbiAgbGV0IGxhc3REZWNpbWFsID0gMG47XG4gIHJldHVybiB7XG4gICAgY3JlYXRlSWQoKSB7XG4gICAgICBsZXQgcmFuZExlbmd0aCA9IG9wdGlvbnMubGVuZ3RoITtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBsZXQgaWQgPSBcIlwiO1xuICAgICAgaWYgKG9wdGlvbnMudGltZXN0YW1wKSB7XG4gICAgICAgIHJhbmRMZW5ndGggLT0gODtcbiAgICAgICAgaWQgPSBgJHtpZH0ke19fYmlnSW50VG9TdHJpbmcoQmlnSW50KG5vdykpLnBhZFN0YXJ0KDgsIFwiMFwiKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuc2VxdWVudGlhbCAmJiBsYXN0VGltZSA9PT0gbm93KSB7XG4gICAgICAgIGlkID0gYCR7aWR9JHtfX2JpZ0ludFRvU3RyaW5nKCsrbGFzdERlY2ltYWwpLnBhZFN0YXJ0KDEsIFwiMFwiKX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdFRpbWUgPSBub3c7XG4gICAgICAgIGNvbnN0IG1pbiA9IDBuO1xuICAgICAgICBjb25zdCBtYXggPSBfX2dldE1heFZhbHVlKEJpZ0ludChyYW5kTGVuZ3RoKSk7XG4gICAgICAgIGxhc3REZWNpbWFsID0gX19zZWN1cmVSYW5kb21CaWdJbnQobWluLCBtYXgpO1xuICAgICAgICBpZCA9IGAke2lkfSR7X19iaWdJbnRUb1N0cmluZyhsYXN0RGVjaW1hbCkucGFkU3RhcnQocmFuZExlbmd0aCwgXCIwXCIpfWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSxcbiAgICBnZXRJZFRpbWVzdGFtcChpZDogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy50aW1lc3RhbXAgPyBOdW1iZXIoX19zdHJpbmdUb0JpZ0ludChpZC5zbGljZSgwLCA4KS5yZXBsYWNlQWxsKFwiMFwiLCBcIlwiKSkpIDogMDtcbiAgICB9LFxuICB9O1xufVxuXG5jb25zdCBFTkNPRElORyA9IFwiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcblxuZnVuY3Rpb24gX19zZWN1cmVSYW5kb21CaWdJbnQobWluOiBiaWdpbnQsIG1heDogYmlnaW50KTogYmlnaW50IHtcbiAgaWYgKG1pbiA+PSBtYXgpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VcIik7XG5cbiAgY29uc3QgcmFuZ2UgPSBtYXggLSBtaW4gKyAxbjtcbiAgY29uc3QgYnl0ZUNvdW50ID0gTWF0aC5jZWlsKE51bWJlcihCaWdJbnQocmFuZ2UudG9TdHJpbmcoMikubGVuZ3RoKSkgLyA4KTtcbiAgY29uc3QgZW50cm9weUJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZUNvdW50KTtcblxuICBsZXQgcmFuZG9tVmFsdWU6IGJpZ2ludDtcbiAgZG8ge1xuICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoZW50cm9weUJ5dGVzKTtcbiAgICByYW5kb21WYWx1ZSA9XG4gICAgICBCaWdJbnQoXG4gICAgICAgIGAweCR7QXJyYXkuZnJvbShlbnRyb3B5Qnl0ZXMpXG4gICAgICAgICAgLm1hcCgoYikgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpKVxuICAgICAgICAgIC5qb2luKFwiXCIpfWAsXG4gICAgICApICUgcmFuZ2U7XG4gIH0gd2hpbGUgKHJhbmRvbVZhbHVlIDwgMG4pO1xuXG4gIHJldHVybiBtaW4gKyByYW5kb21WYWx1ZTtcbn1cblxuZnVuY3Rpb24gX19iaWdJbnRUb1N0cmluZyh2YWx1ZTogYmlnaW50KTogc3RyaW5nIHtcbiAgY29uc3QgYmFzZSA9IEJpZ0ludChFTkNPRElORy5sZW5ndGgpO1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgbGV0IGN1cnJlbnQgPSB2YWx1ZTtcblxuICBpZiAoY3VycmVudCA9PT0gMG4pIHJldHVybiBFTkNPRElOR1swXTtcblxuICB3aGlsZSAoY3VycmVudCA+IDBuKSB7XG4gICAgY29uc3QgcmVtYWluZGVyID0gY3VycmVudCAlIGJhc2U7XG4gICAgcmVzdWx0ID0gRU5DT0RJTkdbTnVtYmVyKHJlbWFpbmRlcildICsgcmVzdWx0O1xuICAgIGN1cnJlbnQgPSBjdXJyZW50IC8gYmFzZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBfX3N0cmluZ1RvQmlnSW50KHN0cjogc3RyaW5nKTogYmlnaW50IHtcbiAgY29uc3QgY2hhck1hcDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IEVOQ09ESU5HLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhck1hcFtFTkNPRElOR1tpXV0gPSBpO1xuICB9XG5cbiAgY29uc3QgYmFzZSA9IEJpZ0ludChFTkNPRElORy5sZW5ndGgpO1xuICBsZXQgcmVzdWx0ID0gMG47XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGFyID0gc3RyW2ldO1xuICAgIGlmICghKGNoYXIgaW4gY2hhck1hcCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjaGFyYWN0ZXIgJyR7Y2hhcn0nIGluIGlucHV0IHN0cmluZ2ApO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IEJpZ0ludChjaGFyTWFwW2NoYXJdKTtcbiAgICByZXN1bHQgPSByZXN1bHQgKiBiYXNlICsgdmFsdWU7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBfX2dldE1heFZhbHVlKG46IGJpZ2ludCk6IGJpZ2ludCB7XG4gIHJldHVybiBCaWdJbnQoRU5DT0RJTkcubGVuZ3RoKSAqKiBuIC0gMW47XG59XG5cbmNvbnN0IGlkR2VuZXJhdG9yID0gZGVmaW5lSWRHZW5lcmF0b3IoeyBsZW5ndGg6IDI0LCB0aW1lc3RhbXA6IGZhbHNlLCBzZXF1ZW50aWFsOiBmYWxzZSB9KTtcblxuZXhwb3J0IGNvbnN0IF9fY3JlYXRlSWQgPSBpZEdlbmVyYXRvci5jcmVhdGVJZDtcbiIsCiAgICAiaW1wb3J0IHsgX19jcmVhdGVJZCB9IGZyb20gXCIuL3V0aWxzL2NyZWF0ZS1pZC50c1wiO1xuXG5leHBvcnQgdHlwZSBNaWxraW9TdGFyZ2F0ZU9wdGlvbnMgPSB7XG4gICAgcG9ydDoge1xuICAgICAgICBwb3N0TWVzc2FnZTogKGRhdGE6IGFueSkgPT4gdm9pZDtcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBcIm1lc3NhZ2VcIiwgY2FsbGJhY2s6IChldmVudDogeyBkYXRhOiBhbnkgfSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBcIm1lc3NhZ2VcIiwgY2FsbGJhY2s6IChldmVudDogeyBkYXRhOiBhbnkgfSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgICB9O1xuICAgIGNhY2hlU3RvcmFnZT86IENhY2hlU3RvcmFnZTtcbiAgICBjYWNoZUVuY3J5cHRpb24/OiBib29sZWFuO1xuICAgIG9uTG9nPzogKGxldmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgTWl4aW48VCwgVT4gPSBVICYgT21pdDxULCBrZXlvZiBVPjtcblxuZXhwb3J0IHR5cGUgQ2FjaGVTdHJhdGVneSA9ICdvZmYnIHwgJ2ZhbGxiYWNrJyB8ICd0aHJvdHRsZSc7XG5cbmV4cG9ydCB0eXBlIFJldHJ5U3RyYXRlZ3kgPSBib29sZWFuIHwgbnVtYmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlU3RvcmFnZSB7XG4gICAgZ2V0OiAoa2V5OiBzdHJpbmcpID0+IFByb21pc2U8eyBkYXRhOiBhbnk7IHRpbWVzdGFtcDogbnVtYmVyIH0gfCBudWxsPjtcbiAgICBzZXQ6IChrZXk6IHN0cmluZywgZGF0YTogYW55KSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgdHlwZSBFeGVjdXRlT3B0aW9uczxUIGV4dGVuZHMgYW55ID0gYW55PiA9IHtcbiAgICBwYXJhbXM/OiBSZWNvcmQ8YW55LCBhbnk+O1xuICAgIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIGNhY2hlU3RyYXRlZ3k/OiBDYWNoZVN0cmF0ZWd5O1xuICAgIGNhY2hlVGhyb3R0bGVNcz86IG51bWJlcjtcbiAgICBvbkNhY2hlSGl0PzogKHJlc3VsdDogVCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcmV0cnlTdHJhdGVneT86IFJldHJ5U3RyYXRlZ3k7XG59O1xuXG5leHBvcnQgdHlwZSBFeGVjdXRlUmVzdWx0c09wdGlvbiA9IHsgZXhlY3V0ZUlkOiBzdHJpbmcgfTtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdG9yR2VuZXJpYzxUPiA9IFQgZXh0ZW5kcyBBc3luY0dlbmVyYXRvcjxpbmZlciBJPiA/IEkgOiBuZXZlcjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVN0YXJnYXRlV29ya2VyPEdlbmVyYXRlZCBleHRlbmRzIHsgcm91dGVTY2hlbWE6IGFueTsgcmVqZWN0Q29kZTogYW55IH0+KHN0YXJnYXRlT3B0aW9uczogTWlsa2lvU3RhcmdhdGVPcHRpb25zKSB7XG4gICAgY29uc3QgZXhlY3V0ZUlkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IGNvbm5lY3QgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gKGV2ZW50OiB7IGRhdGE6IGFueSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSAhPT0gXCJQT05HXCIpIHJldHVybjtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlcik7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICB9O1xuICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucG9zdE1lc3NhZ2UoXCJQSU5HXCIpO1xuICAgICAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHN0YXJnYXRlT3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKFwiUElOR1wiKSwgNDIpO1xuICAgIH0pO1xuICAgIGNvbnN0IGxvZ0hhbmRsZXIgPSAoZXZlbnQ6IHsgZGF0YTogYW55IH0pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBldmVudC5kYXRhICE9PSBcIm9iamVjdFwiIHx8ICFldmVudC5kYXRhLl9fbWlsa2lvX2xvZykgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IGxldmVsLCBhcmdzIH0gPSBldmVudC5kYXRhLl9fbWlsa2lvX2xvZztcbiAgICAgICAgY29uc3QgcGFyc2VkQXJncyA9IEpTT04ucGFyc2UoYXJncyk7XG4gICAgICAgIGlmIChzdGFyZ2F0ZU9wdGlvbnMub25Mb2cpIHtcbiAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5vbkxvZyhsZXZlbCwgcGFyc2VkQXJncyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb25zb2xlRm4gPSAoY29uc29sZSBhcyBhbnkpW2xldmVsXSA/PyBjb25zb2xlLmxvZztcbiAgICAgICAgICAgIGNvbnNvbGVGbihbLi4ucGFyc2VkQXJncy5zbGljZSgwLCA1KSwgLi4ucGFyc2VkQXJncy5zbGljZSg1KS5tYXAoKHY6IGFueSkgPT4gSlNPTi5zdHJpbmdpZnkodikpXSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGxvZ0hhbmRsZXIpO1xuXG4gICAgY29uc3Qgc3RhcmdhdGUgPSB7XG4gICAgICAgIGNsb3NlKCkge1xuICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbG9nSGFuZGxlcik7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGV4ZWN1dGVJZCBvZiBleGVjdXRlSWRzKSB7XG4gICAgICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucG9zdE1lc3NhZ2UoYENMT1NFX1NUUkVBTToke2V4ZWN1dGVJZH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKFwiQ0xPU0VEXCIpO1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyBleGVjdXRlPFBhdGggZXh0ZW5kcyBrZXlvZiBHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXT4oXG4gICAgICAgICAgICBwYXRoOiBQYXRoLFxuICAgICAgICAgICAgb3B0aW9uczogTWl4aW48XG4gICAgICAgICAgICAgICAgRXhlY3V0ZU9wdGlvbnM8R2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl1bUGF0aF1bXCJ0eXBlc1wiXVtcInJlc3VsdFwiXT4sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXM/OiBHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXVtQYXRoXVtcInR5cGVzXCJdW1wicGFyYW1zXCJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgID4sXG4gICAgICAgICk6IFByb21pc2U8XG4gICAgICAgICAgICBHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXVtQYXRoXVtcInR5cGVzXCJdW1wi8J+lm1wiXSBleHRlbmRzIGJvb2xlYW5cbiAgICAgICAgICAgID8gLy8gYWN0aW9uXG4gICAgICAgICAgICBbUGFydGlhbDxHZW5lcmF0ZWRbXCJyZWplY3RDb2RlXCJdPiwgbnVsbCwgRXhlY3V0ZVJlc3VsdHNPcHRpb25dIHwgW251bGwsIEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdW1BhdGhdW1widHlwZXNcIl1bXCJyZXN1bHRcIl0sIEV4ZWN1dGVSZXN1bHRzT3B0aW9uXVxuICAgICAgICAgICAgOiAvLyBzdHJlYW1cbiAgICAgICAgICAgIFtQYXJ0aWFsPEdlbmVyYXRlZFtcInJlamVjdENvZGVcIl0+LCBudWxsLCBFeGVjdXRlUmVzdWx0c09wdGlvbl0gfCBbbnVsbCwgQXN5bmNHZW5lcmF0b3I8W1BhcnRpYWw8R2VuZXJhdGVkW1wicmVqZWN0Q29kZVwiXT4sIG51bGxdIHwgW251bGwsIEdlbmVyYXRvckdlbmVyaWM8R2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl1bUGF0aF1bXCJ0eXBlc1wiXVtcInJlc3VsdFwiXT5dLCB1bmRlZmluZWQ+LCBFeGVjdXRlUmVzdWx0c09wdGlvbl1cbiAgICAgICAgPiB7XG4gICAgICAgICAgICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXN5bmMtcHJvbWlzZS1leGVjdXRvclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY29ubmVjdDtcblxuICAgICAgICAgICAgICAgIGlmICghKHBhdGggYXMgc3RyaW5nKS5lbmRzV2l0aChcIn5cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlU3RyYXRlZ3kgPSBvcHRpb25zPy5jYWNoZVN0cmF0ZWd5ID8/ICdvZmYnO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmV0cnlDb3VudCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5yZXRyeVN0cmF0ZWd5ID09PSB0cnVlIHx8IG9wdGlvbnM/LnJldHJ5U3RyYXRlZ3kgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5Q291bnQgPSAyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zPy5yZXRyeVN0cmF0ZWd5ID09PSAnbnVtYmVyJyAmJiBvcHRpb25zPy5yZXRyeVN0cmF0ZWd5ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlDb3VudCA9IG9wdGlvbnM/LnJldHJ5U3RyYXRlZ3k7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVUaHJvdHRsZU1zID0gb3B0aW9ucz8uY2FjaGVUaHJvdHRsZU1zID8/IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gZ2VuZXJhdGVDYWNoZUtleShwYXRoIGFzIHN0cmluZywgb3B0aW9ucz8ucGFyYW1zKTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgY2FjaGVTdG9yYWdlID0gc3RhcmdhdGVPcHRpb25zLmNhY2hlU3RvcmFnZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RyYXRlZ3kgIT09ICdvZmYnICYmICFjYWNoZVN0b3JhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU3RvcmFnZSA9IGF3YWl0IGNyZWF0ZURlZmF1bHRDYWNoZVN0b3JhZ2UoeyBlbmNyeXB0aW9uOiBzdGFyZ2F0ZU9wdGlvbnMuY2FjaGVFbmNyeXB0aW9uIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RyYXRlZ3kgIT09ICdvZmYnICYmIGNhY2hlU3RvcmFnZSAmJiBvcHRpb25zPy5vbkNhY2hlSGl0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZWQgPSBhd2FpdCBjYWNoZVN0b3JhZ2UuZ2V0KGNhY2hlS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBvcHRpb25zLm9uQ2FjaGVIaXQoY2FjaGVkLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgb25DYWNoZUhpdCBlcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdHJhdGVneSA9PT0gJ3Rocm90dGxlJyAmJiBjYWNoZVN0b3JhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IGNhY2hlU3RvcmFnZS5nZXQoY2FjaGVLZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLnRpbWVzdGFtcCA8IGNhY2hlVGhyb3R0bGVNcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKFtudWxsLCBjYWNoZWQuZGF0YSwgeyBleGVjdXRlSWQ6ICdjYWNoZWQnIH1dIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGVjdXRlUmVxdWVzdCA9ICgpOiBQcm9taXNlPFthbnksIGFueSwgRXhlY3V0ZVJlc3VsdHNPcHRpb25dPiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcVJlc29sdmUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXFFeGVjdXRlSWQgPSBfX2NyZWF0ZUlkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUlkcy5hZGQocmVxRXhlY3V0ZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVyID0gKGV2ZW50OiB7IGRhdGE6IGFueSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXZlbnQuZGF0YSAhPT0gXCJvYmplY3RcIikgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5leGVjdXRlSWQgIT09IHJlcUV4ZWN1dGVJZCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlSWRzLmRlbGV0ZShyZXFFeGVjdXRlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudC5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yOiBhbnkgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yW2V2ZW50LmRhdGEuZXJyb3IuY29kZV0gPSBldmVudC5kYXRhLmVycm9yLnJlamVjdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcVJlc29sdmUoW2Vycm9yLCBudWxsLCB7IGV4ZWN1dGVJZDogcmVxRXhlY3V0ZUlkIH1dKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcVJlc29sdmUoW251bGwsIGV2ZW50LmRhdGEuZGF0YSwgeyBleGVjdXRlSWQ6IHJlcUV4ZWN1dGVJZCB9XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUlkOiByZXFFeGVjdXRlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogb3B0aW9ucz8ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBvcHRpb25zPy5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IFtlcnJvciwgcmVzdWx0LCByZXN1bHRPcHRpb25dID0gYXdhaXQgZXhlY3V0ZVJlcXVlc3QoKTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCByZXRyeUluZGV4ID0gMDsgcmV0cnlJbmRleCA8IHJldHJ5Q291bnQgJiYgZXJyb3I7IHJldHJ5SW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldHJ5SW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgNTAwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3IsIHJlc3VsdCwgcmVzdWx0T3B0aW9uXSA9IGF3YWl0IGV4ZWN1dGVSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0cmF0ZWd5ICE9PSAnb2ZmJyAmJiBjYWNoZVN0b3JhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZWQgPSBhd2FpdCBjYWNoZVN0b3JhZ2UuZ2V0KGNhY2hlS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKFtudWxsLCBjYWNoZWQuZGF0YSwgeyBleGVjdXRlSWQ6ICdjYWNoZWQnIH1dIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoW2Vycm9yLCBudWxsLCByZXN1bHRPcHRpb25dKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0cmF0ZWd5ICE9PSAnb2ZmJyAmJiBjYWNoZVN0b3JhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGNhY2hlU3RvcmFnZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKFtudWxsLCByZXN1bHQsIHJlc3VsdE9wdGlvbl0gYXMgYW55KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBzdHJlYW1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhlY3V0ZUlkID0gX19jcmVhdGVJZCgpO1xuICAgICAgICAgICAgICAgICAgICBleGVjdXRlSWRzLmFkZChleGVjdXRlSWQpO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBmbG93OiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVGbG93PiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlciA9IChldmVudDogeyBkYXRhOiBhbnkgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBldmVudC5kYXRhICE9PSBcIm9iamVjdFwiKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5leGVjdXRlSWQgIT09IGV4ZWN1dGVJZCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmbG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvdyA9IGNyZWF0ZUZsb3coc3RhcmdhdGVPcHRpb25zLCBleGVjdXRlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yOiBhbnkgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JbZXZlbnQuZGF0YS5lcnJvci5jb2RlXSA9IGV2ZW50LmRhdGEuZXJyb3IucmVqZWN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKFtlcnJvciwgbnVsbCwgeyBleGVjdXRlSWQgfV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5zdWNjZXNzKSByZXNvbHZlKFtudWxsLCBmbG93LCB7IGV4ZWN1dGVJZCB9XSBhcyBhbnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5kb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlSWRzLmRlbGV0ZShleGVjdXRlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5zdWNjZXNzKSBmbG93LnJldHVybih1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGZsb3cudGhyb3coZXZlbnQuZGF0YS5kYXRhPy5hdCgwKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghZXZlbnQuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlSWRzLmRlbGV0ZShleGVjdXRlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG93LnRocm93KGV2ZW50LmRhdGEuZGF0YSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhLnN1Y2Nlc3MpIGZsb3cuZW1pdChldmVudC5kYXRhLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogb3B0aW9ucz8ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogb3B0aW9ucz8uaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgICR0eXBlczogdW5kZWZpbmVkIGFzIHVua25vd24gYXMge1xuICAgICAgICAgICAgZ2VuZXJhdGVkOiBHZW5lcmF0ZWQsXG4gICAgICAgICAgICBlcnJvcjogR2VuZXJhdGVkW1wicmVqZWN0Q29kZVwiXTtcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIFtQYXRoIGluIGtleW9mIEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdXTogR2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl1bUGF0aF1bXCJ0eXBlc1wiXVtcInBhcmFtc1wiXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3VsdHM6IHtcbiAgICAgICAgICAgICAgICBbUGF0aCBpbiBrZXlvZiBHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXV06IEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdW1BhdGhdW1widHlwZXNcIl1bXCLwn6WbXCJdIGV4dGVuZHMgYm9vbGVhblxuICAgICAgICAgICAgICAgID8gLy8gYWN0aW9uXG4gICAgICAgICAgICAgICAgR2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl1bUGF0aF1bXCJ0eXBlc1wiXVtcInJlc3VsdFwiXVxuICAgICAgICAgICAgICAgIDogLy8gc3RyZWFtXG4gICAgICAgICAgICAgICAgQXN5bmNHZW5lcmF0b3I8W1BhcnRpYWw8R2VuZXJhdGVkW1wicmVqZWN0Q29kZVwiXT4sIG51bGxdIHwgW251bGwsIEdlbmVyYXRvckdlbmVyaWM8R2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl1bUGF0aF1bXCJ0eXBlc1wiXVtcInJlc3VsdFwiXT5dLCB1bmRlZmluZWQ+XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gc3RhcmdhdGU7XG59XG5cbmV4cG9ydCB0eXBlIE1pbGtpb0Zsb3c8VCwgVFJldHVybiA9IGFueSwgVE5leHQgPSBhbnk+ID0ge1xuICAgIGVtaXQ6IChmbG93OiBUKSA9PiB2b2lkO1xuICAgIFtTeW1ib2wuYXN5bmNJdGVyYXRvcl06ICgpID0+IE1pbGtpb0Zsb3c8VD47XG4gICAgbmV4dCguLi5bdmFsdWVdOiBbXSB8IFtUTmV4dF0pOiBQcm9taXNlPEl0ZXJhdG9yUmVzdWx0PFQsIFRSZXR1cm4+PjtcbiAgICByZXR1cm4oZGF0YTogdW5kZWZpbmVkLCBkaXNhYmxlUG9zdENsb3NlTWVzc2FnZT86IHRydWUpOiBQcm9taXNlPEl0ZXJhdG9yUmVzdWx0PFQsIFRSZXR1cm4+PjtcbiAgICB0aHJvdyhlcnJvcjogYW55LCBkaXNhYmxlUG9zdENsb3NlTWVzc2FnZT86IHRydWUpOiBQcm9taXNlPEl0ZXJhdG9yUmVzdWx0PFQsIFRSZXR1cm4+Pjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGbG93PFQ+KHN0YXJnYXRlT3B0aW9uczogTWlsa2lvU3RhcmdhdGVPcHRpb25zLCBleGVjdXRlSWQ6IHN0cmluZyk6IE1pbGtpb0Zsb3c8VD4ge1xuICAgIGxldCBzdGF0dXM6IFwicGVuZGluZ1wiIHwgXCJyZXNvbHZlZFwiIHwgXCJyZWplY3RlZFwiID0gXCJwZW5kaW5nXCI7XG4gICAgY29uc3QgZmxvd3M6IEFycmF5PHtcbiAgICAgICAgYmxhbms6IGJvb2xlYW47XG4gICAgICAgIHByb21pc2U6IFByb21pc2U8VD47XG4gICAgICAgIHJlc29sdmU6ICh2YWx1ZT86IFQgfCBQcm9taXNlTGlrZTxUPikgPT4gdm9pZDtcbiAgICAgICAgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuICAgIH0+ID0gW107XG5cbiAgICBjb25zdCBpdGVyYXRvciA9IHtcbiAgICAgICAgZW1pdDogKGZsb3c6IFQpID0+IHtcbiAgICAgICAgICAgIGlmIChmbG93cy5hdCgtMSk/LmJsYW5rID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGZsb3dzLmF0KC0xKSE7XG4gICAgICAgICAgICAgICAgaXRlbS5ibGFuayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGl0ZW0ucmVzb2x2ZShmbG93KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVycyA9IHdpdGhSZXNvbHZlcnM8VD4oKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlcnMucmVzb2x2ZShmbG93KTtcbiAgICAgICAgICAgICAgICBmbG93cy5wdXNoKHsgLi4ucmVzb2x2ZXJzLCBibGFuazogZmFsc2UgfSBhcyBhbnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi4oe1xuICAgICAgICAgICAgYXN5bmMgbmV4dCgpOiBQcm9taXNlPEl0ZXJhdG9yUmVzdWx0PFQ+PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gXCJwZW5kaW5nXCIpIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBudWxsIH07XG4gICAgICAgICAgICAgICAgaWYgKGZsb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNvbHZlcnMgPSB3aXRoUmVzb2x2ZXJzPFQ+KCk7XG4gICAgICAgICAgICAgICAgICAgIGZsb3dzLnB1c2goeyAuLi5yZXNvbHZlcnMsIGJsYW5rOiB0cnVlIH0gYXMgYW55KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZmxvdyA9IGZsb3dzLmF0KDApITtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbG93LnByb21pc2U7XG4gICAgICAgICAgICAgICAgZmxvd3Muc2hpZnQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBkb25lOiBzdGF0dXMgIT09IFwicGVuZGluZ1wiLCB2YWx1ZTogcmVzdWx0IH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXN5bmMgcmV0dXJuKF86IHVuZGVmaW5lZCwgZGlzYWJsZVBvc3RDbG9zZU1lc3NhZ2U/OiB0cnVlKTogUHJvbWlzZTxJdGVyYXRvclJlc3VsdDx2b2lkPj4ge1xuICAgICAgICAgICAgICAgIHN0YXR1cyA9IFwicmVzb2x2ZWRcIjtcbiAgICAgICAgICAgICAgICBpZiAoIWRpc2FibGVQb3N0Q2xvc2VNZXNzYWdlKSBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5wb3N0TWVzc2FnZShgQ0xPU0VfU1RSRUFNOiR7ZXhlY3V0ZUlkfWApO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmxvdyBvZiBmbG93cykge1xuICAgICAgICAgICAgICAgICAgICBmbG93LmJsYW5rID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZsb3cucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbnVsbCB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFzeW5jIHRocm93KGVycjogYW55LCBkaXNhYmxlUG9zdENsb3NlTWVzc2FnZT86IHRydWUpOiBQcm9taXNlPEl0ZXJhdG9yUmVzdWx0PHZvaWQ+PiB7XG4gICAgICAgICAgICAgICAgc3RhdHVzID0gXCJyZWplY3RlZFwiO1xuICAgICAgICAgICAgICAgIGlmICghZGlzYWJsZVBvc3RDbG9zZU1lc3NhZ2UpIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKGBDTE9TRV9TVFJFQU06JHtleGVjdXRlSWR9YCk7XG4gICAgICAgICAgICAgICAgaWYgKGZsb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNvbHZlcnMgPSB3aXRoUmVzb2x2ZXJzPFQ+KCk7XG4gICAgICAgICAgICAgICAgICAgIGZsb3dzLnB1c2goeyAuLi5yZXNvbHZlcnMsIGJsYW5rOiB0cnVlIH0gYXMgYW55KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmbG93IG9mIGZsb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZsb3cuYmxhbmsgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZmxvdy5yZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG51bGwgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gc2F0aXNmaWVzIEFzeW5jSXRlcmF0b3I8dW5rbm93bj4pLFxuICAgICAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBpdGVyYXRvciBhcyBNaWxraW9GbG93PFQ+O1xufVxuXG5mdW5jdGlvbiB3aXRoUmVzb2x2ZXJzPFQgPSBhbnk+KCk6IFByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+IHtcbiAgICBsZXQgcmVzb2x2ZTogUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD5bXCJyZXNvbHZlXCJdO1xuICAgIGxldCByZWplY3Q6IFByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+W1wicmVqZWN0XCJdO1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxUPigocmVzLCByZWopID0+IHtcbiAgICAgICAgcmVzb2x2ZSA9IHJlcztcbiAgICAgICAgcmVqZWN0ID0gcmVqO1xuICAgIH0pO1xuICAgIHJldHVybiB7IHByb21pc2UsIHJlc29sdmU6IHJlc29sdmUhLCByZWplY3Q6IHJlamVjdCEgfTtcbn1cblxuY29uc3QgaXNvRGF0ZVBhdHRlcm4gPSAvXihcXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfSg/OlxcLlxcZHsxLDN9KT8pKFp8WystXVxcZHsyfTo/XFxkezJ9KT8kLztcblxuZXhwb3J0IGZ1bmN0aW9uIHJldml2ZUpTT05QYXJzZTxUPihqc29uOiBUKTogVCB7XG4gICAgaWYgKGpzb24gIT09IG51bGwgJiYgdHlwZW9mIGpzb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChqc29uIGluc3RhbmNlb2YgRGF0ZSB8fCAodHlwZW9mIChqc29uIGFzIGFueSkuZ2V0VGltZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgKGpzb24gYXMgYW55KS50b0lTT1N0cmluZyA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgICAgIHJldHVybiBqc29uO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGpzb24pKSB7XG4gICAgICAgICAgICByZXR1cm4ganNvbi5tYXAoKGl0ZW0pID0+IHJldml2ZUpTT05QYXJzZShpdGVtKSkgYXMgYW55O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhqc29uKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICBhY2Nba2V5IGFzIGtleW9mIFRdID0gcmV2aXZlSlNPTlBhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9IGFzIFQpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGpzb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0ganNvbi5tYXRjaChpc29EYXRlUGF0dGVybik7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZERhdGVTdHJpbmcgPSBtYXRjaFsyXSA/IGAke21hdGNoWzFdfSR7bWF0Y2hbMl0ucmVwbGFjZSgnOicsICcnKX1gIDogYCR7bWF0Y2hbMV19WmA7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUobm9ybWFsaXplZERhdGVTdHJpbmcpIGFzIGFueTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ganNvbjtcbn1cblxuY29uc3QgREJfTkFNRSA9ICdTdGFyZ2F0ZVdvcmtlcic7XG5jb25zdCBTVE9SRV9OQU1FID0gJ2NhY2hlcyc7XG5sZXQgZGJJbnN0YW5jZTogSURCRGF0YWJhc2UgfCBudWxsID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gb3BlbkRCKCk6IFByb21pc2U8SURCRGF0YWJhc2U+IHtcbiAgICBpZiAoZGJJbnN0YW5jZSkgcmV0dXJuIGRiSW5zdGFuY2U7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oREJfTkFNRSwgMSk7XG4gICAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHJlamVjdChyZXF1ZXN0LmVycm9yKTtcbiAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgICAgICBkYkluc3RhbmNlID0gcmVxdWVzdC5yZXN1bHQ7XG4gICAgICAgICAgICByZXNvbHZlKGRiSW5zdGFuY2UpO1xuICAgICAgICB9O1xuICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGIgPSAoZXZlbnQudGFyZ2V0IGFzIElEQk9wZW5EQlJlcXVlc3QpLnJlc3VsdDtcbiAgICAgICAgICAgIGlmICghZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyhTVE9SRV9OQU1FKSkge1xuICAgICAgICAgICAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKFNUT1JFX05BTUUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGVmYXVsdENhY2hlU3RvcmFnZShvcHRpb25zPzogeyBlbmNyeXB0aW9uPzogYm9vbGVhbjsgZW5jcnlwdGlvbktleT86IHN0cmluZyB9KTogUHJvbWlzZTxDYWNoZVN0b3JhZ2U+IHtcbiAgICBhd2FpdCBvcGVuREIoKTtcblxuICAgIGxldCBlbmNyeXB0aW9uS2V5OiBDcnlwdG9LZXkgfCBudWxsID0gbnVsbDtcbiAgICBjb25zdCBjb3VudGVyID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuXG4gICAgaWYgKG9wdGlvbnM/LmVuY3J5cHRpb24pIHtcbiAgICAgICAgY29uc3Qga2V5U3RyaW5nID0gb3B0aW9ucy5lbmNyeXB0aW9uS2V5ID8/IERCX05BTUU7XG4gICAgICAgIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShrZXlTdHJpbmcpLmZvckVhY2goKGJ5dGUsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChpIDwgMTYpIGNvdW50ZXJbaV0gPSBieXRlO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICAgIGNvbnN0IGtleURhdGEgPSBlbmNvZGVyLmVuY29kZShrZXlTdHJpbmcpO1xuICAgICAgICBjb25zdCBpbXBvcnRlZEtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCdyYXcnLCBrZXlEYXRhLCB7IG5hbWU6ICdQQktERjInIH0sIGZhbHNlLCBbJ2Rlcml2ZUtleSddKTtcblxuICAgICAgICBlbmNyeXB0aW9uS2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kZXJpdmVLZXkoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1BCS0RGMicsXG4gICAgICAgICAgICAgICAgc2FsdDogZW5jb2Rlci5lbmNvZGUoJ21pbGtpby1zdGFyZ2F0ZS13b3JrZXItY2FjaGUnKSxcbiAgICAgICAgICAgICAgICBpdGVyYXRpb25zOiAxMDAwMDAsXG4gICAgICAgICAgICAgICAgaGFzaDogJ1NIQS0yNTYnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltcG9ydGVkS2V5LFxuICAgICAgICAgICAgeyBuYW1lOiAnQUVTLUNUUicsIGxlbmd0aDogMjU2IH0sXG4gICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgIFsnZW5jcnlwdCcsICdkZWNyeXB0J10sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZW5jcnlwdERhdGEgPSBhc3luYyAoZGF0YTogYW55KTogUHJvbWlzZTxVaW50OEFycmF5PiA9PiB7XG4gICAgICAgIGlmICghZW5jcnlwdGlvbktleSkgcmV0dXJuIGRhdGE7XG5cbiAgICAgICAgY29uc3QganNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgICAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICAgIGNvbnN0IGRhdGFCeXRlcyA9IGVuY29kZXIuZW5jb2RlKGpzb25TdHJpbmcpO1xuXG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZEFycmF5QnVmZmVyID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5lbmNyeXB0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdBRVMtQ1RSJyxcbiAgICAgICAgICAgICAgICBjb3VudGVyOiBjb3VudGVyLFxuICAgICAgICAgICAgICAgIGxlbmd0aDogNjQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5jcnlwdGlvbktleSEsXG4gICAgICAgICAgICBkYXRhQnl0ZXMsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGVuY3J5cHRlZEFycmF5QnVmZmVyKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGVjcnlwdERhdGEgPSBhc3luYyAoZW5jcnlwdGVkRGF0YTogQXJyYXlCdWZmZXIgfCBVaW50OEFycmF5KTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICAgICAgaWYgKCFlbmNyeXB0aW9uS2V5IHx8ICFlbmNyeXB0ZWREYXRhKSByZXR1cm4gZW5jcnlwdGVkRGF0YTtcblxuICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGVuY3J5cHRlZERhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5ID8gKGVuY3J5cHRlZERhdGEuYnVmZmVyIGFzIEFycmF5QnVmZmVyKSA6IGVuY3J5cHRlZERhdGE7XG5cbiAgICAgICAgY29uc3QgZGVjcnlwdGVkQnl0ZXMgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRlY3J5cHQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0FFUy1DVFInLFxuICAgICAgICAgICAgICAgIGNvdW50ZXI6IGNvdW50ZXIsXG4gICAgICAgICAgICAgICAgbGVuZ3RoOiA2NCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmNyeXB0aW9uS2V5ISxcbiAgICAgICAgICAgIGFycmF5QnVmZmVyLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcbiAgICAgICAgY29uc3QganNvblN0cmluZyA9IGRlY29kZXIuZGVjb2RlKGRlY3J5cHRlZEJ5dGVzKTtcbiAgICAgICAgcmV0dXJuIHJldml2ZUpTT05QYXJzZShKU09OLnBhcnNlKGpzb25TdHJpbmcpKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYXN5bmMgZ2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTx7IGRhdGE6IGFueTsgdGltZXN0YW1wOiBudW1iZXIgfSB8IG51bGw+IHtcbiAgICAgICAgICAgIGNvbnN0IGRiID0gYXdhaXQgb3BlbkRCKCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oU1RPUkVfTkFNRSwgJ3JlYWRvbmx5Jyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShTVE9SRV9OQU1FKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gc3RvcmUuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHJlcXVlc3QuZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSByZXF1ZXN0LnJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucz8uZW5jcnlwdGlvbiAmJiAocmVzdWx0LmRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciB8fCByZXN1bHQuZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWNyeXB0ZWREYXRhID0gYXdhaXQgZGVjcnlwdERhdGEocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7IGRhdGE6IGRlY3J5cHRlZERhdGEsIHRpbWVzdGFtcDogcmVzdWx0LnRpbWVzdGFtcCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0ID8/IG51bGwpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgc2V0KGtleTogc3RyaW5nLCBkYXRhOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICAgIGNvbnN0IGRiID0gYXdhaXQgb3BlbkRCKCk7XG4gICAgICAgICAgICBsZXQgZGF0YVRvU3RvcmU6IGFueSA9IGRhdGE7XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zPy5lbmNyeXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgZGF0YVRvU3RvcmUgPSBhd2FpdCBlbmNyeXB0RGF0YShkYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFNUT1JFX05BTUUsICdyZWFkd3JpdGUnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKFNUT1JFX05BTUUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBzdG9yZS5wdXQoeyBkYXRhOiBkYXRhVG9TdG9yZSwgdGltZXN0YW1wOiBEYXRlLm5vdygpIH0sIGtleSk7XG4gICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHJlcXVlc3QuZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVDYWNoZUtleShwYXRoOiBzdHJpbmcsIHBhcmFtczogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7cGF0aH06JHtKU09OLnN0cmluZ2lmeShwYXJhbXMgPz8ge30pfWA7XG59XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiO0FBTUEsU0FBUyxpQkFBaUIsQ0FBQyxTQUE2QjtBQUFBLEVBQ3RELElBQUksQ0FBQyxRQUFRO0FBQUEsSUFBUSxRQUFRLFNBQVM7QUFBQSxFQUN0QyxJQUFJLFFBQVEsU0FBUztBQUFBLElBQUcsTUFBTSxJQUFJLE1BQU0sZ0JBQWdCO0FBQUEsRUFDeEQsSUFBSSxRQUFRLFNBQVM7QUFBQSxJQUFJLE1BQU0sSUFBSSxNQUFNLGdCQUFnQjtBQUFBLEVBQ3pELElBQUksUUFBUSxhQUFhLFFBQVEsU0FBUztBQUFBLElBQUcsTUFBTSxJQUFJLE1BQU0sZ0JBQWdCO0FBQUEsRUFDN0UsSUFBSSxXQUFXO0FBQUEsRUFDZixJQUFJLGNBQWM7QUFBQSxFQUNsQixPQUFPO0FBQUEsSUFDTCxRQUFRLEdBQUc7QUFBQSxNQUNULElBQUksYUFBYSxRQUFRO0FBQUEsTUFDekIsTUFBTSxNQUFNLEtBQUssSUFBSTtBQUFBLE1BQ3JCLElBQUksS0FBSztBQUFBLE1BQ1QsSUFBSSxRQUFRLFdBQVc7QUFBQSxRQUNyQixjQUFjO0FBQUEsUUFDZCxLQUFLLEdBQUcsS0FBSyxpQkFBaUIsT0FBTyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsR0FBRztBQUFBLE1BQzVEO0FBQUEsTUFDQSxJQUFJLFFBQVEsY0FBYyxhQUFhLEtBQUs7QUFBQSxRQUMxQyxLQUFLLEdBQUcsS0FBSyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsU0FBUyxHQUFHLEdBQUc7QUFBQSxNQUM5RCxFQUFPO0FBQUEs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QUEsVUFFQSxRQUFRLFVBQVUsSUFBSTtBQUFBO0FBQUEsT0FFN0I7QUFBQTtBQUFBLFNBRUMsSUFBRyxDQUFDLEtBQWEsTUFBMEI7QUFBQSxNQUM3QyxNQUFNLEtBQUssTUFBTSxPQUFPO0FBQUEsTUFDeEIsSUFBSSxjQUFtQjtBQUFBLE1BRXZCLElBQUksU0FBUyxZQUFZO0FBQUEsUUFDckIsY0FBYyxNQUFNLFlBQVksSUFBSTtBQUFBLE1BQ3hDO0FBQUEsTUFFQSxPQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsV0FBVztBQUFBLFFBQ3BDLE1BQU0sY0FBYyxHQUFHLFlBQVksWUFBWSxXQUFXO0FBQUEsUUFDMUQsTUFBTSxRQUFRLFlBQVksWUFBWSxVQUFVO0FBQUEsUUFDaEQsTUFBTSxVQUFVLE1BQU0sSUFBSSxFQUFFLE1BQU0sYUFBYSxXQUFXLEtBQUssSUFBSSxFQUFFLEdBQUcsR0FBRztBQUFBLFFBQzNFLFFBQVEsVUFBVSxNQUFNLE9BQU8sUUFBUSxLQUFLO0FBQUEsUUFDNUMsUUFBUSxZQUFZLE1BQU0sUUFBUTtBQUFBLE9BQ3JDO0FBQUE7QUFBQSxFQUVUO0FBQUE7QUFHSixTQUFTLGdCQUFnQixDQUFDLE1BQWMsUUFBcUI7QUFBQSxFQUN6RCxPQUFPLEdBQUcsUUFBUSxLQUFLLFVBQVUsVUFBVSxDQUFDLENBQUM7QUFBQTsiLAogICJkZWJ1Z0lkIjogIkUyRENGMDJBOERDOUE3MEQ2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
468
+ //# debugId=68FFF3706621862264756E2164756E21
469
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vdXRpbHMvY3JlYXRlLWlkLnRzIiwgIi4uL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgInR5cGUgSWRHZW5lcmF0b3JPcHRpb25zID0ge1xuICBsZW5ndGg/OiBudW1iZXI7XG4gIHRpbWVzdGFtcDogYm9vbGVhbjtcbiAgc2VxdWVudGlhbDogYm9vbGVhbjtcbn07XG5cbmZ1bmN0aW9uIGRlZmluZUlkR2VuZXJhdG9yKG9wdGlvbnM6IElkR2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMubGVuZ3RoKSBvcHRpb25zLmxlbmd0aCA9IDI0O1xuICBpZiAob3B0aW9ucy5sZW5ndGggPCAxKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxlbmd0aFwiKTtcbiAgaWYgKG9wdGlvbnMubGVuZ3RoID4gNjEpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbGVuZ3RoXCIpO1xuICBpZiAob3B0aW9ucy50aW1lc3RhbXAgJiYgb3B0aW9ucy5sZW5ndGggPCA5KSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxlbmd0aFwiKTtcbiAgbGV0IGxhc3RUaW1lID0gMDtcbiAgbGV0IGxhc3REZWNpbWFsID0gMG47XG4gIHJldHVybiB7XG4gICAgY3JlYXRlSWQoKSB7XG4gICAgICBsZXQgcmFuZExlbmd0aCA9IG9wdGlvbnMubGVuZ3RoITtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBsZXQgaWQgPSBcIlwiO1xuICAgICAgaWYgKG9wdGlvbnMudGltZXN0YW1wKSB7XG4gICAgICAgIHJhbmRMZW5ndGggLT0gODtcbiAgICAgICAgaWQgPSBgJHtpZH0ke19fYmlnSW50VG9TdHJpbmcoQmlnSW50KG5vdykpLnBhZFN0YXJ0KDgsIFwiMFwiKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuc2VxdWVudGlhbCAmJiBsYXN0VGltZSA9PT0gbm93KSB7XG4gICAgICAgIGlkID0gYCR7aWR9JHtfX2JpZ0ludFRvU3RyaW5nKCsrbGFzdERlY2ltYWwpLnBhZFN0YXJ0KDEsIFwiMFwiKX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdFRpbWUgPSBub3c7XG4gICAgICAgIGNvbnN0IG1pbiA9IDBuO1xuICAgICAgICBjb25zdCBtYXggPSBfX2dldE1heFZhbHVlKEJpZ0ludChyYW5kTGVuZ3RoKSk7XG4gICAgICAgIGxhc3REZWNpbWFsID0gX19zZWN1cmVSYW5kb21CaWdJbnQobWluLCBtYXgpO1xuICAgICAgICBpZCA9IGAke2lkfSR7X19iaWdJbnRUb1N0cmluZyhsYXN0RGVjaW1hbCkucGFkU3RhcnQocmFuZExlbmd0aCwgXCIwXCIpfWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSxcbiAgICBnZXRJZFRpbWVzdGFtcChpZDogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy50aW1lc3RhbXAgPyBOdW1iZXIoX19zdHJpbmdUb0JpZ0ludChpZC5zbGljZSgwLCA4KS5yZXBsYWNlQWxsKFwiMFwiLCBcIlwiKSkpIDogMDtcbiAgICB9LFxuICB9O1xufVxuXG5jb25zdCBFTkNPRElORyA9IFwiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcblxuZnVuY3Rpb24gX19zZWN1cmVSYW5kb21CaWdJbnQobWluOiBiaWdpbnQsIG1heDogYmlnaW50KTogYmlnaW50IHtcbiAgaWYgKG1pbiA+PSBtYXgpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VcIik7XG5cbiAgY29uc3QgcmFuZ2UgPSBtYXggLSBtaW4gKyAxbjtcbiAgY29uc3QgYnl0ZUNvdW50ID0gTWF0aC5jZWlsKE51bWJlcihCaWdJbnQocmFuZ2UudG9TdHJpbmcoMikubGVuZ3RoKSkgLyA4KTtcbiAgY29uc3QgZW50cm9weUJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZUNvdW50KTtcblxuICBsZXQgcmFuZG9tVmFsdWU6IGJpZ2ludDtcbiAgZG8ge1xuICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoZW50cm9weUJ5dGVzKTtcbiAgICByYW5kb21WYWx1ZSA9XG4gICAgICBCaWdJbnQoXG4gICAgICAgIGAweCR7QXJyYXkuZnJvbShlbnRyb3B5Qnl0ZXMpXG4gICAgICAgICAgLm1hcCgoYikgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpKVxuICAgICAgICAgIC5qb2luKFwiXCIpfWAsXG4gICAgICApICUgcmFuZ2U7XG4gIH0gd2hpbGUgKHJhbmRvbVZhbHVlIDwgMG4pO1xuXG4gIHJldHVybiBtaW4gKyByYW5kb21WYWx1ZTtcbn1cblxuZnVuY3Rpb24gX19iaWdJbnRUb1N0cmluZyh2YWx1ZTogYmlnaW50KTogc3RyaW5nIHtcbiAgY29uc3QgYmFzZSA9IEJpZ0ludChFTkNPRElORy5sZW5ndGgpO1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgbGV0IGN1cnJlbnQgPSB2YWx1ZTtcblxuICBpZiAoY3VycmVudCA9PT0gMG4pIHJldHVybiBFTkNPRElOR1swXTtcblxuICB3aGlsZSAoY3VycmVudCA+IDBuKSB7XG4gICAgY29uc3QgcmVtYWluZGVyID0gY3VycmVudCAlIGJhc2U7XG4gICAgcmVzdWx0ID0gRU5DT0RJTkdbTnVtYmVyKHJlbWFpbmRlcildICsgcmVzdWx0O1xuICAgIGN1cnJlbnQgPSBjdXJyZW50IC8gYmFzZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBfX3N0cmluZ1RvQmlnSW50KHN0cjogc3RyaW5nKTogYmlnaW50IHtcbiAgY29uc3QgY2hhck1hcDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IEVOQ09ESU5HLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhck1hcFtFTkNPRElOR1tpXV0gPSBpO1xuICB9XG5cbiAgY29uc3QgYmFzZSA9IEJpZ0ludChFTkNPRElORy5sZW5ndGgpO1xuICBsZXQgcmVzdWx0ID0gMG47XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGFyID0gc3RyW2ldO1xuICAgIGlmICghKGNoYXIgaW4gY2hhck1hcCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjaGFyYWN0ZXIgJyR7Y2hhcn0nIGluIGlucHV0IHN0cmluZ2ApO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IEJpZ0ludChjaGFyTWFwW2NoYXJdKTtcbiAgICByZXN1bHQgPSByZXN1bHQgKiBiYXNlICsgdmFsdWU7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBfX2dldE1heFZhbHVlKG46IGJpZ2ludCk6IGJpZ2ludCB7XG4gIHJldHVybiBCaWdJbnQoRU5DT0RJTkcubGVuZ3RoKSAqKiBuIC0gMW47XG59XG5cbmNvbnN0IGlkR2VuZXJhdG9yID0gZGVmaW5lSWRHZW5lcmF0b3IoeyBsZW5ndGg6IDI0LCB0aW1lc3RhbXA6IGZhbHNlLCBzZXF1ZW50aWFsOiBmYWxzZSB9KTtcblxuZXhwb3J0IGNvbnN0IF9fY3JlYXRlSWQgPSBpZEdlbmVyYXRvci5jcmVhdGVJZDtcbiIsCiAgICAiaW1wb3J0IHsgX19jcmVhdGVJZCB9IGZyb20gXCIuL3V0aWxzL2NyZWF0ZS1pZC50c1wiO1xuXG5leHBvcnQgdHlwZSBNaWxraW9TdGFyZ2F0ZU9wdGlvbnMgPSB7XG4gICAgcG9ydDoge1xuICAgICAgICBwb3N0TWVzc2FnZTogKGRhdGE6IGFueSkgPT4gdm9pZDtcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBcIm1lc3NhZ2VcIiwgY2FsbGJhY2s6IChldmVudDogeyBkYXRhOiBhbnkgfSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBcIm1lc3NhZ2VcIiwgY2FsbGJhY2s6IChldmVudDogeyBkYXRhOiBhbnkgfSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgICB9O1xuICAgIGNhY2hlU3RvcmFnZT86IENhY2hlU3RvcmFnZTtcbiAgICBjYWNoZUVuY3J5cHRpb24/OiBib29sZWFuO1xuICAgIG9uTG9nPzogKGxldmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgTWl4aW48VCwgVT4gPSBVICYgT21pdDxULCBrZXlvZiBVPjtcblxuZXhwb3J0IHR5cGUgQ2FjaGVTdHJhdGVneSA9ICdvZmYnIHwgJ2ZhbGxiYWNrJyB8ICd0aHJvdHRsZSc7XG5cbmV4cG9ydCB0eXBlIFJldHJ5U3RyYXRlZ3kgPSBib29sZWFuIHwgbnVtYmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlU3RvcmFnZSB7XG4gICAgZ2V0OiAoa2V5OiBzdHJpbmcpID0+IFByb21pc2U8eyBkYXRhOiBhbnk7IHRpbWVzdGFtcDogbnVtYmVyIH0gfCBudWxsPjtcbiAgICBzZXQ6IChrZXk6IHN0cmluZywgZGF0YTogYW55KSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgdHlwZSBFeGVjdXRlT3B0aW9uczxUIGV4dGVuZHMgYW55ID0gYW55PiA9IHtcbiAgICBwYXJhbXM/OiBSZWNvcmQ8YW55LCBhbnk+O1xuICAgIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIGNhY2hlU3RyYXRlZ3k/OiBDYWNoZVN0cmF0ZWd5O1xuICAgIGNhY2hlVGhyb3R0bGVNcz86IG51bWJlcjtcbiAgICBvbkNhY2hlSGl0PzogKHJlc3VsdDogVCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcmV0cnlTdHJhdGVneT86IFJldHJ5U3RyYXRlZ3k7XG59O1xuXG5leHBvcnQgdHlwZSBFeGVjdXRlUmVzdWx0c09wdGlvbiA9IHsgZXhlY3V0ZUlkOiBzdHJpbmcgfTtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdG9yR2VuZXJpYzxUPiA9IFQgZXh0ZW5kcyBBc3luY0dlbmVyYXRvcjxpbmZlciBJPiA/IEkgOiBuZXZlcjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVN0YXJnYXRlV29ya2VyPEdlbmVyYXRlZCBleHRlbmRzIHsgcm91dGVTY2hlbWE6IGFueTsgcmVqZWN0Q29kZTogYW55IH0+KHN0YXJnYXRlT3B0aW9uczogTWlsa2lvU3RhcmdhdGVPcHRpb25zKSB7XG4gICAgY29uc3QgZXhlY3V0ZUlkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IGNvbm5lY3QgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gKGV2ZW50OiB7IGRhdGE6IGFueSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSAhPT0gXCJQT05HXCIpIHJldHVybjtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlcik7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICB9O1xuICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucG9zdE1lc3NhZ2UoXCJQSU5HXCIpO1xuICAgICAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHN0YXJnYXRlT3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKFwiUElOR1wiKSwgNDIpO1xuICAgIH0pO1xuICAgIGNvbnN0IGxvZ0hhbmRsZXIgPSAoZXZlbnQ6IHsgZGF0YTogYW55IH0pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBldmVudC5kYXRhICE9PSBcIm9iamVjdFwiIHx8ICFldmVudC5kYXRhLl9fbWlsa2lvX2xvZykgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IGxldmVsLCBhcmdzIH0gPSBldmVudC5kYXRhLl9fbWlsa2lvX2xvZztcbiAgICAgICAgY29uc3QgcGFyc2VkQXJncyA9IEpTT04ucGFyc2UoYXJncyk7XG4gICAgICAgIGlmIChzdGFyZ2F0ZU9wdGlvbnMub25Mb2cpIHtcbiAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5vbkxvZyhsZXZlbCwgcGFyc2VkQXJncyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb25zb2xlRm4gPSAoY29uc29sZSBhcyBhbnkpW2xldmVsXSA/PyBjb25zb2xlLmxvZztcbiAgICAgICAgICAgIGNvbnNvbGVGbiguLi5wYXJzZWRBcmdzLnNsaWNlKDAsIDUpLCAuLi5wYXJzZWRBcmdzLnNsaWNlKDUpLm1hcCgodjogYW55KSA9PiBKU09OLnN0cmluZ2lmeSh2KSkpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBsb2dIYW5kbGVyKTtcblxuICAgIGNvbnN0IHN0YXJnYXRlID0ge1xuICAgICAgICBjbG9zZSgpIHtcbiAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGxvZ0hhbmRsZXIpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBleGVjdXRlSWQgb2YgZXhlY3V0ZUlkcykge1xuICAgICAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKGBDTE9TRV9TVFJFQU06JHtleGVjdXRlSWR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5wb3N0TWVzc2FnZShcIkNMT1NFRFwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgZXhlY3V0ZTxQYXRoIGV4dGVuZHMga2V5b2YgR2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl0+KFxuICAgICAgICAgICAgcGF0aDogUGF0aCxcbiAgICAgICAgICAgIG9wdGlvbnM6IE1peGluPFxuICAgICAgICAgICAgICAgIEV4ZWN1dGVPcHRpb25zPEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdW1BhdGhdW1widHlwZXNcIl1bXCJyZXN1bHRcIl0+LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zPzogR2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl1bUGF0aF1bXCJ0eXBlc1wiXVtcInBhcmFtc1wiXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+LFxuICAgICAgICApOiBQcm9taXNlPFxuICAgICAgICAgICAgR2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl1bUGF0aF1bXCJ0eXBlc1wiXVtcIvCfpZtcIl0gZXh0ZW5kcyBib29sZWFuXG4gICAgICAgICAgICA/IC8vIGFjdGlvblxuICAgICAgICAgICAgW1BhcnRpYWw8R2VuZXJhdGVkW1wicmVqZWN0Q29kZVwiXT4sIG51bGwsIEV4ZWN1dGVSZXN1bHRzT3B0aW9uXSB8IFtudWxsLCBHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXVtQYXRoXVtcInR5cGVzXCJdW1wicmVzdWx0XCJdLCBFeGVjdXRlUmVzdWx0c09wdGlvbl1cbiAgICAgICAgICAgIDogLy8gc3RyZWFtXG4gICAgICAgICAgICBbUGFydGlhbDxHZW5lcmF0ZWRbXCJyZWplY3RDb2RlXCJdPiwgbnVsbCwgRXhlY3V0ZVJlc3VsdHNPcHRpb25dIHwgW251bGwsIEFzeW5jR2VuZXJhdG9yPFtQYXJ0aWFsPEdlbmVyYXRlZFtcInJlamVjdENvZGVcIl0+LCBudWxsXSB8IFtudWxsLCBHZW5lcmF0b3JHZW5lcmljPEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdW1BhdGhdW1widHlwZXNcIl1bXCJyZXN1bHRcIl0+XSwgdW5kZWZpbmVkPiwgRXhlY3V0ZVJlc3VsdHNPcHRpb25dXG4gICAgICAgID4ge1xuICAgICAgICAgICAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWFzeW5jLXByb21pc2UtZXhlY3V0b3JcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Q7XG5cbiAgICAgICAgICAgICAgICBpZiAoIShwYXRoIGFzIHN0cmluZykuZW5kc1dpdGgoXCJ+XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZVN0cmF0ZWd5ID0gb3B0aW9ucz8uY2FjaGVTdHJhdGVneSA/PyAnb2ZmJztcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJldHJ5Q291bnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucz8ucmV0cnlTdHJhdGVneSA9PT0gdHJ1ZSB8fCBvcHRpb25zPy5yZXRyeVN0cmF0ZWd5ID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRyeUNvdW50ID0gMjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucz8ucmV0cnlTdHJhdGVneSA9PT0gJ251bWJlcicgJiYgb3B0aW9ucz8ucmV0cnlTdHJhdGVneSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5Q291bnQgPSBvcHRpb25zPy5yZXRyeVN0cmF0ZWd5O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlVGhyb3R0bGVNcyA9IG9wdGlvbnM/LmNhY2hlVGhyb3R0bGVNcyA/PyAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUtleSA9IGdlbmVyYXRlQ2FjaGVLZXkocGF0aCBhcyBzdHJpbmcsIG9wdGlvbnM/LnBhcmFtcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGNhY2hlU3RvcmFnZSA9IHN0YXJnYXRlT3B0aW9ucy5jYWNoZVN0b3JhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0cmF0ZWd5ICE9PSAnb2ZmJyAmJiAhY2FjaGVTdG9yYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVN0b3JhZ2UgPSBhd2FpdCBjcmVhdGVEZWZhdWx0Q2FjaGVTdG9yYWdlKHsgZW5jcnlwdGlvbjogc3RhcmdhdGVPcHRpb25zLmNhY2hlRW5jcnlwdGlvbiB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0cmF0ZWd5ICE9PSAnb2ZmJyAmJiBjYWNoZVN0b3JhZ2UgJiYgb3B0aW9ucz8ub25DYWNoZUhpdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gYXdhaXQgY2FjaGVTdG9yYWdlLmdldChjYWNoZUtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgb3B0aW9ucy5vbkNhY2hlSGl0KGNhY2hlZC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIG9uQ2FjaGVIaXQgZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RyYXRlZ3kgPT09ICd0aHJvdHRsZScgJiYgY2FjaGVTdG9yYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZWQgPSBhd2FpdCBjYWNoZVN0b3JhZ2UuZ2V0KGNhY2hlS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZWQgJiYgRGF0ZS5ub3coKSAtIGNhY2hlZC50aW1lc3RhbXAgPCBjYWNoZVRocm90dGxlTXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShbbnVsbCwgY2FjaGVkLmRhdGEsIHsgZXhlY3V0ZUlkOiAnY2FjaGVkJyB9XSBhcyBhbnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhlY3V0ZVJlcXVlc3QgPSAoKTogUHJvbWlzZTxbYW55LCBhbnksIEV4ZWN1dGVSZXN1bHRzT3B0aW9uXT4gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXFSZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxRXhlY3V0ZUlkID0gX19jcmVhdGVJZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVJZHMuYWRkKHJlcUV4ZWN1dGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlciA9IChldmVudDogeyBkYXRhOiBhbnkgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGV2ZW50LmRhdGEgIT09IFwib2JqZWN0XCIpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuZXhlY3V0ZUlkICE9PSByZXFFeGVjdXRlSWQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUlkcy5kZWxldGUocmVxRXhlY3V0ZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcjogYW55ID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcltldmVudC5kYXRhLmVycm9yLmNvZGVdID0gZXZlbnQuZGF0YS5lcnJvci5yZWplY3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFSZXNvbHZlKFtlcnJvciwgbnVsbCwgeyBleGVjdXRlSWQ6IHJlcUV4ZWN1dGVJZCB9XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFSZXNvbHZlKFtudWxsLCBldmVudC5kYXRhLmRhdGEsIHsgZXhlY3V0ZUlkOiByZXFFeGVjdXRlSWQgfV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVJZDogcmVxRXhlY3V0ZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IGRlZXBDbG9uZUlmVnVlUmVhY3RpdmUob3B0aW9ucz8ucGFyYW1zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogb3B0aW9ucz8uaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBbZXJyb3IsIHJlc3VsdCwgcmVzdWx0T3B0aW9uXSA9IGF3YWl0IGV4ZWN1dGVSZXF1ZXN0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgcmV0cnlJbmRleCA9IDA7IHJldHJ5SW5kZXggPCByZXRyeUNvdW50ICYmIGVycm9yOyByZXRyeUluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXRyeUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDUwMCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9yLCByZXN1bHQsIHJlc3VsdE9wdGlvbl0gPSBhd2FpdCBleGVjdXRlUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdHJhdGVneSAhPT0gJ29mZicgJiYgY2FjaGVTdG9yYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gYXdhaXQgY2FjaGVTdG9yYWdlLmdldChjYWNoZUtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShbbnVsbCwgY2FjaGVkLmRhdGEsIHsgZXhlY3V0ZUlkOiAnY2FjaGVkJyB9XSBhcyBhbnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKFtlcnJvciwgbnVsbCwgcmVzdWx0T3B0aW9uXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdHJhdGVneSAhPT0gJ29mZicgJiYgY2FjaGVTdG9yYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBjYWNoZVN0b3JhZ2Uuc2V0KGNhY2hlS2V5LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbbnVsbCwgcmVzdWx0LCByZXN1bHRPcHRpb25dIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RyZWFtXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4ZWN1dGVJZCA9IF9fY3JlYXRlSWQoKTtcbiAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUlkcy5hZGQoZXhlY3V0ZUlkKTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgZmxvdzogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlRmxvdz4gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQ6IHsgZGF0YTogYW55IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXZlbnQuZGF0YSAhPT0gXCJvYmplY3RcIikgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuZXhlY3V0ZUlkICE9PSBleGVjdXRlSWQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmxvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb3cgPSBjcmVhdGVGbG93KHN0YXJnYXRlT3B0aW9ucywgZXhlY3V0ZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50LmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcjogYW55ID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yW2V2ZW50LmRhdGEuZXJyb3IuY29kZV0gPSBldmVudC5kYXRhLmVycm9yLnJlamVjdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbZXJyb3IsIG51bGwsIHsgZXhlY3V0ZUlkIH1dKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuc3VjY2VzcykgcmVzb2x2ZShbbnVsbCwgZmxvdywgeyBleGVjdXRlSWQgfV0gYXMgYW55KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUlkcy5kZWxldGUoZXhlY3V0ZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuc3VjY2VzcykgZmxvdy5yZXR1cm4odW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBmbG93LnRocm93KGV2ZW50LmRhdGEuZGF0YT8uYXQoMCksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWV2ZW50LmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUlkcy5kZWxldGUoZXhlY3V0ZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvdy50aHJvdyhldmVudC5kYXRhLmRhdGEsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YS5zdWNjZXNzKSBmbG93LmVtaXQoZXZlbnQuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IGRlZXBDbG9uZUlmVnVlUmVhY3RpdmUob3B0aW9ucz8ucGFyYW1zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG9wdGlvbnM/LmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAkdHlwZXM6IHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgICAgIGdlbmVyYXRlZDogR2VuZXJhdGVkLFxuICAgICAgICAgICAgZXJyb3I6IEdlbmVyYXRlZFtcInJlamVjdENvZGVcIl07XG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBbUGF0aCBpbiBrZXlvZiBHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXV06IEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdW1BhdGhdW1widHlwZXNcIl1bXCJwYXJhbXNcIl1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXN1bHRzOiB7XG4gICAgICAgICAgICAgICAgW1BhdGggaW4ga2V5b2YgR2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl1dOiBHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXVtQYXRoXVtcInR5cGVzXCJdW1wi8J+lm1wiXSBleHRlbmRzIGJvb2xlYW5cbiAgICAgICAgICAgICAgICA/IC8vIGFjdGlvblxuICAgICAgICAgICAgICAgIEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdW1BhdGhdW1widHlwZXNcIl1bXCJyZXN1bHRcIl1cbiAgICAgICAgICAgICAgICA6IC8vIHN0cmVhbVxuICAgICAgICAgICAgICAgIEFzeW5jR2VuZXJhdG9yPFtQYXJ0aWFsPEdlbmVyYXRlZFtcInJlamVjdENvZGVcIl0+LCBudWxsXSB8IFtudWxsLCBHZW5lcmF0b3JHZW5lcmljPEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdW1BhdGhdW1widHlwZXNcIl1bXCJyZXN1bHRcIl0+XSwgdW5kZWZpbmVkPlxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHN0YXJnYXRlO1xufVxuXG5leHBvcnQgdHlwZSBNaWxraW9GbG93PFQsIFRSZXR1cm4gPSBhbnksIFROZXh0ID0gYW55PiA9IHtcbiAgICBlbWl0OiAoZmxvdzogVCkgPT4gdm9pZDtcbiAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdOiAoKSA9PiBNaWxraW9GbG93PFQ+O1xuICAgIG5leHQoLi4uW3ZhbHVlXTogW10gfCBbVE5leHRdKTogUHJvbWlzZTxJdGVyYXRvclJlc3VsdDxULCBUUmV0dXJuPj47XG4gICAgcmV0dXJuKGRhdGE6IHVuZGVmaW5lZCwgZGlzYWJsZVBvc3RDbG9zZU1lc3NhZ2U/OiB0cnVlKTogUHJvbWlzZTxJdGVyYXRvclJlc3VsdDxULCBUUmV0dXJuPj47XG4gICAgdGhyb3coZXJyb3I6IGFueSwgZGlzYWJsZVBvc3RDbG9zZU1lc3NhZ2U/OiB0cnVlKTogUHJvbWlzZTxJdGVyYXRvclJlc3VsdDxULCBUUmV0dXJuPj47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmxvdzxUPihzdGFyZ2F0ZU9wdGlvbnM6IE1pbGtpb1N0YXJnYXRlT3B0aW9ucywgZXhlY3V0ZUlkOiBzdHJpbmcpOiBNaWxraW9GbG93PFQ+IHtcbiAgICBsZXQgc3RhdHVzOiBcInBlbmRpbmdcIiB8IFwicmVzb2x2ZWRcIiB8IFwicmVqZWN0ZWRcIiA9IFwicGVuZGluZ1wiO1xuICAgIGNvbnN0IGZsb3dzOiBBcnJheTx7XG4gICAgICAgIGJsYW5rOiBib29sZWFuO1xuICAgICAgICBwcm9taXNlOiBQcm9taXNlPFQ+O1xuICAgICAgICByZXNvbHZlOiAodmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQ7XG4gICAgICAgIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcbiAgICB9PiA9IFtdO1xuXG4gICAgY29uc3QgaXRlcmF0b3IgPSB7XG4gICAgICAgIGVtaXQ6IChmbG93OiBUKSA9PiB7XG4gICAgICAgICAgICBpZiAoZmxvd3MuYXQoLTEpPy5ibGFuayA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBmbG93cy5hdCgtMSkhO1xuICAgICAgICAgICAgICAgIGl0ZW0uYmxhbmsgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpdGVtLnJlc29sdmUoZmxvdyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNvbHZlcnMgPSB3aXRoUmVzb2x2ZXJzPFQ+KCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZXJzLnJlc29sdmUoZmxvdyk7XG4gICAgICAgICAgICAgICAgZmxvd3MucHVzaCh7IC4uLnJlc29sdmVycywgYmxhbms6IGZhbHNlIH0gYXMgYW55KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uKHtcbiAgICAgICAgICAgIGFzeW5jIG5leHQoKTogUHJvbWlzZTxJdGVyYXRvclJlc3VsdDxUPj4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09IFwicGVuZGluZ1wiKSByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbnVsbCB9O1xuICAgICAgICAgICAgICAgIGlmIChmbG93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZXJzID0gd2l0aFJlc29sdmVyczxUPigpO1xuICAgICAgICAgICAgICAgICAgICBmbG93cy5wdXNoKHsgLi4ucmVzb2x2ZXJzLCBibGFuazogdHJ1ZSB9IGFzIGFueSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGZsb3cgPSBmbG93cy5hdCgwKSE7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmxvdy5wcm9taXNlO1xuICAgICAgICAgICAgICAgIGZsb3dzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogc3RhdHVzICE9PSBcInBlbmRpbmdcIiwgdmFsdWU6IHJlc3VsdCB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFzeW5jIHJldHVybihfOiB1bmRlZmluZWQsIGRpc2FibGVQb3N0Q2xvc2VNZXNzYWdlPzogdHJ1ZSk6IFByb21pc2U8SXRlcmF0b3JSZXN1bHQ8dm9pZD4+IHtcbiAgICAgICAgICAgICAgICBzdGF0dXMgPSBcInJlc29sdmVkXCI7XG4gICAgICAgICAgICAgICAgaWYgKCFkaXNhYmxlUG9zdENsb3NlTWVzc2FnZSkgc3RhcmdhdGVPcHRpb25zLnBvcnQucG9zdE1lc3NhZ2UoYENMT1NFX1NUUkVBTToke2V4ZWN1dGVJZH1gKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZsb3cgb2YgZmxvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZmxvdy5ibGFuayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmbG93LnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG51bGwgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhc3luYyB0aHJvdyhlcnI6IGFueSwgZGlzYWJsZVBvc3RDbG9zZU1lc3NhZ2U/OiB0cnVlKTogUHJvbWlzZTxJdGVyYXRvclJlc3VsdDx2b2lkPj4ge1xuICAgICAgICAgICAgICAgIHN0YXR1cyA9IFwicmVqZWN0ZWRcIjtcbiAgICAgICAgICAgICAgICBpZiAoIWRpc2FibGVQb3N0Q2xvc2VNZXNzYWdlKSBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5wb3N0TWVzc2FnZShgQ0xPU0VfU1RSRUFNOiR7ZXhlY3V0ZUlkfWApO1xuICAgICAgICAgICAgICAgIGlmIChmbG93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZXJzID0gd2l0aFJlc29sdmVyczxUPigpO1xuICAgICAgICAgICAgICAgICAgICBmbG93cy5wdXNoKHsgLi4ucmVzb2x2ZXJzLCBibGFuazogdHJ1ZSB9IGFzIGFueSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmxvdyBvZiBmbG93cykge1xuICAgICAgICAgICAgICAgICAgICBmbG93LmJsYW5rID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZsb3cucmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBudWxsIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9IHNhdGlzZmllcyBBc3luY0l0ZXJhdG9yPHVua25vd24+KSxcbiAgICAgICAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gaXRlcmF0b3IgYXMgTWlsa2lvRmxvdzxUPjtcbn1cblxuZnVuY3Rpb24gd2l0aFJlc29sdmVyczxUID0gYW55PigpOiBQcm9taXNlV2l0aFJlc29sdmVyczxUPiB7XG4gICAgbGV0IHJlc29sdmU6IFByb21pc2VXaXRoUmVzb2x2ZXJzPFQ+W1wicmVzb2x2ZVwiXTtcbiAgICBsZXQgcmVqZWN0OiBQcm9taXNlV2l0aFJlc29sdmVyczxUPltcInJlamVjdFwiXTtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8VD4oKHJlcywgcmVqKSA9PiB7XG4gICAgICAgIHJlc29sdmUgPSByZXM7XG4gICAgICAgIHJlamVjdCA9IHJlajtcbiAgICB9KTtcbiAgICByZXR1cm4geyBwcm9taXNlLCByZXNvbHZlOiByZXNvbHZlISwgcmVqZWN0OiByZWplY3QhIH07XG59XG5cbmNvbnN0IGlzb0RhdGVQYXR0ZXJuID0gL14oXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn0oPzpcXC5cXGR7MSwzfSk/KShafFsrLV1cXGR7Mn06P1xcZHsyfSk/JC87XG5cbmV4cG9ydCBmdW5jdGlvbiByZXZpdmVKU09OUGFyc2U8VD4oanNvbjogVCk6IFQge1xuICAgIGlmIChqc29uICE9PSBudWxsICYmIHR5cGVvZiBqc29uID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAoanNvbiBpbnN0YW5jZW9mIERhdGUgfHwgKHR5cGVvZiAoanNvbiBhcyBhbnkpLmdldFRpbWUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIChqc29uIGFzIGFueSkudG9JU09TdHJpbmcgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgICAgICByZXR1cm4ganNvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShqc29uKSkge1xuICAgICAgICAgICAgcmV0dXJuIGpzb24ubWFwKChpdGVtKSA9PiByZXZpdmVKU09OUGFyc2UoaXRlbSkpIGFzIGFueTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoanNvbikucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgYWNjW2tleSBhcyBrZXlvZiBUXSA9IHJldml2ZUpTT05QYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSBhcyBUKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBqc29uID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGpzb24ubWF0Y2goaXNvRGF0ZVBhdHRlcm4pO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlU3RyaW5nID0gbWF0Y2hbMl0gPyBgJHttYXRjaFsxXX0ke21hdGNoWzJdLnJlcGxhY2UoJzonLCAnJyl9YCA6IGAke21hdGNoWzFdfVpgO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKG5vcm1hbGl6ZWREYXRlU3RyaW5nKSBhcyBhbnk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGpzb247XG59XG5cbmNvbnN0IERCX05BTUUgPSAnU3RhcmdhdGVXb3JrZXInO1xuY29uc3QgU1RPUkVfTkFNRSA9ICdjYWNoZXMnO1xubGV0IGRiSW5zdGFuY2U6IElEQkRhdGFiYXNlIHwgbnVsbCA9IG51bGw7XG5cbmFzeW5jIGZ1bmN0aW9uIG9wZW5EQigpOiBQcm9taXNlPElEQkRhdGFiYXNlPiB7XG4gICAgaWYgKGRiSW5zdGFuY2UpIHJldHVybiBkYkluc3RhbmNlO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKERCX05BTUUsIDEpO1xuICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICAgICAgZGJJbnN0YW5jZSA9IHJlcXVlc3QucmVzdWx0O1xuICAgICAgICAgICAgcmVzb2x2ZShkYkluc3RhbmNlKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRiID0gKGV2ZW50LnRhcmdldCBhcyBJREJPcGVuREJSZXF1ZXN0KS5yZXN1bHQ7XG4gICAgICAgICAgICBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoU1RPUkVfTkFNRSkpIHtcbiAgICAgICAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZShTVE9SRV9OQU1FKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRDYWNoZVN0b3JhZ2Uob3B0aW9ucz86IHsgZW5jcnlwdGlvbj86IGJvb2xlYW47IGVuY3J5cHRpb25LZXk/OiBzdHJpbmcgfSk6IFByb21pc2U8Q2FjaGVTdG9yYWdlPiB7XG4gICAgYXdhaXQgb3BlbkRCKCk7XG5cbiAgICBsZXQgZW5jcnlwdGlvbktleTogQ3J5cHRvS2V5IHwgbnVsbCA9IG51bGw7XG4gICAgY29uc3QgY291bnRlciA9IG5ldyBVaW50OEFycmF5KDE2KTtcblxuICAgIGlmIChvcHRpb25zPy5lbmNyeXB0aW9uKSB7XG4gICAgICAgIGNvbnN0IGtleVN0cmluZyA9IG9wdGlvbnMuZW5jcnlwdGlvbktleSA/PyBEQl9OQU1FO1xuICAgICAgICBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoa2V5U3RyaW5nKS5mb3JFYWNoKChieXRlLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAoaSA8IDE2KSBjb3VudGVyW2ldID0gYnl0ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgICAgICBjb25zdCBrZXlEYXRhID0gZW5jb2Rlci5lbmNvZGUoa2V5U3RyaW5nKTtcbiAgICAgICAgY29uc3QgaW1wb3J0ZWRLZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgncmF3Jywga2V5RGF0YSwgeyBuYW1lOiAnUEJLREYyJyB9LCBmYWxzZSwgWydkZXJpdmVLZXknXSk7XG5cbiAgICAgICAgZW5jcnlwdGlvbktleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGVyaXZlS2V5KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdQQktERjInLFxuICAgICAgICAgICAgICAgIHNhbHQ6IGVuY29kZXIuZW5jb2RlKCdtaWxraW8tc3RhcmdhdGUtd29ya2VyLWNhY2hlJyksXG4gICAgICAgICAgICAgICAgaXRlcmF0aW9uczogMTAwMDAwLFxuICAgICAgICAgICAgICAgIGhhc2g6ICdTSEEtMjU2JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbXBvcnRlZEtleSxcbiAgICAgICAgICAgIHsgbmFtZTogJ0FFUy1DVFInLCBsZW5ndGg6IDI1NiB9LFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBbJ2VuY3J5cHQnLCAnZGVjcnlwdCddLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGVuY3J5cHREYXRhID0gYXN5bmMgKGRhdGE6IGFueSk6IFByb21pc2U8VWludDhBcnJheT4gPT4ge1xuICAgICAgICBpZiAoIWVuY3J5cHRpb25LZXkpIHJldHVybiBkYXRhO1xuXG4gICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgICAgICBjb25zdCBkYXRhQnl0ZXMgPSBlbmNvZGVyLmVuY29kZShqc29uU3RyaW5nKTtcblxuICAgICAgICBjb25zdCBlbmNyeXB0ZWRBcnJheUJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZW5jcnlwdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQUVTLUNUUicsXG4gICAgICAgICAgICAgICAgY291bnRlcjogY291bnRlcixcbiAgICAgICAgICAgICAgICBsZW5ndGg6IDY0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVuY3J5cHRpb25LZXkhLFxuICAgICAgICAgICAgZGF0YUJ5dGVzLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShlbmNyeXB0ZWRBcnJheUJ1ZmZlcik7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlY3J5cHREYXRhID0gYXN5bmMgKGVuY3J5cHRlZERhdGE6IEFycmF5QnVmZmVyIHwgVWludDhBcnJheSk6IFByb21pc2U8YW55PiA9PiB7XG4gICAgICAgIGlmICghZW5jcnlwdGlvbktleSB8fCAhZW5jcnlwdGVkRGF0YSkgcmV0dXJuIGVuY3J5cHRlZERhdGE7XG5cbiAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBlbmNyeXB0ZWREYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSA/IChlbmNyeXB0ZWREYXRhLmJ1ZmZlciBhcyBBcnJheUJ1ZmZlcikgOiBlbmNyeXB0ZWREYXRhO1xuXG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZEJ5dGVzID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kZWNyeXB0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdBRVMtQ1RSJyxcbiAgICAgICAgICAgICAgICBjb3VudGVyOiBjb3VudGVyLFxuICAgICAgICAgICAgICAgIGxlbmd0aDogNjQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5jcnlwdGlvbktleSEsXG4gICAgICAgICAgICBhcnJheUJ1ZmZlcixcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG4gICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBkZWNvZGVyLmRlY29kZShkZWNyeXB0ZWRCeXRlcyk7XG4gICAgICAgIHJldHVybiByZXZpdmVKU09OUGFyc2UoSlNPTi5wYXJzZShqc29uU3RyaW5nKSk7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGFzeW5jIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8eyBkYXRhOiBhbnk7IHRpbWVzdGFtcDogbnVtYmVyIH0gfCBudWxsPiB7XG4gICAgICAgICAgICBjb25zdCBkYiA9IGF3YWl0IG9wZW5EQigpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFNUT1JFX05BTUUsICdyZWFkb25seScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoU1RPUkVfTkFNRSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLmdldChrZXkpO1xuICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHJlamVjdChyZXF1ZXN0LmVycm9yKTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVxdWVzdC5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmVuY3J5cHRpb24gJiYgKHJlc3VsdC5kYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgfHwgcmVzdWx0LmRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVjcnlwdGVkRGF0YSA9IGF3YWl0IGRlY3J5cHREYXRhKHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoeyBkYXRhOiBkZWNyeXB0ZWREYXRhLCB0aW1lc3RhbXA6IHJlc3VsdC50aW1lc3RhbXAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCA/PyBudWxsKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIHNldChrZXk6IHN0cmluZywgZGF0YTogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgICBjb25zdCBkYiA9IGF3YWl0IG9wZW5EQigpO1xuICAgICAgICAgICAgbGV0IGRhdGFUb1N0b3JlOiBhbnkgPSBkYXRhO1xuXG4gICAgICAgICAgICBpZiAob3B0aW9ucz8uZW5jcnlwdGlvbikge1xuICAgICAgICAgICAgICAgIGRhdGFUb1N0b3JlID0gYXdhaXQgZW5jcnlwdERhdGEoZGF0YSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihTVE9SRV9OQU1FLCAncmVhZHdyaXRlJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShTVE9SRV9OQU1FKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gc3RvcmUucHV0KHsgZGF0YTogZGF0YVRvU3RvcmUsIHRpbWVzdGFtcDogRGF0ZS5ub3coKSB9LCBrZXkpO1xuICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHJlamVjdChyZXF1ZXN0LmVycm9yKTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQ2FjaGVLZXkocGF0aDogc3RyaW5nLCBwYXJhbXM6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3BhdGh9OiR7SlNPTi5zdHJpbmdpZnkocGFyYW1zID8/IHt9KX1gO1xufVxuXG5jb25zdCBkZWVwQ2xvbmVJZlZ1ZVJlYWN0aXZlID0gPFQ+KHZhbHVlOiBUKTogVCA9PiB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSByZXR1cm4gdmFsdWU7XG4gICAgY29uc3Qgb2JqID0gdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBpZiAob2JqLl9fdl9pc1JlYWRvbmx5ICE9PSB1bmRlZmluZWQgfHwgb2JqLl9fdl9pc1JlYWN0aXZlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufTsiCiAgXSwKICAibWFwcGluZ3MiOiAiO0FBTUEsU0FBUyxpQkFBaUIsQ0FBQyxTQUE2QjtBQUFBLEVBQ3RELElBQUksQ0FBQyxRQUFRO0FBQUEsSUFBUSxRQUFRLFNBQVM7QUFBQSxFQUN0QyxJQUFJLFFBQVEsU0FBUztBQUFBLElBQUcsTUFBTSxJQUFJLE1BQU0sZ0JBQWdCO0FBQUEsRUFDeEQsSUFBSSxRQUFRLFNBQVM7QUFBQSxJQUFJLE1BQU0sSUFBSSxNQUFNLGdCQUFnQjtBQUFBLEVBQ3pELElBQUksUUFBUSxhQUFhLFFBQVEsU0FBUztBQUFBLElBQUcsTUFBTSxJQUFJLE1B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QUFZLFVBQVU7QUFBQSxRQUN6RCxNQUFNLFFBQVEsWUFBWSxZQUFZLFVBQVU7QUFBQSxRQUNoRCxNQUFNLFVBQVUsTUFBTSxJQUFJLEdBQUc7QUFBQSxRQUM3QixRQUFRLFVBQVUsTUFBTSxPQUFPLFFBQVEsS0FBSztBQUFBLFFBQzVDLFFBQVEsWUFBWSxZQUFZO0FBQUEsVUFDNUIsTUFBTSxTQUFTLFFBQVE7QUFBQSxVQUN2QixJQUFJLENBQUMsUUFBUTtBQUFBLFlBQ1QsUUFBUSxJQUFJO0FBQUEsWUFDWjtBQUFBLFVBQ0o7QUFBQSxVQUVBLElBQUksU0FBUyxlQUFlLE9BQU8sZ0JBQWdCLGVBQWUsT0FBTyxnQkFBZ0IsYUFBYTtBQUFBLFlBQ2xHLE1BQU0sZ0JBQWdCLE1BQU0sWUFBWSxPQUFPLElBQUk7QUFBQSxZQUNuRCxRQUFRLEVBQUUsTUFBTSxlQUFlLFdBQVcsT0FBTyxVQUFVLENBQUM7QUFBQSxZQUM1RDtBQUFBLFVBQ0o7QUFBQSxVQUVBLFFBQVEsVUFBVSxJQUFJO0FBQUE7QUFBQSxPQUU3QjtBQUFBO0FBQUEsU0FFQyxJQUFHLENBQUMsS0FBYSxNQUEwQjtBQUFBLE1BQzdDLE1BQU0sS0FBSyxNQUFNLE9BQU87QUFBQSxNQUN4QixJQUFJLGNBQW1CO0FBQUEsTUFFdkIsSUFBSSxTQUFTLFlBQVk7QUFBQSxRQUNyQixjQUFjLE1BQU0sWUFBWSxJQUFJO0FBQUEsTUFDeEM7QUFBQSxNQUVBLE9BQU8sSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBQUEsUUFDcEMsTUFBTSxjQUFjLEdBQUcsWUFBWSxZQUFZLFdBQVc7QUFBQSxRQUMxRCxNQUFNLFFBQVEsWUFBWSxZQUFZLFVBQVU7QUFBQSxRQUNoRCxNQUFNLFVBQVUsTUFBTSxJQUFJLEVBQUUsTUFBTSxhQUFhLFdBQVcsS0FBSyxJQUFJLEVBQUUsR0FBRyxHQUFHO0FBQUEsUUFDM0UsUUFBUSxVQUFVLE1BQU0sT0FBTyxRQUFRLEtBQUs7QUFBQSxRQUM1QyxRQUFRLFlBQVksTUFBTSxRQUFRO0FBQUEsT0FDckM7QUFBQTtBQUFBLEVBRVQ7QUFBQTtBQUdKLFNBQVMsZ0JBQWdCLENBQUMsTUFBYyxRQUFxQjtBQUFBLEVBQ3pELE9BQU8sR0FBRyxRQUFRLEtBQUssVUFBVSxVQUFVLENBQUMsQ0FBQztBQUFBO0FBR2pELElBQU0seUJBQXlCLENBQUksVUFBZ0I7QUFBQSxFQUMvQyxJQUFJLFVBQVUsUUFBUSxVQUFVLGFBQWEsT0FBTyxVQUFVO0FBQUEsSUFBVSxPQUFPO0FBQUEsRUFDL0UsTUFBTSxNQUFNO0FBQUEsRUFDWixJQUFJLElBQUksbUJBQW1CLGFBQWEsSUFBSSxtQkFBbUIsV0FBVztBQUFBLElBQ3RFLE9BQU8sS0FBSyxNQUFNLEtBQUssVUFBVSxLQUFLLENBQUM7QUFBQSxFQUMzQztBQUFBLEVBQ0EsT0FBTztBQUFBOyIsCiAgImRlYnVnSWQiOiAiNjhGRkYzNzA2NjIxODYyMjY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milkio/stargate-worker",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "type": "module",
5
5
  "exports": "./index.js",
6
6
  "types": "./index.d.ts",