ETH Price: $2,003.66 (+0.76%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute215944642025-01-10 13:46:3571 days ago1736516795IN
HORD: Hord Congress
0 ETH0.005162424.35280066
Cast Vote215944562025-01-10 13:44:5971 days ago1736516699IN
HORD: Hord Congress
0 ETH0.0014038523.88807373
Cast Vote215932162025-01-10 9:35:2371 days ago1736501723IN
HORD: Hord Congress
0 ETH0.000498456.57002635
Propose215932102025-01-10 9:34:1171 days ago1736501651IN
HORD: Hord Congress
0 ETH0.00222025.80219754
Propose215932012025-01-10 9:32:2371 days ago1736501543IN
HORD: Hord Congress
0 ETH0.000213015.8278167
Execute214802202024-12-25 14:54:5987 days ago1735138499IN
HORD: Hord Congress
0 ETH0.0020184515.62500281
Execute214791182024-12-25 11:13:4787 days ago1735125227IN
HORD: Hord Congress
0 ETH0.001029914.55426901
Execute214791132024-12-25 11:12:4787 days ago1735125167IN
HORD: Hord Congress
0 ETH0.00109474.41109377
Cast Vote214748512024-12-24 20:55:5988 days ago1735073759IN
HORD: Hord Congress
0 ETH0.000374586.3739545
Cast Vote214748382024-12-24 20:53:2388 days ago1735073603IN
HORD: Hord Congress
0 ETH0.000373596.35708633
Cast Vote214748192024-12-24 20:49:3588 days ago1735073375IN
HORD: Hord Congress
0 ETH0.000359086.11015257
Cast Vote214740172024-12-24 18:08:2388 days ago1735063703IN
HORD: Hord Congress
0 ETH0.000599977.90817555
Propose214740112024-12-24 18:07:1188 days ago1735063631IN
HORD: Hord Congress
0 ETH0.006608638.16708915
Cast Vote213872772024-12-12 15:19:35100 days ago1734016775IN
HORD: Hord Congress
0 ETH0.0028640237.75012279
Cast Vote213872732024-12-12 15:18:35100 days ago1734016715IN
HORD: Hord Congress
0 ETH0.0024855732.76180994
Propose213872612024-12-12 15:16:11100 days ago1734016571IN
HORD: Hord Congress
0 ETH0.0109712230.2252716
Propose213871082024-12-12 14:45:35100 days ago1734014735IN
HORD: Hord Congress
0 ETH0.015125726.66163289
Execute207140622024-09-09 15:50:35194 days ago1725897035IN
HORD: Hord Congress
0 ETH0.000888436.87923802
Execute207129512024-09-09 12:07:47194 days ago1725883667IN
HORD: Hord Congress
0 ETH0.000386293.64108105
Cast Vote206792032024-09-04 19:07:23199 days ago1725476843IN
HORD: Hord Congress
0 ETH0.000575929.8
Cast Vote206791222024-09-04 18:50:59199 days ago1725475859IN
HORD: Hord Congress
0 ETH0.0006346910.8
Cast Vote206765392024-09-04 10:11:59199 days ago1725444719IN
HORD: Hord Congress
0 ETH0.000139161.83432828
Propose206765342024-09-04 10:10:59199 days ago1725444659IN
HORD: Hord Congress
0 ETH0.000427221.29913029
Cast Vote206764482024-09-04 9:53:47199 days ago1725443627IN
HORD: Hord Congress
0 ETH0.000127541.6810878
Propose206764412024-09-04 9:52:23199 days ago1725443543IN
HORD: Hord Congress
0 ETH0.000652871.79899553
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HordCongress

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-02-08
*/

// Sources flattened with hardhat v2.5.0 https://hardhat.org

// File contracts/interfaces/IHordCongressMembersRegistry.sol

pragma solidity 0.6.12;

/**
 * IHordCongressMembersRegistry contract.
 * @author Nikola Madjarevic
 * Date created: 21.3.21.
 * Github: madjarevicn
 */
interface IHordCongressMembersRegistry {
    function isMember(address _address) external view returns (bool);
    function getMinimalQuorum() external view returns (uint256);
}


// File contracts/libraries/SafeMath.sol

pragma solidity 0.6.12;


/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}


// File contracts/governance/HordCongress.sol

pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;


/**
 * HordCogress contract.
 * @author Nikola Madjarevic
 * Date created: 18.3.21.
 * Github: madjarevicn
 */
