Contract 0x80c4f08bd281ca58c3bc8dcefdb3fabc9b85fc47

Contract Overview

Balance:
0 MATIC
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x901747443e0e93f87c628916553187c1e5c42a1eed7da3781a3d0b9cd8faadbdUnpause263159902022-05-14 12:05:2248 days 8 hrs ago0x3bc14f7b6c5871994caafdcc5fd42d436b6f4286 IN  0x80c4f08bd281ca58c3bc8dcefdb3fabc9b85fc470 MATIC0.000236522681 8.716195507
0x757352a11c2294ab5e6602db7705cf4d5d220631b84caee0e229062ceb77b76cUnpause263159722022-05-14 12:02:2248 days 8 hrs ago0x3bc14f7b6c5871994caafdcc5fd42d436b6f4286 IN  0x80c4f08bd281ca58c3bc8dcefdb3fabc9b85fc470 MATIC0.000261053357 8.720382058
0x3c5c7a27f13b615f4fab068039d04c12f5674eed3cfed50e3883bc32f7fc1adeSet Claim Merkle...263159702022-05-14 12:02:0248 days 8 hrs ago0x3bc14f7b6c5871994caafdcc5fd42d436b6f4286 IN  0x80c4f08bd281ca58c3bc8dcefdb3fabc9b85fc470 MATIC0.000457597079 8.675812972
0x6361a1e019db8d00e083e31dd7284f7d1cdc557fb8db2e9439f8ede4874329c5Pause263159692022-05-14 12:01:5248 days 8 hrs ago0x3bc14f7b6c5871994caafdcc5fd42d436b6f4286 IN  0x80c4f08bd281ca58c3bc8dcefdb3fabc9b85fc470 MATIC0.000234845581 8.675812972
0xf3dbcbd34c9051e97c15787a647b0752dfa9461ccc04f919bebb940896793fae0x60806040263159642022-05-14 12:01:1648 days 8 hrs ago0x3bc14f7b6c5871994caafdcc5fd42d436b6f4286 IN  Contract Creation0 MATIC0.012679159167 8.725178673
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xbB9b15c295eB0415be742FE20fc6Cd0022D29239

