Contract 0x7c7e25ac63E220075624575d7Dc09333F47df4dF

Contract Overview

Balance:
0 AVAX
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x51cf68ce918cae4574ecebc3e4a75e3a5ffa90b19b72c13238936b562f216f010x6080604069973872022-03-07 15:03:3776 days 12 hrs ago0x209484169c126f69db7c83df8d7cd0cb3db22519 IN  Create: TreeUpdateVerifier0 AVAX0.217419975225
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TreeUpdateVerifier

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at testnet.snowtrace.io on 2022-04-14
*/

// TreeUpdateVerifier.sol Flattened
/*
Avacash.Finance: Privacy-focused Investments in Avalanche
Visit https://avacash.finance
Check Audits in https://docs.avacash.finance/

V.1.1


█████╗ ██╗   ██╗ █████╗  ██████╗ █████╗ ███████╗██╗  ██╗
██╔══██╗██║   ██║██╔══██╗██╔════╝██╔══██╗██╔════╝██║  ██║
███████║██║   ██║███████║██║     ███████║███████╗███████║
██╔══██║╚██╗ ██╔╝██╔══██║██║     ██╔══██║╚════██║██╔══██║
██║  ██║ ╚████╔╝ ██║  ██║╚██████╗██║  ██║███████║██║  ██║
╚═╝  ╚═╝  ╚═══╝  ╚═╝  ╚═╝ ╚═════╝╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝

███████╗██╗███╗   ██╗ █████╗ ███╗   ██╗ ██████╗███████╗
██╔════╝██║████╗  ██║██╔══██╗████╗  ██║██╔════╝██╔════╝
█████╗  ██║██╔██╗ ██║███████║██╔██╗ ██║██║     █████╗
██╔══╝  ██║██║╚██╗██║██╔══██║██║╚██╗██║██║     ██╔══╝
██║     ██║██║ ╚████║██║  ██║██║ ╚████║╚██████╗███████╗
╚═╝     ╚═╝╚═╝  ╚═══╝╚═╝  ╚═╝╚═╝  ╚═══╝ ╚═════╝╚══════╝

*/
// File: contracts/verifiers/TreeUpdateVerifier.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

library Pairing {
    uint256 constant PRIME_Q = 21888242871839275222246405745257275088696311157297823662689037894645226208583;

    struct G1Point {
        uint256 X;
        uint256 Y;
    }

    // Encoding of field elements is: X[0] * z + X[1]
    struct G2Point {
        uint256[2] X;
        uint256[2] Y;
    }

    /*
     * @return The negation of p, i.e. p.plus(p.negate()) should be zero
     */
    function negate(G1Point memory p) internal pure returns (G1Point memory) {
        // The prime q in the base field F_q for G1
        if (p.X == 0 && p.Y == 0) {
            return G1Point(0, 0);
        } else {
            return G1Point(p.X, PRIME_Q - (p.Y % PRIME_Q));
        }
    }

    /*
     * @return r the sum of two points of G1
     */
    function plus(
        G1Point memory p1,
        G1Point memory p2
    ) internal view returns (G1Point memory r) {
        uint256[4] memory input = [
            p1.X, p1.Y,
            p2.X, p2.Y
        ];
        bool success;

        // solium-disable-next-line security/no-inline-assembly
        assembly {
            success := staticcall(sub(gas(), 2000), 6, input, 0xc0, r, 0x60)
            // Use "invalid" to make gas estimation work
            switch success case 0 { invalid() }
        }

        require(success, "pairing-add-failed");
    }

    /*
     * @return r the product of a point on G1 and a scalar, i.e.
     *         p == p.scalarMul(1) and p.plus(p) == p.scalarMul(2) for all
     *         points p.
     */
    function scalarMul(G1Point memory p, uint256 s) internal view returns (G1Point memory r) {
        uint256[3] memory input = [p.X, p.Y, s];
        bool success;

        // solium-disable-next-line security/no-inline-assembly
        assembly {
            success := staticcall(sub(gas(), 2000), 7, input, 0x80, r, 0x60)
            // Use "invalid" to make gas estimation work
            switch success case 0 { invalid() }
        }

        require(success, "pairing-mul-failed");
    }

    /* @return The result of computing the pairing check
     *         e(p1[0], p2[0]) *  .... * e(p1[n], p2[n]) == 1
     *         For example,
     *         pairing([P1(), P1().negate()], [P2(), P2()]) should return true.
     */
    function pairing(
        G1Point memory a1,
        G2Point memory a2,
        G1Point memory b1,
        G2Point memory b2,
        G1Point memory c1,
        G2Point memory c2,
        G1Point memory d1,
        G2Point memory d2
    ) internal view returns (bool) {
        uint256[24] memory input = [
            a1.X, a1.Y, a2.X[0], a2.X[1], a2.Y[0], a2.Y[1],
            b1.X, b1.Y, b2.X[0], b2.X[1], b2.Y[0], b2.Y[1],
            c1.X, c1.Y, c2.X[0], c2.X[1], c2.Y[0], c2.Y[1],
            d1.X, d1.Y, d2.X[0], d2.X[1], d2.Y[0], d2.Y[1]
        ];
        uint256[1] memory out;
        bool success;

        // solium-disable-next-line security/no-inline-assembly
        assembly {
            success := staticcall(sub(gas(), 2000), 8, input, mul(24, 0x20), out, 0x20)
            // Use "invalid" to make gas estimation work
            switch success case 0 { invalid() }
        }

        require(success, "pairing-opcode-failed");
        return out[0] != 0;
    }
}

