@bitgo/sdk-lib-mpc 9.8.0 → 9.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,6 +23,6 @@ export declare function combinePartialSignatures(round4MessagePayloads: Uint8Arr
23
23
  */
24
24
  export declare function verifyAndConvertDklsSignature(message: Buffer, dklsSignature: DeserializedDklsSignature, commonKeychain: string, derivationPath?: string, hash?: Hash, shouldHash?: boolean): string;
25
25
  export declare function executeTillRound(round: number, party1Dsg: Dsg, party2Dsg: Dsg): Promise<DeserializedMessages[] | DeserializedDklsSignature>;
26
- export declare function generateDKGKeyShares(retrofitDataA?: RetrofitData, retrofitDataB?: RetrofitData, retrofitDataC?: RetrofitData): Promise<[Dkg, Dkg, Dkg]>;
26
+ export declare function generateDKGKeyShares(retrofitDataA?: RetrofitData, retrofitDataB?: RetrofitData, retrofitDataC?: RetrofitData, seedUser?: Buffer, seedBackup?: Buffer, seedBitgo?: Buffer): Promise<[Dkg, Dkg, Dkg]>;
27
27
  export declare function generate2of2KeyShares(retrofitDataA?: RetrofitData, retrofitDataB?: RetrofitData): Promise<[Dkg, Dkg]>;
28
28
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/util.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGxF,OAAO,EAAc,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAK5B;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,qBAAqB,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,yBAAyB,CAgBrH;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,yBAAyB,EACxC,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,EACvB,IAAI,CAAC,EAAE,IAAI,EACX,UAAU,UAAO,GAChB,MAAM,CA6BR;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,oBAAoB,EAAE,GAAG,yBAAyB,CAAC,CAgD7D;AAED,wBAAsB,oBAAoB,CACxC,aAAa,CAAC,EAAE,YAAY,EAC5B,aAAa,CAAC,EAAE,YAAY,EAC5B,aAAa,CAAC,EAAE,YAAY,GAC3B,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAoE1B;AAED,wBAAsB,qBAAqB,CACzC,aAAa,CAAC,EAAE,YAAY,EAC5B,aAAa,CAAC,EAAE,YAAY,GAC3B,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAsCrB"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/util.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGxF,OAAO,EAAc,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAK5B;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,qBAAqB,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,yBAAyB,CAgBrH;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,yBAAyB,EACxC,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,EACvB,IAAI,CAAC,EAAE,IAAI,EACX,UAAU,UAAO,GAChB,MAAM,CA6BR;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,oBAAoB,EAAE,GAAG,yBAAyB,CAAC,CAgD7D;AAED,wBAAsB,oBAAoB,CACxC,aAAa,CAAC,EAAE,YAAY,EAC5B,aAAa,CAAC,EAAE,YAAY,EAC5B,aAAa,CAAC,EAAE,YAAY,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAoE1B;AAED,wBAAsB,qBAAqB,CACzC,aAAa,CAAC,EAAE,YAAY,EAC5B,aAAa,CAAC,EAAE,YAAY,GAC3B,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAsCrB"}
@@ -27,7 +27,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.generate2of2KeyShares = exports.generateDKGKeyShares = exports.executeTillRound = exports.verifyAndConvertDklsSignature = exports.combinePartialSignatures = void 0;
30
- const secp256k1_1 = require("@noble/secp256k1");
30
+ const secp256k1_1 = require("@noble/curves/secp256k1");
31
31
  const curves_1 = require("../../curves");
32
32
  const util_1 = require("../../util");
33
33
  const cbor_x_1 = require("cbor-x");
