Overview
FTM Balance
0 FTM
FTM Value
$0.00More Info
Private Name Tags
ContractCreator:
Sponsored
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
44943725 | 592 days ago | Contract Creation | 0 FTM |
Loading...
Loading
Contract Name:
DAOTreasury
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2022-08-15 */ interface IBaseV1Pair { function stable() external view returns(bool); function token0() external view returns(address); function token1() external view returns(address); } interface IConverter { function getLDInETH(address _LD, uint _amount, bool stable) external view returns(uint); function tradeLD(address from, address to, uint amount) external; } interface IVoter { function totalVotes() external view returns(uint); function votesPerPool(address) external view returns(uint); } interface ITreasury { function transferOwnership(address newOwner) external; function manage(uint256 _amount, address _token, address _to) external; } pragma solidity ^0.8.0; // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract DAOTreasury is Ownable { using SafeMath for uint; ITreasury public treasury; IVoter public voter; IConverter public converter; // how much can be sub from LD token in LD token number mapping(address => uint) public subLD; // how much can be add to LD token in LD token number mapping(address => uint) public addLD; // how much cost LD token in usd mapping(address => uint) private LDTokenInWETH; // LD token balance in treasury mapping(address => uint) private LDTokenBalance; // pause between call compute function uint public updatePeriod = 0; constructor(address _treasury, address _voter, address _converter) { treasury = ITreasury(_treasury); voter = IVoter(_voter); converter = IConverter(_converter); } // get total current LD in weth value // get total ve votes // get votes per each LD // then compute how much sub and how much add according to votes for each pool function compute(address[] calldata LDtokens) external { // for safe update allow call this only once per week // so users can rebalance require(block.timestamp >= updatePeriod, "Need wait"); // compute total LD in WETH for each LD uint totalLDInWETH = 0; uint totalVeVotes = voter.totalVotes(); for(uint i = 0; i < LDtokens.length; i++){ uint LDAmount = IERC20(LDtokens[i]).balanceOf(address(treasury)); uint LDInWETH = converter.getLDInETH(LDtokens[i], LDAmount, IBaseV1Pair(LDtokens[i]).stable()); totalLDInWETH += LDInWETH; LDTokenInWETH[LDtokens[i]] = LDInWETH; LDTokenBalance[LDtokens[i]] = LDAmount; } // compute sub or add action for(uint j; j < LDtokens.length; j++){ uint WETHPercent = LDTokenInWETH[LDtokens[j]] .mul(LDTokenInWETH[LDtokens[j]]) .div(totalLDInWETH); uint VotesPercent = LDTokenInWETH[LDtokens[j]] .mul(voter.votesPerPool(LDtokens[j])) .div(totalVeVotes); // Compute action for LD token // if curent LD > voted LD, then do sub // if voted LD > current LD, then do add // require sub % from current LD if(WETHPercent > VotesPercent){ // sub subLD[LDtokens[j]] = WETHPercent.sub(VotesPercent); addLD[LDtokens[j]] = 0; } // require add % from current LD else if(VotesPercent > WETHPercent){ // add addLD[LDtokens[j]] = VotesPercent.sub(WETHPercent); subLD[LDtokens[j]] = 0; } // no need updates else { // reset addLD[LDtokens[j]] = 0; subLD[LDtokens[j]] = 0; } } updatePeriod = block.timestamp + 7 days; } // how this works // user send weth value for sub from and add to // we convert subLD[_fromLD] and addLD[_toLD] to weth // then remove LD trade and add LD // then update sub and add function convertLD(address _fromLD, address _toLD, uint _ldAmountFrom) external { // check sub allowance require(subLD[_fromLD] >= _ldAmountFrom, "sub limit"); uint ldToBefore = IERC20(_toLD).balanceOf(address(treasury)); // tranfer to conveter treasury.manage(_ldAmountFrom, _fromLD, address(converter)); // convert converter.tradeLD(_fromLD, _toLD, _ldAmountFrom); // update sub allowance subLD[_fromLD] = subLD[_fromLD].sub(_ldAmountFrom); // check add allowance uint ldToAfter = IERC20(_toLD).balanceOf(address(treasury)); uint addSum = ldToAfter.sub(ldToBefore); require(addSum <= addLD[_toLD], "add limit"); // update add allowance addLD[_toLD] = addLD[_toLD].sub(addSum); } // allow update voter function updateVoter(address _voter) external onlyOwner { voter = IVoter(_voter); } // allow update converter function updateConverter(address _converter) external onlyOwner { converter = IConverter(_converter); } // alow migrate treasury to new DAO function migrate(address _newDao) external onlyOwner { treasury.transferOwnership(_newDao); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"address","name":"_voter","type":"address"},{"internalType":"address","name":"_converter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"LDtokens","type":"address[]"}],"name":"compute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fromLD","type":"address"},{"internalType":"address","name":"_toLD","type":"address"},{"internalType":"uint256","name":"_ldAmountFrom","type":"uint256"}],"name":"convertLD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"converter","outputs":[{"internalType":"contract IConverter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newDao","type":"address"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"subLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"contract ITreasury","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_converter","type":"address"}],"name":"updateConverter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updatePeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_voter","type":"address"}],"name":"updateVoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"voter","outputs":[{"internalType":"contract IVoter","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405260006008553480156200001657600080fd5b50604051620022573803806200225783398181016040528101906200003c91906200025e565b6200005c620000506200012860201b60201c565b6200013060201b60201c565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620002ba565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200022682620001f9565b9050919050565b620002388162000219565b81146200024457600080fd5b50565b60008151905062000258816200022d565b92915050565b6000806000606084860312156200027a5762000279620001f4565b5b60006200028a8682870162000247565b93505060206200029d8682870162000247565b9250506040620002b08682870162000247565b9150509250925092565b611f8d80620002ca6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063bd38837b1161008c578063da0062fb11610066578063da0062fb14610213578063dbdc67c61461022f578063ea4b14031461025f578063f2fde38b1461027b576100ea565b8063bd38837b146101bd578063ce5494bb146101db578063d5e741d0146101f7576100ea565b8063715018a6116100c8578063715018a61461015b5780638da5cb5b146101655780639e151a4d14610183578063a83627de1461019f576100ea565b806346c96aac146100ef57806347b8197a1461010d57806361d027b31461013d575b600080fd5b6100f7610297565b6040516101049190611727565b60405180910390f35b6101276004803603810190610122919061178a565b6102bd565b60405161013491906117d0565b60405180910390f35b6101456102d5565b604051610152919061180c565b60405180910390f35b6101636102fb565b005b61016d610383565b60405161017a9190611836565b60405180910390f35b61019d6004803603810190610198919061187d565b6103ac565b005b6101a761087d565b6040516101b491906117d0565b60405180910390f35b6101c5610883565b6040516101d291906118f1565b60405180910390f35b6101f560048036038101906101f0919061178a565b6108a9565b005b610211600480360381019061020c919061178a565b6109b5565b005b61022d6004803603810190610228919061178a565b610a75565b005b6102496004803603810190610244919061178a565b610b35565b60405161025691906117d0565b60405180910390f35b61027960048036038101906102749190611971565b610b4d565b005b6102956004803603810190610290919061178a565b6114a2565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61030361159a565b73ffffffffffffffffffffffffffffffffffffffff16610321610383565b73ffffffffffffffffffffffffffffffffffffffff1614610377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036e90611a1b565b60405180910390fd5b61038160006115a2565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561042e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042590611a87565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161048b9190611836565b602060405180830381865afa1580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190611abc565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633b1b77e18386600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b815260040161054f93929190611ae9565b600060405180830381600087803b15801561056957600080fd5b505af115801561057d573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b9bc2d68585856040518463ffffffff1660e01b81526004016105e093929190611b20565b600060405180830381600087803b1580156105fa57600080fd5b505af115801561060e573d6000803e3d6000fd5b5050505061066482600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461166690919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008373ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016107049190611836565b602060405180830381865afa158015610721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107459190611abc565b9050600061075c838361166690919063ffffffff16565b9050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156107e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d790611ba3565b60405180910390fd5b61083281600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461166690919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b60085481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108b161159a565b73ffffffffffffffffffffffffffffffffffffffff166108cf610383565b73ffffffffffffffffffffffffffffffffffffffff1614610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c90611a1b565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff1660e01b81526004016109809190611836565b600060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b5050505050565b6109bd61159a565b73ffffffffffffffffffffffffffffffffffffffff166109db610383565b73ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2890611a1b565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a7d61159a565b73ffffffffffffffffffffffffffffffffffffffff16610a9b610383565b73ffffffffffffffffffffffffffffffffffffffff1614610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae890611a1b565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915090505481565b600854421015610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8990611c0f565b60405180910390fd5b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630d15fd776040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c269190611abc565b905060005b84849050811015610f56576000858583818110610c4b57610c4a611c2f565b5b9050602002016020810190610c60919061178a565b73ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610cba9190611836565b602060405180830381865afa158015610cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfb9190611abc565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633594d7b5888886818110610d5057610d4f611c2f565b5b9050602002016020810190610d65919061178a565b848a8a88818110610d7957610d78611c2f565b5b9050602002016020810190610d8e919061178a565b73ffffffffffffffffffffffffffffffffffffffff166322be3de16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc9190611c96565b6040518463ffffffff1660e01b8152600401610e1a93929190611cd2565b602060405180830381865afa158015610e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5b9190611abc565b90508085610e699190611d38565b94508060066000898987818110610e8357610e82611c2f565b5b9050602002016020810190610e98919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160076000898987818110610eee57610eed611c2f565b5b9050602002016020810190610f03919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050508080610f4e90611d8e565b915050610c2b565b5060005b848490508110156114865760006110588461104a600660008a8a88818110610f8557610f84611c2f565b5b9050602002016020810190610f9a919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008b8b89818110610fec57610feb611c2f565b5b9050602002016020810190611001919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461167c90919063ffffffff16565b61169290919063ffffffff16565b905060006111a98461119b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633eaa00168b8b898181106110b4576110b3611c2f565b5b90506020020160208101906110c9919061178a565b6040518263ffffffff1660e01b81526004016110e59190611836565b602060405180830381865afa158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190611abc565b600660008c8c8a81811061113d5761113c611c2f565b5b9050602002016020810190611152919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461167c90919063ffffffff16565b61169290919063ffffffff16565b9050808211156112a1576111c6818361166690919063ffffffff16565b600460008989878181106111dd576111dc611c2f565b5b90506020020160208101906111f2919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006005600089898781811061124957611248611c2f565b5b905060200201602081019061125e919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611471565b81811115611397576112bc828261166690919063ffffffff16565b600560008989878181106112d3576112d2611c2f565b5b90506020020160208101906112e8919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006004600089898781811061133f5761133e611c2f565b5b9050602002016020810190611354919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611470565b6000600560008989878181106113b0576113af611c2f565b5b90506020020160208101906113c5919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006004600089898781811061141c5761141b611c2f565b5b9050602002016020810190611431919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5050808061147e90611d8e565b915050610f5a565b5062093a80426114969190611d38565b60088190555050505050565b6114aa61159a565b73ffffffffffffffffffffffffffffffffffffffff166114c8610383565b73ffffffffffffffffffffffffffffffffffffffff161461151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590611a1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561158e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158590611e49565b60405180910390fd5b611597816115a2565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836116749190611e69565b905092915050565b6000818361168a9190611e9d565b905092915050565b600081836116a09190611f26565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006116ed6116e86116e3846116a8565b6116c8565b6116a8565b9050919050565b60006116ff826116d2565b9050919050565b6000611711826116f4565b9050919050565b61172181611706565b82525050565b600060208201905061173c6000830184611718565b92915050565b600080fd5b600080fd5b6000611757826116a8565b9050919050565b6117678161174c565b811461177257600080fd5b50565b6000813590506117848161175e565b92915050565b6000602082840312156117a05761179f611742565b5b60006117ae84828501611775565b91505092915050565b6000819050919050565b6117ca816117b7565b82525050565b60006020820190506117e560008301846117c1565b92915050565b60006117f6826116f4565b9050919050565b611806816117eb565b82525050565b600060208201905061182160008301846117fd565b92915050565b6118308161174c565b82525050565b600060208201905061184b6000830184611827565b92915050565b61185a816117b7565b811461186557600080fd5b50565b60008135905061187781611851565b92915050565b60008060006060848603121561189657611895611742565b5b60006118a486828701611775565b93505060206118b586828701611775565b92505060406118c686828701611868565b9150509250925092565b60006118db826116f4565b9050919050565b6118eb816118d0565b82525050565b600060208201905061190660008301846118e2565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126119315761193061190c565b5b8235905067ffffffffffffffff81111561194e5761194d611911565b5b60208301915083602082028301111561196a57611969611916565b5b9250929050565b6000806020838503121561198857611987611742565b5b600083013567ffffffffffffffff8111156119a6576119a5611747565b5b6119b28582860161191b565b92509250509250929050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611a056020836119be565b9150611a10826119cf565b602082019050919050565b60006020820190508181036000830152611a34816119f8565b9050919050565b7f737562206c696d69740000000000000000000000000000000000000000000000600082015250565b6000611a716009836119be565b9150611a7c82611a3b565b602082019050919050565b60006020820190508181036000830152611aa081611a64565b9050919050565b600081519050611ab681611851565b92915050565b600060208284031215611ad257611ad1611742565b5b6000611ae084828501611aa7565b91505092915050565b6000606082019050611afe60008301866117c1565b611b0b6020830185611827565b611b186040830184611827565b949350505050565b6000606082019050611b356000830186611827565b611b426020830185611827565b611b4f60408301846117c1565b949350505050565b7f616464206c696d69740000000000000000000000000000000000000000000000600082015250565b6000611b8d6009836119be565b9150611b9882611b57565b602082019050919050565b60006020820190508181036000830152611bbc81611b80565b9050919050565b7f4e65656420776169740000000000000000000000000000000000000000000000600082015250565b6000611bf96009836119be565b9150611c0482611bc3565b602082019050919050565b60006020820190508181036000830152611c2881611bec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008115159050919050565b611c7381611c5e565b8114611c7e57600080fd5b50565b600081519050611c9081611c6a565b92915050565b600060208284031215611cac57611cab611742565b5b6000611cba84828501611c81565b91505092915050565b611ccc81611c5e565b82525050565b6000606082019050611ce76000830186611827565b611cf460208301856117c1565b611d016040830184611cc3565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611d43826117b7565b9150611d4e836117b7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d8357611d82611d09565b5b828201905092915050565b6000611d99826117b7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611dcc57611dcb611d09565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611e336026836119be565b9150611e3e82611dd7565b604082019050919050565b60006020820190508181036000830152611e6281611e26565b9050919050565b6000611e74826117b7565b9150611e7f836117b7565b925082821015611e9257611e91611d09565b5b828203905092915050565b6000611ea8826117b7565b9150611eb3836117b7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611eec57611eeb611d09565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611f31826117b7565b9150611f3c836117b7565b925082611f4c57611f4b611ef7565b5b82820490509291505056fea2646970667358221220479e8a150f021105a900f20bdd082ec45388de752b43c76d682eaa6edc27491e64736f6c634300080b00330000000000000000000000001f83bae7f7d79c16f58ab669a1e1ccbe26307b53000000000000000000000000ae25eadf2a478d2ef2ad5f1830e4acd0b305dbac000000000000000000000000bf23b40d404fdc556bdd65c6fe04dbec9c8ca9cf
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063bd38837b1161008c578063da0062fb11610066578063da0062fb14610213578063dbdc67c61461022f578063ea4b14031461025f578063f2fde38b1461027b576100ea565b8063bd38837b146101bd578063ce5494bb146101db578063d5e741d0146101f7576100ea565b8063715018a6116100c8578063715018a61461015b5780638da5cb5b146101655780639e151a4d14610183578063a83627de1461019f576100ea565b806346c96aac146100ef57806347b8197a1461010d57806361d027b31461013d575b600080fd5b6100f7610297565b6040516101049190611727565b60405180910390f35b6101276004803603810190610122919061178a565b6102bd565b60405161013491906117d0565b60405180910390f35b6101456102d5565b604051610152919061180c565b60405180910390f35b6101636102fb565b005b61016d610383565b60405161017a9190611836565b60405180910390f35b61019d6004803603810190610198919061187d565b6103ac565b005b6101a761087d565b6040516101b491906117d0565b60405180910390f35b6101c5610883565b6040516101d291906118f1565b60405180910390f35b6101f560048036038101906101f0919061178a565b6108a9565b005b610211600480360381019061020c919061178a565b6109b5565b005b61022d6004803603810190610228919061178a565b610a75565b005b6102496004803603810190610244919061178a565b610b35565b60405161025691906117d0565b60405180910390f35b61027960048036038101906102749190611971565b610b4d565b005b6102956004803603810190610290919061178a565b6114a2565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61030361159a565b73ffffffffffffffffffffffffffffffffffffffff16610321610383565b73ffffffffffffffffffffffffffffffffffffffff1614610377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036e90611a1b565b60405180910390fd5b61038160006115a2565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561042e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042590611a87565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161048b9190611836565b602060405180830381865afa1580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190611abc565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633b1b77e18386600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b815260040161054f93929190611ae9565b600060405180830381600087803b15801561056957600080fd5b505af115801561057d573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631b9bc2d68585856040518463ffffffff1660e01b81526004016105e093929190611b20565b600060405180830381600087803b1580156105fa57600080fd5b505af115801561060e573d6000803e3d6000fd5b5050505061066482600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461166690919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008373ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016107049190611836565b602060405180830381865afa158015610721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107459190611abc565b9050600061075c838361166690919063ffffffff16565b9050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156107e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d790611ba3565b60405180910390fd5b61083281600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461166690919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b60085481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108b161159a565b73ffffffffffffffffffffffffffffffffffffffff166108cf610383565b73ffffffffffffffffffffffffffffffffffffffff1614610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c90611a1b565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff1660e01b81526004016109809190611836565b600060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b5050505050565b6109bd61159a565b73ffffffffffffffffffffffffffffffffffffffff166109db610383565b73ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2890611a1b565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a7d61159a565b73ffffffffffffffffffffffffffffffffffffffff16610a9b610383565b73ffffffffffffffffffffffffffffffffffffffff1614610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae890611a1b565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915090505481565b600854421015610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8990611c0f565b60405180910390fd5b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630d15fd776040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c269190611abc565b905060005b84849050811015610f56576000858583818110610c4b57610c4a611c2f565b5b9050602002016020810190610c60919061178a565b73ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610cba9190611836565b602060405180830381865afa158015610cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfb9190611abc565b90506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633594d7b5888886818110610d5057610d4f611c2f565b5b9050602002016020810190610d65919061178a565b848a8a88818110610d7957610d78611c2f565b5b9050602002016020810190610d8e919061178a565b73ffffffffffffffffffffffffffffffffffffffff166322be3de16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc9190611c96565b6040518463ffffffff1660e01b8152600401610e1a93929190611cd2565b602060405180830381865afa158015610e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5b9190611abc565b90508085610e699190611d38565b94508060066000898987818110610e8357610e82611c2f565b5b9050602002016020810190610e98919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160076000898987818110610eee57610eed611c2f565b5b9050602002016020810190610f03919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050508080610f4e90611d8e565b915050610c2b565b5060005b848490508110156114865760006110588461104a600660008a8a88818110610f8557610f84611c2f565b5b9050602002016020810190610f9a919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008b8b89818110610fec57610feb611c2f565b5b9050602002016020810190611001919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461167c90919063ffffffff16565b61169290919063ffffffff16565b905060006111a98461119b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633eaa00168b8b898181106110b4576110b3611c2f565b5b90506020020160208101906110c9919061178a565b6040518263ffffffff1660e01b81526004016110e59190611836565b602060405180830381865afa158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190611abc565b600660008c8c8a81811061113d5761113c611c2f565b5b9050602002016020810190611152919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461167c90919063ffffffff16565b61169290919063ffffffff16565b9050808211156112a1576111c6818361166690919063ffffffff16565b600460008989878181106111dd576111dc611c2f565b5b90506020020160208101906111f2919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006005600089898781811061124957611248611c2f565b5b905060200201602081019061125e919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611471565b81811115611397576112bc828261166690919063ffffffff16565b600560008989878181106112d3576112d2611c2f565b5b90506020020160208101906112e8919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006004600089898781811061133f5761133e611c2f565b5b9050602002016020810190611354919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611470565b6000600560008989878181106113b0576113af611c2f565b5b90506020020160208101906113c5919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006004600089898781811061141c5761141b611c2f565b5b9050602002016020810190611431919061178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5050808061147e90611d8e565b915050610f5a565b5062093a80426114969190611d38565b60088190555050505050565b6114aa61159a565b73ffffffffffffffffffffffffffffffffffffffff166114c8610383565b73ffffffffffffffffffffffffffffffffffffffff161461151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590611a1b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561158e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158590611e49565b60405180910390fd5b611597816115a2565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836116749190611e69565b905092915050565b6000818361168a9190611e9d565b905092915050565b600081836116a09190611f26565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006116ed6116e86116e3846116a8565b6116c8565b6116a8565b9050919050565b60006116ff826116d2565b9050919050565b6000611711826116f4565b9050919050565b61172181611706565b82525050565b600060208201905061173c6000830184611718565b92915050565b600080fd5b600080fd5b6000611757826116a8565b9050919050565b6117678161174c565b811461177257600080fd5b50565b6000813590506117848161175e565b92915050565b6000602082840312156117a05761179f611742565b5b60006117ae84828501611775565b91505092915050565b6000819050919050565b6117ca816117b7565b82525050565b60006020820190506117e560008301846117c1565b92915050565b60006117f6826116f4565b9050919050565b611806816117eb565b82525050565b600060208201905061182160008301846117fd565b92915050565b6118308161174c565b82525050565b600060208201905061184b6000830184611827565b92915050565b61185a816117b7565b811461186557600080fd5b50565b60008135905061187781611851565b92915050565b60008060006060848603121561189657611895611742565b5b60006118a486828701611775565b93505060206118b586828701611775565b92505060406118c686828701611868565b9150509250925092565b60006118db826116f4565b9050919050565b6118eb816118d0565b82525050565b600060208201905061190660008301846118e2565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126119315761193061190c565b5b8235905067ffffffffffffffff81111561194e5761194d611911565b5b60208301915083602082028301111561196a57611969611916565b5b9250929050565b6000806020838503121561198857611987611742565b5b600083013567ffffffffffffffff8111156119a6576119a5611747565b5b6119b28582860161191b565b92509250509250929050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611a056020836119be565b9150611a10826119cf565b602082019050919050565b60006020820190508181036000830152611a34816119f8565b9050919050565b7f737562206c696d69740000000000000000000000000000000000000000000000600082015250565b6000611a716009836119be565b9150611a7c82611a3b565b602082019050919050565b60006020820190508181036000830152611aa081611a64565b9050919050565b600081519050611ab681611851565b92915050565b600060208284031215611ad257611ad1611742565b5b6000611ae084828501611aa7565b91505092915050565b6000606082019050611afe60008301866117c1565b611b0b6020830185611827565b611b186040830184611827565b949350505050565b6000606082019050611b356000830186611827565b611b426020830185611827565b611b4f60408301846117c1565b949350505050565b7f616464206c696d69740000000000000000000000000000000000000000000000600082015250565b6000611b8d6009836119be565b9150611b9882611b57565b602082019050919050565b60006020820190508181036000830152611bbc81611b80565b9050919050565b7f4e65656420776169740000000000000000000000000000000000000000000000600082015250565b6000611bf96009836119be565b9150611c0482611bc3565b602082019050919050565b60006020820190508181036000830152611c2881611bec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008115159050919050565b611c7381611c5e565b8114611c7e57600080fd5b50565b600081519050611c9081611c6a565b92915050565b600060208284031215611cac57611cab611742565b5b6000611cba84828501611c81565b91505092915050565b611ccc81611c5e565b82525050565b6000606082019050611ce76000830186611827565b611cf460208301856117c1565b611d016040830184611cc3565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611d43826117b7565b9150611d4e836117b7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d8357611d82611d09565b5b828201905092915050565b6000611d99826117b7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611dcc57611dcb611d09565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611e336026836119be565b9150611e3e82611dd7565b604082019050919050565b60006020820190508181036000830152611e6281611e26565b9050919050565b6000611e74826117b7565b9150611e7f836117b7565b925082821015611e9257611e91611d09565b5b828203905092915050565b6000611ea8826117b7565b9150611eb3836117b7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611eec57611eeb611d09565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611f31826117b7565b9150611f3c836117b7565b925082611f4c57611f4b611ef7565b5b82820490509291505056fea2646970667358221220479e8a150f021105a900f20bdd082ec45388de752b43c76d682eaa6edc27491e64736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001f83bae7f7d79c16f58ab669a1e1ccbe26307b53000000000000000000000000ae25eadf2a478d2ef2ad5f1830e4acd0b305dbac000000000000000000000000bf23b40d404fdc556bdd65c6fe04dbec9c8ca9cf
-----Decoded View---------------
Arg [0] : _treasury (address): 0x1f83Bae7f7d79C16f58Ab669a1E1Ccbe26307b53
Arg [1] : _voter (address): 0xAE25EADF2A478d2ef2Ad5F1830E4AcD0B305dBaC
Arg [2] : _converter (address): 0xbF23b40D404fDC556Bdd65c6Fe04dBeC9c8ca9cf
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000001f83bae7f7d79c16f58ab669a1e1ccbe26307b53
Arg [1] : 000000000000000000000000ae25eadf2a478d2ef2ad5f1830e4acd0b305dbac
Arg [2] : 000000000000000000000000bf23b40d404fdc556bdd65c6fe04dbec9c8ca9cf
Deployed Bytecode Sourcemap
13764:4195:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13861:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14077:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13831:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3190:103;;;:::i;:::-;;2539:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16774:768;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14339:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13885:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17855:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17573:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17699:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13978:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14742:1829;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3448:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13861:19;;;;;;;;;;;;;:::o;14077:37::-;;;;;;;;;;;;;;;;;:::o;13831:25::-;;;;;;;;;;;;;:::o;3190:103::-;2770:12;:10;:12::i;:::-;2759:23;;:7;:5;:7::i;:::-;:23;;;2751:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3255:30:::1;3282:1;3255:18;:30::i;:::-;3190:103::o:0;2539:87::-;2585:7;2612:6;;;;;;;;;;;2605:13;;2539:87;:::o;16774:768::-;16915:13;16897:5;:14;16903:7;16897:14;;;;;;;;;;;;;;;;:31;;16889:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;16949:15;16974:5;16967:23;;;16999:8;;;;;;;;;;;16967:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16949:60;;17046:8;;;;;;;;;;;:15;;;17062:13;17077:7;17094:9;;;;;;;;;;;17046:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17128:9;;;;;;;;;;;:17;;;17146:7;17155:5;17162:13;17128:48;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17231:33;17250:13;17231:5;:14;17237:7;17231:14;;;;;;;;;;;;;;;;:18;;:33;;;;:::i;:::-;17214:5;:14;17220:7;17214:14;;;;;;;;;;;;;;;:50;;;;17301:14;17325:5;17318:23;;;17350:8;;;;;;;;;;;17318:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17301:59;;17367:11;17381:25;17395:10;17381:9;:13;;:25;;;;:::i;:::-;17367:39;;17433:5;:12;17439:5;17433:12;;;;;;;;;;;;;;;;17423:6;:22;;17415:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;17512:24;17529:6;17512:5;:12;17518:5;17512:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;17497:5;:12;17503:5;17497:12;;;;;;;;;;;;;;;:39;;;;16854:688;;;16774:768;;;:::o;14339:28::-;;;;:::o;13885:27::-;;;;;;;;;;;;;:::o;17855:101::-;2770:12;:10;:12::i;:::-;2759:23;;:7;:5;:7::i;:::-;:23;;;2751:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17915:8:::1;;;;;;;;;;;:26;;;17942:7;17915:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17855:101:::0;:::o;17573:91::-;2770:12;:10;:12::i;:::-;2759:23;;:7;:5;:7::i;:::-;:23;;;2751:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17651:6:::1;17636:5;;:22;;;;;;;;;;;;;;;;;;17573:91:::0;:::o;17699:111::-;2770:12;:10;:12::i;:::-;2759:23;;:7;:5;:7::i;:::-;:23;;;2751:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17793:10:::1;17770:9;;:34;;;;;;;;;;;;;;;;;;17699:111:::0;:::o;13978:37::-;;;;;;;;;;;;;;;;;:::o;14742:1829::-;14921:12;;14902:15;:31;;14894:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;15001:18;15030:17;15050:5;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15030:38;;15081:6;15077:354;15097:8;;:15;;15093:1;:19;15077:354;;;15127:13;15150:8;;15159:1;15150:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15143:29;;;15181:8;;;;;;;;;;;15143:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15127:64;;15200:13;15216:9;;;;;;;;;;;:20;;;15237:8;;15246:1;15237:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15250:8;15272;;15281:1;15272:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15260:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15216:78;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15200:94;;15320:8;15303:25;;;;;:::i;:::-;;;15368:8;15339:13;:26;15353:8;;15362:1;15353:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15339:26;;;;;;;;;;;;;;;:37;;;;15415:8;15385:14;:27;15400:8;;15409:1;15400:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15385:27;;;;;;;;;;;;;;;:38;;;;15118:313;;15114:3;;;;;:::i;:::-;;;;15077:354;;;;15477:6;15473:1045;15489:8;;:15;;15485:1;:19;15473:1045;;;15519:16;15538:131;15655:13;15538:85;15596:13;:26;15610:8;;15619:1;15610:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15596:26;;;;;;;;;;;;;;;;15538:13;:26;15552:8;;15561:1;15552:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15538:26;;;;;;;;;;;;;;;;:57;;:85;;;;:::i;:::-;:116;;:131;;;;:::i;:::-;15519:150;;15682:17;15702:137;15826:12;15702:91;15761:5;;;;;;;;;;;:18;;;15780:8;;15789:1;15780:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15761:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15702:13;:26;15716:8;;15725:1;15716:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15702:26;;;;;;;;;;;;;;;;:58;;:91;;;;:::i;:::-;:123;;:137;;;;:::i;:::-;15682:157;;16042:12;16028:11;:26;16025:486;;;16103:29;16119:12;16103:11;:15;;:29;;;;:::i;:::-;16082:5;:18;16088:8;;16097:1;16088:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16082:18;;;;;;;;;;;;;;;:50;;;;16164:1;16143:5;:18;16149:8;;16158:1;16149:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16143:18;;;;;;;;;;;;;;;:22;;;;16025:486;;;16246:11;16231:12;:26;16228:283;;;16306:29;16323:11;16306:12;:16;;:29;;;;:::i;:::-;16285:5;:18;16291:8;;16300:1;16291:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16285:18;;;;;;;;;;;;;;;:50;;;;16367:1;16346:5;:18;16352:8;;16361:1;16352:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16346:18;;;;;;;;;;;;;;;:22;;;;16228:283;;;16467:1;16446:5;:18;16452:8;;16461:1;16452:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16446:18;;;;;;;;;;;;;;;:22;;;;16500:1;16479:5;:18;16485:8;;16494:1;16485:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16479:18;;;;;;;;;;;;;;;:22;;;;16228:283;16025:486;15510:1008;;15506:3;;;;;:::i;:::-;;;;15473:1045;;;;16559:6;16541:15;:24;;;;:::i;:::-;16526:12;:39;;;;14797:1774;;14742:1829;;:::o;3448:201::-;2770:12;:10;:12::i;:::-;2759:23;;:7;:5;:7::i;:::-;:23;;;2751:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3557:1:::1;3537:22;;:8;:22;;;;3529:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3613:28;3632:8;3613:18;:28::i;:::-;3448:201:::0;:::o;1404:98::-;1457:7;1484:10;1477:17;;1404:98;:::o;3809:191::-;3883:16;3902:6;;;;;;;;;;;3883:25;;3928:8;3919:6;;:17;;;;;;;;;;;;;;;;;;3983:8;3952:40;;3973:8;3952:40;;;;;;;;;;;;3872:128;3809:191;:::o;9978:98::-;10036:7;10067:1;10063;:5;;;;:::i;:::-;10056:12;;9978:98;;;;:::o;10335:::-;10393:7;10424:1;10420;:5;;;;:::i;:::-;10413:12;;10335:98;;;;:::o;10734:::-;10792:7;10823:1;10819;:5;;;;:::i;:::-;10812:12;;10734:98;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:60::-;167:3;188:5;181:12;;139:60;;;:::o;205:142::-;255:9;288:53;306:34;315:24;333:5;315:24;:::i;:::-;306:34;:::i;:::-;288:53;:::i;:::-;275:66;;205:142;;;:::o;353:126::-;403:9;436:37;467:5;436:37;:::i;:::-;423:50;;353:126;;;:::o;485:139::-;548:9;581:37;612:5;581:37;:::i;:::-;568:50;;485:139;;;:::o;630:157::-;730:50;774:5;730:50;:::i;:::-;725:3;718:63;630:157;;:::o;793:248::-;899:4;937:2;926:9;922:18;914:26;;950:84;1031:1;1020:9;1016:17;1007:6;950:84;:::i;:::-;793:248;;;;:::o;1128:117::-;1237:1;1234;1227:12;1251:117;1360:1;1357;1350:12;1374:96;1411:7;1440:24;1458:5;1440:24;:::i;:::-;1429:35;;1374:96;;;:::o;1476:122::-;1549:24;1567:5;1549:24;:::i;:::-;1542:5;1539:35;1529:63;;1588:1;1585;1578:12;1529:63;1476:122;:::o;1604:139::-;1650:5;1688:6;1675:20;1666:29;;1704:33;1731:5;1704:33;:::i;:::-;1604:139;;;;:::o;1749:329::-;1808:6;1857:2;1845:9;1836:7;1832:23;1828:32;1825:119;;;1863:79;;:::i;:::-;1825:119;1983:1;2008:53;2053:7;2044:6;2033:9;2029:22;2008:53;:::i;:::-;1998:63;;1954:117;1749:329;;;;:::o;2084:77::-;2121:7;2150:5;2139:16;;2084:77;;;:::o;2167:118::-;2254:24;2272:5;2254:24;:::i;:::-;2249:3;2242:37;2167:118;;:::o;2291:222::-;2384:4;2422:2;2411:9;2407:18;2399:26;;2435:71;2503:1;2492:9;2488:17;2479:6;2435:71;:::i;:::-;2291:222;;;;:::o;2519:142::-;2585:9;2618:37;2649:5;2618:37;:::i;:::-;2605:50;;2519:142;;;:::o;2667:163::-;2770:53;2817:5;2770:53;:::i;:::-;2765:3;2758:66;2667:163;;:::o;2836:254::-;2945:4;2983:2;2972:9;2968:18;2960:26;;2996:87;3080:1;3069:9;3065:17;3056:6;2996:87;:::i;:::-;2836:254;;;;:::o;3096:118::-;3183:24;3201:5;3183:24;:::i;:::-;3178:3;3171:37;3096:118;;:::o;3220:222::-;3313:4;3351:2;3340:9;3336:18;3328:26;;3364:71;3432:1;3421:9;3417:17;3408:6;3364:71;:::i;:::-;3220:222;;;;:::o;3448:122::-;3521:24;3539:5;3521:24;:::i;:::-;3514:5;3511:35;3501:63;;3560:1;3557;3550:12;3501:63;3448:122;:::o;3576:139::-;3622:5;3660:6;3647:20;3638:29;;3676:33;3703:5;3676:33;:::i;:::-;3576:139;;;;:::o;3721:619::-;3798:6;3806;3814;3863:2;3851:9;3842:7;3838:23;3834:32;3831:119;;;3869:79;;:::i;:::-;3831:119;3989:1;4014:53;4059:7;4050:6;4039:9;4035:22;4014:53;:::i;:::-;4004:63;;3960:117;4116:2;4142:53;4187:7;4178:6;4167:9;4163:22;4142:53;:::i;:::-;4132:63;;4087:118;4244:2;4270:53;4315:7;4306:6;4295:9;4291:22;4270:53;:::i;:::-;4260:63;;4215:118;3721:619;;;;;:::o;4346:143::-;4413:9;4446:37;4477:5;4446:37;:::i;:::-;4433:50;;4346:143;;;:::o;4495:165::-;4599:54;4647:5;4599:54;:::i;:::-;4594:3;4587:67;4495:165;;:::o;4666:256::-;4776:4;4814:2;4803:9;4799:18;4791:26;;4827:88;4912:1;4901:9;4897:17;4888:6;4827:88;:::i;:::-;4666:256;;;;:::o;4928:117::-;5037:1;5034;5027:12;5051:117;5160:1;5157;5150:12;5174:117;5283:1;5280;5273:12;5314:568;5387:8;5397:6;5447:3;5440:4;5432:6;5428:17;5424:27;5414:122;;5455:79;;:::i;:::-;5414:122;5568:6;5555:20;5545:30;;5598:18;5590:6;5587:30;5584:117;;;5620:79;;:::i;:::-;5584:117;5734:4;5726:6;5722:17;5710:29;;5788:3;5780:4;5772:6;5768:17;5758:8;5754:32;5751:41;5748:128;;;5795:79;;:::i;:::-;5748:128;5314:568;;;;;:::o;5888:559::-;5974:6;5982;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6185:1;6174:9;6170:17;6157:31;6215:18;6207:6;6204:30;6201:117;;;6237:79;;:::i;:::-;6201:117;6350:80;6422:7;6413:6;6402:9;6398:22;6350:80;:::i;:::-;6332:98;;;;6128:312;5888:559;;;;;:::o;6453:169::-;6537:11;6571:6;6566:3;6559:19;6611:4;6606:3;6602:14;6587:29;;6453:169;;;;:::o;6628:182::-;6768:34;6764:1;6756:6;6752:14;6745:58;6628:182;:::o;6816:366::-;6958:3;6979:67;7043:2;7038:3;6979:67;:::i;:::-;6972:74;;7055:93;7144:3;7055:93;:::i;:::-;7173:2;7168:3;7164:12;7157:19;;6816:366;;;:::o;7188:419::-;7354:4;7392:2;7381:9;7377:18;7369:26;;7441:9;7435:4;7431:20;7427:1;7416:9;7412:17;7405:47;7469:131;7595:4;7469:131;:::i;:::-;7461:139;;7188:419;;;:::o;7613:159::-;7753:11;7749:1;7741:6;7737:14;7730:35;7613:159;:::o;7778:365::-;7920:3;7941:66;8005:1;8000:3;7941:66;:::i;:::-;7934:73;;8016:93;8105:3;8016:93;:::i;:::-;8134:2;8129:3;8125:12;8118:19;;7778:365;;;:::o;8149:419::-;8315:4;8353:2;8342:9;8338:18;8330:26;;8402:9;8396:4;8392:20;8388:1;8377:9;8373:17;8366:47;8430:131;8556:4;8430:131;:::i;:::-;8422:139;;8149:419;;;:::o;8574:143::-;8631:5;8662:6;8656:13;8647:22;;8678:33;8705:5;8678:33;:::i;:::-;8574:143;;;;:::o;8723:351::-;8793:6;8842:2;8830:9;8821:7;8817:23;8813:32;8810:119;;;8848:79;;:::i;:::-;8810:119;8968:1;8993:64;9049:7;9040:6;9029:9;9025:22;8993:64;:::i;:::-;8983:74;;8939:128;8723:351;;;;:::o;9080:442::-;9229:4;9267:2;9256:9;9252:18;9244:26;;9280:71;9348:1;9337:9;9333:17;9324:6;9280:71;:::i;:::-;9361:72;9429:2;9418:9;9414:18;9405:6;9361:72;:::i;:::-;9443;9511:2;9500:9;9496:18;9487:6;9443:72;:::i;:::-;9080:442;;;;;;:::o;9528:::-;9677:4;9715:2;9704:9;9700:18;9692:26;;9728:71;9796:1;9785:9;9781:17;9772:6;9728:71;:::i;:::-;9809:72;9877:2;9866:9;9862:18;9853:6;9809:72;:::i;:::-;9891;9959:2;9948:9;9944:18;9935:6;9891:72;:::i;:::-;9528:442;;;;;;:::o;9976:159::-;10116:11;10112:1;10104:6;10100:14;10093:35;9976:159;:::o;10141:365::-;10283:3;10304:66;10368:1;10363:3;10304:66;:::i;:::-;10297:73;;10379:93;10468:3;10379:93;:::i;:::-;10497:2;10492:3;10488:12;10481:19;;10141:365;;;:::o;10512:419::-;10678:4;10716:2;10705:9;10701:18;10693:26;;10765:9;10759:4;10755:20;10751:1;10740:9;10736:17;10729:47;10793:131;10919:4;10793:131;:::i;:::-;10785:139;;10512:419;;;:::o;10937:159::-;11077:11;11073:1;11065:6;11061:14;11054:35;10937:159;:::o;11102:365::-;11244:3;11265:66;11329:1;11324:3;11265:66;:::i;:::-;11258:73;;11340:93;11429:3;11340:93;:::i;:::-;11458:2;11453:3;11449:12;11442:19;;11102:365;;;:::o;11473:419::-;11639:4;11677:2;11666:9;11662:18;11654:26;;11726:9;11720:4;11716:20;11712:1;11701:9;11697:17;11690:47;11754:131;11880:4;11754:131;:::i;:::-;11746:139;;11473:419;;;:::o;11898:180::-;11946:77;11943:1;11936:88;12043:4;12040:1;12033:15;12067:4;12064:1;12057:15;12084:90;12118:7;12161:5;12154:13;12147:21;12136:32;;12084:90;;;:::o;12180:116::-;12250:21;12265:5;12250:21;:::i;:::-;12243:5;12240:32;12230:60;;12286:1;12283;12276:12;12230:60;12180:116;:::o;12302:137::-;12356:5;12387:6;12381:13;12372:22;;12403:30;12427:5;12403:30;:::i;:::-;12302:137;;;;:::o;12445:345::-;12512:6;12561:2;12549:9;12540:7;12536:23;12532:32;12529:119;;;12567:79;;:::i;:::-;12529:119;12687:1;12712:61;12765:7;12756:6;12745:9;12741:22;12712:61;:::i;:::-;12702:71;;12658:125;12445:345;;;;:::o;12796:109::-;12877:21;12892:5;12877:21;:::i;:::-;12872:3;12865:34;12796:109;;:::o;12911:430::-;13054:4;13092:2;13081:9;13077:18;13069:26;;13105:71;13173:1;13162:9;13158:17;13149:6;13105:71;:::i;:::-;13186:72;13254:2;13243:9;13239:18;13230:6;13186:72;:::i;:::-;13268:66;13330:2;13319:9;13315:18;13306:6;13268:66;:::i;:::-;12911:430;;;;;;:::o;13347:180::-;13395:77;13392:1;13385:88;13492:4;13489:1;13482:15;13516:4;13513:1;13506:15;13533:305;13573:3;13592:20;13610:1;13592:20;:::i;:::-;13587:25;;13626:20;13644:1;13626:20;:::i;:::-;13621:25;;13780:1;13712:66;13708:74;13705:1;13702:81;13699:107;;;13786:18;;:::i;:::-;13699:107;13830:1;13827;13823:9;13816:16;;13533:305;;;;:::o;13844:233::-;13883:3;13906:24;13924:5;13906:24;:::i;:::-;13897:33;;13952:66;13945:5;13942:77;13939:103;;;14022:18;;:::i;:::-;13939:103;14069:1;14062:5;14058:13;14051:20;;13844:233;;;:::o;14083:225::-;14223:34;14219:1;14211:6;14207:14;14200:58;14292:8;14287:2;14279:6;14275:15;14268:33;14083:225;:::o;14314:366::-;14456:3;14477:67;14541:2;14536:3;14477:67;:::i;:::-;14470:74;;14553:93;14642:3;14553:93;:::i;:::-;14671:2;14666:3;14662:12;14655:19;;14314:366;;;:::o;14686:419::-;14852:4;14890:2;14879:9;14875:18;14867:26;;14939:9;14933:4;14929:20;14925:1;14914:9;14910:17;14903:47;14967:131;15093:4;14967:131;:::i;:::-;14959:139;;14686:419;;;:::o;15111:191::-;15151:4;15171:20;15189:1;15171:20;:::i;:::-;15166:25;;15205:20;15223:1;15205:20;:::i;:::-;15200:25;;15244:1;15241;15238:8;15235:34;;;15249:18;;:::i;:::-;15235:34;15294:1;15291;15287:9;15279:17;;15111:191;;;;:::o;15308:348::-;15348:7;15371:20;15389:1;15371:20;:::i;:::-;15366:25;;15405:20;15423:1;15405:20;:::i;:::-;15400:25;;15593:1;15525:66;15521:74;15518:1;15515:81;15510:1;15503:9;15496:17;15492:105;15489:131;;;15600:18;;:::i;:::-;15489:131;15648:1;15645;15641:9;15630:20;;15308:348;;;;:::o;15662:180::-;15710:77;15707:1;15700:88;15807:4;15804:1;15797:15;15831:4;15828:1;15821:15;15848:185;15888:1;15905:20;15923:1;15905:20;:::i;:::-;15900:25;;15939:20;15957:1;15939:20;:::i;:::-;15934:25;;15978:1;15968:35;;15983:18;;:::i;:::-;15968:35;16025:1;16022;16018:9;16013:14;;15848:185;;;;:::o
Swarm Source
ipfs://479e8a150f021105a900f20bdd082ec45388de752b43c76d682eaa6edc27491e
Loading...
Loading
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.