Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
5,833,738.21344254950870301 STC
Holders
139
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:
STC
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-08-09 */ contract SafeMath { function safeMul(uint a, uint b) internal returns (uint) { uint c = a * b; assert(a == 0 || c / a == b); return c; } function safeSub(uint a, uint b) internal returns (uint) { assert(b <= a); return a - b; } function safeAdd(uint a, uint b) internal returns (uint) { uint c = a + b; assert(c>=a && c>=b); return c; } // mitigate short address attack // thanks to https://github.com/numerai/contract/blob/c182465f82e50ced8dacb3977ec374a892f5fa8c/contracts/Safe.sol#L30-L34. // TODO: doublecheck implication of >= compared to == modifier onlyPayloadSize(uint numWords) { assert(msg.data.length >= numWords * 32 + 4); _; } } contract Token { // ERC20 standard function balanceOf(address _owner) public view returns (uint256 balance); function transfer(address _to, uint256 _value) public returns (bool success); function transferFrom(address _from, address _to, uint256 _value) public returns (bool success); function approve(address _spender, uint256 _value) returns (bool success); function allowance(address _owner, address _spender) public view returns (uint256 remaining); event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); } contract StandardToken is Token, SafeMath { uint256 public totalSupply; // TODO: update tests to expect throw function transfer(address _to, uint256 _value) public onlyPayloadSize(2) returns (bool success) { require(_to != address(0)); require(balances[msg.sender] >= _value && _value > 0); balances[msg.sender] = safeSub(balances[msg.sender], _value); balances[_to] = safeAdd(balances[_to], _value); Transfer(msg.sender, _to, _value); return true; } // TODO: update tests to expect throw function transferFrom(address _from, address _to, uint256 _value) onlyPayloadSize(3) returns (bool success) { require(_to != address(0)); require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0); balances[_from] = safeSub(balances[_from], _value); balances[_to] = safeAdd(balances[_to], _value); allowed[_from][msg.sender] = safeSub(allowed[_from][msg.sender], _value); Transfer(_from, _to, _value); return true; } function balanceOf(address _owner) view returns (uint256 balance) { return balances[_owner]; } // To change the approve amount you first have to reduce the addresses' // allowance to zero by calling 'approve(_spender, 0)' if it is not // already 0 to mitigate the race condition described here: // https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 function approve(address _spender, uint256 _value) onlyPayloadSize(2) returns (bool success) { require((_value == 0) || (allowed[msg.sender][_spender] == 0)); allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } function changeApproval(address _spender, uint256 _oldValue, uint256 _newValue) onlyPayloadSize(3) returns (bool success) { require(allowed[msg.sender][_spender] == _oldValue); allowed[msg.sender][_spender] = _newValue; Approval(msg.sender, _spender, _newValue); return true; } function allowance(address _owner, address _spender) public view returns (uint256 remaining) { return allowed[_owner][_spender]; } mapping (address => uint256) public balances; mapping (address => mapping (address => uint256)) public allowed; } contract STC is StandardToken { // FIELDS string public name = "SmarterThanCrypto"; string public symbol = "STC"; uint256 public decimals = 18; string public version = "10.0"; uint256 public tokenCap = 100000000 * 10**18; // crowdsale parameters uint256 public fundingStartTime; uint256 public fundingEndTime; // vesting fields address public vestingContract; bool private vestingSet = false; // root control address public fundWallet; // control of liquidity and limited control of updatePrice address public controlWallet; // time to wait between controlWallet price updates uint256 public waitTime = 1 hours; // fundWallet controlled state variables // halted: halt buying due to emergency, tradeable: signal that assets have been acquired bool public halted = false; bool public tradeable = false; // -- totalSupply defined in StandardToken // -- mapping to token balances done in StandardToken uint256 public previousUpdateTime = 0; Price public currentPrice; uint256 public minAmount = 0.04 ether; uint256 public OfferTime = 2592000; // map participant address to a withdrawal request mapping (address => Withdrawal) public withdrawals; // maps previousUpdateTime to the next price mapping (uint256 => Price) public prices; // maps addresses mapping (address => bool) public whitelist; // TYPES struct Price { // tokensPerEth uint256 numerator; uint256 denominator; } struct Withdrawal { uint256 tokens; uint256 time; // time for each withdrawal is set to the previousUpdateTime } // EVENTS event Buy(address indexed participant, address indexed beneficiary, uint256 ethValue, uint256 amountTokens); event AllocatePresale(address indexed participant, uint256 amountTokens); event Whitelist(address indexed participant); event PriceUpdate(uint256 numerator, uint256 denominator); event AddLiquidity(uint256 ethAmount); event RemoveLiquidity(uint256 ethAmount); event WithdrawRequest(address indexed participant, uint256 amountTokens); event Withdraw(address indexed participant, uint256 amountTokens, uint256 etherAmount); // MODIFIERS modifier isTradeable { // exempt vestingContract and fundWallet to allow dev allocations require(tradeable || msg.sender == fundWallet || msg.sender == vestingContract); _; } modifier onlyWhitelist { require(whitelist[msg.sender]); _; } modifier onlyFundWallet { require(msg.sender == fundWallet); _; } modifier onlyManagingWallets { require(msg.sender == controlWallet || msg.sender == fundWallet); _; } modifier only_if_controlWallet { if (msg.sender == controlWallet) _; } modifier require_waited { require(safeSub(now, waitTime) >= previousUpdateTime); _; } modifier only_if_increase (uint256 newNumerator) { if (newNumerator > currentPrice.numerator) _; } // CONSTRUCTOR function STC(address controlWalletInput, uint256 priceNumeratorInput, uint256 startTimeInput, uint256 endTimeInput) public { require(controlWalletInput != address(0)); require(priceNumeratorInput > 0); require(endTimeInput > startTimeInput); fundWallet = msg.sender; controlWallet = controlWalletInput; whitelist[fundWallet] = true; whitelist[controlWallet] = true; currentPrice = Price(priceNumeratorInput, 10000); // 1 token = 1 usd at ICO start fundingStartTime = startTimeInput; fundingEndTime = endTimeInput; previousUpdateTime = now; } // METHODS function setOfferTime(uint256 newOfferTime) external onlyFundWallet { require(newOfferTime>0); require(newOfferTime<safeSub(fundingEndTime,fundingStartTime)); OfferTime = newOfferTime; } function setVestingContract(address vestingContractInput) external onlyFundWallet { require(vestingContractInput != address(0)); vestingContract = vestingContractInput; whitelist[vestingContract] = true; vestingSet = true; } // allows controlWallet to update the price within a time contstraint, allows fundWallet complete control function updatePrice(uint256 newNumerator) external onlyManagingWallets { require(newNumerator > 0); require_limited_change(newNumerator); // either controlWallet command is compliant or transaction came from fundWallet currentPrice.numerator = newNumerator; // maps time to new Price (if not during ICO) prices[previousUpdateTime] = currentPrice; previousUpdateTime = now; PriceUpdate(newNumerator, currentPrice.denominator); } function require_limited_change (uint256 newNumerator) private only_if_controlWallet require_waited only_if_increase(newNumerator) { uint256 percentage_diff = 0; percentage_diff = safeMul(newNumerator, 10000) / currentPrice.numerator; percentage_diff = safeSub(percentage_diff, 10000); // controlWallet can only increase price by max 20% and only every waitTime //require(percentage_diff <= 20); } function updatePriceDenominator(uint256 newDenominator) external onlyManagingWallets { require(now > fundingEndTime); require(newDenominator > 0); currentPrice.denominator = newDenominator; // maps time to new Price prices[previousUpdateTime] = currentPrice; previousUpdateTime = now; PriceUpdate(currentPrice.numerator, newDenominator); } function updatePriceAndDenominator(uint256 newNumerator, uint256 newDenominator) external onlyManagingWallets { require(now > fundingEndTime); require(newDenominator > 0); require(newNumerator > 0); require(safeSub(now, waitTime) >= previousUpdateTime); currentPrice.denominator = newDenominator; currentPrice.numerator = newNumerator; // maps time to new Price prices[previousUpdateTime] = currentPrice; previousUpdateTime = now; PriceUpdate(currentPrice.numerator, newDenominator); } function allocateTokens(address participant, uint256 amountTokens) private { require(vestingSet); // 13% of total allocated for PR, Marketing, Team, Advisors uint256 developmentAllocation = safeMul(amountTokens, 14942528735632200) / 100000000000000000; // check that token cap is not exceeded uint256 newTokens = safeAdd(amountTokens, developmentAllocation); require(safeAdd(totalSupply, newTokens) <= tokenCap); // increase token supply, assign tokens to participant totalSupply = safeAdd(totalSupply, newTokens); balances[participant] = safeAdd(balances[participant], amountTokens); balances[vestingContract] = safeAdd(balances[vestingContract], developmentAllocation); } function allocatePresaleTokens(address participant, uint amountTokens) external onlyManagingWallets { require(!halted); require(participant != address(0)); whitelist[participant] = true; // automatically whitelist accepted presale allocateTokens(participant, amountTokens); Whitelist(participant); AllocatePresale(participant, amountTokens); } function verifyParticipant(address participant) external onlyManagingWallets { whitelist[participant] = true; Whitelist(participant); } function buy() external payable { buyTo(msg.sender); } function buyTo(address participant) public payable onlyWhitelist { require(!halted); require(participant != address(0)); require(msg.value >= minAmount); require(now >= fundingStartTime); uint256 icoDenominator = icoDenominatorPrice(); uint256 tokensToBuy = safeMul(msg.value, currentPrice.numerator) / icoDenominator; allocateTokens(participant, tokensToBuy); // send ether to fundWallet fundWallet.transfer(msg.value); Buy(msg.sender, participant, msg.value, tokensToBuy); } // time based on blocknumbers, assuming a blocktime of 30s function icoDenominatorPrice() public view returns (uint256) { uint256 icoDuration = safeSub(now, fundingStartTime); uint256 denominator; if (icoDuration < 172800) { // time in sec = (48*60*60) = 172800 denominator = safeMul(currentPrice.denominator, 95) / 100; return denominator; } else if (icoDuration < OfferTime ) { // time in sec = (((4*7)+2)*24*60*60) = 2592000 denominator = safeMul(currentPrice.denominator, 100) / 100; return denominator; } else if (now > fundingEndTime ) { denominator = safeMul(currentPrice.denominator, 100) / 100; return denominator; } else { denominator = safeMul(currentPrice.denominator, 105) / 100; return denominator; } } function requestWithdrawal(uint256 amountTokensToWithdraw) external isTradeable onlyWhitelist { require(now > fundingEndTime); require(amountTokensToWithdraw > 0); address participant = msg.sender; require(balanceOf(participant) >= amountTokensToWithdraw); require(withdrawals[participant].tokens == 0); // participant cannot have outstanding withdrawals balances[participant] = safeSub(balances[participant], amountTokensToWithdraw); withdrawals[participant] = Withdrawal({tokens: amountTokensToWithdraw, time: previousUpdateTime}); WithdrawRequest(participant, amountTokensToWithdraw); } function withdraw() external { address participant = msg.sender; uint256 tokens = withdrawals[participant].tokens; require(tokens > 0); // participant must have requested a withdrawal uint256 requestTime = withdrawals[participant].time; // obtain the next price that was set after the request Price price = prices[requestTime]; require(price.numerator > 0); // price must have been set uint256 withdrawValue = safeMul(tokens, price.denominator) / price.numerator; // if contract ethbal > then send + transfer tokens to fundWallet, otherwise give tokens back withdrawals[participant].tokens = 0; if (this.balance >= withdrawValue) enact_withdrawal_greater_equal(participant, withdrawValue, tokens); else enact_withdrawal_less(participant, withdrawValue, tokens); } function enact_withdrawal_greater_equal(address participant, uint256 withdrawValue, uint256 tokens) private { assert(this.balance >= withdrawValue); balances[fundWallet] = safeAdd(balances[fundWallet], tokens); participant.transfer(withdrawValue); Withdraw(participant, tokens, withdrawValue); } function enact_withdrawal_less(address participant, uint256 withdrawValue, uint256 tokens) private { assert(this.balance < withdrawValue); balances[participant] = safeAdd(balances[participant], tokens); Withdraw(participant, tokens, 0); // indicate a failed withdrawal } function checkWithdrawValue(uint256 amountTokensToWithdraw) public view returns (uint256 etherValue) { require(amountTokensToWithdraw > 0); require(balanceOf(msg.sender) >= amountTokensToWithdraw); uint256 withdrawValue = safeMul(amountTokensToWithdraw, currentPrice.denominator) / currentPrice.numerator; require(this.balance >= withdrawValue); return withdrawValue; } function checkWithdrawValueForAddress(address participant,uint256 amountTokensToWithdraw) public view returns (uint256 etherValue) { require(amountTokensToWithdraw > 0); require(balanceOf(participant) >= amountTokensToWithdraw); uint256 withdrawValue = safeMul(amountTokensToWithdraw, currentPrice.denominator) / currentPrice.numerator; return withdrawValue; } // allow fundWallet or controlWallet to add ether to contract function addLiquidity() external onlyManagingWallets payable { require(msg.value > 0); AddLiquidity(msg.value); } // allow fundWallet to remove ether from contract function removeLiquidity(uint256 amount) external onlyManagingWallets { require(amount <= this.balance); fundWallet.transfer(amount); RemoveLiquidity(amount); } function changeFundWallet(address newFundWallet) external onlyFundWallet { require(newFundWallet != address(0)); fundWallet = newFundWallet; } function changeControlWallet(address newControlWallet) external onlyFundWallet { require(newControlWallet != address(0)); controlWallet = newControlWallet; } function changeWaitTime(uint256 newWaitTime) external onlyFundWallet { waitTime = newWaitTime; } function updatefundingStartTime(uint256 newfundingStartTime) external onlyFundWallet { // require(now < fundingStartTime); // require(now < newfundingStartTime); fundingStartTime = newfundingStartTime; } function updatefundingEndTime(uint256 newfundingEndTime) external onlyFundWallet { // require(now < fundingEndTime); // require(now < newfundingEndTime); fundingEndTime = newfundingEndTime; } function halt() external onlyFundWallet { halted = true; } function unhalt() external onlyFundWallet { halted = false; } function enableTrading() external onlyFundWallet { require(now > fundingEndTime); tradeable = true; } // fallback function function() payable { require(tx.origin == msg.sender); buyTo(msg.sender); } function claimTokens(address _token) external onlyFundWallet { require(_token != address(0)); Token token = Token(_token); uint256 balance = token.balanceOf(this); token.transfer(fundWallet, balance); } // prevent transfers until trading allowed function transfer(address _to, uint256 _value) isTradeable returns (bool success) { return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint256 _value) public isTradeable returns (bool success) { return super.transferFrom(_from, _to, _value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newWaitTime","type":"uint256"}],"name":"changeWaitTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","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":"newOfferTime","type":"uint256"}],"name":"setOfferTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fundingStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newNumerator","type":"uint256"},{"name":"newDenominator","type":"uint256"}],"name":"updatePriceAndDenominator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"previousUpdateTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"OfferTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newControlWallet","type":"address"}],"name":"changeControlWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestingContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"participant","type":"address"},{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"checkWithdrawValueForAddress","outputs":[{"name":"etherValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"verifyParticipant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fundWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFundWallet","type":"address"}],"name":"changeFundWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"vestingContractInput","type":"address"}],"name":"setVestingContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fundingEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"withdrawals","outputs":[{"name":"tokens","type":"uint256"},{"name":"time","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controlWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newfundingStartTime","type":"uint256"}],"name":"updatefundingStartTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"enableTrading","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newNumerator","type":"uint256"}],"name":"updatePrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"checkWithdrawValue","outputs":[{"name":"etherValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"},{"name":"amountTokens","type":"uint256"}],"name":"allocatePresaleTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_oldValue","type":"uint256"},{"name":"_newValue","type":"uint256"}],"name":"changeApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"removeLiquidity","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentPrice","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amountTokensToWithdraw","type":"uint256"}],"name":"requestWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"prices","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"waitTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newfundingEndTime","type":"uint256"}],"name":"updatefundingEndTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newDenominator","type":"uint256"}],"name":"updatePriceDenominator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"participant","type":"address"}],"name":"buyTo","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"tokenCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"addLiquidity","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"tradeable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"icoDenominatorPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"controlWalletInput","type":"address"},{"name":"priceNumeratorInput","type":"uint256"},{"name":"startTimeInput","type":"uint256"},{"name":"endTimeInput","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"ethValue","type":"uint256"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"AllocatePresale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"}],"name":"Whitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"numerator","type":"uint256"},{"indexed":false,"name":"denominator","type":"uint256"}],"name":"PriceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethAmount","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethAmount","type":"uint256"}],"name":"RemoveLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"}],"name":"WithdrawRequest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"participant","type":"address"},{"indexed":false,"name":"amountTokens","type":"uint256"},{"indexed":false,"name":"etherAmount","type":"uint256"}],"name":"Withdraw","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"},{"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"}]
Contract Creation Code
60806040526040805190810160405280601181526020017f536d61727465725468616e43727970746f0000000000000000000000000000008152506003908051906020019062000051929190620003e0565b506040805190810160405280600381526020017f5354430000000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f929190620003e0565b5060126005556040805190810160405280600481526020017f31302e300000000000000000000000000000000000000000000000000000000081525060069080519060200190620000f2929190620003e0565b506a52b7d2dcc80cd2e40000006007556000600a60146101000a81548160ff021916908315150217905550610e10600d556000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600f55668e1bc9bf04000060125562278d006013553480156200017d57600080fd5b506040516080806200451983398101806040528101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515620001fc57600080fd5b6000831115156200020c57600080fd5b81811115156200021b57600080fd5b33600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160166000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160166000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550604080519081016040528084815260200161271081525060106000820151816000015560208201518160010155905050816008819055508060098190555042600f81905550505050506200048f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200042357805160ff191683800117855562000454565b8280016001018555821562000454579182015b828111156200045357825182559160200191906001019062000436565b5b50905062000463919062000467565b5090565b6200048c91905b80821115620004885760008160009055506001016200046e565b5090565b90565b61407a806200049f6000396000f300608060405260043610610288576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146102cd57806306fe22121461035d578063095ea7b31461038a57806318160ddd146103ef5780631df411a61461041a5780631df935581461044757806323b872dd1461047257806324038339146104f757806327e235e31461052e578063313ce56714610585578063347820eb146105b05780633ccfd60b146105db5780634a96d129146105f257806354fd4d501461061d5780635a8cf571146106ad5780635c658165146106f05780635e6f6045146107675780635ed7ca5b146107be57806363f114f2146107d5578063643a769514610836578063664a1ad6146108795780636fb4adff146108d057806370a0823114610913578063749915691461096a57806374eedd46146109ad5780637a9262a2146109d8578063823e569e14610a36578063861654f714610a8d5780638a8c523c14610aba5780638d6cc56d14610ad15780638f11e5f914610afe5780638fee768714610b3f5780639281cd6514610b8c57806395d89b4114610bfb5780639b19251a14610c8b5780639b2cb5d814610ce65780639c8f9f2314610d115780639d1b464a14610d3e5780639ee679e814610d70578063a6f2ae3a14610d9d578063a9059cbb14610da7578063b9b8af0b14610e0c578063bc31c1c114610e3b578063cb3e64fd14610e83578063ccca123b14610e9a578063cef9436014610ec5578063dbb2455414610ef2578063dcf72c1014610f1f578063dd54291b14610f55578063dd62ed3e14610f80578063df8de3e714610ff7578063e8078d941461103a578063f5ac9db614611044578063fa0d80fc14611073575b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156102c257600080fd5b6102cb3361109e565b005b3480156102d957600080fd5b506102e261127e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610322578082015181840152602081019050610307565b50505050905090810190601f16801561034f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036957600080fd5b506103886004803603810190808035906020019092919050505061131c565b005b34801561039657600080fd5b506103d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611382565b604051808215151515815260200191505060405180910390f35b3480156103fb57600080fd5b50610404611523565b6040518082815260200191505060405180910390f35b34801561042657600080fd5b5061044560048036038101908080359060200190929190505050611529565b005b34801561045357600080fd5b5061045c6115b9565b6040518082815260200191505060405180910390f35b34801561047e57600080fd5b506104dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115bf565b604051808215151515815260200191505060405180910390f35b34801561050357600080fd5b5061052c60048036038101908080359060200190929190803590602001909291905050506116a0565b005b34801561053a57600080fd5b5061056f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061182f565b6040518082815260200191505060405180910390f35b34801561059157600080fd5b5061059a611847565b6040518082815260200191505060405180910390f35b3480156105bc57600080fd5b506105c561184d565b6040518082815260200191505060405180910390f35b3480156105e757600080fd5b506105f0611853565b005b3480156105fe57600080fd5b506106076119c9565b6040518082815260200191505060405180910390f35b34801561062957600080fd5b506106326119cf565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610672578082015181840152602081019050610657565b50505050905090810190601f16801561069f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106b957600080fd5b506106ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a6d565b005b3480156106fc57600080fd5b50610751600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b49565b6040518082815260200191505060405180910390f35b34801561077357600080fd5b5061077c611b6e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107ca57600080fd5b506107d3611b94565b005b3480156107e157600080fd5b50610820600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c0d565b6040518082815260200191505060405180910390f35b34801561084257600080fd5b50610877600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c61565b005b34801561088557600080fd5b5061088e611db3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108dc57600080fd5b50610911600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dd9565b005b34801561091f57600080fd5b50610954600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eb5565b6040518082815260200191505060405180910390f35b34801561097657600080fd5b506109ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611efe565b005b3480156109b957600080fd5b506109c261206f565b6040518082815260200191505060405180910390f35b3480156109e457600080fd5b50610a19600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612075565b604051808381526020018281526020019250505060405180910390f35b348015610a4257600080fd5b50610a4b612099565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a9957600080fd5b50610ab8600480360381019080803590602001909291905050506120bf565b005b348015610ac657600080fd5b50610acf612125565b005b348015610add57600080fd5b50610afc600480360381019080803590602001909291905050506121ae565b005b348015610b0a57600080fd5b50610b2960048036038101908080359060200190929190505050612300565b6040518082815260200191505060405180910390f35b348015610b4b57600080fd5b50610b8a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612379565b005b348015610b9857600080fd5b50610be1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061257c565b604051808215151515815260200191505060405180910390f35b348015610c0757600080fd5b50610c10612712565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c50578082015181840152602081019050610c35565b50505050905090810190601f168015610c7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c9757600080fd5b50610ccc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127b0565b604051808215151515815260200191505060405180910390f35b348015610cf257600080fd5b50610cfb6127d0565b6040518082815260200191505060405180910390f35b348015610d1d57600080fd5b50610d3c600480360381019080803590602001909291905050506127d6565b005b348015610d4a57600080fd5b50610d53612953565b604051808381526020018281526020019250505060405180910390f35b348015610d7c57600080fd5b50610d9b60048036038101908080359060200190929190505050612965565b005b610da5612c5f565b005b348015610db357600080fd5b50610df2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c6a565b604051808215151515815260200191505060405180910390f35b348015610e1857600080fd5b50610e21612d49565b604051808215151515815260200191505060405180910390f35b348015610e4757600080fd5b50610e6660048036038101908080359060200190929190505050612d5c565b604051808381526020018281526020019250505060405180910390f35b348015610e8f57600080fd5b50610e98612d80565b005b348015610ea657600080fd5b50610eaf612df9565b6040518082815260200191505060405180910390f35b348015610ed157600080fd5b50610ef060048036038101908080359060200190929190505050612dff565b005b348015610efe57600080fd5b50610f1d60048036038101908080359060200190929190505050612e65565b005b610f53600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061109e565b005b348015610f6157600080fd5b50610f6a612fbe565b6040518082815260200191505060405180910390f35b348015610f8c57600080fd5b50610fe1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fc4565b6040518082815260200191505060405180910390f35b34801561100357600080fd5b50611038600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061304b565b005b6110426132c7565b005b34801561105057600080fd5b506110596133c3565b604051808215151515815260200191505060405180910390f35b34801561107f57600080fd5b506110886133d6565b6040518082815260200191505060405180910390f35b600080601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156110f957600080fd5b600e60009054906101000a900460ff1615151561111557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561115157600080fd5b601254341015151561116257600080fd5b600854421015151561117357600080fd5b61117b6133d6565b91508161118d346010600001546134a1565b81151561119657fe5b0490506111a383826134d4565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561120b573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f89f5adc174562e07c9c9b1cae7109bbecb21cf9d1b2847e550042b8653c54a0e3484604051808381526020018281526020019250505060405180910390a3505050565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113145780601f106112e957610100808354040283529160200191611314565b820191906000526020600020905b8154815290600101906020018083116112f757829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561137857600080fd5b80600d8190555050565b600060026004602082020160003690501015151561139c57fe5b600083148061142757506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b151561143257600080fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505092915050565b60005481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561158557600080fd5b60008111151561159457600080fd5b6115a26009546008546136b4565b811015156115af57600080fd5b8060138190555050565b60085481565b6000600e60019054906101000a900460ff16806116295750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806116815750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561168c57600080fd5b6116978484846136cd565b90509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117495750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561175457600080fd5b6009544211151561176457600080fd5b60008111151561177357600080fd5b60008211151561178257600080fd5b600f5461179142600d546136b4565b1015151561179e57600080fd5b8060106001018190555081601060000181905550601060156000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571160106000015482604051808381526020018281526020019250505060405180910390a15050565b60016020528060005260406000206000915090505481565b60055481565b600f5481565b6000806000806000339450601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015493506000841115156118b257600080fd5b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015492506015600084815260200190815260200160002091506000826000015411151561191f57600080fd5b81600001546119328584600101546134a1565b81151561193b57fe5b0490506000601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550803073ffffffffffffffffffffffffffffffffffffffff16311015156119b6576119b1858286613a94565b6119c2565b6119c1858286613c29565b5b5050505050565b60135481565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a655780601f10611a3a57610100808354040283529160200191611a65565b820191906000526020600020905b815481529060010190602001808311611a4857829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ac957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611b0557600080fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002602052816000526040600020602052806000526040600020600091509150505481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bf057600080fd5b6001600e60006101000a81548160ff021916908315150217905550565b600080600083111515611c1f57600080fd5b82611c2985611eb5565b10151515611c3657600080fd5b601060000154611c4b846010600101546134a1565b811515611c5457fe5b0490508091505092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611d0a5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611d1557600080fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405160405180910390a250565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e3557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611e7157600080fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f5a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611f9657600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160166000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60146101000a81548160ff02191690831515021790555050565b60095481565b60146020528060005260406000206000915090508060000154908060010154905082565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561211b57600080fd5b8060088190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561218157600080fd5b6009544211151561219157600080fd5b6001600e60016101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122575750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561226257600080fd5b60008111151561227157600080fd5b61227a81613d33565b80601060000181905550601060156000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571181601060010154604051808381526020018281526020019250505060405180910390a150565b60008060008311151561231257600080fd5b8261231c33611eb5565b1015151561232957600080fd5b60106000015461233e846010600101546134a1565b81151561234757fe5b049050803073ffffffffffffffffffffffffffffffffffffffff16311015151561237057600080fd5b80915050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806124225750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561242d57600080fd5b600e60009054906101000a900460ff1615151561244957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561248557600080fd5b6001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506124e782826134d4565b8173ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405160405180910390a28173ffffffffffffffffffffffffffffffffffffffff167f69488271d7ab6c5d1d852b2fedbeafcee0ad158162b8c58145130bacd56bff76826040518082815260200191505060405180910390a25050565b600060036004602082020160003690501015151561259657fe5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561262057600080fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a360019150509392505050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127a85780601f1061277d576101008083540402835291602001916127a8565b820191906000526020600020905b81548152906001019060200180831161278b57829003601f168201915b505050505081565b60166020528060005260406000206000915054906101000a900460ff1681565b60125481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061287f5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561288a57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156128b057600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612918573d6000803e3d6000fd5b507f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa816040518082815260200191505060405180910390a150565b60108060000154908060010154905082565b6000600e60019054906101000a900460ff16806129cf5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612a275750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612a3257600080fd5b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612a8a57600080fd5b60095442111515612a9a57600080fd5b600082111515612aa957600080fd5b33905081612ab682611eb5565b10151515612ac357600080fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515612b1457600080fd5b612b5d600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836136b4565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506040805190810160405280838152602001600f54815250601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050508073ffffffffffffffffffffffffffffffffffffffff167f17040713250ec5f668a1c39e7939900e78558350dbaff0ebef34268dfa8ea4ac836040518082815260200191505060405180910390a25050565b612c683361109e565b565b6000600e60019054906101000a900460ff1680612cd45750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612d2c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612d3757600080fd5b612d418383613dec565b905092915050565b600e60009054906101000a900460ff1681565b60156020528060005260406000206000915090508060000154908060010154905082565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ddc57600080fd5b6000600e60006101000a81548160ff021916908315150217905550565b600d5481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e5b57600080fd5b8060098190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612f0e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612f1957600080fd5b60095442111515612f2957600080fd5b600081111515612f3857600080fd5b80601060010181905550601060156000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571160106000015482604051808381526020018281526020019250505060405180910390a150565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130aa57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156130e657600080fd5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561318457600080fd5b505af1158015613198573d6000803e3d6000fd5b505050506040513d60208110156131ae57600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561328657600080fd5b505af115801561329a573d6000803e3d6000fd5b505050506040513d60208110156132b057600080fd5b810190808051906020019092919050505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806133705750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561337b57600080fd5b60003411151561338a57600080fd5b7ff53d9d58a7ff16a2e1360446f1c4b5e81a427d3efd25615be081f4003662400a346040518082815260200191505060405180910390a1565b600e60019054906101000a900460ff1681565b60008060006133e7426008546136b4565b91506202a30082101561341a576064613406601060010154605f6134a1565b81151561340f57fe5b04905080925061349c565b60135482101561344a57606461343660106001015460646134a1565b81151561343f57fe5b04905080925061349c565b60095442111561347a57606461346660106001015460646134a1565b81151561346f57fe5b04905080925061349c565b606461348c60106001015460696134a1565b81151561349557fe5b0490508092505b505090565b600080828402905060008414806134c257508284828115156134bf57fe5b04145b15156134ca57fe5b8091505092915050565b600080600a60149054906101000a900460ff1615156134f257600080fd5b67016345785d8a000061350c846635162695555b486134a1565b81151561351557fe5b0491506135228383614024565b905060075461353360005483614024565b1115151561354057600080fd5b61354c60005482614024565b60008190555061359b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484614024565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364960016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483614024565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b60008282111515156136c257fe5b818303905092915050565b60006003600460208202016000369050101515156136e757fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561372357600080fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156137ee575082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156137fa5750600083115b151561380557600080fd5b61384e600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846136b4565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138da600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484614024565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139a3600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846136b4565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b813073ffffffffffffffffffffffffffffffffffffffff163110151515613ab757fe5b613b2260016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482614024565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613bcd573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688284604051808381526020018281526020019250505060405180910390a2505050565b813073ffffffffffffffffffffffffffffffffffffffff1631101515613c4b57fe5b613c94600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482614024565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568826000604051808381526020018281526020019250505060405180910390a2505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415613de857600f54613d9a42600d546136b4565b10151515613da757600080fd5b81601060000154811115613de65760009150601060000154613dcb846127106134a1565b811515613dd457fe5b049150613de3826127106136b4565b91505b505b5050565b6000600260046020820201600036905010151515613e0657fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515613e4257600080fd5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613e915750600083115b1515613e9c57600080fd5b613ee5600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846136b4565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f71600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484614024565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600080828401905083811015801561403c5750828110155b151561404457fe5b80915050929150505600a165627a7a723058203032deea60836f9d8140d5b32abcb94e30ef00c78e387606c325a1b1d904b09e0029000000000000000000000000344f0e5555f0e11e523ffef4c503f29838cad6d4000000000000000000000000000000000000000000000000000000001585e223000000000000000000000000000000000000000000000000000000005b9eee80000000000000000000000000000000000000000000000000000000005bc3d880
Deployed Bytecode
0x608060405260043610610288576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146102cd57806306fe22121461035d578063095ea7b31461038a57806318160ddd146103ef5780631df411a61461041a5780631df935581461044757806323b872dd1461047257806324038339146104f757806327e235e31461052e578063313ce56714610585578063347820eb146105b05780633ccfd60b146105db5780634a96d129146105f257806354fd4d501461061d5780635a8cf571146106ad5780635c658165146106f05780635e6f6045146107675780635ed7ca5b146107be57806363f114f2146107d5578063643a769514610836578063664a1ad6146108795780636fb4adff146108d057806370a0823114610913578063749915691461096a57806374eedd46146109ad5780637a9262a2146109d8578063823e569e14610a36578063861654f714610a8d5780638a8c523c14610aba5780638d6cc56d14610ad15780638f11e5f914610afe5780638fee768714610b3f5780639281cd6514610b8c57806395d89b4114610bfb5780639b19251a14610c8b5780639b2cb5d814610ce65780639c8f9f2314610d115780639d1b464a14610d3e5780639ee679e814610d70578063a6f2ae3a14610d9d578063a9059cbb14610da7578063b9b8af0b14610e0c578063bc31c1c114610e3b578063cb3e64fd14610e83578063ccca123b14610e9a578063cef9436014610ec5578063dbb2455414610ef2578063dcf72c1014610f1f578063dd54291b14610f55578063dd62ed3e14610f80578063df8de3e714610ff7578063e8078d941461103a578063f5ac9db614611044578063fa0d80fc14611073575b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161415156102c257600080fd5b6102cb3361109e565b005b3480156102d957600080fd5b506102e261127e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610322578082015181840152602081019050610307565b50505050905090810190601f16801561034f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036957600080fd5b506103886004803603810190808035906020019092919050505061131c565b005b34801561039657600080fd5b506103d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611382565b604051808215151515815260200191505060405180910390f35b3480156103fb57600080fd5b50610404611523565b6040518082815260200191505060405180910390f35b34801561042657600080fd5b5061044560048036038101908080359060200190929190505050611529565b005b34801561045357600080fd5b5061045c6115b9565b6040518082815260200191505060405180910390f35b34801561047e57600080fd5b506104dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115bf565b604051808215151515815260200191505060405180910390f35b34801561050357600080fd5b5061052c60048036038101908080359060200190929190803590602001909291905050506116a0565b005b34801561053a57600080fd5b5061056f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061182f565b6040518082815260200191505060405180910390f35b34801561059157600080fd5b5061059a611847565b6040518082815260200191505060405180910390f35b3480156105bc57600080fd5b506105c561184d565b6040518082815260200191505060405180910390f35b3480156105e757600080fd5b506105f0611853565b005b3480156105fe57600080fd5b506106076119c9565b6040518082815260200191505060405180910390f35b34801561062957600080fd5b506106326119cf565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610672578082015181840152602081019050610657565b50505050905090810190601f16801561069f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106b957600080fd5b506106ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a6d565b005b3480156106fc57600080fd5b50610751600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b49565b6040518082815260200191505060405180910390f35b34801561077357600080fd5b5061077c611b6e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107ca57600080fd5b506107d3611b94565b005b3480156107e157600080fd5b50610820600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c0d565b6040518082815260200191505060405180910390f35b34801561084257600080fd5b50610877600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c61565b005b34801561088557600080fd5b5061088e611db3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108dc57600080fd5b50610911600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dd9565b005b34801561091f57600080fd5b50610954600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eb5565b6040518082815260200191505060405180910390f35b34801561097657600080fd5b506109ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611efe565b005b3480156109b957600080fd5b506109c261206f565b6040518082815260200191505060405180910390f35b3480156109e457600080fd5b50610a19600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612075565b604051808381526020018281526020019250505060405180910390f35b348015610a4257600080fd5b50610a4b612099565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a9957600080fd5b50610ab8600480360381019080803590602001909291905050506120bf565b005b348015610ac657600080fd5b50610acf612125565b005b348015610add57600080fd5b50610afc600480360381019080803590602001909291905050506121ae565b005b348015610b0a57600080fd5b50610b2960048036038101908080359060200190929190505050612300565b6040518082815260200191505060405180910390f35b348015610b4b57600080fd5b50610b8a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612379565b005b348015610b9857600080fd5b50610be1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061257c565b604051808215151515815260200191505060405180910390f35b348015610c0757600080fd5b50610c10612712565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c50578082015181840152602081019050610c35565b50505050905090810190601f168015610c7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c9757600080fd5b50610ccc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127b0565b604051808215151515815260200191505060405180910390f35b348015610cf257600080fd5b50610cfb6127d0565b6040518082815260200191505060405180910390f35b348015610d1d57600080fd5b50610d3c600480360381019080803590602001909291905050506127d6565b005b348015610d4a57600080fd5b50610d53612953565b604051808381526020018281526020019250505060405180910390f35b348015610d7c57600080fd5b50610d9b60048036038101908080359060200190929190505050612965565b005b610da5612c5f565b005b348015610db357600080fd5b50610df2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c6a565b604051808215151515815260200191505060405180910390f35b348015610e1857600080fd5b50610e21612d49565b604051808215151515815260200191505060405180910390f35b348015610e4757600080fd5b50610e6660048036038101908080359060200190929190505050612d5c565b604051808381526020018281526020019250505060405180910390f35b348015610e8f57600080fd5b50610e98612d80565b005b348015610ea657600080fd5b50610eaf612df9565b6040518082815260200191505060405180910390f35b348015610ed157600080fd5b50610ef060048036038101908080359060200190929190505050612dff565b005b348015610efe57600080fd5b50610f1d60048036038101908080359060200190929190505050612e65565b005b610f53600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061109e565b005b348015610f6157600080fd5b50610f6a612fbe565b6040518082815260200191505060405180910390f35b348015610f8c57600080fd5b50610fe1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fc4565b6040518082815260200191505060405180910390f35b34801561100357600080fd5b50611038600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061304b565b005b6110426132c7565b005b34801561105057600080fd5b506110596133c3565b604051808215151515815260200191505060405180910390f35b34801561107f57600080fd5b506110886133d6565b6040518082815260200191505060405180910390f35b600080601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156110f957600080fd5b600e60009054906101000a900460ff1615151561111557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561115157600080fd5b601254341015151561116257600080fd5b600854421015151561117357600080fd5b61117b6133d6565b91508161118d346010600001546134a1565b81151561119657fe5b0490506111a383826134d4565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561120b573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f89f5adc174562e07c9c9b1cae7109bbecb21cf9d1b2847e550042b8653c54a0e3484604051808381526020018281526020019250505060405180910390a3505050565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113145780601f106112e957610100808354040283529160200191611314565b820191906000526020600020905b8154815290600101906020018083116112f757829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561137857600080fd5b80600d8190555050565b600060026004602082020160003690501015151561139c57fe5b600083148061142757506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b151561143257600080fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505092915050565b60005481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561158557600080fd5b60008111151561159457600080fd5b6115a26009546008546136b4565b811015156115af57600080fd5b8060138190555050565b60085481565b6000600e60019054906101000a900460ff16806116295750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806116815750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561168c57600080fd5b6116978484846136cd565b90509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117495750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561175457600080fd5b6009544211151561176457600080fd5b60008111151561177357600080fd5b60008211151561178257600080fd5b600f5461179142600d546136b4565b1015151561179e57600080fd5b8060106001018190555081601060000181905550601060156000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571160106000015482604051808381526020018281526020019250505060405180910390a15050565b60016020528060005260406000206000915090505481565b60055481565b600f5481565b6000806000806000339450601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015493506000841115156118b257600080fd5b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015492506015600084815260200190815260200160002091506000826000015411151561191f57600080fd5b81600001546119328584600101546134a1565b81151561193b57fe5b0490506000601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550803073ffffffffffffffffffffffffffffffffffffffff16311015156119b6576119b1858286613a94565b6119c2565b6119c1858286613c29565b5b5050505050565b60135481565b60068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a655780601f10611a3a57610100808354040283529160200191611a65565b820191906000526020600020905b815481529060010190602001808311611a4857829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ac957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611b0557600080fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002602052816000526040600020602052806000526040600020600091509150505481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bf057600080fd5b6001600e60006101000a81548160ff021916908315150217905550565b600080600083111515611c1f57600080fd5b82611c2985611eb5565b10151515611c3657600080fd5b601060000154611c4b846010600101546134a1565b811515611c5457fe5b0490508091505092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611d0a5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611d1557600080fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405160405180910390a250565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e3557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611e7157600080fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f5a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611f9657600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160166000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60146101000a81548160ff02191690831515021790555050565b60095481565b60146020528060005260406000206000915090508060000154908060010154905082565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561211b57600080fd5b8060088190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561218157600080fd5b6009544211151561219157600080fd5b6001600e60016101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806122575750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561226257600080fd5b60008111151561227157600080fd5b61227a81613d33565b80601060000181905550601060156000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571181601060010154604051808381526020018281526020019250505060405180910390a150565b60008060008311151561231257600080fd5b8261231c33611eb5565b1015151561232957600080fd5b60106000015461233e846010600101546134a1565b81151561234757fe5b049050803073ffffffffffffffffffffffffffffffffffffffff16311015151561237057600080fd5b80915050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806124225750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561242d57600080fd5b600e60009054906101000a900460ff1615151561244957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561248557600080fd5b6001601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506124e782826134d4565b8173ffffffffffffffffffffffffffffffffffffffff167feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60405160405180910390a28173ffffffffffffffffffffffffffffffffffffffff167f69488271d7ab6c5d1d852b2fedbeafcee0ad158162b8c58145130bacd56bff76826040518082815260200191505060405180910390a25050565b600060036004602082020160003690501015151561259657fe5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561262057600080fd5b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a360019150509392505050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127a85780601f1061277d576101008083540402835291602001916127a8565b820191906000526020600020905b81548152906001019060200180831161278b57829003601f168201915b505050505081565b60166020528060005260406000206000915054906101000a900460ff1681565b60125481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061287f5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561288a57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156128b057600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612918573d6000803e3d6000fd5b507f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa816040518082815260200191505060405180910390a150565b60108060000154908060010154905082565b6000600e60019054906101000a900460ff16806129cf5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612a275750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612a3257600080fd5b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612a8a57600080fd5b60095442111515612a9a57600080fd5b600082111515612aa957600080fd5b33905081612ab682611eb5565b10151515612ac357600080fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141515612b1457600080fd5b612b5d600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836136b4565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506040805190810160405280838152602001600f54815250601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050508073ffffffffffffffffffffffffffffffffffffffff167f17040713250ec5f668a1c39e7939900e78558350dbaff0ebef34268dfa8ea4ac836040518082815260200191505060405180910390a25050565b612c683361109e565b565b6000600e60019054906101000a900460ff1680612cd45750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612d2c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612d3757600080fd5b612d418383613dec565b905092915050565b600e60009054906101000a900460ff1681565b60156020528060005260406000206000915090508060000154908060010154905082565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ddc57600080fd5b6000600e60006101000a81548160ff021916908315150217905550565b600d5481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e5b57600080fd5b8060098190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612f0e5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612f1957600080fd5b60095442111515612f2957600080fd5b600081111515612f3857600080fd5b80601060010181905550601060156000600f548152602001908152602001600020600082015481600001556001820154816001015590505042600f819055507f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c76571160106000015482604051808381526020018281526020019250505060405180910390a150565b60075481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130aa57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156130e657600080fd5b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561318457600080fd5b505af1158015613198573d6000803e3d6000fd5b505050506040513d60208110156131ae57600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561328657600080fd5b505af115801561329a573d6000803e3d6000fd5b505050506040513d60208110156132b057600080fd5b810190808051906020019092919050505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806133705750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561337b57600080fd5b60003411151561338a57600080fd5b7ff53d9d58a7ff16a2e1360446f1c4b5e81a427d3efd25615be081f4003662400a346040518082815260200191505060405180910390a1565b600e60019054906101000a900460ff1681565b60008060006133e7426008546136b4565b91506202a30082101561341a576064613406601060010154605f6134a1565b81151561340f57fe5b04905080925061349c565b60135482101561344a57606461343660106001015460646134a1565b81151561343f57fe5b04905080925061349c565b60095442111561347a57606461346660106001015460646134a1565b81151561346f57fe5b04905080925061349c565b606461348c60106001015460696134a1565b81151561349557fe5b0490508092505b505090565b600080828402905060008414806134c257508284828115156134bf57fe5b04145b15156134ca57fe5b8091505092915050565b600080600a60149054906101000a900460ff1615156134f257600080fd5b67016345785d8a000061350c846635162695555b486134a1565b81151561351557fe5b0491506135228383614024565b905060075461353360005483614024565b1115151561354057600080fd5b61354c60005482614024565b60008190555061359b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484614024565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364960016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483614024565b60016000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b60008282111515156136c257fe5b818303905092915050565b60006003600460208202016000369050101515156136e757fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561372357600080fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156137ee575082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156137fa5750600083115b151561380557600080fd5b61384e600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846136b4565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138da600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484614024565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139a3600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846136b4565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b813073ffffffffffffffffffffffffffffffffffffffff163110151515613ab757fe5b613b2260016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482614024565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613bcd573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5688284604051808381526020018281526020019250505060405180910390a2505050565b813073ffffffffffffffffffffffffffffffffffffffff1631101515613c4b57fe5b613c94600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482614024565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568826000604051808381526020018281526020019250505060405180910390a2505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415613de857600f54613d9a42600d546136b4565b10151515613da757600080fd5b81601060000154811115613de65760009150601060000154613dcb846127106134a1565b811515613dd457fe5b049150613de3826127106136b4565b91505b505b5050565b6000600260046020820201600036905010151515613e0657fe5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515613e4257600080fd5b82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015613e915750600083115b1515613e9c57600080fd5b613ee5600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846136b4565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f71600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484614024565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600080828401905083811015801561403c5750828110155b151561404457fe5b80915050929150505600a165627a7a723058203032deea60836f9d8140d5b32abcb94e30ef00c78e387606c325a1b1d904b09e0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000344f0e5555f0e11e523ffef4c503f29838cad6d4000000000000000000000000000000000000000000000000000000001585e223000000000000000000000000000000000000000000000000000000005b9eee80000000000000000000000000000000000000000000000000000000005bc3d880
-----Decoded View---------------
Arg [0] : controlWalletInput (address): 0x344f0E5555f0E11E523ffEf4c503f29838CAD6d4
Arg [1] : priceNumeratorInput (uint256): 361095715
Arg [2] : startTimeInput (uint256): 1537142400
Arg [3] : endTimeInput (uint256): 1539561600
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000344f0e5555f0e11e523ffef4c503f29838cad6d4
Arg [1] : 000000000000000000000000000000000000000000000000000000001585e223
Arg [2] : 000000000000000000000000000000000000000000000000000000005b9eee80
Arg [3] : 000000000000000000000000000000000000000000000000000000005bc3d880
Swarm Source
bzzr://3032deea60836f9d8140d5b32abcb94e30ef00c78e387606c325a1b1d904b09e
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.