contract TreeUpdateVerifier {
    uint256 constant SNARK_SCALAR_FIELD = 21888242871839275222246405745257275088548364400416034343698204186575808495617;
    uint256 constant PRIME_Q = 21888242871839275222246405745257275088696311157297823662689037894645226208583;
    using Pairing for *;

    struct VerifyingKey {
        Pairing.G1Point alfa1;
        Pairing.G2Point beta2;
        Pairing.G2Point gamma2;
        Pairing.G2Point delta2;
        Pairing.G1Point[5] IC;
    }

    function verifyingKey() internal pure returns (VerifyingKey memory vk) {
        vk.alfa1 = Pairing.G1Point(uint256(3664066767948966626721593074410523504750081653020983005319283739651830239658), uint256(5721214620732995756499852381736936016024932670933331588236004969175006037996));
        vk.beta2 = Pairing.G2Point([uint256(3790215625843812961978911652770592932007517856922747978527926706514217434695), uint256(1740235995081792065855274144390422820118184965104548996991755866617053974967)], [uint256(6165988665974246541084808240629148405805368452349434517299207934174510397449), uint256(16034017485072495648726603091509033961790552241947133696703251815831385124340)]);
        vk.gamma2 = Pairing.G2Point([uint256(6136503651572829468070415592681731486750345331784722290168198207750471503511), uint256(17155573750315003615285937756005190696467896828984436200373036720127167376579)], [uint256(20271177287287788482139429136125975170988312925163808612462749447029949724355), uint256(2807311044090903086908579792203534180982214587181893041516830197719100999668)]);
        vk.delta2 = Pairing.G2Point([uint256(4267977840077790175628097397628429921136841017304043286835271366026140129833), uint256(21186561435195000282771141635546250843045512930682178345965012031733568307304)], [uint256(18448509423891788285213538599531121667089515773749017310735470654177768947257), uint256(13824035851606331611877613768498505548716994037964734269023290397675282690772)]);
        vk.IC[0] = Pairing.G1Point(uint256(2003337398852492813540461712262313294207108051326299817043310484224564974696), uint256(16045453964494737888473539609875214502702372895181553892784236590596004222805));
        vk.IC[1] = Pairing.G1Point(uint256(14075532166274610130680482840912460899262398324138646377332486692472310860950), uint256(3685672928591896718507683078712569831861965070288470611593509945932511268628));
        vk.IC[2] = Pairing.G1Point(uint256(17847036921708597439717366338586413452058371644164967868446945723191565493446), uint256(15227387043300197630097555025840859960079855561502244581701683050431414467068));
        vk.IC[3] = Pairing.G1Point(uint256(21351109994044319193672897395450272255771733858986935168891886948583996722762), uint256(12911322091038947302662750665759776720041421384888809834389321460975681473245));
        vk.IC[4] = Pairing.G1Point(uint256(15373563149705882573463517025165153708909109884526707025394743272369789946278), uint256(339578758580338369632185682059761985787435721402065500473097245416867760606));

    }

    /*
     * @returns Whether the proof is valid given the hardcoded verifying key
     *          above and the public inputs
     */
    function verifyProof(
        bytes memory proof,
        uint256[4] memory input
    ) public view returns (bool) {
        uint256[8] memory p = abi.decode(proof, (uint256[8]));
        for (uint8 i = 0; i < p.length; i++) {
            // Make sure that each element in the proof is less than the prime q
            require(p[i] < PRIME_Q, "verifier-proof-element-gte-prime-q");
        }
        Pairing.G1Point memory proofA = Pairing.G1Point(p[0], p[1]);
        Pairing.G2Point memory proofB = Pairing.G2Point([p[2], p[3]], [p[4], p[5]]);
        Pairing.G1Point memory proofC = Pairing.G1Point(p[6], p[7]);

        VerifyingKey memory vk = verifyingKey();
        // Compute the linear combination vkX
        Pairing.G1Point memory vkX = vk.IC[0];
        for (uint256 i = 0; i < input.length; i++) {
            // Make sure that every input is less than the snark scalar field
            require(input[i] < SNARK_SCALAR_FIELD, "verifier-input-gte-snark-scalar-field");
            vkX = Pairing.plus(vkX, Pairing.scalarMul(vk.IC[i + 1], input[i]));
        }

        return Pairing.pairing(
            Pairing.negate(proofA),
            proofB,
            vk.alfa1,
            vk.beta2,
            vkX,
            vk.gamma2,
            proofC,
            vk.delta2
        );
    }
}

