Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 1,793 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Cast Vote | 13891089 | 916 days ago | IN | 0 ETH | 0.00350328 | ||||
Execute | 13424209 | 989 days ago | IN | 0 ETH | 0.01457407 | ||||
Queue | 13406365 | 992 days ago | IN | 0 ETH | 0.0158895 | ||||
Cast Vote | 13406135 | 992 days ago | IN | 0 ETH | 0.00555528 | ||||
Cast Vote | 13405352 | 992 days ago | IN | 0 ETH | 0.00621351 | ||||
Cast Vote | 13404447 | 992 days ago | IN | 0 ETH | 0.00484806 | ||||
Cast Vote | 13404127 | 992 days ago | IN | 0 ETH | 0.00597936 | ||||
Cast Vote | 13403786 | 993 days ago | IN | 0 ETH | 0.00794785 | ||||
Cast Vote | 13403659 | 993 days ago | IN | 0 ETH | 0.0044304 | ||||
Cast Vote | 13402851 | 993 days ago | IN | 0 ETH | 0.00387541 | ||||
Cast Vote | 13401657 | 993 days ago | IN | 0 ETH | 0.00579767 | ||||
Cast Vote | 13400018 | 993 days ago | IN | 0 ETH | 0.00354838 | ||||
Cast Vote | 13400017 | 993 days ago | IN | 0 ETH | 0.00387727 | ||||
Cast Vote | 13400015 | 993 days ago | IN | 0 ETH | 0.0078594 | ||||
Cast Vote | 13397324 | 994 days ago | IN | 0 ETH | 0.00649494 | ||||
Cast Vote | 13396952 | 994 days ago | IN | 0 ETH | 0.00783824 | ||||
Cast Vote | 13396929 | 994 days ago | IN | 0 ETH | 0.00419396 | ||||
Cast Vote | 13391246 | 994 days ago | IN | 0 ETH | 0.00369771 | ||||
Cast Vote | 13390850 | 995 days ago | IN | 0 ETH | 0.00425617 | ||||
Cast Vote | 13390162 | 995 days ago | IN | 0 ETH | 0.00436357 | ||||
Cast Vote | 13390100 | 995 days ago | IN | 0 ETH | 0.00520949 | ||||
Cast Vote | 13389861 | 995 days ago | IN | 0 ETH | 0.00448176 | ||||
Cast Vote | 13389786 | 995 days ago | IN | 0 ETH | 0.00388882 | ||||
Cast Vote | 13389349 | 995 days ago | IN | 0 ETH | 0.00643406 | ||||
Cast Vote | 13389314 | 995 days ago | IN | 0 ETH | 0.00580568 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
11549293 | 1280 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
GovernorAlpha
Compiler Version
v0.5.16+commit.9c3226ce
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.5.16; pragma experimental ABIEncoderV2; import "./Timelock.sol"; contract GovernorAlpha { /// @notice The name of this contract string public constant name = "Inverse Governor Alpha"; /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed function quorumVotes() public pure returns (uint) { return 4000e18; } // 4% of INV /// @notice The number of votes required in order for a voter to become a proposer function proposalThreshold() public pure returns (uint) { return 1000e18; } // 1% of INV /// @notice The maximum number of actions that can be included in a proposal function proposalMaxOperations() public pure returns (uint) { return 20; } // 10 actions /// @notice The delay before voting on a proposal may take place, once proposed function votingDelay() public pure returns (uint) { return 1; } // 1 block /// @notice The duration of voting on a proposal, in blocks function votingPeriod() public pure returns (uint) { return 17280; } // ~3 days in blocks (assuming 15s blocks) /// @notice The address of the Protocol Timelock Timelock public timelock; /// @notice The address of the governance token InvInterface public inv; /// @notice The total number of proposals uint public proposalCount; struct Proposal { /// @notice Unique id for looking up a proposal uint id; /// @notice Creator of the proposal address proposer; /// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds uint eta; /// @notice the ordered list of target addresses for calls to be made address[] targets; /// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made uint[] values; /// @notice The ordered list of function signatures to be called string[] signatures; /// @notice The ordered list of calldata to be passed to each call bytes[] calldatas; /// @notice The block at which voting begins: holders must delegate their votes prior to this block uint startBlock; /// @notice The block at which voting ends: votes must be cast prior to this block uint endBlock; /// @notice Current number of votes in favor of this proposal uint forVotes; /// @notice Current number of votes in opposition to this proposal uint againstVotes; /// @notice Flag marking whether the proposal has been canceled bool canceled; /// @notice Flag marking whether the proposal has been executed bool executed; /// @notice Receipts of ballots for the entire set of voters mapping (address => Receipt) receipts; } /// @notice Ballot receipt record for a voter struct Receipt { /// @notice Whether or not a vote has been cast bool hasVoted; /// @notice Whether or not the voter supports the proposal bool support; /// @notice The number of votes the voter had, which were cast uint96 votes; } /// @notice Possible states that a proposal may be in enum ProposalState { Pending, Active, Canceled, Defeated, Succeeded, Queued, Expired, Executed } /// @notice The official record of all proposals ever proposed mapping (uint => Proposal) public proposals; /// @notice The latest proposal for each proposer mapping (address => uint) public latestProposalIds; /// @notice The EIP-712 typehash for the contract's domain bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); /// @notice The EIP-712 typehash for the ballot struct used by the contract bytes32 public constant BALLOT_TYPEHASH = keccak256("Ballot(uint256 proposalId,bool support)"); /// @notice An event emitted when a new proposal is created event ProposalCreated(uint id, address proposer, address[] targets, uint[] values, string[] signatures, bytes[] calldatas, uint startBlock, uint endBlock, string description); /// @notice An event emitted when a vote has been cast on a proposal event VoteCast(address voter, uint proposalId, bool support, uint votes); /// @notice An event emitted when a proposal has been canceled event ProposalCanceled(uint id); /// @notice An event emitted when a proposal has been queued in the Timelock event ProposalQueued(uint id, uint eta); /// @notice An event emitted when a proposal has been executed in the Timelock event ProposalExecuted(uint id); constructor(address inv_) public { timelock = new Timelock(address(this), 2 days); inv = InvInterface(inv_); } function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) public returns (uint) { require(inv.getPriorVotes(msg.sender, sub256(block.number, 1)) > proposalThreshold(), "GovernorAlpha::propose: proposer votes below proposal threshold"); require(targets.length == values.length && targets.length == signatures.length && targets.length == calldatas.length, "GovernorAlpha::propose: proposal function information arity mismatch"); require(targets.length != 0, "GovernorAlpha::propose: must provide actions"); require(targets.length <= proposalMaxOperations(), "GovernorAlpha::propose: too many actions"); uint latestProposalId = latestProposalIds[msg.sender]; if (latestProposalId != 0) { ProposalState proposersLatestProposalState = state(latestProposalId); require(proposersLatestProposalState != ProposalState.Active, "GovernorAlpha::propose: one live proposal per proposer, found an already active proposal"); require(proposersLatestProposalState != ProposalState.Pending, "GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal"); } uint startBlock = add256(block.number, votingDelay()); uint endBlock = add256(startBlock, votingPeriod()); proposalCount++; Proposal memory newProposal = Proposal({ id: proposalCount, proposer: msg.sender, eta: 0, targets: targets, values: values, signatures: signatures, calldatas: calldatas, startBlock: startBlock, endBlock: endBlock, forVotes: 0, againstVotes: 0, canceled: false, executed: false }); proposals[newProposal.id] = newProposal; latestProposalIds[newProposal.proposer] = newProposal.id; emit ProposalCreated(newProposal.id, msg.sender, targets, values, signatures, calldatas, startBlock, endBlock, description); return newProposal.id; } function queue(uint proposalId) public { require(state(proposalId) == ProposalState.Succeeded, "GovernorAlpha::queue: proposal can only be queued if it is succeeded"); Proposal storage proposal = proposals[proposalId]; uint eta = add256(block.timestamp, timelock.delay()); for (uint i = 0; i < proposal.targets.length; i++) { _queueOrRevert(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], eta); } proposal.eta = eta; emit ProposalQueued(proposalId, eta); } function _queueOrRevert(address target, uint value, string memory signature, bytes memory data, uint eta) internal { require(!timelock.queuedTransactions(keccak256(abi.encode(target, value, signature, data, eta))), "GovernorAlpha::_queueOrRevert: proposal action already queued at eta"); timelock.queueTransaction(target, value, signature, data, eta); } function execute(uint proposalId) public { require(state(proposalId) == ProposalState.Queued, "GovernorAlpha::execute: proposal can only be executed if it is queued"); Proposal storage proposal = proposals[proposalId]; proposal.executed = true; for (uint i = 0; i < proposal.targets.length; i++) { timelock.executeTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta); } emit ProposalExecuted(proposalId); } function cancel(uint proposalId) public { ProposalState state = state(proposalId); require(state != ProposalState.Executed, "GovernorAlpha::cancel: cannot cancel executed proposal"); Proposal storage proposal = proposals[proposalId]; require(inv.getPriorVotes(proposal.proposer, sub256(block.number, 1)) < proposalThreshold(), "GovernorAlpha::cancel: proposer above threshold"); proposal.canceled = true; for (uint i = 0; i < proposal.targets.length; i++) { timelock.cancelTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta); } emit ProposalCanceled(proposalId); } function getActions(uint proposalId) public view returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas) { Proposal storage p = proposals[proposalId]; return (p.targets, p.values, p.signatures, p.calldatas); } function getReceipt(uint proposalId, address voter) public view returns (Receipt memory) { return proposals[proposalId].receipts[voter]; } function state(uint proposalId) public view returns (ProposalState) { require(proposalCount >= proposalId && proposalId > 0, "GovernorAlpha::state: invalid proposal id"); Proposal storage proposal = proposals[proposalId]; if (proposal.canceled) { return ProposalState.Canceled; } else if (block.number <= proposal.startBlock) { return ProposalState.Pending; } else if (block.number <= proposal.endBlock) { return ProposalState.Active; } else if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < quorumVotes()) { return ProposalState.Defeated; } else if (proposal.eta == 0) { return ProposalState.Succeeded; } else if (proposal.executed) { return ProposalState.Executed; } else if (block.timestamp >= add256(proposal.eta, timelock.GRACE_PERIOD())) { return ProposalState.Expired; } else { return ProposalState.Queued; } } function castVote(uint proposalId, bool support) public { return _castVote(msg.sender, proposalId, support); } function castVoteBySig(uint proposalId, bool support, uint8 v, bytes32 r, bytes32 s) public { bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); bytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support)); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "GovernorAlpha::castVoteBySig: invalid signature"); return _castVote(signatory, proposalId, support); } function _castVote(address voter, uint proposalId, bool support) internal { require(state(proposalId) == ProposalState.Active, "GovernorAlpha::_castVote: voting is closed"); Proposal storage proposal = proposals[proposalId]; Receipt storage receipt = proposal.receipts[voter]; require(receipt.hasVoted == false, "GovernorAlpha::_castVote: voter already voted"); uint96 votes = inv.getPriorVotes(voter, proposal.startBlock); if (support) { proposal.forVotes = add256(proposal.forVotes, votes); } else { proposal.againstVotes = add256(proposal.againstVotes, votes); } receipt.hasVoted = true; receipt.support = support; receipt.votes = votes; emit VoteCast(voter, proposalId, support, votes); } function add256(uint256 a, uint256 b) internal pure returns (uint) { uint c = a + b; require(c >= a, "addition overflow"); return c; } function sub256(uint256 a, uint256 b) internal pure returns (uint) { require(b <= a, "subtraction underflow"); return a - b; } function getChainId() internal pure returns (uint) { uint chainId; assembly { chainId := chainid() } return chainId; } } interface InvInterface { function getPriorVotes(address account, uint blockNumber) external view returns (uint96); }
pragma solidity ^0.5.16; import "./SafeMath.sol"; contract Timelock { using SafeMath for uint; event NewAdmin(address indexed newAdmin); event NewPendingAdmin(address indexed newPendingAdmin); event NewDelay(uint indexed newDelay); event CancelTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature, bytes data, uint eta); event ExecuteTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature, bytes data, uint eta); event QueueTransaction(bytes32 indexed txHash, address indexed target, uint value, string signature, bytes data, uint eta); uint public constant GRACE_PERIOD = 14 days; uint public constant MINIMUM_DELAY = 2 days; uint public constant MAXIMUM_DELAY = 30 days; address public admin; address public pendingAdmin; uint public delay; mapping (bytes32 => bool) public queuedTransactions; constructor(address admin_, uint delay_) public { require(delay_ >= MINIMUM_DELAY, "Timelock::constructor: Delay must exceed minimum delay."); require(delay_ <= MAXIMUM_DELAY, "Timelock::setDelay: Delay must not exceed maximum delay."); admin = admin_; delay = delay_; } function() external payable { } function setDelay(uint delay_) public { require(msg.sender == address(this), "Timelock::setDelay: Call must come from Timelock."); require(delay_ >= MINIMUM_DELAY, "Timelock::setDelay: Delay must exceed minimum delay."); require(delay_ <= MAXIMUM_DELAY, "Timelock::setDelay: Delay must not exceed maximum delay."); delay = delay_; emit NewDelay(delay); } function acceptAdmin() public { require(msg.sender == pendingAdmin, "Timelock::acceptAdmin: Call must come from pendingAdmin."); admin = msg.sender; pendingAdmin = address(0); emit NewAdmin(admin); } function setPendingAdmin(address pendingAdmin_) public { require(msg.sender == address(this), "Timelock::setPendingAdmin: Call must come from Timelock."); pendingAdmin = pendingAdmin_; emit NewPendingAdmin(pendingAdmin); } function queueTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) public returns (bytes32) { require(msg.sender == admin, "Timelock::queueTransaction: Call must come from admin."); require(eta >= getBlockTimestamp().add(delay), "Timelock::queueTransaction: Estimated execution block must satisfy delay."); bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta)); queuedTransactions[txHash] = true; emit QueueTransaction(txHash, target, value, signature, data, eta); return txHash; } function cancelTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) public { require(msg.sender == admin, "Timelock::cancelTransaction: Call must come from admin."); bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta)); queuedTransactions[txHash] = false; emit CancelTransaction(txHash, target, value, signature, data, eta); } function executeTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) public returns (bytes memory) { require(msg.sender == admin, "Timelock::executeTransaction: Call must come from admin."); bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta)); require(queuedTransactions[txHash], "Timelock::executeTransaction: Transaction hasn't been queued."); require(getBlockTimestamp() >= eta, "Timelock::executeTransaction: Transaction hasn't surpassed time lock."); require(getBlockTimestamp() <= eta.add(GRACE_PERIOD), "Timelock::executeTransaction: Transaction is stale."); queuedTransactions[txHash] = false; bytes memory callData; if (bytes(signature).length == 0) { callData = data; } else { callData = abi.encodePacked(bytes4(keccak256(bytes(signature))), data); } // solium-disable-next-line security/no-call-value (bool success, bytes memory returnData) = target.call.value(value)(callData); require(success, "Timelock::executeTransaction: Transaction execution reverted."); emit ExecuteTransaction(txHash, target, value, signature, data, eta); return returnData; } function getBlockTimestamp() internal view returns (uint) { // solium-disable-next-line security/no-block-members return block.timestamp; } }
pragma solidity ^0.5.16; // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol // Subject to the MIT license. /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction underflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, errorMessage); return c; } /** * @dev Returns the integer division of two unsigned integers. * Reverts on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. * Reverts with custom message on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"inv_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":false,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"VoteCast","type":"event"},{"constant":true,"inputs":[],"name":"BALLOT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"cancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"castVote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"castVoteBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"execute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getActions","outputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"address","name":"voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint96","name":"votes","type":"uint96"}],"internalType":"struct GovernorAlpha.Receipt","name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"inv","outputs":[{"internalType":"contract InvInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"latestProposalIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proposalMaxOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"bool","name":"canceled","type":"bool"},{"internalType":"bool","name":"executed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string[]","name":"signatures","type":"string[]"},{"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"internalType":"string","name":"description","type":"string"}],"name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"queue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum GovernorAlpha.ProposalState","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timelock","outputs":[{"internalType":"contract Timelock","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"votingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620069af380380620069af833981810160405262000037919081019062000121565b306202a3006040516200004a90620000fc565b620000579291906200016f565b604051809103906000f08015801562000074573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000208565b612021806200498e83390190565b6000815190506200011b81620001ee565b92915050565b6000602082840312156200013457600080fd5b600062000144848285016200010a565b91505092915050565b62000158816200019c565b82525050565b6200016981620001da565b82525050565b60006040820190506200018660008301856200014d565b6200019560208301846200015e565b9392505050565b6000620001a982620001b0565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620001e782620001d0565b9050919050565b620001f9816200019c565b81146200020557600080fd5b50565b61477680620002186000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806340e58ee5116100b8578063da35c6641161007c578063da35c66414610374578063da95691a14610392578063ddf0b009146103c2578063deaaa7cc146103de578063e23a9a52146103fc578063fe0d94c11461042c57610142565b806340e58ee5146102e25780634634c61f146102fe5780637bdbe4d01461031a578063b58131b014610338578063d33219b41461035657610142565b806317977c611161010a57806317977c61146101f557806320606b701461022557806324bc1a6414610243578063328dd982146102615780633932abb1146102945780633e4f49e6146102b257610142565b8063013cf08b1461014757806302a251a31461017f578063032d09611461019d57806306fdde03146101bb57806315373e3d146101d9575b600080fd5b610161600480360361015c9190810190612b89565b610448565b60405161017699989796959493929190614157565b60405180910390f35b6101876104d0565b604051610194919061408c565b60405180910390f35b6101a56104da565b6040516101b29190613dde565b60405180910390f35b6101c3610500565b6040516101d09190613e2f565b60405180910390f35b6101f360048036036101ee9190810190612c17565b610539565b005b61020f600480360361020a91908101906129de565b610548565b60405161021c919061408c565b60405180910390f35b61022d610560565b60405161023a9190613d02565b60405180910390f35b61024b610577565b604051610258919061408c565b60405180910390f35b61027b60048036036102769190810190612b89565b610588565b60405161028b9493929190613ca1565b60405180910390f35b61029c610865565b6040516102a9919061408c565b60405180910390f35b6102cc60048036036102c79190810190612b89565b61086e565b6040516102d99190613e14565b60405180910390f35b6102fc60048036036102f79190810190612b89565b610a52565b005b61031860048036036103139190810190612c53565b610d96565b005b610322610f65565b60405161032f919061408c565b60405180910390f35b610340610f6e565b60405161034d919061408c565b60405180910390f35b61035e610f7f565b60405161036b9190613df9565b60405180910390f35b61037c610fa4565b604051610389919061408c565b60405180910390f35b6103ac60048036036103a79190810190612a07565b610faa565b6040516103b9919061408c565b60405180910390f35b6103dc60048036036103d79190810190612b89565b611577565b005b6103e66118c6565b6040516103f39190613d02565b60405180910390f35b61041660048036036104119190810190612bdb565b6118dd565b6040516104239190614071565b60405180910390f35b61044660048036036104419190810190612b89565b6119bf565b005b60036020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600201549080600701549080600801549080600901549080600a01549080600b0160009054906101000a900460ff169080600b0160019054906101000a900460ff16905089565b6000614380905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280601681526020017f496e766572736520476f7665726e6f7220416c7068610000000000000000000081525081565b610544338383611bf2565b5050565b60046020528060005260406000206000915090505481565b60405161056c90613b1e565b604051809103902081565b600068d8d726b7177a800000905090565b6060806060806000600360008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561063657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116105ec575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561068857602002820191906000526020600020905b815481526020019060010190808311610674575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561076c578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107585780601f1061072d57610100808354040283529160200191610758565b820191906000526020600020905b81548152906001019060200180831161073b57829003601f168201915b5050505050815260200190600101906106b0565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561084f578382906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561083b5780601f106108105761010080835404028352916020019161083b565b820191906000526020600020905b81548152906001019060200180831161081e57829003601f168201915b505050505081526020019060010190610793565b5050505090509450945094509450509193509193565b60006001905090565b600081600254101580156108825750600082115b6108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890613e91565b60405180910390fd5b600060036000848152602001908152602001600020905080600b0160009054906101000a900460ff16156108f9576002915050610a4d565b8060070154431161090e576000915050610a4d565b80600801544311610923576001915050610a4d565b80600a01548160090154111580610944575061093d610577565b8160090154105b15610953576003915050610a4d565b60008160020154141561096a576004915050610a4d565b80600b0160019054906101000a900460ff161561098b576007915050610a4d565b610a3781600201546000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1a287e26040518163ffffffff1660e01b815260040160206040518083038186803b1580156109fa57600080fd5b505afa158015610a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a329190810190612bb2565b611ec1565b4210610a47576006915050610a4d565b60059150505b919050565b6000610a5d8261086e565b9050600780811115610a6b57fe5b816007811115610a7757fe5b1415610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf90614011565b60405180910390fd5b6000600360008481526020019081526020016000209050610ad7610f6e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe18360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b45436001611f16565b6040518363ffffffff1660e01b8152600401610b62929190613b71565b60206040518083038186803b158015610b7a57600080fd5b505afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bb29190810190612cca565b6bffffffffffffffffffffffff1610610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790613f51565b60405180910390fd5b600181600b0160006101000a81548160ff02191690831515021790555060008090505b8160030180549050811015610d59576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663591fcdfe836003018381548110610c7e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846004018481548110610cb857fe5b9060005260206000200154856005018581548110610cd257fe5b90600052602060002001866006018681548110610ceb57fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610d1a959493929190613c40565b600060405180830381600087803b158015610d3457600080fd5b505af1158015610d48573d6000803e3d6000fd5b505050508080600101915050610c23565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610d89919061408c565b60405180910390a1505050565b6000604051610da490613b1e565b60405180910390206040518060400160405280601681526020017f496e766572736520476f7665726e6f7220416c7068610000000000000000000081525080519060200120610df1611f66565b30604051602001610e059493929190613d1d565b6040516020818303038152906040528051906020012090506000604051610e2b90613b33565b60405180910390208787604051602001610e4793929190613d62565b60405160208183030381529060405280519060200120905060008282604051602001610e74929190613ae7565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610eb19493929190613d99565b6020604051602081039080840390855afa158015610ed3573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4690613fd1565b60405180910390fd5b610f5a818a8a611bf2565b505050505050505050565b60006014905090565b6000683635c9adc5dea00000905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000610fb4610f6e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe133610ffe436001611f16565b6040518363ffffffff1660e01b815260040161101b929190613b48565b60206040518083038186803b15801561103357600080fd5b505afa158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061106b9190810190612cca565b6bffffffffffffffffffffffff16116110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b090613fb1565b60405180910390fd5b845186511480156110cb575083518651145b80156110d8575082518651145b611117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110e90613f31565b60405180910390fd5b60008651141561115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613f91565b60405180910390fd5b611164610f65565b865111156111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119e90613ef1565b60405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146112b65760006111fe8261086e565b90506001600781111561120d57fe5b81600781111561121957fe5b141561125a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125190613ff1565b60405180910390fd5b6000600781111561126757fe5b81600781111561127357fe5b14156112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ab90613ed1565b60405180910390fd5b505b60006112c9436112c4610865565b611ec1565b905060006112de826112d96104d0565b611ec1565b90506002600081548092919060010191905055506112fa612147565b604051806101a0016040528060025481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030190805190602001906114049291906121c9565b506080820151816004019080519060200190611421929190612253565b5060a082015181600501908051906020019061143e9291906122a0565b5060c082015181600601908051906020019061145b929190612300565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160046000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161155b999897969594939291906140a7565b60405180910390a1806000015194505050505095945050505050565b6004600781111561158457fe5b61158d8261086e565b600781111561159857fe5b146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf90613e51565b60405180910390fd5b60006003600083815260200190815260200160002090506000611699426000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561165c57600080fd5b505afa158015611670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116949190810190612bb2565b611ec1565b905060008090505b826003018054905081101561187e576118718360030182815481106116c257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460040183815481106116fc57fe5b906000526020600020015485600501848154811061171657fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117b45780601f10611789576101008083540402835291602001916117b4565b820191906000526020600020905b81548152906001019060200180831161179757829003601f168201915b50505050508660060185815481106117c857fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118665780601f1061183b57610100808354040283529160200191611866565b820191906000526020600020905b81548152906001019060200180831161184957829003601f168201915b505050505086611f73565b80806001019150506116a1565b508082600201819055507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289283826040516118b99291906141e4565b60405180910390a1505050565b6040516118d290613b33565b604051809103902081565b6118e5612360565b60036000848152602001908152602001600020600c0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff161515151581526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b600560078111156119cc57fe5b6119d58261086e565b60078111156119e057fe5b14611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1790613e71565b60405180910390fd5b6000600360008381526020019081526020016000209050600181600b0160016101000a81548160ff02191690831515021790555060008090505b8160030180549050811015611bb6576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630825f38f836003018381548110611ab557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846004018481548110611aef57fe5b9060005260206000200154856005018581548110611b0957fe5b90600052602060002001866006018681548110611b2257fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401611b51959493929190613c40565b600060405180830381600087803b158015611b6b57600080fd5b505af1158015611b7f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611ba89190810190612b48565b508080600101915050611a5a565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611be6919061408c565b60405180910390a15050565b60016007811115611bff57fe5b611c088361086e565b6007811115611c1357fe5b14611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4a90614031565b60405180910390fd5b6000600360008481526020019081526020016000209050600081600c0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600015158160000160009054906101000a900460ff16151514611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe90613eb1565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe18785600701546040518363ffffffff1660e01b8152600401611d6a929190613b71565b60206040518083038186803b158015611d8257600080fd5b505afa158015611d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dba9190810190612cca565b90508315611deb57611dde8360090154826bffffffffffffffffffffffff16611ec1565b8360090181905550611e10565b611e0783600a0154826bffffffffffffffffffffffff16611ec1565b83600a01819055505b60018260000160006101000a81548160ff021916908315150217905550838260000160016101000a81548160ff021916908315150217905550808260000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055507f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4686868684604051611eb19493929190613b9a565b60405180910390a1505050505050565b600080828401905083811015611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390613f11565b60405180910390fd5b8091505092915050565b600082821115611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5290614051565b60405180910390fd5b818303905092915050565b6000804690508091505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2b065378686868686604051602001611fc9959493929190613bdf565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611ffb9190613d02565b60206040518083038186803b15801561201357600080fd5b505afa158015612027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061204b9190810190612af6565b1561208b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208290613f71565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a66f90186868686866040518663ffffffff1660e01b81526004016120ed959493929190613bdf565b602060405180830381600087803b15801561210757600080fd5b505af115801561211b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061213f9190810190612b1f565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215612242579160200282015b828111156122415782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906121e9565b5b50905061224f9190612393565b5090565b82805482825590600052602060002090810192821561228f579160200282015b8281111561228e578251825591602001919060010190612273565b5b50905061229c91906123d6565b5090565b8280548282559060005260206000209081019282156122ef579160200282015b828111156122ee5782518290805190602001906122de9291906123fb565b50916020019190600101906122c0565b5b5090506122fc919061247b565b5090565b82805482825590600052602060002090810192821561234f579160200282015b8281111561234e57825182908051906020019061233e9291906124a7565b5091602001919060010190612320565b5b50905061235c9190612527565b5090565b604051806060016040528060001515815260200160001515815260200160006bffffffffffffffffffffffff1681525090565b6123d391905b808211156123cf57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612399565b5090565b90565b6123f891905b808211156123f45760008160009055506001016123dc565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061243c57805160ff191683800117855561246a565b8280016001018555821561246a579182015b8281111561246957825182559160200191906001019061244e565b5b50905061247791906123d6565b5090565b6124a491905b808211156124a057600081816124979190612553565b50600101612481565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106124e857805160ff1916838001178555612516565b82800160010185558215612516579182015b828111156125155782518255916020019190600101906124fa565b5b50905061252391906123d6565b5090565b61255091905b8082111561254c5760008181612543919061259b565b5060010161252d565b5090565b90565b50805460018160011615610100020316600290046000825580601f106125795750612598565b601f01602090049060005260206000209081019061259791906123d6565b5b50565b50805460018160011615610100020316600290046000825580601f106125c157506125e0565b601f0160209004906000526020600020908101906125df91906123d6565b5b50565b6000813590506125f2816146a9565b92915050565b600082601f83011261260957600080fd5b813561261c6126178261423a565b61420d565b9150818183526020840193506020810190508385602084028201111561264157600080fd5b60005b83811015612671578161265788826125e3565b845260208401935060208301925050600181019050612644565b5050505092915050565b600082601f83011261268c57600080fd5b813561269f61269a82614262565b61420d565b9150818183526020840193506020810190508360005b838110156126e557813586016126cb888261283a565b8452602084019350602083019250506001810190506126b5565b5050505092915050565b600082601f83011261270057600080fd5b813561271361270e8261428a565b61420d565b9150818183526020840193506020810190508360005b83811015612759578135860161273f88826128e2565b845260208401935060208301925050600181019050612729565b5050505092915050565b600082601f83011261277457600080fd5b8135612787612782826142b2565b61420d565b915081818352602084019350602081019050838560208402820111156127ac57600080fd5b60005b838110156127dc57816127c2888261298a565b8452602084019350602083019250506001810190506127af565b5050505092915050565b6000813590506127f5816146c0565b92915050565b60008151905061280a816146c0565b92915050565b60008135905061281f816146d7565b92915050565b600081519050612834816146d7565b92915050565b600082601f83011261284b57600080fd5b813561285e612859826142da565b61420d565b9150808252602083016020830185838301111561287a57600080fd5b61288583828461463f565b50505092915050565b600082601f83011261289f57600080fd5b81516128b26128ad82614306565b61420d565b915080825260208301602083018583830111156128ce57600080fd5b6128d983828461464e565b50505092915050565b600082601f8301126128f357600080fd5b813561290661290182614332565b61420d565b9150808252602083016020830185838301111561292257600080fd5b61292d83828461463f565b50505092915050565b600082601f83011261294757600080fd5b813561295a6129558261435e565b61420d565b9150808252602083016020830185838301111561297657600080fd5b61298183828461463f565b50505092915050565b600081359050612999816146ee565b92915050565b6000815190506129ae816146ee565b92915050565b6000813590506129c381614705565b92915050565b6000815190506129d88161471c565b92915050565b6000602082840312156129f057600080fd5b60006129fe848285016125e3565b91505092915050565b600080600080600060a08688031215612a1f57600080fd5b600086013567ffffffffffffffff811115612a3957600080fd5b612a45888289016125f8565b955050602086013567ffffffffffffffff811115612a6257600080fd5b612a6e88828901612763565b945050604086013567ffffffffffffffff811115612a8b57600080fd5b612a97888289016126ef565b935050606086013567ffffffffffffffff811115612ab457600080fd5b612ac08882890161267b565b925050608086013567ffffffffffffffff811115612add57600080fd5b612ae988828901612936565b9150509295509295909350565b600060208284031215612b0857600080fd5b6000612b16848285016127fb565b91505092915050565b600060208284031215612b3157600080fd5b6000612b3f84828501612825565b91505092915050565b600060208284031215612b5a57600080fd5b600082015167ffffffffffffffff811115612b7457600080fd5b612b808482850161288e565b91505092915050565b600060208284031215612b9b57600080fd5b6000612ba98482850161298a565b91505092915050565b600060208284031215612bc457600080fd5b6000612bd28482850161299f565b91505092915050565b60008060408385031215612bee57600080fd5b6000612bfc8582860161298a565b9250506020612c0d858286016125e3565b9150509250929050565b60008060408385031215612c2a57600080fd5b6000612c388582860161298a565b9250506020612c49858286016127e6565b9150509250929050565b600080600080600060a08688031215612c6b57600080fd5b6000612c798882890161298a565b9550506020612c8a888289016127e6565b9450506040612c9b888289016129b4565b9350506060612cac88828901612810565b9250506080612cbd88828901612810565b9150509295509295909350565b600060208284031215612cdc57600080fd5b6000612cea848285016129c9565b91505092915050565b6000612cff8383612d5a565b60208301905092915050565b6000612d178383612f9b565b905092915050565b6000612d2b83836130c9565b905092915050565b6000612d3f8383613a9c565b60208301905092915050565b612d548161459d565b82525050565b612d6381614513565b82525050565b612d7281614513565b82525050565b6000612d83826143f4565b612d8d8185614480565b9350612d988361438a565b8060005b83811015612dc9578151612db08882612cf3565b9750612dbb8361444c565b925050600181019050612d9c565b5085935050505092915050565b6000612de1826143ff565b612deb8185614491565b935083602082028501612dfd8561439a565b8060005b85811015612e395784840389528151612e1a8582612d0b565b9450612e2583614459565b925060208a01995050600181019050612e01565b50829750879550505050505092915050565b6000612e568261440a565b612e6081856144a2565b935083602082028501612e72856143aa565b8060005b85811015612eae5784840389528151612e8f8582612d1f565b9450612e9a83614466565b925060208a01995050600181019050612e76565b50829750879550505050505092915050565b6000612ecb82614415565b612ed581856144b3565b9350612ee0836143ba565b8060005b83811015612f11578151612ef88882612d33565b9750612f0383614473565b925050600181019050612ee4565b5085935050505092915050565b612f2781614525565b82525050565b612f3681614525565b82525050565b612f4581614531565b82525050565b612f5c612f5782614531565b614681565b82525050565b6000612f6d8261442b565b612f7781856144d5565b9350612f8781856020860161464e565b612f908161468b565b840191505092915050565b6000612fa682614420565b612fb081856144c4565b9350612fc081856020860161464e565b612fc98161468b565b840191505092915050565b600081546001811660008114612ff157600181146130175761305b565b607f600283041661300281876144d5565b955060ff19831686526020860193505061305b565b6002820461302581876144d5565b9550613030856143ca565b60005b8281101561305257815481890152600182019150602081019050613033565b80880195505050505b505092915050565b61306c816145af565b82525050565b61307b816145d3565b82525050565b61308a816145f7565b82525050565b600061309b82614441565b6130a581856144f7565b93506130b581856020860161464e565b6130be8161468b565b840191505092915050565b60006130d482614436565b6130de81856144e6565b93506130ee81856020860161464e565b6130f78161468b565b840191505092915050565b600061310d82614436565b61311781856144f7565b935061312781856020860161464e565b6131308161468b565b840191505092915050565b600081546001811660008114613158576001811461317e576131c2565b607f600283041661316981876144f7565b955060ff1983168652602086019350506131c2565b6002820461318c81876144f7565b9550613197856143df565b60005b828110156131b95781548189015260018201915060208101905061319a565b80880195505050505b505092915050565b60006131d76044836144f7565b91507f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206360008301527f616e206f6e6c792062652071756575656420696620697420697320737563636560208301527f65646564000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006132636045836144f7565b91507f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c60008301527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208301527f75657565640000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006132ef600283614508565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b600061332f6029836144f7565b91507f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707260008301527f6f706f73616c20696400000000000000000000000000000000000000000000006020830152604082019050919050565b6000613395602d836144f7565b91507f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722060008301527f616c726561647920766f746564000000000000000000000000000000000000006020830152604082019050919050565b60006133fb6059836144f7565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766560008301527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208301527f20616c72656164792070656e64696e672070726f706f73616c000000000000006040830152606082019050919050565b60006134876028836144f7565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7960008301527f20616374696f6e730000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134ed6011836144f7565b91507f6164646974696f6e206f766572666c6f770000000000000000000000000000006000830152602082019050919050565b600061352d604383614508565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b60006135b9602783614508565b91507f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207360008301527f7570706f727429000000000000000000000000000000000000000000000000006020830152602782019050919050565b600061361f6044836144f7565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c60008301527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208301527f61746368000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006136ab602f836144f7565b91507f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722060008301527f61626f7665207468726573686f6c6400000000000000000000000000000000006020830152604082019050919050565b60006137116044836144f7565b91507f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207060008301527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208301527f20657461000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b600061379d602c836144f7565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f60008301527f7669646520616374696f6e7300000000000000000000000000000000000000006020830152604082019050919050565b6000613803603f836144f7565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657260008301527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c64006020830152604082019050919050565b6000613869602f836144f7565b91507f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e60008301527f76616c6964207369676e617475726500000000000000000000000000000000006020830152604082019050919050565b60006138cf6058836144f7565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766560008301527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208301527f20616c7265616479206163746976652070726f706f73616c00000000000000006040830152606082019050919050565b600061395b6036836144f7565b91507f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636160008301527f6e63656c2065786563757465642070726f706f73616c000000000000000000006020830152604082019050919050565b60006139c1602a836144f7565b91507f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6760008301527f20697320636c6f736564000000000000000000000000000000000000000000006020830152604082019050919050565b6000613a276015836144f7565b91507f7375627472616374696f6e20756e646572666c6f7700000000000000000000006000830152602082019050919050565b606082016000820151613a706000850182612f1e565b506020820151613a836020850182612f1e565b506040820151613a966040850182613ad8565b50505050565b613aa58161456e565b82525050565b613ab48161456e565b82525050565b613ac381614578565b82525050565b613ad28161462d565b82525050565b613ae181614585565b82525050565b6000613af2826132e2565b9150613afe8285612f4b565b602082019150613b0e8284612f4b565b6020820191508190509392505050565b6000613b2982613520565b9150819050919050565b6000613b3e826135ac565b9150819050919050565b6000604082019050613b5d6000830185612d4b565b613b6a6020830184613aab565b9392505050565b6000604082019050613b866000830185612d69565b613b936020830184613aab565b9392505050565b6000608082019050613baf6000830187612d69565b613bbc6020830186613aab565b613bc96040830185612f2d565b613bd66060830184613ac9565b95945050505050565b600060a082019050613bf46000830188612d69565b613c016020830187613aab565b8181036040830152613c138186613090565b90508181036060830152613c278185612f62565b9050613c366080830184613aab565b9695505050505050565b600060a082019050613c556000830188612d69565b613c626020830187613aab565b8181036040830152613c74818661313b565b90508181036060830152613c888185612fd4565b9050613c976080830184613aab565b9695505050505050565b60006080820190508181036000830152613cbb8187612d78565b90508181036020830152613ccf8186612ec0565b90508181036040830152613ce38185612e4b565b90508181036060830152613cf78184612dd6565b905095945050505050565b6000602082019050613d176000830184612f3c565b92915050565b6000608082019050613d326000830187612f3c565b613d3f6020830186612f3c565b613d4c6040830185613aab565b613d596060830184612d69565b95945050505050565b6000606082019050613d776000830186612f3c565b613d846020830185613aab565b613d916040830184612f2d565b949350505050565b6000608082019050613dae6000830187612f3c565b613dbb6020830186613aba565b613dc86040830185612f3c565b613dd56060830184612f3c565b95945050505050565b6000602082019050613df36000830184613063565b92915050565b6000602082019050613e0e6000830184613072565b92915050565b6000602082019050613e296000830184613081565b92915050565b60006020820190508181036000830152613e498184613102565b905092915050565b60006020820190508181036000830152613e6a816131ca565b9050919050565b60006020820190508181036000830152613e8a81613256565b9050919050565b60006020820190508181036000830152613eaa81613322565b9050919050565b60006020820190508181036000830152613eca81613388565b9050919050565b60006020820190508181036000830152613eea816133ee565b9050919050565b60006020820190508181036000830152613f0a8161347a565b9050919050565b60006020820190508181036000830152613f2a816134e0565b9050919050565b60006020820190508181036000830152613f4a81613612565b9050919050565b60006020820190508181036000830152613f6a8161369e565b9050919050565b60006020820190508181036000830152613f8a81613704565b9050919050565b60006020820190508181036000830152613faa81613790565b9050919050565b60006020820190508181036000830152613fca816137f6565b9050919050565b60006020820190508181036000830152613fea8161385c565b9050919050565b6000602082019050818103600083015261400a816138c2565b9050919050565b6000602082019050818103600083015261402a8161394e565b9050919050565b6000602082019050818103600083015261404a816139b4565b9050919050565b6000602082019050818103600083015261406a81613a1a565b9050919050565b60006060820190506140866000830184613a5a565b92915050565b60006020820190506140a16000830184613aab565b92915050565b6000610120820190506140bd600083018c613aab565b6140ca602083018b612d4b565b81810360408301526140dc818a612d78565b905081810360608301526140f08189612ec0565b905081810360808301526141048188612e4b565b905081810360a08301526141188187612dd6565b905061412760c0830186613aab565b61413460e0830185613aab565b8181036101008301526141478184613090565b90509a9950505050505050505050565b60006101208201905061416d600083018c613aab565b61417a602083018b612d69565b614187604083018a613aab565b6141946060830189613aab565b6141a16080830188613aab565b6141ae60a0830187613aab565b6141bb60c0830186613aab565b6141c860e0830185612f2d565b6141d6610100830184612f2d565b9a9950505050505050505050565b60006040820190506141f96000830185613aab565b6142066020830184613aab565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561423057600080fd5b8060405250919050565b600067ffffffffffffffff82111561425157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561427957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156142a157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156142c957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156142f157600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561431d57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561434957600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561437557600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061451e8261454e565b9050919050565b60008115159050919050565b6000819050919050565b60008190506145498261469c565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b60006145a882614609565b9050919050565b60006145ba826145c1565b9050919050565b60006145cc8261454e565b9050919050565b60006145de826145e5565b9050919050565b60006145f08261454e565b9050919050565b60006146028261453b565b9050919050565b60006146148261461b565b9050919050565b60006146268261454e565b9050919050565b600061463882614585565b9050919050565b82818337600083830152505050565b60005b8381101561466c578082015181840152602081019050614651565b8381111561467b576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b600881106146a657fe5b50565b6146b281614513565b81146146bd57600080fd5b50565b6146c981614525565b81146146d457600080fd5b50565b6146e081614531565b81146146eb57600080fd5b50565b6146f78161456e565b811461470257600080fd5b50565b61470e81614578565b811461471957600080fd5b50565b61472581614585565b811461473057600080fd5b5056fea365627a7a7231582089eeb75378ffec422cf639d84c55be4d142fb9256e558ea0eb3a2f00df71c70b6c6578706572696d656e74616cf564736f6c63430005100040608060405234801561001057600080fd5b506040516120213803806120218339818101604052604081101561003357600080fd5b8101908080519060200190929190805190602001909291905050506202a3008110156100aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180611fb26037913960400191505060405180910390fd5b62278d00811115610106576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611fe96038913960400191505060405180910390fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806002819055505050611e548061015e6000396000f3fe6080604052600436106100c25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e21461074a578063e177246e14610775578063f2b06537146107b0578063f851a44014610803576100c2565b80636a42b8f8146106c95780637d645fab146106f4578063b1b43ae51461071f576100c2565b80630825f38f146100c45780630e18b681146102d057806326782247146102e75780633a66f9011461033e5780634dd18bf5146104e5578063591fcdfe14610536575b005b3480156100d057600080fd5b50610255600480360360a08110156100e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561012e57600080fd5b82018360208201111561014057600080fd5b8035906020019184600183028401116401000000008311171561016257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156101c557600080fd5b8201836020820111156101d757600080fd5b803590602001918460018302840111640100000000831117156101f957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919050505061085a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029557808201518184015260208101905061027a565b50505050905090810190601f1680156102c25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102dc57600080fd5b506102e5610edb565b005b3480156102f357600080fd5b506102fc611069565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561034a57600080fd5b506104cf600480360360a081101561036157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156103a857600080fd5b8201836020820111156103ba57600080fd5b803590602001918460018302840111640100000000831117156103dc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561043f57600080fd5b82018360208201111561045157600080fd5b8035906020019184600183028401116401000000008311171561047357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919050505061108f565b6040518082815260200191505060405180910390f35b3480156104f157600080fd5b506105346004803603602081101561050857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611455565b005b34801561054257600080fd5b506106c7600480360360a081101561055957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105a057600080fd5b8201836020820111156105b257600080fd5b803590602001918460018302840111640100000000831117156105d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561063757600080fd5b82018360208201111561064957600080fd5b8035906020019184600183028401116401000000008311171561066b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050611582565b005b3480156106d557600080fd5b506106de6118cd565b6040518082815260200191505060405180910390f35b34801561070057600080fd5b506107096118d3565b6040518082815260200191505060405180910390f35b34801561072b57600080fd5b506107346118da565b6040518082815260200191505060405180910390f35b34801561075657600080fd5b5061075f6118e1565b6040518082815260200191505060405180910390f35b34801561078157600080fd5b506107ae6004803603602081101561079857600080fd5b81019080803590602001909291905050506118e8565b005b3480156107bc57600080fd5b506107e9600480360360208110156107d357600080fd5b8101908080359060200190929190505050611a5d565b604051808215151515815260200191505060405180910390f35b34801561080f57600080fd5b50610818611a7d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60606000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610901576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611b336038913960400191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561098d578082015181840152602081019050610972565b50505050905090810190601f1680156109ba5780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156109f35780820151818401526020810190506109d8565b50505050905090810190601f168015610a205780820380516001836020036101000a031916815260200191505b509750505050505050506040516020818303038152906040528051906020012090506003600082815260200190815260200160002060009054906101000a900460ff16610ab8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180611c86603d913960400191505060405180910390fd5b82610ac1611aa2565b1015610b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180611bd56045913960600191505060405180910390fd5b610b2e6212750084611aaa90919063ffffffff16565b610b36611aa2565b1115610b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180611ba26033913960400191505060405180910390fd5b60006003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055506060600086511415610bcd57849050610c88565b85805190602001208560405160200180837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040182805190602001908083835b60208310610c505780518252602082019150602081019050602083039250610c2d565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b600060608973ffffffffffffffffffffffffffffffffffffffff1689846040518082805190602001908083835b60208310610cd85780518252602082019150602081019050602083039250610cb5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610d3a576040519150601f19603f3d011682016040523d82523d6000602084013e610d3f565b606091505b509150915081610d9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180611d69603d913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610e27578082015181840152602081019050610e0c565b50505050905090810190601f168015610e545780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b83811015610e8d578082015181840152602081019050610e72565b50505050905090810190601f168015610eba5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a38094505050505095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611cc36038913960400191505060405180910390fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c60405160405180910390a2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611136576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180611d336036913960400191505060405180910390fd5b611152600254611144611aa2565b611aaa90919063ffffffff16565b8210156111aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526049815260200180611da66049913960600191505060405180910390fd5b60008686868686604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561123657808201518184015260208101905061121b565b50505050905090810190601f1680156112635780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b8381101561129c578082015181840152602081019050611281565b50505050905090810190601f1680156112c95780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156113a4578082015181840152602081019050611389565b50505050905090810190601f1680156113d15780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b8381101561140a5780820151818401526020810190506113ef565b50505050905090810190601f1680156114375780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a38091505095945050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611cfb6038913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75660405160405180910390a250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611627576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180611b6b6037913960400191505060405180910390fd5b60008585858585604051602001808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156116b3578082015181840152602081019050611698565b50505050905090810190601f1680156116e05780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156117195780820151818401526020810190506116fe565b50505050905090810190601f1680156117465780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015611821578082015181840152602081019050611806565b50505050905090810190601f16801561184e5780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b8381101561188757808201518184015260208101905061186c565b50505050905090810190601f1680156118b45780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b6202a30081565b6212750081565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461196c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611def6031913960400191505060405180910390fd5b6202a3008110156119c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180611c1a6034913960400191505060405180910390fd5b62278d00811115611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611c4e6038913960400191505060405180910390fd5b806002819055506002547f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c60405160405180910390a250565b60036020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600042905090565b600080828401905083811015611b28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a723158206c26706673361fd4c9f9a17ae4b7d6de1852b82e58260d10ab65d9b951adc3ab64736f6c6343000510003254696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e00000000000000000000000041d5d79431a913c4ae7d69a668ecdfe5ff9dfb68
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101425760003560e01c806340e58ee5116100b8578063da35c6641161007c578063da35c66414610374578063da95691a14610392578063ddf0b009146103c2578063deaaa7cc146103de578063e23a9a52146103fc578063fe0d94c11461042c57610142565b806340e58ee5146102e25780634634c61f146102fe5780637bdbe4d01461031a578063b58131b014610338578063d33219b41461035657610142565b806317977c611161010a57806317977c61146101f557806320606b701461022557806324bc1a6414610243578063328dd982146102615780633932abb1146102945780633e4f49e6146102b257610142565b8063013cf08b1461014757806302a251a31461017f578063032d09611461019d57806306fdde03146101bb57806315373e3d146101d9575b600080fd5b610161600480360361015c9190810190612b89565b610448565b60405161017699989796959493929190614157565b60405180910390f35b6101876104d0565b604051610194919061408c565b60405180910390f35b6101a56104da565b6040516101b29190613dde565b60405180910390f35b6101c3610500565b6040516101d09190613e2f565b60405180910390f35b6101f360048036036101ee9190810190612c17565b610539565b005b61020f600480360361020a91908101906129de565b610548565b60405161021c919061408c565b60405180910390f35b61022d610560565b60405161023a9190613d02565b60405180910390f35b61024b610577565b604051610258919061408c565b60405180910390f35b61027b60048036036102769190810190612b89565b610588565b60405161028b9493929190613ca1565b60405180910390f35b61029c610865565b6040516102a9919061408c565b60405180910390f35b6102cc60048036036102c79190810190612b89565b61086e565b6040516102d99190613e14565b60405180910390f35b6102fc60048036036102f79190810190612b89565b610a52565b005b61031860048036036103139190810190612c53565b610d96565b005b610322610f65565b60405161032f919061408c565b60405180910390f35b610340610f6e565b60405161034d919061408c565b60405180910390f35b61035e610f7f565b60405161036b9190613df9565b60405180910390f35b61037c610fa4565b604051610389919061408c565b60405180910390f35b6103ac60048036036103a79190810190612a07565b610faa565b6040516103b9919061408c565b60405180910390f35b6103dc60048036036103d79190810190612b89565b611577565b005b6103e66118c6565b6040516103f39190613d02565b60405180910390f35b61041660048036036104119190810190612bdb565b6118dd565b6040516104239190614071565b60405180910390f35b61044660048036036104419190810190612b89565b6119bf565b005b60036020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600201549080600701549080600801549080600901549080600a01549080600b0160009054906101000a900460ff169080600b0160019054906101000a900460ff16905089565b6000614380905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280601681526020017f496e766572736520476f7665726e6f7220416c7068610000000000000000000081525081565b610544338383611bf2565b5050565b60046020528060005260406000206000915090505481565b60405161056c90613b1e565b604051809103902081565b600068d8d726b7177a800000905090565b6060806060806000600360008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561063657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116105ec575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561068857602002820191906000526020600020905b815481526020019060010190808311610674575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561076c578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107585780601f1061072d57610100808354040283529160200191610758565b820191906000526020600020905b81548152906001019060200180831161073b57829003601f168201915b5050505050815260200190600101906106b0565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561084f578382906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561083b5780601f106108105761010080835404028352916020019161083b565b820191906000526020600020905b81548152906001019060200180831161081e57829003601f168201915b505050505081526020019060010190610793565b5050505090509450945094509450509193509193565b60006001905090565b600081600254101580156108825750600082115b6108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890613e91565b60405180910390fd5b600060036000848152602001908152602001600020905080600b0160009054906101000a900460ff16156108f9576002915050610a4d565b8060070154431161090e576000915050610a4d565b80600801544311610923576001915050610a4d565b80600a01548160090154111580610944575061093d610577565b8160090154105b15610953576003915050610a4d565b60008160020154141561096a576004915050610a4d565b80600b0160019054906101000a900460ff161561098b576007915050610a4d565b610a3781600201546000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1a287e26040518163ffffffff1660e01b815260040160206040518083038186803b1580156109fa57600080fd5b505afa158015610a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a329190810190612bb2565b611ec1565b4210610a47576006915050610a4d565b60059150505b919050565b6000610a5d8261086e565b9050600780811115610a6b57fe5b816007811115610a7757fe5b1415610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf90614011565b60405180910390fd5b6000600360008481526020019081526020016000209050610ad7610f6e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe18360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b45436001611f16565b6040518363ffffffff1660e01b8152600401610b62929190613b71565b60206040518083038186803b158015610b7a57600080fd5b505afa158015610b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bb29190810190612cca565b6bffffffffffffffffffffffff1610610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790613f51565b60405180910390fd5b600181600b0160006101000a81548160ff02191690831515021790555060008090505b8160030180549050811015610d59576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663591fcdfe836003018381548110610c7e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846004018481548110610cb857fe5b9060005260206000200154856005018581548110610cd257fe5b90600052602060002001866006018681548110610ceb57fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401610d1a959493929190613c40565b600060405180830381600087803b158015610d3457600080fd5b505af1158015610d48573d6000803e3d6000fd5b505050508080600101915050610c23565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610d89919061408c565b60405180910390a1505050565b6000604051610da490613b1e565b60405180910390206040518060400160405280601681526020017f496e766572736520476f7665726e6f7220416c7068610000000000000000000081525080519060200120610df1611f66565b30604051602001610e059493929190613d1d565b6040516020818303038152906040528051906020012090506000604051610e2b90613b33565b60405180910390208787604051602001610e4793929190613d62565b60405160208183030381529060405280519060200120905060008282604051602001610e74929190613ae7565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610eb19493929190613d99565b6020604051602081039080840390855afa158015610ed3573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4690613fd1565b60405180910390fd5b610f5a818a8a611bf2565b505050505050505050565b60006014905090565b6000683635c9adc5dea00000905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000610fb4610f6e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe133610ffe436001611f16565b6040518363ffffffff1660e01b815260040161101b929190613b48565b60206040518083038186803b15801561103357600080fd5b505afa158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061106b9190810190612cca565b6bffffffffffffffffffffffff16116110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b090613fb1565b60405180910390fd5b845186511480156110cb575083518651145b80156110d8575082518651145b611117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110e90613f31565b60405180910390fd5b60008651141561115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613f91565b60405180910390fd5b611164610f65565b865111156111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119e90613ef1565b60405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146112b65760006111fe8261086e565b90506001600781111561120d57fe5b81600781111561121957fe5b141561125a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125190613ff1565b60405180910390fd5b6000600781111561126757fe5b81600781111561127357fe5b14156112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ab90613ed1565b60405180910390fd5b505b60006112c9436112c4610865565b611ec1565b905060006112de826112d96104d0565b611ec1565b90506002600081548092919060010191905055506112fa612147565b604051806101a0016040528060025481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581525090508060036000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030190805190602001906114049291906121c9565b506080820151816004019080519060200190611421929190612253565b5060a082015181600501908051906020019061143e9291906122a0565b5060c082015181600601908051906020019061145b929190612300565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff021916908315150217905550905050806000015160046000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e60405161155b999897969594939291906140a7565b60405180910390a1806000015194505050505095945050505050565b6004600781111561158457fe5b61158d8261086e565b600781111561159857fe5b146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cf90613e51565b60405180910390fd5b60006003600083815260200190815260200160002090506000611699426000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561165c57600080fd5b505afa158015611670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116949190810190612bb2565b611ec1565b905060008090505b826003018054905081101561187e576118718360030182815481106116c257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460040183815481106116fc57fe5b906000526020600020015485600501848154811061171657fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117b45780601f10611789576101008083540402835291602001916117b4565b820191906000526020600020905b81548152906001019060200180831161179757829003601f168201915b50505050508660060185815481106117c857fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118665780601f1061183b57610100808354040283529160200191611866565b820191906000526020600020905b81548152906001019060200180831161184957829003601f168201915b505050505086611f73565b80806001019150506116a1565b508082600201819055507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289283826040516118b99291906141e4565b60405180910390a1505050565b6040516118d290613b33565b604051809103902081565b6118e5612360565b60036000848152602001908152602001600020600c0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff161515151581526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b600560078111156119cc57fe5b6119d58261086e565b60078111156119e057fe5b14611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1790613e71565b60405180910390fd5b6000600360008381526020019081526020016000209050600181600b0160016101000a81548160ff02191690831515021790555060008090505b8160030180549050811015611bb6576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630825f38f836003018381548110611ab557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846004018481548110611aef57fe5b9060005260206000200154856005018581548110611b0957fe5b90600052602060002001866006018681548110611b2257fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401611b51959493929190613c40565b600060405180830381600087803b158015611b6b57600080fd5b505af1158015611b7f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250611ba89190810190612b48565b508080600101915050611a5a565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611be6919061408c565b60405180910390a15050565b60016007811115611bff57fe5b611c088361086e565b6007811115611c1357fe5b14611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4a90614031565b60405180910390fd5b6000600360008481526020019081526020016000209050600081600c0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600015158160000160009054906101000a900460ff16151514611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe90613eb1565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe18785600701546040518363ffffffff1660e01b8152600401611d6a929190613b71565b60206040518083038186803b158015611d8257600080fd5b505afa158015611d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dba9190810190612cca565b90508315611deb57611dde8360090154826bffffffffffffffffffffffff16611ec1565b8360090181905550611e10565b611e0783600a0154826bffffffffffffffffffffffff16611ec1565b83600a01819055505b60018260000160006101000a81548160ff021916908315150217905550838260000160016101000a81548160ff021916908315150217905550808260000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055507f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4686868684604051611eb19493929190613b9a565b60405180910390a1505050505050565b600080828401905083811015611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390613f11565b60405180910390fd5b8091505092915050565b600082821115611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5290614051565b60405180910390fd5b818303905092915050565b6000804690508091505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2b065378686868686604051602001611fc9959493929190613bdf565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611ffb9190613d02565b60206040518083038186803b15801561201357600080fd5b505afa158015612027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061204b9190810190612af6565b1561208b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208290613f71565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a66f90186868686866040518663ffffffff1660e01b81526004016120ed959493929190613bdf565b602060405180830381600087803b15801561210757600080fd5b505af115801561211b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061213f9190810190612b1f565b505050505050565b604051806101a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b828054828255906000526020600020908101928215612242579160200282015b828111156122415782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906121e9565b5b50905061224f9190612393565b5090565b82805482825590600052602060002090810192821561228f579160200282015b8281111561228e578251825591602001919060010190612273565b5b50905061229c91906123d6565b5090565b8280548282559060005260206000209081019282156122ef579160200282015b828111156122ee5782518290805190602001906122de9291906123fb565b50916020019190600101906122c0565b5b5090506122fc919061247b565b5090565b82805482825590600052602060002090810192821561234f579160200282015b8281111561234e57825182908051906020019061233e9291906124a7565b5091602001919060010190612320565b5b50905061235c9190612527565b5090565b604051806060016040528060001515815260200160001515815260200160006bffffffffffffffffffffffff1681525090565b6123d391905b808211156123cf57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612399565b5090565b90565b6123f891905b808211156123f45760008160009055506001016123dc565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061243c57805160ff191683800117855561246a565b8280016001018555821561246a579182015b8281111561246957825182559160200191906001019061244e565b5b50905061247791906123d6565b5090565b6124a491905b808211156124a057600081816124979190612553565b50600101612481565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106124e857805160ff1916838001178555612516565b82800160010185558215612516579182015b828111156125155782518255916020019190600101906124fa565b5b50905061252391906123d6565b5090565b61255091905b8082111561254c5760008181612543919061259b565b5060010161252d565b5090565b90565b50805460018160011615610100020316600290046000825580601f106125795750612598565b601f01602090049060005260206000209081019061259791906123d6565b5b50565b50805460018160011615610100020316600290046000825580601f106125c157506125e0565b601f0160209004906000526020600020908101906125df91906123d6565b5b50565b6000813590506125f2816146a9565b92915050565b600082601f83011261260957600080fd5b813561261c6126178261423a565b61420d565b9150818183526020840193506020810190508385602084028201111561264157600080fd5b60005b83811015612671578161265788826125e3565b845260208401935060208301925050600181019050612644565b5050505092915050565b600082601f83011261268c57600080fd5b813561269f61269a82614262565b61420d565b9150818183526020840193506020810190508360005b838110156126e557813586016126cb888261283a565b8452602084019350602083019250506001810190506126b5565b5050505092915050565b600082601f83011261270057600080fd5b813561271361270e8261428a565b61420d565b9150818183526020840193506020810190508360005b83811015612759578135860161273f88826128e2565b845260208401935060208301925050600181019050612729565b5050505092915050565b600082601f83011261277457600080fd5b8135612787612782826142b2565b61420d565b915081818352602084019350602081019050838560208402820111156127ac57600080fd5b60005b838110156127dc57816127c2888261298a565b8452602084019350602083019250506001810190506127af565b5050505092915050565b6000813590506127f5816146c0565b92915050565b60008151905061280a816146c0565b92915050565b60008135905061281f816146d7565b92915050565b600081519050612834816146d7565b92915050565b600082601f83011261284b57600080fd5b813561285e612859826142da565b61420d565b9150808252602083016020830185838301111561287a57600080fd5b61288583828461463f565b50505092915050565b600082601f83011261289f57600080fd5b81516128b26128ad82614306565b61420d565b915080825260208301602083018583830111156128ce57600080fd5b6128d983828461464e565b50505092915050565b600082601f8301126128f357600080fd5b813561290661290182614332565b61420d565b9150808252602083016020830185838301111561292257600080fd5b61292d83828461463f565b50505092915050565b600082601f83011261294757600080fd5b813561295a6129558261435e565b61420d565b9150808252602083016020830185838301111561297657600080fd5b61298183828461463f565b50505092915050565b600081359050612999816146ee565b92915050565b6000815190506129ae816146ee565b92915050565b6000813590506129c381614705565b92915050565b6000815190506129d88161471c565b92915050565b6000602082840312156129f057600080fd5b60006129fe848285016125e3565b91505092915050565b600080600080600060a08688031215612a1f57600080fd5b600086013567ffffffffffffffff811115612a3957600080fd5b612a45888289016125f8565b955050602086013567ffffffffffffffff811115612a6257600080fd5b612a6e88828901612763565b945050604086013567ffffffffffffffff811115612a8b57600080fd5b612a97888289016126ef565b935050606086013567ffffffffffffffff811115612ab457600080fd5b612ac08882890161267b565b925050608086013567ffffffffffffffff811115612add57600080fd5b612ae988828901612936565b9150509295509295909350565b600060208284031215612b0857600080fd5b6000612b16848285016127fb565b91505092915050565b600060208284031215612b3157600080fd5b6000612b3f84828501612825565b91505092915050565b600060208284031215612b5a57600080fd5b600082015167ffffffffffffffff811115612b7457600080fd5b612b808482850161288e565b91505092915050565b600060208284031215612b9b57600080fd5b6000612ba98482850161298a565b91505092915050565b600060208284031215612bc457600080fd5b6000612bd28482850161299f565b91505092915050565b60008060408385031215612bee57600080fd5b6000612bfc8582860161298a565b9250506020612c0d858286016125e3565b9150509250929050565b60008060408385031215612c2a57600080fd5b6000612c388582860161298a565b9250506020612c49858286016127e6565b9150509250929050565b600080600080600060a08688031215612c6b57600080fd5b6000612c798882890161298a565b9550506020612c8a888289016127e6565b9450506040612c9b888289016129b4565b9350506060612cac88828901612810565b9250506080612cbd88828901612810565b9150509295509295909350565b600060208284031215612cdc57600080fd5b6000612cea848285016129c9565b91505092915050565b6000612cff8383612d5a565b60208301905092915050565b6000612d178383612f9b565b905092915050565b6000612d2b83836130c9565b905092915050565b6000612d3f8383613a9c565b60208301905092915050565b612d548161459d565b82525050565b612d6381614513565b82525050565b612d7281614513565b82525050565b6000612d83826143f4565b612d8d8185614480565b9350612d988361438a565b8060005b83811015612dc9578151612db08882612cf3565b9750612dbb8361444c565b925050600181019050612d9c565b5085935050505092915050565b6000612de1826143ff565b612deb8185614491565b935083602082028501612dfd8561439a565b8060005b85811015612e395784840389528151612e1a8582612d0b565b9450612e2583614459565b925060208a01995050600181019050612e01565b50829750879550505050505092915050565b6000612e568261440a565b612e6081856144a2565b935083602082028501612e72856143aa565b8060005b85811015612eae5784840389528151612e8f8582612d1f565b9450612e9a83614466565b925060208a01995050600181019050612e76565b50829750879550505050505092915050565b6000612ecb82614415565b612ed581856144b3565b9350612ee0836143ba565b8060005b83811015612f11578151612ef88882612d33565b9750612f0383614473565b925050600181019050612ee4565b5085935050505092915050565b612f2781614525565b82525050565b612f3681614525565b82525050565b612f4581614531565b82525050565b612f5c612f5782614531565b614681565b82525050565b6000612f6d8261442b565b612f7781856144d5565b9350612f8781856020860161464e565b612f908161468b565b840191505092915050565b6000612fa682614420565b612fb081856144c4565b9350612fc081856020860161464e565b612fc98161468b565b840191505092915050565b600081546001811660008114612ff157600181146130175761305b565b607f600283041661300281876144d5565b955060ff19831686526020860193505061305b565b6002820461302581876144d5565b9550613030856143ca565b60005b8281101561305257815481890152600182019150602081019050613033565b80880195505050505b505092915050565b61306c816145af565b82525050565b61307b816145d3565b82525050565b61308a816145f7565b82525050565b600061309b82614441565b6130a581856144f7565b93506130b581856020860161464e565b6130be8161468b565b840191505092915050565b60006130d482614436565b6130de81856144e6565b93506130ee81856020860161464e565b6130f78161468b565b840191505092915050565b600061310d82614436565b61311781856144f7565b935061312781856020860161464e565b6131308161468b565b840191505092915050565b600081546001811660008114613158576001811461317e576131c2565b607f600283041661316981876144f7565b955060ff1983168652602086019350506131c2565b6002820461318c81876144f7565b9550613197856143df565b60005b828110156131b95781548189015260018201915060208101905061319a565b80880195505050505b505092915050565b60006131d76044836144f7565b91507f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206360008301527f616e206f6e6c792062652071756575656420696620697420697320737563636560208301527f65646564000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006132636045836144f7565b91507f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c60008301527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208301527f75657565640000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006132ef600283614508565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b600061332f6029836144f7565b91507f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707260008301527f6f706f73616c20696400000000000000000000000000000000000000000000006020830152604082019050919050565b6000613395602d836144f7565b91507f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722060008301527f616c726561647920766f746564000000000000000000000000000000000000006020830152604082019050919050565b60006133fb6059836144f7565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766560008301527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208301527f20616c72656164792070656e64696e672070726f706f73616c000000000000006040830152606082019050919050565b60006134876028836144f7565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7960008301527f20616374696f6e730000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134ed6011836144f7565b91507f6164646974696f6e206f766572666c6f770000000000000000000000000000006000830152602082019050919050565b600061352d604383614508565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b60006135b9602783614508565b91507f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207360008301527f7570706f727429000000000000000000000000000000000000000000000000006020830152602782019050919050565b600061361f6044836144f7565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c60008301527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208301527f61746368000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006136ab602f836144f7565b91507f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722060008301527f61626f7665207468726573686f6c6400000000000000000000000000000000006020830152604082019050919050565b60006137116044836144f7565b91507f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207060008301527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208301527f20657461000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b600061379d602c836144f7565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f60008301527f7669646520616374696f6e7300000000000000000000000000000000000000006020830152604082019050919050565b6000613803603f836144f7565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657260008301527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c64006020830152604082019050919050565b6000613869602f836144f7565b91507f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e60008301527f76616c6964207369676e617475726500000000000000000000000000000000006020830152604082019050919050565b60006138cf6058836144f7565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766560008301527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208301527f20616c7265616479206163746976652070726f706f73616c00000000000000006040830152606082019050919050565b600061395b6036836144f7565b91507f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f7420636160008301527f6e63656c2065786563757465642070726f706f73616c000000000000000000006020830152604082019050919050565b60006139c1602a836144f7565b91507f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e6760008301527f20697320636c6f736564000000000000000000000000000000000000000000006020830152604082019050919050565b6000613a276015836144f7565b91507f7375627472616374696f6e20756e646572666c6f7700000000000000000000006000830152602082019050919050565b606082016000820151613a706000850182612f1e565b506020820151613a836020850182612f1e565b506040820151613a966040850182613ad8565b50505050565b613aa58161456e565b82525050565b613ab48161456e565b82525050565b613ac381614578565b82525050565b613ad28161462d565b82525050565b613ae181614585565b82525050565b6000613af2826132e2565b9150613afe8285612f4b565b602082019150613b0e8284612f4b565b6020820191508190509392505050565b6000613b2982613520565b9150819050919050565b6000613b3e826135ac565b9150819050919050565b6000604082019050613b5d6000830185612d4b565b613b6a6020830184613aab565b9392505050565b6000604082019050613b866000830185612d69565b613b936020830184613aab565b9392505050565b6000608082019050613baf6000830187612d69565b613bbc6020830186613aab565b613bc96040830185612f2d565b613bd66060830184613ac9565b95945050505050565b600060a082019050613bf46000830188612d69565b613c016020830187613aab565b8181036040830152613c138186613090565b90508181036060830152613c278185612f62565b9050613c366080830184613aab565b9695505050505050565b600060a082019050613c556000830188612d69565b613c626020830187613aab565b8181036040830152613c74818661313b565b90508181036060830152613c888185612fd4565b9050613c976080830184613aab565b9695505050505050565b60006080820190508181036000830152613cbb8187612d78565b90508181036020830152613ccf8186612ec0565b90508181036040830152613ce38185612e4b565b90508181036060830152613cf78184612dd6565b905095945050505050565b6000602082019050613d176000830184612f3c565b92915050565b6000608082019050613d326000830187612f3c565b613d3f6020830186612f3c565b613d4c6040830185613aab565b613d596060830184612d69565b95945050505050565b6000606082019050613d776000830186612f3c565b613d846020830185613aab565b613d916040830184612f2d565b949350505050565b6000608082019050613dae6000830187612f3c565b613dbb6020830186613aba565b613dc86040830185612f3c565b613dd56060830184612f3c565b95945050505050565b6000602082019050613df36000830184613063565b92915050565b6000602082019050613e0e6000830184613072565b92915050565b6000602082019050613e296000830184613081565b92915050565b60006020820190508181036000830152613e498184613102565b905092915050565b60006020820190508181036000830152613e6a816131ca565b9050919050565b60006020820190508181036000830152613e8a81613256565b9050919050565b60006020820190508181036000830152613eaa81613322565b9050919050565b60006020820190508181036000830152613eca81613388565b9050919050565b60006020820190508181036000830152613eea816133ee565b9050919050565b60006020820190508181036000830152613f0a8161347a565b9050919050565b60006020820190508181036000830152613f2a816134e0565b9050919050565b60006020820190508181036000830152613f4a81613612565b9050919050565b60006020820190508181036000830152613f6a8161369e565b9050919050565b60006020820190508181036000830152613f8a81613704565b9050919050565b60006020820190508181036000830152613faa81613790565b9050919050565b60006020820190508181036000830152613fca816137f6565b9050919050565b60006020820190508181036000830152613fea8161385c565b9050919050565b6000602082019050818103600083015261400a816138c2565b9050919050565b6000602082019050818103600083015261402a8161394e565b9050919050565b6000602082019050818103600083015261404a816139b4565b9050919050565b6000602082019050818103600083015261406a81613a1a565b9050919050565b60006060820190506140866000830184613a5a565b92915050565b60006020820190506140a16000830184613aab565b92915050565b6000610120820190506140bd600083018c613aab565b6140ca602083018b612d4b565b81810360408301526140dc818a612d78565b905081810360608301526140f08189612ec0565b905081810360808301526141048188612e4b565b905081810360a08301526141188187612dd6565b905061412760c0830186613aab565b61413460e0830185613aab565b8181036101008301526141478184613090565b90509a9950505050505050505050565b60006101208201905061416d600083018c613aab565b61417a602083018b612d69565b614187604083018a613aab565b6141946060830189613aab565b6141a16080830188613aab565b6141ae60a0830187613aab565b6141bb60c0830186613aab565b6141c860e0830185612f2d565b6141d6610100830184612f2d565b9a9950505050505050505050565b60006040820190506141f96000830185613aab565b6142066020830184613aab565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561423057600080fd5b8060405250919050565b600067ffffffffffffffff82111561425157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561427957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156142a157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156142c957600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156142f157600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561431d57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561434957600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561437557600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061451e8261454e565b9050919050565b60008115159050919050565b6000819050919050565b60008190506145498261469c565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b60006145a882614609565b9050919050565b60006145ba826145c1565b9050919050565b60006145cc8261454e565b9050919050565b60006145de826145e5565b9050919050565b60006145f08261454e565b9050919050565b60006146028261453b565b9050919050565b60006146148261461b565b9050919050565b60006146268261454e565b9050919050565b600061463882614585565b9050919050565b82818337600083830152505050565b60005b8381101561466c578082015181840152602081019050614651565b8381111561467b576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b600881106146a657fe5b50565b6146b281614513565b81146146bd57600080fd5b50565b6146c981614525565b81146146d457600080fd5b50565b6146e081614531565b81146146eb57600080fd5b50565b6146f78161456e565b811461470257600080fd5b50565b61470e81614578565b811461471957600080fd5b50565b61472581614585565b811461473057600080fd5b5056fea365627a7a7231582089eeb75378ffec422cf639d84c55be4d142fb9256e558ea0eb3a2f00df71c70b6c6578706572696d656e74616cf564736f6c63430005100040
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000041d5d79431a913c4ae7d69a668ecdfe5ff9dfb68
-----Decoded View---------------
Arg [0] : inv_ (address): 0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000041d5d79431a913c4ae7d69a668ecdfe5ff9dfb68
Loading...
Loading
Loading...
Loading
OVERVIEW
Added based on https://docs.inverse.finance/smart-contracts - Azfar 20/10Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.