PHP WebShell
Текущая директория: /opt/BitGoJS/modules/bitgo/dist/test/v2/unit
Просмотр файла: PrebuildAndSign.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const sinon = require("sinon");
const nock = require("nock");
const sdk_core_1 = require("@bitgo/sdk-core");
const sdk_test_1 = require("@bitgo/sdk-test");
const src_1 = require("../../../src");
nock.disableNetConnect();
describe('PrebuildAndSign', function () {
const bitgo = sdk_test_1.TestBitGo.decorate(src_1.BitGo, { env: 'test' });
const bgUrl = sdk_core_1.Environments[bitgo.getEnv()].uri;
before(async function () {
bitgo.initializeTestVars();
});
afterEach(function () {
sinon.restore();
});
after(async function () {
nock.cleanAll();
});
describe('Account Based MultiSig Hot Wallets', function () {
const coin = 'hteth';
const walletId = '65f060a22df7cd8a42958441d4e90a45';
const wallet = new sdk_core_1.Wallet(bitgo, bitgo.coin(coin), { id: walletId, coin, multisigType: 'on-chain' });
it('should validate build with user params', async function () {
nock(bgUrl)
.post(`/api/v2/${coin}/wallet/${walletId}/tx/build`)
.reply(200, {
feeInfo: {
date: '2025-03-11T16:54:31.174Z',
gasPrice: '2431332',
baseFee: '1431332',
gasUsedRatio: '0.847974014624559',
safeLowMinerTip: '1000000',
normalMinerTip: '1000000',
standardMinerTip: '1000000',
fastestMinerTip: '1000000',
ludicrousMinerTip: '1000000',
},
eip1559: {
maxPriorityFeePerGas: '1150000',
maxFeePerGas: '4012664',
},
recipients: [
{
address: '0xe33e8728f320ccd98af20b19b333857ad2325f07',
amount: '1000000000000000',
},
],
nextContractSequenceId: 21,
gasLimit: 200000,
isBatch: false,
coin: 'hteth',
buildParams: {
recipients: [
{
address: '0xe33e872',
amount: '1000000',
},
],
},
});
sinon.stub(wallet, 'getKeychainsAndValidatePassphrase').resolves([]);
await wallet
.prebuildAndSignTransaction({
recipients: [
{
address: '0xe33e872',
amount: '1000000',
},
],
})
.should.be.rejectedWith(`normal transaction amount in txPrebuild received from BitGo servers does not match txParams supplied by client`);
});
it('should validate that transaction is going to batcher for multiple recepients', async function () {
nock(bgUrl)
.post(`/api/v2/${coin}/wallet/${walletId}/tx/build`)
.reply(200, {
feeInfo: {
date: '2025-03-12T18:38:11.627Z',
gasPrice: '22051229178',
baseFee: '21051229178',
gasUsedRatio: '0.055718833333333335',
safeLowMinerTip: '1000000000',
normalMinerTip: '1250000000',
standardMinerTip: '1250000000',
fastestMinerTip: '1503782862',
ludicrousMinerTip: '1503782862',
},
eip1559: {
maxPriorityFeePerGas: '1437500000',
maxFeePerGas: '43539958356',
},
recipients: [
{
address: '0xc1b7e7cc1ecafbfd0771a5eb5454ab5b0356980d',
amount: '3000000000000000',
data: '0xc00c4e9e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000002669c843ef62adeff9915a36349ce2542f08d9760000000000000000000000003669c843ef62adeff9915a36349ce2542f08d976000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000000000038d7ea4c68000',
},
],
nextContractSequenceId: 22,
gasLimit: 200000,
isBatch: true,
coin: 'hteth',
buildParams: {
comment: '',
recipients: [
{
address: '0x2669c843ef62AdEFF9915a36349cE2542F08D976',
amount: '2000000000000000',
},
{
address: '0x3669c843ef62AdEFF9915a36349cE2542F08D976',
amount: '1000000000000000',
},
],
},
});
sinon.stub(wallet, 'getKeychainsAndValidatePassphrase').resolves([]);
await wallet
.prebuildAndSignTransaction({
comment: '',
recipients: [
{
address: '0x2669c843ef62AdEFF9915a36349cE2542F08D976',
amount: '1000000000000000',
},
{
address: '0x3669c843ef62AdEFF9915a36349cE2542F08D976',
amount: '1000000000000000',
},
],
})
.should.be.rejectedWith(`batch transaction amount in txPrebuild received from BitGo servers does not match txParams supplied by client`);
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJlYnVpbGRBbmRTaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC92Mi91bml0L1ByZWJ1aWxkQW5kU2lnbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUErQjtBQUMvQiw2QkFBNkI7QUFFN0IsOENBQXVEO0FBQ3ZELDhDQUF3RDtBQUV4RCxzQ0FBcUM7QUFFckMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFFekIsUUFBUSxDQUFDLGlCQUFpQixFQUFFO0lBQzFCLE1BQU0sS0FBSyxHQUF1QixvQkFBUyxDQUFDLFFBQVEsQ0FBQyxXQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3RSxNQUFNLEtBQUssR0FBVyx1QkFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUV2RCxNQUFNLENBQUMsS0FBSztRQUNWLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzdCLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDO1FBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsb0NBQW9DLEVBQUU7UUFDN0MsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLGtDQUFrQyxDQUFDO1FBQ3BELE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXJHLEVBQUUsQ0FBQyx3Q0FBd0MsRUFB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LElBQUksQ0FBQyxNQUFhLEVBQUUsbUNBQW1DLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFNUUsTUFBTSxNQUFNO2lCQUNULDBCQUEwQixDQUFDO2dCQUMxQixPQUFPLEVBQUUsRUFBRTtnQkFDWCxVQUFVLEVBQUU7b0JBQ1Y7d0JBQ0UsT0FBTyxFQUFFLDRDQUE0Qzt3QkFDckQsTUFBTSxFQUFFLGtCQUFrQjtxQkFDM0I7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLDRDQUE0Qzt3QkFDckQsTUFBTSxFQUFFLGtCQUFrQjtxQkFDM0I7aUJBQ0Y7YUFDRixDQUFDO2lCQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUNyQiwrR0FBK0csQ0FDaEgsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAqIGFzIG5vY2sgZnJvbSAnbm9jayc7XG5cbmltcG9ydCB7IEVudmlyb25tZW50cywgV2FsbGV0IH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRlc3RhYmxlQkcsIFRlc3RCaXRHbyB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5cbmltcG9ydCB7IEJpdEdvIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcblxubm9jay5kaXNhYmxlTmV0Q29ubmVjdCgpO1xuXG5kZXNjcmliZSgnUHJlYnVpbGRBbmRTaWduJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBiaXRnbzogVGVzdGFibGVCRyAmIEJpdEdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvLCB7IGVudjogJ3Rlc3QnIH0pO1xuICBjb25zdCBiZ1VybDogc3RyaW5nID0gRW52aXJvbm1lbnRzW2JpdGdvLmdldEVudigpXS51cmk7XG5cbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBub2NrLmNsZWFuQWxsKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBY2NvdW50IEJhc2VkIE11bHRpU2lnIEhvdCBXYWxsZXRzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGNvaW4gPSAnaHRldGgnO1xuICAgIGNvbnN0IHdhbGxldElkID0gJzY1ZjA2MGEyMmRmN2NkOGE0Mjk1ODQ0MWQ0ZTkwYTQ1JztcbiAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0KGJpdGdvLCBiaXRnby5jb2luKGNvaW4pLCB7IGlkOiB3YWxsZXRJZCwgY29pbiwgbXVsdGlzaWdUeXBlOiAnb24tY2hhaW4nIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBidWlsZCB3aXRoIHVzZXIgcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHtjb2lufS93YWxsZXQvJHt3YWxsZXRJZH0vdHgvYnVpbGRgKVxuICAgICAgICAucmVwbHkoMjAwLCB7XG4gICAgICAgICAgZmVlSW5mbzoge1xuICAgICAgICAgICAgZGF0ZTogJzIwMjUtMDMtMTFUMTY6NTQ6MzEuMTc0WicsXG4gICAgICAgICAgICBnYXNQcmljZTogJzI0MzEzMzInLFxuICAgICAgICAgICAgYmFzZUZlZTogJzE0MzEzMzInLFxuICAgICAgICAgICAgZ2FzVXNlZFJhdGlvOiAnMC44NDc5NzQwMTQ2MjQ1NTknLFxuICAgICAgICAgICAgc2FmZUxvd01pbmVyVGlwOiAnMTAwMDAwMCcsXG4gICAgICAgICAgICBub3JtYWxNaW5lclRpcDogJzEwMDAwMDAnLFxuICAgICAgICAgICAgc3RhbmRhcmRNaW5lclRpcDogJzEwMDAwMDAnLFxuICAgICAgICAgICAgZmFzdGVzdE1pbmVyVGlwOiAnMTAwMDAwMCcsXG4gICAgICAgICAgICBsdWRpY3JvdXNNaW5lclRpcDogJzEwMDAwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZWlwMTU1OToge1xuICAgICAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM6ICcxMTUwMDAwJyxcbiAgICAgICAgICAgIG1heEZlZVBlckdhczogJzQwMTI2NjQnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnMHhlMzNlODcyOGYzMjBjY2Q5OGFmMjBiMTliMzMzODU3YWQyMzI1ZjA3JyxcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbmV4dENvbnRyYWN0U2VxdWVuY2VJZDogMjEsXG4gICAgICAgICAgZ2FzTGltaXQ6IDIwMDAwMCxcbiAgICAgICAgICBpc0JhdGNoOiBmYWxzZSxcbiAgICAgICAgICBjb2luOiAnaHRldGgnLFxuICAgICAgICAgIGJ1aWxkUGFyYW1zOiB7XG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHhlMzNlODcyJyxcbiAgICAgICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICBzaW5vbi5zdHViKHdhbGxldCBhcyBhbnksICdnZXRLZXljaGFpbnNBbmRWYWxpZGF0ZVBhc3NwaHJhc2UnKS5yZXNvbHZlcyhbXSk7XG5cbiAgICAgIGF3YWl0IHdhbGxldFxuICAgICAgICAucHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzB4ZTMzZTg3MicsXG4gICAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChcbiAgICAgICAgICBgbm9ybWFsIHRyYW5zYWN0aW9uIGFtb3VudCBpbiB0eFByZWJ1aWxkIHJlY2VpdmVkIGZyb20gQml0R28gc2VydmVycyBkb2VzIG5vdCBtYXRjaCB0eFBhcmFtcyBzdXBwbGllZCBieSBjbGllbnRgXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHRoYXQgdHJhbnNhY3Rpb24gaXMgZ29pbmcgdG8gYmF0Y2hlciBmb3IgbXVsdGlwbGUgcmVjZXBpZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7Y29pbn0vd2FsbGV0LyR7d2FsbGV0SWR9L3R4L2J1aWxkYClcbiAgICAgICAgLnJlcGx5KDIwMCwge1xuICAgICAgICAgIGZlZUluZm86IHtcbiAgICAgICAgICAgIGRhdGU6ICcyMDI1LTAzLTEyVDE4OjM4OjExLjYyN1onLFxuICAgICAgICAgICAgZ2FzUHJpY2U6ICcyMjA1MTIyOTE3OCcsXG4gICAgICAgICAgICBiYXNlRmVlOiAnMjEwNTEyMjkxNzgnLFxuICAgICAgICAgICAgZ2FzVXNlZFJhdGlvOiAnMC4wNTU3MTg4MzMzMzMzMzMzMzUnLFxuICAgICAgICAgICAgc2FmZUxvd01pbmVyVGlwOiAnMTAwMDAwMDAwMCcsXG4gICAgICAgICAgICBub3JtYWxNaW5lclRpcDogJzEyNTAwMDAwMDAnLFxuICAgICAgICAgICAgc3RhbmRhcmRNaW5lclRpcDogJzEyNTAwMDAwMDAnLFxuICAgICAgICAgICAgZmFzdGVzdE1pbmVyVGlwOiAnMTUwMzc4Mjg2MicsXG4gICAgICAgICAgICBsdWRpY3JvdXNNaW5lclRpcDogJzE1MDM3ODI4NjInLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZWlwMTU1OToge1xuICAgICAgICAgICAgbWF4UHJpb3JpdHlGZWVQZXJHYXM6ICcxNDM3NTAwMDAwJyxcbiAgICAgICAgICAgIG1heEZlZVBlckdhczogJzQzNTM5OTU4MzU2JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogJzB4YzFiN2U3Y2MxZWNhZmJmZDA3NzFhNWViNTQ1NGFiNWIwMzU2OTgwZCcsXG4gICAgICAgICAgICAgIGFtb3VudDogJzMwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICBkYXRhOiAnMHhjMDBjNGU5ZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI2NjljODQzZWY2MmFkZWZmOTkxNWEzNjM0OWNlMjU0MmYwOGQ5NzYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzNjY5Yzg0M2VmNjJhZGVmZjk5MTVhMzYzNDljZTI1NDJmMDhkOTc2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDM4ZDdlYTRjNjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzOGQ3ZWE0YzY4MDAwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBuZXh0Q29udHJhY3RTZXF1ZW5jZUlkOiAyMixcbiAgICAgICAgICBnYXNMaW1pdDogMjAwMDAwLFxuICAgICAgICAgIGlzQmF0Y2g6IHRydWUsXG4gICAgICAgICAgY29pbjogJ2h0ZXRoJyxcbiAgICAgICAgICBidWlsZFBhcmFtczoge1xuICAgICAgICAgICAgY29tbWVudDogJycsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgyNjY5Yzg0M2VmNjJBZEVGRjk5MTVhMzYzNDljRTI1NDJGMDhEOTc2JyxcbiAgICAgICAgICAgICAgICBhbW91bnQ6ICcyMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6ICcweDM2NjljODQzZWY2MkFkRUZGOTkxNWEzNjM0OWNFMjU0MkYwOEQ5NzYnLFxuICAgICAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIHNpbm9uLnN0dWIod2FsbGV0IGFzIGFueSwgJ2dldEtleWNoYWluc0FuZFZhbGlkYXRlUGFzc3BocmFzZScpLnJlc29sdmVzKFtdKTtcblxuICAgICAgYXdhaXQgd2FsbGV0XG4gICAgICAgIC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgY29tbWVudDogJycsXG4gICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgyNjY5Yzg0M2VmNjJBZEVGRjk5MTVhMzYzNDljRTI1NDJGMDhEOTc2JyxcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiAnMHgzNjY5Yzg0M2VmNjJBZEVGRjk5MTVhMzYzNDljRTI1NDJGMDhEOTc2JyxcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgIGBiYXRjaCB0cmFuc2FjdGlvbiBhbW91bnQgaW4gdHhQcmVidWlsZCByZWNlaXZlZCBmcm9tIEJpdEdvIHNlcnZlcnMgZG9lcyBub3QgbWF0Y2ggdHhQYXJhbXMgc3VwcGxpZWQgYnkgY2xpZW50YFxuICAgICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19Выполнить команду
Для локальной разработки. Не используйте в интернете!