Overview
S Balance
0 S
S Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
2429754 | 23 days ago | Contract Creation | 0 S |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
OnlyMemesFactory
Compiler Version
v0.8.27+commit.40a35a09
Optimization Enabled:
Yes with 200 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.4; import {IOnlyMemesFactory} from "./interfaces/IOnlyMemesFactory.sol"; import {IOnlyMemesPair} from "./interfaces/IOnlyMemesPair.sol"; import {OnlyMemesPair} from "./OnlyMemesPair.sol"; import {IVoter} from "./interfaces/IVoter.sol"; contract OnlyMemesFactory is IOnlyMemesFactory { address public override feeTo; address public override feeToSetter; address public immutable multisig; IVoter public immutable voter; address public immutable chef; mapping(address => mapping(address => address)) public override getPair; address[] public override allPairs; constructor( address _feeToSetter, IVoter _voter, address _multisig, address _chef ) { require(_feeToSetter != address(0), "OnlyMemes: ZERO_ADDRESS"); require(address(_voter) != address(0), "OnlyMemes: ZERO_VOTER"); require(_multisig != address(0), "OnlyMemes: ZERO_MULTISIG"); feeToSetter = _feeToSetter; voter = _voter; multisig = _multisig; chef = _chef; } function allPairsLength() external view override returns (uint256) { return allPairs.length; } function createPair( address tokenA, address tokenB ) external override returns (address pair) { require(tokenA != tokenB, "OnlyMemes: IDENTICAL_ADDRESSES"); (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); require(token0 != address(0), "OnlyMemes: ZERO_ADDRESS"); require( getPair[token0][token1] == address(0), "OnlyMemes: PAIR_EXISTS" ); string memory _symbol = string(abi.encodePacked(OnlyMemesPair(tokenA).symbol(), "/" , OnlyMemesPair(tokenB).symbol())); string memory name = string(abi.encodePacked("OnlyMemes LP ", _symbol)); string memory symbol = string(abi.encodePacked("ONLY LP-", _symbol)); pair = address (new OnlyMemesPair{ salt: keccak256(abi.encodePacked(token0, token1)) }(name, symbol) ); IOnlyMemesPair(pair).initialize(token0, token1); IOnlyMemesPair(pair).setFeeAddresses(voter, multisig, chef); getPair[token0][token1] = pair; getPair[token1][token0] = pair; allPairs.push(pair); emit PairCreated(token0, token1, pair, allPairs.length); } function setFeeTo(address _feeTo) external override { require(msg.sender == feeToSetter, "OnlyMemes: FORBIDDEN"); feeTo = _feeTo; } function setFeeToSetter(address _feeToSetter) external override { require(msg.sender == feeToSetter, "OnlyMemes: FORBIDDEN"); require(_feeToSetter != address(0), "OnlyMemes: ZERO_ADDRESS"); feeToSetter = _feeToSetter; } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.4; interface IERC20 { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.4; interface IOnlyMemesCallee { function OnlyMemesCall( address sender, uint256 amount0, uint256 amount1, bytes calldata data ) external; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.4; interface IOnlyMemesERC20 { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.4; interface IOnlyMemesFactory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.4; import {IOnlyMemesERC20} from "./IOnlyMemesERC20.sol"; import "contracts/interfaces/IVoter.sol"; interface IOnlyMemesPair is IOnlyMemesERC20 { event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn( address to ) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; function setPID(uint256 pid) external; function setFeeAddresses(IVoter, address, address) external; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.4; interface IVoter { function isBribeWhitelisted(address token) external view returns (bool); function setWhitelistedBribe(address token, bool status) external; function bribe(uint256 pid, address reward, uint256 amount) external; function _lastEpoch() external view returns (uint256); function _epochLength() external view returns(uint256); function _unlockTokens(address owner) external; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.4; // a library for performing various math operations library Math { function min(uint256 x, uint256 y) internal pure returns (uint256 z) { z = x < y ? x : y; } // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) function sqrt(uint256 y) internal pure returns (uint256 z) { if (y > 3) { z = y; uint256 x = y / 2 + 1; while (x < z) { z = x; x = (y / x + x) / 2; } } else if (y != 0) { z = 1; } } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.4; // a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format)) // range: [0, 2**112 - 1] // resolution: 1 / 2**112 library UQ112x112 { //solhint-disable-next-line state-visibility uint224 constant Q112 = 2 ** 112; // encode a uint112 as a UQ112x112 function encode(uint112 y) internal pure returns (uint224 z) { z = uint224(y) * Q112; // never overflows } // divide a UQ112x112 by a uint112, returning a UQ112x112 function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) { z = x / uint224(y); } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.4; import {IOnlyMemesERC20} from "./interfaces/IOnlyMemesERC20.sol"; contract OnlyMemesERC20 is IOnlyMemesERC20 { string public override name; string public override symbol; uint8 public constant override decimals = 18; uint256 public override totalSupply; mapping(address => uint256) public override balanceOf; mapping(address => mapping(address => uint256)) public override allowance; bytes32 public override DOMAIN_SEPARATOR; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant override PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; mapping(address => uint256) public override nonces; constructor(string memory _name, string memory _symbol) { DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ), keccak256(bytes(_name)), name = _name, symbol = _symbol, keccak256(bytes("1")), block.chainid, address(this) ) ); } function _mint(address to, uint256 value) internal { totalSupply += value; balanceOf[to] += value; emit Transfer(address(0), to, value); } function _burn(address from, uint256 value) internal { balanceOf[from] -= value; totalSupply -= value; emit Transfer(from, address(0), value); } function _approve(address owner, address spender, uint256 value) private { allowance[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer(address from, address to, uint256 value) private { balanceOf[from] -= value; balanceOf[to] += value; emit Transfer(from, to, value); } function approve( address spender, uint256 value ) external override returns (bool) { _approve(msg.sender, spender, value); return true; } function transfer( address to, uint256 value ) external override returns (bool) { _transfer(msg.sender, to, value); return true; } function transferFrom( address from, address to, uint256 value ) external override returns (bool) { if (allowance[from][msg.sender] != type(uint256).max) { allowance[from][msg.sender] -= value; } _transfer(from, to, value); return true; } function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external override { require(deadline >= block.timestamp, "OnlyMemes: EXPIRED"); bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR, keccak256( abi.encode( PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline ) ) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require( recoveredAddress != address(0) && recoveredAddress == owner, "OnlyMemes: INVALID_SIGNATURE" ); _approve(owner, spender, value); } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.4; import {IOnlyMemesPair} from "./interfaces/IOnlyMemesPair.sol"; import {OnlyMemesERC20} from "./OnlyMemesERC20.sol"; import {Math} from "./libraries/Math.sol"; import {UQ112x112} from "./libraries/UQ112x112.sol"; import {IERC20} from "./interfaces/IERC20.sol"; import "contracts/interfaces/IOnlyMemesCallee.sol"; import "contracts/interfaces/IOnlyMemesFactory.sol"; import "contracts/interfaces/IVoter.sol"; contract OnlyMemesPair is IOnlyMemesPair, OnlyMemesERC20 { using UQ112x112 for uint224; uint256 public constant override MINIMUM_LIQUIDITY = 10**3; address public override factory; address public override token0; address public override token1; IVoter public voter; address public multisig; address public chef; uint112 private reserve0; uint112 private reserve1; uint32 private blockTimestampLast; uint256 private Pid; uint256 public override price0CumulativeLast; uint256 public override price1CumulativeLast; uint256 public override kLast; uint256 private unlocked = 1; error AddressNotSet(); error CalculationOverflow(); modifier lock() { require(unlocked == 1, "OnlyMemes: LOCKED"); unlocked = 0; _; unlocked = 1; } constructor(string memory _name, string memory _symbol) OnlyMemesERC20(_name, _symbol) { factory = msg.sender; } function setFeeAddresses(IVoter _voter, address _multisig, address _chef) external { require(msg.sender == factory, "OnlyMemes: FORBIDDEN"); require(address(_voter) != address(0) && _multisig != address(0), "OnlyMemes: ZERO_ADDRESS"); voter = _voter; multisig = _multisig; chef = _chef; } function getReserves() public view override returns ( uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast ) { _reserve0 = reserve0; _reserve1 = reserve1; _blockTimestampLast = blockTimestampLast; } function _safeTransfer(address token, address to, uint256 value) private { (bool success, bytes memory data) = token.call( abi.encodeWithSelector(IERC20.transfer.selector, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "OnlyMemes: TRANSFER_FAILED" ); } function initialize(address _token0, address _token1) external override { require(msg.sender == factory, "OnlyMemes: FORBIDDEN"); token0 = _token0; token1 = _token1; } function _update( uint256 balance0, uint256 balance1, uint112 _reserve0, uint112 _reserve1 ) private { require( balance0 <= type(uint112).max && balance1 <= type(uint112).max, "OnlyMemes: OVERFLOW" ); uint32 blockTimestamp = uint32(block.timestamp % 2**32); unchecked { uint32 timeElapsed = blockTimestamp - blockTimestampLast; if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) { price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed; price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed; } } reserve0 = uint112(balance0); reserve1 = uint112(balance1); blockTimestampLast = blockTimestamp; emit Sync(reserve0, reserve1); } function calculateTokenAmount( uint256 reserve, uint256 share, uint256 _totalSupply ) external pure returns (uint256) { return (share * reserve) / _totalSupply; } function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) { address feeTo = IOnlyMemesFactory(factory).feeTo(); feeOn = feeTo != address(0); uint256 _kLast = kLast; if (feeOn) { if (_kLast != 0) { if (address(voter) == address(0) || multisig == address(0)) revert AddressNotSet(); uint256 rootK = Math.sqrt(uint256(_reserve0) * _reserve1); uint256 rootKLast = Math.sqrt(_kLast); if (rootK > rootKLast) { uint256 numerator = totalSupply * (rootK - rootKLast); uint256 denominator = rootK + rootKLast; uint256 totalLiquidity = numerator / denominator; if (totalLiquidity > 0) { bool isWhitelisted = voter.isBribeWhitelisted(address(this)); uint256 voterShare = (totalLiquidity * 30) / 100; uint256 multisigShare = (totalLiquidity * 5) / 100; uint256 lpShare = isWhitelisted ? (totalLiquidity * 15) / 100 : (totalLiquidity * 45) / 100; // 15% base + 30% from voter share // Only bribe if whitelisted if (isWhitelisted) { try this.calculateTokenAmount(_reserve0, voterShare, totalSupply) returns (uint256 amount0Voter) { try this.calculateTokenAmount(_reserve1, voterShare, totalSupply) returns (uint256 amount1Voter) { _safeApprove(token0, address(voter), amount0Voter); _safeApprove(token1, address(voter), amount1Voter); voter.bribe(Pid, token0, amount0Voter); voter.bribe(Pid, token1, amount1Voter); } catch { revert CalculationOverflow(); } } catch { revert CalculationOverflow(); } } // Calculate and transfer multisig share try this.calculateTokenAmount(_reserve0, multisigShare, totalSupply) returns (uint256 amount0Multisig) { try this.calculateTokenAmount(_reserve1, multisigShare, totalSupply) returns (uint256 amount1Multisig) { _safeTransfer(token0, multisig, amount0Multisig); _safeTransfer(token1, multisig, amount1Multisig); } catch { revert CalculationOverflow(); } } catch { revert CalculationOverflow(); } // Mint LP to multisig if (lpShare > 0) _mint(multisig, lpShare); // Update reserves to match new balances after transfers _update( IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1 ); } } } } else if (_kLast != 0) { kLast = 0; } } function mint(address to) external override lock returns (uint256 liquidity) { (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); uint256 balance0 = IERC20(token0).balanceOf(address(this)); uint256 balance1 = IERC20(token1).balanceOf(address(this)); uint256 amount0 = balance0 - _reserve0; uint256 amount1 = balance1 - _reserve1; bool feeOn = _mintFee(_reserve0, _reserve1); uint256 _totalSupply = totalSupply; if (_totalSupply == 0) { liquidity = Math.sqrt(amount0 * amount1) - MINIMUM_LIQUIDITY; _mint(address(0), MINIMUM_LIQUIDITY); } else { liquidity = Math.min( (amount0 * _totalSupply) / _reserve0, (amount1 * _totalSupply) / _reserve1 ); } require(liquidity > 0, "OnlyMemes: INSUFFICIENT_LIQUIDITY_MINTED"); _mint(to, liquidity); _update(balance0, balance1, _reserve0, _reserve1); if (feeOn) kLast = uint256(reserve0) * reserve1; emit Mint(msg.sender, amount0, amount1); } function burn(address to) external override lock returns (uint256 amount0, uint256 amount1) { (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); address _token0 = token0; address _token1 = token1; uint256 balance0 = IERC20(_token0).balanceOf(address(this)); uint256 balance1 = IERC20(_token1).balanceOf(address(this)); uint256 liquidity = balanceOf[address(this)]; bool feeOn = _mintFee(_reserve0, _reserve1); uint256 _totalSupply = totalSupply; amount0 = (liquidity * balance0) / _totalSupply; amount1 = (liquidity * balance1) / _totalSupply; require( amount0 > 0 && amount1 > 0, "OnlyMemes: INSUFFICIENT_LIQUIDITY_BURNED" ); _burn(address(this), liquidity); _safeTransfer(_token0, to, amount0); _safeTransfer(_token1, to, amount1); balance0 = IERC20(_token0).balanceOf(address(this)); balance1 = IERC20(_token1).balanceOf(address(this)); _update(balance0, balance1, _reserve0, _reserve1); if (feeOn) kLast = uint256(reserve0) * reserve1; emit Burn(msg.sender, amount0, amount1, to); } function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external override lock { require(amount0Out > 0 || amount1Out > 0, "OnlyMemes: INSUFFICIENT_OUTPUT_AMOUNT"); (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); require(amount0Out < _reserve0 && amount1Out < _reserve1, "OnlyMemes: INSUFFICIENT_LIQUIDITY"); uint256 balance0; uint256 balance1; { // scope for _token{0,1}, avoids stack too deep errors address _token0 = token0; address _token1 = token1; require(to != _token0 && to != _token1, "OnlyMemes: INVALID_TO"); if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); if (data.length > 0) IOnlyMemesCallee(to).OnlyMemesCall(msg.sender, amount0Out, amount1Out, data); balance0 = IERC20(_token0).balanceOf(address(this)); balance1 = IERC20(_token1).balanceOf(address(this)); } uint256 amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0; uint256 amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0; require(amount0In > 0 || amount1In > 0, "OnlyMemes: INSUFFICIENT_INPUT_AMOUNT"); { // scope for reserve{0,1}Adjusted, avoids stack too deep errors require( amount0In * 99 * _reserve1 >= amount1Out * 100 * _reserve0 && amount1In * 99 * _reserve0 >= amount0Out * 100 * _reserve1, "OnlyMemes: K" ); } _update(balance0, balance1, _reserve0, _reserve1); emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to); } function _safeApprove(address token, address spender, uint256 value) private { (bool success, bytes memory data) = token.call( abi.encodeWithSelector(IERC20.approve.selector, spender, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "OnlyMemes: APPROVE_FAILED" ); } function skim(address to) external override lock { address _token0 = token0; address _token1 = token1; _safeTransfer( _token0, to, IERC20(_token0).balanceOf(address(this)) - reserve0 ); _safeTransfer( _token1, to, IERC20(_token1).balanceOf(address(this)) - reserve1 ); } function sync() external override lock { _update( IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1 ); } function setPID(uint256 pid) external { require (msg.sender == chef); Pid = pid; } }
{ "evmVersion": "cancun", "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"},{"internalType":"contract IVoter","name":"_voter","type":"address"},{"internalType":"address","name":"_multisig","type":"address"},{"internalType":"address","name":"_chef","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"PairCreated","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chef","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_feeTo","type":"address"}],"name":"setFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"name":"setFeeToSetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"voter","outputs":[{"internalType":"contract IVoter","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60e060405234801561000f575f5ffd5b506040516139fb3803806139fb83398101604081905261002e9161017c565b6001600160a01b0384166100895760405162461bcd60e51b815260206004820152601760248201527f4f6e6c794d656d65733a205a45524f5f4144445245535300000000000000000060448201526064015b60405180910390fd5b6001600160a01b0383166100df5760405162461bcd60e51b815260206004820152601560248201527f4f6e6c794d656d65733a205a45524f5f564f54455200000000000000000000006044820152606401610080565b6001600160a01b0382166101355760405162461bcd60e51b815260206004820152601860248201527f4f6e6c794d656d65733a205a45524f5f4d554c544953494700000000000000006044820152606401610080565b600180546001600160a01b0319166001600160a01b0395861617905591831660a05282166080521660c0526101d8565b6001600160a01b0381168114610179575f5ffd5b50565b5f5f5f5f6080858703121561018f575f5ffd5b845161019a81610165565b60208601519094506101ab81610165565b60408601519093506101bc81610165565b60608601519092506101cd81610165565b939692955090935050565b60805160a05160c0516137e46102175f395f8181610104015261069501525f818161012b015261064501525f8181610152015261066d01526137e45ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80634783c35b1161006e5780634783c35b1461014d578063574f2ba314610174578063a2e74af614610185578063c9c653961461019a578063e6a43905146101ad578063f46901ed146101e0575f5ffd5b8063017e7e58146100aa578063094b7415146100d95780631e3dd18b146100ec5780631fc8bc5d146100ff57806346c96aac14610126575b5f5ffd5b5f546100bc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6001546100bc906001600160a01b031681565b6100bc6100fa366004610845565b6101f3565b6100bc7f000000000000000000000000000000000000000000000000000000000000000081565b6100bc7f000000000000000000000000000000000000000000000000000000000000000081565b6100bc7f000000000000000000000000000000000000000000000000000000000000000081565b6003546040519081526020016100d0565b610198610193366004610877565b61021b565b005b6100bc6101a8366004610897565b6102e3565b6100bc6101bb366004610897565b600260209081525f92835260408084209091529082529020546001600160a01b031681565b6101986101ee366004610877565b6107c6565b60038181548110610202575f80fd5b5f918252602090912001546001600160a01b0316905081565b6001546001600160a01b031633146102715760405162461bcd60e51b815260206004820152601460248201527327b7363ca6b2b6b2b99d102327a92124a22222a760611b60448201526064015b60405180910390fd5b6001600160a01b0381166102c15760405162461bcd60e51b81526020600482015260176024820152764f6e6c794d656d65733a205a45524f5f4144445245535360481b6044820152606401610268565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f816001600160a01b0316836001600160a01b0316036103455760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c794d656d65733a204944454e544943414c5f41444452455353455300006044820152606401610268565b5f5f836001600160a01b0316856001600160a01b03161061036757838561036a565b84845b90925090506001600160a01b0382166103bf5760405162461bcd60e51b81526020600482015260176024820152764f6e6c794d656d65733a205a45524f5f4144445245535360481b6044820152606401610268565b6001600160a01b038281165f9081526002602090815260408083208585168452909152902054161561042c5760405162461bcd60e51b81526020600482015260166024820152754f6e6c794d656d65733a20504149525f45584953545360501b6044820152606401610268565b5f856001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610468573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261048f91908101906108dc565b856001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa1580156104ca573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104f191908101906108dc565b6040516020016105029291906109a6565b60405160208183030381529060405290505f8160405160200161052591906109ce565b60405160208183030381529060405290505f8260405160200161054891906109ef565b60408051601f19818403018152908290526bffffffffffffffffffffffff19606088811b8216602085015287901b16603483015291506048016040516020818303038152906040528051906020012082826040516105a590610838565b6105b0929190610a39565b8190604051809103905ff59050801580156105cd573d5f5f3e3d5ffd5b5060405163485cc95560e01b81526001600160a01b03878116600483015286811660248301529197509087169063485cc955906044015f604051808303815f87803b15801561061a575f5ffd5b505af115801561062c573d5f5f3e3d5ffd5b5050604051631543deb360e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000811660448301528916925063aa1ef59891506064015f604051808303815f87803b1580156106e0575f5ffd5b505af11580156106f2573d5f5f3e3d5ffd5b505050506001600160a01b038581165f8181526002602081815260408084208a87168086529083528185208054978e166001600160a01b031998891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9095018054909716841790965592548351928352908201527f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9910160405180910390a3505050505092915050565b6001546001600160a01b031633146108175760405162461bcd60e51b815260206004820152601460248201527327b7363ca6b2b6b2b99d102327a92124a22222a760611b6044820152606401610268565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b612d5180610a5e83390190565b5f60208284031215610855575f5ffd5b5035919050565b80356001600160a01b0381168114610872575f5ffd5b919050565b5f60208284031215610887575f5ffd5b6108908261085c565b9392505050565b5f5f604083850312156108a8575f5ffd5b6108b18361085c565b91506108bf6020840161085c565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156108ec575f5ffd5b815167ffffffffffffffff811115610902575f5ffd5b8201601f81018413610912575f5ffd5b805167ffffffffffffffff81111561092c5761092c6108c8565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561095b5761095b6108c8565b604052818152828201602001861015610972575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f81518060208401855e5f93019283525090919050565b5f6109b1828561098f565b602f60f81b81526109c5600182018561098f565b95945050505050565b6c027b7363ca6b2b6b2b99026281609d1b81525f610890600d83018461098f565b674f4e4c59204c502d60c01b81525f610890600883018461098f565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b604081525f610a4b6040830185610a0b565b82810360208401526109c58185610a0b56fe60806040526001601255348015610014575f5ffd5b50604051612d51380380612d5183398101604081905261003391610199565b81516020830120829082907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f905f61006b8582610282565b60016100778582610282565b60408051808201825260018152603160f81b60209182015290516100c595949392917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69146913091016103bb565b60408051601f1981840301815291905280516020909101206005555050600780546001600160a01b03191633179055506104149050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261011f575f5ffd5b81516001600160401b03811115610138576101386100fc565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610166576101666100fc565b60405281815283820160200185101561017d575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f604083850312156101aa575f5ffd5b82516001600160401b038111156101bf575f5ffd5b6101cb85828601610110565b602085015190935090506001600160401b038111156101e8575f5ffd5b6101f485828601610110565b9150509250929050565b600181811c9082168061021257607f821691505b60208210810361023057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561027d57805f5260205f20601f840160051c8101602085101561025b5750805b601f840160051c820191505b8181101561027a575f8155600101610267565b50505b505050565b81516001600160401b0381111561029b5761029b6100fc565b6102af816102a984546101fe565b84610236565b6020601f8211600181146102e1575f83156102ca5750848201515b5f19600385901b1c1916600184901b17845561027a565b5f84815260208120601f198516915b8281101561031057878501518255602094850194600190920191016102f0565b508482101561032d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8154610348816101fe565b808552600182168015610362576001811461037e576103b2565b60ff1983166020870152602082151560051b87010193506103b2565b845f5260205f205f5b838110156103a95781546020828a010152600182019150602081019050610387565b87016020019450505b50505092915050565b87815286602082015260e060408201525f6103d960e083018861033c565b82810360608401526103eb818861033c565b6080840196909652505060a08101929092526001600160a01b031660c090910152949350505050565b612930806104215f395ff3fe608060405234801561000f575f5ffd5b50600436106101f2575f3560e01c80636a62784211610114578063a9059cbb116100a9578063c45a015511610079578063c45a01551461046f578063d21220a714610482578063d505accf14610495578063dd62ed3e146104a8578063fff6cae9146104d2575f5ffd5b8063a9059cbb1461042d578063aa1ef59814610440578063ba9a7a5614610453578063bc25cf771461045c575f5ffd5b806389afcb44116100e457806389afcb44146103d75780638d060519146103ff57806395d89b4114610412578063a7c4abdb1461041a575f5ffd5b80636a6278421461037d57806370a08231146103905780637464fc3d146103af5780637ecebe00146103b8575f5ffd5b806330adf81f1161018a5780634783c35b1161015a5780634783c35b14610345578063485cc955146103585780635909c0d51461036b5780635a3d549314610374575f5ffd5b806330adf81f146102e8578063313ce5671461030f5780633644e5151461032957806346c96aac14610332575f5ffd5b80630dfe1681116101c55780630dfe16811461028057806318160ddd146102ab5780631fc8bc5d146102c257806323b872dd146102d5575f5ffd5b8063022c0d9f146101f657806306fdde031461020b5780630902f1ac14610229578063095ea7b31461025d575b5f5ffd5b610209610204366004612479565b6104da565b005b6102136109ee565b6040516102209190612509565b60405180910390f35b610231610a79565b604080516001600160701b03948516815293909216602084015263ffffffff1690820152606001610220565b61027061026b36600461253e565b610aa3565b6040519015158152602001610220565b600854610293906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b6102b460025481565b604051908152602001610220565b600c54610293906001600160a01b031681565b6102706102e3366004612568565b610ab9565b6102b47f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610317601281565b60405160ff9091168152602001610220565b6102b460055481565b600a54610293906001600160a01b031681565b600b54610293906001600160a01b031681565b6102096103663660046125a6565b610b30565b6102b4600f5481565b6102b460105481565b6102b461038b3660046125dd565b610baf565b6102b461039e3660046125dd565b60036020525f908152604090205481565b6102b460115481565b6102b46103c63660046125dd565b60066020525f908152604090205481565b6103ea6103e53660046125dd565b610e70565b60408051928352602083019190915201610220565b61020961040d3660046125f8565b6111c6565b6102136111e1565b6102b461042836600461260f565b6111ee565b61027061043b36600461253e565b61120c565b61020961044e366004612638565b611218565b6102b46103e881565b61020961046a3660046125dd565b611314565b600754610293906001600160a01b031681565b600954610293906001600160a01b031681565b6102096104a3366004612680565b611424565b6102b46104b63660046125a6565b600460209081525f928352604080842090915290825290205481565b610209611634565b6012546001146105055760405162461bcd60e51b81526004016104fc906126f1565b60405180910390fd5b5f6012558415158061051657505f84115b6105705760405162461bcd60e51b815260206004820152602560248201527f4f6e6c794d656d65733a20494e53554646494349454e545f4f55545055545f416044820152641353d5539560da1b60648201526084016104fc565b5f5f61057a610a79565b5091509150816001600160701b03168710801561059f5750806001600160701b031686105b6105f55760405162461bcd60e51b815260206004820152602160248201527f4f6e6c794d656d65733a20494e53554646494349454e545f4c495155494449546044820152605960f81b60648201526084016104fc565b6008546009545f9182916001600160a01b039182169190811690891682148015906106325750806001600160a01b0316896001600160a01b031614155b6106765760405162461bcd60e51b81526020600482015260156024820152744f6e6c794d656d65733a20494e56414c49445f544f60581b60448201526064016104fc565b8a1561068757610687828a8d611754565b891561069857610698818a8c611754565b86156107005760405163551227a360e11b81526001600160a01b038a169063aa244f46906106d29033908f908f908e908e9060040161271c565b5f604051808303815f87803b1580156106e9575f5ffd5b505af11580156106fb573d5f5f3e3d5ffd5b505050505b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610742573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107669190612767565b6040516370a0823160e01b81523060048201529094506001600160a01b038216906370a0823190602401602060405180830381865afa1580156107ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cf9190612767565b925050505f89856001600160701b03166107e99190612792565b83116107f5575f610812565b6108088a6001600160701b038716612792565b6108129084612792565b90505f6108288a6001600160701b038716612792565b8311610834575f610851565b6108478a6001600160701b038716612792565b6108519084612792565b90505f82118061086057505f81115b6108b85760405162461bcd60e51b8152602060048201526024808201527f4f6e6c794d656d65733a20494e53554646494349454e545f494e5055545f414d60448201526313d5539560e21b60648201526084016104fc565b6001600160701b0386166108cd8b60646127a5565b6108d791906127a5565b6001600160701b0386166108ec8460636127a5565b6108f691906127a5565b1015801561094057506001600160701b0385166109148c60646127a5565b61091e91906127a5565b6001600160701b0387166109338360636127a5565b61093d91906127a5565b10155b61097b5760405162461bcd60e51b815260206004820152600c60248201526b4f6e6c794d656d65733a204b60a01b60448201526064016104fc565b6109878484888861186a565b60408051838152602081018390529081018c9052606081018b90526001600160a01b038a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001601255505050505050505050565b5f80546109fa906127bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a26906127bc565b8015610a715780601f10610a4857610100808354040283529160200191610a71565b820191905f5260205f20905b815481529060010190602001808311610a5457829003601f168201915b505050505081565b600d546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b5f610aaf338484611a21565b5060015b92915050565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1914610b1b576001600160a01b0384165f90815260046020908152604080832033845290915281208054849290610b15908490612792565b90915550505b610b26848484611a82565b5060019392505050565b6007546001600160a01b03163314610b815760405162461bcd60e51b815260206004820152601460248201527327b7363ca6b2b6b2b99d102327a92124a22222a760611b60448201526064016104fc565b600880546001600160a01b039384166001600160a01b03199182161790915560098054929093169116179055565b5f601254600114610bd25760405162461bcd60e51b81526004016104fc906126f1565b5f601281905580610be1610a79565b506008546040516370a0823160e01b81523060048201529294509092505f916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610c30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c549190612767565b6009546040516370a0823160e01b81523060048201529192505f916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610c9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc39190612767565b90505f610cd96001600160701b03861684612792565b90505f610cef6001600160701b03861684612792565b90505f610cfc8787611b21565b6002549091505f819003610d3c576103e8610d1f610d1a85876127a5565b61219a565b610d299190612792565b9850610d375f6103e8612208565b610d83565b610d806001600160701b038916610d5383876127a5565b610d5d9190612802565b6001600160701b038916610d7184876127a5565b610d7b9190612802565b61228f565b98505b5f8911610de35760405162461bcd60e51b815260206004820152602860248201527f4f6e6c794d656d65733a20494e53554646494349454e545f4c495155494449546044820152671657d3525395115160c21b60648201526084016104fc565b610ded8a8a612208565b610df986868a8a61186a565b8115610e2257600d54610e1e906001600160701b03600160701b8204811691166127a5565b6011555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a25050600160125550949695505050505050565b5f5f601254600114610e945760405162461bcd60e51b81526004016104fc906126f1565b5f601281905580610ea3610a79565b506008546009546040516370a0823160e01b81523060048201529395509193506001600160a01b03908116929116905f9083906370a0823190602401602060405180830381865afa158015610efa573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1e9190612767565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610f65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f899190612767565b305f90815260036020526040812054919250610fa58888611b21565b60025490915080610fb686856127a5565b610fc09190612802565b9a5080610fcd85856127a5565b610fd79190612802565b99505f8b118015610fe757505f8a115b6110445760405162461bcd60e51b815260206004820152602860248201527f4f6e6c794d656d65733a20494e53554646494349454e545f4c495155494449546044820152671657d0955493915160c21b60648201526084016104fc565b61104e30846122a6565b611059878d8d611754565b611064868d8c611754565b6040516370a0823160e01b81523060048201526001600160a01b038816906370a0823190602401602060405180830381865afa1580156110a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ca9190612767565b6040516370a0823160e01b81523060048201529095506001600160a01b038716906370a0823190602401602060405180830381865afa15801561110f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111339190612767565b935061114185858b8b61186a565b811561116a57600d54611166906001600160701b03600160701b8204811691166127a5565b6011555b604080518c8152602081018c90526001600160a01b038e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001601281905550915091565b600c546001600160a01b031633146111dc575f5ffd5b600e55565b600180546109fa906127bc565b5f816111fa85856127a5565b6112049190612802565b949350505050565b5f610aaf338484611a82565b6007546001600160a01b031633146112695760405162461bcd60e51b815260206004820152601460248201527327b7363ca6b2b6b2b99d102327a92124a22222a760611b60448201526064016104fc565b6001600160a01b0383161580159061128957506001600160a01b03821615155b6112d55760405162461bcd60e51b815260206004820152601760248201527f4f6e6c794d656d65733a205a45524f5f4144445245535300000000000000000060448201526064016104fc565b600a80546001600160a01b039485166001600160a01b031991821617909155600b805493851693821693909317909255600c8054919093169116179055565b6012546001146113365760405162461bcd60e51b81526004016104fc906126f1565b5f601255600854600954600d546040516370a0823160e01b81523060048201526001600160a01b0393841693909216916113d291849186916001600160701b03169083906370a08231906024015b602060405180830381865afa15801561139f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c39190612767565b6113cd9190612792565b611754565b600d546040516370a0823160e01b815230600482015261141a9183918691600160701b90046001600160701b0316906001600160a01b038416906370a0823190602401611384565b5050600160125550565b428410156114695760405162461bcd60e51b815260206004820152601260248201527113db9b1e53595b595cce881156141254915160721b60448201526064016104fc565b6005546001600160a01b0388165f90815260066020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876114bb83612815565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161153492919061190160f01b81526002810192909252602282015260420190565b60408051601f1981840301815282825280516020918201205f80855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa15801561159c573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116158015906115d25750886001600160a01b0316816001600160a01b0316145b61161e5760405162461bcd60e51b815260206004820152601c60248201527f4f6e6c794d656d65733a20494e56414c49445f5349474e41545552450000000060448201526064016104fc565b611629898989611a21565b505050505050505050565b6012546001146116565760405162461bcd60e51b81526004016104fc906126f1565b5f6012556008546040516370a0823160e01b815230600482015261174d916001600160a01b0316906370a08231906024015b602060405180830381865afa1580156116a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c79190612767565b6009546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561170d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117319190612767565b600d546001600160701b0380821691600160701b90041661186a565b6001601255565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f928392908716916117af919061282d565b5f604051808303815f865af19150503d805f81146117e8576040519150601f19603f3d011682016040523d82523d5f602084013e6117ed565b606091505b50915091508180156118175750805115806118175750808060200190518101906118179190612843565b6118635760405162461bcd60e51b815260206004820152601a60248201527f4f6e6c794d656d65733a205452414e534645525f4641494c454400000000000060448201526064016104fc565b5050505050565b6001600160701b03841180159061188857506001600160701b038311155b6118ca5760405162461bcd60e51b81526020600482015260136024820152724f6e6c794d656d65733a204f564552464c4f5760681b60448201526064016104fc565b5f6118da64010000000042612862565b600d5490915063ffffffff600160e01b909104811682039081161580159061190a57506001600160701b03841615155b801561191e57506001600160701b03831615155b15611989578063ffffffff166119468561193786612327565b6001600160e01b03169061233f565b600f80546001600160e01b03929092169290920201905563ffffffff81166119718461193787612327565b601080546001600160e01b0392909216929092020190555b50600d805463ffffffff8316600160e01b026001600160e01b036001600160701b03888116600160701b9081026001600160e01b03199095168b83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a15050505050565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383165f9081526003602052604081208054839290611aa9908490612792565b90915550506001600160a01b0382165f9081526003602052604081208054839290611ad5908490612875565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a7591815260200190565b5f5f60075f9054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b73573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b979190612888565b6011546001600160a01b03821615801594509192509061218757801561218257600a546001600160a01b03161580611bd85750600b546001600160a01b0316155b15611bf65760405163049a182960e21b815260040160405180910390fd5b5f611c10610d1a6001600160701b038088169089166127a5565b90505f611c1c8361219a565b90508082111561217f575f611c318284612792565b600254611c3e91906127a5565b90505f611c4b8385612875565b90505f611c588284612802565b9050801561217b57600a546040516301b1e5d760e51b81523060048201525f916001600160a01b03169063363cbae090602401602060405180830381865afa158015611ca6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cca9190612843565b90505f6064611cda84601e6127a5565b611ce49190612802565b90505f6064611cf48560056127a5565b611cfe9190612802565b90505f83611d22576064611d1386602d6127a5565b611d1d9190612802565b611d39565b6064611d2f86600f6127a5565b611d399190612802565b90508315611fa457306001600160a01b031663a7c4abdb8f856002546040518463ffffffff1660e01b8152600401611d8f939291906001600160701b039390931683526020830191909152604082015260600190565b602060405180830381865afa925050508015611dc8575060408051601f3d908101601f19168201909252611dc591810190612767565b60015b611de557604051639c154db960e01b815260040160405180910390fd5b306001600160a01b031663a7c4abdb8f866002546040518463ffffffff1660e01b8152600401611e33939291906001600160701b039390931683526020830191909152604082015260600190565b602060405180830381865afa925050508015611e6c575060408051601f3d908101601f19168201909252611e6991810190612767565b60015b611e8957604051639c154db960e01b815260040160405180910390fd5b600854600a54611ea6916001600160a01b03908116911684612353565b600954600a54611ec3916001600160a01b03908116911683612353565b600a54600e5460085460405163e402ecb760e01b815260048101929092526001600160a01b039081166024830152604482018590529091169063e402ecb7906064015f604051808303815f87803b158015611f1c575f5ffd5b505af1158015611f2e573d5f5f3e3d5ffd5b5050600a54600e5460095460405163e402ecb760e01b815260048101929092526001600160a01b03908116602483015260448201869052909116925063e402ecb791506064015f604051808303815f87803b158015611f8b575f5ffd5b505af1158015611f9d573d5f5f3e3d5ffd5b5050505050505b306001600160a01b031663a7c4abdb8f846002546040518463ffffffff1660e01b8152600401611ff2939291906001600160701b039390931683526020830191909152604082015260600190565b602060405180830381865afa92505050801561202b575060408051601f3d908101601f1916820190925261202891810190612767565b60015b61204857604051639c154db960e01b815260040160405180910390fd5b306001600160a01b031663a7c4abdb8f856002546040518463ffffffff1660e01b8152600401612096939291906001600160701b039390931683526020830191909152604082015260600190565b602060405180830381865afa9250505080156120cf575060408051601f3d908101601f191682019092526120cc91810190612767565b60015b6120ec57604051639c154db960e01b815260040160405180910390fd5b600854600b54612109916001600160a01b03908116911684611754565b600954600b54612126916001600160a01b03908116911683611754565b5050801561214457600b54612144906001600160a01b031682612208565b6008546040516370a0823160e01b8152306004820152612176916001600160a01b0316906370a0823190602401611688565b505050505b5050505b50505b612192565b8015612192575f6011555b505092915050565b5f60038211156121f95750805f6121b2600283612802565b6121bd906001612875565b90505b818110156121f3579050806002816121d88186612802565b6121e29190612875565b6121ec9190612802565b90506121c0565b50919050565b8115612203575060015b919050565b8060025f8282546122199190612875565b90915550506001600160a01b0382165f9081526003602052604081208054839290612245908490612875565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b5f81831061229d578161229f565b825b9392505050565b6001600160a01b0382165f90815260036020526040812080548392906122cd908490612792565b925050819055508060025f8282546122e59190612792565b90915550506040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612283565b5f610ab3600160701b6001600160701b0384166128a3565b5f61229f6001600160701b038316846128cc565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291515f928392908716916123ae919061282d565b5f604051808303815f865af19150503d805f81146123e7576040519150601f19603f3d011682016040523d82523d5f602084013e6123ec565b606091505b50915091508180156124165750805115806124165750808060200190518101906124169190612843565b6118635760405162461bcd60e51b815260206004820152601960248201527f4f6e6c794d656d65733a20415050524f56455f4641494c45440000000000000060448201526064016104fc565b6001600160a01b0381168114612476575f5ffd5b50565b5f5f5f5f5f6080868803121561248d575f5ffd5b853594506020860135935060408601356124a681612462565b9250606086013567ffffffffffffffff8111156124c1575f5ffd5b8601601f810188136124d1575f5ffd5b803567ffffffffffffffff8111156124e7575f5ffd5b8860208284010111156124f8575f5ffd5b959894975092955050506020019190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f6040838503121561254f575f5ffd5b823561255a81612462565b946020939093013593505050565b5f5f5f6060848603121561257a575f5ffd5b833561258581612462565b9250602084013561259581612462565b929592945050506040919091013590565b5f5f604083850312156125b7575f5ffd5b82356125c281612462565b915060208301356125d281612462565b809150509250929050565b5f602082840312156125ed575f5ffd5b813561229f81612462565b5f60208284031215612608575f5ffd5b5035919050565b5f5f5f60608486031215612621575f5ffd5b505081359360208301359350604090920135919050565b5f5f5f6060848603121561264a575f5ffd5b833561265581612462565b9250602084013561266581612462565b9150604084013561267581612462565b809150509250925092565b5f5f5f5f5f5f5f60e0888a031215612696575f5ffd5b87356126a181612462565b965060208801356126b181612462565b95506040880135945060608801359350608088013560ff811681146126d4575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b60208082526011908201527013db9b1e53595b595cce881313d0d2d151607a1b604082015260600190565b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b5f60208284031215612777575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ab357610ab361277e565b8082028115828204841417610ab357610ab361277e565b600181811c908216806127d057607f821691505b6020821081036121f357634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f82612810576128106127ee565b500490565b5f600182016128265761282661277e565b5060010190565b5f82518060208501845e5f920191825250919050565b5f60208284031215612853575f5ffd5b8151801515811461229f575f5ffd5b5f82612870576128706127ee565b500690565b80820180821115610ab357610ab361277e565b5f60208284031215612898575f5ffd5b815161229f81612462565b6001600160e01b038181168382168181029092169181830481148215176121925761219261277e565b5f6001600160e01b038316806128e4576128e46127ee565b6001600160e01b0392909216919091049291505056fea26469706673582212207ba694dd6979c7fc73678a127a9eb1f4e0110889fa70b4f215b67dc657fac87264736f6c634300081b0033a2646970667358221220da3afb180e0c1206508ab41d1511cfa8cdf6ac4de1152f41bdba7c7745aa9cb764736f6c634300081b0033000000000000000000000000db118f41289fdfa124b5da95012e621fff9a34410000000000000000000000005cc7f71a66513f71938e14977c394d36fec47ddd000000000000000000000000db118f41289fdfa124b5da95012e621fff9a3441000000000000000000000000cb8178baf7a5d15e6ba0093e89b6a0007d769e20
Deployed Bytecode
0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80634783c35b1161006e5780634783c35b1461014d578063574f2ba314610174578063a2e74af614610185578063c9c653961461019a578063e6a43905146101ad578063f46901ed146101e0575f5ffd5b8063017e7e58146100aa578063094b7415146100d95780631e3dd18b146100ec5780631fc8bc5d146100ff57806346c96aac14610126575b5f5ffd5b5f546100bc906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6001546100bc906001600160a01b031681565b6100bc6100fa366004610845565b6101f3565b6100bc7f000000000000000000000000cb8178baf7a5d15e6ba0093e89b6a0007d769e2081565b6100bc7f0000000000000000000000005cc7f71a66513f71938e14977c394d36fec47ddd81565b6100bc7f000000000000000000000000db118f41289fdfa124b5da95012e621fff9a344181565b6003546040519081526020016100d0565b610198610193366004610877565b61021b565b005b6100bc6101a8366004610897565b6102e3565b6100bc6101bb366004610897565b600260209081525f92835260408084209091529082529020546001600160a01b031681565b6101986101ee366004610877565b6107c6565b60038181548110610202575f80fd5b5f918252602090912001546001600160a01b0316905081565b6001546001600160a01b031633146102715760405162461bcd60e51b815260206004820152601460248201527327b7363ca6b2b6b2b99d102327a92124a22222a760611b60448201526064015b60405180910390fd5b6001600160a01b0381166102c15760405162461bcd60e51b81526020600482015260176024820152764f6e6c794d656d65733a205a45524f5f4144445245535360481b6044820152606401610268565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f816001600160a01b0316836001600160a01b0316036103455760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c794d656d65733a204944454e544943414c5f41444452455353455300006044820152606401610268565b5f5f836001600160a01b0316856001600160a01b03161061036757838561036a565b84845b90925090506001600160a01b0382166103bf5760405162461bcd60e51b81526020600482015260176024820152764f6e6c794d656d65733a205a45524f5f4144445245535360481b6044820152606401610268565b6001600160a01b038281165f9081526002602090815260408083208585168452909152902054161561042c5760405162461bcd60e51b81526020600482015260166024820152754f6e6c794d656d65733a20504149525f45584953545360501b6044820152606401610268565b5f856001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610468573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261048f91908101906108dc565b856001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa1580156104ca573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104f191908101906108dc565b6040516020016105029291906109a6565b60405160208183030381529060405290505f8160405160200161052591906109ce565b60405160208183030381529060405290505f8260405160200161054891906109ef565b60408051601f19818403018152908290526bffffffffffffffffffffffff19606088811b8216602085015287901b16603483015291506048016040516020818303038152906040528051906020012082826040516105a590610838565b6105b0929190610a39565b8190604051809103905ff59050801580156105cd573d5f5f3e3d5ffd5b5060405163485cc95560e01b81526001600160a01b03878116600483015286811660248301529197509087169063485cc955906044015f604051808303815f87803b15801561061a575f5ffd5b505af115801561062c573d5f5f3e3d5ffd5b5050604051631543deb360e31b81526001600160a01b037f0000000000000000000000005cc7f71a66513f71938e14977c394d36fec47ddd811660048301527f000000000000000000000000db118f41289fdfa124b5da95012e621fff9a3441811660248301527f000000000000000000000000cb8178baf7a5d15e6ba0093e89b6a0007d769e20811660448301528916925063aa1ef59891506064015f604051808303815f87803b1580156106e0575f5ffd5b505af11580156106f2573d5f5f3e3d5ffd5b505050506001600160a01b038581165f8181526002602081815260408084208a87168086529083528185208054978e166001600160a01b031998891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9095018054909716841790965592548351928352908201527f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9910160405180910390a3505050505092915050565b6001546001600160a01b031633146108175760405162461bcd60e51b815260206004820152601460248201527327b7363ca6b2b6b2b99d102327a92124a22222a760611b6044820152606401610268565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b612d5180610a5e83390190565b5f60208284031215610855575f5ffd5b5035919050565b80356001600160a01b0381168114610872575f5ffd5b919050565b5f60208284031215610887575f5ffd5b6108908261085c565b9392505050565b5f5f604083850312156108a8575f5ffd5b6108b18361085c565b91506108bf6020840161085c565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156108ec575f5ffd5b815167ffffffffffffffff811115610902575f5ffd5b8201601f81018413610912575f5ffd5b805167ffffffffffffffff81111561092c5761092c6108c8565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561095b5761095b6108c8565b604052818152828201602001861015610972575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f81518060208401855e5f93019283525090919050565b5f6109b1828561098f565b602f60f81b81526109c5600182018561098f565b95945050505050565b6c027b7363ca6b2b6b2b99026281609d1b81525f610890600d83018461098f565b674f4e4c59204c502d60c01b81525f610890600883018461098f565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b604081525f610a4b6040830185610a0b565b82810360208401526109c58185610a0b56fe60806040526001601255348015610014575f5ffd5b50604051612d51380380612d5183398101604081905261003391610199565b81516020830120829082907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f905f61006b8582610282565b60016100778582610282565b60408051808201825260018152603160f81b60209182015290516100c595949392917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69146913091016103bb565b60408051601f1981840301815291905280516020909101206005555050600780546001600160a01b03191633179055506104149050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261011f575f5ffd5b81516001600160401b03811115610138576101386100fc565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610166576101666100fc565b60405281815283820160200185101561017d575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f604083850312156101aa575f5ffd5b82516001600160401b038111156101bf575f5ffd5b6101cb85828601610110565b602085015190935090506001600160401b038111156101e8575f5ffd5b6101f485828601610110565b9150509250929050565b600181811c9082168061021257607f821691505b60208210810361023057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561027d57805f5260205f20601f840160051c8101602085101561025b5750805b601f840160051c820191505b8181101561027a575f8155600101610267565b50505b505050565b81516001600160401b0381111561029b5761029b6100fc565b6102af816102a984546101fe565b84610236565b6020601f8211600181146102e1575f83156102ca5750848201515b5f19600385901b1c1916600184901b17845561027a565b5f84815260208120601f198516915b8281101561031057878501518255602094850194600190920191016102f0565b508482101561032d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8154610348816101fe565b808552600182168015610362576001811461037e576103b2565b60ff1983166020870152602082151560051b87010193506103b2565b845f5260205f205f5b838110156103a95781546020828a010152600182019150602081019050610387565b87016020019450505b50505092915050565b87815286602082015260e060408201525f6103d960e083018861033c565b82810360608401526103eb818861033c565b6080840196909652505060a08101929092526001600160a01b031660c090910152949350505050565b612930806104215f395ff3fe608060405234801561000f575f5ffd5b50600436106101f2575f3560e01c80636a62784211610114578063a9059cbb116100a9578063c45a015511610079578063c45a01551461046f578063d21220a714610482578063d505accf14610495578063dd62ed3e146104a8578063fff6cae9146104d2575f5ffd5b8063a9059cbb1461042d578063aa1ef59814610440578063ba9a7a5614610453578063bc25cf771461045c575f5ffd5b806389afcb44116100e457806389afcb44146103d75780638d060519146103ff57806395d89b4114610412578063a7c4abdb1461041a575f5ffd5b80636a6278421461037d57806370a08231146103905780637464fc3d146103af5780637ecebe00146103b8575f5ffd5b806330adf81f1161018a5780634783c35b1161015a5780634783c35b14610345578063485cc955146103585780635909c0d51461036b5780635a3d549314610374575f5ffd5b806330adf81f146102e8578063313ce5671461030f5780633644e5151461032957806346c96aac14610332575f5ffd5b80630dfe1681116101c55780630dfe16811461028057806318160ddd146102ab5780631fc8bc5d146102c257806323b872dd146102d5575f5ffd5b8063022c0d9f146101f657806306fdde031461020b5780630902f1ac14610229578063095ea7b31461025d575b5f5ffd5b610209610204366004612479565b6104da565b005b6102136109ee565b6040516102209190612509565b60405180910390f35b610231610a79565b604080516001600160701b03948516815293909216602084015263ffffffff1690820152606001610220565b61027061026b36600461253e565b610aa3565b6040519015158152602001610220565b600854610293906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b6102b460025481565b604051908152602001610220565b600c54610293906001600160a01b031681565b6102706102e3366004612568565b610ab9565b6102b47f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610317601281565b60405160ff9091168152602001610220565b6102b460055481565b600a54610293906001600160a01b031681565b600b54610293906001600160a01b031681565b6102096103663660046125a6565b610b30565b6102b4600f5481565b6102b460105481565b6102b461038b3660046125dd565b610baf565b6102b461039e3660046125dd565b60036020525f908152604090205481565b6102b460115481565b6102b46103c63660046125dd565b60066020525f908152604090205481565b6103ea6103e53660046125dd565b610e70565b60408051928352602083019190915201610220565b61020961040d3660046125f8565b6111c6565b6102136111e1565b6102b461042836600461260f565b6111ee565b61027061043b36600461253e565b61120c565b61020961044e366004612638565b611218565b6102b46103e881565b61020961046a3660046125dd565b611314565b600754610293906001600160a01b031681565b600954610293906001600160a01b031681565b6102096104a3366004612680565b611424565b6102b46104b63660046125a6565b600460209081525f928352604080842090915290825290205481565b610209611634565b6012546001146105055760405162461bcd60e51b81526004016104fc906126f1565b60405180910390fd5b5f6012558415158061051657505f84115b6105705760405162461bcd60e51b815260206004820152602560248201527f4f6e6c794d656d65733a20494e53554646494349454e545f4f55545055545f416044820152641353d5539560da1b60648201526084016104fc565b5f5f61057a610a79565b5091509150816001600160701b03168710801561059f5750806001600160701b031686105b6105f55760405162461bcd60e51b815260206004820152602160248201527f4f6e6c794d656d65733a20494e53554646494349454e545f4c495155494449546044820152605960f81b60648201526084016104fc565b6008546009545f9182916001600160a01b039182169190811690891682148015906106325750806001600160a01b0316896001600160a01b031614155b6106765760405162461bcd60e51b81526020600482015260156024820152744f6e6c794d656d65733a20494e56414c49445f544f60581b60448201526064016104fc565b8a1561068757610687828a8d611754565b891561069857610698818a8c611754565b86156107005760405163551227a360e11b81526001600160a01b038a169063aa244f46906106d29033908f908f908e908e9060040161271c565b5f604051808303815f87803b1580156106e9575f5ffd5b505af11580156106fb573d5f5f3e3d5ffd5b505050505b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610742573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107669190612767565b6040516370a0823160e01b81523060048201529094506001600160a01b038216906370a0823190602401602060405180830381865afa1580156107ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cf9190612767565b925050505f89856001600160701b03166107e99190612792565b83116107f5575f610812565b6108088a6001600160701b038716612792565b6108129084612792565b90505f6108288a6001600160701b038716612792565b8311610834575f610851565b6108478a6001600160701b038716612792565b6108519084612792565b90505f82118061086057505f81115b6108b85760405162461bcd60e51b8152602060048201526024808201527f4f6e6c794d656d65733a20494e53554646494349454e545f494e5055545f414d60448201526313d5539560e21b60648201526084016104fc565b6001600160701b0386166108cd8b60646127a5565b6108d791906127a5565b6001600160701b0386166108ec8460636127a5565b6108f691906127a5565b1015801561094057506001600160701b0385166109148c60646127a5565b61091e91906127a5565b6001600160701b0387166109338360636127a5565b61093d91906127a5565b10155b61097b5760405162461bcd60e51b815260206004820152600c60248201526b4f6e6c794d656d65733a204b60a01b60448201526064016104fc565b6109878484888861186a565b60408051838152602081018390529081018c9052606081018b90526001600160a01b038a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001601255505050505050505050565b5f80546109fa906127bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a26906127bc565b8015610a715780601f10610a4857610100808354040283529160200191610a71565b820191905f5260205f20905b815481529060010190602001808311610a5457829003601f168201915b505050505081565b600d546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b5f610aaf338484611a21565b5060015b92915050565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1914610b1b576001600160a01b0384165f90815260046020908152604080832033845290915281208054849290610b15908490612792565b90915550505b610b26848484611a82565b5060019392505050565b6007546001600160a01b03163314610b815760405162461bcd60e51b815260206004820152601460248201527327b7363ca6b2b6b2b99d102327a92124a22222a760611b60448201526064016104fc565b600880546001600160a01b039384166001600160a01b03199182161790915560098054929093169116179055565b5f601254600114610bd25760405162461bcd60e51b81526004016104fc906126f1565b5f601281905580610be1610a79565b506008546040516370a0823160e01b81523060048201529294509092505f916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610c30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c549190612767565b6009546040516370a0823160e01b81523060048201529192505f916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610c9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc39190612767565b90505f610cd96001600160701b03861684612792565b90505f610cef6001600160701b03861684612792565b90505f610cfc8787611b21565b6002549091505f819003610d3c576103e8610d1f610d1a85876127a5565b61219a565b610d299190612792565b9850610d375f6103e8612208565b610d83565b610d806001600160701b038916610d5383876127a5565b610d5d9190612802565b6001600160701b038916610d7184876127a5565b610d7b9190612802565b61228f565b98505b5f8911610de35760405162461bcd60e51b815260206004820152602860248201527f4f6e6c794d656d65733a20494e53554646494349454e545f4c495155494449546044820152671657d3525395115160c21b60648201526084016104fc565b610ded8a8a612208565b610df986868a8a61186a565b8115610e2257600d54610e1e906001600160701b03600160701b8204811691166127a5565b6011555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a25050600160125550949695505050505050565b5f5f601254600114610e945760405162461bcd60e51b81526004016104fc906126f1565b5f601281905580610ea3610a79565b506008546009546040516370a0823160e01b81523060048201529395509193506001600160a01b03908116929116905f9083906370a0823190602401602060405180830381865afa158015610efa573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1e9190612767565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610f65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f899190612767565b305f90815260036020526040812054919250610fa58888611b21565b60025490915080610fb686856127a5565b610fc09190612802565b9a5080610fcd85856127a5565b610fd79190612802565b99505f8b118015610fe757505f8a115b6110445760405162461bcd60e51b815260206004820152602860248201527f4f6e6c794d656d65733a20494e53554646494349454e545f4c495155494449546044820152671657d0955493915160c21b60648201526084016104fc565b61104e30846122a6565b611059878d8d611754565b611064868d8c611754565b6040516370a0823160e01b81523060048201526001600160a01b038816906370a0823190602401602060405180830381865afa1580156110a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ca9190612767565b6040516370a0823160e01b81523060048201529095506001600160a01b038716906370a0823190602401602060405180830381865afa15801561110f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111339190612767565b935061114185858b8b61186a565b811561116a57600d54611166906001600160701b03600160701b8204811691166127a5565b6011555b604080518c8152602081018c90526001600160a01b038e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001601281905550915091565b600c546001600160a01b031633146111dc575f5ffd5b600e55565b600180546109fa906127bc565b5f816111fa85856127a5565b6112049190612802565b949350505050565b5f610aaf338484611a82565b6007546001600160a01b031633146112695760405162461bcd60e51b815260206004820152601460248201527327b7363ca6b2b6b2b99d102327a92124a22222a760611b60448201526064016104fc565b6001600160a01b0383161580159061128957506001600160a01b03821615155b6112d55760405162461bcd60e51b815260206004820152601760248201527f4f6e6c794d656d65733a205a45524f5f4144445245535300000000000000000060448201526064016104fc565b600a80546001600160a01b039485166001600160a01b031991821617909155600b805493851693821693909317909255600c8054919093169116179055565b6012546001146113365760405162461bcd60e51b81526004016104fc906126f1565b5f601255600854600954600d546040516370a0823160e01b81523060048201526001600160a01b0393841693909216916113d291849186916001600160701b03169083906370a08231906024015b602060405180830381865afa15801561139f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c39190612767565b6113cd9190612792565b611754565b600d546040516370a0823160e01b815230600482015261141a9183918691600160701b90046001600160701b0316906001600160a01b038416906370a0823190602401611384565b5050600160125550565b428410156114695760405162461bcd60e51b815260206004820152601260248201527113db9b1e53595b595cce881156141254915160721b60448201526064016104fc565b6005546001600160a01b0388165f90815260066020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9190876114bb83612815565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161153492919061190160f01b81526002810192909252602282015260420190565b60408051601f1981840301815282825280516020918201205f80855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa15801561159c573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116158015906115d25750886001600160a01b0316816001600160a01b0316145b61161e5760405162461bcd60e51b815260206004820152601c60248201527f4f6e6c794d656d65733a20494e56414c49445f5349474e41545552450000000060448201526064016104fc565b611629898989611a21565b505050505050505050565b6012546001146116565760405162461bcd60e51b81526004016104fc906126f1565b5f6012556008546040516370a0823160e01b815230600482015261174d916001600160a01b0316906370a08231906024015b602060405180830381865afa1580156116a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c79190612767565b6009546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561170d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117319190612767565b600d546001600160701b0380821691600160701b90041661186a565b6001601255565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f928392908716916117af919061282d565b5f604051808303815f865af19150503d805f81146117e8576040519150601f19603f3d011682016040523d82523d5f602084013e6117ed565b606091505b50915091508180156118175750805115806118175750808060200190518101906118179190612843565b6118635760405162461bcd60e51b815260206004820152601a60248201527f4f6e6c794d656d65733a205452414e534645525f4641494c454400000000000060448201526064016104fc565b5050505050565b6001600160701b03841180159061188857506001600160701b038311155b6118ca5760405162461bcd60e51b81526020600482015260136024820152724f6e6c794d656d65733a204f564552464c4f5760681b60448201526064016104fc565b5f6118da64010000000042612862565b600d5490915063ffffffff600160e01b909104811682039081161580159061190a57506001600160701b03841615155b801561191e57506001600160701b03831615155b15611989578063ffffffff166119468561193786612327565b6001600160e01b03169061233f565b600f80546001600160e01b03929092169290920201905563ffffffff81166119718461193787612327565b601080546001600160e01b0392909216929092020190555b50600d805463ffffffff8316600160e01b026001600160e01b036001600160701b03888116600160701b9081026001600160e01b03199095168b83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a15050505050565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383165f9081526003602052604081208054839290611aa9908490612792565b90915550506001600160a01b0382165f9081526003602052604081208054839290611ad5908490612875565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a7591815260200190565b5f5f60075f9054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b73573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b979190612888565b6011546001600160a01b03821615801594509192509061218757801561218257600a546001600160a01b03161580611bd85750600b546001600160a01b0316155b15611bf65760405163049a182960e21b815260040160405180910390fd5b5f611c10610d1a6001600160701b038088169089166127a5565b90505f611c1c8361219a565b90508082111561217f575f611c318284612792565b600254611c3e91906127a5565b90505f611c4b8385612875565b90505f611c588284612802565b9050801561217b57600a546040516301b1e5d760e51b81523060048201525f916001600160a01b03169063363cbae090602401602060405180830381865afa158015611ca6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cca9190612843565b90505f6064611cda84601e6127a5565b611ce49190612802565b90505f6064611cf48560056127a5565b611cfe9190612802565b90505f83611d22576064611d1386602d6127a5565b611d1d9190612802565b611d39565b6064611d2f86600f6127a5565b611d399190612802565b90508315611fa457306001600160a01b031663a7c4abdb8f856002546040518463ffffffff1660e01b8152600401611d8f939291906001600160701b039390931683526020830191909152604082015260600190565b602060405180830381865afa925050508015611dc8575060408051601f3d908101601f19168201909252611dc591810190612767565b60015b611de557604051639c154db960e01b815260040160405180910390fd5b306001600160a01b031663a7c4abdb8f866002546040518463ffffffff1660e01b8152600401611e33939291906001600160701b039390931683526020830191909152604082015260600190565b602060405180830381865afa925050508015611e6c575060408051601f3d908101601f19168201909252611e6991810190612767565b60015b611e8957604051639c154db960e01b815260040160405180910390fd5b600854600a54611ea6916001600160a01b03908116911684612353565b600954600a54611ec3916001600160a01b03908116911683612353565b600a54600e5460085460405163e402ecb760e01b815260048101929092526001600160a01b039081166024830152604482018590529091169063e402ecb7906064015f604051808303815f87803b158015611f1c575f5ffd5b505af1158015611f2e573d5f5f3e3d5ffd5b5050600a54600e5460095460405163e402ecb760e01b815260048101929092526001600160a01b03908116602483015260448201869052909116925063e402ecb791506064015f604051808303815f87803b158015611f8b575f5ffd5b505af1158015611f9d573d5f5f3e3d5ffd5b5050505050505b306001600160a01b031663a7c4abdb8f846002546040518463ffffffff1660e01b8152600401611ff2939291906001600160701b039390931683526020830191909152604082015260600190565b602060405180830381865afa92505050801561202b575060408051601f3d908101601f1916820190925261202891810190612767565b60015b61204857604051639c154db960e01b815260040160405180910390fd5b306001600160a01b031663a7c4abdb8f856002546040518463ffffffff1660e01b8152600401612096939291906001600160701b039390931683526020830191909152604082015260600190565b602060405180830381865afa9250505080156120cf575060408051601f3d908101601f191682019092526120cc91810190612767565b60015b6120ec57604051639c154db960e01b815260040160405180910390fd5b600854600b54612109916001600160a01b03908116911684611754565b600954600b54612126916001600160a01b03908116911683611754565b5050801561214457600b54612144906001600160a01b031682612208565b6008546040516370a0823160e01b8152306004820152612176916001600160a01b0316906370a0823190602401611688565b505050505b5050505b50505b612192565b8015612192575f6011555b505092915050565b5f60038211156121f95750805f6121b2600283612802565b6121bd906001612875565b90505b818110156121f3579050806002816121d88186612802565b6121e29190612875565b6121ec9190612802565b90506121c0565b50919050565b8115612203575060015b919050565b8060025f8282546122199190612875565b90915550506001600160a01b0382165f9081526003602052604081208054839290612245908490612875565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b5f81831061229d578161229f565b825b9392505050565b6001600160a01b0382165f90815260036020526040812080548392906122cd908490612792565b925050819055508060025f8282546122e59190612792565b90915550506040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612283565b5f610ab3600160701b6001600160701b0384166128a3565b5f61229f6001600160701b038316846128cc565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291515f928392908716916123ae919061282d565b5f604051808303815f865af19150503d805f81146123e7576040519150601f19603f3d011682016040523d82523d5f602084013e6123ec565b606091505b50915091508180156124165750805115806124165750808060200190518101906124169190612843565b6118635760405162461bcd60e51b815260206004820152601960248201527f4f6e6c794d656d65733a20415050524f56455f4641494c45440000000000000060448201526064016104fc565b6001600160a01b0381168114612476575f5ffd5b50565b5f5f5f5f5f6080868803121561248d575f5ffd5b853594506020860135935060408601356124a681612462565b9250606086013567ffffffffffffffff8111156124c1575f5ffd5b8601601f810188136124d1575f5ffd5b803567ffffffffffffffff8111156124e7575f5ffd5b8860208284010111156124f8575f5ffd5b959894975092955050506020019190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f6040838503121561254f575f5ffd5b823561255a81612462565b946020939093013593505050565b5f5f5f6060848603121561257a575f5ffd5b833561258581612462565b9250602084013561259581612462565b929592945050506040919091013590565b5f5f604083850312156125b7575f5ffd5b82356125c281612462565b915060208301356125d281612462565b809150509250929050565b5f602082840312156125ed575f5ffd5b813561229f81612462565b5f60208284031215612608575f5ffd5b5035919050565b5f5f5f60608486031215612621575f5ffd5b505081359360208301359350604090920135919050565b5f5f5f6060848603121561264a575f5ffd5b833561265581612462565b9250602084013561266581612462565b9150604084013561267581612462565b809150509250925092565b5f5f5f5f5f5f5f60e0888a031215612696575f5ffd5b87356126a181612462565b965060208801356126b181612462565b95506040880135945060608801359350608088013560ff811681146126d4575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b60208082526011908201527013db9b1e53595b595cce881313d0d2d151607a1b604082015260600190565b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b5f60208284031215612777575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ab357610ab361277e565b8082028115828204841417610ab357610ab361277e565b600181811c908216806127d057607f821691505b6020821081036121f357634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f82612810576128106127ee565b500490565b5f600182016128265761282661277e565b5060010190565b5f82518060208501845e5f920191825250919050565b5f60208284031215612853575f5ffd5b8151801515811461229f575f5ffd5b5f82612870576128706127ee565b500690565b80820180821115610ab357610ab361277e565b5f60208284031215612898575f5ffd5b815161229f81612462565b6001600160e01b038181168382168181029092169181830481148215176121925761219261277e565b5f6001600160e01b038316806128e4576128e46127ee565b6001600160e01b0392909216919091049291505056fea26469706673582212207ba694dd6979c7fc73678a127a9eb1f4e0110889fa70b4f215b67dc657fac87264736f6c634300081b0033a2646970667358221220da3afb180e0c1206508ab41d1511cfa8cdf6ac4de1152f41bdba7c7745aa9cb764736f6c634300081b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000db118f41289fdfa124b5da95012e621fff9a34410000000000000000000000005cc7f71a66513f71938e14977c394d36fec47ddd000000000000000000000000db118f41289fdfa124b5da95012e621fff9a3441000000000000000000000000cb8178baf7a5d15e6ba0093e89b6a0007d769e20
-----Decoded View---------------
Arg [0] : _feeToSetter (address): 0xDB118F41289fdFa124b5DA95012e621fff9A3441
Arg [1] : _voter (address): 0x5cc7F71a66513f71938e14977C394d36FEC47DdD
Arg [2] : _multisig (address): 0xDB118F41289fdFa124b5DA95012e621fff9A3441
Arg [3] : _chef (address): 0xCb8178baf7a5D15e6ba0093e89B6a0007D769E20
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000db118f41289fdfa124b5da95012e621fff9a3441
Arg [1] : 0000000000000000000000005cc7f71a66513f71938e14977c394d36fec47ddd
Arg [2] : 000000000000000000000000db118f41289fdfa124b5da95012e621fff9a3441
Arg [3] : 000000000000000000000000cb8178baf7a5d15e6ba0093e89b6a0007d769e20
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.