@bitgo-beta/sdk-coin-sol 7.6.4-beta.726 → 7.6.4-beta.727

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.
@@ -41,6 +41,7 @@ const tweetnacl_1 = __importDefault(require("tweetnacl"));
41
41
  const statics_1 = require("@bitgo-beta/statics");
42
42
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
43
43
  const web3_js_1 = require("@solana/web3.js");
44
+ const bs58_1 = __importDefault(require("bs58"));
44
45
  const src_1 = require("../../../src");
45
46
  const parseWireTransaction_1 = require("../../../src/lib/serialization/parseWireTransaction");
46
47
  const constants_1 = require("../../../src/lib/constants");
@@ -259,4 +260,72 @@ describe('V1CustomInstructionBuilder', function () {
259
260
  (0, parseWireTransaction_1.verifyV1Signatures)(parsed.messageBytes, parsed.signatures, parsed.signerPublicKeys);
260
261
  });
261
262
  });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjFUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3YxVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDBEQUE2QjtBQUM3QixpREFBNEM7QUFDNUMsbURBQXVEO0FBQ3ZELDZDQUEyRDtBQUMzRCxzQ0FPc0I7QUFDdEIsOEZBQXlGO0FBQ3pGLDBEQUFxRTtBQUNyRSw0RkFBeUY7QUFFekYsOERBQWdEO0FBRWhELE1BQU0sYUFBYyxTQUFRLDBCQUFvQjtJQUM5QyxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUFFRCxRQUFRLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxFQUFFO0lBQzlELE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxhQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pELE1BQU0sT0FBTyxHQUFHLElBQUksYUFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEYsTUFBTSxZQUFZLEdBQUcsSUFBSSxhQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xFLE1BQU0sU0FBUyxHQUFHLDhDQUE4QyxDQUFDO0lBQ2pFLE1BQU0sZUFBZSxHQUFHLDhDQUE4QyxDQUFDO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUV4QixNQUFNLFFBQVEs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TUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsY0FBZSxDQUFDLENBQUM7UUFDL0QsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQWdCLENBQUM7UUFFdEQsTUFBTSxNQUFNLEdBQUcsSUFBQSwwQkFBb0IsRUFBQyxNQUFNLENBQUMsa0JBQW1CLENBQUMsQ0FBQztRQUNoRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEUsSUFBQSx5Q0FBa0IsRUFBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdEYsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgUHVibGljS2V5LCBTeXN0ZW1Qcm9ncmFtIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7XG4gIGJ1aWxkQWR2YW5jZU5vbmNlQWNjb3VudEluc3RydWN0aW9uLFxuICBkZWNvZGVWMU1lc3NhZ2UsXG4gIEtleVBhaXIsXG4gIHBhcnNlV2lyZVRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbixcbiAgVjFUcmFuc2FjdGlvbkJ1aWxkZXIsXG59IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyB2ZXJpZnlWMVNpZ25hdHVyZXMgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3NlcmlhbGl6YXRpb24vcGFyc2VXaXJlVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBWMUN1c3RvbUluc3RydWN0aW9uQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvdjFDdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgU29sYW5hS2V5cywgVHJhbnNmZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uLy4uL3Jlc291cmNlcy9zb2wnO1xuXG5jbGFzcyBUZXN0VjFCdWlsZGVyIGV4dGVuZHMgVjFUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxufVxuXG5kZXNjcmliZSgnU29sYW5hIFYxIFRyYW5zYWN0aW9uIEJ1aWxkZXIgKFNJTUQtMDI5Ni8wMzg1KScsICgpID0+IHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCgndHNvbCcpO1xuICBjb25zdCB1c2VyID0gbmV3IEtleVBhaXIodGVzdERhdGEuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgZ2FzVGFuayA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcnZLZXlzLnBydktleTEuYmFzZTU4IH0pLmdldEtleXMoKTtcbiAgY29uc3Qgbm9uY2VBY2NvdW50ID0gbmV3IEtleVBhaXIodGVzdERhdGEubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHJlY2lwaWVudCA9ICdFTm44YTJ0R01TOWJSNVhWN3NtR0hKdk5nemt5eEptbkQyZVV2UXhZNWpTUCc7XG4gIGNvbnN0IHJlY2VudEJsb2NrSGFzaCA9ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaSc7XG4gIGNvbnN0IGFtb3VudCA9ICczMDAwMDAnO1xuXG4gIGNvbnN0IHYxQ29uZmlnID0ge1xuICAgIGNvbXB1dGVVbml0TGltaXQ6IDIwMF8wMDAsXG4gICAgaGVhcFNpemU6IDMyXzc2OCxcbiAgICBsb2FkZWRBY2NvdW50c0RhdGFTaXplTGltaXQ6IDY1XzUzNixcbiAgICBwcmlvcml0eUZlZTogNV8wMDAsXG4gIH07XG5cbiAgY29uc3QgdHJhbnNmZXI6IFRyYW5zZmVyID0ge1xuICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyLFxuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzczogdXNlci5wdWIsIHRvQWRkcmVzczogcmVjaXBpZW50LCBhbW91bnQgfSxcbiAgfTtcblxuICBjb25zdCBuZXdCdWlsZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVGVzdFYxQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICBidWlsZGVyLnNlbmRlcih1c2VyLnB1Yik7XG4gICAgYnVpbGRlci5ub25jZShyZWNlbnRCbG9ja0hhc2gpO1xuICAgIGJ1aWxkZXIuaW5zdHJ1Y3Rpb25zKFt0cmFuc2Zlcl0pO1xuICAgIGJ1aWxkZXIudHJhbnNhY3Rpb25Db25maWcodjFDb25maWcpO1xuICAgIHJldHVybiBidWlsZGVyO1xuICB9O1xuXG4gIGNvbnN0IHNpZ25XaXRoID0gKGtleVBhaXI6IFNvbGFuYUtleXMsIG1lc3NhZ2VCeXRlczogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkgPT4ge1xuICAgIGNvbnN0IHBydiA9IGtleVBhaXIucHJ2O1xuICAgIGlmICh0eXBlb2YgcHJ2ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5IGZvciB0ZXN0IHNpZ25lcicpO1xuICAgIH1cbiAgICBjb25zdCBrcCA9IG5ldyBLZXlQYWlyKHsgcHJ2IH0pO1xuICAgIHJldHVybiBuYWNsLnNpZ24uZGV0YWNoZWQobWVzc2FnZUJ5dGVzLCBrcC5nZXRLZXlzKHRydWUpLnBydiBhcyBVaW50OEFycmF5KTtcbiAgfTtcblxuICBkZXNjcmliZSgnc2luZ2xlIHNpZ25lcicsICgpID0+IHtcbiAgICBpdCgnYnVpbGRzIGEgdjEgbWVzc2FnZSArIHNpZ25lZCB3aXJlIGFuZCByb3VuZC10cmlwcyB0aHJvdWdoIHBhcnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIuc2lnbih7IGtleTogdXNlci5wcnYgfSk7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgICB0eC52MU1lc3NhZ2VCeXRlcyFbMF0uc2hvdWxkLmVxdWFsKDB4ODEpO1xuICAgICAgdHgudjFUcmFuc2FjdGlvbkJ5dGVzIS5sZW5ndGguc2hvdWxkLmVxdWFsKHR4LnYxTWVzc2FnZUJ5dGVzIS5sZW5ndGggKyA2NCk7XG4gICAgICAvLyBzaWduYWJsZSBwYXlsb2FkIGlzIHRoZSBtZXNzYWdlIGJ5dGVzXG4gICAgICB0eC5zaWduYWJsZVBheWxvYWQuZXF1YWxzKEJ1ZmZlci5mcm9tKHR4LnYxTWVzc2FnZUJ5dGVzISkpLnNob3VsZC5iZS50cnVlKCk7XG5cbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlV2lyZVRyYW5zYWN0aW9uKHR4LnYxVHJhbnNhY3Rpb25CeXRlcyEpO1xuICAgICAgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMuc2hvdWxkLmRlZXBFcXVhbChbdXNlci5wdWJdKTtcbiAgICAgIHZlcmlmeVYxU2lnbmF0dXJlcyhwYXJzZWQubWVzc2FnZUJ5dGVzLCBwYXJzZWQuc2lnbmF0dXJlcywgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMpO1xuXG4gICAgICAvLyBicm9hZGNhc3QgZm9ybWF0IHJvdW5kLXRyaXBzIHRocm91Z2ggZnJvbSgpXG4gICAgICBjb25zdCByYXcgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgcmVwYXJzZWQgPSBuZXcgVGVzdFYxQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICAgIHJlcGFyc2VkLmZyb20ocmF3KTtcbiAgICAgIChyZXBhcnNlZCBhcyB1bmtub3duIGFzIHsgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uIH0pLnRyYW5zYWN0aW9uLnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKHJhdyk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIHdoZW4gdHJhbnNhY3Rpb25Db25maWcgaXMgbWlzc2luZycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVGVzdFYxQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICAgIGJ1aWxkZXIuc2VuZGVyKHVzZXIucHViKTtcbiAgICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICAgIGJ1aWxkZXIuaW5zdHJ1Y3Rpb25zKFt0cmFuc2Zlcl0pO1xuICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3RyYW5zYWN0aW9uQ29uZmlnIGlzIHJlcXVpcmVkLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkdXJhYmxlIG5vbmNlICgyIHNpZ25hdHVyZXMpJywgKCkgPT4ge1xuICAgIGl0KCdpbmplY3RzIHRoZSBBZHZhbmNlTm9uY2VBY2NvdW50IGluc3RydWN0aW9uIGFuZCBhc3NlbWJsZXMgdXNlciArIGdhcy10YW5rIHNpZ25hdHVyZXMgaW4gc2lnbmVyIG9yZGVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCB7XG4gICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LnB1YixcbiAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IGdhc1RhbmsucHViLFxuICAgICAgfSk7XG4gICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuXG4gICAgICBjb25zdCB1bnNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgbWVzc2FnZUJ5dGVzID0gdW5zaWduZWQudjFNZXNzYWdlQnl0ZXMhO1xuXG4gICAgICAvLyAyIHJlcXVpcmVkIHNpZ25lcnM6IHVzZXIgKGZlZSBwYXllcikgKyBnYXMtdGFuayBub25jZSBhdXRob3JpdHlcbiAgICAgIG1lc3NhZ2VCeXRlc1sxXS5zaG91bGQuZXF1YWwoMik7XG5cbiAgICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVWMU1lc3NhZ2UobWVzc2FnZUJ5dGVzKTtcbiAgICAgIC8vIG5vbmNlIGhhc2ggb2NjdXBpZXMgdGhlIGJsb2NraGFzaCBmaWVsZFxuICAgICAgZGVjb2RlZC5ibG9ja2hhc2guc2hvdWxkLmVxdWFsKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgICAvLyBmaXJzdCBpbnN0cnVjdGlvbiBpcyBBZHZhbmNlTm9uY2VBY2NvdW50IChTeXN0ZW0gUHJvZ3JhbSwgZGlzY3JpbWluYXRvciA0KVxuICAgICAgZGVjb2RlZC5jb21waWxlZEluc3RydWN0aW9uc1swXS5kYXRhWzBdLnNob3VsZC5lcXVhbCg0KTtcbiAgICAgIGRlY29kZWQuc3RhdGljQWNjb3VudHNbZGVjb2RlZC5jb21waWxlZEluc3RydWN0aW9uc1swXS5wcm9ncmFtQWRkcmVzc0luZGV4XS5zaG91bGQuZXF1YWwoXG4gICAgICAgIFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvQmFzZTU4KClcbiAgICAgICk7XG4gICAgICAvLyBzaWduZXIgb3JkZXI6IGZlZSBwYXllciAodXNlcikgZmlyc3QsIHRoZW4gZ2FzIHRhbmtcbiAgICAgIGRlY29kZWQuc3RhdGljQWNjb3VudHMuc2xpY2UoMCwgMikuc2hvdWxkLmRlZXBFcXVhbChbdXNlci5wdWIsIGdhc1RhbmsucHViXSk7XG5cbiAgICAgIC8vIGF0dGFjaCB0aGUgZ2FzLXRhbmsgSFNNIHNpZ25hdHVyZSBvdmVyIHRoZSBzYW1lIG1lc3NhZ2UgYnl0ZXNcbiAgICAgIGNvbnN0IGdhc1RhbmtTaWcgPSBzaWduV2l0aChnYXNUYW5rLCBtZXNzYWdlQnl0ZXMpO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IGdhc1RhbmsucHViIH0sIEJ1ZmZlci5mcm9tKGdhc1RhbmtTaWcpKTtcbiAgICAgIGNvbnN0IHNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgICAvLyBtZXNzYWdlIGJ5dGUtaWRlbnRpdHkgYmV0d2VlbiBidWlsZCBhbmQgc2lnblxuICAgICAgc2lnbmVkLnYxTWVzc2FnZUJ5dGVzIS5zaG91bGQuZGVlcEVxdWFsKG1lc3NhZ2VCeXRlcyk7XG5cbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlV2lyZVRyYW5zYWN0aW9uKHNpZ25lZC52MVRyYW5zYWN0aW9uQnl0ZXMhKTtcbiAgICAgIHBhcnNlZC5zaWduZXJQdWJsaWNLZXlzLnNob3VsZC5kZWVwRXF1YWwoW3VzZXIucHViLCBnYXNUYW5rLnB1Yl0pO1xuICAgICAgdmVyaWZ5VjFTaWduYXR1cmVzKHBhcnNlZC5tZXNzYWdlQnl0ZXMsIHBhcnNlZC5zaWduYXR1cmVzLCBwYXJzZWQuc2lnbmVyUHVibGljS2V5cyk7XG4gICAgfSk7XG5cbiAgICBpdCgnb3JkZXJzIHNpZ25hdHVyZXMgYnkgdGhlIGNvbXBpbGVkIG1lc3NhZ2Ugd2hlbiB0aGUgZ2FzIHRhbmsgaXMgdGhlIGZlZSBwYXllcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXdCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCwge1xuICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlQWNjb3VudC5wdWIsXG4gICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiBnYXNUYW5rLnB1YixcbiAgICAgIH0pO1xuICAgICAgYnVpbGRlci5mZWVQYXllcihnYXNUYW5rLnB1Yik7XG4gICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuXG4gICAgICBjb25zdCB1bnNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgbWVzc2FnZUJ5dGVzID0gdW5zaWduZWQudjFNZXNzYWdlQnl0ZXMhO1xuICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVYxTWVzc2FnZShtZXNzYWdlQnl0ZXMpO1xuICAgICAgLy8gZ2FzIHRhbmsgKGZlZSBwYXllcikgaXMgdGhlIGZpcnN0IHNpZ25lciwgdXNlciBzZWNvbmRcbiAgICAgIGRlY29kZWQuc3RhdGljQWNjb3VudHMuc2xpY2UoMCwgMikuc2hvdWxkLmRlZXBFcXVhbChbZ2FzVGFuay5wdWIsIHVzZXIucHViXSk7XG5cbiAgICAgIGNvbnN0IHVzZXJTaWcgPSBzaWduV2l0aCh1c2VyLCBtZXNzYWdlQnl0ZXMpO1xuICAgICAgY29uc3QgZ2FzVGFua1NpZyA9IHNpZ25XaXRoKGdhc1RhbmssIG1lc3NhZ2VCeXRlcyk7XG4gICAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1YjogdXNlci5wdWIgfSwgQnVmZmVyLmZyb20odXNlclNpZykpO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IGdhc1RhbmsucHViIH0sIEJ1ZmZlci5mcm9tKGdhc1RhbmtTaWcpKTtcbiAgICAgIGNvbnN0IHNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVdpcmVUcmFuc2FjdGlvbihzaWduZWQudjFUcmFuc2FjdGlvbkJ5dGVzISk7XG4gICAgICBwYXJzZWQuc2lnbmVyUHVibGljS2V5cy5zaG91bGQuZGVlcEVxdWFsKFtnYXNUYW5rLnB1YiwgdXNlci5wdWJdKTtcbiAgICAgIHZlcmlmeVYxU2lnbmF0dXJlcyhwYXJzZWQubWVzc2FnZUJ5dGVzLCBwYXJzZWQuc2lnbmF0dXJlcywgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3plcm8tZmlsbHMgYSBtaXNzaW5nIHNpZ25hdHVyZSBzbG90IHNvIHRoZSB3aXJlIHNoYXBlIHN0YXlzIHZhbGlkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCB7XG4gICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LnB1YixcbiAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IGdhc1RhbmsucHViLFxuICAgICAgfSk7XG4gICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VXaXJlVHJhbnNhY3Rpb24odHgudjFUcmFuc2FjdGlvbkJ5dGVzISk7XG4gICAgICBwYXJzZWQuc2lnbmVyUHVibGljS2V5cy5zaG91bGQuZGVlcEVxdWFsKFt1c2VyLnB1YiwgZ2FzVGFuay5wdWJdKTtcbiAgICAgIHBhcnNlZC5zaWduYXR1cmVzWzBdLnNvbWUoKGIpID0+IGIgIT09IDApLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBwYXJzZWQuc2lnbmF0dXJlc1sxXS5ldmVyeSgoYikgPT4gYiA9PT0gMCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gdmVyaWZ5VjFTaWduYXR1cmVzKHBhcnNlZC5tZXNzYWdlQnl0ZXMsIHBhcnNlZC5zaWduYXR1cmVzLCBwYXJzZWQuc2lnbmVyUHVibGljS2V5cykpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGRBZHZhbmNlTm9uY2VBY2NvdW50SW5zdHJ1Y3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ2NvbnN0cnVjdHMgdGhlIG5vbmNlIGFkdmFuY2UgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgYXV0aG9yaXR5IGFzIHNpZ25lcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGl4ID0gYnVpbGRBZHZhbmNlTm9uY2VBY2NvdW50SW5zdHJ1Y3Rpb24obm9uY2VBY2NvdW50LnB1YiwgZ2FzVGFuay5wdWIpO1xuICAgICAgaXgucHJvZ3JhbUlkLnRvQmFzZTU4KCkuc2hvdWxkLmVxdWFsKFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvQmFzZTU4KCkpO1xuICAgICAgaXguZGF0YVswXS5zaG91bGQuZXF1YWwoNCk7XG4gICAgICBpeC5rZXlzWzBdLnB1YmtleS50b0Jhc2U1OCgpLnNob3VsZC5lcXVhbChub25jZUFjY291bnQucHViKTtcbiAgICAgIGl4LmtleXNbMF0uaXNXcml0YWJsZS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgaXgua2V5c1swXS5pc1NpZ25lci5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICAgIC8vIHdlYjMuanMgbm9uY2VBZHZhbmNlIGluY2x1ZGVzIHRoZSByZWNlbnQtYmxvY2toYXNoZXMgc3lzdmFyIGFzIHRoZSBzZWNvbmQga2V5XG4gICAgICBpeC5rZXlzWzFdLnB1YmtleS50b0Jhc2U1OCgpLnNob3VsZC5lcXVhbCgnU3lzdmFyUmVjZW50QjFvY2tIYXNoZXMxMTExMTExMTExMTExMTExMTExMScpO1xuICAgICAgaXgua2V5c1syXS5wdWJrZXkudG9CYXNlNTgoKS5zaG91bGQuZXF1YWwoZ2FzVGFuay5wdWIpO1xuICAgICAgaXgua2V5c1syXS5pc1NpZ25lci5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbm9uY2UgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgncmVqZWN0cyBhbiBpbnZhbGlkIGJsb2NraGFzaCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXdCdWlsZGVyKCk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIubm9uY2UoJ25vdC1hLWJsb2NraGFzaCcpLCAvSW52YWxpZCBvciBtaXNzaW5nIGJsb2NrSGFzaC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBub25jZSB3aG9zZSBhdXRob3JpdHkgZXF1YWxzIHRoZSBub25jZSBhY2NvdW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICAgIHNob3VsZC50aHJvd3MoXG4gICAgICAgICgpID0+IGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCB7IHdhbGxldE5vbmNlQWRkcmVzczogdXNlci5wdWIsIGF1dGhXYWxsZXRBZGRyZXNzOiB1c2VyLnB1YiB9KSxcbiAgICAgICAgL3dhbGxldE5vbmNlQWRkcmVzcyBjYW5ub3QgYmUgZXF1YWwgdG8gYXV0aFdhbGxldEFkZHJlc3MvXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJvbSgpJywgKCkgPT4ge1xuICAgIGl0KCdwYXJzZXMgYSBzaWduZWQgdjEgd2lyZSBhbmQgZXhwb3NlcyB0b0pzb24gdmlhIHRoZSBtZXRhZGF0YSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXdCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgYnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHJhdyA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IHJlcGFyc2VkID0gbmV3IFRlc3RWMUJ1aWxkZXIoY29pbkNvbmZpZyk7XG4gICAgICByZXBhcnNlZC5mcm9tKHJhdyk7XG4gICAgICBjb25zdCByZXBhcnNlZFR4ID0gKHJlcGFyc2VkIGFzIHVua25vd24gYXMgeyB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gfSkudHJhbnNhY3Rpb247XG4gICAgICByZXBhcnNlZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKHJhdyk7XG5cbiAgICAgIGNvbnN0IGpzb24gPSByZXBhcnNlZFR4LnRvSnNvbigpO1xuICAgICAganNvbi5ub25jZS5zaG91bGQuZXF1YWwocmVjZW50QmxvY2tIYXNoKTtcbiAgICAgIGpzb24ubnVtU2lnbmF0dXJlcy5zaG91bGQuZXF1YWwoMSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdWMUN1c3RvbUluc3RydWN0aW9uQnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCgndHNvbCcpO1xuICBjb25zdCB1c2VyID0gbmV3IEtleVBhaXIodGVzdERhdGEuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgZ2FzVGFuayA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcnZLZXlzLnBydktleTEuYmFzZTU4IH0pLmdldEtleXMoKTtcbiAgY29uc3Qgbm9uY2VBY2NvdW50ID0gbmV3IEtleVBhaXIodGVzdERhdGEubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHJlY2VudEJsb2NrSGFzaCA9ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaSc7XG4gIGNvbnN0IHYxQ29uZmlnID0ge1xuICAgIGNvbXB1dGVVbml0TGltaXQ6IDIwMF8wMDAsXG4gICAgaGVhcFNpemU6IDMyXzc2OCxcbiAgICBsb2FkZWRBY2NvdW50c0RhdGFTaXplTGltaXQ6IDY1XzUzNixcbiAgICBwcmlvcml0eUZlZTogNV8wMDAsXG4gIH07XG5cbiAgY29uc3Qgc2lnbldpdGggPSAoa2V5UGFpcjogU29sYW5hS2V5cywgbWVzc2FnZUJ5dGVzOiBVaW50OEFycmF5KTogVWludDhBcnJheSA9PiB7XG4gICAgY29uc3QgcHJ2ID0ga2V5UGFpci5wcnY7XG4gICAgaWYgKHR5cGVvZiBwcnYgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXkgZm9yIHRlc3Qgc2lnbmVyJyk7XG4gICAgfVxuICAgIGNvbnN0IGtwID0gbmV3IEtleVBhaXIoeyBwcnYgfSk7XG4gICAgcmV0dXJuIG5hY2wuc2lnbi5kZXRhY2hlZChtZXNzYWdlQnl0ZXMsIGtwLmdldEtleXModHJ1ZSkucHJ2IGFzIFVpbnQ4QXJyYXkpO1xuICB9O1xuXG4gIGl0KCdidWlsZHMgYSB2MSB0cmFuc2FjdGlvbiBmcm9tIGEgY3VzdG9tIGluc3RydWN0aW9uICsgMiBzaWduYXR1cmVzIGluIHNpZ25lciBvcmRlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZWNpcGllbnQgPSAnQzNzR2Y0eFpiN2tQMW1Rcjh0WXc5dVZ4Mm5ENWhKNmFMY0U0b1JxUzdpQic7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBWMUN1c3RvbUluc3RydWN0aW9uQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICBidWlsZGVyLnNlbmRlcih1c2VyLnB1Yik7XG4gICAgYnVpbGRlci5ub25jZShyZWNlbnRCbG9ja0hhc2gsIHsgd2FsbGV0Tm9uY2VBZGRyZXNzOiBub25jZUFjY291bnQucHViLCBhdXRoV2FsbGV0QWRkcmVzczogZ2FzVGFuay5wdWIgfSk7XG4gICAgYnVpbGRlci50cmFuc2FjdGlvbkNvbmZpZyh2MUNvbmZpZyk7XG4gICAgYnVpbGRlci5hZGRJbnN0cnVjdGlvbihcbiAgICAgIFN5c3RlbVByb2dyYW0udHJhbnNmZXIoe1xuICAgICAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KHVzZXIucHViKSxcbiAgICAgICAgdG9QdWJrZXk6IG5ldyBQdWJsaWNLZXkocmVjaXBpZW50KSxcbiAgICAgICAgbGFtcG9ydHM6IDFfMDAwXzAwMCxcbiAgICAgIH0pXG4gICAgKTtcbiAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuXG4gICAgY29uc3QgdW5zaWduZWQgPSAoYXdhaXQgYnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICBjb25zdCBnYXNUYW5rU2lnID0gc2lnbldpdGgoZ2FzVGFuaywgdW5zaWduZWQudjFNZXNzYWdlQnl0ZXMhKTtcbiAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1YjogZ2FzVGFuay5wdWIgfSwgQnVmZmVyLmZyb20oZ2FzVGFua1NpZykpO1xuICAgIGNvbnN0IHNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VXaXJlVHJhbnNhY3Rpb24oc2lnbmVkLnYxVHJhbnNhY3Rpb25CeXRlcyEpO1xuICAgIHBhcnNlZC5zaWduZXJQdWJsaWNLZXlzLnNob3VsZC5kZWVwRXF1YWwoW3VzZXIucHViLCBnYXNUYW5rLnB1Yl0pO1xuICAgIHZlcmlmeVYxU2lnbmF0dXJlcyhwYXJzZWQubWVzc2FnZUJ5dGVzLCBwYXJzZWQuc2lnbmF0dXJlcywgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMpO1xuICB9KTtcbn0pO1xuIl19
