@dbx-tools/cli-tunnel 0.6.131 → 0.6.133

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/README.md CHANGED
@@ -106,8 +106,8 @@ Omitted values fall back to the environment, a `.env` file, then
106
106
 
107
107
  | Flag | Meaning |
108
108
  | ----------------------------- | ---------------------------------------------------------- |
109
- | `--transport <mode>` | `portr` (default), `frp`, or `both` |
110
- | `--public-domain <host>` | Portr public domain (`<subdomain>.<server>`) |
109
+ | `--transport <mode>` | `portr` (default), `frp`, or `both` |
110
+ | `--public-domain <host>` | Portr public domain (`<subdomain>.<server>`) |
111
111
  | `--subdomain <name>` | portr subdomain, else derived from the public domain |
112
112
  | `--frp-public-domain <host>` | FRP public HTTP domain |
113
113
  | `--frp-server <host>` | frps control host, else the FRP public domain |
package/lib/src/cli.js CHANGED
@@ -169,11 +169,12 @@ async function run(raw, command) {
169
169
  children.push(frp.startFrp(resolved.frp, frpEnv, configPath));
170
170
  }
171
171
  const activeTunnelCount = children.length - (executable ? 1 : 0);
172
- if (!activeTunnelCount)
172
+ if (!activeTunnelCount) {
173
173
  logger.info("no selected public tunnel is configured", {
174
174
  transport: resolved.transport,
175
175
  publicPort: resolved.publicPort,
176
176
  });
177
+ }
177
178
  supervise(children);
178
179
  }
179
180
  /** The `dbx tunnel` program. No side effects until parsed. */
@@ -216,4 +217,4 @@ export function buildProgram(name = "dbx tunnel") {
216
217
  });
217
218
  return program;
