ETH Price: $2,313.89 (+1.56%)

Contract

0x8f9036732b9aa9b82D8F35e54B71faeb2f573E2F
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute Proposal157318482022-10-12 11:51:231251 days ago1665575483IN
0x8f903673...b2f573E2F
0 ETH0.0020625720.21479366
Execute Proposal157318332022-10-12 11:48:231251 days ago1665575303IN
0x8f903673...b2f573E2F
0 ETH0.0022025321.00128961
Add Proposal157315252022-10-12 10:46:231251 days ago1665571583IN
0x8f903673...b2f573E2F
0 ETH0.0039783120.15347212
Add Proposal157314902022-10-12 10:39:231251 days ago1665571163IN
0x8f903673...b2f573E2F
0 ETH0.0034509817.48566889
Add Proposal157314312022-10-12 10:27:351252 days ago1665570455IN
0x8f903673...b2f573E2F
0 ETH0.0042074521.31641845
Add Proposal157312912022-10-12 9:59:351252 days ago1665568775IN
0x8f903673...b2f573E2F
0 ETH0.0033536416.99245388
Add Proposal157312372022-10-12 9:48:471252 days ago1665568127IN
0x8f903673...b2f573E2F
0 ETH0.0032675316.55443714
Add Proposal157311862022-10-12 9:38:231252 days ago1665567503IN
0x8f903673...b2f573E2F
0 ETH0.0031199215.80022233
Add Proposal157186242022-10-10 15:34:111253 days ago1665416051IN
0x8f903673...b2f573E2F
0 ETH0.0055688428.2614952
Add Proposal157184592022-10-10 15:01:111253 days ago1665414071IN
0x8f903673...b2f573E2F
0 ETH0.006648833.742241
Add Proposal157163732022-10-10 8:00:471254 days ago1665388847IN
0x8f903673...b2f573E2F
0 ETH0.0060866530.83866211
Add Proposal157163222022-10-10 7:50:351254 days ago1665388235IN
0x8f903673...b2f573E2F
0 ETH0.0058931129.84930898
Add Proposal157160842022-10-10 7:02:471254 days ago1665385367IN
0x8f903673...b2f573E2F
0 ETH0.0059446930.12091809
Add Proposal157159762022-10-10 6:40:351254 days ago1665384035IN
0x8f903673...b2f573E2F
0 ETH0.0055902528.32643689
Add Proposal157158512022-10-10 6:15:351254 days ago1665382535IN
0x8f903673...b2f573E2F
0 ETH0.004914424.89932074
Execute Proposal156343622022-09-28 20:55:591265 days ago1664398559IN
0x8f903673...b2f573E2F
0 ETH0.0019040211.62857856
Add Proposal Wit...156329642022-09-28 16:14:471265 days ago1664381687IN
0x8f903673...b2f573E2F
0 ETH0.0043067922.08816758
Add Proposal Wit...156253862022-09-27 14:48:471266 days ago1664290127IN
0x8f903673...b2f573E2F
0 ETH0.0040882920.96410022
Add Proposal131008052021-08-26 11:51:391663 days ago1629978699IN
0x8f903673...b2f573E2F
0 ETH0.0100072751
Execute Proposal...127715262021-07-06 3:36:141715 days ago1625542574IN
0x8f903673...b2f573E2F
0 ETH0.0024713914
Add Proposal127709932021-07-06 1:31:561715 days ago1625535116IN
0x8f903673...b2f573E2F
0 ETH0.0033357517
Execute Proposal...127480272021-07-02 11:52:321718 days ago1625226752IN
0x8f903673...b2f573E2F
0 ETH0.0017653410
Add Proposal127474172021-07-02 9:39:091719 days ago1625218749IN
0x8f903673...b2f573E2F
0 ETH0.0025512613
Add Proposal127410532021-07-01 9:53:381720 days ago1625133218IN
0x8f903673...b2f573E2F
0 ETH0.0027468114
Execute Proposal...127407032021-07-01 8:35:521720 days ago1625128552IN
0x8f903673...b2f573E2F
0 ETH0.0030002617
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xd44F7597...C804a197C
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
DaoModule

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity >=0.8.0;

import "./interfaces/Realitio.sol";

contract Enum {
    enum Operation {
        Call, DelegateCall
    }
}

interface Executor {
    /// @dev Allows a Module to execute a transaction.
    /// @param to Destination address of module transaction.
    /// @param value Ether value of module transaction.
    /// @param data Data payload of module transaction.
    /// @param operation Operation type of module transaction.
    function execTransactionFromModule(address to, uint256 value, bytes calldata data, Enum.Operation operation)
        external
        returns (bool success);
}