contract HordCongress {
    // Use SafeMath library
    using SafeMath for *;

    /// @notice The name of this contract
    string public constant name = "HordCongress";

    // Members registry contract
    IHordCongressMembersRegistry membersRegistry;

    /// @notice The total number of proposals
    uint public proposalCount;

    struct Proposal {
        // Unique id for looking up a proposal
        uint id;

        // Creator of the proposal
        address proposer;

        // the ordered list of target addresses for calls to be made
        address[] targets;

        // The ordered list of values (i.e. msg.value) to be passed to the calls to be made
        uint[] values;

        // The ordered list of function signatures to be called
        string[] signatures;

        // The ordered list of calldata to be passed to each call
        bytes[] calldatas;

        // Current number of votes in favor of this proposal
        uint forVotes;

        // Current number of votes in opposition to this proposal
        uint againstVotes;

        // Flag marking whether the proposal has been canceled
        bool canceled;

        // Flag marking whether the proposal has been executed
        bool executed;

        // Timestamp when proposal is created
        uint timestamp;

        // Receipts of ballots for the entire set of voters
        mapping (address => Receipt) receipts;
    }

    /// @notice Ballot receipt record for a voter
    struct Receipt {
        // Whether or not a vote has been cast
        bool hasVoted;

        // Whether or not the voter supports the proposal
        bool support;
    }

    /// @notice The official record of all proposals ever proposed
    mapping (uint => Proposal) public proposals;

    /// @notice An event emitted when a new proposal is created
    event ProposalCreated(uint id, address proposer, address[] targets, uint[] values, string[] signatures, bytes[] calldatas, string description);

    /// @notice An event emitted when a vote has been cast on a proposal
    event VoteCast(address voter, uint proposalId, bool support);

    /// @notice An event emitted when a proposal has been canceled
    event ProposalCanceled(uint id);

    /// @notice An event emitted when a proposal has been executed
    event ProposalExecuted(uint id);

    /// @notice An event emitted everytime ether is received
    event ReceivedEther(address sender, uint amount);

    /// @notice Event which will fire every time transaction is executed
    event ExecuteTransaction(address indexed target, uint value, string signature,  bytes data);

    modifier onlyMember {
        require(membersRegistry.isMember(msg.sender) == true, "Only HordCongress member can call this function");
        _;
    }

    /// One time call function to set members registry contract
    function setMembersRegistry(
        address _membersRegistry
    )
    external
    {
        require(address(membersRegistry) == address(0x0));
        membersRegistry = IHordCongressMembersRegistry(_membersRegistry);
    }

    function propose(
        address[] memory targets,
        uint[] memory values,
        string[] memory signatures,
        bytes[] memory calldatas,
        string memory description
    )
    external
    onlyMember
    returns (uint)
    {
        require(
            targets.length == values.length &&
            targets.length == signatures.length &&
            targets.length == calldatas.length,
            "HordCongress::propose: proposal function information arity mismatch"
        );

        require(targets.length != 0, "HordCongress::propose: must provide actions");

        proposalCount++;

        Proposal memory newProposal = Proposal({
            id: proposalCount,
            proposer: msg.sender,
            targets: targets,
            values: values,
            signatures: signatures,
            calldatas: calldatas,
            forVotes: 0,
            againstVotes: 0,
            canceled: false,
            executed: false,
            timestamp: block.timestamp
        });

        proposals[newProposal.id] = newProposal;

        emit ProposalCreated(newProposal.id, msg.sender, targets, values, signatures, calldatas, description);
        return newProposal.id;
    }


    function castVote(
        uint proposalId,
        bool support
    )
    external
    onlyMember
    {
        return _castVote(msg.sender, proposalId, support);
    }


    function execute(
        uint proposalId
    )
    external
    onlyMember
    payable
    {
        // load the proposal
        Proposal storage proposal = proposals[proposalId];
        // Require that proposal is not previously executed neither cancelled
        require(proposal.executed == false && proposal.canceled == false);
        // Mark that proposal is executed
        proposal.executed = true;
        // Require that votes in favor of proposal are greater or equal to minimalQuorum
        require(proposal.forVotes >= membersRegistry.getMinimalQuorum());

        for (uint i = 0; i < proposal.targets.length; i++) {
            bytes memory callData;

            if (bytes(proposal.signatures[i]).length == 0) {
                callData = proposal.calldatas[i];
            } else {
                callData = abi.encodePacked(bytes4(keccak256(bytes(proposal.signatures[i]))), proposal.calldatas[i]);
            }

            // solium-disable-next-line security/no-call-value
            (bool success,) = proposal.targets[i].call.value(proposal.values[i])(callData);

            // Require that transaction went through
            require(success, "HordCongress::executeTransaction: Transaction execution reverted.");

            // Emit event that transaction is being executed
            emit ExecuteTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i]);
        }

        // Emit event that proposal executed
        emit ProposalExecuted(proposalId);
    }

    function cancel(uint proposalId) external onlyMember {
        Proposal storage proposal = proposals[proposalId];
        // Require that proposal is not previously executed neither cancelled
        require(proposal.executed == false && proposal.canceled == false);
        // 3 days before proposal can get cancelled
        require(block.timestamp >= proposal.timestamp + 259200);
        // Proposal with reached minimalQuorum cant be cancelled
        require(proposal.forVotes < membersRegistry.getMinimalQuorum(), "HordCongress:cancel: Proposal already reached quorum");
        // Set that proposal is cancelled
        proposal.canceled = true;
        // Emit event
        emit ProposalCanceled(proposalId);
    }

    function _castVote(address voter, uint proposalId, bool support) internal {
        Proposal storage proposal = proposals[proposalId];
        Receipt storage receipt = proposal.receipts[voter];
        require(receipt.hasVoted == false, "HordCongress::_castVote: voter already voted");

        if (support) {
            proposal.forVotes = proposal.forVotes.add(1);
        } else {
            proposal.againstVotes = proposal.againstVotes.sub(1);
        }

        receipt.hasVoted = true;
        receipt.support = support;

        emit VoteCast(voter, proposalId, support);
    }

    function getActions(uint proposalId) external view returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas) {
        Proposal storage p = proposals[proposalId];
        return (p.targets, p.values, p.signatures, p.calldatas);
    }

    function getMembersRegistry()
    external
    view
    returns (address)
    {
        return address(membersRegistry);
    }

    receive() external payable {
        emit ReceivedEther(msg.sender, msg.value);
    }
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReceivedEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"}],"name":"VoteCast","type":"event"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"castVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMembersRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_membersRegistry","type":"address"}],"name":"setMembersRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50611de8806100206000396000f3fe6080604052600436106100955760003560e01c806340e58ee51161005957806340e58ee5146101aa5780635f6afd15146101ca578063da35c664146101ec578063da95691a1461020e578063fe0d94c11461022e576100d5565b8063013cf08b146100da57806306fdde031461011657806315373e3d14610138578063328dd9821461015a5780633482cafe1461018a576100d5565b366100d5577fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf133346040516100cb929190611901565b60405180910390a1005b600080fd5b3480156100e657600080fd5b506100fa6100f536600461165f565b610241565b60405161010d9796959493929190611caf565b60405180910390f35b34801561012257600080fd5b5061012b61028d565b60405161010d9190611995565b34801561014457600080fd5b5061015861015336600461168f565b6102b5565b005b34801561016657600080fd5b5061017a61017536600461165f565b61036e565b60405161010d949392919061193d565b34801561019657600080fd5b506101586101a5366004611555565b6105fd565b3480156101b657600080fd5b506101586101c536600461165f565b610635565b3480156101d657600080fd5b506101df610813565b60405161010d91906118ed565b3480156101f857600080fd5b50610201610822565b60405161010d9190611c20565b34801561021a57600080fd5b50610201610229366004611577565b610828565b61015861023c36600461165f565b610ad0565b60026020526000908152604090208054600182015460068301546007840154600885015460099095015493946001600160a01b03909316939192909160ff808316926101009004169087565b6040518060400160405280600c81526020016b486f7264436f6e677265737360a01b81525081565b60005460405163288c314960e21b81526001600160a01b039091169063a230c524906102e59033906004016118ed565b60206040518083038186803b1580156102fd57600080fd5b505afa158015610311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103359190611643565b151560011461035f5760405162461bcd60e51b815260040161035690611b85565b60405180910390fd5b61036a338383610f38565b5050565b606080606080600060026000878152602001908152602001600020905080600201816003018260040183600501838054806020026020016040519081016040528092919081815260200182805480156103f057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103d2575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561044257602002820191906000526020600020905b81548152602001906001019080831161042e575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156105155760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156105015780601f106104d657610100808354040283529160200191610501565b820191906000526020600020905b8154815290600101906020018083116104e457829003601f168201915b50505050508152602001906001019061046a565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156105e75760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156105d35780601f106105a8576101008083540402835291602001916105d3565b820191906000526020600020905b8154815290600101906020018083116105b657829003601f168201915b50505050508152602001906001019061053c565b5050505090509450945094509450509193509193565b6000546001600160a01b03161561061357600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60005460405163288c314960e21b81526001600160a01b039091169063a230c524906106659033906004016118ed565b60206040518083038186803b15801561067d57600080fd5b505afa158015610691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b59190611643565b15156001146106d65760405162461bcd60e51b815260040161035690611b85565b60008181526002602052604090206008810154610100900460ff161580156107035750600881015460ff16155b61070c57600080fd5b80600901546203f4800142101561072257600080fd5b60008054906101000a90046001600160a01b03166001600160a01b031663ab0d8a3f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561076e57600080fd5b505afa158015610782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a69190611677565b8160060154106107c85760405162461bcd60e51b815260040161035690611a7f565b60088101805460ff191660011790556040517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90610807908490611c20565b60405180910390a15050565b6000546001600160a01b031690565b60015481565b6000805460405163288c314960e21b81526001600160a01b039091169063a230c524906108599033906004016118ed565b60206040518083038186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190611643565b15156001146108ca5760405162461bcd60e51b815260040161035690611b85565b845186511480156108dc575083518651145b80156108e9575082518651145b6109055760405162461bcd60e51b815260040161035690611a16565b85516109235760405162461bcd60e51b815260040161035690611b3a565b600180548101905561093361106a565b506040805161016081018252600180548083523360208085019182528486018c8152606086018c9052608086018b905260a086018a9052600060c0870181905260e08701819052610100870181905261012087018190524261014088015293845260028083529690932085518155915193820180546001600160a01b0319166001600160a01b0390951694909417909355905180519394859492936109dd939185019201906110d1565b50606082015180516109f9916003840191602090910190611136565b5060808201518051610a1591600484019160209091019061117d565b5060a08201518051610a319160058401916020909101906111d6565b5060c0820151600682015560e082015160078201556101008083015160088301805461012086015160ff199091169215159290921761ff0019169115159092021790556101409091015160099091015580516040517fbaab6dcd2ae57433cc1372e25bc5139c3bd664075695546fde8821591a226e3891610abd9133908b908b908b908b908b90611c29565b60405180910390a1519695505050505050565b60005460405163288c314960e21b81526001600160a01b039091169063a230c52490610b009033906004016118ed565b60206040518083038186803b158015610b1857600080fd5b505afa158015610b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b509190611643565b1515600114610b715760405162461bcd60e51b815260040161035690611b85565b60008181526002602052604090206008810154610100900460ff16158015610b9e5750600881015460ff16155b610ba757600080fd5b60088101805461ff0019166101001790556000546040805163ab0d8a3f60e01b815290516001600160a01b039092169163ab0d8a3f91600480820192602092909190829003018186803b158015610bfd57600080fd5b505afa158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c359190611677565b81600601541015610c4557600080fd5b60005b6002820154811015610f08576060826004018281548110610c6557fe5b60009182526020909120015460026000196101006001841615020190911604610d3157826005018281548110610c9757fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610d255780601f10610cfa57610100808354040283529160200191610d25565b820191906000526020600020905b815481529060010190602001808311610d0857829003601f168201915b50505050509050610d9b565b826004018281548110610d4057fe5b90600052602060002001604051610d5791906118e1565b6040518091039020836005018381548110610d6e57fe5b90600052602060002001604051602001610d899291906118a1565b60405160208183030381529060405290505b6000836002018381548110610dac57fe5b6000918252602090912001546003850180546001600160a01b039092169185908110610dd457fe5b906000526020600020015483604051610ded91906118c5565b60006040518083038185875af1925050503d8060008114610e2a576040519150601f19603f3d011682016040523d82523d6000602084013e610e2f565b606091505b5050905080610e505760405162461bcd60e51b815260040161035690611ad3565b836002018381548110610e5f57fe5b6000918252602090912001546003850180546001600160a01b03909216917f88405ca50016c636e025868e263efe5a9f63bf11cc45404f7616394c7dc389d0919086908110610eaa57fe5b9060005260206000200154866004018681548110610ec457fe5b90600052602060002001876005018781548110610edd57fe5b90600052602060002001604051610ef693929190611cec565b60405180910390a25050600101610c48565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516108079190611c20565b60008281526002602090815260408083206001600160a01b0387168452600a8101909252909120805460ff1615610f815760405162461bcd60e51b815260040161035690611bd4565b8215610fa1576006820154610f97906001611014565b6006830155610fb7565b6007820154610fb1906001611042565b60078301555b8054600160ff199091161761ff001916610100841515021781556040517fd356173ae8eeea8691aee4c1be712c314a975a3d43ebc48b08ca54d0dac91228906110059087908790879061191a565b60405180910390a15050505050565b6000828201838110156110395760405162461bcd60e51b8152600401610356906119a8565b90505b92915050565b6000828211156110645760405162461bcd60e51b8152600401610356906119df565b50900390565b6040518061016001604052806000815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001606081526020016000815260200160008152602001600015158152602001600015158152602001600081525090565b828054828255906000526020600020908101928215611126579160200282015b8281111561112657825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906110f1565b5061113292915061122f565b5090565b828054828255906000526020600020908101928215611171579160200282015b82811115611171578251825591602001919060010190611156565b5061113292915061124e565b8280548282559060005260206000209081019282156111ca579160200282015b828111156111ca57825180516111ba918491602090910190611263565b509160200191906001019061119d565b506111329291506112d0565b828054828255906000526020600020908101928215611223579160200282015b828111156112235782518051611213918491602090910190611263565b50916020019190600101906111f6565b506111329291506112ed565b5b808211156111325780546001600160a01b0319168155600101611230565b5b80821115611132576000815560010161124f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106112a457805160ff1916838001178555611171565b828001600101855582156111715791820182811115611171578251825591602001919060010190611156565b808211156111325760006112e4828261130a565b506001016112d0565b80821115611132576000611301828261130a565b506001016112ed565b50805460018160011615610100020316600290046000825580601f10611330575061134e565b601f01602090049060005260206000209081019061134e919061124e565b50565b80356001600160a01b038116811461103c57600080fd5b600082601f830112611378578081fd5b813561138b61138682611d48565b611d21565b8181529150602080830190848101818402860182018710156113ac57600080fd5b60005b848110156113d3576113c18883611351565b845292820192908201906001016113af565b505050505092915050565b600082601f8301126113ee578081fd5b81356113fc61138682611d48565b818152915060208083019084810160005b848110156113d357611424888484358a01016114ec565b8452928201929082019060010161140d565b600082601f830112611446578081fd5b813561145461138682611d48565b818152915060208083019084810160005b848110156113d35761147c888484358a01016114ec565b84529282019290820190600101611465565b600082601f83011261149e578081fd5b81356114ac61138682611d48565b8181529150602080830190848101818402860182018710156114cd57600080fd5b60005b848110156113d3578135845292820192908201906001016114d0565b600082601f8301126114fc578081fd5b813567ffffffffffffffff811115611512578182fd5b611525601f8201601f1916602001611d21565b915080825283602082850101111561153c57600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215611566578081fd5b6115708383611351565b9392505050565b600080600080600060a0868803121561158e578081fd5b853567ffffffffffffffff808211156115a5578283fd5b6115b189838a01611368565b965060208801359150808211156115c6578283fd5b6115d289838a0161148e565b955060408801359150808211156115e7578283fd5b6115f389838a01611436565b94506060880135915080821115611608578283fd5b61161489838a016113de565b93506080880135915080821115611629578283fd5b50611636888289016114ec565b9150509295509295909350565b600060208284031215611654578081fd5b815161103981611da4565b600060208284031215611670578081fd5b5035919050565b600060208284031215611688578081fd5b5051919050565b600080604083850312156116a1578182fd5b8235915060208301356116b381611da4565b809150509250929050565b6000815180845260208085019450808401835b838110156116f65781516001600160a01b0316875295820195908201906001016116d1565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015611747578284038952611735848351611783565b9885019893509084019060010161171d565b5091979650505050505050565b6000815180845260208085019450808401835b838110156116f657815187529582019590820190600101611767565b6000815180845261179b816020860160208601611d74565b601f01601f19169290920160200192915050565b600081546001808216600081146117cd57600181146117e457611816565b60ff198316865260028304607f1686019350611816565b600283048560005260208060002060005b8381101561180e5781548a8201529085019082016117f5565b505050860193505b50505092915050565b6000815460018082166000811461183d576001811461185b57611816565b60028304607f16865260ff1983166020870152604086019350611816565b6002830480875261186b86611d68565b60005b8281101561188f5781546020828b010152848201915060208101905061186e565b88016020019550505050505092915050565b6001600160e01b03198316815260006118bd60048301846117af565b949350505050565b600082516118d7818460208701611d74565b9190910192915050565b600061157082846117af565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b60006080825261195060808301876116be565b82810360208401526119628187611754565b905082810360408401526119768186611701565b9050828103606084015261198a8185611701565b979650505050505050565b6000602082526115706020830184611783565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526043908201527f486f7264436f6e67726573733a3a70726f706f73653a2070726f706f73616c2060408201527f66756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d616060820152620e8c6d60eb1b608082015260a00190565b60208082526034908201527f486f7264436f6e67726573733a63616e63656c3a2050726f706f73616c20616c604082015273726561647920726561636865642071756f72756d60601b606082015260800190565b60208082526041908201527f486f7264436f6e67726573733a3a657865637574655472616e73616374696f6e60408201527f3a205472616e73616374696f6e20657865637574696f6e2072657665727465646060820152601760f91b608082015260a00190565b6020808252602b908201527f486f7264436f6e67726573733a3a70726f706f73653a206d7573742070726f7660408201526a69646520616374696f6e7360a81b606082015260800190565b6020808252602f908201527f4f6e6c7920486f7264436f6e6772657373206d656d6265722063616e2063616c60408201526e36103a3434b990333ab731ba34b7b760891b606082015260800190565b6020808252602c908201527f486f7264436f6e67726573733a3a5f63617374566f74653a20766f746572206160408201526b1b1c9958591e481d9bdd195960a21b606082015260800190565b90815260200190565b8781526001600160a01b038716602082015260e060408201819052600090611c53908301886116be565b8281036060840152611c658188611754565b90508281036080840152611c798187611701565b905082810360a0840152611c8d8186611701565b905082810360c0840152611ca18185611783565b9a9950505050505050505050565b9687526001600160a01b039590951660208701526040860193909352606085019190915215156080840152151560a083015260c082015260e00190565b600084825260606020830152611d05606083018561181f565b8281036040840152611d17818561181f565b9695505050505050565b60405181810167ffffffffffffffff81118282101715611d4057600080fd5b604052919050565b600067ffffffffffffffff821115611d5e578081fd5b5060209081020190565b60009081526020902090565b60005b83811015611d8f578181015183820152602001611d77565b83811115611d9e576000848401525b50505050565b801515811461134e57600080fdfea26469706673582212206bc501bc89d58b45fe68e6e5f171c4630a82be226305741c8fdb33157d6852d764736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106100955760003560e01c806340e58ee51161005957806340e58ee5146101aa5780635f6afd15146101ca578063da35c664146101ec578063da95691a1461020e578063fe0d94c11461022e576100d5565b8063013cf08b146100da57806306fdde031461011657806315373e3d14610138578063328dd9821461015a5780633482cafe1461018a576100d5565b366100d5577fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf133346040516100cb929190611901565b60405180910390a1005b600080fd5b3480156100e657600080fd5b506100fa6100f536600461165f565b610241565b60405161010d9796959493929190611caf565b60405180910390f35b34801561012257600080fd5b5061012b61028d565b60405161010d9190611995565b34801561014457600080fd5b5061015861015336600461168f565b6102b5565b005b34801561016657600080fd5b5061017a61017536600461165f565b61036e565b60405161010d949392919061193d565b34801561019657600080fd5b506101586101a5366004611555565b6105fd565b3480156101b657600080fd5b506101586101c536600461165f565b610635565b3480156101d657600080fd5b506101df610813565b60405161010d91906118ed565b3480156101f857600080fd5b50610201610822565b60405161010d9190611c20565b34801561021a57600080fd5b50610201610229366004611577565b610828565b61015861023c36600461165f565b610ad0565b60026020526000908152604090208054600182015460068301546007840154600885015460099095015493946001600160a01b03909316939192909160ff808316926101009004169087565b6040518060400160405280600c81526020016b486f7264436f6e677265737360a01b81525081565b60005460405163288c314960e21b81526001600160a01b039091169063a230c524906102e59033906004016118ed565b60206040518083038186803b1580156102fd57600080fd5b505afa158015610311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103359190611643565b151560011461035f5760405162461bcd60e51b815260040161035690611b85565b60405180910390fd5b61036a338383610f38565b5050565b606080606080600060026000878152602001908152602001600020905080600201816003018260040183600501838054806020026020016040519081016040528092919081815260200182805480156103f057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103d2575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561044257602002820191906000526020600020905b81548152602001906001019080831161042e575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156105155760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156105015780601f106104d657610100808354040283529160200191610501565b820191906000526020600020905b8154815290600101906020018083116104e457829003601f168201915b50505050508152602001906001019061046a565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156105e75760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156105d35780601f106105a8576101008083540402835291602001916105d3565b820191906000526020600020905b8154815290600101906020018083116105b657829003601f168201915b50505050508152602001906001019061053c565b5050505090509450945094509450509193509193565b6000546001600160a01b03161561061357600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60005460405163288c314960e21b81526001600160a01b039091169063a230c524906106659033906004016118ed565b60206040518083038186803b15801561067d57600080fd5b505afa158015610691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b59190611643565b15156001146106d65760405162461bcd60e51b815260040161035690611b85565b60008181526002602052604090206008810154610100900460ff161580156107035750600881015460ff16155b61070c57600080fd5b80600901546203f4800142101561072257600080fd5b60008054906101000a90046001600160a01b03166001600160a01b031663ab0d8a3f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561076e57600080fd5b505afa158015610782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a69190611677565b8160060154106107c85760405162461bcd60e51b815260040161035690611a7f565b60088101805460ff191660011790556040517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90610807908490611c20565b60405180910390a15050565b6000546001600160a01b031690565b60015481565b6000805460405163288c314960e21b81526001600160a01b039091169063a230c524906108599033906004016118ed565b60206040518083038186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190611643565b15156001146108ca5760405162461bcd60e51b815260040161035690611b85565b845186511480156108dc575083518651145b80156108e9575082518651145b6109055760405162461bcd60e51b815260040161035690611a16565b85516109235760405162461bcd60e51b815260040161035690611b3a565b600180548101905561093361106a565b506040805161016081018252600180548083523360208085019182528486018c8152606086018c9052608086018b905260a086018a9052600060c0870181905260e08701819052610100870181905261012087018190524261014088015293845260028083529690932085518155915193820180546001600160a01b0319166001600160a01b0390951694909417909355905180519394859492936109dd939185019201906110d1565b50606082015180516109f9916003840191602090910190611136565b5060808201518051610a1591600484019160209091019061117d565b5060a08201518051610a319160058401916020909101906111d6565b5060c0820151600682015560e082015160078201556101008083015160088301805461012086015160ff199091169215159290921761ff0019169115159092021790556101409091015160099091015580516040517fbaab6dcd2ae57433cc1372e25bc5139c3bd664075695546fde8821591a226e3891610abd9133908b908b908b908b908b90611c29565b60405180910390a1519695505050505050565b60005460405163288c314960e21b81526001600160a01b039091169063a230c52490610b009033906004016118ed565b60206040518083038186803b158015610b1857600080fd5b505afa158015610b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b509190611643565b1515600114610b715760405162461bcd60e51b815260040161035690611b85565b60008181526002602052604090206008810154610100900460ff16158015610b9e5750600881015460ff16155b610ba757600080fd5b60088101805461ff0019166101001790556000546040805163ab0d8a3f60e01b815290516001600160a01b039092169163ab0d8a3f91600480820192602092909190829003018186803b158015610bfd57600080fd5b505afa158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c359190611677565b81600601541015610c4557600080fd5b60005b6002820154811015610f08576060826004018281548110610c6557fe5b60009182526020909120015460026000196101006001841615020190911604610d3157826005018281548110610c9757fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610d255780601f10610cfa57610100808354040283529160200191610d25565b820191906000526020600020905b815481529060010190602001808311610d0857829003601f168201915b50505050509050610d9b565b826004018281548110610d4057fe5b90600052602060002001604051610d5791906118e1565b6040518091039020836005018381548110610d6e57fe5b90600052602060002001604051602001610d899291906118a1565b60405160208183030381529060405290505b6000836002018381548110610dac57fe5b6000918252602090912001546003850180546001600160a01b039092169185908110610dd457fe5b906000526020600020015483604051610ded91906118c5565b60006040518083038185875af1925050503d8060008114610e2a576040519150601f19603f3d011682016040523d82523d6000602084013e610e2f565b606091505b5050905080610e505760405162461bcd60e51b815260040161035690611ad3565b836002018381548110610e5f57fe5b6000918252602090912001546003850180546001600160a01b03909216917f88405ca50016c636e025868e263efe5a9f63bf11cc45404f7616394c7dc389d0919086908110610eaa57fe5b9060005260206000200154866004018681548110610ec457fe5b90600052602060002001876005018781548110610edd57fe5b90600052602060002001604051610ef693929190611cec565b60405180910390a25050600101610c48565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516108079190611c20565b60008281526002602090815260408083206001600160a01b0387168452600a8101909252909120805460ff1615610f815760405162461bcd60e51b815260040161035690611bd4565b8215610fa1576006820154610f97906001611014565b6006830155610fb7565b6007820154610fb1906001611042565b60078301555b8054600160ff199091161761ff001916610100841515021781556040517fd356173ae8eeea8691aee4c1be712c314a975a3d43ebc48b08ca54d0dac91228906110059087908790879061191a565b60405180910390a15050505050565b6000828201838110156110395760405162461bcd60e51b8152600401610356906119a8565b90505b92915050565b6000828211156110645760405162461bcd60e51b8152600401610356906119df565b50900390565b6040518061016001604052806000815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001606081526020016000815260200160008152602001600015158152602001600015158152602001600081525090565b828054828255906000526020600020908101928215611126579160200282015b8281111561112657825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906110f1565b5061113292915061122f565b5090565b828054828255906000526020600020908101928215611171579160200282015b82811115611171578251825591602001919060010190611156565b5061113292915061124e565b8280548282559060005260206000209081019282156111ca579160200282015b828111156111ca57825180516111ba918491602090910190611263565b509160200191906001019061119d565b506111329291506112d0565b828054828255906000526020600020908101928215611223579160200282015b828111156112235782518051611213918491602090910190611263565b50916020019190600101906111f6565b506111329291506112ed565b5b808211156111325780546001600160a01b0319168155600101611230565b5b80821115611132576000815560010161124f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106112a457805160ff1916838001178555611171565b828001600101855582156111715791820182811115611171578251825591602001919060010190611156565b808211156111325760006112e4828261130a565b506001016112d0565b80821115611132576000611301828261130a565b506001016112ed565b50805460018160011615610100020316600290046000825580601f10611330575061134e565b601f01602090049060005260206000209081019061134e919061124e565b50565b80356001600160a01b038116811461103c57600080fd5b600082601f830112611378578081fd5b813561138b61138682611d48565b611d21565b8181529150602080830190848101818402860182018710156113ac57600080fd5b60005b848110156113d3576113c18883611351565b845292820192908201906001016113af565b505050505092915050565b600082601f8301126113ee578081fd5b81356113fc61138682611d48565b818152915060208083019084810160005b848110156113d357611424888484358a01016114ec565b8452928201929082019060010161140d565b600082601f830112611446578081fd5b813561145461138682611d48565b818152915060208083019084810160005b848110156113d35761147c888484358a01016114ec565b84529282019290820190600101611465565b600082601f83011261149e578081fd5b81356114ac61138682611d48565b8181529150602080830190848101818402860182018710156114cd57600080fd5b60005b848110156113d3578135845292820192908201906001016114d0565b600082601f8301126114fc578081fd5b813567ffffffffffffffff811115611512578182fd5b611525601f8201601f1916602001611d21565b915080825283602082850101111561153c57600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215611566578081fd5b6115708383611351565b9392505050565b600080600080600060a0868803121561158e578081fd5b853567ffffffffffffffff808211156115a5578283fd5b6115b189838a01611368565b965060208801359150808211156115c6578283fd5b6115d289838a0161148e565b955060408801359150808211156115e7578283fd5b6115f389838a01611436565b94506060880135915080821115611608578283fd5b61161489838a016113de565b93506080880135915080821115611629578283fd5b50611636888289016114ec565b9150509295509295909350565b600060208284031215611654578081fd5b815161103981611da4565b600060208284031215611670578081fd5b5035919050565b600060208284031215611688578081fd5b5051919050565b600080604083850312156116a1578182fd5b8235915060208301356116b381611da4565b809150509250929050565b6000815180845260208085019450808401835b838110156116f65781516001600160a01b0316875295820195908201906001016116d1565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015611747578284038952611735848351611783565b9885019893509084019060010161171d565b5091979650505050505050565b6000815180845260208085019450808401835b838110156116f657815187529582019590820190600101611767565b6000815180845261179b816020860160208601611d74565b601f01601f19169290920160200192915050565b600081546001808216600081146117cd57600181146117e457611816565b60ff198316865260028304607f1686019350611816565b600283048560005260208060002060005b8381101561180e5781548a8201529085019082016117f5565b505050860193505b50505092915050565b6000815460018082166000811461183d576001811461185b57611816565b60028304607f16865260ff1983166020870152604086019350611816565b6002830480875261186b86611d68565b60005b8281101561188f5781546020828b010152848201915060208101905061186e565b88016020019550505050505092915050565b6001600160e01b03198316815260006118bd60048301846117af565b949350505050565b600082516118d7818460208701611d74565b9190910192915050565b600061157082846117af565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b60006080825261195060808301876116be565b82810360208401526119628187611754565b905082810360408401526119768186611701565b9050828103606084015261198a8185611701565b979650505050505050565b6000602082526115706020830184611783565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526043908201527f486f7264436f6e67726573733a3a70726f706f73653a2070726f706f73616c2060408201527f66756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d616060820152620e8c6d60eb1b608082015260a00190565b60208082526034908201527f486f7264436f6e67726573733a63616e63656c3a2050726f706f73616c20616c604082015273726561647920726561636865642071756f72756d60601b606082015260800190565b60208082526041908201527f486f7264436f6e67726573733a3a657865637574655472616e73616374696f6e60408201527f3a205472616e73616374696f6e20657865637574696f6e2072657665727465646060820152601760f91b608082015260a00190565b6020808252602b908201527f486f7264436f6e67726573733a3a70726f706f73653a206d7573742070726f7660408201526a69646520616374696f6e7360a81b606082015260800190565b6020808252602f908201527f4f6e6c7920486f7264436f6e6772657373206d656d6265722063616e2063616c60408201526e36103a3434b990333ab731ba34b7b760891b606082015260800190565b6020808252602c908201527f486f7264436f6e67726573733a3a5f63617374566f74653a20766f746572206160408201526b1b1c9958591e481d9bdd195960a21b606082015260800190565b90815260200190565b8781526001600160a01b038716602082015260e060408201819052600090611c53908301886116be565b8281036060840152611c658188611754565b90508281036080840152611c798187611701565b905082810360a0840152611c8d8186611701565b905082810360c0840152611ca18185611783565b9a9950505050505050505050565b9687526001600160a01b039590951660208701526040860193909352606085019190915215156080840152151560a083015260c082015260e00190565b600084825260606020830152611d05606083018561181f565b8281036040840152611d17818561181f565b9695505050505050565b60405181810167ffffffffffffffff81118282101715611d4057600080fd5b604052919050565b600067ffffffffffffffff821115611d5e578081fd5b5060209081020190565b60009081526020902090565b60005b83811015611d8f578181015183820152602001611d77565b83811115611d9e576000848401525b50505050565b801515811461134e57600080fdfea26469706673582212206bc501bc89d58b45fe68e6e5f171c4630a82be226305741c8fdb33157d6852d764736f6c634300060c0033

