@milkio/stargate-worker 1.0.6 → 1.0.8

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 +3 -3
  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);
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);
@@ -456,5 +456,5 @@ export {
456
456
  createDefaultCacheStorage
457
457
  };
458
458
 
459
- //# debugId=A8AE7CFFD49A64D264756E2164756E21
460
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vdXRpbHMvY3JlYXRlLWlkLnRzIiwgIi4uL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgInR5cGUgSWRHZW5lcmF0b3JPcHRpb25zID0ge1xuICBsZW5ndGg/OiBudW1iZXI7XG4gIHRpbWVzdGFtcDogYm9vbGVhbjtcbiAgc2VxdWVudGlhbDogYm9vbGVhbjtcbn07XG5cbmZ1bmN0aW9uIGRlZmluZUlkR2VuZXJhdG9yKG9wdGlvbnM6IElkR2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMubGVuZ3RoKSBvcHRpb25zLmxlbmd0aCA9IDI0O1xuICBpZiAob3B0aW9ucy5sZW5ndGggPCAxKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxlbmd0aFwiKTtcbiAgaWYgKG9wdGlvbnMubGVuZ3RoID4gNjEpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbGVuZ3RoXCIpO1xuICBpZiAob3B0aW9ucy50aW1lc3RhbXAgJiYgb3B0aW9ucy5sZW5ndGggPCA5KSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxlbmd0aFwiKTtcbiAgbGV0IGxhc3RUaW1lID0gMDtcbiAgbGV0IGxhc3REZWNpbWFsID0gMG47XG4gIHJldHVybiB7XG4gICAgY3JlYXRlSWQoKSB7XG4gICAgICBsZXQgcmFuZExlbmd0aCA9IG9wdGlvbnMubGVuZ3RoITtcbiAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICBsZXQgaWQgPSBcIlwiO1xuICAgICAgaWYgKG9wdGlvbnMudGltZXN0YW1wKSB7XG4gICAgICAgIHJhbmRMZW5ndGggLT0gODtcbiAgICAgICAgaWQgPSBgJHtpZH0ke19fYmlnSW50VG9TdHJpbmcoQmlnSW50KG5vdykpLnBhZFN0YXJ0KDgsIFwiMFwiKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuc2VxdWVudGlhbCAmJiBsYXN0VGltZSA9PT0gbm93KSB7XG4gICAgICAgIGlkID0gYCR7aWR9JHtfX2JpZ0ludFRvU3RyaW5nKCsrbGFzdERlY2ltYWwpLnBhZFN0YXJ0KDEsIFwiMFwiKX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdFRpbWUgPSBub3c7XG4gICAgICAgIGNvbnN0IG1pbiA9IDBuO1xuICAgICAgICBjb25zdCBtYXggPSBfX2dldE1heFZhbHVlKEJpZ0ludChyYW5kTGVuZ3RoKSk7XG4gICAgICAgIGxhc3REZWNpbWFsID0gX19zZWN1cmVSYW5kb21CaWdJbnQobWluLCBtYXgpO1xuICAgICAgICBpZCA9IGAke2lkfSR7X19iaWdJbnRUb1N0cmluZyhsYXN0RGVjaW1hbCkucGFkU3RhcnQocmFuZExlbmd0aCwgXCIwXCIpfWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfSxcbiAgICBnZXRJZFRpbWVzdGFtcChpZDogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy50aW1lc3RhbXAgPyBOdW1iZXIoX19zdHJpbmdUb0JpZ0ludChpZC5zbGljZSgwLCA4KS5yZXBsYWNlQWxsKFwiMFwiLCBcIlwiKSkpIDogMDtcbiAgICB9LFxuICB9O1xufVxuXG5jb25zdCBFTkNPRElORyA9IFwiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcblxuZnVuY3Rpb24gX19zZWN1cmVSYW5kb21CaWdJbnQobWluOiBiaWdpbnQsIG1heDogYmlnaW50KTogYmlnaW50IHtcbiAgaWYgKG1pbiA+PSBtYXgpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcmFuZ2VcIik7XG5cbiAgY29uc3QgcmFuZ2UgPSBtYXggLSBtaW4gKyAxbjtcbiAgY29uc3QgYnl0ZUNvdW50ID0gTWF0aC5jZWlsKE51bWJlcihCaWdJbnQocmFuZ2UudG9TdHJpbmcoMikubGVuZ3RoKSkgLyA4KTtcbiAgY29uc3QgZW50cm9weUJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZUNvdW50KTtcblxuICBsZXQgcmFuZG9tVmFsdWU6IGJpZ2ludDtcbiAgZG8ge1xuICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoZW50cm9weUJ5dGVzKTtcbiAgICByYW5kb21WYWx1ZSA9XG4gICAgICBCaWdJbnQoXG4gICAgICAgIGAweCR7QXJyYXkuZnJvbShlbnRyb3B5Qnl0ZXMpXG4gICAgICAgICAgLm1hcCgoYikgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpKVxuICAgICAgICAgIC5qb2luKFwiXCIpfWAsXG4gICAgICApICUgcmFuZ2U7XG4gIH0gd2hpbGUgKHJhbmRvbVZhbHVlIDwgMG4pO1xuXG4gIHJldHVybiBtaW4gKyByYW5kb21WYWx1ZTtcbn1cblxuZnVuY3Rpb24gX19iaWdJbnRUb1N0cmluZyh2YWx1ZTogYmlnaW50KTogc3RyaW5nIHtcbiAgY29uc3QgYmFzZSA9IEJpZ0ludChFTkNPRElORy5sZW5ndGgpO1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgbGV0IGN1cnJlbnQgPSB2YWx1ZTtcblxuICBpZiAoY3VycmVudCA9PT0gMG4pIHJldHVybiBFTkNPRElOR1swXTtcblxuICB3aGlsZSAoY3VycmVudCA+IDBuKSB7XG4gICAgY29uc3QgcmVtYWluZGVyID0gY3VycmVudCAlIGJhc2U7XG4gICAgcmVzdWx0ID0gRU5DT0RJTkdbTnVtYmVyKHJlbWFpbmRlcildICsgcmVzdWx0O1xuICAgIGN1cnJlbnQgPSBjdXJyZW50IC8gYmFzZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBfX3N0cmluZ1RvQmlnSW50KHN0cjogc3RyaW5nKTogYmlnaW50IHtcbiAgY29uc3QgY2hhck1hcDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IEVOQ09ESU5HLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhck1hcFtFTkNPRElOR1tpXV0gPSBpO1xuICB9XG5cbiAgY29uc3QgYmFzZSA9IEJpZ0ludChFTkNPRElORy5sZW5ndGgpO1xuICBsZXQgcmVzdWx0ID0gMG47XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGFyID0gc3RyW2ldO1xuICAgIGlmICghKGNoYXIgaW4gY2hhck1hcCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjaGFyYWN0ZXIgJyR7Y2hhcn0nIGluIGlucHV0IHN0cmluZ2ApO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IEJpZ0ludChjaGFyTWFwW2NoYXJdKTtcbiAgICByZXN1bHQgPSByZXN1bHQgKiBiYXNlICsgdmFsdWU7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBfX2dldE1heFZhbHVlKG46IGJpZ2ludCk6IGJpZ2ludCB7XG4gIHJldHVybiBCaWdJbnQoRU5DT0RJTkcubGVuZ3RoKSAqKiBuIC0gMW47XG59XG5cbmNvbnN0IGlkR2VuZXJhdG9yID0gZGVmaW5lSWRHZW5lcmF0b3IoeyBsZW5ndGg6IDI0LCB0aW1lc3RhbXA6IGZhbHNlLCBzZXF1ZW50aWFsOiBmYWxzZSB9KTtcblxuZXhwb3J0IGNvbnN0IF9fY3JlYXRlSWQgPSBpZEdlbmVyYXRvci5jcmVhdGVJZDtcbiIsCiAgICAiaW1wb3J0IHsgX19jcmVhdGVJZCB9IGZyb20gXCIuL3V0aWxzL2NyZWF0ZS1pZC50c1wiO1xuXG5leHBvcnQgdHlwZSBNaWxraW9TdGFyZ2F0ZU9wdGlvbnMgPSB7XG4gICAgcG9ydDoge1xuICAgICAgICBwb3N0TWVzc2FnZTogKGRhdGE6IGFueSkgPT4gdm9pZDtcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBcIm1lc3NhZ2VcIiwgY2FsbGJhY2s6IChldmVudDogeyBkYXRhOiBhbnkgfSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBcIm1lc3NhZ2VcIiwgY2FsbGJhY2s6IChldmVudDogeyBkYXRhOiBhbnkgfSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgICB9O1xuICAgIGNhY2hlU3RvcmFnZT86IENhY2hlU3RvcmFnZTtcbiAgICBjYWNoZUVuY3J5cHRpb24/OiBib29sZWFuO1xuICAgIG9uTG9nPzogKGxldmVsOiBzdHJpbmcsIGFyZ3M6IGFueVtdKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgTWl4aW48VCwgVT4gPSBVICYgT21pdDxULCBrZXlvZiBVPjtcblxuZXhwb3J0IHR5cGUgQ2FjaGVTdHJhdGVneSA9ICdvZmYnIHwgJ2ZhbGxiYWNrJyB8ICd0aHJvdHRsZSc7XG5cbmV4cG9ydCB0eXBlIFJldHJ5U3RyYXRlZ3kgPSBib29sZWFuIHwgbnVtYmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlU3RvcmFnZSB7XG4gICAgZ2V0OiAoa2V5OiBzdHJpbmcpID0+IFByb21pc2U8eyBkYXRhOiBhbnk7IHRpbWVzdGFtcDogbnVtYmVyIH0gfCBudWxsPjtcbiAgICBzZXQ6IChrZXk6IHN0cmluZywgZGF0YTogYW55KSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgdHlwZSBFeGVjdXRlT3B0aW9uczxUIGV4dGVuZHMgYW55ID0gYW55PiA9IHtcbiAgICBwYXJhbXM/OiBSZWNvcmQ8YW55LCBhbnk+O1xuICAgIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIGNhY2hlU3RyYXRlZ3k/OiBDYWNoZVN0cmF0ZWd5O1xuICAgIGNhY2hlVGhyb3R0bGVNcz86IG51bWJlcjtcbiAgICBvbkNhY2hlSGl0PzogKHJlc3VsdDogVCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcmV0cnlTdHJhdGVneT86IFJldHJ5U3RyYXRlZ3k7XG59O1xuXG5leHBvcnQgdHlwZSBFeGVjdXRlUmVzdWx0c09wdGlvbiA9IHsgZXhlY3V0ZUlkOiBzdHJpbmcgfTtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdG9yR2VuZXJpYzxUPiA9IFQgZXh0ZW5kcyBBc3luY0dlbmVyYXRvcjxpbmZlciBJPiA/IEkgOiBuZXZlcjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVN0YXJnYXRlV29ya2VyPEdlbmVyYXRlZCBleHRlbmRzIHsgcm91dGVTY2hlbWE6IGFueTsgcmVqZWN0Q29kZTogYW55IH0+KHN0YXJnYXRlT3B0aW9uczogTWlsa2lvU3RhcmdhdGVPcHRpb25zKSB7XG4gICAgY29uc3QgZXhlY3V0ZUlkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IGNvbm5lY3QgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gKGV2ZW50OiB7IGRhdGE6IGFueSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSAhPT0gXCJQT05HXCIpIHJldHVybjtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpO1xuICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlcik7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICB9O1xuICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucG9zdE1lc3NhZ2UoXCJQSU5HXCIpO1xuICAgICAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHN0YXJnYXRlT3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKFwiUElOR1wiKSwgNDIpO1xuICAgIH0pO1xuICAgIGNvbnN0IGxvZ0hhbmRsZXIgPSAoZXZlbnQ6IHsgZGF0YTogYW55IH0pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBldmVudC5kYXRhICE9PSBcIm9iamVjdFwiIHx8ICFldmVudC5kYXRhLl9fbWlsa2lvX2xvZykgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IGxldmVsLCBhcmdzIH0gPSBldmVudC5kYXRhLl9fbWlsa2lvX2xvZztcbiAgICAgICAgY29uc3QgcGFyc2VkQXJncyA9IEpTT04ucGFyc2UoYXJncyk7XG4gICAgICAgIGlmIChzdGFyZ2F0ZU9wdGlvbnMub25Mb2cpIHtcbiAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5vbkxvZyhsZXZlbCwgcGFyc2VkQXJncyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb25zb2xlRm4gPSAoY29uc29sZSBhcyBhbnkpW2xldmVsXSA/PyBjb25zb2xlLmxvZztcbiAgICAgICAgICAgIGNvbnNvbGVGbiguLi5wYXJzZWRBcmdzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgc3RhcmdhdGVPcHRpb25zLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbG9nSGFuZGxlcik7XG5cbiAgICBjb25zdCBzdGFyZ2F0ZSA9IHtcbiAgICAgICAgY2xvc2UoKSB7XG4gICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBsb2dIYW5kbGVyKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZXhlY3V0ZUlkIG9mIGV4ZWN1dGVJZHMpIHtcbiAgICAgICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5wb3N0TWVzc2FnZShgQ0xPU0VfU1RSRUFNOiR7ZXhlY3V0ZUlkfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucG9zdE1lc3NhZ2UoXCJDTE9TRURcIik7XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIGV4ZWN1dGU8UGF0aCBleHRlbmRzIGtleW9mIEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdPihcbiAgICAgICAgICAgIHBhdGg6IFBhdGgsXG4gICAgICAgICAgICBvcHRpb25zOiBNaXhpbjxcbiAgICAgICAgICAgICAgICBFeGVjdXRlT3B0aW9uczxHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXVtQYXRoXVtcInR5cGVzXCJdW1wicmVzdWx0XCJdPixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcz86IEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdW1BhdGhdW1widHlwZXNcIl1bXCJwYXJhbXNcIl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPixcbiAgICAgICAgKTogUHJvbWlzZTxcbiAgICAgICAgICAgIEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdW1BhdGhdW1widHlwZXNcIl1bXCLwn6WbXCJdIGV4dGVuZHMgYm9vbGVhblxuICAgICAgICAgICAgPyAvLyBhY3Rpb25cbiAgICAgICAgICAgIFtQYXJ0aWFsPEdlbmVyYXRlZFtcInJlamVjdENvZGVcIl0+LCBudWxsLCBFeGVjdXRlUmVzdWx0c09wdGlvbl0gfCBbbnVsbCwgR2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl1bUGF0aF1bXCJ0eXBlc1wiXVtcInJlc3VsdFwiXSwgRXhlY3V0ZVJlc3VsdHNPcHRpb25dXG4gICAgICAgICAgICA6IC8vIHN0cmVhbVxuICAgICAgICAgICAgW1BhcnRpYWw8R2VuZXJhdGVkW1wicmVqZWN0Q29kZVwiXT4sIG51bGwsIEV4ZWN1dGVSZXN1bHRzT3B0aW9uXSB8IFtudWxsLCBBc3luY0dlbmVyYXRvcjxbUGFydGlhbDxHZW5lcmF0ZWRbXCJyZWplY3RDb2RlXCJdPiwgbnVsbF0gfCBbbnVsbCwgR2VuZXJhdG9yR2VuZXJpYzxHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXVtQYXRoXVtcInR5cGVzXCJdW1wicmVzdWx0XCJdPl0sIHVuZGVmaW5lZD4sIEV4ZWN1dGVSZXN1bHRzT3B0aW9uXVxuICAgICAgICA+IHtcbiAgICAgICAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hc3luYy1wcm9taXNlLWV4ZWN1dG9yXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBjb25uZWN0O1xuXG4gICAgICAgICAgICAgICAgaWYgKCEocGF0aCBhcyBzdHJpbmcpLmVuZHNXaXRoKFwiflwiKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVTdHJhdGVneSA9IG9wdGlvbnM/LmNhY2hlU3RyYXRlZ3kgPz8gJ29mZic7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXRyeUNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnM/LnJldHJ5U3RyYXRlZ3kgPT09IHRydWUgfHwgb3B0aW9ucz8ucmV0cnlTdHJhdGVneSA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlDb3VudCA9IDI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnM/LnJldHJ5U3RyYXRlZ3kgPT09ICdudW1iZXInICYmIG9wdGlvbnM/LnJldHJ5U3RyYXRlZ3kgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRyeUNvdW50ID0gb3B0aW9ucz8ucmV0cnlTdHJhdGVneTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZVRocm90dGxlTXMgPSBvcHRpb25zPy5jYWNoZVRocm90dGxlTXMgPz8gMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVLZXkgPSBnZW5lcmF0ZUNhY2hlS2V5KHBhdGggYXMgc3RyaW5nLCBvcHRpb25zPy5wYXJhbXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBjYWNoZVN0b3JhZ2UgPSBzdGFyZ2F0ZU9wdGlvbnMuY2FjaGVTdG9yYWdlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdHJhdGVneSAhPT0gJ29mZicgJiYgIWNhY2hlU3RvcmFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTdG9yYWdlID0gYXdhaXQgY3JlYXRlRGVmYXVsdENhY2hlU3RvcmFnZSh7IGVuY3J5cHRpb246IHN0YXJnYXRlT3B0aW9ucy5jYWNoZUVuY3J5cHRpb24gfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdHJhdGVneSAhPT0gJ29mZicgJiYgY2FjaGVTdG9yYWdlICYmIG9wdGlvbnM/Lm9uQ2FjaGVIaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IGNhY2hlU3RvcmFnZS5nZXQoY2FjaGVLZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG9wdGlvbnMub25DYWNoZUhpdChjYWNoZWQuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBvbkNhY2hlSGl0IGVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0cmF0ZWd5ID09PSAndGhyb3R0bGUnICYmIGNhY2hlU3RvcmFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gYXdhaXQgY2FjaGVTdG9yYWdlLmdldChjYWNoZUtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkICYmIERhdGUubm93KCkgLSBjYWNoZWQudGltZXN0YW1wIDwgY2FjaGVUaHJvdHRsZU1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoW251bGwsIGNhY2hlZC5kYXRhLCB7IGV4ZWN1dGVJZDogJ2NhY2hlZCcgfV0gYXMgYW55KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4ZWN1dGVSZXF1ZXN0ID0gKCk6IFByb21pc2U8W2FueSwgYW55LCBFeGVjdXRlUmVzdWx0c09wdGlvbl0+ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVxUmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcUV4ZWN1dGVJZCA9IF9fY3JlYXRlSWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlSWRzLmFkZChyZXFFeGVjdXRlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQ6IHsgZGF0YTogYW55IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBldmVudC5kYXRhICE9PSBcIm9iamVjdFwiKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmV4ZWN1dGVJZCAhPT0gcmVxRXhlY3V0ZUlkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVJZHMuZGVsZXRlKHJlcUV4ZWN1dGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50LmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3I6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JbZXZlbnQuZGF0YS5lcnJvci5jb2RlXSA9IGV2ZW50LmRhdGEuZXJyb3IucmVqZWN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxUmVzb2x2ZShbZXJyb3IsIG51bGwsIHsgZXhlY3V0ZUlkOiByZXFFeGVjdXRlSWQgfV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxUmVzb2x2ZShbbnVsbCwgZXZlbnQuZGF0YS5kYXRhLCB7IGV4ZWN1dGVJZDogcmVxRXhlY3V0ZUlkIH1dKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlSWQ6IHJlcUV4ZWN1dGVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBvcHRpb25zPy5wYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG9wdGlvbnM/LmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgW2Vycm9yLCByZXN1bHQsIHJlc3VsdE9wdGlvbl0gPSBhd2FpdCBleGVjdXRlUmVxdWVzdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHJldHJ5SW5kZXggPSAwOyByZXRyeUluZGV4IDwgcmV0cnlDb3VudCAmJiBlcnJvcjsgcmV0cnlJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0cnlJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCA1MDApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvciwgcmVzdWx0LCByZXN1bHRPcHRpb25dID0gYXdhaXQgZXhlY3V0ZVJlcXVlc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RyYXRlZ3kgIT09ICdvZmYnICYmIGNhY2hlU3RvcmFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IGNhY2hlU3RvcmFnZS5nZXQoY2FjaGVLZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoW251bGwsIGNhY2hlZC5kYXRhLCB7IGV4ZWN1dGVJZDogJ2NhY2hlZCcgfV0gYXMgYW55KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShbZXJyb3IsIG51bGwsIHJlc3VsdE9wdGlvbl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RyYXRlZ3kgIT09ICdvZmYnICYmIGNhY2hlU3RvcmFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2FjaGVTdG9yYWdlLnNldChjYWNoZUtleSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoW251bGwsIHJlc3VsdCwgcmVzdWx0T3B0aW9uXSBhcyBhbnkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHN0cmVhbVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGVjdXRlSWQgPSBfX2NyZWF0ZUlkKCk7XG4gICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVJZHMuYWRkKGV4ZWN1dGVJZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGZsb3c6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUZsb3c+IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVyID0gKGV2ZW50OiB7IGRhdGE6IGFueSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGV2ZW50LmRhdGEgIT09IFwib2JqZWN0XCIpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmV4ZWN1dGVJZCAhPT0gZXhlY3V0ZUlkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZsb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG93ID0gY3JlYXRlRmxvdyhzdGFyZ2F0ZU9wdGlvbnMsIGV4ZWN1dGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFldmVudC5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3I6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcltldmVudC5kYXRhLmVycm9yLmNvZGVdID0gZXZlbnQuZGF0YS5lcnJvci5yZWplY3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoW2Vycm9yLCBudWxsLCB7IGV4ZWN1dGVJZCB9XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLnN1Y2Nlc3MpIHJlc29sdmUoW251bGwsIGZsb3csIHsgZXhlY3V0ZUlkIH1dIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVJZHMuZGVsZXRlKGV4ZWN1dGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLnN1Y2Nlc3MpIGZsb3cucmV0dXJuKHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZmxvdy50aHJvdyhldmVudC5kYXRhLmRhdGE/LmF0KDApLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFldmVudC5kYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVJZHMuZGVsZXRlKGV4ZWN1dGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb3cudGhyb3coZXZlbnQuZGF0YS5kYXRhLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEuc3VjY2VzcykgZmxvdy5lbWl0KGV2ZW50LmRhdGEuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBvcHRpb25zPy5wYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBvcHRpb25zPy5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgJHR5cGVzOiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyB7XG4gICAgICAgICAgICBnZW5lcmF0ZWQ6IEdlbmVyYXRlZCxcbiAgICAgICAgICAgIGVycm9yOiBHZW5lcmF0ZWRbXCJyZWplY3RDb2RlXCJdO1xuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgW1BhdGggaW4ga2V5b2YgR2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl1dOiBHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXVtQYXRoXVtcInR5cGVzXCJdW1wicGFyYW1zXCJdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdWx0czoge1xuICAgICAgICAgICAgICAgIFtQYXRoIGluIGtleW9mIEdlbmVyYXRlZFtcInJvdXRlU2NoZW1hXCJdXTogR2VuZXJhdGVkW1wicm91dGVTY2hlbWFcIl1bUGF0aF1bXCJ0eXBlc1wiXVtcIvCfpZtcIl0gZXh0ZW5kcyBib29sZWFuXG4gICAgICAgICAgICAgICAgPyAvLyBhY3Rpb25cbiAgICAgICAgICAgICAgICBHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXVtQYXRoXVtcInR5cGVzXCJdW1wicmVzdWx0XCJdXG4gICAgICAgICAgICAgICAgOiAvLyBzdHJlYW1cbiAgICAgICAgICAgICAgICBBc3luY0dlbmVyYXRvcjxbUGFydGlhbDxHZW5lcmF0ZWRbXCJyZWplY3RDb2RlXCJdPiwgbnVsbF0gfCBbbnVsbCwgR2VuZXJhdG9yR2VuZXJpYzxHZW5lcmF0ZWRbXCJyb3V0ZVNjaGVtYVwiXVtQYXRoXVtcInR5cGVzXCJdW1wicmVzdWx0XCJdPl0sIHVuZGVmaW5lZD5cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBzdGFyZ2F0ZTtcbn1cblxuZXhwb3J0IHR5cGUgTWlsa2lvRmxvdzxULCBUUmV0dXJuID0gYW55LCBUTmV4dCA9IGFueT4gPSB7XG4gICAgZW1pdDogKGZsb3c6IFQpID0+IHZvaWQ7XG4gICAgW1N5bWJvbC5hc3luY0l0ZXJhdG9yXTogKCkgPT4gTWlsa2lvRmxvdzxUPjtcbiAgICBuZXh0KC4uLlt2YWx1ZV06IFtdIHwgW1ROZXh0XSk6IFByb21pc2U8SXRlcmF0b3JSZXN1bHQ8VCwgVFJldHVybj4+O1xuICAgIHJldHVybihkYXRhOiB1bmRlZmluZWQsIGRpc2FibGVQb3N0Q2xvc2VNZXNzYWdlPzogdHJ1ZSk6IFByb21pc2U8SXRlcmF0b3JSZXN1bHQ8VCwgVFJldHVybj4+O1xuICAgIHRocm93KGVycm9yOiBhbnksIGRpc2FibGVQb3N0Q2xvc2VNZXNzYWdlPzogdHJ1ZSk6IFByb21pc2U8SXRlcmF0b3JSZXN1bHQ8VCwgVFJldHVybj4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZsb3c8VD4oc3RhcmdhdGVPcHRpb25zOiBNaWxraW9TdGFyZ2F0ZU9wdGlvbnMsIGV4ZWN1dGVJZDogc3RyaW5nKTogTWlsa2lvRmxvdzxUPiB7XG4gICAgbGV0IHN0YXR1czogXCJwZW5kaW5nXCIgfCBcInJlc29sdmVkXCIgfCBcInJlamVjdGVkXCIgPSBcInBlbmRpbmdcIjtcbiAgICBjb25zdCBmbG93czogQXJyYXk8e1xuICAgICAgICBibGFuazogYm9vbGVhbjtcbiAgICAgICAgcHJvbWlzZTogUHJvbWlzZTxUPjtcbiAgICAgICAgcmVzb2x2ZTogKHZhbHVlPzogVCB8IFByb21pc2VMaWtlPFQ+KSA9PiB2b2lkO1xuICAgICAgICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XG4gICAgfT4gPSBbXTtcblxuICAgIGNvbnN0IGl0ZXJhdG9yID0ge1xuICAgICAgICBlbWl0OiAoZmxvdzogVCkgPT4ge1xuICAgICAgICAgICAgaWYgKGZsb3dzLmF0KC0xKT8uYmxhbmsgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gZmxvd3MuYXQoLTEpITtcbiAgICAgICAgICAgICAgICBpdGVtLmJsYW5rID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaXRlbS5yZXNvbHZlKGZsb3cpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZXJzID0gd2l0aFJlc29sdmVyczxUPigpO1xuICAgICAgICAgICAgICAgIHJlc29sdmVycy5yZXNvbHZlKGZsb3cpO1xuICAgICAgICAgICAgICAgIGZsb3dzLnB1c2goeyAuLi5yZXNvbHZlcnMsIGJsYW5rOiBmYWxzZSB9IGFzIGFueSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLih7XG4gICAgICAgICAgICBhc3luYyBuZXh0KCk6IFByb21pc2U8SXRlcmF0b3JSZXN1bHQ8VD4+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSBcInBlbmRpbmdcIikgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG51bGwgfTtcbiAgICAgICAgICAgICAgICBpZiAoZmxvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVycyA9IHdpdGhSZXNvbHZlcnM8VD4oKTtcbiAgICAgICAgICAgICAgICAgICAgZmxvd3MucHVzaCh7IC4uLnJlc29sdmVycywgYmxhbms6IHRydWUgfSBhcyBhbnkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmbG93ID0gZmxvd3MuYXQoMCkhO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZsb3cucHJvbWlzZTtcbiAgICAgICAgICAgICAgICBmbG93cy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IHN0YXR1cyAhPT0gXCJwZW5kaW5nXCIsIHZhbHVlOiByZXN1bHQgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhc3luYyByZXR1cm4oXzogdW5kZWZpbmVkLCBkaXNhYmxlUG9zdENsb3NlTWVzc2FnZT86IHRydWUpOiBQcm9taXNlPEl0ZXJhdG9yUmVzdWx0PHZvaWQ+PiB7XG4gICAgICAgICAgICAgICAgc3RhdHVzID0gXCJyZXNvbHZlZFwiO1xuICAgICAgICAgICAgICAgIGlmICghZGlzYWJsZVBvc3RDbG9zZU1lc3NhZ2UpIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKGBDTE9TRV9TVFJFQU06JHtleGVjdXRlSWR9YCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBmbG93IG9mIGZsb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZsb3cuYmxhbmsgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZmxvdy5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBudWxsIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXN5bmMgdGhyb3coZXJyOiBhbnksIGRpc2FibGVQb3N0Q2xvc2VNZXNzYWdlPzogdHJ1ZSk6IFByb21pc2U8SXRlcmF0b3JSZXN1bHQ8dm9pZD4+IHtcbiAgICAgICAgICAgICAgICBzdGF0dXMgPSBcInJlamVjdGVkXCI7XG4gICAgICAgICAgICAgICAgaWYgKCFkaXNhYmxlUG9zdENsb3NlTWVzc2FnZSkgc3RhcmdhdGVPcHRpb25zLnBvcnQucG9zdE1lc3NhZ2UoYENMT1NFX1NUUkVBTToke2V4ZWN1dGVJZH1gKTtcbiAgICAgICAgICAgICAgICBpZiAoZmxvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVycyA9IHdpdGhSZXNvbHZlcnM8VD4oKTtcbiAgICAgICAgICAgICAgICAgICAgZmxvd3MucHVzaCh7IC4uLnJlc29sdmVycywgYmxhbms6IHRydWUgfSBhcyBhbnkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZsb3cgb2YgZmxvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgZmxvdy5ibGFuayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmbG93LnJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbnVsbCB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBzYXRpc2ZpZXMgQXN5bmNJdGVyYXRvcjx1bmtub3duPiksXG4gICAgICAgIFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGl0ZXJhdG9yIGFzIE1pbGtpb0Zsb3c8VD47XG59XG5cbmZ1bmN0aW9uIHdpdGhSZXNvbHZlcnM8VCA9IGFueT4oKTogUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD4ge1xuICAgIGxldCByZXNvbHZlOiBQcm9taXNlV2l0aFJlc29sdmVyczxUPltcInJlc29sdmVcIl07XG4gICAgbGV0IHJlamVjdDogUHJvbWlzZVdpdGhSZXNvbHZlcnM8VD5bXCJyZWplY3RcIl07XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPFQ+KChyZXMsIHJlaikgPT4ge1xuICAgICAgICByZXNvbHZlID0gcmVzO1xuICAgICAgICByZWplY3QgPSByZWo7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgcHJvbWlzZSwgcmVzb2x2ZTogcmVzb2x2ZSEsIHJlamVjdDogcmVqZWN0ISB9O1xufVxuXG5jb25zdCBpc29EYXRlUGF0dGVybiA9IC9eKFxcZHs0fS1cXGR7Mn0tXFxkezJ9VFxcZHsyfTpcXGR7Mn06XFxkezJ9KD86XFwuXFxkezEsM30pPykoWnxbKy1dXFxkezJ9Oj9cXGR7Mn0pPyQvO1xuXG5leHBvcnQgZnVuY3Rpb24gcmV2aXZlSlNPTlBhcnNlPFQ+KGpzb246IFQpOiBUIHtcbiAgICBpZiAoanNvbiAhPT0gbnVsbCAmJiB0eXBlb2YganNvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKGpzb24gaW5zdGFuY2VvZiBEYXRlIHx8ICh0eXBlb2YgKGpzb24gYXMgYW55KS5nZXRUaW1lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiAoanNvbiBhcyBhbnkpLnRvSVNPU3RyaW5nID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICAgICAgcmV0dXJuIGpzb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoanNvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBqc29uLm1hcCgoaXRlbSkgPT4gcmV2aXZlSlNPTlBhcnNlKGl0ZW0pKSBhcyBhbnk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGpzb24pLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGFjY1trZXkgYXMga2V5b2YgVF0gPSByZXZpdmVKU09OUGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30gYXMgVCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YganNvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBqc29uLm1hdGNoKGlzb0RhdGVQYXR0ZXJuKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkRGF0ZVN0cmluZyA9IG1hdGNoWzJdID8gYCR7bWF0Y2hbMV19JHttYXRjaFsyXS5yZXBsYWNlKCc6JywgJycpfWAgOiBgJHttYXRjaFsxXX1aYDtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShub3JtYWxpemVkRGF0ZVN0cmluZykgYXMgYW55O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBqc29uO1xufVxuXG5jb25zdCBEQl9OQU1FID0gJ1N0YXJnYXRlV29ya2VyJztcbmNvbnN0IFNUT1JFX05BTUUgPSAnY2FjaGVzJztcbmxldCBkYkluc3RhbmNlOiBJREJEYXRhYmFzZSB8IG51bGwgPSBudWxsO1xuXG5hc3luYyBmdW5jdGlvbiBvcGVuREIoKTogUHJvbWlzZTxJREJEYXRhYmFzZT4ge1xuICAgIGlmIChkYkluc3RhbmNlKSByZXR1cm4gZGJJbnN0YW5jZTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihEQl9OQU1FLCAxKTtcbiAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHJlcXVlc3QuZXJyb3IpO1xuICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgICAgIGRiSW5zdGFuY2UgPSByZXF1ZXN0LnJlc3VsdDtcbiAgICAgICAgICAgIHJlc29sdmUoZGJJbnN0YW5jZSk7XG4gICAgICAgIH07XG4gICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYiA9IChldmVudC50YXJnZXQgYXMgSURCT3BlbkRCUmVxdWVzdCkucmVzdWx0O1xuICAgICAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKFNUT1JFX05BTUUpKSB7XG4gICAgICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoU1RPUkVfTkFNRSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0Q2FjaGVTdG9yYWdlKG9wdGlvbnM/OiB7IGVuY3J5cHRpb24/OiBib29sZWFuOyBlbmNyeXB0aW9uS2V5Pzogc3RyaW5nIH0pOiBQcm9taXNlPENhY2hlU3RvcmFnZT4ge1xuICAgIGF3YWl0IG9wZW5EQigpO1xuXG4gICAgbGV0IGVuY3J5cHRpb25LZXk6IENyeXB0b0tleSB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGNvdW50ZXIgPSBuZXcgVWludDhBcnJheSgxNik7XG5cbiAgICBpZiAob3B0aW9ucz8uZW5jcnlwdGlvbikge1xuICAgICAgICBjb25zdCBrZXlTdHJpbmcgPSBvcHRpb25zLmVuY3J5cHRpb25LZXkgPz8gREJfTkFNRTtcbiAgICAgICAgbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGtleVN0cmluZykuZm9yRWFjaCgoYnl0ZSwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGkgPCAxNikgY291bnRlcltpXSA9IGJ5dGU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgICAgICAgY29uc3Qga2V5RGF0YSA9IGVuY29kZXIuZW5jb2RlKGtleVN0cmluZyk7XG4gICAgICAgIGNvbnN0IGltcG9ydGVkS2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoJ3JhdycsIGtleURhdGEsIHsgbmFtZTogJ1BCS0RGMicgfSwgZmFsc2UsIFsnZGVyaXZlS2V5J10pO1xuXG4gICAgICAgIGVuY3J5cHRpb25LZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRlcml2ZUtleShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnUEJLREYyJyxcbiAgICAgICAgICAgICAgICBzYWx0OiBlbmNvZGVyLmVuY29kZSgnbWlsa2lvLXN0YXJnYXRlLXdvcmtlci1jYWNoZScpLFxuICAgICAgICAgICAgICAgIGl0ZXJhdGlvbnM6IDEwMDAwMCxcbiAgICAgICAgICAgICAgICBoYXNoOiAnU0hBLTI1NicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW1wb3J0ZWRLZXksXG4gICAgICAgICAgICB7IG5hbWU6ICdBRVMtQ1RSJywgbGVuZ3RoOiAyNTYgfSxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgWydlbmNyeXB0JywgJ2RlY3J5cHQnXSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbmNyeXB0RGF0YSA9IGFzeW5jIChkYXRhOiBhbnkpOiBQcm9taXNlPFVpbnQ4QXJyYXk+ID0+IHtcbiAgICAgICAgaWYgKCFlbmNyeXB0aW9uS2V5KSByZXR1cm4gZGF0YTtcblxuICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgICAgICAgY29uc3QgZGF0YUJ5dGVzID0gZW5jb2Rlci5lbmNvZGUoanNvblN0cmluZyk7XG5cbiAgICAgICAgY29uc3QgZW5jcnlwdGVkQXJyYXlCdWZmZXIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmVuY3J5cHQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0FFUy1DVFInLFxuICAgICAgICAgICAgICAgIGNvdW50ZXI6IGNvdW50ZXIsXG4gICAgICAgICAgICAgICAgbGVuZ3RoOiA2NCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmNyeXB0aW9uS2V5ISxcbiAgICAgICAgICAgIGRhdGFCeXRlcyxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZW5jcnlwdGVkQXJyYXlCdWZmZXIpO1xuICAgIH07XG5cbiAgICBjb25zdCBkZWNyeXB0RGF0YSA9IGFzeW5jIChlbmNyeXB0ZWREYXRhOiBBcnJheUJ1ZmZlciB8IFVpbnQ4QXJyYXkpOiBQcm9taXNlPGFueT4gPT4ge1xuICAgICAgICBpZiAoIWVuY3J5cHRpb25LZXkgfHwgIWVuY3J5cHRlZERhdGEpIHJldHVybiBlbmNyeXB0ZWREYXRhO1xuXG4gICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gZW5jcnlwdGVkRGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgPyAoZW5jcnlwdGVkRGF0YS5idWZmZXIgYXMgQXJyYXlCdWZmZXIpIDogZW5jcnlwdGVkRGF0YTtcblxuICAgICAgICBjb25zdCBkZWNyeXB0ZWRCeXRlcyA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGVjcnlwdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQUVTLUNUUicsXG4gICAgICAgICAgICAgICAgY291bnRlcjogY291bnRlcixcbiAgICAgICAgICAgICAgICBsZW5ndGg6IDY0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVuY3J5cHRpb25LZXkhLFxuICAgICAgICAgICAgYXJyYXlCdWZmZXIsXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xuICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gZGVjb2Rlci5kZWNvZGUoZGVjcnlwdGVkQnl0ZXMpO1xuICAgICAgICByZXR1cm4gcmV2aXZlSlNPTlBhcnNlKEpTT04ucGFyc2UoanNvblN0cmluZykpO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhc3luYyBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHsgZGF0YTogYW55OyB0aW1lc3RhbXA6IG51bWJlciB9IHwgbnVsbD4ge1xuICAgICAgICAgICAgY29uc3QgZGIgPSBhd2FpdCBvcGVuREIoKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihTVE9SRV9OQU1FLCAncmVhZG9ubHknKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKFNUT1JFX05BTUUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBzdG9yZS5nZXQoa2V5KTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcXVlc3QucmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5lbmNyeXB0aW9uICYmIChyZXN1bHQuZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8IHJlc3VsdC5kYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZERhdGEgPSBhd2FpdCBkZWNyeXB0RGF0YShyZXN1bHQuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHsgZGF0YTogZGVjcnlwdGVkRGF0YSwgdGltZXN0YW1wOiByZXN1bHQudGltZXN0YW1wIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQgPz8gbnVsbCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyBzZXQoa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgY29uc3QgZGIgPSBhd2FpdCBvcGVuREIoKTtcbiAgICAgICAgICAgIGxldCBkYXRhVG9TdG9yZTogYW55ID0gZGF0YTtcblxuICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmVuY3J5cHRpb24pIHtcbiAgICAgICAgICAgICAgICBkYXRhVG9TdG9yZSA9IGF3YWl0IGVuY3J5cHREYXRhKGRhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oU1RPUkVfTkFNRSwgJ3JlYWR3cml0ZScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoU1RPUkVfTkFNRSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLnB1dCh7IGRhdGE6IGRhdGFUb1N0b3JlLCB0aW1lc3RhbXA6IERhdGUubm93KCkgfSwga2V5KTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUNhY2hlS2V5KHBhdGg6IHN0cmluZywgcGFyYW1zOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtwYXRofToke0pTT04uc3RyaW5naWZ5KHBhcmFtcyA/PyB7fSl9YDtcbn1cbiIKICBdLAogICJtYXBwaW5ncyI6ICI7QUFNQSxTQUFTLGlCQUFpQixDQUFDLFNBQTZCO0FBQUEsRUFDdEQsSUFBSSxDQUFDLFFBQVE7QUFBQSxJQUFRLFFBQVEsU0FBUztBQUFBLEVBQ3RDLElBQUksUUFBUSxTQUFTO0FBQUEsSUFBRyxNQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFBQSxFQUN4RCxJQUFJLFFBQVEsU0FBUztBQUFBLElBQUksTUFBTSxJQUFJLE1BQU0sZ0JBQWdCO0FBQUEsRUFDekQsSUFBSSxRQUFRLGFBQWEsUUFBUSxTQUFTO0FBQUEsSUFBRyxNQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFBQSxFQUM3RSxJQUFJLFdBQVc7QUFBQSxFQUNmLElBQUksY0FBYztBQUFBLEVBQ2xCLE9BQU87QUFBQSxJQUNMLFFBQVEsR0FBRztBQUFBLE1BQ1QsSUFBSSxhQUFhLFFBQVE7QUFBQSxNQUN6QixNQUFNLE1BQU0sS0FBSyxJQUFJO0FBQUEsTUFDckIsSUFBSSxLQUFLO0FBQUEsTUFDVCxJQUFJLFFBQVEsV0FBVztBQUFBLFFBQ3JCLGNBQWM7QUFBQSxRQUNkLEtBQUssR0FBRyxLQUFLLGlCQUFpQixPQUFPLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQUEsTUFDNUQ7QUFBQSxNQUNBLElBQUksUUFBUSxjQUFjLGFBQWEsS0FBSztBQUFBLFFBQzFDLEtBQUssR0FBRyxLQUFLLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxTQUFTLEdBQUcsR0FBRztBQUFBLE1BQzlELEVBQU87QUFBQSxRQUNMLFdBQVc7QUFBQSxRQUNYLE1BQU0sTUFBTTtBQUFBLFFBQ1osTUFBTSxNQUFNLGNBQWMsT0FBTyxVQUFVLENBQUM7QUFB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YyxNQUFNLFlBQVksSUFBSTtBQUFBLE1BQ3hDO0FBQUEsTUFFQSxPQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsV0FBVztBQUFBLFFBQ3BDLE1BQU0sY0FBYyxHQUFHLFlBQVksWUFBWSxXQUFXO0FBQUEsUUFDMUQsTUFBTSxRQUFRLFlBQVksWUFBWSxVQUFVO0FBQUEsUUFDaEQsTUFBTSxVQUFVLE1BQU0sSUFBSSxFQUFFLE1BQU0sYUFBYSxXQUFXLEtBQUssSUFBSSxFQUFFLEdBQUcsR0FBRztBQUFBLFFBQzNFLFFBQVEsVUFBVSxNQUFNLE9BQU8sUUFBUSxLQUFLO0FBQUEsUUFDNUMsUUFBUSxZQUFZLE1BQU0sUUFBUTtBQUFBLE9BQ3JDO0FBQUE7QUFBQSxFQUVUO0FBQUE7QUFHSixTQUFTLGdCQUFnQixDQUFDLE1BQWMsUUFBcUI7QUFBQSxFQUN6RCxPQUFPLEdBQUcsUUFBUSxLQUFLLFVBQVUsVUFBVSxDQUFDLENBQUM7QUFBQTsiLAogICJkZWJ1Z0lkIjogIkE4QUU3Q0ZGRDQ5QTY0RDI2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
459
+ //# debugId=144205B4A249D13464756E2164756E21
460
+ //# 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/LnBhcmFtcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGNhY2hlU3RvcmFnZSA9IHN0YXJnYXRlT3B0aW9ucy5jYWNoZVN0b3JhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0cmF0ZWd5ICE9PSAnb2ZmJyAmJiAhY2FjaGVTdG9yYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVN0b3JhZ2UgPSBhd2FpdCBjcmVhdGVEZWZhdWx0Q2FjaGVTdG9yYWdlKHsgZW5jcnlwdGlvbjogc3RhcmdhdGVPcHRpb25zLmNhY2hlRW5jcnlwdGlvbiB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZVN0cmF0ZWd5ICE9PSAnb2ZmJyAmJiBjYWNoZVN0b3JhZ2UgJiYgb3B0aW9ucz8ub25DYWNoZUhpdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gYXdhaXQgY2FjaGVTdG9yYWdlLmdldChjYWNoZUtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgb3B0aW9ucy5vbkNhY2hlSGl0KGNhY2hlZC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlIG9uQ2FjaGVIaXQgZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlU3RyYXRlZ3kgPT09ICd0aHJvdHRsZScgJiYgY2FjaGVTdG9yYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZWQgPSBhd2FpdCBjYWNoZVN0b3JhZ2UuZ2V0KGNhY2hlS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZWQgJiYgRGF0ZS5ub3coKSAtIGNhY2hlZC50aW1lc3RhbXAgPCBjYWNoZVRocm90dGxlTXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShbbnVsbCwgY2FjaGVkLmRhdGEsIHsgZXhlY3V0ZUlkOiAnY2FjaGVkJyB9XSBhcyBhbnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhlY3V0ZVJlcXVlc3QgPSAoKTogUHJvbWlzZTxbYW55LCBhbnksIEV4ZWN1dGVSZXN1bHRzT3B0aW9uXT4gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXFSZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxRXhlY3V0ZUlkID0gX19jcmVhdGVJZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVJZHMuYWRkKHJlcUV4ZWN1dGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlciA9IChldmVudDogeyBkYXRhOiBhbnkgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGV2ZW50LmRhdGEgIT09IFwib2JqZWN0XCIpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuZXhlY3V0ZUlkICE9PSByZXFFeGVjdXRlSWQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUlkcy5kZWxldGUocmVxRXhlY3V0ZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQuZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcjogYW55ID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcltldmVudC5kYXRhLmVycm9yLmNvZGVdID0gZXZlbnQuZGF0YS5lcnJvci5yZWplY3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFSZXNvbHZlKFtlcnJvciwgbnVsbCwgeyBleGVjdXRlSWQ6IHJlcUV4ZWN1dGVJZCB9XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFSZXNvbHZlKFtudWxsLCBldmVudC5kYXRhLmRhdGEsIHsgZXhlY3V0ZUlkOiByZXFFeGVjdXRlSWQgfV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVJZDogcmVxRXhlY3V0ZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IG9wdGlvbnM/LnBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogb3B0aW9ucz8uaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBbZXJyb3IsIHJlc3VsdCwgcmVzdWx0T3B0aW9uXSA9IGF3YWl0IGV4ZWN1dGVSZXF1ZXN0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgcmV0cnlJbmRleCA9IDA7IHJldHJ5SW5kZXggPCByZXRyeUNvdW50ICYmIGVycm9yOyByZXRyeUluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXRyeUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDUwMCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9yLCByZXN1bHQsIHJlc3VsdE9wdGlvbl0gPSBhd2FpdCBleGVjdXRlUmVxdWVzdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdHJhdGVneSAhPT0gJ29mZicgJiYgY2FjaGVTdG9yYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gYXdhaXQgY2FjaGVTdG9yYWdlLmdldChjYWNoZUtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShbbnVsbCwgY2FjaGVkLmRhdGEsIHsgZXhlY3V0ZUlkOiAnY2FjaGVkJyB9XSBhcyBhbnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKFtlcnJvciwgbnVsbCwgcmVzdWx0T3B0aW9uXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVTdHJhdGVneSAhPT0gJ29mZicgJiYgY2FjaGVTdG9yYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBjYWNoZVN0b3JhZ2Uuc2V0KGNhY2hlS2V5LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbbnVsbCwgcmVzdWx0LCByZXN1bHRPcHRpb25dIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RyZWFtXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4ZWN1dGVJZCA9IF9fY3JlYXRlSWQoKTtcbiAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUlkcy5hZGQoZXhlY3V0ZUlkKTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgZmxvdzogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlRmxvdz4gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQ6IHsgZGF0YTogYW55IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXZlbnQuZGF0YSAhPT0gXCJvYmplY3RcIikgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuZXhlY3V0ZUlkICE9PSBleGVjdXRlSWQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmxvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb3cgPSBjcmVhdGVGbG93KHN0YXJnYXRlT3B0aW9ucywgZXhlY3V0ZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50LmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcjogYW55ID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yW2V2ZW50LmRhdGEuZXJyb3IuY29kZV0gPSBldmVudC5kYXRhLmVycm9yLnJlamVjdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbZXJyb3IsIG51bGwsIHsgZXhlY3V0ZUlkIH1dKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuc3VjY2VzcykgcmVzb2x2ZShbbnVsbCwgZmxvdywgeyBleGVjdXRlSWQgfV0gYXMgYW55KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUlkcy5kZWxldGUoZXhlY3V0ZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuc3VjY2VzcykgZmxvdy5yZXR1cm4odW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBmbG93LnRocm93KGV2ZW50LmRhdGEuZGF0YT8uYXQoMCksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWV2ZW50LmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyZ2F0ZU9wdGlvbnMucG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZUlkcy5kZWxldGUoZXhlY3V0ZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvdy50aHJvdyhldmVudC5kYXRhLmRhdGEsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YS5zdWNjZXNzKSBmbG93LmVtaXQoZXZlbnQuZGF0YS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc3RhcmdhdGVPcHRpb25zLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJnYXRlT3B0aW9ucy5wb3J0LnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IG9wdGlvbnM/LnBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG9wdGlvbnM/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/IHt9KX1gO1xufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjtBQU1BLFNBQVMsaUJBQWlCLENBQUMsU0FBNkI7QUFBQSxFQUN0RCxJQUFJLENBQUMsUUFBUTtBQUFBLElBQVEsUUFBUSxTQUFTO0FBQUEsRUFDdEMsSUFBSSxRQUFRLFNBQVM7QUFBQSxJQUFHLE1BQU0sSUFBSSxNQUFNLGdCQUFnQjtBQUFBLEVBQ3hELElBQUksUUFBUSxTQUFTO0FBQUEsSUFBSSxNQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFBQSxFQUN6RCxJQUFJLFFBQVEsYUFBYSxRQUFRLFNBQVM7QUFBQSxJQUFHLE1BQU0sSUFBSSxNQUFNLGdCQUFnQjtBQUFBLEVBQzdFLElBQUksV0FBVztBQUFBLEVBQ2YsSUFBSSxjQUFjO0FBQUEsRUFDbEIsT0FBTztBQUFBLElBQ0wsUUFBUSxHQUFHO0FBQUEsTUFDVCxJQUFJLGFBQWEsUUFBUTtBQUFBLE1BQ3pCLE1BQU0sTUFBTSxLQUFLLElBQUk7QUFBQSxNQUNyQixJQUFJLEtBQUs7QUFBQSxNQUNULElBQUksUUFBUSxXQUFXO0FBQUEsUUFDckIsY0FBYztBQUFBLFFBQ2QsS0FBSyxHQUFHLEtBQUssaUJBQWlCLE9BQU8sR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLEdBQUc7QUFBQSxNQUM1RDtBQUFBLE1BQ0EsSUFBSSxRQUFRLGNBQWMsYUFBYSxLQUFLO0FBQUEsUUFDMUMsS0FBSyxHQUFHLEtBQUssaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQUEsTUFDOUQsRUFBTztBQUFBLFFB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LFVBQVUsSUFBSTtBQUFBO0FBQUEsT0FFN0I7QUFBQTtBQUFBLFNBRUMsSUFBRyxDQUFDLEtBQWEsTUFBMEI7QUFBQSxNQUM3QyxNQUFNLEtBQUssTUFBTSxPQUFPO0FBQUEsTUFDeEIsSUFBSSxjQUFtQjtBQUFBLE1BRXZCLElBQUksU0FBUyxZQUFZO0FBQUEsUUFDckIsY0FBYyxNQUFNLFlBQVksSUFBSTtBQUFBLE1BQ3hDO0FBQUEsTUFFQSxPQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsV0FBVztBQUFBLFFBQ3BDLE1BQU0sY0FBYyxHQUFHLFlBQVksWUFBWSxXQUFXO0FBQUEsUUFDMUQsTUFBTSxRQUFRLFlBQVksWUFBWSxVQUFVO0FBQUEsUUFDaEQsTUFBTSxVQUFVLE1BQU0sSUFBSSxFQUFFLE1BQU0sYUFBYSxXQUFXLEtBQUssSUFBSSxFQUFFLEdBQUcsR0FBRztBQUFBLFFBQzNFLFFBQVEsVUFBVSxNQUFNLE9BQU8sUUFBUSxLQUFLO0FBQUEsUUFDNUMsUUFBUSxZQUFZLE1BQU0sUUFBUTtBQUFBLE9BQ3JDO0FBQUE7QUFBQSxFQUVUO0FBQUE7QUFHSixTQUFTLGdCQUFnQixDQUFDLE1BQWMsUUFBcUI7QUFBQSxFQUN6RCxPQUFPLEdBQUcsUUFBUSxLQUFLLFVBQVUsVUFBVSxDQUFDLENBQUM7QUFBQTsiLAogICJkZWJ1Z0lkIjogIjE0NDIwNUI0QTI0OUQxMzQ2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milkio/stargate-worker",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "type": "module",
5
5
  "exports": "./index.js",
6
6
  "types": "./index.d.ts",