contract DaoModule {

    bytes32 public constant INVALIDATED = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;

    bytes32 public constant DOMAIN_SEPARATOR_TYPEHASH = 0x47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218;
    // keccak256(
    //     "EIP712Domain(uint256 chainId,address verifyingContract)"
    // );

    bytes32 public constant TRANSACTION_TYPEHASH = 0x72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad;
    // keccak256(
    //     "Transaction(address to,uint256 value,bytes data,uint8 operation,uint256 nonce)"
    // );

    event ProposalQuestionCreated(
        bytes32 indexed questionId,
        string indexed proposalId
    );

    Executor public immutable executor;
    Realitio public immutable oracle;
    uint256 public template;
    uint32 public questionTimeout;
    uint32 public questionCooldown;
    uint32 public answerExpiration;
    address public questionArbitrator;
    uint256 public minimumBond;
    // Mapping of question hash to question id. Special case: INVALIDATED for question hashes that have been invalidated
    mapping(bytes32 => bytes32) public questionIds;
    // Mapping of questionHash to transactionHash to execution state
    mapping(bytes32 => mapping(bytes32 => bool)) public executedProposalTransactions;

    /// @param _executor Address of the executor (e.g. a Safe)
    /// @param _oracle Address of the oracle (e.g. Realitio)
    /// @param timeout Timeout in seconds that should be required for the oracle
    /// @param cooldown Cooldown in seconds that should be required after a oracle provided answer
    /// @param expiration Duration that a positive answer of the oracle is valid in seconds (or 0 if valid forever)
    /// @param bond Minimum bond that is required for an answer to be accepted
    /// @param templateId ID of the template that should be used for proposal questions (see https://github.com/realitio/realitio-dapp#structuring-and-fetching-information)
    /// @notice There need to be at least 60 seconds between end of cooldown and expiration
    constructor(Executor _executor, Realitio _oracle, uint32 timeout, uint32 cooldown, uint32 expiration, uint256 bond, uint256 templateId) {
        require(timeout > 0, "Timeout has to be greater 0");
        require(expiration == 0 || expiration - cooldown >= 60 , "There need to be at least 60s between end of cooldown and expiration");
        executor = _executor;
        oracle = _oracle;
        answerExpiration = expiration;
        questionTimeout = timeout;
        questionCooldown = cooldown;
        questionArbitrator = address(_executor);
        minimumBond = bond;
        template = templateId;
    }

    modifier executorOnly() {
        require(msg.sender == address(executor), "Not authorized");
        _;
    }

    /// @notice This can only be called by the executor
    function setQuestionTimeout(uint32 timeout)
        public
        executorOnly()
    {
        require(timeout > 0, "Timeout has to be greater 0");
        questionTimeout = timeout;
    }

    /// @dev Sets the cooldown before an answer is usable.
    /// @param cooldown Cooldown in seconds that should be required after a oracle provided answer
    /// @notice This can only be called by the executor
    /// @notice There need to be at least 60 seconds between end of cooldown and expiration
    function setQuestionCooldown(uint32 cooldown)
        public
        executorOnly()
    {
        uint32 expiration = answerExpiration;
        require(expiration == 0 || expiration - cooldown >= 60 , "There need to be at least 60s between end of cooldown and expiration");
        questionCooldown = cooldown;
    }

    /// @dev Sets the duration for which a positive answer is valid.
    /// @param expiration Duration that a positive answer of the oracle is valid in seconds (or 0 if valid forever)
    /// @notice A proposal with an expired answer is the same as a proposal that has been marked invalid
    /// @notice There need to be at least 60 seconds between end of cooldown and expiration
    /// @notice This can only be called by the executor
    function setAnswerExpiration(uint32 expiration)
        public
        executorOnly()
    {
        require(expiration == 0 || expiration - questionCooldown >= 60 , "There need to be at least 60s between end of cooldown and expiration");
        answerExpiration = expiration;
    }

    /// @dev Sets the question arbitrator that will be used for future questions.
    /// @param arbitrator Address of the arbitrator
    /// @notice This can only be called by the executor
    function setArbitrator(address arbitrator)
        public
        executorOnly()
    {
        questionArbitrator = arbitrator;
    }

    /// @dev Sets the minimum bond that is required for an answer to be accepted.
    /// @param bond Minimum bond that is required for an answer to be accepted
    /// @notice This can only be called by the executor
    function setMinimumBond(uint256 bond)
        public
        executorOnly()
    {
        minimumBond = bond;
    }

    /// @dev Sets the template that should be used for future questions.
    /// @param templateId ID of the template that should be used for proposal questions
    /// @notice Check https://github.com/realitio/realitio-dapp#structuring-and-fetching-information for more information
    /// @notice This can only be called by the executor
    function setTemplate(uint256 templateId)
        public
        executorOnly()
    {
        template = templateId;
    }

    /// @dev Function to add a proposal that should be considered for execution
    /// @param proposalId Id that should identify the proposal uniquely
    /// @param txHashes EIP-712 hashes of the transactions that should be executed
    /// @notice The nonce used for the question by this function is always 0
    function addProposal(string memory proposalId, bytes32[] memory txHashes) public {
        addProposalWithNonce(proposalId, txHashes, 0);
    }

    /// @dev Function to add a proposal that should be considered for execution
    /// @param proposalId Id that should identify the proposal uniquely
    /// @param txHashes EIP-712 hashes of the transactions that should be executed
    /// @param nonce Nonce that should be used when asking the question on the oracle
    function addProposalWithNonce(string memory proposalId, bytes32[] memory txHashes, uint256 nonce) public {
        // We load some storage variables into memory to save gas
        uint256 templateId = template;
        uint32 timeout = questionTimeout;
        address arbitrator = questionArbitrator;
        // We generate the question string used for the oracle
        string memory question = buildQuestion(proposalId, txHashes);
        bytes32 questionHash = keccak256(bytes(question));
        if (nonce > 0) {
            // Previous nonce must have been invalidated by the oracle.
            // However, if the proposal was internally invalidated, it should not be possible to ask it again.
            bytes32 currentQuestionId = questionIds[questionHash];
            require(currentQuestionId != INVALIDATED, "This proposal has been marked as invalid");
            require(oracle.resultFor(currentQuestionId) == INVALIDATED, "Previous proposal was not invalidated");
        } else {
            require(questionIds[questionHash] == bytes32(0), "Proposal has already been submitted");
        }
        bytes32 expectedQuestionId = getQuestionId(
            templateId, question, arbitrator, timeout, 0, nonce
        );
        // Set the question hash for this quesion id
        questionIds[questionHash] = expectedQuestionId;
        // Ask the question with a starting time of 0, so that it can be immediately answered
        bytes32 questionId = oracle.askQuestion(templateId, question, arbitrator, timeout, 0, nonce);
        require(expectedQuestionId == questionId, "Unexpected question id");
        emit ProposalQuestionCreated(questionId, proposalId);
    }

    /// @dev Marks a proposal as invalid, preventing execution of the connected transactions
    /// @param proposalId Id that should identify the proposal uniquely
    /// @param txHashes EIP-712 hashes of the transactions that should be executed
    /// @notice This can only be called by the executor
    function markProposalAsInvalid(string memory proposalId, bytes32[] memory txHashes)
        public
        // Executor only is checked in markProposalAsInvalidByHash(bytes32)
    {
        string memory question = buildQuestion(proposalId, txHashes);
        bytes32 questionHash = keccak256(bytes(question));
        markProposalAsInvalidByHash(questionHash);
    }

    /// @dev Marks a question hash as invalid, preventing execution of the connected transactions
    /// @param questionHash Question hash calculated based on the proposal id and txHashes
    /// @notice This can only be called by the executor
    function markProposalAsInvalidByHash(bytes32 questionHash)
        public
        executorOnly()
    {
        questionIds[questionHash] = INVALIDATED;
    }

    /// @dev Marks a proposal with an expired answer as invalid, preventing execution of the connected transactions
    /// @param questionHash Question hash calculated based on the proposal id and txHashes
    function markProposalWithExpiredAnswerAsInvalid(bytes32 questionHash)
        public
    {
        uint32 expirationDuration = answerExpiration;
        require(expirationDuration > 0, "Answers are valid forever");
        bytes32 questionId = questionIds[questionHash];
        require(questionId != INVALIDATED, "Proposal is already invalidated");
        require(questionId != bytes32(0), "No question id set for provided proposal");
        require(oracle.resultFor(questionId) == bytes32(uint256(1)), "Only positive answers can expire");
        uint32 finalizeTs = oracle.getFinalizeTS(questionId);
        require(finalizeTs + uint256(expirationDuration) < block.timestamp, "Answer has not expired yet");
        questionIds[questionHash] = INVALIDATED;
    }

    /// @dev Executes the transactions of a proposal via the executor if accepted
    /// @param proposalId Id that should identify the proposal uniquely
    /// @param txHashes EIP-712 hashes of the transactions that should be executed
    /// @param to Target of the transaction that should be executed
    /// @param value Wei value of the transaction that should be executed
    /// @param data Data of the transaction that should be executed
    /// @param operation Operation (Call or Delegatecall) of the transaction that should be executed
    /// @notice The txIndex used by this function is always 0
    function executeProposal(string memory proposalId, bytes32[] memory txHashes, address to, uint256 value, bytes memory data, Enum.Operation operation) public {
        executeProposalWithIndex(proposalId, txHashes, to, value, data, operation, 0);
    }

    /// @dev Executes the transactions of a proposal via the executor if accepted
    /// @param proposalId Id that should identify the proposal uniquely
    /// @param txHashes EIP-712 hashes of the transactions that should be executed
    /// @param to Target of the transaction that should be executed
    /// @param value Wei value of the transaction that should be executed
    /// @param data Data of the transaction that should be executed
    /// @param operation Operation (Call or Delegatecall) of the transaction that should be executed
    /// @param txIndex Index of the transaction hash in txHashes. This is used as the nonce for the transaction, to make the tx hash unique
    function executeProposalWithIndex(string memory proposalId, bytes32[] memory txHashes, address to, uint256 value, bytes memory data, Enum.Operation operation, uint256 txIndex) public {
        // We use the hash of the question to check the execution state, as the other parameters might change, but the question not
        bytes32 questionHash = keccak256(bytes(buildQuestion(proposalId, txHashes)));
        // Lookup question id for this proposal
        bytes32 questionId = questionIds[questionHash];
        // Question hash needs to set to be eligible for execution
        require(questionId != bytes32(0), "No question id set for provided proposal");
        require(questionId != INVALIDATED, "Proposal has been invalidated");

        bytes32 txHash = getTransactionHash(to, value, data, operation, txIndex);
        require(txHashes[txIndex] == txHash, "Unexpected transaction hash");

        // Check that the result of the question is 1 (true)
        require(oracle.resultFor(questionId) == bytes32(uint256(1)), "Transaction was not approved");
        uint256 minBond = minimumBond;
        require(minBond == 0 || minBond <= oracle.getBond(questionId), "Bond on question not high enough");
        uint32 finalizeTs = oracle.getFinalizeTS(questionId);
        // The answer is valid in the time after the cooldown and before the expiration time (if set).
        require(finalizeTs + uint256(questionCooldown) < block.timestamp, "Wait for additional cooldown");
        uint32 expiration = answerExpiration;
        require(expiration == 0 || finalizeTs + uint256(expiration) >= block.timestamp, "Answer has expired");
        // Check this is either the first transaction in the list or that the previous question was already approved
        require(txIndex == 0 || executedProposalTransactions[questionHash][txHashes[txIndex - 1]], "Previous transaction not executed yet");
        // Check that this question was not executed yet
        require(!executedProposalTransactions[questionHash][txHash], "Cannot execute transaction again");
        // Mark transaction as executed
        executedProposalTransactions[questionHash][txHash] = true;
        // Execute the transaction via the executor.
        require(executor.execTransactionFromModule(to, value, data, operation), "Module transaction failed");
    }

    /// @dev Build the question by combining the proposalId and the hex string of the hash of the txHashes
    /// @param proposalId Id of the proposal that proposes to execute the transactions represented by the txHashes
    /// @param txHashes EIP-712 Hashes of the transactions that should be executed
    function buildQuestion(string memory proposalId, bytes32[] memory txHashes) public pure returns(string memory) {
        string memory txsHash = bytes32ToAsciiString(keccak256(abi.encodePacked(txHashes)));
        return string(abi.encodePacked(proposalId, bytes3(0xe2909f), txsHash));
    }

    /// @dev Generate the question id.
    /// @notice It is required that this is the same as for the oracle implementation used.
    function getQuestionId(uint256 templateId, string memory question, address arbitrator, uint32 timeout, uint32 openingTs, uint256 nonce) public view returns(bytes32) {
        bytes32 contentHash = keccak256(abi.encodePacked(templateId, openingTs, question));
        return keccak256(abi.encodePacked(contentHash, arbitrator, timeout, this, nonce));
    }

    /// @dev Returns the chain id used by this contract.
    function getChainId() public view returns (uint256) {
        uint256 id;
        // solium-disable-next-line security/no-inline-assembly
        assembly {
            id := chainid()
        }
        return id;
    }

    /// @dev Generates the data for the module transaction hash (required for signing)
    function generateTransactionHashData(
        address to,
        uint256 value,
        bytes memory data,
        Enum.Operation operation,
        uint256 nonce
    ) public view returns(bytes memory) {
        uint256 chainId = getChainId();
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_SEPARATOR_TYPEHASH, chainId, this));
        bytes32 transactionHash = keccak256(
            abi.encode(TRANSACTION_TYPEHASH, to, value, keccak256(data), operation, nonce)
        );
        return abi.encodePacked(bytes1(0x19), bytes1(0x01), domainSeparator, transactionHash);
    }

    function getTransactionHash(address to, uint256 value, bytes memory data, Enum.Operation operation, uint256 nonce) public view returns(bytes32) {
        return keccak256(generateTransactionHashData(to, value, data, operation, nonce));
    }

    function bytes32ToAsciiString(bytes32 _bytes) internal pure returns (string memory) {
        bytes memory s = new bytes(64);
        for (uint256 i = 0; i < 32; i++) {
            uint8 b = uint8(bytes1(_bytes << i * 8));
            uint8 hi = uint8(b) / 16;
            uint8 lo = uint8(b) % 16;
            s[2 * i] = char(hi);
            s[2 * i + 1] = char(lo);
        }
        return string(s);
    }

    function char(uint8 b) internal pure returns (bytes1 c) {
        if (b < 10) return bytes1(b + 0x30);
        else return bytes1(b + 0x57);
    }
}

// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity >=0.8.0;

interface Realitio {

    // mapping(bytes32 => Question) public questions;

    /// @notice Ask a new question without a bounty and return the ID
    /// @dev Template data is only stored in the event logs, but its block number is kept in contract storage.
    /// @dev Calling without the token param will only work if there is no arbitrator-set question fee.
    /// @dev This has the same function signature as askQuestion() in the non-ERC20 version, which is optionally payable.
    /// @param template_id The ID number of the template the question will use
    /// @param question A string containing the parameters that will be passed into the template to make the question
    /// @param arbitrator The arbitration contract that will have the final word on the answer if there is a dispute
    /// @param timeout How long the contract should wait after the answer is changed before finalizing on that answer
    /// @param opening_ts If set, the earliest time it should be possible to answer the question.
    /// @param nonce A user-specified nonce used in the question ID. Change it to repeat a question.
    /// @return The ID of the newly-created question, created deterministically.
    function askQuestion(
        uint256 template_id, string calldata question, address arbitrator, uint32 timeout, uint32 opening_ts, uint256 nonce
    ) external returns (bytes32);

    /// @notice Report whether the answer to the specified question is finalized
    /// @param question_id The ID of the question
    /// @return Return true if finalized
    function isFinalized(bytes32 question_id) view external returns (bool);

    /// @notice Return the final answer to the specified question, or revert if there isn't one
    /// @param question_id The ID of the question
    /// @return The answer formatted as a bytes32
    function resultFor(bytes32 question_id) external view returns (bytes32);

    /// @notice Returns the timestamp at which the question will be/was finalized
    /// @param question_id The ID of the question 
    function getFinalizeTS(bytes32 question_id) external view returns (uint32);

    /// @notice Returns whether the question is pending arbitration
    /// @param question_id The ID of the question 
    function isPendingArbitration(bytes32 question_id) external view returns (bool);

    /// @notice Create a reusable template, which should be a JSON document.
    /// Placeholders should use gettext() syntax, eg %s.
    /// @dev Template data is only stored in the event logs, but its block number is kept in contract storage.
    /// @param content The template content
    /// @return The ID of the newly-created template, which is created sequentially.
    function createTemplate(string calldata content) external returns (uint256);

    /// @notice Returns the highest bond posted so far for a question
    /// @param question_id The ID of the question 
    function getBond(bytes32 question_id) external view returns (uint256);

    /// @notice Returns the questions's content hash, identifying the question content
    /// @param question_id The ID of the question 
    function getContentHash(bytes32 question_id) external view returns (bytes32);
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"contract Executor","name":"_executor","type":"address"},{"internalType":"contract Realitio","name":"_oracle","type":"address"},{"internalType":"uint32","name":"timeout","type":"uint32"},{"internalType":"uint32","name":"cooldown","type":"uint32"},{"internalType":"uint32","name":"expiration","type":"uint32"},{"internalType":"uint256","name":"bond","type":"uint256"},{"internalType":"uint256","name":"templateId","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"questionId","type":"bytes32"},{"indexed":true,"internalType":"string","name":"proposalId","type":"string"}],"name":"ProposalQuestionCreated","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVALIDATED","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSACTION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"proposalId","type":"string"},{"internalType":"bytes32[]","name":"txHashes","type":"bytes32[]"}],"name":"addProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"proposalId","type":"string"},{"internalType":"bytes32[]","name":"txHashes","type":"bytes32[]"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"addProposalWithNonce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"answerExpiration","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"proposalId","type":"string"},{"internalType":"bytes32[]","name":"txHashes","type":"bytes32[]"}],"name":"buildQuestion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"proposalId","type":"string"},{"internalType":"bytes32[]","name":"txHashes","type":"bytes32[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"}],"name":"executeProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"proposalId","type":"string"},{"internalType":"bytes32[]","name":"txHashes","type":"bytes32[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"},{"internalType":"uint256","name":"txIndex","type":"uint256"}],"name":"executeProposalWithIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"executedProposalTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"executor","outputs":[{"internalType":"contract Executor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"generateTransactionHashData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"templateId","type":"uint256"},{"internalType":"string","name":"question","type":"string"},{"internalType":"address","name":"arbitrator","type":"address"},{"internalType":"uint32","name":"timeout","type":"uint32"},{"internalType":"uint32","name":"openingTs","type":"uint32"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"getQuestionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enum Enum.Operation","name":"operation","type":"uint8"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"getTransactionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"proposalId","type":"string"},{"internalType":"bytes32[]","name":"txHashes","type":"bytes32[]"}],"name":"markProposalAsInvalid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"questionHash","type":"bytes32"}],"name":"markProposalAsInvalidByHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"questionHash","type":"bytes32"}],"name":"markProposalWithExpiredAnswerAsInvalid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minimumBond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"contract Realitio","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"questionArbitrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"questionCooldown","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"questionIds","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"questionTimeout","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"expiration","type":"uint32"}],"name":"setAnswerExpiration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"arbitrator","type":"address"}],"name":"setArbitrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bond","type":"uint256"}],"name":"setMinimumBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"cooldown","type":"uint32"}],"name":"setQuestionCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"timeout","type":"uint32"}],"name":"setQuestionTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"templateId","type":"uint256"}],"name":"setTemplate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"template","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