Deployed Bytecode Sourcemap

8153:8088:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16194:36;16208:10;16220:9;16194:36;;;;;;;:::i;:::-;;;;;;;;8153:8088;;;;;9936:43;;;;;;;;;;-1:-1:-1;9936:43:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;8283:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12591:177::-;;;;;;;;;;-1:-1:-1;12591:177:0;;;;;:::i;:::-;;:::i;:::-;;15714:289;;;;;;;;;;-1:-1:-1;15714:289:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;11084:232::-;;;;;;;;;;-1:-1:-1;11084:232:0;;;;;:::i;:::-;;:::i;14359:736::-;;;;;;;;;;-1:-1:-1;14359:736:0;;;;;:::i;:::-;;:::i;16011:132::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8470:25::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11324:1257::-;;;;;;;;;;-1:-1:-1;11324:1257:0;;;;;:::i;:::-;;:::i;12778:1573::-;;;;;;:::i;:::-;;:::i;9936:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9936:43:0;;;;;;;;;;;;;;;;;;;:::o;8283:44::-;;;;;;;;;;;;;;-1:-1:-1;;;8283:44:0;;;;:::o;12591:177::-;10895:15;;:36;;-1:-1:-1;;;10895:36:0;;-1:-1:-1;;;;;10895:15:0;;;;:24;;:36;;10920:10;;10895:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;10935:4;10895:44;10887:104;;;;-1:-1:-1;;;10887:104:0;;;;;;;:::i;:::-;;;;;;;;;12718:42:::1;12728:10;12740;12752:7;12718:9;:42::i;:::-;12591:177:::0;;:::o;15714:289::-;15774:24;15800:20;15822:26;15850:24;15887:18;15908:9;:21;15918:10;15908:21;;;;;;;;;;;15887:42;;15948:1;:9;;15959:1;:8;;15969:1;:12;;15983:1;:11;;15940:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15940:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15940:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15940:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15714:289;;;;;:::o;11084:232::-;11228:3;11200:15;-1:-1:-1;;;;;11200:15:0;11192:40;11184:49;;;;;;11244:15;:64;;-1:-1:-1;;;;;;11244:64:0;-1:-1:-1;;;;;11244:64:0;;;;;;;;;;11084:232::o;14359:736::-;10895:15;;:36;;-1:-1:-1;;;10895:36:0;;-1:-1:-1;;;;;10895:15:0;;;;:24;;:36;;10920:10;;10895:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;10935:4;10895:44;10887:104;;;;-1:-1:-1;;;10887:104:0;;;;;;;:::i;:::-;14423:25:::1;14451:21:::0;;;:9:::1;:21;::::0;;;;14570:17:::1;::::0;::::1;::::0;::::1;::::0;::::1;;;:26;::::0;::::1;:56;;-1:-1:-1::0;14600:17:0::1;::::0;::::1;::::0;::::1;;:26;14570:56;14562:65;;;::::0;::::1;;14718:8;:18;;;14739:6;14718:27;14699:15;:46;;14691:55;;;::::0;::::1;;14851:15;::::0;::::1;;;;;;-1:-1:-1::0;;;;;14851:15:0::1;-1:-1:-1::0;;;;;14851:32:0::1;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14831:8;:17;;;:54;14823:119;;;;-1:-1:-1::0;;;14823:119:0::1;;;;;;;:::i;:::-;14996:17;::::0;::::1;:24:::0;;-1:-1:-1;;14996:24:0::1;15016:4;14996:24;::::0;;15059:28:::1;::::0;::::1;::::0;::::1;::::0;15076:10;;15059:28:::1;:::i;:::-;;;;;;;;11002:1;14359:736:::0;:::o;16011:132::-;16079:7;16119:15;-1:-1:-1;;;;;16119:15:0;16011:132;:::o;8470:25::-;;;;:::o;11324:1257::-;11566:4;10895:15;;:36;;-1:-1:-1;;;10895:36:0;;-1:-1:-1;;;;;10895:15:0;;;;:24;;:36;;10920:10;;10895:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;10935:4;10895:44;10887:104;;;;-1:-1:-1;;;10887:104:0;;;;;;;:::i;:::-;11628:6:::1;:13;11610:7;:14;:31;:83;;;;;11676:10;:17;11658:7;:14;:35;11610:83;:134;;;;;11728:9;:16;11710:7;:14;:34;11610:134;11588:251;;;;-1:-1:-1::0;;;11588:251:0::1;;;;;;;:::i;:::-;11860:14:::0;;11852:75:::1;;;;-1:-1:-1::0;;;11852:75:0::1;;;;;;;:::i;:::-;11940:13;:15:::0;;;::::1;::::0;;11968:27:::1;;:::i;:::-;-1:-1:-1::0;11998:377:0::1;::::0;;::::1;::::0;::::1;::::0;;12026:13:::1;::::0;;11998:377;;;12064:10:::1;11998:377;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11998:377:0;;;;;;;;;;;;;;;;;;;;;;;;12348:15:::1;11998:377:::0;;;;12388:25;;;:9:::1;:25:::0;;;;;;;:39;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;12388:39:0::1;-1:-1:-1::0;;;;;12388:39:0;;::::1;::::0;;;::::1;::::0;;;;;;;11998:377;;;;12388:25;;:39:::1;::::0;;;::::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;12388:39:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;12388:39:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;12388:39:0::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;12388:39:0::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;-1:-1:-1;;12388:39:0;;::::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;12388:39:0::1;::::0;::::1;;::::0;;::::1;;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;12461:14;;12445:96:::1;::::0;::::1;::::0;::::1;::::0;12477:10:::1;::::0;12489:7;;12498:6;;12506:10;;12518:9;;12529:11;;12445:96:::1;:::i;:::-;;;;;;;;12559:14:::0;;11324:1257;-1:-1:-1;;;;;;11324:1257:0:o;12778:1573::-;10895:15;;:36;;-1:-1:-1;;;10895:36:0;;-1:-1:-1;;;;;10895:15:0;;;;:24;;:36;;10920:10;;10895:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;10935:4;10895:44;10887:104;;;;-1:-1:-1;;;10887:104:0;;;;;;;:::i;:::-;12917:25:::1;12945:21:::0;;;:9:::1;:21;::::0;;;;13064:17:::1;::::0;::::1;::::0;::::1;::::0;::::1;;;:26;::::0;::::1;:56;;-1:-1:-1::0;13094:17:0::1;::::0;::::1;::::0;::::1;;:26;13064:56;13056:65;;;::::0;::::1;;13175:17;::::0;::::1;:24:::0;;-1:-1:-1;;13175:24:0::1;;;::::0;;;13329:15;:34:::1;::::0;;-1:-1:-1;;;13329:34:0;;;;-1:-1:-1;;;;;13329:15:0;;::::1;::::0;:32:::1;::::0;:34:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:15;:34;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13308:8;:17;;;:55;;13300:64;;;::::0;::::1;;13382:6;13377:875;13398:16;::::0;::::1;:23:::0;13394:27;::::1;13377:875;;;13443:21;13491:8;:19;;13511:1;13491:22;;;;;;;;;::::0;;;::::1;::::0;;;::::1;13485:36:::0;::::1;-1:-1:-1::0;;13485:36:0::1;;::::0;::::1;;;::::0;;;::::1;;13481:255;;13558:8;:18;;13577:1;13558:21;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;13547:32:::0;;::::1;::::0;;::::1;;-1:-1:-1::0;;13547:32:0::1;;::::0;::::1;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;13558:21:::0;13547:32;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13481:255;;;13671:8;:19;;13691:1;13671:22;;;;;;;;;;;;;;;13655:40;;;;;;:::i;:::-;;;;;;;;13698:8;:18;;13717:1;13698:21;;;;;;;;;;;;;;;13631:89;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13620:100;;13481:255;13817:12;13834:8;:16;;13851:1;13834:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;13865:15:::1;::::0;::::1;:18:::0;;-1:-1:-1;;;;;13834:19:0;;::::1;::::0;13881:1;;13865:18;::::1;;;;;;;;;;;;;13885:8;13834:60;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13816:78;;;13973:7;13965:85;;;;-1:-1:-1::0;;;13965:85:0::1;;;;;;;:::i;:::-;14153:8;:16;;14170:1;14153:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;14174:15:::1;::::0;::::1;:18:::0;;-1:-1:-1;;;;;14153:19:0;;::::1;::::0;14134:106:::1;::::0;14174:15;14190:1;;14174:18;::::1;;;;;;;;;;;;;14194:8;:19;;14214:1;14194:22;;;;;;;;;;;;;;;14218:8;:18;;14237:1;14218:21;;;;;;;;;;;;;;;14134:106;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;13423:3:0::1;;13377:875;;;;14315:28;14332:10;14315:28;;;;;;:::i;15103:603::-:0;15188:25;15216:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;15274:24:0;;;;:17;;;:24;;;;;;15317:16;;;;:25;15309:82;;;;-1:-1:-1;;;15309:82:0;;;;;;;:::i;:::-;15408:7;15404:169;;;15452:17;;;;:24;;15474:1;15452:21;:24::i;:::-;15432:17;;;:44;15404:169;;;15533:21;;;;:28;;15559:1;15533:25;:28::i;:::-;15509:21;;;:52;15404:169;15585:23;;15604:4;-1:-1:-1;;15585:23:0;;;;-1:-1:-1;;15619:25:0;15585:23;15619:25;;;;;;;15662:36;;;;;;15671:5;;15678:10;;15619:25;;15662:36;:::i;:::-;;;;;;;;15103:603;;;;;:::o;3253:179::-;3311:7;3343:5;;;3367:6;;;;3359:46;;;;-1:-1:-1;;;3359:46:0;;;;;;;:::i;:::-;3423:1;-1:-1:-1;3253:179:0;;;;;:::o;3715:158::-;3773:7;3806:1;3801;:6;;3793:49;;;;-1:-1:-1;;;3793:49:0;;;;;;;:::i;:::-;-1:-1:-1;3860:5:0;;;3715:158::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:130::-;72:20;;-1:-1;;;;;37625:54;;38824:35;;38814:2;;38873:1;;38863:12;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;-1:-1;;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;:::i;:::-;354:80;:::i;:::-;462:21;;;345:89;-1:-1;506:4;519:14;;;;494:17;;;608;;;599:27;;;;596:36;-1:-1;593:2;;;645:1;;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;760:37;793:3;781:10;760:37;:::i;:::-;748:50;;812:14;;;;840;;;;702:1;695:9;655:206;;;659:14;;;;;237:630;;;;:::o;891:705::-;;1017:3;1010:4;1002:6;998:17;994:27;984:2;;-1:-1;;1025:12;984:2;1072:6;1059:20;1094:89;1109:73;1175:6;1109:73;:::i;1094:89::-;1211:21;;;1085:98;-1:-1;1255:4;1268:14;;;;1243:17;;;1363:1;1348:242;1373:6;1370:1;1367:13;1348:242;;;1480:46;1522:3;1255:4;1456:3;1443:17;1247:6;1431:30;;1480:46;:::i;:::-;1468:59;;1541:14;;;;1569;;;;1395:1;1388:9;1348:242;;1621:708;;1748:3;1741:4;1733:6;1729:17;1725:27;1715:2;;-1:-1;;1756:12;1715:2;1803:6;1790:20;1825:90;1840:74;1907:6;1840:74;:::i;1825:90::-;1943:21;;;1816:99;-1:-1;1987:4;2000:14;;;;1975:17;;;2095:1;2080:243;2105:6;2102:1;2099:13;2080:243;;;2212:47;2255:3;1987:4;2188:3;2175:17;1979:6;2163:30;;2212:47;:::i;:::-;2200:60;;2274:14;;;;2302;;;;2127:1;2120:9;2080:243;;2355:707;;2472:3;2465:4;2457:6;2453:17;2449:27;2439:2;;-1:-1;;2480:12;2439:2;2527:6;2514:20;2549:80;2564:64;2621:6;2564:64;:::i;2549:80::-;2657:21;;;2540:89;-1:-1;2701:4;2714:14;;;;2689:17;;;2803;;;2794:27;;;;2791:36;-1:-1;2788:2;;;2840:1;;2830:12;2788:2;2865:1;2850:206;2875:6;2872:1;2869:13;2850:206;;;4303:20;;2943:50;;3007:14;;;;3035;;;;2897:1;2890:9;2850:206;;3337:440;;3438:3;3431:4;3423:6;3419:17;3415:27;3405:2;;-1:-1;;3446:12;3405:2;3493:6;3480:20;32643:18;32635:6;32632:30;32629:2;;;-1:-1;;32665:12;32629:2;3515:64;32738:9;32719:17;;-1:-1;;32715:33;32806:4;32796:15;3515:64;:::i;:::-;3506:73;;3599:6;3592:5;3585:21;3703:3;32806:4;3694:6;3627;3685:16;;3682:25;3679:2;;;3720:1;;3710:12;3679:2;38231:6;32806:4;3627:6;3623:17;32806:4;3661:5;3657:16;38208:30;38287:1;38269:16;;;32806:4;38269:16;38262:27;3661:5;3398:379;-1:-1;;3398:379::o;4514:241::-;;4618:2;4606:9;4597:7;4593:23;4589:32;4586:2;;;-1:-1;;4624:12;4586:2;4686:53;4731:7;4707:22;4686:53;:::i;:::-;4676:63;4580:175;-1:-1;;;4580:175::o;4762:1431::-;;;;;;5063:3;5051:9;5042:7;5038:23;5034:33;5031:2;;;-1:-1;;5070:12;5031:2;5128:17;5115:31;5166:18;;5158:6;5155:30;5152:2;;;-1:-1;;5188:12;5152:2;5218:78;5288:7;5279:6;5268:9;5264:22;5218:78;:::i;:::-;5208:88;;5361:2;5350:9;5346:18;5333:32;5319:46;;5166:18;5377:6;5374:30;5371:2;;;-1:-1;;5407:12;5371:2;5437:78;5507:7;5498:6;5487:9;5483:22;5437:78;:::i;:::-;5427:88;;5580:2;5569:9;5565:18;5552:32;5538:46;;5166:18;5596:6;5593:30;5590:2;;;-1:-1;;5626:12;5590:2;5656:88;5736:7;5727:6;5716:9;5712:22;5656:88;:::i;:::-;5646:98;;5809:2;5798:9;5794:18;5781:32;5767:46;;5166:18;5825:6;5822:30;5819:2;;;-1:-1;;5855:12;5819:2;5885:87;5964:7;5955:6;5944:9;5940:22;5885:87;:::i;:::-;5875:97;;6037:3;6026:9;6022:19;6009:33;5995:47;;5166:18;6054:6;6051:30;6048:2;;;-1:-1;;6084:12;6048:2;;6114:63;6169:7;6160:6;6149:9;6145:22;6114:63;:::i;:::-;6104:73;;;5025:1168;;;;;;;;:::o;6200:257::-;;6312:2;6300:9;6291:7;6287:23;6283:32;6280:2;;;-1:-1;;6318:12;6280:2;3282:6;3276:13;3294:30;3318:5;3294:30;:::i;6464:241::-;;6568:2;6556:9;6547:7;6543:23;6539:32;6536:2;;;-1:-1;;6574:12;6536:2;-1:-1;4303:20;;6530:175;-1:-1;6530:175::o;6712:263::-;;6827:2;6815:9;6806:7;6802:23;6798:32;6795:2;;;-1:-1;;6833:12;6795:2;-1:-1;4451:13;;6789:186;-1:-1;6789:186::o;6982:360::-;;;7100:2;7088:9;7079:7;7075:23;7071:32;7068:2;;;-1:-1;;7106:12;7068:2;4316:6;4303:20;7158:63;;7258:2;7298:9;7294:22;3134:20;3159:30;3183:5;3159:30;:::i;:::-;7266:60;;;;7062:280;;;;;:::o;8523:690::-;;8716:5;34408:12;35767:6;35762:3;35755:19;35804:4;;35799:3;35795:14;8728:93;;35804:4;8892:5;33272:14;-1:-1;8931:260;8956:6;8953:1;8950:13;8931:260;;;9017:13;;-1:-1;;;;;37625:54;8323:37;;7503:14;;;;35246;;;;37636:42;8971:9;8931:260;;;-1:-1;9197:10;;8647:566;-1:-1;;;;;8647:566::o;9248:920::-;;9468:5;34408:12;35767:6;35762:3;35755:19;35804:4;;35799:3;35795:14;9480:102;;;;35804:4;9639:6;9635:17;9630:3;9626:27;9614:39;;35804:4;9733:5;33272:14;-1:-1;9772:357;9797:6;9794:1;9791:13;9772:357;;;9859:9;9853:4;9849:20;9844:3;9837:33;7651:64;7711:3;9904:6;9898:13;7651:64;:::i;:::-;10108:14;;;;9918:90;-1:-1;35246:14;;;;9819:1;9812:9;9772:357;;;-1:-1;10152:10;;9390:778;-1:-1;;;;;;;9390:778::o;11172:690::-;;11365:5;34408:12;35767:6;35762:3;35755:19;35804:4;;35799:3;35795:14;11377:93;;35804:4;11541:5;33272:14;-1:-1;11580:260;11605:6;11602:1;11599:13;11580:260;;;11666:13;;20254:37;;8085:14;;;;35246;;;;11627:1;11620:9;11580:260;;12136:323;;12268:5;34408:12;35767:6;35762:3;35755:19;12351:52;12396:6;35804:4;35799:3;35795:14;35804:4;12377:5;12373:16;12351:52;:::i;:::-;32738:9;38728:14;-1:-1;;38724:28;12415:39;;;;35804:4;12415:39;;12216:243;-1:-1;;12216:243::o;12852:887::-;;12991:5;12985:12;13025:1;;13014:9;13010:17;13038:1;13033:267;;;;13311:1;13306:427;;;;13003:730;;13033:267;-1:-1;;13237:25;;13225:38;;13107:1;13092:17;;13111:4;13088:28;13277:16;;;-1:-1;13033:267;;13306:427;13375:1;13364:9;13360:17;33912:3;-1:-1;33902:14;33944:4;;-1:-1;33931:18;-1:-1;13566:130;13580:6;13577:1;13574:13;13566:130;;;13639:14;;13626:11;;;13619:35;13673:15;;;;13595:12;;13566:130;;;-1:-1;;;13710:16;;;-1:-1;13003:730;;;;12961:778;;;;:::o;13770:818::-;;13887:5;13881:12;13921:1;;13910:9;13906:17;13934:1;13929:247;;;;14187:1;14182:400;;;;13899:683;;13929:247;14003:1;13988:17;;14007:4;13984:28;35755:19;;-1:-1;;14115:25;;35804:4;35795:14;;14103:38;14155:14;;;;-1:-1;13929:247;;14182:400;14251:1;14240:9;14236:17;35767:6;35762:3;35755:19;14359:37;14390:5;14359:37;:::i;:::-;-1:-1;14420:130;14434:6;14431:1;14428:13;14420:130;;;14499:7;14493:14;35804:4;14489:1;35799:3;14480:11;;14473:35;13921:1;14531:7;14527:15;14516:26;;35804:4;14453:1;14449:12;14444:17;;14420:130;;;14564:11;;35804:4;14564:11;;-1:-1;;;13899:683;;;13857:731;;;;:::o;20423:399::-;-1:-1;;;;;;37473:78;;12068:56;;20423:399;20707:90;20687:1;20678:11;;20784:6;20707:90;:::i;:::-;20807:10;20580:242;-1:-1;;;;20580:242::o;20829:271::-;;12626:5;34408:12;12737:52;12782:6;12777:3;12770:4;12763:5;12759:16;12737:52;:::i;:::-;12801:16;;;;;20963:137;-1:-1;;20963:137::o;21107:273::-;;21261:94;21351:3;21342:6;21261:94;:::i;21387:222::-;-1:-1;;;;;37625:54;;;;8323:37;;21514:2;21499:18;;21485:124::o;21861:349::-;-1:-1;;;;;37625:54;;;;8192:58;;22196:2;22181:18;;20254:37;22024:2;22009:18;;21995:215::o;22217:432::-;-1:-1;;;;;37625:54;;;;8323:37;;22558:2;22543:18;;20254:37;;;;37386:13;37379:21;22635:2;22620:18;;11935:34;22394:2;22379:18;;22365:284::o;22656:1224::-;;23105:3;23127:17;23120:47;23181:108;23105:3;23094:9;23090:19;23275:6;23181:108;:::i;:::-;23337:9;23331:4;23327:20;23322:2;23311:9;23307:18;23300:48;23362:108;23465:4;23456:6;23362:108;:::i;:::-;23354:116;;23518:9;23512:4;23508:20;23503:2;23492:9;23488:18;23481:48;23543:128;23666:4;23657:6;23543:128;:::i;:::-;23535:136;;23719:9;23713:4;23709:20;23704:2;23693:9;23689:18;23682:48;23744:126;23865:4;23856:6;23744:126;:::i;:::-;23736:134;23076:804;-1:-1;;;;;;;23076:804::o;23887:310::-;;24034:2;24055:17;24048:47;24109:78;24034:2;24023:9;24019:18;24173:6;24109:78;:::i;24204:416::-;24404:2;24418:47;;;17275:2;24389:18;;;35755:19;17311:29;35795:14;;;17291:50;17360:12;;;24375:245::o;24627:416::-;24827:2;24841:47;;;17611:2;24812:18;;;35755:19;17647:32;35795:14;;;17627:53;17699:12;;;24798:245::o;25050:416::-;25250:2;25264:47;;;17950:2;25235:18;;;35755:19;17986:34;35795:14;;;17966:55;18055:34;18041:12;;;18034:56;-1:-1;;;18110:12;;;18103:27;18149:12;;;25221:245::o;25473:416::-;25673:2;25687:47;;;18400:2;25658:18;;;35755:19;18436:34;35795:14;;;18416:55;-1:-1;;;18491:12;;;18484:44;18547:12;;;25644:245::o;25896:416::-;26096:2;26110:47;;;18798:2;26081:18;;;35755:19;18834:34;35795:14;;;18814:55;18903:34;18889:12;;;18882:56;-1:-1;;;18958:12;;;18951:25;18995:12;;;26067:245::o;26319:416::-;26519:2;26533:47;;;19246:2;26504:18;;;35755:19;19282:34;35795:14;;;19262:55;-1:-1;;;19337:12;;;19330:35;19384:12;;;26490:245::o;26742:416::-;26942:2;26956:47;;;19635:2;26927:18;;;35755:19;19671:34;35795:14;;;19651:55;-1:-1;;;19726:12;;;19719:39;19777:12;;;26913:245::o;27165:416::-;27365:2;27379:47;;;20028:2;27350:18;;;35755:19;20064:34;35795:14;;;20044:55;-1:-1;;;20119:12;;;20112:36;20167:12;;;27336:245::o;27588:222::-;20254:37;;;27715:2;27700:18;;27686:124::o;27817:1664::-;20254:37;;;-1:-1;;;;;37625:54;;28551:2;28536:18;;8192:58;28378:3;28588:2;28573:18;;28566:48;;;27817:1664;;28628:108;;28363:19;;28722:6;28628:108;:::i;:::-;28784:9;28778:4;28774:20;28769:2;28758:9;28754:18;28747:48;28809:108;28912:4;28903:6;28809:108;:::i;:::-;28801:116;;28966:9;28960:4;28956:20;28950:3;28939:9;28935:19;28928:49;28991:128;29114:4;29105:6;28991:128;:::i;:::-;28983:136;;29168:9;29162:4;29158:20;29152:3;29141:9;29137:19;29130:49;29193:126;29314:4;29305:6;29193:126;:::i;:::-;29185:134;;29368:9;29362:4;29358:20;29352:3;29341:9;29337:19;29330:49;29393:78;29466:4;29457:6;29393:78;:::i;:::-;29385:86;28349:1132;-1:-1;;;;;;;;;;28349:1132::o;29488:868::-;20254:37;;;-1:-1;;;;;37625:54;;;;29936:2;29921:18;;8323:37;30019:2;30004:18;;20254:37;;;;30102:2;30087:18;;20254:37;;;;37386:13;37379:21;30179:3;30164:19;;11935:34;37386:13;37379:21;37636:42;30242:19;;11935:34;30341:3;30326:19;;20254:37;29771:3;29756:19;;29742:614::o;30363:604::-;;20284:5;20261:3;20254:37;30578:2;30696;30685:9;30681:18;30674:48;30736:75;30578:2;30567:9;30563:18;30797:6;30736:75;:::i;:::-;30859:9;30853:4;30849:20;30844:2;30833:9;30829:18;30822:48;30884:73;30952:4;30943:6;30884:73;:::i;:::-;30876:81;30549:418;-1:-1;;;;;;30549:418::o;30974:256::-;31036:2;31030:9;31062:17;;;31137:18;31122:34;;31158:22;;;31119:62;31116:2;;;31194:1;;31184:12;31116:2;31036;31203:22;31014:216;;-1:-1;31014:216::o;31237:304::-;;31396:18;31388:6;31385:30;31382:2;;;-1:-1;;31418:12;31382:2;-1:-1;31463:4;31451:17;;;31516:15;;31319:222::o;33808:157::-;;33902:14;;;33944:4;33931:18;;;33861:104::o;38304:268::-;38369:1;38376:101;38390:6;38387:1;38384:13;38376:101;;;38457:11;;;38451:18;38438:11;;;38431:39;38412:2;38405:10;38376:101;;;38492:6;38489:1;38486:13;38483:2;;;38369:1;38548:6;38543:3;38539:16;38532:27;38483:2;;38353:219;;;:::o;38889:111::-;38970:5;37386:13;37379:21;38948:5;38945:32;38935:2;;38991:1;;38981:12

Swarm Source

ipfs://6bc501bc89d58b45fe68e6e5f171c4630a82be226305741c8fdb33157d6852d7

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  ]

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.