Contract Name:
NFTDistributor

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license
/**
 *Submitted for verification at polygonscan.com on 2022-05-13
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity =0.8.12;

// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol)

/**
 * @dev These functions deal with verification of Merkle Trees proofs.
 *
 * The proofs can be generated using the JavaScript library
 * https://github.com/miguelmota/merkletreejs[merkletreejs].
 * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
 *
 * See `test/utils/cryptography/MerkleProof.test.js` for some examples.
 *
 * WARNING: You should avoid using leaf values that are 64 bytes long prior to
 * hashing, or use a hash function other than keccak256 for hashing leaves.
 * This is because the concatenation of a sorted pair of internal nodes in
 * the merkle tree could be reinterpreted as a leaf value.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     *
     * _Available since v4.4._
     */
    function processProof(bytes32[] memory proof, bytes32 leaf)
        internal
        pure
        returns (bytes32)
    {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b)
        private
        pure
        returns (bytes32 value)
    {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

interface INFT1155 {
    function mint(
        address account,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) external;

    function mintBatch(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) external returns (bool);
}

interface IRaffleTicket {
    function burnFrom(address to, uint256 amount) external returns (bool);
}

contract NFTDistributor {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    event ClaimMerkleRootUpdated(bytes32 oldRoot, bytes32 newRoot);

    /// @notice Emitted after a successful NFT claim
    /// @param account recipient of claim
    /// @param tokenIds of NFT claimed
    /// @param amounts of NFT claimed
    event NFTClaimed(
        uint256 indexed index,
        address indexed account,
        uint256[] tokenIds,
        uint256[] amounts
    );

    /// @notice Thrown if address has already claimed
    error NFTAlreadyClaimed();

    mapping(address => bool) private _owner;
    bool private _paused;

    address public RAFFLE_TICKET_ADDRESS;
    address public NFT_ADDRESS;
    bytes32 public ClaimMerkleRoot;

    /// @notice Mapping of addresses who have claimed tokens
    // This is a packed array of booleans.
    mapping(uint256 => uint256) private claimedBitMap;

    uint256[] private claimedWord;

    constructor(
        address[] memory owner,
        address nftaddr,
        address raffleaddr
    ) {
        for (uint256 i = 0; i < owner.length; i++) {
            _owner[owner[i]] = true;
        }
        _paused = true;
        NFT_ADDRESS = nftaddr;
        RAFFLE_TICKET_ADDRESS = raffleaddr;
    }

    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(
            isOwner(_msgSender()),
            "NFTDistributor: caller is not the owner"
        );
        _;
    }

    /**
     * @dev Returns true if caller is the address of the current owner.
     */
    function isOwner(address caller) public view virtual returns (bool) {
        return _owner[caller];
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "NFTDistributor#Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "NFTDistributor#Pausable: not paused");
        _;
    }

    function pause() external onlyOwner {
        _paused = true;
        emit Paused(_msgSender());
    }

    function unpause() external onlyOwner {
        _paused = false;
        emit Unpaused(_msgSender());
    }

    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function setClaimMerkleRoot(bytes32 root) external onlyOwner {
        require(paused(), "NFTDistributor#setClaimMerkleRoot: not paused (root can be changed only whenPaused)");
        for (uint256 i = 0; i < claimedWord.length; i++) {
            delete claimedBitMap[claimedWord[i]];
        }
        delete claimedWord;
        emit ClaimMerkleRootUpdated(ClaimMerkleRoot, root);
        ClaimMerkleRoot = root;
    }

    function isClaimed(uint256 index) public view returns (bool) {
        uint256 claimedWordIndex = index / 256;
        uint256 claimedBitIndex = index % 256;
        uint256 claimedWordValue = claimedBitMap[claimedWordIndex];
        uint256 mask = (1 << claimedBitIndex);
        return claimedWordValue & mask == mask;
    }

    function _setClaimed(uint256 index) private {
        uint256 claimedWordIndex = index / 256;
        uint256 claimedBitIndex = index % 256;
        if (claimedBitMap[claimedWordIndex] == 0) {
            claimedWord.push(claimedWordIndex);
        }
        claimedBitMap[claimedWordIndex] =
            claimedBitMap[claimedWordIndex] |
            (1 << claimedBitIndex);
    }

    function claimNFT(
        uint256 index,
        uint256[] calldata tokenIds,
        uint256[] calldata amounts,
        uint256 rafflecount,
        bytes32[] calldata merkleProof
    ) external whenNotPaused returns (bool) {
        require(
            !isContract(_msgSender()),
            "NFTDistributor#claimNFT: no contract allowed"
        );
        require(
            !isClaimed(index),
            "NFTDistributor#claimNFT: NFT Already Claimed"
        );
        bytes32 leafnode = keccak256(
            abi.encodePacked(
                index,
                _msgSender(),
                tokenIds,
                amounts,
                rafflecount
            )
        );
        require(
            MerkleProof.verify(merkleProof, ClaimMerkleRoot, leafnode),
            "NFTDistributor#claimNFT: Invalid proof."
        );
        _setClaimed(index);
        require(
            IRaffleTicket(RAFFLE_TICKET_ADDRESS).burnFrom(
                _msgSender(),
                rafflecount
            ),
            "NFTDistributor#claimNFT: Burning Raffle Ticket Failed"
        );
        require(INFT1155(NFT_ADDRESS).mintBatch(_msgSender(), tokenIds, amounts, ""));

        emit NFTClaimed(index, _msgSender(), tokenIds, amounts);

        return true;
    }
}

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"owner","type":"address[]"},{"internalType":"address","name":"nftaddr","type":"address"},{"internalType":"address","name":"raffleaddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NFTAlreadyClaimed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"oldRoot","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"newRoot","type":"bytes32"}],"name":"ClaimMerkleRootUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"NFTClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"ClaimMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFT_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RAFFLE_TICKET_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256","name":"rafflecount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claimNFT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"}],"name":"setClaimMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162001bab38038062001bab833981810160405281019062000037919062000361565b60005b8351811015620000ce5760016000808684815181106200005f576200005e620003dc565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080620000c59062000444565b9150506200003a565b5060018060006101000a81548160ff02191690831515021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505062000492565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620001d7826200018c565b810181811067ffffffffffffffff82111715620001f957620001f86200019d565b5b80604052505050565b60006200020e62000173565b90506200021c8282620001cc565b919050565b600067ffffffffffffffff8211156200023f576200023e6200019d565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002828262000255565b9050919050565b620002948162000275565b8114620002a057600080fd5b50565b600081519050620002b48162000289565b92915050565b6000620002d1620002cb8462000221565b62000202565b90508083825260208201905060208402830185811115620002f757620002f662000250565b5b835b818110156200032457806200030f8882620002a3565b845260208401935050602081019050620002f9565b5050509392505050565b600082601f83011262000346576200034562000187565b5b815162000358848260208601620002ba565b91505092915050565b6000806000606084860312156200037d576200037c6200017d565b5b600084015167ffffffffffffffff8111156200039e576200039d62000182565b5b620003ac868287016200032e565b9350506020620003bf86828701620002a3565b9250506040620003d286828701620002a3565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062000451826200043a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156200048757620004866200040b565b5b600182019050919050565b61170980620004a26000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638456cb59116100665780638456cb59146101375780639e34070f14610141578063b32c5c4514610171578063cd94f0e71461018f578063fd1e2962146101bf5761009e565b80631cc97557146100a357806323745ddc146100c15780632f54bf6e146100df5780633f4ba83a1461010f5780635c975abb14610119575b600080fd5b6100ab6101db565b6040516100b89190610af5565b60405180910390f35b6100c96101e1565b6040516100d69190610b51565b60405180910390f35b6100f960048036038101906100f49190610ba2565b610205565b6040516101069190610bea565b60405180910390f35b61011761025a565b005b610121610304565b60405161012e9190610bea565b60405180910390f35b61013f61031b565b005b61015b60048036038101906101569190610c3b565b6103c4565b6040516101689190610bea565b60405180910390f35b61017961041a565b6040516101869190610b51565b60405180910390f35b6101a960048036038101906101a49190610d23565b610440565b6040516101b69190610bea565b60405180910390f35b6101d960048036038101906101d49190610e2b565b6107fe565b005b60035481565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61026a610265610940565b610205565b6102a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a090610edb565b60405180910390fd5b6000600160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6102ed610940565b6040516102fa9190610b51565b60405180910390a1565b6000600160009054906101000a900460ff16905090565b61032b610326610940565b610205565b61036a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036190610edb565b60405180910390fd5b60018060006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586103ad610940565b6040516103ba9190610b51565b60405180910390a1565b600080610100836103d59190610f59565b90506000610100846103e79190610f8a565b90506000600460008481526020019081526020016000205490506000826001901b90508081831614945050505050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061044a610304565b1561048a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048190611007565b60405180910390fd5b61049a610495610940565b610948565b156104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190611099565b60405180910390fd5b6104e3896103c4565b15610523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051a9061112b565b60405180910390fd5b60008961052e610940565b8a8a8a8a8a604051602001610549979695949392919061122f565b6040516020818303038152906040528051906020012090506105af848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506003548361095b565b6105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e5906112fc565b60405180910390fd5b6105f78a610972565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166379cc679061063b610940565b876040518363ffffffff1660e01b815260040161065992919061132b565b6020604051808303816000875af1158015610678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069c9190611380565b6106db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d29061141f565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f7fdffa610721610940565b8b8b8b8b6040518663ffffffff1660e01b81526004016107459594939291906114e3565b6020604051808303816000875af1158015610764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107889190611380565b61079157600080fd5b610799610940565b73ffffffffffffffffffffffffffffffffffffffff168a7feffd497d2d3ab226ffafca155e3a71876302a6119b078ad7ae466a29236afd8b8b8b8b8b6040516107e5949392919061153f565b60405180910390a3600191505098975050505050505050565b61080e610809610940565b610205565b61084d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084490610edb565b60405180910390fd5b610855610304565b610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088b90611612565b60405180910390fd5b60005b6005805490508110156108ec5760046000600583815481106108bc576108bb611632565b5b906000526020600020015481526020019081526020016000206000905580806108e490611661565b915050610897565b50600560006108fb9190610a9e565b7fbab4d41daf762178641638af9d21f6cd28c181a31a749ec080813343237c02bf6003548260405161092e9291906116aa565b60405180910390a18060038190555050565b600033905090565b600080823b905060008111915050919050565b6000826109688584610a12565b1490509392505050565b6000610100826109829190610f59565b90506000610100836109949190610f8a565b90506000600460008481526020019081526020016000205414156109dc5760058290806001815401808255809150506001900390600052602060002001600090919091909150555b806001901b6004600084815260200190815260200160002054176004600084815260200190815260200160002081905550505050565b60008082905060005b8451811015610a7c576000858281518110610a3957610a38611632565b5b60200260200101519050808311610a5b57610a548382610a87565b9250610a68565b610a658184610a87565b92505b508080610a7490611661565b915050610a1b565b508091505092915050565b600082600052816020526040600020905092915050565b5080546000825590600052602060002090810190610abc9190610abf565b50565b5b80821115610ad8576000816000905550600101610ac0565b5090565b6000819050919050565b610aef81610adc565b82525050565b6000602082019050610b0a6000830184610ae6565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b3b82610b10565b9050919050565b610b4b81610b30565b82525050565b6000602082019050610b666000830184610b42565b92915050565b600080fd5b600080fd5b610b7f81610b30565b8114610b8a57600080fd5b50565b600081359050610b9c81610b76565b92915050565b600060208284031215610bb857610bb7610b6c565b5b6000610bc684828501610b8d565b91505092915050565b60008115159050919050565b610be481610bcf565b82525050565b6000602082019050610bff6000830184610bdb565b92915050565b6000819050919050565b610c1881610c05565b8114610c2357600080fd5b50565b600081359050610c3581610c0f565b92915050565b600060208284031215610c5157610c50610b6c565b5b6000610c5f84828501610c26565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610c8d57610c8c610c68565b5b8235905067ffffffffffffffff811115610caa57610ca9610c6d565b5b602083019150836020820283011115610cc657610cc5610c72565b5b9250929050565b60008083601f840112610ce357610ce2610c68565b5b8235905067ffffffffffffffff811115610d0057610cff610c6d565b5b602083019150836020820283011115610d1c57610d1b610c72565b5b9250929050565b60008060008060008060008060a0898b031215610d4357610d42610b6c565b5b6000610d518b828c01610c26565b985050602089013567ffffffffffffffff811115610d7257610d71610b71565b5b610d7e8b828c01610c77565b9750975050604089013567ffffffffffffffff811115610da157610da0610b71565b5b610dad8b828c01610c77565b95509550506060610dc08b828c01610c26565b935050608089013567ffffffffffffffff811115610de157610de0610b71565b5b610ded8b828c01610ccd565b92509250509295985092959890939650565b610e0881610adc565b8114610e1357600080fd5b50565b600081359050610e2581610dff565b92915050565b600060208284031215610e4157610e40610b6c565b5b6000610e4f84828501610e16565b91505092915050565b600082825260208201905092915050565b7f4e46544469737472696275746f723a2063616c6c6572206973206e6f7420746860008201527f65206f776e657200000000000000000000000000000000000000000000000000602082015250565b6000610ec5602783610e58565b9150610ed082610e69565b604082019050919050565b60006020820190508181036000830152610ef481610eb8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f6482610c05565b9150610f6f83610c05565b925082610f7f57610f7e610efb565b5b828204905092915050565b6000610f9582610c05565b9150610fa083610c05565b925082610fb057610faf610efb565b5b828206905092915050565b7f4e46544469737472696275746f72235061757361626c653a2070617573656400600082015250565b6000610ff1601f83610e58565b9150610ffc82610fbb565b602082019050919050565b6000602082019050818103600083015261102081610fe4565b9050919050565b7f4e46544469737472696275746f7223636c61696d4e46543a206e6f20636f6e7460008201527f7261637420616c6c6f7765640000000000000000000000000000000000000000602082015250565b6000611083602c83610e58565b915061108e82611027565b604082019050919050565b600060208201905081810360008301526110b281611076565b9050919050565b7f4e46544469737472696275746f7223636c61696d4e46543a204e465420416c7260008201527f6561647920436c61696d65640000000000000000000000000000000000000000602082015250565b6000611115602c83610e58565b9150611120826110b9565b604082019050919050565b6000602082019050818103600083015261114481611108565b9050919050565b6000819050919050565b61116661116182610c05565b61114b565b82525050565b60008160601b9050919050565b60006111848261116c565b9050919050565b600061119682611179565b9050919050565b6111ae6111a982610b30565b61118b565b82525050565b600081905092915050565b600080fd5b82818337600083830152505050565b60006111df83856111b4565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611212576112116111bf565b5b6020830292506112238385846111c4565b82840190509392505050565b600061123b828a611155565b60208201915061124b828961119d565b60148201915061125c8287896111d3565b91506112698285876111d3565b91506112758284611155565b60208201915081905098975050505050505050565b7f4e46544469737472696275746f7223636c61696d4e46543a20496e76616c696460008201527f2070726f6f662e00000000000000000000000000000000000000000000000000602082015250565b60006112e6602783610e58565b91506112f18261128a565b604082019050919050565b60006020820190508181036000830152611315816112d9565b9050919050565b61132581610c05565b82525050565b60006040820190506113406000830185610b42565b61134d602083018461131c565b9392505050565b61135d81610bcf565b811461136857600080fd5b50565b60008151905061137a81611354565b92915050565b60006020828403121561139657611395610b6c565b5b60006113a48482850161136b565b91505092915050565b7f4e46544469737472696275746f7223636c61696d4e46543a204275726e696e6760008201527f20526166666c65205469636b6574204661696c65640000000000000000000000602082015250565b6000611409603583610e58565b9150611414826113ad565b604082019050919050565b60006020820190508181036000830152611438816113fc565b9050919050565b600082825260208201905092915050565b600061145c838561143f565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561148f5761148e6111bf565b5b6020830292506114a08385846111c4565b82840190509392505050565b600082825260208201905092915050565b50565b60006114cd6000836114ac565b91506114d8826114bd565b600082019050919050565b60006080820190506114f86000830188610b42565b818103602083015261150b818688611450565b90508181036040830152611520818486611450565b90508181036060830152611533816114c0565b90509695505050505050565b6000604082019050818103600083015261155a818688611450565b9050818103602083015261156f818486611450565b905095945050505050565b7f4e46544469737472696275746f7223736574436c61696d4d65726b6c65526f6f60008201527f743a206e6f74207061757365642028726f6f742063616e206265206368616e6760208201527f6564206f6e6c79207768656e5061757365642900000000000000000000000000604082015250565b60006115fc605383610e58565b91506116078261157a565b606082019050919050565b6000602082019050818103600083015261162b816115ef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061166c82610c05565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561169f5761169e610f2a565b5b600182019050919050565b60006040820190506116bf6000830185610ae6565b6116cc6020830184610ae6565b939250505056fea264697066735822122080cd5aa22aea88cf80aad06c99e126d5d88dd0ea2df7dd99e1b6c52c42a5f9b264736f6c634300080c00330000000000000000000000000000000000000000000000000000000000000060000000000000000000000000e8c0184198ef8265985f24e96b693ac96646451d0000000000000000000000001c37a3e5ec67538906041c0eb5d156fc02804cfb00000000000000000000000000000000000000000000000000000000000000030000000000000000000000003ce5259029d1636e93f4f5080fadab70c9e962d80000000000000000000000003bc14f7b6c5871994caafdcc5fd42d436b6f4286000000000000000000000000616a9b8bfaf2189f7b896edc75c9af67af89df93

