Feature Tip: Add private address tag to any address under My Name Tag !
Token migration announcement. Fountain 3 token contract has migrated to a new address.
ERC-20
Overview
Max Total Supply
2,208,919,510.99 FTN
Holders
1,802 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FountainTokenUpgrade
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-03-31 */ pragma solidity 0.4.25; library SafeMath { function mul (uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div (uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function sub (uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add (uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract ERCBasic { event Transfer(address indexed from, address indexed to, uint256 value); function totalSupply () public view returns (uint256); function balanceOf (address who) public view returns (uint256); function transfer (address to, uint256 value) public returns (bool); } contract ERC is ERCBasic { event Approval(address indexed owner, address indexed spender, uint256 value); function transferFrom (address from, address to, uint256 value) public returns (bool); function allowance (address owner, address spender) public view returns (uint256); function approve (address spender, uint256 value) public returns (bool); } contract Ownable { event OwnershipTransferred(address indexed oldone, address indexed newone); event FoundationOwnershipTransferred(address indexed oldFoundationOwner, address indexed newFoundationOwner); address internal owner; address internal foundationOwner; constructor () public { owner = msg.sender; foundationOwner = owner; } modifier onlyOwner () { require(msg.sender == owner); _; } modifier hasMintability () { require(msg.sender == owner || msg.sender == foundationOwner); _; } function transferOwnership (address newOwner) public returns (bool); function setFountainFoundationOwner (address foundation) public returns (bool); } contract Pausable is Ownable { event ContractPause(); event ContractResume(); event ContractPauseSchedule(uint256 from, uint256 to); uint256 internal pauseFrom; uint256 internal pauseTo; modifier whenRunning () { require(now < pauseFrom || now > pauseTo); _; } modifier whenPaused () { require(now >= pauseFrom && now <= pauseTo); _; } function pause () public onlyOwner { pauseFrom = now - 1; pauseTo = now + 30000 days; emit ContractPause(); } function pause (uint256 from, uint256 to) public onlyOwner { require(to > from); pauseFrom = from; pauseTo = to; emit ContractPauseSchedule(from, to); } function resume () public onlyOwner { pauseFrom = now - 2; pauseTo = now - 1; emit ContractResume(); } } contract TokenForge is Ownable { event ForgeStart(); event ForgeStop(); bool public forge_running = true; modifier canForge () { require(forge_running); _; } modifier cannotForge () { require(!forge_running); _; } function startForge () public onlyOwner cannotForge returns (bool) { forge_running = true; emit ForgeStart(); return true; } function stopForge () public onlyOwner canForge returns (bool) { forge_running = false; emit ForgeStop(); return true; } } contract CappedToken is Ownable { using SafeMath for uint256; uint256 public token_cap; uint256 public token_created; uint256 public token_foundation_cap; uint256 public token_foundation_created; constructor (uint256 _cap, uint256 _foundationCap) public { token_cap = _cap; token_foundation_cap = _foundationCap; } function changeCap (uint256 _cap) public onlyOwner returns (bool) { if (_cap < token_created && _cap > 0) return false; token_cap = _cap; return true; } function canMint (uint256 amount) public view returns (bool) { return (token_cap == 0) || (token_created.add(amount) <= token_cap); } function canMintFoundation(uint256 amount) internal view returns(bool) { return(token_foundation_created.add(amount) <= token_foundation_cap); } } contract BasicToken is ERCBasic, Pausable { using SafeMath for uint256; mapping(address => uint256) public wallets; modifier canTransfer (address _from, address _to, uint256 amount) { require((_from != address(0)) && (_to != address(0))); require(_from != _to); require(amount > 0); _; } function balanceOf (address user) public view returns (uint256) { return wallets[user]; } } contract DelegatableToken is ERC, BasicToken { using SafeMath for uint256; mapping(address => mapping(address => uint256)) public warrants; function allowance (address owner, address delegator) public view returns (uint256) { return warrants[owner][delegator]; } function approve (address delegator, uint256 value) public whenRunning returns (bool) { if (delegator == msg.sender) return true; warrants[msg.sender][delegator] = value; emit Approval(msg.sender, delegator, value); return true; } function increaseApproval (address delegator, uint256 delta) public whenRunning returns (bool) { if (delegator == msg.sender) return true; uint256 value = warrants[msg.sender][delegator].add(delta); warrants[msg.sender][delegator] = value; emit Approval(msg.sender, delegator, value); return true; } function decreaseApproval (address delegator, uint256 delta) public whenRunning returns (bool) { if (delegator == msg.sender) return true; uint256 value = warrants[msg.sender][delegator]; if (value < delta) { value = 0; } else { value = value.sub(delta); } warrants[msg.sender][delegator] = value; emit Approval(msg.sender, delegator, value); return true; } } contract LockableProtocol is BasicToken { function invest (address investor, uint256 amount) public returns (bool); function getInvestedToken (address investor) public view returns (uint256); function getLockedToken (address investor) public view returns (uint256); function availableWallet (address user) public view returns (uint256) { return wallets[user].sub(getLockedToken(user)); } } contract MintAndBurnToken is TokenForge, CappedToken, LockableProtocol { using SafeMath for uint256; event Mint(address indexed user, uint256 amount); event Burn(address indexed user, uint256 amount); constructor (uint256 _initial, uint256 _cap, uint256 _fountainCap) public CappedToken(_cap, _fountainCap) { token_created = _initial; wallets[msg.sender] = _initial; emit Mint(msg.sender, _initial); emit Transfer(address(0), msg.sender, _initial); } function totalSupply () public view returns (uint256) { return token_created; } function totalFountainSupply() public view returns(uint256) { return token_foundation_created; } function mint (address target, uint256 amount) public hasMintability whenRunning canForge returns (bool) { require(target != owner && target != foundationOwner); require(canMint(amount)); if (msg.sender == foundationOwner) { require(canMintFoundation(amount)); token_foundation_created = token_foundation_created.add(amount); } token_created = token_created.add(amount); wallets[target] = wallets[target].add(amount); emit Mint(target, amount); emit Transfer(address(0), target, amount); return true; } function burn (uint256 amount) public whenRunning canForge returns (bool) { uint256 balance = availableWallet(msg.sender); require(amount <= balance); token_created = token_created.sub(amount); wallets[msg.sender] = wallets[msg.sender].sub(amount); emit Burn(msg.sender, amount); emit Transfer(msg.sender, address(0), amount); return true; } } contract LockableToken is MintAndBurnToken, DelegatableToken { using SafeMath for uint256; struct LockBin { uint256 start; uint256 finish; uint256 duration; uint256 amount; } event InvestStart(); event InvestStop(); event NewInvest(uint256 release_start, uint256 release_duration); uint256 public releaseStart; uint256 public releaseDuration; bool public forceStopInvest; mapping(address => mapping(uint => LockBin)) public lockbins; modifier canInvest () { require(!forceStopInvest); _; } constructor (uint256 _initial, uint256 _cap, uint256 _fountainCap) public MintAndBurnToken(_initial, _cap, _fountainCap) { forceStopInvest = true; } function pauseInvest () public onlyOwner whenRunning returns (bool) { require(!forceStopInvest); forceStopInvest = true; emit InvestStop(); return true; } function resumeInvest () public onlyOwner whenRunning returns (bool) { require(forceStopInvest); forceStopInvest = false; emit InvestStart(); return true; } function setInvest (uint256 release_start, uint256 release_duration) public onlyOwner whenRunning returns (bool) { releaseStart = release_start; releaseDuration = release_duration; require(releaseStart + releaseDuration > releaseStart); forceStopInvest = false; emit NewInvest(release_start, release_duration); return true; } function invest (address investor, uint256 amount) public onlyOwner whenRunning canInvest returns (bool) { require(investor != address(0)); require(investor != owner); require(investor != foundationOwner); require(amount > 0); require(canMint(amount)); mapping(uint => LockBin) locks = lockbins[investor]; LockBin storage info = locks[0]; uint index = info.amount + 1; locks[index] = LockBin({ start: releaseStart, finish: releaseStart + releaseDuration, duration: releaseDuration / (1 days), amount: amount }); info.amount = index; token_created = token_created.add(amount); wallets[investor] = wallets[investor].add(amount); emit Mint(investor, amount); emit Transfer(address(0), investor, amount); return true; } function batchInvest (address[] investors, uint256 amount) public onlyOwner whenRunning canInvest returns (bool) { require(amount > 0); uint investorsLength = investors.length; uint investorsCount = 0; uint i; address r; for (i = 0; i < investorsLength; i ++) { r = investors[i]; if (r == address(0) || r == owner || r == foundationOwner) continue; investorsCount ++; } require(investorsCount > 0); uint256 totalAmount = amount.mul(uint256(investorsCount)); require(canMint(totalAmount)); token_created = token_created.add(totalAmount); for (i = 0; i < investorsLength; i ++) { r = investors[i]; if (r == address(0) || r == owner || r == foundationOwner) continue; mapping(uint => LockBin) locks = lockbins[r]; LockBin storage info = locks[0]; uint index = info.amount + 1; locks[index] = LockBin({ start: releaseStart, finish: releaseStart + releaseDuration, duration: releaseDuration / (1 days), amount: amount }); info.amount = index; wallets[r] = wallets[r].add(amount); emit Mint(r, amount); emit Transfer(address(0), r, amount); } return true; } function batchInvests (address[] investors, uint256[] amounts) public onlyOwner whenRunning canInvest returns (bool) { uint investorsLength = investors.length; require(investorsLength == amounts.length); uint investorsCount = 0; uint256 totalAmount = 0; uint i; address r; for (i = 0; i < investorsLength; i ++) { r = investors[i]; if (r == address(0) || r == owner || r == foundationOwner) continue; investorsCount ++; totalAmount = totalAmount.add(amounts[i]); } require(totalAmount > 0); require(canMint(totalAmount)); uint256 amount; token_created = token_created.add(totalAmount); for (i = 0; i < investorsLength; i ++) { r = investors[i]; if (r == address(0) || r == owner || r == foundationOwner) continue; amount = amounts[i]; if (amount == 0) continue; wallets[r] = wallets[r].add(amount); emit Mint(r, amount); emit Transfer(address(0), r, amount); mapping(uint => LockBin) locks = lockbins[r]; LockBin storage info = locks[0]; uint index = info.amount + 1; locks[index] = LockBin({ start: releaseStart, finish: releaseStart + releaseDuration, duration: releaseDuration / (1 days), amount: amount }); info.amount = index; } return true; } function getInvestedToken (address investor) public view returns (uint256) { require(investor != address(0) && investor != owner && investor != foundationOwner); mapping(uint => LockBin) locks = lockbins[investor]; uint256 balance = 0; uint l = locks[0].amount; for (uint i = 1; i <= l; i ++) { LockBin memory bin = locks[i]; balance = balance.add(bin.amount); } return balance; } function getLockedToken (address investor) public view returns (uint256) { require(investor != address(0) && investor != owner && investor != foundationOwner); mapping(uint => LockBin) locks = lockbins[investor]; uint256 balance = 0; uint256 d = 1; uint l = locks[0].amount; for (uint i = 1; i <= l; i ++) { LockBin memory bin = locks[i]; if (now <= bin.start) { balance = balance.add(bin.amount); } else if (now < bin.finish) { d = (now - bin.start) / (1 days); balance = balance.add(bin.amount - bin.amount * d / bin.duration); } } return balance; } function canPay (address user, uint256 amount) internal view returns (bool) { uint256 balance = availableWallet(user); return amount <= balance; } function transfer (address target, uint256 value) public whenRunning canTransfer(msg.sender, target, value) returns (bool) { require(target != owner); require(canPay(msg.sender, value)); wallets[msg.sender] = wallets[msg.sender].sub(value); wallets[target] = wallets[target].add(value); emit Transfer(msg.sender, target, value); return true; } function batchTransfer (address[] receivers, uint256 amount) public whenRunning returns (bool) { require(amount > 0); uint receiveLength = receivers.length; uint receiverCount = 0; uint i; address r; for (i = 0; i < receiveLength; i ++) { r = receivers[i]; if (r == address(0) || r == owner) continue; receiverCount ++; } require(receiverCount > 0); uint256 totalAmount = amount.mul(uint256(receiverCount)); require(canPay(msg.sender, totalAmount)); wallets[msg.sender] = wallets[msg.sender].sub(totalAmount); for (i = 0; i < receiveLength; i++) { r = receivers[i]; if (r == address(0) || r == owner) continue; wallets[r] = wallets[r].add(amount); emit Transfer(msg.sender, r, amount); } return true; } function batchTransfers (address[] receivers, uint256[] amounts) public whenRunning returns (bool) { uint receiveLength = receivers.length; require(receiveLength == amounts.length); uint receiverCount = 0; uint256 totalAmount = 0; uint i; address r; for (i = 0; i < receiveLength; i ++) { r = receivers[i]; if (r == address(0) || r == owner) continue; receiverCount ++; totalAmount = totalAmount.add(amounts[i]); } require(totalAmount > 0); require(canPay(msg.sender, totalAmount)); wallets[msg.sender] = wallets[msg.sender].sub(totalAmount); uint256 amount; for (i = 0; i < receiveLength; i++) { r = receivers[i]; if (r == address(0) || r == owner) continue; amount = amounts[i]; if (amount == 0) continue; wallets[r] = wallets[r].add(amount); emit Transfer(msg.sender, r, amount); } return true; } function transferFrom (address from, address to, uint256 value) public whenRunning canTransfer(from, to, value) returns (bool) { require(from != owner); require(to != owner); require(canPay(from, value)); uint256 warrant; if (msg.sender != from) { warrant = warrants[from][msg.sender]; require(value <= warrant); warrants[from][msg.sender] = warrant.sub(value); } wallets[from] = wallets[from].sub(value); wallets[to] = wallets[to].add(value); emit Transfer(from, to, value); return true; } function batchTransferFrom (address from, address[] receivers, uint256 amount) public whenRunning returns (bool) { require(from != address(0) && from != owner); require(amount > 0); uint receiveLength = receivers.length; uint receiverCount = 0; uint i; address r; for (i = 0; i < receiveLength; i ++) { r = receivers[i]; if (r == address(0) || r == owner) continue; receiverCount ++; } require(receiverCount > 0); uint256 totalAmount = amount.mul(uint256(receiverCount)); require(canPay(from, totalAmount)); uint256 warrant; if (msg.sender != from) { warrant = warrants[from][msg.sender]; require(totalAmount <= warrant); warrants[from][msg.sender] = warrant.sub(totalAmount); } wallets[from] = wallets[from].sub(totalAmount); for (i = 0; i < receiveLength; i++) { r = receivers[i]; if (r == address(0) || r == owner) continue; wallets[r] = wallets[r].add(amount); emit Transfer(from, r, amount); } return true; } function batchTransferFroms (address from, address[] receivers, uint256[] amounts) public whenRunning returns (bool) { require(from != address(0) && from != owner); uint receiveLength = receivers.length; require(receiveLength == amounts.length); uint receiverCount = 0; uint256 totalAmount = 0; uint i; address r; for (i = 0; i < receiveLength; i ++) { r = receivers[i]; if (r == address(0) || r == owner) continue; receiverCount ++; totalAmount = totalAmount.add(amounts[i]); } require(totalAmount > 0); require(canPay(from, totalAmount)); uint256 warrant; if (msg.sender != from) { warrant = warrants[from][msg.sender]; require(totalAmount <= warrant); warrants[from][msg.sender] = warrant.sub(totalAmount); } wallets[from] = wallets[from].sub(totalAmount); uint256 amount; for (i = 0; i < receiveLength; i++) { r = receivers[i]; if (r == address(0) || r == owner) continue; amount = amounts[i]; if (amount == 0) continue; wallets[r] = wallets[r].add(amount); emit Transfer(from, r, amount); } return true; } } contract PunchableToken is LockableToken { using SafeMath for uint256; function punch (address addr, uint256 amount) public onlyOwner whenPaused returns (bool) { require(addr != address(0) && addr != owner); require(amount > 0); uint256 accountAmount = availableWallet(addr); uint256 burnAmount = amount; if (amount > accountAmount) { burnAmount = accountAmount; } token_created = token_created.sub(burnAmount); wallets[addr] = wallets[addr].sub(burnAmount); emit Burn(addr, burnAmount); emit Transfer(addr, address(0), burnAmount); return true; } function batchPunchKO (address[] addrs) public onlyOwner whenPaused returns (bool) { uint len = addrs.length; require (len > 0); address addr; for (uint i = 0; i < len; i++) { addr = addrs[i]; if (addr == address(0) || addr == owner) continue; uint256 amount = availableWallet(addr); token_created = token_created.sub(amount); wallets[addr] = wallets[addr].sub(amount); emit Burn(addr, amount); emit Transfer(addr, address(0), amount); } return true; } function batchPunchs (address[] addrs, uint256[] amounts) public onlyOwner whenPaused returns (bool) { uint len = addrs.length; require (len > 0); require (addrs.length == amounts.length); address addr; uint256 amount; uint256 availableAmount; for (uint i = 0; i < len; i++) { addr = addrs[i]; if (addr == address(0) || addr == owner) continue; amount = amounts[i]; availableAmount = availableWallet(addr); if (amount > availableAmount) { amount = availableAmount; } token_created = token_created.sub(amount); wallets[addr] = wallets[addr].sub(amount); emit Burn(addr, amount); emit Transfer(addr, address(0), amount); } return true; } } contract FountainToken is PunchableToken { string public constant name = "Fountain 3"; string public constant symbol = "FTN"; uint8 public constant decimals = 18; uint256 private constant TOKEN_CAP = 10000000000 * 10 ** uint256(decimals); uint256 private constant TOKEN_FOUNDATION_CAP = 300000000 * 10 ** uint256(decimals); uint256 private constant TOKEN_INITIAL = 0 * 10 ** uint256(decimals); constructor () public LockableToken(TOKEN_INITIAL, TOKEN_CAP, TOKEN_FOUNDATION_CAP) { } function suicide () public onlyOwner { selfdestruct(owner); } function transferOwnership (address newOwner) public onlyOwner returns (bool) { require(newOwner != address(0)); require(newOwner != owner); require(newOwner != foundationOwner); require(wallets[owner] == 0); require(wallets[newOwner] == 0); address oldOwner = owner; owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); return true; } function setFountainFoundationOwner (address newFoundationOwner) public onlyOwner returns (bool) { require(newFoundationOwner != address(0)); require(newFoundationOwner != foundationOwner); require(newFoundationOwner != owner); require(wallets[newFoundationOwner] == 0); address oldFoundation = foundationOwner; foundationOwner = newFoundationOwner; emit FoundationOwnershipTransferred(oldFoundation, foundationOwner); uint256 all = wallets[oldFoundation]; wallets[oldFoundation] -= all; wallets[newFoundationOwner] = all; emit Transfer(oldFoundation, newFoundationOwner, all); return true; } } contract FountainTokenUpgrade is FountainToken { event UpgradeStart(); event UpgradeStop(); event SetRefund(address, uint); event Refund(address, uint); event SetFoundation(uint); event FinishUpgrade(); bool public upgrade_running; bool public upgrade_finish; FountainToken ftn; address public oldContract; mapping(address=>bool) public upgraded; mapping(address=>bool) public skiplist; mapping(address=>uint) public refundlist; constructor(address old){ oldContract = old; ftn = FountainToken(old); } modifier canUpgrade(){ require(!upgrade_finish); _; } modifier whenUpgrading() { require(upgrade_running); _; } modifier whenNotUpgrading() { require(!upgrade_running); _; } function finishUpgrade() public whenNotUpgrading canUpgrade onlyOwner{ upgrade_finish = true; emit FinishUpgrade(); } function setFoundation(uint amount) public whenUpgrading whenPaused canUpgrade onlyOwner { token_foundation_created = amount; emit SetFoundation(amount); } function setRefund(address addr, uint amount) public whenUpgrading canUpgrade onlyOwner { require(addr != address(0)); require(addr != foundationOwner); require(addr != owner); refundlist[addr] = amount; emit SetRefund(addr, amount); } function batchSetRefund(address[] addrs, uint[] amounts) public whenUpgrading canUpgrade onlyOwner { uint l1 = addrs.length; uint l2 = amounts.length; address addr; uint amount; require(l1 > 0 && l1 == l2); for (uint i = 0; i < l1; i++){ addr = addrs[i]; amount = amounts[i]; if (addr == address(0) || addr == foundationOwner || addr == owner) continue; refundlist[addr] = amount; emit SetRefund(addr, amount); } } function runRefund(address addr) public whenUpgrading canUpgrade onlyOwner { uint amount = refundlist[addr]; wallets[addr] = wallets[addr].add(amount); token_created = token_created.add(amount); refundlist[addr] = 0; emit Refund(addr, amount); emit Mint(addr, amount); emit Transfer(address(0), addr, amount); } function batchRunRefund(address[] addrs) public whenUpgrading canUpgrade onlyOwner { uint l = addrs.length; address addr; uint amount; require(l > 0); for (uint i = 0; i < l; i++){ addr = addrs[i]; amount = refundlist[addr]; wallets[addr] = wallets[addr].add(amount); token_created = token_created.add(amount); refundlist[addr] = 0; emit Refund(addr, amount); emit Mint(addr, amount); emit Transfer(address(0), addr, amount); } } function startUpgrade() public whenNotUpgrading canUpgrade onlyOwner { upgrade_running = true; emit UpgradeStart(); } function stopUpgrade() public whenUpgrading canUpgrade onlyOwner { upgrade_running = false; emit UpgradeStop(); } function setSkiplist(address[] addrs) public whenUpgrading whenPaused canUpgrade onlyOwner { uint len = addrs.length; if (len>0){ for (uint i = 0; i < len; i++){ skiplist[addrs[i]] = true; } } } function upgrade(address addr) whenUpgrading whenPaused canUpgrade onlyOwner{ uint amount = ftn.balanceOf(addr); require(!upgraded[addr] && amount>0 && !skiplist[addr]); upgraded[addr] = true; wallets[addr] = amount; (uint a, uint b, uint c, uint d) = ftn.lockbins(addr,0); uint len = d; if (len > 0){ lockbins[addr][0].amount = len; for (uint i=1; i <= len; i++){ (a, b, c, d) = ftn.lockbins(addr,i); lockbins[addr][i] = LockBin({ start: a, finish: b, duration: c, amount: d }); } } token_created = token_created.add(amount); emit Mint(addr, amount); emit Transfer(address(0), addr, amount); } function batchUpgrade(address[] addrs) whenUpgrading whenPaused canUpgrade onlyOwner{ uint l = addrs.length; require(l > 0); uint a; uint b; uint c; uint d; for (uint i = 0; i < l; i++){ address addr = addrs[i]; uint amount = ftn.balanceOf(addr); if (upgraded[addr] || amount == 0 || skiplist[addr]){ continue; } upgraded[addr] = true; wallets[addr] = amount; (a, b, c, d) = ftn.lockbins(addr,0); uint len = d; if (len > 0){ lockbins[addr][0].amount = len; for (uint j=1; j <= len; j++){ (a, b, c, d) = ftn.lockbins(addr, j); lockbins[addr][j] = LockBin({ start: a, finish: b, duration: c, amount: d }); } } token_created = token_created.add(amount); emit Mint(addr, amount); emit Transfer(address(0), addr, amount); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchPunchs","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"amount","type":"uint256"}],"name":"punch","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"}],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"oldContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"batchPunchKO","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"upgrade_running","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchTransfers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"release_start","type":"uint256"},{"name":"release_duration","type":"uint256"}],"name":"setInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchSetRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startForge","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"forge_running","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resumeInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"lockbins","outputs":[{"name":"start","type":"uint256"},{"name":"finish","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"investor","type":"address"}],"name":"getLockedToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"setFoundation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"receivers","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchTransferFroms","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"amount","type":"uint256"}],"name":"canMint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"},{"name":"delta","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investors","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchInvests","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFoundationOwner","type":"address"}],"name":"setFountainFoundationOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"releaseStart","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"receivers","type":"address[]"},{"name":"amount","type":"uint256"}],"name":"batchTransferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cap","type":"uint256"}],"name":"changeCap","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"amount","type":"uint256"}],"name":"batchTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"wallets","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalFountainSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"warrants","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"forceStopInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"investor","type":"address"}],"name":"getInvestedToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pauseInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"runRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"batchRunRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"skiplist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopForge","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investor","type":"address"},{"name":"amount","type":"uint256"}],"name":"invest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investors","type":"address[]"},{"name":"amount","type":"uint256"}],"name":"batchInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token_foundation_cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"suicide","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"upgrade_finish","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"refundlist","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token_foundation_created","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"availableWallet","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"},{"name":"delta","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"batchUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"delegator","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token_created","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"amount","type":"uint256"}],"name":"setRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"setSkiplist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token_cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"upgraded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"releaseDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"old","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"UpgradeStart","type":"event"},{"anonymous":false,"inputs":[],"name":"UpgradeStop","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"","type":"address"},{"indexed":false,"name":"","type":"uint256"}],"name":"SetRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"","type":"address"},{"indexed":false,"name":"","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"","type":"uint256"}],"name":"SetFoundation","type":"event"},{"anonymous":false,"inputs":[],"name":"FinishUpgrade","type":"event"},{"anonymous":false,"inputs":[],"name":"InvestStart","type":"event"},{"anonymous":false,"inputs":[],"name":"InvestStop","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"release_start","type":"uint256"},{"indexed":false,"name":"release_duration","type":"uint256"}],"name":"NewInvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[],"name":"ContractPause","type":"event"},{"anonymous":false,"inputs":[],"name":"ContractResume","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"uint256"},{"indexed":false,"name":"to","type":"uint256"}],"name":"ContractPauseSchedule","type":"event"},{"anonymous":false,"inputs":[],"name":"ForgeStart","type":"event"},{"anonymous":false,"inputs":[],"name":"ForgeStop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldone","type":"address"},{"indexed":true,"name":"newone","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldFoundationOwner","type":"address"},{"indexed":true,"name":"newFoundationOwner","type":"address"}],"name":"FoundationOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
60806040526001805460a060020a60ff0219167401000000000000000000000000000000000000000017905534801561003757600080fd5b50604051602080614afc83398101604081815291516000805433600160a060020a0319918216811780845560018054600160a060020a0390921691909316179091556b204fce5e3e2502611000000060028190556af8277896582678ac00000060048190556003849055828452600860209081528785208590558487529651949693959194909386938693869391927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a260408051848152905133916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600c805460ff191660011790555050600f8054600160a060020a03909416600160a060020a0319909416841790555050600e8054620100009092026201000060b060020a0319909216919091179055614975806101876000396000f3006080604052600436106103215763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663046f7da2811461032657806306fdde031461033d5780630900f010146103c7578063095ea7b3146103e857806318160ddd146104205780631e478649146104475780632239c48a1461045c578063223e21211461047157806323b872dd146104ff57806323b8fabd146105295780632d2155181461054d57806330503c4e14610568578063313ce56714610599578063340df28f146105c4578063348e7b3d146105d95780633b6c4fa81461062e5780633badca251461064357806340c10f19146106d157806342966c68146106f557806342bb66c41461070d57806347c27aed1461072857806348cc7b6e146107b657806348eac902146107cb578063491eeb3a146107e05780634fcc1fc0146107f5578063560ef1bf1461083f578063580d28821461086057806359dd7ad4146108785780635dd871a314610914578063661884631461092c5780636ad953171461095057806370a08231146109de57806373a72b18146109ff578063766e33f414610a2057806376f660f614610a35578063800edb9d14610a9a57806383f12fec14610ab25780638456cb5914610b0957806389b08f1114610b1e5780639433a49814610b3f57806395d89b4114610b545780639aa9897914610b695780639b89010414610b905780639cf4836514610ba5578063a4c673c514610bc6578063a9059cbb14610bdb578063b0491e4e14610bff578063b626487c14610c20578063b67cef3a14610c75578063b703aa3a14610c96578063b9b8c24614610cab578063bd632e1014610ccf578063c04e7e1714610d26578063c96cd46f14610d3b578063ca299b9614610d50578063d0e8cf4614610d65578063d26e141414610d86578063d28cb7b514610d9b578063d73dd62314610dbc578063dc87f8f714610de0578063dd62ed3e14610e35578063de8ae5c014610e5c578063e1736d2914610e71578063e900c27014610e95578063efc5d18314610eea578063f2fde38b14610eff578063f4b489e714610f20578063f9b4189114610f41575b600080fd5b34801561033257600080fd5b5061033b610f56565b005b34801561034957600080fd5b50610352610fa8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038c578181015183820152602001610374565b50505050905090810190601f1680156103b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d357600080fd5b5061033b600160a060020a0360043516610fdf565b3480156103f457600080fd5b5061040c600160a060020a036004351660243561142b565b604080519115158252519081900360200190f35b34801561042c57600080fd5b506104356114ca565b60408051918252519081900360200190f35b34801561045357600080fd5b5061033b6114d0565b34801561046857600080fd5b5061033b611542565b34801561047d57600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506115b69650505050505050565b34801561050b57600080fd5b5061040c600160a060020a036004358116906024351660443561175f565b34801561053557600080fd5b5061040c600160a060020a0360043516602435611946565b34801561055957600080fd5b5061033b600435602435611a91565b34801561057457600080fd5b5061057d611afd565b60408051600160a060020a039092168252519081900360200190f35b3480156105a557600080fd5b506105ae611b0c565b6040805160ff9092168252519081900360200190f35b3480156105d057600080fd5b5061033b611b11565b3480156105e557600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750949750611b879650505050505050565b34801561063a57600080fd5b5061040c611cfd565b34801561064f57600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750611d069650505050505050565b3480156106dd57600080fd5b5061040c600160a060020a0360043516602435611f2e565b34801561070157600080fd5b5061040c6004356120d1565b34801561071957600080fd5b5061040c6004356024356121bc565b34801561073457600080fd5b506040805160206004803580820135838102808601850190965280855261033b95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506122569650505050505050565b3480156107c257600080fd5b5061040c6123ac565b3480156107d757600080fd5b5061040c61242e565b3480156107ec57600080fd5b5061040c61243e565b34801561080157600080fd5b50610819600160a060020a03600435166024356124bc565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561084b57600080fd5b50610435600160a060020a03600435166124ee565b34801561086c57600080fd5b5061033b60043561264b565b34801561088457600080fd5b5060408051602060046024803582810135848102808701860190975280865261040c968435600160a060020a031696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506126e29650505050505050565b34801561092057600080fd5b5061040c6004356129ca565b34801561093857600080fd5b5061040c600160a060020a03600435166024356129f9565b34801561095c57600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750612ae49650505050505050565b3480156109ea57600080fd5b50610435600160a060020a0360043516612e0b565b348015610a0b57600080fd5b5061040c600160a060020a0360043516612e26565b348015610a2c57600080fd5b50610435612f6e565b348015610a4157600080fd5b5060408051602060046024803582810135848102808701860190975280865261040c968435600160a060020a0316963696604495919490910192918291850190849080828437509497505093359450612f749350505050565b348015610aa657600080fd5b5061040c600435613213565b348015610abe57600080fd5b506040805160206004803580820135838102808601850190965280855261040c9536959394602494938501929182918501908490808284375094975050933594506132529350505050565b348015610b1557600080fd5b5061033b613423565b348015610b2a57600080fd5b50610435600160a060020a0360043516613477565b348015610b4b57600080fd5b50610435613489565b348015610b6057600080fd5b5061035261348f565b348015610b7557600080fd5b50610435600160a060020a03600435811690602435166134c6565b348015610b9c57600080fd5b5061040c6134e3565b348015610bb157600080fd5b50610435600160a060020a03600435166134ec565b348015610bd257600080fd5b5061040c6135ee565b348015610be757600080fd5b5061040c600160a060020a036004351660243561366e565b348015610c0b57600080fd5b5061033b600160a060020a03600435166137a8565b348015610c2c57600080fd5b506040805160206004803580820135838102808601850190965280855261033b953695939460249493850192918291850190849080828437509497506139029650505050505050565b348015610c8157600080fd5b5061040c600160a060020a0360043516613aa4565b348015610ca257600080fd5b5061040c613ab9565b348015610cb757600080fd5b5061040c600160a060020a0360043516602435613b36565b348015610cdb57600080fd5b506040805160206004803580820135838102808601850190965280855261040c953695939460249493850192918291850190849080828437509497505093359450613d2e9350505050565b348015610d3257600080fd5b50610435614000565b348015610d4757600080fd5b5061033b614006565b348015610d5c57600080fd5b5061040c61402b565b348015610d7157600080fd5b50610435600160a060020a0360043516614039565b348015610d9257600080fd5b5061043561404b565b348015610da757600080fd5b50610435600160a060020a0360043516614051565b348015610dc857600080fd5b5061040c600160a060020a0360043516602435614084565b348015610dec57600080fd5b506040805160206004803580820135838102808601850190965280855261033b953695939460249493850192918291850190849080828437509497506140f19650505050505050565b348015610e4157600080fd5b50610435600160a060020a036004358116906024351661452e565b348015610e6857600080fd5b50610435614559565b348015610e7d57600080fd5b5061033b600160a060020a036004351660243561455f565b348015610ea157600080fd5b506040805160206004803580820135838102808601850190965280855261033b953695939460249493850192918291850190849080828437509497506146409650505050505050565b348015610ef657600080fd5b5061043561470d565b348015610f0b57600080fd5b5061040c600160a060020a0360043516614713565b348015610f2c57600080fd5b5061040c600160a060020a0360043516614821565b348015610f4d57600080fd5b50610435614836565b600054600160a060020a03163314610f6d57600080fd5b426001198101600655600019016007556040517fa968378e910134ded7db0a5144e2c6a2d157f1685baa51f39de6c13a5e8ffa8990600090a1565b60408051808201909152600a81527f466f756e7461696e203300000000000000000000000000000000000000000000602082015281565b6000806000806000806000600e60009054906101000a900460ff16151561100557600080fd5b600654421015801561101957506007544211155b151561102457600080fd5b600e54610100900460ff161561103957600080fd5b600054600160a060020a0316331461105057600080fd5b600e54604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038b81166004830152915162010000909304909116916370a08231916024808201926020929091908290030181600087803b1580156110bf57600080fd5b505af11580156110d3573d6000803e3d6000fd5b505050506040513d60208110156110e957600080fd5b5051600160a060020a03891660009081526010602052604090205490975060ff161580156111175750600087115b801561113c5750600160a060020a03881660009081526011602052604090205460ff16155b151561114757600080fd5b600160a060020a038089166000818152601060209081526040808320805460ff1916600117905560089091528082208b9055600e54815160e660020a63013f307f02815260048101949094526024840183905290516201000090910490931692634fcc1fc0926044808201936080939283900390910190829087803b1580156111cf57600080fd5b505af11580156111e3573d6000803e3d6000fd5b505050506040513d60808110156111f957600080fd5b508051602082015160408301516060909301519198509650909450925082915060008211156113af5750600160a060020a0387166000908152600d60209081526040808320838052909152902060030181905560015b8181116113af57600e546040805160e660020a63013f307f028152600160a060020a038b811660048301526024820185905291516201000090930490911691634fcc1fc0916044808201926080929091908290030181600087803b1580156112b657600080fd5b505af11580156112ca573d6000803e3d6000fd5b505050506040513d60808110156112e057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050508096508197508298508399505050505060806040519081016040528087815260200186815260200185815260200184815250600d60008a600160a060020a0316600160a060020a03168152602001908152602001600020600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155905050808060010191505061124f565b6003546113c2908863ffffffff61483c16565b600355604080518881529051600160a060020a038a169160008051602061492a833981519152919081900360200190a2604080518881529051600160a060020a038a16916000916000805160206148ea8339815191529181900360200190a35050505050505050565b600060065442108061143e575060075442115b151561144957600080fd5b600160a060020a038316331415611462575060016114c4565b336000818152600960209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035490565b600e5460ff1615156114e157600080fd5b600e54610100900460ff16156114f657600080fd5b600054600160a060020a0316331461150d57600080fd5b600e805460ff191690556040517f232033aa00cdc2e9205a0e3a1063da78353d21cd7724a0444927c906da0e021690600090a1565b600e5460ff161561155257600080fd5b600e54610100900460ff161561156757600080fd5b600054600160a060020a0316331461157e57600080fd5b600e805460ff191660011790556040517f28968b4d1fad9f3e651bf12ae7ae8581411755b430bd83a24d38eb700e4b011f90600090a1565b6000805481908190819081908190600160a060020a031633146115d857600080fd5b60065442101580156115ec57506007544211155b15156115f757600080fd5b875194506000851161160857600080fd5b865188511461161657600080fd5b5060005b8481101561175157878181518110151561163057fe5b602090810290910101519350600160a060020a038416158061165f5750600054600160a060020a038581169116145b1561166957611749565b868181518110151561167757fe5b90602001906020020151925061168c84614051565b91508183111561169a578192505b6003546116ad908463ffffffff61485216565b600355600160a060020a0384166000908152600860205260409020546116d9908463ffffffff61485216565b600160a060020a0385166000818152600860209081526040918290209390935580518681529051919260008051602061490a83398151915292918290030190a2604080518481529051600091600160a060020a038716916000805160206148ea8339815191529181900360200190a35b60010161161a565b506001979650505050505050565b600080600654421080611773575060075442115b151561177e57600080fd5b848484600160a060020a038316158015906117a15750600160a060020a03821615155b15156117ac57600080fd5b600160a060020a0383811690831614156117c557600080fd5b600081116117d257600080fd5b600054600160a060020a03898116911614156117ed57600080fd5b600054600160a060020a038881169116141561180857600080fd5b6118128887614864565b151561181d57600080fd5b33600160a060020a0389161461189557600160a060020a038816600090815260096020908152604080832033845290915290205493508386111561186057600080fd5b611870848763ffffffff61485216565b600160a060020a03891660009081526009602090815260408083203384529091529020555b600160a060020a0388166000908152600860205260409020546118be908763ffffffff61485216565b600160a060020a03808a1660009081526008602052604080822093909355908916815220546118f3908763ffffffff61483c16565b600160a060020a038089166000818152600860209081526040918290209490945580518a815290519193928c16926000805160206148ea83398151915292918290030190a3506001979650505050505050565b6000805481908190600160a060020a0316331461196257600080fd5b600654421015801561197657506007544211155b151561198157600080fd5b600160a060020a038516158015906119a75750600054600160a060020a03868116911614155b15156119b257600080fd5b600084116119bf57600080fd5b6119c885614051565b9150839050818411156119d85750805b6003546119eb908263ffffffff61485216565b600355600160a060020a038516600090815260086020526040902054611a17908263ffffffff61485216565b600160a060020a0386166000818152600860209081526040918290209390935580518481529051919260008051602061490a83398151915292918290030190a2604080518281529051600091600160a060020a038816916000805160206148ea8339815191529181900360200190a3506001949350505050565b600054600160a060020a03163314611aa857600080fd5b818111611ab457600080fd5b60068290556007819055604080518381526020810183905281517fac04925986d687f5e264774dac7e393e920d61c9b99e92497853eb519484e4dd929181900390910190a15050565b600f54600160a060020a031681565b601281565b600e5460ff1615611b2157600080fd5b600e54610100900460ff1615611b3657600080fd5b600054600160a060020a03163314611b4d57600080fd5b600e805461ff0019166101001790556040517f31a51b3f3da1c639dced656c0599662c31b7a9822ed27f4079befb25036f66d590600090a1565b600080548190819081908190600160a060020a03163314611ba757600080fd5b6006544210158015611bbb57506007544211155b1515611bc657600080fd5b8551935060008411611bd757600080fd5b600091505b83821015611cf1578582815181101515611bf257fe5b602090810290910101519250600160a060020a0383161580611c215750600054600160a060020a038481169116145b15611c2b57611ce6565b611c3483614051565b600354909150611c4a908263ffffffff61485216565b600355600160a060020a038316600090815260086020526040902054611c76908263ffffffff61485216565b600160a060020a0384166000818152600860209081526040918290209390935580518481529051919260008051602061490a83398151915292918290030190a2604080518281529051600091600160a060020a038616916000805160206148ea8339815191529181900360200190a35b600190910190611bdc565b50600195945050505050565b600e5460ff1681565b6000806000806000806000600654421080611d22575060075442115b1515611d2d57600080fd5b885188519096508614611d3f57600080fd5b6000945060009350600092505b85831015611dd8578883815181101515611d6257fe5b602090810290910101519150600160a060020a0382161580611d915750600054600160a060020a038381169116145b15611d9b57611dcd565b8751600190950194611dca90899085908110611db357fe5b60209081029091010151859063ffffffff61483c16565b93505b600190920191611d4c565b60008411611de557600080fd5b611def3385614864565b1515611dfa57600080fd5b33600090815260086020526040902054611e1a908563ffffffff61485216565b3360009081526008602052604081209190915592505b85831015611f1f578883815181101515611e4657fe5b602090810290910101519150600160a060020a0382161580611e755750600054600160a060020a038381169116145b15611e7f57611f14565b8783815181101515611e8d57fe5b9060200190602002015190508060001415611ea757611f14565b600160a060020a038216600090815260086020526040902054611ed0908263ffffffff61483c16565b600160a060020a0383166000818152600860209081526040918290209390935580518481529051919233926000805160206148ea8339815191529281900390910190a35b600190920191611e30565b50600198975050505050505050565b60008054600160a060020a0316331480611f525750600154600160a060020a031633145b1515611f5d57600080fd5b600654421080611f6e575060075442115b1515611f7957600080fd5b60015460a060020a900460ff161515611f9157600080fd5b600054600160a060020a03848116911614801590611fbd5750600154600160a060020a03848116911614155b1515611fc857600080fd5b611fd1826129ca565b1515611fdc57600080fd5b600154600160a060020a031633141561201a57611ff88261487b565b151561200357600080fd5b600554612016908363ffffffff61483c16565b6005555b60035461202d908363ffffffff61483c16565b600355600160a060020a038316600090815260086020526040902054612059908363ffffffff61483c16565b600160a060020a0384166000818152600860209081526040918290209390935580518581529051919260008051602061492a83398151915292918290030190a2604080518381529051600160a060020a038516916000916000805160206148ea8339815191529181900360200190a350600192915050565b6000806006544210806120e5575060075442115b15156120f057600080fd5b60015460a060020a900460ff16151561210857600080fd5b61211133614051565b90508083111561212057600080fd5b600354612133908463ffffffff61485216565b60035533600090815260086020526040902054612156908463ffffffff61485216565b336000818152600860209081526040918290209390935580518681529051919260008051602061490a83398151915292918290030190a260408051848152905160009133916000805160206148ea8339815191529181900360200190a350600192915050565b60008054600160a060020a031633146121d457600080fd5b6006544210806121e5575060075442115b15156121f057600080fd5b600a839055600b829055818301831061220857600080fd5b600c805460ff19169055604080518481526020810184905281517f4a1179f4d7ff6354606313c42f6054383e9549f9db56ac4b66b424bc940f79ed929181900390910190a150600192915050565b600e54600090819081908190819060ff16151561227257600080fd5b600e54610100900460ff161561228757600080fd5b600054600160a060020a0316331461229e57600080fd5b86519450855193506000851180156122b557508385145b15156122c057600080fd5b5060005b848110156123a35786818151811015156122da57fe5b90602001906020020151925085818151811015156122f457fe5b602090810290910101519150600160a060020a03831615806123235750600154600160a060020a038481169116145b8061233b5750600054600160a060020a038481169116145b156123455761239b565b600160a060020a0383166000818152601260209081526040918290208590558151928352820184905280517f22e6de62acad655dbe35cea5e534f6d5b5fd376e597e6163f29f49f691b00de39281900390910190a15b6001016122c4565b50505050505050565b60008054600160a060020a031633146123c457600080fd5b60015460a060020a900460ff16156123db57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790556040517fa039c7af624b7305fc7002f670d116cf0c8b61a558a10ff96be611c5c235751790600090a150600190565b60015460a060020a900460ff1681565b60008054600160a060020a0316331461245657600080fd5b600654421080612467575060075442115b151561247257600080fd5b600c5460ff16151561248357600080fd5b600c805460ff191690556040517f14245ee125d3810a2a28f6b656b676516364a51e95a688ddf08af4194fc3db1290600090a150600190565b600d60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6000806000806000806124ff6148c0565b600160a060020a038816158015906125255750600054600160a060020a03898116911614155b801561253f5750600154600160a060020a03898116911614155b151561254a57600080fd5b600160a060020a0388166000908152600d60209081526040808320838052918290528220600301549097509095506001945092508391505b82821161263f5750600081815260208681526040918290208251608081018452815480825260018301549382019390935260028201549381019390935260030154606083015242116125eb5760608101516125e490869063ffffffff61483c16565b9450612634565b80602001514210156126345780516201518090420304935061263181604001518583606001510281151561261b57fe5b048260600151038661483c90919063ffffffff16565b94505b600190910190612582565b50929695505050505050565b600e5460ff16151561265c57600080fd5b600654421015801561267057506007544211155b151561267b57600080fd5b600e54610100900460ff161561269057600080fd5b600054600160a060020a031633146126a757600080fd5b60058190556040805182815290517f16b5fc7c36431451ea7ff18fe108b2a159992ef2a5b74d44613ff6749a2296af9181900360200190a150565b6000806000806000806000806006544210806126ff575060075442115b151561270a57600080fd5b600160a060020a038b16158015906127305750600054600160a060020a038c8116911614155b151561273b57600080fd5b89518951909750871461274d57600080fd5b6000955060009450600093505b868410156127e657898481518110151561277057fe5b602090810290910101519250600160a060020a038316158061279f5750600054600160a060020a038481169116145b156127a9576127db565b88516001909601956127d8908a90869081106127c157fe5b60209081029091010151869063ffffffff61483c16565b94505b60019093019261275a565b600085116127f357600080fd5b6127fd8b86614864565b151561280857600080fd5b33600160a060020a038c161461288057600160a060020a038b16600090815260096020908152604080832033845290915290205491508185111561284b57600080fd5b61285b828663ffffffff61485216565b600160a060020a038c1660009081526009602090815260408083203384529091529020555b600160a060020a038b166000908152600860205260409020546128a9908663ffffffff61485216565b600160a060020a038c1660009081526008602052604081209190915593505b868410156129b95789848151811015156128de57fe5b602090810290910101519250600160a060020a038316158061290d5750600054600160a060020a038481169116145b15612917576129ae565b888481518110151561292557fe5b906020019060200201519050806000141561293f576129ae565b600160a060020a038316600090815260086020526040902054612968908263ffffffff61483c16565b600160a060020a0380851660008181526008602090815260409182902094909455805185815290519193928f16926000805160206148ea83398151915292918290030190a35b6001909301926128c8565b5060019a9950505050505050505050565b6000600254600014806129f157506002546003546129ee908463ffffffff61483c16565b11155b90505b919050565b600080600654421080612a0d575060075442115b1515612a1857600080fd5b600160a060020a038416331415612a325760019150612add565b50336000908152600960209081526040808320600160a060020a038716845290915290205482811015612a6757506000612a7a565b612a77818463ffffffff61485216565b90505b336000818152600960209081526040808320600160a060020a03891680855290835292819020859055805185815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b60008054819081908190819081908190819081908190600160a060020a03163314612b0e57600080fd5b600654421080612b1f575060075442115b1515612b2a57600080fd5b600c5460ff1615612b3a57600080fd5b8b518b519099508914612b4c57600080fd5b6000975060009650600095505b88861015612bfd578b86815181101515612b6f57fe5b602090810290910101519450600160a060020a0385161580612b9e5750600054600160a060020a038681169116145b80612bb65750600154600160a060020a038681169116145b15612bc057612bf2565b8a51600190980197612bef908c9088908110612bd857fe5b60209081029091010151889063ffffffff61483c16565b96505b600190950194612b59565b60008711612c0a57600080fd5b612c13876129ca565b1515612c1e57600080fd5b600354612c31908863ffffffff61483c16565b600355600095505b88861015612df9578b86815181101515612c4f57fe5b602090810290910101519450600160a060020a0385161580612c7e5750600054600160a060020a038681169116145b80612c965750600154600160a060020a038681169116145b15612ca057612dee565b8a86815181101515612cae57fe5b9060200190602002015193508360001415612cc857612dee565b600160a060020a038516600090815260086020526040902054612cf1908563ffffffff61483c16565b600160a060020a0386166000818152600860209081526040918290209390935580518781529051919260008051602061492a83398151915292918290030190a2604080518581529051600160a060020a038716916000916000805160206148ea8339815191529181900360200190a3505050600160a060020a0382166000908152600d60209081526040808320838052808352818420600380820180548551608081018752600a54808252600b54908101828a0190815262015180909104828901908152606083018c81526001948501808d529a89905298909a209151825551918101919091559651600288015593519501949094559082905591905b600190950194612c39565b5060019b9a5050505050505050505050565b600160a060020a031660009081526008602052604090205490565b6000805481908190600160a060020a03163314612e4257600080fd5b600160a060020a0384161515612e5757600080fd5b600154600160a060020a0385811691161415612e7257600080fd5b600054600160a060020a0385811691161415612e8d57600080fd5b600160a060020a03841660009081526008602052604090205415612eb057600080fd5b60018054600160a060020a0386811673ffffffffffffffffffffffffffffffffffffffff19831617928390556040519181169450919091169083907ffc952dd6557f6861208ba39acbc0cfe5b4f12e76e6b467ed4200003f2b0cd8b090600090a350600160a060020a03808216600081815260086020908152604080832080549084905594881680845292819020859055805185815290519293926000805160206148ea833981519152929181900390910190a35060019392505050565b600a5481565b6000806000806000806000600654421080612f90575060075442115b1515612f9b57600080fd5b600160a060020a038a1615801590612fc15750600054600160a060020a038b8116911614155b1515612fcc57600080fd5b60008811612fd957600080fd5b8851955060009450600093505b85841015613047578884815181101515612ffc57fe5b602090810290910101519250600160a060020a038316158061302b5750600054600160a060020a038481169116145b156130355761303c565b6001909401935b600190930192612fe6565b6000851161305457600080fd5b613064888663ffffffff61489516565b91506130708a83614864565b151561307b57600080fd5b33600160a060020a038b16146130f25750600160a060020a0389166000908152600960209081526040808320338452909152902054808211156130bd57600080fd5b6130cd818363ffffffff61485216565b600160a060020a038b1660009081526009602090815260408083203384529091529020555b600160a060020a038a1660009081526008602052604090205461311b908363ffffffff61485216565b600160a060020a038b1660009081526008602052604081209190915593505b8584101561320357888481518110151561315057fe5b602090810290910101519250600160a060020a038316158061317f5750600054600160a060020a038481169116145b15613189576131f8565b600160a060020a0383166000908152600860205260409020546131b2908963ffffffff61483c16565b600160a060020a038085166000818152600860209081526040918290209490945580518c815290519193928e16926000805160206148ea83398151915292918290030190a35b60019093019261313a565b5060019998505050505050505050565b60008054600160a060020a0316331461322b57600080fd5b6003548210801561323c5750600082115b15613249575060006129f4565b50600255600190565b60008060008060008060065442108061326c575060075442115b151561327757600080fd5b6000871161328457600080fd5b8751945060009350600092505b848310156132f25787838151811015156132a757fe5b602090810290910101519150600160a060020a03821615806132d65750600054600160a060020a038381169116145b156132e0576132e7565b6001909301925b600190920191613291565b600084116132ff57600080fd5b61330f878563ffffffff61489516565b905061331b3382614864565b151561332657600080fd5b33600090815260086020526040902054613346908263ffffffff61485216565b3360009081526008602052604081209190915592505b8483101561175157878381518110151561337257fe5b602090810290910101519150600160a060020a03821615806133a15750600054600160a060020a038381169116145b156133ab57613418565b600160a060020a0382166000908152600860205260409020546133d4908863ffffffff61483c16565b600160a060020a0383166000818152600860209081526040918290209390935580518a81529051919233926000805160206148ea8339815191529281900390910190a35b60019092019161335c565b600054600160a060020a0316331461343a57600080fd5b426000198101600655639a7ec800016007556040517fb7e43176b89d4cefed0cca5fc9b2f8e752d3d192b83123ef306a0a55dcd18a6b90600090a1565b60086020526000908152604090205481565b60055490565b60408051808201909152600381527f46544e0000000000000000000000000000000000000000000000000000000000602082015281565b600960209081526000928352604080842090915290825290205481565b600c5460ff1681565b60008060008060006134fc6148c0565b600160a060020a038716158015906135225750600054600160a060020a03888116911614155b801561353c5750600154600160a060020a03888116911614155b151561354757600080fd5b600160a060020a0387166000908152600d60209081526040808320838052918290528220600301549096509094509250600191505b8282116135e3575060008181526020858152604091829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082018190526135d690859063ffffffff61483c16565b935060019091019061357c565b509195945050505050565b60008054600160a060020a0316331461360657600080fd5b600654421080613617575060075442115b151561362257600080fd5b600c5460ff161561363257600080fd5b600c805460ff191660011790556040517fcd16c719d9bfc829719d0e728b877ea1f29c77fd759480f077f4f6bc2a26e02590600090a150600190565b6000600654421080613681575060075442115b151561368c57600080fd5b33838382158015906136a65750600160a060020a03821615155b15156136b157600080fd5b600160a060020a0383811690831614156136ca57600080fd5b600081116136d757600080fd5b600054600160a060020a03878116911614156136f257600080fd5b6136fc3386614864565b151561370757600080fd5b33600090815260086020526040902054613727908663ffffffff61485216565b3360009081526008602052604080822092909255600160a060020a03881681522054613759908663ffffffff61483c16565b600160a060020a0387166000818152600860209081526040918290209390935580518881529051919233926000805160206148ea8339815191529281900390910190a350600195945050505050565b600e5460009060ff1615156137bc57600080fd5b600e54610100900460ff16156137d157600080fd5b600054600160a060020a031633146137e857600080fd5b50600160a060020a03811660009081526012602090815260408083205460089092529091205461381e908263ffffffff61483c16565b600160a060020a03831660009081526008602052604090205560035461384a908263ffffffff61483c16565b600355600160a060020a0382166000818152601260209081526040808320929092558151928352820183905280517fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d9281900390910190a1604080518281529051600160a060020a0384169160008051602061492a833981519152919081900360200190a2604080518281529051600160a060020a038416916000916000805160206148ea8339815191529181900360200190a35050565b600e5460009081908190819060ff16151561391c57600080fd5b600e54610100900460ff161561393157600080fd5b600054600160a060020a0316331461394857600080fd5b845193506000841161395957600080fd5b5060005b83811015613a9d57848181518110151561397357fe5b6020908102909101810151600160a060020a03811660009081526012835260408082205460089094529020549094509092506139b5908363ffffffff61483c16565b600160a060020a0384166000908152600860205260409020556003546139e1908363ffffffff61483c16565b600355600160a060020a0383166000818152601260209081526040808320929092558151928352820184905280517fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d9281900390910190a1604080518381529051600160a060020a0385169160008051602061492a833981519152919081900360200190a2604080518381529051600160a060020a038516916000916000805160206148ea8339815191529181900360200190a360010161395d565b5050505050565b60116020526000908152604090205460ff1681565b60008054600160a060020a03163314613ad157600080fd5b60015460a060020a900460ff161515613ae957600080fd5b6001805474ff0000000000000000000000000000000000000000191690556040517f5f6f015054fd8937bdf17b86b7684be4ae883d459fb0bec23bc11f75a13b594490600090a150600190565b60008054819081908190600160a060020a03163314613b5457600080fd5b600654421080613b65575060075442115b1515613b7057600080fd5b600c5460ff1615613b8057600080fd5b600160a060020a0386161515613b9557600080fd5b600054600160a060020a0387811691161415613bb057600080fd5b600154600160a060020a0387811691161415613bcb57600080fd5b60008511613bd857600080fd5b613be1856129ca565b1515613bec57600080fd5b505050600160a060020a0383166000908152600d60209081526040808320838052808352818420600380820180548551608081018752600a54808252600b54908101828a0190815262015180909104828901908152606083018d81526001948501808d529a89905298909a2091518255519181019190915596516002880155935195810195909555918390559254909190613c87908661483c565b600355600160a060020a038616600090815260086020526040902054613cb3908663ffffffff61483c16565b600160a060020a0387166000818152600860209081526040918290209390935580518881529051919260008051602061492a83398151915292918290030190a2604080518681529051600160a060020a038816916000916000805160206148ea8339815191529181900360200190a350600195945050505050565b6000805481908190819081908190819081908190600160a060020a03163314613d5657600080fd5b600654421080613d67575060075442115b1515613d7257600080fd5b600c5460ff1615613d8257600080fd5b60008a11613d8f57600080fd5b8a51975060009650600095505b87861015613e15578a86815181101515613db257fe5b602090810290910101519450600160a060020a0385161580613de15750600054600160a060020a038681169116145b80613df95750600154600160a060020a038681169116145b15613e0357613e0a565b6001909601955b600190950194613d9c565b60008711613e2257600080fd5b613e328a8863ffffffff61489516565b9350613e3d846129ca565b1515613e4857600080fd5b600354613e5b908563ffffffff61483c16565b600355600095505b878610156129b9578a86815181101515613e7957fe5b602090810290910101519450600160a060020a0385161580613ea85750600054600160a060020a038681169116145b80613ec05750600154600160a060020a038681169116145b15613eca57613ff5565b505050600160a060020a0382166000908152600d602090815260408083208380528083529281902060038101548251608081018452600a54808252600b54908101958201959095529193600190910192820190620151809004815260209081018c90526000838152858252604080822084518155848401516001820155848201516002820155606090940151600394850155928501849055600160a060020a038816815260089091522054613f85908b63ffffffff61483c16565b600160a060020a0386166000818152600860209081526040918290209390935580518d81529051919260008051602061492a83398151915292918290030190a2604080518b81529051600160a060020a038716916000916000805160206148ea8339815191529181900360200190a35b600190950194613e63565b60045481565b600054600160a060020a0316331461401d57600080fd5b600054600160a060020a0316ff5b600e54610100900460ff1681565b60126020526000908152604090205481565b60055481565b60006129f161405f836124ee565b600160a060020a0384166000908152600860205260409020549063ffffffff61485216565b600080600654421080614098575060075442115b15156140a357600080fd5b600160a060020a0384163314156140bd5760019150612add565b336000908152600960209081526040808320600160a060020a0388168452909152902054612a77908463ffffffff61483c16565b600080600080600080600080600080600e60009054906101000a900460ff16151561411b57600080fd5b600654421015801561412f57506007544211155b151561413a57600080fd5b600e54610100900460ff161561414f57600080fd5b600054600160a060020a0316331461416657600080fd5b8a51995060008a1161417757600080fd5b600094505b89851015614521578a8581518110151561419257fe5b6020908102909101810151600e54604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a03808516600483015291519398506201000090920416926370a08231926024808401938290030181600087803b15801561420757600080fd5b505af115801561421b573d6000803e3d6000fd5b505050506040513d602081101561423157600080fd5b5051600160a060020a03851660009081526010602052604090205490935060ff168061425b575082155b8061427e5750600160a060020a03841660009081526011602052604090205460ff165b1561428857614516565b600160a060020a038085166000818152601060209081526040808320805460ff191660011790556008909152808220879055600e54815160e660020a63013f307f02815260048101949094526024840183905290516201000090910490931692634fcc1fc0926044808201936080939283900390910190829087803b15801561431057600080fd5b505af1158015614324573d6000803e3d6000fd5b505050506040513d608081101561433a57600080fd5b50805160208201516040830151606090930151919b509950909750955085915060008211156144a35750600160a060020a0383166000908152600d60209081526040808320838052909152902060030181905560015b8181116144a357600e546040805160e660020a63013f307f028152600160a060020a0387811660048301526024820185905291516201000090930490911691634fcc1fc0916044808201926080929091908290030181600087803b1580156143f757600080fd5b505af115801561440b573d6000803e3d6000fd5b505050506040513d608081101561442157600080fd5b5080516020808301516040808501516060958601518251608081018452868152808601858152818501848152988201838152600160a060020a038e166000908152600d89528681208c825290985294909620905181559451600180870191909155965160028601559151600390940193909355929c509a509850965001614390565b6003546144b6908463ffffffff61483c16565b600355604080518481529051600160a060020a0386169160008051602061492a833981519152919081900360200190a2604080518481529051600160a060020a038616916000916000805160206148ea8339815191529181900360200190a35b60019094019361417c565b5050505050505050505050565b600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b60035481565b600e5460ff16151561457057600080fd5b600e54610100900460ff161561458557600080fd5b600054600160a060020a0316331461459c57600080fd5b600160a060020a03821615156145b157600080fd5b600154600160a060020a03838116911614156145cc57600080fd5b600054600160a060020a03838116911614156145e757600080fd5b600160a060020a0382166000818152601260209081526040918290208490558151928352820183905280517f22e6de62acad655dbe35cea5e534f6d5b5fd376e597e6163f29f49f691b00de39281900390910190a15050565b600e54600090819060ff16151561465657600080fd5b600654421015801561466a57506007544211155b151561467557600080fd5b600e54610100900460ff161561468a57600080fd5b600054600160a060020a031633146146a157600080fd5b825191506000821115614708575060005b818110156147085760016011600085848151811015156146ce57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790556001016146b2565b505050565b60025481565b600080548190600160a060020a0316331461472d57600080fd5b600160a060020a038316151561474257600080fd5b600054600160a060020a038481169116141561475d57600080fd5b600154600160a060020a038481169116141561477857600080fd5b60008054600160a060020a03168152600860205260409020541561479b57600080fd5b600160a060020a038316600090815260086020526040902054156147be57600080fd5b5060008054600160a060020a0384811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350600192915050565b60106020526000908152604090205460ff1681565b600b5481565b60008282018381101561484b57fe5b9392505050565b60008282111561485e57fe5b50900390565b60008061487084614051565b909211159392505050565b60006004546129ee8360055461483c90919063ffffffff16565b6000808315156148a85760009150612add565b508282028284828115156148b857fe5b041461484b57fe5b6080604051908101604052806000815260200160008152602001600081526020016000815250905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca50f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885a165627a7a72305820587a64f3bcd76c41c61a153daa861225654f405755403f1f24c1c94c98a409af002900000000000000000000000066d9c4d19b4c8e23a54c6dc4ceed141f66b8111c
Deployed Bytecode
0x6080604052600436106103215763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663046f7da2811461032657806306fdde031461033d5780630900f010146103c7578063095ea7b3146103e857806318160ddd146104205780631e478649146104475780632239c48a1461045c578063223e21211461047157806323b872dd146104ff57806323b8fabd146105295780632d2155181461054d57806330503c4e14610568578063313ce56714610599578063340df28f146105c4578063348e7b3d146105d95780633b6c4fa81461062e5780633badca251461064357806340c10f19146106d157806342966c68146106f557806342bb66c41461070d57806347c27aed1461072857806348cc7b6e146107b657806348eac902146107cb578063491eeb3a146107e05780634fcc1fc0146107f5578063560ef1bf1461083f578063580d28821461086057806359dd7ad4146108785780635dd871a314610914578063661884631461092c5780636ad953171461095057806370a08231146109de57806373a72b18146109ff578063766e33f414610a2057806376f660f614610a35578063800edb9d14610a9a57806383f12fec14610ab25780638456cb5914610b0957806389b08f1114610b1e5780639433a49814610b3f57806395d89b4114610b545780639aa9897914610b695780639b89010414610b905780639cf4836514610ba5578063a4c673c514610bc6578063a9059cbb14610bdb578063b0491e4e14610bff578063b626487c14610c20578063b67cef3a14610c75578063b703aa3a14610c96578063b9b8c24614610cab578063bd632e1014610ccf578063c04e7e1714610d26578063c96cd46f14610d3b578063ca299b9614610d50578063d0e8cf4614610d65578063d26e141414610d86578063d28cb7b514610d9b578063d73dd62314610dbc578063dc87f8f714610de0578063dd62ed3e14610e35578063de8ae5c014610e5c578063e1736d2914610e71578063e900c27014610e95578063efc5d18314610eea578063f2fde38b14610eff578063f4b489e714610f20578063f9b4189114610f41575b600080fd5b34801561033257600080fd5b5061033b610f56565b005b34801561034957600080fd5b50610352610fa8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038c578181015183820152602001610374565b50505050905090810190601f1680156103b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d357600080fd5b5061033b600160a060020a0360043516610fdf565b3480156103f457600080fd5b5061040c600160a060020a036004351660243561142b565b604080519115158252519081900360200190f35b34801561042c57600080fd5b506104356114ca565b60408051918252519081900360200190f35b34801561045357600080fd5b5061033b6114d0565b34801561046857600080fd5b5061033b611542565b34801561047d57600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506115b69650505050505050565b34801561050b57600080fd5b5061040c600160a060020a036004358116906024351660443561175f565b34801561053557600080fd5b5061040c600160a060020a0360043516602435611946565b34801561055957600080fd5b5061033b600435602435611a91565b34801561057457600080fd5b5061057d611afd565b60408051600160a060020a039092168252519081900360200190f35b3480156105a557600080fd5b506105ae611b0c565b6040805160ff9092168252519081900360200190f35b3480156105d057600080fd5b5061033b611b11565b3480156105e557600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750949750611b879650505050505050565b34801561063a57600080fd5b5061040c611cfd565b34801561064f57600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750611d069650505050505050565b3480156106dd57600080fd5b5061040c600160a060020a0360043516602435611f2e565b34801561070157600080fd5b5061040c6004356120d1565b34801561071957600080fd5b5061040c6004356024356121bc565b34801561073457600080fd5b506040805160206004803580820135838102808601850190965280855261033b95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506122569650505050505050565b3480156107c257600080fd5b5061040c6123ac565b3480156107d757600080fd5b5061040c61242e565b3480156107ec57600080fd5b5061040c61243e565b34801561080157600080fd5b50610819600160a060020a03600435166024356124bc565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561084b57600080fd5b50610435600160a060020a03600435166124ee565b34801561086c57600080fd5b5061033b60043561264b565b34801561088457600080fd5b5060408051602060046024803582810135848102808701860190975280865261040c968435600160a060020a031696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506126e29650505050505050565b34801561092057600080fd5b5061040c6004356129ca565b34801561093857600080fd5b5061040c600160a060020a03600435166024356129f9565b34801561095c57600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750612ae49650505050505050565b3480156109ea57600080fd5b50610435600160a060020a0360043516612e0b565b348015610a0b57600080fd5b5061040c600160a060020a0360043516612e26565b348015610a2c57600080fd5b50610435612f6e565b348015610a4157600080fd5b5060408051602060046024803582810135848102808701860190975280865261040c968435600160a060020a0316963696604495919490910192918291850190849080828437509497505093359450612f749350505050565b348015610aa657600080fd5b5061040c600435613213565b348015610abe57600080fd5b506040805160206004803580820135838102808601850190965280855261040c9536959394602494938501929182918501908490808284375094975050933594506132529350505050565b348015610b1557600080fd5b5061033b613423565b348015610b2a57600080fd5b50610435600160a060020a0360043516613477565b348015610b4b57600080fd5b50610435613489565b348015610b6057600080fd5b5061035261348f565b348015610b7557600080fd5b50610435600160a060020a03600435811690602435166134c6565b348015610b9c57600080fd5b5061040c6134e3565b348015610bb157600080fd5b50610435600160a060020a03600435166134ec565b348015610bd257600080fd5b5061040c6135ee565b348015610be757600080fd5b5061040c600160a060020a036004351660243561366e565b348015610c0b57600080fd5b5061033b600160a060020a03600435166137a8565b348015610c2c57600080fd5b506040805160206004803580820135838102808601850190965280855261033b953695939460249493850192918291850190849080828437509497506139029650505050505050565b348015610c8157600080fd5b5061040c600160a060020a0360043516613aa4565b348015610ca257600080fd5b5061040c613ab9565b348015610cb757600080fd5b5061040c600160a060020a0360043516602435613b36565b348015610cdb57600080fd5b506040805160206004803580820135838102808601850190965280855261040c953695939460249493850192918291850190849080828437509497505093359450613d2e9350505050565b348015610d3257600080fd5b50610435614000565b348015610d4757600080fd5b5061033b614006565b348015610d5c57600080fd5b5061040c61402b565b348015610d7157600080fd5b50610435600160a060020a0360043516614039565b348015610d9257600080fd5b5061043561404b565b348015610da757600080fd5b50610435600160a060020a0360043516614051565b348015610dc857600080fd5b5061040c600160a060020a0360043516602435614084565b348015610dec57600080fd5b506040805160206004803580820135838102808601850190965280855261033b953695939460249493850192918291850190849080828437509497506140f19650505050505050565b348015610e4157600080fd5b50610435600160a060020a036004358116906024351661452e565b348015610e6857600080fd5b50610435614559565b348015610e7d57600080fd5b5061033b600160a060020a036004351660243561455f565b348015610ea157600080fd5b506040805160206004803580820135838102808601850190965280855261033b953695939460249493850192918291850190849080828437509497506146409650505050505050565b348015610ef657600080fd5b5061043561470d565b348015610f0b57600080fd5b5061040c600160a060020a0360043516614713565b348015610f2c57600080fd5b5061040c600160a060020a0360043516614821565b348015610f4d57600080fd5b50610435614836565b600054600160a060020a03163314610f6d57600080fd5b426001198101600655600019016007556040517fa968378e910134ded7db0a5144e2c6a2d157f1685baa51f39de6c13a5e8ffa8990600090a1565b60408051808201909152600a81527f466f756e7461696e203300000000000000000000000000000000000000000000602082015281565b6000806000806000806000600e60009054906101000a900460ff16151561100557600080fd5b600654421015801561101957506007544211155b151561102457600080fd5b600e54610100900460ff161561103957600080fd5b600054600160a060020a0316331461105057600080fd5b600e54604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038b81166004830152915162010000909304909116916370a08231916024808201926020929091908290030181600087803b1580156110bf57600080fd5b505af11580156110d3573d6000803e3d6000fd5b505050506040513d60208110156110e957600080fd5b5051600160a060020a03891660009081526010602052604090205490975060ff161580156111175750600087115b801561113c5750600160a060020a03881660009081526011602052604090205460ff16155b151561114757600080fd5b600160a060020a038089166000818152601060209081526040808320805460ff1916600117905560089091528082208b9055600e54815160e660020a63013f307f02815260048101949094526024840183905290516201000090910490931692634fcc1fc0926044808201936080939283900390910190829087803b1580156111cf57600080fd5b505af11580156111e3573d6000803e3d6000fd5b505050506040513d60808110156111f957600080fd5b508051602082015160408301516060909301519198509650909450925082915060008211156113af5750600160a060020a0387166000908152600d60209081526040808320838052909152902060030181905560015b8181116113af57600e546040805160e660020a63013f307f028152600160a060020a038b811660048301526024820185905291516201000090930490911691634fcc1fc0916044808201926080929091908290030181600087803b1580156112b657600080fd5b505af11580156112ca573d6000803e3d6000fd5b505050506040513d60808110156112e057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050508096508197508298508399505050505060806040519081016040528087815260200186815260200185815260200184815250600d60008a600160a060020a0316600160a060020a03168152602001908152602001600020600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155905050808060010191505061124f565b6003546113c2908863ffffffff61483c16565b600355604080518881529051600160a060020a038a169160008051602061492a833981519152919081900360200190a2604080518881529051600160a060020a038a16916000916000805160206148ea8339815191529181900360200190a35050505050505050565b600060065442108061143e575060075442115b151561144957600080fd5b600160a060020a038316331415611462575060016114c4565b336000818152600960209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035490565b600e5460ff1615156114e157600080fd5b600e54610100900460ff16156114f657600080fd5b600054600160a060020a0316331461150d57600080fd5b600e805460ff191690556040517f232033aa00cdc2e9205a0e3a1063da78353d21cd7724a0444927c906da0e021690600090a1565b600e5460ff161561155257600080fd5b600e54610100900460ff161561156757600080fd5b600054600160a060020a0316331461157e57600080fd5b600e805460ff191660011790556040517f28968b4d1fad9f3e651bf12ae7ae8581411755b430bd83a24d38eb700e4b011f90600090a1565b6000805481908190819081908190600160a060020a031633146115d857600080fd5b60065442101580156115ec57506007544211155b15156115f757600080fd5b875194506000851161160857600080fd5b865188511461161657600080fd5b5060005b8481101561175157878181518110151561163057fe5b602090810290910101519350600160a060020a038416158061165f5750600054600160a060020a038581169116145b1561166957611749565b868181518110151561167757fe5b90602001906020020151925061168c84614051565b91508183111561169a578192505b6003546116ad908463ffffffff61485216565b600355600160a060020a0384166000908152600860205260409020546116d9908463ffffffff61485216565b600160a060020a0385166000818152600860209081526040918290209390935580518681529051919260008051602061490a83398151915292918290030190a2604080518481529051600091600160a060020a038716916000805160206148ea8339815191529181900360200190a35b60010161161a565b506001979650505050505050565b600080600654421080611773575060075442115b151561177e57600080fd5b848484600160a060020a038316158015906117a15750600160a060020a03821615155b15156117ac57600080fd5b600160a060020a0383811690831614156117c557600080fd5b600081116117d257600080fd5b600054600160a060020a03898116911614156117ed57600080fd5b600054600160a060020a038881169116141561180857600080fd5b6118128887614864565b151561181d57600080fd5b33600160a060020a0389161461189557600160a060020a038816600090815260096020908152604080832033845290915290205493508386111561186057600080fd5b611870848763ffffffff61485216565b600160a060020a03891660009081526009602090815260408083203384529091529020555b600160a060020a0388166000908152600860205260409020546118be908763ffffffff61485216565b600160a060020a03808a1660009081526008602052604080822093909355908916815220546118f3908763ffffffff61483c16565b600160a060020a038089166000818152600860209081526040918290209490945580518a815290519193928c16926000805160206148ea83398151915292918290030190a3506001979650505050505050565b6000805481908190600160a060020a0316331461196257600080fd5b600654421015801561197657506007544211155b151561198157600080fd5b600160a060020a038516158015906119a75750600054600160a060020a03868116911614155b15156119b257600080fd5b600084116119bf57600080fd5b6119c885614051565b9150839050818411156119d85750805b6003546119eb908263ffffffff61485216565b600355600160a060020a038516600090815260086020526040902054611a17908263ffffffff61485216565b600160a060020a0386166000818152600860209081526040918290209390935580518481529051919260008051602061490a83398151915292918290030190a2604080518281529051600091600160a060020a038816916000805160206148ea8339815191529181900360200190a3506001949350505050565b600054600160a060020a03163314611aa857600080fd5b818111611ab457600080fd5b60068290556007819055604080518381526020810183905281517fac04925986d687f5e264774dac7e393e920d61c9b99e92497853eb519484e4dd929181900390910190a15050565b600f54600160a060020a031681565b601281565b600e5460ff1615611b2157600080fd5b600e54610100900460ff1615611b3657600080fd5b600054600160a060020a03163314611b4d57600080fd5b600e805461ff0019166101001790556040517f31a51b3f3da1c639dced656c0599662c31b7a9822ed27f4079befb25036f66d590600090a1565b600080548190819081908190600160a060020a03163314611ba757600080fd5b6006544210158015611bbb57506007544211155b1515611bc657600080fd5b8551935060008411611bd757600080fd5b600091505b83821015611cf1578582815181101515611bf257fe5b602090810290910101519250600160a060020a0383161580611c215750600054600160a060020a038481169116145b15611c2b57611ce6565b611c3483614051565b600354909150611c4a908263ffffffff61485216565b600355600160a060020a038316600090815260086020526040902054611c76908263ffffffff61485216565b600160a060020a0384166000818152600860209081526040918290209390935580518481529051919260008051602061490a83398151915292918290030190a2604080518281529051600091600160a060020a038616916000805160206148ea8339815191529181900360200190a35b600190910190611bdc565b50600195945050505050565b600e5460ff1681565b6000806000806000806000600654421080611d22575060075442115b1515611d2d57600080fd5b885188519096508614611d3f57600080fd5b6000945060009350600092505b85831015611dd8578883815181101515611d6257fe5b602090810290910101519150600160a060020a0382161580611d915750600054600160a060020a038381169116145b15611d9b57611dcd565b8751600190950194611dca90899085908110611db357fe5b60209081029091010151859063ffffffff61483c16565b93505b600190920191611d4c565b60008411611de557600080fd5b611def3385614864565b1515611dfa57600080fd5b33600090815260086020526040902054611e1a908563ffffffff61485216565b3360009081526008602052604081209190915592505b85831015611f1f578883815181101515611e4657fe5b602090810290910101519150600160a060020a0382161580611e755750600054600160a060020a038381169116145b15611e7f57611f14565b8783815181101515611e8d57fe5b9060200190602002015190508060001415611ea757611f14565b600160a060020a038216600090815260086020526040902054611ed0908263ffffffff61483c16565b600160a060020a0383166000818152600860209081526040918290209390935580518481529051919233926000805160206148ea8339815191529281900390910190a35b600190920191611e30565b50600198975050505050505050565b60008054600160a060020a0316331480611f525750600154600160a060020a031633145b1515611f5d57600080fd5b600654421080611f6e575060075442115b1515611f7957600080fd5b60015460a060020a900460ff161515611f9157600080fd5b600054600160a060020a03848116911614801590611fbd5750600154600160a060020a03848116911614155b1515611fc857600080fd5b611fd1826129ca565b1515611fdc57600080fd5b600154600160a060020a031633141561201a57611ff88261487b565b151561200357600080fd5b600554612016908363ffffffff61483c16565b6005555b60035461202d908363ffffffff61483c16565b600355600160a060020a038316600090815260086020526040902054612059908363ffffffff61483c16565b600160a060020a0384166000818152600860209081526040918290209390935580518581529051919260008051602061492a83398151915292918290030190a2604080518381529051600160a060020a038516916000916000805160206148ea8339815191529181900360200190a350600192915050565b6000806006544210806120e5575060075442115b15156120f057600080fd5b60015460a060020a900460ff16151561210857600080fd5b61211133614051565b90508083111561212057600080fd5b600354612133908463ffffffff61485216565b60035533600090815260086020526040902054612156908463ffffffff61485216565b336000818152600860209081526040918290209390935580518681529051919260008051602061490a83398151915292918290030190a260408051848152905160009133916000805160206148ea8339815191529181900360200190a350600192915050565b60008054600160a060020a031633146121d457600080fd5b6006544210806121e5575060075442115b15156121f057600080fd5b600a839055600b829055818301831061220857600080fd5b600c805460ff19169055604080518481526020810184905281517f4a1179f4d7ff6354606313c42f6054383e9549f9db56ac4b66b424bc940f79ed929181900390910190a150600192915050565b600e54600090819081908190819060ff16151561227257600080fd5b600e54610100900460ff161561228757600080fd5b600054600160a060020a0316331461229e57600080fd5b86519450855193506000851180156122b557508385145b15156122c057600080fd5b5060005b848110156123a35786818151811015156122da57fe5b90602001906020020151925085818151811015156122f457fe5b602090810290910101519150600160a060020a03831615806123235750600154600160a060020a038481169116145b8061233b5750600054600160a060020a038481169116145b156123455761239b565b600160a060020a0383166000818152601260209081526040918290208590558151928352820184905280517f22e6de62acad655dbe35cea5e534f6d5b5fd376e597e6163f29f49f691b00de39281900390910190a15b6001016122c4565b50505050505050565b60008054600160a060020a031633146123c457600080fd5b60015460a060020a900460ff16156123db57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790556040517fa039c7af624b7305fc7002f670d116cf0c8b61a558a10ff96be611c5c235751790600090a150600190565b60015460a060020a900460ff1681565b60008054600160a060020a0316331461245657600080fd5b600654421080612467575060075442115b151561247257600080fd5b600c5460ff16151561248357600080fd5b600c805460ff191690556040517f14245ee125d3810a2a28f6b656b676516364a51e95a688ddf08af4194fc3db1290600090a150600190565b600d60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6000806000806000806124ff6148c0565b600160a060020a038816158015906125255750600054600160a060020a03898116911614155b801561253f5750600154600160a060020a03898116911614155b151561254a57600080fd5b600160a060020a0388166000908152600d60209081526040808320838052918290528220600301549097509095506001945092508391505b82821161263f5750600081815260208681526040918290208251608081018452815480825260018301549382019390935260028201549381019390935260030154606083015242116125eb5760608101516125e490869063ffffffff61483c16565b9450612634565b80602001514210156126345780516201518090420304935061263181604001518583606001510281151561261b57fe5b048260600151038661483c90919063ffffffff16565b94505b600190910190612582565b50929695505050505050565b600e5460ff16151561265c57600080fd5b600654421015801561267057506007544211155b151561267b57600080fd5b600e54610100900460ff161561269057600080fd5b600054600160a060020a031633146126a757600080fd5b60058190556040805182815290517f16b5fc7c36431451ea7ff18fe108b2a159992ef2a5b74d44613ff6749a2296af9181900360200190a150565b6000806000806000806000806006544210806126ff575060075442115b151561270a57600080fd5b600160a060020a038b16158015906127305750600054600160a060020a038c8116911614155b151561273b57600080fd5b89518951909750871461274d57600080fd5b6000955060009450600093505b868410156127e657898481518110151561277057fe5b602090810290910101519250600160a060020a038316158061279f5750600054600160a060020a038481169116145b156127a9576127db565b88516001909601956127d8908a90869081106127c157fe5b60209081029091010151869063ffffffff61483c16565b94505b60019093019261275a565b600085116127f357600080fd5b6127fd8b86614864565b151561280857600080fd5b33600160a060020a038c161461288057600160a060020a038b16600090815260096020908152604080832033845290915290205491508185111561284b57600080fd5b61285b828663ffffffff61485216565b600160a060020a038c1660009081526009602090815260408083203384529091529020555b600160a060020a038b166000908152600860205260409020546128a9908663ffffffff61485216565b600160a060020a038c1660009081526008602052604081209190915593505b868410156129b95789848151811015156128de57fe5b602090810290910101519250600160a060020a038316158061290d5750600054600160a060020a038481169116145b15612917576129ae565b888481518110151561292557fe5b906020019060200201519050806000141561293f576129ae565b600160a060020a038316600090815260086020526040902054612968908263ffffffff61483c16565b600160a060020a0380851660008181526008602090815260409182902094909455805185815290519193928f16926000805160206148ea83398151915292918290030190a35b6001909301926128c8565b5060019a9950505050505050505050565b6000600254600014806129f157506002546003546129ee908463ffffffff61483c16565b11155b90505b919050565b600080600654421080612a0d575060075442115b1515612a1857600080fd5b600160a060020a038416331415612a325760019150612add565b50336000908152600960209081526040808320600160a060020a038716845290915290205482811015612a6757506000612a7a565b612a77818463ffffffff61485216565b90505b336000818152600960209081526040808320600160a060020a03891680855290835292819020859055805185815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b60008054819081908190819081908190819081908190600160a060020a03163314612b0e57600080fd5b600654421080612b1f575060075442115b1515612b2a57600080fd5b600c5460ff1615612b3a57600080fd5b8b518b519099508914612b4c57600080fd5b6000975060009650600095505b88861015612bfd578b86815181101515612b6f57fe5b602090810290910101519450600160a060020a0385161580612b9e5750600054600160a060020a038681169116145b80612bb65750600154600160a060020a038681169116145b15612bc057612bf2565b8a51600190980197612bef908c9088908110612bd857fe5b60209081029091010151889063ffffffff61483c16565b96505b600190950194612b59565b60008711612c0a57600080fd5b612c13876129ca565b1515612c1e57600080fd5b600354612c31908863ffffffff61483c16565b600355600095505b88861015612df9578b86815181101515612c4f57fe5b602090810290910101519450600160a060020a0385161580612c7e5750600054600160a060020a038681169116145b80612c965750600154600160a060020a038681169116145b15612ca057612dee565b8a86815181101515612cae57fe5b9060200190602002015193508360001415612cc857612dee565b600160a060020a038516600090815260086020526040902054612cf1908563ffffffff61483c16565b600160a060020a0386166000818152600860209081526040918290209390935580518781529051919260008051602061492a83398151915292918290030190a2604080518581529051600160a060020a038716916000916000805160206148ea8339815191529181900360200190a3505050600160a060020a0382166000908152600d60209081526040808320838052808352818420600380820180548551608081018752600a54808252600b54908101828a0190815262015180909104828901908152606083018c81526001948501808d529a89905298909a209151825551918101919091559651600288015593519501949094559082905591905b600190950194612c39565b5060019b9a5050505050505050505050565b600160a060020a031660009081526008602052604090205490565b6000805481908190600160a060020a03163314612e4257600080fd5b600160a060020a0384161515612e5757600080fd5b600154600160a060020a0385811691161415612e7257600080fd5b600054600160a060020a0385811691161415612e8d57600080fd5b600160a060020a03841660009081526008602052604090205415612eb057600080fd5b60018054600160a060020a0386811673ffffffffffffffffffffffffffffffffffffffff19831617928390556040519181169450919091169083907ffc952dd6557f6861208ba39acbc0cfe5b4f12e76e6b467ed4200003f2b0cd8b090600090a350600160a060020a03808216600081815260086020908152604080832080549084905594881680845292819020859055805185815290519293926000805160206148ea833981519152929181900390910190a35060019392505050565b600a5481565b6000806000806000806000600654421080612f90575060075442115b1515612f9b57600080fd5b600160a060020a038a1615801590612fc15750600054600160a060020a038b8116911614155b1515612fcc57600080fd5b60008811612fd957600080fd5b8851955060009450600093505b85841015613047578884815181101515612ffc57fe5b602090810290910101519250600160a060020a038316158061302b5750600054600160a060020a038481169116145b156130355761303c565b6001909401935b600190930192612fe6565b6000851161305457600080fd5b613064888663ffffffff61489516565b91506130708a83614864565b151561307b57600080fd5b33600160a060020a038b16146130f25750600160a060020a0389166000908152600960209081526040808320338452909152902054808211156130bd57600080fd5b6130cd818363ffffffff61485216565b600160a060020a038b1660009081526009602090815260408083203384529091529020555b600160a060020a038a1660009081526008602052604090205461311b908363ffffffff61485216565b600160a060020a038b1660009081526008602052604081209190915593505b8584101561320357888481518110151561315057fe5b602090810290910101519250600160a060020a038316158061317f5750600054600160a060020a038481169116145b15613189576131f8565b600160a060020a0383166000908152600860205260409020546131b2908963ffffffff61483c16565b600160a060020a038085166000818152600860209081526040918290209490945580518c815290519193928e16926000805160206148ea83398151915292918290030190a35b60019093019261313a565b5060019998505050505050505050565b60008054600160a060020a0316331461322b57600080fd5b6003548210801561323c5750600082115b15613249575060006129f4565b50600255600190565b60008060008060008060065442108061326c575060075442115b151561327757600080fd5b6000871161328457600080fd5b8751945060009350600092505b848310156132f25787838151811015156132a757fe5b602090810290910101519150600160a060020a03821615806132d65750600054600160a060020a038381169116145b156132e0576132e7565b6001909301925b600190920191613291565b600084116132ff57600080fd5b61330f878563ffffffff61489516565b905061331b3382614864565b151561332657600080fd5b33600090815260086020526040902054613346908263ffffffff61485216565b3360009081526008602052604081209190915592505b8483101561175157878381518110151561337257fe5b602090810290910101519150600160a060020a03821615806133a15750600054600160a060020a038381169116145b156133ab57613418565b600160a060020a0382166000908152600860205260409020546133d4908863ffffffff61483c16565b600160a060020a0383166000818152600860209081526040918290209390935580518a81529051919233926000805160206148ea8339815191529281900390910190a35b60019092019161335c565b600054600160a060020a0316331461343a57600080fd5b426000198101600655639a7ec800016007556040517fb7e43176b89d4cefed0cca5fc9b2f8e752d3d192b83123ef306a0a55dcd18a6b90600090a1565b60086020526000908152604090205481565b60055490565b60408051808201909152600381527f46544e0000000000000000000000000000000000000000000000000000000000602082015281565b600960209081526000928352604080842090915290825290205481565b600c5460ff1681565b60008060008060006134fc6148c0565b600160a060020a038716158015906135225750600054600160a060020a03888116911614155b801561353c5750600154600160a060020a03888116911614155b151561354757600080fd5b600160a060020a0387166000908152600d60209081526040808320838052918290528220600301549096509094509250600191505b8282116135e3575060008181526020858152604091829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082018190526135d690859063ffffffff61483c16565b935060019091019061357c565b509195945050505050565b60008054600160a060020a0316331461360657600080fd5b600654421080613617575060075442115b151561362257600080fd5b600c5460ff161561363257600080fd5b600c805460ff191660011790556040517fcd16c719d9bfc829719d0e728b877ea1f29c77fd759480f077f4f6bc2a26e02590600090a150600190565b6000600654421080613681575060075442115b151561368c57600080fd5b33838382158015906136a65750600160a060020a03821615155b15156136b157600080fd5b600160a060020a0383811690831614156136ca57600080fd5b600081116136d757600080fd5b600054600160a060020a03878116911614156136f257600080fd5b6136fc3386614864565b151561370757600080fd5b33600090815260086020526040902054613727908663ffffffff61485216565b3360009081526008602052604080822092909255600160a060020a03881681522054613759908663ffffffff61483c16565b600160a060020a0387166000818152600860209081526040918290209390935580518881529051919233926000805160206148ea8339815191529281900390910190a350600195945050505050565b600e5460009060ff1615156137bc57600080fd5b600e54610100900460ff16156137d157600080fd5b600054600160a060020a031633146137e857600080fd5b50600160a060020a03811660009081526012602090815260408083205460089092529091205461381e908263ffffffff61483c16565b600160a060020a03831660009081526008602052604090205560035461384a908263ffffffff61483c16565b600355600160a060020a0382166000818152601260209081526040808320929092558151928352820183905280517fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d9281900390910190a1604080518281529051600160a060020a0384169160008051602061492a833981519152919081900360200190a2604080518281529051600160a060020a038416916000916000805160206148ea8339815191529181900360200190a35050565b600e5460009081908190819060ff16151561391c57600080fd5b600e54610100900460ff161561393157600080fd5b600054600160a060020a0316331461394857600080fd5b845193506000841161395957600080fd5b5060005b83811015613a9d57848181518110151561397357fe5b6020908102909101810151600160a060020a03811660009081526012835260408082205460089094529020549094509092506139b5908363ffffffff61483c16565b600160a060020a0384166000908152600860205260409020556003546139e1908363ffffffff61483c16565b600355600160a060020a0383166000818152601260209081526040808320929092558151928352820184905280517fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d9281900390910190a1604080518381529051600160a060020a0385169160008051602061492a833981519152919081900360200190a2604080518381529051600160a060020a038516916000916000805160206148ea8339815191529181900360200190a360010161395d565b5050505050565b60116020526000908152604090205460ff1681565b60008054600160a060020a03163314613ad157600080fd5b60015460a060020a900460ff161515613ae957600080fd5b6001805474ff0000000000000000000000000000000000000000191690556040517f5f6f015054fd8937bdf17b86b7684be4ae883d459fb0bec23bc11f75a13b594490600090a150600190565b60008054819081908190600160a060020a03163314613b5457600080fd5b600654421080613b65575060075442115b1515613b7057600080fd5b600c5460ff1615613b8057600080fd5b600160a060020a0386161515613b9557600080fd5b600054600160a060020a0387811691161415613bb057600080fd5b600154600160a060020a0387811691161415613bcb57600080fd5b60008511613bd857600080fd5b613be1856129ca565b1515613bec57600080fd5b505050600160a060020a0383166000908152600d60209081526040808320838052808352818420600380820180548551608081018752600a54808252600b54908101828a0190815262015180909104828901908152606083018d81526001948501808d529a89905298909a2091518255519181019190915596516002880155935195810195909555918390559254909190613c87908661483c565b600355600160a060020a038616600090815260086020526040902054613cb3908663ffffffff61483c16565b600160a060020a0387166000818152600860209081526040918290209390935580518881529051919260008051602061492a83398151915292918290030190a2604080518681529051600160a060020a038816916000916000805160206148ea8339815191529181900360200190a350600195945050505050565b6000805481908190819081908190819081908190600160a060020a03163314613d5657600080fd5b600654421080613d67575060075442115b1515613d7257600080fd5b600c5460ff1615613d8257600080fd5b60008a11613d8f57600080fd5b8a51975060009650600095505b87861015613e15578a86815181101515613db257fe5b602090810290910101519450600160a060020a0385161580613de15750600054600160a060020a038681169116145b80613df95750600154600160a060020a038681169116145b15613e0357613e0a565b6001909601955b600190950194613d9c565b60008711613e2257600080fd5b613e328a8863ffffffff61489516565b9350613e3d846129ca565b1515613e4857600080fd5b600354613e5b908563ffffffff61483c16565b600355600095505b878610156129b9578a86815181101515613e7957fe5b602090810290910101519450600160a060020a0385161580613ea85750600054600160a060020a038681169116145b80613ec05750600154600160a060020a038681169116145b15613eca57613ff5565b505050600160a060020a0382166000908152600d602090815260408083208380528083529281902060038101548251608081018452600a54808252600b54908101958201959095529193600190910192820190620151809004815260209081018c90526000838152858252604080822084518155848401516001820155848201516002820155606090940151600394850155928501849055600160a060020a038816815260089091522054613f85908b63ffffffff61483c16565b600160a060020a0386166000818152600860209081526040918290209390935580518d81529051919260008051602061492a83398151915292918290030190a2604080518b81529051600160a060020a038716916000916000805160206148ea8339815191529181900360200190a35b600190950194613e63565b60045481565b600054600160a060020a0316331461401d57600080fd5b600054600160a060020a0316ff5b600e54610100900460ff1681565b60126020526000908152604090205481565b60055481565b60006129f161405f836124ee565b600160a060020a0384166000908152600860205260409020549063ffffffff61485216565b600080600654421080614098575060075442115b15156140a357600080fd5b600160a060020a0384163314156140bd5760019150612add565b336000908152600960209081526040808320600160a060020a0388168452909152902054612a77908463ffffffff61483c16565b600080600080600080600080600080600e60009054906101000a900460ff16151561411b57600080fd5b600654421015801561412f57506007544211155b151561413a57600080fd5b600e54610100900460ff161561414f57600080fd5b600054600160a060020a0316331461416657600080fd5b8a51995060008a1161417757600080fd5b600094505b89851015614521578a8581518110151561419257fe5b6020908102909101810151600e54604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a03808516600483015291519398506201000090920416926370a08231926024808401938290030181600087803b15801561420757600080fd5b505af115801561421b573d6000803e3d6000fd5b505050506040513d602081101561423157600080fd5b5051600160a060020a03851660009081526010602052604090205490935060ff168061425b575082155b8061427e5750600160a060020a03841660009081526011602052604090205460ff165b1561428857614516565b600160a060020a038085166000818152601060209081526040808320805460ff191660011790556008909152808220879055600e54815160e660020a63013f307f02815260048101949094526024840183905290516201000090910490931692634fcc1fc0926044808201936080939283900390910190829087803b15801561431057600080fd5b505af1158015614324573d6000803e3d6000fd5b505050506040513d608081101561433a57600080fd5b50805160208201516040830151606090930151919b509950909750955085915060008211156144a35750600160a060020a0383166000908152600d60209081526040808320838052909152902060030181905560015b8181116144a357600e546040805160e660020a63013f307f028152600160a060020a0387811660048301526024820185905291516201000090930490911691634fcc1fc0916044808201926080929091908290030181600087803b1580156143f757600080fd5b505af115801561440b573d6000803e3d6000fd5b505050506040513d608081101561442157600080fd5b5080516020808301516040808501516060958601518251608081018452868152808601858152818501848152988201838152600160a060020a038e166000908152600d89528681208c825290985294909620905181559451600180870191909155965160028601559151600390940193909355929c509a509850965001614390565b6003546144b6908463ffffffff61483c16565b600355604080518481529051600160a060020a0386169160008051602061492a833981519152919081900360200190a2604080518481529051600160a060020a038616916000916000805160206148ea8339815191529181900360200190a35b60019094019361417c565b5050505050505050505050565b600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b60035481565b600e5460ff16151561457057600080fd5b600e54610100900460ff161561458557600080fd5b600054600160a060020a0316331461459c57600080fd5b600160a060020a03821615156145b157600080fd5b600154600160a060020a03838116911614156145cc57600080fd5b600054600160a060020a03838116911614156145e757600080fd5b600160a060020a0382166000818152601260209081526040918290208490558151928352820183905280517f22e6de62acad655dbe35cea5e534f6d5b5fd376e597e6163f29f49f691b00de39281900390910190a15050565b600e54600090819060ff16151561465657600080fd5b600654421015801561466a57506007544211155b151561467557600080fd5b600e54610100900460ff161561468a57600080fd5b600054600160a060020a031633146146a157600080fd5b825191506000821115614708575060005b818110156147085760016011600085848151811015156146ce57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790556001016146b2565b505050565b60025481565b600080548190600160a060020a0316331461472d57600080fd5b600160a060020a038316151561474257600080fd5b600054600160a060020a038481169116141561475d57600080fd5b600154600160a060020a038481169116141561477857600080fd5b60008054600160a060020a03168152600860205260409020541561479b57600080fd5b600160a060020a038316600090815260086020526040902054156147be57600080fd5b5060008054600160a060020a0384811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350600192915050565b60106020526000908152604090205460ff1681565b600b5481565b60008282018381101561484b57fe5b9392505050565b60008282111561485e57fe5b50900390565b60008061487084614051565b909211159392505050565b60006004546129ee8360055461483c90919063ffffffff16565b6000808315156148a85760009150612add565b508282028284828115156148b857fe5b041461484b57fe5b6080604051908101604052806000815260200160008152602001600081526020016000815250905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca50f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885a165627a7a72305820587a64f3bcd76c41c61a153daa861225654f405755403f1f24c1c94c98a409af0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000066d9c4d19b4c8e23a54c6dc4ceed141f66b8111c
-----Decoded View---------------
Arg [0] : old (address): 0x66d9c4D19b4C8e23a54C6dc4CeEd141f66b8111C
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000066d9c4d19b4c8e23a54c6dc4ceed141f66b8111c
Swarm Source
bzzr://587a64f3bcd76c41c61a153daa861225654f405755403f1f24c1c94c98a409af
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.