Contract ABI

[{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[4]","name":"input","type":"uint256[4]"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5061108d806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636bf062b214610030575b600080fd5b61012a600480360360a081101561004657600080fd5b810190808035906020019064010000000081111561006357600080fd5b82018360208201111561007557600080fd5b8035906020019184600183028401116401000000008311171561009757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080608001906004806020026040519081016040528092919082600460200280828437600081840152601f19601f8201169050808301925050505050509192919290505050610142565b60405180821515815260200191505060405180910390f35b600061014c610e88565b8380602001905161010081101561016257600080fd5b8101908091905050905060005b60088160ff161015610213577f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828260ff16600881106101ab57fe5b602002015110610206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806110366022913960400191505060405180910390fd5b808060010191505061016f565b5061021c610eab565b60405180604001604052808360006008811061023457fe5b602002015181526020018360016008811061024b57fe5b6020020151815250905061025d610ec5565b604051806040016040528060405180604001604052808660026008811061028057fe5b602002015181526020018660036008811061029757fe5b602002015181525081526020016040518060400160405280866004600881106102bc57fe5b60200201518152602001866005600881106102d357fe5b602002015181525081525090506102e8610eab565b60405180604001604052808560066008811061030057fe5b602002015181526020018560076008811061031757fe5b60200201518152509050610329610eeb565b610331610467565b905061033b610eab565b816080015160006005811061034c57fe5b6020020151905060005b6004811015610430577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000189826004811061038c57fe5b6020020151106103e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806110116025913960400191505060405180910390fd5b6104218261041c8560800151600185016005811061040157fe5b60200201518c856004811061041257fe5b6020020151610943565b610a16565b91508080600101915050610356565b5061045961043d86610af7565b8584600001518560200151858760400151898960600151610baa565b965050505050505092915050565b61046f610eeb565b60405180604001604052807f0819c9cdec0beb660b42630952fd96924a317ad1dd75446cb8cd093749c4d1aa81526020017f0ca617bc9b339d016fb98964de29529548a766671669ca18b7f099be11bfc7ec8152508160000181905250604051806040016040528060405180604001604052807f08612f9f1e3cbfaeeb7ea2f98398eb5367fb4dd906ba422a746d4714a0147e4781526020017f03d8f04c90e8abde5c8625f62c12ca942fa74c73b4385cb5672bbbf83db011b7815250815260200160405180604001604052807f0da1d36ed95875a1c954c0b9ba769d67f48add362cfe3aa3d73933230547380981526020017f2372eeaac233fa1b3d20937228342e1be6278e3a62bd10b4346800312623adf48152508152508160200181905250604051806040016040528060405180604001604052807f0d912352e19cb8357612fd1059689ebbceac1c4477ec2db33d58cfe37b754e9781526020017f25edb5ecbb7e9f1cd7654d2ea08560329635eb74d41722ebee452cc49d9f2cc3815250815260200160405180604001604052807f2cd1146ac1bfa02ef9281c61ef9a0c0fa489282480b02a378bab967fcb17f6c381526020017f0634e1b9ea95b84fa7dcf3ef18e3e073af920de48d57bb2958692312be8ac7f48152508152508160400181905250604051806040016040528060405180604001604052807f096f97008ddc387c470d7fe44fe25a57200e98667f1ac0802bde00a6051d1a2981526020017f2ed72b37df989864434f1f0d58660312f18bc25219f195f7f728d773c8f30068815250815260200160405180604001604052807f28c97c7e42da40d1bf8698607256b995bcb0370578487c0c63c4bc600cd4be3981526020017f1e90208414bd7c0b5a9f71f5e0bb2872677fda0d8bd8c561f7441b511ceef2d4815250815250816060018190525060405180604001604052807f046dd94a046b063e5b71e76a74ac0b48f947bde400fe328ede8a4257aefad46881526020017f237967b55b5475e8933f21467a3084ae3627daac1f88f1325d053b47a8c79755815250816080015160006005811061078157fe5b602002018190525060405180604001604052807f1f1e7808da7b5314f7dc4b7b34b30e17277efbf9ad7f6a03884111f9dc420c9681526020017f08260456f62843016af3306ffbc39f07241f914d8d941bcc596ee862de814f1481525081608001516001600581106107ef57fe5b602002018190525060405180604001604052807f2775109f37291043e3045834ebd24d328c599c3e71d3b1fb8f1ee726a6d424c681526020017f21aa6548cc8fe0d7a126b1cd42aeff2e20879540f13940bf1c2a135bda16f9fc815250816080015160026005811061085d57fe5b602002018190525060405180604001604052807f2f344ccd239deedddff0352bc86c40270106e2ccad9206f2ceec28147c350e4a81526020017f1c8b8ca122c90f2e6c82af29609881195d1c3a454e1b1030b662134309d90add81525081608001516003600581106108cb57fe5b602002018190525060405180604001604052807f21fd20ddedbfa42c366fb99573a916bc0c730fa303e6702d486ef679f53949a681526020017ec031dc331ee09802c7851beee53a2de5da55e725e333772a2513fe89b409de815250816080015160046005811061093857fe5b602002018190525090565b61094b610eab565b610953610f38565b60405180606001604052808560000151815260200185602001518152602001848152509050600060608360808460076107d05a03fa905080600081146109985761099a565bfe5b5080610a0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f70616972696e672d6d756c2d6661696c6564000000000000000000000000000081525060200191505060405180910390fd5b505092915050565b610a1e610eab565b610a26610f5a565b604051806080016040528085600001518152602001856020015181526020018460000151815260200184602001518152509050600060608360c08460066107d05a03fa90508060008114610a7957610a7b565bfe5b5080610aef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f70616972696e672d6164642d6661696c6564000000000000000000000000000081525060200191505060405180910390fd5b505092915050565b610aff610eab565b60008260000151148015610b17575060008260200151145b15610b3a5760405180604001604052806000815260200160008152509050610ba5565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015181610b7c57fe5b067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470381525090505b919050565b6000610bb4610f7c565b6040518061030001604052808b6000015181526020018b6020015181526020018a60000151600060028110610be557fe5b602002015181526020018a60000151600160028110610c0057fe5b602002015181526020018a60200151600060028110610c1b57fe5b602002015181526020018a60200151600160028110610c3657fe5b6020020151815260200189600001518152602001896020015181526020018860000151600060028110610c6557fe5b602002015181526020018860000151600160028110610c8057fe5b602002015181526020018860200151600060028110610c9b57fe5b602002015181526020018860200151600160028110610cb657fe5b6020020151815260200187600001518152602001876020015181526020018660000151600060028110610ce557fe5b602002015181526020018660000151600160028110610d0057fe5b602002015181526020018660200151600060028110610d1b57fe5b602002015181526020018660200151600160028110610d3657fe5b6020020151815260200185600001518152602001856020015181526020018460000151600060028110610d6557fe5b602002015181526020018460000151600160028110610d8057fe5b602002015181526020018460200151600060028110610d9b57fe5b602002015181526020018460200151600160028110610db657fe5b60200201518152509050610dc8610f9f565b600060208260206018028560086107d05a03fa90508060008114610deb57610ded565bfe5b5080610e61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f70616972696e672d6f70636f64652d6661696c6564000000000000000000000081525060200191505060405180910390fd5b600082600060018110610e7057fe5b60200201511415935050505098975050505050505050565b604051806101000160405280600890602082028036833780820191505090505090565b604051806040016040528060008152602001600081525090565b6040518060400160405280610ed8610fc1565b8152602001610ee5610fc1565b81525090565b6040518060a00160405280610efe610eab565b8152602001610f0b610ec5565b8152602001610f18610ec5565b8152602001610f25610ec5565b8152602001610f32610fe3565b81525090565b6040518060600160405280600390602082028036833780820191505090505090565b6040518060800160405280600490602082028036833780820191505090505090565b604051806103000160405280601890602082028036833780820191505090505090565b6040518060200160405280600190602082028036833780820191505090505090565b6040518060400160405280600290602082028036833780820191505090505090565b6040518060a001604052806005905b610ffa610eab565b815260200190600190039081610ff2579050509056fe76657269666965722d696e7075742d6774652d736e61726b2d7363616c61722d6669656c6476657269666965722d70726f6f662d656c656d656e742d6774652d7072696d652d71a2646970667358221220f937ab1829819f55c15bbb3f178b7f8dd09e6cbdf429a6e39ade780f9ba4afe464736f6c634300060c0033

Deployed ByteCode Sourcemap

5475:4509:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8645:1336;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;8757:4;8774:19;;:::i;:::-;8807:5;8796:31;;;;;;;;;;;;;;;;;;;;;;;8774:53;;8843:7;8838:207;8860:8;8856:1;:12;;;8838:207;;;5659:77;8980:1;8982;8980:4;;;;;;;;;;;;;:14;8972:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8870:3;;;;;;;8838:207;;;;9055:29;;:::i;:::-;9087:27;;;;;;;;9103:1;9105;9103:4;;;;;;;;;;;9087:27;;;;9109:1;9111;9109:4;;;;;;;;;;;9087:27;;;9055:59;;9125:29;;:::i;:::-;9157:43;;;;;;;;;;;;;;;;9174:1;9176;9174:4;;;;;;;;;;;9157:43;;;;9180:1;9182;9180:4;;;;;;;;;;;9157:43;;;;;;;;;;;;;;;9188:1;9190;9188:4;;;;;;;;;;;9157:43;;;;9194:1;9196;9194:4;;;;;;;;;;;9157:43;;;;;;9125:75;;9211:29;;:::i;:::-;9243:27;;;;;;;;9259:1;9261;9259:4;;;;;;;;;;;9243:27;;;;9265:1;9267;9265:4;;;;;;;;;;;9243:27;;;9211:59;;9283:22;;:::i;:::-;9308:14;:12;:14::i;:::-;9283:39;;9380:26;;:::i;:::-;9409:2;:5;;;9415:1;9409:8;;;;;;;;;;;9380:37;;9433:9;9428:309;9452:12;9448:1;:16;9428:309;;;5548:77;9573:5;9579:1;9573:8;;;;;;;;;;;:29;9565:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9665:60;9678:3;9683:41;9701:2;:5;;;9711:1;9707;:5;9701:12;;;;;;;;;;;9715:5;9721:1;9715:8;;;;;;;;;;;9683:17;:41::i;:::-;9665:12;:60::i;:::-;9659:66;;9466:3;;;;;;;9428:309;;;;9756:217;9786:22;9801:6;9786:14;:22::i;:::-;9823:6;9844:2;:8;;;9867:2;:8;;;9890:3;9908:2;:9;;;9932:6;9953:2;:9;;;9756:15;:217::i;:::-;9749:224;;;;;;;;8645:1336;;;;:::o;5969:2528::-;6016:22;;:::i;:::-;6062:189;;;;;;;;6086:76;6062:189;;;;6173:76;6062:189;;;6051:2;:8;;:200;;;;6273:368;;;;;;;;;;;;;;;;6298:76;6273:368;;;;6385:76;6273:368;;;;;;;;;;;;;;;6474:76;6273:368;;;;6561:77;6273:368;;;;;;6262:2;:8;;:379;;;;6664:369;;;;;;;;;;;;;;;;6689:76;6664:369;;;;6776:77;6664:369;;;;;;;;;;;;;;;6866:77;6664:369;;;;6954:76;6664:369;;;;;;6652:2;:9;;:381;;;;7056:370;;;;;;;;;;;;;;;;7081:76;7056:370;;;;7168:77;7056:370;;;;;;;;;;;;;;;7258:77;7056:370;;;;7346:77;7056:370;;;;;;7044:2;:9;;:382;;;;7448:190;;;;;;;;7472:76;7448:190;;;;7559:77;7448:190;;;7437:2;:5;;;7443:1;7437:8;;;;;;;;;;:201;;;;7660:190;;;;;;;;7684:77;7660:190;;;;7772:76;7660:190;;;7649:2;:5;;;7655:1;7649:8;;;;;;;;;;:201;;;;7872:191;;;;;;;;7896:77;7872:191;;;;7984:77;7872:191;;;7861:2;:5;;;7867:1;7861:8;;;;;;;;;;:202;;;;8085:191;;;;;;;;8109:77;8085:191;;;;8197:77;8085:191;;;8074:2;:5;;;8080:1;8074:8;;;;;;;;;;:202;;;;8298:189;;;;;;;;8322:77;8298:189;;;;8410:75;8298:189;;;8287:2;:5;;;8293:1;8287:8;;;;;;;;;;:200;;;;5969:2528;:::o;3706:504::-;3777:16;;:::i;:::-;3806:23;;:::i;:::-;:39;;;;;;;;3833:1;:3;;;3806:39;;;;3838:1;:3;;;3806:39;;;;3843:1;3806:39;;;;;3856:12;4029:4;4026:1;4020:4;4013:5;4010:1;4003:4;3996:5;3992:16;3981:53;3970:64;;4113:7;4126:1;4121:20;;;;4106:35;;4121:20;4130:9;4106:35;;4172:7;4164:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3706:504;;;;;;:::o;2932:581::-;3032:16;;:::i;:::-;3061:23;;:::i;:::-;:87;;;;;;;;3102:2;:4;;;3061:87;;;;3108:2;:4;;;3061:87;;;;3127:2;:4;;;3061:87;;;;3133:2;:4;;;3061:87;;;;;3159:12;3332:4;3329:1;3323:4;3316:5;3313:1;3306:4;3299:5;3295:16;3284:53;3273:64;;3416:7;3429:1;3424:20;;;;3409:35;;3424:20;3433:9;3409:35;;3475:7;3467:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2932:581;;;;;;:::o;2565:296::-;2622:14;;:::i;:::-;2713:1;2706;:3;;;:8;:20;;;;;2725:1;2718;:3;;;:8;2706:20;2702:152;;;2750:13;;;;;;;;2758:1;2750:13;;;;2761:1;2750:13;;;2743:20;;;;2702:152;2803:39;;;;;;;;2811:1;:3;;;2803:39;;;;2185:77;2827:1;:3;;;:13;;;;;;2185:77;2816:25;2803:39;;;2796:46;;2565:296;;;;:::o;4458:1010::-;4729:4;4746:24;;:::i;:::-;:282;;;;;;;;4788:2;:4;;;4746:282;;;;4794:2;:4;;;4746:282;;;;4800:2;:4;;;4805:1;4800:7;;;;;;;;;;;4746:282;;;;4809:2;:4;;;4814:1;4809:7;;;;;;;;;;;4746:282;;;;4818:2;:4;;;4823:1;4818:7;;;;;;;;;;;4746:282;;;;4827:2;:4;;;4832:1;4827:7;;;;;;;;;;;4746:282;;;;4849:2;:4;;;4746:282;;;;4855:2;:4;;;4746:282;;;;4861:2;:4;;;4866:1;4861:7;;;;;;;;;;;4746:282;;;;4870:2;:4;;;4875:1;4870:7;;;;;;;;;;;4746:282;;;;4879:2;:4;;;4884:1;4879:7;;;;;;;;;;;4746:282;;;;4888:2;:4;;;4893:1;4888:7;;;;;;;;;;;4746:282;;;;4910:2;:4;;;4746:282;;;;4916:2;:4;;;4746:282;;;;4922:2;:4;;;4927:1;4922:7;;;;;;;;;;;4746:282;;;;4931:2;:4;;;4936:1;4931:7;;;;;;;;;;;4746:282;;;;4940:2;:4;;;4945:1;4940:7;;;;;;;;;;;4746:282;;;;4949:2;:4;;;4954:1;4949:7;;;;;;;;;;;4746:282;;;;4971:2;:4;;;4746:282;;;;4977:2;:4;;;4746:282;;;;4983:2;:4;;;4988:1;4983:7;;;;;;;;;;;4746:282;;;;4992:2;:4;;;4997:1;4992:7;;;;;;;;;;;4746:282;;;;5001:2;:4;;;5006:1;5001:7;;;;;;;;;;;4746:282;;;;5010:2;:4;;;5015:1;5010:7;;;;;;;;;;;4746:282;;;;;5039:21;;:::i;:::-;5071:12;5255:4;5250:3;5243:4;5239:2;5235:13;5228:5;5225:1;5218:4;5211:5;5207:16;5196:64;5185:75;;5339:7;5352:1;5347:20;;;;5332:35;;5347:20;5356:9;5332:35;;5398:7;5390:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5459:1;5449:3;5453:1;5449:6;;;;;;;;;;;:11;;5442:18;;;;;4458:1010;;;;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://f937ab1829819f55c15bbb3f178b7f8dd09e6cbdf429a6e39ade780f9ba4afe4
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading