ETH Price: $3,338.30 (+1.45%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw167958442023-03-10 6:02:47688 days ago1678428167IN
0xf17C9ffD...1812a2866
0.04 ETH0.0067073722.58931628
Withdraw167958352023-03-10 6:00:59688 days ago1678428059IN
0xf17C9ffD...1812a2866
0.04 ETH0.0065089219.82162239
Add Merkle Tree167206692023-02-27 16:18:11698 days ago1677514691IN
0xf17C9ffD...1812a2866
0 ETH0.0057473234.24595875
Withdraw167125652023-02-26 13:00:11699 days ago1677416411IN
0xf17C9ffD...1812a2866
0.04 ETH0.0056484918.76171878
Withdraw167124312023-02-26 12:32:47699 days ago1677414767IN
0xf17C9ffD...1812a2866
0.04 ETH0.0056875918.89082287
Withdraw167124012023-02-26 12:26:47699 days ago1677414407IN
0xf17C9ffD...1812a2866
0.04 ETH0.0056118418.63849922
Withdraw167123972023-02-26 12:25:59699 days ago1677414359IN
0xf17C9ffD...1812a2866
0.04 ETH0.0057360819.05113356
Withdraw167123932023-02-26 12:25:11699 days ago1677414311IN
0xf17C9ffD...1812a2866
0.04 ETH0.0054452318.08657628
Withdraw167123882023-02-26 12:24:11699 days ago1677414251IN
0xf17C9ffD...1812a2866
0.04 ETH0.0050817916.87668885
Withdraw167123852023-02-26 12:23:35699 days ago1677414215IN
0xf17C9ffD...1812a2866
0.04 ETH0.0051893917.28017664
Withdraw167123812023-02-26 12:22:47699 days ago1677414167IN
0xf17C9ffD...1812a2866
0.04 ETH0.0054133817.98079043
Withdraw167039362023-02-25 7:51:23701 days ago1677311483IN
0xf17C9ffD...1812a2866
0.04 ETH0.0069557222.41708387
Withdraw167004102023-02-24 19:57:35701 days ago1677268655IN
0xf17C9ffD...1812a2866
0.04 ETH0.0078762826.16140517
Withdraw166963822023-02-24 6:19:11702 days ago1677219551IN
0xf17C9ffD...1812a2866
0.04 ETH0.0087945328.33885823
Withdraw166963742023-02-24 6:17:35702 days ago1677219455IN
0xf17C9ffD...1812a2866
0.04 ETH0.0082830426.69479281
Withdraw166923702023-02-23 16:45:59702 days ago1677170759IN
0xf17C9ffD...1812a2866
0.04 ETH0.0161408352.01101894
Withdraw166923662023-02-23 16:44:59702 days ago1677170699IN
0xf17C9ffD...1812a2866
0.04 ETH0.0156802150.53065692
Withdraw166923632023-02-23 16:44:23702 days ago1677170663IN
0xf17C9ffD...1812a2866
0.04 ETH0.0175650351.39956672
Withdraw166921282023-02-23 15:56:47702 days ago1677167807IN
0xf17C9ffD...1812a2866
0.04 ETH0.0187947259.59674165
Withdraw166921182023-02-23 15:54:47702 days ago1677167687IN
0xf17C9ffD...1812a2866
0.04 ETH0.0183366855.42648717
Add Merkle Tree166920952023-02-23 15:49:59702 days ago1677167399IN
0xf17C9ffD...1812a2866
0 ETH0.0098798558.8699825
Add Merkle Tree166917412023-02-23 14:38:35702 days ago1677163115IN
0xf17C9ffD...1812a2866
0 ETH0.0100175959.69073292
Add Merkle Tree166850692023-02-22 16:09:23703 days ago1677082163IN
0xf17C9ffD...1812a2866
0 ETH0.0113821567.82156552
Withdraw159640382022-11-13 22:17:11804 days ago1668377831IN
0xf17C9ffD...1812a2866
0 ETH0.0044342116.40539764
Withdraw159640342022-11-13 22:16:23804 days ago1668377783IN
0xf17C9ffD...1812a2866
0 ETH0.0040707615.06141306
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
167958442023-03-10 6:02:47688 days ago1678428167
0xf17C9ffD...1812a2866
0.04 ETH
167958352023-03-10 6:00:59688 days ago1678428059
0xf17C9ffD...1812a2866
0.04 ETH
167125652023-02-26 13:00:11699 days ago1677416411
0xf17C9ffD...1812a2866
0.04 ETH
167124312023-02-26 12:32:47699 days ago1677414767
0xf17C9ffD...1812a2866
0.04 ETH
167124012023-02-26 12:26:47699 days ago1677414407
0xf17C9ffD...1812a2866
0.04 ETH
167123972023-02-26 12:25:59699 days ago1677414359
0xf17C9ffD...1812a2866
0.04 ETH
167123932023-02-26 12:25:11699 days ago1677414311
0xf17C9ffD...1812a2866
0.04 ETH
167123882023-02-26 12:24:11699 days ago1677414251
0xf17C9ffD...1812a2866
0.04 ETH
167123852023-02-26 12:23:35699 days ago1677414215
0xf17C9ffD...1812a2866
0.04 ETH
167123812023-02-26 12:22:47699 days ago1677414167
0xf17C9ffD...1812a2866
0.04 ETH
167039362023-02-25 7:51:23701 days ago1677311483
0xf17C9ffD...1812a2866
0.04 ETH
167004102023-02-24 19:57:35701 days ago1677268655
0xf17C9ffD...1812a2866
0.04 ETH
166963822023-02-24 6:19:11702 days ago1677219551
0xf17C9ffD...1812a2866
0.04 ETH
166963742023-02-24 6:17:35702 days ago1677219455
0xf17C9ffD...1812a2866
0.04 ETH
166923702023-02-23 16:45:59702 days ago1677170759
0xf17C9ffD...1812a2866
0.04 ETH
166923662023-02-23 16:44:59702 days ago1677170699
0xf17C9ffD...1812a2866
0.04 ETH
166923632023-02-23 16:44:23702 days ago1677170663
0xf17C9ffD...1812a2866
0.04 ETH
166921282023-02-23 15:56:47702 days ago1677167807
0xf17C9ffD...1812a2866
0.04 ETH
166921182023-02-23 15:54:47702 days ago1677167687
0xf17C9ffD...1812a2866
0.04 ETH
158846882022-11-02 20:21:11815 days ago1667420471
0xf17C9ffD...1812a2866
0.45 ETH
158342532022-10-26 19:10:59822 days ago1666811459
0xf17C9ffD...1812a2866
0.45 ETH
157902552022-10-20 15:38:35828 days ago1666280315
0xf17C9ffD...1812a2866
0.15 ETH
157542682022-10-15 14:59:23833 days ago1665845963
0xf17C9ffD...1812a2866
0.45 ETH
157476252022-10-14 16:45:11834 days ago1665765911
0xf17C9ffD...1812a2866
0.45 ETH
157432882022-10-14 2:12:47835 days ago1665713567
0xf17C9ffD...1812a2866
0.15 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MerkleIdentity

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2022-07-06
*/

// SPDX-License-Identifier: GPL-3.0-only

pragma solidity 0.8.12;

interface IVoterID {
    /**
        @notice Minting function
    */
    function createIdentityFor(address newId, uint tokenId, string calldata uri) external;

    /**
        @notice Who has the authority to override metadata uri
    */
    function owner() external view returns (address);

    /**
        @notice How many of these things exist?
    */
    function totalSupply() external view returns (uint);
}
interface IPriceGate {

    /// @notice This function should return how much ether or tokens the minter must pay to mint an NFT
    function getCost(uint) external view returns (uint ethCost);

    /// @notice This function is called by MerkleIdentity when minting an NFT. It is where funds get collected.
    function passThruGate(uint, address) external payable;
}
interface IEligibility {

//    function getGate(uint) external view returns (struct Gate)
//    function addGate(uint...) external

    /// @notice Is the given user eligible? Concerns the address, not whether or not they have the funds
    /// @dev The bytes32[] argument is for merkle proofs of eligibility
    /// @return eligible true if the user can mint
    function isEligible(uint, address, bytes32[] calldata) external view returns (bool eligible);

    /// @notice This function is called by MerkleIdentity to make any state updates like counters
    /// @dev This function should typically call isEligible, since MerkleIdentity does not
    function passThruGate(uint, address, bytes32[] calldata) external;
}

library MerkleLib {

    function verifyProof(bytes32 root, bytes32 leaf, bytes32[] calldata proof) public pure returns (bool) {
        bytes32 currentHash = leaf;

        uint proofLength = proof.length;
        for (uint i; i < proofLength;) {
            currentHash = parentHash(currentHash, proof[i]);
            unchecked { ++i; }
        }

        return currentHash == root;
    }

    function parentHash(bytes32 a, bytes32 b) private pure returns (bytes32) {
        return keccak256(a < b ? abi.encode(a, b) : abi.encode(b, a));
    }

}

/// @title A generalized NFT minting system using merkle trees to pre-commit to metadata posted to ipfs
/// @author metapriest, adrian.wachel, marek.babiarz, radoslaw.gorecki
/// @notice This contract is permissioned, it requires a treeAdder key to add trees
/// @dev Merkle trees are used at this layer to prove the correctness of metadata added to newly minted NFTs
/// @dev A single NFT contract may have many merkle trees with the same or different roots added here
/// @dev Each tree added has a price gate (specifies price schedule) and an eligibility gate (specifies eligibility criteria)
/// @dev Double minting of the same NFT is prevented by the NFT contract (VoterID)
contract MerkleIdentity {
    using MerkleLib for bytes32;

    // this represents a mint of a single NFT contract with a fixed price gate and eligibility gate
    struct MerkleTree {
        bytes32 metadataMerkleRoot;  // root of merkle tree whose leaves are uri strings to be assigned to minted NFTs
        bytes32 ipfsHash; // ipfs hash of complete uri dataset, as redundancy so that merkle proof remain computable
        address nftAddress; // address of NFT contract to be minted
        address priceGateAddress;  // address price gate contract
        address eligibilityAddress;  // address of eligibility gate contract
        uint eligibilityIndex; // enables re-use of eligibility contracts
        uint priceIndex; // enables re-use of price gate contracts
    }

    // array-like mapping of index to MerkleTree structs
    mapping (uint => MerkleTree) public merkleTrees;
    // count the trees
    uint public numTrees;

    // management key used to set ipfs hashes and treeAdder addresses
    address public management;
    // treeAdder is address that can add trees, separated from management to prevent switching it to a broken contract
    address public treeAdder;

    // every time a merkle tree is added
    event MerkleTreeAdded(uint indexed index, address indexed nftAddress);

    error ManagementOnly(address notManagement);
    error TreeAdderOnly(address notTreeAdder);
    error BadMerkleIndex(uint index);
    error BadMerkleProof(bytes32[] proof, bytes32 root);

    // simple call gate
    modifier managementOnly() {
        if (msg.sender != management) {
            revert ManagementOnly(msg.sender);
        }
        _;
    }

    /// @notice Whoever deploys the contract sets the two privileged keys
    /// @param _mgmt key that will initially be both management and treeAdder
    constructor(address _mgmt) {
        management = _mgmt;
        treeAdder = _mgmt;
    }

    /// @notice Change the management key
    /// @dev Only the current management key can change this
    /// @param newMgmt the new management key
    function setManagement(address newMgmt) external managementOnly {
        management = newMgmt;
    }

    /// @notice Change the treeAdder key
    /// @dev Only the current management key can call this
    /// @param newAdder new addres that will be able to add trees, old address will not be able to
    function setTreeAdder(address newAdder) external managementOnly {
        treeAdder = newAdder;
    }

    /// @notice Set the ipfs hash of a specific tree
    /// @dev Only the current management key can call this
    /// @param merkleIndex which merkle tree are we talking about?
    /// @param hash the new ipfs hash summarizing this dataset, written as bytes32 omitting the first 2 bytes "Qm"
    function setIpfsHash(uint merkleIndex, bytes32 hash) external managementOnly {
        MerkleTree storage tree = merkleTrees[merkleIndex];
        tree.ipfsHash = hash;
    }

    /// @notice Create a new merkle tree, opening a mint to an existing contract
    /// @dev Only treeAdder can call this
    /// @param metadataMerkleRoot merkle root of the complete metadata set represented as mintable by this tree
    /// @param ipfsHash ipfs hash of complete dataset (note that you can post hash here without posting to network aka "submarining"
    /// @param nftAddress address of NFT contract to be minted (must conform to IVoterID interface)
    /// @param priceGateAddress address of price gate contract (must conform to IPriceGate interface)
    /// @param eligibilityAddress address of eligibility gate contract (must conform to IEligibility interface)
    /// @param eligibilityIndex index passed to eligibility gate, which in general will have many gates, to select which parameters
    /// @param priceIndex index passed to price gate to select which parameters to use
    function addMerkleTree(
        bytes32 metadataMerkleRoot,
        bytes32 ipfsHash,
        address nftAddress,
        address priceGateAddress,
        address eligibilityAddress,
        uint eligibilityIndex,
        uint priceIndex) external returns (uint) {
        if (msg.sender != treeAdder) {
            revert TreeAdderOnly(msg.sender);
        }
        MerkleTree storage tree = merkleTrees[++numTrees];
        tree.metadataMerkleRoot = metadataMerkleRoot;
        tree.ipfsHash = ipfsHash;
        tree.nftAddress = nftAddress;
        tree.priceGateAddress = priceGateAddress;
        tree.eligibilityAddress = eligibilityAddress;
        tree.eligibilityIndex = eligibilityIndex;
        tree.priceIndex = priceIndex;
        emit MerkleTreeAdded(numTrees, nftAddress);
        return numTrees;
    }

    /// @notice Mint a new NFT
    /// @dev Anyone may call this, but they must pass thru the two gates
    /// @param merkleIndex which merkle tree are we withdrawing the NFT from?
    /// @param tokenId the id number of the NFT to be minted, this data is bound to the uri in each leaf of the metadata merkle tree
    /// @param uri the metadata uri that will be associated with the minted NFT
    /// @param addressProof merkle proof proving the presence of msg.sender's address in an eligibility merkle tree
    /// @param metadataProof sequence of hashes from leaf hash (tokenID, uri) to merkle root, proving data validity
    function withdraw(uint merkleIndex, uint tokenId, string calldata uri, bytes32[] calldata addressProof, bytes32[] calldata metadataProof) external payable {
        MerkleTree storage tree = merkleTrees[merkleIndex];
        IVoterID id = IVoterID(tree.nftAddress);

        // mint an identity first, this keeps the token-collision gas cost down
        id.createIdentityFor(msg.sender, tokenId, uri);

        // check that the merkle index is real
        if (merkleIndex > numTrees || merkleIndex == 0) {
            revert BadMerkleIndex(merkleIndex);
        }

        // verify that the metadata is real
        if (verifyMetadata(tree.metadataMerkleRoot, tokenId, uri, metadataProof) == false) {
            revert BadMerkleProof(metadataProof, tree.metadataMerkleRoot);
        }

        // check eligibility of address
        IEligibility(tree.eligibilityAddress).passThruGate(tree.eligibilityIndex, msg.sender, addressProof);

        // check that the price is right
        IPriceGate(tree.priceGateAddress).passThruGate{value: msg.value}(tree.priceIndex, msg.sender);

    }

    /// @notice Get the current price for minting an NFT from a particular tree
    /// @dev This does not take tokenId as an argument, if you want different tokenIds to have different prices, use different trees
    /// @return ethCost the cost in wei of minting an NFT (could represent token cost if price gate takes tokens)
    function getPrice(uint merkleIndex) public view returns (uint) {
        MerkleTree storage tree = merkleTrees[merkleIndex];
        return IPriceGate(tree.priceGateAddress).getCost(tree.priceIndex);
    }

    /// @notice Is the given address eligibile to mint from the given tree
    /// @dev If the eligibility gate does not use merkle trees, the proof can be left empty or used for anything else
    /// @param merkleIndex which tree are we talking about?
    /// @param recipient the address about which we are querying eligibility
    /// @param proof merkle proof linking recipient to eligibility merkle root
    /// @return eligibility true if recipient is currently eligible
    function isEligible(uint merkleIndex, address recipient, bytes32[] calldata proof) public view returns (bool) {
        MerkleTree storage tree = merkleTrees[merkleIndex];
        return IEligibility(tree.eligibilityAddress).isEligible(tree.eligibilityIndex, recipient, proof);
    }

    /// @notice Is the provided metadata included in tree?
    /// @dev This is public for interfaces, called internally by withdraw function
    /// @param root merkle root (proof destination)
    /// @param tokenId index of NFT being queried
    /// @param uri intended uri of NFT being minted
    /// @param proof sequence of hashes linking leaf data to merkle root
    function verifyMetadata(bytes32 root, uint tokenId, string calldata uri, bytes32[] calldata proof) public pure returns (bool) {
        bytes32 leaf = keccak256(abi.encode(tokenId, uri));
        return root.verifyProof(leaf, proof);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_mgmt","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"BadMerkleIndex","type":"error"},{"inputs":[{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"root","type":"bytes32"}],"name":"BadMerkleProof","type":"error"},{"inputs":[{"internalType":"address","name":"notManagement","type":"address"}],"name":"ManagementOnly","type":"error"},{"inputs":[{"internalType":"address","name":"notTreeAdder","type":"address"}],"name":"TreeAdderOnly","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":true,"internalType":"address","name":"nftAddress","type":"address"}],"name":"MerkleTreeAdded","type":"event"},{"inputs":[{"internalType":"bytes32","name":"metadataMerkleRoot","type":"bytes32"},{"internalType":"bytes32","name":"ipfsHash","type":"bytes32"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"address","name":"priceGateAddress","type":"address"},{"internalType":"address","name":"eligibilityAddress","type":"address"},{"internalType":"uint256","name":"eligibilityIndex","type":"uint256"},{"internalType":"uint256","name":"priceIndex","type":"uint256"}],"name":"addMerkleTree","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"merkleIndex","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"merkleIndex","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"isEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"management","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"merkleTrees","outputs":[{"internalType":"bytes32","name":"metadataMerkleRoot","type":"bytes32"},{"internalType":"bytes32","name":"ipfsHash","type":"bytes32"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"address","name":"priceGateAddress","type":"address"},{"internalType":"address","name":"eligibilityAddress","type":"address"},{"internalType":"uint256","name":"eligibilityIndex","type":"uint256"},{"internalType":"uint256","name":"priceIndex","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTrees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"merkleIndex","type":"uint256"},{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"setIpfsHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMgmt","type":"address"}],"name":"setManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdder","type":"address"}],"name":"setTreeAdder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treeAdder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"verifyMetadata","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"merkleIndex","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"bytes32[]","name":"addressProof","type":"bytes32[]"},{"internalType":"bytes32[]","name":"metadataProof","type":"bytes32[]"}],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

