@coolwallet/sol
Version:
Coolwallet Solana sdk
291 lines (289 loc) • 76.5 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _params = require("../../config/params");
var _Transaction = require("../Transaction");
var _rawTransaction = require("../rawTransaction");
var _scriptUtil = require("../scriptUtil");
var _versionedTransaction = require("../versionedTransaction");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
jest.mock('@coolwallet/core', function () {
return {
utils: {
getFullPath: jest.fn().mockReturnValue('108000002c800001f58000000080000000')
}
};
});
describe('Test scriptUtil.getXXXArguments function', function () {
// common parameters
var recentBlockhash = 'FL9S1qtY9NkBXmmcsiiwRgPVDoUV4HRhezJjZvhsbMyK';
var signer = '5kkqLZbsHMLbpMMSrzsHd4ssHtbxGyr7yPHfow8PdJnp';
var computeUnitPrice = '120000';
var computeUnitLimit = '200000';
var tokenProgramId = _params.TOKEN_PROGRAM_ID;
var tokenInfo = {
symbol: 'USDT',
decimals: 6,
address: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB'
};
it('getTransferArguments', function () {
var tx = {
fromPubkey: signer,
toPubkey: 'B3uA4nk8Y4zgqy96Wk1vofz1CDRrv8yAqtnHECFAKomf',
recentBlockhash: recentBlockhash,
lamports: 100000,
computeUnitPrice: computeUnitPrice,
computeUnitLimit: computeUnitLimit
};
var compiledTx = (0, _rawTransaction.compileTransferTransaction)(tx);
var rawTx = new _Transaction.Transaction(compiledTx);
var args = (0, _scriptUtil.getTransferArguments)(rawTx, 0);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f580000000800000000100020446a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a59553011306db1a1031713f763abf61f3ddd146fc10da02d44cac09c15c57ccf600000000000000000000000000000000000000000000000000000000000000000306466fe5211732ffecadba72c39be7bc8ce5bbc5f7126b2c439b3a400000002d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2dd4eb2f852b6be253a3e9585f8f1c7ad35affb8b3304785b620546d6fbe39864203000903c0d401000000000003000502400d0300020200010c02000000a086010000000000\"");
});
it('getSplTokenTransferArguments', function () {
var tx = {
signer: signer,
fromTokenAccount: 'FXLxFVPWB8FuRZnb621YbWw2tmY7fmEAJAC6dMkZWWzx',
toTokenAccount: 'ASMnRWAZpArzDDWyqUDzd8TF9AdikwfD9gnYNAu6P7oP',
recentBlockhash: recentBlockhash,
programId: tokenProgramId,
tokenInfo: tokenInfo,
amount: 100,
computeUnitPrice: computeUnitPrice,
computeUnitLimit: computeUnitLimit
};
var compiledTx = (0, _rawTransaction.compileSplTokenTransaction)(tx);
var rawTx = new _Transaction.Transaction(compiledTx);
var args = (0, _scriptUtil.getSplTokenTransferArguments)(rawTx, 0, tokenInfo);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f580000000800000000100030646a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a58c3833bf94c6e3e386337e8efa318b291d494390618f8dbe056a6cb2422c205ad7c99a08ee7f29dc9240af6974fa48b266e47c950ad13631be0aa5a317bdfa9d0306466fe5211732ffecadba72c39be7bc8ce5bbc5f7126b2c439b3a40000000ce010e60afedb22717bd63192f54145a3f965a33bb82d2c7029eb2ce1e20826406ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9d4eb2f852b6be253a3e9585f8f1c7ad35affb8b3304785b620546d6fbe39864203000903c0d401000000000003000502400d03000504020401000a0c640000000000000006060455534454000000ce010e60afedb22717bd63192f54145a3f965a33bb82d2c7029eb2ce1e208264000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"");
});
it('getCreateAndTransferSplTokenArguments', function () {
var _compiledAssociateAcc;
var tx = {
signer: signer,
toPubkey: 'B3uA4nk8Y4zgqy96Wk1vofz1CDRrv8yAqtnHECFAKomf',
fromTokenAccount: 'FXLxFVPWB8FuRZnb621YbWw2tmY7fmEAJAC6dMkZWWzx',
toTokenAccount: 'ASMnRWAZpArzDDWyqUDzd8TF9AdikwfD9gnYNAu6P7oP',
recentBlockhash: recentBlockhash,
programId: tokenProgramId,
tokenInfo: tokenInfo,
amount: 100,
computeUnitPrice: computeUnitPrice,
computeUnitLimit: computeUnitLimit
};
var compiledAssociateAccountTx = (0, _rawTransaction.compileAssociateTokenAccount)(_objectSpread(_objectSpread({}, tx), {}, {
signer: signer,
owner: signer,
associateAccount: tx.toTokenAccount,
token: tokenInfo.address
}));
var transferSplTokenTx = (0, _rawTransaction.compileSplTokenTransaction)(_objectSpread(_objectSpread({}, tx), {}, {
signer: signer
}));
(_compiledAssociateAcc = compiledAssociateAccountTx.instructions).push.apply(_compiledAssociateAcc, (0, _toConsumableArray2["default"])(transferSplTokenTx.instructions));
var rawTx = new _Transaction.Transaction(compiledAssociateAccountTx);
var args = (0, _scriptUtil.getCreateAndTransferSPLToken)(rawTx, 0, tokenInfo);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f580000000800000000100050846a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a58c3833bf94c6e3e386337e8efa318b291d494390618f8dbe056a6cb2422c205ad7c99a08ee7f29dc9240af6974fa48b266e47c950ad13631be0aa5a317bdfa9d00000000000000000000000000000000000000000000000000000000000000008c97258f4e2489f1bb3d1029148e0d830b5a1399daff1084048e7bd8dbe9f8590306466fe5211732ffecadba72c39be7bc8ce5bbc5f7126b2c439b3a40000000ce010e60afedb22717bd63192f54145a3f965a33bb82d2c7029eb2ce1e20826406ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a90000000000000000000000000000000000000000000000000000000000000000d4eb2f852b6be253a3e9585f8f1c7ad35affb8b3304785b620546d6fbe39864204060001000603070005000903c0d401000000000005000502400d03000704020601000a0c640000000000000006060455534454000000ce010e60afedb22717bd63192f54145a3f965a33bb82d2c7029eb2ce1e208264000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"");
});
it('getSignInArguments', function () {
var message = {
domain: 'solana-labs.github.io',
statement: 'Please sign in.',
address: signer
};
var args = (0, _scriptUtil.getSignInArguments)(message, 0);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f5800000008000000015736f6c616e612d6c6162732e6769746875622e696f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110a0a506c65617365207369676e20696e2e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000108000002c800001f58000000080000000\"");
});
it('getSignMessageArguments', function () {
var message = Buffer.from([115, 111, 108, 97, 110, 97, 45, 108, 97, 98, 115, 46, 103, 105, 116, 104, 117, 98, 46, 105, 111, 32, 119, 97, 110, 116, 115, 32, 121, 111, 117, 32, 116, 111, 32, 115, 105, 103, 110, 32, 105, 110, 32, 119, 105, 116, 104, 32, 121, 111, 117, 114, 32, 83, 111, 108, 97, 110, 97, 32, 97, 99, 99, 111, 117, 110, 116, 58, 10, 53, 120, 112, 86, 70, 121, 57, 80, 70, 101, 88, 113, 56, 106, 101, 112, 84, 81, 83, 50, 112, 49, 114, 82, 78, 98, 77, 118, 50, 78, 53, 50, 82, 74, 52, 82, 65, 88, 86, 106, 100, 110, 72, 77, 10, 10, 80, 108, 101, 97, 115, 101, 32, 115, 105, 103, 110, 32, 105, 110, 46]).toString('hex');
var args = (0, _scriptUtil.getSignMessageArguments)(message, 0);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f58000000080000000736f6c616e612d6c6162732e6769746875622e696f2077616e747320796f7520746f207369676e20696e207769746820796f757220536f6c616e61206163636f756e743a0a357870564679395046655871386a657054515332703172524e624d76324e3532524a34524158566a646e484d0a0a506c65617365207369676e20696e2e\"");
});
it('getSignVersionedArguments', function () {
var txArray = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 73, 187, 98, 219, 129, 161, 187, 91, 218, 9, 26, 180, 16, 176, 209, 229, 161, 209, 224, 183, 87, 147, 83, 7, 162, 248, 116, 138, 15, 112, 182, 200, 5, 74, 83, 90, 153, 41, 33, 6, 77, 36, 232, 113, 96, 218, 56, 124, 124, 53, 181, 221, 188, 146, 187, 129, 228, 31, 168, 64, 65, 5, 68, 141, 152, 39, 220, 81, 76, 209, 99, 1, 32, 205, 53, 122, 98, 29, 251, 237, 146, 252, 182, 94, 180, 7, 176, 152, 48, 112, 246, 93, 195, 245, 103, 79, 1, 1, 0, 50, 72, 101, 108, 108, 111, 44, 32, 102, 114, 111, 109, 32, 116, 104, 101, 32, 83, 111, 108, 97, 110, 97, 32, 87, 97, 108, 108, 101, 116, 32, 65, 100, 97, 112, 116, 101, 114, 32, 101, 120, 97, 109, 112, 108, 101, 32, 97, 112, 112, 33];
var versionedTransaction = _versionedTransaction.VersionedTransaction.deserialize(Uint8Array.from(Buffer.from(txArray)));
var args = (0, _scriptUtil.getSignVersionedArguments)(versionedTransaction.message, 0);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f580000000800000000100010249bb62db81a1bb5bda091ab410b0d1e5a1d1e0b757935307a2f8748a0f70b6c8054a535a992921064d24e87160da387c7c35b5ddbc92bb81e41fa8404105448d9827dc514cd1630120cd357a621dfbed92fcb65eb407b0983070f65dc3f5674f0101003248656c6c6f2c2066726f6d2074686520536f6c616e612057616c6c65742041646170746572206578616d706c652061707021\"");
});
it('getDelegateAndCreateAccountArguments', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
var tx, compiledDelegateAndCreateAccountWithSeedTx, rawTx, args;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
tx = {
votePubkey: '9QU2QSxhb24FUX3Tu2FpczXjpK3VYrvRudywSZaM29mF',
newAccountPubkey: '9UdXnMquoTy8RJpQmidCDHJydZo5Q2ZFY2ntNbgqi1HA',
seed: 'mSNdZ9gneHjGsRPnoQnfSY',
recentBlockhash: recentBlockhash,
lamports: '100000000'
};
compiledDelegateAndCreateAccountWithSeedTx = (0, _rawTransaction.compileDelegateAndCreateAccountWithSeed)(_objectSpread(_objectSpread({}, tx), {}, {
fromPubkey: signer,
basePubkey: signer
}));
rawTx = new _Transaction.Transaction(compiledDelegateAndCreateAccountWithSeedTx);
args = (0, _scriptUtil.getDelegateAndCreateAccountArguments)(rawTx, 0);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f580000000800000000100070946a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a57df17b90d080e3a08cad64b0a1eecbdea26322603bd4cda54cf9f25525b2647100000000000000000000000000000000000000000000000000000000000000007ce0690f82fb61475febbd1605ef20c346a9167706d829ce4699435c4c2780ae06a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000006a1d817a502050b680791e6ce6db88e1e5b7150f61fc6790a4eb4d10000000006a7d51718c774c928566398691d5eb68b5eb8a39b4b6d5c73555b210000000006a7d517192c5c51218cc94c3d4af17f58daee089ba1fd44e3dbd98a0000000006a7d517193584d0feed9bb3431d13206be544281b57b8566cc5375ff40000002d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2dd4eb2f852b6be253a3e9585f8f1c7ad35affb8b3304785b620546d6fbe39864203000000000000000000000000000000000000000002020001720300000046a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a51600000000000000000000000000000000006d534e645a39676e65486a477352506e6f516e66535900e1f50500000000c80000000000000006a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000004020107740000000046a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a546a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060103060805000402000000\"");
case 5:
case "end":
return _context.stop();
}
}, _callee);
})));
it('getDelegateAndCreateAccountArguments with compute budget', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
var tx, compiledDelegateAndCreateAccountWithSeedTx, rawTx, args;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
tx = {
votePubkey: '9QU2QSxhb24FUX3Tu2FpczXjpK3VYrvRudywSZaM29mF',
newAccountPubkey: '9UdXnMquoTy8RJpQmidCDHJydZo5Q2ZFY2ntNbgqi1HA',
seed: 'mSNdZ9gneHjGsRPnoQnfSY',
recentBlockhash: recentBlockhash,
lamports: '100000000',
computeUnitPrice: computeUnitPrice,
computeUnitLimit: computeUnitLimit
};
compiledDelegateAndCreateAccountWithSeedTx = (0, _rawTransaction.compileDelegateAndCreateAccountWithSeed)(_objectSpread(_objectSpread({}, tx), {}, {
fromPubkey: signer,
basePubkey: signer
}));
rawTx = new _Transaction.Transaction(compiledDelegateAndCreateAccountWithSeedTx);
args = (0, _scriptUtil.getDelegateAndCreateAccountArguments)(rawTx, 0);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f580000000800000000100080a46a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a57df17b90d080e3a08cad64b0a1eecbdea26322603bd4cda54cf9f25525b2647100000000000000000000000000000000000000000000000000000000000000007ce0690f82fb61475febbd1605ef20c346a9167706d829ce4699435c4c2780ae0306466fe5211732ffecadba72c39be7bc8ce5bbc5f7126b2c439b3a4000000006a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000006a1d817a502050b680791e6ce6db88e1e5b7150f61fc6790a4eb4d10000000006a7d51718c774c928566398691d5eb68b5eb8a39b4b6d5c73555b210000000006a7d517192c5c51218cc94c3d4af17f58daee089ba1fd44e3dbd98a0000000006a7d517193584d0feed9bb3431d13206be544281b57b8566cc5375ff4000000d4eb2f852b6be253a3e9585f8f1c7ad35affb8b3304785b620546d6fbe3986420504000903c0d401000000000004000502400d030002020001720300000046a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a51600000000000000000000000000000000006d534e645a39676e65486a477352506e6f516e66535900e1f50500000000c80000000000000006a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000005020108740000000046a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a546a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005060103070906000402000000\"");
case 5:
case "end":
return _context2.stop();
}
}, _callee2);
})));
it('getUndelegateArguments', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3() {
var tx, compiledUndelegateTx, rawTx, args;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
tx = {
authorizedPubkey: signer,
stakePubkey: '9UdXnMquoTy8RJpQmidCDHJydZo5Q2ZFY2ntNbgqi1HA',
recentBlockhash: recentBlockhash
};
compiledUndelegateTx = (0, _rawTransaction.compileUndelegate)(_objectSpread(_objectSpread({}, tx), {}, {
feePayer: signer
}));
rawTx = new _Transaction.Transaction(compiledUndelegateTx);
args = (0, _scriptUtil.getUndelegateArguments)(rawTx, 0);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f580000000800000000100020446a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a57df17b90d080e3a08cad64b0a1eecbdea26322603bd4cda54cf9f25525b2647106a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000006a7d51718c774c928566398691d5eb68b5eb8a39b4b6d5c73555b21000000002d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2dd4eb2f852b6be253a3e9585f8f1c7ad35affb8b3304785b620546d6fbe39864201000000000000000000000000000000000000000002030103000405000000\"");
case 5:
case "end":
return _context3.stop();
}
}, _callee3);
})));
it('getUndelegateArguments with compute budget', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
var tx, compiledUndelegateTx, rawTx, args;
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
tx = {
authorizedPubkey: signer,
stakePubkey: '9UdXnMquoTy8RJpQmidCDHJydZo5Q2ZFY2ntNbgqi1HA',
recentBlockhash: recentBlockhash,
computeUnitPrice: computeUnitPrice,
computeUnitLimit: computeUnitLimit
};
compiledUndelegateTx = (0, _rawTransaction.compileUndelegate)(_objectSpread(_objectSpread({}, tx), {}, {
feePayer: signer
}));
rawTx = new _Transaction.Transaction(compiledUndelegateTx);
args = (0, _scriptUtil.getUndelegateArguments)(rawTx, 0);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f580000000800000000100030546a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a57df17b90d080e3a08cad64b0a1eecbdea26322603bd4cda54cf9f25525b264710306466fe5211732ffecadba72c39be7bc8ce5bbc5f7126b2c439b3a4000000006a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000006a7d51718c774c928566398691d5eb68b5eb8a39b4b6d5c73555b2100000000d4eb2f852b6be253a3e9585f8f1c7ad35affb8b3304785b620546d6fbe3986420302000903c0d401000000000002000502400d030003030104000405000000\"");
case 5:
case "end":
return _context4.stop();
}
}, _callee4);
})));
it('getWithdrawArguments', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
var tx, compiledStakingWithdraw, rawTx, args;
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) switch (_context5.prev = _context5.next) {
case 0:
tx = {
withdrawToPubKey: signer,
stakePubkey: '9UdXnMquoTy8RJpQmidCDHJydZo5Q2ZFY2ntNbgqi1HA',
lamports: '100000000',
recentBlockhash: recentBlockhash
};
compiledStakingWithdraw = (0, _rawTransaction.compileStakingWithdraw)(_objectSpread(_objectSpread({}, tx), {}, {
authorizedPubkey: signer
}));
rawTx = new _Transaction.Transaction(compiledStakingWithdraw);
args = (0, _scriptUtil.getWithdrawArguments)(rawTx, 0);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f580000000800000000100030546a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a57df17b90d080e3a08cad64b0a1eecbdea26322603bd4cda54cf9f25525b2647106a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000006a7d51718c774c928566398691d5eb68b5eb8a39b4b6d5c73555b210000000006a7d517193584d0feed9bb3431d13206be544281b57b8566cc5375ff40000002d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2dd4eb2f852b6be253a3e9585f8f1c7ad35affb8b3304785b620546d6fbe398642010000000000000000000000000000000000000000020501000304000c0400000000e1f50500000000\"");
case 5:
case "end":
return _context5.stop();
}
}, _callee5);
})));
it('getWithdrawArguments with compute budget', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
var tx, compiledStakingWithdraw, rawTx, args;
return _regenerator["default"].wrap(function _callee6$(_context6) {
while (1) switch (_context6.prev = _context6.next) {
case 0:
tx = {
withdrawToPubKey: signer,
stakePubkey: '9UdXnMquoTy8RJpQmidCDHJydZo5Q2ZFY2ntNbgqi1HA',
lamports: '100000000',
recentBlockhash: recentBlockhash,
computeUnitPrice: computeUnitPrice,
computeUnitLimit: computeUnitLimit
};
compiledStakingWithdraw = (0, _rawTransaction.compileStakingWithdraw)(_objectSpread(_objectSpread({}, tx), {}, {
authorizedPubkey: signer
}));
rawTx = new _Transaction.Transaction(compiledStakingWithdraw);
args = (0, _scriptUtil.getWithdrawArguments)(rawTx, 0);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f580000000800000000100040646a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a57df17b90d080e3a08cad64b0a1eecbdea26322603bd4cda54cf9f25525b264710306466fe5211732ffecadba72c39be7bc8ce5bbc5f7126b2c439b3a4000000006a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000006a7d51718c774c928566398691d5eb68b5eb8a39b4b6d5c73555b210000000006a7d517193584d0feed9bb3431d13206be544281b57b8566cc5375ff40000002d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2dd4eb2f852b6be253a3e9585f8f1c7ad35affb8b3304785b620546d6fbe3986420302000903c0d401000000000002000502400d0300030501000405000c0400000000e1f50500000000\"");
case 5:
case "end":
return _context6.stop();
}
}, _callee6);
})));
/** https://coolbitx.slack.com/archives/CREBU3Y9J/p1720681306123589
* 使用者遇到符合 base58 標準的 hex 會不小心再 decode 一次,導致 encode 失敗
* **/
it('getDelegateAndCreateAccountArguments with base58 hex', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
var tx, compiledDelegateAndCreateAccountWithSeedTx, rawTx, args;
return _regenerator["default"].wrap(function _callee7$(_context7) {
while (1) switch (_context7.prev = _context7.next) {
case 0:
tx = {
newAccountPubkey: '2BYJssEMc2spFHTy7qbET3zQkEPe27tVmfadfQWEPyNJ',
votePubkey: '9QU2QSxhb24FUX3Tu2FpczXjpK3VYrvRudywSZaM29mF',
seed: '577FUdWdT2q8twccYV9WU5',
lamports: '1019700000',
recentBlockhash: 'EihREW9p63PZmRYWNMv7MmHFc9tQdHzVA8ZowkAcyfhz',
computeUnitPrice: '80000',
computeUnitLimit: '200000'
};
compiledDelegateAndCreateAccountWithSeedTx = (0, _rawTransaction.compileDelegateAndCreateAccountWithSeed)(_objectSpread(_objectSpread({}, tx), {}, {
fromPubkey: signer,
basePubkey: signer
}));
rawTx = new _Transaction.Transaction(compiledDelegateAndCreateAccountWithSeedTx);
args = (0, _scriptUtil.getDelegateAndCreateAccountArguments)(rawTx, 0);
expect(args).toMatchInlineSnapshot("\"11108000002c800001f580000000800000000100080a46a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a5118ee534efe8bda871b7a17a3f3c5298171511299bdd29418bcfd9fca43635d300000000000000000000000000000000000000000000000000000000000000007ce0690f82fb61475febbd1605ef20c346a9167706d829ce4699435c4c2780ae0306466fe5211732ffecadba72c39be7bc8ce5bbc5f7126b2c439b3a4000000006a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000006a1d817a502050b680791e6ce6db88e1e5b7150f61fc6790a4eb4d10000000006a7d51718c774c928566398691d5eb68b5eb8a39b4b6d5c73555b210000000006a7d517192c5c51218cc94c3d4af17f58daee089ba1fd44e3dbd98a0000000006a7d517193584d0feed9bb3431d13206be544281b57b8566cc5375ff4000000cbd6719b37beff025927cc01a6c4fa477d342b4947aeb9b5752c7d3b5bd916f10504000903803801000000000004000502400d030002020001720300000046a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a5160000000000000000000000000000000000353737465564576454327138747763635956395755352063c73c00000000c80000000000000006a1d8179137542a983437bdfe2a7ab2557f535c8a78722b68a49dc00000000005020108740000000046a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a546a448fb09aea355ea540c1e2e86127d4795a86a533a977e20f5476f5bd100a500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005060103070906000402000000\"");
case 5:
case "end":
return _context7.stop();
}
}, _callee7);
})));
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGFyYW1zIiwicmVxdWlyZSIsIl9UcmFuc2FjdGlvbiIsIl9yYXdUcmFuc2FjdGlvbiIsIl9zY3JpcHRVdGlsIiwiX3ZlcnNpb25lZFRyYW5zYWN0aW9uIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJqZXN0IiwibW9jayIsInV0aWxzIiwiZ2V0RnVsbFBhdGgiLCJmbiIsIm1vY2tSZXR1cm5WYWx1ZSIsImRlc2NyaWJlIiwicmVjZW50QmxvY2toYXNoIiwic2lnbmVyIiwiY29tcHV0ZVVuaXRQcmljZSIsImNvbXB1dGVVbml0TGltaXQiLCJ0b2tlblByb2dyYW1JZCIsIlRPS0VOX1BST0dSQU1fSUQiLCJ0b2tlbkluZm8iLCJzeW1ib2wiLCJkZWNpbWFscyIsImFkZHJlc3MiLCJpdCIsInR4IiwiZnJvbVB1YmtleSIsInRvUHVia2V5IiwibGFtcG9ydHMiLCJjb21waWxlZFR4IiwiY29tcGlsZVRyYW5zZmVyVHJhbnNhY3Rpb24iLCJyYXdUeCIsIlRyYW5zYWN0aW9uIiwiYXJncyIsImdldFRyYW5zZmVyQXJndW1lbnRzIiwiZXhwZWN0IiwidG9NYXRjaElubGluZVNuYXBzaG90IiwiZnJvbVRva2VuQWNjb3VudCIsInRvVG9rZW5BY2NvdW50IiwicHJvZ3JhbUlkIiwiYW1vdW50IiwiY29tcGlsZVNwbFRva2VuVHJhbnNhY3Rpb24iLCJnZXRTcGxUb2tlblRyYW5zZmVyQXJndW1lbnRzIiwiX2NvbXBpbGVkQXNzb2NpYXRlQWNjIiwiY29tcGlsZWRBc3NvY2lhdGVBY2NvdW50VHgiLCJjb21waWxlQXNzb2NpYXRlVG9rZW5BY2NvdW50Iiwib3duZXIiLCJhc3NvY2lhdGVBY2NvdW50IiwidG9rZW4iLCJ0cmFuc2ZlclNwbFRva2VuVHgiLCJpbnN0cnVjdGlvbnMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZ2V0Q3JlYXRlQW5kVHJhbnNmZXJTUExUb2tlbiIsIm1lc3NhZ2UiLCJkb21haW4iLCJzdGF0ZW1lbnQiLCJnZXRTaWduSW5Bcmd1bWVudHMiLCJCdWZmZXIiLCJmcm9tIiwidG9TdHJpbmciLCJnZXRTaWduTWVzc2FnZUFyZ3VtZW50cyIsInR4QXJyYXkiLCJ2ZXJzaW9uZWRUcmFuc2FjdGlvbiIsIlZlcnNpb25lZFRyYW5zYWN0aW9uIiwiZGVzZXJpYWxpemUiLCJVaW50OEFycmF5IiwiZ2V0U2lnblZlcnNpb25lZEFyZ3VtZW50cyIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiY29tcGlsZWREZWxlZ2F0ZUFuZENyZWF0ZUFjY291bnRXaXRoU2VlZFR4Iiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInZvdGVQdWJrZXkiLCJuZXdBY2NvdW50UHVia2V5Iiwic2VlZCIsImNvbXBpbGVEZWxlZ2F0ZUFuZENyZWF0ZUFjY291bnRXaXRoU2VlZCIsImJhc2VQdWJrZXkiLCJnZXREZWxlZ2F0ZUFuZENyZWF0ZUFjY291bnRBcmd1bWVudHMiLCJzdG9wIiwiX2NhbGxlZTIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJfY2FsbGVlMyIsImNvbXBpbGVkVW5kZWxlZ2F0ZVR4IiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiYXV0aG9yaXplZFB1YmtleSIsInN0YWtlUHVia2V5IiwiY29tcGlsZVVuZGVsZWdhdGUiLCJmZWVQYXllciIsImdldFVuZGVsZWdhdGVBcmd1bWVudHMiLCJfY2FsbGVlNCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsIl9jYWxsZWU1IiwiY29tcGlsZWRTdGFraW5nV2l0aGRyYXciLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJ3aXRoZHJhd1RvUHViS2V5IiwiY29tcGlsZVN0YWtpbmdXaXRoZHJhdyIsImdldFdpdGhkcmF3QXJndW1lbnRzIiwiX2NhbGxlZTYiLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJfY2FsbGVlNyIsIl9jYWxsZWU3JCIsIl9jb250ZXh0NyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9fX3Rlc3RzX18vc2NyaXB0VXRpbC50ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRPS0VOX1BST0dSQU1fSUQgfSBmcm9tICcuLi8uLi9jb25maWcvcGFyYW1zJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgY29tcGlsZUFzc29jaWF0ZVRva2VuQWNjb3VudCxcbiAgY29tcGlsZURlbGVnYXRlQW5kQ3JlYXRlQWNjb3VudFdpdGhTZWVkLFxuICBjb21waWxlU3BsVG9rZW5UcmFuc2FjdGlvbixcbiAgY29tcGlsZVN0YWtpbmdXaXRoZHJhdyxcbiAgY29tcGlsZVRyYW5zZmVyVHJhbnNhY3Rpb24sXG4gIGNvbXBpbGVVbmRlbGVnYXRlLFxufSBmcm9tICcuLi9yYXdUcmFuc2FjdGlvbic7XG5pbXBvcnQge1xuICBnZXRDcmVhdGVBbmRUcmFuc2ZlclNQTFRva2VuLFxuICBnZXREZWxlZ2F0ZUFuZENyZWF0ZUFjY291bnRBcmd1bWVudHMsXG4gIGdldFNpZ25JbkFyZ3VtZW50cyxcbiAgZ2V0U2lnbk1lc3NhZ2VBcmd1bWVudHMsXG4gIGdldFNpZ25WZXJzaW9uZWRBcmd1bWVudHMsXG4gIGdldFNwbFRva2VuVHJhbnNmZXJBcmd1bWVudHMsXG4gIGdldFRyYW5zZmVyQXJndW1lbnRzLFxuICBnZXRVbmRlbGVnYXRlQXJndW1lbnRzLFxuICBnZXRXaXRoZHJhd0FyZ3VtZW50cyxcbn0gZnJvbSAnLi4vc2NyaXB0VXRpbCc7XG5pbXBvcnQgeyBWZXJzaW9uZWRUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3ZlcnNpb25lZFRyYW5zYWN0aW9uJztcblxuamVzdC5tb2NrKCdAY29vbHdhbGxldC9jb3JlJywgKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIHV0aWxzOiB7XG4gICAgICBnZXRGdWxsUGF0aDogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSgnMTA4MDAwMDAyYzgwMDAwMWY1ODAwMDAwMDA4MDAwMDAwMCcpLFxuICAgIH0sXG4gIH07XG59KTtcblxuZGVzY3JpYmUoJ1Rlc3Qgc2NyaXB0VXRpbC5nZXRYWFhBcmd1bWVudHMgZnVuY3Rpb24nLCAoKSA9PiB7XG4gIC8vIGNvbW1vbiBwYXJhbWV0ZXJzXG4gIGNvbnN0IHJlY2VudEJsb2NraGFzaCA9ICdGTDlTMXF0WTlOa0JYbW1jc2lpd1JnUFZEb1VWNEhSaGV6SmpadmhzYk15Syc7XG4gIGNvbnN0IHNpZ25lciA9ICc1a2txTFpic0hNTGJwTU1TcnpzSGQ0c3NIdGJ4R3lyN3lQSGZvdzhQZEpucCc7XG4gIGNvbnN0IGNvbXB1dGVVbml0UHJpY2UgPSAnMTIwMDAwJztcbiAgY29uc3QgY29tcHV0ZVVuaXRMaW1pdCA9ICcyMDAwMDAnO1xuICBjb25zdCB0b2tlblByb2dyYW1JZCA9IFRPS0VOX1BST0dSQU1fSUQ7XG4gIGNvbnN0IHRva2VuSW5mbyA9IHtcbiAgICBzeW1ib2w6ICdVU0RUJyxcbiAgICBkZWNpbWFsczogNixcbiAgICBhZGRyZXNzOiAnRXM5dk1GcnphQ0VSbUpmckY0SDJGWUQ0S0NvTmtZMTFNY0NlOEJlbndOWUInLFxuICB9O1xuXG4gIGl0KCdnZXRUcmFuc2ZlckFyZ3VtZW50cycsICgpID0+IHtcbiAgICBjb25zdCB0eCA9IHtcbiAgICAgIGZyb21QdWJrZXk6IHNpZ25lcixcbiAgICAgIHRvUHVia2V5OiAnQjN1QTRuazhZNHpncXk5NldrMXZvZnoxQ0RScnY4eUFxdG5IRUNGQUtvbWYnLFxuICAgICAgcmVjZW50QmxvY2toYXNoLFxuICAgICAgbGFtcG9ydHM6IDEwMDAwMCxcbiAgICAgIGNvbXB1dGVVbml0UHJpY2UsXG4gICAgICBjb21wdXRlVW5pdExpbWl0LFxuICAgIH07XG4gICAgY29uc3QgY29tcGlsZWRUeCA9IGNvbXBpbGVUcmFuc2ZlclRyYW5zYWN0aW9uKHR4KTtcbiAgICBjb25zdCByYXdUeCA9IG5ldyBUcmFuc2FjdGlvbihjb21waWxlZFR4KTtcbiAgICBjb25zdCBhcmdzID0gZ2V0VHJhbnNmZXJBcmd1bWVudHMocmF3VHgsIDApO1xuICAgIGV4cGVjdChhcmdzKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICBgXCIxMTEwODAwMDAwMmM4MDAwMDFmNTgwMDAwMDAwODAwMDAwMDAwMTAwMDIwNDQ2YTQ0OGZiMDlhZWEzNTVlYTU0MGMxZTJlODYxMjdkNDc5NWE4NmE1MzNhOTc3ZTIwZjU0NzZmNWJkMTAwYTU5NTUzMDExMzA2ZGIxYTEwMzE3MTNmNzYzYWJmNjFmM2RkZDE0NmZjMTBkYTAyZDQ0Y2FjMDljMTVjNTdjY2Y2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDY0NjZmZTUyMTE3MzJmZmVjYWRiYTcyYzM5YmU3YmM4Y2U1YmJjNWY3MTI2YjJjNDM5YjNhNDAwMDAwMDAyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZGQ0ZWIyZjg1MmI2YmUyNTNhM2U5NTg1ZjhmMWM3YWQzNWFmZmI4YjMzMDQ3ODViNjIwNTQ2ZDZmYmUzOTg2NDIwMzAwMDkwM2MwZDQwMTAwMDAwMDAwMDAwMzAwMDUwMjQwMGQwMzAwMDIwMjAwMDEwYzAyMDAwMDAwYTA4NjAxMDAwMDAwMDAwMFwiYFxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdnZXRTcGxUb2tlblRyYW5zZmVyQXJndW1lbnRzJywgKCkgPT4ge1xuICAgIGNvbnN0IHR4ID0ge1xuICAgICAgc2lnbmVyLFxuICAgICAgZnJvbVRva2VuQWNjb3VudDogJ0ZYTHhGVlBXQjhGdVJabmI2MjFZYld3MnRtWTdmbUVBSkFDNmRNa1pXV3p4JyxcbiAgICAgIHRvVG9rZW5BY2NvdW50OiAnQVNNblJXQVpwQXJ6RERXeXFVRHpkOFRGOUFkaWt3ZkQ5Z25ZTkF1NlA3b1AnLFxuICAgICAgcmVjZW50QmxvY2toYXNoLFxuICAgICAgcHJvZ3JhbUlkOiB0b2tlblByb2dyYW1JZCxcbiAgICAgIHRva2VuSW5mbyxcbiAgICAgIGFtb3VudDogMTAwLFxuICAgICAgY29tcHV0ZVVuaXRQcmljZSxcbiAgICAgIGNvbXB1dGVVbml0TGltaXQsXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbXBpbGVkVHggPSBjb21waWxlU3BsVG9rZW5UcmFuc2FjdGlvbih0eCk7XG4gICAgY29uc3QgcmF3VHggPSBuZXcgVHJhbnNhY3Rpb24oY29tcGlsZWRUeCk7XG4gICAgY29uc3QgYXJncyA9IGdldFNwbFRva2VuVHJhbnNmZXJBcmd1bWVudHMocmF3VHgsIDAsIHRva2VuSW5mbyk7XG4gICAgZXhwZWN0KGFyZ3MpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgIGBcIjExMTA4MDAwMDAyYzgwMDAwMWY1ODAwMDAwMDA4MDAwMDAwMDAxMDAwMzA2NDZhNDQ4ZmIwOWFlYTM1NWVhNTQwYzFlMmU4NjEyN2Q0Nzk1YTg2YTUzM2E5NzdlMjBmNTQ3NmY1YmQxMDBhNThjMzgzM2JmOTRjNmUzZTM4NjMzN2U4ZWZhMzE4YjI5MWQ0OTQzOTA2MThmOGRiZTA1NmE2Y2IyNDIyYzIwNWFkN2M5OWEwOGVlN2YyOWRjOTI0MGFmNjk3NGZhNDhiMjY2ZTQ3Yzk1MGFkMTM2MzFiZTBhYTVhMzE3YmRmYTlkMDMwNjQ2NmZlNTIxMTczMmZmZWNhZGJhNzJjMzliZTdiYzhjZTViYmM1ZjcxMjZiMmM0MzliM2E0MDAwMDAwMGNlMDEwZTYwYWZlZGIyMjcxN2JkNjMxOTJmNTQxNDVhM2Y5NjVhMzNiYjgyZDJjNzAyOWViMmNlMWUyMDgyNjQwNmRkZjZlMWQ3NjVhMTkzZDljYmUxNDZjZWViNzlhYzFjYjQ4NWVkNWY1YjM3OTEzYThjZjU4NTdlZmYwMGE5ZDRlYjJmODUyYjZiZTI1M2EzZTk1ODVmOGYxYzdhZDM1YWZmYjhiMzMwNDc4NWI2MjA1NDZkNmZiZTM5ODY0MjAzMDAwOTAzYzBkNDAxMDAwMDAwMDAwMDAzMDAwNTAyNDAwZDAzMDAwNTA0MDIwNDAxMDAwYTBjNjQwMDAwMDAwMDAwMDAwMDA2MDYwNDU1NTM0NDU0MDAwMDAwY2UwMTBlNjBhZmVkYjIyNzE3YmQ2MzE5MmY1NDE0NWEzZjk2NWEzM2JiODJkMmM3MDI5ZWIyY2UxZTIwODI2NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiYFxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdnZXRDcmVhdGVBbmRUcmFuc2ZlclNwbFRva2VuQXJndW1lbnRzJywgKCkgPT4ge1xuICAgIGNvbnN0IHR4ID0ge1xuICAgICAgc2lnbmVyLFxuICAgICAgdG9QdWJrZXk6ICdCM3VBNG5rOFk0emdxeTk2V2sxdm9mejFDRFJydjh5QXF0bkhFQ0ZBS29tZicsXG4gICAgICBmcm9tVG9rZW5BY2NvdW50OiAnRlhMeEZWUFdCOEZ1UlpuYjYyMVliV3cydG1ZN2ZtRUFKQUM2ZE1rWldXengnLFxuICAgICAgdG9Ub2tlbkFjY291bnQ6ICdBU01uUldBWnBBcnpERFd5cVVEemQ4VEY5QWRpa3dmRDlnbllOQXU2UDdvUCcsXG4gICAgICByZWNlbnRCbG9ja2hhc2gsXG4gICAgICBwcm9ncmFtSWQ6IHRva2VuUHJvZ3JhbUlkLFxuICAgICAgdG9rZW5JbmZvLFxuICAgICAgYW1vdW50OiAxMDAsXG4gICAgICBjb21wdXRlVW5pdFByaWNlLFxuICAgICAgY29tcHV0ZVVuaXRMaW1pdCxcbiAgICB9O1xuXG4gICAgY29uc3QgY29tcGlsZWRBc3NvY2lhdGVBY2NvdW50VHggPSBjb21waWxlQXNzb2NpYXRlVG9rZW5BY2NvdW50KHtcbiAgICAgIC4uLnR4LFxuICAgICAgc2lnbmVyLFxuICAgICAgb3duZXI6IHNpZ25lcixcbiAgICAgIGFzc29jaWF0ZUFjY291bnQ6IHR4LnRvVG9rZW5BY2NvdW50LFxuICAgICAgdG9rZW46IHRva2VuSW5mby5hZGRyZXNzLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdHJhbnNmZXJTcGxUb2tlblR4ID0gY29tcGlsZVNwbFRva2VuVHJhbnNhY3Rpb24oeyAuLi50eCwgc2lnbmVyIH0pO1xuICAgIGNvbXBpbGVkQXNzb2NpYXRlQWNjb3VudFR4Lmluc3RydWN0aW9ucy5wdXNoKC4uLnRyYW5zZmVyU3BsVG9rZW5UeC5pbnN0cnVjdGlvbnMpO1xuICAgIGNvbnN0IHJhd1R4ID0gbmV3IFRyYW5zYWN0aW9uKGNvbXBpbGVkQXNzb2NpYXRlQWNjb3VudFR4KTtcbiAgICBjb25zdCBhcmdzID0gZ2V0Q3JlYXRlQW5kVHJhbnNmZXJTUExUb2tlbihyYXdUeCwgMCwgdG9rZW5JbmZvKTtcbiAgICBleHBlY3QoYXJncykudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFwiMTExMDgwMDAwMDJjODAwMDAxZjU4MDAwMDAwMDgwMDAwMDAwMDEwMDA1MDg0NmE0NDhmYjA5YWVhMzU1ZWE1NDBjMWUyZTg2MTI3ZDQ3OTVhODZhNTMzYTk3N2UyMGY1NDc2ZjViZDEwMGE1OGMzODMzYmY5NGM2ZTNlMzg2MzM3ZThlZmEzMThiMjkxZDQ5NDM5MDYxOGY4ZGJlMDU2YTZjYjI0MjJjMjA1YWQ3Yzk5YTA4ZWU3ZjI5ZGM5MjQwYWY2OTc0ZmE0OGIyNjZlNDdjOTUwYWQxMzYzMWJlMGFhNWEzMTdiZGZhOWQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOGM5NzI1OGY0ZTI0ODlmMWJiM2QxMDI5MTQ4ZTBkODMwYjVhMTM5OWRhZmYxMDg0MDQ4ZTdiZDhkYmU5Zjg1OTAzMDY0NjZmZTUyMTE3MzJmZmVjYWRiYTcyYzM5YmU3YmM4Y2U1YmJjNWY3MTI2YjJjNDM5YjNhNDAwMDAwMDBjZTAxMGU2MGFmZWRiMjI3MTdiZDYzMTkyZjU0MTQ1YTNmOTY1YTMzYmI4MmQyYzcwMjllYjJjZTFlMjA4MjY0MDZkZGY2ZTFkNzY1YTE5M2Q5Y2JlMTQ2Y2VlYjc5YWMxY2I0ODVlZDVmNWIzNzkxM2E4Y2Y1ODU3ZWZmMDBhOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBkNGViMmY4NTJiNmJlMjUzYTNlOTU4NWY4ZjFjN2FkMzVhZmZiOGIzMzA0Nzg1YjYyMDU0NmQ2ZmJlMzk4NjQyMDQwNjAwMDEwMDA2MDMwNzAwMDUwMDA5MDNjMGQ0MDEwMDAwMDAwMDAwMDUwMDA1MDI0MDBkMDMwMDA3MDQwMjA2MDEwMDBhMGM2NDAwMDAwMDAwMDAwMDAwMDYwNjA0NTU1MzQ0NTQwMDAwMDBjZTAxMGU2MGFmZWRiMjI3MTdiZDYzMTkyZjU0MTQ1YTNmOTY1YTMzYmI4MmQyYzcwMjllYjJjZTFlMjA4MjY0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCJgXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ2dldFNpZ25JbkFyZ3VtZW50cycsICgpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlID0ge1xuICAgICAgZG9tYWluOiAnc29sYW5hLWxhYnMuZ2l0aHViLmlvJyxcbiAgICAgIHN0YXRlbWVudDogJ1BsZWFzZSBzaWduIGluLicsXG4gICAgICBhZGRyZXNzOiBzaWduZXIsXG4gICAgfTtcbiAgICBjb25zdCBhcmdzID0gZ2V0U2lnbkluQXJndW1lbnRzKG1lc3NhZ2UsIDApO1xuICAgIGV4cGVjdChhcmdzKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICBgXCIxMTEwODAwMDAwMmM4MDAwMDFmNTgwMDAwMDAwODAwMDAwMDAxNTczNmY2YzYxNmU2MTJkNmM2MTYyNzMyZTY3Njk3NDY4NzU2MjJlNjk2ZjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMGEwYTUwNmM2NTYxNzM2NTIwNzM2OTY3NmUyMDY5NmUyZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDgwMDAwMDJjODAwMDAxZjU4MDAwMDAwMDgwMDAwMDAwXCJgXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ2dldFNpZ25NZXNzYWdlQXJndW1lbnRzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBCdWZmZXIuZnJvbShbXG4gICAgICAxMTUsIDExMSwgMTA4LCA5NywgMTEwLCA5NywgNDUsIDEwOCwgOTcsIDk4LCAxMTUsIDQ2LCAxMDMsIDEwNSwgMTE2LCAxMDQsIDExNywgOTgsIDQ2LCAxMDUsIDExMSwgMzIsIDExOSwgOTcsIDExMCxcbiAgICAgIDExNiwgMTE1LCAzMiwgMTIxLCAxMTEsIDExNywgMzIsIDExNiwgMTExLCAzMiwgMTE1LCAxMDUsIDEwMywgMTEwLCAzMiwgMTA1LCAxMTAsIDMyLCAxMTksIDEwNSwgMTE2LCAxMDQsIDMyLCAxMjEsXG4gICAgICAxMTEsIDExNywgMTE0LCAzMiwgODMsIDExMSwgMTA4LCA5NywgMTEwLCA5NywgMzIsIDk3LCA5OSwgOTksIDExMSwgMTE3LCAxMTAsIDExNiwgNTgsIDEwLCA1MywgMTIwLCAxMTIsIDg2LCA3MCxcbiAgICAgIDEyMSwgNTcsIDgwLCA3MCwgMTAxLCA4OCwgMTEzLCA1NiwgMTA2LCAxMDEsIDExMiwgODQsIDgxLCA4MywgNTAsIDExMiwgNDksIDExNCwgODIsIDc4LCA5OCwgNzcsIDExOCwgNTAsIDc4LCA1MyxcbiAgICAgIDUwLCA4MiwgNzQsIDUyLCA4MiwgNjUsIDg4LCA4NiwgMTA2LCAxMDAsIDExMCwgNzIsIDc3LCAxMCwgMTAsIDgwLCAxMDgsIDEwMSwgOTcsIDExNSwgMTAxLCAzMiwgMTE1LCAxMDUsIDEwMywgMTEwLFxuICAgICAgMzIsIDEwNSwgMTEwLCA0NixcbiAgICBdKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3QgYXJncyA9IGdldFNpZ25NZXNzYWdlQXJndW1lbnRzKG1lc3NhZ2UsIDApO1xuICAgIGV4cGVjdChhcmdzKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICBgXCIxMTEwODAwMDAwMmM4MDAwMDFmNTgwMDAwMDAwODAwMDAwMDA3MzZmNmM2MTZlNjEyZDZjNjE2MjczMmU2NzY5NzQ2ODc1NjIyZTY5NmYyMDc3NjE2ZTc0NzMyMDc5NmY3NTIwNzQ2ZjIwNzM2OTY3NmUyMDY5NmUyMDc3Njk3NDY4MjA3OTZmNzU3MjIwNTM2ZjZjNjE2ZTYxMjA2MTYzNjM2Zjc1NmU3NDNhMGEzNTc4NzA1NjQ2NzkzOTUwNDY2NTU4NzEzODZhNjU3MDU0NTE1MzMyNzAzMTcyNTI0ZTYyNGQ3NjMyNGUzNTMyNTI0YTM0NTI0MTU4NTY2YTY0NmU0ODRkMGEwYTUwNmM2NTYxNzM2NTIwNzM2OTY3NmUyMDY5NmUyZVwiYFxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdnZXRTaWduVmVyc2lvbmVkQXJndW1lbnRzJywgKCkgPT4ge1xuICAgIGNvbnN0IHR4QXJyYXkgPSBbXG4gICAgICAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLFxuICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMiwgNzMsIDE4NywgOTgsIDIxOSxcbiAgICAgIDEyOSwgMTYxLCAxODcsIDkxLCAyMTgsIDksIDI2LCAxODAsIDE2LCAxNzYsIDIwOSwgMjI5LCAxNjEsIDIwOSwgMjI0LCAxODMsIDg3LCAxNDcsIDgzLCA3LCAxNjIsIDI0OCwgMTE2LCAxMzgsIDE1LFxuICAgICAgMTEyLCAxODIsIDIwMCwgNSwgNzQsIDgzLCA5MCwgMTUzLCA0MSwgMzMsIDYsIDc3LCAzNiwgMjMyLCAxMTMsIDk2LCAyMTgsIDU2LCAxMjQsIDEyNCwgNTMsIDE4MSwgMjIxLCAxODgsIDE0NixcbiAgICAgIDE4NywgMTI5LCAyMjgsIDMxLCAxNjgsIDY0LCA2NSwgNSwgNjgsIDE0MSwgMTUyLCAzOSwgMjIwLCA4MSwgNzYsIDIwOSwgOTksIDEsIDMyLCAyMDUsIDUzLCAxMjIsIDk4LCAyOSwgMjUxLCAyMzcsXG4gICAgICAxNDYsIDI1MiwgMTgyLCA5NCwgMTgwLCA3LCAxNzYsIDE1MiwgNDgsIDExMiwgMjQ2LCA5MywgMTk1LCAyNDUsIDEwMywgNzksIDEsIDEsIDAsIDUwLCA3MiwgMTAxLCAxMDgsIDEwOCwgMTExLCA0NCxcbiAgICAgIDMyLCAxMDIsIDExNCwgMTExLCAxMDksIDMyLCAxMTYsIDEwNCwgMTAxLCAzMiwgODMsIDExMSwgMTA4LCA5NywgMTEwLCA5NywgMzIsIDg3LCA5NywgMTA4LCAxMDgsIDEwMSwgMTE2LCAzMiwgNjUsXG4gICAgICAxMDAsIDk3LCAxMTIsIDExNiwgMTAxLCAxMTQsIDMyLCAxMDEsIDEyMCwgOTcsIDEwOSwgMTEyLCAxMDgsIDEwMSwgMzIsIDk3LCAxMTIsIDExMiwgMzMsXG4gICAgXTtcbiAgICBjb25zdCB2ZXJzaW9uZWRUcmFuc2FjdGlvbiA9IFZlcnNpb25lZFRyYW5zYWN0aW9uLmRlc2VyaWFsaXplKFVpbnQ4QXJyYXkuZnJvbShCdWZmZXIuZnJvbSh0eEFycmF5KSkpO1xuICAgIGNvbnN0IGFyZ3MgPSBnZXRTaWduVmVyc2lvbmVkQXJndW1lbnRzKHZlcnNpb25lZFRyYW5zYWN0aW9uLm1lc3NhZ2UsIDApO1xuICAgIGV4cGVjdChhcmdzKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICBgXCIxMTEwODAwMDAwMmM4MDAwMDFmNTgwMDAwMDAwODAwMDAwMDAwMTAwMDEwMjQ5YmI2MmRiODFhMWJiNWJkYTA5MWFiNDEwYjBkMWU1YTFkMWUwYjc1NzkzNTMwN2EyZjg3NDhhMGY3MGI2YzgwNTRhNTM1YTk5MjkyMTA2NGQyNGU4NzE2MGRhMzg3YzdjMzViNWRkYmM5MmJiODFlNDFmYTg0MDQxMDU0NDhkOTgyN2RjNTE0Y2QxNjMwMTIwY2QzNTdhNjIxZGZiZWQ5MmZjYjY1ZWI0MDdiMDk4MzA3MGY2NWRjM2Y1Njc0ZjAxMDEwMDMyNDg2NTZjNmM2ZjJjMjA2NjcyNmY2ZDIwNzQ2ODY1MjA1MzZmNmM2MTZlNjEyMDU3NjE2YzZjNjU3NDIwNDE2NDYxNzA3NDY1NzIyMDY1Nzg2MTZkNzA2YzY1MjA2MTcwNzAyMVwiYFxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdnZXREZWxlZ2F0ZUFuZENyZWF0ZUFjY291bnRBcmd1bWVudHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdHggPSB7XG4gICAgICB2b3RlUHVia2V5OiAnOVFVMlFTeGhiMjRGVVgzVHUyRnBjelhqcEszVllydlJ1ZHl3U1phTTI5bUYnLFxuICAgICAgbmV3QWNjb3VudFB1YmtleTogJzlVZFhuTXF1b1R5OFJKcFFtaWRDREhKeWRabzVRMlpGWTJudE5iZ3FpMUhBJyxcbiAgICAgIHNlZWQ6ICdtU05kWjlnbmVIakdzUlBub1FuZlNZJyxcbiAgICAgIHJlY2VudEJsb2NraGFzaCxcbiAgICAgIGxhbXBvcnRzOiAnMTAwMDAwMDAwJyxcbiAgICB9O1xuICAgIGNvbnN0IGNvbXBpbGVkRGVsZWdhdGVBbmRDcmVhdGVBY2NvdW50V2l0aFNlZWRUeCA9IGNvbXBpbGVEZWxlZ2F0ZUFuZENyZWF0ZUFjY291bnRXaXRoU2VlZCh7XG4gICAgICAuLi50eCxcbiAgICAgIGZyb21QdWJrZXk6IHNpZ25lcixcbiAgICAgIGJhc2VQdWJrZXk6IHNpZ25lcixcbiAgICB9KTtcbiAgICBjb25zdCByYXdUeCA9IG5ldyBUcmFuc2FjdGlvbihjb21waWxlZERlbGVnYXRlQW5kQ3JlYXRlQWNjb3VudFdpdGhTZWVkVHgpO1xuICAgIGNvbnN0IGFyZ3MgPSBnZXREZWxlZ2F0ZUFuZENyZWF0ZUFjY291bnRBcmd1bWVudHMocmF3VHgsIDApO1xuICAgIGV4cGVjdChhcmdzKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICBgXCIxMTEwODAwMDAwMmM4MDAwMDFmNTgwMDAwMDAwODAwMDAwMDAwMTAwMDcwOTQ2YTQ0OGZiMDlhZWEzNTVlYTU0MGMxZTJlODYxMjdkNDc5NWE4NmE1MzNhOTc3ZTIwZjU0NzZmNWJkMTAwYTU3ZGYxN2I5MGQwODBlM2EwOGNhZDY0YjBhMWVlY2JkZWEyNjMyMjYwM2JkNGNkYTU0Y2Y5ZjI1NTI1YjI2NDcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDdjZTA2OTBmODJmYjYxNDc1ZmViYmQxNjA1ZWYyMGMzNDZhOTE2NzcwNmQ4MjljZTQ2OTk0MzVjNGMyNzgwYWUwNmExZDgxNzkxMzc1NDJhOTgzNDM3YmRmZTJhN2FiMjU1N2Y1MzVjOGE3ODcyMmI2OGE0OWRjMDAwMDAwMDAwMDZhMWQ4MTdhNTAyMDUwYjY4MDc5MWU2Y2U2ZGI4OGUxZTViNzE1MGY2MWZjNjc5MGE0ZWI0ZDEwMDAwMDAwMDA2YTdkNTE3MThjNzc0YzkyODU2NjM5ODY5MWQ1ZWI2OGI1ZWI4YTM5YjRiNmQ1YzczNTU1YjIxMDAwMDAwMDAwNmE3ZDUxNzE5MmM1YzUxMjE4Y2M5NGMzZDRhZjE3ZjU4ZGFlZTA4OWJhMWZkNDRlM2RiZDk4YTAwMDAwMDAwMDZhN2Q1MTcxOTM1ODRkMGZlZWQ5YmIzNDMxZDEzMjA2YmU1NDQyODFiNTdiODU2NmNjNTM3NWZmNDAwMDAwMDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmQyZDJkMmRkNGViMmY4NTJiNmJlMjUzYTNlOTU4NWY4ZjFjN2FkMzVhZmZiOGIzMzA0Nzg1YjYyMDU0NmQ2ZmJlMzk4NjQyMDMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMjAwMDE3MjAzMDAwMDAwNDZhNDQ4ZmIwOWFlYTM1NWVhNTQwYzFlMmU4NjEyN2Q0Nzk1YTg2YTUzM2E5NzdlMjBmNTQ3NmY1YmQxMDBhNTE2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZkNTM0ZTY0NWEzOTY3NmU2NTQ4NmE0NzczNTI1MDZlNmY1MTZlNjY1MzU5MDBlMWY1MDUwMDAwMDAwMGM4MDAwMDAwMDAwMDAwMDAwNmExZDgxNzkxMzc1NDJhOTgzNDM3YmRmZTJhN2FiMjU1N2Y1MzVjOGE3ODcyMmI2OGE0OWRjMDAwMDAwMDAwMDQwMjAxMDc3NDAwMDAwMDAwNDZhNDQ4ZmIwOWFlYTM1NWVhNTQwYzFlMmU4NjEyN2Q0Nzk1YTg2YTUzM2E5NzdlMjBmNTQ3NmY1YmQxMDBhNTQ2YTQ0OGZiMDlhZWEzNTVlYTU0MGMxZTJlODYxMjdkNDc5NWE4NmE1MzNhOTc3ZTIwZjU0NzZmNWJkMTAwYTUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDA2MDEwMzA2MDgwNTAwMDQwMjAwMDAwMFwiYFxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdnZXREZWxlZ2F0ZUFuZENyZWF0ZUFjY291bnRBcmd1bWVudHMgd2l0aCBjb21wdXRlIGJ1ZGdldCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0eCA9IHtcbiAgICAgIHZvdGVQdWJrZXk6ICc5UVUyUVN4aGIyNEZVWDNUdTJGcGN6WGpwSzNWWXJ2UnVkeXdTWmFNMjltRicsXG4gICAgICBuZXdBY2NvdW50UHVia2V5OiAnOVVkWG5NcXVvVHk4UkpwUW1pZENESEp5ZFpvNVEyWkZZMm50TmJncWkxSEEnLFxuICAgICAgc2VlZDogJ21TTmRaOWduZUhqR3NSUG5vUW5mU1knLFxuICAgICAgcmVjZW50QmxvY2toYXNoLFxuICAgICAgbGFtcG9ydHM6ICcxMDAwMDAwMDAnLFxuICAgICAgY29tcHV0ZVVuaXRQcmljZSxcbiAgICAgIGNvbXB1dGVVbml0TGltaXQsXG4gICAgfTtcbiAgICBjb25zdCBjb21waWxlZERlbGVnYXRlQW5kQ3JlYXRlQWNjb3VudFdpdGhTZWVkVHggPSBjb21waWxlRGVsZWdhdGVBbmRDcmVhdGVBY2NvdW50V2l0aFNlZWQoe1xuICAgICAgLi4udHgsXG4gICAgICBmcm9tUHVia2V5OiBzaWduZXIsXG4gICAgICBiYXNlUHVia2V5OiBzaWduZXIsXG4gICAgfSk7XG4gICAgY29uc3QgcmF3VHggPSBuZXcgVHJhbnNhY3Rpb24oY29tcGlsZWREZWxlZ2F0ZUFuZENyZWF0ZUFjY291bnRXaXRoU2VlZFR4KTtcbiAgICBjb25zdCBhcmdzID0gZ2V0RGVsZWdhdGVBbmRDcmVhdGVBY2NvdW50QXJndW1lbnRzKHJhd1R4LCAwKTtcbiAgICBleHBlY3QoYXJncykudG9NYXRjaElubGluZVNuYXBzaG90KFxuICAgICAgYFwiMTExMDgwMDAwMDJjODAwMDAxZjU4MDAwMDAwMDgwMDAwMDAwMDEwMDA4MGE0NmE0NDhmYjA5YWVhMzU1ZWE1NDBjMWUyZTg2MTI3ZDQ3OTVhODZhNTMzYTk3N2UyMGY1NDc2ZjViZDEwMGE1N2RmMTdiOTBkMDgwZTNhMDhjYWQ2NGIwYTFlZWNiZGVhMjYzMjI2MDNiZDRjZGE1NGNmOWYyNTUyNWIyNjQ3MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3Y2UwNjkwZjgyZmI2MTQ3NWZlYmJkMTYwNWVmMjBjMzQ2YTkxNjc3MDZkODI5Y2U0Njk5NDM1YzRjMjc4MGFlMDMwNjQ2NmZlNTIxMTczMmZmZWNhZGJhNzJjMzliZTdiYzhjZTViYmM1ZjcxMjZiMmM0MzliM2E0MDAwMDAwMDA2YTFkODE3OTEzNzU0MmE5ODM0MzdiZGZlMmE3YWIyNTU3ZjUzNWM4YTc4NzIyYjY4YTQ5ZGMwMDAwMDAwMDAwNmExZDgxN2E1MDIwNTBiNjgwNzkxZTZjZTZkYjg4ZTFlNWI3MTUwZjYxZmM2NzkwYTRlYjRkMTAwMDAwMDAwMDZhN2Q1MTcxOGM3NzRjOTI4NTY2Mzk4NjkxZDVlYjY4YjVlYjhhMzliNGI2ZDVjNzM1NTViMjEwMDAwMDAwMDA2YTdkNTE3MTkyYzVjNTEyMThjYzk0YzNkNGFmMTdmNThkYWVlMDg5YmExZmQ0NGUzZGJkOThhMDAwMDAwMDAwNmE3ZDUxNzE5MzU4NGQwZmVlZDliYjM0MzFkMTMyMDZiZTU0NDI4MWI1N2I4NTY2Y2M1Mzc1ZmY0MDAwMDAwZDRlYjJmODUyYjZiZTI1M2EzZTk1ODVmOGYxYzdhZDM1YWZmYjhiMzMwNDc4NWI2MjA1NDZkNmZiZTM5ODY0MjA1MDQwMDA5MDNjMGQ0MDEwMDAwMDAwMDAwMDQwMDA1MDI0MDBkMDMwMDAyMDIwMDAxNzIwMzAwMDAwMDQ2YTQ0OGZiMDlhZWEzNTVlYTU0MGMxZTJlODYxMjdkNDc5NWE4NmE1MzNhOTc3ZTIwZjU0NzZmNWJkMTAwYTUxNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2ZDUzNGU2NDVhMzk2NzZlNjU0ODZhNDc3MzUyNTA2ZTZmNTE2ZTY2NTM1OTAwZTFmNTA1MDAwMDAwMDBjODAwMDAwMDAwMDAwMDAwMDZhMWQ4MTc5MTM3NTQyYTk4MzQzN2JkZmUyYTdhYjI1NTdmNTM1YzhhNzg3MjJiNjhhNDlkYzAwMDAwMDAwMDA1MDIwMTA4NzQwMDAwMDAwMDQ2YTQ0OGZiMDlhZWEzNTVlYTU0MGMxZTJlODY