Announcement: This WOLK token is no longer valid as the minimum set in the smart contract was not met.
Wolk token contract has migrated to a new address. The new token can be found here.
Wolk token contract has migrated to a new address. The new token can be found here.
Overview
Max Total Supply
1,504,927.038924944342091743 WOLK
Holders
18,496 (0.00%)
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
7 WOLKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
WolkExchange
Compiler Version
v0.4.16+commit.d7661dd9
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2017-09-08
*/
pragma solidity ^0.4.16;
// SafeMath Taken From FirstBlood
contract SafeMath {
function safeMul(uint a, uint b) internal returns (uint) {
uint c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function safeDiv(uint a, uint b) internal returns (uint) {
assert(b > 0);
uint c = a / b;
assert(a == b * 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;
}
}
// Ownership
contract Owned {
address public owner;
address public newOwner;
modifier onlyOwner { assert(msg.sender == owner); _; }
event OwnerUpdate(address _prevOwner, address _newOwner);
function Owned() {
owner = msg.sender;
}
function transferOwnership(address _newOwner) public onlyOwner {
require(_newOwner != owner);
newOwner = _newOwner;
}
function acceptOwnership() public {
require(msg.sender == newOwner);
OwnerUpdate(owner, newOwner);
owner = newOwner;
newOwner = 0x0;
}
}
// ERC20 Interface
contract ERC20 {
function totalSupply() constant returns (uint _totalSupply);
function balanceOf(address _owner) constant returns (uint balance);
function transfer(address _to, uint _value) returns (bool success);
function transferFrom(address _from, address _to, uint _value) returns (bool success);
function approve(address _spender, uint _value) returns (bool success);
function allowance(address _owner, address _spender) constant returns (uint remaining);
event Transfer(address indexed _from, address indexed _to, uint _value);
event Approval(address indexed _owner, address indexed _spender, uint _value);
}
// ERC20Token
contract ERC20Token is ERC20, SafeMath {
mapping(address => uint256) balances;
mapping (address => mapping (address => uint256)) allowed;
uint256 public totalTokens;
function transfer(address _to, uint256 _value) returns (bool success) {
if (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;
} else {
return false;
}
}
function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
var _allowance = allowed[_from][msg.sender];
if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0) {
balances[_to] = safeAdd(balances[_to], _value);
balances[_from] = safeSub(balances[_from], _value);
allowed[_from][msg.sender] = safeSub(_allowance, _value);
Transfer(_from, _to, _value);
return true;
} else {
return false;
}
}
function totalSupply() constant returns (uint256) {
return totalTokens;
}
function balanceOf(address _owner) constant returns (uint256 balance) {
return balances[_owner];
}
function approve(address _spender, uint256 _value) returns (bool success) {
require((_value == 0) || (allowed[msg.sender][_spender] == 0));
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
return allowed[_owner][_spender];
}
}
contract Wolk is ERC20Token, Owned {
// TOKEN INFO
string public constant name = "Wolk Protocol Token";
string public constant symbol = "WOLK";
uint256 public constant decimals = 18;
// RESERVE
uint256 public reserveBalance = 0;
uint8 public constant percentageETHReserve = 15;
// CONTRACT OWNER
address public multisigWallet;
// WOLK SETTLERS
mapping (address => bool) settlers;
modifier onlySettler { assert(settlers[msg.sender] == true); _; }
// TOKEN GENERATION CONTROL
address public wolkSale;
bool public allSaleCompleted = false;
bool public openSaleCompleted = false;
modifier isTransferable { require(allSaleCompleted); _; }
modifier onlyWolk { assert(msg.sender == wolkSale); _; }
// TOKEN GENERATION EVENTLOG
event WolkCreated(address indexed _to, uint256 _tokenCreated);
event WolkDestroyed(address indexed _from, uint256 _tokenDestroyed);
event LogRefund(address indexed _to, uint256 _value);
}
contract WolkTGE is Wolk {
// TOKEN GENERATION EVENT
mapping (address => uint256) contribution;
mapping (address => uint256) presaleLimit;
mapping (address => bool) presaleContributor;
uint256 public constant tokenGenerationMin = 50 * 10**6 * 10**decimals;
uint256 public constant tokenGenerationMax = 150 * 10**6 * 10**decimals;
uint256 public presale_start_block;
uint256 public start_block;
uint256 public end_block;
// @param _presaleStartBlock
// @param _startBlock
// @param _endBlock
// @param _wolkWallet
// @param _wolkSale
// @return success
// @dev Wolk Genesis Event [only accessible by Contract Owner]
function wolkGenesis(uint256 _presaleStartBlock, uint256 _startBlock, uint256 _endBlock, address _wolkWallet, address _wolkSale) onlyOwner returns (bool success){
require((totalTokens < 1) && (block.number <= _startBlock) && (_endBlock > _startBlock) && (_startBlock > _presaleStartBlock));
presale_start_block = _presaleStartBlock;
start_block = _startBlock;
end_block = _endBlock;
multisigWallet = _wolkWallet;
wolkSale = _wolkSale;
settlers[msg.sender] = true;
return true;
}
// @param _presaleParticipants
// @return success
// @dev Adds addresses that are allowed to take part in presale [only accessible by current Contract Owner]
function addParticipant(address[] _presaleParticipants, uint256[] _contributionLimits) onlyOwner returns (bool success) {
require(_presaleParticipants.length == _contributionLimits.length);
for (uint cnt = 0; cnt < _presaleParticipants.length; cnt++){
presaleContributor[_presaleParticipants[cnt]] = true;
presaleLimit[_presaleParticipants[cnt]] = safeMul(_contributionLimits[cnt], 10**decimals);
}
return true;
}
// @param _presaleParticipants
// @return success
// @dev Revoke designated presale contributors [only accessible by current Contract Owner]
function removeParticipant(address[] _presaleParticipants) onlyOwner returns (bool success){
for (uint cnt = 0; cnt < _presaleParticipants.length; cnt++){
presaleContributor[_presaleParticipants[cnt]] = false;
presaleLimit[_presaleParticipants[cnt]] = 0;
}
return true;
}
// @param _participant
// @return remainingAllocation
// @dev return PresaleLimit allocated to given address
function participantBalance(address _participant) constant returns (uint256 remainingAllocation) {
return presaleLimit[_participant];
}
// @param _participant
// @dev use tokenGenerationEvent to handle Pre-sale and Open-sale
function tokenGenerationEvent(address _participant) payable external {
require( presaleContributor[_participant] && !openSaleCompleted && !allSaleCompleted && (block.number <= end_block) && msg.value > 0);
/* Early Participation Discount (rounded to the nearest integer)
---------------------------------
| Token Issued | Rate | Discount|
---------------------------------
| 0 - 50MM | 1177 | 15.0% |
| 50MM - 60MM | 1143 | 12.5% |
| 60MM - 70MM | 1111 | 10.0% |
| 70MM - 80MM | 1081 | 7.5% |
| 80MM - 90MM | 1053 | 5.0% |
| 90MM - 100MM | 1026 | 2.5% |
| 100MM+ | 1000 | 0.0% |
---------------------------------
*/
uint256 rate = 1000; // Default Rate
if ( totalTokens < (50 * 10**6 * 10**decimals) ) {
rate = 1177;
} else if ( totalTokens < (60 * 10**6 * 10**decimals) ) {
rate = 1143;
} else if ( totalTokens < (70 * 10**6 * 10**decimals) ) {
rate = 1111;
} else if ( totalTokens < (80 * 10**6 * 10**decimals) ) {
rate = 1081;
} else if ( totalTokens < (90 * 10**6 * 10**decimals) ) {
rate = 1053;
} else if ( totalTokens < (100 * 10**6 * 10**decimals) ) {
rate = 1026;
}else{
rate = 1000;
}
if ((block.number < start_block) && (block.number >= presale_start_block)) {
require(presaleLimit[_participant] >= msg.value);
presaleLimit[_participant] = safeSub(presaleLimit[_participant], msg.value);
} else {
require(block.number >= start_block) ;
}
uint256 tokens = safeMul(msg.value, rate);
uint256 checkedSupply = safeAdd(totalTokens, tokens);
require(checkedSupply <= tokenGenerationMax);
totalTokens = checkedSupply;
Transfer(address(this), _participant, tokens);
balances[_participant] = safeAdd(balances[_participant], tokens);
contribution[_participant] = safeAdd(contribution[_participant], msg.value);
WolkCreated(_participant, tokens); // logs token creation
}
// @dev If Token Generation Minimum is Not Met, TGE Participants can call this func and request for refund
function refund() external {
require((contribution[msg.sender] > 0) && (!allSaleCompleted) && (totalTokens < tokenGenerationMin) && (block.number > end_block));
uint256 tokenBalance = balances[msg.sender];
uint256 refundBalance = contribution[msg.sender];
balances[msg.sender] = 0;
contribution[msg.sender] = 0;
totalTokens = safeSub(totalTokens, tokenBalance);
WolkDestroyed(msg.sender, tokenBalance);
LogRefund(msg.sender, refundBalance);
msg.sender.transfer(refundBalance);
}
// @dev Finalizing the Open-Sale for Token Generation Event. 15% of Eth will be kept in contract to provide liquidity
function finalizeOpenSale() onlyOwner {
require((!openSaleCompleted) && (totalTokens >= tokenGenerationMin));
openSaleCompleted = true;
end_block = block.number;
reserveBalance = safeDiv(safeMul(totalTokens, percentageETHReserve), 100000);
var withdrawalBalance = safeSub(this.balance, reserveBalance);
msg.sender.transfer(withdrawalBalance);
}
// @dev Finalizing the Private-Sale. Entire Eth will be kept in contract to provide liquidity. This func will conclude the entire sale.
function finalize() onlyWolk payable external {
require((openSaleCompleted) && (!allSaleCompleted));
uint256 privateSaleTokens = safeDiv(safeMul(msg.value, 100000), percentageETHReserve);
uint256 checkedSupply = safeAdd(totalTokens, privateSaleTokens);
totalTokens = checkedSupply;
reserveBalance = safeAdd(reserveBalance, msg.value);
Transfer(address(this), wolkSale, privateSaleTokens);
balances[wolkSale] = safeAdd(balances[wolkSale], privateSaleTokens);
WolkCreated(wolkSale, privateSaleTokens); // logs token creation for Presale events
allSaleCompleted = true;
}
}
contract IBurnFormula {
function calculateWolkToBurn(uint256 _value) public constant returns (uint256);
}
contract IFeeFormula {
function calculateProviderFee(uint256 _value) public constant returns (uint256);
}
contract WolkProtocol is Wolk {
// WOLK NETWORK PROTOCOL
address public burnFormula;
bool public settlementIsRunning = true;
uint256 public burnBasisPoints = 500; // Burn rate (in BP) when Service Provider withdraws from data buyers' accounts
mapping (address => mapping (address => bool)) authorized; // holds which accounts have approved which Service Providers
mapping (address => uint256) feeBasisPoints; // Fee (in BP) earned by Service Provider when depositing to data seller
mapping (address => address) feeFormulas; // Provider's customizable Fee mormula
modifier isSettleable { require(settlementIsRunning); _; }
// WOLK PROTOCOL Events:
event AuthorizeServiceProvider(address indexed _owner, address _serviceProvider);
event DeauthorizeServiceProvider(address indexed _owner, address _serviceProvider);
event SetServiceProviderFee(address indexed _serviceProvider, uint256 _feeBasisPoints);
event BurnTokens(address indexed _from, address indexed _serviceProvider, uint256 _value);
// @param _burnBasisPoints
// @return success
// @dev Set BurnRate on Wolk Protocol -- only Wolk can set this, affects Service Provider settleBuyer
function setBurnRate(uint256 _burnBasisPoints) onlyOwner returns (bool success) {
require((_burnBasisPoints > 0) && (_burnBasisPoints <= 1000));
burnBasisPoints = _burnBasisPoints;
return true;
}
// @param _newBurnFormula
// @return success
// @dev Set the formula to use for burning -- only Wolk can set this
function setBurnFormula(address _newBurnFormula) onlyOwner returns (bool success){
uint256 testBurning = estWolkToBurn(_newBurnFormula, 10 ** 18);
require(testBurning > (5 * 10 ** 13));
burnFormula = _newBurnFormula;
return true;
}
// @param _newFeeFormula
// @return success
// @dev Set the formula to use for settlement -- settler can customize its fee
function setFeeFormula(address _newFeeFormula) onlySettler returns (bool success){
uint256 testSettling = estProviderFee(_newFeeFormula, 10 ** 18);
require(testSettling > (5 * 10 ** 13));
feeFormulas[msg.sender] = _newFeeFormula;
return true;
}
// @param _isRunning
// @return success
// @dev upating settlement status -- only Wolk can set this
function updateSettlementStatus(bool _isRunning) onlyOwner returns (bool success){
settlementIsRunning = _isRunning;
return true;
}
// @param _serviceProvider
// @param _feeBasisPoints
// @return success
// @dev Set Service Provider fee -- only Contract Owner can do this, affects Service Provider settleSeller
function setServiceFee(address _serviceProvider, uint256 _feeBasisPoints) onlyOwner returns (bool success) {
if (_feeBasisPoints <= 0 || _feeBasisPoints > 4000){
// revoke Settler privilege
settlers[_serviceProvider] = false;
feeBasisPoints[_serviceProvider] = 0;
return false;
}else{
feeBasisPoints[_serviceProvider] = _feeBasisPoints;
settlers[_serviceProvider] = true;
SetServiceProviderFee(_serviceProvider, _feeBasisPoints);
return true;
}
}
// @param _serviceProvider
// @return _feeBasisPoints
// @dev Check service Fee (in BP) for a given provider
function checkServiceFee(address _serviceProvider) constant returns (uint256 _feeBasisPoints) {
return feeBasisPoints[_serviceProvider];
}
// @param _serviceProvider
// @return _formulaAddress
// @dev Returns the contract address of the Service Provider's fee formula
function checkFeeSchedule(address _serviceProvider) constant returns (address _formulaAddress) {
return feeFormulas[_serviceProvider];
}
// @param _value
// @return wolkBurnt
// @dev Returns estimate of Wolk to burn
function estWolkToBurn(address _burnFormula, uint256 _value) constant internal returns (uint256){
if(_burnFormula != 0x0){
uint256 wolkBurnt = IBurnFormula(_burnFormula).calculateWolkToBurn(_value);
return wolkBurnt;
}else{
return 0;
}
}
// @param _value
// @param _serviceProvider
// @return estFee
// @dev Returns estimate of Service Provider's fee
function estProviderFee(address _serviceProvider, uint256 _value) constant internal returns (uint256){
address ProviderFeeFormula = feeFormulas[_serviceProvider];
if (ProviderFeeFormula != 0x0){
uint256 estFee = IFeeFormula(ProviderFeeFormula).calculateProviderFee(_value);
return estFee;
}else{
return 0;
}
}
// @param _buyer
// @param _value
// @return success
// @dev Service Provider Settlement with Buyer: a small percent is burnt (set in setBurnRate, stored in burnBasisPoints) when funds are transferred from buyer to Service Provider [only accessible by settlers]
function settleBuyer(address _buyer, uint256 _value) onlySettler isSettleable returns (bool success) {
require((burnBasisPoints > 0) && (burnBasisPoints <= 1000) && authorized[_buyer][msg.sender]); // Buyer must authorize Service Provider
require(balances[_buyer] >= _value && _value > 0);
var WolkToBurn = estWolkToBurn(burnFormula, _value);
var burnCap = safeDiv(safeMul(_value, burnBasisPoints), 10000); //can not burn more than this
// If burn formula not found, use default burn rate. If Est to burn exceeds BurnCap, cut back to the cap
if (WolkToBurn < 1) WolkToBurn = burnCap;
if (WolkToBurn > burnCap) WolkToBurn = burnCap;
var transferredToServiceProvider = safeSub(_value, WolkToBurn);
balances[_buyer] = safeSub(balances[_buyer], _value);
balances[msg.sender] = safeAdd(balances[msg.sender], transferredToServiceProvider);
totalTokens = safeSub(totalTokens, WolkToBurn);
Transfer(_buyer, msg.sender, transferredToServiceProvider);
Transfer(_buyer, 0x00000000000000000000, WolkToBurn);
BurnTokens(_buyer, msg.sender, WolkToBurn);
return true;
}
// @param _seller
// @param _value
// @return success
// @dev Service Provider Settlement with Seller: a small percent is kept by Service Provider (set in setServiceFee, stored in feeBasisPoints) when funds are transferred from Service Provider to seller [only accessible by settlers]
function settleSeller(address _seller, uint256 _value) onlySettler isSettleable returns (bool success) {
// Service Providers have a % max fee (e.g. 20%)
var serviceProviderBP = feeBasisPoints[msg.sender];
require((serviceProviderBP > 0) && (serviceProviderBP <= 4000) && (_value > 0));
var seviceFee = estProviderFee(msg.sender, _value);
var Maximumfee = safeDiv(safeMul(_value, serviceProviderBP), 10000);
// If provider's fee formula not set, use default burn rate. If Est fee exceeds Maximumfee, cut back to the fee
if (seviceFee < 1) seviceFee = Maximumfee;
if (seviceFee > Maximumfee) seviceFee = Maximumfee;
var transferredToSeller = safeSub(_value, seviceFee);
require(balances[msg.sender] >= transferredToSeller );
balances[_seller] = safeAdd(balances[_seller], transferredToSeller);
Transfer(msg.sender, _seller, transferredToSeller);
return true;
}
// @param _providerToAdd
// @return success
// @dev Buyer authorizes the Service Provider (to call settleBuyer). For security reason, _providerToAdd needs to be whitelisted by Wolk Inc first
function authorizeProvider(address _providerToAdd) returns (bool success) {
require(settlers[_providerToAdd]);
authorized[msg.sender][_providerToAdd] = true;
AuthorizeServiceProvider(msg.sender, _providerToAdd);
return true;
}
// @param _providerToRemove
// @return success
// @dev Buyer deauthorizes the Service Provider (from calling settleBuyer)
function deauthorizeProvider(address _providerToRemove) returns (bool success) {
authorized[msg.sender][_providerToRemove] = false;
DeauthorizeServiceProvider(msg.sender, _providerToRemove);
return true;
}
// @param _owner
// @param _serviceProvider
// @return authorizationStatus
// @dev Check authorization between account and Service Provider
function checkAuthorization(address _owner, address _serviceProvider) constant returns (bool authorizationStatus) {
return authorized[_owner][_serviceProvider];
}
// @param _owner
// @param _providerToAdd
// @return authorizationStatus
// @dev Grant authorization between account and Service Provider on buyers' behalf [only accessible by Contract Owner]
// @note Explicit permission from balance owner MUST be obtained beforehand
function grantService(address _owner, address _providerToAdd) onlyOwner returns (bool authorizationStatus) {
var isPreauthorized = authorized[_owner][msg.sender];
if (isPreauthorized && settlers[_providerToAdd]) {
authorized[_owner][_providerToAdd] = true;
AuthorizeServiceProvider(msg.sender, _providerToAdd);
return true;
}else{
return false;
}
}
// @param _owner
// @param _providerToRemove
// @return authorization_status
// @dev Revoke authorization between account and Service Provider on buyers' behalf [only accessible by Contract Owner]
// @note Explicit permission from balance owner are NOT required for disabling ill-intent Service Provider
function removeService(address _owner, address _providerToRemove) onlyOwner returns (bool authorizationStatus) {
authorized[_owner][_providerToRemove] = false;
DeauthorizeServiceProvider(_owner, _providerToRemove);
return true;
}
}
// Taken from https://github.com/bancorprotocol/contracts/blob/master/solidity/contracts/BancorFormula.sol
contract IBancorFormula {
function calculatePurchaseReturn(uint256 _supply, uint256 _reserveBalance, uint8 _reserveRatio, uint256 _depositAmount) public constant returns (uint256);
function calculateSaleReturn(uint256 _supply, uint256 _reserveBalance, uint8 _reserveRatio, uint256 _sellAmount) public constant returns (uint256);
}
contract WolkExchange is WolkProtocol, WolkTGE {
uint256 public maxPerExchangeBP = 50;
address public exchangeFormula;
bool public exchangeIsRunning = false;
modifier isExchangable { require(exchangeIsRunning && allSaleCompleted); _; }
// @param _newExchangeformula
// @return success
// @dev Set the bancor formula to use -- only Wolk Inc can set this
function setExchangeFormula(address _newExchangeformula) onlyOwner returns (bool success){
require(sellWolkEstimate(10**decimals, _newExchangeformula) > 0);
require(purchaseWolkEstimate(10**decimals, _newExchangeformula) > 0);
exchangeIsRunning = false;
exchangeFormula = _newExchangeformula;
return true;
}
// @param _isRunning
// @return success
// @dev upating exchange status -- only Wolk Inc can set this
function updateExchangeStatus(bool _isRunning) onlyOwner returns (bool success){
if (_isRunning){
require(sellWolkEstimate(10**decimals, exchangeFormula) > 0);
require(purchaseWolkEstimate(10**decimals, exchangeFormula) > 0);
}
exchangeIsRunning = _isRunning;
return true;
}
// @param _maxPerExchange
// @return success
// @dev Set max sell token amount per transaction -- only Wolk Inc can set this
function setMaxPerExchange(uint256 _maxPerExchange) onlyOwner returns (bool success) {
require((_maxPerExchange >= 10) && (_maxPerExchange <= 100));
maxPerExchangeBP = _maxPerExchange;
return true;
}
// @return Estimated Liquidation Cap
// @dev Liquidation Cap per transaction is used to ensure proper price discovery for Wolk Exchange
function estLiquidationCap() public constant returns (uint256) {
if (openSaleCompleted){
var liquidationMax = safeDiv(safeMul(totalTokens, maxPerExchangeBP), 10000);
if (liquidationMax < 100 * 10**decimals){
liquidationMax = 100 * 10**decimals;
}
return liquidationMax;
}else{
return 0;
}
}
function sellWolkEstimate(uint256 _wolkAmountest, address _formula) internal returns(uint256) {
uint256 ethReceivable = IBancorFormula(_formula).calculateSaleReturn(totalTokens, reserveBalance, percentageETHReserve, _wolkAmountest);
return ethReceivable;
}
function purchaseWolkEstimate(uint256 _ethAmountest, address _formula) internal returns(uint256) {
uint256 wolkReceivable = IBancorFormula(_formula).calculatePurchaseReturn(totalTokens, reserveBalance, percentageETHReserve, _ethAmountest);
return wolkReceivable;
}
// @param _wolkAmount
// @return ethReceivable
// @dev send Wolk into contract in exchange for eth, at an exchange rate based on the Bancor Protocol derivation and decrease totalSupply accordingly
function sellWolk(uint256 _wolkAmount) isExchangable() returns(uint256) {
uint256 sellCap = estLiquidationCap();
require((balances[msg.sender] >= _wolkAmount));
require(sellCap >= _wolkAmount);
uint256 ethReceivable = sellWolkEstimate(_wolkAmount,exchangeFormula);
require(this.balance > ethReceivable);
balances[msg.sender] = safeSub(balances[msg.sender], _wolkAmount);
totalTokens = safeSub(totalTokens, _wolkAmount);
reserveBalance = safeSub(this.balance, ethReceivable);
WolkDestroyed(msg.sender, _wolkAmount);
Transfer(msg.sender, 0x00000000000000000000, _wolkAmount);
msg.sender.transfer(ethReceivable);
return ethReceivable;
}
// @return wolkReceivable
// @dev send eth into contract in exchange for Wolk tokens, at an exchange rate based on the Bancor Protocol derivation and increase totalSupply accordingly
function purchaseWolk(address _buyer) isExchangable() payable returns(uint256){
require(msg.value > 0);
uint256 wolkReceivable = purchaseWolkEstimate(msg.value, exchangeFormula);
require(wolkReceivable > 0);
totalTokens = safeAdd(totalTokens, wolkReceivable);
balances[_buyer] = safeAdd(balances[_buyer], wolkReceivable);
reserveBalance = safeAdd(reserveBalance, msg.value);
WolkCreated(_buyer, wolkReceivable);
Transfer(address(this),_buyer,wolkReceivable);
return wolkReceivable;
}
// @dev fallback function for purchase
// @note Automatically fallback to tokenGenerationEvent before sale is completed. After the token generation event, fallback to purchaseWolk. Liquidity exchange will be enabled through updateExchangeStatus
function () payable {
require(msg.value > 0);
if(!openSaleCompleted){
this.tokenGenerationEvent.value(msg.value)(msg.sender);
}else if (block.number >= end_block){
this.purchaseWolk.value(msg.value)(msg.sender);
}else{
revert();
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_wolkAmount","type":"uint256"}],"name":"sellWolk","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_presaleParticipants","type":"address[]"},{"name":"_contributionLimits","type":"uint256[]"}],"name":"addParticipant","outputs":[{"name":"success","type":"bool"}],"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":false,"inputs":[{"name":"_providerToAdd","type":"address"}],"name":"authorizeProvider","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":"_burnBasisPoints","type":"uint256"}],"name":"setBurnRate","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newExchangeformula","type":"address"}],"name":"setExchangeFormula","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchangeFormula","outputs":[{"name":"","type":"address"}],"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":"exchangeIsRunning","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_isRunning","type":"bool"}],"name":"updateExchangeStatus","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_buyer","type":"address"}],"name":"purchaseWolk","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"finalizeOpenSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"}],"name":"settleBuyer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"end_block","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_seller","type":"address"},{"name":"_value","type":"uint256"}],"name":"settleSeller","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenGenerationMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_providerToRemove","type":"address"}],"name":"deauthorizeProvider","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_serviceProvider","type":"address"}],"name":"checkAuthorization","outputs":[{"name":"authorizationStatus","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_serviceProvider","type":"address"}],"name":"checkServiceFee","outputs":[{"name":"_feeBasisPoints","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxPerExchangeBP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_providerToAdd","type":"address"}],"name":"grantService","outputs":[{"name":"authorizationStatus","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burnFormula","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_participant","type":"address"}],"name":"participantBalance","outputs":[{"name":"remainingAllocation","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"percentageETHReserve","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_providerToRemove","type":"address"}],"name":"removeService","outputs":[{"name":"authorizationStatus","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"multisigWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"estLiquidationCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burnBasisPoints","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reserveBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"_maxPerExchange","type":"uint256"}],"name":"setMaxPerExchange","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_presaleStartBlock","type":"uint256"},{"name":"_startBlock","type":"uint256"},{"name":"_endBlock","type":"uint256"},{"name":"_wolkWallet","type":"address"},{"name":"_wolkSale","type":"address"}],"name":"wolkGenesis","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"settlementIsRunning","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenGenerationMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"start_block","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openSaleCompleted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_isRunning","type":"bool"}],"name":"updateSettlementStatus","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"presale_start_block","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"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":true,"inputs":[],"name":"allSaleCompleted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_presaleParticipants","type":"address[]"}],"name":"removeParticipant","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_serviceProvider","type":"address"},{"name":"_feeBasisPoints","type":"uint256"}],"name":"setServiceFee","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wolkSale","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newBurnFormula","type":"address"}],"name":"setBurnFormula","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newFeeFormula","type":"address"}],"name":"setFeeFormula","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_participant","type":"address"}],"name":"tokenGenerationEvent","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_serviceProvider","type":"address"}],"name":"checkFeeSchedule","outputs":[{"name":"_formulaAddress","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_serviceProvider","type":"address"}],"name":"AuthorizeServiceProvider","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_serviceProvider","type":"address"}],"name":"DeauthorizeServiceProvider","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_serviceProvider","type":"address"},{"indexed":false,"name":"_feeBasisPoints","type":"uint256"}],"name":"SetServiceProviderFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_serviceProvider","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"BurnTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenCreated","type":"uint256"}],"name":"WolkCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_tokenDestroyed","type":"uint256"}],"name":"WolkDestroyed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"LogRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_prevOwner","type":"address"},{"indexed":false,"name":"_newOwner","type":"address"}],"name":"OwnerUpdate","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
606060405260006005556008805460a060020a61ffff02191690556009805460a060020a60ff021990811674010000000000000000000000000000000000000000179091556101f4600a5560326014556015805490911690555b60038054600160a060020a03191633600160a060020a03161790555b5b612f69806100856000396000f300606060405236156102a25763ffffffff60e060020a600035041662310e1681146103b657806306fdde03146103de578063079ee6b314610469578063095ea7b31461050c578063112ea2621461054257806318160ddd14610575578063189d165e1461059a57806323b872dd146105c45780632659d8ef146106005780632f7a407b14610633578063313ce5671461066257806332c6f315146106875780633bee0613146106ae5780633d8c9b8c146106da578063421521b1146107005780634bb278f31461071557806354b8dfcb1461071f578063590e1ae3146107555780635e0b12591461076a57806364da8ad31461078f5780636712e0be146107c5578063673b57e9146107ea578063685c234a1461081d5780636c9c1d411461085657806370a0823114610887578063714d497a146108b8578063726df9cc146108dd57806379ba5097146109165780637e1c0c091461092b578063823ba0b814610950578063826c69b81461097f578063847dc0a7146109b05780638da5cb5b146109d95780638ea8e14914610a085780639075becf14610a4157806395d89b4114610a7057806399dd1ed914610afb5780639a436c9b14610b20578063a10954fe14610b45578063a9059cbb14610b6a578063acac0b9f14610ba0578063ad7e01c814610bca578063b1a9bd7714610c0c578063b57e6ea114610c33578063b87fb3db14610c58578063bcbfe43c14610c7d578063c5b1505714610ca4578063cba9c0e014610cd0578063d4ee1d9014610cf5578063dd62ed3e14610d24578063de17910814610d5b578063e814c94114610d82578063ef2fa16914610de5578063f2e1192a14610e1b578063f2fde38b14610e4a578063f7dadf7d14610e6b578063f7fca4f414610e9e578063fa6b129d14610ed1578063ff0935b114610ee7575b5b600034116102b057600080fd5b60085460a860020a900460ff16151561032b5730600160a060020a031663fa6b129d343360405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b151561031157600080fd5b6125ee5a03f1151561032257600080fd5b505050506103b2565b60135443106103ad5730600160a060020a0316633d8c9b8c343360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016020604051808303818588803b151561038b57600080fd5b6125ee5a03f1151561039c57600080fd5b5050505060405180519050506103b2565b600080fd5b5b5b005b34156103c157600080fd5b6103cc600435610f22565b60405190815260200160405180910390f35b34156103e957600080fd5b6103f16110cf565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561042e5780820151818401525b602001610415565b50505050905090810190601f16801561045b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047457600080fd5b6104f860046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061110695505050505050565b604051901515815260200160405180910390f35b341561051757600080fd5b6104f8600160a060020a03600435166024356111f3565b604051901515815260200160405180910390f35b341561054d57600080fd5b6104f8600160a060020a036004351661129a565b604051901515815260200160405180910390f35b341561058057600080fd5b6103cc61133a565b60405190815260200160405180910390f35b34156105a557600080fd5b6104f8600435611341565b604051901515815260200160405180910390f35b34156105cf57600080fd5b6104f8600160a060020a0360043581169060243516604435611388565b604051901515815260200160405180910390f35b341561060b57600080fd5b6104f8600160a060020a03600435166114e0565b604051901515815260200160405180910390f35b341561063e57600080fd5b61064661156a565b604051600160a060020a03909116815260200160405180910390f35b341561066d57600080fd5b6103cc611579565b60405190815260200160405180910390f35b341561069257600080fd5b6104f861157e565b604051901515815260200160405180910390f35b34156106b957600080fd5b6104f8600435151561158e565b604051901515815260200160405180910390f35b6103cc600160a060020a036004351661163a565b60405190815260200160405180910390f35b341561070b57600080fd5b6103b2611777565b005b6103b261185b565b005b341561072a57600080fd5b6104f8600160a060020a03600435166024356119be565b604051901515815260200160405180910390f35b341561076057600080fd5b6103b2611c10565b005b341561077557600080fd5b6103cc611d67565b60405190815260200160405180910390f35b341561079a57600080fd5b6104f8600160a060020a0360043516602435611d6d565b604051901515815260200160405180910390f35b34156107d057600080fd5b6103cc611ef6565b60405190815260200160405180910390f35b34156107f557600080fd5b6104f8600160a060020a0360043516611f05565b604051901515815260200160405180910390f35b341561082857600080fd5b6104f8600160a060020a0360043581169060243516611f7b565b604051901515815260200160405180910390f35b341561086157600080fd5b6103cc600160a060020a0360043516611fab565b60405190815260200160405180910390f35b341561089257600080fd5b6103cc600160a060020a0360043516611fca565b60405190815260200160405180910390f35b34156108c357600080fd5b6103cc611fe9565b60405190815260200160405180910390f35b34156108e857600080fd5b6104f8600160a060020a0360043581169060243516611fef565b604051901515815260200160405180910390f35b341561092157600080fd5b6103b26120f1565b005b341561093657600080fd5b6103cc612199565b60405190815260200160405180910390f35b341561095b57600080fd5b61064661219f565b604051600160a060020a03909116815260200160405180910390f35b341561098a57600080fd5b6103cc600160a060020a03600435166121ae565b60405190815260200160405180910390f35b34156109bb57600080fd5b6109c36121cd565b60405160ff909116815260200160405180910390f35b34156109e457600080fd5b6106466121d2565b604051600160a060020a03909116815260200160405180910390f35b3415610a1357600080fd5b6104f8600160a060020a03600435811690602435166121e1565b604051901515815260200160405180910390f35b3415610a4c57600080fd5b610646612274565b604051600160a060020a03909116815260200160405180910390f35b3415610a7b57600080fd5b6103f1612283565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561042e5780820151818401525b602001610415565b50505050905090810190601f16801561045b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610b0657600080fd5b6103cc6122ba565b60405190815260200160405180910390f35b3415610b2b57600080fd5b6103cc61231b565b60405190815260200160405180910390f35b3415610b5057600080fd5b6103cc612321565b60405190815260200160405180910390f35b3415610b7557600080fd5b6104f8600160a060020a0360043516602435612327565b604051901515815260200160405180910390f35b3415610bab57600080fd5b6104f860043561241b565b604051901515815260200160405180910390f35b3415610bd557600080fd5b6104f8600435602435604435600160a060020a0360643581169060843516612462565b604051901515815260200160405180910390f35b3415610c1757600080fd5b6104f8612524565b604051901515815260200160405180910390f35b3415610c3e57600080fd5b6103cc612534565b60405190815260200160405180910390f35b3415610c6357600080fd5b6103cc612543565b60405190815260200160405180910390f35b3415610c8857600080fd5b6104f8612549565b604051901515815260200160405180910390f35b3415610caf57600080fd5b6104f86004351515612559565b604051901515815260200160405180910390f35b3415610cdb57600080fd5b6103cc6125a6565b60405190815260200160405180910390f35b3415610d0057600080fd5b6106466125ac565b604051600160a060020a03909116815260200160405180910390f35b3415610d2f57600080fd5b6103cc600160a060020a03600435811690602435166125bb565b60405190815260200160405180910390f35b3415610d6657600080fd5b6104f86125e8565b604051901515815260200160405180910390f35b3415610d8d57600080fd5b6104f860046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506125f895505050505050565b604051901515815260200160405180910390f35b3415610df057600080fd5b6104f8600160a060020a03600435166024356126b1565b604051901515815260200160405180910390f35b3415610e2657600080fd5b61064661278a565b604051600160a060020a03909116815260200160405180910390f35b3415610e5557600080fd5b6103b2600160a060020a0360043516612799565b005b3415610e7657600080fd5b6104f8600160a060020a03600435166127f9565b604051901515815260200160405180910390f35b3415610ea957600080fd5b6104f8600160a060020a0360043516612870565b604051901515815260200160405180910390f35b6103b2600160a060020a0360043516612907565b005b3415610ef257600080fd5b610646600160a060020a0360043516612be6565b604051600160a060020a03909116815260200160405180910390f35b6000806000601560149054906101000a900460ff168015610f4c575060085460a060020a900460ff165b1515610f5757600080fd5b610f5f6122ba565b600160a060020a03331660009081526020819052604090205490925084901015610f8857600080fd5b83821015610f9557600080fd5b601554610fac908590600160a060020a0316612c07565b9050600160a060020a03301631819011610fc557600080fd5b600160a060020a033316600090815260208190526040902054610fe89085612c9d565b600160a060020a03331660009081526020819052604090205560025461100e9085612c9d565b600255611025600160a060020a0330163182612c9d565b600555600160a060020a0333167ff505eb6e610340eed3eea0048f8ec258cda0927f73be2d293288fde9a546f1ab8560405190815260200160405180910390a2600033600160a060020a0316600080516020612f1e8339815191528660405190815260200160405180910390a3600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156110c357600080fd5b8092505b5b5050919050565b60408051908101604052601381527f576f6c6b2050726f746f636f6c20546f6b656e00000000000000000000000000602082015281565b600354600090819033600160a060020a0390811691161461112357fe5b825184511461113157600080fd5b5060005b83518110156111e65760016010600086848151811061115057fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff19169115159190911790556111a983828151811061119157fe5b90602001906020020151670de0b6b3a7640000612cb4565b600f60008684815181106111b957fe5b90602001906020020151600160a060020a031681526020810191909152604001600020555b600101611135565b600191505b5b5092915050565b60008115806112255750600160a060020a03338116600090815260016020908152604080832093871683529290522054155b151561123057600080fd5b600160a060020a03338116600081815260016020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600160a060020a03811660009081526007602052604081205460ff1615156112c157600080fd5b600160a060020a033381166000818152600b602090815260408083209487168352939052829020805460ff19166001179055907f8563cf3307d6904af4525af51010bc07d34ec3154f552d9e00f64ed395dc047090849051600160a060020a03909116815260200160405180910390a25060015b919050565b6002545b90565b60035460009033600160a060020a0390811691161461135c57fe5b60008211801561136e57506103e88211155b151561137957600080fd5b50600a81905560015b5b919050565b600160a060020a03808416600081815260016020908152604080832033909516835293815283822054928252819052918220548390108015906113f25750600160a060020a0380861660009081526001602090815260408083203390941683529290522054839010155b80156113fe5750600083115b156114d257600160a060020a0384166000908152602081905260409020546114269084612ce3565b600160a060020a0380861660009081526020819052604080822093909355908716815220546114559084612c9d565b600160a060020a0386166000908152602081905260409020556114788184612c9d565b600160a060020a0380871660008181526001602090815260408083203386168452909152908190209390935590861691600080516020612f1e8339815191529086905190815260200160405180910390a3600191506114d7565b600091505b5b509392505050565b60035460009033600160a060020a039081169116146114fb57fe5b600061150f670de0b6b3a764000084612c07565b1161151957600080fd5b600061152d670de0b6b3a764000084612d0b565b1161153757600080fd5b506015805474ffffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831617905560015b5b919050565b601554600160a060020a031681565b601281565b60155460a060020a900460ff1681565b60035460009033600160a060020a039081169116146115a957fe5b8115611607576015546000906115d190670de0b6b3a764000090600160a060020a0316612c07565b116115db57600080fd5b6015546000906115fd90670de0b6b3a764000090600160a060020a0316612d0b565b1161160757600080fd5b5b506015805474ff0000000000000000000000000000000000000000191660a060020a8315150217905560015b5b919050565b601554600090819060a060020a900460ff168015611661575060085460a060020a900460ff165b151561166c57600080fd5b6000341161167957600080fd5b601554611690903490600160a060020a0316612d0b565b90506000811161169f57600080fd5b6116ab60025482612ce3565b600255600160a060020a0383166000908152602081905260409020546116d19082612ce3565b600160a060020a0384166000908152602081905260409020556005546116f79034612ce3565b600555600160a060020a0383167f7ff6ea1c893a974b2f363e8f8e474a1b52958080d1fffe0d085c286de30035d28260405190815260200160405180910390a282600160a060020a031630600160a060020a0316600080516020612f1e8339815191528360405190815260200160405180910390a38091505b5b50919050565b60035460009033600160a060020a0390811691161461179257fe5b60085460a860020a900460ff161580156117ba57506002546a295be96e640669720000009010155b15156117c557600080fd5b6008805475ff000000000000000000000000000000000000000000191660a860020a179055436013556002546118099061180090600f612cb4565b620186a0612da1565b600581905561182390600160a060020a0330163190612c9d565b9050600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561185657600080fd5b5b5b50565b600854600090819033600160a060020a0390811691161461187857fe5b60085460a860020a900460ff16801561189b575060085460a060020a900460ff16155b15156118a657600080fd5b6118bd6118b634620186a0612cb4565b600f612da1565b91506118cb60025483612ce3565b9050806002819055506118e060055434612ce3565b600555600854600160a060020a03908116903016600080516020612f1e8339815191528460405190815260200160405180910390a3600854600160a060020a031660009081526020819052604090205461193a9083612ce3565b60088054600160a060020a039081166000908152602081905260409081902093909355905416907f7ff6ea1c893a974b2f363e8f8e474a1b52958080d1fffe0d085c286de30035d29084905190815260200160405180910390a26008805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b5050565b600160a060020a03331660009081526007602052604081205481908190819060ff1615156001146119eb57fe5b60095460a060020a900460ff161515611a0357600080fd5b6000600a54118015611a1957506103e8600a5411155b8015611a4b5750600160a060020a038087166000908152600b60209081526040808320339094168352929052205460ff165b1515611a5657600080fd5b600160a060020a038616600090815260208190526040902054859010801590611a7f5750600085115b1515611a8a57600080fd5b600954611aa090600160a060020a031686612de0565b9250611ab9611ab186600a54612cb4565b612710612da1565b91506001831015611ac8578192505b81831115611ad4578192505b611ade8584612c9d565b600160a060020a038716600090815260208190526040902054909150611b049086612c9d565b600160a060020a03808816600090815260208190526040808220939093553390911681522054611b349082612ce3565b600160a060020a033316600090815260208190526040902055600254611b5a9084612c9d565b600255600160a060020a03338116908716600080516020612f1e8339815191528360405190815260200160405180910390a3600086600160a060020a0316600080516020612f1e8339815191528560405190815260200160405180910390a333600160a060020a031686600160a060020a03167fa02fa7af120761e5cdeff8bc117c44fd425d0f51fd27155746f84421d87d18e68560405190815260200160405180910390a3600193505b5b5b50505092915050565b600160a060020a0333166000908152600e602052604081205481908190118015611c44575060085460a060020a900460ff16155b8015611c5d57506002546a295be96e6406697200000090105b8015611c6a575060135443115b1515611c7557600080fd5b505033600160a060020a03166000908152602081815260408083208054600e90935290832080549184905592909255600254909190611cb49083612c9d565b600255600160a060020a0333167ff505eb6e610340eed3eea0048f8ec258cda0927f73be2d293288fde9a546f1ab8360405190815260200160405180910390a233600160a060020a03167fb6c0eca8138e097d71e2dd31e19a1266487f0553f170b7260ffe68bcbe9ff8a78260405190815260200160405180910390a2600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156119b957600080fd5b5b5050565b60135481565b600160a060020a033316600090815260076020526040812054819081908190819060ff161515600114611d9c57fe5b60095460a060020a900460ff161515611db457600080fd5b600160a060020a0333166000908152600c6020526040812054945084118015611ddf5750610fa08411155b8015611deb5750600086115b1515611df657600080fd5b611e003387612e77565b9250611e17611ab18786612cb4565b612710612da1565b91506001831015611e26578192505b81831115611e32578192505b611e3c8684612c9d565b600160a060020a03331660009081526020819052604090205490915081901015611e6557600080fd5b600160a060020a038716600090815260208190526040902054611e889082612ce3565b60008089600160a060020a0316600160a060020a031681526020019081526020016000208190555086600160a060020a031633600160a060020a0316600080516020612f1e8339815191528360405190815260200160405180910390a3600194505b5b5b5050505092915050565b6a295be96e6406697200000081565b600160a060020a033381166000818152600b602090815260408083209486168352939052828120805460ff19169055917f79485d41c145ee4d7ebf84793ab927ebb3f929101dba7db48702ef527d02cf8390849051600160a060020a03909116815260200160405180910390a25060015b919050565b600160a060020a038083166000908152600b602090815260408083209385168352929052205460ff165b92915050565b600160a060020a0381166000908152600c60205260409020545b919050565b600160a060020a0381166000908152602081905260409020545b919050565b60145481565b600354600090819033600160a060020a0390811691161461200c57fe5b50600160a060020a038084166000908152600b60209081526040808320339094168352929052205460ff1680801561205c5750600160a060020a03831660009081526007602052604090205460ff165b156120df57600160a060020a038085166000908152600b60209081526040808320878516845290915290819020805460ff1916600117905533909116907f8563cf3307d6904af4525af51010bc07d34ec3154f552d9e00f64ed395dc047090859051600160a060020a03909116815260200160405180910390a2600191506111eb565b600091506111eb565b5b5b5092915050565b60045433600160a060020a0390811691161461210c57600080fd5b6003546004547f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a1600480546003805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a038416179091551690555b565b60025481565b600954600160a060020a031681565b600160a060020a0381166000908152600f60205260409020545b919050565b600f81565b600354600160a060020a031681565b60035460009033600160a060020a039081169116146121fc57fe5b600160a060020a038084166000818152600b602090815260408083209487168352939052829020805460ff19169055907f79485d41c145ee4d7ebf84793ab927ebb3f929101dba7db48702ef527d02cf8390849051600160a060020a03909116815260200160405180910390a25060015b5b92915050565b600654600160a060020a031681565b60408051908101604052600481527f574f4c4b00000000000000000000000000000000000000000000000000000000602082015281565b600854600090819060a860020a900460ff1615612311576122ea611ab1600254601454612cb4565b612710612da1565b905068056bc75e2d63100000811015612309575068056bc75e2d631000005b809150612316565b600091505b5b5090565b600a5481565b60055481565b600160a060020a0333166000908152602081905260408120548290108015906123505750600082115b1561240c57600160a060020a0333166000908152602081905260409020546123789083612c9d565b600160a060020a0333811660009081526020819052604080822093909355908516815220546123a79083612ce3565b60008085600160a060020a0316600160a060020a031681526020019081526020016000208190555082600160a060020a031633600160a060020a0316600080516020612f1e8339815191528460405190815260200160405180910390a3506001611294565b506000611294565b5b92915050565b60035460009033600160a060020a0390811691161461243657fe5b600a8210158015612448575060648211155b151561245357600080fd5b50601481905560015b5b919050565b60035460009033600160a060020a0390811691161461247d57fe5b600160025410801561248f5750844311155b801561249a57508484115b80156124a557508585115b15156124b057600080fd5b5060118590556012849055601383905560068054600160a060020a0380851673ffffffffffffffffffffffffffffffffffffffff199283161790925560088054848416921691909117905533166000908152600760205260409020805460ff191660019081179091555b5b95945050505050565b60095460a060020a900460ff1681565b6a7c13bc4b2c133c5600000081565b60125481565b60085460a860020a900460ff1681565b60035460009033600160a060020a0390811691161461257457fe5b506009805474ff0000000000000000000000000000000000000000191660a060020a8315150217905560015b5b919050565b60115481565b600454600160a060020a031681565b600160a060020a038083166000908152600160209081526040808320938516835292905220545b92915050565b60085460a060020a900460ff1681565b600354600090819033600160a060020a0390811691161461261557fe5b5060005b82518110156126a55760006010600085848151811061263457fe5b90602001906020020151600160a060020a0316815260208101919091526040016000908120805460ff191692151592909217909155600f8185848151811061267857fe5b90602001906020020151600160a060020a031681526020810191909152604001600020555b600101612619565b600191505b5b50919050565b60035460009033600160a060020a039081169116146126cc57fe5b6000821115806126dd5750610fa082115b156127155750600160a060020a0382166000908152600760209081526040808320805460ff19169055600c9091528120819055611294565b600160a060020a0383166000818152600c60209081526040808320869055600790915290819020805460ff191660011790557fe273f117e317b5f79c25ba280145c5a051fac58dc8482e8b2a14d04023521dcc9084905190815260200160405180910390a2506001611294565b5b5b92915050565b600854600160a060020a031681565b60035433600160a060020a039081169116146127b157fe5b600354600160a060020a03828116911614156127cc57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600354600090819033600160a060020a0390811691161461281657fe5b61282883670de0b6b3a7640000612de0565b9050652d79883d2000811161283c57600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038516179055600191505b5b50919050565b600160a060020a033316600090815260076020526040812054819060ff16151560011461289957fe5b6128ab83670de0b6b3a7640000612e77565b9050652d79883d200081116128bf57600080fd5b33600160a060020a039081166000908152600d60205260409020805473ffffffffffffffffffffffffffffffffffffffff1916918516919091179055600191505b5b50919050565b600160a060020a0381166000908152601060205260408120548190819060ff16801561293d575060085460a860020a900460ff16155b8015612953575060085460a060020a900460ff16155b801561296157506013544311155b801561296d5750600034115b151561297857600080fd5b6002546103e893506a295be96e6406697200000090101561299d576104999250612a43565b6002546a31a17e847807b1bc0000009010156129bd576104779250612a43565b6002546a39e7139a8c08fa060000009010156129dd576104579250612a43565b6002546a422ca8b0a00a42500000009010156129fd576104399250612a43565b6002546a4a723dc6b40b8a9a000000901015612a1d5761041d9250612a43565b6002546a52b7d2dcc80cd2e4000000901015612a3d576104029250612a43565b6103e892505b5b5b5b5b5b60125443108015612a5b57506011544310155b15612ac757600160a060020a0384166000908152600f602052604090205434901015612a8657600080fd5b600160a060020a0384166000908152600f6020526040902054612aa99034612c9d565b600160a060020a0385166000908152600f6020526040902055612ad6565b601254431015612ad657600080fd5b5b612ae13484612cb4565b9150612aef60025483612ce3565b90506a7c13bc4b2c133c56000000811115612b0957600080fd5b6002819055600160a060020a03808516903016600080516020612f1e8339815191528460405190815260200160405180910390a3600160a060020a038416600090815260208190526040902054612b609083612ce3565b600160a060020a03851660009081526020818152604080832093909355600e90522054612b8d9034612ce3565b600160a060020a0385166000818152600e60205260409081902092909255907f7ff6ea1c893a974b2f363e8f8e474a1b52958080d1fffe0d085c286de30035d29084905190815260200160405180910390a25b50505050565b600160a060020a038082166000908152600d6020526040902054165b919050565b60008082600160a060020a031663f7a4c45c600254600554600f8860006040516020015260405160e060020a63ffffffff87160281526004810194909452602484019290925260ff1660448301526064820152608401602060405180830381600087803b1515612c7657600080fd5b6102c65a03f11515612c8757600080fd5b50505060405180519250829150505b5092915050565b600082821115612ca957fe5b508082035b92915050565b6000828202831580612cd05750828482811515612ccd57fe5b04145b1515612cd857fe5b8091505b5092915050565b6000828201838110801590612cd05750828110155b1515612cd857fe5b8091505b5092915050565b60008082600160a060020a031663949dfa63600254600554600f8860006040516020015260405160e060020a63ffffffff87160281526004810194909452602484019290925260ff1660448301526064820152608401602060405180830381600087803b1515612c7657600080fd5b6102c65a03f11515612c8757600080fd5b50505060405180519250829150505b5092915050565b600080808311612dad57fe5b8284811515612db857fe5b0490508284811515612dc657fe5b068184020184141515612cd857fe5b8091505b5092915050565b600080600160a060020a038416156120df5783600160a060020a031663926f949e8460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612e4157600080fd5b6102c65a03f11515612e5257600080fd5b5050506040518051905090508091506111eb565b600091506111eb565b5b5092915050565b600160a060020a038083166000908152600d6020526040812054909116818115612f0f5781600160a060020a0316633e81d56e8560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612eea57600080fd5b6102c65a03f11515612efb57600080fd5b505050604051805190509050809250612f14565b600092505b5b5050929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058205a8993ccb2a082e5b161703ffa8714e1167abf59d33bf7d082dd1ff418d292fb0029
Deployed Bytecode
0x606060405236156102a25763ffffffff60e060020a600035041662310e1681146103b657806306fdde03146103de578063079ee6b314610469578063095ea7b31461050c578063112ea2621461054257806318160ddd14610575578063189d165e1461059a57806323b872dd146105c45780632659d8ef146106005780632f7a407b14610633578063313ce5671461066257806332c6f315146106875780633bee0613146106ae5780633d8c9b8c146106da578063421521b1146107005780634bb278f31461071557806354b8dfcb1461071f578063590e1ae3146107555780635e0b12591461076a57806364da8ad31461078f5780636712e0be146107c5578063673b57e9146107ea578063685c234a1461081d5780636c9c1d411461085657806370a0823114610887578063714d497a146108b8578063726df9cc146108dd57806379ba5097146109165780637e1c0c091461092b578063823ba0b814610950578063826c69b81461097f578063847dc0a7146109b05780638da5cb5b146109d95780638ea8e14914610a085780639075becf14610a4157806395d89b4114610a7057806399dd1ed914610afb5780639a436c9b14610b20578063a10954fe14610b45578063a9059cbb14610b6a578063acac0b9f14610ba0578063ad7e01c814610bca578063b1a9bd7714610c0c578063b57e6ea114610c33578063b87fb3db14610c58578063bcbfe43c14610c7d578063c5b1505714610ca4578063cba9c0e014610cd0578063d4ee1d9014610cf5578063dd62ed3e14610d24578063de17910814610d5b578063e814c94114610d82578063ef2fa16914610de5578063f2e1192a14610e1b578063f2fde38b14610e4a578063f7dadf7d14610e6b578063f7fca4f414610e9e578063fa6b129d14610ed1578063ff0935b114610ee7575b5b600034116102b057600080fd5b60085460a860020a900460ff16151561032b5730600160a060020a031663fa6b129d343360405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b151561031157600080fd5b6125ee5a03f1151561032257600080fd5b505050506103b2565b60135443106103ad5730600160a060020a0316633d8c9b8c343360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016020604051808303818588803b151561038b57600080fd5b6125ee5a03f1151561039c57600080fd5b5050505060405180519050506103b2565b600080fd5b5b5b005b34156103c157600080fd5b6103cc600435610f22565b60405190815260200160405180910390f35b34156103e957600080fd5b6103f16110cf565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561042e5780820151818401525b602001610415565b50505050905090810190601f16801561045b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047457600080fd5b6104f860046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061110695505050505050565b604051901515815260200160405180910390f35b341561051757600080fd5b6104f8600160a060020a03600435166024356111f3565b604051901515815260200160405180910390f35b341561054d57600080fd5b6104f8600160a060020a036004351661129a565b604051901515815260200160405180910390f35b341561058057600080fd5b6103cc61133a565b60405190815260200160405180910390f35b34156105a557600080fd5b6104f8600435611341565b604051901515815260200160405180910390f35b34156105cf57600080fd5b6104f8600160a060020a0360043581169060243516604435611388565b604051901515815260200160405180910390f35b341561060b57600080fd5b6104f8600160a060020a03600435166114e0565b604051901515815260200160405180910390f35b341561063e57600080fd5b61064661156a565b604051600160a060020a03909116815260200160405180910390f35b341561066d57600080fd5b6103cc611579565b60405190815260200160405180910390f35b341561069257600080fd5b6104f861157e565b604051901515815260200160405180910390f35b34156106b957600080fd5b6104f8600435151561158e565b604051901515815260200160405180910390f35b6103cc600160a060020a036004351661163a565b60405190815260200160405180910390f35b341561070b57600080fd5b6103b2611777565b005b6103b261185b565b005b341561072a57600080fd5b6104f8600160a060020a03600435166024356119be565b604051901515815260200160405180910390f35b341561076057600080fd5b6103b2611c10565b005b341561077557600080fd5b6103cc611d67565b60405190815260200160405180910390f35b341561079a57600080fd5b6104f8600160a060020a0360043516602435611d6d565b604051901515815260200160405180910390f35b34156107d057600080fd5b6103cc611ef6565b60405190815260200160405180910390f35b34156107f557600080fd5b6104f8600160a060020a0360043516611f05565b604051901515815260200160405180910390f35b341561082857600080fd5b6104f8600160a060020a0360043581169060243516611f7b565b604051901515815260200160405180910390f35b341561086157600080fd5b6103cc600160a060020a0360043516611fab565b60405190815260200160405180910390f35b341561089257600080fd5b6103cc600160a060020a0360043516611fca565b60405190815260200160405180910390f35b34156108c357600080fd5b6103cc611fe9565b60405190815260200160405180910390f35b34156108e857600080fd5b6104f8600160a060020a0360043581169060243516611fef565b604051901515815260200160405180910390f35b341561092157600080fd5b6103b26120f1565b005b341561093657600080fd5b6103cc612199565b60405190815260200160405180910390f35b341561095b57600080fd5b61064661219f565b604051600160a060020a03909116815260200160405180910390f35b341561098a57600080fd5b6103cc600160a060020a03600435166121ae565b60405190815260200160405180910390f35b34156109bb57600080fd5b6109c36121cd565b60405160ff909116815260200160405180910390f35b34156109e457600080fd5b6106466121d2565b604051600160a060020a03909116815260200160405180910390f35b3415610a1357600080fd5b6104f8600160a060020a03600435811690602435166121e1565b604051901515815260200160405180910390f35b3415610a4c57600080fd5b610646612274565b604051600160a060020a03909116815260200160405180910390f35b3415610a7b57600080fd5b6103f1612283565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561042e5780820151818401525b602001610415565b50505050905090810190601f16801561045b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610b0657600080fd5b6103cc6122ba565b60405190815260200160405180910390f35b3415610b2b57600080fd5b6103cc61231b565b60405190815260200160405180910390f35b3415610b5057600080fd5b6103cc612321565b60405190815260200160405180910390f35b3415610b7557600080fd5b6104f8600160a060020a0360043516602435612327565b604051901515815260200160405180910390f35b3415610bab57600080fd5b6104f860043561241b565b604051901515815260200160405180910390f35b3415610bd557600080fd5b6104f8600435602435604435600160a060020a0360643581169060843516612462565b604051901515815260200160405180910390f35b3415610c1757600080fd5b6104f8612524565b604051901515815260200160405180910390f35b3415610c3e57600080fd5b6103cc612534565b60405190815260200160405180910390f35b3415610c6357600080fd5b6103cc612543565b60405190815260200160405180910390f35b3415610c8857600080fd5b6104f8612549565b604051901515815260200160405180910390f35b3415610caf57600080fd5b6104f86004351515612559565b604051901515815260200160405180910390f35b3415610cdb57600080fd5b6103cc6125a6565b60405190815260200160405180910390f35b3415610d0057600080fd5b6106466125ac565b604051600160a060020a03909116815260200160405180910390f35b3415610d2f57600080fd5b6103cc600160a060020a03600435811690602435166125bb565b60405190815260200160405180910390f35b3415610d6657600080fd5b6104f86125e8565b604051901515815260200160405180910390f35b3415610d8d57600080fd5b6104f860046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506125f895505050505050565b604051901515815260200160405180910390f35b3415610df057600080fd5b6104f8600160a060020a03600435166024356126b1565b604051901515815260200160405180910390f35b3415610e2657600080fd5b61064661278a565b604051600160a060020a03909116815260200160405180910390f35b3415610e5557600080fd5b6103b2600160a060020a0360043516612799565b005b3415610e7657600080fd5b6104f8600160a060020a03600435166127f9565b604051901515815260200160405180910390f35b3415610ea957600080fd5b6104f8600160a060020a0360043516612870565b604051901515815260200160405180910390f35b6103b2600160a060020a0360043516612907565b005b3415610ef257600080fd5b610646600160a060020a0360043516612be6565b604051600160a060020a03909116815260200160405180910390f35b6000806000601560149054906101000a900460ff168015610f4c575060085460a060020a900460ff165b1515610f5757600080fd5b610f5f6122ba565b600160a060020a03331660009081526020819052604090205490925084901015610f8857600080fd5b83821015610f9557600080fd5b601554610fac908590600160a060020a0316612c07565b9050600160a060020a03301631819011610fc557600080fd5b600160a060020a033316600090815260208190526040902054610fe89085612c9d565b600160a060020a03331660009081526020819052604090205560025461100e9085612c9d565b600255611025600160a060020a0330163182612c9d565b600555600160a060020a0333167ff505eb6e610340eed3eea0048f8ec258cda0927f73be2d293288fde9a546f1ab8560405190815260200160405180910390a2600033600160a060020a0316600080516020612f1e8339815191528660405190815260200160405180910390a3600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156110c357600080fd5b8092505b5b5050919050565b60408051908101604052601381527f576f6c6b2050726f746f636f6c20546f6b656e00000000000000000000000000602082015281565b600354600090819033600160a060020a0390811691161461112357fe5b825184511461113157600080fd5b5060005b83518110156111e65760016010600086848151811061115057fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff19169115159190911790556111a983828151811061119157fe5b90602001906020020151670de0b6b3a7640000612cb4565b600f60008684815181106111b957fe5b90602001906020020151600160a060020a031681526020810191909152604001600020555b600101611135565b600191505b5b5092915050565b60008115806112255750600160a060020a03338116600090815260016020908152604080832093871683529290522054155b151561123057600080fd5b600160a060020a03338116600081815260016020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600160a060020a03811660009081526007602052604081205460ff1615156112c157600080fd5b600160a060020a033381166000818152600b602090815260408083209487168352939052829020805460ff19166001179055907f8563cf3307d6904af4525af51010bc07d34ec3154f552d9e00f64ed395dc047090849051600160a060020a03909116815260200160405180910390a25060015b919050565b6002545b90565b60035460009033600160a060020a0390811691161461135c57fe5b60008211801561136e57506103e88211155b151561137957600080fd5b50600a81905560015b5b919050565b600160a060020a03808416600081815260016020908152604080832033909516835293815283822054928252819052918220548390108015906113f25750600160a060020a0380861660009081526001602090815260408083203390941683529290522054839010155b80156113fe5750600083115b156114d257600160a060020a0384166000908152602081905260409020546114269084612ce3565b600160a060020a0380861660009081526020819052604080822093909355908716815220546114559084612c9d565b600160a060020a0386166000908152602081905260409020556114788184612c9d565b600160a060020a0380871660008181526001602090815260408083203386168452909152908190209390935590861691600080516020612f1e8339815191529086905190815260200160405180910390a3600191506114d7565b600091505b5b509392505050565b60035460009033600160a060020a039081169116146114fb57fe5b600061150f670de0b6b3a764000084612c07565b1161151957600080fd5b600061152d670de0b6b3a764000084612d0b565b1161153757600080fd5b506015805474ffffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831617905560015b5b919050565b601554600160a060020a031681565b601281565b60155460a060020a900460ff1681565b60035460009033600160a060020a039081169116146115a957fe5b8115611607576015546000906115d190670de0b6b3a764000090600160a060020a0316612c07565b116115db57600080fd5b6015546000906115fd90670de0b6b3a764000090600160a060020a0316612d0b565b1161160757600080fd5b5b506015805474ff0000000000000000000000000000000000000000191660a060020a8315150217905560015b5b919050565b601554600090819060a060020a900460ff168015611661575060085460a060020a900460ff165b151561166c57600080fd5b6000341161167957600080fd5b601554611690903490600160a060020a0316612d0b565b90506000811161169f57600080fd5b6116ab60025482612ce3565b600255600160a060020a0383166000908152602081905260409020546116d19082612ce3565b600160a060020a0384166000908152602081905260409020556005546116f79034612ce3565b600555600160a060020a0383167f7ff6ea1c893a974b2f363e8f8e474a1b52958080d1fffe0d085c286de30035d28260405190815260200160405180910390a282600160a060020a031630600160a060020a0316600080516020612f1e8339815191528360405190815260200160405180910390a38091505b5b50919050565b60035460009033600160a060020a0390811691161461179257fe5b60085460a860020a900460ff161580156117ba57506002546a295be96e640669720000009010155b15156117c557600080fd5b6008805475ff000000000000000000000000000000000000000000191660a860020a179055436013556002546118099061180090600f612cb4565b620186a0612da1565b600581905561182390600160a060020a0330163190612c9d565b9050600160a060020a03331681156108fc0282604051600060405180830381858888f19350505050151561185657600080fd5b5b5b50565b600854600090819033600160a060020a0390811691161461187857fe5b60085460a860020a900460ff16801561189b575060085460a060020a900460ff16155b15156118a657600080fd5b6118bd6118b634620186a0612cb4565b600f612da1565b91506118cb60025483612ce3565b9050806002819055506118e060055434612ce3565b600555600854600160a060020a03908116903016600080516020612f1e8339815191528460405190815260200160405180910390a3600854600160a060020a031660009081526020819052604090205461193a9083612ce3565b60088054600160a060020a039081166000908152602081905260409081902093909355905416907f7ff6ea1c893a974b2f363e8f8e474a1b52958080d1fffe0d085c286de30035d29084905190815260200160405180910390a26008805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b5050565b600160a060020a03331660009081526007602052604081205481908190819060ff1615156001146119eb57fe5b60095460a060020a900460ff161515611a0357600080fd5b6000600a54118015611a1957506103e8600a5411155b8015611a4b5750600160a060020a038087166000908152600b60209081526040808320339094168352929052205460ff165b1515611a5657600080fd5b600160a060020a038616600090815260208190526040902054859010801590611a7f5750600085115b1515611a8a57600080fd5b600954611aa090600160a060020a031686612de0565b9250611ab9611ab186600a54612cb4565b612710612da1565b91506001831015611ac8578192505b81831115611ad4578192505b611ade8584612c9d565b600160a060020a038716600090815260208190526040902054909150611b049086612c9d565b600160a060020a03808816600090815260208190526040808220939093553390911681522054611b349082612ce3565b600160a060020a033316600090815260208190526040902055600254611b5a9084612c9d565b600255600160a060020a03338116908716600080516020612f1e8339815191528360405190815260200160405180910390a3600086600160a060020a0316600080516020612f1e8339815191528560405190815260200160405180910390a333600160a060020a031686600160a060020a03167fa02fa7af120761e5cdeff8bc117c44fd425d0f51fd27155746f84421d87d18e68560405190815260200160405180910390a3600193505b5b5b50505092915050565b600160a060020a0333166000908152600e602052604081205481908190118015611c44575060085460a060020a900460ff16155b8015611c5d57506002546a295be96e6406697200000090105b8015611c6a575060135443115b1515611c7557600080fd5b505033600160a060020a03166000908152602081815260408083208054600e90935290832080549184905592909255600254909190611cb49083612c9d565b600255600160a060020a0333167ff505eb6e610340eed3eea0048f8ec258cda0927f73be2d293288fde9a546f1ab8360405190815260200160405180910390a233600160a060020a03167fb6c0eca8138e097d71e2dd31e19a1266487f0553f170b7260ffe68bcbe9ff8a78260405190815260200160405180910390a2600160a060020a03331681156108fc0282604051600060405180830381858888f1935050505015156119b957600080fd5b5b5050565b60135481565b600160a060020a033316600090815260076020526040812054819081908190819060ff161515600114611d9c57fe5b60095460a060020a900460ff161515611db457600080fd5b600160a060020a0333166000908152600c6020526040812054945084118015611ddf5750610fa08411155b8015611deb5750600086115b1515611df657600080fd5b611e003387612e77565b9250611e17611ab18786612cb4565b612710612da1565b91506001831015611e26578192505b81831115611e32578192505b611e3c8684612c9d565b600160a060020a03331660009081526020819052604090205490915081901015611e6557600080fd5b600160a060020a038716600090815260208190526040902054611e889082612ce3565b60008089600160a060020a0316600160a060020a031681526020019081526020016000208190555086600160a060020a031633600160a060020a0316600080516020612f1e8339815191528360405190815260200160405180910390a3600194505b5b5b5050505092915050565b6a295be96e6406697200000081565b600160a060020a033381166000818152600b602090815260408083209486168352939052828120805460ff19169055917f79485d41c145ee4d7ebf84793ab927ebb3f929101dba7db48702ef527d02cf8390849051600160a060020a03909116815260200160405180910390a25060015b919050565b600160a060020a038083166000908152600b602090815260408083209385168352929052205460ff165b92915050565b600160a060020a0381166000908152600c60205260409020545b919050565b600160a060020a0381166000908152602081905260409020545b919050565b60145481565b600354600090819033600160a060020a0390811691161461200c57fe5b50600160a060020a038084166000908152600b60209081526040808320339094168352929052205460ff1680801561205c5750600160a060020a03831660009081526007602052604090205460ff165b156120df57600160a060020a038085166000908152600b60209081526040808320878516845290915290819020805460ff1916600117905533909116907f8563cf3307d6904af4525af51010bc07d34ec3154f552d9e00f64ed395dc047090859051600160a060020a03909116815260200160405180910390a2600191506111eb565b600091506111eb565b5b5b5092915050565b60045433600160a060020a0390811691161461210c57600080fd5b6003546004547f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a1600480546003805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a038416179091551690555b565b60025481565b600954600160a060020a031681565b600160a060020a0381166000908152600f60205260409020545b919050565b600f81565b600354600160a060020a031681565b60035460009033600160a060020a039081169116146121fc57fe5b600160a060020a038084166000818152600b602090815260408083209487168352939052829020805460ff19169055907f79485d41c145ee4d7ebf84793ab927ebb3f929101dba7db48702ef527d02cf8390849051600160a060020a03909116815260200160405180910390a25060015b5b92915050565b600654600160a060020a031681565b60408051908101604052600481527f574f4c4b00000000000000000000000000000000000000000000000000000000602082015281565b600854600090819060a860020a900460ff1615612311576122ea611ab1600254601454612cb4565b612710612da1565b905068056bc75e2d63100000811015612309575068056bc75e2d631000005b809150612316565b600091505b5b5090565b600a5481565b60055481565b600160a060020a0333166000908152602081905260408120548290108015906123505750600082115b1561240c57600160a060020a0333166000908152602081905260409020546123789083612c9d565b600160a060020a0333811660009081526020819052604080822093909355908516815220546123a79083612ce3565b60008085600160a060020a0316600160a060020a031681526020019081526020016000208190555082600160a060020a031633600160a060020a0316600080516020612f1e8339815191528460405190815260200160405180910390a3506001611294565b506000611294565b5b92915050565b60035460009033600160a060020a0390811691161461243657fe5b600a8210158015612448575060648211155b151561245357600080fd5b50601481905560015b5b919050565b60035460009033600160a060020a0390811691161461247d57fe5b600160025410801561248f5750844311155b801561249a57508484115b80156124a557508585115b15156124b057600080fd5b5060118590556012849055601383905560068054600160a060020a0380851673ffffffffffffffffffffffffffffffffffffffff199283161790925560088054848416921691909117905533166000908152600760205260409020805460ff191660019081179091555b5b95945050505050565b60095460a060020a900460ff1681565b6a7c13bc4b2c133c5600000081565b60125481565b60085460a860020a900460ff1681565b60035460009033600160a060020a0390811691161461257457fe5b506009805474ff0000000000000000000000000000000000000000191660a060020a8315150217905560015b5b919050565b60115481565b600454600160a060020a031681565b600160a060020a038083166000908152600160209081526040808320938516835292905220545b92915050565b60085460a060020a900460ff1681565b600354600090819033600160a060020a0390811691161461261557fe5b5060005b82518110156126a55760006010600085848151811061263457fe5b90602001906020020151600160a060020a0316815260208101919091526040016000908120805460ff191692151592909217909155600f8185848151811061267857fe5b90602001906020020151600160a060020a031681526020810191909152604001600020555b600101612619565b600191505b5b50919050565b60035460009033600160a060020a039081169116146126cc57fe5b6000821115806126dd5750610fa082115b156127155750600160a060020a0382166000908152600760209081526040808320805460ff19169055600c9091528120819055611294565b600160a060020a0383166000818152600c60209081526040808320869055600790915290819020805460ff191660011790557fe273f117e317b5f79c25ba280145c5a051fac58dc8482e8b2a14d04023521dcc9084905190815260200160405180910390a2506001611294565b5b5b92915050565b600854600160a060020a031681565b60035433600160a060020a039081169116146127b157fe5b600354600160a060020a03828116911614156127cc57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600354600090819033600160a060020a0390811691161461281657fe5b61282883670de0b6b3a7640000612de0565b9050652d79883d2000811161283c57600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038516179055600191505b5b50919050565b600160a060020a033316600090815260076020526040812054819060ff16151560011461289957fe5b6128ab83670de0b6b3a7640000612e77565b9050652d79883d200081116128bf57600080fd5b33600160a060020a039081166000908152600d60205260409020805473ffffffffffffffffffffffffffffffffffffffff1916918516919091179055600191505b5b50919050565b600160a060020a0381166000908152601060205260408120548190819060ff16801561293d575060085460a860020a900460ff16155b8015612953575060085460a060020a900460ff16155b801561296157506013544311155b801561296d5750600034115b151561297857600080fd5b6002546103e893506a295be96e6406697200000090101561299d576104999250612a43565b6002546a31a17e847807b1bc0000009010156129bd576104779250612a43565b6002546a39e7139a8c08fa060000009010156129dd576104579250612a43565b6002546a422ca8b0a00a42500000009010156129fd576104399250612a43565b6002546a4a723dc6b40b8a9a000000901015612a1d5761041d9250612a43565b6002546a52b7d2dcc80cd2e4000000901015612a3d576104029250612a43565b6103e892505b5b5b5b5b5b60125443108015612a5b57506011544310155b15612ac757600160a060020a0384166000908152600f602052604090205434901015612a8657600080fd5b600160a060020a0384166000908152600f6020526040902054612aa99034612c9d565b600160a060020a0385166000908152600f6020526040902055612ad6565b601254431015612ad657600080fd5b5b612ae13484612cb4565b9150612aef60025483612ce3565b90506a7c13bc4b2c133c56000000811115612b0957600080fd5b6002819055600160a060020a03808516903016600080516020612f1e8339815191528460405190815260200160405180910390a3600160a060020a038416600090815260208190526040902054612b609083612ce3565b600160a060020a03851660009081526020818152604080832093909355600e90522054612b8d9034612ce3565b600160a060020a0385166000818152600e60205260409081902092909255907f7ff6ea1c893a974b2f363e8f8e474a1b52958080d1fffe0d085c286de30035d29084905190815260200160405180910390a25b50505050565b600160a060020a038082166000908152600d6020526040902054165b919050565b60008082600160a060020a031663f7a4c45c600254600554600f8860006040516020015260405160e060020a63ffffffff87160281526004810194909452602484019290925260ff1660448301526064820152608401602060405180830381600087803b1515612c7657600080fd5b6102c65a03f11515612c8757600080fd5b50505060405180519250829150505b5092915050565b600082821115612ca957fe5b508082035b92915050565b6000828202831580612cd05750828482811515612ccd57fe5b04145b1515612cd857fe5b8091505b5092915050565b6000828201838110801590612cd05750828110155b1515612cd857fe5b8091505b5092915050565b60008082600160a060020a031663949dfa63600254600554600f8860006040516020015260405160e060020a63ffffffff87160281526004810194909452602484019290925260ff1660448301526064820152608401602060405180830381600087803b1515612c7657600080fd5b6102c65a03f11515612c8757600080fd5b50505060405180519250829150505b5092915050565b600080808311612dad57fe5b8284811515612db857fe5b0490508284811515612dc657fe5b068184020184141515612cd857fe5b8091505b5092915050565b600080600160a060020a038416156120df5783600160a060020a031663926f949e8460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612e4157600080fd5b6102c65a03f11515612e5257600080fd5b5050506040518051905090508091506111eb565b600091506111eb565b5b5092915050565b600160a060020a038083166000908152600d6020526040812054909116818115612f0f5781600160a060020a0316633e81d56e8560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612eea57600080fd5b6102c65a03f11515612efb57600080fd5b505050604051805190509050809250612f14565b600092505b5b5050929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058205a8993ccb2a082e5b161703ffa8714e1167abf59d33bf7d082dd1ff418d292fb0029
Swarm Source
bzzr://5a8993ccb2a082e5b161703ffa8714e1167abf59d33bf7d082dd1ff418d292fb
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.
Add Token to MetaMask (Web3)