608060405234801561001057600080fd5b50604051610d9d380380610d9d83398101604081905261002f9161005e565b600280546001600160a01b039092166001600160a01b031992831681179091556003805490921617905561008e565b60006020828403121561007057600080fd5b81516001600160a01b038116811461008757600080fd5b9392505050565b610d008061009d6000396000f3fe6080604052600436106100a75760003560e01c8063a336384f11610064578063a336384f14610218578063a738d59014610248578063afad04c914610268578063bcdce8611461027b578063d4a22bde1461029b578063e7572230146102bb57600080fd5b80630dc61f2a146100ac578063390b7c66146100df578063517f2ac6146100f557806377bbd51e1461011757806385d88cb11461014f57806388a8d602146101f8575b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610875565b6102db565b6040519081526020015b60405180910390f35b3480156100eb57600080fd5b506100cc60015481565b34801561010157600080fd5b506101156101103660046108df565b6103d3565b005b34801561012357600080fd5b50600354610137906001600160a01b031681565b6040516001600160a01b0390911681526020016100d6565b34801561015b57600080fd5b506101b561016a366004610901565b6000602081905290815260409020805460018201546002830154600384015460048501546005860154600690960154949593946001600160a01b039384169492841693909116919087565b6040805197885260208801969096526001600160a01b03948516958701959095529183166060860152909116608084015260a083015260c082015260e0016100d6565b34801561020457600080fd5b50600254610137906001600160a01b031681565b34801561022457600080fd5b506102386102333660046109a8565b610415565b60405190151581526020016100d6565b34801561025457600080fd5b50610115610263366004610a2b565b6104cf565b610115610276366004610a46565b61051e565b34801561028757600080fd5b50610238610296366004610af3565b6106e3565b3480156102a757600080fd5b506101156102b6366004610a2b565b610779565b3480156102c757600080fd5b506100cc6102d6366004610901565b6107c8565b6003546000906001600160a01b031633146103105760405163713d123160e01b81523360048201526024015b60405180910390fd5b600080600060016000815461032490610b4d565b918290555081526020810191909152604090810160009081208b815560018082018c90556002820180546001600160a01b03808e166001600160a01b031992831681179093556003850180548e8316908416179055600485018054918d169190921617905560058301899055600683018890559054935191945092917f528fe272ad4241205c90c01416e35ed8e15183f15fd9cf63f0be0f5f89cd631d91a35050600154979650505050505050565b6002546001600160a01b03163314610400576040516391ed042960e01b8152336004820152602401610307565b60009182526020829052604090912060010155565b60008086868660405160200161042d93929190610b9f565b60408051601f19818403018152908290528051602090910120632769cd1f60e21b8252915073458efd41740ffb27d86a9157050c0707b41e952090639da7347c90610482908b90859089908990600401610bf8565b602060405180830381865af415801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190610c18565b98975050505050505050565b6002546001600160a01b031633146104fc576040516391ed042960e01b8152336004820152602401610307565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60008881526020819052604090819020600281015491516353005fb360e01b815290916001600160a01b03169081906353005fb3906105679033908d908d908d90600401610c3a565b600060405180830381600087803b15801561058157600080fd5b505af1158015610595573d6000803e3d6000fd5b505050506001548a11806105a7575089155b156105c8576040516303412c4960e51b8152600481018b9052602401610307565b81546105d8908a8a8a8888610415565b6105fc57815460405163b591e18160e01b8152610307918691869190600401610c62565b60048083015460058401546040516308abfd8d60e41b81526001600160a01b0390921692638abfd8d092610637929133918c918c9101610c86565b600060405180830381600087803b15801561065157600080fd5b505af1158015610665573d6000803e3d6000fd5b5050505060038201546006830154604051637b01facd60e01b815260048101919091523360248201526001600160a01b0390911690637b01facd9034906044016000604051808303818588803b1580156106be57600080fd5b505af11580156106d2573d6000803e3d6000fd5b505050505050505050505050505050565b6000848152602081905260408082206004808201546005830154935163bcdce86160e01b815292936001600160a01b039091169263bcdce8619261072e92918a918a918a9101610c86565b602060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190610c18565b9695505050505050565b6002546001600160a01b031633146107a6576040516391ed042960e01b8152336004820152602401610307565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600081815260208190526040808220600381015460068201549251635a4dd47d60e01b815291926001600160a01b0390911691635a4dd47d916108119160040190815260200190565b602060405180830381865afa15801561082e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108529190610cb1565b9392505050565b80356001600160a01b038116811461087057600080fd5b919050565b600080600080600080600060e0888a03121561089057600080fd5b87359650602088013595506108a760408901610859565b94506108b560608901610859565b93506108c360808901610859565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156108f257600080fd5b50508035926020909101359150565b60006020828403121561091357600080fd5b5035919050565b60008083601f84011261092c57600080fd5b50813567ffffffffffffffff81111561094457600080fd5b60208301915083602082850101111561095c57600080fd5b9250929050565b60008083601f84011261097557600080fd5b50813567ffffffffffffffff81111561098d57600080fd5b6020830191508360208260051b850101111561095c57600080fd5b600080600080600080608087890312156109c157600080fd5b8635955060208701359450604087013567ffffffffffffffff808211156109e757600080fd5b6109f38a838b0161091a565b90965094506060890135915080821115610a0c57600080fd5b50610a1989828a01610963565b979a9699509497509295939492505050565b600060208284031215610a3d57600080fd5b61085282610859565b60008060008060008060008060a0898b031215610a6257600080fd5b8835975060208901359650604089013567ffffffffffffffff80821115610a8857600080fd5b610a948c838d0161091a565b909850965060608b0135915080821115610aad57600080fd5b610ab98c838d01610963565b909650945060808b0135915080821115610ad257600080fd5b50610adf8b828c01610963565b999c989b5096995094979396929594505050565b60008060008060608587031215610b0957600080fd5b84359350610b1960208601610859565b9250604085013567ffffffffffffffff811115610b3557600080fd5b610b4187828801610963565b95989497509550505050565b6000600019821415610b6f57634e487b7160e01b600052601160045260246000fd5b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b838152604060208201526000610bb9604083018486610b76565b95945050505050565b81835260006001600160fb1b03831115610bdb57600080fd5b8260051b8083602087013760009401602001938452509192915050565b84815283602082015260606040820152600061076f606083018486610bc2565b600060208284031215610c2a57600080fd5b8151801515811461085257600080fd5b60018060a01b038516815283602082015260606040820152600061076f606083018486610b76565b604081526000610c76604083018587610bc2565b9050826020830152949350505050565b8481526001600160a01b038416602082015260606040820181905260009061076f9083018486610bc2565b600060208284031215610cc357600080fd5b505191905056fea264697066735822122041ae37c4852fea135d55bb40fb3275edc768f09e2e44b3cea08efd93b9eecbad64736f6c634300080c0033000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b

