PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/avalanche/typings/tests/apis/platformvm

Просмотр файла: inputs.test.js

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const utxos_1 = require("../../../src/apis/platformvm/utxos");
const keychain_1 = require("../../../src/apis/platformvm/keychain");
const inputs_1 = require("../../../src/apis/platformvm/inputs");
const create_hash_1 = __importDefault(require("create-hash"));
const bintools_1 = __importDefault(require("../../../src/utils/bintools"));
const bn_js_1 = __importDefault(require("bn.js"));
const buffer_1 = require("buffer/");
const outputs_1 = require("../../../src/apis/platformvm/outputs");
const constants_1 = require("../../../src/apis/platformvm/constants");
const input_1 = require("../../../src/common/input");
/**
 * @ignore
 */
const bintools = bintools_1.default.getInstance();
describe("Inputs", () => {
    let set;
    let keymgr1;
    let keymgr2;
    let addrs1;
    let addrs2;
    let utxos;
    let hrp = "tests";
    const amnt = 10000;
    beforeEach(() => {
        set = new utxos_1.UTXOSet();
        keymgr1 = new keychain_1.KeyChain(hrp, "X");
        keymgr2 = new keychain_1.KeyChain(hrp, "X");
        addrs1 = [];
        addrs2 = [];
        utxos = [];
        for (let i = 0; i < 3; i++) {
            addrs1.push(keymgr1.makeKey().getAddress());
            addrs2.push(keymgr2.makeKey().getAddress());
        }
        const amount = new bn_js_1.default(amnt);
        const addresses = keymgr1.getAddresses();
        const locktime = new bn_js_1.default(54321);
        const threshold = 3;
        for (let i = 0; i < 3; i++) {
            const txid = buffer_1.Buffer.from((0, create_hash_1.default)("sha256")
                .update(bintools.fromBNToBuffer(new bn_js_1.default(i), 32))
                .digest());
            const txidx = buffer_1.Buffer.from(bintools.fromBNToBuffer(new bn_js_1.default(i), 4));
            const assetID = buffer_1.Buffer.from((0, create_hash_1.default)("sha256").update(txid).digest());
            const out = new outputs_1.SECPTransferOutput(amount.add(new bn_js_1.default(i)), addresses, locktime, threshold);
            const xferout = new outputs_1.TransferableOutput(assetID, out);
            const u = new utxos_1.UTXO(constants_1.PlatformVMConstants.LATESTCODEC, txid, txidx, assetID, out);
            u.fromBuffer(buffer_1.Buffer.concat([u.getCodecIDBuffer(), txid, txidx, xferout.toBuffer()]));
            utxos.push(u);
        }
        set.addArray(utxos);
    });
    test("SECPInput", () => {
        let u;
        let txid;
        let txidx;
        const amount = new bn_js_1.default(amnt);
        let input;
        let xferinput;
        u = utxos[0];
        txid = u.getTxID();
        txidx = u.getOutputIdx();
        const asset = u.getAssetID();
        input = new inputs_1.SECPTransferInput(amount);
        xferinput = new inputs_1.TransferableInput(txid, txidx, asset, input);
        expect(xferinput.getUTXOID()).toBe(u.getUTXOID());
        expect(input.getInputID()).toBe(constants_1.PlatformVMConstants.SECPINPUTID);
        input.addSignatureIdx(0, addrs2[0]);
        input.addSignatureIdx(1, addrs2[1]);
        const newin = new inputs_1.SECPTransferInput();
        newin.fromBuffer(bintools.b58ToBuffer(input.toString()));
        expect(newin.toBuffer().toString("hex")).toBe(input.toBuffer().toString("hex"));
        expect(newin.getSigIdxs().toString()).toBe(input.getSigIdxs().toString());
    });
    test("Input comparator", () => {
        const inpt1 = new inputs_1.SECPTransferInput(utxos[0].getOutput().getAmount());
        const inpt2 = new inputs_1.SECPTransferInput(utxos[1].getOutput().getAmount());
        const inpt3 = new inputs_1.SECPTransferInput(utxos[2].getOutput().getAmount());
        const cmp = input_1.Input.comparator();
        expect(cmp(inpt1, inpt2)).toBe(-1);
        expect(cmp(inpt1, inpt3)).toBe(-1);
        expect(cmp(inpt1, inpt1)).toBe(0);
        expect(cmp(inpt2, inpt2)).toBe(0);
        expect(cmp(inpt3, inpt3)).toBe(0);
    });
    test("TransferableInput comparator", () => {
        const inpt1 = new inputs_1.SECPTransferInput(utxos[0].getOutput().getAmount());
        const in1 = new inputs_1.TransferableInput(utxos[0].getTxID(), utxos[0].getOutputIdx(), utxos[0].getAssetID(), inpt1);
        const inpt2 = new inputs_1.SECPTransferInput(utxos[1].getOutput().getAmount());
        const in2 = new inputs_1.TransferableInput(utxos[1].getTxID(), utxos[1].getOutputIdx(), utxos[1].getAssetID(), inpt2);
        const inpt3 = new inputs_1.SECPTransferInput(utxos[2].getOutput().getAmount());
        const in3 = new inputs_1.TransferableInput(utxos[2].getTxID(), utxos[2].getOutputIdx(), utxos[2].getAssetID(), inpt3);
        const cmp = inputs_1.TransferableInput.comparator();
        expect(cmp(in1, in2)).toBe(-1);
        expect(cmp(in1, in3)).toBe(-1);
        expect(cmp(in1, in1)).toBe(0);
        expect(cmp(in2, in2)).toBe(0);
        expect(cmp(in3, in3)).toBe(0);
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0cy9hcGlzL3BsYXRmb3Jtdm0vaW5wdXRzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4REFBa0U7QUFDbEUsb0VBQWdFO0FBQ2hFLGdFQUc0QztBQUM1Qyw4REFBb0M7QUFDcEMsMkVBQWtEO0FBQ2xELGtEQUFzQjtBQUN0QixvQ0FBZ0M7QUFDaEMsa0VBSTZDO0FBQzdDLHNFQUE0RTtBQUM1RSxxREFBaUQ7QUFHakQ7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBYSxrQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFBO0FBQ2pELFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBUyxFQUFFO0lBQzVCLElBQUksR0FBWSxDQUFBO0lBQ2hCLElBQUksT0FBaUIsQ0FBQTtJQUNyQixJQUFJLE9BQWlCLENBQUE7SUFDckIsSUFBSSxNQUFnQixDQUFBO0lBQ3BCLElBQUksTUFBZ0IsQ0FBQTtJQUNwQixJQUFJLEtBQWEsQ0FBQTtJQUNqQixJQUFJLEdBQUcsR0FBVyxPQUFPLENBQUE7SUFDekIsTUFBTSxJQUFJLEdBQVcsS0FBSyxDQUFBO0lBQzFCLFVBQVUsQ0FBQyxHQUFTLEVBQUU7UUFDcEIsR0FBRyxHQUFHLElBQUksZUFBTyxFQUFFLENBQUE7UUFDbkIsT0FBTyxHQUFHLElBQUksbUJBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDaEMsT0FBTyxHQUFHLElBQUksbUJBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDaEMsTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUNYLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDWCxLQUFLLEdBQUcsRUFBRSxDQUFBO1FBQ1YsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLENBQUMsSUFB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Q0FBQTtRQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMvQixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVVRYT1NldCwgVVRYTyB9IGZyb20gXCIuLi8uLi8uLi9zcmMvYXBpcy9wbGF0Zm9ybXZtL3V0eG9zXCJcbmltcG9ydCB7IEtleUNoYWluIH0gZnJvbSBcIi4uLy4uLy4uL3NyYy9hcGlzL3BsYXRmb3Jtdm0va2V5Y2hhaW5cIlxuaW1wb3J0IHtcbiAgU0VDUFRyYW5zZmVySW5wdXQsXG4gIFRyYW5zZmVyYWJsZUlucHV0XG59IGZyb20gXCIuLi8uLi8uLi9zcmMvYXBpcy9wbGF0Zm9ybXZtL2lucHV0c1wiXG5pbXBvcnQgY3JlYXRlSGFzaCBmcm9tIFwiY3JlYXRlLWhhc2hcIlxuaW1wb3J0IEJpblRvb2xzIGZyb20gXCIuLi8uLi8uLi9zcmMvdXRpbHMvYmludG9vbHNcIlxuaW1wb3J0IEJOIGZyb20gXCJibi5qc1wiXG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tIFwiYnVmZmVyL1wiXG5pbXBvcnQge1xuICBTRUNQVHJhbnNmZXJPdXRwdXQsXG4gIEFtb3VudE91dHB1dCxcbiAgVHJhbnNmZXJhYmxlT3V0cHV0XG59IGZyb20gXCIuLi8uLi8uLi9zcmMvYXBpcy9wbGF0Zm9ybXZtL291dHB1dHNcIlxuaW1wb3J0IHsgUGxhdGZvcm1WTUNvbnN0YW50cyB9IGZyb20gXCIuLi8uLi8uLi9zcmMvYXBpcy9wbGF0Zm9ybXZtL2NvbnN0YW50c1wiXG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuLi8uLi8uLi9zcmMvY29tbW9uL2lucHV0XCJcbmltcG9ydCB7IE91dHB1dCB9IGZyb20gXCIuLi8uLi8uLi9zcmMvY29tbW9uL291dHB1dFwiXG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5jb25zdCBiaW50b29sczogQmluVG9vbHMgPSBCaW5Ub29scy5nZXRJbnN0YW5jZSgpXG5kZXNjcmliZShcIklucHV0c1wiLCAoKTogdm9pZCA9PiB7XG4gIGxldCBzZXQ6IFVUWE9TZXRcbiAgbGV0IGtleW1ncjE6IEtleUNoYWluXG4gIGxldCBrZXltZ3IyOiBLZXlDaGFpblxuICBsZXQgYWRkcnMxOiBCdWZmZXJbXVxuICBsZXQgYWRkcnMyOiBCdWZmZXJbXVxuICBsZXQgdXR4b3M6IFVUWE9bXVxuICBsZXQgaHJwOiBzdHJpbmcgPSBcInRlc3RzXCJcbiAgY29uc3QgYW1udDogbnVtYmVyID0gMTAwMDBcbiAgYmVmb3JlRWFjaCgoKTogdm9pZCA9PiB7XG4gICAgc2V0ID0gbmV3IFVUWE9TZXQoKVxuICAgIGtleW1ncjEgPSBuZXcgS2V5Q2hhaW4oaHJwLCBcIlhcIilcbiAgICBrZXltZ3IyID0gbmV3IEtleUNoYWluKGhycCwgXCJYXCIpXG4gICAgYWRkcnMxID0gW11cbiAgICBhZGRyczIgPSBbXVxuICAgIHV0eG9zID0gW11cbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICBhZGRyczEucHVzaChrZXltZ3IxLm1ha2VLZXkoKS5nZXRBZGRyZXNzKCkpXG4gICAgICBhZGRyczIucHVzaChrZXltZ3IyLm1ha2VLZXkoKS5nZXRBZGRyZXNzKCkpXG4gICAgfVxuICAgIGNvbnN0IGFtb3VudDogQk4gPSBuZXcgQk4oYW1udClcbiAgICBjb25zdCBhZGRyZXNzZXM6IEJ1ZmZlcltdID0ga2V5bWdyMS5nZXRBZGRyZXNzZXMoKVxuICAgIGNvbnN0IGxvY2t0aW1lOiBCTiA9IG5ldyBCTig1NDMyMSlcbiAgICBjb25zdCB0aHJlc2hvbGQ6IG51bWJlciA9IDNcblxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICAgIGNvbnN0IHR4aWQ6IEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKFxuICAgICAgICBjcmVhdGVIYXNoKFwic2hhMjU2XCIpXG4gICAgICAgICAgLnVwZGF0ZShiaW50b29scy5mcm9tQk5Ub0J1ZmZlcihuZXcgQk4oaSksIDMyKSlcbiAgICAgICAgICAuZGlnZXN0KClcbiAgICAgIClcbiAgICAgIGNvbnN0IHR4aWR4OiBCdWZmZXIgPSBCdWZmZXIuZnJvbShiaW50b29scy5mcm9tQk5Ub0J1ZmZlcihuZXcgQk4oaSksIDQpKVxuICAgICAgY29uc3QgYXNzZXRJRDogQnVmZmVyID0gQnVmZmVyLmZyb20oXG4gICAgICAgIGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKHR4aWQpLmRpZ2VzdCgpXG4gICAgICApXG4gICAgICBjb25zdCBvdXQ6IE91dHB1dCA9IG5ldyBTRUNQVHJhbnNmZXJPdXRwdXQoXG4gICAgICAgIGFtb3VudC5hZGQobmV3IEJOKGkpKSxcbiAgICAgICAgYWRkcmVzc2VzLFxuICAgICAgICBsb2NrdGltZSxcbiAgICAgICAgdGhyZXNob2xkXG4gICAgICApXG4gICAgICBjb25zdCB4ZmVyb3V0OiBUcmFuc2ZlcmFibGVPdXRwdXQgPSBuZXcgVHJhbnNmZXJhYmxlT3V0cHV0KGFzc2V0SUQsIG91dClcbiAgICAgIGNvbnN0IHU6IFVUWE8gPSBuZXcgVVRYTyhcbiAgICAgICAgUGxhdGZvcm1WTUNvbnN0YW50cy5MQVRFU1RDT0RFQyxcbiAgICAgICAgdHhpZCxcbiAgICAgICAgdHhpZHgsXG4gICAgICAgIGFzc2V0SUQsXG4gICAgICAgIG91dFxuICAgICAgKVxuICAgICAgdS5mcm9tQnVmZmVyKFxuICAgICAgICBCdWZmZXIuY29uY2F0KFt1LmdldENvZGVjSURCdWZmZXIoKSwgdHhpZCwgdHhpZHgsIHhmZXJvdXQudG9CdWZmZXIoKV0pXG4gICAgICApXG4gICAgICB1dHhvcy5wdXNoKHUpXG4gICAgfVxuICAgIHNldC5hZGRBcnJheSh1dHhvcylcbiAgfSlcbiAgdGVzdChcIlNFQ1BJbnB1dFwiLCAoKTogdm9pZCA9PiB7XG4gICAgbGV0IHU6IFVUWE9cbiAgICBsZXQgdHhpZDogQnVmZmVyXG4gICAgbGV0IHR4aWR4OiBCdWZmZXJcbiAgICBjb25zdCBhbW91bnQ6IEJOID0gbmV3IEJOKGFtbnQpXG4gICAgbGV0IGlucHV0OiBTRUNQVHJhbnNmZXJJbnB1dFxuICAgIGxldCB4ZmVyaW5wdXQ6IFRyYW5zZmVyYWJsZUlucHV0XG5cbiAgICB1ID0gdXR4b3NbMF1cbiAgICB0eGlkID0gdS5nZXRUeElEKClcbiAgICB0eGlkeCA9IHUuZ2V0T3V0cHV0SWR4KClcbiAgICBjb25zdCBhc3NldCA9IHUuZ2V0QXNzZXRJRCgpXG5cbiAgICBpbnB1dCA9IG5ldyBTRUNQVHJhbnNmZXJJbnB1dChhbW91bnQpXG4gICAgeGZlcmlucHV0ID0gbmV3IFRyYW5zZmVyYWJsZUlucHV0KHR4aWQsIHR4aWR4LCBhc3NldCwgaW5wdXQpXG4gICAgZXhwZWN0KHhmZXJpbnB1dC5nZXRVVFhPSUQoKSkudG9CZSh1LmdldFVUWE9JRCgpKVxuICAgIGV4cGVjdChpbnB1dC5nZXRJbnB1dElEKCkpLnRvQmUoUGxhdGZvcm1WTUNvbnN0YW50cy5TRUNQSU5QVVRJRClcblxuICAgIGlucHV0LmFkZFNpZ25hdHVyZUlkeCgwLCBhZGRyczJbMF0pXG4gICAgaW5wdXQuYWRkU2lnbmF0dXJlSWR4KDEsIGFkZHJzMlsxXSlcblxuICAgIGNvbnN0IG5ld2luOiBTRUNQVHJhbnNmZXJJbnB1dCA9IG5ldyBTRUNQVHJhbnNmZXJJbnB1dCgpXG4gICAgbmV3aW4uZnJvbUJ1ZmZlcihiaW50b29scy5iNThUb0J1ZmZlcihpbnB1dC50b1N0cmluZygpKSlcbiAgICBleHBlY3QobmV3aW4udG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSkudG9CZShcbiAgICAgIGlucHV0LnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIilcbiAgICApXG4gICAgZXhwZWN0KG5ld2luLmdldFNpZ0lkeHMoKS50b1N0cmluZygpKS50b0JlKGlucHV0LmdldFNpZ0lkeHMoKS50b1N0cmluZygpKVxuICB9KVxuXG4gIHRlc3QoXCJJbnB1dCBjb21wYXJhdG9yXCIsICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBpbnB0MTogU0VDUFRyYW5zZmVySW5wdXQgPSBuZXcgU0VDUFRyYW5zZmVySW5wdXQoXG4gICAgICAodXR4b3NbMF0uZ2V0T3V0cHV0KCkgYXMgQW1vdW50T3V0cHV0KS5nZXRBbW91bnQoKVxuICAgIClcblxuICAgIGNvbnN0IGlucHQyOiBTRUNQVHJhbnNmZXJJbnB1dCA9IG5ldyBTRUNQVHJhbnNmZXJJbnB1dChcbiAgICAgICh1dHhvc1sxXS5nZXRPdXRwdXQoKSBhcyBBbW91bnRPdXRwdXQpLmdldEFtb3VudCgpXG4gICAgKVxuXG4gICAgY29uc3QgaW5wdDM6IFNFQ1BUcmFuc2ZlcklucHV0ID0gbmV3IFNFQ1BUcmFuc2ZlcklucHV0KFxuICAgICAgKHV0eG9zWzJdLmdldE91dHB1dCgpIGFzIEFtb3VudE91dHB1dCkuZ2V0QW1vdW50KClcbiAgICApXG5cbiAgICBjb25zdCBjbXAgPSBJbnB1dC5jb21wYXJhdG9yKClcbiAgICBleHBlY3QoY21wKGlucHQxLCBpbnB0MikpLnRvQmUoLTEpXG4gICAgZXhwZWN0KGNtcChpbnB0MSwgaW5wdDMpKS50b0JlKC0xKVxuICAgIGV4cGVjdChjbXAoaW5wdDEsIGlucHQxKSkudG9CZSgwKVxuICAgIGV4cGVjdChjbXAoaW5wdDIsIGlucHQyKSkudG9CZSgwKVxuICAgIGV4cGVjdChjbXAoaW5wdDMsIGlucHQzKSkudG9CZSgwKVxuICB9KVxuXG4gIHRlc3QoXCJUcmFuc2ZlcmFibGVJbnB1dCBjb21wYXJhdG9yXCIsICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBpbnB0MTogU0VDUFRyYW5zZmVySW5wdXQgPSBuZXcgU0VDUFRyYW5zZmVySW5wdXQoXG4gICAgICAodXR4b3NbMF0uZ2V0T3V0cHV0KCkgYXMgQW1vdW50T3V0cHV0KS5nZXRBbW91bnQoKVxuICAgIClcbiAgICBjb25zdCBpbjE6IFRyYW5zZmVyYWJsZUlucHV0ID0gbmV3IFRyYW5zZmVyYWJsZUlucHV0KFxuICAgICAgdXR4b3NbMF0uZ2V0VHhJRCgpLFxuICAgICAgdXR4b3NbMF0uZ2V0T3V0cHV0SWR4KCksXG4gICAgICB1dHhvc1swXS5nZXRBc3NldElEKCksXG4gICAgICBpbnB0MVxuICAgIClcblxuICAgIGNvbnN0IGlucHQyOiBTRUNQVHJhbnNmZXJJbnB1dCA9IG5ldyBTRUNQVHJhbnNmZXJJbnB1dChcbiAgICAgICh1dHhvc1sxXS5nZXRPdXRwdXQoKSBhcyBBbW91bnRPdXRwdXQpLmdldEFtb3VudCgpXG4gICAgKVxuICAgIGNvbnN0IGluMjogVHJhbnNmZXJhYmxlSW5wdXQgPSBuZXcgVHJhbnNmZXJhYmxlSW5wdXQoXG4gICAgICB1dHhvc1sxXS5nZXRUeElEKCksXG4gICAgICB1dHhvc1sxXS5nZXRPdXRwdXRJZHgoKSxcbiAgICAgIHV0eG9zWzFdLmdldEFzc2V0SUQoKSxcbiAgICAgIGlucHQyXG4gICAgKVxuXG4gICAgY29uc3QgaW5wdDM6IFNFQ1BUcmFuc2ZlcklucHV0ID0gbmV3IFNFQ1BUcmFuc2ZlcklucHV0KFxuICAgICAgKHV0eG9zWzJdLmdldE91dHB1dCgpIGFzIEFtb3VudE91dHB1dCkuZ2V0QW1vdW50KClcbiAgICApXG4gICAgY29uc3QgaW4zOiBUcmFuc2ZlcmFibGVJbnB1dCA9IG5ldyBUcmFuc2ZlcmFibGVJbnB1dChcbiAgICAgIHV0eG9zWzJdLmdldFR4SUQoKSxcbiAgICAgIHV0eG9zWzJdLmdldE91dHB1dElkeCgpLFxuICAgICAgdXR4b3NbMl0uZ2V0QXNzZXRJRCgpLFxuICAgICAgaW5wdDNcbiAgICApXG5cbiAgICBjb25zdCBjbXAgPSBUcmFuc2ZlcmFibGVJbnB1dC5jb21wYXJhdG9yKClcbiAgICBleHBlY3QoY21wKGluMSwgaW4yKSkudG9CZSgtMSlcbiAgICBleHBlY3QoY21wKGluMSwgaW4zKSkudG9CZSgtMSlcbiAgICBleHBlY3QoY21wKGluMSwgaW4xKSkudG9CZSgwKVxuICAgIGV4cGVjdChjbXAoaW4yLCBpbjIpKS50b0JlKDApXG4gICAgZXhwZWN0KGNtcChpbjMsIGluMykpLnRvQmUoMClcbiAgfSlcbn0pXG4iXX0=

Выполнить команду


Для локальной разработки. Не используйте в интернете!