263
+ describe('V1TransactionBuilder envelope surface (fromVersionedData + SDK injector)', function () {
264
+ const coinConfig = statics_1.coins.get('tsol');
265
+ const user = new src_1.KeyPair(testData.authAccount).getKeys();
266
+ const gasTank = new src_1.KeyPair({ prv: testData.prvKeys.prvKey1.base58 }).getKeys();
267
+ const nonceAccount = new src_1.KeyPair(testData.nonceAccount).getKeys();
268
+ const recentBlockHash = 'GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi';
269
+ const envelope = {
270
+ version: 1,
271
+ versionedInstructions: [
272
+ { programIdIndex: 1, accountKeyIndexes: [0, 1], data: '2UzHM' }, // base58 of 0x01000000
273
+ ],
274
+ addressLookupTables: [],
275
+ staticAccountKeys: [user.pub, 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'],
276
+ messageHeader: { numRequiredSignatures: 1, numReadonlySignedAccounts: 0, numReadonlyUnsignedAccounts: 1 },
277
+ transactionConfig: {
278
+ computeUnitLimit: 200000,
279
+ heapSize: 32768,
280
+ loadedAccountsDataSizeLimit: null,
281
+ priorityFee: null,
282
+ },
283
+ };
284
+ it('fromVersionedData builds the same v1 message as manual addInstruction', async function () {
285
+ const fromData = new v1CustomInstructionBuilder_1.V1CustomInstructionBuilder(coinConfig);
286
+ fromData.fromVersionedData(envelope);
287
+ fromData.nonce(recentBlockHash);
288
+ fromData.sign({ key: user.prv });
289
+ const a = (await fromData.build());
290
+ const manual = new v1CustomInstructionBuilder_1.V1CustomInstructionBuilder(coinConfig);
291
+ manual.sender(user.pub);
292
+ manual.nonce(recentBlockHash);
293
+ manual.transactionConfig({ computeUnitLimit: 200000, heapSize: 32768 });
294
+ for (const ix of envelope.versionedInstructions) {
295
+ manual.addInstruction((0, src_1.toV1TransactionInstruction)(ix, envelope));
296
+ }
297
+ manual.sign({ key: user.prv });
298
+ const b = (await manual.build());
299
+ a.v1MessageBytes.should.deepEqual(b.v1MessageBytes);
300
+ });
301
+ it('SDK injectV1NonceAdvanceInstruction grows the header and promotes the authority', function () {
302
+ const injected = (0, src_1.injectV1NonceAdvanceInstruction)(envelope, {
303
+ walletNonceAddress: nonceAccount.pub,
304
+ authWalletAddress: gasTank.pub,
305
+ });
306
+ injected.messageHeader.numRequiredSignatures.should.equal(2);
307
+ injected.messageHeader.numReadonlySignedAccounts.should.equal(1);
308
+ injected.messageHeader.numReadonlyUnsignedAccounts.should.equal(3);
309
+ const nonceIx = injected.versionedInstructions[0];
310
+ injected.staticAccountKeys[nonceIx.programIdIndex].should.equal(web3_js_1.SystemProgram.programId.toBase58());
311
+ Buffer.from(bs58_1.default.decode(nonceIx.data))
312
+ .equals(Buffer.from([4, 0, 0, 0]))
313
+ .should.be.true();
314
+ // idempotent on a second pass
315
+ const twice = (0, src_1.injectV1NonceAdvanceInstruction)(injected, {
316
+ walletNonceAddress: nonceAccount.pub,
317
+ authWalletAddress: gasTank.pub,
318
+ });
319
+ twice.versionedInstructions.length.should.equal(injected.versionedInstructions.length);
320
+ });
321
+ it('transactionConfig coerces unset fields to null (SDK serializer contract)', async function () {
322
+ const builder = new v1CustomInstructionBuilder_1.V1CustomInstructionBuilder(coinConfig);
323
+ builder.fromVersionedData(envelope);
324
+ builder.nonce(recentBlockHash);
325
+ builder.transactionConfig({ computeUnitLimit: 200000 });
326
+ const tx = (await builder.build());
327
+ const decoded = (0, src_1.decodeV1Message)(tx.v1MessageBytes);
328
+ decoded.configValues.some((v) => v.kind === 'u32' && v.value === 200000).should.be.true();
329
+ });
330
+ });
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjFUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3YxVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDBEQUE2QjtBQUM3QixpREFBNEM7QUFDNUMsbURBQXlGO0FBQ3pGLDZDQUEyRDtBQUMzRCxnREFBMEI7QUFDMUIsc0NBU3NCO0FBQ3RCLDhGQUF5RjtBQUN6RiwwREFBcUU7QUFDckUsNEZBQXlGO0FBRXpGLDhEQUFnRDtBQUVoRCxNQUFNLGFBQWMsU0FBUSwwQkFBb0I7SUFDOUMsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtJQUM5RCxNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksYUFBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFJLGFBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hGLE1BQU0sWUFBWSxHQUFHLElBQUksYUFBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsRSxNQUFNLFNBQVMsR0FBRyw4Q0FBOEMsQ0FBQztJQUNqRSxNQUFNLGVBQWUsR0FBRyw4Q0FBOEMsQ0FBQztJQUN2RSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7SUFF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QUFBLHFCQUFlLEVBQUMsRUFBRSxDQUFDLGNBQWUsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLE1BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0YsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlLCB0eXBlIFNvbFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFB1YmxpY0tleSwgU3lzdGVtUHJvZ3JhbSB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgYmFzZTU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHtcbiAgYnVpbGRBZHZhbmNlTm9uY2VBY2NvdW50SW5zdHJ1Y3Rpb24sXG4gIGRlY29kZVYxTWVzc2FnZSxcbiAgaW5qZWN0VjFOb25jZUFkdmFuY2VJbnN0cnVjdGlvbixcbiAgS2V5UGFpcixcbiAgcGFyc2VXaXJlVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uLFxuICBWMVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdG9WMVRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24sXG59IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyB2ZXJpZnlWMVNpZ25hdHVyZXMgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3NlcmlhbGl6YXRpb24vcGFyc2VXaXJlVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBWMUN1c3RvbUluc3RydWN0aW9uQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvdjFDdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgU29sYW5hS2V5cywgVHJhbnNmZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uLy4uL3Jlc291cmNlcy9zb2wnO1xuXG5jbGFzcyBUZXN0VjFCdWlsZGVyIGV4dGVuZHMgVjFUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxufVxuXG5kZXNjcmliZSgnU29sYW5hIFYxIFRyYW5zYWN0aW9uIEJ1aWxkZXIgKFNJTUQtMDI5Ni8wMzg1KScsICgpID0+IHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCgndHNvbCcpO1xuICBjb25zdCB1c2VyID0gbmV3IEtleVBhaXIodGVzdERhdGEuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgZ2FzVGFuayA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcnZLZXlzLnBydktleTEuYmFzZTU4IH0pLmdldEtleXMoKTtcbiAgY29uc3Qgbm9uY2VBY2NvdW50ID0gbmV3IEtleVBhaXIodGVzdERhdGEubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHJlY2lwaWVudCA9ICdFTm44YTJ0R01TOWJSNVhWN3NtR0hKdk5nemt5eEptbkQyZVV2UXhZNWpTUCc7XG4gIGNvbnN0IHJlY2VudEJsb2NrSGFzaCA9ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaSc7XG4gIGNvbnN0IGFtb3VudCA9ICczMDAwMDAnO1xuXG4gIGNvbnN0IHYxQ29uZmlnID0ge1xuICAgIGNvbXB1dGVVbml0TGltaXQ6IDIwMF8wMDAsXG4gICAgaGVhcFNpemU6IDMyXzc2OCxcbiAgICBsb2FkZWRBY2NvdW50c0RhdGFTaXplTGltaXQ6IDY1XzUzNixcbiAgICBwcmlvcml0eUZlZTogNV8wMDAsXG4gIH07XG5cbiAgY29uc3QgdHJhbnNmZXI6IFRyYW5zZmVyID0ge1xuICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyLFxuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzczogdXNlci5wdWIsIHRvQWRkcmVzczogcmVjaXBpZW50LCBhbW91bnQgfSxcbiAgfTtcblxuICBjb25zdCBuZXdCdWlsZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVGVzdFYxQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICBidWlsZGVyLnNlbmRlcih1c2VyLnB1Yik7XG4gICAgYnVpbGRlci5ub25jZShyZWNlbnRCbG9ja0hhc2gpO1xuICAgIGJ1aWxkZXIuaW5zdHJ1Y3Rpb25zKFt0cmFuc2Zlcl0pO1xuICAgIGJ1aWxkZXIudHJhbnNhY3Rpb25Db25maWcodjFDb25maWcpO1xuICAgIHJldHVybiBidWlsZGVyO1xuICB9O1xuXG4gIGNvbnN0IHNpZ25XaXRoID0gKGtleVBhaXI6IFNvbGFuYUtleXMsIG1lc3NhZ2VCeXRlczogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkgPT4ge1xuICAgIGNvbnN0IHBydiA9IGtleVBhaXIucHJ2O1xuICAgIGlmICh0eXBlb2YgcHJ2ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5IGZvciB0ZXN0IHNpZ25lcicpO1xuICAgIH1cbiAgICBjb25zdCBrcCA9IG5ldyBLZXlQYWlyKHsgcHJ2IH0pO1xuICAgIHJldHVybiBuYWNsLnNpZ24uZGV0YWNoZWQobWVzc2FnZUJ5dGVzLCBrcC5nZXRLZXlzKHRydWUpLnBydiBhcyBVaW50OEFycmF5KTtcbiAgfTtcblxuICBkZXNjcmliZSgnc2luZ2xlIHNpZ25lcicsICgpID0+IHtcbiAgICBpdCgnYnVpbGRzIGEgdjEgbWVzc2FnZSArIHNpZ25lZCB3aXJlIGFuZCByb3VuZC10cmlwcyB0aHJvdWdoIHBhcnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIuc2lnbih7IGtleTogdXNlci5wcnYgfSk7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgICB0eC52MU1lc3NhZ2VCeXRlcyFbMF0uc2hvdWxkLmVxdWFsKDB4ODEpO1xuICAgICAgdHgudjFUcmFuc2FjdGlvbkJ5dGVzIS5sZW5ndGguc2hvdWxkLmVxdWFsKHR4LnYxTWVzc2FnZUJ5dGVzIS5sZW5ndGggKyA2NCk7XG4gICAgICAvLyBzaWduYWJsZSBwYXlsb2FkIGlzIHRoZSBtZXNzYWdlIGJ5dGVzXG4gICAgICB0eC5zaWduYWJsZVBheWxvYWQuZXF1YWxzKEJ1ZmZlci5mcm9tKHR4LnYxTWVzc2FnZUJ5dGVzISkpLnNob3VsZC5iZS50cnVlKCk7XG5cbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlV2lyZVRyYW5zYWN0aW9uKHR4LnYxVHJhbnNhY3Rpb25CeXRlcyEpO1xuICAgICAgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMuc2hvdWxkLmRlZXBFcXVhbChbdXNlci5wdWJdKTtcbiAgICAgIHZlcmlmeVYxU2lnbmF0dXJlcyhwYXJzZWQubWVzc2FnZUJ5dGVzLCBwYXJzZWQuc2lnbmF0dXJlcywgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMpO1xuXG4gICAgICAvLyBicm9hZGNhc3QgZm9ybWF0IHJvdW5kLXRyaXBzIHRocm91Z2ggZnJvbSgpXG4gICAgICBjb25zdCByYXcgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgcmVwYXJzZWQgPSBuZXcgVGVzdFYxQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICAgIHJlcGFyc2VkLmZyb20ocmF3KTtcbiAgICAgIChyZXBhcnNlZCBhcyB1bmtub3duIGFzIHsgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uIH0pLnRyYW5zYWN0aW9uLnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKHJhdyk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIHdoZW4gdHJhbnNhY3Rpb25Db25maWcgaXMgbWlzc2luZycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVGVzdFYxQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICAgIGJ1aWxkZXIuc2VuZGVyKHVzZXIucHViKTtcbiAgICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICAgIGJ1aWxkZXIuaW5zdHJ1Y3Rpb25zKFt0cmFuc2Zlcl0pO1xuICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3RyYW5zYWN0aW9uQ29uZmlnIGlzIHJlcXVpcmVkLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkdXJhYmxlIG5vbmNlICgyIHNpZ25hdHVyZXMpJywgKCkgPT4ge1xuICAgIGl0KCdpbmplY3RzIHRoZSBBZHZhbmNlTm9uY2VBY2NvdW50IGluc3RydWN0aW9uIGFuZCBhc3NlbWJsZXMgdXNlciArIGdhcy10YW5rIHNpZ25hdHVyZXMgaW4gc2lnbmVyIG9yZGVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCB7XG4gICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LnB1YixcbiAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IGdhc1RhbmsucHViLFxuICAgICAgfSk7XG4gICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuXG4gICAgICBjb25zdCB1bnNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgbWVzc2FnZUJ5dGVzID0gdW5zaWduZWQudjFNZXNzYWdlQnl0ZXMhO1xuXG4gICAgICAvLyAyIHJlcXVpcmVkIHNpZ25lcnM6IHVzZXIgKGZlZSBwYXllcikgKyBnYXMtdGFuayBub25jZSBhdXRob3JpdHlcbiAgICAgIG1lc3NhZ2VCeXRlc1sxXS5zaG91bGQuZXF1YWwoMik7XG5cbiAgICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVWMU1lc3NhZ2UobWVzc2FnZUJ5dGVzKTtcbiAgICAgIC8vIG5vbmNlIGhhc2ggb2NjdXBpZXMgdGhlIGJsb2NraGFzaCBmaWVsZFxuICAgICAgZGVjb2RlZC5ibG9ja2hhc2guc2hvdWxkLmVxdWFsKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgICAvLyBmaXJzdCBpbnN0cnVjdGlvbiBpcyBBZHZhbmNlTm9uY2VBY2NvdW50IChTeXN0ZW0gUHJvZ3JhbSwgZGlzY3JpbWluYXRvciA0KVxuICAgICAgZGVjb2RlZC5jb21waWxlZEluc3RydWN0aW9uc1swXS5kYXRhWzBdLnNob3VsZC5lcXVhbCg0KTtcbiAgICAgIGRlY29kZWQuc3RhdGljQWNjb3VudHNbZGVjb2RlZC5jb21waWxlZEluc3RydWN0aW9uc1swXS5wcm9ncmFtQWRkcmVzc0luZGV4XS5zaG91bGQuZXF1YWwoXG4gICAgICAgIFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvQmFzZTU4KClcbiAgICAgICk7XG4gICAgICAvLyBzaWduZXIgb3JkZXI6IGZlZSBwYXllciAodXNlcikgZmlyc3QsIHRoZW4gZ2FzIHRhbmtcbiAgICAgIGRlY29kZWQuc3RhdGljQWNjb3VudHMuc2xpY2UoMCwgMikuc2hvdWxkLmRlZXBFcXVhbChbdXNlci5wdWIsIGdhc1RhbmsucHViXSk7XG5cbiAgICAgIC8vIGF0dGFjaCB0aGUgZ2FzLXRhbmsgSFNNIHNpZ25hdHVyZSBvdmVyIHRoZSBzYW1lIG1lc3NhZ2UgYnl0ZXNcbiAgICAgIGNvbnN0IGdhc1RhbmtTaWcgPSBzaWduV2l0aChnYXNUYW5rLCBtZXNzYWdlQnl0ZXMpO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IGdhc1RhbmsucHViIH0sIEJ1ZmZlci5mcm9tKGdhc1RhbmtTaWcpKTtcbiAgICAgIGNvbnN0IHNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgICAvLyBtZXNzYWdlIGJ5dGUtaWRlbnRpdHkgYmV0d2VlbiBidWlsZCBhbmQgc2lnblxuICAgICAgc2lnbmVkLnYxTWVzc2FnZUJ5dGVzIS5zaG91bGQuZGVlcEVxdWFsKG1lc3NhZ2VCeXRlcyk7XG5cbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlV2lyZVRyYW5zYWN0aW9uKHNpZ25lZC52MVRyYW5zYWN0aW9uQnl0ZXMhKTtcbiAgICAgIHBhcnNlZC5zaWduZXJQdWJsaWNLZXlzLnNob3VsZC5kZWVwRXF1YWwoW3VzZXIucHViLCBnYXNUYW5rLnB1Yl0pO1xuICAgICAgdmVyaWZ5VjFTaWduYXR1cmVzKHBhcnNlZC5tZXNzYWdlQnl0ZXMsIHBhcnNlZC5zaWduYXR1cmVzLCBwYXJzZWQuc2lnbmVyUHVibGljS2V5cyk7XG4gICAgfSk7XG5cbiAgICBpdCgnb3JkZXJzIHNpZ25hdHVyZXMgYnkgdGhlIGNvbXBpbGVkIG1lc3NhZ2Ugd2hlbiB0aGUgZ2FzIHRhbmsgaXMgdGhlIGZlZSBwYXllcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXdCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCwge1xuICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlQWNjb3VudC5wdWIsXG4gICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiBnYXNUYW5rLnB1YixcbiAgICAgIH0pO1xuICAgICAgYnVpbGRlci5mZWVQYXllcihnYXNUYW5rLnB1Yik7XG4gICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuXG4gICAgICBjb25zdCB1bnNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgbWVzc2FnZUJ5dGVzID0gdW5zaWduZWQudjFNZXNzYWdlQnl0ZXMhO1xuICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVYxTWVzc2FnZShtZXNzYWdlQnl0ZXMpO1xuICAgICAgLy8gZ2FzIHRhbmsgKGZlZSBwYXllcikgaXMgdGhlIGZpcnN0IHNpZ25lciwgdXNlciBzZWNvbmRcbiAgICAgIGRlY29kZWQuc3RhdGljQWNjb3VudHMuc2xpY2UoMCwgMikuc2hvdWxkLmRlZXBFcXVhbChbZ2FzVGFuay5wdWIsIHVzZXIucHViXSk7XG5cbiAgICAgIGNvbnN0IHVzZXJTaWcgPSBzaWduV2l0aCh1c2VyLCBtZXNzYWdlQnl0ZXMpO1xuICAgICAgY29uc3QgZ2FzVGFua1NpZyA9IHNpZ25XaXRoKGdhc1RhbmssIG1lc3NhZ2VCeXRlcyk7XG4gICAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1YjogdXNlci5wdWIgfSwgQnVmZmVyLmZyb20odXNlclNpZykpO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IGdhc1RhbmsucHViIH0sIEJ1ZmZlci5mcm9tKGdhc1RhbmtTaWcpKTtcbiAgICAgIGNvbnN0IHNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVdpcmVUcmFuc2FjdGlvbihzaWduZWQudjFUcmFuc2FjdGlvbkJ5dGVzISk7XG4gICAgICBwYXJzZWQuc2lnbmVyUHVibGljS2V5cy5zaG91bGQuZGVlcEVxdWFsKFtnYXNUYW5rLnB1YiwgdXNlci5wdWJdKTtcbiAgICAgIHZlcmlmeVYxU2lnbmF0dXJlcyhwYXJzZWQubWVzc2FnZUJ5dGVzLCBwYXJzZWQuc2lnbmF0dXJlcywgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3plcm8tZmlsbHMgYSBtaXNzaW5nIHNpZ25hdHVyZSBzbG90IHNvIHRoZSB3aXJlIHNoYXBlIHN0YXlzIHZhbGlkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCB7XG4gICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LnB1YixcbiAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IGdhc1RhbmsucHViLFxuICAgICAgfSk7XG4gICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VXaXJlVHJhbnNhY3Rpb24odHgudjFUcmFuc2FjdGlvbkJ5dGVzISk7XG4gICAgICBwYXJzZWQuc2lnbmVyUHVibGljS2V5cy5zaG91bGQuZGVlcEVxdWFsKFt1c2VyLnB1YiwgZ2FzVGFuay5wdWJdKTtcbiAgICAgIHBhcnNlZC5zaWduYXR1cmVzWzBdLnNvbWUoKGIpID0+IGIgIT09IDApLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBwYXJzZWQuc2lnbmF0dXJlc1sxXS5ldmVyeSgoYikgPT4gYiA9PT0gMCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gdmVyaWZ5VjFTaWduYXR1cmVzKHBhcnNlZC5tZXNzYWdlQnl0ZXMsIHBhcnNlZC5zaWduYXR1cmVzLCBwYXJzZWQuc2lnbmVyUHVibGljS2V5cykpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGRBZHZhbmNlTm9uY2VBY2NvdW50SW5zdHJ1Y3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ2NvbnN0cnVjdHMgdGhlIG5vbmNlIGFkdmFuY2UgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgYXV0aG9yaXR5IGFzIHNpZ25lcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGl4ID0gYnVpbGRBZHZhbmNlTm9uY2VBY2NvdW50SW5zdHJ1Y3Rpb24obm9uY2VBY2NvdW50LnB1YiwgZ2FzVGFuay5wdWIpO1xuICAgICAgaXgucHJvZ3JhbUlkLnRvQmFzZTU4KCkuc2hvdWxkLmVxdWFsKFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvQmFzZTU4KCkpO1xuICAgICAgaXguZGF0YVswXS5zaG91bGQuZXF1YWwoNCk7XG4gICAgICBpeC5rZXlzWzBdLnB1YmtleS50b0Jhc2U1OCgpLnNob3VsZC5lcXVhbChub25jZUFjY291bnQucHViKTtcbiAgICAgIGl4LmtleXNbMF0uaXNXcml0YWJsZS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgaXgua2V5c1swXS5pc1NpZ25lci5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICAgIC8vIHdlYjMuanMgbm9uY2VBZHZhbmNlIGluY2x1ZGVzIHRoZSByZWNlbnQtYmxvY2toYXNoZXMgc3lzdmFyIGFzIHRoZSBzZWNvbmQga2V5XG4gICAgICBpeC5rZXlzWzFdLnB1YmtleS50b0Jhc2U1OCgpLnNob3VsZC5lcXVhbCgnU3lzdmFyUmVjZW50QjFvY2tIYXNoZXMxMTExMTExMTExMTExMTExMTExMScpO1xuICAgICAgaXgua2V5c1syXS5wdWJrZXkudG9CYXNlNTgoKS5zaG91bGQuZXF1YWwoZ2FzVGFuay5wdWIpO1xuICAgICAgaXgua2V5c1syXS5pc1NpZ25lci5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbm9uY2UgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgncmVqZWN0cyBhbiBpbnZhbGlkIGJsb2NraGFzaCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXdCdWlsZGVyKCk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIubm9uY2UoJ25vdC1hLWJsb2NraGFzaCcpLCAvSW52YWxpZCBvciBtaXNzaW5nIGJsb2NrSGFzaC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBub25jZSB3aG9zZSBhdXRob3JpdHkgZXF1YWxzIHRoZSBub25jZSBhY2NvdW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICAgIHNob3VsZC50aHJvd3MoXG4gICAgICAgICgpID0+IGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCB7IHdhbGxldE5vbmNlQWRkcmVzczogdXNlci5wdWIsIGF1dGhXYWxsZXRBZGRyZXNzOiB1c2VyLnB1YiB9KSxcbiAgICAgICAgL3dhbGxldE5vbmNlQWRkcmVzcyBjYW5ub3QgYmUgZXF1YWwgdG8gYXV0aFdhbGxldEFkZHJlc3MvXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJvbSgpJywgKCkgPT4ge1xuICAgIGl0KCdwYXJzZXMgYSBzaWduZWQgdjEgd2lyZSBhbmQgZXhwb3NlcyB0b0pzb24gdmlhIHRoZSBtZXRhZGF0YSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXdCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgYnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHJhdyA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IHJlcGFyc2VkID0gbmV3IFRlc3RWMUJ1aWxkZXIoY29pbkNvbmZpZyk7XG4gICAgICByZXBhcnNlZC5mcm9tKHJhdyk7XG4gICAgICBjb25zdCByZXBhcnNlZFR4ID0gKHJlcGFyc2VkIGFzIHVua25vd24gYXMgeyB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gfSkudHJhbnNhY3Rpb247XG4gICAgICByZXBhcnNlZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKHJhdyk7XG5cbiAgICAgIGNvbnN0IGpzb24gPSByZXBhcnNlZFR4LnRvSnNvbigpO1xuICAgICAganNvbi5ub25jZS5zaG91bGQuZXF1YWwocmVjZW50QmxvY2tIYXNoKTtcbiAgICAgIGpzb24ubnVtU2lnbmF0dXJlcy5zaG91bGQuZXF1YWwoMSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdWMUN1c3RvbUluc3RydWN0aW9uQnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCgndHNvbCcpO1xuICBjb25zdCB1c2VyID0gbmV3IEtleVBhaXIodGVzdERhdGEuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgZ2FzVGFuayA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcnZLZXlzLnBydktleTEuYmFzZTU4IH0pLmdldEtleXMoKTtcbiAgY29uc3Qgbm9uY2VBY2NvdW50ID0gbmV3IEtleVBhaXIodGVzdERhdGEubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHJlY2VudEJsb2NrSGFzaCA9ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaSc7XG4gIGNvbnN0IHYxQ29uZmlnID0ge1xuICAgIGNvbXB1dGVVbml0TGltaXQ6IDIwMF8wMDAsXG4gICAgaGVhcFNpemU6IDMyXzc2OCxcbiAgICBsb2FkZWRBY2NvdW50c0RhdGFTaXplTGltaXQ6IDY1XzUzNixcbiAgICBwcmlvcml0eUZlZTogNV8wMDAsXG4gIH07XG5cbiAgY29uc3Qgc2lnbldpdGggPSAoa2V5UGFpcjogU29sYW5hS2V5cywgbWVzc2FnZUJ5dGVzOiBVaW50OEFycmF5KTogVWludDhBcnJheSA9PiB7XG4gICAgY29uc3QgcHJ2ID0ga2V5UGFpci5wcnY7XG4gICAgaWYgKHR5cGVvZiBwcnYgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXkgZm9yIHRlc3Qgc2lnbmVyJyk7XG4gICAgfVxuICAgIGNvbnN0IGtwID0gbmV3IEtleVBhaXIoeyBwcnYgfSk7XG4gICAgcmV0dXJuIG5hY2wuc2lnbi5kZXRhY2hlZChtZXNzYWdlQnl0ZXMsIGtwLmdldEtleXModHJ1ZSkucHJ2IGFzIFVpbnQ4QXJyYXkpO1xuICB9O1xuXG4gIGl0KCdidWlsZHMgYSB2MSB0cmFuc2FjdGlvbiBmcm9tIGEgY3VzdG9tIGluc3RydWN0aW9uICsgMiBzaWduYXR1cmVzIGluIHNpZ25lciBvcmRlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZWNpcGllbnQgPSAnQzNzR2Y0eFpiN2tQMW1Rcjh0WXc5dVZ4Mm5ENWhKNmFMY0U0b1JxUzdpQic7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBWMUN1c3RvbUluc3RydWN0aW9uQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICBidWlsZGVyLnNlbmRlcih1c2VyLnB1Yik7XG4gICAgYnVpbGRlci5ub25jZShyZWNlbnRCbG9ja0hhc2gsIHsgd2FsbGV0Tm9uY2VBZGRyZXNzOiBub25jZUFjY291bnQucHViLCBhdXRoV2FsbGV0QWRkcmVzczogZ2FzVGFuay5wdWIgfSk7XG4gICAgYnVpbGRlci50cmFuc2FjdGlvbkNvbmZpZyh2MUNvbmZpZyk7XG4gICAgYnVpbGRlci5hZGRJbnN0cnVjdGlvbihcbiAgICAgIFN5c3RlbVByb2dyYW0udHJhbnNmZXIoe1xuICAgICAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KHVzZXIucHViKSxcbiAgICAgICAgdG9QdWJrZXk6IG5ldyBQdWJsaWNLZXkocmVjaXBpZW50KSxcbiAgICAgICAgbGFtcG9ydHM6IDFfMDAwXzAwMCxcbiAgICAgIH0pXG4gICAgKTtcbiAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuXG4gICAgY29uc3QgdW5zaWduZWQgPSAoYXdhaXQgYnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICBjb25zdCBnYXNUYW5rU2lnID0gc2lnbldpdGgoZ2FzVGFuaywgdW5zaWduZWQudjFNZXNzYWdlQnl0ZXMhKTtcbiAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1YjogZ2FzVGFuay5wdWIgfSwgQnVmZmVyLmZyb20oZ2FzVGFua1NpZykpO1xuICAgIGNvbnN0IHNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VXaXJlVHJhbnNhY3Rpb24oc2lnbmVkLnYxVHJhbnNhY3Rpb25CeXRlcyEpO1xuICAgIHBhcnNlZC5zaWduZXJQdWJsaWNLZXlzLnNob3VsZC5kZWVwRXF1YWwoW3VzZXIucHViLCBnYXNUYW5rLnB1Yl0pO1xuICAgIHZlcmlmeVYxU2lnbmF0dXJlcyhwYXJzZWQubWVzc2FnZUJ5dGVzLCBwYXJzZWQuc2lnbmF0dXJlcywgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnVjFUcmFuc2FjdGlvbkJ1aWxkZXIgZW52ZWxvcGUgc3VyZmFjZSAoZnJvbVZlcnNpb25lZERhdGEgKyBTREsgaW5qZWN0b3IpJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjb2luQ29uZmlnID0gY29pbnMuZ2V0KCd0c29sJyk7XG4gIGNvbnN0IHVzZXIgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICBjb25zdCBnYXNUYW5rID0gbmV3IEtleVBhaXIoeyBwcnY6IHRlc3REYXRhLnBydktleXMucHJ2S2V5MS5iYXNlNTggfSkuZ2V0S2V5cygpO1xuICBjb25zdCBub25jZUFjY291bnQgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5ub25jZUFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgcmVjZW50QmxvY2tIYXNoID0gJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJztcblxuICBjb25zdCBlbnZlbG9wZTogU29sVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhID0ge1xuICAgIHZlcnNpb246IDEsXG4gICAgdmVyc2lvbmVkSW5zdHJ1Y3Rpb25zOiBbXG4gICAgICB7IHByb2dyYW1JZEluZGV4OiAxLCBhY2NvdW50S2V5SW5kZXhlczogWzAsIDFdLCBkYXRhOiAnMlV6SE0nIH0sIC8vIGJhc2U1OCBvZiAweDAxMDAwMDAwXG4gICAgXSxcbiAgICBhZGRyZXNzTG9va3VwVGFibGVzOiBbXSxcbiAgICBzdGF0aWNBY2NvdW50S2V5czogW3VzZXIucHViLCAnTWVtb1NxNGdxQUJBWEtiOTZxbkg4VHlzTmNXeE15V0NxWGdETEdtZmNIciddLFxuICAgIG1lc3NhZ2VIZWFkZXI6IHsgbnVtUmVxdWlyZWRTaWduYXR1cmVzOiAxLCBudW1SZWFkb25seVNpZ25lZEFjY291bnRzOiAwLCBudW1SZWFkb25seVVuc2lnbmVkQWNjb3VudHM6IDEgfSxcbiAgICB0cmFuc2FjdGlvbkNvbmZpZzoge1xuICAgICAgY29tcHV0ZVVuaXRMaW1pdDogMjAwXzAwMCxcbiAgICAgIGhlYXBTaXplOiAzMl83NjgsXG4gICAgICBsb2FkZWRBY2NvdW50c0RhdGFTaXplTGltaXQ6IG51bGwsXG4gICAgICBwcmlvcml0eUZlZTogbnVsbCxcbiAgICB9LFxuICB9O1xuXG4gIGl0KCdmcm9tVmVyc2lvbmVkRGF0YSBidWlsZHMgdGhlIHNhbWUgdjEgbWVzc2FnZSBhcyBtYW51YWwgYWRkSW5zdHJ1Y3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZnJvbURhdGEgPSBuZXcgVjFDdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoY29pbkNvbmZpZyk7XG4gICAgZnJvbURhdGEuZnJvbVZlcnNpb25lZERhdGEoZW52ZWxvcGUpO1xuICAgIGZyb21EYXRhLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgZnJvbURhdGEuc2lnbih7IGtleTogdXNlci5wcnYgfSk7XG4gICAgY29uc3QgYSA9IChhd2FpdCBmcm9tRGF0YS5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcblxuICAgIGNvbnN0IG1hbnVhbCA9IG5ldyBWMUN1c3RvbUluc3RydWN0aW9uQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICBtYW51YWwuc2VuZGVyKHVzZXIucHViKTtcbiAgICBtYW51YWwubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICBtYW51YWwudHJhbnNhY3Rpb25Db25maWcoeyBjb21wdXRlVW5pdExpbWl0OiAyMDBfMDAwLCBoZWFwU2l6ZTogMzJfNzY4IH0pO1xuICAgIGZvciAoY29uc3QgaXggb2YgZW52ZWxvcGUudmVyc2lvbmVkSW5zdHJ1Y3Rpb25zKSB7XG4gICAgICBtYW51YWwuYWRkSW5zdHJ1Y3Rpb24odG9WMVRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24oaXgsIGVudmVsb3BlKSk7XG4gICAgfVxuICAgIG1hbnVhbC5zaWduKHsga2V5OiB1c2VyLnBydiB9KTtcbiAgICBjb25zdCBiID0gKGF3YWl0IG1hbnVhbC5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcblxuICAgIGEudjFNZXNzYWdlQnl0ZXMhLnNob3VsZC5kZWVwRXF1YWwoYi52MU1lc3NhZ2VCeXRlcyEpO1xuICB9KTtcblxuICBpdCgnU0RLIGluamVjdFYxTm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24gZ3Jvd3MgdGhlIGhlYWRlciBhbmQgcHJvbW90ZXMgdGhlIGF1dGhvcml0eScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbmplY3RlZCA9IGluamVjdFYxTm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24oZW52ZWxvcGUsIHtcbiAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LnB1YixcbiAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiBnYXNUYW5rLnB1YixcbiAgICB9KTtcbiAgICBpbmplY3RlZC5tZXNzYWdlSGVhZGVyLm51bVJlcXVpcmVkU2lnbmF0dXJlcy5zaG91bGQuZXF1YWwoMik7XG4gICAgaW5qZWN0ZWQubWVzc2FnZUhlYWRlci5udW1SZWFkb25seVNpZ25lZEFjY291bnRzLnNob3VsZC5lcXVhbCgxKTtcbiAgICBpbmplY3RlZC5tZXNzYWdlSGVhZGVyLm51bVJlYWRvbmx5VW5zaWduZWRBY2NvdW50cy5zaG91bGQuZXF1YWwoMyk7XG4gICAgY29uc3Qgbm9uY2VJeCA9IGluamVjdGVkLnZlcnNpb25lZEluc3RydWN0aW9uc1swXTtcbiAgICBpbmplY3RlZC5zdGF0aWNBY2NvdW50S2V5c1tub25jZUl4LnByb2dyYW1JZEluZGV4XS5zaG91bGQuZXF1YWwoU3lzdGVtUHJvZ3JhbS5wcm9ncmFtSWQudG9CYXNlNTgoKSk7XG4gICAgQnVmZmVyLmZyb20oYmFzZTU4LmRlY29kZShub25jZUl4LmRhdGEpKVxuICAgICAgLmVxdWFscyhCdWZmZXIuZnJvbShbNCwgMCwgMCwgMF0pKVxuICAgICAgLnNob3VsZC5iZS50cnVlKCk7XG5cbiAgICAvLyBpZGVtcG90ZW50IG9uIGEgc2Vjb25kIHBhc3NcbiAgICBjb25zdCB0d2ljZSA9IGluamVjdFYxTm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24oaW5qZWN0ZWQsIHtcbiAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LnB1YixcbiAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiBnYXNUYW5rLnB1YixcbiAgICB9KTtcbiAgICB0d2ljZS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbChpbmplY3RlZC52ZXJzaW9uZWRJbnN0cnVjdGlvbnMubGVuZ3RoKTtcbiAgfSk7XG5cbiAgaXQoJ3RyYW5zYWN0aW9uQ29uZmlnIGNvZXJjZXMgdW5zZXQgZmllbGRzIHRvIG51bGwgKFNESyBzZXJpYWxpemVyIGNvbnRyYWN0KScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IFYxQ3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyKGNvaW5Db25maWcpO1xuICAgIGJ1aWxkZXIuZnJvbVZlcnNpb25lZERhdGEoZW52ZWxvcGUpO1xuICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICBidWlsZGVyLnRyYW5zYWN0aW9uQ29uZmlnKHsgY29tcHV0ZVVuaXRMaW1pdDogMjAwXzAwMCB9KTtcbiAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVWMU1lc3NhZ2UodHgudjFNZXNzYWdlQnl0ZXMhKTtcbiAgICBkZWNvZGVkLmNvbmZpZ1ZhbHVlcy5zb21lKCh2KSA9PiB2LmtpbmQgPT09ICd1MzInICYmIHYudmFsdWUgPT09IDIwMF8wMDApLnNob3VsZC5iZS50cnVlKCk7XG4gIH0pO1xufSk7XG4iXX0=