Deployed Bytecode

0x6080604052600436106100a75760003560e01c8063a336384f11610064578063a336384f14610218578063a738d59014610248578063afad04c914610268578063bcdce8611461027b578063d4a22bde1461029b578063e7572230146102bb57600080fd5b80630dc61f2a146100ac578063390b7c66146100df578063517f2ac6146100f557806377bbd51e1461011757806385d88cb11461014f57806388a8d602146101f8575b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610875565b6102db565b6040519081526020015b60405180910390f35b3480156100eb57600080fd5b506100cc60015481565b34801561010157600080fd5b506101156101103660046108df565b6103d3565b005b34801561012357600080fd5b50600354610137906001600160a01b031681565b6040516001600160a01b0390911681526020016100d6565b34801561015b57600080fd5b506101b561016a366004610901565b6000602081905290815260409020805460018201546002830154600384015460048501546005860154600690960154949593946001600160a01b039384169492841693909116919087565b6040805197885260208801969096526001600160a01b03948516958701959095529183166060860152909116608084015260a083015260c082015260e0016100d6565b34801561020457600080fd5b50600254610137906001600160a01b031681565b34801561022457600080fd5b506102386102333660046109a8565b610415565b60405190151581526020016100d6565b34801561025457600080fd5b50610115610263366004610a2b565b6104cf565b610115610276366004610a46565b61051e565b34801561028757600080fd5b50610238610296366004610af3565b6106e3565b3480156102a757600080fd5b506101156102b6366004610a2b565b610779565b3480156102c757600080fd5b506100cc6102d6366004610901565b6107c8565b6003546000906001600160a01b031633146103105760405163713d123160e01b81523360048201526024015b60405180910390fd5b600080600060016000815461032490610b4d565b918290555081526020810191909152604090810160009081208b815560018082018c90556002820180546001600160a01b03808e166001600160a01b031992831681179093556003850180548e8316908416179055600485018054918d169190921617905560058301899055600683018890559054935191945092917f528fe272ad4241205c90c01416e35ed8e15183f15fd9cf63f0be0f5f89cd631d91a35050600154979650505050505050565b6002546001600160a01b03163314610400576040516391ed042960e01b8152336004820152602401610307565b60009182526020829052604090912060010155565b60008086868660405160200161042d93929190610b9f565b60408051601f19818403018152908290528051602090910120632769cd1f60e21b8252915073458efd41740ffb27d86a9157050c0707b41e952090639da7347c90610482908b90859089908990600401610bf8565b602060405180830381865af415801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190610c18565b98975050505050505050565b6002546001600160a01b031633146104fc576040516391ed042960e01b8152336004820152602401610307565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60008881526020819052604090819020600281015491516353005fb360e01b815290916001600160a01b03169081906353005fb3906105679033908d908d908d90600401610c3a565b600060405180830381600087803b15801561058157600080fd5b505af1158015610595573d6000803e3d6000fd5b505050506001548a11806105a7575089155b156105c8576040516303412c4960e51b8152600481018b9052602401610307565b81546105d8908a8a8a8888610415565b6105fc57815460405163b591e18160e01b8152610307918691869190600401610c62565b60048083015460058401546040516308abfd8d60e41b81526001600160a01b0390921692638abfd8d092610637929133918c918c9101610c86565b600060405180830381600087803b15801561065157600080fd5b505af1158015610665573d6000803e3d6000fd5b5050505060038201546006830154604051637b01facd60e01b815260048101919091523360248201526001600160a01b0390911690637b01facd9034906044016000604051808303818588803b1580156106be57600080fd5b505af11580156106d2573d6000803e3d6000fd5b505050505050505050505050505050565b6000848152602081905260408082206004808201546005830154935163bcdce86160e01b815292936001600160a01b039091169263bcdce8619261072e92918a918a918a9101610c86565b602060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190610c18565b9695505050505050565b6002546001600160a01b031633146107a6576040516391ed042960e01b8152336004820152602401610307565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600081815260208190526040808220600381015460068201549251635a4dd47d60e01b815291926001600160a01b0390911691635a4dd47d916108119160040190815260200190565b602060405180830381865afa15801561082e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108529190610cb1565b9392505050565b80356001600160a01b038116811461087057600080fd5b919050565b600080600080600080600060e0888a03121561089057600080fd5b87359650602088013595506108a760408901610859565b94506108b560608901610859565b93506108c360808901610859565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156108f257600080fd5b50508035926020909101359150565b60006020828403121561091357600080fd5b5035919050565b60008083601f84011261092c57600080fd5b50813567ffffffffffffffff81111561094457600080fd5b60208301915083602082850101111561095c57600080fd5b9250929050565b60008083601f84011261097557600080fd5b50813567ffffffffffffffff81111561098d57600080fd5b6020830191508360208260051b850101111561095c57600080fd5b600080600080600080608087890312156109c157600080fd5b8635955060208701359450604087013567ffffffffffffffff808211156109e757600080fd5b6109f38a838b0161091a565b90965094506060890135915080821115610a0c57600080fd5b50610a1989828a01610963565b979a9699509497509295939492505050565b600060208284031215610a3d57600080fd5b61085282610859565b60008060008060008060008060a0898b031215610a6257600080fd5b8835975060208901359650604089013567ffffffffffffffff80821115610a8857600080fd5b610a948c838d0161091a565b909850965060608b0135915080821115610aad57600080fd5b610ab98c838d01610963565b909650945060808b0135915080821115610ad257600080fd5b50610adf8b828c01610963565b999c989b5096995094979396929594505050565b60008060008060608587031215610b0957600080fd5b84359350610b1960208601610859565b9250604085013567ffffffffffffffff811115610b3557600080fd5b610b4187828801610963565b95989497509550505050565b6000600019821415610b6f57634e487b7160e01b600052601160045260246000fd5b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b838152604060208201526000610bb9604083018486610b76565b95945050505050565b81835260006001600160fb1b03831115610bdb57600080fd5b8260051b8083602087013760009401602001938452509192915050565b84815283602082015260606040820152600061076f606083018486610bc2565b600060208284031215610c2a57600080fd5b8151801515811461085257600080fd5b60018060a01b038516815283602082015260606040820152600061076f606083018486610b76565b604081526000610c76604083018587610bc2565b9050826020830152949350505050565b8481526001600160a01b038416602082015260606040820181905260009061076f9083018486610bc2565b600060208284031215610cc357600080fd5b505191905056fea264697066735822122041ae37c4852fea135d55bb40fb3275edc768f09e2e44b3cea08efd93b9eecbad64736f6c634300080c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b

