ETH Price: $3,388.50 (-1.35%)
Gas: 3 Gwei

Contract

0x690e775361AD66D1c4A25d89da9fCd639F5198eD
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Execute197770832024-05-01 18:30:2358 days ago1714588223IN
Radicle: Governance
0 ETH0.0004099111.06379281
Execute197770832024-05-01 18:30:2358 days ago1714588223IN
Radicle: Governance
0 ETH0.0014917811.06379281
Queue197596432024-04-29 8:00:5961 days ago1714377659IN
Radicle: Governance
0 ETH0.000324018.0089058
Queue197596432024-04-29 8:00:5961 days ago1714377659IN
Radicle: Governance
0 ETH0.000324018.0089058
Queue197596392024-04-29 8:00:1161 days ago1714377611IN
Radicle: Governance
0 ETH0.001031198.4858783
Cast Vote197379222024-04-26 7:02:3564 days ago1714114955IN
Radicle: Governance
0 ETH0.000498097.2530499
Cast Vote197363482024-04-26 1:46:1164 days ago1714095971IN
Radicle: Governance
0 ETH0.000347225.48882771
Cast Vote197324282024-04-25 12:37:4764 days ago1714048667IN
Radicle: Governance
0 ETH0.0008476712.34341341
Cast Vote197316022024-04-25 9:51:4764 days ago1714038707IN
Radicle: Governance
0 ETH0.000602818.77796745
Cast Vote197271932024-04-24 19:03:4765 days ago1713985427IN
Radicle: Governance
0 ETH0.0010756215.66272163
Cast Vote197245942024-04-24 10:18:2365 days ago1713953903IN
Radicle: Governance
0 ETH0.0012086217.59941871
Cast Vote197245802024-04-24 10:15:3565 days ago1713953735IN
Radicle: Governance
0 ETH0.0009446913.75621959
Cast Vote197241422024-04-24 8:47:2365 days ago1713948443IN
Radicle: Governance
0 ETH0.000548277.983698
Cast Vote197239742024-04-24 8:13:4766 days ago1713946427IN
Radicle: Governance
0 ETH0.0006454810.20349198
Cast Vote197221632024-04-24 2:08:3566 days ago1713924515IN
Radicle: Governance
0 ETH0.0009830411.46091994
Propose197209212024-04-23 21:57:3566 days ago1713909455IN
Radicle: Governance
0 ETH0.0041294711.18130945
Execute196237382024-04-10 7:27:3580 days ago1712734055IN
Radicle: Governance
0 ETH0.0029467914.50449846
Queue196090242024-04-08 5:59:3582 days ago1712555975IN
Radicle: Governance
0 ETH0.001584239.3634661
Cast Vote196052892024-04-07 17:25:3582 days ago1712510735IN
Radicle: Governance
0 ETH0.0013734820
Cast Vote195918612024-04-05 20:17:1184 days ago1712348231IN
Radicle: Governance
0 ETH0.0014328120.86405101
Cast Vote195906572024-04-05 16:14:2384 days ago1712333663IN
Radicle: Governance
0 ETH0.001860227.08753931
Cast Vote195898552024-04-05 13:31:5984 days ago1712323919IN
Radicle: Governance
0 ETH0.0017653425.70622311
Cast Vote195892222024-04-05 11:24:4784 days ago1712316287IN
Radicle: Governance
0 ETH0.0010066114.65790155
Cast Vote195891392024-04-05 11:07:5984 days ago1712315279IN
Radicle: Governance
0 ETH0.0009051714.30864589
Cast Vote195891082024-04-05 11:01:4784 days ago1712314907IN
Radicle: Governance
0 ETH0.0010046614.62949269
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To Value
118637392021-02-15 21:19:311229 days ago1613423971  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Governor

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2021-02-15
*/

// SPDX-License-Identifier: GPL-3.0-only
// Copyright 2020 Compound Labs, Inc.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
// 3. Neither the name of the copyright holder nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.

pragma solidity ^0.7.5;
pragma experimental ABIEncoderV2;

contract Governor {
    /// @notice The name of this contract
    string public constant NAME = "Radicle Governor";

    /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed
    function quorumVotes() public pure returns (uint256) {
        return 4000000e18;
    } // 4,000,000 = 4% of Token

    /// @notice The number of votes required in order for a voter to become a proposer
    function proposalThreshold() public pure returns (uint256) {
        return 1000000e18;
    } // 1,000,000 = 1% of Token

    /// @notice The maximum number of actions that can be included in a proposal
    function proposalMaxOperations() public pure returns (uint256) {
        return 10;
    } // 10 actions

    /// @notice The delay before voting on a proposal may take place, once proposed
    function votingDelay() public pure returns (uint256) {
        return 1;
    } // 1 block

    /// @notice The duration of voting on a proposal, in blocks
    function votingPeriod() public pure returns (uint256) {
        return 17280;
    } // ~3 days in blocks (assuming 15s blocks)

    /// @notice The address of the Radicle Protocol Timelock
    TimelockInterface public immutable timelock;

    /// @notice The address of the Radicle governance token
    TokenInterface public immutable token;

    /// @notice The address of the Governor Guardian
    address public guardian;

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

    /// @notice Change proposal
    struct Proposal {
        // Creator of the proposal
        address proposer;
        // The timestamp that the proposal will be available for execution, set once the vote succeeds
        uint256 eta;
        // 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
        uint256[] 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;
        // The block at which voting begins: holders must delegate their votes prior to this block
        uint256 startBlock;
        // The block at which voting ends: votes must be cast prior to this block
        uint256 endBlock;
        // Current number of votes in favor of this proposal
        uint256 forVotes;
        // Current number of votes in opposition to this proposal
        uint256 againstVotes;
        // Flag marking whether the proposal has been canceled
        bool canceled;
        // Flag marking whether the proposal has been executed
        bool executed;
        // 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;
        // The number of votes the voter had, which were cast
        uint96 votes;
    }

    /// @notice Possible states that a proposal may be in
    enum ProposalState {Pending, Active, Canceled, Defeated, Succeeded, Queued, Expired, Executed}

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

    /// @notice The latest proposal for each proposer
    mapping(address => uint256) public latestProposalIds;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH =
        keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice The EIP-712 typehash for the ballot struct used by the contract
    bytes32 public constant BALLOT_TYPEHASH = keccak256("Ballot(uint256 proposalId,bool support)");

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

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

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

    /// @notice An event emitted when a proposal has been queued in the Timelock
    event ProposalQueued(uint256 id, uint256 eta);

    /// @notice An event emitted when a proposal has been executed in the Timelock
    event ProposalExecuted(uint256 id);

    constructor(
        address timelock_,
        address token_,
        address guardian_
    ) {
        timelock = TimelockInterface(timelock_);
        token = TokenInterface(token_);
        guardian = guardian_;
    }

    function propose(
        address[] memory targets,
        uint256[] memory values,
        string[] memory signatures,
        bytes[] memory calldatas,
        string memory description
    ) public returns (uint256) {
        require(
            token.getPriorVotes(msg.sender, sub256(block.number, 1)) >= proposalThreshold(),
            "Governor::propose: proposer votes below proposal threshold"
        );
        require(
            targets.length == values.length &&
                targets.length == signatures.length &&
                targets.length == calldatas.length,
            "Governor::propose: proposal function information arity mismatch"
        );
        require(targets.length != 0, "Governor::propose: must provide actions");
        require(targets.length <= proposalMaxOperations(), "Governor::propose: too many actions");

        uint256 latestProposalId = latestProposalIds[msg.sender];
        if (latestProposalId != 0) {
            ProposalState proposersLatestProposalState = state(latestProposalId);
            require(
                proposersLatestProposalState != ProposalState.Active,
                "Governor::propose: one live proposal per proposer, found an already active proposal"
            );
            require(
                proposersLatestProposalState != ProposalState.Pending,
                "Governor::propose: one live proposal per proposer, found an already pending proposal"
            );
        }

        uint256 startBlock = add256(block.number, votingDelay());
        uint256 endBlock = add256(startBlock, votingPeriod());

        proposalCount++;
        Proposal storage newProposal = proposals[proposalCount];

        uint256 proposalId = proposalCount;

        newProposal.proposer = msg.sender;
        newProposal.eta = 0;
        newProposal.targets = targets;
        newProposal.values = values;
        newProposal.signatures = signatures;
        newProposal.calldatas = calldatas;
        newProposal.startBlock = startBlock;
        newProposal.endBlock = endBlock;
        newProposal.forVotes = 0;
        newProposal.againstVotes = 0;
        newProposal.canceled = false;
        newProposal.executed = false;

        latestProposalIds[newProposal.proposer] = proposalId;

        emit ProposalCreated(
            proposalId,
            msg.sender,
            targets,
            values,
            signatures,
            calldatas,
            startBlock,
            endBlock,
            description
        );
        return proposalId;
    }

    function queue(uint256 proposalId) public {
        require(
            state(proposalId) == ProposalState.Succeeded,
            "Governor::queue: proposal can only be queued if it is succeeded"
        );
        Proposal storage proposal = proposals[proposalId];
        uint256 eta = add256(block.timestamp, timelock.delay());
        for (uint256 i = 0; i < proposal.targets.length; i++) {
            _queueOrRevert(
                proposal.targets[i],
                proposal.values[i],
                proposal.signatures[i],
                proposal.calldatas[i],
                eta
            );
        }
        proposal.eta = eta;
        emit ProposalQueued(proposalId, eta);
    }

    function _queueOrRevert(
        address target,
        uint256 value,
        string memory signature,
        bytes memory data,
        uint256 eta
    ) internal {
        require(
            !timelock.queuedTransactions(
                keccak256(abi.encode(target, value, signature, data, eta))
            ),
            "Governor::_queueOrRevert: proposal action already queued at eta"
        );
        timelock.queueTransaction(target, value, signature, data, eta);
    }

    function execute(uint256 proposalId) public payable {
        require(
            state(proposalId) == ProposalState.Queued,
            "Governor::execute: proposal can only be executed if it is queued"
        );
        Proposal storage proposal = proposals[proposalId];
        proposal.executed = true;
        for (uint256 i = 0; i < proposal.targets.length; i++) {
            timelock.executeTransaction{value: proposal.values[i]}(
                proposal.targets[i],
                proposal.values[i],
                proposal.signatures[i],
                proposal.calldatas[i],
                proposal.eta
            );
        }
        emit ProposalExecuted(proposalId);
    }

    function cancel(uint256 proposalId) public {
        ProposalState _state = state(proposalId);
        require(
            _state != ProposalState.Executed,
            "Governor::cancel: cannot cancel executed proposal"
        );

        Proposal storage proposal = proposals[proposalId];
        require(
            msg.sender == guardian ||
                // Allows anyone to cancel a proposal if the voting power of the
                // proposer dropped below the threshold after the proposal was
                // submitted.
                token.getPriorVotes(proposal.proposer, sub256(block.number, 1)) <
                proposalThreshold(),
            "Governor::cancel: cannot cancel unless proposer is below threhsold"
        );

        proposal.canceled = true;
        for (uint256 i = 0; i < proposal.targets.length; i++) {
            timelock.cancelTransaction(
                proposal.targets[i],
                proposal.values[i],
                proposal.signatures[i],
                proposal.calldatas[i],
                proposal.eta
            );
        }

        emit ProposalCanceled(proposalId);
    }

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

    function getReceipt(uint256 proposalId, address voter) public view returns (Receipt memory) {
        return proposals[proposalId].receipts[voter];
    }

    function state(uint256 proposalId) public view returns (ProposalState) {
        require(
            proposalCount >= proposalId && proposalId > 0,
            "Governor::state: invalid proposal id"
        );
        Proposal storage proposal = proposals[proposalId];
        if (proposal.canceled) {
            return ProposalState.Canceled;
        } else if (block.number <= proposal.startBlock) {
            return ProposalState.Pending;
        } else if (block.number <= proposal.endBlock) {
            return ProposalState.Active;
        } else if (
            proposal.forVotes <= proposal.againstVotes || proposal.forVotes < quorumVotes()
        ) {
            return ProposalState.Defeated;
        } else if (proposal.eta == 0) {
            return ProposalState.Succeeded;
        } else if (proposal.executed) {
            return ProposalState.Executed;
        } else if (block.timestamp >= add256(proposal.eta, timelock.gracePeriod())) {
            return ProposalState.Expired;
        } else {
            return ProposalState.Queued;
        }
    }

    function castVote(uint256 proposalId, bool support) public {
        return _castVote(msg.sender, proposalId, support);
    }

    function castVoteBySig(
        uint256 proposalId,
        bool support,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public {
        bytes32 domainSeparator =
            keccak256(
                abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(NAME)), getChainId(), address(this))
            );
        bytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Governor::castVoteBySig: invalid signature");
        return _castVote(signatory, proposalId, support);
    }

    function _castVote(
        address voter,
        uint256 proposalId,
        bool support
    ) internal {
        require(state(proposalId) == ProposalState.Active, "Governor::_castVote: voting is closed");
        Proposal storage proposal = proposals[proposalId];
        Receipt storage receipt = proposal.receipts[voter];
        require(receipt.hasVoted == false, "Governor::_castVote: voter already voted");
        uint96 votes = token.getPriorVotes(voter, proposal.startBlock);

        if (support) {
            proposal.forVotes = add256(proposal.forVotes, votes);
        } else {
            proposal.againstVotes = add256(proposal.againstVotes, votes);
        }

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

        emit VoteCast(voter, proposalId, support, votes);
    }

    function __acceptAdmin() public {
        require(msg.sender == guardian, "Governor::__acceptAdmin: sender must be gov guardian");
        timelock.acceptAdmin();
    }

    function __abdicate() public {
        require(msg.sender == guardian, "Governor::__abdicate: sender must be gov guardian");
        guardian = address(0);
    }

    function __queueSetTimelockPendingAdmin(address newPendingAdmin, uint256 eta) public {
        require(
            msg.sender == guardian,
            "Governor::__queueSetTimelockPendingAdmin: sender must be gov guardian"
        );
        timelock.queueTransaction(
            address(timelock),
            0,
            "setPendingAdmin(address)",
            abi.encode(newPendingAdmin),
            eta
        );
    }

    function __executeSetTimelockPendingAdmin(address newPendingAdmin, uint256 eta) public {
        require(
            msg.sender == guardian,
            "Governor::__executeSetTimelockPendingAdmin: sender must be gov guardian"
        );
        timelock.executeTransaction(
            address(timelock),
            0,
            "setPendingAdmin(address)",
            abi.encode(newPendingAdmin),
            eta
        );
    }

    function add256(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "addition overflow");
        return c;
    }

    function sub256(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "subtraction underflow");
        return a - b;
    }

    function getChainId() internal pure returns (uint256) {
        uint256 chainId;
        // solhint-disable no-inline-assembly
        assembly {
            chainId := chainid()
        }
        return chainId;
    }
}