0x60c06040523480156200001157600080fd5b50604051620043da380380620043da833981810160405281019062000037919062000278565b60008563ffffffff161162000083576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200007a9062000417565b60405180910390fd5b60008363ffffffff161480620000ad5750603c8484620000a491906200044a565b63ffffffff1610155b620000ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000e690620003f5565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508573ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160086101000a81548163ffffffff021916908363ffffffff16021790555084600160006101000a81548163ffffffff021916908363ffffffff16021790555083600160046101000a81548163ffffffff021916908363ffffffff160217905550866001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600281905550806000819055505050505050505062000592565b6000815190506200022d816200052a565b92915050565b600081519050620002448162000544565b92915050565b6000815190506200025b816200055e565b92915050565b600081519050620002728162000578565b92915050565b600080600080600080600060e0888a0312156200029457600080fd5b6000620002a48a828b016200021c565b9750506020620002b78a828b0162000233565b9650506040620002ca8a828b0162000261565b9550506060620002dd8a828b0162000261565b9450506080620002f08a828b0162000261565b93505060a0620003038a828b016200024a565b92505060c0620003168a828b016200024a565b91505092959891949750929550565b60006200033460448362000439565b91507f5468657265206e65656420746f206265206174206c656173742036307320626560008301527f747765656e20656e64206f6620636f6f6c646f776e20616e642065787069726160208301527f74696f6e000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000620003c2601b8362000439565b91507f54696d656f75742068617320746f2062652067726561746572203000000000006000830152602082019050919050565b60006020820190508181036000830152620004108162000325565b9050919050565b600060208201905081810360008301526200043281620003b3565b9050919050565b600082825260208201905092915050565b60006200045782620004eb565b91506200046483620004eb565b9250828210156200047a5762000479620004fb565b5b828203905092915050565b60006200049282620004c1565b9050919050565b6000620004a68262000485565b9050919050565b6000620004ba8262000485565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b620005358162000499565b81146200054157600080fd5b50565b6200054f81620004ad565b81146200055b57600080fd5b50565b6200056981620004e1565b81146200057557600080fd5b50565b6200058381620004eb565b81146200058f57600080fd5b50565b60805160601c60a05160601c613db362000627600039600081816106e90152818161085e01528181610b1801528181610c1201528181610d00015281816116f701528181611bf90152611ce401526000818161100f015281816111610152818161133f0152818161155e015281816115f6015281816117be015281816118ee015281816119e60152611a0a0152613db36000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636775ef691161010f578063b0eefabe116100a2578063d07acb5b11610071578063d07acb5b14610556578063dc89a19814610574578063e319044b146105a4578063ff0394eb146105c0576101e5565b8063b0eefabe146104e2578063b5a73e75146104fe578063c34c08e51461051c578063cd3ef9511461053a576101e5565b80638dcd2661116100de5780638dcd26611461045c5780639790d28d146104785780639a674ed1146104a8578063aa7517e1146104c4576101e5565b80636775ef69146103e65780636f2ddd93146104025780637dc0d1d01461042057806388633b7b1461043e576101e5565b80632b50004111610187578063425a2a3c11610156578063425a2a3c1461034e57806345c7980e1461037e5780634e1b83741461039a5780635fc1188d146103ca576101e5565b80632b500041146102b45780633408e470146102e457806339eafa6f146103025780633ea3c14614610332576101e5565b80631ba18b9b116101c35780631ba18b9b146102405780631db61b541461025e57806321e314cb1461027c5780632351a87714610298576101e5565b80631138a87e146101ea57806314604b8c1461020657806314f5a39514610222575b600080fd5b61020460048036038101906101ff9190612625565b6105de565b005b610220600480360381019061021b919061253f565b6109a5565b005b61022a61110c565b60405161023791906136ad565b60405180910390f35b610248611122565b60405161025591906136ad565b60405180910390f35b610266611138565b604051610273919061325d565b60405180910390f35b61029660048036038101906102919190612797565b61115f565b005b6102b260048036038101906102ad919061246e565b61128f565b005b6102ce60048036038101906102c991906122bc565b6112a7565b6040516102db919061325d565b60405180910390f35b6102ec6112c8565b6040516102f9919061362a565b60405180910390f35b61031c60048036038101906103179190612402565b6112d5565b6040516103299190613368565b60405180910390f35b61034c60048036038101906103479190612374565b61133d565b005b610368600480360381019061036391906122bc565b611409565b6040516103759190613310565b60405180910390f35b61039860048036038101906103939190612402565b611504565b005b6103b460048036038101906103af91906123c6565b61152d565b6040516103c19190613242565b60405180910390f35b6103e460048036038101906103df91906126a4565b61155c565b005b61040060048036038101906103fb9190612797565b6115f4565b005b61040a6116ef565b604051610417919061362a565b60405180910390f35b6104286116f5565b604051610435919061334d565b60405180910390f35b610446611719565b604051610453919061325d565b60405180910390f35b61047660048036038101906104719190612402565b611740565b005b610492600480360381019061048d91906126f6565b611750565b60405161049f919061325d565b60405180910390f35b6104c260048036038101906104bd9190612797565b6117bc565b005b6104cc6118e6565b6040516104d9919061362a565b60405180910390f35b6104fc60048036038101906104f79190612293565b6118ec565b005b6105066119be565b60405161051391906131db565b60405180910390f35b6105246119e4565b6040516105319190613332565b60405180910390f35b610554600480360381019061054f91906126a4565b611a08565b005b61055e611aa0565b60405161056b91906136ad565b60405180910390f35b61058e60048036038101906105899190612374565b611ab6565b60405161059b919061325d565b60405180910390f35b6105be60048036038101906105b99190612374565b611ace565b005b6105c8611e27565b6040516105d5919061325d565b60405180910390f35b6000805490506000600160009054906101000a900463ffffffff16905060006001600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061062e87876112d5565b905060008180519060200120905060008611156107d6576000600360008381526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b8114156106c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ba906134ea565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d09cc57e836040518263ffffffff1660e01b8152600401610740919061325d565b60206040518083038186803b15801561075857600080fd5b505afa15801561076c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610790919061239d565b146107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c7906134ca565b60405180910390fd5b5061082f565b6000801b60036000838152602001908152602001600020541461082e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108259061340a565b60405180910390fd5b5b60006108408684868860008c611750565b905080600360008481526020019081526020016000208190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663762c38fd8886888a60008e6040518763ffffffff1660e01b81526004016108c096959493929190613645565b602060405180830381600087803b1580156108da57600080fd5b505af11580156108ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610912919061239d565b9050808214610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d9061342a565b60405180910390fd5b896040516109649190613156565b6040518091039020817fa1f5047031a658827550a2c4be07648493f3ac88a09c857b3961d1336429a31f60405160405180910390a350505050505050505050565b60006109b188886112d5565b8051906020012090506000600360008381526020019081526020016000205490506000801b811415610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f9061356a565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b811415610a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a75906135aa565b60405180910390fd5b6000610a8d88888888886112a7565b905080898581518110610ac9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015114610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b089061360a565b60405180910390fd5b600160001b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d09cc57e846040518263ffffffff1660e01b8152600401610b6f919061325d565b60206040518083038186803b158015610b8757600080fd5b505afa158015610b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbf919061239d565b14610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf6906135ca565b60405180910390fd5b600060025490506000811480610cbd57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166326d6c97b846040518263ffffffff1660e01b8152600401610c69919061325d565b60206040518083038186803b158015610c8157600080fd5b505afa158015610c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb991906126cd565b8111155b610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf3906133aa565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663acae8f4e856040518263ffffffff1660e01b8152600401610d57919061325d565b60206040518083038186803b158015610d6f57600080fd5b505afa158015610d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da791906127c0565b905042600160049054906101000a900463ffffffff1663ffffffff168263ffffffff16610dd491906137fb565b10610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b9061352a565b60405180910390fd5b6000600160089054906101000a900463ffffffff16905060008163ffffffff161480610e575750428163ffffffff168363ffffffff16610e5491906137fb565b10155b610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d9061344a565b60405180910390fd5b6000871480610f1f57506004600087815260200190815260200160002060008d60018a610ec39190613913565b81518110610efa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060009054906101000a900460ff165b610f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f559061338a565b60405180910390fd5b60046000878152602001908152602001600020600085815260200190815260200160002060009054906101000a900460ff1615610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc79061350a565b60405180910390fd5b600160046000888152602001908152602001600020600086815260200190815260200160002060006101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663468721a78c8c8c8c6040518563ffffffff1660e01b815260040161106c94939291906131f6565b602060405180830381600087803b15801561108657600080fd5b505af115801561109a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110be919061234b565b6110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f4906135ea565b60405180910390fd5b50505050505050505050505050565b600160049054906101000a900463ffffffff1681565b600160009054906101000a900463ffffffff1681565b7f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b81565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e49061358a565b60405180910390fd5b6000600160089054906101000a900463ffffffff16905060008163ffffffff16148061122b5750603c82826112229190613947565b63ffffffff1610155b61126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112619061346a565b60405180910390fd5b81600160046101000a81548163ffffffff021916908363ffffffff1602179055505050565b61129f86868686868660006109a5565b505050505050565b60006112b68686868686611409565b80519060200120905095945050505050565b6000804690508091505090565b60606000611308836040516020016112ed9190613092565b60405160208183030381529060405280519060200120611e4e565b90508362e2909f60e81b826040516020016113259392919061316d565b60405160208183030381529060405291505092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c29061358a565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b600360008381526020019081526020016000208190555050565b606060006114156112c8565b905060007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b8230604051602001611451939291906132d9565b60405160208183030381529060405280519060200120905060007f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b8989898051906020012089896040516020016114b096959493929190613278565b604051602081830303815290604052805190602001209050601960f81b600160f81b83836040516020016114e794939291906130a9565b604051602081830303815290604052935050505095945050505050565b600061151083836112d5565b90506000818051906020012090506115278161133d565b50505050565b60046020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e19061358a565b60405180910390fd5b8060008190555050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611682576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116799061358a565b60405180910390fd5b60008163ffffffff16116116cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c29061348a565b60405180910390fd5b80600160006101000a81548163ffffffff021916908363ffffffff16021790555050565b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b81565b61174c828260006105de565b5050565b600080878488604051602001611768939291906131a2565b60405160208183030381529060405280519060200120905080868630866040516020016117999594939291906130f7565b604051602081830303815290604052805190602001209150509695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118419061358a565b60405180910390fd5b60008163ffffffff1614806118835750603c600160049054906101000a900463ffffffff168261187a9190613947565b63ffffffff1610155b6118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b99061346a565b60405180910390fd5b80600160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60025481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461197a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119719061358a565b60405180910390fd5b806001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8d9061358a565b60405180910390fd5b8060028190555050565b600160089054906101000a900463ffffffff1681565b60036020528060005260406000206000915090505481565b6000600160089054906101000a900463ffffffff16905060008163ffffffff1611611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b25906134aa565b60405180910390fd5b6000600360008481526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b811415611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba3906133ca565b60405180910390fd5b6000801b811415611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be99061356a565b60405180910390fd5b600160001b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d09cc57e836040518263ffffffff1660e01b8152600401611c50919061325d565b60206040518083038186803b158015611c6857600080fd5b505afa158015611c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca0919061239d565b14611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd79061354a565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663acae8f4e836040518263ffffffff1660e01b8152600401611d3b919061325d565b60206040518083038186803b158015611d5357600080fd5b505afa158015611d67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8b91906127c0565b9050428363ffffffff168263ffffffff16611da691906137fb565b10611de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddd906133ea565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b600360008681526020019081526020016000208190555050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b60606000604067ffffffffffffffff811115611e93577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611ec55781602001600182028036833780820191505090505b50905060005b6020811015612029576000600882611ee391906138b9565b85901b60f81c90506000601082611efa9190613888565b90506000601083611f0b9190613bce565b9050611f1682612033565b85856002611f2491906138b9565b81518110611f5b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f9381612033565b856001866002611fa391906138b9565b611fad91906137fb565b81518110611fe4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350505050808061202190613b27565b915050611ecb565b5080915050919050565b6000600a8260ff1610156120585760308261204e9190613851565b60f81b905061206b565b6057826120659190613851565b60f81b90505b919050565b600061208361207e846136f9565b6136c8565b905080838252602082019050828560208602820111156120a257600080fd5b60005b858110156120d257816120b888826121ac565b8452602084019350602083019250506001810190506120a5565b5050509392505050565b60006120ef6120ea84613725565b6136c8565b90508281526020810184848401111561210757600080fd5b612112848285613ae5565b509392505050565b600061212d61212884613755565b6136c8565b90508281526020810184848401111561214557600080fd5b612150848285613ae5565b509392505050565b60008135905061216781613cfa565b92915050565b600082601f83011261217e57600080fd5b813561218e848260208601612070565b91505092915050565b6000815190506121a681613d11565b92915050565b6000813590506121bb81613d28565b92915050565b6000815190506121d081613d28565b92915050565b600082601f8301126121e757600080fd5b81356121f78482602086016120dc565b91505092915050565b60008135905061220f81613d3f565b92915050565b600082601f83011261222657600080fd5b813561223684826020860161211a565b91505092915050565b60008135905061224e81613d4f565b92915050565b60008151905061226381613d4f565b92915050565b60008135905061227881613d66565b92915050565b60008151905061228d81613d66565b92915050565b6000602082840312156122a557600080fd5b60006122b384828501612158565b91505092915050565b600080600080600060a086880312156122d457600080fd5b60006122e288828901612158565b95505060206122f38882890161223f565b945050604086013567ffffffffffffffff81111561231057600080fd5b61231c888289016121d6565b935050606061232d88828901612200565b925050608061233e8882890161223f565b9150509295509295909350565b60006020828403121561235d57600080fd5b600061236b84828501612197565b91505092915050565b60006020828403121561238657600080fd5b6000612394848285016121ac565b91505092915050565b6000602082840312156123af57600080fd5b60006123bd848285016121c1565b91505092915050565b600080604083850312156123d957600080fd5b60006123e7858286016121ac565b92505060206123f8858286016121ac565b9150509250929050565b6000806040838503121561241557600080fd5b600083013567ffffffffffffffff81111561242f57600080fd5b61243b85828601612215565b925050602083013567ffffffffffffffff81111561245857600080fd5b6124648582860161216d565b9150509250929050565b60008060008060008060c0878903121561248757600080fd5b600087013567ffffffffffffffff8111156124a157600080fd5b6124ad89828a01612215565b965050602087013567ffffffffffffffff8111156124ca57600080fd5b6124d689828a0161216d565b95505060406124e789828a01612158565b94505060606124f889828a0161223f565b935050608087013567ffffffffffffffff81111561251557600080fd5b61252189828a016121d6565b92505060a061253289828a01612200565b9150509295509295509295565b600080600080600080600060e0888a03121561255a57600080fd5b600088013567ffffffffffffffff81111561257457600080fd5b6125808a828b01612215565b975050602088013567ffffffffffffffff81111561259d57600080fd5b6125a98a828b0161216d565b96505060406125ba8a828b01612158565b95505060606125cb8a828b0161223f565b945050608088013567ffffffffffffffff8111156125e857600080fd5b6125f48a828b016121d6565b93505060a06126058a828b01612200565b92505060c06126168a828b0161223f565b91505092959891949750929550565b60008060006060848603121561263a57600080fd5b600084013567ffffffffffffffff81111561265457600080fd5b61266086828701612215565b935050602084013567ffffffffffffffff81111561267d57600080fd5b6126898682870161216d565b925050604061269a8682870161223f565b9150509250925092565b6000602082840312156126b657600080fd5b60006126c48482850161223f565b91505092915050565b6000602082840312156126df57600080fd5b60006126ed84828501612254565b91505092915050565b60008060008060008060c0878903121561270f57600080fd5b600061271d89828a0161223f565b965050602087013567ffffffffffffffff81111561273a57600080fd5b61274689828a01612215565b955050604061275789828a01612158565b945050606061276889828a01612269565b935050608061277989828a01612269565b92505060a061278a89828a0161223f565b9150509295509295509295565b6000602082840312156127a957600080fd5b60006127b784828501612269565b91505092915050565b6000602082840312156127d257600080fd5b60006127e08482850161227e565b91505092915050565b60006127f583836128ba565b60208301905092915050565b61280a8161397b565b82525050565b61282161281c8261397b565b613b70565b82525050565b600061283282613795565b61283c81856137c3565b935061284783613785565b8060005b8381101561287857815161285f88826127e9565b975061286a836137b6565b92505060018101905061284b565b5085935050505092915050565b61288e8161398d565b82525050565b6128a56128a082613999565b613b82565b82525050565b6128b4816139f1565b82525050565b6128c3816139f1565b82525050565b6128da6128d5826139f1565b613b96565b82525050565b6128f16128ec826139c5565b613b8c565b82525050565b6000612902826137a0565b61290c81856137ce565b935061291c818560208601613af4565b61292581613cbb565b840191505092915050565b61293981613a55565b82525050565b61295061294b82613a55565b613b70565b82525050565b61295f81613a79565b82525050565b61296e81613a9d565b82525050565b61297d81613ac1565b82525050565b61298c81613ad3565b82525050565b600061299d826137ab565b6129a781856137df565b93506129b7818560208601613af4565b6129c081613cbb565b840191505092915050565b60006129d6826137ab565b6129e081856137f0565b93506129f0818560208601613af4565b80840191505092915050565b6000612a096025836137df565b91507f50726576696f7573207472616e73616374696f6e206e6f74206578656375746560008301527f64207965740000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a6f6020836137df565b91507f426f6e64206f6e207175657374696f6e206e6f74206869676820656e6f7567686000830152602082019050919050565b6000612aaf601f836137df565b91507f50726f706f73616c20697320616c726561647920696e76616c696461746564006000830152602082019050919050565b6000612aef601a836137df565b91507f416e7377657220686173206e6f742065787069726564207965740000000000006000830152602082019050919050565b6000612b2f6023836137df565b91507f50726f706f73616c2068617320616c7265616479206265656e207375626d697460008301527f74656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b956016836137df565b91507f556e6578706563746564207175657374696f6e206964000000000000000000006000830152602082019050919050565b6000612bd56012836137df565b91507f416e7377657220686173206578706972656400000000000000000000000000006000830152602082019050919050565b6000612c156044836137df565b91507f5468657265206e65656420746f206265206174206c656173742036307320626560008301527f747765656e20656e64206f6620636f6f6c646f776e20616e642065787069726160208301527f74696f6e000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000612ca1601b836137df565b91507f54696d656f75742068617320746f2062652067726561746572203000000000006000830152602082019050919050565b6000612ce16019836137df565b91507f416e7377657273206172652076616c696420666f7265766572000000000000006000830152602082019050919050565b6000612d216025836137df565b91507f50726576696f75732070726f706f73616c20776173206e6f7420696e76616c6960008301527f64617465640000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d876028836137df565b91507f546869732070726f706f73616c20686173206265656e206d61726b656420617360008301527f20696e76616c69640000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ded6020836137df565b91507f43616e6e6f742065786563757465207472616e73616374696f6e20616761696e6000830152602082019050919050565b6000612e2d601c836137df565b91507f5761697420666f72206164646974696f6e616c20636f6f6c646f776e000000006000830152602082019050919050565b6000612e6d6020836137df565b91507f4f6e6c7920706f73697469766520616e73776572732063616e206578706972656000830152602082019050919050565b6000612ead6028836137df565b91507f4e6f207175657374696f6e2069642073657420666f722070726f76696465642060008301527f70726f706f73616c0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612f13600e836137df565b91507f4e6f7420617574686f72697a65640000000000000000000000000000000000006000830152602082019050919050565b6000612f53601d836137df565b91507f50726f706f73616c20686173206265656e20696e76616c6964617465640000006000830152602082019050919050565b6000612f93601c836137df565b91507f5472616e73616374696f6e20776173206e6f7420617070726f766564000000006000830152602082019050919050565b6000612fd36019836137df565b91507f4d6f64756c65207472616e73616374696f6e206661696c6564000000000000006000830152602082019050919050565b6000613013601b836137df565b91507f556e6578706563746564207472616e73616374696f6e206861736800000000006000830152602082019050919050565b61304f81613a2e565b82525050565b61306661306182613a2e565b613bb2565b82525050565b61307581613a38565b82525050565b61308c61308782613a38565b613bbc565b82525050565b600061309e8284612827565b915081905092915050565b60006130b58287612894565b6001820191506130c58286612894565b6001820191506130d582856128c9565b6020820191506130e582846128c9565b60208201915081905095945050505050565b600061310382886128c9565b6020820191506131138287612810565b601482019150613123828661307b565b600482019150613133828561293f565b6014820191506131438284613055565b6020820191508190509695505050505050565b600061316282846129cb565b915081905092915050565b600061317982866129cb565b915061318582856128e0565b60038201915061319582846129cb565b9150819050949350505050565b60006131ae8286613055565b6020820191506131be828561307b565b6004820191506131ce82846129cb565b9150819050949350505050565b60006020820190506131f06000830184612801565b92915050565b600060808201905061320b6000830187612801565b6132186020830186613046565b818103604083015261322a81856128f7565b90506132396060830184612974565b95945050505050565b60006020820190506132576000830184612885565b92915050565b600060208201905061327260008301846128ab565b92915050565b600060c08201905061328d60008301896128ab565b61329a6020830188612801565b6132a76040830187613046565b6132b460608301866128ab565b6132c16080830185612974565b6132ce60a0830184613046565b979650505050505050565b60006060820190506132ee60008301866128ab565b6132fb6020830185613046565b6133086040830184612930565b949350505050565b6000602082019050818103600083015261332a81846128f7565b905092915050565b60006020820190506133476000830184612956565b92915050565b60006020820190506133626000830184612965565b92915050565b600060208201905081810360008301526133828184612992565b905092915050565b600060208201905081810360008301526133a3816129fc565b9050919050565b600060208201905081810360008301526133c381612a62565b9050919050565b600060208201905081810360008301526133e381612aa2565b9050919050565b6000602082019050818103600083015261340381612ae2565b9050919050565b6000602082019050818103600083015261342381612b22565b9050919050565b6000602082019050818103600083015261344381612b88565b9050919050565b6000602082019050818103600083015261346381612bc8565b9050919050565b6000602082019050818103600083015261348381612c08565b9050919050565b600060208201905081810360008301526134a381612c94565b9050919050565b600060208201905081810360008301526134c381612cd4565b9050919050565b600060208201905081810360008301526134e381612d14565b9050919050565b6000602082019050818103600083015261350381612d7a565b9050919050565b6000602082019050818103600083015261352381612de0565b9050919050565b6000602082019050818103600083015261354381612e20565b9050919050565b6000602082019050818103600083015261356381612e60565b9050919050565b6000602082019050818103600083015261358381612ea0565b9050919050565b600060208201905081810360008301526135a381612f06565b9050919050565b600060208201905081810360008301526135c381612f46565b9050919050565b600060208201905081810360008301526135e381612f86565b9050919050565b6000602082019050818103600083015261360381612fc6565b9050919050565b6000602082019050818103600083015261362381613006565b9050919050565b600060208201905061363f6000830184613046565b92915050565b600060c08201905061365a6000830189613046565b818103602083015261366c8188612992565b905061367b6040830187612801565b613688606083018661306c565b6136956080830185612983565b6136a260a0830184613046565b979650505050505050565b60006020820190506136c2600083018461306c565b92915050565b6000604051905081810181811067ffffffffffffffff821117156136ef576136ee613c8c565b5b8060405250919050565b600067ffffffffffffffff82111561371457613713613c8c565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156137405761373f613c8c565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156137705761376f613c8c565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061380682613a2e565b915061381183613a2e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561384657613845613bff565b5b828201905092915050565b600061385c82613a48565b915061386783613a48565b92508260ff0382111561387d5761387c613bff565b5b828201905092915050565b600061389382613a48565b915061389e83613a48565b9250826138ae576138ad613c2e565b5b828204905092915050565b60006138c482613a2e565b91506138cf83613a2e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561390857613907613bff565b5b828202905092915050565b600061391e82613a2e565b915061392983613a2e565b92508282101561393c5761393b613bff565b5b828203905092915050565b600061395282613a38565b915061395d83613a38565b9250828210156139705761396f613bff565b5b828203905092915050565b600061398682613a0e565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b6000819050613a0982613ce6565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000613a6082613a67565b9050919050565b6000613a7282613a0e565b9050919050565b6000613a8482613a8b565b9050919050565b6000613a9682613a0e565b9050919050565b6000613aa882613aaf565b9050919050565b6000613aba82613a0e565b9050919050565b6000613acc826139fb565b9050919050565b6000613ade82613a38565b9050919050565b82818337600083830152505050565b60005b83811015613b12578082015181840152602081019050613af7565b83811115613b21576000848401525b50505050565b6000613b3282613a2e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b6557613b64613bff565b5b600182019050919050565b6000613b7b82613ba0565b9050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000613bab82613cd9565b9050919050565b6000819050919050565b6000613bc782613ccc565b9050919050565b6000613bd982613a48565b9150613be483613a48565b925082613bf457613bf3613c2e565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01b9050919050565b60008160601b9050919050565b60028110613cf757613cf6613c5d565b5b50565b613d038161397b565b8114613d0e57600080fd5b50565b613d1a8161398d565b8114613d2557600080fd5b50565b613d31816139f1565b8114613d3c57600080fd5b50565b60028110613d4c57600080fd5b50565b613d5881613a2e565b8114613d6357600080fd5b50565b613d6f81613a38565b8114613d7a57600080fd5b5056fea26469706673582212200f71255699ac7a86df1b6e32d1bbdf9c3c1aec62b29fb5beb6e2c9964f8c2c9c64736f6c634300080000330000000000000000000000007eae370e6a76407c3955a2f0bbca853c38e6454e000000000000000000000000325a2e0f3cca2ddbaebb4dfc38df8d19ca165b47000000000000000000000000000000000000000000000000000000000002a30000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80636775ef691161010f578063b0eefabe116100a2578063d07acb5b11610071578063d07acb5b14610556578063dc89a19814610574578063e319044b146105a4578063ff0394eb146105c0576101e5565b8063b0eefabe146104e2578063b5a73e75146104fe578063c34c08e51461051c578063cd3ef9511461053a576101e5565b80638dcd2661116100de5780638dcd26611461045c5780639790d28d146104785780639a674ed1146104a8578063aa7517e1146104c4576101e5565b80636775ef69146103e65780636f2ddd93146104025780637dc0d1d01461042057806388633b7b1461043e576101e5565b80632b50004111610187578063425a2a3c11610156578063425a2a3c1461034e57806345c7980e1461037e5780634e1b83741461039a5780635fc1188d146103ca576101e5565b80632b500041146102b45780633408e470146102e457806339eafa6f146103025780633ea3c14614610332576101e5565b80631ba18b9b116101c35780631ba18b9b146102405780631db61b541461025e57806321e314cb1461027c5780632351a87714610298576101e5565b80631138a87e146101ea57806314604b8c1461020657806314f5a39514610222575b600080fd5b61020460048036038101906101ff9190612625565b6105de565b005b610220600480360381019061021b919061253f565b6109a5565b005b61022a61110c565b60405161023791906136ad565b60405180910390f35b610248611122565b60405161025591906136ad565b60405180910390f35b610266611138565b604051610273919061325d565b60405180910390f35b61029660048036038101906102919190612797565b61115f565b005b6102b260048036038101906102ad919061246e565b61128f565b005b6102ce60048036038101906102c991906122bc565b6112a7565b6040516102db919061325d565b60405180910390f35b6102ec6112c8565b6040516102f9919061362a565b60405180910390f35b61031c60048036038101906103179190612402565b6112d5565b6040516103299190613368565b60405180910390f35b61034c60048036038101906103479190612374565b61133d565b005b610368600480360381019061036391906122bc565b611409565b6040516103759190613310565b60405180910390f35b61039860048036038101906103939190612402565b611504565b005b6103b460048036038101906103af91906123c6565b61152d565b6040516103c19190613242565b60405180910390f35b6103e460048036038101906103df91906126a4565b61155c565b005b61040060048036038101906103fb9190612797565b6115f4565b005b61040a6116ef565b604051610417919061362a565b60405180910390f35b6104286116f5565b604051610435919061334d565b60405180910390f35b610446611719565b604051610453919061325d565b60405180910390f35b61047660048036038101906104719190612402565b611740565b005b610492600480360381019061048d91906126f6565b611750565b60405161049f919061325d565b60405180910390f35b6104c260048036038101906104bd9190612797565b6117bc565b005b6104cc6118e6565b6040516104d9919061362a565b60405180910390f35b6104fc60048036038101906104f79190612293565b6118ec565b005b6105066119be565b60405161051391906131db565b60405180910390f35b6105246119e4565b6040516105319190613332565b60405180910390f35b610554600480360381019061054f91906126a4565b611a08565b005b61055e611aa0565b60405161056b91906136ad565b60405180910390f35b61058e60048036038101906105899190612374565b611ab6565b60405161059b919061325d565b60405180910390f35b6105be60048036038101906105b99190612374565b611ace565b005b6105c8611e27565b6040516105d5919061325d565b60405180910390f35b6000805490506000600160009054906101000a900463ffffffff16905060006001600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061062e87876112d5565b905060008180519060200120905060008611156107d6576000600360008381526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b8114156106c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ba906134ea565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b7f000000000000000000000000325a2e0f3cca2ddbaebb4dfc38df8d19ca165b4773ffffffffffffffffffffffffffffffffffffffff1663d09cc57e836040518263ffffffff1660e01b8152600401610740919061325d565b60206040518083038186803b15801561075857600080fd5b505afa15801561076c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610790919061239d565b146107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c7906134ca565b60405180910390fd5b5061082f565b6000801b60036000838152602001908152602001600020541461082e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108259061340a565b60405180910390fd5b5b60006108408684868860008c611750565b905080600360008481526020019081526020016000208190555060007f000000000000000000000000325a2e0f3cca2ddbaebb4dfc38df8d19ca165b4773ffffffffffffffffffffffffffffffffffffffff1663762c38fd8886888a60008e6040518763ffffffff1660e01b81526004016108c096959493929190613645565b602060405180830381600087803b1580156108da57600080fd5b505af11580156108ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610912919061239d565b9050808214610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d9061342a565b60405180910390fd5b896040516109649190613156565b6040518091039020817fa1f5047031a658827550a2c4be07648493f3ac88a09c857b3961d1336429a31f60405160405180910390a350505050505050505050565b60006109b188886112d5565b8051906020012090506000600360008381526020019081526020016000205490506000801b811415610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f9061356a565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b811415610a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a75906135aa565b60405180910390fd5b6000610a8d88888888886112a7565b905080898581518110610ac9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015114610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b089061360a565b60405180910390fd5b600160001b7f000000000000000000000000325a2e0f3cca2ddbaebb4dfc38df8d19ca165b4773ffffffffffffffffffffffffffffffffffffffff1663d09cc57e846040518263ffffffff1660e01b8152600401610b6f919061325d565b60206040518083038186803b158015610b8757600080fd5b505afa158015610b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbf919061239d565b14610bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf6906135ca565b60405180910390fd5b600060025490506000811480610cbd57507f000000000000000000000000325a2e0f3cca2ddbaebb4dfc38df8d19ca165b4773ffffffffffffffffffffffffffffffffffffffff166326d6c97b846040518263ffffffff1660e01b8152600401610c69919061325d565b60206040518083038186803b158015610c8157600080fd5b505afa158015610c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb991906126cd565b8111155b610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf3906133aa565b60405180910390fd5b60007f000000000000000000000000325a2e0f3cca2ddbaebb4dfc38df8d19ca165b4773ffffffffffffffffffffffffffffffffffffffff1663acae8f4e856040518263ffffffff1660e01b8152600401610d57919061325d565b60206040518083038186803b158015610d6f57600080fd5b505afa158015610d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da791906127c0565b905042600160049054906101000a900463ffffffff1663ffffffff168263ffffffff16610dd491906137fb565b10610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b9061352a565b60405180910390fd5b6000600160089054906101000a900463ffffffff16905060008163ffffffff161480610e575750428163ffffffff168363ffffffff16610e5491906137fb565b10155b610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d9061344a565b60405180910390fd5b6000871480610f1f57506004600087815260200190815260200160002060008d60018a610ec39190613913565b81518110610efa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060009054906101000a900460ff165b610f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f559061338a565b60405180910390fd5b60046000878152602001908152602001600020600085815260200190815260200160002060009054906101000a900460ff1615610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc79061350a565b60405180910390fd5b600160046000888152602001908152602001600020600086815260200190815260200160002060006101000a81548160ff0219169083151502179055507f0000000000000000000000007eae370e6a76407c3955a2f0bbca853c38e6454e73ffffffffffffffffffffffffffffffffffffffff1663468721a78c8c8c8c6040518563ffffffff1660e01b815260040161106c94939291906131f6565b602060405180830381600087803b15801561108657600080fd5b505af115801561109a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110be919061234b565b6110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f4906135ea565b60405180910390fd5b50505050505050505050505050565b600160049054906101000a900463ffffffff1681565b600160009054906101000a900463ffffffff1681565b7f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b81565b7f0000000000000000000000007eae370e6a76407c3955a2f0bbca853c38e6454e73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e49061358a565b60405180910390fd5b6000600160089054906101000a900463ffffffff16905060008163ffffffff16148061122b5750603c82826112229190613947565b63ffffffff1610155b61126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112619061346a565b60405180910390fd5b81600160046101000a81548163ffffffff021916908363ffffffff1602179055505050565b61129f86868686868660006109a5565b505050505050565b60006112b68686868686611409565b80519060200120905095945050505050565b6000804690508091505090565b60606000611308836040516020016112ed9190613092565b60405160208183030381529060405280519060200120611e4e565b90508362e2909f60e81b826040516020016113259392919061316d565b60405160208183030381529060405291505092915050565b7f0000000000000000000000007eae370e6a76407c3955a2f0bbca853c38e6454e73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c29061358a565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b600360008381526020019081526020016000208190555050565b606060006114156112c8565b905060007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b8230604051602001611451939291906132d9565b60405160208183030381529060405280519060200120905060007f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b8989898051906020012089896040516020016114b096959493929190613278565b604051602081830303815290604052805190602001209050601960f81b600160f81b83836040516020016114e794939291906130a9565b604051602081830303815290604052935050505095945050505050565b600061151083836112d5565b90506000818051906020012090506115278161133d565b50505050565b60046020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b7f0000000000000000000000007eae370e6a76407c3955a2f0bbca853c38e6454e73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e19061358a565b60405180910390fd5b8060008190555050565b7f0000000000000000000000007eae370e6a76407c3955a2f0bbca853c38e6454e73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611682576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116799061358a565b60405180910390fd5b60008163ffffffff16116116cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c29061348a565b60405180910390fd5b80600160006101000a81548163ffffffff021916908363ffffffff16021790555050565b60005481565b7f000000000000000000000000325a2e0f3cca2ddbaebb4dfc38df8d19ca165b4781565b7f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b81565b61174c828260006105de565b5050565b600080878488604051602001611768939291906131a2565b60405160208183030381529060405280519060200120905080868630866040516020016117999594939291906130f7565b604051602081830303815290604052805190602001209150509695505050505050565b7f0000000000000000000000007eae370e6a76407c3955a2f0bbca853c38e6454e73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118419061358a565b60405180910390fd5b60008163ffffffff1614806118835750603c600160049054906101000a900463ffffffff168261187a9190613947565b63ffffffff1610155b6118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b99061346a565b60405180910390fd5b80600160086101000a81548163ffffffff021916908363ffffffff16021790555050565b60025481565b7f0000000000000000000000007eae370e6a76407c3955a2f0bbca853c38e6454e73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461197a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119719061358a565b60405180910390fd5b806001600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f0000000000000000000000007eae370e6a76407c3955a2f0bbca853c38e6454e81565b7f0000000000000000000000007eae370e6a76407c3955a2f0bbca853c38e6454e73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8d9061358a565b60405180910390fd5b8060028190555050565b600160089054906101000a900463ffffffff1681565b60036020528060005260406000206000915090505481565b6000600160089054906101000a900463ffffffff16905060008163ffffffff1611611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b25906134aa565b60405180910390fd5b6000600360008481526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b811415611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba3906133ca565b60405180910390fd5b6000801b811415611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be99061356a565b60405180910390fd5b600160001b7f000000000000000000000000325a2e0f3cca2ddbaebb4dfc38df8d19ca165b4773ffffffffffffffffffffffffffffffffffffffff1663d09cc57e836040518263ffffffff1660e01b8152600401611c50919061325d565b60206040518083038186803b158015611c6857600080fd5b505afa158015611c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca0919061239d565b14611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd79061354a565b60405180910390fd5b60007f000000000000000000000000325a2e0f3cca2ddbaebb4dfc38df8d19ca165b4773ffffffffffffffffffffffffffffffffffffffff1663acae8f4e836040518263ffffffff1660e01b8152600401611d3b919061325d565b60206040518083038186803b158015611d5357600080fd5b505afa158015611d67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8b91906127c0565b9050428363ffffffff168263ffffffff16611da691906137fb565b10611de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddd906133ea565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b600360008681526020019081526020016000208190555050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b60606000604067ffffffffffffffff811115611e93577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611ec55781602001600182028036833780820191505090505b50905060005b6020811015612029576000600882611ee391906138b9565b85901b60f81c90506000601082611efa9190613888565b90506000601083611f0b9190613bce565b9050611f1682612033565b85856002611f2491906138b9565b81518110611f5b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f9381612033565b856001866002611fa391906138b9565b611fad91906137fb565b81518110611fe4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350505050808061202190613b27565b915050611ecb565b5080915050919050565b6000600a8260ff1610156120585760308261204e9190613851565b60f81b905061206b565b6057826120659190613851565b60f81b90505b919050565b600061208361207e846136f9565b6136c8565b905080838252602082019050828560208602820111156120a257600080fd5b60005b858110156120d257816120b888826121ac565b8452602084019350602083019250506001810190506120a5565b5050509392505050565b60006120ef6120ea84613725565b6136c8565b90508281526020810184848401111561210757600080fd5b612112848285613ae5565b509392505050565b600061212d61212884613755565b6136c8565b90508281526020810184848401111561214557600080fd5b612150848285613ae5565b509392505050565b60008135905061216781613cfa565b92915050565b600082601f83011261217e57600080fd5b813561218e848260208601612070565b91505092915050565b6000815190506121a681613d11565b92915050565b6000813590506121bb81613d28565b92915050565b6000815190506121d081613d28565b92915050565b600082601f8301126121e757600080fd5b81356121f78482602086016120dc565b91505092915050565b60008135905061220f81613d3f565b92915050565b600082601f83011261222657600080fd5b813561223684826020860161211a565b91505092915050565b60008135905061224e81613d4f565b92915050565b60008151905061226381613d4f565b92915050565b60008135905061227881613d66565b92915050565b60008151905061228d81613d66565b92915050565b6000602082840312156122a557600080fd5b60006122b384828501612158565b91505092915050565b600080600080600060a086880312156122d457600080fd5b60006122e288828901612158565b95505060206122f38882890161223f565b945050604086013567ffffffffffffffff81111561231057600080fd5b61231c888289016121d6565b935050606061232d88828901612200565b925050608061233e8882890161223f565b9150509295509295909350565b60006020828403121561235d57600080fd5b600061236b84828501612197565b91505092915050565b60006020828403121561238657600080fd5b6000612394848285016121ac565b91505092915050565b6000602082840312156123af57600080fd5b60006123bd848285016121c1565b91505092915050565b600080604083850312156123d957600080fd5b60006123e7858286016121ac565b92505060206123f8858286016121ac565b9150509250929050565b6000806040838503121561241557600080fd5b600083013567ffffffffffffffff81111561242f57600080fd5b61243b85828601612215565b925050602083013567ffffffffffffffff81111561245857600080fd5b6124648582860161216d565b9150509250929050565b60008060008060008060c0878903121561248757600080fd5b600087013567ffffffffffffffff8111156124a157600080fd5b6124ad89828a01612215565b965050602087013567ffffffffffffffff8111156124ca57600080fd5b6124d689828a0161216d565b95505060406124e789828a01612158565b94505060606124f889828a0161223f565b935050608087013567ffffffffffffffff81111561251557600080fd5b61252189828a016121d6565b92505060a061253289828a01612200565b9150509295509295509295565b600080600080600080600060e0888a03121561255a57600080fd5b600088013567ffffffffffffffff81111561257457600080fd5b6125808a828b01612215565b975050602088013567ffffffffffffffff81111561259d57600080fd5b6125a98a828b0161216d565b96505060406125ba8a828b01612158565b95505060606125cb8a828b0161223f565b945050608088013567ffffffffffffffff8111156125e857600080fd5b6125f48a828b016121d6565b93505060a06126058a828b01612200565b92505060c06126168a828b0161223f565b91505092959891949750929550565b60008060006060848603121561263a57600080fd5b600084013567ffffffffffffffff81111561265457600080fd5b61266086828701612215565b935050602084013567ffffffffffffffff81111561267d57600080fd5b6126898682870161216d565b925050604061269a8682870161223f565b9150509250925092565b6000602082840312156126b657600080fd5b60006126c48482850161223f565b91505092915050565b6000602082840312156126df57600080fd5b60006126ed84828501612254565b91505092915050565b60008060008060008060c0878903121561270f57600080fd5b600061271d89828a0161223f565b965050602087013567ffffffffffffffff81111561273a57600080fd5b61274689828a01612215565b955050604061275789828a01612158565b945050606061276889828a01612269565b935050608061277989828a01612269565b92505060a061278a89828a0161223f565b9150509295509295509295565b6000602082840312156127a957600080fd5b60006127b784828501612269565b91505092915050565b6000602082840312156127d257600080fd5b60006127e08482850161227e565b91505092915050565b60006127f583836128ba565b60208301905092915050565b61280a8161397b565b82525050565b61282161281c8261397b565b613b70565b82525050565b600061283282613795565b61283c81856137c3565b935061284783613785565b8060005b8381101561287857815161285f88826127e9565b975061286a836137b6565b92505060018101905061284b565b5085935050505092915050565b61288e8161398d565b82525050565b6128a56128a082613999565b613b82565b82525050565b6128b4816139f1565b82525050565b6128c3816139f1565b82525050565b6128da6128d5826139f1565b613b96565b82525050565b6128f16128ec826139c5565b613b8c565b82525050565b6000612902826137a0565b61290c81856137ce565b935061291c818560208601613af4565b61292581613cbb565b840191505092915050565b61293981613a55565b82525050565b61295061294b82613a55565b613b70565b82525050565b61295f81613a79565b82525050565b61296e81613a9d565b82525050565b61297d81613ac1565b82525050565b61298c81613ad3565b82525050565b600061299d826137ab565b6129a781856137df565b93506129b7818560208601613af4565b6129c081613cbb565b840191505092915050565b60006129d6826137ab565b6129e081856137f0565b93506129f0818560208601613af4565b80840191505092915050565b6000612a096025836137df565b91507f50726576696f7573207472616e73616374696f6e206e6f74206578656375746560008301527f64207965740000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a6f6020836137df565b91507f426f6e64206f6e207175657374696f6e206e6f74206869676820656e6f7567686000830152602082019050919050565b6000612aaf601f836137df565b91507f50726f706f73616c20697320616c726561647920696e76616c696461746564006000830152602082019050919050565b6000612aef601a836137df565b91507f416e7377657220686173206e6f742065787069726564207965740000000000006000830152602082019050919050565b6000612b2f6023836137df565b91507f50726f706f73616c2068617320616c7265616479206265656e207375626d697460008301527f74656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b956016836137df565b91507f556e6578706563746564207175657374696f6e206964000000000000000000006000830152602082019050919050565b6000612bd56012836137df565b91507f416e7377657220686173206578706972656400000000000000000000000000006000830152602082019050919050565b6000612c156044836137df565b91507f5468657265206e65656420746f206265206174206c656173742036307320626560008301527f747765656e20656e64206f6620636f6f6c646f776e20616e642065787069726160208301527f74696f6e000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000612ca1601b836137df565b91507f54696d656f75742068617320746f2062652067726561746572203000000000006000830152602082019050919050565b6000612ce16019836137df565b91507f416e7377657273206172652076616c696420666f7265766572000000000000006000830152602082019050919050565b6000612d216025836137df565b91507f50726576696f75732070726f706f73616c20776173206e6f7420696e76616c6960008301527f64617465640000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d876028836137df565b91507f546869732070726f706f73616c20686173206265656e206d61726b656420617360008301527f20696e76616c69640000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ded6020836137df565b91507f43616e6e6f742065786563757465207472616e73616374696f6e20616761696e6000830152602082019050919050565b6000612e2d601c836137df565b91507f5761697420666f72206164646974696f6e616c20636f6f6c646f776e000000006000830152602082019050919050565b6000612e6d6020836137df565b91507f4f6e6c7920706f73697469766520616e73776572732063616e206578706972656000830152602082019050919050565b6000612ead6028836137df565b91507f4e6f207175657374696f6e2069642073657420666f722070726f76696465642060008301527f70726f706f73616c0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612f13600e836137df565b91507f4e6f7420617574686f72697a65640000000000000000000000000000000000006000830152602082019050919050565b6000612f53601d836137df565b91507f50726f706f73616c20686173206265656e20696e76616c6964617465640000006000830152602082019050919050565b6000612f93601c836137df565b91507f5472616e73616374696f6e20776173206e6f7420617070726f766564000000006000830152602082019050919050565b6000612fd36019836137df565b91507f4d6f64756c65207472616e73616374696f6e206661696c6564000000000000006000830152602082019050919050565b6000613013601b836137df565b91507f556e6578706563746564207472616e73616374696f6e206861736800000000006000830152602082019050919050565b61304f81613a2e565b82525050565b61306661306182613a2e565b613bb2565b82525050565b61307581613a38565b82525050565b61308c61308782613a38565b613bbc565b82525050565b600061309e8284612827565b915081905092915050565b60006130b58287612894565b6001820191506130c58286612894565b6001820191506130d582856128c9565b6020820191506130e582846128c9565b60208201915081905095945050505050565b600061310382886128c9565b6020820191506131138287612810565b601482019150613123828661307b565b600482019150613133828561293f565b6014820191506131438284613055565b6020820191508190509695505050505050565b600061316282846129cb565b915081905092915050565b600061317982866129cb565b915061318582856128e0565b60038201915061319582846129cb565b9150819050949350505050565b60006131ae8286613055565b6020820191506131be828561307b565b6004820191506131ce82846129cb565b9150819050949350505050565b60006020820190506131f06000830184612801565b92915050565b600060808201905061320b6000830187612801565b6132186020830186613046565b818103604083015261322a81856128f7565b90506132396060830184612974565b95945050505050565b60006020820190506132576000830184612885565b92915050565b600060208201905061327260008301846128ab565b92915050565b600060c08201905061328d60008301896128ab565b61329a6020830188612801565b6132a76040830187613046565b6132b460608301866128ab565b6132c16080830185612974565b6132ce60a0830184613046565b979650505050505050565b60006060820190506132ee60008301866128ab565b6132fb6020830185613046565b6133086040830184612930565b949350505050565b6000602082019050818103600083015261332a81846128f7565b905092915050565b60006020820190506133476000830184612956565b92915050565b60006020820190506133626000830184612965565b92915050565b600060208201905081810360008301526133828184612992565b905092915050565b600060208201905081810360008301526133a3816129fc565b9050919050565b600060208201905081810360008301526133c381612a62565b9050919050565b600060208201905081810360008301526133e381612aa2565b9050919050565b6000602082019050818103600083015261340381612ae2565b9050919050565b6000602082019050818103600083015261342381612b22565b9050919050565b6000602082019050818103600083015261344381612b88565b9050919050565b6000602082019050818103600083015261346381612bc8565b9050919050565b6000602082019050818103600083015261348381612c08565b9050919050565b600060208201905081810360008301526134a381612c94565b9050919050565b600060208201905081810360008301526134c381612cd4565b9050919050565b600060208201905081810360008301526134e381612d14565b9050919050565b6000602082019050818103600083015261350381612d7a565b9050919050565b6000602082019050818103600083015261352381612de0565b9050919050565b6000602082019050818103600083015261354381612e20565b9050919050565b6000602082019050818103600083015261356381612e60565b9050919050565b6000602082019050818103600083015261358381612ea0565b9050919050565b600060208201905081810360008301526135a381612f06565b9050919050565b600060208201905081810360008301526135c381612f46565b9050919050565b600060208201905081810360008301526135e381612f86565b9050919050565b6000602082019050818103600083015261360381612fc6565b9050919050565b6000602082019050818103600083015261362381613006565b9050919050565b600060208201905061363f6000830184613046565b92915050565b600060c08201905061365a6000830189613046565b818103602083015261366c8188612992565b905061367b6040830187612801565b613688606083018661306c565b6136956080830185612983565b6136a260a0830184613046565b979650505050505050565b60006020820190506136c2600083018461306c565b92915050565b6000604051905081810181811067ffffffffffffffff821117156136ef576136ee613c8c565b5b8060405250919050565b600067ffffffffffffffff82111561371457613713613c8c565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156137405761373f613c8c565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff8211156137705761376f613c8c565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061380682613a2e565b915061381183613a2e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561384657613845613bff565b5b828201905092915050565b600061385c82613a48565b915061386783613a48565b92508260ff0382111561387d5761387c613bff565b5b828201905092915050565b600061389382613a48565b915061389e83613a48565b9250826138ae576138ad613c2e565b5b828204905092915050565b60006138c482613a2e565b91506138cf83613a2e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561390857613907613bff565b5b828202905092915050565b600061391e82613a2e565b915061392983613a2e565b92508282101561393c5761393b613bff565b5b828203905092915050565b600061395282613a38565b915061395d83613a38565b9250828210156139705761396f613bff565b5b828203905092915050565b600061398682613a0e565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b6000819050613a0982613ce6565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000613a6082613a67565b9050919050565b6000613a7282613a0e565b9050919050565b6000613a8482613a8b565b9050919050565b6000613a9682613a0e565b9050919050565b6000613aa882613aaf565b9050919050565b6000613aba82613a0e565b9050919050565b6000613acc826139fb565b9050919050565b6000613ade82613a38565b9050919050565b82818337600083830152505050565b60005b83811015613b12578082015181840152602081019050613af7565b83811115613b21576000848401525b50505050565b6000613b3282613a2e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b6557613b64613bff565b5b600182019050919050565b6000613b7b82613ba0565b9050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000613bab82613cd9565b9050919050565b6000819050919050565b6000613bc782613ccc565b9050919050565b6000613bd982613a48565b9150613be483613a48565b925082613bf457613bf3613c2e565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01b9050919050565b60008160601b9050919050565b60028110613cf757613cf6613c5d565b5b50565b613d038161397b565b8114613d0e57600080fd5b50565b613d1a8161398d565b8114613d2557600080fd5b50565b613d31816139f1565b8114613d3c57600080fd5b50565b60028110613d4c57600080fd5b50565b613d5881613a2e565b8114613d6357600080fd5b50565b613d6f81613a38565b8114613d7a57600080fd5b5056fea26469706673582212200f71255699ac7a86df1b6e32d1bbdf9c3c1aec62b29fb5beb6e2c9964f8c2c9c64736f6c63430008000033

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

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