-----Decoded View---------------
Arg [0] : _mgmt (address): 0x288fE43139741F91a8Cbb6F4adD83811c794851b

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b


Deployed Bytecode Sourcemap

2876:8487:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6813:841;;;;;;;;;;-1:-1:-1;6813:841:0;;;;;:::i;:::-;;:::i;:::-;;;953:25:1;;;941:2;926:18;6813:841:0;;;;;;;;3809:20;;;;;;;;;;;;;;;;5718:177;;;;;;;;;;-1:-1:-1;5718:177:0;;;;;:::i;:::-;;:::i;:::-;;4061:24;;;;;;;;;;-1:-1:-1;4061:24:0;;;;-1:-1:-1;;;;;4061:24:0;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;4061:24:0;1242:203:1;3731:47:0;;;;;;;;;;-1:-1:-1;3731:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3731:47:0;;;;;;;;;;;;;;;;;;;1950:25:1;;;2006:2;1991:18;;1984:34;;;;-1:-1:-1;;;;;2092:15:1;;;2072:18;;;2065:43;;;;2144:15;;;2139:2;2124:18;;2117:43;2197:15;;;2191:3;2176:19;;2169:44;2045:3;2229:19;;2222:35;2288:3;2273:19;;2266:35;1937:3;1922:19;3731:47:0;1635:672:1;3909:25:0;;;;;;;;;;-1:-1:-1;3909:25:0;;;;-1:-1:-1;;;;;3909:25:0;;;11116:242;;;;;;;;;;-1:-1:-1;11116:242:0;;;;;:::i;:::-;;:::i;:::-;;;4091:14:1;;4084:22;4066:41;;4054:2;4039:18;11116:242:0;3926:187:1;5309:103:0;;;;;;;;;;-1:-1:-1;5309:103:0;;;;;:::i;:::-;;:::i;8296:1114::-;;;;;;:::i;:::-;;:::i;10447:286::-;;;;;;;;;;-1:-1:-1;10447:286:0;;;;;:::i;:::-;;:::i;4996:103::-;;;;;;;;;;-1:-1:-1;4996:103:0;;;;;:::i;:::-;;:::i;9748:208::-;;;;;;;;;;-1:-1:-1;9748:208:0;;;;;:::i;:::-;;:::i;6813:841::-;7113:9;;7078:4;;-1:-1:-1;;;;;7113:9:0;7099:10;:23;7095:88;;7146:25;;-1:-1:-1;;;7146:25:0;;7160:10;7146:25;;;1388:51:1;1361:18;;7146:25:0;;;;;;;;7095:88;7193:23;7219:11;:23;7233:8;;7231:10;;;;;:::i;:::-;;;;;-1:-1:-1;7219:23:0;;;;;;;;;;;;;-1:-1:-1;7219:23:0;;;7253:44;;;7308:13;;;;:24;;;7343:15;;;:28;;-1:-1:-1;;;;;7343:28:0;;;-1:-1:-1;;;;;;7343:28:0;;;;;;;;7382:21;;;:40;;;;;;;;;;;7433:23;;;:44;;;;;;;;;;;;7488:21;;;:40;;;7539:15;;;:28;;;7599:8;;7583:37;;7219:23;;-1:-1:-1;7343:28:0;7599:8;7583:37;;;-1:-1:-1;;7638:8:0;;6813:841;;;;;;;;;:::o;5718:177::-;4491:10;;-1:-1:-1;;;;;4491:10:0;4477;:24;4473:90;;4525:26;;-1:-1:-1;;;4525:26:0;;4540:10;4525:26;;;1388:51:1;1361:18;;4525:26:0;1242:203:1;4473:90:0;5806:23:::1;5832:24:::0;;;::::1;::::0;;;;;;;5867:13:::1;;:20:::0;5718:177::o;11116:242::-;11236:4;11253:12;11289:7;11298:3;;11278:24;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11278:24:0;;;;;;;;;;11268:35;;11278:24;11268:35;;;;-1:-1:-1;;;11321:29:0;;11268:35;-1:-1:-1;11321:16:0;;;;:29;;:4;;11268:35;;11344:5;;;;11321:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11314:36;11116:242;-1:-1:-1;;;;;;;;11116:242:0:o;5309:103::-;4491:10;;-1:-1:-1;;;;;4491:10:0;4477;:24;4473:90;;4525:26;;-1:-1:-1;;;4525:26:0;;4540:10;4525:26;;;1388:51:1;1361:18;;4525:26:0;1242:203:1;4473:90:0;5384:9:::1;:20:::0;;-1:-1:-1;;;;;;5384:20:0::1;-1:-1:-1::0;;;;;5384:20:0;;;::::1;::::0;;;::::1;::::0;;5309:103::o;8296:1114::-;8462:23;8488:24;;;;;;;;;;;;8546:15;;;;8656:46;;-1:-1:-1;;;8656:46:0;;8488:24;;-1:-1:-1;;;;;8546:15:0;;;;8656:20;;:46;;8677:10;;8689:7;;8698:3;;;;8656:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8781:8;;8767:11;:22;:42;;;-1:-1:-1;8793:16:0;;8767:42;8763:109;;;8833:27;;-1:-1:-1;;;8833:27:0;;;;;953:25:1;;;926:18;;8833:27:0;807:177:1;8763:109:0;8948:23;;8933:68;;8973:7;8982:3;;8987:13;;8933:14;:68::i;:::-;8929:171;;9064:23;;9034:54;;-1:-1:-1;;;9034:54:0;;;;9049:13;;;;9064:23;9034:54;;;:::i;8929:171::-;9166:23;;;;;9204:21;;;;9153:99;;-1:-1:-1;;;9153:99:0;;-1:-1:-1;;;;;9166:23:0;;;;9153:50;;:99;;9204:21;9227:10;;9239:12;;;;9153:99;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;9318:21:0;;;;9372:15;;;;9307:93;;-1:-1:-1;;;9307:93:0;;;;;9433:25:1;;;;9389:10:0;9474:18:1;;;9467:60;-1:-1:-1;;;;;9318:21:0;;;;9307:46;;9361:9;;9406:18:1;;9307:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8451:959;;8296:1114;;;;;;;;:::o;10447:286::-;10551:4;10594:24;;;;;;;;;;;10649:23;;;;;10685:21;;;;10636:89;;-1:-1:-1;;;10636:89:0;;10594:24;;-1:-1:-1;;;;;10649:23:0;;;;10636:48;;:89;;10685:21;10708:9;;10719:5;;;;10636:89;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10629:96;10447:286;-1:-1:-1;;;;;;10447:286:0:o;4996:103::-;4491:10;;-1:-1:-1;;;;;4491:10:0;4477;:24;4473:90;;4525:26;;-1:-1:-1;;;4525:26:0;;4540:10;4525:26;;;1388:51:1;1361:18;;4525:26:0;1242:203:1;4473:90:0;5071:10:::1;:20:::0;;-1:-1:-1;;;;;;5071:20:0::1;-1:-1:-1::0;;;;;5071:20:0;;;::::1;::::0;;;::::1;::::0;;4996:103::o;9748:208::-;9805:4;9848:24;;;;;;;;;;;9901:21;;;;9932:15;;;;9890:58;;-1:-1:-1;;;9890:58:0;;9848:24;;-1:-1:-1;;;;;9901:21:0;;;;9890:41;;:58;;;;953:25:1;;;941:2;926:18;;807:177;9890:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9883:65;9748:208;-1:-1:-1;;;9748:208:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:610::-;305:6;313;321;329;337;345;353;406:3;394:9;385:7;381:23;377:33;374:53;;;423:1;420;413:12;374:53;459:9;446:23;436:33;;516:2;505:9;501:18;488:32;478:42;;539:38;573:2;562:9;558:18;539:38;:::i;:::-;529:48;;596:38;630:2;619:9;615:18;596:38;:::i;:::-;586:48;;653:39;687:3;676:9;672:19;653:39;:::i;:::-;643:49;;739:3;728:9;724:19;711:33;701:43;;791:3;780:9;776:19;763:33;753:43;;192:610;;;;;;;;;;:::o;989:248::-;1057:6;1065;1118:2;1106:9;1097:7;1093:23;1089:32;1086:52;;;1134:1;1131;1124:12;1086:52;-1:-1:-1;;1157:23:1;;;1227:2;1212:18;;;1199:32;;-1:-1:-1;989:248:1:o;1450:180::-;1509:6;1562:2;1550:9;1541:7;1537:23;1533:32;1530:52;;;1578:1;1575;1568:12;1530:52;-1:-1:-1;1601:23:1;;1450:180;-1:-1:-1;1450:180:1:o;2312:348::-;2364:8;2374:6;2428:3;2421:4;2413:6;2409:17;2405:27;2395:55;;2446:1;2443;2436:12;2395:55;-1:-1:-1;2469:20:1;;2512:18;2501:30;;2498:50;;;2544:1;2541;2534:12;2498:50;2581:4;2573:6;2569:17;2557:29;;2633:3;2626:4;2617:6;2609;2605:19;2601:30;2598:39;2595:59;;;2650:1;2647;2640:12;2595:59;2312:348;;;;;:::o;2665:367::-;2728:8;2738:6;2792:3;2785:4;2777:6;2773:17;2769:27;2759:55;;2810:1;2807;2800:12;2759:55;-1:-1:-1;2833:20:1;;2876:18;2865:30;;2862:50;;;2908:1;2905;2898:12;2862:50;2945:4;2937:6;2933:17;2921:29;;3005:3;2998:4;2988:6;2985:1;2981:14;2973:6;2969:27;2965:38;2962:47;2959:67;;;3022:1;3019;3012:12;3037:884;3162:6;3170;3178;3186;3194;3202;3255:3;3243:9;3234:7;3230:23;3226:33;3223:53;;;3272:1;3269;3262:12;3223:53;3308:9;3295:23;3285:33;;3365:2;3354:9;3350:18;3337:32;3327:42;;3420:2;3409:9;3405:18;3392:32;3443:18;3484:2;3476:6;3473:14;3470:34;;;3500:1;3497;3490:12;3470:34;3539:59;3590:7;3581:6;3570:9;3566:22;3539:59;:::i;:::-;3617:8;;-1:-1:-1;3513:85:1;-1:-1:-1;3705:2:1;3690:18;;3677:32;;-1:-1:-1;3721:16:1;;;3718:36;;;3750:1;3747;3740:12;3718:36;;3789:72;3853:7;3842:8;3831:9;3827:24;3789:72;:::i;:::-;3037:884;;;;-1:-1:-1;3037:884:1;;-1:-1:-1;3037:884:1;;3880:8;;3037:884;-1:-1:-1;;;3037:884:1:o;4118:186::-;4177:6;4230:2;4218:9;4209:7;4205:23;4201:32;4198:52;;;4246:1;4243;4236:12;4198:52;4269:29;4288:9;4269:29;:::i;4309:1200::-;4470:6;4478;4486;4494;4502;4510;4518;4526;4579:3;4567:9;4558:7;4554:23;4550:33;4547:53;;;4596:1;4593;4586:12;4547:53;4632:9;4619:23;4609:33;;4689:2;4678:9;4674:18;4661:32;4651:42;;4744:2;4733:9;4729:18;4716:32;4767:18;4808:2;4800:6;4797:14;4794:34;;;4824:1;4821;4814:12;4794:34;4863:59;4914:7;4905:6;4894:9;4890:22;4863:59;:::i;:::-;4941:8;;-1:-1:-1;4837:85:1;-1:-1:-1;5029:2:1;5014:18;;5001:32;;-1:-1:-1;5045:16:1;;;5042:36;;;5074:1;5071;5064:12;5042:36;5113:72;5177:7;5166:8;5155:9;5151:24;5113:72;:::i;:::-;5204:8;;-1:-1:-1;5087:98:1;-1:-1:-1;5292:3:1;5277:19;;5264:33;;-1:-1:-1;5309:16:1;;;5306:36;;;5338:1;5335;5328:12;5306:36;;5377:72;5441:7;5430:8;5419:9;5415:24;5377:72;:::i;:::-;4309:1200;;;;-1:-1:-1;4309:1200:1;;-1:-1:-1;4309:1200:1;;;;;;5468:8;-1:-1:-1;;;4309:1200:1:o;5514:579::-;5618:6;5626;5634;5642;5695:2;5683:9;5674:7;5670:23;5666:32;5663:52;;;5711:1;5708;5701:12;5663:52;5747:9;5734:23;5724:33;;5776:38;5810:2;5799:9;5795:18;5776:38;:::i;:::-;5766:48;;5865:2;5854:9;5850:18;5837:32;5892:18;5884:6;5881:30;5878:50;;;5924:1;5921;5914:12;5878:50;5963:70;6025:7;6016:6;6005:9;6001:22;5963:70;:::i;:::-;5514:579;;;;-1:-1:-1;6052:8:1;-1:-1:-1;;;;5514:579:1:o;6098:232::-;6137:3;-1:-1:-1;;6158:17:1;;6155:140;;;6217:10;6212:3;6208:20;6205:1;6198:31;6252:4;6249:1;6242:15;6280:4;6277:1;6270:15;6155:140;-1:-1:-1;6322:1:1;6311:13;;6098:232::o;6335:267::-;6424:6;6419:3;6412:19;6476:6;6469:5;6462:4;6457:3;6453:14;6440:43;-1:-1:-1;6528:1:1;6503:16;;;6521:4;6499:27;;;6492:38;;;;6584:2;6563:15;;;-1:-1:-1;;6559:29:1;6550:39;;;6546:50;;6335:267::o;6607:318::-;6794:6;6783:9;6776:25;6837:2;6832;6821:9;6817:18;6810:30;6757:4;6857:62;6915:2;6904:9;6900:18;6892:6;6884;6857:62;:::i;:::-;6849:70;6607:318;-1:-1:-1;;;;;6607:318:1:o;6930:354::-;7018:19;;;7000:3;-1:-1:-1;;;;;7049:31:1;;7046:51;;;7093:1;7090;7083:12;7046:51;7129:6;7126:1;7122:14;7181:8;7174:5;7167:4;7162:3;7158:14;7145:45;7258:1;7213:18;;7233:4;7209:29;7247:13;;;-1:-1:-1;7209:29:1;;6930:354;-1:-1:-1;;6930:354:1:o;7289:438::-;7542:6;7531:9;7524:25;7585:6;7580:2;7569:9;7565:18;7558:34;7628:2;7623;7612:9;7608:18;7601:30;7505:4;7648:73;7717:2;7706:9;7702:18;7694:6;7686;7648:73;:::i;7732:277::-;7799:6;7852:2;7840:9;7831:7;7827:23;7823:32;7820:52;;;7868:1;7865;7858:12;7820:52;7900:9;7894:16;7953:5;7946:13;7939:21;7932:5;7929:32;7919:60;;7975:1;7972;7965:12;8014:415;8258:1;8254;8249:3;8245:11;8241:19;8233:6;8229:32;8218:9;8211:51;8298:6;8293:2;8282:9;8278:18;8271:34;8341:2;8336;8325:9;8321:18;8314:30;8192:4;8361:62;8419:2;8408:9;8404:18;8396:6;8388;8361:62;:::i;8434:359::-;8651:2;8640:9;8633:21;8614:4;8671:73;8740:2;8729:9;8725:18;8717:6;8709;8671:73;:::i;:::-;8663:81;;8780:6;8775:2;8764:9;8760:18;8753:34;8434:359;;;;;;:::o;8798:456::-;9025:25;;;-1:-1:-1;;;;;9086:32:1;;9081:2;9066:18;;9059:60;9155:2;9150;9135:18;;9128:30;;;-1:-1:-1;;9175:73:1;;9229:18;;9221:6;9213;9175:73;:::i;9538:184::-;9608:6;9661:2;9649:9;9640:7;9636:23;9632:32;9629:52;;;9677:1;9674;9667:12;9629:52;-1:-1:-1;9700:16:1;;9538:184;-1:-1:-1;9538:184:1:o

Swarm Source

ipfs://41ae37c4852fea135d55bb40fb3275edc768f09e2e44b3cea08efd93b9eecbad

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.