218
219
  }
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBcUIsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQXNCLE1BQU0sY0FBYyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDO0FBRTFCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFcEMsNkVBQTZFO0FBQzdFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDO0FBRWpDOzs7O0dBSUc7QUFDSCxTQUFTLFFBQVE7SUFDZixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLFlBQVksRUFBRSxDQUFDO1FBQzdCLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUU7WUFDaEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxP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QUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTztTQUNKLE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDbEIsUUFBUSxDQUFDLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUM7U0FDdkQsV0FBVyxDQUFDLGdEQUFnRCxDQUFDO1NBQzdELE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1FBQ2xDLElBQUksU0FBUyxLQUFLLE9BQU8sSUFBSSxTQUFTLEtBQUssTUFBTTtZQUFFLE1BQU0sS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlFLElBQUksU0FBUyxLQUFLLEtBQUssSUFBSSxTQUFTLEtBQUssTUFBTTtZQUFFLE1BQU0sR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hFLElBQUksU0FBUyxLQUFLLE9BQU8sSUFBSSxTQUFTLEtBQUssS0FBSyxJQUFJLFNBQVMsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN6RSxNQUFNLElBQUksY0FBYyxDQUFDLENBQUMsRUFBRSwwQkFBMEIsRUFBRSxzQkFBc0IsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUM3RixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFTCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBgZGJ4IHR1bm5lbGAgLSBmcm9udCBhIGNvbW1hbmQgd2l0aCBhIHB1YmxpYyBwb3J0ciB0dW5uZWwgYW5kIHBhc3N3b3JkbGVzcyBnYXRlLlxuICpcbiAqIFRoaXMgaXMgdGhlIFdSQVBQRVIgcGF0aCwgYW5kIGl0IGV4aXN0cyBmb3Igb25lIGNhc2U6IGEgcHJvamVjdCB0aGF0IGRvZXMgbm90XG4gKiB1c2UgYEBkYngtdG9vbHMvYXBwa2l0YCdzIGBjcmVhdGVBcHBgLCBhbmQgdGhlcmVmb3JlIGNhbm5vdCByZWdpc3RlclxuICogYHR1bm5lbEludGVyY2VwdG9yKClgICsgdGhlIGBhdXRoR2F0ZWAgcGx1Z2luIGluLXByb2Nlc3MuIEFuIEFwcEtpdCBhcHAgc2hvdWxkXG4gKiBzdGlsbCB0YWtlIHRoZSBwbHVnaW4gcGF0aCAtIG9uZSBwcm9jZXNzLCBubyBwcm94eSBob3AsIG5vIGR1cGxpY2F0ZWQgaGVhZGVyXG4gKiBoYW5kbGluZy5cbiAqXG4gKiBUaGUgd3JhcHBlciBjbGFpbXMgdGhlIFBVQkxJQyBwb3J0IChgREFUQUJSSUNLU19BUFBfUE9SVGAsIHRoZSBwb3J0IHRoZVxuICogcGxhdGZvcm0gYW5kIHBvcnRyIHJvdXRlIHRvKSwgbW92ZXMgdGhlIHdyYXBwZWQgYXBwIHRvIGEgcHJpdmF0ZSBvbmUsIGFuZFxuICogcmV2ZXJzZS1wcm94aWVzIGJldHdlZW4gdGhlbSBzbyB0aGUgZ2F0ZSBzaXRzIGluIGZyb250IG9mIHRyYWZmaWMgaXQgd291bGRcbiAqIG90aGVyd2lzZSBoYXZlIG5vIHdheSB0byBpbnRlcmNlcHQuIEV2ZXJ5dGhpbmcgZWxzZSBpcyBkZWxlZ2F0ZWQ6IHRoZSBnYXRlXG4gKiBjb25maWcgY29tZXMgZnJvbSBgcGx1Z2luLnJlc29sdmVBdXRoR2F0ZUNvbmZpZ2AsIHRoZSBwb3J0ciBsaWZlY3ljbGUgZnJvbVxuICogYHBvcnRyLipgIC0gYm90aCB0aGUgc2FtZSBmdW5jdGlvbnMgdGhlIGluLXByb2Nlc3MgcGF0aCB1c2VzLlxuICpcbiAqIFNoaXBzIG5vIGJpbi4gYEBkYngtdG9vbHMvY2xpYCBtb3VudHMgYGJ1aWxkUHJvZ3JhbSgpYCBhcyBgZGJ4IHR1bm5lbGAgbGF6aWx5LFxuICogc28gYGRieCBkZXZgIHBheXMgZm9yIG5vbmUgb2YgdGhpcywgYW5kIGAtLWluc2VjdXJlYCAvIGBzdGF0dXNgIC8gYGluc3RhbGxgXG4gKiBuZXZlciBsb2FkIEFwcEtpdCBvciB0aGUgU01UUCBzdGFjayBlaXRoZXIgKHRoZSBnYXRlIGFwcCBpcyBiZWhpbmQgYSBkeW5hbWljXG4gKiBpbXBvcnQpLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyB0eXBlIENoaWxkUHJvY2Vzcywgc3Bhd24gfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXIgfSBmcm9tIFwibm9kZTpuZXRcIjtcbmltcG9ydCB7IGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBmcnAsIHBvcnRyIH0gZnJvbSBcIkBkYngtdG9vbHMvdHVubmVsXCI7XG5pbXBvcnQgeyBDb21tYW5kLCBDb21tYW5kZXJFcnJvciB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IHJlc29sdmVUdW5uZWxPcHRpb25zLCB0eXBlIFR1bm5lbE9wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zLnRzXCI7XG5pbXBvcnQgeyBzdGFydFByb3h5IH0gZnJvbSBcIi4vcHJveHkudHNcIjtcblxuZXhwb3J0IHsgQ29tbWFuZGVyRXJyb3IgfTtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcInR1bm5lbFwiKTtcblxuLyoqIEhvdyBsb25nIGEgY2hpbGQgZ2V0cyB0byBleGl0IG9uIFNJR1RFUk0gYmVmb3JlIHRoZSB3cmFwcGVyIGVzY2FsYXRlcy4gKi9cbmNvbnN0IFNIVVRET1dOX0dSQUNFX01TID0gMTBfMDAwO1xuXG4vKipcbiAqIEEgZnJlZSBsb29wYmFjayBwb3J0LCBmcm9tIHRoZSBPUyByYXRoZXIgdGhhbiBhIHJhbmRvbSBndWVzczogYmluZGluZyBgMGAgYW5kXG4gKiByZWFkaW5nIGJhY2sgd2hhdCB3YXMgYXNzaWduZWQgaXMgdGhlIG9ubHkgd2F5IHRvIGtub3cgdGhlIHBvcnQgaXMgYWN0dWFsbHlcbiAqIGF2YWlsYWJsZSwgc28gdHdvIHR1bm5lbHMgY2FuIHJ1biBzaWRlIGJ5IHNpZGUgd2l0aG91dCBjb2xsaWRpbmcuXG4gKi9cbmZ1bmN0aW9uIGZyZWVQb3J0KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcHJvYmUgPSBjcmVhdGVTZXJ2ZXIoKTtcbiAgICBwcm9iZS5vbihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgcHJvYmUubGlzdGVuKDAsIFwiMTI3LjAuMC4xXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBwcm9iZS5hZGRyZXNzKCk7XG4gICAgICBjb25zdCBwb3J0ID0gdHlwZW9mIGFkZHJlc3MgPT09IFwib2JqZWN0XCIgJiYgYWRkcmVzcyA/IGFkZHJlc3MucG9ydCA6IDA7XG4gICAgICBwcm9iZS5jbG9zZSgoKSA9PiAocG9ydCA+IDAgPyByZXNvbHZlKHBvcnQpIDogcmVqZWN0KG5ldyBFcnJvcihcIm5vIGZyZWUgcG9ydFwiKSkpKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogRXZlcnkgZ2F0ZS9wb3J0ciBmbGFnLiBEZWNsYXJlZCBvbiB0aGUgcm9vdCBjb21tYW5kIEFORCBvbiBgcnVuYC9gc3RhdHVzYCBzb1xuICogYGRieCB0dW5uZWwgLS1hbGxvdyB4IC0tIGNtZGAgYW5kIGBkYnggdHVubmVsIHJ1biAtLWFsbG93IHggLS0gY21kYCBiZWhhdmVcbiAqIGlkZW50aWNhbGx5IC0gY29tbWFuZGVyIGRvZXMgbm90IGluaGVyaXQgb3B0aW9ucyBkb3dud2FyZC5cbiAqL1xuZnVuY3Rpb24gYWRkT3B0aW9ucyhjb21tYW5kOiBDb21tYW5kKTogQ29tbWFuZCB7XG4gIHJldHVybiBjb21tYW5kXG4gICAgLm9wdGlvbihcIi0tdHJhbnNwb3J0IDx0cmFuc3BvcnQ+XCIsIFwicHVibGljIHR1bm5lbCB0cmFuc3BvcnQ6IHBvcnRyLCBmcnAsIG9yIGJvdGhcIilcbiAgICAub3B0aW9uKFwiLS1wdWJsaWMtZG9tYWluIDxob3N0PlwiLCBcInB1YmxpYyB0dW5uZWwgZG9tYWluXCIpXG4gICAgLm9wdGlvbihcIi0tc3ViZG9tYWluIDxuYW1lPlwiLCBcInBvcnRyIHN1YmRvbWFpbiAoZWxzZSBkZXJpdmVkIGZyb20gdGhlIHB1YmxpYyBkb21haW4pXCIpXG4gICAgLm9wdGlvbihcIi0tcG9ydCA8cG9ydD5cIiwgXCJwdWJsaWMgcG9ydCB0aGUgd3JhcHBlciBsaXN0ZW5zIG9uXCIpXG4gICAgLm9wdGlvbihcIi0tYXBwLXBvcnQgPHBvcnQ+XCIsIFwicHJpdmF0ZSBwb3J0IHRoZSB3cmFwcGVkIGFwcCBpcyB0b2xkIHRvIGJpbmRcIilcbiAgICAub3B0aW9uKFwiLS1hbGxvdyA8cGF0dGVybnMuLi4+XCIsIFwiZW1haWwgYWxsb3ctbGlzdCAoZG9tYWluIC8gZ2xvYiAvIC9yZWdleC8pXCIpXG4gICAgLm9wdGlvbihcIi0tc3ViamVjdCA8dGV4dD5cIiwgXCJ2ZXJpZmljYXRpb24gZW1haWwgc3ViamVjdFwiKVxuICAgIC5vcHRpb24oXCItLWJyYW5kLW5hbWUgPG5hbWU+XCIsIFwidmVyaWZpY2F0aW9uIGVtYWlsIGJyYW5kIG5hbWVcIilcbiAgICAub3B0aW9uKFwiLS1tZXNzYWdlIDx0ZXh0PlwiLCBcInZlcmlmaWNhdGlvbiBlbWFpbCBtZXNzYWdlXCIpXG4gICAgLm9wdGlvbihcIi0tc2Vzc2lvbi10dGwgPHNlY29uZHM+XCIsIFwic2Vzc2lvbiBsaWZldGltZVwiKVxuICAgIC5vcHRpb24oXCItLWNvZGUtdHRsIDxzZWNvbmRzPlwiLCBcIm9uZS10aW1lLWNvZGUgbGlmZXRpbWVcIilcbiAgICAub3B0aW9uKFwiLS1zZXNzaW9uLWN1dG9mZiA8d2hlbj5cIiwgXCJpbnZhbGlkYXRlIGV2ZXJ5IHNlc3Npb24gaXNzdWVkIGJlZm9yZSB0aGlzXCIpXG4gICAgLm9wdGlvbihcIi0tYXV0aC1zdG9yYWdlIDxtb2RlPlwiLCBcImF1dGggZGF0YWJhc2U6IGF1dG8sIGxha2ViYXNlLCBvciBzcWxpdGVcIilcbiAgICAub3B0aW9uKFwiLS1hdXRoLXNxbGl0ZS1wYXRoIDxwYXRoPlwiLCBcImxvY2FsIEJldHRlciBBdXRoIFNRTGl0ZSBmaWxlXCIpXG4gICAgLm9wdGlvbihcIi0tZm9yd2FyZC1oZWFkZXJzIDxwYXR0ZXJucy4uLj5cIiwgXCJleHRyYSB4LSBoZWFkZXJzIHR1bm5lbCB0cmFmZmljIG1heSBmb3J3YXJkXCIpXG4gICAgLm9wdGlvbihcIi0tZ2F0ZS1wYXRoIDxwcmVmaXguLi4+XCIsIFwicGF0aCBwcmVmaXhlcyB0byBnYXRlIGJleW9uZCAvYXBpLyAoZS5nLiAvd3MpXCIpXG4gICAgLm9wdGlvbihcIi0tYmluZCA8aG9zdC4uLj5cIiwgXCJpbnRlcmZhY2UgSVBzIHRoZSBnYXRlIGxpc3RlbnMgb24gKGRlZmF1bHQ6IDAuMC4wLjApXCIpXG4gICAgLm9wdGlvbihcIi0tZnJwLXNlcnZlciA8aG9zdD5cIiwgXCJmcnBzIGNvbnRyb2wgaG9zdCAoZGVmYXVsdDogRlJQIHB1YmxpYyBkb21haW4pXCIpXG4gICAgLm9wdGlvbihcIi0tZnJwLXB1YmxpYy1kb21haW4gPGhvc3Q+XCIsIFwiRlJQIHB1YmxpYyBIVFRQIGRvbWFpblwiKVxuICAgIC5vcHRpb24oXCItLWZycC1zZXJ2ZXItcG9ydCA8cG9ydD5cIiwgXCJmcnBzIGNvbnRyb2wgcG9ydCAoZGVmYXVsdDogNDQzKVwiKVxuICAgIC5vcHRpb24oXCItLWZycC1wcm90b2NvbCA8cHJvdG9jb2w+XCIsIFwiZnJwYyB0cmFuc3BvcnQgcHJvdG9jb2wgKGRlZmF1bHQ6IHdzcylcIilcbiAgICAub3B0aW9uKFwiLS1mcnAtdG9rZW4gPHRva2VuPlwiLCBcImZycHMgYXV0aCB0b2tlblwiKVxuICAgIC5vcHRpb24oXCItLWZycC1wcm94eS1uYW1lIDxuYW1lPlwiLCBcImZycCBwcm94eSByZWdpc3RyYXRpb24gbmFtZVwiKVxuICAgIC5vcHRpb24oXCItLWluc2VjdXJlXCIsIFwicnVuIG9wZW4sIHdpdGggbm8gZ2F0ZVwiKTtcbn1cblxuLyoqXG4gKiBUaWUgdGhlIHdyYXBwZXIncyBsaWZldGltZSB0byBpdHMgY2hpbGRyZW4ncywgaW4gYm90aCBkaXJlY3Rpb25zOiBhIGNoaWxkIHRoYXRcbiAqIGV4aXRzIHRha2VzIHRoZSB3cmFwcGVyIGRvd24gd2l0aCBpdHMgY29kZSwgYW5kIGEgc2lnbmFsIHRvIHRoZSB3cmFwcGVyIGlzXG4gKiBmb3J3YXJkZWQgYmVmb3JlIGl0IGxlYXZlcy4gV2l0aG91dCB0aGlzIGEgY3Jhc2hlZCBhcHAgbGVhdmVzIGEgcG9ydHIgdHVubmVsXG4gKiBzZXJ2aW5nIGEgZGVhZCBwb3J0LCB3aGljaCBsb29rcyBsaWtlIGEgaGFuZyByYXRoZXIgdGhhbiBhIGZhaWx1cmUuXG4gKi9cbmZ1bmN0aW9uIHN1cGVydmlzZShjaGlsZHJlbjogcmVhZG9ubHkgQ2hpbGRQcm9jZXNzW10pOiB2b2lkIHtcbiAgbGV0IHN0b3BwaW5nID0gZmFsc2U7XG4gIGNvbnN0IHN0b3AgPSAoY29kZTogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgaWYgKHN0b3BwaW5nKSByZXR1cm47XG4gICAgc3RvcHBpbmcgPSB0cnVlO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIGlmICghY2hpbGQua2lsbGVkKSBjaGlsZC5raWxsKFwiU0lHVEVSTVwiKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIGNoaWxkLmtpbGwoXCJTSUdLSUxMXCIpO1xuICAgICAgcHJvY2Vzcy5leGl0KGNvZGUpO1xuICAgIH0sIFNIVVRET1dOX0dSQUNFX01TKTtcbiAgfTtcbiAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikgY2hpbGQub24oXCJleGl0XCIsIChjb2RlKSA9PiBzdG9wKGNvZGUgPz8gMSkpO1xuICBmb3IgKGNvbnN0IHNpZ25hbCBvZiBbXCJTSUdURVJNXCIsIFwiU0lHSU5UXCIsIFwiU0lHSFVQXCJdIGFzIGNvbnN0KSB7XG4gICAgcHJvY2Vzcy5vbihzaWduYWwsICgpID0+IHN0b3AoMCkpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bihyYXc6IFR1bm5lbE9wdGlvbnMsIGNvbW1hbmQ6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IFtleGVjdXRhYmxlLCAuLi5hcmdzXSA9IGNvbW1hbmQ7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVR1bm5lbE9wdGlvbnMocmF3KTtcbiAgY29uc3QgY2hpbGRyZW46IENoaWxkUHJvY2Vzc1tdID0gW107XG5cbiAgLy8gVHdvIHVwc3RyZWFtIG1vZGVzOlxuICAvLyAgIC0gV1JBUDogYSBjb21tYW5kIGFmdGVyIGAtLWAuIFRoZSB3cmFwcGVyIHNwYXducyBpdCBvbiBhIHByaXZhdGUgbG9vcGJhY2tcbiAgLy8gICAgIHBvcnQgYW5kIGlzIHRoZSBvbmx5IHRoaW5nIHRoYXQgdGFsa3MgdG8gaXQuXG4gIC8vICAgLSBBVFRBQ0g6IG5vIGNvbW1hbmQsIGJ1dCBgLS1hcHAtcG9ydGAgbmFtZXMgYW4gYWxyZWFkeS1ydW5uaW5nIHVwc3RyZWFtXG4gIC8vICAgICAoZS5nLiBhIGxvY2FsIHJldmVyc2UgcHJveHkpLiBUaGUgZ2F0ZSBmcm9udHMgaXQgd2l0aG91dCBzcGF3bmluZyBhXG4gIC8vICAgICBjaGlsZC4gVGhpcyBpcyB3aGF0IGxldHMgdGhlIGdhdGUgc2l0IG9uIGFuIGludGVyZmFjZSBpbiBmcm9udCBvZiBhXG4gIC8vICAgICBzZXBhcmF0ZWx5LXN1cGVydmlzZWQgc3RhY2suXG4gIGxldCBhcHBQb3J0OiBudW1iZXI7XG4gIGlmIChleGVjdXRhYmxlKSB7XG4gICAgYXBwUG9ydCA9IHJlc29sdmVkLmFwcFBvcnQgPz8gKGF3YWl0IGZyZWVQb3J0KCkpO1xuICAgIGNvbnN0IGFwcCA9IHNwYXduKGV4ZWN1dGFibGUsIGFyZ3MsIHtcbiAgICAgIGVudjoge1xuICAgICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgICAgREFUQUJSSUNLU19BUFBfUE9SVDogU3RyaW5nKGFwcFBvcnQpLFxuICAgICAgICBQT1JUOiBTdHJpbmcoYXBwUG9ydCksXG4gICAgICAgIEhPU1Q6IFwiMTI3LjAuMC4xXCIsXG4gICAgICB9LFxuICAgICAgc3RkaW86IFwiaW5oZXJpdFwiLFxuICAgIH0pO1xuICAgIGNoaWxkcmVuLnB1c2goYXBwKTtcbiAgfSBlbHNlIGlmIChyZXNvbHZlZC5hcHBQb3J0KSB7XG4gICAgYXBwUG9ydCA9IHJlc29sdmVkLmFwcFBvcnQ7XG4gICAgbG9nZ2VyLmluZm8oXCJhdHRhY2hpbmcgZ2F0ZSB0byBleGlzdGluZyB1cHN0cmVhbVwiLCB7IGFwcFBvcnQgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IENvbW1hbmRlckVycm9yKFxuICAgICAgMSxcbiAgICAgIFwidHVubmVsLm5vLXVwc3RyZWFtXCIsXG4gICAgICBcIm5vIGNvbW1hbmQgZ2l2ZW4gKHBhc3MgaXQgYWZ0ZXIgYC0tYCkgYW5kIG5vIC0tYXBwLXBvcnQgdG8gYXR0YWNoIHRvXCIsXG4gICAgKTtcbiAgfVxuXG4gIC8vIER5bmFtaWMgaW1wb3J0OiB0aGUgZ2F0ZSBpcyB0aGUgb25seSB0aGluZyBoZXJlIHRoYXQgbmVlZHMgQXBwS2l0ICsgU01UUCwgc29cbiAgLy8gYW4gYC0taW5zZWN1cmVgIHJ1biBuZXZlciBsb2FkcyBlaXRoZXIuXG4gIGNvbnN0IGdhdGUgPSByZXNvbHZlZC5nYXRlLmluc2VjdXJlXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IGF3YWl0IChcbiAgICAgICAgYXdhaXQgaW1wb3J0KFwiLi9hcHAudHNcIilcbiAgICAgICkuc3RhcnRHYXRlQXBwKHtcbiAgICAgICAgLi4ucmVzb2x2ZWQuZ2F0ZUNvbmZpZyxcbiAgICAgICAgcHVibGljRG9tYWluOiByZXNvbHZlZC5nYXRlLnB1YmxpY0RvbWFpbiA/PyBgbG9jYWxob3N0OiR7cmVzb2x2ZWQucHVibGljUG9ydH1gLFxuICAgICAgfSk7XG4gIGlmICghZ2F0ZSkgbG9nZ2VyLndhcm4oXCJydW5uaW5nIE9QRU4gLSBubyBnYXRlIGlzIGluIGZyb250IG9mIHRoaXMgdHVubmVsXCIpO1xuXG4gIGF3YWl0IHN0YXJ0UHJveHkoe1xuICAgIHB1YmxpY1BvcnQ6IHJlc29sdmVkLnB1YmxpY1BvcnQsXG4gICAgYXBwUG9ydCxcbiAgICBnYXRlLFxuICAgIGZvcndhcmRIZWFkZXJzOiByZXNvbHZlZC5nYXRlLmZvcndhcmRIZWFkZXJzLFxuICAgIGdhdGVQYXRoczogcmVzb2x2ZWQuZ2F0ZS5nYXRlUGF0aHMsXG4gICAgYnJhbmROYW1lOiByZXNvbHZlZC5nYXRlLmJyYW5kTmFtZSxcbiAgICBiaW5kSG9zdHM6IHJlc29sdmVkLmJpbmRIb3N0cyxcbiAgfSk7XG5cbiAgaWYgKChyZXNvbHZlZC50cmFuc3BvcnQgPT09IFwicG9ydHJcIiB8fCByZXNvbHZlZC50cmFuc3BvcnQgPT09IFwiYm90aFwiKSAmJiByZXNvbHZlZC5wb3J0cikge1xuICAgIGNvbnN0IHBvcnRyRW52ID0gYXdhaXQgcG9ydHIuaW5zdGFsbFBvcnRyKCk7XG4gICAgYXdhaXQgcG9ydHIud3JpdGVQb3J0ckNvbmZpZyhyZXNvbHZlZC5wb3J0ciwgcG9ydHJFbnYpO1xuICAgIGNoaWxkcmVuLnB1c2goYXdhaXQgcG9ydHIuc3RhcnRQb3J0cihyZXNvbHZlZC5wb3J0ciwgcG9ydHJFbnYpKTtcbiAgfVxuICBpZiAoKHJlc29sdmVkLnRyYW5zcG9ydCA9PT0gXCJmcnBcIiB8fCByZXNvbHZlZC50cmFuc3BvcnQgPT09IFwiYm90aFwiKSAmJiByZXNvbHZlZC5mcnApIHtcbiAgICBjb25zdCBmcnBFbnYgPSBhd2FpdCBmcnAuaW5zdGFsbEZycCgpO1xuICAgIGNvbnN0IGNvbmZpZ1BhdGggPSBhd2FpdCBmcnAud3JpdGVGcnBDb25maWcocmVzb2x2ZWQuZnJwLCBmcnBFbnYpO1xuICAgIGNoaWxkcmVuLnB1c2goZnJwLnN0YXJ0RnJwKHJlc29sdmVkLmZycCwgZnJwRW52LCBjb25maWdQYXRoKSk7XG4gIH1cbiAgY29uc3QgYWN0aXZlVHVubmVsQ291bnQgPSBjaGlsZHJlbi5sZW5ndGggLSAoZXhlY3V0YWJsZSA/IDEgOiAwKTtcbiAgaWYgKCFhY3RpdmVUdW5uZWxDb3VudClcbiAgICBsb2dnZXIuaW5mbyhcIm5vIHNlbGVjdGVkIHB1YmxpYyB0dW5uZWwgaXMgY29uZmlndXJlZFwiLCB7XG4gICAgICB0cmFuc3BvcnQ6IHJlc29sdmVkLnRyYW5zcG9ydCxcbiAgICAgIHB1YmxpY1BvcnQ6IHJlc29sdmVkLnB1YmxpY1BvcnQsXG4gICAgfSk7XG4gIHN1cGVydmlzZShjaGlsZHJlbik7XG59XG5cbi8qKiBUaGUgYGRieCB0dW5uZWxgIHByb2dyYW0uIE5vIHNpZGUgZWZmZWN0cyB1bnRpbCBwYXJzZWQuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQcm9ncmFtKG5hbWUgPSBcImRieCB0dW5uZWxcIik6IENvbW1hbmQge1xuICBjb25zdCBwcm9ncmFtID0gYWRkT3B0aW9ucyhcbiAgICBuZXcgQ29tbWFuZCgpXG4gICAgICAubmFtZShuYW1lKVxuICAgICAgLmRlc2NyaXB0aW9uKFwiRnJvbnQgYSBjb21tYW5kIHdpdGggYSBwdWJsaWMgdHVubmVsIGFuZCBwYXNzd29yZGxlc3MgYXV0aFwiKSxcbiAgKTtcblxuICAvLyBgcnVuYCBpcyB0aGUgREVGQVVMVCBhY3Rpb24gYXMgd2VsbCBhcyBhIG5hbWVkIHN1YmNvbW1hbmQsIHByZXNlcnZpbmcgdGhlIG9sZFxuICAvLyB3cmFwcGVyJ3MgZXJnb25vbWljcyAoYGRieCB0dW5uZWwgLS1hbGxvdyB4IC0tIGJ1biBzcmMvc2VydmVyLnRzYCkgd2hpbGVcbiAgLy8gbGVhdmluZyBzb21ld2hlcmUgZm9yIGBzdGF0dXNgIGFuZCBgaW5zdGFsbGAgdG8gbGl2ZS5cbiAgcHJvZ3JhbVxuICAgIC5hcmd1bWVudChcIltjb21tYW5kLi4uXVwiLCBcInRoZSBjb21tYW5kIHRvIHdyYXAsIGFmdGVyIGAtLWBcIilcbiAgICAuYWN0aW9uKGFzeW5jIChjb21tYW5kOiBzdHJpbmdbXSwgX29wdGlvbnM6IFR1bm5lbE9wdGlvbnMsIGNtZDogQ29tbWFuZCkgPT4ge1xuICAgICAgYXdhaXQgcnVuKGNtZC5vcHRzPFR1bm5lbE9wdGlvbnM+KCksIGNvbW1hbmQpO1xuICAgIH0pO1xuXG4gIGFkZE9wdGlvbnMocHJvZ3JhbS5jb21tYW5kKFwicnVuXCIpLmRlc2NyaXB0aW9uKFwiV3JhcCBhIGNvbW1hbmQgKHRoZSBkZWZhdWx0IGFjdGlvbilcIikpXG4gICAgLmFyZ3VtZW50KFwiPGNvbW1hbmQuLi4+XCIsIFwidGhlIGNvbW1hbmQgdG8gd3JhcCwgYWZ0ZXIgYC0tYFwiKVxuICAgIC5hY3Rpb24oYXN5bmMgKGNvbW1hbmQ6IHN0cmluZ1tdLCBfb3B0aW9uczogVHVubmVsT3B0aW9ucywgY21kOiBDb21tYW5kKSA9PiB7XG4gICAgICBhd2FpdCBydW4oY21kLm9wdHM8VHVubmVsT3B0aW9ucz4oKSwgY29tbWFuZCk7XG4gICAgfSk7XG5cbiAgLy8gV29ydGggaXRzIG93biBjb21tYW5kOiB0aGUgbW9zdCBjb21tb24gZmFpbHVyZSBpcyBhIHR1bm5lbCB0aGF0IHNpbGVudGx5XG4gIC8vIGRvZXMgbm90aGluZyBiZWNhdXNlIG5vIHRva2VuIG9yIGRvbWFpbiByZXNvbHZlZCwgYW5kIHRoaXMgcHJpbnRzIGV4YWN0bHlcbiAgLy8gd2hhdCB3b3VsZCBoYXBwZW4gd2l0aG91dCBzdGFydGluZyBhbnl0aGluZy5cbiAgYWRkT3B0aW9ucyhcbiAgICBwcm9ncmFtLmNvbW1hbmQoXCJzdGF0dXNcIikuZGVzY3JpcHRpb24oXCJSZXNvbHZlIHRoZSBjb25maWd1cmF0aW9uIGFuZCBwcmludCBpdFwiKSxcbiAgKS5hY3Rpb24oKF9vcHRpb25zOiBUdW5uZWxPcHRpb25zLCBjbWQ6IENvbW1hbmQpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVUdW5uZWxPcHRpb25zKGNtZC5vcHRzPFR1bm5lbE9wdGlvbnM+KCkpO1xuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke0pTT04uc3RyaW5naWZ5KHJlc29sdmVkLCBudWxsLCAyKX1cXG5gKTtcbiAgfSk7XG5cbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKFwiaW5zdGFsbFwiKVxuICAgIC5hcmd1bWVudChcIlt0cmFuc3BvcnRdXCIsIFwicG9ydHIsIGZycCwgb3IgYm90aFwiLCBcInBvcnRyXCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiSW5zdGFsbCBwdWJsaWMgdHVubmVsIGNsaWVudCBiaW5hcmllcyBhbmQgZXhpdFwiKVxuICAgIC5hY3Rpb24oYXN5bmMgKHRyYW5zcG9ydDogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAodHJhbnNwb3J0ID09PSBcInBvcnRyXCIgfHwgdHJhbnNwb3J0ID09PSBcImJvdGhcIikgYXdhaXQgcG9ydHIuaW5zdGFsbFBvcnRyKCk7XG4gICAgICBpZiAodHJhbnNwb3J0ID09PSBcImZycFwiIHx8IHRyYW5zcG9ydCA9PT0gXCJib3RoXCIpIGF3YWl0IGZycC5pbnN0YWxsRnJwKCk7XG4gICAgICBpZiAodHJhbnNwb3J0ICE9PSBcInBvcnRyXCIgJiYgdHJhbnNwb3J0ICE9PSBcImZycFwiICYmIHRyYW5zcG9ydCAhPT0gXCJib3RoXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbW1hbmRlckVycm9yKDEsIFwidHVubmVsLmludmFsaWQtdHJhbnNwb3J0XCIsIGBpbnZhbGlkIHRyYW5zcG9ydDogJHt0cmFuc3BvcnR9YCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgcmV0dXJuIHByb2dyYW07XG59XG4iXX0=
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBcUIsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQXNCLE1BQU0sY0FBYyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDO0FBRTFCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFcEMsNkVBQTZFO0FBQzdFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDO0FBRWpDOzs7O0dBSUc7QUFDSCxTQUFTLFFBQVE7SUFDZixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLFlBQVksRUFBRSxDQUFDO1FBQzdCLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUU7WUFDaEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxP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QUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPO1NBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQztTQUNsQixRQUFRLENBQUMsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sQ0FBQztTQUN2RCxXQUFXLENBQUMsZ0RBQWdELENBQUM7U0FDN0QsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFpQixFQUFFLEVBQUU7UUFDbEMsSUFBSSxTQUFTLEtBQUssT0FBTyxJQUFJLFNBQVMsS0FBSyxNQUFNO1lBQUUsTUFBTSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUUsSUFBSSxTQUFTLEtBQUssS0FBSyxJQUFJLFNBQVMsS0FBSyxNQUFNO1lBQUUsTUFBTSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEUsSUFBSSxTQUFTLEtBQUssT0FBTyxJQUFJLFNBQVMsS0FBSyxLQUFLLElBQUksU0FBUyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3pFLE1BQU0sSUFBSSxjQUFjLENBQUMsQ0FBQyxFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVMLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGBkYnggdHVubmVsYCAtIGZyb250IGEgY29tbWFuZCB3aXRoIGEgcHVibGljIHBvcnRyIHR1bm5lbCBhbmQgcGFzc3dvcmRsZXNzIGdhdGUuXG4gKlxuICogVGhpcyBpcyB0aGUgV1JBUFBFUiBwYXRoLCBhbmQgaXQgZXhpc3RzIGZvciBvbmUgY2FzZTogYSBwcm9qZWN0IHRoYXQgZG9lcyBub3RcbiAqIHVzZSBgQGRieC10b29scy9hcHBraXRgJ3MgYGNyZWF0ZUFwcGAsIGFuZCB0aGVyZWZvcmUgY2Fubm90IHJlZ2lzdGVyXG4gKiBgdHVubmVsSW50ZXJjZXB0b3IoKWAgKyB0aGUgYGF1dGhHYXRlYCBwbHVnaW4gaW4tcHJvY2Vzcy4gQW4gQXBwS2l0IGFwcCBzaG91bGRcbiAqIHN0aWxsIHRha2UgdGhlIHBsdWdpbiBwYXRoIC0gb25lIHByb2Nlc3MsIG5vIHByb3h5IGhvcCwgbm8gZHVwbGljYXRlZCBoZWFkZXJcbiAqIGhhbmRsaW5nLlxuICpcbiAqIFRoZSB3cmFwcGVyIGNsYWltcyB0aGUgUFVCTElDIHBvcnQgKGBEQVRBQlJJQ0tTX0FQUF9QT1JUYCwgdGhlIHBvcnQgdGhlXG4gKiBwbGF0Zm9ybSBhbmQgcG9ydHIgcm91dGUgdG8pLCBtb3ZlcyB0aGUgd3JhcHBlZCBhcHAgdG8gYSBwcml2YXRlIG9uZSwgYW5kXG4gKiByZXZlcnNlLXByb3hpZXMgYmV0d2VlbiB0aGVtIHNvIHRoZSBnYXRlIHNpdHMgaW4gZnJvbnQgb2YgdHJhZmZpYyBpdCB3b3VsZFxuICogb3RoZXJ3aXNlIGhhdmUgbm8gd2F5IHRvIGludGVyY2VwdC4gRXZlcnl0aGluZyBlbHNlIGlzIGRlbGVnYXRlZDogdGhlIGdhdGVcbiAqIGNvbmZpZyBjb21lcyBmcm9tIGBwbHVnaW4ucmVzb2x2ZUF1dGhHYXRlQ29uZmlnYCwgdGhlIHBvcnRyIGxpZmVjeWNsZSBmcm9tXG4gKiBgcG9ydHIuKmAgLSBib3RoIHRoZSBzYW1lIGZ1bmN0aW9ucyB0aGUgaW4tcHJvY2VzcyBwYXRoIHVzZXMuXG4gKlxuICogU2hpcHMgbm8gYmluLiBgQGRieC10b29scy9jbGlgIG1vdW50cyBgYnVpbGRQcm9ncmFtKClgIGFzIGBkYnggdHVubmVsYCBsYXppbHksXG4gKiBzbyBgZGJ4IGRldmAgcGF5cyBmb3Igbm9uZSBvZiB0aGlzLCBhbmQgYC0taW5zZWN1cmVgIC8gYHN0YXR1c2AgLyBgaW5zdGFsbGBcbiAqIG5ldmVyIGxvYWQgQXBwS2l0IG9yIHRoZSBTTVRQIHN0YWNrIGVpdGhlciAodGhlIGdhdGUgYXBwIGlzIGJlaGluZCBhIGR5bmFtaWNcbiAqIGltcG9ydCkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IHR5cGUgQ2hpbGRQcm9jZXNzLCBzcGF3biB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IGNyZWF0ZVNlcnZlciB9IGZyb20gXCJub2RlOm5ldFwiO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IGZycCwgcG9ydHIgfSBmcm9tIFwiQGRieC10b29scy90dW5uZWxcIjtcbmltcG9ydCB7IENvbW1hbmQsIENvbW1hbmRlckVycm9yIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgcmVzb2x2ZVR1bm5lbE9wdGlvbnMsIHR5cGUgVHVubmVsT3B0aW9ucyB9IGZyb20gXCIuL29wdGlvbnMudHNcIjtcbmltcG9ydCB7IHN0YXJ0UHJveHkgfSBmcm9tIFwiLi9wcm94eS50c1wiO1xuXG5leHBvcnQgeyBDb21tYW5kZXJFcnJvciB9O1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwidHVubmVsXCIpO1xuXG4vKiogSG93IGxvbmcgYSBjaGlsZCBnZXRzIHRvIGV4aXQgb24gU0lHVEVSTSBiZWZvcmUgdGhlIHdyYXBwZXIgZXNjYWxhdGVzLiAqL1xuY29uc3QgU0hVVERPV05fR1JBQ0VfTVMgPSAxMF8wMDA7XG5cbi8qKlxuICogQSBmcmVlIGxvb3BiYWNrIHBvcnQsIGZyb20gdGhlIE9TIHJhdGhlciB0aGFuIGEgcmFuZG9tIGd1ZXNzOiBiaW5kaW5nIGAwYCBhbmRcbiAqIHJlYWRpbmcgYmFjayB3aGF0IHdhcyBhc3NpZ25lZCBpcyB0aGUgb25seSB3YXkgdG8ga25vdyB0aGUgcG9ydCBpcyBhY3R1YWxseVxuICogYXZhaWxhYmxlLCBzbyB0d28gdHVubmVscyBjYW4gcnVuIHNpZGUgYnkgc2lkZSB3aXRob3V0IGNvbGxpZGluZy5cbiAqL1xuZnVuY3Rpb24gZnJlZVBvcnQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBwcm9iZSA9IGNyZWF0ZVNlcnZlcigpO1xuICAgIHByb2JlLm9uKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICBwcm9iZS5saXN0ZW4oMCwgXCIxMjcuMC4wLjFcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYWRkcmVzcyA9IHByb2JlLmFkZHJlc3MoKTtcbiAgICAgIGNvbnN0IHBvcnQgPSB0eXBlb2YgYWRkcmVzcyA9PT0gXCJvYmplY3RcIiAmJiBhZGRyZXNzID8gYWRkcmVzcy5wb3J0IDogMDtcbiAgICAgIHByb2JlLmNsb3NlKCgpID0+IChwb3J0ID4gMCA/IHJlc29sdmUocG9ydCkgOiByZWplY3QobmV3IEVycm9yKFwibm8gZnJlZSBwb3J0XCIpKSkpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBFdmVyeSBnYXRlL3BvcnRyIGZsYWcuIERlY2xhcmVkIG9uIHRoZSByb290IGNvbW1hbmQgQU5EIG9uIGBydW5gL2BzdGF0dXNgIHNvXG4gKiBgZGJ4IHR1bm5lbCAtLWFsbG93IHggLS0gY21kYCBhbmQgYGRieCB0dW5uZWwgcnVuIC0tYWxsb3cgeCAtLSBjbWRgIGJlaGF2ZVxuICogaWRlbnRpY2FsbHkgLSBjb21tYW5kZXIgZG9lcyBub3QgaW5oZXJpdCBvcHRpb25zIGRvd253YXJkLlxuICovXG5mdW5jdGlvbiBhZGRPcHRpb25zKGNvbW1hbmQ6IENvbW1hbmQpOiBDb21tYW5kIHtcbiAgcmV0dXJuIGNvbW1hbmRcbiAgICAub3B0aW9uKFwiLS10cmFuc3BvcnQgPHRyYW5zcG9ydD5cIiwgXCJwdWJsaWMgdHVubmVsIHRyYW5zcG9ydDogcG9ydHIsIGZycCwgb3IgYm90aFwiKVxuICAgIC5vcHRpb24oXCItLXB1YmxpYy1kb21haW4gPGhvc3Q+XCIsIFwicHVibGljIHR1bm5lbCBkb21haW5cIilcbiAgICAub3B0aW9uKFwiLS1zdWJkb21haW4gPG5hbWU+XCIsIFwicG9ydHIgc3ViZG9tYWluIChlbHNlIGRlcml2ZWQgZnJvbSB0aGUgcHVibGljIGRvbWFpbilcIilcbiAgICAub3B0aW9uKFwiLS1wb3J0IDxwb3J0PlwiLCBcInB1YmxpYyBwb3J0IHRoZSB3cmFwcGVyIGxpc3RlbnMgb25cIilcbiAgICAub3B0aW9uKFwiLS1hcHAtcG9ydCA8cG9ydD5cIiwgXCJwcml2YXRlIHBvcnQgdGhlIHdyYXBwZWQgYXBwIGlzIHRvbGQgdG8gYmluZFwiKVxuICAgIC5vcHRpb24oXCItLWFsbG93IDxwYXR0ZXJucy4uLj5cIiwgXCJlbWFpbCBhbGxvdy1saXN0IChkb21haW4gLyBnbG9iIC8gL3JlZ2V4LylcIilcbiAgICAub3B0aW9uKFwiLS1zdWJqZWN0IDx0ZXh0PlwiLCBcInZlcmlmaWNhdGlvbiBlbWFpbCBzdWJqZWN0XCIpXG4gICAgLm9wdGlvbihcIi0tYnJhbmQtbmFtZSA8bmFtZT5cIiwgXCJ2ZXJpZmljYXRpb24gZW1haWwgYnJhbmQgbmFtZVwiKVxuICAgIC5vcHRpb24oXCItLW1lc3NhZ2UgPHRleHQ+XCIsIFwidmVyaWZpY2F0aW9uIGVtYWlsIG1lc3NhZ2VcIilcbiAgICAub3B0aW9uKFwiLS1zZXNzaW9uLXR0bCA8c2Vjb25kcz5cIiwgXCJzZXNzaW9uIGxpZmV0aW1lXCIpXG4gICAgLm9wdGlvbihcIi0tY29kZS10dGwgPHNlY29uZHM+XCIsIFwib25lLXRpbWUtY29kZSBsaWZldGltZVwiKVxuICAgIC5vcHRpb24oXCItLXNlc3Npb24tY3V0b2ZmIDx3aGVuPlwiLCBcImludmFsaWRhdGUgZXZlcnkgc2Vzc2lvbiBpc3N1ZWQgYmVmb3JlIHRoaXNcIilcbiAgICAub3B0aW9uKFwiLS1hdXRoLXN0b3JhZ2UgPG1vZGU+XCIsIFwiYXV0aCBkYXRhYmFzZTogYXV0bywgbGFrZWJhc2UsIG9yIHNxbGl0ZVwiKVxuICAgIC5vcHRpb24oXCItLWF1dGgtc3FsaXRlLXBhdGggPHBhdGg+XCIsIFwibG9jYWwgQmV0dGVyIEF1dGggU1FMaXRlIGZpbGVcIilcbiAgICAub3B0aW9uKFwiLS1mb3J3YXJkLWhlYWRlcnMgPHBhdHRlcm5zLi4uPlwiLCBcImV4dHJhIHgtIGhlYWRlcnMgdHVubmVsIHRyYWZmaWMgbWF5IGZvcndhcmRcIilcbiAgICAub3B0aW9uKFwiLS1nYXRlLXBhdGggPHByZWZpeC4uLj5cIiwgXCJwYXRoIHByZWZpeGVzIHRvIGdhdGUgYmV5b25kIC9hcGkvIChlLmcuIC93cylcIilcbiAgICAub3B0aW9uKFwiLS1iaW5kIDxob3N0Li4uPlwiLCBcImludGVyZmFjZSBJUHMgdGhlIGdhdGUgbGlzdGVucyBvbiAoZGVmYXVsdDogMC4wLjAuMClcIilcbiAgICAub3B0aW9uKFwiLS1mcnAtc2VydmVyIDxob3N0PlwiLCBcImZycHMgY29udHJvbCBob3N0IChkZWZhdWx0OiBGUlAgcHVibGljIGRvbWFpbilcIilcbiAgICAub3B0aW9uKFwiLS1mcnAtcHVibGljLWRvbWFpbiA8aG9zdD5cIiwgXCJGUlAgcHVibGljIEhUVFAgZG9tYWluXCIpXG4gICAgLm9wdGlvbihcIi0tZnJwLXNlcnZlci1wb3J0IDxwb3J0PlwiLCBcImZycHMgY29udHJvbCBwb3J0IChkZWZhdWx0OiA0NDMpXCIpXG4gICAgLm9wdGlvbihcIi0tZnJwLXByb3RvY29sIDxwcm90b2NvbD5cIiwgXCJmcnBjIHRyYW5zcG9ydCBwcm90b2NvbCAoZGVmYXVsdDogd3NzKVwiKVxuICAgIC5vcHRpb24oXCItLWZycC10b2tlbiA8dG9rZW4+XCIsIFwiZnJwcyBhdXRoIHRva2VuXCIpXG4gICAgLm9wdGlvbihcIi0tZnJwLXByb3h5LW5hbWUgPG5hbWU+XCIsIFwiZnJwIHByb3h5IHJlZ2lzdHJhdGlvbiBuYW1lXCIpXG4gICAgLm9wdGlvbihcIi0taW5zZWN1cmVcIiwgXCJydW4gb3Blbiwgd2l0aCBubyBnYXRlXCIpO1xufVxuXG4vKipcbiAqIFRpZSB0aGUgd3JhcHBlcidzIGxpZmV0aW1lIHRvIGl0cyBjaGlsZHJlbidzLCBpbiBib3RoIGRpcmVjdGlvbnM6IGEgY2hpbGQgdGhhdFxuICogZXhpdHMgdGFrZXMgdGhlIHdyYXBwZXIgZG93biB3aXRoIGl0cyBjb2RlLCBhbmQgYSBzaWduYWwgdG8gdGhlIHdyYXBwZXIgaXNcbiAqIGZvcndhcmRlZCBiZWZvcmUgaXQgbGVhdmVzLiBXaXRob3V0IHRoaXMgYSBjcmFzaGVkIGFwcCBsZWF2ZXMgYSBwb3J0ciB0dW5uZWxcbiAqIHNlcnZpbmcgYSBkZWFkIHBvcnQsIHdoaWNoIGxvb2tzIGxpa2UgYSBoYW5nIHJhdGhlciB0aGFuIGEgZmFpbHVyZS5cbiAqL1xuZnVuY3Rpb24gc3VwZXJ2aXNlKGNoaWxkcmVuOiByZWFkb25seSBDaGlsZFByb2Nlc3NbXSk6IHZvaWQge1xuICBsZXQgc3RvcHBpbmcgPSBmYWxzZTtcbiAgY29uc3Qgc3RvcCA9IChjb2RlOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICBpZiAoc3RvcHBpbmcpIHJldHVybjtcbiAgICBzdG9wcGluZyA9IHRydWU7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikgaWYgKCFjaGlsZC5raWxsZWQpIGNoaWxkLmtpbGwoXCJTSUdURVJNXCIpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikgY2hpbGQua2lsbChcIlNJR0tJTExcIik7XG4gICAgICBwcm9jZXNzLmV4aXQoY29kZSk7XG4gICAgfSwgU0hVVERPV05fR1JBQ0VfTVMpO1xuICB9O1xuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSBjaGlsZC5vbihcImV4aXRcIiwgKGNvZGUpID0+IHN0b3AoY29kZSA/PyAxKSk7XG4gIGZvciAoY29uc3Qgc2lnbmFsIG9mIFtcIlNJR1RFUk1cIiwgXCJTSUdJTlRcIiwgXCJTSUdIVVBcIl0gYXMgY29uc3QpIHtcbiAgICBwcm9jZXNzLm9uKHNpZ25hbCwgKCkgPT4gc3RvcCgwKSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuKHJhdzogVHVubmVsT3B0aW9ucywgY29tbWFuZDogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgW2V4ZWN1dGFibGUsIC4uLmFyZ3NdID0gY29tbWFuZDtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlVHVubmVsT3B0aW9ucyhyYXcpO1xuICBjb25zdCBjaGlsZHJlbjogQ2hpbGRQcm9jZXNzW10gPSBbXTtcblxuICAvLyBUd28gdXBzdHJlYW0gbW9kZXM6XG4gIC8vICAgLSBXUkFQOiBhIGNvbW1hbmQgYWZ0ZXIgYC0tYC4gVGhlIHdyYXBwZXIgc3Bhd25zIGl0IG9uIGEgcHJpdmF0ZSBsb29wYmFja1xuICAvLyAgICAgcG9ydCBhbmQgaXMgdGhlIG9ubHkgdGhpbmcgdGhhdCB0YWxrcyB0byBpdC5cbiAgLy8gICAtIEFUVEFDSDogbm8gY29tbWFuZCwgYnV0IGAtLWFwcC1wb3J0YCBuYW1lcyBhbiBhbHJlYWR5LXJ1bm5pbmcgdXBzdHJlYW1cbiAgLy8gICAgIChlLmcuIGEgbG9jYWwgcmV2ZXJzZSBwcm94eSkuIFRoZSBnYXRlIGZyb250cyBpdCB3aXRob3V0IHNwYXduaW5nIGFcbiAgLy8gICAgIGNoaWxkLiBUaGlzIGlzIHdoYXQgbGV0cyB0aGUgZ2F0ZSBzaXQgb24gYW4gaW50ZXJmYWNlIGluIGZyb250IG9mIGFcbiAgLy8gICAgIHNlcGFyYXRlbHktc3VwZXJ2aXNlZCBzdGFjay5cbiAgbGV0IGFwcFBvcnQ6IG51bWJlcjtcbiAgaWYgKGV4ZWN1dGFibGUpIHtcbiAgICBhcHBQb3J0ID0gcmVzb2x2ZWQuYXBwUG9ydCA/PyAoYXdhaXQgZnJlZVBvcnQoKSk7XG4gICAgY29uc3QgYXBwID0gc3Bhd24oZXhlY3V0YWJsZSwgYXJncywge1xuICAgICAgZW52OiB7XG4gICAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgICBEQVRBQlJJQ0tTX0FQUF9QT1JUOiBTdHJpbmcoYXBwUG9ydCksXG4gICAgICAgIFBPUlQ6IFN0cmluZyhhcHBQb3J0KSxcbiAgICAgICAgSE9TVDogXCIxMjcuMC4wLjFcIixcbiAgICAgIH0sXG4gICAgICBzdGRpbzogXCJpbmhlcml0XCIsXG4gICAgfSk7XG4gICAgY2hpbGRyZW4ucHVzaChhcHApO1xuICB9IGVsc2UgaWYgKHJlc29sdmVkLmFwcFBvcnQpIHtcbiAgICBhcHBQb3J0ID0gcmVzb2x2ZWQuYXBwUG9ydDtcbiAgICBsb2dnZXIuaW5mbyhcImF0dGFjaGluZyBnYXRlIHRvIGV4aXN0aW5nIHVwc3RyZWFtXCIsIHsgYXBwUG9ydCB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgQ29tbWFuZGVyRXJyb3IoXG4gICAgICAxLFxuICAgICAgXCJ0dW5uZWwubm8tdXBzdHJlYW1cIixcbiAgICAgIFwibm8gY29tbWFuZCBnaXZlbiAocGFzcyBpdCBhZnRlciBgLS1gKSBhbmQgbm8gLS1hcHAtcG9ydCB0byBhdHRhY2ggdG9cIixcbiAgICApO1xuICB9XG5cbiAgLy8gRHluYW1pYyBpbXBvcnQ6IHRoZSBnYXRlIGlzIHRoZSBvbmx5IHRoaW5nIGhlcmUgdGhhdCBuZWVkcyBBcHBLaXQgKyBTTVRQLCBzb1xuICAvLyBhbiBgLS1pbnNlY3VyZWAgcnVuIG5ldmVyIGxvYWRzIGVpdGhlci5cbiAgY29uc3QgZ2F0ZSA9IHJlc29sdmVkLmdhdGUuaW5zZWN1cmVcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogYXdhaXQgKFxuICAgICAgICBhd2FpdCBpbXBvcnQoXCIuL2FwcC50c1wiKVxuICAgICAgKS5zdGFydEdhdGVBcHAoe1xuICAgICAgICAuLi5yZXNvbHZlZC5nYXRlQ29uZmlnLFxuICAgICAgICBwdWJsaWNEb21haW46IHJlc29sdmVkLmdhdGUucHVibGljRG9tYWluID8/IGBsb2NhbGhvc3Q6JHtyZXNvbHZlZC5wdWJsaWNQb3J0fWAsXG4gICAgICB9KTtcbiAgaWYgKCFnYXRlKSBsb2dnZXIud2FybihcInJ1bm5pbmcgT1BFTiAtIG5vIGdhdGUgaXMgaW4gZnJvbnQgb2YgdGhpcyB0dW5uZWxcIik7XG5cbiAgYXdhaXQgc3RhcnRQcm94eSh7XG4gICAgcHVibGljUG9ydDogcmVzb2x2ZWQucHVibGljUG9ydCxcbiAgICBhcHBQb3J0LFxuICAgIGdhdGUsXG4gICAgZm9yd2FyZEhlYWRlcnM6IHJlc29sdmVkLmdhdGUuZm9yd2FyZEhlYWRlcnMsXG4gICAgZ2F0ZVBhdGhzOiByZXNvbHZlZC5nYXRlLmdhdGVQYXRocyxcbiAgICBicmFuZE5hbWU6IHJlc29sdmVkLmdhdGUuYnJhbmROYW1lLFxuICAgIGJpbmRIb3N0czogcmVzb2x2ZWQuYmluZEhvc3RzLFxuICB9KTtcblxuICBpZiAoKHJlc29sdmVkLnRyYW5zcG9ydCA9PT0gXCJwb3J0clwiIHx8IHJlc29sdmVkLnRyYW5zcG9ydCA9PT0gXCJib3RoXCIpICYmIHJlc29sdmVkLnBvcnRyKSB7XG4gICAgY29uc3QgcG9ydHJFbnYgPSBhd2FpdCBwb3J0ci5pbnN0YWxsUG9ydHIoKTtcbiAgICBhd2FpdCBwb3J0ci53cml0ZVBvcnRyQ29uZmlnKHJlc29sdmVkLnBvcnRyLCBwb3J0ckVudik7XG4gICAgY2hpbGRyZW4ucHVzaChhd2FpdCBwb3J0ci5zdGFydFBvcnRyKHJlc29sdmVkLnBvcnRyLCBwb3J0ckVudikpO1xuICB9XG4gIGlmICgocmVzb2x2ZWQudHJhbnNwb3J0ID09PSBcImZycFwiIHx8IHJlc29sdmVkLnRyYW5zcG9ydCA9PT0gXCJib3RoXCIpICYmIHJlc29sdmVkLmZycCkge1xuICAgIGNvbnN0IGZycEVudiA9IGF3YWl0IGZycC5pbnN0YWxsRnJwKCk7XG4gICAgY29uc3QgY29uZmlnUGF0aCA9IGF3YWl0IGZycC53cml0ZUZycENvbmZpZyhyZXNvbHZlZC5mcnAsIGZycEVudik7XG4gICAgY2hpbGRyZW4ucHVzaChmcnAuc3RhcnRGcnAocmVzb2x2ZWQuZnJwLCBmcnBFbnYsIGNvbmZpZ1BhdGgpKTtcbiAgfVxuICBjb25zdCBhY3RpdmVUdW5uZWxDb3VudCA9IGNoaWxkcmVuLmxlbmd0aCAtIChleGVjdXRhYmxlID8gMSA6IDApO1xuICBpZiAoIWFjdGl2ZVR1bm5lbENvdW50KSB7XG4gICAgbG9nZ2VyLmluZm8oXCJubyBzZWxlY3RlZCBwdWJsaWMgdHVubmVsIGlzIGNvbmZpZ3VyZWRcIiwge1xuICAgICAgdHJhbnNwb3J0OiByZXNvbHZlZC50cmFuc3BvcnQsXG4gICAgICBwdWJsaWNQb3J0OiByZXNvbHZlZC5wdWJsaWNQb3J0LFxuICAgIH0pO1xuICB9XG4gIHN1cGVydmlzZShjaGlsZHJlbik7XG59XG5cbi8qKiBUaGUgYGRieCB0dW5uZWxgIHByb2dyYW0uIE5vIHNpZGUgZWZmZWN0cyB1bnRpbCBwYXJzZWQuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQcm9ncmFtKG5hbWUgPSBcImRieCB0dW5uZWxcIik6IENvbW1hbmQge1xuICBjb25zdCBwcm9ncmFtID0gYWRkT3B0aW9ucyhcbiAgICBuZXcgQ29tbWFuZCgpXG4gICAgICAubmFtZShuYW1lKVxuICAgICAgLmRlc2NyaXB0aW9uKFwiRnJvbnQgYSBjb21tYW5kIHdpdGggYSBwdWJsaWMgdHVubmVsIGFuZCBwYXNzd29yZGxlc3MgYXV0aFwiKSxcbiAgKTtcblxuICAvLyBgcnVuYCBpcyB0aGUgREVGQVVMVCBhY3Rpb24gYXMgd2VsbCBhcyBhIG5hbWVkIHN1YmNvbW1hbmQsIHByZXNlcnZpbmcgdGhlIG9sZFxuICAvLyB3cmFwcGVyJ3MgZXJnb25vbWljcyAoYGRieCB0dW5uZWwgLS1hbGxvdyB4IC0tIGJ1biBzcmMvc2VydmVyLnRzYCkgd2hpbGVcbiAgLy8gbGVhdmluZyBzb21ld2hlcmUgZm9yIGBzdGF0dXNgIGFuZCBgaW5zdGFsbGAgdG8gbGl2ZS5cbiAgcHJvZ3JhbVxuICAgIC5hcmd1bWVudChcIltjb21tYW5kLi4uXVwiLCBcInRoZSBjb21tYW5kIHRvIHdyYXAsIGFmdGVyIGAtLWBcIilcbiAgICAuYWN0aW9uKGFzeW5jIChjb21tYW5kOiBzdHJpbmdbXSwgX29wdGlvbnM6IFR1bm5lbE9wdGlvbnMsIGNtZDogQ29tbWFuZCkgPT4ge1xuICAgICAgYXdhaXQgcnVuKGNtZC5vcHRzPFR1bm5lbE9wdGlvbnM+KCksIGNvbW1hbmQpO1xuICAgIH0pO1xuXG4gIGFkZE9wdGlvbnMocHJvZ3JhbS5jb21tYW5kKFwicnVuXCIpLmRlc2NyaXB0aW9uKFwiV3JhcCBhIGNvbW1hbmQgKHRoZSBkZWZhdWx0IGFjdGlvbilcIikpXG4gICAgLmFyZ3VtZW50KFwiPGNvbW1hbmQuLi4+XCIsIFwidGhlIGNvbW1hbmQgdG8gd3JhcCwgYWZ0ZXIgYC0tYFwiKVxuICAgIC5hY3Rpb24oYXN5bmMgKGNvbW1hbmQ6IHN0cmluZ1tdLCBfb3B0aW9uczogVHVubmVsT3B0aW9ucywgY21kOiBDb21tYW5kKSA9PiB7XG4gICAgICBhd2FpdCBydW4oY21kLm9wdHM8VHVubmVsT3B0aW9ucz4oKSwgY29tbWFuZCk7XG4gICAgfSk7XG5cbiAgLy8gV29ydGggaXRzIG93biBjb21tYW5kOiB0aGUgbW9zdCBjb21tb24gZmFpbHVyZSBpcyBhIHR1bm5lbCB0aGF0IHNpbGVudGx5XG4gIC8vIGRvZXMgbm90aGluZyBiZWNhdXNlIG5vIHRva2VuIG9yIGRvbWFpbiByZXNvbHZlZCwgYW5kIHRoaXMgcHJpbnRzIGV4YWN0bHlcbiAgLy8gd2hhdCB3b3VsZCBoYXBwZW4gd2l0aG91dCBzdGFydGluZyBhbnl0aGluZy5cbiAgYWRkT3B0aW9ucyhcbiAgICBwcm9ncmFtLmNvbW1hbmQoXCJzdGF0dXNcIikuZGVzY3JpcHRpb24oXCJSZXNvbHZlIHRoZSBjb25maWd1cmF0aW9uIGFuZCBwcmludCBpdFwiKSxcbiAgKS5hY3Rpb24oKF9vcHRpb25zOiBUdW5uZWxPcHRpb25zLCBjbWQ6IENvbW1hbmQpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVUdW5uZWxPcHRpb25zKGNtZC5vcHRzPFR1bm5lbE9wdGlvbnM+KCkpO1xuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke0pTT04uc3RyaW5naWZ5KHJlc29sdmVkLCBudWxsLCAyKX1cXG5gKTtcbiAgfSk7XG5cbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKFwiaW5zdGFsbFwiKVxuICAgIC5hcmd1bWVudChcIlt0cmFuc3BvcnRdXCIsIFwicG9ydHIsIGZycCwgb3IgYm90aFwiLCBcInBvcnRyXCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiSW5zdGFsbCBwdWJsaWMgdHVubmVsIGNsaWVudCBiaW5hcmllcyBhbmQgZXhpdFwiKVxuICAgIC5hY3Rpb24oYXN5bmMgKHRyYW5zcG9ydDogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAodHJhbnNwb3J0ID09PSBcInBvcnRyXCIgfHwgdHJhbnNwb3J0ID09PSBcImJvdGhcIikgYXdhaXQgcG9ydHIuaW5zdGFsbFBvcnRyKCk7XG4gICAgICBpZiAodHJhbnNwb3J0ID09PSBcImZycFwiIHx8IHRyYW5zcG9ydCA9PT0gXCJib3RoXCIpIGF3YWl0IGZycC5pbnN0YWxsRnJwKCk7XG4gICAgICBpZiAodHJhbnNwb3J0ICE9PSBcInBvcnRyXCIgJiYgdHJhbnNwb3J0ICE9PSBcImZycFwiICYmIHRyYW5zcG9ydCAhPT0gXCJib3RoXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbW1hbmRlckVycm9yKDEsIFwidHVubmVsLmludmFsaWQtdHJhbnNwb3J0XCIsIGBpbnZhbGlkIHRyYW5zcG9ydDogJHt0cmFuc3BvcnR9YCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgcmV0dXJuIHByb2dyYW07XG59XG4iXX0=
package/package.json CHANGED
@@ -24,13 +24,13 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@databricks/appkit": "^0.60.0",
27
- "@dbx-tools/appkit": "0.6.131",
28
- "@dbx-tools/auth": "0.6.131",
29
- "@dbx-tools/core": "0.6.131",
30
- "@dbx-tools/email": "0.6.131",
31
- "@dbx-tools/shared-core": "0.6.131",
32
- "@dbx-tools/shared-email": "0.6.131",
33
- "@dbx-tools/tunnel": "0.6.131",
27
+ "@dbx-tools/appkit": "0.6.133",
28
+ "@dbx-tools/auth": "0.6.133",
29
+ "@dbx-tools/core": "0.6.133",
30
+ "@dbx-tools/email": "0.6.133",
31
+ "@dbx-tools/shared-core": "0.6.133",
32
+ "@dbx-tools/shared-email": "0.6.133",
33
+ "@dbx-tools/tunnel": "0.6.133",
34
34
  "commander": "^15.0.0",
35
35
  "http-proxy-3": "^1.23.1"
36
36
  },
@@ -64,7 +64,7 @@
64
64
  "./package.json": "./package.json"
65
65
  }
66
66
  },
67
- "version": "0.6.131",
67
+ "version": "0.6.133",
68
68
  "types": "./lib/index.d.ts",
69
69
  "type": "module",
70
70
  "exports": {
package/src/cli.ts CHANGED
@@ -179,11 +179,12 @@ async function run(raw: TunnelOptions, command: readonly string[]): Promise<void
179
179
  children.push(frp.startFrp(resolved.frp, frpEnv, configPath));
180
180
  }
181
181
  const activeTunnelCount = children.length - (executable ? 1 : 0);
182
- if (!activeTunnelCount)
182
+ if (!activeTunnelCount) {
183
183
  logger.info("no selected public tunnel is configured", {
184
184
  transport: resolved.transport,
185
185
  publicPort: resolved.publicPort,
186
186
  });
187
+ }
187
188
  supervise(children);
188
189
  }
189
190