Deployed ByteCode Sourcemap

3163:5963:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4073:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3997:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5094:108;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6109:110;;;:::i;:::-;;5302:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5996:105;;;:::i;:::-;;7057:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4040:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7794:1329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6620:429;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4073:30;;;;:::o;3997:36::-;;;;;;;;;;;;:::o;5094:108::-;5156:4;5180:6;:14;5187:6;5180:14;;;;;;;;;;;;;;;;;;;;;;;;;5173:21;;5094:108;;;:::o;6109:110::-;4887:21;4895:12;:10;:12::i;:::-;4887:7;:21::i;:::-;4865:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;6168:5:::1;6158:7;;:15;;;;;;;;;;;;;;;;;;6189:22;6198:12;:10;:12::i;:::-;6189:22;;;;;;:::i;:::-;;;;;;;;6109:110::o:0;5302:86::-;5349:4;5373:7;;;;;;;;;;;5366:14;;5302:86;:::o;5996:105::-;4887:21;4895:12;:10;:12::i;:::-;4887:7;:21::i;:::-;4865:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;6053:4:::1;6043:7:::0;::::1;:14;;;;;;;;;;;;;;;;;;6073:20;6080:12;:10;:12::i;:::-;6073:20;;;;;;:::i;:::-;;;;;;;;5996:105::o:0;7057:332::-;7112:4;7129:24;7164:3;7156:5;:11;;;;:::i;:::-;7129:38;;7178:23;7212:3;7204:5;:11;;;;:::i;:::-;7178:37;;7226:24;7253:13;:31;7267:16;7253:31;;;;;;;;;;;;7226:58;;7295:12;7316:15;7311:1;:20;;7295:37;;7377:4;7369;7350:16;:23;:31;7343:38;;;;;;7057:332;;;:::o;4040:26::-;;;;;;;;;;;;;:::o;7794:1329::-;8021:4;5628:8;:6;:8::i;:::-;5627:9;5619:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;8061:24:::1;8072:12;:10;:12::i;:::-;8061:10;:24::i;:::-;8060:25;8038:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;8191:16;8201:5;8191:9;:16::i;:::-;8190:17;8168:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8290:16;8368:5;8392:12;:10;:12::i;:::-;8423:8;;8450:7;;8476:11;8333:169;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8309:204;;;;;;8290:223;;8546:58;8565:11;;8546:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8578:15;;8595:8;8546:18;:58::i;:::-;8524:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;8682:18;8694:5;8682:11;:18::i;:::-;8747:21;::::0;::::1;;;;;;;;8733:45;;;8797:12;:10;:12::i;:::-;8828:11;8733:121;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8711:224;;;;;;;;;;;;:::i;:::-;;;;;;;;;8963:11;;;;;;;;;;;8954:31;;;8986:12;:10;:12::i;:::-;9000:8;;9010:7;;8954:68;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8946:77;;;::::0;::::1;;9059:12;:10;:12::i;:::-;9041:50;;9052:5;9041:50;9073:8;;9083:7;;9041:50;;;;;;;;;:::i;:::-;;;;;;;;9111:4;9104:11;;;7794:1329:::0;;;;;;;;;;:::o;6620:429::-;4887:21;4895:12;:10;:12::i;:::-;4887:7;:21::i;:::-;4865:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;6700:8:::1;:6;:8::i;:::-;6692:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;6812:9;6807:112;6831:11;:18;;;;6827:1;:22;6807:112;;;6878:13;:29;6892:11;6904:1;6892:14;;;;;;;;:::i;:::-;;;;;;;;;;6878:29;;;;;;;;;;;6871:36;;;6851:3;;;;;:::i;:::-;;;;6807:112;;;;6936:11;;6929:18;;;;:::i;:::-;6963:45;6986:15;;7003:4;6963:45;;;;;;;:::i;:::-;;;;;;;;7037:4;7019:15;:22;;;;6620:429:::0;:::o;4642:98::-;4695:7;4722:10;4715:17;;4642:98;:::o;6227:385::-;6287:4;6493:12;6560:7;6548:20;6540:28;;6603:1;6596:4;:8;6589:15;;;6227:385;;;:::o;1190:190::-;1315:4;1368;1339:25;1352:5;1359:4;1339:12;:25::i;:::-;:33;1332:40;;1190:190;;;;;:::o;7397:389::-;7452:24;7487:3;7479:5;:11;;;;:::i;:::-;7452:38;;7501:23;7535:3;7527:5;:11;;;;:::i;:::-;7501:37;;7588:1;7553:13;:31;7567:16;7553:31;;;;;;;;;;;;:36;7549:103;;;7606:11;7623:16;7606:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7549:103;7762:15;7757:1;:20;;7709:13;:31;7723:16;7709:31;;;;;;;;;;;;:69;7662:13;:31;7676:16;7662:31;;;;;;;;;;;:116;;;;7441:345;;7397:389;:::o;1741:707::-;1851:7;1876:20;1899:4;1876:27;;1919:9;1914:497;1938:5;:12;1934:1;:16;1914:497;;;1972:20;1995:5;2001:1;1995:8;;;;;;;;:::i;:::-;;;;;;;;1972:31;;2038:12;2022;:28;2018:382;;2165:42;2180:12;2194;2165:14;:42::i;:::-;2150:57;;2018:382;;;2342:42;2357:12;2371;2342:14;:42::i;:::-;2327:57;;2018:382;1957:454;1952:3;;;;;:::i;:::-;;;;1914:497;;;;2428:12;2421:19;;;1741:707;;;;:::o;2456:256::-;2551:13;2619:1;2613:4;2606:15;2648:1;2642:4;2635:15;2689:4;2683;2673:21;2664:30;;2456:256;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:126::-;479:7;519:42;512:5;508:54;497:65;;442:126;;;:::o;574:96::-;611:7;640:24;658:5;640:24;:::i;:::-;629:35;;574:96;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1109:117::-;1218:1;1215;1208:12;1232:117;1341:1;1338;1331:12;1355:122;1428:24;1446:5;1428:24;:::i;:::-;1421:5;1418:35;1408:63;;1467:1;1464;1457:12;1408:63;1355:122;:::o;1483:139::-;1529:5;1567:6;1554:20;1545:29;;1583:33;1610:5;1583:33;:::i;:::-;1483:139;;;;:::o;1628:329::-;1687:6;1736:2;1724:9;1715:7;1711:23;1707:32;1704:119;;;1742:79;;:::i;:::-;1704:119;1862:1;1887:53;1932:7;1923:6;1912:9;1908:22;1887:53;:::i;:::-;1877:63;;1833:117;1628:329;;;;:::o;1963:90::-;1997:7;2040:5;2033:13;2026:21;2015:32;;1963:90;;;:::o;2059:109::-;2140:21;2155:5;2140:21;:::i;:::-;2135:3;2128:34;2059:109;;:::o;2174:210::-;2261:4;2299:2;2288:9;2284:18;2276:26;;2312:65;2374:1;2363:9;2359:17;2350:6;2312:65;:::i;:::-;2174:210;;;;:::o;2390:77::-;2427:7;2456:5;2445:16;;2390:77;;;:::o;2473:122::-;2546:24;2564:5;2546:24;:::i;:::-;2539:5;2536:35;2526:63;;2585:1;2582;2575:12;2526:63;2473:122;:::o;2601:139::-;2647:5;2685:6;2672:20;2663:29;;2701:33;2728:5;2701:33;:::i;:::-;2601:139;;;;:::o;2746:329::-;2805:6;2854:2;2842:9;2833:7;2829:23;2825:32;2822:119;;;2860:79;;:::i;:::-;2822:119;2980:1;3005:53;3050:7;3041:6;3030:9;3026:22;3005:53;:::i;:::-;2995:63;;2951:117;2746:329;;;;:::o;3081:117::-;3190:1;3187;3180:12;3204:117;3313:1;3310;3303:12;3327:117;3436:1;3433;3426:12;3467:568;3540:8;3550:6;3600:3;3593:4;3585:6;3581:17;3577:27;3567:122;;3608:79;;:::i;:::-;3567:122;3721:6;3708:20;3698:30;;3751:18;3743:6;3740:30;3737:117;;;3773:79;;:::i;:::-;3737:117;3887:4;3879:6;3875:17;3863:29;;3941:3;3933:4;3925:6;3921:17;3911:8;3907:32;3904:41;3901:128;;;3948:79;;:::i;:::-;3901:128;3467:568;;;;;:::o;4058:::-;4131:8;4141:6;4191:3;4184:4;4176:6;4172:17;4168:27;4158:122;;4199:79;;:::i;:::-;4158:122;4312:6;4299:20;4289:30;;4342:18;4334:6;4331:30;4328:117;;;4364:79;;:::i;:::-;4328:117;4478:4;4470:6;4466:17;4454:29;;4532:3;4524:4;4516:6;4512:17;4502:8;4498:32;4495:41;4492:128;;;4539:79;;:::i;:::-;4492:128;4058:568;;;;;:::o;4632:1601::-;4808:6;4816;4824;4832;4840;4848;4856;4864;4913:3;4901:9;4892:7;4888:23;4884:33;4881:120;;;4920:79;;:::i;:::-;4881:120;5040:1;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5011:117;5195:2;5184:9;5180:18;5167:32;5226:18;5218:6;5215:30;5212:117;;;5248:79;;:::i;:::-;5212:117;5361:80;5433:7;5424:6;5413:9;5409:22;5361:80;:::i;:::-;5343:98;;;;5138:313;5518:2;5507:9;5503:18;5490:32;5549:18;5541:6;5538:30;5535:117;;;5571:79;;:::i;:::-;5535:117;5684:80;5756:7;5747:6;5736:9;5732:22;5684:80;:::i;:::-;5666:98;;;;5461:313;5813:2;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5784:118;5969:3;5958:9;5954:19;5941:33;6001:18;5993:6;5990:30;5987:117;;;6023:79;;:::i;:::-;5987:117;6136:80;6208:7;6199:6;6188:9;6184:22;6136:80;:::i;:::-;6118:98;;;;5912:314;4632:1601;;;;;;;;;;;:::o;6239:122::-;6312:24;6330:5;6312:24;:::i;:::-;6305:5;6302:35;6292:63;;6351:1;6348;6341:12;6292:63;6239:122;:::o;6367:139::-;6413:5;6451:6;6438:20;6429:29;;6467:33;6494:5;6467:33;:::i;:::-;6367:139;;;;:::o;6512:329::-;6571:6;6620:2;6608:9;6599:7;6595:23;6591:32;6588:119;;;6626:79;;:::i;:::-;6588:119;6746:1;6771:53;6816:7;6807:6;6796:9;6792:22;6771:53;:::i;:::-;6761:63;;6717:117;6512:329;;;;:::o;6847:169::-;6931:11;6965:6;6960:3;6953:19;7005:4;7000:3;6996:14;6981:29;;6847:169;;;;:::o;7022:226::-;7162:34;7158:1;7150:6;7146:14;7139:58;7231:9;7226:2;7218:6;7214:15;7207:34;7022:226;:::o;7254:366::-;7396:3;7417:67;7481:2;7476:3;7417:67;:::i;:::-;7410:74;;7493:93;7582:3;7493:93;:::i;:::-;7611:2;7606:3;7602:12;7595:19;;7254:366;;;:::o;7626:419::-;7792:4;7830:2;7819:9;7815:18;7807:26;;7879:9;7873:4;7869:20;7865:1;7854:9;7850:17;7843:47;7907:131;8033:4;7907:131;:::i;:::-;7899:139;;7626:419;;;:::o;8051:180::-;8099:77;8096:1;8089:88;8196:4;8193:1;8186:15;8220:4;8217:1;8210:15;8237:180;8285:77;8282:1;8275:88;8382:4;8379:1;8372:15;8406:4;8403:1;8396:15;8423:185;8463:1;8480:20;8498:1;8480:20;:::i;:::-;8475:25;;8514:20;8532:1;8514:20;:::i;:::-;8509:25;;8553:1;8543:35;;8558:18;;:::i;:::-;8543:35;8600:1;8597;8593:9;8588:14;;8423:185;;;;:::o;8614:176::-;8646:1;8663:20;8681:1;8663:20;:::i;:::-;8658:25;;8697:20;8715:1;8697:20;:::i;:::-;8692:25;;8736:1;8726:35;;8741:18;;:::i;:::-;8726:35;8782:1;8779;8775:9;8770:14;;8614:176;;;;:::o;8796:181::-;8936:33;8932:1;8924:6;8920:14;8913:57;8796:181;:::o;8983:366::-;9125:3;9146:67;9210:2;9205:3;9146:67;:::i;:::-;9139:74;;9222:93;9311:3;9222:93;:::i;:::-;9340:2;9335:3;9331:12;9324:19;;8983:366;;;:::o;9355:419::-;9521:4;9559:2;9548:9;9544:18;9536:26;;9608:9;9602:4;9598:20;9594:1;9583:9;9579:17;9572:47;9636:131;9762:4;9636:131;:::i;:::-;9628:139;;9355:419;;;:::o;9780:231::-;9920:34;9916:1;9908:6;9904:14;9897:58;9989:14;9984:2;9976:6;9972:15;9965:39;9780:231;:::o;10017:366::-;10159:3;10180:67;10244:2;10239:3;10180:67;:::i;:::-;10173:74;;10256:93;10345:3;10256:93;:::i;:::-;10374:2;10369:3;10365:12;10358:19;;10017:366;;;:::o;10389:419::-;10555:4;10593:2;10582:9;10578:18;10570:26;;10642:9;10636:4;10632:20;10628:1;10617:9;10613:17;10606:47;10670:131;10796:4;10670:131;:::i;:::-;10662:139;;10389:419;;;:::o;10814:231::-;10954:34;10950:1;10942:6;10938:14;10931:58;11023:14;11018:2;11010:6;11006:15;10999:39;10814:231;:::o;11051:366::-;11193:3;11214:67;11278:2;11273:3;11214:67;:::i;:::-;11207:74;;11290:93;11379:3;11290:93;:::i;:::-;11408:2;11403:3;11399:12;11392:19;;11051:366;;;:::o;11423:419::-;11589:4;11627:2;11616:9;11612:18;11604:26;;11676:9;11670:4;11666:20;11662:1;11651:9;11647:17;11640:47;11704:131;11830:4;11704:131;:::i;:::-;11696:139;;11423:419;;;:::o;11848:79::-;11887:7;11916:5;11905:16;;11848:79;;;:::o;11933:157::-;12038:45;12058:24;12076:5;12058:24;:::i;:::-;12038:45;:::i;:::-;12033:3;12026:58;11933:157;;:::o;12096:94::-;12129:8;12177:5;12173:2;12169:14;12148:35;;12096:94;;;:::o;12196:::-;12235:7;12264:20;12278:5;12264:20;:::i;:::-;12253:31;;12196:94;;;:::o;12296:100::-;12335:7;12364:26;12384:5;12364:26;:::i;:::-;12353:37;;12296:100;;;:::o;12402:157::-;12507:45;12527:24;12545:5;12527:24;:::i;:::-;12507:45;:::i;:::-;12502:3;12495:58;12402:157;;:::o;12565:163::-;12682:11;12719:3;12704:18;;12565:163;;;;:::o;12734:117::-;12843:1;12840;12833:12;12857:154;12941:6;12936:3;12931;12918:30;13003:1;12994:6;12989:3;12985:16;12978:27;12857:154;;;:::o;13047:573::-;13193:3;13214:104;13311:6;13306:3;13214:104;:::i;:::-;13207:111;;13342:66;13334:6;13331:78;13328:165;;;13412:79;;:::i;:::-;13328:165;13524:4;13516:6;13512:17;13502:27;;13539:43;13575:6;13570:3;13563:5;13539:43;:::i;:::-;13607:6;13602:3;13598:16;13591:23;;13047:573;;;;;:::o;13626:1018::-;13970:3;13985:75;14056:3;14047:6;13985:75;:::i;:::-;14085:2;14080:3;14076:12;14069:19;;14098:75;14169:3;14160:6;14098:75;:::i;:::-;14198:2;14193:3;14189:12;14182:19;;14218:135;14349:3;14340:6;14332;14218:135;:::i;:::-;14211:142;;14370:135;14501:3;14492:6;14484;14370:135;:::i;:::-;14363:142;;14515:75;14586:3;14577:6;14515:75;:::i;:::-;14615:2;14610:3;14606:12;14599:19;;14635:3;14628:10;;13626:1018;;;;;;;;;;:::o;14650:226::-;14790:34;14786:1;14778:6;14774:14;14767:58;14859:9;14854:2;14846:6;14842:15;14835:34;14650:226;:::o;14882:366::-;15024:3;15045:67;15109:2;15104:3;15045:67;:::i;:::-;15038:74;;15121:93;15210:3;15121:93;:::i;:::-;15239:2;15234:3;15230:12;15223:19;;14882:366;;;:::o;15254:419::-;15420:4;15458:2;15447:9;15443:18;15435:26;;15507:9;15501:4;15497:20;15493:1;15482:9;15478:17;15471:47;15535:131;15661:4;15535:131;:::i;:::-;15527:139;;15254:419;;;:::o;15679:118::-;15766:24;15784:5;15766:24;:::i;:::-;15761:3;15754:37;15679:118;;:::o;15803:332::-;15924:4;15962:2;15951:9;15947:18;15939:26;;15975:71;16043:1;16032:9;16028:17;16019:6;15975:71;:::i;:::-;16056:72;16124:2;16113:9;16109:18;16100:6;16056:72;:::i;:::-;15803:332;;;;;:::o;16141:116::-;16211:21;16226:5;16211:21;:::i;:::-;16204:5;16201:32;16191:60;;16247:1;16244;16237:12;16191:60;16141:116;:::o;16263:137::-;16317:5;16348:6;16342:13;16333:22;;16364:30;16388:5;16364:30;:::i;:::-;16263:137;;;;:::o;16406:345::-;16473:6;16522:2;16510:9;16501:7;16497:23;16493:32;16490:119;;;16528:79;;:::i;:::-;16490:119;16648:1;16673:61;16726:7;16717:6;16706:9;16702:22;16673:61;:::i;:::-;16663:71;;16619:125;16406:345;;;;:::o;16757:240::-;16897:34;16893:1;16885:6;16881:14;16874:58;16966:23;16961:2;16953:6;16949:15;16942:48;16757:240;:::o;17003:366::-;17145:3;17166:67;17230:2;17225:3;17166:67;:::i;:::-;17159:74;;17242:93;17331:3;17242:93;:::i;:::-;17360:2;17355:3;17351:12;17344:19;;17003:366;;;:::o;17375:419::-;17541:4;17579:2;17568:9;17564:18;17556:26;;17628:9;17622:4;17618:20;17614:1;17603:9;17599:17;17592:47;17656:131;17782:4;17656:131;:::i;:::-;17648:139;;17375:419;;;:::o;17800:184::-;17899:11;17933:6;17928:3;17921:19;17973:4;17968:3;17964:14;17949:29;;17800:184;;;;:::o;18020:537::-;18148:3;18169:86;18248:6;18243:3;18169:86;:::i;:::-;18162:93;;18279:66;18271:6;18268:78;18265:165;;;18349:79;;:::i;:::-;18265:165;18461:4;18453:6;18449:17;18439:27;;18476:43;18512:6;18507:3;18500:5;18476:43;:::i;:::-;18544:6;18539:3;18535:16;18528:23;;18020:537;;;;;:::o;18563:168::-;18646:11;18680:6;18675:3;18668:19;18720:4;18715:3;18711:14;18696:29;;18563:168;;;;:::o;18737:114::-;;:::o;18857:362::-;18998:3;19019:65;19082:1;19077:3;19019:65;:::i;:::-;19012:72;;19093:93;19182:3;19093:93;:::i;:::-;19211:1;19206:3;19202:11;19195:18;;18857:362;;;:::o;19225:1090::-;19594:4;19632:3;19621:9;19617:19;19609:27;;19646:71;19714:1;19703:9;19699:17;19690:6;19646:71;:::i;:::-;19764:9;19758:4;19754:20;19749:2;19738:9;19734:18;19727:48;19792:118;19905:4;19896:6;19888;19792:118;:::i;:::-;19784:126;;19957:9;19951:4;19947:20;19942:2;19931:9;19927:18;19920:48;19985:118;20098:4;20089:6;20081;19985:118;:::i;:::-;19977:126;;20150:9;20144:4;20140:20;20135:2;20124:9;20120:18;20113:48;20178:130;20303:4;20178:130;:::i;:::-;20170:138;;19225:1090;;;;;;;;:::o;20321:674::-;20562:4;20600:2;20589:9;20585:18;20577:26;;20649:9;20643:4;20639:20;20635:1;20624:9;20620:17;20613:47;20677:118;20790:4;20781:6;20773;20677:118;:::i;:::-;20669:126;;20842:9;20836:4;20832:20;20827:2;20816:9;20812:18;20805:48;20870:118;20983:4;20974:6;20966;20870:118;:::i;:::-;20862:126;;20321:674;;;;;;;:::o;21001:307::-;21141:34;21137:1;21129:6;21125:14;21118:58;21210:34;21205:2;21197:6;21193:15;21186:59;21279:21;21274:2;21266:6;21262:15;21255:46;21001:307;:::o;21314:366::-;21456:3;21477:67;21541:2;21536:3;21477:67;:::i;:::-;21470:74;;21553:93;21642:3;21553:93;:::i;:::-;21671:2;21666:3;21662:12;21655:19;;21314:366;;;:::o;21686:419::-;21852:4;21890:2;21879:9;21875:18;21867:26;;21939:9;21933:4;21929:20;21925:1;21914:9;21910:17;21903:47;21967:131;22093:4;21967:131;:::i;:::-;21959:139;;21686:419;;;:::o;22111:180::-;22159:77;22156:1;22149:88;22256:4;22253:1;22246:15;22280:4;22277:1;22270:15;22297:233;22336:3;22359:24;22377:5;22359:24;:::i;:::-;22350:33;;22405:66;22398:5;22395:77;22392:103;;;22475:18;;:::i;:::-;22392:103;22522:1;22515:5;22511:13;22504:20;;22297:233;;;:::o;22536:332::-;22657:4;22695:2;22684:9;22680:18;22672:26;;22708:71;22776:1;22765:9;22761:17;22752:6;22708:71;:::i;:::-;22789:72;22857:2;22846:9;22842:18;22833:6;22789:72;:::i;:::-;22536:332;;;;;:::o

Swarm Source

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