interface TimelockInterface {
    function delay() external view returns (uint256);

    function gracePeriod() external view returns (uint256);

    function acceptAdmin() external;

    function queuedTransactions(bytes32 hash) external view returns (bool);

    function queueTransaction(
        address target,
        uint256 value,
        string calldata signature,
        bytes calldata data,
        uint256 eta
    ) external returns (bytes32);

    function cancelTransaction(
        address target,
        uint256 value,
        string calldata signature,
        bytes calldata data,
        uint256 eta
    ) external;

    function executeTransaction(
        address target,
        uint256 value,
        string calldata signature,
        bytes calldata data,
        uint256 eta
    ) external payable returns (bytes memory);
}

interface TokenInterface {
    function getPriorVotes(address account, uint256 blockNumber) external view returns (uint96);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"timelock_","type":"address"},{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"guardian_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"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":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","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"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"VoteCast","type":"event"},{"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"__abdicate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"__acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"__executeSetTimelockPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"__queueSetTimelockPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","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":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct Governor.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"latestProposalIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalMaxOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"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":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum Governor.ProposalState","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelock","outputs":[{"internalType":"contract TimelockInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract TokenInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}]

60c06040523480156200001157600080fd5b50604051620032ef380380620032ef833981016040819052620000349162000092565b606092831b6001600160601b03199081166080529190921b1660a052600080546001600160a01b0319166001600160a01b03909216919091179055620000db565b80516001600160a01b03811681146200008d57600080fd5b919050565b600080600060608486031215620000a7578283fd5b620000b28462000075565b9250620000c26020850162000075565b9150620000d26040850162000075565b90509250925092565b60805160601c60a05160601c6131a46200014b60003980610b30528061117252806117fa5280611a9452508061059d52806105cc5280610a135280610c185280610f815280610fb052806110c9528061113e528061152f528061187e5280611c3b5280611d3752506131a46000f3fe60806040526004361061019c5760003560e01c8063760fbc13116100ec578063da35c6641161008a578063deaaa7cc11610064578063deaaa7cc14610460578063e23a9a5214610475578063fc0c546a146104a2578063fe0d94c1146104b75761019c565b8063da35c6641461040b578063da95691a14610420578063ddf0b009146104405761019c565b8063a3f4df7e116100c6578063a3f4df7e146103aa578063b58131b0146103cc578063b9a61961146103e1578063d33219b4146103f65761019c565b8063760fbc13146103605780637bdbe4d014610375578063915006711461038a5761019c565b806324bc1a64116101595780633e4f49e6116101335780633e4f49e6146102d157806340e58ee5146102fe578063452a93201461031e5780634634c61f146103405761019c565b806324bc1a6414610277578063328dd9821461028c5780633932abb1146102bc5761019c565b8063013cf08b146101a157806302a251a3146101de57806315373e3d1461020057806317977c611461022257806320606b701461024257806321f43e4214610257575b600080fd5b3480156101ad57600080fd5b506101c16101bc366004612402565b6104ca565b6040516101d59897969594939291906127cf565b60405180910390f35b3480156101ea57600080fd5b506101f361051d565b6040516101d5919061286c565b34801561020c57600080fd5b5061022061021b366004612445565b610523565b005b34801561022e57600080fd5b506101f361023d36600461224c565b610532565b34801561024e57600080fd5b506101f3610544565b34801561026357600080fd5b50610220610272366004612266565b610568565b34801561028357600080fd5b506101f3610688565b34801561029857600080fd5b506102ac6102a7366004612402565b610697565b6040516101d59493929190612814565b3480156102c857600080fd5b506101f3610926565b3480156102dd57600080fd5b506102f16102ec366004612402565b61092b565b6040516101d591906128cf565b34801561030a57600080fd5b50610220610319366004612402565b610ac2565b34801561032a57600080fd5b50610333610d59565b6040516101d59190612680565b34801561034c57600080fd5b5061022061035b366004612474565b610d68565b34801561036c57600080fd5b50610220610f14565b34801561038157600080fd5b506101f3610f50565b34801561039657600080fd5b506102206103a5366004612266565b610f55565b3480156103b657600080fd5b506103bf611063565b6040516101d591906128e3565b3480156103d857600080fd5b506101f361108f565b3480156103ed57600080fd5b5061022061109d565b34801561040257600080fd5b5061033361113c565b34801561041757600080fd5b506101f3611160565b34801561042c57600080fd5b506101f361043b36600461228f565b611166565b34801561044c57600080fd5b5061022061045b366004612402565b6114dd565b34801561046c57600080fd5b506101f3611768565b34801561048157600080fd5b5061049561049036600461241a565b61178c565b6040516101d59190612ff0565b3480156104ae57600080fd5b506103336117f8565b6102206104c5366004612402565b61181c565b6002602052600090815260409020805460018201546006830154600784015460088501546009860154600a909601546001600160a01b039095169593949293919290919060ff8082169161010090041688565b61438090565b61052e3383836119f9565b5050565b60036020526000908152604090205481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000546001600160a01b0316331461059b5760405162461bcd60e51b815260040161059290612bd8565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630825f38f7f00000000000000000000000000000000000000000000000000000000000000006000856040516020016105fe9190612680565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161062d94939291906126ad565b600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610683919081019061238f565b505050565b6a034f086f3b33b68400000090565b6060806060806000600260008781526020019081526020016000209050806002018160030182600401836005018380548060200260200160405190810160405280929190818152602001828054801561071957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106fb575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561076b57602002820191906000526020600020905b815481526020019060010190808311610757575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561083e5760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b505050505081526020019060010190610793565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156109105760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156108fc5780601f106108d1576101008083540402835291602001916108fc565b820191906000526020600020905b8154815290600101906020018083116108df57829003601f168201915b505050505081526020019060010190610865565b5050505090509450945094509450509193509193565b600190565b6000816001541015801561093f5750600082115b61095b5760405162461bcd60e51b815260040161059290612c45565b6000828152600260205260409020600a81015460ff1615610980576002915050610abd565b80600601544311610995576000915050610abd565b806007015443116109aa576001915050610abd565b806009015481600801541115806109cb57506109c4610688565b8160080154105b156109da576003915050610abd565b60018101546109ed576004915050610abd565b600a810154610100900460ff1615610a09576007915050610abd565b610aa781600101547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a06db7dc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6a57600080fd5b505afa158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190612377565b611be1565b4210610ab7576006915050610abd565b60059150505b919050565b6000610acd8261092b565b90506007816007811115610add57fe5b1415610afb5760405162461bcd60e51b815260040161059290612ac6565b600082815260026020526040812090546001600160a01b0316331480610bdc5750610b2461108f565b81546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163782d6fe19116610b64436001611c0d565b6040518363ffffffff1660e01b8152600401610b81929190612694565b60206040518083038186803b158015610b9957600080fd5b505afa158015610bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd191906124ca565b6001600160601b0316105b610bf85760405162461bcd60e51b815260040161059290612953565b600a8101805460ff1916600117905560005b6002820154811015610d1c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663591fcdfe836002018381548110610c5457fe5b6000918252602090912001546003850180546001600160a01b039092169185908110610c7c57fe5b9060005260206000200154856004018581548110610c9657fe5b90600052602060002001866005018681548110610caf57fe5b9060005260206000200187600101546040518663ffffffff1660e01b8152600401610cde959493929190612796565b600060405180830381600087803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b505060019092019150610c0a9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610d4c919061286c565b60405180910390a1505050565b6000546001600160a01b031681565b60408051808201909152601081526f2930b234b1b6329023b7bb32b93737b960811b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f0ef1189f3a3c100418fa11764cc0c135bbee8a3d6924320d90747bf7da1360af610ddc611c35565b30604051602001610df09493929190612875565b60405160208183030381529060405280519060200120905060007f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee8787604051602001610e3f93929190612899565b60405160208183030381529060405280519060200120905060008282604051602001610e6c929190612665565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610ea994939291906128b1565b6020604051602081039080840390855afa158015610ecb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610efe5760405162461bcd60e51b815260040161059290612fa6565b610f09818a8a6119f9565b505050505050505050565b6000546001600160a01b03163314610f3e5760405162461bcd60e51b815260040161059290612d8b565b600080546001600160a01b0319169055565b600a90565b6000546001600160a01b03163314610f7f5760405162461bcd60e51b815260040161059290612a18565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633a66f9017f0000000000000000000000000000000000000000000000000000000000000000600085604051602001610fe29190612680565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161101194939291906126ad565b602060405180830381600087803b15801561102b57600080fd5b505af115801561103f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106839190612377565b6040518060400160405280601081526020016f2930b234b1b6329023b7bb32b93737b960811b81525081565b69d3c21bcecceda100000090565b6000546001600160a01b031633146110c75760405162461bcd60e51b815260040161059290612e39565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630e18b6816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561112257600080fd5b505af1158015611136573d6000803e3d6000fd5b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b600061117061108f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663782d6fe1336111ab436001611c0d565b6040518363ffffffff1660e01b81526004016111c8929190612694565b60206040518083038186803b1580156111e057600080fd5b505afa1580156111f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121891906124ca565b6001600160601b0316101561123f5760405162461bcd60e51b8152600401610592906128f6565b84518651148015611251575083518651145b801561125e575082518651145b61127a5760405162461bcd60e51b8152600401610592906129bb565b85516112985760405162461bcd60e51b815260040161059290612b17565b6112a0610f50565b865111156112c05760405162461bcd60e51b815260040161059290612a83565b33600090815260036020526040902054801561133d5760006112e18261092b565b905060018160078111156112f157fe5b141561130f5760405162461bcd60e51b815260040161059290612c89565b600081600781111561131d57fe5b141561133b5760405162461bcd60e51b815260040161059290612b5e565b505b600061134b43610aa2610926565b9050600061135b82610aa261051d565b6001805481018082556000818152600260208181526040832080546001600160a01b03191633178155948501929092558d51949550929391926113a492908501918e0190611dce565b5089516113ba90600384019060208d0190611e33565b5088516113d090600484019060208c0190611e6e565b5087516113e690600584019060208b0190611ec7565b508382600601819055508282600701819055506000826008018190555060008260090181905550600082600a0160006101000a81548160ff021916908315150217905550600082600a0160016101000a81548160ff02191690831515021790555080600360008460000160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e081338d8d8d8d8a8a8f6040516114c79998979695949392919061301e565b60405180910390a19a9950505050505050505050565b60046114e88261092b565b60078111156114f357fe5b146115105760405162461bcd60e51b815260040161059290612f49565b60006002600083815260200190815260200160002090506000611586427f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6a57600080fd5b905060005b600283015481101561172e576117268360020182815481106115a957fe5b6000918252602090912001546003850180546001600160a01b0390921691849081106115d157fe5b90600052602060002001548560040184815481106115eb57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116795780601f1061164e57610100808354040283529160200191611679565b820191906000526020600020905b81548152906001019060200180831161165c57829003601f168201915b505050505086600501858154811061168d57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561171b5780601f106116f05761010080835404028352916020019161171b565b820191906000526020600020905b8154815290600101906020018083116116fe57829003601f168201915b505050505086611c39565b60010161158b565b50600182018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610d4c90859084906130b6565b7f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee81565b611794611f20565b5060009182526002602090815260408084206001600160a01b03939093168452600b9092018152918190208151606081018352905460ff80821615158352610100820416151593820193909352620100009092046001600160601b03169082015290565b7f000000000000000000000000000000000000000000000000000000000000000081565b60056118278261092b565b600781111561183257fe5b1461184f5760405162461bcd60e51b815260040161059290612d02565b6000818152600260205260408120600a8101805461ff001916610100179055905b60028201548110156119bd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630825f38f8360030183815481106118ba57fe5b90600052602060002001548460020184815481106118d457fe5b6000918252602090912001546003860180546001600160a01b0390921691869081106118fc57fe5b906000526020600020015486600401868154811061191657fe5b9060005260206000200187600501878154811061192f57fe5b9060005260206000200188600101546040518763ffffffff1660e01b815260040161195e959493929190612796565b6000604051808303818588803b15801561197757600080fd5b505af115801561198b573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526119b4919081019061238f565b50600101611870565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516119ed919061286c565b60405180910390a15050565b6001611a048361092b565b6007811115611a0f57fe5b14611a2c5760405162461bcd60e51b815260040161059290612ed5565b60008281526002602090815260408083206001600160a01b0387168452600b8101909252909120805460ff1615611a755760405162461bcd60e51b815260040161059290612e8d565b600682015460405163782d6fe160e01b81526000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163782d6fe191611aca918a9190600401612694565b60206040518083038186803b158015611ae257600080fd5b505afa158015611af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1a91906124ca565b90508315611b4357611b398360080154826001600160601b0316611be1565b6008840155611b60565b611b5a8360090154826001600160601b0316611be1565b60098401555b8154600160ff199091161761ff00191661010085151502176dffffffffffffffffffffffff00001916620100006001600160601b038316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611bd1908890889088908690612719565b60405180910390a1505050505050565b600082820183811015611c065760405162461bcd60e51b815260040161059290612d60565b9392505050565b600082821115611c2f5760405162461bcd60e51b815260040161059290612f1a565b50900390565b4690565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2b065378686868686604051602001611c8195949392919061274a565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611cb3919061286c565b60206040518083038186803b158015611ccb57600080fd5b505afa158015611cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d03919061235b565b15611d205760405162461bcd60e51b815260040161059290612ddc565b604051633a66f90160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633a66f90190611d74908890889088908890889060040161274a565b602060405180830381600087803b158015611d8e57600080fd5b505af1158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc69190612377565b505050505050565b828054828255906000526020600020908101928215611e23579160200282015b82811115611e2357825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611dee565b50611e2f929150611f40565b5090565b828054828255906000526020600020908101928215611e23579160200282015b82811115611e23578251825591602001919060010190611e53565b828054828255906000526020600020908101928215611ebb579160200282015b82811115611ebb5782518051611eab918491602090910190611f55565b5091602001919060010190611e8e565b50611e2f929150611fd0565b828054828255906000526020600020908101928215611f14579160200282015b82811115611f145782518051611f04918491602090910190611f55565b5091602001919060010190611ee7565b50611e2f929150611fed565b604080516060810182526000808252602082018190529181019190915290565b5b80821115611e2f5760008155600101611f41565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611f8b5760008555611e23565b82601f10611fa457805160ff1916838001178555611e23565b82800160010185558215611e235791820182811115611e23578251825591602001919060010190611e53565b80821115611e2f576000611fe4828261200a565b50600101611fd0565b80821115611e2f576000612001828261200a565b50600101611fed565b50805460018160011615610100020316600290046000825580601f10612030575061204e565b601f01602090049060005260206000209081019061204e9190611f40565b50565b600061206461205f84613106565b6130c4565b905082815283838301111561207857600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114610abd57600080fd5b600082601f8301126120b6578081fd5b813560206120c661205f836130e8565b82815281810190858301838502870184018810156120e2578586fd5b855b85811015612107576120f58261208f565b845292840192908401906001016120e4565b5090979650505050505050565b600082601f830112612124578081fd5b8135602061213461205f836130e8565b82815281810190858301855b85811015612107578135880189603f82011261215a578788fd5b61216b8a8783013560408401612051565b8552509284019290840190600101612140565b600082601f83011261218e578081fd5b8135602061219e61205f836130e8565b82815281810190858301855b85811015612107576121c1898684358b010161222d565b845292840192908401906001016121aa565b600082601f8301126121e3578081fd5b813560206121f361205f836130e8565b828152818101908583018385028701840188101561220f578586fd5b855b8581101561210757813584529284019290840190600101612211565b600082601f83011261223d578081fd5b611c0683833560208501612051565b60006020828403121561225d578081fd5b611c068261208f565b60008060408385031215612278578081fd5b6122818361208f565b946020939093013593505050565b600080600080600060a086880312156122a6578081fd5b853567ffffffffffffffff808211156122bd578283fd5b6122c989838a016120a6565b965060208801359150808211156122de578283fd5b6122ea89838a016121d3565b955060408801359150808211156122ff578283fd5b61230b89838a0161217e565b94506060880135915080821115612320578283fd5b61232c89838a01612114565b93506080880135915080821115612341578283fd5b5061234e8882890161222d565b9150509295509295909350565b60006020828403121561236c578081fd5b8151611c0681613160565b600060208284031215612388578081fd5b5051919050565b6000602082840312156123a0578081fd5b815167ffffffffffffffff8111156123b6578182fd5b8201601f810184136123c6578182fd5b80516123d461205f82613106565b8181528560208385010111156123e8578384fd5b6123f9826020830160208601613134565b95945050505050565b600060208284031215612413578081fd5b5035919050565b6000806040838503121561242c578182fd5b8235915061243c6020840161208f565b90509250929050565b60008060408385031215612457578182fd5b82359150602083013561246981613160565b809150509250929050565b600080600080600060a0868803121561248b578283fd5b85359450602086013561249d81613160565b9350604086013560ff811681146124b2578384fd5b94979396509394606081013594506080013592915050565b6000602082840312156124db578081fd5b81516001600160601b0381168114611c06578182fd5b6000815180845260208085019450808401835b838110156125295781516001600160a01b031687529582019590820190600101612504565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b8581101561257a5782840389526125688483516125b6565b98850198935090840190600101612550565b5091979650505050505050565b6000815180845260208085019450808401835b838110156125295781518752958201959082019060010161259a565b600081518084526125ce816020860160208601613134565b601f01601f19169290920160200192915050565b60008154600180821660008114612600576001811461261e5761265c565b60028304607f16865260ff198316602087015260408601935061265c565b6002830480875261262e86613128565b60005b828110156126525781546020828b0101528482019150602081019050612631565b8801602001955050505b50505092915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b600060018060a01b038616825284602083015260a06040830152601860a08301527f73657450656e64696e6741646d696e286164647265737329000000000000000060c083015260e0606083015261270860e08301856125b6565b905082608083015295945050505050565b6001600160a01b039490941684526020840192909252151560408301526001600160601b0316606082015260800190565b600060018060a01b038716825285602083015260a0604083015261277160a08301866125b6565b828103606084015261278381866125b6565b9150508260808301529695505050505050565b600060018060a01b038716825285602083015260a060408301526127bd60a08301866125e2565b828103606084015261278381866125e2565b6001600160a01b03989098168852602088019690965260408701949094526060860192909252608085015260a0840152151560c0830152151560e08201526101000190565b60006080825261282760808301876124f1565b82810360208401526128398187612587565b9050828103604084015261284d8186612534565b905082810360608401526128618185612534565b979650505050505050565b90815260200190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b92835260208301919091521515604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b60208101600883106128dd57fe5b91905290565b600060208252611c0660208301846125b6565b6020808252603a908201527f476f7665726e6f723a3a70726f706f73653a2070726f706f73657220766f746560408201527f732062656c6f772070726f706f73616c207468726573686f6c64000000000000606082015260800190565b60208082526042908201527f476f7665726e6f723a3a63616e63656c3a2063616e6e6f742063616e63656c2060408201527f756e6c6573732070726f706f7365722069732062656c6f77207468726568736f6060820152611b1960f21b608082015260a00190565b6020808252603f908201527f476f7665726e6f723a3a70726f706f73653a2070726f706f73616c2066756e6360408201527f74696f6e20696e666f726d6174696f6e206172697479206d69736d6174636800606082015260800190565b60208082526045908201527f476f7665726e6f723a3a5f5f717565756553657454696d656c6f636b50656e6460408201527f696e6741646d696e3a2073656e646572206d75737420626520676f7620677561606082015264393234b0b760d91b608082015260a00190565b60208082526023908201527f476f7665726e6f723a3a70726f706f73653a20746f6f206d616e7920616374696040820152626f6e7360e81b606082015260800190565b60208082526031908201527f476f7665726e6f723a3a63616e63656c3a2063616e6e6f742063616e63656c20604082015270195e1958dd5d1959081c1c9bdc1bdcd85b607a1b606082015260800190565b60208082526027908201527f476f7665726e6f723a3a70726f706f73653a206d7573742070726f7669646520604082015266616374696f6e7360c81b606082015260800190565b60208082526054908201527f476f7665726e6f723a3a70726f706f73653a206f6e65206c6976652070726f7060408201527f6f73616c207065722070726f706f7365722c20666f756e6420616e20616c726560608201527318591e481c195b991a5b99c81c1c9bdc1bdcd85b60621b608082015260a00190565b60208082526047908201527f476f7665726e6f723a3a5f5f6578656375746553657454696d656c6f636b506560408201527f6e64696e6741646d696e3a2073656e646572206d75737420626520676f7620676060820152663ab0b93234b0b760c91b608082015260a00190565b60208082526024908201527f476f7665726e6f723a3a73746174653a20696e76616c69642070726f706f73616040820152631b081a5960e21b606082015260800190565b60208082526053908201527f476f7665726e6f723a3a70726f706f73653a206f6e65206c6976652070726f7060408201527f6f73616c207065722070726f706f7365722c20666f756e6420616e20616c726560608201527218591e481858dd1a5d99481c1c9bdc1bdcd85b606a1b608082015260a00190565b602080825260409082018190527f476f7665726e6f723a3a657865637574653a2070726f706f73616c2063616e20908201527f6f6e6c7920626520657865637574656420696620697420697320717565756564606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526031908201527f476f7665726e6f723a3a5f5f61626469636174653a2073656e646572206d75736040820152703a1031329033b7bb1033bab0b93234b0b760791b606082015260800190565b6020808252603f908201527f476f7665726e6f723a3a5f71756575654f725265766572743a2070726f706f7360408201527f616c20616374696f6e20616c7265616479207175657565642061742065746100606082015260800190565b60208082526034908201527f476f7665726e6f723a3a5f5f61636365707441646d696e3a2073656e6465722060408201527336bab9ba1031329033b7bb1033bab0b93234b0b760611b606082015260800190565b60208082526028908201527f476f7665726e6f723a3a5f63617374566f74653a20766f74657220616c726561604082015267191e481d9bdd195960c21b606082015260800190565b60208082526025908201527f476f7665726e6f723a3a5f63617374566f74653a20766f74696e6720697320636040820152641b1bdcd95960da1b606082015260800190565b6020808252601590820152747375627472616374696f6e20756e646572666c6f7760581b604082015260600190565b6020808252603f908201527f476f7665726e6f723a3a71756575653a2070726f706f73616c2063616e206f6e60408201527f6c79206265207175657565642069662069742069732073756363656564656400606082015260800190565b6020808252602a908201527f476f7665726e6f723a3a63617374566f746542795369673a20696e76616c6964604082015269207369676e617475726560b01b606082015260800190565b8151151581526020808301511515908201526040918201516001600160601b03169181019190915260600190565b8981526001600160a01b0389166020820152610120604082018190526000906130498382018b6124f1565b9050828103606084015261305d818a612587565b905082810360808401526130718189612534565b905082810360a08401526130858188612534565b90508560c08401528460e08401528281036101008401526130a681856125b6565b9c9b505050505050505050505050565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156130e057fe5b604052919050565b600067ffffffffffffffff8211156130fc57fe5b5060209081020190565b600067ffffffffffffffff82111561311a57fe5b50601f01601f191660200190565b60009081526020902090565b60005b8381101561314f578181015183820152602001613137565b838111156111365750506000910152565b801515811461204e57600080fdfea264697066735822122031a5041528f6ca588e61832ab4f77d6adcffcf2bf8772140a4fccea193c29f2064736f6c634300070600330000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba00000000000000000000000031c8eacbffdd875c74b94b077895bd78cf1e64a30000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061019c5760003560e01c8063760fbc13116100ec578063da35c6641161008a578063deaaa7cc11610064578063deaaa7cc14610460578063e23a9a5214610475578063fc0c546a146104a2578063fe0d94c1146104b75761019c565b8063da35c6641461040b578063da95691a14610420578063ddf0b009146104405761019c565b8063a3f4df7e116100c6578063a3f4df7e146103aa578063b58131b0146103cc578063b9a61961146103e1578063d33219b4146103f65761019c565b8063760fbc13146103605780637bdbe4d014610375578063915006711461038a5761019c565b806324bc1a64116101595780633e4f49e6116101335780633e4f49e6146102d157806340e58ee5146102fe578063452a93201461031e5780634634c61f146103405761019c565b806324bc1a6414610277578063328dd9821461028c5780633932abb1146102bc5761019c565b8063013cf08b146101a157806302a251a3146101de57806315373e3d1461020057806317977c611461022257806320606b701461024257806321f43e4214610257575b600080fd5b3480156101ad57600080fd5b506101c16101bc366004612402565b6104ca565b6040516101d59897969594939291906127cf565b60405180910390f35b3480156101ea57600080fd5b506101f361051d565b6040516101d5919061286c565b34801561020c57600080fd5b5061022061021b366004612445565b610523565b005b34801561022e57600080fd5b506101f361023d36600461224c565b610532565b34801561024e57600080fd5b506101f3610544565b34801561026357600080fd5b50610220610272366004612266565b610568565b34801561028357600080fd5b506101f3610688565b34801561029857600080fd5b506102ac6102a7366004612402565b610697565b6040516101d59493929190612814565b3480156102c857600080fd5b506101f3610926565b3480156102dd57600080fd5b506102f16102ec366004612402565b61092b565b6040516101d591906128cf565b34801561030a57600080fd5b50610220610319366004612402565b610ac2565b34801561032a57600080fd5b50610333610d59565b6040516101d59190612680565b34801561034c57600080fd5b5061022061035b366004612474565b610d68565b34801561036c57600080fd5b50610220610f14565b34801561038157600080fd5b506101f3610f50565b34801561039657600080fd5b506102206103a5366004612266565b610f55565b3480156103b657600080fd5b506103bf611063565b6040516101d591906128e3565b3480156103d857600080fd5b506101f361108f565b3480156103ed57600080fd5b5061022061109d565b34801561040257600080fd5b5061033361113c565b34801561041757600080fd5b506101f3611160565b34801561042c57600080fd5b506101f361043b36600461228f565b611166565b34801561044c57600080fd5b5061022061045b366004612402565b6114dd565b34801561046c57600080fd5b506101f3611768565b34801561048157600080fd5b5061049561049036600461241a565b61178c565b6040516101d59190612ff0565b3480156104ae57600080fd5b506103336117f8565b6102206104c5366004612402565b61181c565b6002602052600090815260409020805460018201546006830154600784015460088501546009860154600a909601546001600160a01b039095169593949293919290919060ff8082169161010090041688565b61438090565b61052e3383836119f9565b5050565b60036020526000908152604090205481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000546001600160a01b0316331461059b5760405162461bcd60e51b815260040161059290612bd8565b60405180910390fd5b7f0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba6001600160a01b0316630825f38f7f0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba6000856040516020016105fe9190612680565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161062d94939291906126ad565b600060405180830381600087803b15801561064757600080fd5b505af115801561065b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610683919081019061238f565b505050565b6a034f086f3b33b68400000090565b6060806060806000600260008781526020019081526020016000209050806002018160030182600401836005018380548060200260200160405190810160405280929190818152602001828054801561071957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106fb575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561076b57602002820191906000526020600020905b815481526020019060010190808311610757575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561083e5760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b505050505081526020019060010190610793565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156109105760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156108fc5780601f106108d1576101008083540402835291602001916108fc565b820191906000526020600020905b8154815290600101906020018083116108df57829003601f168201915b505050505081526020019060010190610865565b5050505090509450945094509450509193509193565b600190565b6000816001541015801561093f5750600082115b61095b5760405162461bcd60e51b815260040161059290612c45565b6000828152600260205260409020600a81015460ff1615610980576002915050610abd565b80600601544311610995576000915050610abd565b806007015443116109aa576001915050610abd565b806009015481600801541115806109cb57506109c4610688565b8160080154105b156109da576003915050610abd565b60018101546109ed576004915050610abd565b600a810154610100900460ff1615610a09576007915050610abd565b610aa781600101547f0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba6001600160a01b031663a06db7dc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6a57600080fd5b505afa158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190612377565b611be1565b4210610ab7576006915050610abd565b60059150505b919050565b6000610acd8261092b565b90506007816007811115610add57fe5b1415610afb5760405162461bcd60e51b815260040161059290612ac6565b600082815260026020526040812090546001600160a01b0316331480610bdc5750610b2461108f565b81546001600160a01b037f00000000000000000000000031c8eacbffdd875c74b94b077895bd78cf1e64a381169163782d6fe19116610b64436001611c0d565b6040518363ffffffff1660e01b8152600401610b81929190612694565b60206040518083038186803b158015610b9957600080fd5b505afa158015610bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd191906124ca565b6001600160601b0316105b610bf85760405162461bcd60e51b815260040161059290612953565b600a8101805460ff1916600117905560005b6002820154811015610d1c577f0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba6001600160a01b031663591fcdfe836002018381548110610c5457fe5b6000918252602090912001546003850180546001600160a01b039092169185908110610c7c57fe5b9060005260206000200154856004018581548110610c9657fe5b90600052602060002001866005018681548110610caf57fe5b9060005260206000200187600101546040518663ffffffff1660e01b8152600401610cde959493929190612796565b600060405180830381600087803b158015610cf857600080fd5b505af1158015610d0c573d6000803e3d6000fd5b505060019092019150610c0a9050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610d4c919061286c565b60405180910390a1505050565b6000546001600160a01b031681565b60408051808201909152601081526f2930b234b1b6329023b7bb32b93737b960811b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f0ef1189f3a3c100418fa11764cc0c135bbee8a3d6924320d90747bf7da1360af610ddc611c35565b30604051602001610df09493929190612875565b60405160208183030381529060405280519060200120905060007f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee8787604051602001610e3f93929190612899565b60405160208183030381529060405280519060200120905060008282604051602001610e6c929190612665565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610ea994939291906128b1565b6020604051602081039080840390855afa158015610ecb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610efe5760405162461bcd60e51b815260040161059290612fa6565b610f09818a8a6119f9565b505050505050505050565b6000546001600160a01b03163314610f3e5760405162461bcd60e51b815260040161059290612d8b565b600080546001600160a01b0319169055565b600a90565b6000546001600160a01b03163314610f7f5760405162461bcd60e51b815260040161059290612a18565b7f0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba6001600160a01b0316633a66f9017f0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba600085604051602001610fe29190612680565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161101194939291906126ad565b602060405180830381600087803b15801561102b57600080fd5b505af115801561103f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106839190612377565b6040518060400160405280601081526020016f2930b234b1b6329023b7bb32b93737b960811b81525081565b69d3c21bcecceda100000090565b6000546001600160a01b031633146110c75760405162461bcd60e51b815260040161059290612e39565b7f0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba6001600160a01b0316630e18b6816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561112257600080fd5b505af1158015611136573d6000803e3d6000fd5b50505050565b7f0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba81565b60015481565b600061117061108f565b7f00000000000000000000000031c8eacbffdd875c74b94b077895bd78cf1e64a36001600160a01b031663782d6fe1336111ab436001611c0d565b6040518363ffffffff1660e01b81526004016111c8929190612694565b60206040518083038186803b1580156111e057600080fd5b505afa1580156111f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121891906124ca565b6001600160601b0316101561123f5760405162461bcd60e51b8152600401610592906128f6565b84518651148015611251575083518651145b801561125e575082518651145b61127a5760405162461bcd60e51b8152600401610592906129bb565b85516112985760405162461bcd60e51b815260040161059290612b17565b6112a0610f50565b865111156112c05760405162461bcd60e51b815260040161059290612a83565b33600090815260036020526040902054801561133d5760006112e18261092b565b905060018160078111156112f157fe5b141561130f5760405162461bcd60e51b815260040161059290612c89565b600081600781111561131d57fe5b141561133b5760405162461bcd60e51b815260040161059290612b5e565b505b600061134b43610aa2610926565b9050600061135b82610aa261051d565b6001805481018082556000818152600260208181526040832080546001600160a01b03191633178155948501929092558d51949550929391926113a492908501918e0190611dce565b5089516113ba90600384019060208d0190611e33565b5088516113d090600484019060208c0190611e6e565b5087516113e690600584019060208b0190611ec7565b508382600601819055508282600701819055506000826008018190555060008260090181905550600082600a0160006101000a81548160ff021916908315150217905550600082600a0160016101000a81548160ff02191690831515021790555080600360008460000160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e081338d8d8d8d8a8a8f6040516114c79998979695949392919061301e565b60405180910390a19a9950505050505050505050565b60046114e88261092b565b60078111156114f357fe5b146115105760405162461bcd60e51b815260040161059290612f49565b60006002600083815260200190815260200160002090506000611586427f0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba6001600160a01b0316636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6a57600080fd5b905060005b600283015481101561172e576117268360020182815481106115a957fe5b6000918252602090912001546003850180546001600160a01b0390921691849081106115d157fe5b90600052602060002001548560040184815481106115eb57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156116795780601f1061164e57610100808354040283529160200191611679565b820191906000526020600020905b81548152906001019060200180831161165c57829003601f168201915b505050505086600501858154811061168d57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561171b5780601f106116f05761010080835404028352916020019161171b565b820191906000526020600020905b8154815290600101906020018083116116fe57829003601f168201915b505050505086611c39565b60010161158b565b50600182018190556040517f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289290610d4c90859084906130b6565b7f8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee81565b611794611f20565b5060009182526002602090815260408084206001600160a01b03939093168452600b9092018152918190208151606081018352905460ff80821615158352610100820416151593820193909352620100009092046001600160601b03169082015290565b7f00000000000000000000000031c8eacbffdd875c74b94b077895bd78cf1e64a381565b60056118278261092b565b600781111561183257fe5b1461184f5760405162461bcd60e51b815260040161059290612d02565b6000818152600260205260408120600a8101805461ff001916610100179055905b60028201548110156119bd577f0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba6001600160a01b0316630825f38f8360030183815481106118ba57fe5b90600052602060002001548460020184815481106118d457fe5b6000918252602090912001546003860180546001600160a01b0390921691869081106118fc57fe5b906000526020600020015486600401868154811061191657fe5b9060005260206000200187600501878154811061192f57fe5b9060005260206000200188600101546040518763ffffffff1660e01b815260040161195e959493929190612796565b6000604051808303818588803b15801561197757600080fd5b505af115801561198b573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526119b4919081019061238f565b50600101611870565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516119ed919061286c565b60405180910390a15050565b6001611a048361092b565b6007811115611a0f57fe5b14611a2c5760405162461bcd60e51b815260040161059290612ed5565b60008281526002602090815260408083206001600160a01b0387168452600b8101909252909120805460ff1615611a755760405162461bcd60e51b815260040161059290612e8d565b600682015460405163782d6fe160e01b81526000916001600160a01b037f00000000000000000000000031c8eacbffdd875c74b94b077895bd78cf1e64a3169163782d6fe191611aca918a9190600401612694565b60206040518083038186803b158015611ae257600080fd5b505afa158015611af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1a91906124ca565b90508315611b4357611b398360080154826001600160601b0316611be1565b6008840155611b60565b611b5a8360090154826001600160601b0316611be1565b60098401555b8154600160ff199091161761ff00191661010085151502176dffffffffffffffffffffffff00001916620100006001600160601b038316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4690611bd1908890889088908690612719565b60405180910390a1505050505050565b600082820183811015611c065760405162461bcd60e51b815260040161059290612d60565b9392505050565b600082821115611c2f5760405162461bcd60e51b815260040161059290612f1a565b50900390565b4690565b7f0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba6001600160a01b031663f2b065378686868686604051602001611c8195949392919061274a565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611cb3919061286c565b60206040518083038186803b158015611ccb57600080fd5b505afa158015611cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d03919061235b565b15611d205760405162461bcd60e51b815260040161059290612ddc565b604051633a66f90160e01b81526001600160a01b037f0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba1690633a66f90190611d74908890889088908890889060040161274a565b602060405180830381600087803b158015611d8e57600080fd5b505af1158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc69190612377565b505050505050565b828054828255906000526020600020908101928215611e23579160200282015b82811115611e2357825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611dee565b50611e2f929150611f40565b5090565b828054828255906000526020600020908101928215611e23579160200282015b82811115611e23578251825591602001919060010190611e53565b828054828255906000526020600020908101928215611ebb579160200282015b82811115611ebb5782518051611eab918491602090910190611f55565b5091602001919060010190611e8e565b50611e2f929150611fd0565b828054828255906000526020600020908101928215611f14579160200282015b82811115611f145782518051611f04918491602090910190611f55565b5091602001919060010190611ee7565b50611e2f929150611fed565b604080516060810182526000808252602082018190529181019190915290565b5b80821115611e2f5760008155600101611f41565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611f8b5760008555611e23565b82601f10611fa457805160ff1916838001178555611e23565b82800160010185558215611e235791820182811115611e23578251825591602001919060010190611e53565b80821115611e2f576000611fe4828261200a565b50600101611fd0565b80821115611e2f576000612001828261200a565b50600101611fed565b50805460018160011615610100020316600290046000825580601f10612030575061204e565b601f01602090049060005260206000209081019061204e9190611f40565b50565b600061206461205f84613106565b6130c4565b905082815283838301111561207857600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114610abd57600080fd5b600082601f8301126120b6578081fd5b813560206120c661205f836130e8565b82815281810190858301838502870184018810156120e2578586fd5b855b85811015612107576120f58261208f565b845292840192908401906001016120e4565b5090979650505050505050565b600082601f830112612124578081fd5b8135602061213461205f836130e8565b82815281810190858301855b85811015612107578135880189603f82011261215a578788fd5b61216b8a8783013560408401612051565b8552509284019290840190600101612140565b600082601f83011261218e578081fd5b8135602061219e61205f836130e8565b82815281810190858301855b85811015612107576121c1898684358b010161222d565b845292840192908401906001016121aa565b600082601f8301126121e3578081fd5b813560206121f361205f836130e8565b828152818101908583018385028701840188101561220f578586fd5b855b8581101561210757813584529284019290840190600101612211565b600082601f83011261223d578081fd5b611c0683833560208501612051565b60006020828403121561225d578081fd5b611c068261208f565b60008060408385031215612278578081fd5b6122818361208f565b946020939093013593505050565b600080600080600060a086880312156122a6578081fd5b853567ffffffffffffffff808211156122bd578283fd5b6122c989838a016120a6565b965060208801359150808211156122de578283fd5b6122ea89838a016121d3565b955060408801359150808211156122ff578283fd5b61230b89838a0161217e565b94506060880135915080821115612320578283fd5b61232c89838a01612114565b93506080880135915080821115612341578283fd5b5061234e8882890161222d565b9150509295509295909350565b60006020828403121561236c578081fd5b8151611c0681613160565b600060208284031215612388578081fd5b5051919050565b6000602082840312156123a0578081fd5b815167ffffffffffffffff8111156123b6578182fd5b8201601f810184136123c6578182fd5b80516123d461205f82613106565b8181528560208385010111156123e8578384fd5b6123f9826020830160208601613134565b95945050505050565b600060208284031215612413578081fd5b5035919050565b6000806040838503121561242c578182fd5b8235915061243c6020840161208f565b90509250929050565b60008060408385031215612457578182fd5b82359150602083013561246981613160565b809150509250929050565b600080600080600060a0868803121561248b578283fd5b85359450602086013561249d81613160565b9350604086013560ff811681146124b2578384fd5b94979396509394606081013594506080013592915050565b6000602082840312156124db578081fd5b81516001600160601b0381168114611c06578182fd5b6000815180845260208085019450808401835b838110156125295781516001600160a01b031687529582019590820190600101612504565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b8581101561257a5782840389526125688483516125b6565b98850198935090840190600101612550565b5091979650505050505050565b6000815180845260208085019450808401835b838110156125295781518752958201959082019060010161259a565b600081518084526125ce816020860160208601613134565b601f01601f19169290920160200192915050565b60008154600180821660008114612600576001811461261e5761265c565b60028304607f16865260ff198316602087015260408601935061265c565b6002830480875261262e86613128565b60005b828110156126525781546020828b0101528482019150602081019050612631565b8801602001955050505b50505092915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b600060018060a01b038616825284602083015260a06040830152601860a08301527f73657450656e64696e6741646d696e286164647265737329000000000000000060c083015260e0606083015261270860e08301856125b6565b905082608083015295945050505050565b6001600160a01b039490941684526020840192909252151560408301526001600160601b0316606082015260800190565b600060018060a01b038716825285602083015260a0604083015261277160a08301866125b6565b828103606084015261278381866125b6565b9150508260808301529695505050505050565b600060018060a01b038716825285602083015260a060408301526127bd60a08301866125e2565b828103606084015261278381866125e2565b6001600160a01b03989098168852602088019690965260408701949094526060860192909252608085015260a0840152151560c0830152151560e08201526101000190565b60006080825261282760808301876124f1565b82810360208401526128398187612587565b9050828103604084015261284d8186612534565b905082810360608401526128618185612534565b979650505050505050565b90815260200190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b92835260208301919091521515604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b60208101600883106128dd57fe5b91905290565b600060208252611c0660208301846125b6565b6020808252603a908201527f476f7665726e6f723a3a70726f706f73653a2070726f706f73657220766f746560408201527f732062656c6f772070726f706f73616c207468726573686f6c64000000000000606082015260800190565b60208082526042908201527f476f7665726e6f723a3a63616e63656c3a2063616e6e6f742063616e63656c2060408201527f756e6c6573732070726f706f7365722069732062656c6f77207468726568736f6060820152611b1960f21b608082015260a00190565b6020808252603f908201527f476f7665726e6f723a3a70726f706f73653a2070726f706f73616c2066756e6360408201527f74696f6e20696e666f726d6174696f6e206172697479206d69736d6174636800606082015260800190565b60208082526045908201527f476f7665726e6f723a3a5f5f717565756553657454696d656c6f636b50656e6460408201527f696e6741646d696e3a2073656e646572206d75737420626520676f7620677561606082015264393234b0b760d91b608082015260a00190565b60208082526023908201527f476f7665726e6f723a3a70726f706f73653a20746f6f206d616e7920616374696040820152626f6e7360e81b606082015260800190565b60208082526031908201527f476f7665726e6f723a3a63616e63656c3a2063616e6e6f742063616e63656c20604082015270195e1958dd5d1959081c1c9bdc1bdcd85b607a1b606082015260800190565b60208082526027908201527f476f7665726e6f723a3a70726f706f73653a206d7573742070726f7669646520604082015266616374696f6e7360c81b606082015260800190565b60208082526054908201527f476f7665726e6f723a3a70726f706f73653a206f6e65206c6976652070726f7060408201527f6f73616c207065722070726f706f7365722c20666f756e6420616e20616c726560608201527318591e481c195b991a5b99c81c1c9bdc1bdcd85b60621b608082015260a00190565b60208082526047908201527f476f7665726e6f723a3a5f5f6578656375746553657454696d656c6f636b506560408201527f6e64696e6741646d696e3a2073656e646572206d75737420626520676f7620676060820152663ab0b93234b0b760c91b608082015260a00190565b60208082526024908201527f476f7665726e6f723a3a73746174653a20696e76616c69642070726f706f73616040820152631b081a5960e21b606082015260800190565b60208082526053908201527f476f7665726e6f723a3a70726f706f73653a206f6e65206c6976652070726f7060408201527f6f73616c207065722070726f706f7365722c20666f756e6420616e20616c726560608201527218591e481858dd1a5d99481c1c9bdc1bdcd85b606a1b608082015260a00190565b602080825260409082018190527f476f7665726e6f723a3a657865637574653a2070726f706f73616c2063616e20908201527f6f6e6c7920626520657865637574656420696620697420697320717565756564606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526031908201527f476f7665726e6f723a3a5f5f61626469636174653a2073656e646572206d75736040820152703a1031329033b7bb1033bab0b93234b0b760791b606082015260800190565b6020808252603f908201527f476f7665726e6f723a3a5f71756575654f725265766572743a2070726f706f7360408201527f616c20616374696f6e20616c7265616479207175657565642061742065746100606082015260800190565b60208082526034908201527f476f7665726e6f723a3a5f5f61636365707441646d696e3a2073656e6465722060408201527336bab9ba1031329033b7bb1033bab0b93234b0b760611b606082015260800190565b60208082526028908201527f476f7665726e6f723a3a5f63617374566f74653a20766f74657220616c726561604082015267191e481d9bdd195960c21b606082015260800190565b60208082526025908201527f476f7665726e6f723a3a5f63617374566f74653a20766f74696e6720697320636040820152641b1bdcd95960da1b606082015260800190565b6020808252601590820152747375627472616374696f6e20756e646572666c6f7760581b604082015260600190565b6020808252603f908201527f476f7665726e6f723a3a71756575653a2070726f706f73616c2063616e206f6e60408201527f6c79206265207175657565642069662069742069732073756363656564656400606082015260800190565b6020808252602a908201527f476f7665726e6f723a3a63617374566f746542795369673a20696e76616c6964604082015269207369676e617475726560b01b606082015260800190565b8151151581526020808301511515908201526040918201516001600160601b03169181019190915260600190565b8981526001600160a01b0389166020820152610120604082018190526000906130498382018b6124f1565b9050828103606084015261305d818a612587565b905082810360808401526130718189612534565b905082810360a08401526130858188612534565b90508560c08401528460e08401528281036101008401526130a681856125b6565b9c9b505050505050505050505050565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156130e057fe5b604052919050565b600067ffffffffffffffff8211156130fc57fe5b5060209081020190565b600067ffffffffffffffff82111561311a57fe5b50601f01601f191660200190565b60009081526020902090565b60005b8381101561314f578181015183820152602001613137565b838111156111365750506000910152565b801515811461204e57600080fdfea264697066735822122031a5041528f6ca588e61832ab4f77d6adcffcf2bf8772140a4fccea193c29f2064736f6c63430007060033

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

0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba00000000000000000000000031c8eacbffdd875c74b94b077895bd78cf1e64a30000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : timelock_ (address): 0x8dA8f82d2BbDd896822de723F55D6EdF416130ba
Arg [1] : token_ (address): 0x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3
Arg [2] : guardian_ (address): 0x0000000000000000000000000000000000000000

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000008da8f82d2bbdd896822de723f55d6edf416130ba
Arg [1] : 00000000000000000000000031c8eacbffdd875c74b94b077895bd78cf1e64a3
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

1665:16162:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5159:45;;;;;;;;;;-1:-1:-1;5159:45:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;2709:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14267:127::-;;;;;;;;;;-1:-1:-1;14267:127:0;;;;;:::i;:::-;;:::i;:::-;;5268:52;;;;;;;;;;-1:-1:-1;5268:52:0;;;;;:::i;:::-;;:::i;5393:131::-;;;;;;;;;;;;;:::i;16804:447::-;;;;;;;;;;-1:-1:-1;16804:447:0;;;;;:::i;:::-;;:::i;1923:89::-;;;;;;;;;;;;;:::i;12597:388::-;;;;;;;;;;-1:-1:-1;12597:388:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;2545:80::-;;;;;;;;;;;;;:::i;13156:1103::-;;;;;;;;;;-1:-1:-1;13156:1103:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11416:1173::-;;;;;;;;;;-1:-1:-1;11416:1173:0;;;;;:::i;:::-;;:::i;3120:23::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14402:720::-;;;;;;;;;;-1:-1:-1;14402:720:0;;;;;:::i;:::-;;:::i;16183:164::-;;;;;;;;;;;;;:::i;2347:91::-;;;;;;;;;;;;;:::i;16355:441::-;;;;;;;;;;-1:-1:-1;16355:441:0;;;;;:::i;:::-;;:::i;1733:48::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2135:95::-;;;;;;;;;;;;;:::i;16004:171::-;;;;;;;;;;;;;:::i;2907:43::-;;;;;;;;;;;;;:::i;3199:28::-;;;;;;;;;;;;;:::i;6838:2618::-;;;;;;;;;;-1:-1:-1;6838:2618:0;;;;;:::i;:::-;;:::i;9464:718::-;;;;;;;;;;-1:-1:-1;9464:718:0;;;;;:::i;:::-;;:::i;5614:94::-;;;;;;;;;;;;;:::i;12993:155::-;;;;;;;;;;-1:-1:-1;12993:155:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3020:37::-;;;;;;;;;;;;;:::i;10696:712::-;;;;;;:::i;:::-;;:::i;5159:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5159:45:0;;;;;;;;;;;;;;;;;;;;;;;:::o;2709:85::-;2781:5;2709:85;:::o;14267:127::-;14344:42;14354:10;14366;14378:7;14344:9;:42::i;:::-;14267:127;;:::o;5268:52::-;;;;;;;;;;;;;:::o;5393:131::-;5444:80;5393:131;:::o;16804:447::-;16938:8;;-1:-1:-1;;;;;16938:8:0;16924:10;:22;16902:143;;;;-1:-1:-1;;;16902:143:0;;;;;;;:::i;:::-;;;;;;;;;17056:8;-1:-1:-1;;;;;17056:27:0;;17106:8;17130:1;17198:15;17187:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;17229:3;17056:187;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17056:187:0;;;;;;;;;;;;:::i;:::-;;16804:447;;:::o;1923:89::-;1994:10;1923:89;:::o;12597:388::-;12699:24;12738:23;12776:26;12817:24;12869:18;12890:9;:21;12900:10;12890:21;;;;;;;;;;;12869:42;;12930:1;:9;;12941:1;:8;;12951:1;:12;;12965:1;:11;;12922:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12922:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12922:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12922:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12597:388;;;;;:::o;2545:80::-;2616:1;2545:80;:::o;13156:1103::-;13212:13;13277:10;13260:13;;:27;;:45;;;;;13304:1;13291:10;:14;13260:45;13238:131;;;;-1:-1:-1;;;13238:131:0;;;;;;;:::i;:::-;13380:25;13408:21;;;:9;:21;;;;;13444:17;;;;;;13440:812;;;13485:22;13478:29;;;;;13440:812;13545:8;:19;;;13529:12;:35;13525:727;;13588:21;13581:28;;;;;13525:727;13647:8;:17;;;13631:12;:33;13627:625;;13688:20;13681:27;;;;;13627:625;13765:8;:21;;;13744:8;:17;;;:42;;:79;;;;13810:13;:11;:13::i;:::-;13790:8;:17;;;:33;13744:79;13726:526;;;13857:22;13850:29;;;;;13726:526;13901:12;;;;13897:355;;13942:23;13935:30;;;;;13897:355;13987:17;;;;;;;;;13983:269;;;14028:22;14021:29;;;;;13983:269;14091:44;14098:8;:12;;;14112:8;-1:-1:-1;;;;;14112:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14091:6;:44::i;:::-;14072:15;:63;14068:184;;14159:21;14152:28;;;;;14068:184;14220:20;14213:27;;;13156:1103;;;;:::o;11416:1173::-;11470:20;11493:17;11499:10;11493:5;:17::i;:::-;11470:40;-1:-1:-1;11553:22:0;11543:6;:32;;;;;;;;;;11521:131;;;;-1:-1:-1;;;11521:131:0;;;;;;;:::i;:::-;11665:25;11693:21;;;:9;:21;;;;;11761:8;;-1:-1:-1;;;;;11761:8:0;11747:10;:22;;:338;;;12066:19;:17;:19::i;:::-;12003:17;;-1:-1:-1;;;;;11983:5:0;:19;;;;;12003:17;12022:23;12029:12;12003:17;12022:6;:23::i;:::-;11983:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11983:102:0;;11747:338;11725:454;;;;-1:-1:-1;;;11725:454:0;;;;;;;:::i;:::-;12192:17;;;:24;;-1:-1:-1;;12192:24:0;12212:4;12192:24;;;:17;12227:309;12251:16;;;:23;12247:27;;12227:309;;;12296:8;-1:-1:-1;;;;;12296:26:0;;12341:8;:16;;12358:1;12341:19;;;;;;;;;;;;;;;;;;12379:15;;;:18;;-1:-1:-1;;;;;12341:19:0;;;;12395:1;;12379:18;;;;;;;;;;;;;;12416:8;:19;;12436:1;12416:22;;;;;;;;;;;;;;;12457:8;:18;;12476:1;12457:21;;;;;;;;;;;;;;;12497:8;:12;;;12296:228;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12276:3:0;;;;;-1:-1:-1;12227:309:0;;-1:-1:-1;12227:309:0;;;12553:28;12570:10;12553:28;;;;;;:::i;:::-;;;;;;;;11416:1173;;;:::o;3120:23::-;;;-1:-1:-1;;;;;3120:23:0;;:::o;14402:720::-;14671:4;;;;;;;;;;;;-1:-1:-1;;;14671:4:0;;;;;14560:23;5444:80;14655:22;14679:12;:10;:12::i;:::-;14701:4;14627:80;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14599:123;;;;;;14560:162;;14733:18;5656:52;14792:10;14804:7;14764:48;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14754:59;;;;;;14733:80;;14824:14;14880:15;14897:10;14851:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14841:68;;;;;;14824:85;;14920:17;14940:26;14950:6;14958:1;14961;14964;14940:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14940:26:0;;-1:-1:-1;;14940:26:0;;;-1:-1:-1;;;;;;;14985:23:0;;14977:78;;;;-1:-1:-1;;;14977:78:0;;;;;;;:::i;:::-;15073:41;15083:9;15094:10;15106:7;15073:9;:41::i;:::-;15066:48;;;;14402:720;;;;;:::o;16183:164::-;16245:8;;-1:-1:-1;;;;;16245:8:0;16231:10;:22;16223:84;;;;-1:-1:-1;;;16223:84:0;;;;;;;:::i;:::-;16337:1;16318:21;;-1:-1:-1;;;;;;16318:21:0;;;16183:164::o;2347:91::-;2428:2;2347:91;:::o;16355:441::-;16487:8;;-1:-1:-1;;;;;16487:8:0;16473:10;:22;16451:141;;;;-1:-1:-1;;;16451:141:0;;;;;;;:::i;:::-;16603:8;-1:-1:-1;;;;;16603:25:0;;16651:8;16675:1;16743:15;16732:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;16774:3;16603:185;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1733:48::-;;;;;;;;;;;;;;-1:-1:-1;;;1733:48:0;;;;:::o;2135:95::-;2212:10;2135:95;:::o;16004:171::-;16069:8;;-1:-1:-1;;;;;16069:8:0;16055:10;:22;16047:87;;;;-1:-1:-1;;;16047:87:0;;;;;;;:::i;:::-;16145:8;-1:-1:-1;;;;;16145:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16004:171::o;2907:43::-;;;:::o;3199:28::-;;;;:::o;6838:2618::-;7055:7;7157:19;:17;:19::i;:::-;7097:5;-1:-1:-1;;;;;7097:19:0;;7117:10;7129:23;7136:12;7150:1;7129:6;:23::i;:::-;7097:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7097:79:0;;;7075:187;;;;-1:-1:-1;;;7075:187:0;;;;;;;:::i;:::-;7313:6;:13;7295:7;:14;:31;:87;;;;;7365:10;:17;7347:7;:14;:35;7295:87;:142;;;;;7421:9;:16;7403:7;:14;:34;7295:142;7273:255;;;;-1:-1:-1;;;7273:255:0;;;;;;;:::i;:::-;7547:14;;7539:71;;;;-1:-1:-1;;;7539:71:0;;;;;;;:::i;:::-;7647:23;:21;:23::i;:::-;7629:7;:14;:41;;7621:89;;;;-1:-1:-1;;;7621:89:0;;;;;;;:::i;:::-;7768:10;7723:24;7750:29;;;:17;:29;;;;;;7794:21;;7790:548;;7832:42;7877:23;7883:16;7877:5;:23::i;:::-;7832:68;-1:-1:-1;7973:20:0;7941:28;:52;;;;;;;;;;7915:197;;;;-1:-1:-1;;;7915:197:0;;;;;;;:::i;:::-;8185:21;8153:28;:53;;;;;;;;;;8127:199;;;;-1:-1:-1;;;8127:199:0;;;;;;;:::i;:::-;7790:548;;8350:18;8371:35;8378:12;8392:13;:11;:13::i;8371:35::-;8350:56;;8417:16;8436:34;8443:10;8455:14;:12;:14::i;8436:34::-;8483:13;:15;;;;;;;:13;8540:24;;;:9;:24;;;;;;;8624:33;;-1:-1:-1;;;;;;8624:33:0;8647:10;8624:33;;;8668:15;;;:19;;;;8698:29;;8417:53;;-1:-1:-1;8540:24:0;;8483:15;;8698:29;;:19;;;;:29;;;;:::i;:::-;-1:-1:-1;8738:27:0;;;;:18;;;;:27;;;;;:::i;:::-;-1:-1:-1;8776:35:0;;;;:22;;;;:35;;;;;:::i;:::-;-1:-1:-1;8822:33:0;;;;:21;;;;:33;;;;;:::i;:::-;;8891:10;8866:11;:22;;:35;;;;8935:8;8912:11;:20;;:31;;;;8977:1;8954:11;:20;;:24;;;;9016:1;8989:11;:24;;:28;;;;9051:5;9028:11;:20;;;:28;;;;;;;;;;;;;;;;;;9090:5;9067:11;:20;;;:28;;;;;;;;;;;;;;;;;;9150:10;9108:17;:39;9126:11;:20;;;;;;;;;;-1:-1:-1;;;;;9126:20:0;-1:-1:-1;;;;;9108:39:0;-1:-1:-1;;;;;9108:39:0;;;;;;;;;;;;:52;;;;9178:242;9208:10;9233;9258:7;9280:6;9301:10;9326:9;9350:10;9375:8;9398:11;9178:242;;;;;;;;;;;;;;:::i;:::-;;;;;;;;9438:10;6838:2618;-1:-1:-1;;;;;;;;;;6838:2618:0:o;9464:718::-;9560:23;9539:17;9545:10;9539:5;:17::i;:::-;:44;;;;;;;;;9517:157;;;;-1:-1:-1;;;9517:157:0;;;;;;;:::i;:::-;9685:25;9713:9;:21;9723:10;9713:21;;;;;;;;;;;9685:49;;9745:11;9759:41;9766:15;9783:8;-1:-1:-1;;;;;9783:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9759:41;9745:55;;9816:9;9811:288;9835:16;;;:23;9831:27;;9811:288;;;9880:207;9913:8;:16;;9930:1;9913:19;;;;;;;;;;;;;;;;;;9951:15;;;:18;;-1:-1:-1;;;;;9913:19:0;;;;9967:1;;9951:18;;;;;;;;;;;;;;9988:8;:19;;10008:1;9988:22;;;;;;;;;;;;;;;;;;9880:207;;;;;;;-1:-1:-1;;9880:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9988:22;9880:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10029:8;:18;;10048:1;10029:21;;;;;;;;;;;;;;;;;;9880:207;;;;;;;-1:-1:-1;;9880:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10029:21;9880:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10069:3;9880:14;:207::i;:::-;9860:3;;9811:288;;;-1:-1:-1;10109:12:0;;;:18;;;10143:31;;;;;;10158:10;;10124:3;;10143:31;:::i;5614:94::-;5656:52;5614:94;:::o;12993:155::-;13069:14;;:::i;:::-;-1:-1:-1;13103:21:0;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;13103:37:0;;;;;;:30;;;;:37;;;;;;13096:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13096:44:0;;;;;;12993:155::o;3020:37::-;;;:::o;10696:712::-;10802:20;10781:17;10787:10;10781:5;:17::i;:::-;:41;;;;;;;;;10759:155;;;;-1:-1:-1;;;10759:155:0;;;;;;;:::i;:::-;10925:25;10953:21;;;:9;:21;;;;;10985:17;;;:24;;-1:-1:-1;;10985:24:0;;;;;10953:21;11020:337;11044:16;;;:23;11040:27;;11020:337;;;11089:8;-1:-1:-1;;;;;11089:27:0;;11124:8;:15;;11140:1;11124:18;;;;;;;;;;;;;;;;11162:8;:16;;11179:1;11162:19;;;;;;;;;;;;;;;;;;11200:15;;;:18;;-1:-1:-1;;;;;11162:19:0;;;;11216:1;;11200:18;;;;;;;;;;;;;;11237:8;:19;;11257:1;11237:22;;;;;;;;;;;;;;;11278:8;:18;;11297:1;11278:21;;;;;;;;;;;;;;;11318:8;:12;;;11089:256;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11089:256:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11069:3:0;;11020:337;;;;11372:28;11389:10;11372:28;;;;;;:::i;:::-;;;;;;;;10696:712;;:::o;15130:866::-;15281:20;15260:17;15266:10;15260:5;:17::i;:::-;:41;;;;;;;;;15252:91;;;;-1:-1:-1;;;15252:91:0;;;;;;;:::i;:::-;15354:25;15382:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;15440:24:0;;;;:17;;;:24;;;;;;15483:16;;;;:25;15475:78;;;;-1:-1:-1;;;15475:78:0;;;;;;;:::i;:::-;15606:19;;;;15579:47;;-1:-1:-1;;;15579:47:0;;15564:12;;-1:-1:-1;;;;;15579:5:0;:19;;;;:47;;15599:5;;15606:19;15579:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15564:62;;15643:7;15639:185;;;15687:32;15694:8;:17;;;15713:5;-1:-1:-1;;;;;15687:32:0;:6;:32::i;:::-;15667:17;;;:52;15639:185;;;15776:36;15783:8;:21;;;15806:5;-1:-1:-1;;;;;15776:36:0;:6;:36::i;:::-;15752:21;;;:60;15639:185;15836:23;;15855:4;-1:-1:-1;;15836:23:0;;;;-1:-1:-1;;15870:25:0;15836:23;15870:25;;;;;-1:-1:-1;;15906:21:0;;-1:-1:-1;;;;;15906:21:0;;;;;;15945:43;;;;;;15954:5;;15961:10;;15870:25;;15906:21;;15945:43;:::i;:::-;;;;;;;;15130:866;;;;;;:::o;17259:172::-;17320:7;17352:5;;;17376:6;;;;17368:36;;;;-1:-1:-1;;;17368:36:0;;;;;;;:::i;:::-;17422:1;17259:172;-1:-1:-1;;;17259:172:0:o;17439:152::-;17500:7;17533:1;17528;:6;;17520:40;;;;-1:-1:-1;;;17520:40:0;;;;;;;:::i;:::-;-1:-1:-1;17578:5:0;;;17439:152::o;17599:225::-;17772:9;17599:225;:::o;10190:498::-;10397:8;-1:-1:-1;;;;;10397:27:0;;10464:6;10472:5;10479:9;10490:4;10496:3;10453:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10443:58;;;;;;10397:119;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10396:120;10374:233;;;;-1:-1:-1;;;10374:233:0;;;;;;;:::i;:::-;10618:62;;-1:-1:-1;;;10618:62:0;;-1:-1:-1;;;;;10618:8:0;:25;;;;:62;;10644:6;;10652:5;;10659:9;;10670:4;;10676:3;;10618:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10190:498;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;14:339:1:-;;109:53;124:37;154:6;124:37;:::i;:::-;109:53;:::i;:::-;100:62;;185:6;178:5;171:21;225:3;216:6;211:3;207:16;204:25;201:2;;;242:1;239;232:12;201:2;291:6;286:3;279:4;272:5;268:16;255:43;345:1;338:4;329:6;322:5;318:18;314:29;307:40;90:263;;;;;:::o;358:175::-;428:20;;-1:-1:-1;;;;;477:31:1;;467:42;;457:2;;523:1;520;513:12;538:713;;651:3;644:4;636:6;632:17;628:27;618:2;;673:5;666;659:20;618:2;713:6;700:20;739:4;763:65;778:49;824:2;778:49;:::i;763:65::-;862:15;;;893:12;;;;925:15;;;971:11;;;959:24;;955:33;;952:42;-1:-1:-1;949:2:1;;;1011:5;1004;997:20;949:2;1037:5;1051:171;1065:2;1062:1;1059:9;1051:171;;;1122:25;1143:3;1122:25;:::i;:::-;1110:38;;1168:12;;;;1200;;;;1083:1;1076:9;1051:171;;;-1:-1:-1;1240:5:1;;608:643;-1:-1:-1;;;;;;;608:643:1:o;1256:810::-;;1367:3;1360:4;1352:6;1348:17;1344:27;1334:2;;1389:5;1382;1375:20;1334:2;1429:6;1416:20;1455:4;1479:65;1494:49;1540:2;1494:49;:::i;1479:65::-;1578:15;;;1609:12;;;;1641:15;;;1674:5;1688:349;1702:2;1699:1;1696:9;1688:349;;;1782:3;1769:17;1761:6;1757:30;1827:3;1822:2;1818;1814:11;1810:21;1800:2;;1849:5;1842;1835:20;1800:2;1882:80;1958:3;1952:2;1948;1944:11;1931:25;1926:2;1922;1918:11;1882:80;:::i;:::-;1870:93;;-1:-1:-1;1983:12:1;;;;2015;;;;1720:1;1713:9;1688:349;;2071:673;;2183:3;2176:4;2168:6;2164:17;2160:27;2150:2;;2205:5;2198;2191:20;2150:2;2245:6;2232:20;2271:4;2295:65;2310:49;2356:2;2310:49;:::i;2295:65::-;2394:15;;;2425:12;;;;2457:15;;;2490:5;2504:211;2518:2;2515:1;2512:9;2504:211;;;2575:65;2636:3;2631:2;2624:3;2611:17;2603:6;2599:30;2595:39;2575:65;:::i;:::-;2563:78;;2661:12;;;;2693;;;;2536:1;2529:9;2504:211;;2749:705;;2862:3;2855:4;2847:6;2843:17;2839:27;2829:2;;2884:5;2877;2870:20;2829:2;2924:6;2911:20;2950:4;2974:65;2989:49;3035:2;2989:49;:::i;2974:65::-;3073:15;;;3104:12;;;;3136:15;;;3182:11;;;3170:24;;3166:33;;3163:42;-1:-1:-1;3160:2:1;;;3222:5;3215;3208:20;3160:2;3248:5;3262:163;3276:2;3273:1;3270:9;3262:163;;;3333:17;;3321:30;;3371:12;;;;3403;;;;3294:1;3287:9;3262:163;;3459:233;;3557:3;3550:4;3542:6;3538:17;3534:27;3524:2;;3579:5;3572;3565:20;3524:2;3605:81;3682:3;3673:6;3660:20;3653:4;3645:6;3641:17;3605:81;:::i;3697:198::-;;3809:2;3797:9;3788:7;3784:23;3780:32;3777:2;;;3830:6;3822;3815:22;3777:2;3858:31;3879:9;3858:31;:::i;3900:266::-;;;4029:2;4017:9;4008:7;4004:23;4000:32;3997:2;;;4050:6;4042;4035:22;3997:2;4078:31;4099:9;4078:31;:::i;:::-;4068:41;4156:2;4141:18;;;;4128:32;;-1:-1:-1;;;3987:179:1:o;4171:1351::-;;;;;;4480:3;4468:9;4459:7;4455:23;4451:33;4448:2;;;4502:6;4494;4487:22;4448:2;4547:9;4534:23;4576:18;4617:2;4609:6;4606:14;4603:2;;;4638:6;4630;4623:22;4603:2;4666:67;4725:7;4716:6;4705:9;4701:22;4666:67;:::i;:::-;4656:77;;4786:2;4775:9;4771:18;4758:32;4742:48;;4815:2;4805:8;4802:16;4799:2;;;4836:6;4828;4821:22;4799:2;4864:69;4925:7;4914:8;4903:9;4899:24;4864:69;:::i;:::-;4854:79;;4986:2;4975:9;4971:18;4958:32;4942:48;;5015:2;5005:8;5002:16;4999:2;;;5036:6;5028;5021:22;4999:2;5064:68;5124:7;5113:8;5102:9;5098:24;5064:68;:::i;:::-;5054:78;;5185:2;5174:9;5170:18;5157:32;5141:48;;5214:2;5204:8;5201:16;5198:2;;;5235:6;5227;5220:22;5198:2;5263:67;5322:7;5311:8;5300:9;5296:24;5263:67;:::i;:::-;5253:77;;5383:3;5372:9;5368:19;5355:33;5339:49;;5413:2;5403:8;5400:16;5397:2;;;5434:6;5426;5419:22;5397:2;;5462:54;5508:7;5497:8;5486:9;5482:24;5462:54;:::i;:::-;5452:64;;;4438:1084;;;;;;;;:::o;5527:257::-;;5647:2;5635:9;5626:7;5622:23;5618:32;5615:2;;;5668:6;5660;5653:22;5615:2;5705:9;5699:16;5724:30;5748:5;5724:30;:::i;5789:194::-;;5912:2;5900:9;5891:7;5887:23;5883:32;5880:2;;;5933:6;5925;5918:22;5880:2;-1:-1:-1;5961:16:1;;5870:113;-1:-1:-1;5870:113:1:o;5988:675::-;;6120:2;6108:9;6099:7;6095:23;6091:32;6088:2;;;6141:6;6133;6126:22;6088:2;6179:9;6173:16;6212:18;6204:6;6201:30;6198:2;;;6249:6;6241;6234:22;6198:2;6277:22;;6330:4;6322:13;;6318:27;-1:-1:-1;6308:2:1;;6364:6;6356;6349:22;6308:2;6398;6392:9;6423:49;6438:33;6468:2;6438:33;:::i;6423:49::-;6495:2;6488:5;6481:17;6535:7;6530:2;6525;6521;6517:11;6513:20;6510:33;6507:2;;;6561:6;6553;6546:22;6507:2;6579:54;6630:2;6625;6618:5;6614:14;6609:2;6605;6601:11;6579:54;:::i;:::-;6652:5;6078:585;-1:-1:-1;;;;;6078:585:1:o;6668:190::-;;6780:2;6768:9;6759:7;6755:23;6751:32;6748:2;;;6801:6;6793;6786:22;6748:2;-1:-1:-1;6829:23:1;;6738:120;-1:-1:-1;6738:120:1:o;7062:266::-;;;7191:2;7179:9;7170:7;7166:23;7162:32;7159:2;;;7212:6;7204;7197:22;7159:2;7253:9;7240:23;7230:33;;7282:40;7318:2;7307:9;7303:18;7282:40;:::i;:::-;7272:50;;7149:179;;;;;:::o;7333:321::-;;;7459:2;7447:9;7438:7;7434:23;7430:32;7427:2;;;7480:6;7472;7465:22;7427:2;7521:9;7508:23;7498:33;;7581:2;7570:9;7566:18;7553:32;7594:30;7618:5;7594:30;:::i;:::-;7643:5;7633:15;;;7417:237;;;;;:::o;7659:634::-;;;;;;7834:3;7822:9;7813:7;7809:23;7805:33;7802:2;;;7856:6;7848;7841:22;7802:2;7897:9;7884:23;7874:33;;7957:2;7946:9;7942:18;7929:32;7970:30;7994:5;7970:30;:::i;:::-;8019:5;-1:-1:-1;8076:2:1;8061:18;;8048:32;8124:4;8111:18;;8099:31;;8089:2;;8149:6;8141;8134:22;8089:2;7792:501;;;;-1:-1:-1;8177:7:1;;8231:2;8216:18;;8203:32;;-1:-1:-1;8282:3:1;8267:19;8254:33;;7792:501;-1:-1:-1;;7792:501:1:o;8298:316::-;;8420:2;8408:9;8399:7;8395:23;8391:32;8388:2;;;8441:6;8433;8426:22;8388:2;8478:9;8472:16;-1:-1:-1;;;;;8521:5:1;8517:38;8510:5;8507:49;8497:2;;8575:6;8567;8560:22;8619:469;;8716:5;8710:12;8743:6;8738:3;8731:19;8769:4;8798:2;8793:3;8789:12;8782:19;;8835:2;8828:5;8824:14;8856:3;8868:195;8882:6;8879:1;8876:13;8868:195;;;8947:13;;-1:-1:-1;;;;;8943:39:1;8931:52;;9003:12;;;;9038:15;;;;8979:1;8897:9;8868:195;;;-1:-1:-1;9079:3:1;;8686:402;-1:-1:-1;;;;;8686:402:1:o;9093:625::-;;9188:5;9182:12;9215:6;9210:3;9203:19;9241:4;9282:2;9277:3;9273:12;9307:11;9334;9327:18;;9389:2;9381:6;9377:15;9370:5;9366:27;9354:39;;9427:2;9420:5;9416:14;9448:3;9460:232;9474:6;9471:1;9468:13;9460:232;;;9545:5;9539:4;9535:16;9530:3;9523:29;9573:39;9607:4;9598:6;9592:13;9573:39;:::i;:::-;9670:12;;;;9565:47;-1:-1:-1;9635:15:1;;;;9496:1;9489:9;9460:232;;;-1:-1:-1;9708:4:1;;9158:560;-1:-1:-1;;;;;;;9158:560:1:o;9723:443::-;;9820:5;9814:12;9847:6;9842:3;9835:19;9873:4;9902:2;9897:3;9893:12;9886:19;;9939:2;9932:5;9928:14;9960:3;9972:169;9986:6;9983:1;9980:13;9972:169;;;10047:13;;10035:26;;10081:12;;;;10116:15;;;;10008:1;10001:9;9972:169;;10171:259;;10252:5;10246:12;10279:6;10274:3;10267:19;10295:63;10351:6;10344:4;10339:3;10335:14;10328:4;10321:5;10317:16;10295:63;:::i;:::-;10412:2;10391:15;-1:-1:-1;;10387:29:1;10378:39;;;;10419:4;10374:50;;10222:208;-1:-1:-1;;10222:208:1:o;10435:756::-;;10527:5;10521:12;10552:1;10584:2;10573:9;10569:18;10601:1;10596:165;;;;10775:1;10770:415;;;;10562:623;;10596:165;10648:1;10633:17;;10652:4;10629:28;10617:41;;-1:-1:-1;;10694:24:1;;10687:4;10678:14;;10671:48;10748:2;10739:12;;;-1:-1:-1;10596:165:1;;10770:415;10820:1;10809:9;10805:17;10847:6;10842:3;10835:19;10882:37;10913:5;10882:37;:::i;:::-;10941:1;10955:178;10969:6;10966:1;10963:13;10955:178;;;11066:7;11060:14;11053:4;11049:1;11044:3;11040:11;11036:22;11029:46;11116:2;11107:7;11103:16;11092:27;;10991:4;10988:1;10984:12;10979:17;;10955:178;;;11157:11;;11170:4;11153:22;;-1:-1:-1;;;10562:623:1;;;;10494:697;;;;:::o;11196:392::-;-1:-1:-1;;;11454:27:1;;11506:1;11497:11;;11490:27;;;;11542:2;11533:12;;11526:28;11579:2;11570:12;;11444:144::o;11593:203::-;-1:-1:-1;;;;;11757:32:1;;;;11739:51;;11727:2;11712:18;;11694:102::o;11801:282::-;-1:-1:-1;;;;;12001:32:1;;;;11983:51;;12065:2;12050:18;;12043:34;11971:2;11956:18;;11938:145::o;12088:714::-;;12457:1;12453;12448:3;12444:11;12440:19;12432:6;12428:32;12417:9;12410:51;12497:6;12492:2;12481:9;12477:18;12470:34;12540:3;12535:2;12524:9;12520:18;12513:31;12581:2;12575:3;12564:9;12560:19;12553:31;12621:26;12615:3;12604:9;12600:19;12593:55;12684:3;12679:2;12668:9;12664:18;12657:31;12705:47;12747:3;12736:9;12732:19;12724:6;12705:47;:::i;:::-;12697:55;;12789:6;12783:3;12772:9;12768:19;12761:35;12400:402;;;;;;;:::o;13086:459::-;-1:-1:-1;;;;;13328:32:1;;;;13310:51;;13392:2;13377:18;;13370:34;;;;13447:14;13440:22;13435:2;13420:18;;13413:50;-1:-1:-1;;;;;13499:39:1;13494:2;13479:18;;13472:67;13297:3;13282:19;;13264:281::o;13550:625::-;;13858:1;13854;13849:3;13845:11;13841:19;13833:6;13829:32;13818:9;13811:51;13898:6;13893:2;13882:9;13878:18;13871:34;13941:3;13936:2;13925:9;13921:18;13914:31;13968:47;14010:3;13999:9;13995:19;13987:6;13968:47;:::i;:::-;14063:9;14055:6;14051:22;14046:2;14035:9;14031:18;14024:50;14091:34;14118:6;14110;14091:34;:::i;:::-;14083:42;;;14162:6;14156:3;14145:9;14141:19;14134:35;13801:374;;;;;;;;:::o;14180:635::-;;14482:1;14478;14473:3;14469:11;14465:19;14457:6;14453:32;14442:9;14435:51;14522:6;14517:2;14506:9;14502:18;14495:34;14565:3;14560:2;14549:9;14545:18;14538:31;14592:55;14642:3;14631:9;14627:19;14619:6;14592:55;:::i;:::-;14695:9;14687:6;14683:22;14678:2;14667:9;14663:18;14656:50;14723:42;14758:6;14750;14723:42;:::i;14820:725::-;-1:-1:-1;;;;;15169:32:1;;;;15151:51;;15233:2;15218:18;;15211:34;;;;15276:2;15261:18;;15254:34;;;;15319:2;15304:18;;15297:34;;;;15362:3;15347:19;;15340:35;15189:3;15391:19;;15384:35;15463:14;15456:22;15450:3;15435:19;;15428:51;15523:14;15516:22;15510:3;15495:19;;15488:51;15138:3;15123:19;;15105:440::o;15550:933::-;;16001:3;15990:9;15983:22;16028:63;16086:3;16075:9;16071:19;16063:6;16028:63;:::i;:::-;16139:9;16131:6;16127:22;16122:2;16111:9;16107:18;16100:50;16173;16216:6;16208;16173:50;:::i;:::-;16159:64;;16271:9;16263:6;16259:22;16254:2;16243:9;16239:18;16232:50;16305:48;16346:6;16338;16305:48;:::i;:::-;16291:62;;16401:9;16393:6;16389:22;16384:2;16373:9;16369:18;16362:50;16429:48;16470:6;16462;16429:48;:::i;:::-;16421:56;15973:510;-1:-1:-1;;;;;;;15973:510:1:o;16488:177::-;16634:25;;;16622:2;16607:18;;16589:76::o;16670:417::-;16901:25;;;16957:2;16942:18;;16935:34;;;;17000:2;16985:18;;16978:34;-1:-1:-1;;;;;17048:32:1;17043:2;17028:18;;17021:60;16888:3;16873:19;;16855:232::o;17092:329::-;17288:25;;;17344:2;17329:18;;17322:34;;;;17399:14;17392:22;17387:2;17372:18;;17365:50;17276:2;17261:18;;17243:178::o;17426:398::-;17653:25;;;17726:4;17714:17;;;;17709:2;17694:18;;17687:45;17763:2;17748:18;;17741:34;17806:2;17791:18;;17784:34;17640:3;17625:19;;17607:217::o;18294:239::-;18443:2;18428:18;;18476:1;18465:13;;18455:2;;18482:9;18455:2;18502:25;;;18410:123;:::o;18538:221::-;;18687:2;18676:9;18669:21;18707:46;18749:2;18738:9;18734:18;18726:6;18707:46;:::i;18764:422::-;18966:2;18948:21;;;19005:2;18985:18;;;18978:30;19044:34;19039:2;19024:18;;19017:62;19115:28;19110:2;19095:18;;19088:56;19176:3;19161:19;;18938:248::o;19191:470::-;19393:2;19375:21;;;19432:2;19412:18;;;19405:30;19471:34;19466:2;19451:18;;19444:62;19542:34;19537:2;19522:18;;19515:62;-1:-1:-1;;;19608:3:1;19593:19;;19586:33;19651:3;19636:19;;19365:296::o;19666:427::-;19868:2;19850:21;;;19907:2;19887:18;;;19880:30;19946:34;19941:2;19926:18;;19919:62;20017:33;20012:2;19997:18;;19990:61;20083:3;20068:19;;19840:253::o;20098:473::-;20300:2;20282:21;;;20339:2;20319:18;;;20312:30;20378:34;20373:2;20358:18;;20351:62;20449:34;20444:2;20429:18;;20422:62;-1:-1:-1;;;20515:3:1;20500:19;;20493:36;20561:3;20546:19;;20272:299::o;20576:399::-;20778:2;20760:21;;;20817:2;20797:18;;;20790:30;20856:34;20851:2;20836:18;;20829:62;-1:-1:-1;;;20922:2:1;20907:18;;20900:33;20965:3;20950:19;;20750:225::o;20980:413::-;21182:2;21164:21;;;21221:2;21201:18;;;21194:30;21260:34;21255:2;21240:18;;21233:62;-1:-1:-1;;;21326:2:1;21311:18;;21304:47;21383:3;21368:19;;21154:239::o;21398:403::-;21600:2;21582:21;;;21639:2;21619:18;;;21612:30;21678:34;21673:2;21658:18;;21651:62;-1:-1:-1;;;21744:2:1;21729:18;;21722:37;21791:3;21776:19;;21572:229::o;21806:488::-;22008:2;21990:21;;;22047:2;22027:18;;;22020:30;22086:34;22081:2;22066:18;;22059:62;22157:34;22152:2;22137:18;;22130:62;-1:-1:-1;;;22223:3:1;22208:19;;22201:51;22284:3;22269:19;;21980:314::o;22299:475::-;22501:2;22483:21;;;22540:2;22520:18;;;22513:30;22579:34;22574:2;22559:18;;22552:62;22650:34;22645:2;22630:18;;22623:62;-1:-1:-1;;;22716:3:1;22701:19;;22694:38;22764:3;22749:19;;22473:301::o;22779:400::-;22981:2;22963:21;;;23020:2;23000:18;;;22993:30;23059:34;23054:2;23039:18;;23032:62;-1:-1:-1;;;23125:2:1;23110:18;;23103:34;23169:3;23154:19;;22953:226::o;23184:487::-;23386:2;23368:21;;;23425:2;23405:18;;;23398:30;23464:34;23459:2;23444:18;;23437:62;23535:34;23530:2;23515:18;;23508:62;-1:-1:-1;;;23601:3:1;23586:19;;23579:50;23661:3;23646:19;;23358:313::o;23676:428::-;23878:2;23860:21;;;23917:2;23897:18;;;23890:30;;;23956:34;23936:18;;;23929:62;24027:34;24022:2;24007:18;;24000:62;24094:3;24079:19;;23850:254::o;24109:341::-;24311:2;24293:21;;;24350:2;24330:18;;;24323:30;-1:-1:-1;;;24384:2:1;24369:18;;24362:47;24441:2;24426:18;;24283:167::o;24455:413::-;24657:2;24639:21;;;24696:2;24676:18;;;24669:30;24735:34;24730:2;24715:18;;24708:62;-1:-1:-1;;;24801:2:1;24786:18;;24779:47;24858:3;24843:19;;24629:239::o;24873:427::-;25075:2;25057:21;;;25114:2;25094:18;;;25087:30;25153:34;25148:2;25133:18;;25126:62;25224:33;25219:2;25204:18;;25197:61;25290:3;25275:19;;25047:253::o;25305:416::-;25507:2;25489:21;;;25546:2;25526:18;;;25519:30;25585:34;25580:2;25565:18;;25558:62;-1:-1:-1;;;25651:2:1;25636:18;;25629:50;25711:3;25696:19;;25479:242::o;25726:404::-;25928:2;25910:21;;;25967:2;25947:18;;;25940:30;26006:34;26001:2;25986:18;;25979:62;-1:-1:-1;;;26072:2:1;26057:18;;26050:38;26120:3;26105:19;;25900:230::o;26135:401::-;26337:2;26319:21;;;26376:2;26356:18;;;26349:30;26415:34;26410:2;26395:18;;26388:62;-1:-1:-1;;;26481:2:1;26466:18;;26459:35;26526:3;26511:19;;26309:227::o;26541:345::-;26743:2;26725:21;;;26782:2;26762:18;;;26755:30;-1:-1:-1;;;26816:2:1;26801:18;;26794:51;26877:2;26862:18;;26715:171::o;26891:427::-;27093:2;27075:21;;;27132:2;27112:18;;;27105:30;27171:34;27166:2;27151:18;;27144:62;27242:33;27237:2;27222:18;;27215:61;27308:3;27293:19;;27065:253::o;27323:406::-;27525:2;27507:21;;;27564:2;27544:18;;;27537:30;27603:34;27598:2;27583:18;;27576:62;-1:-1:-1;;;27669:2:1;27654:18;;27647:40;27719:3;27704:19;;27497:232::o;27734:423::-;27960:13;;27953:21;27946:29;27928:48;;28046:4;28034:17;;;28028:24;28021:32;28014:40;27992:20;;;27985:70;28115:4;28103:17;;;28097:24;-1:-1:-1;;;;;28093:57:1;28071:20;;;28064:87;;;;27916:2;27901:18;;27883:274::o;28344:1440::-;28967:25;;;-1:-1:-1;;;;;29028:32:1;;29023:2;29008:18;;29001:60;28955:3;29092:2;29077:18;;29070:30;;;28344:1440;;29123:62;29166:18;;;29158:6;29123:62;:::i;:::-;29109:76;;29233:9;29225:6;29221:22;29216:2;29205:9;29201:18;29194:50;29267;29310:6;29302;29267:50;:::i;:::-;29253:64;;29366:9;29358:6;29354:22;29348:3;29337:9;29333:19;29326:51;29400:48;29441:6;29433;29400:48;:::i;:::-;29386:62;;29497:9;29489:6;29485:22;29479:3;29468:9;29464:19;29457:51;29531:48;29572:6;29564;29531:48;:::i;:::-;29517:62;;29616:6;29610:3;29599:9;29595:19;29588:35;29660:6;29654:3;29643:9;29639:19;29632:35;29716:9;29708:6;29704:22;29698:3;29687:9;29683:19;29676:51;29744:34;29771:6;29763;29744:34;:::i;:::-;29736:42;28935:849;-1:-1:-1;;;;;;;;;;;;28935:849:1:o;29789:248::-;29963:25;;;30019:2;30004:18;;29997:34;29951:2;29936:18;;29918:119::o;30042:242::-;30112:2;30106:9;30142:17;;;30189:18;30174:34;;30210:22;;;30171:62;30168:2;;;30236:9;30168:2;30263;30256:22;30086:198;;-1:-1:-1;30086:198:1:o;30289:183::-;;30388:18;30380:6;30377:30;30374:2;;;30410:9;30374:2;-1:-1:-1;30461:4:1;30442:17;;;30438:28;;30364:108::o;30477:181::-;;30560:18;30552:6;30549:30;30546:2;;;30582:9;30546:2;-1:-1:-1;30641:2:1;30618:17;-1:-1:-1;;30614:31:1;30647:4;30610:42;;30536:122::o;30663:128::-;;30730:17;;;30780:4;30764:21;;;30720:71::o;30796:258::-;30868:1;30878:113;30892:6;30889:1;30886:13;30878:113;;;30968:11;;;30962:18;30949:11;;;30942:39;30914:2;30907:10;30878:113;;;31009:6;31006:1;31003:13;31000:2;;;-1:-1:-1;;31044:1:1;31026:16;;31019:27;30849:205::o;31059:120::-;31147:5;31140:13;31133:21;31126:5;31123:32;31113:2;;31169:1;31166;31159:12

Swarm Source

ipfs://31a5041528f6ca588e61832ab4f77d6adcffcf2bf8772140a4fccea193c29f20

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.