@dbx-tools/lakebox 0.9.161 → 0.9.164

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/lakebox";
6
- export const PACKAGE_VERSION = "0.9.161";
6
+ export const PACKAGE_VERSION = "0.9.164";
7
7
  export * as keyStore from "./src/key-store.ts";
8
8
  export * as lifecycle from "./src/lifecycle.ts";
9
9
  export * as rest from "./src/rest.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/lakebox";
2
- export declare const PACKAGE_VERSION = "0.9.161";
2
+ export declare const PACKAGE_VERSION = "0.9.164";
3
3
  export * as keyStore from "./src/key-store.ts";
4
4
  export * as lifecycle from "./src/lifecycle.ts";
5
5
  export * as rest from "./src/rest.ts";
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/lakebox";
5
- export const PACKAGE_VERSION = "0.9.161";
5
+ export const PACKAGE_VERSION = "0.9.164";
6
6
  export * as keyStore from "./src/key-store.js";
7
7
  export * as lifecycle from "./src/lifecycle.js";
8
8
  export * as rest from "./src/rest.js";
@@ -15,4 +15,4 @@ export { LakeboxEntrySchema, LakeboxSshKeySchema, LakeboxApiError, LakeboxClient
15
15
  export { SshSession, resolvePublicGatewayAddresses } from "./src/session.js";
16
16
  export { SSH_POOL_MAX, SshCommand, PooledSshTransport, createSshTransport, sshCommandScript } from "./src/ssh.js";
17
17
  export { SshTransportModeSchema, Ssh2PatchModeSchema } from "./src/transport.js";
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQztBQUN2RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxRQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25JLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlILE9BQU8sRUFBRSxVQUFVLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvbGFrZWJveFwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjE2MVwiO1xuZXhwb3J0ICogYXMga2V5U3RvcmUgZnJvbSBcIi4vc3JjL2tleS1zdG9yZS50c1wiO1xuZXhwb3J0ICogYXMgbGlmZWN5Y2xlIGZyb20gXCIuL3NyYy9saWZlY3ljbGUudHNcIjtcbmV4cG9ydCAqIGFzIHJlc3QgZnJvbSBcIi4vc3JjL3Jlc3QudHNcIjtcbmV4cG9ydCAqIGFzIHNlc3Npb24gZnJvbSBcIi4vc3JjL3Nlc3Npb24udHNcIjtcbmV4cG9ydCAqIGFzIHNzaCBmcm9tIFwiLi9zcmMvc3NoLnRzXCI7XG5leHBvcnQgKiBhcyB0cmFuc3BvcnQgZnJvbSBcIi4vc3JjL3RyYW5zcG9ydC50c1wiO1xuZXhwb3J0IHsgU3NoS2V5U3RvcmUgfSBmcm9tIFwiLi9zcmMva2V5LXN0b3JlLnRzXCI7XG5leHBvcnQgeyBub3JtYWxpemVMYWtlYm94U3RhdHVzLCBsYWtlYm94SWRsZVRpbWVvdXRTZWNvbmRzLCBlbnN1cmVMYWtlYm94UnVubmluZywgZW5zdXJlTGFrZWJveFN0b3BwZWQgfSBmcm9tIFwiLi9zcmMvbGlmZWN5Y2xlLnRzXCI7XG5leHBvcnQgeyBMYWtlYm94RW50cnlTY2hlbWEsIExha2Vib3hTc2hLZXlTY2hlbWEsIExha2Vib3hBcGlFcnJvciwgTGFrZWJveENsaWVudCwgaXNMYWtlYm94VW5hdmFpbGFibGUgfSBmcm9tIFwiLi9zcmMvcmVzdC50c1wiO1xuZXhwb3J0IHR5cGUgeyBMYWtlYm94RW50cnksIExha2Vib3hTc2hLZXksIExha2Vib3hBdXRoIH0gZnJvbSBcIi4vc3JjL3Jlc3QudHNcIjtcbmV4cG9ydCB7IFNzaFNlc3Npb24sIHJlc29sdmVQdWJsaWNHYXRld2F5QWRkcmVzc2VzIH0gZnJvbSBcIi4vc3JjL3Nlc3Npb24udHNcIjtcbmV4cG9ydCB0eXBlIHsgU3NoU2Vzc2lvbk9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvc2Vzc2lvbi50c1wiO1xuZXhwb3J0IHsgU1NIX1BPT0xfTUFYLCBTc2hDb21tYW5kLCBQb29sZWRTc2hUcmFuc3BvcnQsIGNyZWF0ZVNzaFRyYW5zcG9ydCwgc3NoQ29tbWFuZFNjcmlwdCB9IGZyb20gXCIuL3NyYy9zc2gudHNcIjtcbmV4cG9ydCB0eXBlIHsgU3NoRXhlY3V0aW9uT3B0aW9ucywgU3NoQ29tbWFuZEV4ZWN1dGlvbiwgU3NoVHJhbnNwb3J0T3B0aW9ucywgU3NoVHJhbnNwb3J0LCBTc2hSZXNvdXJjZUxpZmVjeWNsZSwgU3NoUG9vbE9wdGlvbnMsIFNzaFRyYW5zcG9ydEZhY3RvcmllcywgU3NoQ29tbWFuZElkZW50aXR5IH0gZnJvbSBcIi4vc3JjL3NzaC50c1wiO1xuZXhwb3J0IHsgU3NoVHJhbnNwb3J0TW9kZVNjaGVtYSwgU3NoMlBhdGNoTW9kZVNjaGVtYSB9IGZyb20gXCIuL3NyYy90cmFuc3BvcnQudHNcIjtcbmV4cG9ydCB0eXBlIHsgU3NoVHJhbnNwb3J0TW9kZSwgU3NoMlBhdGNoTW9kZSB9IGZyb20gXCIuL3NyYy90cmFuc3BvcnQudHNcIjtcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQztBQUN2RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxRQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25JLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlILE9BQU8sRUFBRSxVQUFVLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvbGFrZWJveFwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjE2NFwiO1xuZXhwb3J0ICogYXMga2V5U3RvcmUgZnJvbSBcIi4vc3JjL2tleS1zdG9yZS50c1wiO1xuZXhwb3J0ICogYXMgbGlmZWN5Y2xlIGZyb20gXCIuL3NyYy9saWZlY3ljbGUudHNcIjtcbmV4cG9ydCAqIGFzIHJlc3QgZnJvbSBcIi4vc3JjL3Jlc3QudHNcIjtcbmV4cG9ydCAqIGFzIHNlc3Npb24gZnJvbSBcIi4vc3JjL3Nlc3Npb24udHNcIjtcbmV4cG9ydCAqIGFzIHNzaCBmcm9tIFwiLi9zcmMvc3NoLnRzXCI7XG5leHBvcnQgKiBhcyB0cmFuc3BvcnQgZnJvbSBcIi4vc3JjL3RyYW5zcG9ydC50c1wiO1xuZXhwb3J0IHsgU3NoS2V5U3RvcmUgfSBmcm9tIFwiLi9zcmMva2V5LXN0b3JlLnRzXCI7XG5leHBvcnQgeyBub3JtYWxpemVMYWtlYm94U3RhdHVzLCBsYWtlYm94SWRsZVRpbWVvdXRTZWNvbmRzLCBlbnN1cmVMYWtlYm94UnVubmluZywgZW5zdXJlTGFrZWJveFN0b3BwZWQgfSBmcm9tIFwiLi9zcmMvbGlmZWN5Y2xlLnRzXCI7XG5leHBvcnQgeyBMYWtlYm94RW50cnlTY2hlbWEsIExha2Vib3hTc2hLZXlTY2hlbWEsIExha2Vib3hBcGlFcnJvciwgTGFrZWJveENsaWVudCwgaXNMYWtlYm94VW5hdmFpbGFibGUgfSBmcm9tIFwiLi9zcmMvcmVzdC50c1wiO1xuZXhwb3J0IHR5cGUgeyBMYWtlYm94RW50cnksIExha2Vib3hTc2hLZXksIExha2Vib3hBdXRoIH0gZnJvbSBcIi4vc3JjL3Jlc3QudHNcIjtcbmV4cG9ydCB7IFNzaFNlc3Npb24sIHJlc29sdmVQdWJsaWNHYXRld2F5QWRkcmVzc2VzIH0gZnJvbSBcIi4vc3JjL3Nlc3Npb24udHNcIjtcbmV4cG9ydCB0eXBlIHsgU3NoU2Vzc2lvbk9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvc2Vzc2lvbi50c1wiO1xuZXhwb3J0IHsgU1NIX1BPT0xfTUFYLCBTc2hDb21tYW5kLCBQb29sZWRTc2hUcmFuc3BvcnQsIGNyZWF0ZVNzaFRyYW5zcG9ydCwgc3NoQ29tbWFuZFNjcmlwdCB9IGZyb20gXCIuL3NyYy9zc2gudHNcIjtcbmV4cG9ydCB0eXBlIHsgU3NoRXhlY3V0aW9uT3B0aW9ucywgU3NoQ29tbWFuZEV4ZWN1dGlvbiwgU3NoVHJhbnNwb3J0T3B0aW9ucywgU3NoVHJhbnNwb3J0LCBTc2hSZXNvdXJjZUxpZmVjeWNsZSwgU3NoUG9vbE9wdGlvbnMsIFNzaFRyYW5zcG9ydEZhY3RvcmllcywgU3NoQ29tbWFuZElkZW50aXR5IH0gZnJvbSBcIi4vc3JjL3NzaC50c1wiO1xuZXhwb3J0IHsgU3NoVHJhbnNwb3J0TW9kZVNjaGVtYSwgU3NoMlBhdGNoTW9kZVNjaGVtYSB9IGZyb20gXCIuL3NyYy90cmFuc3BvcnQudHNcIjtcbmV4cG9ydCB0eXBlIHsgU3NoVHJhbnNwb3J0TW9kZSwgU3NoMlBhdGNoTW9kZSB9IGZyb20gXCIuL3NyYy90cmFuc3BvcnQudHNcIjtcbiJdfQ==
@@ -303,6 +303,9 @@ function shouldResolvePublicGateway(host, error) {
303
303
  return false;
304
304
  const code = error?.code ??
305
305
  error?.cause?.code;
306
- return code === "EHOSTUNREACH" || code === "ENETUNREACH" || code === "ETIMEDOUT";
306
+ return (code === "ECONNREFUSED" ||
307
+ code === "EHOSTUNREACH" ||
308
+ code === "ENETUNREACH" ||
309
+ code === "ETIMEDOUT");
307
310
  }
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sSUFBbUMsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN4QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixnQkFBZ0IsR0FHakIsTUFBTSxVQUFVLENBQUM7QUFHbEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQUN4QixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3pDLE1BQU0scUJBQXFCLEdBQUcsc0NBQXNDLENBQUM7QUFFckUsTUFBTSxlQUFlLEdBQUcsQ0FBQztLQUN0QixNQUFNLENBQUM7SUFDTixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQztJQUMxRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQztDQUMvQyxDQUFDO0tBQ0QsV0FBVyxFQUFFO0tBQ2IsUUFBUSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFFakQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDO0tBQ3hCLE1BQU0sQ0FBQztJQUNOLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyw4QkFBOEIsQ0FBQztDQUNyRixDQUFDO0tBQ0Qs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c2ggfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7IGlzSVAgfSBmcm9tIFwibm9kZTpuZXRcIjtcbmltcG9ydCB0eXBlIHsgRHVwbGV4IH0gZnJvbSBcIm5vZGU6c3RyZWFtXCI7XG5pbXBvcnQgeyBsb2csIHRvRXJyb3IgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHNzaDIsIHsgdHlwZSBDbGllbnQgYXMgU3NoMkNsaWVudCB9IGZyb20gXCJzc2gyXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHtcbiAgY3JlYXRlU3NoVHJhbnNwb3J0LFxuICBTc2hDb21tYW5kLFxuICBzc2hDb21tYW5kU2NyaXB0LFxuICB0eXBlIFNzaENvbW1hbmRJZGVudGl0eSxcbiAgdHlwZSBTc2hUcmFuc3BvcnQsXG59IGZyb20gXCIuL3NzaC50c1wiO1xuaW1wb3J0IHR5cGUgeyBTc2gyUGF0Y2hNb2RlLCBTc2hUcmFuc3BvcnRNb2RlIH0gZnJvbSBcIi4vdHJhbnNwb3J0LnRzXCI7XG5cbmNvbnN0IHsgQ2xpZW50IH0gPSBzc2gyO1xuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcImxha2Vib3g6c3NoXCIpO1xuY29uc3QgU0VSVklDRV9ESVJFQ1RfU1VGRklYID0gXCIuc2VydmljZS1kaXJlY3QuY2xvdWQuZGF0YWJyaWNrcy5jb21cIjtcblxuY29uc3QgRG5zQW5zd2VyU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6Lm51bWJlcigpLmludCgpLmRlc2NyaWJlKFwiRE5TIHJlY29yZCB0eXBlIG51bWJlci5cIiksXG4gICAgZGF0YTogei5zdHJpbmcoKS5kZXNjcmliZShcIkROUyByZWNvcmQgdmFsdWUuXCIpLFxuICB9KVxuICAucGFzc3Rocm91Z2goKVxuICAuZGVzY3JpYmUoXCJPbmUgRE5TLW92ZXItSFRUUFMgYW5zd2VyIHJlY29yZC5cIik7XG5cbmNvbnN0IERuc1Jlc3BvbnNlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBBbnN3ZXI6IHouYXJyYXkoRG5zQW5zd2VyU2NoZW1hKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUmVzb2x2ZWQgRE5TIGFuc3dlciByZWNvcmRzLlwiKSxcbiAgfSlcbiAgLnBhc3N0aHJvdWdoKClcbiAgLmRlc2NyaWJlKFwiR29vZ2xlIEROUy1vdmVyLUhUVFBTIEpTT04gcmVzcG9uc2UuXCIpO1xuXG4vKiogQ29ubmVjdGlvbiwga2V5LCBob3N0LXZlcmlmaWNhdGlvbiwgYW5kIGNvbW1hbmQgc2V0dGluZ3MgZm9yIG9uZSBTU0ggbWFjaGluZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3NoU2Vzc2lvbk9wdGlvbnMge1xuICAvKiogRGF0YWJyaWNrcyBMYWtlYm94IGdhdGV3YXkgaG9zdG5hbWUuICovXG4gIGhvc3Q6IHN0cmluZztcbiAgLyoqIFNTSCBnYXRld2F5IHBvcnQuICovXG4gIHBvcnQ6IG51bWJlcjtcbiAgLyoqIFNTSCB1c2VybmFtZSBhY2NlcHRlZCBieSB0aGUgZ2F0ZXdheTogdGhlIExha2Vib3ggSUQuICovXG4gIHVzZXJuYW1lOiBzdHJpbmc7XG4gIC8qKiBJbi1tZW1vcnkgcHJpdmF0ZSBrZXkgdXNlZCBmb3IgdGhlIHZlcmlmaWVkIFNTSCBoYW5kc2hha2UgYW5kIHNzaDIgZmFsbGJhY2suICovXG4gIHByaXZhdGVLZXk6IHN0cmluZztcbiAgLyoqIFByaXZhdGUga2V5IGZpbGUgdXNlZCBieSBuYXRpdmUgT3BlblNTSC4gKi9cbiAgcHJpdmF0ZUtleVBhdGg6IHN0cmluZztcbiAgLyoqIERlZGljYXRlZCBPcGVuU1NIIGtub3duLWhvc3QgZmlsZSBmb3IgdGhpcyB3b3Jrc3BhY2UsIHVzZXIsIGFuZCBnYXRld2F5LiAqL1xuICBrbm93bkhvc3RzUGF0aDogc3RyaW5nO1xuICAvKiogQ29ubmVjdGlvbiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgY29ubmVjdFRpbWVvdXRNczogbnVtYmVyO1xuICAvKiogU1NIIHRyYW5zcG9ydCBzZWxlY3RlZCBmb3IgdGhpcyBzZXNzaW9uLiAqL1xuICBzc2hUcmFuc3BvcnQ6IFNzaFRyYW5zcG9ydE1vZGU7XG4gIC8qKiBzc2gyIG1pc3NpbmctZXhlYy1yZXBseSBwYXRjaCBwb2xpY3kuICovXG4gIHNzaDJQYXRjaDogU3NoMlBhdGNoTW9kZTtcbiAgLyoqIFByZXZpb3VzbHkgdHJ1c3RlZCBTSEEtMjU2IGhvc3Qta2V5IGZpbmdlcnByaW50LiAqL1xuICBrbm93bkhvc3Q/OiBzdHJpbmc7XG4gIC8qKiBQZXJzaXN0cyB0aGUgYWNjZXB0ZWQgaG9zdCBrZXkgZm9yIGJvdGggc3NoMiBhbmQgbmF0aXZlIE9wZW5TU0guICovXG4gIHJlbWVtYmVySG9zdD86IChmaW5nZXJwcmludDogc3RyaW5nLCBrZXk6IEJ1ZmZlcikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgLyoqIE5hdGl2ZSBPcGVuU1NIIGV4ZWN1dGFibGUuIERlZmF1bHRzIHRvIGBzc2hgIG9uIGBQQVRIYC4gKi9cbiAgc3NoQ29tbWFuZD86IHN0cmluZztcbiAgLyoqIFJlc29sdmVzIHB1YmxpYyBmYWxsYmFjayBhZGRyZXNzZXMgZm9yIGEgc2VydmljZS1kaXJlY3QgZ2F0ZXdheS4gKi9cbiAgcmVzb2x2ZVB1YmxpY0FkZHJlc3Nlcz86IChob3N0OiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nW10+O1xufVxuXG4vKipcbiAqIFZlcmlmaWVkIFNTSCBzZXNzaW9uIHRoYXQgZGVsZWdhdGVzIGNvbW1hbmRzIGFuZCByZW1vdGUgVENQIGNvbm5lY3Rpb25zIHRvXG4gKiB0aGUgdHJhbnNwb3J0IHNlbGVjdGVkIGJ5IGBzcmMvc3NoLnRzYC5cbiAqXG4gKiBUaGUgaW5pdGlhbCBzc2gyIGhhbmRzaGFrZSB2ZXJpZmllcyBhbmQgcGVyc2lzdHMgdGhlIERhdGFicmlja3MgZ2F0ZXdheSBob3N0XG4gKiBrZXkuIFRoZSBzZWxlY3RlZCB0cmFuc3BvcnQgdGhlbiBzdGFydHMgaXRzIHBvb2xlZCBjb21tYW5kIGFuZCBmb3J3YXJkaW5nXG4gKiByZXNvdXJjZXMuIFJlc29sdmVkIHRyYW5zcG9ydCBhbmQgcGF0Y2ggcG9saWN5IGRldGVybWluZSB3aGV0aGVyIHRoZSB2ZXJpZmllZFxuICogY2xpZW50IHNlZWRzIHRoZSBzc2gyIHBvb2wgb3IgaXMgcmVwbGFjZWQgYnkgbmF0aXZlIE9wZW5TU0ggQ29udHJvbE1hc3RlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTc2hTZXNzaW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmVDb21tYW5kcyA9IG5ldyBTZXQ8U3NoQ29tbWFuZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwZW5kaW5nQ2xpZW50cyA9IG5ldyBTZXQ8U3NoMkNsaWVudD4oKTtcbiAgcHJpdmF0ZSB0cmFuc3BvcnQ/OiBTc2hUcmFuc3BvcnQ7XG4gIHByaXZhdGUgY29ubmVjdGluZz86IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUgY2xvc2luZz86IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUga25vd25Ib3N0Pzogc3RyaW5nO1xuICBwcml2YXRlIGNsb3NlZCA9IGZhbHNlO1xuXG4gIC8qKiBDcmVhdGVzIGEgZGlzY29ubmVjdGVkIHNlc3Npb24uIENhbGwge0BsaW5rIGNvbm5lY3R9IG9yIGFub3RoZXIgb3BlcmF0aW9uIHRvIGNvbm5lY3QuICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogU3NoU2Vzc2lvbk9wdGlvbnMpIHtcbiAgICB0aGlzLmtub3duSG9zdCA9IG9wdGlvbnMua25vd25Ib3N0O1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHRoZSBnYXRld2F5LCByZXNvbHZlcyBpdHMgcHVibGljIGZhbGxiYWNrIHdoZW4gbmVjZXNzYXJ5LCBhbmRcbiAgICogc2VsZWN0cyB0aGUgY29tbWFuZCBhbmQgZm9yd2FyZGluZyB0cmFuc3BvcnQuXG4gICAqL1xuICBhc3luYyBjb25uZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgdGhyb3cgbmV3IEVycm9yKFwiU1NIIHNlc3Npb24gaXMgY2xvc2VkXCIpO1xuICAgIGlmICh0aGlzLnRyYW5zcG9ydCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmNvbm5lY3RpbmcpIHJldHVybiB0aGlzLmNvbm5lY3Rpbmc7XG4gICAgdGhpcy5jb25uZWN0aW5nID0gdGhpcy5jb25uZWN0V2l0aEZhbGxiYWNrKCkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3RpbmcgPSB1bmRlZmluZWQ7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25uZWN0V2l0aEZhbGxiYWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbm5lY3RIb3N0KHRoaXMub3B0aW9ucy5ob3N0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFzaG91bGRSZXNvbHZlUHVibGljR2F0ZXdheSh0aGlzLm9wdGlvbnMuaG9zdCwgZXJyb3IpKSB0aHJvdyBlcnJvcjtcbiAgICAgIGNvbnN0IHJlc29sdmVBZGRyZXNzZXMgPSB0aGlzLm9wdGlvbnMucmVzb2x2ZVB1YmxpY0FkZHJlc3NlcyA/PyByZXNvbHZlUHVibGljR2F0ZXdheUFkZHJlc3NlcztcbiAgICAgIGxldCBhZGRyZXNzZXM6IHN0cmluZ1tdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWRkcmVzc2VzID0gYXdhaXQgcmVzb2x2ZUFkZHJlc3Nlcyh0aGlzLm9wdGlvbnMuaG9zdCk7XG4gICAgICB9IGNhdGNoIChyZXNvbHZlRXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oXCJwdWJsaWMgTGFrZWJveCBnYXRld2F5IHJlc29sdXRpb24gZmFpbGVkXCIsIHtcbiAgICAgICAgICBob3N0OiB0aGlzLm9wdGlvbnMuaG9zdCxcbiAgICAgICAgICBlcnJvcjogdG9FcnJvcihyZXNvbHZlRXJyb3IpLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBsb2dnZXIud2FybihcInByaXZhdGUgTGFrZWJveCBnYXRld2F5IHVucmVhY2hhYmxlOyByZXRyeWluZyBwdWJsaWMgYWRkcmVzc2VzXCIsIHtcbiAgICAgICAgaG9zdDogdGhpcy5vcHRpb25zLmhvc3QsXG4gICAgICAgIGFkZHJlc3NDb3VudDogYWRkcmVzc2VzLmxlbmd0aCxcbiAgICAgIH0pO1xuICAgICAgbGV0IGxhc3RFcnJvcjogdW5rbm93biA9IGVycm9yO1xuICAgICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIGFkZHJlc3Nlcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuY29ubmVjdEhvc3QoYWRkcmVzcyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGNhdGNoIChjb25uZWN0RXJyb3IpIHtcbiAgICAgICAgICBsYXN0RXJyb3IgPSBjb25uZWN0RXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IGxhc3RFcnJvcjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3RIb3N0KGNvbm5lY3RIb3N0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHRocm93IG5ldyBFcnJvcihcIlNTSCBzZXNzaW9uIGlzIGNsb3NlZFwiKTtcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmNyZWF0ZVZlcmlmaWVkQ2xpZW50KGNvbm5lY3RIb3N0LCB0cnVlKTtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgIGNsaWVudC5kZXN0cm95KCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTU0ggc2Vzc2lvbiBpcyBjbG9zZWRcIik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0cmFuc3BvcnQgPSBhd2FpdCBjcmVhdGVTc2hUcmFuc3BvcnQoe1xuICAgICAgICBob3N0OiB0aGlzLm9wdGlvbnMuaG9zdCxcbiAgICAgICAgY29ubmVjdEhvc3QsXG4gICAgICAgIHBvcnQ6IHRoaXMub3B0aW9ucy5wb3J0LFxuICAgICAgICB1c2VybmFtZTogdGhpcy5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICBwcml2YXRlS2V5UGF0aDogdGhpcy5vcHRpb25zLnByaXZhdGVLZXlQYXRoLFxuICAgICAgICBrbm93bkhvc3RzUGF0aDogdGhpcy5vcHRpb25zLmtub3duSG9zdHNQYXRoLFxuICAgICAgICBjb25uZWN0VGltZW91dE1zOiB0aGlzLm9wdGlvbnMuY29ubmVjdFRpbWVvdXRNcyxcbiAgICAgICAgc3NoMkNsaWVudDogY2xpZW50LFxuICAgICAgICBjcmVhdGVTc2gyQ29tbWFuZENsaWVudDogKCkgPT4gdGhpcy5jcmVhdGVWZXJpZmllZENsaWVudChjb25uZWN0SG9zdCwgZmFsc2UpLFxuICAgICAgICB0cmFuc3BvcnQ6IHRoaXMub3B0aW9ucy5zc2hUcmFuc3BvcnQsXG4gICAgICAgIHNzaDJQYXRjaDogdGhpcy5vcHRpb25zLnNzaDJQYXRjaCxcbiAgICAgICAgLi4uKHRoaXMub3B0aW9ucy5zc2hDb21tYW5kID8geyBzc2hDb21tYW5kOiB0aGlzLm9wdGlvbnMuc3NoQ29tbWFuZCB9IDoge30pLFxuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgYXdhaXQgdHJhbnNwb3J0LmNsb3NlKCk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNTSCBzZXNzaW9uIGlzIGNsb3NlZFwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudHJhbnNwb3J0ID0gdHJhbnNwb3J0O1xuICAgICAgdGhpcy5jb25uZWN0aW5nID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKHRyYW5zcG9ydC5raW5kID09PSBcIm9wZW5zc2hcIikgY2xpZW50LmRlc3Ryb3koKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY2xpZW50LmRlc3Ryb3koKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVmVyaWZpZWRDbGllbnQoY29ubmVjdEhvc3Q6IHN0cmluZywgcmVtZW1iZXJIb3N0OiBib29sZWFuKTogUHJvbWlzZTxTc2gyQ2xpZW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKFwiU1NIIHNlc3Npb24gaXMgY2xvc2VkXCIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY2xpZW50ID0gbmV3IENsaWVudCgpO1xuICAgICAgdGhpcy5wZW5kaW5nQ2xpZW50cy5hZGQoY2xpZW50KTtcbiAgICAgIGxldCB2ZXJpZmllZEhvc3Q6IHsgZmluZ2VycHJpbnQ6IHN0cmluZzsga2V5OiBCdWZmZXIgfSB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBzZXR0bGVkID0gZmFsc2U7XG4gICAgICBjb25zdCBmaW5pc2hTZXR0bGVtZW50ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnBlbmRpbmdDbGllbnRzLmRlbGV0ZShjbGllbnQpO1xuICAgICAgfTtcbiAgICAgIGNsaWVudC5vbmNlKFwicmVhZHlcIiwgKCkgPT4ge1xuICAgICAgICBjb25zdCBmaW5pc2ggPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKCF2ZXJpZmllZEhvc3QpIHRocm93IG5ldyBFcnJvcihcIlNTSCBnYXRld2F5IGRpZCBub3QgcHJvdmlkZSBhIHZlcmlmaWVkIGhvc3Qga2V5XCIpO1xuICAgICAgICAgIHRoaXMua25vd25Ib3N0ID0gdmVyaWZpZWRIb3N0LmZpbmdlcnByaW50O1xuICAgICAgICAgIGlmIChyZW1lbWJlckhvc3QpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMub3B0aW9ucy5yZW1lbWJlckhvc3Q/Lih2ZXJpZmllZEhvc3QuZmluZ2VycHJpbnQsIHZlcmlmaWVkSG9zdC5rZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICBmaW5pc2hTZXR0bGVtZW50KCk7XG4gICAgICAgICAgcmVzb2x2ZShjbGllbnQpO1xuICAgICAgICB9O1xuICAgICAgICB2b2lkIGZpbmlzaCgpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNsaWVudC5kZXN0cm95KCk7XG4gICAgICAgICAgaWYgKHNldHRsZWQpIHJldHVybjtcbiAgICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICBmaW5pc2hTZXR0bGVtZW50KCk7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGNsaWVudC5vbmNlKFwiZXJyb3JcIiwgKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChzZXR0bGVkKSByZXR1cm47XG4gICAgICAgIHNldHRsZWQgPSB0cnVlO1xuICAgICAgICBmaW5pc2hTZXR0bGVtZW50KCk7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgICAgIGNsaWVudC5vbmNlKFwiY2xvc2VcIiwgKCkgPT4ge1xuICAgICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuO1xuICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgZmluaXNoU2V0dGxlbWVudCgpO1xuICAgICAgICByZWplY3QobmV3IEVycm9yKFwiU1NIIGdhdGV3YXkgY2xvc2VkIGJlZm9yZSBhdXRoZW50aWNhdGlvbiBjb21wbGV0ZWRcIikpO1xuICAgICAgfSk7XG4gICAgICB0cnkge1xuICAgICAgICBjbGllbnQuY29ubmVjdCh7XG4gICAgICAgICAgaG9zdDogY29ubmVjdEhvc3QsXG4gICAgICAgICAgcG9ydDogdGhpcy5vcHRpb25zLnBvcnQsXG4gICAgICAgICAgdXNlcm5hbWU6IHRoaXMub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICBwcml2YXRlS2V5OiB0aGlzLm9wdGlvbnMucHJpdmF0ZUtleSxcbiAgICAgICAgICByZWFkeVRpbWVvdXQ6IHRoaXMub3B0aW9ucy5jb25uZWN0VGltZW91dE1zLFxuICAgICAgICAgIGtlZXBhbGl2ZUludGVydmFsOiAxNV8wMDAsXG4gICAgICAgICAga2VlcGFsaXZlQ291bnRNYXg6IDMsXG4gICAgICAgICAgaG9zdFZlcmlmaWVyOiAoa2V5OiBCdWZmZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbmdlcnByaW50ID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoa2V5KS5kaWdlc3QoXCJiYXNlNjRcIik7XG4gICAgICAgICAgICBpZiAodGhpcy5rbm93bkhvc3QgJiYgZmluZ2VycHJpbnQgIT09IHRoaXMua25vd25Ib3N0KSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB2ZXJpZmllZEhvc3QgPSB7IGZpbmdlcnByaW50LCBrZXk6IEJ1ZmZlci5mcm9tKGtleSkgfTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgc2V0dGxlZCA9IHRydWU7XG4gICAgICAgIGZpbmlzaFNldHRsZW1lbnQoKTtcbiAgICAgICAgY2xpZW50LmRlc3Ryb3koKTtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgb25lIGNvbW1hbmQgYXMgYSBMYWtlYm94IHVzZXIgYW5kIHJldHVybnMgaXRzIGxpdmUgb3V0cHV0IGFuZFxuICAgKiBjb21wbGV0aW9uIHN0YXRlIGltbWVkaWF0ZWx5LlxuICAgKi9cbiAgZXhlY3V0ZShcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgYXJnczogc3RyaW5nW10sXG4gICAgb3B0aW9uczoge1xuICAgICAgdXNlcjogeyBuYW1lOiBzdHJpbmc7IGhvbWU6IHN0cmluZyB9O1xuICAgICAgY3dkPzogc3RyaW5nO1xuICAgICAgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICAgIHRpbWVvdXRNczogbnVtYmVyO1xuICAgICAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gICAgfSxcbiAgKTogU3NoQ29tbWFuZCB7XG4gICAgY29uc3QgeyB1c2VyLCAuLi5yZXN0IH0gPSBvcHRpb25zO1xuICAgIHJldHVybiB0aGlzLnN0YXJ0Q29tbWFuZChjb21tYW5kLCBhcmdzLCByZXN0LCB7IGtpbmQ6IFwidXNlclwiLCAuLi51c2VyIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbCBTdGFydHMgb25lIGZpeGVkIHBhY2thZ2Utb3duZWQgYm9vdHN0cmFwIGNvbW1hbmQgYXMgcm9vdC5cbiAgICpcbiAgICogTmV2ZXIgcm91dGUgUkVTVCwgYWdlbnQtdG9vbCwgc2VydmljZSwgb3IgZW52aXJvbm1lbnQgaW5wdXQgaGVyZS5cbiAgICovXG4gIGV4ZWN1dGVQcml2aWxlZ2VkKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBhcmdzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiB7IHRpbWVvdXRNczogbnVtYmVyOyBzaWduYWw/OiBBYm9ydFNpZ25hbCB9LFxuICApOiBTc2hDb21tYW5kIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydENvbW1hbmQoY29tbWFuZCwgYXJncywgb3B0aW9ucywgeyBraW5kOiBcInJvb3RcIiB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRDb21tYW5kKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBhcmdzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBjd2Q/OiBzdHJpbmc7XG4gICAgICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgICAgdGltZW91dE1zOiBudW1iZXI7XG4gICAgICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgICB9LFxuICAgIGlkZW50aXR5OiBTc2hDb21tYW5kSWRlbnRpdHksXG4gICk6IFNzaENvbW1hbmQge1xuICAgIGNvbnN0IHNjcmlwdCA9IHNzaENvbW1hbmRTY3JpcHQoY29tbWFuZCwgYXJncywgb3B0aW9ucy5jd2QsIG9wdGlvbnMuZW52LCBpZGVudGl0eSk7XG4gICAgY29uc3Qgc3NoQ29tbWFuZCA9IG5ldyBTc2hDb21tYW5kKGNvbW1hbmQsIGFyZ3MsIG9wdGlvbnMsIGFzeW5jIChleGVjdXRpb24pID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuY29ubmVjdCgpO1xuICAgICAgaWYgKGV4ZWN1dGlvbi5zaWduYWwuYWJvcnRlZCkgcmV0dXJuIDEzMDtcbiAgICAgIGNvbnN0IHRyYW5zcG9ydCA9IHRoaXMudHJhbnNwb3J0O1xuICAgICAgaWYgKCF0cmFuc3BvcnQpIHRocm93IG5ldyBFcnJvcihcIlNTSCB0cmFuc3BvcnQgZGlkIG5vdCBpbml0aWFsaXplXCIpO1xuICAgICAgcmV0dXJuIHRyYW5zcG9ydC5ydW4oc2NyaXB0LCBleGVjdXRpb24pO1xuICAgIH0pO1xuICAgIHRoaXMuYWN0aXZlQ29tbWFuZHMuYWRkKHNzaENvbW1hbmQpO1xuICAgIGNvbnN0IHJlbW92ZSA9ICgpID0+IHRoaXMuYWN0aXZlQ29tbWFuZHMuZGVsZXRlKHNzaENvbW1hbmQpO1xuICAgIHZvaWQgc3NoQ29tbWFuZC5yZXN1bHQudGhlbihyZW1vdmUsIHJlbW92ZSk7XG4gICAgcmV0dXJuIHNzaENvbW1hbmQ7XG4gIH1cblxuICAvKiogT3BlbnMgYSByZW1vdGUgVENQIGNvbm5lY3Rpb24gdGhyb3VnaCBuYXRpdmUgU09DS1M1IG9yIHNzaDIgZGlyZWN0IGZvcndhcmRpbmcuICovXG4gIGFzeW5jIGZvcndhcmRPdXQocmVtb3RlSG9zdDogc3RyaW5nLCByZW1vdGVQb3J0OiBudW1iZXIpOiBQcm9taXNlPER1cGxleD4ge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdCgpO1xuICAgIGNvbnN0IHRyYW5zcG9ydCA9IHRoaXMudHJhbnNwb3J0O1xuICAgIGlmICghdHJhbnNwb3J0KSB0aHJvdyBuZXcgRXJyb3IoXCJTU0ggdHJhbnNwb3J0IGRpZCBub3QgaW5pdGlhbGl6ZVwiKTtcbiAgICByZXR1cm4gdHJhbnNwb3J0LmNvbm5lY3QocmVtb3RlSG9zdCwgcmVtb3RlUG9ydCk7XG4gIH1cblxuICAvKiogQ2FuY2VscyBhY3RpdmUgY29tbWFuZHMsIGNsb3NlcyB0aGUgc2VsZWN0ZWQgdHJhbnNwb3J0LCBhbmQgY2xlYXJzIGNvbm5lY3Rpb24gc3RhdGUuICovXG4gIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmNsb3NpbmcpIHJldHVybiB0aGlzLmNsb3Npbmc7XG4gICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgIHRoaXMuY2xvc2luZyA9IHRoaXMuY2xvc2VSZXNvdXJjZXMoKTtcbiAgICByZXR1cm4gdGhpcy5jbG9zaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjbG9zZVJlc291cmNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjYW5jZWxsYXRpb25zID0gWy4uLnRoaXMuYWN0aXZlQ29tbWFuZHNdLm1hcCgoY29tbWFuZCkgPT4gY29tbWFuZC5jYW5jZWwoKSk7XG4gICAgdGhpcy5hY3RpdmVDb21tYW5kcy5jbGVhcigpO1xuICAgIGZvciAoY29uc3QgY2xpZW50IG9mIHRoaXMucGVuZGluZ0NsaWVudHMpIGNsaWVudC5kZXN0cm95KCk7XG4gICAgdGhpcy5wZW5kaW5nQ2xpZW50cy5jbGVhcigpO1xuICAgIGNvbnN0IHRyYW5zcG9ydCA9IHRoaXMudHJhbnNwb3J0O1xuICAgIGNvbnN0IGNvbm5lY3RpbmcgPSB0aGlzLmNvbm5lY3Rpbmc7XG4gICAgdGhpcy50cmFuc3BvcnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jb25uZWN0aW5nID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW1xuICAgICAgLi4uY2FuY2VsbGF0aW9ucyxcbiAgICAgIC4uLih0cmFuc3BvcnQgPyBbdHJhbnNwb3J0LmNsb3NlKCldIDogW10pLFxuICAgICAgLi4uKGNvbm5lY3RpbmcgPyBbY29ubmVjdGluZ10gOiBbXSksXG4gICAgXSk7XG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwicmVqZWN0ZWRcIikge1xuICAgICAgICBsb2dnZXIud2FybihcImZhaWxlZCB0byBjbG9zZSBTU0ggc2Vzc2lvbiByZXNvdXJjZVwiLCB7XG4gICAgICAgICAgZXJyb3I6IHRvRXJyb3IocmVzdWx0LnJlYXNvbiksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlc29sdmVzIHB1YmxpYyBJUHY0IGFkZHJlc3NlcyBmb3IgYSBEYXRhYnJpY2tzIHNlcnZpY2UtZGlyZWN0IGdhdGV3YXkuXG4gKlxuICogUmV0dXJucyBhbiBlbXB0eSBsaXN0IGZvciBvdGhlciBob3N0bmFtZXMuIEROUy1vdmVyLUhUVFBTIHJlcXVlc3RzIHRpbWUgb3V0XG4gKiBhZnRlciBmaXZlIHNlY29uZHMgYW5kIHJlamVjdCBpbnZhbGlkIHJlc3BvbnNlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVQdWJsaWNHYXRld2F5QWRkcmVzc2VzKFxuICBob3N0OiBzdHJpbmcsXG4gIGZldGNoZXI6IHR5cGVvZiBmZXRjaCA9IGZldGNoLFxuKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBpZiAoIWhvc3QudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChTRVJWSUNFX0RJUkVDVF9TVUZGSVgpKSByZXR1cm4gW107XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hlcihcbiAgICBgaHR0cHM6Ly9kbnMuZ29vZ2xlL3Jlc29sdmU/bmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudChob3N0KX0mdHlwZT1BYCxcbiAgICB7IGhlYWRlcnM6IHsgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2Rucy1qc29uXCIgfSwgc2lnbmFsOiBBYm9ydFNpZ25hbC50aW1lb3V0KDVfMDAwKSB9LFxuICApO1xuICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoYFB1YmxpYyBETlMgcmVzb2x1dGlvbiBmYWlsZWQgKCR7cmVzcG9uc2Uuc3RhdHVzfSlgKTtcbiAgY29uc3QgcGF5bG9hZCA9IERuc1Jlc3BvbnNlU2NoZW1hLnBhcnNlKGF3YWl0IHJlc3BvbnNlLmpzb24oKSk7XG4gIHJldHVybiBbXG4gICAgLi4ubmV3IFNldChcbiAgICAgIChwYXlsb2FkLkFuc3dlciA/PyBbXSlcbiAgICAgICAgLmZpbHRlcigoYW5zd2VyKSA9PiBhbnN3ZXIudHlwZSA9PT0gMSAmJiBpc0lQKGFuc3dlci5kYXRhKSA9PT0gNClcbiAgICAgICAgLm1hcCgoYW5zd2VyKSA9PiBhbnN3ZXIuZGF0YSksXG4gICAgKSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkUmVzb2x2ZVB1YmxpY0dhdGV3YXkoaG9zdDogc3RyaW5nLCBlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoIWhvc3QudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChTRVJWSUNFX0RJUkVDVF9TVUZGSVgpKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IGNvZGUgPVxuICAgIChlcnJvciBhcyB7IGNvZGU/OiB1bmtub3duOyBjYXVzZT86IHsgY29kZT86IHVua25vd24gfSB9KT8uY29kZSA/P1xuICAgIChlcnJvciBhcyB7IGNhdXNlPzogeyBjb2RlPzogdW5rbm93biB9IH0pPy5jYXVzZT8uY29kZTtcbiAgcmV0dXJuIGNvZGUgPT09IFwiRUhPU1RVTlJFQUNIXCIgfHwgY29kZSA9PT0gXCJFTkVUVU5SRUFDSFwiIHx8IGNvZGUgPT09IFwiRVRJTUVET1VUXCI7XG59XG4iXX0=
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sSUFBbUMsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN4QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixnQkFBZ0IsR0FHakIsTUFBTSxVQUFVLENBQUM7QUFHbEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQUN4QixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3pDLE1BQU0scUJBQXFCLEdBQUcsc0NBQXNDLENBQUM7QUFFckUsTUFBTSxlQUFlLEdBQUcsQ0FBQztLQUN0QixNQUFNLENBQUM7SUFDTixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQztJQUMxRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQztDQUMvQyxDQUFDO0tBQ0QsV0FBVyxFQUFFO0tBQ2IsUUFBUSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFFakQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDO0tBQ3hCLE1BQU0sQ0FBQztJQUNOLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyw4QkFBOEIsQ0FBQztDQUNyRixDQUFDO0tBQ0Qs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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7IGlzSVAgfSBmcm9tIFwibm9kZTpuZXRcIjtcbmltcG9ydCB0eXBlIHsgRHVwbGV4IH0gZnJvbSBcIm5vZGU6c3RyZWFtXCI7XG5pbXBvcnQgeyBsb2csIHRvRXJyb3IgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHNzaDIsIHsgdHlwZSBDbGllbnQgYXMgU3NoMkNsaWVudCB9IGZyb20gXCJzc2gyXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHtcbiAgY3JlYXRlU3NoVHJhbnNwb3J0LFxuICBTc2hDb21tYW5kLFxuICBzc2hDb21tYW5kU2NyaXB0LFxuICB0eXBlIFNzaENvbW1hbmRJZGVudGl0eSxcbiAgdHlwZSBTc2hUcmFuc3BvcnQsXG59IGZyb20gXCIuL3NzaC50c1wiO1xuaW1wb3J0IHR5cGUgeyBTc2gyUGF0Y2hNb2RlLCBTc2hUcmFuc3BvcnRNb2RlIH0gZnJvbSBcIi4vdHJhbnNwb3J0LnRzXCI7XG5cbmNvbnN0IHsgQ2xpZW50IH0gPSBzc2gyO1xuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcImxha2Vib3g6c3NoXCIpO1xuY29uc3QgU0VSVklDRV9ESVJFQ1RfU1VGRklYID0gXCIuc2VydmljZS1kaXJlY3QuY2xvdWQuZGF0YWJyaWNrcy5jb21cIjtcblxuY29uc3QgRG5zQW5zd2VyU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6Lm51bWJlcigpLmludCgpLmRlc2NyaWJlKFwiRE5TIHJlY29yZCB0eXBlIG51bWJlci5cIiksXG4gICAgZGF0YTogei5zdHJpbmcoKS5kZXNjcmliZShcIkROUyByZWNvcmQgdmFsdWUuXCIpLFxuICB9KVxuICAucGFzc3Rocm91Z2goKVxuICAuZGVzY3JpYmUoXCJPbmUgRE5TLW92ZXItSFRUUFMgYW5zd2VyIHJlY29yZC5cIik7XG5cbmNvbnN0IERuc1Jlc3BvbnNlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBBbnN3ZXI6IHouYXJyYXkoRG5zQW5zd2VyU2NoZW1hKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUmVzb2x2ZWQgRE5TIGFuc3dlciByZWNvcmRzLlwiKSxcbiAgfSlcbiAgLnBhc3N0aHJvdWdoKClcbiAgLmRlc2NyaWJlKFwiR29vZ2xlIEROUy1vdmVyLUhUVFBTIEpTT04gcmVzcG9uc2UuXCIpO1xuXG4vKiogQ29ubmVjdGlvbiwga2V5LCBob3N0LXZlcmlmaWNhdGlvbiwgYW5kIGNvbW1hbmQgc2V0dGluZ3MgZm9yIG9uZSBTU0ggbWFjaGluZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3NoU2Vzc2lvbk9wdGlvbnMge1xuICAvKiogRGF0YWJyaWNrcyBMYWtlYm94IGdhdGV3YXkgaG9zdG5hbWUuICovXG4gIGhvc3Q6IHN0cmluZztcbiAgLyoqIFNTSCBnYXRld2F5IHBvcnQuICovXG4gIHBvcnQ6IG51bWJlcjtcbiAgLyoqIFNTSCB1c2VybmFtZSBhY2NlcHRlZCBieSB0aGUgZ2F0ZXdheTogdGhlIExha2Vib3ggSUQuICovXG4gIHVzZXJuYW1lOiBzdHJpbmc7XG4gIC8qKiBJbi1tZW1vcnkgcHJpdmF0ZSBrZXkgdXNlZCBmb3IgdGhlIHZlcmlmaWVkIFNTSCBoYW5kc2hha2UgYW5kIHNzaDIgZmFsbGJhY2suICovXG4gIHByaXZhdGVLZXk6IHN0cmluZztcbiAgLyoqIFByaXZhdGUga2V5IGZpbGUgdXNlZCBieSBuYXRpdmUgT3BlblNTSC4gKi9cbiAgcHJpdmF0ZUtleVBhdGg6IHN0cmluZztcbiAgLyoqIERlZGljYXRlZCBPcGVuU1NIIGtub3duLWhvc3QgZmlsZSBmb3IgdGhpcyB3b3Jrc3BhY2UsIHVzZXIsIGFuZCBnYXRld2F5LiAqL1xuICBrbm93bkhvc3RzUGF0aDogc3RyaW5nO1xuICAvKiogQ29ubmVjdGlvbiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgY29ubmVjdFRpbWVvdXRNczogbnVtYmVyO1xuICAvKiogU1NIIHRyYW5zcG9ydCBzZWxlY3RlZCBmb3IgdGhpcyBzZXNzaW9uLiAqL1xuICBzc2hUcmFuc3BvcnQ6IFNzaFRyYW5zcG9ydE1vZGU7XG4gIC8qKiBzc2gyIG1pc3NpbmctZXhlYy1yZXBseSBwYXRjaCBwb2xpY3kuICovXG4gIHNzaDJQYXRjaDogU3NoMlBhdGNoTW9kZTtcbiAgLyoqIFByZXZpb3VzbHkgdHJ1c3RlZCBTSEEtMjU2IGhvc3Qta2V5IGZpbmdlcnByaW50LiAqL1xuICBrbm93bkhvc3Q/OiBzdHJpbmc7XG4gIC8qKiBQZXJzaXN0cyB0aGUgYWNjZXB0ZWQgaG9zdCBrZXkgZm9yIGJvdGggc3NoMiBhbmQgbmF0aXZlIE9wZW5TU0guICovXG4gIHJlbWVtYmVySG9zdD86IChmaW5nZXJwcmludDogc3RyaW5nLCBrZXk6IEJ1ZmZlcikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgLyoqIE5hdGl2ZSBPcGVuU1NIIGV4ZWN1dGFibGUuIERlZmF1bHRzIHRvIGBzc2hgIG9uIGBQQVRIYC4gKi9cbiAgc3NoQ29tbWFuZD86IHN0cmluZztcbiAgLyoqIFJlc29sdmVzIHB1YmxpYyBmYWxsYmFjayBhZGRyZXNzZXMgZm9yIGEgc2VydmljZS1kaXJlY3QgZ2F0ZXdheS4gKi9cbiAgcmVzb2x2ZVB1YmxpY0FkZHJlc3Nlcz86IChob3N0OiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nW10+O1xufVxuXG4vKipcbiAqIFZlcmlmaWVkIFNTSCBzZXNzaW9uIHRoYXQgZGVsZWdhdGVzIGNvbW1hbmRzIGFuZCByZW1vdGUgVENQIGNvbm5lY3Rpb25zIHRvXG4gKiB0aGUgdHJhbnNwb3J0IHNlbGVjdGVkIGJ5IGBzcmMvc3NoLnRzYC5cbiAqXG4gKiBUaGUgaW5pdGlhbCBzc2gyIGhhbmRzaGFrZSB2ZXJpZmllcyBhbmQgcGVyc2lzdHMgdGhlIERhdGFicmlja3MgZ2F0ZXdheSBob3N0XG4gKiBrZXkuIFRoZSBzZWxlY3RlZCB0cmFuc3BvcnQgdGhlbiBzdGFydHMgaXRzIHBvb2xlZCBjb21tYW5kIGFuZCBmb3J3YXJkaW5nXG4gKiByZXNvdXJjZXMuIFJlc29sdmVkIHRyYW5zcG9ydCBhbmQgcGF0Y2ggcG9saWN5IGRldGVybWluZSB3aGV0aGVyIHRoZSB2ZXJpZmllZFxuICogY2xpZW50IHNlZWRzIHRoZSBzc2gyIHBvb2wgb3IgaXMgcmVwbGFjZWQgYnkgbmF0aXZlIE9wZW5TU0ggQ29udHJvbE1hc3RlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTc2hTZXNzaW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmVDb21tYW5kcyA9IG5ldyBTZXQ8U3NoQ29tbWFuZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwZW5kaW5nQ2xpZW50cyA9IG5ldyBTZXQ8U3NoMkNsaWVudD4oKTtcbiAgcHJpdmF0ZSB0cmFuc3BvcnQ/OiBTc2hUcmFuc3BvcnQ7XG4gIHByaXZhdGUgY29ubmVjdGluZz86IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUgY2xvc2luZz86IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUga25vd25Ib3N0Pzogc3RyaW5nO1xuICBwcml2YXRlIGNsb3NlZCA9IGZhbHNlO1xuXG4gIC8qKiBDcmVhdGVzIGEgZGlzY29ubmVjdGVkIHNlc3Npb24uIENhbGwge0BsaW5rIGNvbm5lY3R9IG9yIGFub3RoZXIgb3BlcmF0aW9uIHRvIGNvbm5lY3QuICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogU3NoU2Vzc2lvbk9wdGlvbnMpIHtcbiAgICB0aGlzLmtub3duSG9zdCA9IG9wdGlvbnMua25vd25Ib3N0O1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHRoZSBnYXRld2F5LCByZXNvbHZlcyBpdHMgcHVibGljIGZhbGxiYWNrIHdoZW4gbmVjZXNzYXJ5LCBhbmRcbiAgICogc2VsZWN0cyB0aGUgY29tbWFuZCBhbmQgZm9yd2FyZGluZyB0cmFuc3BvcnQuXG4gICAqL1xuICBhc3luYyBjb25uZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgdGhyb3cgbmV3IEVycm9yKFwiU1NIIHNlc3Npb24gaXMgY2xvc2VkXCIpO1xuICAgIGlmICh0aGlzLnRyYW5zcG9ydCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmNvbm5lY3RpbmcpIHJldHVybiB0aGlzLmNvbm5lY3Rpbmc7XG4gICAgdGhpcy5jb25uZWN0aW5nID0gdGhpcy5jb25uZWN0V2l0aEZhbGxiYWNrKCkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3RpbmcgPSB1bmRlZmluZWQ7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25uZWN0V2l0aEZhbGxiYWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbm5lY3RIb3N0KHRoaXMub3B0aW9ucy5ob3N0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFzaG91bGRSZXNvbHZlUHVibGljR2F0ZXdheSh0aGlzLm9wdGlvbnMuaG9zdCwgZXJyb3IpKSB0aHJvdyBlcnJvcjtcbiAgICAgIGNvbnN0IHJlc29sdmVBZGRyZXNzZXMgPSB0aGlzLm9wdGlvbnMucmVzb2x2ZVB1YmxpY0FkZHJlc3NlcyA/PyByZXNvbHZlUHVibGljR2F0ZXdheUFkZHJlc3NlcztcbiAgICAgIGxldCBhZGRyZXNzZXM6IHN0cmluZ1tdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWRkcmVzc2VzID0gYXdhaXQgcmVzb2x2ZUFkZHJlc3Nlcyh0aGlzLm9wdGlvbnMuaG9zdCk7XG4gICAgICB9IGNhdGNoIChyZXNvbHZlRXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oXCJwdWJsaWMgTGFrZWJveCBnYXRld2F5IHJlc29sdXRpb24gZmFpbGVkXCIsIHtcbiAgICAgICAgICBob3N0OiB0aGlzLm9wdGlvbnMuaG9zdCxcbiAgICAgICAgICBlcnJvcjogdG9FcnJvcihyZXNvbHZlRXJyb3IpLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBsb2dnZXIud2FybihcInByaXZhdGUgTGFrZWJveCBnYXRld2F5IHVucmVhY2hhYmxlOyByZXRyeWluZyBwdWJsaWMgYWRkcmVzc2VzXCIsIHtcbiAgICAgICAgaG9zdDogdGhpcy5vcHRpb25zLmhvc3QsXG4gICAgICAgIGFkZHJlc3NDb3VudDogYWRkcmVzc2VzLmxlbmd0aCxcbiAgICAgIH0pO1xuICAgICAgbGV0IGxhc3RFcnJvcjogdW5rbm93biA9IGVycm9yO1xuICAgICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIGFkZHJlc3Nlcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuY29ubmVjdEhvc3QoYWRkcmVzcyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGNhdGNoIChjb25uZWN0RXJyb3IpIHtcbiAgICAgICAgICBsYXN0RXJyb3IgPSBjb25uZWN0RXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IGxhc3RFcnJvcjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3RIb3N0KGNvbm5lY3RIb3N0OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHRocm93IG5ldyBFcnJvcihcIlNTSCBzZXNzaW9uIGlzIGNsb3NlZFwiKTtcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCB0aGlzLmNyZWF0ZVZlcmlmaWVkQ2xpZW50KGNvbm5lY3RIb3N0LCB0cnVlKTtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgIGNsaWVudC5kZXN0cm95KCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTU0ggc2Vzc2lvbiBpcyBjbG9zZWRcIik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0cmFuc3BvcnQgPSBhd2FpdCBjcmVhdGVTc2hUcmFuc3BvcnQoe1xuICAgICAgICBob3N0OiB0aGlzLm9wdGlvbnMuaG9zdCxcbiAgICAgICAgY29ubmVjdEhvc3QsXG4gICAgICAgIHBvcnQ6IHRoaXMub3B0aW9ucy5wb3J0LFxuICAgICAgICB1c2VybmFtZTogdGhpcy5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICBwcml2YXRlS2V5UGF0aDogdGhpcy5vcHRpb25zLnByaXZhdGVLZXlQYXRoLFxuICAgICAgICBrbm93bkhvc3RzUGF0aDogdGhpcy5vcHRpb25zLmtub3duSG9zdHNQYXRoLFxuICAgICAgICBjb25uZWN0VGltZW91dE1zOiB0aGlzLm9wdGlvbnMuY29ubmVjdFRpbWVvdXRNcyxcbiAgICAgICAgc3NoMkNsaWVudDogY2xpZW50LFxuICAgICAgICBjcmVhdGVTc2gyQ29tbWFuZENsaWVudDogKCkgPT4gdGhpcy5jcmVhdGVWZXJpZmllZENsaWVudChjb25uZWN0SG9zdCwgZmFsc2UpLFxuICAgICAgICB0cmFuc3BvcnQ6IHRoaXMub3B0aW9ucy5zc2hUcmFuc3BvcnQsXG4gICAgICAgIHNzaDJQYXRjaDogdGhpcy5vcHRpb25zLnNzaDJQYXRjaCxcbiAgICAgICAgLi4uKHRoaXMub3B0aW9ucy5zc2hDb21tYW5kID8geyBzc2hDb21tYW5kOiB0aGlzLm9wdGlvbnMuc3NoQ29tbWFuZCB9IDoge30pLFxuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgYXdhaXQgdHJhbnNwb3J0LmNsb3NlKCk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNTSCBzZXNzaW9uIGlzIGNsb3NlZFwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudHJhbnNwb3J0ID0gdHJhbnNwb3J0O1xuICAgICAgdGhpcy5jb25uZWN0aW5nID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKHRyYW5zcG9ydC5raW5kID09PSBcIm9wZW5zc2hcIikgY2xpZW50LmRlc3Ryb3koKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY2xpZW50LmRlc3Ryb3koKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVmVyaWZpZWRDbGllbnQoY29ubmVjdEhvc3Q6IHN0cmluZywgcmVtZW1iZXJIb3N0OiBib29sZWFuKTogUHJvbWlzZTxTc2gyQ2xpZW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKFwiU1NIIHNlc3Npb24gaXMgY2xvc2VkXCIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY2xpZW50ID0gbmV3IENsaWVudCgpO1xuICAgICAgdGhpcy5wZW5kaW5nQ2xpZW50cy5hZGQoY2xpZW50KTtcbiAgICAgIGxldCB2ZXJpZmllZEhvc3Q6IHsgZmluZ2VycHJpbnQ6IHN0cmluZzsga2V5OiBCdWZmZXIgfSB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBzZXR0bGVkID0gZmFsc2U7XG4gICAgICBjb25zdCBmaW5pc2hTZXR0bGVtZW50ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnBlbmRpbmdDbGllbnRzLmRlbGV0ZShjbGllbnQpO1xuICAgICAgfTtcbiAgICAgIGNsaWVudC5vbmNlKFwicmVhZHlcIiwgKCkgPT4ge1xuICAgICAgICBjb25zdCBmaW5pc2ggPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKCF2ZXJpZmllZEhvc3QpIHRocm93IG5ldyBFcnJvcihcIlNTSCBnYXRld2F5IGRpZCBub3QgcHJvdmlkZSBhIHZlcmlmaWVkIGhvc3Qga2V5XCIpO1xuICAgICAgICAgIHRoaXMua25vd25Ib3N0ID0gdmVyaWZpZWRIb3N0LmZpbmdlcnByaW50O1xuICAgICAgICAgIGlmIChyZW1lbWJlckhvc3QpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMub3B0aW9ucy5yZW1lbWJlckhvc3Q/Lih2ZXJpZmllZEhvc3QuZmluZ2VycHJpbnQsIHZlcmlmaWVkSG9zdC5rZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICBmaW5pc2hTZXR0bGVtZW50KCk7XG4gICAgICAgICAgcmVzb2x2ZShjbGllbnQpO1xuICAgICAgICB9O1xuICAgICAgICB2b2lkIGZpbmlzaCgpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNsaWVudC5kZXN0cm95KCk7XG4gICAgICAgICAgaWYgKHNldHRsZWQpIHJldHVybjtcbiAgICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICBmaW5pc2hTZXR0bGVtZW50KCk7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGNsaWVudC5vbmNlKFwiZXJyb3JcIiwgKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChzZXR0bGVkKSByZXR1cm47XG4gICAgICAgIHNldHRsZWQgPSB0cnVlO1xuICAgICAgICBmaW5pc2hTZXR0bGVtZW50KCk7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgICAgIGNsaWVudC5vbmNlKFwiY2xvc2VcIiwgKCkgPT4ge1xuICAgICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuO1xuICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgZmluaXNoU2V0dGxlbWVudCgpO1xuICAgICAgICByZWplY3QobmV3IEVycm9yKFwiU1NIIGdhdGV3YXkgY2xvc2VkIGJlZm9yZSBhdXRoZW50aWNhdGlvbiBjb21wbGV0ZWRcIikpO1xuICAgICAgfSk7XG4gICAgICB0cnkge1xuICAgICAgICBjbGllbnQuY29ubmVjdCh7XG4gICAgICAgICAgaG9zdDogY29ubmVjdEhvc3QsXG4gICAgICAgICAgcG9ydDogdGhpcy5vcHRpb25zLnBvcnQsXG4gICAgICAgICAgdXNlcm5hbWU6IHRoaXMub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICBwcml2YXRlS2V5OiB0aGlzLm9wdGlvbnMucHJpdmF0ZUtleSxcbiAgICAgICAgICByZWFkeVRpbWVvdXQ6IHRoaXMub3B0aW9ucy5jb25uZWN0VGltZW91dE1zLFxuICAgICAgICAgIGtlZXBhbGl2ZUludGVydmFsOiAxNV8wMDAsXG4gICAgICAgICAga2VlcGFsaXZlQ291bnRNYXg6IDMsXG4gICAgICAgICAgaG9zdFZlcmlmaWVyOiAoa2V5OiBCdWZmZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbmdlcnByaW50ID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoa2V5KS5kaWdlc3QoXCJiYXNlNjRcIik7XG4gICAgICAgICAgICBpZiAodGhpcy5rbm93bkhvc3QgJiYgZmluZ2VycHJpbnQgIT09IHRoaXMua25vd25Ib3N0KSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB2ZXJpZmllZEhvc3QgPSB7IGZpbmdlcnByaW50LCBrZXk6IEJ1ZmZlci5mcm9tKGtleSkgfTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgc2V0dGxlZCA9IHRydWU7XG4gICAgICAgIGZpbmlzaFNldHRsZW1lbnQoKTtcbiAgICAgICAgY2xpZW50LmRlc3Ryb3koKTtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgb25lIGNvbW1hbmQgYXMgYSBMYWtlYm94IHVzZXIgYW5kIHJldHVybnMgaXRzIGxpdmUgb3V0cHV0IGFuZFxuICAgKiBjb21wbGV0aW9uIHN0YXRlIGltbWVkaWF0ZWx5LlxuICAgKi9cbiAgZXhlY3V0ZShcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgYXJnczogc3RyaW5nW10sXG4gICAgb3B0aW9uczoge1xuICAgICAgdXNlcjogeyBuYW1lOiBzdHJpbmc7IGhvbWU6IHN0cmluZyB9O1xuICAgICAgY3dkPzogc3RyaW5nO1xuICAgICAgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICAgIHRpbWVvdXRNczogbnVtYmVyO1xuICAgICAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gICAgfSxcbiAgKTogU3NoQ29tbWFuZCB7XG4gICAgY29uc3QgeyB1c2VyLCAuLi5yZXN0IH0gPSBvcHRpb25zO1xuICAgIHJldHVybiB0aGlzLnN0YXJ0Q29tbWFuZChjb21tYW5kLCBhcmdzLCByZXN0LCB7IGtpbmQ6IFwidXNlclwiLCAuLi51c2VyIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbCBTdGFydHMgb25lIGZpeGVkIHBhY2thZ2Utb3duZWQgYm9vdHN0cmFwIGNvbW1hbmQgYXMgcm9vdC5cbiAgICpcbiAgICogTmV2ZXIgcm91dGUgUkVTVCwgYWdlbnQtdG9vbCwgc2VydmljZSwgb3IgZW52aXJvbm1lbnQgaW5wdXQgaGVyZS5cbiAgICovXG4gIGV4ZWN1dGVQcml2aWxlZ2VkKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBhcmdzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiB7IHRpbWVvdXRNczogbnVtYmVyOyBzaWduYWw/OiBBYm9ydFNpZ25hbCB9LFxuICApOiBTc2hDb21tYW5kIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydENvbW1hbmQoY29tbWFuZCwgYXJncywgb3B0aW9ucywgeyBraW5kOiBcInJvb3RcIiB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRDb21tYW5kKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBhcmdzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBjd2Q/OiBzdHJpbmc7XG4gICAgICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgICAgdGltZW91dE1zOiBudW1iZXI7XG4gICAgICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgICB9LFxuICAgIGlkZW50aXR5OiBTc2hDb21tYW5kSWRlbnRpdHksXG4gICk6IFNzaENvbW1hbmQge1xuICAgIGNvbnN0IHNjcmlwdCA9IHNzaENvbW1hbmRTY3JpcHQoY29tbWFuZCwgYXJncywgb3B0aW9ucy5jd2QsIG9wdGlvbnMuZW52LCBpZGVudGl0eSk7XG4gICAgY29uc3Qgc3NoQ29tbWFuZCA9IG5ldyBTc2hDb21tYW5kKGNvbW1hbmQsIGFyZ3MsIG9wdGlvbnMsIGFzeW5jIChleGVjdXRpb24pID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuY29ubmVjdCgpO1xuICAgICAgaWYgKGV4ZWN1dGlvbi5zaWduYWwuYWJvcnRlZCkgcmV0dXJuIDEzMDtcbiAgICAgIGNvbnN0IHRyYW5zcG9ydCA9IHRoaXMudHJhbnNwb3J0O1xuICAgICAgaWYgKCF0cmFuc3BvcnQpIHRocm93IG5ldyBFcnJvcihcIlNTSCB0cmFuc3BvcnQgZGlkIG5vdCBpbml0aWFsaXplXCIpO1xuICAgICAgcmV0dXJuIHRyYW5zcG9ydC5ydW4oc2NyaXB0LCBleGVjdXRpb24pO1xuICAgIH0pO1xuICAgIHRoaXMuYWN0aXZlQ29tbWFuZHMuYWRkKHNzaENvbW1hbmQpO1xuICAgIGNvbnN0IHJlbW92ZSA9ICgpID0+IHRoaXMuYWN0aXZlQ29tbWFuZHMuZGVsZXRlKHNzaENvbW1hbmQpO1xuICAgIHZvaWQgc3NoQ29tbWFuZC5yZXN1bHQudGhlbihyZW1vdmUsIHJlbW92ZSk7XG4gICAgcmV0dXJuIHNzaENvbW1hbmQ7XG4gIH1cblxuICAvKiogT3BlbnMgYSByZW1vdGUgVENQIGNvbm5lY3Rpb24gdGhyb3VnaCBuYXRpdmUgU09DS1M1IG9yIHNzaDIgZGlyZWN0IGZvcndhcmRpbmcuICovXG4gIGFzeW5jIGZvcndhcmRPdXQocmVtb3RlSG9zdDogc3RyaW5nLCByZW1vdGVQb3J0OiBudW1iZXIpOiBQcm9taXNlPER1cGxleD4ge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdCgpO1xuICAgIGNvbnN0IHRyYW5zcG9ydCA9IHRoaXMudHJhbnNwb3J0O1xuICAgIGlmICghdHJhbnNwb3J0KSB0aHJvdyBuZXcgRXJyb3IoXCJTU0ggdHJhbnNwb3J0IGRpZCBub3QgaW5pdGlhbGl6ZVwiKTtcbiAgICByZXR1cm4gdHJhbnNwb3J0LmNvbm5lY3QocmVtb3RlSG9zdCwgcmVtb3RlUG9ydCk7XG4gIH1cblxuICAvKiogQ2FuY2VscyBhY3RpdmUgY29tbWFuZHMsIGNsb3NlcyB0aGUgc2VsZWN0ZWQgdHJhbnNwb3J0LCBhbmQgY2xlYXJzIGNvbm5lY3Rpb24gc3RhdGUuICovXG4gIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmNsb3NpbmcpIHJldHVybiB0aGlzLmNsb3Npbmc7XG4gICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgIHRoaXMuY2xvc2luZyA9IHRoaXMuY2xvc2VSZXNvdXJjZXMoKTtcbiAgICByZXR1cm4gdGhpcy5jbG9zaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjbG9zZVJlc291cmNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjYW5jZWxsYXRpb25zID0gWy4uLnRoaXMuYWN0aXZlQ29tbWFuZHNdLm1hcCgoY29tbWFuZCkgPT4gY29tbWFuZC5jYW5jZWwoKSk7XG4gICAgdGhpcy5hY3RpdmVDb21tYW5kcy5jbGVhcigpO1xuICAgIGZvciAoY29uc3QgY2xpZW50IG9mIHRoaXMucGVuZGluZ0NsaWVudHMpIGNsaWVudC5kZXN0cm95KCk7XG4gICAgdGhpcy5wZW5kaW5nQ2xpZW50cy5jbGVhcigpO1xuICAgIGNvbnN0IHRyYW5zcG9ydCA9IHRoaXMudHJhbnNwb3J0O1xuICAgIGNvbnN0IGNvbm5lY3RpbmcgPSB0aGlzLmNvbm5lY3Rpbmc7XG4gICAgdGhpcy50cmFuc3BvcnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jb25uZWN0aW5nID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW1xuICAgICAgLi4uY2FuY2VsbGF0aW9ucyxcbiAgICAgIC4uLih0cmFuc3BvcnQgPyBbdHJhbnNwb3J0LmNsb3NlKCldIDogW10pLFxuICAgICAgLi4uKGNvbm5lY3RpbmcgPyBbY29ubmVjdGluZ10gOiBbXSksXG4gICAgXSk7XG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwicmVqZWN0ZWRcIikge1xuICAgICAgICBsb2dnZXIud2FybihcImZhaWxlZCB0byBjbG9zZSBTU0ggc2Vzc2lvbiByZXNvdXJjZVwiLCB7XG4gICAgICAgICAgZXJyb3I6IHRvRXJyb3IocmVzdWx0LnJlYXNvbiksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlc29sdmVzIHB1YmxpYyBJUHY0IGFkZHJlc3NlcyBmb3IgYSBEYXRhYnJpY2tzIHNlcnZpY2UtZGlyZWN0IGdhdGV3YXkuXG4gKlxuICogUmV0dXJucyBhbiBlbXB0eSBsaXN0IGZvciBvdGhlciBob3N0bmFtZXMuIEROUy1vdmVyLUhUVFBTIHJlcXVlc3RzIHRpbWUgb3V0XG4gKiBhZnRlciBmaXZlIHNlY29uZHMgYW5kIHJlamVjdCBpbnZhbGlkIHJlc3BvbnNlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVQdWJsaWNHYXRld2F5QWRkcmVzc2VzKFxuICBob3N0OiBzdHJpbmcsXG4gIGZldGNoZXI6IHR5cGVvZiBmZXRjaCA9IGZldGNoLFxuKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBpZiAoIWhvc3QudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChTRVJWSUNFX0RJUkVDVF9TVUZGSVgpKSByZXR1cm4gW107XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hlcihcbiAgICBgaHR0cHM6Ly9kbnMuZ29vZ2xlL3Jlc29sdmU/bmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudChob3N0KX0mdHlwZT1BYCxcbiAgICB7IGhlYWRlcnM6IHsgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2Rucy1qc29uXCIgfSwgc2lnbmFsOiBBYm9ydFNpZ25hbC50aW1lb3V0KDVfMDAwKSB9LFxuICApO1xuICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoYFB1YmxpYyBETlMgcmVzb2x1dGlvbiBmYWlsZWQgKCR7cmVzcG9uc2Uuc3RhdHVzfSlgKTtcbiAgY29uc3QgcGF5bG9hZCA9IERuc1Jlc3BvbnNlU2NoZW1hLnBhcnNlKGF3YWl0IHJlc3BvbnNlLmpzb24oKSk7XG4gIHJldHVybiBbXG4gICAgLi4ubmV3IFNldChcbiAgICAgIChwYXlsb2FkLkFuc3dlciA/PyBbXSlcbiAgICAgICAgLmZpbHRlcigoYW5zd2VyKSA9PiBhbnN3ZXIudHlwZSA9PT0gMSAmJiBpc0lQKGFuc3dlci5kYXRhKSA9PT0gNClcbiAgICAgICAgLm1hcCgoYW5zd2VyKSA9PiBhbnN3ZXIuZGF0YSksXG4gICAgKSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkUmVzb2x2ZVB1YmxpY0dhdGV3YXkoaG9zdDogc3RyaW5nLCBlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoIWhvc3QudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChTRVJWSUNFX0RJUkVDVF9TVUZGSVgpKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IGNvZGUgPVxuICAgIChlcnJvciBhcyB7IGNvZGU/OiB1bmtub3duOyBjYXVzZT86IHsgY29kZT86IHVua25vd24gfSB9KT8uY29kZSA/P1xuICAgIChlcnJvciBhcyB7IGNhdXNlPzogeyBjb2RlPzogdW5rbm93biB9IH0pPy5jYXVzZT8uY29kZTtcbiAgcmV0dXJuIChcbiAgICBjb2RlID09PSBcIkVDT05OUkVGVVNFRFwiIHx8XG4gICAgY29kZSA9PT0gXCJFSE9TVFVOUkVBQ0hcIiB8fFxuICAgIGNvZGUgPT09IFwiRU5FVFVOUkVBQ0hcIiB8fFxuICAgIGNvZGUgPT09IFwiRVRJTUVET1VUXCJcbiAgKTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -25,9 +25,9 @@
25
25
  "vitest": "3.2.4"
26
26
  },