@@ -52,7 +52,7 @@ function combinePartialSignatures(round4MessagePayloads, rHex) {
52
52
  const s0Sum = s0BigInts.slice(1).reduce((sumSoFar, s0) => secp256k1Curve.scalarAdd(sumSoFar, s0), s0BigInts[0]);
53
53
  const s1Sum = s1BigInts.slice(1).reduce((sumSoFar, s1) => secp256k1Curve.scalarAdd(sumSoFar, s1), s1BigInts[0]);
54
54
  const s = secp256k1Curve.scalarMult(s0Sum, secp256k1Curve.scalarInvert(s1Sum));
55
- const sig = new secp256k1_1.Signature(r, s);
55
+ const sig = new secp256k1_1.secp256k1.Signature(r, s);
56
56
  const normalizedSig = sig.normalizeS();
57
57
  return {
58
58
  R: new Uint8Array((0, util_1.bigIntToBufferBE)(normalizedSig.r, 32)),
@@ -148,10 +148,10 @@ async function executeTillRound(round, party1Dsg, party2Dsg) {
148
148
  return party1Dsg.signature;
149
149
  }
150
150
  exports.executeTillRound = executeTillRound;
151
- async function generateDKGKeyShares(retrofitDataA, retrofitDataB, retrofitDataC) {
152
- const user = new dkg_1.Dkg(3, 2, 0, retrofitDataA);
153
- const backup = new dkg_1.Dkg(3, 2, 1, retrofitDataB);
154
- const bitgo = new dkg_1.Dkg(3, 2, 2, retrofitDataC);
151
+ async function generateDKGKeyShares(retrofitDataA, retrofitDataB, retrofitDataC, seedUser, seedBackup, seedBitgo) {
152
+ const user = new dkg_1.Dkg(3, 2, 0, seedUser, retrofitDataA);
153
+ const backup = new dkg_1.Dkg(3, 2, 1, seedBackup, retrofitDataB);
154
+ const bitgo = new dkg_1.Dkg(3, 2, 2, seedBitgo, retrofitDataC);
155
155
  const userRound1Message = await user.initDkg();
156
156
  const backupRound1Message = await backup.initDkg();
157
157
  const bitgoRound1Message = await bitgo.initDkg();
@@ -219,8 +219,8 @@ async function generateDKGKeyShares(retrofitDataA, retrofitDataB, retrofitDataC)
219
219
  }
220
220
  exports.generateDKGKeyShares = generateDKGKeyShares;
221
221
  async function generate2of2KeyShares(retrofitDataA, retrofitDataB) {
222
- const partyA = new dkg_1.Dkg(2, 2, 0, retrofitDataA);
223
- const partyB = new dkg_1.Dkg(2, 2, 1, retrofitDataB);
222
+ const partyA = new dkg_1.Dkg(2, 2, 0, undefined, retrofitDataA);
223
+ const partyB = new dkg_1.Dkg(2, 2, 1, undefined, retrofitDataB);
224
224
  const partyARound1Message = await partyA.initDkg();
225
225
  const partyBRound1Message = await partyB.initDkg();
226
226
  const partyARound2Messages = partyA.handleIncomingMessages({
@@ -258,4 +258,4 @@ async function generate2of2KeyShares(retrofitDataA, retrofitDataB) {
258
258
  return [partyA, partyB];
259
259
  }
260
260
  exports.generate2of2KeyShares = generate2of2KeyShares;
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZWNkc2EtZGtscy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQTZDO0FBQzdDLHlDQUE0RTtBQUM1RSxxQ0FBa0U7QUFFbEUsbUNBQWdDO0FBQ2hDLHFEQUF1QztBQUN2QyxtQ0FBMEM7QUFFMUMsK0JBQTRCO0FBQzVCLG9EQUE0QjtBQUU1QixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUM7QUFFdEI7Ozs7O0dBS0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxxQkFBbUMsRUFBRSxJQUFZO0lBQ3hGLE1BQU0sQ0FBQyxHQUFHLElBQUEseUJBQWtCLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxLQUFLLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLGVBQU0sRUFBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5RCxNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsZUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUEseUJBQWtCLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBQSx5QkFBa0IsRUFBQyxNQUFNLENBQUMs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QUMsQ0FBQztJQUNILE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDO1FBQ3pELFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RSxpQkFBaUIsRUFBRSxFQUFFO0tBQ3RCLENBQUMsQ0FBQztJQUNILE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDO1FBQ3pELFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RSxpQkFBaUIsRUFBRSxFQUFFO0tBQ3RCLENBQUMsQ0FBQztJQUNILE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDO1FBQ3pELFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RSxpQkFBaUIsRUFBRSxFQUFFO0tBQ3RCLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztRQUM1QixXQUFXLEVBQUUsRUFBRTtRQUNmLGlCQUFpQixFQUFFLG9CQUFvQixDQUFDLGlCQUFpQjtLQUMxRCxDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsc0JBQXNCLENBQUM7UUFDNUIsV0FBVyxFQUFFLEVBQUU7UUFDZixpQkFBaUIsRUFBRSxvQkFBb0IsQ0FBQyxpQkFBaUI7S0FDMUQsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBekNELHNEQXlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hdHVyZSB9IGZyb20gJ0Bub2JsZS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgSERUcmVlLCBTZWNwMjU2azFCaXAzMkhkVHJlZSwgU2VjcDI1NmsxQ3VydmUgfSBmcm9tICcuLi8uLi9jdXJ2ZXMnO1xuaW1wb3J0IHsgYmlnSW50RnJvbUJ1ZmZlckJFLCBiaWdJbnRUb0J1ZmZlckJFIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBEZXNlcmlhbGl6ZWREa2xzU2lnbmF0dXJlLCBEZXNlcmlhbGl6ZWRNZXNzYWdlcywgUmV0cm9maXREYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tICdjYm9yLXgnO1xuaW1wb3J0ICogYXMgc2VjcDI1NmsxIGZyb20gJ3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoLCBIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IERzZyB9IGZyb20gJy4vZHNnJztcbmltcG9ydCB7IERrZyB9IGZyb20gJy4vZGtnJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuY29uc3QgZGVsaW1ldGVyID0gJzonO1xuXG4vKipcbiAqIENvbWJpbmVzIHBhcnRpYWwgc2lnbmF0dXJlcyBmcm9tIHBhcnRpZXMgcGFydGljaXBhdGluZyBpbiBEU0cuXG4gKiBAcGFyYW0gcm91bmQ0TWVzc2FnZVBheWxvYWRzIC0gcm91bmQgNCBtZXNzYWdlIHBheWxvYWRzIGZyb20gcGFydGljaXBhdGluZyBwYXJ0aWVzXG4gKiBAcGFyYW0gckhleCAtIGhleCByZXByZXNlbnRhdGlvbiBvZiB0aGUgciB2YWx1ZSBpbiB0aGUgc2lnbmF0dXJlXG4gKiBAcmV0dXJucyB7RGVzZXJpYWxpemVkTWVzc2FnZXN9IC0gbWVzc2FnZXMgdG8gc2VuZCB0byBvdGhlciBwYXJ0aWVzIGZvciB0aGUgbmV4dCByb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZVBhcnRpYWxTaWduYXR1cmVzKHJvdW5kNE1lc3NhZ2VQYXlsb2FkczogVWludDhBcnJheVtdLCBySGV4OiBzdHJpbmcpOiBEZXNlcmlhbGl6ZWREa2xzU2lnbmF0dXJlIHtcbiAgY29uc3QgciA9IGJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShySGV4LCAnaGV4Jykuc3ViYXJyYXkoMSkpO1xuICBjb25zdCBzMEFyciA9IHJvdW5kNE1lc3NhZ2VQYXlsb2Fkcy5tYXAoKHApID0+IGRlY29kZShwKS5zXzApO1xuICBjb25zdCBzMUFyciA9IHJvdW5kNE1lc3NhZ2VQYXlsb2Fkcy5tYXAoKHApID0+IGRlY29kZShwKS5zXzEpO1xuICBjb25zdCBzMEJpZ0ludHMgPSBzMEFyci5tYXAoKHMwKSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oczApKSk7XG4gIGNvbnN0IHMxQmlnSW50cyA9IHMxQXJyLm1hcCgoczEpID0+IGJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShzMSkpKTtcbiAgY29uc3Qgc2VjcDI1NmsxQ3VydmUgPSBuZXcgU2VjcDI1NmsxQ3VydmUoKTtcbiAgY29uc3QgczBTdW0gPSBzMEJpZ0ludHMuc2xpY2UoMSkucmVkdWNlKChzdW1Tb0ZhciwgczApID0+IHNlY3AyNTZrMUN1cnZlLnNjYWxhckFkZChzdW1Tb0ZhciwgczApLCBzMEJpZ0ludHNbMF0pO1xuICBjb25zdCBzMVN1bSA9IHMxQmlnSW50cy5zbGljZSgxKS5yZWR1Y2UoKHN1bVNvRmFyLCBzMSkgPT4gc2VjcDI1NmsxQ3VydmUuc2NhbGFyQWRkKHN1bVNvRmFyLCBzMSksIHMxQmlnSW50c1swXSk7XG4gIGNvbnN0IHMgPSBzZWNwMjU2azFDdXJ2ZS5zY2FsYXJNdWx0KHMwU3VtLCBzZWNwMjU2azFDdXJ2ZS5zY2FsYXJJbnZlcnQoczFTdW0pKTtcbiAgY29uc3Qgc2lnID0gbmV3IFNpZ25hdHVyZShyLCBzKTtcbiAgY29uc3Qgbm9ybWFsaXplZFNpZyA9IHNpZy5ub3JtYWxpemVTKCk7XG4gIHJldHVybiB7XG4gICAgUjogbmV3IFVpbnQ4QXJyYXkoYmlnSW50VG9CdWZmZXJCRShub3JtYWxpemVkU2lnLnIsIDMyKSksXG4gICAgUzogbmV3IFVpbnQ4QXJyYXkoYmlnSW50VG9CdWZmZXJCRShub3JtYWxpemVkU2lnLnMsIDMyKSksXG4gIH07XG59XG5cbi8qKlxuICogVmVyaWZ5IGEgREtMcyBTaWduYXR1cmUgYW5kIHNlcmlhbGl6ZSBpdCB0byByZWNpZDpyOnM6cHVibGlja2V5IGZvcm1hdC5cbiAqIEBwYXJhbSBtZXNzYWdlIC0gbWVzc2FnZSB0aGF0IHdhcyBzaWduZWQuXG4gKiBAcGFyYW0gZGtsc1NpZ25hdHVyZSAtIFIgYW5kIFMgdmFsdWVzIG9mIHRoZSBFQ0RTQSBzaWduYXR1cmUuXG4gKiBAcGFyYW0gY29tbW9uS2V5Y2hhaW4gLSBwdWJsaWMga2V5IGFwcGVuZGVkIHRvIGNoYWluY29kZSBpbiBoZXguXG4gKiBAcGFyYW0gZGVyaXZhdGlvblBhdGggLSBvcHRpb25hbCBkZXJpdmF0aW9uIHBhdGggdG8gZGVyaXZlIG9uIHRoZSBjb21tb25rZXljaGFpbiBiZWZvcmUgdmVyaWZpY2F0aW9uLlxuICogQHBhcmFtIGhhc2ggLSBvcHRpb25hbCBoYXNoIGZ1bmN0aW9uIHRvIGFwcGx5IG9uIG1lc3NhZ2UgYmVmb3JlIHZlcmlmeWluZy4gRGVmYXVsdCBpcyBzaGEyNTYuXG4gKiBAcGFyYW0gc2hvdWxkSGFzaCAtIGZsYWcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgbWVzc2FnZSBzaG91bGQgYmUgaGFzaGVkIGJlZm9yZSB2ZXJpZnlpbmcuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIHNlcmlhbGl6ZWQgc2lnbmF0dXJlIGluIGByZWNpZDpyOnM6cHVibGlja2V5YCBmb3JtYXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeUFuZENvbnZlcnREa2xzU2lnbmF0dXJlKFxuICBtZXNzYWdlOiBCdWZmZXIsXG4gIGRrbHNTaWduYXR1cmU6IERlc2VyaWFsaXplZERrbHNTaWduYXR1cmUsXG4gIGNvbW1vbktleWNoYWluOiBzdHJpbmcsXG4gIGRlcml2YXRpb25QYXRoPzogc3RyaW5nLFxuICBoYXNoPzogSGFzaCxcbiAgc2hvdWxkSGFzaCA9IHRydWVcbik6IHN0cmluZyB7XG4gIGxldCB0cnVlUHViID0gJyc7XG4gIGlmIChkZXJpdmF0aW9uUGF0aCAmJiBkZXJpdmF0aW9uUGF0aCAhPT0gJ20nKSB7XG4gICAgY29uc3QgaGRUcmVlOiBIRFRyZWUgPSBuZXcgU2VjcDI1NmsxQmlwMzJIZFRyZWUoKTtcbiAgICBjb25zdCBkZXJpdmVkUHViID0gaGRUcmVlLnB1YmxpY0Rlcml2ZShcbiAgICAgIHtcbiAgICAgICAgcGs6IGJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShjb21tb25LZXljaGFpbi5zbGljZSgwLCA2NiksICdoZXgnKSksXG4gICAgICAgIGNoYWluY29kZTogYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGNvbW1vbktleWNoYWluLnNsaWNlKDY2KSwgJ2hleCcpKSxcbiAgICAgIH0sXG4gICAgICBkZXJpdmF0aW9uUGF0aFxuICAgICk7XG4gICAgdHJ1ZVB1YiA9IGJpZ0ludFRvQnVmZmVyQkUoZGVyaXZlZFB1Yi5waykudG9TdHJpbmcoJ2hleCcpO1xuICB9IGVsc2Uge1xuICAgIHRydWVQdWIgPSBjb21tb25LZXljaGFpbi5zbGljZSgwLCA2Nik7XG4gIH1cbiAgY29uc3QgbWVzc2FnZVRvVmVyaWZ5ID0gc2hvdWxkSGFzaCA/IChoYXNoIHx8IGNyZWF0ZUhhc2goJ3NoYTI1NicpKS51cGRhdGUobWVzc2FnZSkuZGlnZXN0KCkgOiBtZXNzYWdlO1xuICBjb25zdCBwdWIwID0gc2VjcDI1NmsxLmVjZHNhUmVjb3ZlcihCdWZmZXIuY29uY2F0KFtka2xzU2lnbmF0dXJlLlIsIGRrbHNTaWduYXR1cmUuU10pLCAwLCBtZXNzYWdlVG9WZXJpZnksIHRydWUpO1xuICBjb25zdCBwdWIxID0gc2VjcDI1NmsxLmVjZHNhUmVjb3ZlcihCdWZmZXIuY29uY2F0KFtka2xzU2lnbmF0dXJlLlIsIGRrbHNTaWduYXR1cmUuU10pLCAxLCBtZXNzYWdlVG9WZXJpZnksIHRydWUpO1xuICBsZXQgcmVjSWQ6IG51bWJlcjtcbiAgaWYgKHRydWVQdWIgPT09IEJ1ZmZlci5mcm9tKHB1YjApLnRvU3RyaW5nKCdoZXgnKSkge1xuICAgIHJlY0lkID0gMDtcbiAgfSBlbHNlIGlmICh0cnVlUHViID09PSBCdWZmZXIuZnJvbShwdWIxKS50b1N0cmluZygnaGV4JykpIHtcbiAgICByZWNJZCA9IDE7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3IoJ0ludmFsaWQgU2lnbmF0dXJlJyk7XG4gIH1cbiAgcmV0dXJuIGAke3JlY0lkfSR7ZGVsaW1ldGVyfSR7QnVmZmVyLmZyb20oZGtsc1NpZ25hdHVyZS5SKS50b1N0cmluZygnaGV4Jyl9JHtkZWxpbWV0ZXJ9JHtCdWZmZXIuZnJvbShcbiAgICBka2xzU2lnbmF0dXJlLlNcbiAgKS50b1N0cmluZygnaGV4Jyl9JHtkZWxpbWV0ZXJ9JHt0cnVlUHVifWA7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlVGlsbFJvdW5kKFxuICByb3VuZDogbnVtYmVyLFxuICBwYXJ0eTFEc2c6IERzZyxcbiAgcGFydHkyRHNnOiBEc2dcbik6IFByb21pc2U8RGVzZXJpYWxpemVkTWVzc2FnZXNbXSB8IERlc2VyaWFsaXplZERrbHNTaWduYXR1cmU+IHtcbiAgaWYgKHJvdW5kIDwgMSB8fCByb3VuZCA+IDUpIHtcbiAgICB0aHJvdyBFcnJvcignSW52YWxpZCByb3VuZCBudW1iZXInKTtcbiAgfVxuICBjb25zdCBwYXJ0eTFSb3VuZDFNZXNzYWdlID0gYXdhaXQgcGFydHkxRHNnLmluaXQoKTtcbiAgY29uc3QgcGFydHkyUm91bmQxTWVzc2FnZSA9IGF3YWl0IHBhcnR5MkRzZy5pbml0KCk7XG5cbiAgY29uc3QgcGFydHkyUm91bmQyTWVzc2FnZXMgPSBwYXJ0eTJEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbcGFydHkxUm91bmQxTWVzc2FnZV0sXG4gIH0pO1xuICBjb25zdCBwYXJ0eTFSb3VuZDJNZXNzYWdlcyA9IHBhcnR5MURzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtwYXJ0eTJSb3VuZDFNZXNzYWdlXSxcbiAgfSk7XG4gIGlmIChyb3VuZCA9PT0gMikgcmV0dXJuIFtwYXJ0eTFSb3VuZDJNZXNzYWdlcywgcGFydHkyUm91bmQyTWVzc2FnZXNdO1xuXG4gIGNvbnN0IHBhcnR5MVJvdW5kM01lc3NhZ2VzID0gcGFydHkxRHNnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBwYXJ0eTJSb3VuZDJNZXNzYWdlcy5wMnBNZXNzYWdlcyxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBjb25zdCBwYXJ0eTJSb3VuZDNNZXNzYWdlcyA9IHBhcnR5MkRzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogcGFydHkxUm91bmQyTWVzc2FnZXMucDJwTWVzc2FnZXMsXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgaWYgKHJvdW5kID09PSAzKSByZXR1cm4gW3BhcnR5MVJvdW5kM01lc3NhZ2VzLCBwYXJ0eTJSb3VuZDNNZXNzYWdlc107XG5cbiAgY29uc3QgcGFydHkyUm91bmQ0TWVzc2FnZXMgPSBwYXJ0eTJEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5MVJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGNvbnN0IHBhcnR5MVJvdW5kNE1lc3NhZ2VzID0gcGFydHkxRHNnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBwYXJ0eTJSb3VuZDNNZXNzYWdlcy5wMnBNZXNzYWdlcyxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBpZiAocm91bmQgPT09IDQpIHJldHVybiBbcGFydHkxUm91bmQ0TWVzc2FnZXMsIHBhcnR5MlJvdW5kNE1lc3NhZ2VzXTtcblxuICBwYXJ0eTFEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBwYXJ0eTJSb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcyxcbiAgfSk7XG4gIHBhcnR5MkRzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IHBhcnR5MVJvdW5kNE1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzLFxuICB9KTtcbiAgYXNzZXJ0KEJ1ZmZlci5mcm9tKHBhcnR5MURzZy5zaWduYXR1cmUuUikudG9TdHJpbmcoJ2hleCcpID09PSBCdWZmZXIuZnJvbShwYXJ0eTJEc2cuc2lnbmF0dXJlLlIpLnRvU3RyaW5nKCdoZXgnKSk7XG4gIGFzc2VydChCdWZmZXIuZnJvbShwYXJ0eTFEc2cuc2lnbmF0dXJlLlMpLnRvU3RyaW5nKCdoZXgnKSA9PT0gQnVmZmVyLmZyb20ocGFydHkyRHNnLnNpZ25hdHVyZS5TKS50b1N0cmluZygnaGV4JykpO1xuICByZXR1cm4gcGFydHkxRHNnLnNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlREtHS2V5U2hhcmVzKFxuICByZXRyb2ZpdERhdGFBPzogUmV0cm9maXREYXRhLFxuICByZXRyb2ZpdERhdGFCPzogUmV0cm9maXREYXRhLFxuICByZXRyb2ZpdERhdGFDPzogUmV0cm9maXREYXRhXG4pOiBQcm9taXNlPFtEa2csIERrZywgRGtnXT4ge1xuICBjb25zdCB1c2VyID0gbmV3IERrZygzLCAyLCAwLCByZXRyb2ZpdERhdGFBKTtcbiAgY29uc3QgYmFja3VwID0gbmV3IERrZygzLCAyLCAxLCByZXRyb2ZpdERhdGFCKTtcbiAgY29uc3QgYml0Z28gPSBuZXcgRGtnKDMsIDIsIDIsIHJldHJvZml0RGF0YUMpO1xuICBjb25zdCB1c2VyUm91bmQxTWVzc2FnZSA9IGF3YWl0IHVzZXIuaW5pdERrZygpO1xuICBjb25zdCBiYWNrdXBSb3VuZDFNZXNzYWdlID0gYXdhaXQgYmFja3VwLmluaXREa2coKTtcbiAgY29uc3QgYml0Z29Sb3VuZDFNZXNzYWdlID0gYXdhaXQgYml0Z28uaW5pdERrZygpO1xuICBjb25zdCB1c2VyUm91bmQyTWVzc2FnZXMgPSB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW2JpdGdvUm91bmQxTWVzc2FnZSwgYmFja3VwUm91bmQxTWVzc2FnZV0sXG4gIH0pO1xuICBjb25zdCBiYWNrdXBSb3VuZDJNZXNzYWdlcyA9IGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt1c2VyUm91bmQxTWVzc2FnZSwgYml0Z29Sb3VuZDFNZXNzYWdlXSxcbiAgfSk7XG4gIGNvbnN0IGJpdGdvUm91bmQyTWVzc2FnZXMgPSBiaXRnby5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt1c2VyUm91bmQxTWVzc2FnZSwgYmFja3VwUm91bmQxTWVzc2FnZV0sXG4gIH0pO1xuICBjb25zdCB1c2VyUm91bmQzTWVzc2FnZXMgPSB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBiYWNrdXBSb3VuZDJNZXNzYWdlcy5wMnBNZXNzYWdlc1xuICAgICAgLmZpbHRlcigobSkgPT4gbS50byA9PT0gMClcbiAgICAgIC5jb25jYXQoYml0Z29Sb3VuZDJNZXNzYWdlcy5wMnBNZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0udG8gPT09IDApKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBjb25zdCBiYWNrdXBSb3VuZDNNZXNzYWdlcyA9IGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogYml0Z29Sb3VuZDJNZXNzYWdlcy5wMnBNZXNzYWdlc1xuICAgICAgLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSlcbiAgICAgIC5jb25jYXQodXNlclJvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSkpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGNvbnN0IGJpdGdvUm91bmQzTWVzc2FnZXMgPSBiaXRnby5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogYmFja3VwUm91bmQyTWVzc2FnZXMucDJwTWVzc2FnZXNcbiAgICAgIC5maWx0ZXIoKG0pID0+IG0udG8gPT09IDIpXG4gICAgICAuY29uY2F0KHVzZXJSb3VuZDJNZXNzYWdlcy5wMnBNZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0udG8gPT09IDIpKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBjb25zdCB1c2VyUm91bmQ0TWVzc2FnZXMgPSB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBiYWNrdXBSb3VuZDNNZXNzYWdlcy5wMnBNZXNzYWdlc1xuICAgICAgLmZpbHRlcigobSkgPT4gbS50byA9PT0gMClcbiAgICAgIC5jb25jYXQoYml0Z29Sb3VuZDNNZXNzYWdlcy5wMnBNZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0udG8gPT09IDApKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBjb25zdCBiYWNrdXBSb3VuZDRNZXNzYWdlcyA9IGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogYml0Z29Sb3VuZDNNZXNzYWdlcy5wMnBNZXNzYWdlc1xuICAgICAgLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSlcbiAgICAgIC5jb25jYXQodXNlclJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSkpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGNvbnN0IGJpdGdvUm91bmQ0TWVzc2FnZXMgPSBiaXRnby5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogYmFja3VwUm91bmQzTWVzc2FnZXMucDJwTWVzc2FnZXNcbiAgICAgIC5maWx0ZXIoKG0pID0+IG0udG8gPT09IDIpXG4gICAgICAuY29uY2F0KHVzZXJSb3VuZDNNZXNzYWdlcy5wMnBNZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0udG8gPT09IDIpKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogYml0Z29Sb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcy5jb25jYXQoYmFja3VwUm91bmQ0TWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMpLFxuICB9KTtcbiAgYml0Z28uaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBiYWNrdXBSb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcy5jb25jYXQodXNlclJvdW5kNE1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzKSxcbiAgfSk7XG4gIGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IGJpdGdvUm91bmQ0TWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMuY29uY2F0KHVzZXJSb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcyksXG4gIH0pO1xuICByZXR1cm4gW3VzZXIsIGJhY2t1cCwgYml0Z29dO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGUyb2YyS2V5U2hhcmVzKFxuICByZXRyb2ZpdERhdGFBPzogUmV0cm9maXREYXRhLFxuICByZXRyb2ZpdERhdGFCPzogUmV0cm9maXREYXRhXG4pOiBQcm9taXNlPFtEa2csIERrZ10+IHtcbiAgY29uc3QgcGFydHlBID0gbmV3IERrZygyLCAyLCAwLCByZXRyb2ZpdERhdGFBKTtcbiAgY29uc3QgcGFydHlCID0gbmV3IERrZygyLCAyLCAxLCByZXRyb2ZpdERhdGFCKTtcbiAgY29uc3QgcGFydHlBUm91bmQxTWVzc2FnZSA9IGF3YWl0IHBhcnR5QS5pbml0RGtnKCk7XG4gIGNvbnN0IHBhcnR5QlJvdW5kMU1lc3NhZ2UgPSBhd2FpdCBwYXJ0eUIuaW5pdERrZygpO1xuICBjb25zdCBwYXJ0eUFSb3VuZDJNZXNzYWdlcyA9IHBhcnR5QS5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtwYXJ0eUJSb3VuZDFNZXNzYWdlXSxcbiAgfSk7XG4gIGNvbnN0IHBhcnR5QlJvdW5kMk1lc3NhZ2VzID0gcGFydHlCLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3BhcnR5QVJvdW5kMU1lc3NhZ2VdLFxuICB9KTtcbiAgY29uc3QgcGFydHlBUm91bmQzTWVzc2FnZXMgPSBwYXJ0eUEuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5QlJvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMCksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgY29uc3QgcGFydHlCUm91bmQzTWVzc2FnZXMgPSBwYXJ0eUIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5QVJvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgY29uc3QgcGFydHlBUm91bmQ0TWVzc2FnZXMgPSBwYXJ0eUEuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5QlJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMCksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgY29uc3QgcGFydHlCUm91bmQ0TWVzc2FnZXMgPSBwYXJ0eUIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5QVJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgcGFydHlBLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogcGFydHlCUm91bmQ0TWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMsXG4gIH0pO1xuICBwYXJ0eUIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBwYXJ0eUFSb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcyxcbiAgfSk7XG4gIHJldHVybiBbcGFydHlBLCBwYXJ0eUJdO1xufVxuIl19
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZWNkc2EtZGtscy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQTREO0FBQzVELHlDQUE0RTtBQUM1RSxxQ0FBa0U7QUFFbEUsbUNBQWdDO0FBQ2hDLHFEQUF1QztBQUN2QyxtQ0FBMEM7QUFFMUMsK0JBQTRCO0FBQzVCLG9EQUE0QjtBQUU1QixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUM7QUFFdEI7Ozs7O0dBS0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxxQkFBbUMsRUFBRSxJQUFZO0lBQ3hGLE1BQU0sQ0FBQyxHQUFHLElBQUEseUJBQWtCLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxLQUFLLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLGVBQU0sRUFBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5RCxNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsZUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUEseUJBQWtCLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBQSx5QkFBa0IsRUFBQyxNQUFNLENBQUMs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QztBQUMxQixDQUFDO0FBekNELHNEQXlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNlY3AyNTZrMSBhcyBzZWNwIH0gZnJvbSAnQG5vYmxlL2N1cnZlcy9zZWNwMjU2azEnO1xuaW1wb3J0IHsgSERUcmVlLCBTZWNwMjU2azFCaXAzMkhkVHJlZSwgU2VjcDI1NmsxQ3VydmUgfSBmcm9tICcuLi8uLi9jdXJ2ZXMnO1xuaW1wb3J0IHsgYmlnSW50RnJvbUJ1ZmZlckJFLCBiaWdJbnRUb0J1ZmZlckJFIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBEZXNlcmlhbGl6ZWREa2xzU2lnbmF0dXJlLCBEZXNlcmlhbGl6ZWRNZXNzYWdlcywgUmV0cm9maXREYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tICdjYm9yLXgnO1xuaW1wb3J0ICogYXMgc2VjcDI1NmsxIGZyb20gJ3NlY3AyNTZrMSc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoLCBIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IERzZyB9IGZyb20gJy4vZHNnJztcbmltcG9ydCB7IERrZyB9IGZyb20gJy4vZGtnJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuY29uc3QgZGVsaW1ldGVyID0gJzonO1xuXG4vKipcbiAqIENvbWJpbmVzIHBhcnRpYWwgc2lnbmF0dXJlcyBmcm9tIHBhcnRpZXMgcGFydGljaXBhdGluZyBpbiBEU0cuXG4gKiBAcGFyYW0gcm91bmQ0TWVzc2FnZVBheWxvYWRzIC0gcm91bmQgNCBtZXNzYWdlIHBheWxvYWRzIGZyb20gcGFydGljaXBhdGluZyBwYXJ0aWVzXG4gKiBAcGFyYW0gckhleCAtIGhleCByZXByZXNlbnRhdGlvbiBvZiB0aGUgciB2YWx1ZSBpbiB0aGUgc2lnbmF0dXJlXG4gKiBAcmV0dXJucyB7RGVzZXJpYWxpemVkTWVzc2FnZXN9IC0gbWVzc2FnZXMgdG8gc2VuZCB0byBvdGhlciBwYXJ0aWVzIGZvciB0aGUgbmV4dCByb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZVBhcnRpYWxTaWduYXR1cmVzKHJvdW5kNE1lc3NhZ2VQYXlsb2FkczogVWludDhBcnJheVtdLCBySGV4OiBzdHJpbmcpOiBEZXNlcmlhbGl6ZWREa2xzU2lnbmF0dXJlIHtcbiAgY29uc3QgciA9IGJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShySGV4LCAnaGV4Jykuc3ViYXJyYXkoMSkpO1xuICBjb25zdCBzMEFyciA9IHJvdW5kNE1lc3NhZ2VQYXlsb2Fkcy5tYXAoKHApID0+IGRlY29kZShwKS5zXzApO1xuICBjb25zdCBzMUFyciA9IHJvdW5kNE1lc3NhZ2VQYXlsb2Fkcy5tYXAoKHApID0+IGRlY29kZShwKS5zXzEpO1xuICBjb25zdCBzMEJpZ0ludHMgPSBzMEFyci5tYXAoKHMwKSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oczApKSk7XG4gIGNvbnN0IHMxQmlnSW50cyA9IHMxQXJyLm1hcCgoczEpID0+IGJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShzMSkpKTtcbiAgY29uc3Qgc2VjcDI1NmsxQ3VydmUgPSBuZXcgU2VjcDI1NmsxQ3VydmUoKTtcbiAgY29uc3QgczBTdW0gPSBzMEJpZ0ludHMuc2xpY2UoMSkucmVkdWNlKChzdW1Tb0ZhciwgczApID0+IHNlY3AyNTZrMUN1cnZlLnNjYWxhckFkZChzdW1Tb0ZhciwgczApLCBzMEJpZ0ludHNbMF0pO1xuICBjb25zdCBzMVN1bSA9IHMxQmlnSW50cy5zbGljZSgxKS5yZWR1Y2UoKHN1bVNvRmFyLCBzMSkgPT4gc2VjcDI1NmsxQ3VydmUuc2NhbGFyQWRkKHN1bVNvRmFyLCBzMSksIHMxQmlnSW50c1swXSk7XG4gIGNvbnN0IHMgPSBzZWNwMjU2azFDdXJ2ZS5zY2FsYXJNdWx0KHMwU3VtLCBzZWNwMjU2azFDdXJ2ZS5zY2FsYXJJbnZlcnQoczFTdW0pKTtcbiAgY29uc3Qgc2lnID0gbmV3IHNlY3AuU2lnbmF0dXJlKHIsIHMpO1xuICBjb25zdCBub3JtYWxpemVkU2lnID0gc2lnLm5vcm1hbGl6ZVMoKTtcbiAgcmV0dXJuIHtcbiAgICBSOiBuZXcgVWludDhBcnJheShiaWdJbnRUb0J1ZmZlckJFKG5vcm1hbGl6ZWRTaWcuciwgMzIpKSxcbiAgICBTOiBuZXcgVWludDhBcnJheShiaWdJbnRUb0J1ZmZlckJFKG5vcm1hbGl6ZWRTaWcucywgMzIpKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBWZXJpZnkgYSBES0xzIFNpZ25hdHVyZSBhbmQgc2VyaWFsaXplIGl0IHRvIHJlY2lkOnI6czpwdWJsaWNrZXkgZm9ybWF0LlxuICogQHBhcmFtIG1lc3NhZ2UgLSBtZXNzYWdlIHRoYXQgd2FzIHNpZ25lZC5cbiAqIEBwYXJhbSBka2xzU2lnbmF0dXJlIC0gUiBhbmQgUyB2YWx1ZXMgb2YgdGhlIEVDRFNBIHNpZ25hdHVyZS5cbiAqIEBwYXJhbSBjb21tb25LZXljaGFpbiAtIHB1YmxpYyBrZXkgYXBwZW5kZWQgdG8gY2hhaW5jb2RlIGluIGhleC5cbiAqIEBwYXJhbSBkZXJpdmF0aW9uUGF0aCAtIG9wdGlvbmFsIGRlcml2YXRpb24gcGF0aCB0byBkZXJpdmUgb24gdGhlIGNvbW1vbmtleWNoYWluIGJlZm9yZSB2ZXJpZmljYXRpb24uXG4gKiBAcGFyYW0gaGFzaCAtIG9wdGlvbmFsIGhhc2ggZnVuY3Rpb24gdG8gYXBwbHkgb24gbWVzc2FnZSBiZWZvcmUgdmVyaWZ5aW5nLiBEZWZhdWx0IGlzIHNoYTI1Ni5cbiAqIEBwYXJhbSBzaG91bGRIYXNoIC0gZmxhZyB0byBkZXRlcm1pbmUgd2hldGhlciBtZXNzYWdlIHNob3VsZCBiZSBoYXNoZWQgYmVmb3JlIHZlcmlmeWluZy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gc2VyaWFsaXplZCBzaWduYXR1cmUgaW4gYHJlY2lkOnI6czpwdWJsaWNrZXlgIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5QW5kQ29udmVydERrbHNTaWduYXR1cmUoXG4gIG1lc3NhZ2U6IEJ1ZmZlcixcbiAgZGtsc1NpZ25hdHVyZTogRGVzZXJpYWxpemVkRGtsc1NpZ25hdHVyZSxcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZyxcbiAgZGVyaXZhdGlvblBhdGg/OiBzdHJpbmcsXG4gIGhhc2g/OiBIYXNoLFxuICBzaG91bGRIYXNoID0gdHJ1ZVxuKTogc3RyaW5nIHtcbiAgbGV0IHRydWVQdWIgPSAnJztcbiAgaWYgKGRlcml2YXRpb25QYXRoICYmIGRlcml2YXRpb25QYXRoICE9PSAnbScpIHtcbiAgICBjb25zdCBoZFRyZWU6IEhEVHJlZSA9IG5ldyBTZWNwMjU2azFCaXAzMkhkVHJlZSgpO1xuICAgIGNvbnN0IGRlcml2ZWRQdWIgPSBoZFRyZWUucHVibGljRGVyaXZlKFxuICAgICAge1xuICAgICAgICBwazogYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGNvbW1vbktleWNoYWluLnNsaWNlKDAsIDY2KSwgJ2hleCcpKSxcbiAgICAgICAgY2hhaW5jb2RlOiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oY29tbW9uS2V5Y2hhaW4uc2xpY2UoNjYpLCAnaGV4JykpLFxuICAgICAgfSxcbiAgICAgIGRlcml2YXRpb25QYXRoXG4gICAgKTtcbiAgICB0cnVlUHViID0gYmlnSW50VG9CdWZmZXJCRShkZXJpdmVkUHViLnBrKS50b1N0cmluZygnaGV4Jyk7XG4gIH0gZWxzZSB7XG4gICAgdHJ1ZVB1YiA9IGNvbW1vbktleWNoYWluLnNsaWNlKDAsIDY2KTtcbiAgfVxuICBjb25zdCBtZXNzYWdlVG9WZXJpZnkgPSBzaG91bGRIYXNoID8gKGhhc2ggfHwgY3JlYXRlSGFzaCgnc2hhMjU2JykpLnVwZGF0ZShtZXNzYWdlKS5kaWdlc3QoKSA6IG1lc3NhZ2U7XG4gIGNvbnN0IHB1YjAgPSBzZWNwMjU2azEuZWNkc2FSZWNvdmVyKEJ1ZmZlci5jb25jYXQoW2RrbHNTaWduYXR1cmUuUiwgZGtsc1NpZ25hdHVyZS5TXSksIDAsIG1lc3NhZ2VUb1ZlcmlmeSwgdHJ1ZSk7XG4gIGNvbnN0IHB1YjEgPSBzZWNwMjU2azEuZWNkc2FSZWNvdmVyKEJ1ZmZlci5jb25jYXQoW2RrbHNTaWduYXR1cmUuUiwgZGtsc1NpZ25hdHVyZS5TXSksIDEsIG1lc3NhZ2VUb1ZlcmlmeSwgdHJ1ZSk7XG4gIGxldCByZWNJZDogbnVtYmVyO1xuICBpZiAodHJ1ZVB1YiA9PT0gQnVmZmVyLmZyb20ocHViMCkudG9TdHJpbmcoJ2hleCcpKSB7XG4gICAgcmVjSWQgPSAwO1xuICB9IGVsc2UgaWYgKHRydWVQdWIgPT09IEJ1ZmZlci5mcm9tKHB1YjEpLnRvU3RyaW5nKCdoZXgnKSkge1xuICAgIHJlY0lkID0gMTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBFcnJvcignSW52YWxpZCBTaWduYXR1cmUnKTtcbiAgfVxuICByZXR1cm4gYCR7cmVjSWR9JHtkZWxpbWV0ZXJ9JHtCdWZmZXIuZnJvbShka2xzU2lnbmF0dXJlLlIpLnRvU3RyaW5nKCdoZXgnKX0ke2RlbGltZXRlcn0ke0J1ZmZlci5mcm9tKFxuICAgIGRrbHNTaWduYXR1cmUuU1xuICApLnRvU3RyaW5nKCdoZXgnKX0ke2RlbGltZXRlcn0ke3RydWVQdWJ9YDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVUaWxsUm91bmQoXG4gIHJvdW5kOiBudW1iZXIsXG4gIHBhcnR5MURzZzogRHNnLFxuICBwYXJ0eTJEc2c6IERzZ1xuKTogUHJvbWlzZTxEZXNlcmlhbGl6ZWRNZXNzYWdlc1tdIHwgRGVzZXJpYWxpemVkRGtsc1NpZ25hdHVyZT4ge1xuICBpZiAocm91bmQgPCAxIHx8IHJvdW5kID4gNSkge1xuICAgIHRocm93IEVycm9yKCdJbnZhbGlkIHJvdW5kIG51bWJlcicpO1xuICB9XG4gIGNvbnN0IHBhcnR5MVJvdW5kMU1lc3NhZ2UgPSBhd2FpdCBwYXJ0eTFEc2cuaW5pdCgpO1xuICBjb25zdCBwYXJ0eTJSb3VuZDFNZXNzYWdlID0gYXdhaXQgcGFydHkyRHNnLmluaXQoKTtcblxuICBjb25zdCBwYXJ0eTJSb3VuZDJNZXNzYWdlcyA9IHBhcnR5MkRzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtwYXJ0eTFSb3VuZDFNZXNzYWdlXSxcbiAgfSk7XG4gIGNvbnN0IHBhcnR5MVJvdW5kMk1lc3NhZ2VzID0gcGFydHkxRHNnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3BhcnR5MlJvdW5kMU1lc3NhZ2VdLFxuICB9KTtcbiAgaWYgKHJvdW5kID09PSAyKSByZXR1cm4gW3BhcnR5MVJvdW5kMk1lc3NhZ2VzLCBwYXJ0eTJSb3VuZDJNZXNzYWdlc107XG5cbiAgY29uc3QgcGFydHkxUm91bmQzTWVzc2FnZXMgPSBwYXJ0eTFEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5MlJvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGNvbnN0IHBhcnR5MlJvdW5kM01lc3NhZ2VzID0gcGFydHkyRHNnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBwYXJ0eTFSb3VuZDJNZXNzYWdlcy5wMnBNZXNzYWdlcyxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBpZiAocm91bmQgPT09IDMpIHJldHVybiBbcGFydHkxUm91bmQzTWVzc2FnZXMsIHBhcnR5MlJvdW5kM01lc3NhZ2VzXTtcblxuICBjb25zdCBwYXJ0eTJSb3VuZDRNZXNzYWdlcyA9IHBhcnR5MkRzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogcGFydHkxUm91bmQzTWVzc2FnZXMucDJwTWVzc2FnZXMsXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgY29uc3QgcGFydHkxUm91bmQ0TWVzc2FnZXMgPSBwYXJ0eTFEc2cuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5MlJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGlmIChyb3VuZCA9PT0gNCkgcmV0dXJuIFtwYXJ0eTFSb3VuZDRNZXNzYWdlcywgcGFydHkyUm91bmQ0TWVzc2FnZXNdO1xuXG4gIHBhcnR5MURzZy5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IHBhcnR5MlJvdW5kNE1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzLFxuICB9KTtcbiAgcGFydHkyRHNnLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogcGFydHkxUm91bmQ0TWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMsXG4gIH0pO1xuICBhc3NlcnQoQnVmZmVyLmZyb20ocGFydHkxRHNnLnNpZ25hdHVyZS5SKS50b1N0cmluZygnaGV4JykgPT09IEJ1ZmZlci5mcm9tKHBhcnR5MkRzZy5zaWduYXR1cmUuUikudG9TdHJpbmcoJ2hleCcpKTtcbiAgYXNzZXJ0KEJ1ZmZlci5mcm9tKHBhcnR5MURzZy5zaWduYXR1cmUuUykudG9TdHJpbmcoJ2hleCcpID09PSBCdWZmZXIuZnJvbShwYXJ0eTJEc2cuc2lnbmF0dXJlLlMpLnRvU3RyaW5nKCdoZXgnKSk7XG4gIHJldHVybiBwYXJ0eTFEc2cuc2lnbmF0dXJlO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVES0dLZXlTaGFyZXMoXG4gIHJldHJvZml0RGF0YUE/OiBSZXRyb2ZpdERhdGEsXG4gIHJldHJvZml0RGF0YUI/OiBSZXRyb2ZpdERhdGEsXG4gIHJldHJvZml0RGF0YUM/OiBSZXRyb2ZpdERhdGEsXG4gIHNlZWRVc2VyPzogQnVmZmVyLFxuICBzZWVkQmFja3VwPzogQnVmZmVyLFxuICBzZWVkQml0Z28/OiBCdWZmZXJcbik6IFByb21pc2U8W0RrZywgRGtnLCBEa2ddPiB7XG4gIGNvbnN0IHVzZXIgPSBuZXcgRGtnKDMsIDIsIDAsIHNlZWRVc2VyLCByZXRyb2ZpdERhdGFBKTtcbiAgY29uc3QgYmFja3VwID0gbmV3IERrZygzLCAyLCAxLCBzZWVkQmFja3VwLCByZXRyb2ZpdERhdGFCKTtcbiAgY29uc3QgYml0Z28gPSBuZXcgRGtnKDMsIDIsIDIsIHNlZWRCaXRnbywgcmV0cm9maXREYXRhQyk7XG4gIGNvbnN0IHVzZXJSb3VuZDFNZXNzYWdlID0gYXdhaXQgdXNlci5pbml0RGtnKCk7XG4gIGNvbnN0IGJhY2t1cFJvdW5kMU1lc3NhZ2UgPSBhd2FpdCBiYWNrdXAuaW5pdERrZygpO1xuICBjb25zdCBiaXRnb1JvdW5kMU1lc3NhZ2UgPSBhd2FpdCBiaXRnby5pbml0RGtnKCk7XG4gIGNvbnN0IHVzZXJSb3VuZDJNZXNzYWdlcyA9IHVzZXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbYml0Z29Sb3VuZDFNZXNzYWdlLCBiYWNrdXBSb3VuZDFNZXNzYWdlXSxcbiAgfSk7XG4gIGNvbnN0IGJhY2t1cFJvdW5kMk1lc3NhZ2VzID0gYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3VzZXJSb3VuZDFNZXNzYWdlLCBiaXRnb1JvdW5kMU1lc3NhZ2VdLFxuICB9KTtcbiAgY29uc3QgYml0Z29Sb3VuZDJNZXNzYWdlcyA9IGJpdGdvLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3VzZXJSb3VuZDFNZXNzYWdlLCBiYWNrdXBSb3VuZDFNZXNzYWdlXSxcbiAgfSk7XG4gIGNvbnN0IHVzZXJSb3VuZDNNZXNzYWdlcyA9IHVzZXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IGJhY2t1cFJvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzXG4gICAgICAuZmlsdGVyKChtKSA9PiBtLnRvID09PSAwKVxuICAgICAgLmNvbmNhdChiaXRnb1JvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMCkpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGNvbnN0IGJhY2t1cFJvdW5kM01lc3NhZ2VzID0gYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBiaXRnb1JvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzXG4gICAgICAuZmlsdGVyKChtKSA9PiBtLnRvID09PSAxKVxuICAgICAgLmNvbmNhdCh1c2VyUm91bmQyTWVzc2FnZXMucDJwTWVzc2FnZXMuZmlsdGVyKChtKSA9PiBtLnRvID09PSAxKSksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgY29uc3QgYml0Z29Sb3VuZDNNZXNzYWdlcyA9IGJpdGdvLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBiYWNrdXBSb3VuZDJNZXNzYWdlcy5wMnBNZXNzYWdlc1xuICAgICAgLmZpbHRlcigobSkgPT4gbS50byA9PT0gMilcbiAgICAgIC5jb25jYXQodXNlclJvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMikpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGNvbnN0IHVzZXJSb3VuZDRNZXNzYWdlcyA9IHVzZXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IGJhY2t1cFJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzXG4gICAgICAuZmlsdGVyKChtKSA9PiBtLnRvID09PSAwKVxuICAgICAgLmNvbmNhdChiaXRnb1JvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMCkpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGNvbnN0IGJhY2t1cFJvdW5kNE1lc3NhZ2VzID0gYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBiaXRnb1JvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzXG4gICAgICAuZmlsdGVyKChtKSA9PiBtLnRvID09PSAxKVxuICAgICAgLmNvbmNhdCh1c2VyUm91bmQzTWVzc2FnZXMucDJwTWVzc2FnZXMuZmlsdGVyKChtKSA9PiBtLnRvID09PSAxKSksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgY29uc3QgYml0Z29Sb3VuZDRNZXNzYWdlcyA9IGJpdGdvLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBiYWNrdXBSb3VuZDNNZXNzYWdlcy5wMnBNZXNzYWdlc1xuICAgICAgLmZpbHRlcigobSkgPT4gbS50byA9PT0gMilcbiAgICAgIC5jb25jYXQodXNlclJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMikpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIHVzZXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBiaXRnb1JvdW5kNE1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzLmNvbmNhdChiYWNrdXBSb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcyksXG4gIH0pO1xuICBiaXRnby5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IGJhY2t1cFJvdW5kNE1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzLmNvbmNhdCh1c2VyUm91bmQ0TWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMpLFxuICB9KTtcbiAgYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogYml0Z29Sb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcy5jb25jYXQodXNlclJvdW5kNE1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzKSxcbiAgfSk7XG4gIHJldHVybiBbdXNlciwgYmFja3VwLCBiaXRnb107XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZTJvZjJLZXlTaGFyZXMoXG4gIHJldHJvZml0RGF0YUE/OiBSZXRyb2ZpdERhdGEsXG4gIHJldHJvZml0RGF0YUI/OiBSZXRyb2ZpdERhdGFcbik6IFByb21pc2U8W0RrZywgRGtnXT4ge1xuICBjb25zdCBwYXJ0eUEgPSBuZXcgRGtnKDIsIDIsIDAsIHVuZGVmaW5lZCwgcmV0cm9maXREYXRhQSk7XG4gIGNvbnN0IHBhcnR5QiA9IG5ldyBEa2coMiwgMiwgMSwgdW5kZWZpbmVkLCByZXRyb2ZpdERhdGFCKTtcbiAgY29uc3QgcGFydHlBUm91bmQxTWVzc2FnZSA9IGF3YWl0IHBhcnR5QS5pbml0RGtnKCk7XG4gIGNvbnN0IHBhcnR5QlJvdW5kMU1lc3NhZ2UgPSBhd2FpdCBwYXJ0eUIuaW5pdERrZygpO1xuICBjb25zdCBwYXJ0eUFSb3VuZDJNZXNzYWdlcyA9IHBhcnR5QS5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtwYXJ0eUJSb3VuZDFNZXNzYWdlXSxcbiAgfSk7XG4gIGNvbnN0IHBhcnR5QlJvdW5kMk1lc3NhZ2VzID0gcGFydHlCLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3BhcnR5QVJvdW5kMU1lc3NhZ2VdLFxuICB9KTtcbiAgY29uc3QgcGFydHlBUm91bmQzTWVzc2FnZXMgPSBwYXJ0eUEuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5QlJvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMCksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgY29uc3QgcGFydHlCUm91bmQzTWVzc2FnZXMgPSBwYXJ0eUIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5QVJvdW5kMk1lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgY29uc3QgcGFydHlBUm91bmQ0TWVzc2FnZXMgPSBwYXJ0eUEuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5QlJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMCksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgY29uc3QgcGFydHlCUm91bmQ0TWVzc2FnZXMgPSBwYXJ0eUIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IHBhcnR5QVJvdW5kM01lc3NhZ2VzLnAycE1lc3NhZ2VzLmZpbHRlcigobSkgPT4gbS50byA9PT0gMSksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFtdLFxuICB9KTtcbiAgcGFydHlBLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogcGFydHlCUm91bmQ0TWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMsXG4gIH0pO1xuICBwYXJ0eUIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBwYXJ0eUFSb3VuZDRNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcyxcbiAgfSk7XG4gIHJldHVybiBbcGFydHlBLCBwYXJ0eUJdO1xufVxuIl19