UNPKG

@coolwallet/sol

Version:
163 lines (162 loc) 24.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.compileAssociateTokenAccount = compileAssociateTokenAccount; exports.compileDelegateAndCreateAccountWithSeed = compileDelegateAndCreateAccountWithSeed; exports.compileSplTokenTransaction = compileSplTokenTransaction; exports.compileStakingWithdraw = compileStakingWithdraw; exports.compileTransferTransaction = compileTransferTransaction; exports.compileUndelegate = compileUndelegate; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var params = _interopRequireWildcard(require("../config/params")); var instructionsTemplate = _interopRequireWildcard(require("./instructions")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function compileTransferTransaction(transaction) { var fromPubkey = transaction.fromPubkey, toPubkey = transaction.toPubkey, recentBlockhash = transaction.recentBlockhash, lamports = transaction.lamports; var computeBudgetInstructions = instructionsTemplate.addComputeBudget({ computeUnitPrice: transaction.computeUnitPrice, computeUnitLimit: transaction.computeUnitLimit }); var coinInstruction = instructionsTemplate.transferCoin({ fromPubkey: fromPubkey, toPubkey: toPubkey, lamports: lamports }); return { instructions: [].concat((0, _toConsumableArray2["default"])(computeBudgetInstructions), [coinInstruction]), recentBlockhash: recentBlockhash, feePayer: fromPubkey }; } function compileSplTokenTransaction(transaction) { var signer = transaction.signer, fromTokenAccount = transaction.fromTokenAccount, toTokenAccount = transaction.toTokenAccount, amount = transaction.amount, recentBlockhash = transaction.recentBlockhash, programId = transaction.programId, tokenInfo = transaction.tokenInfo; var computeBudgetInstructions = instructionsTemplate.addComputeBudget({ computeUnitPrice: transaction.computeUnitPrice, computeUnitLimit: transaction.computeUnitLimit }); var splTokenInstruction = instructionsTemplate.transferSplToken({ signer: signer, fromTokenAccount: fromTokenAccount, toTokenAccount: toTokenAccount, amount: amount, programId: programId, tokenInfo: tokenInfo }); return { instructions: [].concat((0, _toConsumableArray2["default"])(computeBudgetInstructions), [splTokenInstruction]), recentBlockhash: recentBlockhash, feePayer: signer }; } function compileAssociateTokenAccount(transaction) { var signer = transaction.signer, owner = transaction.owner, associateAccount = transaction.associateAccount, token = transaction.token, recentBlockhash = transaction.recentBlockhash, programId = transaction.programId; var createTokenInstruction = instructionsTemplate.createAssociateTokenAccount({ signer: signer, owner: owner, associateAccount: associateAccount, token: token, programId: programId }); return { instructions: [createTokenInstruction], recentBlockhash: recentBlockhash, feePayer: signer }; } function compileUndelegate(transaction) { var stakePubkey = transaction.stakePubkey, authorizedPubkey = transaction.authorizedPubkey, feePayer = transaction.feePayer, recentBlockhash = transaction.recentBlockhash; var computeBudgetInstructions = instructionsTemplate.addComputeBudget({ computeUnitPrice: transaction.computeUnitPrice, computeUnitLimit: transaction.computeUnitLimit }); var undelegateInstruction = instructionsTemplate.undelegate({ stakePubkey: stakePubkey, authorizedPubkey: authorizedPubkey }); return { instructions: [].concat((0, _toConsumableArray2["default"])(computeBudgetInstructions), [undelegateInstruction]), feePayer: feePayer, recentBlockhash: recentBlockhash }; } function compileDelegateAndCreateAccountWithSeed(transaction) { var fromPubkey = transaction.fromPubkey, newAccountPubkey = transaction.newAccountPubkey, basePubkey = transaction.basePubkey, seed = transaction.seed, lamports = transaction.lamports, recentBlockhash = transaction.recentBlockhash, votePubkey = transaction.votePubkey; var computeUnitInstructions = instructionsTemplate.addComputeBudget({ computeUnitPrice: transaction.computeUnitPrice, computeUnitLimit: transaction.computeUnitLimit }); var createAccountWithSeedInstruction = instructionsTemplate.createAccountWithSeed({ fromPubkey: fromPubkey, newAccountPubkey: newAccountPubkey, basePubkey: basePubkey, seed: seed, space: 200, lamports: lamports, programId: params.STAKE_PROGRAM_ID }); var initializeInstruction = instructionsTemplate.initialize({ stakePubkey: newAccountPubkey, staker: fromPubkey, withdrawer: fromPubkey }); var delegateInstruction = instructionsTemplate.delegate({ stakePubkey: newAccountPubkey, authorizedPubkey: fromPubkey, votePubkey: votePubkey }); return { instructions: [].concat((0, _toConsumableArray2["default"])(computeUnitInstructions), [createAccountWithSeedInstruction, initializeInstruction, delegateInstruction]), recentBlockhash: recentBlockhash, feePayer: fromPubkey }; } function compileStakingWithdraw(transaction) { var authorizedPubkey = transaction.authorizedPubkey, stakePubkey = transaction.stakePubkey, withdrawToPubKey = transaction.withdrawToPubKey, recentBlockhash = transaction.recentBlockhash, lamports = transaction.lamports; var computeBudgetInstructions = instructionsTemplate.addComputeBudget({ computeUnitPrice: transaction.computeUnitPrice, computeUnitLimit: transaction.computeUnitLimit }); var withdrawInstruction = instructionsTemplate.withdraw({ stakePubkey: stakePubkey, withdrawToPubKey: withdrawToPubKey, authorizedPubkey: authorizedPubkey, lamports: lamports }); return { instructions: [].concat((0, _toConsumableArray2["default"])(computeBudgetInstructions), [withdrawInstruction]), recentBlockhash: recentBlockhash, feePayer: authorizedPubkey }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJhbXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJpbnN0cnVjdGlvbnNUZW1wbGF0ZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJjb21waWxlVHJhbnNmZXJUcmFuc2FjdGlvbiIsInRyYW5zYWN0aW9uIiwiZnJvbVB1YmtleSIsInRvUHVia2V5IiwicmVjZW50QmxvY2toYXNoIiwibGFtcG9ydHMiLCJjb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zIiwiYWRkQ29tcHV0ZUJ1ZGdldCIsImNvbXB1dGVVbml0UHJpY2UiLCJjb21wdXRlVW5pdExpbWl0IiwiY29pbkluc3RydWN0aW9uIiwidHJhbnNmZXJDb2luIiwiaW5zdHJ1Y3Rpb25zIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImZlZVBheWVyIiwiY29tcGlsZVNwbFRva2VuVHJhbnNhY3Rpb24iLCJzaWduZXIiLCJmcm9tVG9rZW5BY2NvdW50IiwidG9Ub2tlbkFjY291bnQiLCJhbW91bnQiLCJwcm9ncmFtSWQiLCJ0b2tlbkluZm8iLCJzcGxUb2tlbkluc3RydWN0aW9uIiwidHJhbnNmZXJTcGxUb2tlbiIsImNvbXBpbGVBc3NvY2lhdGVUb2tlbkFjY291bnQiLCJvd25lciIsImFzc29jaWF0ZUFjY291bnQiLCJ0b2tlbiIsImNyZWF0ZVRva2VuSW5zdHJ1Y3Rpb24iLCJjcmVhdGVBc3NvY2lhdGVUb2tlbkFjY291bnQiLCJjb21waWxlVW5kZWxlZ2F0ZSIsInN0YWtlUHVia2V5IiwiYXV0aG9yaXplZFB1YmtleSIsInVuZGVsZWdhdGVJbnN0cnVjdGlvbiIsInVuZGVsZWdhdGUiLCJjb21waWxlRGVsZWdhdGVBbmRDcmVhdGVBY2NvdW50V2l0aFNlZWQiLCJuZXdBY2NvdW50UHVia2V5IiwiYmFzZVB1YmtleSIsInNlZWQiLCJ2b3RlUHVia2V5IiwiY29tcHV0ZVVuaXRJbnN0cnVjdGlvbnMiLCJjcmVhdGVBY2NvdW50V2l0aFNlZWRJbnN0cnVjdGlvbiIsImNyZWF0ZUFjY291bnRXaXRoU2VlZCIsInNwYWNlIiwiU1RBS0VfUFJPR1JBTV9JRCIsImluaXRpYWxpemVJbnN0cnVjdGlvbiIsImluaXRpYWxpemUiLCJzdGFrZXIiLCJ3aXRoZHJhd2VyIiwiZGVsZWdhdGVJbnN0cnVjdGlvbiIsImRlbGVnYXRlIiwiY29tcGlsZVN0YWtpbmdXaXRoZHJhdyIsIndpdGhkcmF3VG9QdWJLZXkiLCJ3aXRoZHJhd0luc3RydWN0aW9uIiwid2l0aGRyYXciXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmF3VHJhbnNhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnLi4vY29uZmlnL3R5cGVzJztcbmltcG9ydCAqIGFzIHBhcmFtcyBmcm9tICcuLi9jb25maWcvcGFyYW1zJztcbmltcG9ydCAqIGFzIGluc3RydWN0aW9uc1RlbXBsYXRlIGZyb20gJy4vaW5zdHJ1Y3Rpb25zJztcblxuZnVuY3Rpb24gY29tcGlsZVRyYW5zZmVyVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IHtcbiAgZnJvbVB1YmtleTogdHlwZXMuQWRkcmVzcztcbiAgdG9QdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIHJlY2VudEJsb2NraGFzaDogc3RyaW5nO1xuICBsYW1wb3J0czogbnVtYmVyIHwgc3RyaW5nO1xuICBjb21wdXRlVW5pdFByaWNlPzogc3RyaW5nO1xuICBjb21wdXRlVW5pdExpbWl0Pzogc3RyaW5nO1xufSk6IHR5cGVzLlRyYW5zYWN0aW9uQXJncyB7XG4gIGNvbnN0IHsgZnJvbVB1YmtleSwgdG9QdWJrZXksIHJlY2VudEJsb2NraGFzaCwgbGFtcG9ydHMgfSA9IHRyYW5zYWN0aW9uO1xuICBjb25zdCBjb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zID0gaW5zdHJ1Y3Rpb25zVGVtcGxhdGUuYWRkQ29tcHV0ZUJ1ZGdldCh7XG4gICAgY29tcHV0ZVVuaXRQcmljZTogdHJhbnNhY3Rpb24uY29tcHV0ZVVuaXRQcmljZSxcbiAgICBjb21wdXRlVW5pdExpbWl0OiB0cmFuc2FjdGlvbi5jb21wdXRlVW5pdExpbWl0LFxuICB9KTtcbiAgY29uc3QgY29pbkluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zVGVtcGxhdGUudHJhbnNmZXJDb2luKHtcbiAgICBmcm9tUHVia2V5LFxuICAgIHRvUHVia2V5LFxuICAgIGxhbXBvcnRzLFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpbnN0cnVjdGlvbnM6IFsuLi5jb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zLCBjb2luSW5zdHJ1Y3Rpb25dLFxuICAgIHJlY2VudEJsb2NraGFzaCxcbiAgICBmZWVQYXllcjogZnJvbVB1YmtleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29tcGlsZVNwbFRva2VuVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IHtcbiAgc2lnbmVyOiB0eXBlcy5BZGRyZXNzO1xuICBmcm9tVG9rZW5BY2NvdW50OiB0eXBlcy5BZGRyZXNzO1xuICB0b1Rva2VuQWNjb3VudDogdHlwZXMuQWRkcmVzcztcbiAgcmVjZW50QmxvY2toYXNoOiBzdHJpbmc7XG4gIGFtb3VudDogbnVtYmVyIHwgc3RyaW5nO1xuICBwcm9ncmFtSWQ6IHR5cGVzLlRva2VuUHJvZ3JhbUlkO1xuICB0b2tlbkluZm86IHR5cGVzLlRva2VuSW5mbztcbiAgY29tcHV0ZVVuaXRQcmljZT86IHN0cmluZztcbiAgY29tcHV0ZVVuaXRMaW1pdD86IHN0cmluZztcbn0pOiB0eXBlcy5UcmFuc2FjdGlvbkFyZ3Mge1xuICBjb25zdCB7IHNpZ25lciwgZnJvbVRva2VuQWNjb3VudCwgdG9Ub2tlbkFjY291bnQsIGFtb3VudCwgcmVjZW50QmxvY2toYXNoLCBwcm9ncmFtSWQsIHRva2VuSW5mbyB9ID0gdHJhbnNhY3Rpb247XG4gIGNvbnN0IGNvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMgPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5hZGRDb21wdXRlQnVkZ2V0KHtcbiAgICBjb21wdXRlVW5pdFByaWNlOiB0cmFuc2FjdGlvbi5jb21wdXRlVW5pdFByaWNlLFxuICAgIGNvbXB1dGVVbml0TGltaXQ6IHRyYW5zYWN0aW9uLmNvbXB1dGVVbml0TGltaXQsXG4gIH0pO1xuICBjb25zdCBzcGxUb2tlbkluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zVGVtcGxhdGUudHJhbnNmZXJTcGxUb2tlbih7XG4gICAgc2lnbmVyLFxuICAgIGZyb21Ub2tlbkFjY291bnQsXG4gICAgdG9Ub2tlbkFjY291bnQsXG4gICAgYW1vdW50LFxuICAgIHByb2dyYW1JZCxcbiAgICB0b2tlbkluZm8sXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGluc3RydWN0aW9uczogWy4uLmNvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMsIHNwbFRva2VuSW5zdHJ1Y3Rpb25dLFxuICAgIHJlY2VudEJsb2NraGFzaCxcbiAgICBmZWVQYXllcjogc2lnbmVyLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb21waWxlQXNzb2NpYXRlVG9rZW5BY2NvdW50KHRyYW5zYWN0aW9uOiB7XG4gIHNpZ25lcjogdHlwZXMuQWRkcmVzcztcbiAgb3duZXI6IHR5cGVzLkFkZHJlc3M7XG4gIGFzc29jaWF0ZUFjY291bnQ6IHR5cGVzLkFkZHJlc3M7XG4gIHRva2VuOiB0eXBlcy5BZGRyZXNzO1xuICByZWNlbnRCbG9ja2hhc2g6IHN0cmluZztcbiAgcHJvZ3JhbUlkOiB0eXBlcy5Ub2tlblByb2dyYW1JZDtcbn0pOiB0eXBlcy5UcmFuc2FjdGlvbkFyZ3Mge1xuICBjb25zdCB7IHNpZ25lciwgb3duZXIsIGFzc29jaWF0ZUFjY291bnQsIHRva2VuLCByZWNlbnRCbG9ja2hhc2gsIHByb2dyYW1JZCB9ID0gdHJhbnNhY3Rpb247XG4gIGNvbnN0IGNyZWF0ZVRva2VuSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5jcmVhdGVBc3NvY2lhdGVUb2tlbkFjY291bnQoe1xuICAgIHNpZ25lcixcbiAgICBvd25lcixcbiAgICBhc3NvY2lhdGVBY2NvdW50LFxuICAgIHRva2VuLFxuICAgIHByb2dyYW1JZCxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaW5zdHJ1Y3Rpb25zOiBbY3JlYXRlVG9rZW5JbnN0cnVjdGlvbl0sXG4gICAgcmVjZW50QmxvY2toYXNoLFxuICAgIGZlZVBheWVyOiBzaWduZXIsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVVbmRlbGVnYXRlKHRyYW5zYWN0aW9uOiB7XG4gIGZlZVBheWVyOiB0eXBlcy5BZGRyZXNzO1xuICByZWNlbnRCbG9ja2hhc2g6IHN0cmluZztcbiAgc3Rha2VQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIGF1dGhvcml6ZWRQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIGNvbXB1dGVVbml0UHJpY2U/OiBzdHJpbmc7XG4gIGNvbXB1dGVVbml0TGltaXQ/OiBzdHJpbmc7XG59KTogdHlwZXMuVHJhbnNhY3Rpb25BcmdzIHtcbiAgY29uc3QgeyBzdGFrZVB1YmtleSwgYXV0aG9yaXplZFB1YmtleSwgZmVlUGF5ZXIsIHJlY2VudEJsb2NraGFzaCB9ID0gdHJhbnNhY3Rpb247XG4gIGNvbnN0IGNvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMgPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5hZGRDb21wdXRlQnVkZ2V0KHtcbiAgICBjb21wdXRlVW5pdFByaWNlOiB0cmFuc2FjdGlvbi5jb21wdXRlVW5pdFByaWNlLFxuICAgIGNvbXB1dGVVbml0TGltaXQ6IHRyYW5zYWN0aW9uLmNvbXB1dGVVbml0TGltaXQsXG4gIH0pO1xuICBjb25zdCB1bmRlbGVnYXRlSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS51bmRlbGVnYXRlKHtcbiAgICBzdGFrZVB1YmtleSxcbiAgICBhdXRob3JpemVkUHVia2V5LFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpbnN0cnVjdGlvbnM6IFsuLi5jb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zLCB1bmRlbGVnYXRlSW5zdHJ1Y3Rpb25dLFxuICAgIGZlZVBheWVyLFxuICAgIHJlY2VudEJsb2NraGFzaCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29tcGlsZURlbGVnYXRlQW5kQ3JlYXRlQWNjb3VudFdpdGhTZWVkKHRyYW5zYWN0aW9uOiB7XG4gIGZyb21QdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIG5ld0FjY291bnRQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIGJhc2VQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIHZvdGVQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIHNlZWQ6IHN0cmluZztcbiAgbGFtcG9ydHM6IHN0cmluZyB8IG51bWJlcjtcbiAgcmVjZW50QmxvY2toYXNoOiBzdHJpbmc7XG4gIGNvbXB1dGVVbml0UHJpY2U/OiBzdHJpbmc7XG4gIGNvbXB1dGVVbml0TGltaXQ/OiBzdHJpbmc7XG59KTogdHlwZXMuVHJhbnNhY3Rpb25BcmdzIHtcbiAgY29uc3QgeyBmcm9tUHVia2V5LCBuZXdBY2NvdW50UHVia2V5LCBiYXNlUHVia2V5LCBzZWVkLCBsYW1wb3J0cywgcmVjZW50QmxvY2toYXNoLCB2b3RlUHVia2V5IH0gPSB0cmFuc2FjdGlvbjtcbiAgY29uc3QgY29tcHV0ZVVuaXRJbnN0cnVjdGlvbnMgPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5hZGRDb21wdXRlQnVkZ2V0KHtcbiAgICBjb21wdXRlVW5pdFByaWNlOiB0cmFuc2FjdGlvbi5jb21wdXRlVW5pdFByaWNlLFxuICAgIGNvbXB1dGVVbml0TGltaXQ6IHRyYW5zYWN0aW9uLmNvbXB1dGVVbml0TGltaXQsXG4gIH0pO1xuICBjb25zdCBjcmVhdGVBY2NvdW50V2l0aFNlZWRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc1RlbXBsYXRlLmNyZWF0ZUFjY291bnRXaXRoU2VlZCh7XG4gICAgZnJvbVB1YmtleSxcbiAgICBuZXdBY2NvdW50UHVia2V5LFxuICAgIGJhc2VQdWJrZXksXG4gICAgc2VlZCxcbiAgICBzcGFjZTogMjAwLFxuICAgIGxhbXBvcnRzLFxuICAgIHByb2dyYW1JZDogcGFyYW1zLlNUQUtFX1BST0dSQU1fSUQsXG4gIH0pO1xuICBjb25zdCBpbml0aWFsaXplSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5pbml0aWFsaXplKHtcbiAgICBzdGFrZVB1YmtleTogbmV3QWNjb3VudFB1YmtleSxcbiAgICBzdGFrZXI6IGZyb21QdWJrZXksXG4gICAgd2l0aGRyYXdlcjogZnJvbVB1YmtleSxcbiAgfSk7XG4gIGNvbnN0IGRlbGVnYXRlSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5kZWxlZ2F0ZSh7XG4gICAgc3Rha2VQdWJrZXk6IG5ld0FjY291bnRQdWJrZXksXG4gICAgYXV0aG9yaXplZFB1YmtleTogZnJvbVB1YmtleSxcbiAgICB2b3RlUHVia2V5LFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpbnN0cnVjdGlvbnM6IFtcbiAgICAgIC4uLmNvbXB1dGVVbml0SW5zdHJ1Y3Rpb25zLFxuICAgICAgY3JlYXRlQWNjb3VudFdpdGhTZWVkSW5zdHJ1Y3Rpb24sXG4gICAgICBpbml0aWFsaXplSW5zdHJ1Y3Rpb24sXG4gICAgICBkZWxlZ2F0ZUluc3RydWN0aW9uLFxuICAgIF0sXG4gICAgcmVjZW50QmxvY2toYXNoLFxuICAgIGZlZVBheWVyOiBmcm9tUHVia2V5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb21waWxlU3Rha2luZ1dpdGhkcmF3KHRyYW5zYWN0aW9uOiB7XG4gIGF1dGhvcml6ZWRQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIHN0YWtlUHVia2V5OiB0eXBlcy5BZGRyZXNzO1xuICB3aXRoZHJhd1RvUHViS2V5OiB0eXBlcy5BZGRyZXNzO1xuICByZWNlbnRCbG9ja2hhc2g6IHN0cmluZztcbiAgbGFtcG9ydHM6IG51bWJlciB8IHN0cmluZztcbiAgY29tcHV0ZVVuaXRQcmljZT86IHN0cmluZztcbiAgY29tcHV0ZVVuaXRMaW1pdD86IHN0cmluZztcbn0pOiB0eXBlcy5UcmFuc2FjdGlvbkFyZ3Mge1xuICBjb25zdCB7IGF1dGhvcml6ZWRQdWJrZXksIHN0YWtlUHVia2V5LCB3aXRoZHJhd1RvUHViS2V5LCByZWNlbnRCbG9ja2hhc2gsIGxhbXBvcnRzIH0gPSB0cmFuc2FjdGlvbjtcbiAgY29uc3QgY29tcHV0ZUJ1ZGdldEluc3RydWN0aW9ucyA9IGluc3RydWN0aW9uc1RlbXBsYXRlLmFkZENvbXB1dGVCdWRnZXQoe1xuICAgIGNvbXB1dGVVbml0UHJpY2U6IHRyYW5zYWN0aW9uLmNvbXB1dGVVbml0UHJpY2UsXG4gICAgY29tcHV0ZVVuaXRMaW1pdDogdHJhbnNhY3Rpb24uY29tcHV0ZVVuaXRMaW1pdCxcbiAgfSk7XG4gIGNvbnN0IHdpdGhkcmF3SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS53aXRoZHJhdyh7XG4gICAgc3Rha2VQdWJrZXksXG4gICAgd2l0aGRyYXdUb1B1YktleSxcbiAgICBhdXRob3JpemVkUHVia2V5LFxuICAgIGxhbXBvcnRzLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGluc3RydWN0aW9uczogWy4uLmNvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMsIHdpdGhkcmF3SW5zdHJ1Y3Rpb25dLFxuICAgIHJlY2VudEJsb2NraGFzaCxcbiAgICBmZWVQYXllcjogYXV0aG9yaXplZFB1YmtleSxcbiAgfTtcbn1cblxuZXhwb3J0IHtcbiAgY29tcGlsZVRyYW5zZmVyVHJhbnNhY3Rpb24sXG4gIGNvbXBpbGVTcGxUb2tlblRyYW5zYWN0aW9uLFxuICBjb21waWxlQXNzb2NpYXRlVG9rZW5BY2NvdW50LFxuICBjb21waWxlVW5kZWxlZ2F0ZSxcbiAgY29tcGlsZURlbGVnYXRlQW5kQ3JlYXRlQWNjb3VudFdpdGhTZWVkLFxuICBjb21waWxlU3Rha2luZ1dpdGhkcmF3LFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxvQkFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBQXVELFNBQUFFLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBSix3QkFBQVEsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLGFBQUFFLE9BQUEsQ0FBQUYsR0FBQSx5QkFBQUEsR0FBQSx1Q0FBQUEsR0FBQSxVQUFBRyxLQUFBLEdBQUFSLHdCQUFBLENBQUFDLFdBQUEsT0FBQU8sS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUosR0FBQSxZQUFBRyxLQUFBLENBQUFFLEdBQUEsQ0FBQUwsR0FBQSxTQUFBTSxNQUFBLFdBQUFDLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLEdBQUEsSUFBQVgsR0FBQSxRQUFBVyxHQUFBLGtCQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFkLEdBQUEsRUFBQVcsR0FBQSxTQUFBSSxJQUFBLEdBQUFSLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQVYsR0FBQSxFQUFBVyxHQUFBLGNBQUFJLElBQUEsS0FBQUEsSUFBQSxDQUFB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