27
27
  "dependencies": {
28
- "@dbx-tools/core": "^0.9.161",
29
- "@dbx-tools/shared-core": "^0.9.161",
30
- "@dbx-tools/shared-lakebox": "^0.9.161",
28
+ "@dbx-tools/core": "^0.9.164",
29
+ "@dbx-tools/shared-core": "^0.9.164",
30
+ "@dbx-tools/shared-lakebox": "^0.9.164",
31
31
  "generic-pool": "^3.9.0",
32
32
  "socks": "^2.8.10",
33
33
  "ssh2": "^1.17.0",
@@ -47,7 +47,7 @@
47
47
  "./package.json": "./package.json"
48
48
  }
49
49
  },
50
- "version": "0.9.161",
50
+ "version": "0.9.164",
51
51
  "types": "./lib/index.d.ts",
52
52
  "dbxToolsConfig": {
53
53
  "tags": [
package/src/session.ts CHANGED
@@ -365,5 +365,10 @@ function shouldResolvePublicGateway(host: string, error: unknown): boolean {
365
365
  const code =
366
366
  (error as { code?: unknown; cause?: { code?: unknown } })?.code ??
367
367
  (error as { cause?: { code?: unknown } })?.cause?.code;
368
- return code === "EHOSTUNREACH" || code === "ENETUNREACH" || code === "ETIMEDOUT";
368
+ return (
369
+ code === "ECONNREFUSED" ||
370
+ code === "EHOSTUNREACH" ||
371
+ code === "ENETUNREACH" ||
372
+ code === "ETIMEDOUT"
373
+ );
369
374
  }